diff --git a/core/packages/vue-pdf/package.json b/core/packages/vue-pdf/package.json index 2594c77..5b011b1 100644 --- a/core/packages/vue-pdf/package.json +++ b/core/packages/vue-pdf/package.json @@ -1,6 +1,6 @@ { "name": "@vue-office/pdf", - "version": "1.5.3", + "version": "1.5.4", "description": "", "main": "lib/index.js", "files": [ diff --git a/core/packages/vue-pdf/src/pdf-source.js b/core/packages/vue-pdf/src/pdf-source.js index 53b34f3..25535b1 100644 --- a/core/packages/vue-pdf/src/pdf-source.js +++ b/core/packages/vue-pdf/src/pdf-source.js @@ -1 +1 @@ -!function webpackUniversalModuleDefinition(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf",[],e):"object"==typeof exports?exports["pdfjs-dist/build/pdf"]=e():t["pdfjs-dist/build/pdf"]=t.pdfjsLib=e()}(globalThis,(()=>(()=>{var __webpack_modules__=[,(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.VerbosityLevel=e.Util=e.UnknownErrorException=e.UnexpectedResponseException=e.TextRenderingMode=e.RenderingIntentFlag=e.PromiseCapability=e.PermissionFlag=e.PasswordResponses=e.PasswordException=e.PageActionEventType=e.OPS=e.MissingPDFException=e.MAX_IMAGE_SIZE_TO_CACHE=e.LINE_FACTOR=e.LINE_DESCENT_FACTOR=e.InvalidPDFException=e.ImageKind=e.IDENTITY_MATRIX=e.FormatError=e.FeatureTest=e.FONT_IDENTITY_MATRIX=e.DocumentActionEventType=e.CMapCompressionType=e.BaseException=e.BASELINE_FACTOR=e.AnnotationType=e.AnnotationReplyType=e.AnnotationMode=e.AnnotationFlag=e.AnnotationFieldFlag=e.AnnotationEditorType=e.AnnotationEditorPrefix=e.AnnotationEditorParamsType=e.AnnotationBorderStyleType=e.AnnotationActionEventType=e.AbortException=void 0;e.assert=function assert(t,e){t||unreachable(e)};e.bytesToString=bytesToString;e.createValidAbsoluteUrl=function createValidAbsoluteUrl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!t)return null;try{if(n&&"string"==typeof t){if(n.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);e?.length>=2&&(t=`http://${t}`)}if(n.tryConvertEncoding)try{t=stringToUTF8String(t)}catch{}}const i=e?new URL(t,e):new URL(t);if(function _isValidProtocol(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(i))return i}catch{}return null};e.getModificationDate=function getModificationDate(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return[t.getUTCFullYear().toString(),(t.getUTCMonth()+1).toString().padStart(2,"0"),t.getUTCDate().toString().padStart(2,"0"),t.getUTCHours().toString().padStart(2,"0"),t.getUTCMinutes().toString().padStart(2,"0"),t.getUTCSeconds().toString().padStart(2,"0")].join("")};e.getUuid=function getUuid(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(t);else for(let e=0;e<32;e++)t[e]=Math.floor(255*Math.random());return bytesToString(t)};e.getVerbosityLevel=function getVerbosityLevel(){return s};e.info=function info(t){s>=r.INFOS&&console.log(`Info: ${t}`)};e.isArrayBuffer=function isArrayBuffer(t){return"object"==typeof t&&void 0!==t?.byteLength};e.isArrayEqual=function isArrayEqual(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;ne?e.normalize("NFKC"):h.get(n)))};e.objectFromMap=function objectFromMap(t){const e=Object.create(null);for(const[n,i]of t)e[n]=i;return e};e.objectSize=function objectSize(t){return Object.keys(t).length};e.setVerbosityLevel=function setVerbosityLevel(t){Number.isInteger(t)&&(s=t)};e.shadow=shadow;e.string32=function string32(t){return String.fromCharCode(t>>24&255,t>>16&255,t>>8&255,255&t)};e.stringToBytes=stringToBytes;e.stringToPDFString=function stringToPDFString(t){if(t[0]>="ï"){let e;"þ"===t[0]&&"ÿ"===t[1]?e="utf-16be":"ÿ"===t[0]&&"þ"===t[1]?e="utf-16le":"ï"===t[0]&&"»"===t[1]&&"¿"===t[2]&&(e="utf-8");if(e)try{const n=new TextDecoder(e,{fatal:!0}),i=stringToBytes(t);return n.decode(i)}catch(t){warn(`stringToPDFString: "${t}".`)}}const e=[];for(let n=0,i=t.length;n=r.WARNINGS&&console.log(`Warning: ${t}`)}function unreachable(t){throw new Error(t)}function shadow(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Object.defineProperty(t,e,{value:n,enumerable:!i,configurable:!0,writable:!1});return n}const a=function BaseExceptionClosure(){function BaseException(t,e){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=t;this.name=e}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();e.BaseException=a;e.PasswordException=class PasswordException extends a{constructor(t,e){super(t,"PasswordException");this.code=e}};e.UnknownErrorException=class UnknownErrorException extends a{constructor(t,e){super(t,"UnknownErrorException");this.details=e}};e.InvalidPDFException=class InvalidPDFException extends a{constructor(t){super(t,"InvalidPDFException")}};e.MissingPDFException=class MissingPDFException extends a{constructor(t){super(t,"MissingPDFException")}};e.UnexpectedResponseException=class UnexpectedResponseException extends a{constructor(t,e){super(t,"UnexpectedResponseException");this.status=e}};e.FormatError=class FormatError extends a{constructor(t){super(t,"FormatError")}};e.AbortException=class AbortException extends a{constructor(t){super(t,"AbortException")}};function bytesToString(t){"object"==typeof t&&void 0!==t?.length||unreachable("Invalid argument for bytesToString");const e=t.length,n=8192;if(et.toString(16).padStart(2,"0")));e.Util=class Util{static makeHexColor(t,e,n){return`#${o[t]}${o[e]}${o[n]}`}static scaleMinMax(t,e){let n;if(t[0]){if(t[0]<0){n=e[0];e[0]=e[1];e[1]=n}e[0]*=t[0];e[1]*=t[0];if(t[3]<0){n=e[2];e[2]=e[3];e[3]=n}e[2]*=t[3];e[3]*=t[3]}else{n=e[0];e[0]=e[2];e[2]=n;n=e[1];e[1]=e[3];e[3]=n;if(t[1]<0){n=e[2];e[2]=e[3];e[3]=n}e[2]*=t[1];e[3]*=t[1];if(t[2]<0){n=e[0];e[0]=e[1];e[1]=n}e[0]*=t[2];e[1]*=t[2]}e[0]+=t[4];e[1]+=t[4];e[2]+=t[5];e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static applyTransform(t,e){return[t[0]*e[0]+t[1]*e[2]+e[4],t[0]*e[1]+t[1]*e[3]+e[5]]}static applyInverseTransform(t,e){const n=e[0]*e[3]-e[1]*e[2];return[(t[0]*e[3]-t[1]*e[2]+e[2]*e[5]-e[4]*e[3])/n,(-t[0]*e[1]+t[1]*e[0]+e[4]*e[1]-e[5]*e[0])/n]}static getAxialAlignedBoundingBox(t,e){const n=this.applyTransform(t,e),i=this.applyTransform(t.slice(2,4),e),r=this.applyTransform([t[0],t[3]],e),s=this.applyTransform([t[2],t[1]],e);return[Math.min(n[0],i[0],r[0],s[0]),Math.min(n[1],i[1],r[1],s[1]),Math.max(n[0],i[0],r[0],s[0]),Math.max(n[1],i[1],r[1],s[1])]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t){const e=[t[0],t[2],t[1],t[3]],n=t[0]*e[0]+t[1]*e[2],i=t[0]*e[1]+t[1]*e[3],r=t[2]*e[0]+t[3]*e[2],s=t[2]*e[1]+t[3]*e[3],a=(n+s)/2,o=Math.sqrt((n+s)**2-4*(n*s-r*i))/2,l=a+o||1,c=a-o||1;return[Math.sqrt(l),Math.sqrt(c)]}static normalizeRect(t){const e=t.slice(0);if(t[0]>t[2]){e[0]=t[2];e[2]=t[0]}if(t[1]>t[3]){e[1]=t[3];e[3]=t[1]}return e}static intersect(t,e){const n=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(n>i)return null;const r=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),s=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return r>s?null:[n,r,i,s]}static bezierBoundingBox(t,e,n,i,r,s,a,o){const l=[],c=[[],[]];let h,d,u,p,f,g,m,b;for(let c=0;c<2;++c){if(0===c){d=6*t-12*n+6*r;h=-3*t+9*n-9*r+3*a;u=3*n-3*t}else{d=6*e-12*i+6*s;h=-3*e+9*i-9*s+3*o;u=3*i-3*e}if(Math.abs(h)<1e-12){if(Math.abs(d)<1e-12)continue;p=-u/d;0{this.resolve=e=>{this.#t=!0;t(e)};this.reject=t=>{this.#t=!0;e(t)}}))}get settled(){return this.#t}};let c=null,h=null},(t,e,n)=>{var i=n(3),r=n(4),s=n(69),a=n(70),o="WebAssembly",l=r[o],c=7!==Error("e",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(t,e){var n={};n[t]=a(t,e,c);i({global:!0,constructor:!0,arity:1,forced:c},n)},exportWebAssemblyErrorCauseWrapper=function(t,e){if(l&&l[t]){var n={};n[t]=a(o+"."+t,e,c);i({target:o,stat:!0,constructor:!0,arity:1,forced:c},n)}};exportGlobalErrorCauseWrapper("Error",(function(t){return function Error(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("EvalError",(function(t){return function EvalError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("RangeError",(function(t){return function RangeError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("ReferenceError",(function(t){return function ReferenceError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("SyntaxError",(function(t){return function SyntaxError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("TypeError",(function(t){return function TypeError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("URIError",(function(t){return function URIError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("CompileError",(function(t){return function CompileError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("LinkError",(function(t){return function LinkError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("RuntimeError",(function(t){return function RuntimeError(e){return s(t,this,arguments)}}))},(t,e,n)=>{var i=n(4),r=n(5).f,s=n(44),a=n(48),o=n(38),l=n(56),c=n(68);t.exports=function(t,e){var n,h,d,u,p,f=t.target,g=t.global,m=t.stat;if(n=g?i:m?i[f]||o(f,{}):(i[f]||{}).prototype)for(h in e){u=e[h];d=t.dontCallGetSet?(p=r(n,h))&&p.value:n[h];if(!c(g?h:f+(m?".":"#")+h,t.forced)&&void 0!==d){if(typeof u==typeof d)continue;l(u,d)}(t.sham||d&&d.sham)&&s(u,"sham",!0);a(n,h,u,t)}}},function(t){var check=function(t){return t&&t.Math==Math&&t};t.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof global&&global)||function(){return this}()||this||Function("return this")()},(t,e,n)=>{var i=n(6),r=n(8),s=n(10),a=n(11),o=n(12),l=n(18),c=n(39),h=n(42),d=Object.getOwnPropertyDescriptor;e.f=i?d:function getOwnPropertyDescriptor(t,e){t=o(t);e=l(e);if(h)try{return d(t,e)}catch(t){}if(c(t,e))return a(!r(s.f,t,e),t[e])}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},(t,e,n)=>{var i=n(9),r=Function.prototype.call;t.exports=i?r.bind(r):function(){return r.apply(r,arguments)}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},(t,e)=>{"use strict";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,r=i&&!n.call({1:2},1);e.f=r?function propertyIsEnumerable(t){var e=i(this,t);return!!e&&e.enumerable}:n},t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},(t,e,n)=>{var i=n(13),r=n(16);t.exports=function(t){return i(r(t))}},(t,e,n)=>{var i=n(14),r=n(7),s=n(15),a=Object,o=i("".split);t.exports=r((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==s(t)?o(t,""):a(t)}:a},(t,e,n)=>{var i=n(9),r=Function.prototype,s=r.call,a=i&&r.bind.bind(s,s);t.exports=i?a:function(t){return function(){return s.apply(t,arguments)}}},(t,e,n)=>{var i=n(14),r=i({}.toString),s=i("".slice);t.exports=function(t){return s(r(t),8,-1)}},(t,e,n)=>{var i=n(17),r=TypeError;t.exports=function(t){if(i(t))throw r("Can't call method on "+t);return t}},t=>{t.exports=function(t){return null==t}},(t,e,n)=>{var i=n(19),r=n(23);t.exports=function(t){var e=i(t,"string");return r(e)?e:e+""}},(t,e,n)=>{var i=n(8),r=n(20),s=n(23),a=n(30),o=n(33),l=n(34),c=TypeError,h=l("toPrimitive");t.exports=function(t,e){if(!r(t)||s(t))return t;var n,l=a(t,h);if(l){void 0===e&&(e="default");n=i(l,t,e);if(!r(n)||s(n))return n;throw c("Can't convert object to primitive value")}void 0===e&&(e="number");return o(t,e)}},(t,e,n)=>{var i=n(21),r=n(22),s=r.all;t.exports=r.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:i(t)||t===s}:function(t){return"object"==typeof t?null!==t:i(t)}},(t,e,n)=>{var i=n(22),r=i.all;t.exports=i.IS_HTMLDDA?function(t){return"function"==typeof t||t===r}:function(t){return"function"==typeof t}},t=>{var e="object"==typeof document&&document.all,n=void 0===e&&void 0!==e;t.exports={all:e,IS_HTMLDDA:n}},(t,e,n)=>{var i=n(24),r=n(21),s=n(25),a=n(26),o=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=i("Symbol");return r(e)&&s(e.prototype,o(t))}},(t,e,n)=>{var i=n(4),r=n(21);t.exports=function(t,e){return arguments.length<2?(n=i[t],r(n)?n:void 0):i[t]&&i[t][e];var n}},(t,e,n)=>{var i=n(14);t.exports=i({}.isPrototypeOf)},(t,e,n)=>{var i=n(27);t.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(t,e,n)=>{var i=n(28),r=n(7),s=n(4).String;t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&i&&i<41}))},(t,e,n)=>{var i,r,s=n(4),a=n(29),o=s.process,l=s.Deno,c=o&&o.versions||l&&l.version,h=c&&c.v8;h&&(r=(i=h.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1]));!r&&a&&(!(i=a.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=a.match(/Chrome\/(\d+)/))&&(r=+i[1]);t.exports=r},t=>{t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},(t,e,n)=>{var i=n(31),r=n(17);t.exports=function(t,e){var n=t[e];return r(n)?void 0:i(n)}},(t,e,n)=>{var i=n(21),r=n(32),s=TypeError;t.exports=function(t){if(i(t))return t;throw s(r(t)+" is not a function")}},t=>{var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},(t,e,n)=>{var i=n(8),r=n(21),s=n(20),a=TypeError;t.exports=function(t,e){var n,o;if("string"===e&&r(n=t.toString)&&!s(o=i(n,t)))return o;if(r(n=t.valueOf)&&!s(o=i(n,t)))return o;if("string"!==e&&r(n=t.toString)&&!s(o=i(n,t)))return o;throw a("Can't convert object to primitive value")}},(t,e,n)=>{var i=n(4),r=n(35),s=n(39),a=n(41),o=n(27),l=n(26),c=i.Symbol,h=r("wks"),d=l?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){s(h,t)||(h[t]=o&&s(c,t)?c[t]:d("Symbol."+t));return h[t]}},(t,e,n)=>{var i=n(36),r=n(37);(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.31.1",mode:i?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},t=>{t.exports=!1},(t,e,n)=>{var i=n(4),r=n(38),s="__core-js_shared__",a=i[s]||r(s,{});t.exports=a},(t,e,n)=>{var i=n(4),r=Object.defineProperty;t.exports=function(t,e){try{r(i,t,{value:e,configurable:!0,writable:!0})}catch(n){i[t]=e}return e}},(t,e,n)=>{var i=n(14),r=n(40),s=i({}.hasOwnProperty);t.exports=Object.hasOwn||function hasOwn(t,e){return s(r(t),e)}},(t,e,n)=>{var i=n(16),r=Object;t.exports=function(t){return r(i(t))}},(t,e,n)=>{var i=n(14),r=0,s=Math.random(),a=i(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++r+s,36)}},(t,e,n)=>{var i=n(6),r=n(7),s=n(43);t.exports=!i&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},(t,e,n)=>{var i=n(4),r=n(20),s=i.document,a=r(s)&&r(s.createElement);t.exports=function(t){return a?s.createElement(t):{}}},(t,e,n)=>{var i=n(6),r=n(45),s=n(11);t.exports=i?function(t,e,n){return r.f(t,e,s(1,n))}:function(t,e,n){t[e]=n;return t}},(t,e,n)=>{var i=n(6),r=n(42),s=n(46),a=n(47),o=n(18),l=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,d="enumerable",u="configurable",p="writable";e.f=i?s?function defineProperty(t,e,n){a(t);e=o(e);a(n);if("function"==typeof t&&"prototype"===e&&"value"in n&&p in n&&!n[p]){var i=h(t,e);if(i&&i[p]){t[e]=n.value;n={configurable:u in n?n[u]:i[u],enumerable:d in n?n[d]:i[d],writable:!1}}}return c(t,e,n)}:c:function defineProperty(t,e,n){a(t);e=o(e);a(n);if(r)try{return c(t,e,n)}catch(t){}if("get"in n||"set"in n)throw l("Accessors not supported");"value"in n&&(t[e]=n.value);return t}},(t,e,n)=>{var i=n(6),r=n(7);t.exports=i&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(t,e,n)=>{var i=n(20),r=String,s=TypeError;t.exports=function(t){if(i(t))return t;throw s(r(t)+" is not an object")}},(t,e,n)=>{var i=n(21),r=n(45),s=n(49),a=n(38);t.exports=function(t,e,n,o){o||(o={});var l=o.enumerable,c=void 0!==o.name?o.name:e;i(n)&&s(n,c,o);if(o.global)l?t[e]=n:a(e,n);else{try{o.unsafe?t[e]&&(l=!0):delete t[e]}catch(t){}l?t[e]=n:r.f(t,e,{value:n,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return t}},(t,e,n)=>{var i=n(14),r=n(7),s=n(21),a=n(39),o=n(6),l=n(50).CONFIGURABLE,c=n(51),h=n(52),d=h.enforce,u=h.get,p=String,f=Object.defineProperty,g=i("".slice),m=i("".replace),b=i([].join),v=o&&!r((function(){return 8!==f((function(){}),"length",{value:8}).length})),y=String(String).split("String"),A=t.exports=function(t,e,n){"Symbol("===g(p(e),0,7)&&(e="["+m(p(e),/^Symbol\(([^)]*)\)/,"$1")+"]");n&&n.getter&&(e="get "+e);n&&n.setter&&(e="set "+e);(!a(t,"name")||l&&t.name!==e)&&(o?f(t,"name",{value:e,configurable:!0}):t.name=e);v&&n&&a(n,"arity")&&t.length!==n.arity&&f(t,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?o&&f(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var i=d(t);a(i,"source")||(i.source=b(y,"string"==typeof e?e:""));return t};Function.prototype.toString=A((function toString(){return s(this)&&u(this).source||c(this)}),"toString")},(t,e,n)=>{var i=n(6),r=n(39),s=Function.prototype,a=i&&Object.getOwnPropertyDescriptor,o=r(s,"name"),l=o&&"something"===function something(){}.name,c=o&&(!i||i&&a(s,"name").configurable);t.exports={EXISTS:o,PROPER:l,CONFIGURABLE:c}},(t,e,n)=>{var i=n(14),r=n(21),s=n(37),a=i(Function.toString);r(s.inspectSource)||(s.inspectSource=function(t){return a(t)});t.exports=s.inspectSource},(t,e,n)=>{var i,r,s,a=n(53),o=n(4),l=n(20),c=n(44),h=n(39),d=n(37),u=n(54),p=n(55),f="Object already initialized",g=o.TypeError,m=o.WeakMap;if(a||d.state){var b=d.state||(d.state=new m);b.get=b.get;b.has=b.has;b.set=b.set;i=function(t,e){if(b.has(t))throw g(f);e.facade=t;b.set(t,e);return e};r=function(t){return b.get(t)||{}};s=function(t){return b.has(t)}}else{var v=u("state");p[v]=!0;i=function(t,e){if(h(t,v))throw g(f);e.facade=t;c(t,v,e);return e};r=function(t){return h(t,v)?t[v]:{}};s=function(t){return h(t,v)}}t.exports={set:i,get:r,has:s,enforce:function(t){return s(t)?r(t):i(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=r(e)).type!==t)throw g("Incompatible receiver, "+t+" required");return n}}}},(t,e,n)=>{var i=n(4),r=n(21),s=i.WeakMap;t.exports=r(s)&&/native code/.test(String(s))},(t,e,n)=>{var i=n(35),r=n(41),s=i("keys");t.exports=function(t){return s[t]||(s[t]=r(t))}},t=>{t.exports={}},(t,e,n)=>{var i=n(39),r=n(57),s=n(5),a=n(45);t.exports=function(t,e,n){for(var o=r(e),l=a.f,c=s.f,h=0;h{var i=n(24),r=n(14),s=n(58),a=n(67),o=n(47),l=r([].concat);t.exports=i("Reflect","ownKeys")||function ownKeys(t){var e=s.f(o(t)),n=a.f;return n?l(e,n(t)):e}},(t,e,n)=>{var i=n(59),r=n(66).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return i(t,r)}},(t,e,n)=>{var i=n(14),r=n(39),s=n(12),a=n(60).indexOf,o=n(55),l=i([].push);t.exports=function(t,e){var n,i=s(t),c=0,h=[];for(n in i)!r(o,n)&&r(i,n)&&l(h,n);for(;e.length>c;)r(i,n=e[c++])&&(~a(h,n)||l(h,n));return h}},(t,e,n)=>{var i=n(12),r=n(61),s=n(64),createMethod=function(t){return function(e,n,a){var o,l=i(e),c=s(l),h=r(a,c);if(t&&n!=n){for(;c>h;)if((o=l[h++])!=o)return!0}else for(;c>h;h++)if((t||h in l)&&l[h]===n)return t||h||0;return!t&&-1}};t.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},(t,e,n)=>{var i=n(62),r=Math.max,s=Math.min;t.exports=function(t,e){var n=i(t);return n<0?r(n+e,0):s(n,e)}},(t,e,n)=>{var i=n(63);t.exports=function(t){var e=+t;return e!=e||0===e?0:i(e)}},t=>{var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function trunc(t){var i=+t;return(i>0?n:e)(i)}},(t,e,n)=>{var i=n(65);t.exports=function(t){return i(t.length)}},(t,e,n)=>{var i=n(62),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},(t,e)=>{e.f=Object.getOwnPropertySymbols},(t,e,n)=>{var i=n(7),r=n(21),s=/#|\.prototype\./,isForced=function(t,e){var n=o[a(t)];return n==c||n!=l&&(r(e)?i(e):!!e)},a=isForced.normalize=function(t){return String(t).replace(s,".").toLowerCase()},o=isForced.data={},l=isForced.NATIVE="N",c=isForced.POLYFILL="P";t.exports=isForced},(t,e,n)=>{var i=n(9),r=Function.prototype,s=r.apply,a=r.call;t.exports="object"==typeof Reflect&&Reflect.apply||(i?a.bind(s):function(){return a.apply(s,arguments)})},(t,e,n)=>{"use strict";var i=n(24),r=n(39),s=n(44),a=n(25),o=n(71),l=n(56),c=n(74),h=n(75),d=n(76),u=n(80),p=n(81),f=n(6),g=n(36);t.exports=function(t,e,n,m){var b="stackTraceLimit",v=m?2:1,y=t.split("."),A=y[y.length-1],_=i.apply(null,y);if(_){var S=_.prototype;!g&&r(S,"cause")&&delete S.cause;if(!n)return _;var E=i("Error"),x=e((function(t,e){var n=d(m?e:t,void 0),i=m?new _(t):new _;void 0!==n&&s(i,"message",n);p(i,x,i.stack,2);this&&a(S,this)&&h(i,this,x);arguments.length>v&&u(i,arguments[v]);return i}));x.prototype=S;if("Error"!==A)o?o(x,E):l(x,E,{name:!0});else if(f&&b in _){c(x,_,b);c(x,_,"prepareStackTrace")}l(x,_);if(!g)try{S.name!==A&&s(S,"name",A);S.constructor=x}catch(t){}return x}}},(t,e,n)=>{var i=n(72),r=n(47),s=n(73);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=i(Object.prototype,"__proto__","set"))(n,[]);e=n instanceof Array}catch(t){}return function setPrototypeOf(n,i){r(n);s(i);e?t(n,i):n.__proto__=i;return n}}():void 0)},(t,e,n)=>{var i=n(14),r=n(31);t.exports=function(t,e,n){try{return i(r(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},(t,e,n)=>{var i=n(21),r=String,s=TypeError;t.exports=function(t){if("object"==typeof t||i(t))return t;throw s("Can't set "+r(t)+" as a prototype")}},(t,e,n)=>{var i=n(45).f;t.exports=function(t,e,n){n in t||i(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},(t,e,n)=>{var i=n(21),r=n(20),s=n(71);t.exports=function(t,e,n){var a,o;s&&i(a=e.constructor)&&a!==n&&r(o=a.prototype)&&o!==n.prototype&&s(t,o);return t}},(t,e,n)=>{var i=n(77);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:i(t)}},(t,e,n)=>{var i=n(78),r=String;t.exports=function(t){if("Symbol"===i(t))throw TypeError("Cannot convert a Symbol value to a string");return r(t)}},(t,e,n)=>{var i=n(79),r=n(21),s=n(15),a=n(34)("toStringTag"),o=Object,l="Arguments"==s(function(){return arguments}());t.exports=i?s:function(t){var e,n,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=o(t),a))?n:l?s(e):"Object"==(i=s(e))&&r(e.callee)?"Arguments":i}},(t,e,n)=>{var i={};i[n(34)("toStringTag")]="z";t.exports="[object z]"===String(i)},(t,e,n)=>{var i=n(20),r=n(44);t.exports=function(t,e){i(e)&&"cause"in e&&r(t,"cause",e.cause)}},(t,e,n)=>{var i=n(44),r=n(82),s=n(83),a=Error.captureStackTrace;t.exports=function(t,e,n,o){s&&(a?a(t,e):i(t,"stack",r(n,o)))}},(t,e,n)=>{var i=n(14),r=Error,s=i("".replace),a=String(r("zxcasd").stack),o=/\n\s*at [^:]*:[^\n]*/,l=o.test(a);t.exports=function(t,e){if(l&&"string"==typeof t&&!r.prepareStackTrace)for(;e--;)t=s(t,o,"");return t}},(t,e,n)=>{var i=n(7),r=n(11);t.exports=!i((function(){var t=Error("a");if(!("stack"in t))return!0;Object.defineProperty(t,"stack",r(1,7));return 7!==t.stack}))},(t,e,n)=>{"use strict";var i=n(48),r=n(14),s=n(77),a=n(85),o=URLSearchParams,l=o.prototype,c=r(l.append),h=r(l.delete),d=r(l.forEach),u=r([].push),p=new o("a=1&a=2");p.delete("a",1);p+""!="a=2"&&i(l,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return h(this,t);var i=[];d(this,(function(t,e){u(i,{key:e,value:t})}));a(e,1);for(var r,o=s(t),l=s(n),p=0,f=0,g=!1,m=i.length;p{var e=TypeError;t.exports=function(t,n){if(t{"use strict";var i=n(48),r=n(14),s=n(77),a=n(85),o=URLSearchParams,l=o.prototype,c=r(l.getAll),h=r(l.has);new o("a=1").has("a",2)&&i(l,"has",(function has(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return h(this,t);var i=c(this,t);a(e,1);for(var r=s(n),o=0;o{"use strict";var i=n(6),r=n(14),s=n(88),a=URLSearchParams.prototype,o=r(a.forEach);i&&!("size"in a)&&s(a,"size",{get:function size(){var t=0;o(this,(function(){t++}));return t},configurable:!0,enumerable:!0})},(t,e,n)=>{var i=n(49),r=n(45);t.exports=function(t,e,n){n.get&&i(n.get,e,{getter:!0});n.set&&i(n.set,e,{setter:!0});return r.f(t,e,n)}},(t,e,n)=>{"use strict";var i=n(3),r=n(40),s=n(64),a=n(90),o=n(92);i({target:"Array",proto:!0,arity:1,forced:n(7)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function push(t){var e=r(this),n=s(e),i=arguments.length;o(n+i);for(var l=0;l{"use strict";var i=n(6),r=n(91),s=TypeError,a=Object.getOwnPropertyDescriptor,o=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=o?function(t,e){if(r(t)&&!a(t,"length").writable)throw s("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},(t,e,n)=>{var i=n(15);t.exports=Array.isArray||function isArray(t){return"Array"==i(t)}},t=>{var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},(t,e,n)=>{"use strict";var i=n(94),r=n(98).findLast,s=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLast",(function findLast(t){return r(s(this),t,arguments.length>1?arguments[1]:void 0)}))},(t,e,n)=>{"use strict";var i,r,s,a=n(95),o=n(6),l=n(4),c=n(21),h=n(20),d=n(39),u=n(78),p=n(32),f=n(44),g=n(48),m=n(88),b=n(25),v=n(96),y=n(71),A=n(34),_=n(41),S=n(52),E=S.enforce,x=S.get,w=l.Int8Array,C=w&&w.prototype,T=l.Uint8ClampedArray,P=T&&T.prototype,k=w&&v(w),M=C&&v(C),R=Object.prototype,I=l.TypeError,D=A("toStringTag"),O=_("TYPED_ARRAY_TAG"),L="TypedArrayConstructor",N=a&&!!y&&"Opera"!==u(l.opera),B=!1,j={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},U={BigInt64Array:8,BigUint64Array:8},getTypedArrayConstructor=function(t){var e=v(t);if(h(e)){var n=x(e);return n&&d(n,L)?n[L]:getTypedArrayConstructor(e)}},isTypedArray=function(t){if(!h(t))return!1;var e=u(t);return d(j,e)||d(U,e)};for(i in j)(s=(r=l[i])&&r.prototype)?E(s)[L]=r:N=!1;for(i in U)(s=(r=l[i])&&r.prototype)&&(E(s)[L]=r);if(!N||!c(k)||k===Function.prototype){k=function TypedArray(){throw I("Incorrect invocation")};if(N)for(i in j)l[i]&&y(l[i],k)}if(!N||!M||M===R){M=k.prototype;if(N)for(i in j)l[i]&&y(l[i].prototype,M)}N&&v(P)!==M&&y(P,M);if(o&&!d(M,D)){B=!0;m(M,D,{configurable:!0,get:function(){return h(this)?this[O]:void 0}});for(i in j)l[i]&&f(l[i],O,i)}t.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:B&&O,aTypedArray:function(t){if(isTypedArray(t))return t;throw I("Target is not a typed array")},aTypedArrayConstructor:function(t){if(c(t)&&(!y||b(k,t)))return t;throw I(p(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(o){if(n)for(var r in j){var s=l[r];if(s&&d(s.prototype,t))try{delete s.prototype[t]}catch(n){try{s.prototype[t]=e}catch(t){}}}M[t]&&!n||g(M,t,n?e:N&&C[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,r;if(o){if(y){if(n)for(i in j)if((r=l[i])&&d(r,t))try{delete r[t]}catch(t){}if(k[t]&&!n)return;try{return g(k,t,n?e:N&&k[t]||e)}catch(t){}}for(i in j)!(r=l[i])||r[t]&&!n||g(r,t,e)}},getTypedArrayConstructor:getTypedArrayConstructor,isView:function isView(t){if(!h(t))return!1;var e=u(t);return"DataView"===e||d(j,e)||d(U,e)},isTypedArray:isTypedArray,TypedArray:k,TypedArrayPrototype:M}},t=>{t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(t,e,n)=>{var i=n(39),r=n(21),s=n(40),a=n(54),o=n(97),l=a("IE_PROTO"),c=Object,h=c.prototype;t.exports=o?c.getPrototypeOf:function(t){var e=s(t);if(i(e,l))return e[l];var n=e.constructor;return r(n)&&e instanceof n?n.prototype:e instanceof c?h:null}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){function F(){}F.prototype.constructor=null;return Object.getPrototypeOf(new F)!==F.prototype}))},(t,e,n)=>{var i=n(99),r=n(13),s=n(40),a=n(64),createMethod=function(t){var e=1==t;return function(n,o,l){for(var c,h=s(n),d=r(h),u=i(o,l),p=a(d);p-- >0;)if(u(c=d[p],p,h))switch(t){case 0:return c;case 1:return p}return e?-1:void 0}};t.exports={findLast:createMethod(0),findLastIndex:createMethod(1)}},(t,e,n)=>{var i=n(100),r=n(31),s=n(9),a=i(i.bind);t.exports=function(t,e){r(t);return void 0===e?t:s?a(t,e):function(){return t.apply(e,arguments)}}},(t,e,n)=>{var i=n(15),r=n(14);t.exports=function(t){if("Function"===i(t))return r(t)}},(t,e,n)=>{"use strict";var i=n(94),r=n(98).findLastIndex,s=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLastIndex",(function findLastIndex(t){return r(s(this),t,arguments.length>1?arguments[1]:void 0)}))},(t,e,n)=>{"use strict";var i=n(4),r=n(8),s=n(94),a=n(64),o=n(103),l=n(40),c=n(7),h=i.RangeError,d=i.Int8Array,u=d&&d.prototype,p=u&&u.set,f=s.aTypedArray,g=s.exportTypedArrayMethod,m=!c((function(){var t=new Uint8ClampedArray(2);r(p,t,{length:1,0:3},1);return 3!==t[1]})),b=m&&s.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var t=new d(2);t.set(1);t.set("2",1);return 0!==t[0]||2!==t[1]}));g("set",(function set(t){f(this);var e=o(arguments.length>1?arguments[1]:void 0,1),n=l(t);if(m)return r(p,this,n,e);var i=this.length,s=a(n),c=0;if(s+e>i)throw h("Wrong length");for(;c{var i=n(104),r=RangeError;t.exports=function(t,e){var n=i(t);if(n%e)throw r("Wrong offset");return n}},(t,e,n)=>{var i=n(62),r=RangeError;t.exports=function(t){var e=i(t);if(e<0)throw r("The argument can't be less than 0");return e}},(t,e,n)=>{"use strict";var i=n(106),r=n(94),s=r.aTypedArray,a=r.exportTypedArrayMethod,o=r.getTypedArrayConstructor;a("toReversed",(function toReversed(){return i(s(this),o(this))}))},(t,e,n)=>{var i=n(64);t.exports=function(t,e){for(var n=i(t),r=new e(n),s=0;s{"use strict";var i=n(94),r=n(14),s=n(31),a=n(108),o=i.aTypedArray,l=i.getTypedArrayConstructor,c=i.exportTypedArrayMethod,h=r(i.TypedArrayPrototype.sort);c("toSorted",(function toSorted(t){void 0!==t&&s(t);var e=o(this),n=a(l(e),e);return h(n,t)}))},(t,e,n)=>{var i=n(64);t.exports=function(t,e){for(var n=0,r=i(e),s=new t(r);r>n;)s[n]=e[n++];return s}},(t,e,n)=>{"use strict";var i=n(110),r=n(94),s=n(111),a=n(62),o=n(112),l=r.aTypedArray,c=r.getTypedArrayConstructor,h=r.exportTypedArrayMethod,d=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();h("with",{with:function(t,e){var n=l(this),r=a(t),h=s(n)?o(e):+e;return i(n,c(n),r,h)}}.with,!d)},(t,e,n)=>{var i=n(64),r=n(62),s=RangeError;t.exports=function(t,e,n,a){var o=i(t),l=r(n),c=l<0?o+l:l;if(c>=o||c<0)throw s("Incorrect index");for(var h=new e(o),d=0;d{var i=n(78);t.exports=function(t){var e=i(t);return"BigInt64Array"==e||"BigUint64Array"==e}},(t,e,n)=>{var i=n(19),r=TypeError;t.exports=function(t){var e=i(t,"number");if("number"==typeof e)throw r("Can't convert number to bigint");return BigInt(e)}},(t,e,n)=>{"use strict";var i=n(6),r=n(88),s=n(114),a=ArrayBuffer.prototype;i&&!("detached"in a)&&r(a,"detached",{configurable:!0,get:function detached(){return s(this)}})},(t,e,n)=>{var i=n(14),r=n(115),s=i(ArrayBuffer.prototype.slice);t.exports=function(t){if(0!==r(t))return!1;try{s(t,0,0);return!1}catch(t){return!0}}},(t,e,n)=>{var i=n(72),r=n(15),s=TypeError;t.exports=i(ArrayBuffer.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!=r(t))throw s("ArrayBuffer expected");return t.byteLength}},(t,e,n)=>{"use strict";var i=n(3),r=n(117);r&&i({target:"ArrayBuffer",proto:!0},{transfer:function transfer(){return r(this,arguments.length?arguments[0]:void 0,!0)}})},(t,e,n)=>{var i=n(4),r=n(14),s=n(72),a=n(118),o=n(114),l=n(115),c=n(119),h=i.TypeError,d=i.structuredClone,u=i.ArrayBuffer,p=i.DataView,f=Math.min,g=u.prototype,m=p.prototype,b=r(g.slice),v=s(g,"resizable","get"),y=s(g,"maxByteLength","get"),A=r(m.getInt8),_=r(m.setInt8);t.exports=c&&function(t,e,n){var i=l(t),r=void 0===e?i:a(e),s=!v||!v(t);if(o(t))throw h("ArrayBuffer is detached");var c=d(t,{transfer:[t]});if(i==r&&(n||s))return c;if(i>=r&&(!n||s))return b(c,0,r);for(var g=n&&!s&&y?{maxByteLength:y(c)}:void 0,m=new u(r,g),S=new p(c),E=new p(m),x=f(r,i),w=0;w{var i=n(62),r=n(65),s=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=i(t),n=r(e);if(e!==n)throw s("Wrong length or index");return n}},(t,e,n)=>{var i=n(4),r=n(7),s=n(28),a=n(120),o=n(121),l=n(122),c=i.structuredClone;t.exports=!!c&&!r((function(){if(o&&s>92||l&&s>94||a&&s>97)return!1;var t=new ArrayBuffer(8),e=c(t,{transfer:[t]});return 0!=t.byteLength||8!=e.byteLength}))},(t,e,n)=>{var i=n(121),r=n(122);t.exports=!i&&!r&&"object"==typeof window&&"object"==typeof document},t=>{t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},(t,e,n)=>{var i=n(15);t.exports="undefined"!=typeof process&&"process"==i(process)},(t,e,n)=>{"use strict";var i=n(3),r=n(117);r&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function transferToFixedLength(){return r(this,arguments.length?arguments[0]:void 0,!1)}})},(__unused_webpack_module,exports,__w_pdfjs_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.RenderTask=exports.PDFWorkerUtil=exports.PDFWorker=exports.PDFPageProxy=exports.PDFDocumentProxy=exports.PDFDocumentLoadingTask=exports.PDFDataRangeTransport=exports.LoopbackPort=exports.DefaultStandardFontDataFactory=exports.DefaultFilterFactory=exports.DefaultCanvasFactory=exports.DefaultCMapReaderFactory=void 0;Object.defineProperty(exports,"SVGGraphics",{enumerable:!0,get:function(){return _displaySvg.SVGGraphics}});exports.build=void 0;exports.getDocument=getDocument;exports.version=void 0;__w_pdfjs_require__(84);__w_pdfjs_require__(86);__w_pdfjs_require__(87);__w_pdfjs_require__(2);__w_pdfjs_require__(93);__w_pdfjs_require__(101);__w_pdfjs_require__(102);__w_pdfjs_require__(105);__w_pdfjs_require__(107);__w_pdfjs_require__(109);__w_pdfjs_require__(113);__w_pdfjs_require__(116);__w_pdfjs_require__(123);__w_pdfjs_require__(89);__w_pdfjs_require__(125);__w_pdfjs_require__(135);__w_pdfjs_require__(137);__w_pdfjs_require__(140);__w_pdfjs_require__(142);__w_pdfjs_require__(144);__w_pdfjs_require__(146);__w_pdfjs_require__(148);__w_pdfjs_require__(151);var _util=__w_pdfjs_require__(1),_annotation_storage=__w_pdfjs_require__(162),_display_utils=__w_pdfjs_require__(167),_font_loader=__w_pdfjs_require__(170),_displayNode_utils=__w_pdfjs_require__(171),_canvas=__w_pdfjs_require__(172),_worker_options=__w_pdfjs_require__(175),_message_handler=__w_pdfjs_require__(176),_metadata=__w_pdfjs_require__(177),_optional_content_config=__w_pdfjs_require__(178),_transport_stream=__w_pdfjs_require__(179),_displayFetch_stream=__w_pdfjs_require__(180),_displayNetwork=__w_pdfjs_require__(183),_displayNode_stream=__w_pdfjs_require__(184),_displaySvg=__w_pdfjs_require__(185),_xfa_text=__w_pdfjs_require__(193);const DEFAULT_RANGE_CHUNK_SIZE=65536,RENDERING_CANCELLED_TIMEOUT=100,DELAYED_CLEANUP_TIMEOUT=5e3,DefaultCanvasFactory=_util.isNodeJS?_displayNode_utils.NodeCanvasFactory:_display_utils.DOMCanvasFactory;exports.DefaultCanvasFactory=DefaultCanvasFactory;const DefaultCMapReaderFactory=_util.isNodeJS?_displayNode_utils.NodeCMapReaderFactory:_display_utils.DOMCMapReaderFactory;exports.DefaultCMapReaderFactory=DefaultCMapReaderFactory;const DefaultFilterFactory=_util.isNodeJS?_displayNode_utils.NodeFilterFactory:_display_utils.DOMFilterFactory;exports.DefaultFilterFactory=DefaultFilterFactory;const DefaultStandardFontDataFactory=_util.isNodeJS?_displayNode_utils.NodeStandardFontDataFactory:_display_utils.DOMStandardFontDataFactory;exports.DefaultStandardFontDataFactory=DefaultStandardFontDataFactory;function getDocument(t){"string"==typeof t||t instanceof URL?t={url:t}:(0,_util.isArrayBuffer)(t)&&(t={data:t});if("object"!=typeof t)throw new Error("Invalid parameter in getDocument, need parameter object.");if(!t.url&&!t.data&&!t.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const e=new PDFDocumentLoadingTask,{docId:n}=e,i=t.url?getUrlProp(t.url):null,r=t.data?getDataProp(t.data):null,s=t.httpHeaders||null,a=!0===t.withCredentials,o=t.password??null,l=t.range instanceof PDFDataRangeTransport?t.range:null,c=Number.isInteger(t.rangeChunkSize)&&t.rangeChunkSize>0?t.rangeChunkSize:DEFAULT_RANGE_CHUNK_SIZE;let h=t.worker instanceof PDFWorker?t.worker:null;const d=t.verbosity,u="string"!=typeof t.docBaseUrl||(0,_display_utils.isDataScheme)(t.docBaseUrl)?null:t.docBaseUrl,p="string"==typeof t.cMapUrl?t.cMapUrl:null,f=!1!==t.cMapPacked,g=t.CMapReaderFactory||DefaultCMapReaderFactory,m="string"==typeof t.standardFontDataUrl?t.standardFontDataUrl:null,b=t.StandardFontDataFactory||DefaultStandardFontDataFactory,v=!0!==t.stopAtErrors,y=Number.isInteger(t.maxImageSize)&&t.maxImageSize>-1?t.maxImageSize:-1,A=!1!==t.isEvalSupported,_="boolean"==typeof t.isOffscreenCanvasSupported?t.isOffscreenCanvasSupported:!_util.isNodeJS,S=Number.isInteger(t.canvasMaxAreaInBytes)?t.canvasMaxAreaInBytes:-1,E="boolean"==typeof t.disableFontFace?t.disableFontFace:_util.isNodeJS,x=!0===t.fontExtraProperties,w=!0===t.enableXfa,C=t.ownerDocument||globalThis.document,T=!0===t.disableRange,P=!0===t.disableStream,k=!0===t.disableAutoFetch,M=!0===t.pdfBug,R=l?l.length:t.length??NaN,I="boolean"==typeof t.useSystemFonts?t.useSystemFonts:!_util.isNodeJS&&!E,D="boolean"==typeof t.useWorkerFetch?t.useWorkerFetch:g===_display_utils.DOMCMapReaderFactory&&b===_display_utils.DOMStandardFontDataFactory&&p&&m&&(0,_display_utils.isValidFetchUrl)(p,document.baseURI)&&(0,_display_utils.isValidFetchUrl)(m,document.baseURI),O=t.canvasFactory||new DefaultCanvasFactory({ownerDocument:C}),L=t.filterFactory||new DefaultFilterFactory({docId:n,ownerDocument:C});(0,_util.setVerbosityLevel)(d);const N={canvasFactory:O,filterFactory:L};if(!D){N.cMapReaderFactory=new g({baseUrl:p,isCompressed:f});N.standardFontDataFactory=new b({baseUrl:m})}if(!h){const t={verbosity:d,port:_worker_options.GlobalWorkerOptions.workerPort};h=t.port?PDFWorker.fromPort(t):new PDFWorker(t);e._worker=h}const B={docId:n,apiVersion:"3.9.179",data:r,password:o,disableAutoFetch:k,rangeChunkSize:c,length:R,docBaseUrl:u,enableXfa:w,evaluatorOptions:{maxImageSize:y,disableFontFace:E,ignoreErrors:v,isEvalSupported:A,isOffscreenCanvasSupported:_,canvasMaxAreaInBytes:S,fontExtraProperties:x,useSystemFonts:I,cMapUrl:D?p:null,standardFontDataUrl:D?m:null}},j={ignoreErrors:v,isEvalSupported:A,disableFontFace:E,fontExtraProperties:x,enableXfa:w,ownerDocument:C,disableAutoFetch:k,pdfBug:M,styleElement:null};h.promise.then((function(){if(e.destroyed)throw new Error("Loading aborted");const t=_fetchDocument(h,B),o=new Promise((function(t){let e;if(l)e=new _transport_stream.PDFDataTransportStream({length:R,initialData:l.initialData,progressiveDone:l.progressiveDone,contentDispositionFilename:l.contentDispositionFilename,disableRange:T,disableStream:P},l);else if(!r){e=(t=>_util.isNodeJS?new _displayNode_stream.PDFNodeStream(t):(0,_display_utils.isValidFetchUrl)(t.url)?new _displayFetch_stream.PDFFetchStream(t):new _displayNetwork.PDFNetworkStream(t))({url:i,length:R,httpHeaders:s,withCredentials:a,rangeChunkSize:c,disableRange:T,disableStream:P})}t(e)}));return Promise.all([t,o]).then((function(t){let[i,r]=t;if(e.destroyed)throw new Error("Loading aborted");const s=new _message_handler.MessageHandler(n,i,h.port),a=new WorkerTransport(s,e,r,j,N);e._transport=a;s.send("Ready",null)}))})).catch(e._capability.reject);return e}async function _fetchDocument(t,e){if(t.destroyed)throw new Error("Worker was destroyed");const n=await t.messageHandler.sendWithPromise("GetDocRequest",e,e.data?[e.data.buffer]:null);if(t.destroyed)throw new Error("Worker was destroyed");return n}function getUrlProp(t){if(t instanceof URL)return t.href;try{return new URL(t,window.location).href}catch{if(_util.isNodeJS&&"string"==typeof t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function getDataProp(t){if(_util.isNodeJS&&"undefined"!=typeof Buffer&&t instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength)return t;if("string"==typeof t)return(0,_util.stringToBytes)(t);if("object"==typeof t&&!isNaN(t?.length)||(0,_util.isArrayBuffer)(t))return new Uint8Array(t);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}class PDFDocumentLoadingTask{static#e=0;constructor(){this._capability=new _util.PromiseCapability;this._transport=null;this._worker=null;this.docId="d"+PDFDocumentLoadingTask.#e++;this.destroyed=!1;this.onPassword=null;this.onProgress=null}get promise(){return this._capability.promise}async destroy(){this.destroyed=!0;await(this._transport?.destroy());this._transport=null;if(this._worker){this._worker.destroy();this._worker=null}}}exports.PDFDocumentLoadingTask=PDFDocumentLoadingTask;class PDFDataRangeTransport{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;this.length=t;this.initialData=e;this.progressiveDone=n;this.contentDispositionFilename=i;this._rangeListeners=[];this._progressListeners=[];this._progressiveReadListeners=[];this._progressiveDoneListeners=[];this._readyCapability=new _util.PromiseCapability}addRangeListener(t){this._rangeListeners.push(t)}addProgressListener(t){this._progressListeners.push(t)}addProgressiveReadListener(t){this._progressiveReadListeners.push(t)}addProgressiveDoneListener(t){this._progressiveDoneListeners.push(t)}onDataRange(t,e){for(const n of this._rangeListeners)n(t,e)}onDataProgress(t,e){this._readyCapability.promise.then((()=>{for(const n of this._progressListeners)n(t,e)}))}onDataProgressiveRead(t){this._readyCapability.promise.then((()=>{for(const e of this._progressiveReadListeners)e(t)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const t of this._progressiveDoneListeners)t()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(t,e){(0,_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}exports.PDFDataRangeTransport=PDFDataRangeTransport;class PDFDocumentProxy{constructor(t,e){this._pdfInfo=t;this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJavaScript(){return this._transport.getJavaScript()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig(){return this._transport.getOptionalContentConfig()}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}exports.PDFDocumentProxy=PDFDocumentProxy;class PDFPageProxy{#n=null;#i=!1;constructor(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this._pageIndex=t;this._pageInfo=e;this._transport=n;this._stats=i?new _display_utils.StatTimer:null;this._pdfBug=i;this.commonObjs=n.commonObjs;this.objs=new PDFObjects;this._maybeCleanupAfterRender=!1;this._intentStates=new Map;this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport(){let{scale:t,rotation:e=this.rotate,offsetX:n=0,offsetY:i=0,dontFlip:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new _display_utils.PageViewport({viewBox:this.view,scale:t,rotation:e,offsetX:n,offsetY:i,dontFlip:r})}getAnnotations(){let{intent:t="display"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e.renderingIntent)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render(t){let{canvasContext:e,viewport:n,intent:i="display",annotationMode:r=_util.AnnotationMode.ENABLE,transform:s=null,background:a=null,optionalContentConfigPromise:o=null,annotationCanvasMap:l=null,pageColors:c=null,printAnnotationStorage:h=null}=t;this._stats?.time("Overall");const d=this._transport.getRenderingIntent(i,r,h);this.#i=!1;this.#r();o||(o=this._transport.getOptionalContentConfig());let u=this._intentStates.get(d.cacheKey);if(!u){u=Object.create(null);this._intentStates.set(d.cacheKey,u)}if(u.streamReaderCancelTimeout){clearTimeout(u.streamReaderCancelTimeout);u.streamReaderCancelTimeout=null}const p=!!(d.renderingIntent&_util.RenderingIntentFlag.PRINT);if(!u.displayReadyCapability){u.displayReadyCapability=new _util.PromiseCapability;u.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(d)}const complete=t=>{u.renderTasks.delete(f);(this._maybeCleanupAfterRender||p)&&(this.#i=!0);this.#s(!p);if(t){f.capability.reject(t);this._abortOperatorList({intentState:u,reason:t instanceof Error?t:new Error(t)})}else f.capability.resolve();this._stats?.timeEnd("Rendering");this._stats?.timeEnd("Overall")},f=new InternalRenderTask({callback:complete,params:{canvasContext:e,viewport:n,transform:s,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:l,operatorList:u.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!p,pdfBug:this._pdfBug,pageColors:c});(u.renderTasks||=new Set).add(f);const g=f.task;Promise.all([u.displayReadyCapability.promise,o]).then((t=>{let[e,n]=t;if(this.destroyed)complete();else{this._stats?.time("Rendering");f.initializeGraphics({transparency:e,optionalContentConfig:n});f.operatorListChanged()}})).catch(complete);return g}getOperatorList(){let{intent:t="display",annotationMode:e=_util.AnnotationMode.ENABLE,printAnnotationStorage:n=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=this._transport.getRenderingIntent(t,e,n,!0);let r,s=this._intentStates.get(i.cacheKey);if(!s){s=Object.create(null);this._intentStates.set(i.cacheKey,s)}if(!s.opListReadCapability){r=Object.create(null);r.operatorListChanged=function operatorListChanged(){if(s.operatorList.lastChunk){s.opListReadCapability.resolve(s.operatorList);s.renderTasks.delete(r)}};s.opListReadCapability=new _util.PromiseCapability;(s.renderTasks||=new Set).add(r);s.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(i)}return s.opListReadCapability.promise}streamTextContent(){let{includeMarkedContent:t=!1,disableNormalization:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size:t=>t.items.length})}getTextContent(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._transport._htmlForXfa)return this.getXfa().then((t=>_xfa_text.XfaText.textContent(t)));const e=this.streamTextContent(t);return new Promise((function(t,n){const i=e.getReader(),r={items:[],styles:Object.create(null)};!function pump(){i.read().then((function(e){let{value:n,done:i}=e;if(i)t(r);else{Object.assign(r.styles,n.styles);r.items.push(...n.items);pump()}}),n)}()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values()){this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0});if(!e.opListReadCapability)for(const n of e.renderTasks){t.push(n.completed);n.cancel()}}this.objs.clear();this.#i=!1;this.#r();return Promise.all(t)}cleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.#i=!0;const e=this.#s(!1);t&&e&&(this._stats&&=new _display_utils.StatTimer);return e}#s(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.#r();if(!this.#i||this.destroyed)return!1;if(t){this.#n=setTimeout((()=>{this.#n=null;this.#s(!1)}),DELAYED_CLEANUP_TIMEOUT);return!1}for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;this._intentStates.clear();this.objs.clear();this.#i=!1;return!0}#r(){if(this.#n){clearTimeout(this.#n);this.#n=null}}_startRenderPage(t,e){const n=this._intentStates.get(e);if(n){this._stats?.timeEnd("Page Request");n.displayReadyCapability?.resolve(t)}}_renderPageChunk(t,e){for(let n=0,i=t.length;n{a.read().then((t=>{let{value:e,done:n}=t;if(n)o.streamReader=null;else if(!this._transport.destroyed){this._renderPageChunk(e,o);pump()}}),(t=>{o.streamReader=null;if(!this._transport.destroyed){if(o.operatorList){o.operatorList.lastChunk=!0;for(const t of o.renderTasks)t.operatorListChanged();this.#s(!0)}if(o.displayReadyCapability)o.displayReadyCapability.reject(t);else{if(!o.opListReadCapability)throw t;o.opListReadCapability.reject(t)}}}))};pump()}_abortOperatorList(t){let{intentState:e,reason:n,force:i=!1}=t;if(e.streamReader){if(e.streamReaderCancelTimeout){clearTimeout(e.streamReaderCancelTimeout);e.streamReaderCancelTimeout=null}if(!i){if(e.renderTasks.size>0)return;if(n instanceof _display_utils.RenderingCancelledException){let t=RENDERING_CANCELLED_TIMEOUT;n.extraDelay>0&&n.extraDelay<1e3&&(t+=n.extraDelay);e.streamReaderCancelTimeout=setTimeout((()=>{e.streamReaderCancelTimeout=null;this._abortOperatorList({intentState:e,reason:n,force:!0})}),t);return}}e.streamReader.cancel(new _util.AbortException(n.message)).catch((()=>{}));e.streamReader=null;if(!this._transport.destroyed){for(const[t,n]of this._intentStates)if(n===e){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}}exports.PDFPageProxy=PDFPageProxy;class LoopbackPort{#a=new Set;#o=Promise.resolve();postMessage(t,e){const n={data:structuredClone(t,null)};this.#o.then((()=>{for(const t of this.#a)t.call(this,n)}))}addEventListener(t,e){this.#a.add(e)}removeEventListener(t,e){this.#a.delete(e)}terminate(){this.#a.clear()}}exports.LoopbackPort=LoopbackPort;const PDFWorkerUtil={isWorkerDisabled:!1,fallbackWorkerSrc:null,fakeWorkerId:0};exports.PDFWorkerUtil=PDFWorkerUtil;if(_util.isNodeJS&&"function"==typeof require){PDFWorkerUtil.isWorkerDisabled=!0;PDFWorkerUtil.fallbackWorkerSrc="./pdf.worker.js"}else if("object"==typeof document){const t=document?.currentScript?.src;t&&(PDFWorkerUtil.fallbackWorkerSrc=t.replace(/(\.(?:min\.)?js)(\?.*)?$/i,".worker$1$2"))}PDFWorkerUtil.isSameOrigin=function(t,e){let n;try{n=new URL(t);if(!n.origin||"null"===n.origin)return!1}catch{return!1}const i=new URL(e,n);return n.origin===i.origin};PDFWorkerUtil.createCDNWrapper=function(t){const e=`importScripts("${t}");`;return URL.createObjectURL(new Blob([e]))};class PDFWorker{static#l=new WeakMap;constructor(){let{name:t=null,port:e=null,verbosity:n=(0,_util.getVerbosityLevel)()}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e&&PDFWorker.#l.has(e))throw new Error("Cannot use more than one PDFWorker per port.");this.name=t;this.destroyed=!1;this.verbosity=n;this._readyCapability=new _util.PromiseCapability;this._port=null;this._webWorker=null;this._messageHandler=null;if(e){PDFWorker.#l.set(e,this);this._initializeFromPort(e)}else this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(t){this._port=t;this._messageHandler=new _message_handler.MessageHandler("main","worker",t);this._messageHandler.on("ready",(function(){}));this._readyCapability.resolve();this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!PDFWorkerUtil.isWorkerDisabled&&!PDFWorker._mainThreadWorkerMessageHandler){let{workerSrc:t}=PDFWorker;try{PDFWorkerUtil.isSameOrigin(window.location.href,t)||(t=PDFWorkerUtil.createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t),n=new _message_handler.MessageHandler("main","worker",e),terminateEarly=()=>{e.removeEventListener("error",onWorkerError);n.destroy();e.terminate();this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},onWorkerError=()=>{this._webWorker||terminateEarly()};e.addEventListener("error",onWorkerError);n.on("test",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else if(t){this._messageHandler=n;this._port=e;this._webWorker=e;this._readyCapability.resolve();n.send("configure",{verbosity:this.verbosity})}else{this._setupFakeWorker();n.destroy();e.terminate()}}));n.on("ready",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else try{sendTest()}catch{this._setupFakeWorker()}}));const sendTest=()=>{const t=new Uint8Array;n.send("test",t,[t.buffer])};sendTest();return}catch{(0,_util.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){if(!PDFWorkerUtil.isWorkerDisabled){(0,_util.warn)("Setting up fake worker.");PDFWorkerUtil.isWorkerDisabled=!0}PDFWorker._setupFakeWorkerGlobal.then((t=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const e=new LoopbackPort;this._port=e;const n="fake"+PDFWorkerUtil.fakeWorkerId++,i=new _message_handler.MessageHandler(n+"_worker",n,e);t.setup(i,e);const r=new _message_handler.MessageHandler(n,n+"_worker",e);this._messageHandler=r;this._readyCapability.resolve();r.send("configure",{verbosity:this.verbosity})})).catch((t=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`))}))}destroy(){this.destroyed=!0;if(this._webWorker){this._webWorker.terminate();this._webWorker=null}PDFWorker.#l.delete(this._port);this._port=null;if(this._messageHandler){this._messageHandler.destroy();this._messageHandler=null}}static fromPort(t){if(!t?.port)throw new Error("PDFWorker.fromPort - invalid method signature.");return this.#l.has(t.port)?this.#l.get(t.port):new PDFWorker(t)}static get workerSrc(){if(_worker_options.GlobalWorkerOptions.workerSrc)return _worker_options.GlobalWorkerOptions.workerSrc;if(null!==PDFWorkerUtil.fallbackWorkerSrc){_util.isNodeJS||(0,_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');return PDFWorkerUtil.fallbackWorkerSrc}throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _mainThreadWorkerMessageHandler(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){const loader=async()=>{const mainWorkerMessageHandler=this._mainThreadWorkerMessageHandler;if(mainWorkerMessageHandler)return mainWorkerMessageHandler;if(_util.isNodeJS&&"function"==typeof require){const worker=eval("require")(this.workerSrc);return worker.WorkerMessageHandler}await(0,_display_utils.loadScript)(this.workerSrc);return window.pdfjsWorker.WorkerMessageHandler};return(0,_util.shadow)(this,"_setupFakeWorkerGlobal",loader())}}exports.PDFWorker=PDFWorker;class WorkerTransport{#c=new Map;#h=new Map;#d=new Map;#u=null;constructor(t,e,n,i,r){this.messageHandler=t;this.loadingTask=e;this.commonObjs=new PDFObjects;this.fontLoader=new _font_loader.FontLoader({ownerDocument:i.ownerDocument,styleElement:i.styleElement});this._params=i;this.canvasFactory=r.canvasFactory;this.filterFactory=r.filterFactory;this.cMapReaderFactory=r.cMapReaderFactory;this.standardFontDataFactory=r.standardFontDataFactory;this.destroyed=!1;this.destroyCapability=null;this._networkStream=n;this._fullReader=null;this._lastProgress=null;this.downloadInfoCapability=new _util.PromiseCapability;this.setupMessageHandler()}#p(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=this.#c.get(t);if(n)return n;const i=this.messageHandler.sendWithPromise(t,e);this.#c.set(t,i);return i}get annotationStorage(){return(0,_util.shadow)(this,"annotationStorage",new _annotation_storage.AnnotationStorage)}getRenderingIntent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_util.AnnotationMode.ENABLE,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=_util.RenderingIntentFlag.DISPLAY,s=_annotation_storage.SerializableEmpty;switch(t){case"any":r=_util.RenderingIntentFlag.ANY;break;case"display":break;case"print":r=_util.RenderingIntentFlag.PRINT;break;default:(0,_util.warn)(`getRenderingIntent - invalid intent: ${t}`)}switch(e){case _util.AnnotationMode.DISABLE:r+=_util.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case _util.AnnotationMode.ENABLE:break;case _util.AnnotationMode.ENABLE_FORMS:r+=_util.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case _util.AnnotationMode.ENABLE_STORAGE:r+=_util.RenderingIntentFlag.ANNOTATIONS_STORAGE;s=(r&_util.RenderingIntentFlag.PRINT&&n instanceof _annotation_storage.PrintAnnotationStorage?n:this.annotationStorage).serializable;break;default:(0,_util.warn)(`getRenderingIntent - invalid annotationMode: ${e}`)}i&&(r+=_util.RenderingIntentFlag.OPLIST);return{renderingIntent:r,cacheKey:`${r}_${s.hash}`,annotationStorageSerializable:s}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0;this.destroyCapability=new _util.PromiseCapability;this.#u?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const e of this.#h.values())t.push(e._destroy());this.#h.clear();this.#d.clear();this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);t.push(e);Promise.all(t).then((()=>{this.commonObjs.clear();this.fontLoader.clear();this.#c.clear();this.filterFactory.destroy();this._networkStream&&this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));if(this.messageHandler){this.messageHandler.destroy();this.messageHandler=null}this.destroyCapability.resolve()}),this.destroyCapability.reject);return this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",((t,e)=>{(0,_util.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available.");this._fullReader=this._networkStream.getFullReader();this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}};e.onPull=()=>{this._fullReader.read().then((function(t){let{value:n,done:i}=t;if(i)e.close();else{(0,_util.assert)(n instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(n),1,[n])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{this._fullReader.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}));t.on("ReaderHeadersReady",(t=>{const n=new _util.PromiseCapability,i=this._fullReader;i.headersReady.then((()=>{if(!i.isStreamingSupported||!i.isRangeSupported){this._lastProgress&&e.onProgress?.(this._lastProgress);i.onProgress=t=>{e.onProgress?.({loaded:t.loaded,total:t.total})}}n.resolve({isStreamingSupported:i.isStreamingSupported,isRangeSupported:i.isRangeSupported,contentLength:i.contentLength})}),n.reject);return n.promise}));t.on("GetRangeReader",((t,e)=>{(0,_util.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const n=this._networkStream.getRangeReader(t.begin,t.end);if(n){e.onPull=()=>{n.read().then((function(t){let{value:n,done:i}=t;if(i)e.close();else{(0,_util.assert)(n instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(n),1,[n])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{n.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}else e.close()}));t.on("GetDoc",(t=>{let{pdfInfo:n}=t;this._numPages=n.numPages;this._htmlForXfa=n.htmlForXfa;delete n.htmlForXfa;e._capability.resolve(new PDFDocumentProxy(n,this))}));t.on("DocException",(function(t){let n;switch(t.name){case"PasswordException":n=new _util.PasswordException(t.message,t.code);break;case"InvalidPDFException":n=new _util.InvalidPDFException(t.message);break;case"MissingPDFException":n=new _util.MissingPDFException(t.message);break;case"UnexpectedResponseException":n=new _util.UnexpectedResponseException(t.message,t.status);break;case"UnknownErrorException":n=new _util.UnknownErrorException(t.message,t.details);break;default:(0,_util.unreachable)("DocException - expected a valid Error.")}e._capability.reject(n)}));t.on("PasswordRequest",(t=>{this.#u=new _util.PromiseCapability;if(e.onPassword){const updatePassword=t=>{t instanceof Error?this.#u.reject(t):this.#u.resolve({password:t})};try{e.onPassword(updatePassword,t.code)}catch(t){this.#u.reject(t)}}else this.#u.reject(new _util.PasswordException(t.message,t.code));return this.#u.promise}));t.on("DataLoaded",(t=>{e.onProgress?.({loaded:t.length,total:t.length});this.downloadInfoCapability.resolve(t)}));t.on("StartRenderPage",(t=>{if(this.destroyed)return;this.#h.get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)}));t.on("commonobj",(e=>{let[n,i,r]=e;if(!this.destroyed&&!this.commonObjs.has(n))switch(i){case"Font":const e=this._params;if("error"in r){const t=r.error;(0,_util.warn)(`Error during font loading: ${t}`);this.commonObjs.resolve(n,t);break}const s=e.pdfBug&&globalThis.FontInspector?.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,a=new _font_loader.FontFaceObject(r,{isEvalSupported:e.isEvalSupported,disableFontFace:e.disableFontFace,ignoreErrors:e.ignoreErrors,inspectFont:s});this.fontLoader.bind(a).catch((e=>t.sendWithPromise("FontFallback",{id:n}))).finally((()=>{!e.fontExtraProperties&&a.data&&(a.data=null);this.commonObjs.resolve(n,a)}));break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(n,r);break;default:throw new Error(`Got unknown common object type ${i}`)}}));t.on("obj",(t=>{let[e,n,i,r]=t;if(this.destroyed)return;const s=this.#h.get(n);if(!s.objs.has(e))switch(i){case"Image":s.objs.resolve(e,r);if(r){let t;if(r.bitmap){const{width:e,height:n}=r;t=e*n*4}else t=r.data?.length||0;t>_util.MAX_IMAGE_SIZE_TO_CACHE&&(s._maybeCleanupAfterRender=!0)}break;case"Pattern":s.objs.resolve(e,r);break;default:throw new Error(`Got unknown object type ${i}`)}}));t.on("DocProgress",(t=>{this.destroyed||e.onProgress?.({loaded:t.loaded,total:t.total})}));t.on("FetchBuiltInCMap",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(t):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))));t.on("FetchStandardFontData",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(t):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."))))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&(0,_util.warn)("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfers:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:this._fullReader?.filename??null},e).finally((()=>{this.annotationStorage.resetModified()}))}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,n=this.#d.get(e);if(n)return n;const i=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then((t=>{if(this.destroyed)throw new Error("Transport destroyed");const n=new PDFPageProxy(e,t,this,this._params.pdfBug);this.#h.set(e,n);return n}));this.#d.set(e,i);return i}getPageIndex(t){return"object"!=typeof t||null===t||!Number.isInteger(t.num)||t.num<0||!Number.isInteger(t.gen)||t.gen<0?Promise.reject(new Error("Invalid pageIndex request.")):this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen})}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return this.#p("GetFieldObjects")}hasJSActions(){return this.#p("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getJavaScript(){return this.messageHandler.sendWithPromise("GetJavaScript",null)}getDocJSActions(){return this.messageHandler.sendWithPromise("GetDocJSActions",null)}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((t=>new _optional_content_config.OptionalContentConfig(t)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=this.#c.get(t);if(e)return e;const n=this.messageHandler.sendWithPromise(t,null).then((t=>({info:t[0],metadata:t[1]?new _metadata.Metadata(t[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null})));this.#c.set(t,n);return n}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of this.#h.values()){if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`)}this.commonObjs.clear();t||this.fontLoader.clear();this.#c.clear();this.filterFactory.destroy(!0)}}get loadingParams(){const{disableAutoFetch:t,enableXfa:e}=this._params;return(0,_util.shadow)(this,"loadingParams",{disableAutoFetch:t,enableXfa:e})}}class PDFObjects{#f=Object.create(null);#g(t){const e=this.#f[t];return e||(this.#f[t]={capability:new _util.PromiseCapability,data:null})}get(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(e){const n=this.#g(t);n.capability.promise.then((()=>e(n.data)));return null}const n=this.#f[t];if(!n?.capability.settled)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return n.data}has(t){const e=this.#f[t];return e?.capability.settled||!1}resolve(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=this.#g(t);n.data=e;n.capability.resolve()}clear(){for(const t in this.#f){const{data:e}=this.#f[t];e?.bitmap?.close()}this.#f=Object.create(null)}}class RenderTask{#m=null;constructor(t){this.#m=t;this.onContinue=null}get promise(){return this.#m.capability.promise}cancel(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.#m.cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=this.#m.operatorList;if(!t)return!1;const{annotationCanvasMap:e}=this.#m;return t.form||t.canvas&&e?.size>0}}exports.RenderTask=RenderTask;class InternalRenderTask{static#b=new WeakSet;constructor(t){let{callback:e,params:n,objs:i,commonObjs:r,annotationCanvasMap:s,operatorList:a,pageIndex:o,canvasFactory:l,filterFactory:c,useRequestAnimationFrame:h=!1,pdfBug:d=!1,pageColors:u=null}=t;this.callback=e;this.params=n;this.objs=i;this.commonObjs=r;this.annotationCanvasMap=s;this.operatorListIdx=null;this.operatorList=a;this._pageIndex=o;this.canvasFactory=l;this.filterFactory=c;this._pdfBug=d;this.pageColors=u;this.running=!1;this.graphicsReadyCallback=null;this.graphicsReady=!1;this._useRequestAnimationFrame=!0===h&&"undefined"!=typeof window;this.cancelled=!1;this.capability=new _util.PromiseCapability;this.task=new RenderTask(this);this._cancelBound=this.cancel.bind(this);this._continueBound=this._continue.bind(this);this._scheduleNextBound=this._scheduleNext.bind(this);this._nextBound=this._next.bind(this);this._canvas=n.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics(t){let{transparency:e=!1,optionalContentConfig:n}=t;if(this.cancelled)return;if(this._canvas){if(InternalRenderTask.#b.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");InternalRenderTask.#b.add(this._canvas)}if(this._pdfBug&&globalThis.StepperManager?.enabled){this.stepper=globalThis.StepperManager.create(this._pageIndex);this.stepper.init(this.operatorList);this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint()}const{canvasContext:i,viewport:r,transform:s,background:a}=this.params;this.gfx=new _canvas.CanvasGraphics(i,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors);this.gfx.beginDrawing({transform:s,viewport:r,transparency:e,background:a});this.operatorListIdx=0;this.graphicsReady=!0;this.graphicsReadyCallback?.()}cancel(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.running=!1;this.cancelled=!0;this.gfx?.endDrawing();this._canvas&&InternalRenderTask.#b.delete(this._canvas);this.callback(t||new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex+1}`,e))}operatorListChanged(){if(this.graphicsReady){this.stepper?.updateOperatorList(this.operatorList);this.running||this._continue()}else this.graphicsReadyCallback||=this._continueBound}_continue(){this.running=!0;this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame((()=>{this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){if(!this.cancelled){this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper);if(this.operatorListIdx===this.operatorList.argsArray.length){this.running=!1;if(this.operatorList.lastChunk){this.gfx.endDrawing(this.pageColors);this._canvas&&InternalRenderTask.#b.delete(this._canvas);this.callback()}}}}}const version="3.9.179";exports.version=version;const build="1ef6fbc52";exports.build=build},(t,e,n)=>{var i=n(3),r=n(126);i({target:"Set",proto:!0,real:!0,forced:!n(134)("difference")},{difference:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(129),a=n(132),o=n(133),l=n(130),c=n(131),h=r.has,d=r.remove;t.exports=function difference(t){var e=i(this),n=o(t),r=s(e);a(e)<=n.size?l(e,(function(t){n.includes(t)&&d(r,t)})):c(n.getIterator(),(function(t){h(e,t)&&d(r,t)}));return r}},(t,e,n)=>{var i=n(128).has;t.exports=function(t){i(t);return t}},(t,e,n)=>{var i=n(14),r=Set.prototype;t.exports={Set:Set,add:i(r.add),has:i(r.has),remove:i(r.delete),proto:r}},(t,e,n)=>{var i=n(128),r=n(130),s=i.Set,a=i.add;t.exports=function(t){var e=new s;r(t,(function(t){a(e,t)}));return e}},(t,e,n)=>{var i=n(14),r=n(131),s=n(128),a=s.Set,o=s.proto,l=i(o.forEach),c=i(o.keys),h=c(new a).next;t.exports=function(t,e,n){return n?r(c(t),e,h):l(t,e)}},(t,e,n)=>{var i=n(8);t.exports=function(t,e,n){for(var r,s,a=n||t.next;!(r=i(a,t)).done;)if(void 0!==(s=e(r.value)))return s}},(t,e,n)=>{var i=n(72),r=n(128);t.exports=i(r.proto,"size","get")||function(t){return t.size}},(t,e,n)=>{var i=n(31),r=n(47),s=n(8),a=n(62),o=TypeError,l=Math.max,SetRecord=function(t,e,n,i){this.set=t;this.size=e;this.has=n;this.keys=i};SetRecord.prototype={getIterator:function(){return r(s(this.keys,this.set))},includes:function(t){return s(this.has,this.set,t)}};t.exports=function(t){r(t);var e=+t.size;if(e!=e)throw o("Invalid size");return new SetRecord(t,l(a(e),0),i(t.has),i(t.keys))}},(t,e,n)=>{var i=n(24);t.exports=function(t){try{(new(i("Set")))[t]({size:0,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}});return!0}catch(t){return!1}}},(t,e,n)=>{var i=n(3),r=n(7),s=n(136);i({target:"Set",proto:!0,real:!0,forced:!n(134)("intersection")||r((function(){return"3,2"!=Array.from(new Set([1,2,3]).intersection(new Set([3,2])))}))},{intersection:s})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(132),a=n(133),o=n(130),l=n(131),c=r.Set,h=r.add,d=r.has;t.exports=function intersection(t){var e=i(this),n=a(t),r=new c;s(e)>n.size?l(n.getIterator(),(function(t){d(e,t)&&h(r,t)})):o(e,(function(t){n.includes(t)&&h(r,t)}));return r}},(t,e,n)=>{var i=n(3),r=n(138);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isDisjointFrom")},{isDisjointFrom:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).has,s=n(132),a=n(133),o=n(130),l=n(131),c=n(139);t.exports=function isDisjointFrom(t){var e=i(this),n=a(t);if(s(e)<=n.size)return!1!==o(e,(function(t){if(n.includes(t))return!1}),!0);var h=n.getIterator();return!1!==l(h,(function(t){if(r(e,t))return c(h,"normal",!1)}))}},(t,e,n)=>{var i=n(8),r=n(47),s=n(30);t.exports=function(t,e,n){var a,o;r(t);try{if(!(a=s(t,"return"))){if("throw"===e)throw n;return n}a=i(a,t)}catch(t){o=!0;a=t}if("throw"===e)throw n;if(o)throw a;r(a);return n}},(t,e,n)=>{var i=n(3),r=n(141);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isSubsetOf")},{isSubsetOf:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(132),s=n(130),a=n(133);t.exports=function isSubsetOf(t){var e=i(this),n=a(t);return!(r(e)>n.size)&&!1!==s(e,(function(t){if(!n.includes(t))return!1}),!0)}},(t,e,n)=>{var i=n(3),r=n(143);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isSupersetOf")},{isSupersetOf:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).has,s=n(132),a=n(133),o=n(131),l=n(139);t.exports=function isSupersetOf(t){var e=i(this),n=a(t);if(s(e){var i=n(3),r=n(145);i({target:"Set",proto:!0,real:!0,forced:!n(134)("symmetricDifference")},{symmetricDifference:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(129),a=n(133),o=n(131),l=r.add,c=r.has,h=r.remove;t.exports=function symmetricDifference(t){var e=i(this),n=a(t).getIterator(),r=s(e);o(n,(function(t){c(e,t)?h(r,t):l(r,t)}));return r}},(t,e,n)=>{var i=n(3),r=n(147);i({target:"Set",proto:!0,real:!0,forced:!n(134)("union")},{union:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).add,s=n(129),a=n(133),o=n(131);t.exports=function union(t){var e=i(this),n=a(t).getIterator(),l=s(e);o(n,(function(t){r(l,t)}));return l}},(t,e,n)=>{"use strict";var i=n(3),r=n(4),s=n(24),a=n(11),o=n(45).f,l=n(39),c=n(149),h=n(75),d=n(76),u=n(150),p=n(82),f=n(6),g=n(36),m="DOMException",b=s("Error"),v=s(m),y=function DOMException(){c(this,A);var t=arguments.length,e=d(t<1?void 0:arguments[0]),n=d(t<2?void 0:arguments[1],"Error"),i=new v(e,n),r=b(e);r.name=m;o(i,"stack",a(1,p(r.stack,1)));h(i,this,y);return i},A=y.prototype=v.prototype,_="stack"in b(m),S="stack"in new v(1,2),E=v&&f&&Object.getOwnPropertyDescriptor(r,m),x=!(!E||E.writable&&E.configurable),w=_&&!x&&!S;i({global:!0,constructor:!0,forced:g||w},{DOMException:w?y:v});var C=s(m),T=C.prototype;if(T.constructor!==C){g||o(T,"constructor",a(1,C));for(var P in u)if(l(u,P)){var k=u[P],M=k.s;l(C,M)||o(C,M,a(6,k.c))}}},(t,e,n)=>{var i=n(25),r=TypeError;t.exports=function(t,e){if(i(e,t))return t;throw r("Incorrect invocation")}},t=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},(t,e,n)=>{var i,r=n(36),s=n(3),a=n(4),o=n(24),l=n(14),c=n(7),h=n(41),d=n(21),u=n(152),p=n(17),f=n(20),g=n(23),m=n(153),b=n(47),v=n(78),y=n(39),A=n(158),_=n(44),S=n(64),E=n(85),x=n(159),w=n(161),C=n(128),T=n(83),P=n(119),k=a.Object,M=a.Array,R=a.Date,I=a.Error,D=a.EvalError,O=a.RangeError,L=a.ReferenceError,N=a.SyntaxError,B=a.TypeError,j=a.URIError,U=a.PerformanceMark,z=a.WebAssembly,H=z&&z.CompileError||I,q=z&&z.LinkError||I,W=z&&z.RuntimeError||I,G=o("DOMException"),V=w.Map,$=w.has,X=w.get,K=w.set,Y=C.Set,J=C.add,Q=o("Object","keys"),Z=l([].push),tt=l((!0).valueOf),et=l(1..valueOf),nt=l("".valueOf),it=l(R.prototype.getTime),rt=h("structuredClone"),st="DataCloneError",at="Transferring",checkBasicSemantic=function(t){return!c((function(){var e=new a.Set([7]),n=t(e),i=t(k(7));return n==e||!n.has(7)||"object"!=typeof i||7!=i}))&&t},checkErrorsCloning=function(t,e){return!c((function(){var n=new e,i=t({a:n,b:n});return!(i&&i.a===i.b&&i.a instanceof e&&i.a.stack===n.stack)}))},ot=a.structuredClone,lt=r||!checkErrorsCloning(ot,I)||!checkErrorsCloning(ot,G)||!(i=ot,!c((function(){var t=i(new a.AggregateError([1],rt,{cause:3}));return"AggregateError"!=t.name||1!=t.errors[0]||t.message!=rt||3!=t.cause}))),ct=!ot&&checkBasicSemantic((function(t){return new U(rt,{detail:t}).detail})),ht=checkBasicSemantic(ot)||ct,throwUncloneable=function(t){throw new G("Uncloneable type: "+t,st)},throwUnpolyfillable=function(t,e){throw new G((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",st)},tryNativeRestrictedStructuredClone=function(t,e){ht||throwUnpolyfillable(e);return ht(t)},cloneBuffer=function(t,e,n){if($(e,t))return X(e,t);var i,r,s,o,l,c;if("SharedArrayBuffer"===(n||v(t)))i=ht?ht(t):t;else{var h=a.DataView;h||"function"==typeof t.slice||throwUnpolyfillable("ArrayBuffer");try{if("function"!=typeof t.slice||t.resizable){r=t.byteLength;s="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0;i=new ArrayBuffer(r,s);o=new h(t);l=new h(i);for(c=0;c1&&!p(arguments[1])?b(arguments[1]):void 0,r=i?i.transfer:void 0,s=!1;if(void 0!==r){n=function(t,e){if(!f(t))throw B("Transfer option cannot be converted to a sequence");var n=[];m(t,(function(t){Z(n,b(t))}));for(var i,r,s,o,l,c=0,h=S(n),p=[];c{var i=n(14),r=n(7),s=n(21),a=n(78),o=n(24),l=n(51),noop=function(){},c=[],h=o("Reflect","construct"),d=/^\s*(?:class|function)\b/,u=i(d.exec),p=!d.exec(noop),f=function isConstructor(t){if(!s(t))return!1;try{h(noop,c,t);return!0}catch(t){return!1}},g=function isConstructor(t){if(!s(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!u(d,l(t))}catch(t){return!0}};g.sham=!0;t.exports=!h||r((function(){var t;return f(f.call)||!f(Object)||!f((function(){t=!0}))||t}))?g:f},(t,e,n)=>{var i=n(99),r=n(8),s=n(47),a=n(32),o=n(154),l=n(64),c=n(25),h=n(156),d=n(157),u=n(139),p=TypeError,Result=function(t,e){this.stopped=t;this.result=e},f=Result.prototype;t.exports=function(t,e,n){var g,m,b,v,y,A,_,S=n&&n.that,E=!(!n||!n.AS_ENTRIES),x=!(!n||!n.IS_RECORD),w=!(!n||!n.IS_ITERATOR),C=!(!n||!n.INTERRUPTED),T=i(e,S),stop=function(t){g&&u(g,"normal",t);return new Result(!0,t)},callFn=function(t){if(E){s(t);return C?T(t[0],t[1],stop):T(t[0],t[1])}return C?T(t,stop):T(t)};if(x)g=t.iterator;else if(w)g=t;else{if(!(m=d(t)))throw p(a(t)+" is not iterable");if(o(m)){for(b=0,v=l(t);v>b;b++)if((y=callFn(t[b]))&&c(f,y))return y;return new Result(!1)}g=h(t,m)}A=x?t.next:g.next;for(;!(_=r(A,g)).done;){try{y=callFn(_.value)}catch(t){u(g,"throw",t)}if("object"==typeof y&&y&&c(f,y))return y}return new Result(!1)}},(t,e,n)=>{var i=n(34),r=n(155),s=i("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[s]===t)}},t=>{t.exports={}},(t,e,n)=>{var i=n(8),r=n(31),s=n(47),a=n(32),o=n(157),l=TypeError;t.exports=function(t,e){var n=arguments.length<2?o(t):e;if(r(n))return s(i(n,t));throw l(a(t)+" is not iterable")}},(t,e,n)=>{var i=n(78),r=n(30),s=n(17),a=n(155),o=n(34)("iterator");t.exports=function(t){if(!s(t))return r(t,o)||r(t,"@@iterator")||a[i(t)]}},(t,e,n)=>{"use strict";var i=n(18),r=n(45),s=n(11);t.exports=function(t,e,n){var a=i(e);a in t?r.f(t,a,s(0,n)):t[a]=n}},(t,e,n)=>{var i=n(8),r=n(39),s=n(25),a=n(160),o=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in o||r(t,"flags")||!s(o,t)?e:i(a,t)}},(t,e,n)=>{"use strict";var i=n(47);t.exports=function(){var t=i(this),e="";t.hasIndices&&(e+="d");t.global&&(e+="g");t.ignoreCase&&(e+="i");t.multiline&&(e+="m");t.dotAll&&(e+="s");t.unicode&&(e+="u");t.unicodeSets&&(e+="v");t.sticky&&(e+="y");return e}},(t,e,n)=>{var i=n(14),r=Map.prototype;t.exports={Map:Map,set:i(r.set),get:i(r.get),has:i(r.has),remove:i(r.delete),proto:r}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SerializableEmpty=e.PrintAnnotationStorage=e.AnnotationStorage=void 0;n(89);n(148);n(151);var i=n(1),r=n(163),s=n(169);const a=Object.freeze({map:null,hash:"",transfers:void 0});e.SerializableEmpty=a;class AnnotationStorage{#v=!1;#y=new Map;constructor(){this.onSetModified=null;this.onResetModified=null;this.onAnnotationEditor=null}getValue(t,e){const n=this.#y.get(t);return void 0===n?e:Object.assign(e,n)}getRawValue(t){return this.#y.get(t)}remove(t){this.#y.delete(t);0===this.#y.size&&this.resetModified();if("function"==typeof this.onAnnotationEditor){for(const t of this.#y.values())if(t instanceof r.AnnotationEditor)return;this.onAnnotationEditor(null)}}setValue(t,e){const n=this.#y.get(t);let i=!1;if(void 0!==n){for(const[t,r]of Object.entries(e))if(n[t]!==r){i=!0;n[t]=r}}else{i=!0;this.#y.set(t,e)}i&&this.#A();e instanceof r.AnnotationEditor&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(e.constructor._type)}has(t){return this.#y.has(t)}getAll(){return this.#y.size>0?(0,i.objectFromMap)(this.#y):null}setAll(t){for(const[e,n]of Object.entries(t))this.setValue(e,n)}get size(){return this.#y.size}#A(){if(!this.#v){this.#v=!0;"function"==typeof this.onSetModified&&this.onSetModified()}}resetModified(){if(this.#v){this.#v=!1;"function"==typeof this.onResetModified&&this.onResetModified()}}get print(){return new PrintAnnotationStorage(this)}get serializable(){if(0===this.#y.size)return a;const t=new Map,e=new s.MurmurHash3_64,n=[],i=Object.create(null);let o=!1;for(const[n,s]of this.#y){const a=s instanceof r.AnnotationEditor?s.serialize(!1,i):s;if(a){t.set(n,a);e.update(`${n}:${JSON.stringify(a)}`);o||=!!a.bitmap}}if(o)for(const e of t.values())e.bitmap&&n.push(e.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfers:n}:a}}e.AnnotationStorage=AnnotationStorage;class PrintAnnotationStorage extends AnnotationStorage{#_;constructor(t){super();const{map:e,hash:n,transfers:i}=t.serializable,r=structuredClone(e,null);this.#_={map:r,hash:n,transfers:i}}get print(){(0,i.unreachable)("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#_}}e.PrintAnnotationStorage=PrintAnnotationStorage},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.AnnotationEditor=void 0;n(89);n(2);var i=n(1),r=n(164);class AnnotationEditor{#S=!1;#E=null;#x=null;#w=this.focusin.bind(this);#C=this.focusout.bind(this);#T=!1;#P=!1;#k=!1;_uiManager=null;#M=AnnotationEditor._zIndex++;static _colorManager=new r.ColorManager;static _zIndex=1;constructor(t){this.constructor===AnnotationEditor&&(0,i.unreachable)("Cannot initialize AnnotationEditor.");this.parent=t.parent;this.id=t.id;this.width=this.height=null;this.pageIndex=t.parent.pageIndex;this.name=t.name;this.div=null;this._uiManager=t.uiManager;this.annotationElementId=null;this._willKeepAspectRatio=!1;const{rotation:e,rawDims:{pageWidth:n,pageHeight:r,pageX:s,pageY:a}}=this.parent.viewport;this.rotation=e;this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360;this.pageDimensions=[n,r];this.pageTranslation=[s,a];const[o,l]=this.parentDimensions;this.x=t.x/o;this.y=t.y/l;this.isAttachedToDOM=!1;this.deleted=!1}static get _defaultLineColor(){return(0,i.shadow)(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new FakeEditor({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId;e.deleted=!0;e._uiManager.addToAnnotationStorage(e)}static initialize(t){}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}get propertiesToUpdate(){return[]}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#M}setParent(t){if(null!==t){this.pageIndex=t.pageIndex;this.pageDimensions=t.pageDimensions}this.parent=t}focusin(t){this.#T?this.#T=!1:this.parent.setSelected(this)}focusout(t){if(!this.isAttachedToDOM)return;const e=t.relatedTarget;if(!e?.closest(`#${this.id}`)){t.preventDefault();this.parent?.isMultipleSelection||this.commitOrRemove()}}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}dragstart(t){const e=this.parent.div.getBoundingClientRect();this.startX=t.clientX-e.x;this.startY=t.clientY-e.y;t.dataTransfer.setData("text/plain",this.id);t.dataTransfer.effectAllowed="move"}setAt(t,e,n,i){const[r,s]=this.parentDimensions;[n,i]=this.screenToPageTranslation(n,i);this.x=(t+n)/r;this.y=(e+i)/s;this.fixAndSetPosition()}#R(t,e,n){let[i,r]=t;[e,n]=this.screenToPageTranslation(e,n);this.x+=e/i;this.y+=n/r;this.fixAndSetPosition()}translate(t,e){this.#R(this.parentDimensions,t,e)}translateInPage(t,e){this.#R(this.pageDimensions,t,e);this.div.scrollIntoView({block:"nearest"})}fixAndSetPosition(){const[t,e]=this.pageDimensions;let{x:n,y:i,width:r,height:s}=this;r*=t;s*=e;n*=t;i*=e;switch(this.rotation){case 0:n=Math.max(0,Math.min(t-r,n));i=Math.max(0,Math.min(e-s,i));break;case 90:n=Math.max(0,Math.min(t-s,n));i=Math.min(e,Math.max(r,i));break;case 180:n=Math.min(t,Math.max(r,n));i=Math.min(e,Math.max(s,i));break;case 270:n=Math.min(t,Math.max(s,n));i=Math.max(0,Math.min(e-r,i))}this.x=n/t;this.y=i/e;this.div.style.left=`${(100*this.x).toFixed(2)}%`;this.div.style.top=`${(100*this.y).toFixed(2)}%`}screenToPageTranslation(t,e){switch(this.parentRotation){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}pageTranslationToScreen(t,e){switch(this.parentRotation){case 90:return[-e,t];case 180:return[-t,-e];case 270:return[e,-t];default:return[t,e]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{realScale:t}=this._uiManager.viewParameters,[e,n]=this.pageDimensions;return[e*t,n*t]}setDims(t,e){const[n,i]=this.parentDimensions;this.div.style.width=`${(100*t/n).toFixed(2)}%`;this.#S||(this.div.style.height=`${(100*e/i).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:n}=t,i=n.endsWith("%"),r=!this.#S&&e.endsWith("%");if(i&&r)return;const[s,a]=this.parentDimensions;i||(t.width=`${(100*parseFloat(n)/s).toFixed(2)}%`);this.#S||r||(t.height=`${(100*parseFloat(e)/a).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}#F(){if(this.#E)return;this.#E=document.createElement("div");this.#E.classList.add("resizers");const t=["topLeft","topRight","bottomRight","bottomLeft"];this._willKeepAspectRatio||t.push("topMiddle","middleRight","bottomMiddle","middleLeft");for(const e of t){const t=document.createElement("div");this.#E.append(t);t.classList.add("resizer",e);t.addEventListener("pointerdown",this.#I.bind(this,e))}this.div.prepend(this.#E)}#I(t,e){e.preventDefault();this.#x=[e.clientX,e.clientY];const n=this.#D.bind(this,t),i=this.div.draggable;this.div.draggable=!1;const r=`resizing${t.charAt(0).toUpperCase()}${t.slice(1)}`;this.parent.div.classList.add(r);const s={passive:!0,capture:!0};window.addEventListener("pointermove",n,s);window.addEventListener("pointerup",(()=>{this._uiManager.stopUndoAccumulation();this.div.draggable=i;this.parent.div.classList.remove(r);window.removeEventListener("pointermove",n,s)}),{once:!0})}#D(t,e){const{clientX:n,clientY:r}=e,s=n-this.#x[0],a=r-this.#x[1];this.#x[0]=n;this.#x[1]=r;const[o,l]=this.parentDimensions,c=this.x,h=this.y,d=this.width,u=this.height,p=AnnotationEditor.MIN_SIZE/o,f=AnnotationEditor.MIN_SIZE/l;let g;const round=t=>Math.round(1e4*t)/1e4,updatePosition=(t,e)=>{const[n,i]=this.parentDimensions;this.setDims(n*t,i*e);this.fixAndSetPosition()};switch(t){case"topLeft":{if(Math.sign(s)*Math.sign(a)<0)return;const t=Math.hypot(s,a),e=Math.hypot(d*o,u*l),n=round(c+d),i=round(h+u),r=Math.max(Math.min(1-Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),m=round(d*r),b=round(u*r),v=n-m,y=i-b;g=()=>{this.width=m;this.height=b;this.x=v;this.y=y;updatePosition(m,b)};break}case"topMiddle":{const t=round(this.y+u),e=round(Math.max(f,Math.min(1,u-a/l))),n=t-e;g=()=>{this.height=e;this.y=n;updatePosition(d,e)};break}case"topRight":{if(Math.sign(s)*Math.sign(a)>0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=round(h+this.height),i=Math.max(Math.min(1+Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),r=round(d*i),c=round(u*i),m=n-c;g=()=>{this.width=r;this.height=c;this.y=m;updatePosition(r,c)};break}case"middleRight":{const t=round(Math.max(p,Math.min(1,d+s/o)));g=()=>{this.width=t;updatePosition(t,u)};break}case"bottomRight":{if(Math.sign(s)*Math.sign(a)<0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=Math.max(Math.min(1+Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),i=round(d*n),r=round(u*n);g=()=>{this.width=i;this.height=r;updatePosition(i,r)};break}case"bottomMiddle":{const t=round(Math.max(f,Math.min(1,u+a/l)));g=()=>{this.height=t;updatePosition(d,t)};break}case"bottomLeft":{if(Math.sign(s)*Math.sign(a)>0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=round(c+this.width),i=Math.max(Math.min(1-Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),r=round(d*i),h=round(u*i),m=n-r;g=()=>{this.width=r;this.height=h;this.x=m;updatePosition(r,h)};break}case"middleLeft":{const t=round(c+d),e=round(Math.max(p,Math.min(1,d-s/o))),n=t-e;g=()=>{this.width=e;this.x=n;updatePosition(e,u)};break}}this.addCommands({cmd:g,undo:()=>{this.width=d;this.height=u;this.x=c;this.y=h;updatePosition(d,u)},mustExec:!0,type:i.AnnotationEditorParamsType.RESIZE,overwriteIfSameType:!0,keepUndo:!0})}render(){this.div=document.createElement("div");this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360);this.div.className=this.name;this.div.setAttribute("id",this.id);this.div.setAttribute("tabIndex",0);this.setInForeground();this.div.addEventListener("focusin",this.#w);this.div.addEventListener("focusout",this.#C);const[t,e]=this.parentDimensions;if(this.parentRotation%180!=0){this.div.style.maxWidth=`${(100*e/t).toFixed(2)}%`;this.div.style.maxHeight=`${(100*t/e).toFixed(2)}%`}const[n,i]=this.getInitialTranslation();this.translate(n,i);(0,r.bindEvents)(this,this.div,["dragstart","pointerdown"]);return this.div}pointerdown(t){const{isMac:e}=i.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)t.preventDefault();else{t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this);this.#T=!0}}getRect(t,e){const n=this.parentScale,[i,r]=this.pageDimensions,[s,a]=this.pageTranslation,o=t/n,l=e/n,c=this.x*i,h=this.y*r,d=this.width*i,u=this.height*r;switch(this.rotation){case 0:return[c+o+s,r-h-l-u+a,c+o+d+s,r-h-l+a];case 90:return[c+l+s,r-h+o+a,c+l+u+s,r-h+o+d+a];case 180:return[c-o-d+s,r-h+l+a,c-o+s,r-h+l+u+a];case 270:return[c-l-u+s,r-h-o-d+a,c-l+s,r-h-o+a];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[n,i,r,s]=t,a=r-n,o=s-i;switch(this.rotation){case 0:return[n,e-s,a,o];case 90:return[n,e-i,o,a];case 180:return[r,e-i,a,o];case 270:return[r,e-s,o,a];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){this.#k=!0}disableEditMode(){this.#k=!1}isInEditMode(){return this.#k}shouldGetKeyboardEvents(){return!1}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){this.div?.addEventListener("focusin",this.#w);this.div?.addEventListener("focusout",this.#C)}serialize(){(0,i.unreachable)("An editor must be serializable")}static deserialize(t,e,n){const i=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:n});i.rotation=t.rotation;const[r,s]=i.pageDimensions,[a,o,l,c]=i.getRectInCurrentCoords(t.rect,s);i.x=a/r;i.y=o/s;i.width=l/r;i.height=c/s;return i}remove(){this.div.removeEventListener("focusin",this.#w);this.div.removeEventListener("focusout",this.#C);this.isEmpty()||this.commit();this.parent?this.parent.remove(this):this._uiManager.removeEditor(this)}get isResizable(){return!1}makeResizable(){if(this.isResizable){this.#F();this.#E.classList.remove("hidden")}}select(){this.makeResizable();this.div?.classList.add("selectedEditor")}unselect(){this.#E?.classList.add("hidden");this.div?.classList.remove("selectedEditor");this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus()}updateParams(t,e){}disableEditing(){}enableEditing(){}enterInEditMode(){}get contentDiv(){return this.div}get isEditing(){return this.#P}set isEditing(t){this.#P=t;if(this.parent)if(t){this.parent.setSelected(this);this.parent.setActiveEditor(this)}else this.parent.setActiveEditor(null)}setAspectRatio(t,e){this.#S=!0;const n=t/e,{style:i}=this.div;i.aspectRatio=n;i.height="auto"}static get MIN_SIZE(){return 16}}e.AnnotationEditor=AnnotationEditor;class FakeEditor extends AnnotationEditor{constructor(t){super(t);this.annotationElementId=t.annotationElementId;this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.KeyboardManager=e.CommandManager=e.ColorManager=e.AnnotationEditorUIManager=void 0;e.bindEvents=function bindEvents(t,e,n){for(const i of n)e.addEventListener(i,t[i].bind(t))};e.opacityToHex=function opacityToHex(t){return Math.round(Math.min(255,Math.max(1,255*t))).toString(16).padStart(2,"0")};n(2);n(89);n(125);n(135);n(137);n(140);n(142);n(144);n(146);n(165);var i=n(1),r=n(167);class IdManager{#O=0;getId(){return`${i.AnnotationEditorPrefix}${this.#O++}`}}class ImageManager{#L=(0,i.getUuid)();#O=0;#N=null;async#B(t,e){this.#N||=new Map;let n=this.#N.get(t);if(null===n)return null;if(n?.bitmap){n.refCounter+=1;return n}try{n||={bitmap:null,id:`image_${this.#L}_${this.#O++}`,refCounter:0,isSvg:!1};let t;if("string"==typeof e){n.url=e;const i=await fetch(e);if(!i.ok)throw new Error(i.statusText);t=await i.blob()}else t=n.file=e;if("image/svg+xml"===t.type){const e=new FileReader,i=new Image,r=new Promise(((t,r)=>{i.onload=()=>{n.bitmap=i;n.isSvg=!0;t()};e.onload=()=>{i.src=n.svgUrl=e.result};i.onerror=e.onerror=r}));e.readAsDataURL(t);await r}else n.bitmap=await createImageBitmap(t);n.refCounter=1}catch(t){console.error(t);n=null}this.#N.set(t,n);n&&this.#N.set(n.id,n);return n}async getFromFile(t){const{lastModified:e,name:n,size:i,type:r}=t;return this.#B(`${e}_${n}_${i}_${r}`,t)}async getFromUrl(t){return this.#B(t,t)}async getFromId(t){this.#N||=new Map;const e=this.#N.get(t);if(!e)return null;if(e.bitmap){e.refCounter+=1;return e}return e.file?this.getFromFile(e.file):this.getFromUrl(e.url)}getSvgUrl(t){const e=this.#N.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#N||=new Map;const e=this.#N.get(t);if(e){e.refCounter-=1;0===e.refCounter&&(e.bitmap=null)}}isValidId(t){return t.startsWith(`image_${this.#L}_`)}}class CommandManager{#j=[];#U=!1;#z;#H=-1;constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:128;this.#z=t}add(t){let{cmd:e,undo:n,mustExec:i,type:r=NaN,overwriteIfSameType:s=!1,keepUndo:a=!1}=t;i&&e();if(this.#U)return;const o={cmd:e,undo:n,type:r};if(-1===this.#H){this.#j.length>0&&(this.#j.length=0);this.#H=0;this.#j.push(o);return}if(s&&this.#j[this.#H].type===r){a&&(o.undo=this.#j[this.#H].undo);this.#j[this.#H]=o;return}const l=this.#H+1;if(l===this.#z)this.#j.splice(0,1);else{this.#H=l;lt===e[n])))return ColorManager._colorsMapping.get(t);return e}getHexCode(t){const e=this._colors.get(t);return e?i.Util.makeHexColor(...e):t}}e.ColorManager=ColorManager;class AnnotationEditorUIManager{#W=null;#G=new Map;#V=new Map;#$=null;#X=new CommandManager;#K=0;#Y=new Set;#J=null;#Q=new Set;#Z=null;#tt=null;#et=new IdManager;#nt=!1;#it=i.AnnotationEditorType.NONE;#rt=new Set;#st=null;#at=this.copy.bind(this);#ot=this.cut.bind(this);#lt=this.paste.bind(this);#ct=this.keydown.bind(this);#ht=this.onEditingAction.bind(this);#dt=this.onPageChanging.bind(this);#ut=this.onScaleChanging.bind(this);#pt=this.onRotationChanging.bind(this);#ft={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1};#gt=[0,0];#mt=null;#bt=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=AnnotationEditorUIManager.prototype,arrowChecker=t=>{const{activeElement:e}=document;return e&&t.#bt.contains(e)&&t.hasSomethingToControl()},e=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return(0,i.shadow)(this,"_keyboardManager",new KeyboardManager([[["ctrl+a","mac+meta+a"],t.selectAll],[["ctrl+z","mac+meta+z"],t.undo],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-n,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[n,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-n],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,n],checker:arrowChecker}]]))}constructor(t,e,n,i){this.#bt=t;this.#Z=e;this.#Z._on("editingaction",this.#ht);this.#Z._on("pagechanging",this.#dt);this.#Z._on("scalechanging",this.#ut);this.#Z._on("rotationchanging",this.#pt);this.#$=n.annotationStorage;this.#tt=n.filterFactory;this.#st=i;this.viewParameters={realScale:r.PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0}}destroy(){this.#vt();this.#Z._off("editingaction",this.#ht);this.#Z._off("pagechanging",this.#dt);this.#Z._off("scalechanging",this.#ut);this.#Z._off("rotationchanging",this.#pt);for(const t of this.#V.values())t.destroy();this.#V.clear();this.#G.clear();this.#Q.clear();this.#W=null;this.#rt.clear();this.#X.destroy()}get hcmFilter(){return(0,i.shadow)(this,"hcmFilter",this.#st?this.#tt.addHCMFilter(this.#st.foreground,this.#st.background):"none")}onPageChanging(t){let{pageNumber:e}=t;this.#K=e-1}focusMainContainer(){this.#bt.focus()}addShouldRescale(t){this.#Q.add(t)}removeShouldRescale(t){this.#Q.delete(t)}onScaleChanging(t){let{scale:e}=t;this.commitOrRemove();this.viewParameters.realScale=e*r.PixelsPerInch.PDF_TO_CSS_UNITS;for(const t of this.#Q)t.onScaleChanging()}onRotationChanging(t){let{pagesRotation:e}=t;this.commitOrRemove();this.viewParameters.rotation=e}addToAnnotationStorage(t){t.isEmpty()||!this.#$||this.#$.has(t.id)||this.#$.setValue(t.id,t)}#yt(){window.addEventListener("keydown",this.#ct,{capture:!0})}#vt(){window.removeEventListener("keydown",this.#ct,{capture:!0})}#At(){document.addEventListener("copy",this.#at);document.addEventListener("cut",this.#ot);document.addEventListener("paste",this.#lt)}#_t(){document.removeEventListener("copy",this.#at);document.removeEventListener("cut",this.#ot);document.removeEventListener("paste",this.#lt)}copy(t){t.preventDefault();this.#W&&this.#W.commitOrRemove();if(!this.hasSelection)return;const e=[];for(const t of this.#rt){const n=t.serialize(!0);n&&e.push(n)}0!==e.length&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t);this.delete()}paste(t){t.preventDefault();let e=t.clipboardData.getData("application/pdfjs");if(!e)return;try{e=JSON.parse(e)}catch(t){(0,i.warn)(`paste: "${t.message}".`);return}if(!Array.isArray(e))return;this.unselectAll();const n=this.currentLayer;try{const t=[];for(const i of e){const e=n.deserialize(i);if(!e)return;t.push(e)}const cmd=()=>{for(const e of t)this.#St(e);this.#Et(t)},undo=()=>{for(const e of t)e.remove()};this.addCommands({cmd:cmd,undo:undo,mustExec:!0})}catch(t){(0,i.warn)(`paste: "${t.message}".`)}}keydown(t){this.getActive()?.shouldGetKeyboardEvents()||AnnotationEditorUIManager._keyboardManager.exec(this,t)}onEditingAction(t){["undo","redo","delete","selectAll"].includes(t.name)&&this[t.name]()}#xt(t){Object.entries(t).some((t=>{let[e,n]=t;return this.#ft[e]!==n}))&&this.#Z.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(this.#ft,t)})}#wt(t){this.#Z.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){if(t){this.#yt();this.#At();this.#xt({isEditing:this.#it!==i.AnnotationEditorType.NONE,isEmpty:this.#Ct(),hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:this.#X.hasSomethingToRedo(),hasSelectedEditor:!1})}else{this.#vt();this.#_t();this.#xt({isEditing:!1})}}registerEditorTypes(t){if(!this.#J){this.#J=t;for(const t of this.#J)this.#wt(t.defaultPropertiesToUpdate)}}getId(){return this.#et.getId()}get currentLayer(){return this.#V.get(this.#K)}get currentPageIndex(){return this.#K}addLayer(t){this.#V.set(t.pageIndex,t);this.#nt?t.enable():t.disable()}removeLayer(t){this.#V.delete(t.pageIndex)}updateMode(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.#it=t;if(t!==i.AnnotationEditorType.NONE){this.setEditingState(!0);this.#Tt();for(const e of this.#V.values())e.updateMode(t);if(e)for(const t of this.#G.values())if(t.annotationElementId===e){this.setSelected(t);t.enterInEditMode();break}}else{this.setEditingState(!1);this.#Pt()}}updateToolbar(t){t!==this.#it&&this.#Z.dispatch("switchannotationeditormode",{source:this,mode:t})}updateParams(t,e){if(this.#J){for(const n of this.#rt)n.updateParams(t,e);for(const n of this.#J)n.updateDefaultParams(t,e)}}#Tt(){if(!this.#nt){this.#nt=!0;for(const t of this.#V.values())t.enable()}}#Pt(){this.unselectAll();if(this.#nt){this.#nt=!1;for(const t of this.#V.values())t.disable()}}getEditors(t){const e=[];for(const n of this.#G.values())n.pageIndex===t&&e.push(n);return e}getEditor(t){return this.#G.get(t)}addEditor(t){this.#G.set(t.id,t)}removeEditor(t){this.#G.delete(t.id);this.unselect(t);t.annotationElementId&&this.#Y.has(t.annotationElementId)||this.#$?.remove(t.id)}addDeletedAnnotationElement(t){this.#Y.add(t.annotationElementId);t.deleted=!0}isDeletedAnnotationElement(t){return this.#Y.has(t)}removeDeletedAnnotationElement(t){this.#Y.delete(t.annotationElementId);t.deleted=!1}#St(t){const e=this.#V.get(t.pageIndex);e?e.addOrRebuild(t):this.addEditor(t)}setActiveEditor(t){if(this.#W!==t){this.#W=t;t&&this.#wt(t.propertiesToUpdate)}}toggleSelected(t){if(this.#rt.has(t)){this.#rt.delete(t);t.unselect();this.#xt({hasSelectedEditor:this.hasSelection})}else{this.#rt.add(t);t.select();this.#wt(t.propertiesToUpdate);this.#xt({hasSelectedEditor:!0})}}setSelected(t){for(const e of this.#rt)e!==t&&e.unselect();this.#rt.clear();this.#rt.add(t);t.select();this.#wt(t.propertiesToUpdate);this.#xt({hasSelectedEditor:!0})}isSelected(t){return this.#rt.has(t)}unselect(t){t.unselect();this.#rt.delete(t);this.#xt({hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==this.#rt.size}stopUndoAccumulation(){this.#X.stopUndoAccumulation()}undo(){this.#X.undo();this.#xt({hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#Ct()})}redo(){this.#X.redo();this.#xt({hasSomethingToUndo:!0,hasSomethingToRedo:this.#X.hasSomethingToRedo(),isEmpty:this.#Ct()})}addCommands(t){this.#X.add(t);this.#xt({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#Ct()})}#Ct(){if(0===this.#G.size)return!0;if(1===this.#G.size)for(const t of this.#G.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();if(!this.hasSelection)return;const t=[...this.#rt];this.addCommands({cmd:()=>{for(const e of t)e.remove()},undo:()=>{for(const e of t)this.#St(e)},mustExec:!0})}commitOrRemove(){this.#W?.commitOrRemove()}hasSomethingToControl(){return this.#W||this.hasSelection}#Et(t){this.#rt.clear();for(const e of t)if(!e.isEmpty()){this.#rt.add(e);e.select()}this.#xt({hasSelectedEditor:!0})}selectAll(){for(const t of this.#rt)t.commit();this.#Et(this.#G.values())}unselectAll(){if(this.#W)this.#W.commitOrRemove();else if(this.hasSelection){for(const t of this.#rt)t.unselect();this.#rt.clear();this.#xt({hasSelectedEditor:!1})}}translateSelectedEditors(t,e){arguments.length>2&&void 0!==arguments[2]&&arguments[2]||this.commitOrRemove();if(!this.hasSelection)return;this.#gt[0]+=t;this.#gt[1]+=e;const[n,i]=this.#gt,r=[...this.#rt];this.#mt&&clearTimeout(this.#mt);this.#mt=setTimeout((()=>{this.#mt=null;this.#gt[0]=this.#gt[1]=0;this.addCommands({cmd:()=>{for(const t of r)this.#G.has(t.id)&&t.translateInPage(n,i)},undo:()=>{for(const t of r)this.#G.has(t.id)&&t.translateInPage(-n,-i)},mustExec:!1})}),1e3);for(const n of r)n.translateInPage(t,e)}isActive(t){return this.#W===t}getActive(){return this.#W}getMode(){return this.#it}get imageManager(){return(0,i.shadow)(this,"imageManager",new ImageManager)}}e.AnnotationEditorUIManager=AnnotationEditorUIManager},(t,e,n)=>{"use strict";var i=n(3),r=n(6),s=n(4),a=n(24),o=n(14),l=n(8),c=n(21),h=n(20),d=n(91),u=n(39),p=n(77),f=n(64),g=n(158),m=n(7),b=n(166),v=n(27),y=s.JSON,A=s.Number,_=s.SyntaxError,S=y&&y.parse,E=a("Object","keys"),x=Object.getOwnPropertyDescriptor,w=o("".charAt),C=o("".slice),T=o(/./.exec),P=o([].push),k=/^\d$/,M=/^[1-9]$/,R=/^(-|\d)$/,I=/^[\t\n\r ]$/,internalize=function(t,e,n,i){var r,s,a,o,c,p=t[e],g=i&&p===i.value,m=g&&"string"==typeof i.source?{source:i.source}:{};if(h(p)){var b=d(p),v=g?i.nodes:b?[]:{};if(b){r=v.length;a=f(p);for(o=0;o{var i=n(14),r=n(39),s=SyntaxError,a=parseInt,o=String.fromCharCode,l=i("".charAt),c=i("".slice),h=i(/./.exec),d={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":"\n","\\r":"\r","\\t":"\t"},u=/^[\da-f]{4}$/i,p=/^[\u0000-\u001F]$/;t.exports=function(t,e){for(var n=!0,i="";e{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StatTimer=e.RenderingCancelledException=e.PixelsPerInch=e.PageViewport=e.PDFDateString=e.DOMStandardFontDataFactory=e.DOMSVGFactory=e.DOMFilterFactory=e.DOMCanvasFactory=e.DOMCMapReaderFactory=e.AnnotationPrefix=void 0;e.deprecated=function deprecated(t){console.log("Deprecated API usage: "+t)};e.getColorValues=function getColorValues(t){const e=document.createElement("span");e.style.visibility="hidden";document.body.append(e);for(const n of t.keys()){e.style.color=n;const i=window.getComputedStyle(e).color;t.set(n,getRGB(i))}e.remove()};e.getCurrentTransform=function getCurrentTransform(t){const{a:e,b:n,c:i,d:r,e:s,f:a}=t.getTransform();return[e,n,i,r,s,a]};e.getCurrentTransformInverse=function getCurrentTransformInverse(t){const{a:e,b:n,c:i,d:r,e:s,f:a}=t.getTransform().invertSelf();return[e,n,i,r,s,a]};e.getFilenameFromUrl=function getFilenameFromUrl(t){arguments.length>1&&void 0!==arguments[1]&&arguments[1]||([t]=t.split(/[#?]/,1));return t.substring(t.lastIndexOf("/")+1)};e.getPdfFilenameFromUrl=function getPdfFilenameFromUrl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"document.pdf";if("string"!=typeof t)return e;if(isDataScheme(t)){(0,r.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');return e}const n=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,i=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/.exec(t);let s=n.exec(i[1])||n.exec(i[2])||n.exec(i[3]);if(s){s=s[0];if(s.includes("%"))try{s=n.exec(decodeURIComponent(s))[0]}catch{}}return s||e};e.getRGB=getRGB;e.getXfaPageViewport=function getXfaPageViewport(t,e){let{scale:n=1,rotation:i=0}=e;const{width:r,height:s}=t.attributes.style,a=[0,0,parseInt(r),parseInt(s)];return new PageViewport({viewBox:a,scale:n,rotation:i})};e.isDataScheme=isDataScheme;e.isPdfFile=function isPdfFile(t){return"string"==typeof t&&/\.pdf$/i.test(t)};e.isValidFetchUrl=isValidFetchUrl;e.loadScript=function loadScript(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise(((n,i)=>{const r=document.createElement("script");r.src=t;r.onload=function(t){e&&r.remove();n(t)};r.onerror=function(){i(new Error(`Cannot load script at: ${r.src}`))};(document.head||document.documentElement).append(r)}))};e.setLayerDimensions=function setLayerDimensions(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e instanceof PageViewport){const{pageWidth:i,pageHeight:r}=e.rawDims,{style:s}=t,a=`calc(var(--scale-factor) * ${i}px)`,o=`calc(var(--scale-factor) * ${r}px)`;if(n&&e.rotation%180!=0){s.width=o;s.height=a}else{s.width=a;s.height=o}}i&&t.setAttribute("data-main-rotation",e.rotation)};n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);n(84);n(86);n(87);var i=n(168),r=n(1);const s="http://www.w3.org/2000/svg";e.AnnotationPrefix="pdfjs_internal_id_";class PixelsPerInch{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}e.PixelsPerInch=PixelsPerInch;class DOMFilterFactory extends i.BaseFilterFactory{#kt;#Mt;#e;#Rt;#Ft;#It;#Dt;#Ot;#Lt;#Nt;#O=0;constructor(){let{docId:t,ownerDocument:e=globalThis.document}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super();this.#e=t;this.#Rt=e}get#N(){return this.#kt||=new Map}get#Bt(){if(!this.#Mt){const t=this.#Rt.createElement("div"),{style:e}=t;e.visibility="hidden";e.contain="strict";e.width=e.height=0;e.position="absolute";e.top=e.left=0;e.zIndex=-1;const n=this.#Rt.createElementNS(s,"svg");n.setAttribute("width",0);n.setAttribute("height",0);this.#Mt=this.#Rt.createElementNS(s,"defs");t.append(n);n.append(this.#Mt);this.#Rt.body.append(t)}return this.#Mt}addFilter(t){if(!t)return"none";let e,n,i,r,s=this.#N.get(t);if(s)return s;if(1===t.length){const s=t[0],a=new Array(256);for(let t=0;t<256;t++)a[t]=s[t]/255;r=e=n=i=a.join(",")}else{const[s,a,o]=t,l=new Array(256),c=new Array(256),h=new Array(256);for(let t=0;t<256;t++){l[t]=s[t]/255;c[t]=a[t]/255;h[t]=o[t]/255}e=l.join(",");n=c.join(",");i=h.join(",");r=`${e}${n}${i}`}s=this.#N.get(r);if(s){this.#N.set(t,s);return s}const a=`g_${this.#e}_transfer_map_${this.#O++}`,o=`url(#${a})`;this.#N.set(t,o);this.#N.set(r,o);const l=this.#jt(a);this.#Ut(e,n,i,l);return o}addHCMFilter(t,e){const n=`${t}-${e}`;if(this.#It===n)return this.#Dt;this.#It=n;this.#Dt="none";this.#Ft?.remove();if(!t||!e)return this.#Dt;const i=this.#zt(t);t=r.Util.makeHexColor(...i);const s=this.#zt(e);e=r.Util.makeHexColor(...s);this.#Bt.style.color="";if("#000000"===t&&"#ffffff"===e||t===e)return this.#Dt;const a=new Array(256);for(let t=0;t<=255;t++){const e=t/255;a[t]=e<=.03928?e/12.92:((e+.055)/1.055)**2.4}const o=a.join(","),l=`g_${this.#e}_hcm_filter`,c=this.#Ot=this.#jt(l);this.#Ut(o,o,o,c);this.#Ht(c);const getSteps=(t,e)=>{const n=i[t]/255,r=s[t]/255,a=new Array(e+1);for(let t=0;t<=e;t++)a[t]=n+t/e*(r-n);return a.join(",")};this.#Ut(getSteps(0,5),getSteps(1,5),getSteps(2,5),c);this.#Dt=`url(#${l})`;return this.#Dt}addHighlightHCMFilter(t,e,n,i){const r=`${t}-${e}-${n}-${i}`;if(this.#Lt===r)return this.#Nt;this.#Lt=r;this.#Nt="none";this.#Ot?.remove();if(!t||!e)return this.#Nt;const[s,a]=[t,e].map(this.#zt.bind(this));let o=Math.round(.2126*s[0]+.7152*s[1]+.0722*s[2]),l=Math.round(.2126*a[0]+.7152*a[1]+.0722*a[2]),[c,h]=[n,i].map(this.#zt.bind(this));l{const i=new Array(256),r=(l-o)/n,s=t/255,a=(e-t)/(255*n);let c=0;for(let t=0;t<=n;t++){const e=Math.round(o+t*r),n=s+t*a;for(let t=c;t<=e;t++)i[t]=n;c=e+1}for(let t=c;t<256;t++)i[t]=i[c-1];return i.join(",")},d=`g_${this.#e}_hcm_highlight_filter`,u=this.#Ot=this.#jt(d);this.#Ht(u);this.#Ut(getSteps(c[0],h[0],5),getSteps(c[1],h[1],5),getSteps(c[2],h[2],5),u);this.#Nt=`url(#${d})`;return this.#Nt}destroy(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])||!this.#Dt&&!this.#Nt){if(this.#Mt){this.#Mt.parentNode.parentNode.remove();this.#Mt=null}if(this.#kt){this.#kt.clear();this.#kt=null}this.#O=0}}#Ht(t){const e=this.#Rt.createElementNS(s,"feColorMatrix");e.setAttribute("type","matrix");e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0");t.append(e)}#jt(t){const e=this.#Rt.createElementNS(s,"filter");e.setAttribute("color-interpolation-filters","sRGB");e.setAttribute("id",t);this.#Bt.append(e);return e}#qt(t,e,n){const i=this.#Rt.createElementNS(s,e);i.setAttribute("type","discrete");i.setAttribute("tableValues",n);t.append(i)}#Ut(t,e,n,i){const r=this.#Rt.createElementNS(s,"feComponentTransfer");i.append(r);this.#qt(r,"feFuncR",t);this.#qt(r,"feFuncG",e);this.#qt(r,"feFuncB",n)}#zt(t){this.#Bt.style.color=t;return getRGB(getComputedStyle(this.#Bt).getPropertyValue("color"))}}e.DOMFilterFactory=DOMFilterFactory;class DOMCanvasFactory extends i.BaseCanvasFactory{constructor(){let{ownerDocument:t=globalThis.document}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super();this._document=t}_createCanvas(t,e){const n=this._document.createElement("canvas");n.width=t;n.height=e;return n}}e.DOMCanvasFactory=DOMCanvasFactory;async function fetchData(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(isValidFetchUrl(t,document.baseURI)){const n=await fetch(t);if(!n.ok)throw new Error(n.statusText);return e?new Uint8Array(await n.arrayBuffer()):(0,r.stringToBytes)(await n.text())}return new Promise(((n,i)=>{const s=new XMLHttpRequest;s.open("GET",t,!0);e&&(s.responseType="arraybuffer");s.onreadystatechange=()=>{if(s.readyState===XMLHttpRequest.DONE){if(200===s.status||0===s.status){let t;e&&s.response?t=new Uint8Array(s.response):!e&&s.responseText&&(t=(0,r.stringToBytes)(s.responseText));if(t){n(t);return}}i(new Error(s.statusText))}};s.send(null)}))}class DOMCMapReaderFactory extends i.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t,this.isCompressed).then((t=>({cMapData:t,compressionType:e})))}}e.DOMCMapReaderFactory=DOMCMapReaderFactory;class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t,!0)}}e.DOMStandardFontDataFactory=DOMStandardFontDataFactory;class DOMSVGFactory extends i.BaseSVGFactory{_createSVG(t){return document.createElementNS(s,t)}}e.DOMSVGFactory=DOMSVGFactory;class PageViewport{constructor(t){let{viewBox:e,scale:n,rotation:i,offsetX:r=0,offsetY:s=0,dontFlip:a=!1}=t;this.viewBox=e;this.scale=n;this.rotation=i;this.offsetX=r;this.offsetY=s;const o=(e[2]+e[0])/2,l=(e[3]+e[1])/2;let c,h,d,u,p,f,g,m;i%=360;i<0&&(i+=360);switch(i){case 180:c=-1;h=0;d=0;u=1;break;case 90:c=0;h=1;d=1;u=0;break;case 270:c=0;h=-1;d=-1;u=0;break;case 0:c=1;h=0;d=0;u=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}if(a){d=-d;u=-u}if(0===c){p=Math.abs(l-e[1])*n+r;f=Math.abs(o-e[0])*n+s;g=(e[3]-e[1])*n;m=(e[2]-e[0])*n}else{p=Math.abs(o-e[0])*n+r;f=Math.abs(l-e[1])*n+s;g=(e[2]-e[0])*n;m=(e[3]-e[1])*n}this.transform=[c*n,h*n,d*n,u*n,p-c*n*o-d*n*l,f-h*n*o-u*n*l];this.width=g;this.height=m}get rawDims(){const{viewBox:t}=this;return(0,r.shadow)(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone(){let{scale:t=this.scale,rotation:e=this.rotation,offsetX:n=this.offsetX,offsetY:i=this.offsetY,dontFlip:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new PageViewport({viewBox:this.viewBox.slice(),scale:t,rotation:e,offsetX:n,offsetY:i,dontFlip:r})}convertToViewportPoint(t,e){return r.Util.applyTransform([t,e],this.transform)}convertToViewportRectangle(t){const e=r.Util.applyTransform([t[0],t[1]],this.transform),n=r.Util.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]}convertToPdfPoint(t,e){return r.Util.applyInverseTransform([t,e],this.transform)}}e.PageViewport=PageViewport;class RenderingCancelledException extends r.BaseException{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;super(t,"RenderingCancelledException");this.extraDelay=e}}e.RenderingCancelledException=RenderingCancelledException;function isDataScheme(t){const e=t.length;let n=0;for(;n=1&&i<=12?i-1:0;let r=parseInt(e[3],10);r=r>=1&&r<=31?r:1;let s=parseInt(e[4],10);s=s>=0&&s<=23?s:0;let o=parseInt(e[5],10);o=o>=0&&o<=59?o:0;let l=parseInt(e[6],10);l=l>=0&&l<=59?l:0;const c=e[7]||"Z";let h=parseInt(e[8],10);h=h>=0&&h<=23?h:0;let d=parseInt(e[9],10)||0;d=d>=0&&d<=59?d:0;if("-"===c){s+=h;o+=d}else if("+"===c){s-=h;o-=d}return new Date(Date.UTC(n,i,r,s,o,l))}};function getRGB(t){if(t.startsWith("#")){const e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}if(t.startsWith("rgb("))return t.slice(4,-1).split(",").map((t=>parseInt(t)));if(t.startsWith("rgba("))return t.slice(5,-1).split(",").map((t=>parseInt(t))).slice(0,3);(0,r.warn)(`Not a valid color format: "${t}"`);return[0,0,0]}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BaseStandardFontDataFactory=e.BaseSVGFactory=e.BaseFilterFactory=e.BaseCanvasFactory=e.BaseCMapReaderFactory=void 0;n(2);var i=n(1);class BaseFilterFactory{constructor(){this.constructor===BaseFilterFactory&&(0,i.unreachable)("Cannot initialize BaseFilterFactory.")}addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addHighlightHCMFilter(t,e,n,i){return"none"}destroy(){}}e.BaseFilterFactory=BaseFilterFactory;class BaseCanvasFactory{constructor(){this.constructor===BaseCanvasFactory&&(0,i.unreachable)("Cannot initialize BaseCanvasFactory.")}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const n=this._createCanvas(t,e);return{canvas:n,context:n.getContext("2d")}}reset(t,e,n){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||n<=0)throw new Error("Invalid canvas size");t.canvas.width=e;t.canvas.height=n}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0;t.canvas.height=0;t.canvas=null;t.context=null}_createCanvas(t,e){(0,i.unreachable)("Abstract method `_createCanvas` called.")}}e.BaseCanvasFactory=BaseCanvasFactory;class BaseCMapReaderFactory{constructor(t){let{baseUrl:e=null,isCompressed:n=!0}=t;this.constructor===BaseCMapReaderFactory&&(0,i.unreachable)("Cannot initialize BaseCMapReaderFactory.");this.baseUrl=e;this.isCompressed=n}async fetch(t){let{name:e}=t;if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!e)throw new Error("CMap name must be specified.");const n=this.baseUrl+e+(this.isCompressed?".bcmap":""),r=this.isCompressed?i.CMapCompressionType.BINARY:i.CMapCompressionType.NONE;return this._fetchData(n,r).catch((t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${n}`)}))}_fetchData(t,e){(0,i.unreachable)("Abstract method `_fetchData` called.")}}e.BaseCMapReaderFactory=BaseCMapReaderFactory;class BaseStandardFontDataFactory{constructor(t){let{baseUrl:e=null}=t;this.constructor===BaseStandardFontDataFactory&&(0,i.unreachable)("Cannot initialize BaseStandardFontDataFactory.");this.baseUrl=e}async fetch(t){let{filename:e}=t;if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!e)throw new Error("Font filename must be specified.");const n=`${this.baseUrl}${e}`;return this._fetchData(n).catch((t=>{throw new Error(`Unable to load font data at: ${n}`)}))}_fetchData(t){(0,i.unreachable)("Abstract method `_fetchData` called.")}}e.BaseStandardFontDataFactory=BaseStandardFontDataFactory;class BaseSVGFactory{constructor(){this.constructor===BaseSVGFactory&&(0,i.unreachable)("Cannot initialize BaseSVGFactory.")}create(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const i=this._createSVG("svg:svg");i.setAttribute("version","1.1");if(!n){i.setAttribute("width",`${t}px`);i.setAttribute("height",`${e}px`)}i.setAttribute("preserveAspectRatio","none");i.setAttribute("viewBox",`0 0 ${t} ${e}`);return i}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){(0,i.unreachable)("Abstract method `_createSVG` called.")}}e.BaseSVGFactory=BaseSVGFactory},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.MurmurHash3_64=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(2);var i=n(1);const r=3285377520,s=4294901760,a=65535;e.MurmurHash3_64=class MurmurHash3_64{constructor(t){this.h1=t?4294967295&t:r;this.h2=t?4294967295&t:r}update(t){let e,n;if("string"==typeof t){e=new Uint8Array(2*t.length);n=0;for(let i=0,r=t.length;i>>8;e[n++]=255&r}}}else{if(!(0,i.isArrayBuffer)(t))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");e=t.slice();n=e.byteLength}const r=n>>2,o=n-4*r,l=new Uint32Array(e.buffer,0,r);let c=0,h=0,d=this.h1,u=this.h2;const p=3432918353,f=461845907,g=11601,m=13715;for(let t=0;t>>17;c=c*f&s|c*m&a;d^=c;d=d<<13|d>>>19;d=5*d+3864292196}else{h=l[t];h=h*p&s|h*g&a;h=h<<15|h>>>17;h=h*f&s|h*m&a;u^=h;u=u<<13|u>>>19;u=5*u+3864292196}c=0;switch(o){case 3:c^=e[4*r+2]<<16;case 2:c^=e[4*r+1]<<8;case 1:c^=e[4*r];c=c*p&s|c*g&a;c=c<<15|c>>>17;c=c*f&s|c*m&a;1&r?d^=c:u^=c}this.h1=d;this.h2=u}hexdigest(){let t=this.h1,e=this.h2;t^=e>>>1;t=3981806797*t&s|36045*t&a;e=4283543511*e&s|(2950163797*(e<<16|t>>>16)&s)>>>16;t^=e>>>1;t=444984403*t&s|60499*t&a;e=3301882366*e&s|(3120437893*(e<<16|t>>>16)&s)>>>16;t^=e>>>1;return(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.FontLoader=e.FontFaceObject=void 0;n(125);n(135);n(137);n(140);n(142);n(144);n(146);n(89);n(148);var i=n(1);e.FontLoader=class FontLoader{#Wt=new Set;constructor(t){let{ownerDocument:e=globalThis.document,styleElement:n=null}=t;this._document=e;this.nativeFontFaces=new Set;this.styleElement=null;this.loadingRequests=[];this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t);this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t);this._document.fonts.delete(t)}insertRule(t){if(!this.styleElement){this.styleElement=this._document.createElement("style");this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)}const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear();this.#Wt.clear();if(this.styleElement){this.styleElement.remove();this.styleElement=null}}async loadSystemFont(t){if(t&&!this.#Wt.has(t.loadedName)){(0,i.assert)(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set.");if(this.isFontLoadingAPISupported){const{loadedName:e,src:n,style:r}=t,s=new FontFace(e,n,r);this.addNativeFontFace(s);try{await s.load();this.#Wt.add(e)}catch{(0,i.warn)(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`);this.removeNativeFontFace(s)}}else(0,i.unreachable)("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;t.attached=!0;if(t.systemFontInfo){await this.loadSystemFont(t.systemFontInfo);return}if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(n){(0,i.warn)(`Failed to load font '${e.family}': '${n}'.`);t.disableFontFace=!0;throw n}}return}const e=t.createFontFaceRule();if(e){this.insertRule(e);if(this.isSyncFontLoadingSupported)return;await new Promise((e=>{const n=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,n)}))}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return(0,i.shadow)(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){let t=!1;(i.isNodeJS||"undefined"!=typeof navigator&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(t=!0);return(0,i.shadow)(this,"isSyncFontLoadingSupported",t)}_queueLoadingCallback(t){const{loadingRequests:e}=this,n={done:!1,complete:function completeRequest(){(0,i.assert)(!n.done,"completeRequest() cannot be called twice.");n.done=!0;for(;e.length>0&&e[0].done;){const t=e.shift();setTimeout(t.callback,0)}},callback:t};e.push(n);return n}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,i.shadow)(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function int32(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function spliceString(t,e,n,i){return t.substring(0,e)+i+t.substring(e+n)}let n,r;const s=this._document.createElement("canvas");s.width=1;s.height=1;const a=s.getContext("2d");let o=0;const l=`lt${Date.now()}${this.loadTestFontId++}`;let c=this._loadTestFont;c=spliceString(c,976,l.length,l);const h=1482184792;let d=int32(c,16);for(n=0,r=l.length-3;n30){(0,i.warn)("Load test font never loaded.");e();return}a.font="30px "+t;a.fillText(".",0,20);a.getImageData(0,0,1,1).data[3]>0?e():setTimeout(isFontReady.bind(null,t,e))}(l,(()=>{p.remove();e.complete()}))}};e.FontFaceObject=class FontFaceObject{constructor(t,e){let{isEvalSupported:n=!0,disableFontFace:i=!1,ignoreErrors:r=!1,inspectFont:s=null}=e;this.compiledGlyphs=Object.create(null);for(const e in t)this[e]=t[e];this.isEvalSupported=!1!==n;this.disableFontFace=!0===i;this.ignoreErrors=!0===r;this._inspectFont=s}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(this.cssFontInfo){const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`);t=new FontFace(this.cssFontInfo.fontFamily,this.data,e)}else t=new FontFace(this.loadedName,this.data,{});this._inspectFont?.(this);return t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=(0,i.bytesToString)(this.data),e=`url(data:${this.mimetype};base64,${btoa(t)});`;let n;if(this.cssFontInfo){let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`);n=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${e}}`}else n=`@font-face {font-family:"${this.loadedName}";src:${e}}`;this._inspectFont?.(this,e);return n}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];let n;try{n=t.get(this.loadedName+"_path_"+e)}catch(t){if(!this.ignoreErrors)throw t;(0,i.warn)(`getPathGenerator - ignoring character: "${t}".`);return this.compiledGlyphs[e]=function(t,e){}}if(this.isEvalSupported&&i.FeatureTest.isEvalSupported){const t=[];for(const e of n){const n=void 0!==e.args?e.args.join(","):"";t.push("c.",e.cmd,"(",n,");\n")}return this.compiledGlyphs[e]=new Function("c","size",t.join(""))}return this.compiledGlyphs[e]=function(t,e){for(const i of n){"scale"===i.cmd&&(i.args=[e,-e]);t[i.cmd].apply(t,i.args)}}}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.NodeStandardFontDataFactory=e.NodeFilterFactory=e.NodeCanvasFactory=e.NodeCMapReaderFactory=void 0;n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);var i=n(168),r=n(1);!function checkDOMMatrix(){if(!globalThis.DOMMatrix&&r.isNodeJS)try{globalThis.DOMMatrix=require("canvas").DOMMatrix}catch(t){(0,r.warn)(`Cannot polyfill \`DOMMatrix\`, rendering may be broken: "${t}".`)}}();!function checkPath2D(){if(!globalThis.Path2D&&r.isNodeJS)try{const{CanvasRenderingContext2D:t}=require("canvas"),{polyfillPath2D:e}=require("path2d-polyfill");globalThis.CanvasRenderingContext2D=t;e(globalThis)}catch(t){(0,r.warn)(`Cannot polyfill \`Path2D\`, rendering may be broken: "${t}".`)}}();const fetchData=function(t){return new Promise(((e,n)=>{require("fs").readFile(t,((t,i)=>{!t&&i?e(new Uint8Array(i)):n(new Error(t))}))}))};class NodeFilterFactory extends i.BaseFilterFactory{}e.NodeFilterFactory=NodeFilterFactory;class NodeCanvasFactory extends i.BaseCanvasFactory{_createCanvas(t,e){return require("canvas").createCanvas(t,e)}}e.NodeCanvasFactory=NodeCanvasFactory;class NodeCMapReaderFactory extends i.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t).then((t=>({cMapData:t,compressionType:e})))}}e.NodeCMapReaderFactory=NodeCMapReaderFactory;class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t)}}e.NodeStandardFontDataFactory=NodeStandardFontDataFactory},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.CanvasGraphics=void 0;n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(167),s=n(173),a=n(174);const o=4096,l=16;class CachedCanvases{constructor(t){this.canvasFactory=t;this.cache=Object.create(null)}getCanvas(t,e,n){let i;if(void 0!==this.cache[t]){i=this.cache[t];this.canvasFactory.reset(i,e,n)}else{i=this.canvasFactory.create(e,n);this.cache[t]=i}return i}delete(t){delete this.cache[t]}clear(){for(const t in this.cache){const e=this.cache[t];this.canvasFactory.destroy(e);delete this.cache[t]}}}function drawImageAtIntegerCoords(t,e,n,i,s,a,o,l,c,h){const[d,u,p,f,g,m]=(0,r.getCurrentTransform)(t);if(0===u&&0===p){const r=o*d+g,b=Math.round(r),v=l*f+m,y=Math.round(v),A=(o+c)*d+g,_=Math.abs(Math.round(A)-b)||1,S=(l+h)*f+m,E=Math.abs(Math.round(S)-y)||1;t.setTransform(Math.sign(d),0,0,Math.sign(f),b,y);t.drawImage(e,n,i,s,a,0,0,_,E);t.setTransform(d,u,p,f,g,m);return[_,E]}if(0===d&&0===f){const r=l*p+g,b=Math.round(r),v=o*u+m,y=Math.round(v),A=(l+h)*p+g,_=Math.abs(Math.round(A)-b)||1,S=(o+c)*u+m,E=Math.abs(Math.round(S)-y)||1;t.setTransform(0,Math.sign(u),Math.sign(p),0,b,y);t.drawImage(e,n,i,s,a,0,0,E,_);t.setTransform(d,u,p,f,g,m);return[E,_]}t.drawImage(e,n,i,s,a,o,l,c,h);return[Math.hypot(d,u)*c,Math.hypot(p,f)*h]}class CanvasExtraState{constructor(t,e){this.alphaIsShape=!1;this.fontSize=0;this.fontSizeScale=1;this.textMatrix=i.IDENTITY_MATRIX;this.textMatrixScale=1;this.fontMatrix=i.FONT_IDENTITY_MATRIX;this.leading=0;this.x=0;this.y=0;this.lineX=0;this.lineY=0;this.charSpacing=0;this.wordSpacing=0;this.textHScale=1;this.textRenderingMode=i.TextRenderingMode.FILL;this.textRise=0;this.fillColor="#000000";this.strokeColor="#000000";this.patternFill=!1;this.fillAlpha=1;this.strokeAlpha=1;this.lineWidth=1;this.activeSMask=null;this.transferMaps="none";this.startNewPathAndClipBox([0,0,t,e])}clone(){const t=Object.create(this);t.clipBox=this.clipBox.slice();return t}setCurrentPoint(t,e){this.x=t;this.y=e}updatePathMinMax(t,e,n){[e,n]=i.Util.applyTransform([e,n],t);this.minX=Math.min(this.minX,e);this.minY=Math.min(this.minY,n);this.maxX=Math.max(this.maxX,e);this.maxY=Math.max(this.maxY,n)}updateRectMinMax(t,e){const n=i.Util.applyTransform(e,t),r=i.Util.applyTransform(e.slice(2),t);this.minX=Math.min(this.minX,n[0],r[0]);this.minY=Math.min(this.minY,n[1],r[1]);this.maxX=Math.max(this.maxX,n[0],r[0]);this.maxY=Math.max(this.maxY,n[1],r[1])}updateScalingPathMinMax(t,e){i.Util.scaleMinMax(t,e);this.minX=Math.min(this.minX,e[0]);this.maxX=Math.max(this.maxX,e[1]);this.minY=Math.min(this.minY,e[2]);this.maxY=Math.max(this.maxY,e[3])}updateCurvePathMinMax(t,e,n,r,s,a,o,l,c,h){const d=i.Util.bezierBoundingBox(e,n,r,s,a,o,l,c);if(h){h[0]=Math.min(h[0],d[0],d[2]);h[1]=Math.max(h[1],d[0],d[2]);h[2]=Math.min(h[2],d[1],d[3]);h[3]=Math.max(h[3],d[1],d[3])}else this.updateRectMinMax(t,d)}getPathBoundingBox(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[this.minX,this.minY,this.maxX,this.maxY];if(t===s.PathType.STROKE){e||(0,i.unreachable)("Stroke bounding box must include transform.");const t=i.Util.singularValueDecompose2dScale(e),r=t[0]*this.lineWidth/2,s=t[1]*this.lineWidth/2;n[0]-=r;n[1]-=s;n[2]+=r;n[3]+=s}return n}updateClipFromPath(){const t=i.Util.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(t){this.clipBox=t;this.minX=1/0;this.minY=1/0;this.maxX=0;this.maxY=0}getClippedPathBoundingBox(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return i.Util.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function putBinaryImageData(t,e){if("undefined"!=typeof ImageData&&e instanceof ImageData){t.putImageData(e,0,0);return}const n=e.height,r=e.width,s=n%l,a=(n-s)/l,o=0===s?a:a+1,c=t.createImageData(r,l);let h,d=0;const u=e.data,p=c.data;let f,g,m,b;if(e.kind===i.ImageKind.GRAYSCALE_1BPP){const e=u.byteLength,n=new Uint32Array(p.buffer,0,p.byteLength>>2),b=n.length,v=r+7>>3,y=4294967295,A=i.FeatureTest.isLittleEndian?4278190080:255;for(f=0;fv?r:8*t-7,a=-8&s;let o=0,l=0;for(;i>=1}}for(;h=a){m=s;b=r*m}h=0;for(g=b;g--;){p[h++]=u[d++];p[h++]=u[d++];p[h++]=u[d++];p[h++]=255}t.putImageData(c,0,f*l)}}}function putBinaryImageMask(t,e){if(e.bitmap){t.drawImage(e.bitmap,0,0);return}const n=e.height,i=e.width,r=n%l,s=(n-r)/l,o=0===r?s:s+1,c=t.createImageData(i,l);let h=0;const d=e.data,u=c.data;for(let e=0;e>8;t[s-2]=t[s-2]*r+n*a>>8;t[s-1]=t[s-1]*r+i*a>>8}}}function composeSMaskAlpha(t,e,n){const i=t.length;for(let r=3;r>8]>>8:e[r]*i>>16}}function composeSMask(t,e,n,i){const r=i[0],s=i[1],a=i[2]-r,o=i[3]-s;if(0!==a&&0!==o){!function genericComposeSMask(t,e,n,i,r,s,a,o,l,c,h){const d=!!s,u=d?s[0]:0,p=d?s[1]:0,f=d?s[2]:0,g="Luminosity"===r?composeSMaskLuminosity:composeSMaskAlpha,m=Math.min(i,Math.ceil(1048576/n));for(let r=0;r1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}beginDrawing(t){let{transform:e,viewport:n,transparency:i=!1,background:s=null}=t;const a=this.ctx.canvas.width,o=this.ctx.canvas.height,l=this.ctx.fillStyle;this.ctx.fillStyle=s||"#ffffff";this.ctx.fillRect(0,0,a,o);this.ctx.fillStyle=l;if(i){const t=this.cachedCanvases.getCanvas("transparent",a,o);this.compositeCtx=this.ctx;this.transparentCanvas=t.canvas;this.ctx=t.context;this.ctx.save();this.ctx.transform(...(0,r.getCurrentTransform)(this.compositeCtx))}this.ctx.save();resetCtxToDefault(this.ctx);if(e){this.ctx.transform(...e);this.outputScaleX=e[0];this.outputScaleY=e[0]}this.ctx.transform(...n.transform);this.viewportScale=n.scale;this.baseTransform=(0,r.getCurrentTransform)(this.ctx)}executeOperatorList(t,e,n,r){const s=t.argsArray,a=t.fnArray;let o=e||0;const l=s.length;if(l===o)return o;const c=l-o>10&&"function"==typeof n,h=c?Date.now()+15:0;let d=0;const u=this.commonObjs,p=this.objs;let f;for(;;){if(void 0!==r&&o===r.nextBreakPoint){r.breakIt(o,n);return o}f=a[o];if(f!==i.OPS.dependency)this[f].apply(this,s[o]);else for(const t of s[o]){const e=t.startsWith("g_")?u:p;if(!e.has(t)){e.get(t,n);return o}}o++;if(o===l)return o;if(c&&++d>10){if(Date.now()>h){n();return o}d=0}}}#Gt(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore();if(this.transparentCanvas){this.ctx=this.compositeCtx;this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.drawImage(this.transparentCanvas,0,0);this.ctx.restore();this.transparentCanvas=null}}endDrawing(){this.#Gt();this.cachedCanvases.clear();this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear();this.#Vt()}#Vt(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){const e=this.ctx.filter;this.ctx.filter=t;this.ctx.drawImage(this.ctx.canvas,0,0);this.ctx.filter=e}}}_scaleImage(t,e){const n=t.width,i=t.height;let r,s,a=Math.max(Math.hypot(e[0],e[1]),1),o=Math.max(Math.hypot(e[2],e[3]),1),l=n,c=i,h="prescale1";for(;a>2&&l>1||o>2&&c>1;){let e=l,n=c;if(a>2&&l>1){e=l>=16384?Math.floor(l/2)-1||1:Math.ceil(l/2);a/=l/e}if(o>2&&c>1){n=c>=16384?Math.floor(c/2)-1||1:Math.ceil(c)/2;o/=c/n}r=this.cachedCanvases.getCanvas(h,e,n);s=r.context;s.clearRect(0,0,e,n);s.drawImage(t,0,0,l,c,0,0,e,n);t=r.canvas;l=e;c=n;h="prescale1"===h?"prescale2":"prescale1"}return{img:t,paintWidth:l,paintHeight:c}}_createMaskCanvas(t){const e=this.ctx,{width:n,height:a}=t,o=this.current.fillColor,l=this.current.patternFill,c=(0,r.getCurrentTransform)(e);let h,d,u,p;if((t.bitmap||t.data)&&t.count>1){const e=t.bitmap||t.data.buffer;d=JSON.stringify(l?c:[c.slice(0,4),o]);h=this._cachedBitmapsMap.get(e);if(!h){h=new Map;this._cachedBitmapsMap.set(e,h)}const n=h.get(d);if(n&&!l){return{canvas:n,offsetX:Math.round(Math.min(c[0],c[2])+c[4]),offsetY:Math.round(Math.min(c[1],c[3])+c[5])}}u=n}if(!u){p=this.cachedCanvases.getCanvas("maskCanvas",n,a);putBinaryImageMask(p.context,t)}let f=i.Util.transform(c,[1/n,0,0,-1/a,0,0]);f=i.Util.transform(f,[1,0,0,1,0,-a]);const g=i.Util.applyTransform([0,0],f),m=i.Util.applyTransform([n,a],f),b=i.Util.normalizeRect([g[0],g[1],m[0],m[1]]),v=Math.round(b[2]-b[0])||1,y=Math.round(b[3]-b[1])||1,A=this.cachedCanvases.getCanvas("fillCanvas",v,y),_=A.context,S=Math.min(g[0],m[0]),E=Math.min(g[1],m[1]);_.translate(-S,-E);_.transform(...f);if(!u){u=this._scaleImage(p.canvas,(0,r.getCurrentTransformInverse)(_));u=u.img;h&&l&&h.set(d,u)}_.imageSmoothingEnabled=getImageSmoothingEnabled((0,r.getCurrentTransform)(_),t.interpolate);drawImageAtIntegerCoords(_,u,0,0,u.width,u.height,0,0,n,a);_.globalCompositeOperation="source-in";const x=i.Util.transform((0,r.getCurrentTransformInverse)(_),[1,0,0,1,-S,-E]);_.fillStyle=l?o.getPattern(e,this,x,s.PathType.FILL):o;_.fillRect(0,0,n,a);if(h&&!l){this.cachedCanvases.delete("fillCanvas");h.set(d,A.canvas)}return{canvas:A.canvas,offsetX:Math.round(S),offsetY:Math.round(E)}}setLineWidth(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1);this.current.lineWidth=t;this.ctx.lineWidth=t}setLineCap(t){this.ctx.lineCap=c[t]}setLineJoin(t){this.ctx.lineJoin=h[t]}setMiterLimit(t){this.ctx.miterLimit=t}setDash(t,e){const n=this.ctx;if(void 0!==n.setLineDash){n.setLineDash(t);n.lineDashOffset=e}}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n[0],n[1]);break;case"CA":this.current.strokeAlpha=n;break;case"ca":this.current.fillAlpha=n;this.ctx.globalAlpha=n;break;case"BM":this.ctx.globalCompositeOperation=n;break;case"SMask":this.current.activeSMask=n?this.tempSMask:null;this.tempSMask=null;this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(n)}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,n="smaskGroupAt"+this.groupLevel,i=this.cachedCanvases.getCanvas(n,t,e);this.suspendedCtx=this.ctx;this.ctx=i.context;const s=this.ctx;s.setTransform(...(0,r.getCurrentTransform)(this.suspendedCtx));copyCtxState(this.suspendedCtx,s);!function mirrorContextOperations(t,e){if(t._removeMirroring)throw new Error("Context is already forwarding operations.");t.__originalSave=t.save;t.__originalRestore=t.restore;t.__originalRotate=t.rotate;t.__originalScale=t.scale;t.__originalTranslate=t.translate;t.__originalTransform=t.transform;t.__originalSetTransform=t.setTransform;t.__originalResetTransform=t.resetTransform;t.__originalClip=t.clip;t.__originalMoveTo=t.moveTo;t.__originalLineTo=t.lineTo;t.__originalBezierCurveTo=t.bezierCurveTo;t.__originalRect=t.rect;t.__originalClosePath=t.closePath;t.__originalBeginPath=t.beginPath;t._removeMirroring=()=>{t.save=t.__originalSave;t.restore=t.__originalRestore;t.rotate=t.__originalRotate;t.scale=t.__originalScale;t.translate=t.__originalTranslate;t.transform=t.__originalTransform;t.setTransform=t.__originalSetTransform;t.resetTransform=t.__originalResetTransform;t.clip=t.__originalClip;t.moveTo=t.__originalMoveTo;t.lineTo=t.__originalLineTo;t.bezierCurveTo=t.__originalBezierCurveTo;t.rect=t.__originalRect;t.closePath=t.__originalClosePath;t.beginPath=t.__originalBeginPath;delete t._removeMirroring};t.save=function ctxSave(){e.save();this.__originalSave()};t.restore=function ctxRestore(){e.restore();this.__originalRestore()};t.translate=function ctxTranslate(t,n){e.translate(t,n);this.__originalTranslate(t,n)};t.scale=function ctxScale(t,n){e.scale(t,n);this.__originalScale(t,n)};t.transform=function ctxTransform(t,n,i,r,s,a){e.transform(t,n,i,r,s,a);this.__originalTransform(t,n,i,r,s,a)};t.setTransform=function ctxSetTransform(t,n,i,r,s,a){e.setTransform(t,n,i,r,s,a);this.__originalSetTransform(t,n,i,r,s,a)};t.resetTransform=function ctxResetTransform(){e.resetTransform();this.__originalResetTransform()};t.rotate=function ctxRotate(t){e.rotate(t);this.__originalRotate(t)};t.clip=function ctxRotate(t){e.clip(t);this.__originalClip(t)};t.moveTo=function(t,n){e.moveTo(t,n);this.__originalMoveTo(t,n)};t.lineTo=function(t,n){e.lineTo(t,n);this.__originalLineTo(t,n)};t.bezierCurveTo=function(t,n,i,r,s,a){e.bezierCurveTo(t,n,i,r,s,a);this.__originalBezierCurveTo(t,n,i,r,s,a)};t.rect=function(t,n,i,r){e.rect(t,n,i,r);this.__originalRect(t,n,i,r)};t.closePath=function(){e.closePath();this.__originalClosePath()};t.beginPath=function(){e.beginPath();this.__originalBeginPath()}}(s,this.suspendedCtx);this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring();copyCtxState(this.ctx,this.suspendedCtx);this.ctx=this.suspendedCtx;this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;if(t){t[0]=Math.floor(t[0]);t[1]=Math.floor(t[1]);t[2]=Math.ceil(t[2]);t[3]=Math.ceil(t[3])}else t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask;composeSMask(this.suspendedCtx,e,this.ctx,t);this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height);this.ctx.restore()}save(){if(this.inSMaskMode){copyCtxState(this.ctx,this.suspendedCtx);this.suspendedCtx.save()}else this.ctx.save();const t=this.current;this.stateStack.push(t);this.current=t.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode();if(0!==this.stateStack.length){this.current=this.stateStack.pop();if(this.inSMaskMode){this.suspendedCtx.restore();copyCtxState(this.suspendedCtx,this.ctx)}else this.ctx.restore();this.checkSMaskState();this.pendingClip=null;this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}}transform(t,e,n,i,r,s){this.ctx.transform(t,e,n,i,r,s);this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}constructPath(t,e,n){const s=this.ctx,a=this.current;let o,l,c=a.x,h=a.y;const d=(0,r.getCurrentTransform)(s),u=0===d[0]&&0===d[3]||0===d[1]&&0===d[2],p=u?n.slice(0):null;for(let n=0,r=0,f=t.length;n0&&void 0!==arguments[0])||arguments[0];const e=this.ctx,n=this.current.strokeColor;e.globalAlpha=this.current.strokeAlpha;if(this.contentVisible)if("object"==typeof n&&n?.getPattern){e.save();e.strokeStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.STROKE);this.rescaleAndStroke(!1);e.restore()}else this.rescaleAndStroke(!0);t&&this.consumePath(this.current.getClippedPathBoundingBox());e.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath();this.stroke()}fill(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const e=this.ctx,n=this.current.fillColor;let i=!1;if(this.current.patternFill){e.save();e.fillStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.FILL);i=!0}const a=this.current.getClippedPathBoundingBox();if(this.contentVisible&&null!==a)if(this.pendingEOFill){e.fill("evenodd");this.pendingEOFill=!1}else e.fill();i&&e.restore();t&&this.consumePath(a)}eoFill(){this.pendingEOFill=!0;this.fill()}fillStroke(){this.fill(!1);this.stroke(!1);this.consumePath()}eoFillStroke(){this.pendingEOFill=!0;this.fillStroke()}closeFillStroke(){this.closePath();this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0;this.closePath();this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=d}eoClip(){this.pendingClip=u}beginText(){this.current.textMatrix=i.IDENTITY_MATRIX;this.current.textMatrixScale=1;this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}endText(){const t=this.pendingTextPaths,e=this.ctx;if(void 0!==t){e.save();e.beginPath();for(const n of t){e.setTransform(...n.transform);e.translate(n.x,n.y);n.addToPath(e,n.fontSize)}e.restore();e.clip();e.beginPath();delete this.pendingTextPaths}else e.beginPath()}setCharSpacing(t){this.current.charSpacing=t}setWordSpacing(t){this.current.wordSpacing=t}setHScale(t){this.current.textHScale=t/100}setLeading(t){this.current.leading=-t}setFont(t,e){const n=this.commonObjs.get(t),r=this.current;if(!n)throw new Error(`Can't find font for ${t}`);r.fontMatrix=n.fontMatrix||i.FONT_IDENTITY_MATRIX;0!==r.fontMatrix[0]&&0!==r.fontMatrix[3]||(0,i.warn)("Invalid font matrix for font "+t);if(e<0){e=-e;r.fontDirection=-1}else r.fontDirection=1;this.current.font=n;this.current.fontSize=e;if(n.isType3Font)return;const s=n.loadedName||"sans-serif",a=n.systemFontInfo?.css||`"${s}", ${n.fallbackName}`;let o="normal";n.black?o="900":n.bold&&(o="bold");const l=n.italic?"italic":"normal";let c=e;e<16?c=16:e>100&&(c=100);this.current.fontSizeScale=e/c;this.ctx.font=`${l} ${o} ${c}px ${a}`}setTextRenderingMode(t){this.current.textRenderingMode=t}setTextRise(t){this.current.textRise=t}moveText(t,e){this.current.x=this.current.lineX+=t;this.current.y=this.current.lineY+=e}setLeadingMoveText(t,e){this.setLeading(-e);this.moveText(t,e)}setTextMatrix(t,e,n,i,r,s){this.current.textMatrix=[t,e,n,i,r,s];this.current.textMatrixScale=Math.hypot(t,e);this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(t,e,n,s){const a=this.ctx,o=this.current,l=o.font,c=o.textRenderingMode,h=o.fontSize/o.fontSizeScale,d=c&i.TextRenderingMode.FILL_STROKE_MASK,u=!!(c&i.TextRenderingMode.ADD_TO_PATH_FLAG),p=o.patternFill&&!l.missingFile;let f;(l.disableFontFace||u||p)&&(f=l.getPathGenerator(this.commonObjs,t));if(l.disableFontFace||p){a.save();a.translate(e,n);a.beginPath();f(a,h);s&&a.setTransform(...s);d!==i.TextRenderingMode.FILL&&d!==i.TextRenderingMode.FILL_STROKE||a.fill();d!==i.TextRenderingMode.STROKE&&d!==i.TextRenderingMode.FILL_STROKE||a.stroke();a.restore()}else{d!==i.TextRenderingMode.FILL&&d!==i.TextRenderingMode.FILL_STROKE||a.fillText(t,e,n);d!==i.TextRenderingMode.STROKE&&d!==i.TextRenderingMode.FILL_STROKE||a.strokeText(t,e,n)}if(u){(this.pendingTextPaths||=[]).push({transform:(0,r.getCurrentTransform)(a),x:e,y:n,fontSize:h,addToPath:f})}}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1);t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let n=!1;for(let t=3;t0&&e[t]<255){n=!0;break}return(0,i.shadow)(this,"isFontSubpixelAAEnabled",n)}showText(t){const e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);const a=e.fontSize;if(0===a)return;const o=this.ctx,l=e.fontSizeScale,c=e.charSpacing,h=e.wordSpacing,d=e.fontDirection,u=e.textHScale*d,p=t.length,f=n.vertical,g=f?1:-1,m=n.defaultVMetrics,b=a*e.fontMatrix[0],v=e.textRenderingMode===i.TextRenderingMode.FILL&&!n.disableFontFace&&!e.patternFill;o.save();o.transform(...e.textMatrix);o.translate(e.x,e.y+e.textRise);d>0?o.scale(u,-1):o.scale(u,1);let y;if(e.patternFill){o.save();const t=e.fillColor.getPattern(o,this,(0,r.getCurrentTransformInverse)(o),s.PathType.FILL);y=(0,r.getCurrentTransform)(o);o.restore();o.fillStyle=t}let A=e.lineWidth;const _=e.textMatrixScale;if(0===_||0===A){const t=e.textRenderingMode&i.TextRenderingMode.FILL_STROKE_MASK;t!==i.TextRenderingMode.STROKE&&t!==i.TextRenderingMode.FILL_STROKE||(A=this.getSinglePixelWidth())}else A/=_;if(1!==l){o.scale(l,l);A/=l}o.lineWidth=A;if(n.isInvalidPDFjsFont){const n=[];let i=0;for(const e of t){n.push(e.unicode);i+=e.width}o.fillText(n.join(""),0,0);e.x+=i*b*u;o.restore();this.compose();return}let S,E=0;for(S=0;S0){const t=1e3*o.measureText(s).width/a*l;if(_new CanvasGraphics(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};e=new s.TilingPattern(t,n,this.ctx,a,i)}else e=this._getPattern(t[1],t[2]);return e}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments);this.current.patternFill=!0}setStrokeRGBColor(t,e,n){const r=i.Util.makeHexColor(t,e,n);this.ctx.strokeStyle=r;this.current.strokeColor=r}setFillRGBColor(t,e,n){const r=i.Util.makeHexColor(t,e,n);this.ctx.fillStyle=r;this.current.fillColor=r;this.current.patternFill=!1}_getPattern(t){let e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.cachedPatterns.has(t))e=this.cachedPatterns.get(t);else{e=(0,s.getShadingPattern)(this.getObject(t));this.cachedPatterns.set(t,e)}n&&(e.matrix=n);return e}shadingFill(t){if(!this.contentVisible)return;const e=this.ctx;this.save();const n=this._getPattern(t);e.fillStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.SHADING);const a=(0,r.getCurrentTransformInverse)(e);if(a){const{width:t,height:n}=e.canvas,[r,s,o,l]=i.Util.getAxialAlignedBoundingBox([0,0,t,n],a);this.ctx.fillRect(r,s,o-r,l-s)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox());this.restore()}beginInlineImage(){(0,i.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,i.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(t,e){if(this.contentVisible){this.save();this.baseTransformStack.push(this.baseTransform);Array.isArray(t)&&6===t.length&&this.transform(...t);this.baseTransform=(0,r.getCurrentTransform)(this.ctx);if(e){const t=e[2]-e[0],n=e[3]-e[1];this.ctx.rect(e[0],e[1],t,n);this.current.updateRectMinMax((0,r.getCurrentTransform)(this.ctx),e);this.clip();this.endPath()}}}paintFormXObjectEnd(){if(this.contentVisible){this.restore();this.baseTransform=this.baseTransformStack.pop()}}beginGroup(t){if(!this.contentVisible)return;this.save();if(this.inSMaskMode){this.endSMaskMode();this.current.activeSMask=null}const e=this.ctx;t.isolated||(0,i.info)("TODO: Support non-isolated groups.");t.knockout&&(0,i.warn)("Knockout groups not supported.");const n=(0,r.getCurrentTransform)(e);t.matrix&&e.transform(...t.matrix);if(!t.bbox)throw new Error("Bounding box is required.");let s=i.Util.getAxialAlignedBoundingBox(t.bbox,(0,r.getCurrentTransform)(e));const a=[0,0,e.canvas.width,e.canvas.height];s=i.Util.intersect(s,a)||[0,0,0,0];const l=Math.floor(s[0]),c=Math.floor(s[1]);let h=Math.max(Math.ceil(s[2])-l,1),d=Math.max(Math.ceil(s[3])-c,1),u=1,p=1;if(h>o){u=h/o;h=o}if(d>o){p=d/o;d=o}this.current.startNewPathAndClipBox([0,0,h,d]);let f="groupAt"+this.groupLevel;t.smask&&(f+="_smask_"+this.smaskCounter++%2);const g=this.cachedCanvases.getCanvas(f,h,d),m=g.context;m.scale(1/u,1/p);m.translate(-l,-c);m.transform(...n);if(t.smask)this.smaskStack.push({canvas:g.canvas,context:m,offsetX:l,offsetY:c,scaleX:u,scaleY:p,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null});else{e.setTransform(1,0,0,1,0,0);e.translate(l,c);e.scale(u,p);e.save()}copyCtxState(e,m);this.ctx=m;this.setGState([["BM","source-over"],["ca",1],["CA",1]]);this.groupStack.push(e);this.groupLevel++}endGroup(t){if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,n=this.groupStack.pop();this.ctx=n;this.ctx.imageSmoothingEnabled=!1;if(t.smask){this.tempSMask=this.smaskStack.pop();this.restore()}else{this.ctx.restore();const t=(0,r.getCurrentTransform)(this.ctx);this.restore();this.ctx.save();this.ctx.setTransform(...t);const n=i.Util.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],t);this.ctx.drawImage(e.canvas,0,0);this.ctx.restore();this.compose(n)}}beginAnnotation(t,e,n,s,a){this.#Gt();resetCtxToDefault(this.ctx);this.ctx.save();this.save();this.baseTransform&&this.ctx.setTransform(...this.baseTransform);if(Array.isArray(e)&&4===e.length){const s=e[2]-e[0],o=e[3]-e[1];if(a&&this.annotationCanvasMap){(n=n.slice())[4]-=e[0];n[5]-=e[1];(e=e.slice())[0]=e[1]=0;e[2]=s;e[3]=o;const[a,l]=i.Util.singularValueDecompose2dScale((0,r.getCurrentTransform)(this.ctx)),{viewportScale:c}=this,h=Math.ceil(s*this.outputScaleX*c),d=Math.ceil(o*this.outputScaleY*c);this.annotationCanvas=this.canvasFactory.create(h,d);const{canvas:u,context:p}=this.annotationCanvas;this.annotationCanvasMap.set(t,u);this.annotationCanvas.savedCtx=this.ctx;this.ctx=p;this.ctx.save();this.ctx.setTransform(a,0,0,-l,0,o*l);resetCtxToDefault(this.ctx)}else{resetCtxToDefault(this.ctx);this.ctx.rect(e[0],e[1],s,o);this.ctx.clip();this.endPath()}}this.current=new CanvasExtraState(this.ctx.canvas.width,this.ctx.canvas.height);this.transform(...n);this.transform(...s)}endAnnotation(){if(this.annotationCanvas){this.ctx.restore();this.#Vt();this.ctx=this.annotationCanvas.savedCtx;delete this.annotationCanvas.savedCtx;delete this.annotationCanvas}}paintImageMaskXObject(t){if(!this.contentVisible)return;const e=t.count;(t=this.getObject(t.data,t)).count=e;const n=this.ctx,i=this.processingType3;if(i){void 0===i.compiled&&(i.compiled=function compileType3Glyph(t){const{width:e,height:n}=t;if(e>1e3||n>1e3)return null;const i=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),r=e+1;let s,a,o,l=new Uint8Array(r*(n+1));const c=e+7&-8;let h=new Uint8Array(c*n),d=0;for(const e of t.data){let t=128;for(;t>0;){h[d++]=e&t?0:255;t>>=1}}let u=0;d=0;if(0!==h[d]){l[0]=1;++u}for(a=1;a>2)+(h[d+1]?4:0)+(h[d-c+1]?8:0);if(i[t]){l[o+a]=i[t];++u}d++}if(h[d-c]!==h[d]){l[o+a]=h[d]?2:4;++u}if(u>1e3)return null}d=c*(n-1);o=s*r;if(0!==h[d]){l[o]=8;++u}for(a=1;a1e3)return null;const p=new Int32Array([0,r,-1,0,-r,0,0,0,1]),f=new Path2D;for(s=0;u&&s<=n;s++){let t=s*r;const n=t+e;for(;t>4;l[t]&=a>>2|a<<2}f.lineTo(t%r,t/r|0);l[t]||--u}while(i!==t);--s}h=null;l=null;return function(t){t.save();t.scale(1/e,-1/n);t.translate(0,-n);t.fill(f);t.beginPath();t.restore()}}(t));if(i.compiled){i.compiled(n);return}}const r=this._createMaskCanvas(t),s=r.canvas;n.save();n.setTransform(1,0,0,1,0,0);n.drawImage(s,r.offsetX,r.offsetY);n.restore();this.compose()}paintImageMaskXObjectRepeat(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4?arguments[4]:void 0,o=arguments.length>5?arguments[5]:void 0;if(!this.contentVisible)return;t=this.getObject(t.data,t);const l=this.ctx;l.save();const c=(0,r.getCurrentTransform)(l);l.transform(e,n,s,a,0,0);const h=this._createMaskCanvas(t);l.setTransform(1,0,0,1,h.offsetX-c[4],h.offsetY-c[5]);for(let t=0,r=o.length;te?c/e:1;a=l>e?l/e:1}}this._cachedScaleForStroking[0]=s;this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(t){const{ctx:e}=this,{lineWidth:n}=this.current,[i,r]=this.getScaleForStroking();e.lineWidth=n||1;if(1===i&&1===r){e.stroke();return}const s=e.getLineDash();t&&e.save();e.scale(i,r);if(s.length>0){const t=Math.max(i,r);e.setLineDash(s.map((e=>e/t)));e.lineDashOffset/=t}e.stroke();t&&e.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}e.CanvasGraphics=CanvasGraphics;for(const t in i.OPS)void 0!==CanvasGraphics.prototype[t]&&(CanvasGraphics.prototype[i.OPS[t]]=CanvasGraphics.prototype[t])},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.TilingPattern=e.PathType=void 0;e.getShadingPattern=function getShadingPattern(t){switch(t[0]){case"RadialAxial":return new RadialAxialShadingPattern(t);case"Mesh":return new MeshShadingPattern(t);case"Dummy":return new DummyShadingPattern}throw new Error(`Unknown IR type: ${t[0]}`)};n(2);var i=n(1),r=n(167);const s={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};e.PathType=s;function applyBoundingBox(t,e){if(!e)return;const n=e[2]-e[0],i=e[3]-e[1],r=new Path2D;r.rect(e[0],e[1],n,i);t.clip(r)}class BaseShadingPattern{constructor(){this.constructor===BaseShadingPattern&&(0,i.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,i.unreachable)("Abstract method `getPattern` called.")}}class RadialAxialShadingPattern extends BaseShadingPattern{constructor(t){super();this._type=t[1];this._bbox=t[2];this._colorStops=t[3];this._p0=t[4];this._p1=t[5];this._r0=t[6];this._r1=t[7];this.matrix=null}_createGradient(t){let e;"axial"===this._type?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const t of this._colorStops)e.addColorStop(t[0],t[1]);return e}getPattern(t,e,n,a){let o;if(a===s.STROKE||a===s.FILL){const s=e.current.getClippedPathBoundingBox(a,(0,r.getCurrentTransform)(t))||[0,0,0,0],l=Math.ceil(s[2]-s[0])||1,c=Math.ceil(s[3]-s[1])||1,h=e.cachedCanvases.getCanvas("pattern",l,c,!0),d=h.context;d.clearRect(0,0,d.canvas.width,d.canvas.height);d.beginPath();d.rect(0,0,d.canvas.width,d.canvas.height);d.translate(-s[0],-s[1]);n=i.Util.transform(n,[1,0,0,1,s[0],s[1]]);d.transform(...e.baseTransform);this.matrix&&d.transform(...this.matrix);applyBoundingBox(d,this._bbox);d.fillStyle=this._createGradient(d);d.fill();o=t.createPattern(h.canvas,"no-repeat");const u=new DOMMatrix(n);o.setTransform(u)}else{applyBoundingBox(t,this._bbox);o=this._createGradient(t)}return o}}function drawTriangle(t,e,n,i,r,s,a,o){const l=e.coords,c=e.colors,h=t.data,d=4*t.width;let u;if(l[n+1]>l[i+1]){u=n;n=i;i=u;u=s;s=a;a=u}if(l[i+1]>l[r+1]){u=i;i=r;r=u;u=a;a=o;o=u}if(l[n+1]>l[i+1]){u=n;n=i;i=u;u=s;s=a;a=u}const p=(l[n]+e.offsetX)*e.scaleX,f=(l[n+1]+e.offsetY)*e.scaleY,g=(l[i]+e.offsetX)*e.scaleX,m=(l[i+1]+e.offsetY)*e.scaleY,b=(l[r]+e.offsetX)*e.scaleX,v=(l[r+1]+e.offsetY)*e.scaleY;if(f>=v)return;const y=c[s],A=c[s+1],_=c[s+2],S=c[a],E=c[a+1],x=c[a+2],w=c[o],C=c[o+1],T=c[o+2],P=Math.round(f),k=Math.round(v);let M,R,I,D,O,L,N,B;for(let t=P;t<=k;t++){if(tv?1:m===v?0:(m-t)/(m-v);M=g-(g-b)*e;R=S-(S-w)*e;I=E-(E-C)*e;D=x-(x-T)*e}let e;e=tv?1:(f-t)/(f-v);O=p-(p-b)*e;L=y-(y-w)*e;N=A-(A-C)*e;B=_-(_-T)*e;const n=Math.round(Math.min(M,O)),i=Math.round(Math.max(M,O));let r=d*t+4*n;for(let t=n;t<=i;t++){e=(M-t)/(M-O);e<0?e=0:e>1&&(e=1);h[r++]=R-(R-L)*e|0;h[r++]=I-(I-N)*e|0;h[r++]=D-(D-B)*e|0;h[r++]=255}}}function drawFigure(t,e,n){const i=e.coords,r=e.colors;let s,a;switch(e.type){case"lattice":const o=e.verticesPerRow,l=Math.floor(i.length/o)-1,c=o-1;for(s=0;s=i?r=i:n=r/t;return{scale:n,size:r}}clipBbox(t,e,n,i,s){const a=i-e,o=s-n;t.ctx.rect(e,n,a,o);t.current.updateRectMinMax((0,r.getCurrentTransform)(t.ctx),[e,n,i,s]);t.clip();t.endPath()}setFillAndStrokeStyleToContext(t,e,n){const r=t.ctx,s=t.current;switch(e){case a:const t=this.ctx;r.fillStyle=t.fillStyle;r.strokeStyle=t.strokeStyle;s.fillColor=t.fillStyle;s.strokeColor=t.strokeStyle;break;case o:const l=i.Util.makeHexColor(n[0],n[1],n[2]);r.fillStyle=l;r.strokeStyle=l;s.fillColor=l;s.strokeColor=l;break;default:throw new i.FormatError(`Unsupported paint type: ${e}`)}}getPattern(t,e,n,r){let a=n;if(r!==s.SHADING){a=i.Util.transform(a,e.baseTransform);this.matrix&&(a=i.Util.transform(a,this.matrix))}const o=this.createPatternCanvas(e);let l=new DOMMatrix(a);l=l.translate(o.offsetX,o.offsetY);l=l.scale(1/o.scaleX,1/o.scaleY);const c=t.createPattern(o.canvas,"repeat");c.setTransform(l);return c}}e.TilingPattern=TilingPattern},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.convertBlackAndWhiteToRGBA=convertBlackAndWhiteToRGBA;e.convertToRGBA=function convertToRGBA(t){switch(t.kind){case i.ImageKind.GRAYSCALE_1BPP:return convertBlackAndWhiteToRGBA(t);case i.ImageKind.RGB_24BPP:return function convertRGBToRGBA(t){let{src:e,srcPos:n=0,dest:r,destPos:s=0,width:a,height:o}=t,l=0;const c=e.length>>2,h=new Uint32Array(e.buffer,n,c);if(i.FeatureTest.isLittleEndian){for(;l>>24|e<<8|4278190080;r[s+2]=e>>>16|n<<16|4278190080;r[s+3]=n>>>8|4278190080}for(let t=4*l,n=e.length;t>>8|255;r[s+2]=e<<16|n>>>16|255;r[s+3]=n<<8|255}for(let t=4*l,n=e.length;t>3,p=7&s,f=e.length;r=new Uint32Array(r.buffer);let g=0;for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.GlobalWorkerOptions=void 0;const n=Object.create(null);e.GlobalWorkerOptions=n;n.workerPort=null;n.workerSrc=""},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.MessageHandler=void 0;n(2);var i=n(1);const r=1,s=2,a=1,o=2,l=3,c=4,h=5,d=6,u=7,p=8;function wrapReason(t){t instanceof Error||"object"==typeof t&&null!==t||(0,i.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(t.name){case"AbortException":return new i.AbortException(t.message);case"MissingPDFException":return new i.MissingPDFException(t.message);case"PasswordException":return new i.PasswordException(t.message,t.code);case"UnexpectedResponseException":return new i.UnexpectedResponseException(t.message,t.status);case"UnknownErrorException":return new i.UnknownErrorException(t.message,t.details);default:return new i.UnknownErrorException(t.message,t.toString())}}e.MessageHandler=class MessageHandler{constructor(t,e,n){this.sourceName=t;this.targetName=e;this.comObj=n;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=t=>{const e=t.data;if(e.targetName!==this.sourceName)return;if(e.stream){this.#$t(e);return}if(e.callback){const t=e.callbackId,n=this.callbackCapabilities[t];if(!n)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===r)n.resolve(e.data);else{if(e.callback!==s)throw new Error("Unexpected callback case");n.reject(wrapReason(e.reason))}return}const i=this.actionHandler[e.action];if(!i)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const t=this.sourceName,a=e.sourceName;new Promise((function(t){t(i(e.data))})).then((function(i){n.postMessage({sourceName:t,targetName:a,callback:r,callbackId:e.callbackId,data:i})}),(function(i){n.postMessage({sourceName:t,targetName:a,callback:s,callbackId:e.callbackId,reason:wrapReason(i)})}))}else e.streamId?this.#Xt(e):i(e.data)};n.addEventListener("message",this._onComObjOnMessage)}on(t,e){const n=this.actionHandler;if(n[t])throw new Error(`There is already an actionName called "${t}"`);n[t]=e}send(t,e,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},n)}sendWithPromise(t,e,n){const r=this.callbackId++,s=new i.PromiseCapability;this.callbackCapabilities[r]=s;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:r,data:e},n)}catch(t){s.reject(t)}return s.promise}sendWithStream(t,e,n,r){const s=this.streamId++,o=this.sourceName,l=this.targetName,c=this.comObj;return new ReadableStream({start:n=>{const a=new i.PromiseCapability;this.streamControllers[s]={controller:n,startCall:a,pullCall:null,cancelCall:null,isClosed:!1};c.postMessage({sourceName:o,targetName:l,action:t,streamId:s,data:e,desiredSize:n.desiredSize},r);return a.promise},pull:t=>{const e=new i.PromiseCapability;this.streamControllers[s].pullCall=e;c.postMessage({sourceName:o,targetName:l,stream:d,streamId:s,desiredSize:t.desiredSize});return e.promise},cancel:t=>{(0,i.assert)(t instanceof Error,"cancel must have a valid reason");const e=new i.PromiseCapability;this.streamControllers[s].cancelCall=e;this.streamControllers[s].isClosed=!0;c.postMessage({sourceName:o,targetName:l,stream:a,streamId:s,reason:wrapReason(t)});return e.promise}},n)}#Xt(t){const e=t.streamId,n=this.sourceName,r=t.sourceName,s=this.comObj,a=this,o=this.actionHandler[t.action],d={enqueue(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2?arguments[2]:void 0;if(this.isCancelled)return;const l=this.desiredSize;this.desiredSize-=a;if(l>0&&this.desiredSize<=0){this.sinkCapability=new i.PromiseCapability;this.ready=this.sinkCapability.promise}s.postMessage({sourceName:n,targetName:r,stream:c,streamId:e,chunk:t},o)},close(){if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:r,stream:l,streamId:e});delete a.streamSinks[e]}},error(t){(0,i.assert)(t instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:r,stream:h,streamId:e,reason:wrapReason(t)})}},sinkCapability:new i.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};d.sinkCapability.resolve();d.ready=d.sinkCapability.promise;this.streamSinks[e]=d;new Promise((function(e){e(o(t.data,d))})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:p,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:p,streamId:e,reason:wrapReason(t)})}))}#$t(t){const e=t.streamId,n=this.sourceName,r=t.sourceName,s=this.comObj,f=this.streamControllers[e],g=this.streamSinks[e];switch(t.stream){case p:t.success?f.startCall.resolve():f.startCall.reject(wrapReason(t.reason));break;case u:t.success?f.pullCall.resolve():f.pullCall.reject(wrapReason(t.reason));break;case d:if(!g){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,success:!0});break}g.desiredSize<=0&&t.desiredSize>0&&g.sinkCapability.resolve();g.desiredSize=t.desiredSize;new Promise((function(t){t(g.onPull?.())})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,reason:wrapReason(t)})}));break;case c:(0,i.assert)(f,"enqueue should have stream controller");if(f.isClosed)break;f.controller.enqueue(t.chunk);break;case l:(0,i.assert)(f,"close should have stream controller");if(f.isClosed)break;f.isClosed=!0;f.controller.close();this.#Kt(f,e);break;case h:(0,i.assert)(f,"error should have stream controller");f.controller.error(wrapReason(t.reason));this.#Kt(f,e);break;case o:t.success?f.cancelCall.resolve():f.cancelCall.reject(wrapReason(t.reason));this.#Kt(f,e);break;case a:if(!g)break;new Promise((function(e){e(g.onCancel?.(wrapReason(t.reason)))})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:o,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:o,streamId:e,reason:wrapReason(t)})}));g.sinkCapability.reject(wrapReason(t.reason));g.isCancelled=!0;delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#Kt(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]);delete this.streamControllers[e]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.Metadata=void 0;var i=n(1);e.Metadata=class Metadata{#Yt;#Jt;constructor(t){let{parsedData:e,rawData:n}=t;this.#Yt=e;this.#Jt=n}getRaw(){return this.#Jt}get(t){return this.#Yt.get(t)??null}getAll(){return(0,i.objectFromMap)(this.#Yt)}has(t){return this.#Yt.has(t)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.OptionalContentConfig=void 0;var i=n(1),r=n(169);const s=Symbol("INTERNAL");class OptionalContentGroup{#Qt=!0;constructor(t,e){this.name=t;this.intent=e}get visible(){return this.#Qt}_setVisible(t,e){t!==s&&(0,i.unreachable)("Internal method `_setVisible` called.");this.#Qt=e}}e.OptionalContentConfig=class OptionalContentConfig{#Zt=null;#te=new Map;#ee=null;#ne=null;constructor(t){this.name=null;this.creator=null;if(null!==t){this.name=t.name;this.creator=t.creator;this.#ne=t.order;for(const e of t.groups)this.#te.set(e.id,new OptionalContentGroup(e.name,e.intent));if("OFF"===t.baseState)for(const t of this.#te.values())t._setVisible(s,!1);for(const e of t.on)this.#te.get(e)._setVisible(s,!0);for(const e of t.off)this.#te.get(e)._setVisible(s,!1);this.#ee=this.getHash()}}#ie(t){const e=t.length;if(e<2)return!0;const n=t[0];for(let r=1;r1&&void 0!==arguments[1])||arguments[1];if(this.#te.has(t)){this.#te.get(t)._setVisible(s,!!e);this.#Zt=null}else(0,i.warn)(`Optional content group not found: ${t}`)}get hasInitialVisibility(){return this.getHash()===this.#ee}getOrder(){return this.#te.size?this.#ne?this.#ne.slice():[...this.#te.keys()]:null}getGroups(){return this.#te.size>0?(0,i.objectFromMap)(this.#te):null}getGroup(t){return this.#te.get(t)||null}getHash(){if(null!==this.#Zt)return this.#Zt;const t=new r.MurmurHash3_64;for(const[e,n]of this.#te)t.update(`${e}:${n.visible}`);return this.#Zt=t.hexdigest()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFDataTransportStream=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(167);e.PDFDataTransportStream=class PDFDataTransportStream{constructor(t,e){let{length:n,initialData:r,progressiveDone:s=!1,contentDispositionFilename:a=null,disableRange:o=!1,disableStream:l=!1}=t;(0,i.assert)(e,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');this._queuedChunks=[];this._progressiveDone=s;this._contentDispositionFilename=a;if(r?.length>0){const t=r instanceof Uint8Array&&r.byteLength===r.buffer.byteLength?r.buffer:new Uint8Array(r).buffer;this._queuedChunks.push(t)}this._pdfDataRangeTransport=e;this._isStreamingSupported=!l;this._isRangeSupported=!o;this._contentLength=n;this._fullRequestReader=null;this._rangeReaders=[];this._pdfDataRangeTransport.addRangeListener(((t,e)=>{this._onReceiveData({begin:t,chunk:e})}));this._pdfDataRangeTransport.addProgressListener(((t,e)=>{this._onProgress({loaded:t,total:e})}));this._pdfDataRangeTransport.addProgressiveReadListener((t=>{this._onReceiveData({chunk:t})}));this._pdfDataRangeTransport.addProgressiveDoneListener((()=>{this._onProgressiveDone()}));this._pdfDataRangeTransport.transportReady()}_onReceiveData(t){let{begin:e,chunk:n}=t;const r=n instanceof Uint8Array&&n.byteLength===n.buffer.byteLength?n.buffer:new Uint8Array(n).buffer;if(void 0===e)this._fullRequestReader?this._fullRequestReader._enqueue(r):this._queuedChunks.push(r);else{const t=this._rangeReaders.some((function(t){if(t._begin!==e)return!1;t._enqueue(r);return!0}));(0,i.assert)(t,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(t){void 0===t.total?this._rangeReaders[0]?.onProgress?.({loaded:t.loaded}):this._fullRequestReader?.onProgress?.({loaded:t.loaded,total:t.total})}_onProgressiveDone(){this._fullRequestReader?.progressiveDone();this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;this._queuedChunks=null;return new PDFDataTransportStreamReader(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new PDFDataTransportStreamRangeReader(this,t,e);this._pdfDataRangeTransport.requestDataRange(t,e);this._rangeReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeReaders.slice(0))e.cancel(t);this._pdfDataRangeTransport.abort()}};class PDFDataTransportStreamReader{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;this._stream=t;this._done=n||!1;this._filename=(0,r.isPdfFile)(i)?i:null;this._queuedChunks=e||[];this._loaded=0;for(const t of this._queuedChunks)this._loaded+=t.byteLength;this._requests=[];this._headersReady=Promise.resolve();t._fullRequestReader=this;this.onProgress=null}_enqueue(t){if(!this._done){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._queuedChunks.push(t);this._loaded+=t.byteLength}}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0){return{value:this._queuedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class PDFDataTransportStreamRangeReader{constructor(t,e,n){this._stream=t;this._begin=e;this._end=n;this._queuedChunk=null;this._requests=[];this._done=!1;this.onProgress=null}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0;this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._stream._removeRangeReader(this)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFFetchStream=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(181);function createFetchOptions(t,e,n){return{method:"GET",headers:t,signal:n.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"}}function createHeaders(t){const e=new Headers;for(const n in t){const i=t[n];void 0!==i&&e.append(n,i)}return e}function getArrayBuffer(t){if(t instanceof Uint8Array)return t.buffer;if(t instanceof ArrayBuffer)return t;(0,i.warn)(`getArrayBuffer - unexpected data format: ${t}`);return new Uint8Array(t).buffer}e.PDFFetchStream=class PDFFetchStream{constructor(t){this.source=t;this.isHttp=/^https?:/i.test(t.url);this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once.");this._fullRequestReader=new PDFFetchStreamReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new PDFFetchStreamRangeReader(this,t,e);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class PDFFetchStreamReader{constructor(t){this._stream=t;this._reader=null;this._loaded=0;this._filename=null;const e=t.source;this._withCredentials=e.withCredentials||!1;this._contentLength=e.length;this._headersCapability=new i.PromiseCapability;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._abortController=new AbortController;this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._headers=createHeaders(this._stream.httpHeaders);const n=e.url;fetch(n,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,r.validateResponseStatus)(t.status))throw(0,r.createResponseStatusError)(t.status,n);this._reader=t.body.getReader();this._headersCapability.resolve();const getResponseHeader=e=>t.headers.get(e),{allowRangeRequests:e,suggestedLength:s}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=e;this._contentLength=s||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader);!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new i.AbortException("Streaming is disabled."))})).catch(this._headersCapability.reject);this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}class PDFFetchStreamRangeReader{constructor(t,e,n){this._stream=t;this._reader=null;this._loaded=0;const s=t.source;this._withCredentials=s.withCredentials||!1;this._readCapability=new i.PromiseCapability;this._isStreamingSupported=!s.disableStream;this._abortController=new AbortController;this._headers=createHeaders(this._stream.httpHeaders);this._headers.append("Range",`bytes=${e}-${n-1}`);const a=s.url;fetch(a,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,r.validateResponseStatus)(t.status))throw(0,r.createResponseStatusError)(t.status,a);this._readCapability.resolve();this._reader=t.body.getReader()})).catch(this._readCapability.reject);this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.createResponseStatusError=function createResponseStatusError(t,e){if(404===t||0===t&&e.startsWith("file:"))return new i.MissingPDFException('Missing PDF "'+e+'".');return new i.UnexpectedResponseException(`Unexpected server response (${t}) while retrieving PDF "${e}".`,t)};e.extractFilenameFromHeader=function extractFilenameFromHeader(t){const e=t("Content-Disposition");if(e){let t=(0,r.getFilenameFromContentDispositionHeader)(e);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if((0,s.isPdfFile)(t))return t}return null};e.validateRangeRequestCapabilities=function validateRangeRequestCapabilities(t){let{getResponseHeader:e,isHttp:n,rangeChunkSize:i,disableRange:r}=t;const s={allowRangeRequests:!1,suggestedLength:void 0},a=parseInt(e("Content-Length"),10);if(!Number.isInteger(a))return s;s.suggestedLength=a;if(a<=2*i)return s;if(r||!n)return s;if("bytes"!==e("Accept-Ranges"))return s;if("identity"!==(e("Content-Encoding")||"identity"))return s;s.allowRangeRequests=!0;return s};e.validateResponseStatus=function validateResponseStatus(t){return 200===t||206===t};var i=n(1),r=n(182),s=n(167)},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.getFilenameFromContentDispositionHeader=function getFilenameFromContentDispositionHeader(t){let e=!0,n=toParamRegExp("filename\\*","i").exec(t);if(n){n=n[1];let t=rfc2616unquote(n);t=unescape(t);t=rfc5987decode(t);t=rfc2047decode(t);return fixupEncoding(t)}n=function rfc2231getparam(t){const e=[];let n;const i=toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(n=i.exec(t));){let[,t,i,r]=n;t=parseInt(t,10);if(t in e){if(0===t)break}else e[t]=[i,r]}const r=[];for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFNetworkStream=void 0;n(89);var i=n(1),r=n(181);class NetworkManager{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.url=t;this.isHttp=/^https?:/i.test(t);this.httpHeaders=this.isHttp&&e.httpHeaders||Object.create(null);this.withCredentials=e.withCredentials||!1;this.currXhrId=0;this.pendingRequests=Object.create(null)}requestRange(t,e,n){const i={begin:t,end:e};for(const t in n)i[t]=n[t];return this.request(i)}requestFull(t){return this.request(t)}request(t){const e=new XMLHttpRequest,n=this.currXhrId++,i=this.pendingRequests[n]={xhr:e};e.open("GET",this.url);e.withCredentials=this.withCredentials;for(const t in this.httpHeaders){const n=this.httpHeaders[t];void 0!==n&&e.setRequestHeader(t,n)}if(this.isHttp&&"begin"in t&&"end"in t){e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`);i.expectedStatus=206}else i.expectedStatus=200;e.responseType="arraybuffer";t.onError&&(e.onerror=function(n){t.onError(e.status)});e.onreadystatechange=this.onStateChange.bind(this,n);e.onprogress=this.onProgress.bind(this,n);i.onHeadersReceived=t.onHeadersReceived;i.onDone=t.onDone;i.onError=t.onError;i.onProgress=t.onProgress;e.send(null);return n}onProgress(t,e){const n=this.pendingRequests[t];n&&n.onProgress?.(e)}onStateChange(t,e){const n=this.pendingRequests[t];if(!n)return;const r=n.xhr;if(r.readyState>=2&&n.onHeadersReceived){n.onHeadersReceived();delete n.onHeadersReceived}if(4!==r.readyState)return;if(!(t in this.pendingRequests))return;delete this.pendingRequests[t];if(0===r.status&&this.isHttp){n.onError?.(r.status);return}const s=r.status||200;if(!(200===s&&206===n.expectedStatus)&&s!==n.expectedStatus){n.onError?.(r.status);return}const a=function getArrayBuffer(t){const e=t.response;return"string"!=typeof e?e:(0,i.stringToBytes)(e).buffer}(r);if(206===s){const t=r.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(t);n.onDone({begin:parseInt(e[1],10),chunk:a})}else a?n.onDone({begin:0,chunk:a}):n.onError?.(r.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t];e.abort()}}e.PDFNetworkStream=class PDFNetworkStream{constructor(t){this._source=t;this._manager=new NetworkManager(t.url,{httpHeaders:t.httpHeaders,withCredentials:t.withCredentials});this._rangeChunkSize=t.rangeChunkSize;this._fullRequestReader=null;this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once.");this._fullRequestReader=new PDFNetworkStreamFullRequestReader(this._manager,this._source);return this._fullRequestReader}getRangeReader(t,e){const n=new PDFNetworkStreamRangeRequestReader(this._manager,t,e);n.onClosed=this._onRangeRequestReaderClosed.bind(this);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class PDFNetworkStreamFullRequestReader{constructor(t,e){this._manager=t;const n={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=e.url;this._fullRequestId=t.requestFull(n);this._headersReceivedCapability=new i.PromiseCapability;this._disableRange=e.disableRange||!1;this._contentLength=e.length;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!1;this._isRangeSupported=!1;this._cachedChunks=[];this._requests=[];this._done=!1;this._storedError=void 0;this._filename=null;this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t),getResponseHeader=t=>e.getResponseHeader(t),{allowRangeRequests:n,suggestedLength:i}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});n&&(this._isRangeSupported=!0);this._contentLength=i||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader);this._isRangeSupported&&this._manager.abortRequest(t);this._headersReceivedCapability.resolve()}_onDone(t){if(t)if(this._requests.length>0){this._requests.shift().resolve({value:t.chunk,done:!1})}else this._cachedChunks.push(t.chunk);this._done=!0;if(!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=(0,r.createResponseStatusError)(t,this._url);this._headersReceivedCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._cachedChunks.length=0}_onProgress(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}async read(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0){return{value:this._cachedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;this._headersReceivedCapability.reject(t);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId);this._fullRequestReader=null}}class PDFNetworkStreamRangeRequestReader{constructor(t,e,n){this._manager=t;const i={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=t.url;this._requestId=t.requestRange(e,n,i);this._requests=[];this._queuedChunk=null;this._done=!1;this._storedError=void 0;this.onProgress=null;this.onClosed=null}_close(){this.onClosed?.(this)}_onDone(t){const e=t.chunk;if(this._requests.length>0){this._requests.shift().resolve({value:e,done:!1})}else this._queuedChunk=e;this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._close()}_onError(t){this._storedError=(0,r.createResponseStatusError)(t,this._url);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._queuedChunk=null}_onProgress(t){this.isStreamingSupported||this.onProgress?.({loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId);this._close()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFNodeStream=void 0;n(89);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);var i=n(1),r=n(181);const s=/^file:\/\/\/[a-zA-Z]:\//;e.PDFNodeStream=class PDFNodeStream{constructor(t){this.source=t;this.url=function parseUrl(t){const e=require("url"),n=e.parse(t);if("file:"===n.protocol||n.host)return n;if(/^[a-z]:[/\\]/i.test(t))return e.parse(`file:///${t}`);n.host||(n.protocol="file:");return n}(t.url);this.isHttp="http:"===this.url.protocol||"https:"===this.url.protocol;this.isFsUrl="file:"===this.url.protocol;this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once.");this._fullRequestReader=this.isFsUrl?new PDFNodeStreamFsFullReader(this):new PDFNodeStreamFullReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=this.isFsUrl?new PDFNodeStreamFsRangeReader(this,t,e):new PDFNodeStreamRangeReader(this,t,e);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class BaseFullReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;const e=t.source;this._contentLength=e.length;this._loaded=0;this._filename=null;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._readableStream=null;this._readCapability=new i.PromiseCapability;this._headersCapability=new i.PromiseCapability}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new i.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));!this._isStreamingSupported&&this._isRangeSupported&&this._error(new i.AbortException("streaming is disabled"));this._storedError&&this._readableStream.destroy(this._storedError)}}class BaseRangeReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;this._loaded=0;this._readableStream=null;this._readCapability=new i.PromiseCapability;const e=t.source;this._isStreamingSupported=!e.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new i.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));this._storedError&&this._readableStream.destroy(this._storedError)}}function createRequestOptions(t,e){return{protocol:t.protocol,auth:t.auth,host:t.hostname,port:t.port,path:t.path,method:"GET",headers:e}}class PDFNodeStreamFullReader extends BaseFullReader{constructor(t){super(t);const handleResponse=e=>{if(404===e.statusCode){const t=new i.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t;this._headersCapability.reject(t);return}this._headersCapability.resolve();this._setReadableStream(e);const getResponseHeader=t=>this._readableStream.headers[t.toLowerCase()],{allowRangeRequests:n,suggestedLength:s}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=n;this._contentLength=s||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader)};this._request=null;if("http:"===this._url.protocol){const e=require("http");this._request=e.request(createRequestOptions(this._url,t.httpHeaders),handleResponse)}else{const e=require("https");this._request=e.request(createRequestOptions(this._url,t.httpHeaders),handleResponse)}this._request.on("error",(t=>{this._storedError=t;this._headersCapability.reject(t)}));this._request.end()}}class PDFNodeStreamRangeReader extends BaseRangeReader{constructor(t,e,n){super(t);this._httpHeaders={};for(const e in t.httpHeaders){const n=t.httpHeaders[e];void 0!==n&&(this._httpHeaders[e]=n)}this._httpHeaders.Range=`bytes=${e}-${n-1}`;const handleResponse=t=>{if(404!==t.statusCode)this._setReadableStream(t);else{const t=new i.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t}};this._request=null;if("http:"===this._url.protocol){const t=require("http");this._request=t.request(createRequestOptions(this._url,this._httpHeaders),handleResponse)}else{const t=require("https");this._request=t.request(createRequestOptions(this._url,this._httpHeaders),handleResponse)}this._request.on("error",(t=>{this._storedError=t}));this._request.end()}}class PDFNodeStreamFsFullReader extends BaseFullReader{constructor(t){super(t);let e=decodeURIComponent(this._url.path);s.test(this._url.href)&&(e=e.replace(/^\//,""));const n=require("fs");n.lstat(e,((t,r)=>{if(t){"ENOENT"===t.code&&(t=new i.MissingPDFException(`Missing PDF "${e}".`));this._storedError=t;this._headersCapability.reject(t)}else{this._contentLength=r.size;this._setReadableStream(n.createReadStream(e));this._headersCapability.resolve()}}))}}class PDFNodeStreamFsRangeReader extends BaseRangeReader{constructor(t,e,n){super(t);let i=decodeURIComponent(this._url.path);s.test(this._url.href)&&(i=i.replace(/^\//,""));const r=require("fs");this._setReadableStream(r.createReadStream(i,{start:e,end:n-1}))}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SVGGraphics=void 0;n(84);n(86);n(87);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(2);n(89);n(186);var i=n(167),r=n(1);const s="normal",a="normal",o="#000000",l=["butt","round","square"],c=["miter","round","bevel"],createObjectURL=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(URL.createObjectURL&&"undefined"!=typeof Blob&&!n)return URL.createObjectURL(new Blob([t],{type:e}));const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";let r=`data:${e};base64,`;for(let e=0,n=t.length;e>2]+i[(3&s)<<4|a>>4]+i[e+1>6:64]+i[e+2>1&2147483647:n>>1&2147483647;e[t]=n}function writePngChunk(t,n,i,r){let s=r;const a=n.length;i[s]=a>>24&255;i[s+1]=a>>16&255;i[s+2]=a>>8&255;i[s+3]=255&a;s+=4;i[s]=255&t.charCodeAt(0);i[s+1]=255&t.charCodeAt(1);i[s+2]=255&t.charCodeAt(2);i[s+3]=255&t.charCodeAt(3);s+=4;i.set(n,s);s+=n.length;const o=function crc32(t,n,i){let r=-1;for(let s=n;s>>8^e[n]}return-1^r}(i,r+4,s);i[s]=o>>24&255;i[s+1]=o>>16&255;i[s+2]=o>>8&255;i[s+3]=255&o}function deflateSyncUncompressed(t){let e=t.length;const n=65535,i=Math.ceil(e/n),r=new Uint8Array(2+e+5*i+4);let s=0;r[s++]=120;r[s++]=156;let a=0;for(;e>n;){r[s++]=0;r[s++]=255;r[s++]=255;r[s++]=0;r[s++]=0;r.set(t.subarray(a,a+n),s);s+=n;a+=n;e-=n}r[s++]=1;r[s++]=255&e;r[s++]=e>>8&255;r[s++]=255&~e;r[s++]=(65535&~e)>>8&255;r.set(t.subarray(a),s);s+=t.length-a;const o=function adler32(t,e,n){let i=1,r=0;for(let s=e;s>24&255;r[s++]=o>>16&255;r[s++]=o>>8&255;r[s++]=255&o;return r}function encode(e,n,i,s){const a=e.width,o=e.height;let l,c,h;const d=e.data;switch(n){case r.ImageKind.GRAYSCALE_1BPP:c=0;l=1;h=a+7>>3;break;case r.ImageKind.RGB_24BPP:c=2;l=8;h=3*a;break;case r.ImageKind.RGBA_32BPP:c=6;l=8;h=4*a;break;default:throw new Error("invalid format")}const u=new Uint8Array((1+h)*o);let p=0,f=0;for(let t=0;t>24&255,a>>16&255,a>>8&255,255&a,o>>24&255,o>>16&255,o>>8&255,255&o,l,c,0,0,0]),m=function deflateSync(t){if(!r.isNodeJS)return deflateSyncUncompressed(t);try{const e=parseInt(process.versions.node)>=8?t:Buffer.from(t),n=require("zlib").deflateSync(e,{level:9});return n instanceof Uint8Array?n:new Uint8Array(n)}catch(t){(0,r.warn)("Not compressing PNG because zlib.deflateSync is unavailable: "+t)}return deflateSyncUncompressed(t)}(u),b=t.length+36+g.length+m.length,v=new Uint8Array(b);let y=0;v.set(t,y);y+=t.length;writePngChunk("IHDR",g,v,y);y+=12+g.length;writePngChunk("IDATA",m,v,y);y+=12+m.length;writePngChunk("IEND",new Uint8Array(0),v,y);return createObjectURL(v,"image/png",i)}return function convertImgDataToPng(t,e,n){return encode(t,void 0===t.kind?r.ImageKind.GRAYSCALE_1BPP:t.kind,e,n)}}();class SVGExtraState{constructor(){this.fontSizeScale=1;this.fontWeight=a;this.fontSize=0;this.textMatrix=r.IDENTITY_MATRIX;this.fontMatrix=r.FONT_IDENTITY_MATRIX;this.leading=0;this.textRenderingMode=r.TextRenderingMode.FILL;this.textMatrixScale=1;this.x=0;this.y=0;this.lineX=0;this.lineY=0;this.charSpacing=0;this.wordSpacing=0;this.textHScale=1;this.textRise=0;this.fillColor=o;this.strokeColor="#000000";this.fillAlpha=1;this.strokeAlpha=1;this.lineWidth=1;this.lineJoin="";this.lineCap="";this.miterLimit=0;this.dashArray=[];this.dashPhase=0;this.dependencies=[];this.activeClipUrl=null;this.clipGroup=null;this.maskId=""}clone(){return Object.create(this)}setCurrentPoint(t,e){this.x=t;this.y=e}}function pf(t){if(Number.isInteger(t))return t.toString();const e=t.toFixed(10);let n=e.length-1;if("0"!==e[n])return e;do{n--}while("0"===e[n]);return e.substring(0,"."===e[n]?n:n+1)}function pm(t){if(0===t[4]&&0===t[5]){if(0===t[1]&&0===t[2])return 1===t[0]&&1===t[3]?"":`scale(${pf(t[0])} ${pf(t[3])})`;if(t[0]===t[3]&&t[1]===-t[2]){return`rotate(${pf(180*Math.acos(t[0])/Math.PI)})`}}else if(1===t[0]&&0===t[1]&&0===t[2]&&1===t[3])return`translate(${pf(t[4])} ${pf(t[5])})`;return`matrix(${pf(t[0])} ${pf(t[1])} ${pf(t[2])} ${pf(t[3])} ${pf(t[4])} ${pf(t[5])})`}let d=0,u=0,p=0;e.SVGGraphics=class SVGGraphics{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,i.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future.");this.svgFactory=new i.DOMSVGFactory;this.current=new SVGExtraState;this.transformMatrix=r.IDENTITY_MATRIX;this.transformStack=[];this.extraStack=[];this.commonObjs=t;this.objs=e;this.pendingClip=null;this.pendingEOFill=!1;this.embedFonts=!1;this.embeddedFonts=Object.create(null);this.cssStyle=null;this.forceDataSchema=!!n;this._operatorIdMapping=[];for(const t in r.OPS)this._operatorIdMapping[r.OPS[t]]=t}getObject(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}save(){this.transformStack.push(this.transformMatrix);const t=this.current;this.extraStack.push(t);this.current=t.clone()}restore(){this.transformMatrix=this.transformStack.pop();this.current=this.extraStack.pop();this.pendingClip=null;this.tgrp=null}group(t){this.save();this.executeOpTree(t);this.restore()}loadDependencies(t){const e=t.fnArray,n=t.argsArray;for(let t=0,i=e.length;t{t.get(e,n)}));this.current.dependencies.push(n)}return Promise.all(this.current.dependencies)}transform(t,e,n,i,s,a){const o=[t,e,n,i,s,a];this.transformMatrix=r.Util.transform(this.transformMatrix,o);this.tgrp=null}getSVG(t,e){this.viewport=e;const n=this._initialize(e);return this.loadDependencies(t).then((()=>{this.transformMatrix=r.IDENTITY_MATRIX;this.executeOpTree(this.convertOpList(t));return n}))}convertOpList(t){const e=this._operatorIdMapping,n=t.argsArray,i=t.fnArray,r=[];for(let t=0,s=i.length;t0&&(this.current.lineWidth=t)}setLineCap(t){this.current.lineCap=l[t]}setLineJoin(t){this.current.lineJoin=c[t]}setMiterLimit(t){this.current.miterLimit=t}setStrokeAlpha(t){this.current.strokeAlpha=t}setStrokeRGBColor(t,e,n){this.current.strokeColor=r.Util.makeHexColor(t,e,n)}setFillAlpha(t){this.current.fillAlpha=t}setFillRGBColor(t,e,n){this.current.fillColor=r.Util.makeHexColor(t,e,n);this.current.tspan=this.svgFactory.createElement("svg:tspan");this.current.xcoords=[];this.current.ycoords=[]}setStrokeColorN(t){this.current.strokeColor=this._makeColorN_Pattern(t)}setFillColorN(t){this.current.fillColor=this._makeColorN_Pattern(t)}shadingFill(t){const{width:e,height:n}=this.viewport,i=r.Util.inverseTransform(this.transformMatrix),[s,a,o,l]=r.Util.getAxialAlignedBoundingBox([0,0,e,n],i),c=this.svgFactory.createElement("svg:rect");c.setAttributeNS(null,"x",s);c.setAttributeNS(null,"y",a);c.setAttributeNS(null,"width",o-s);c.setAttributeNS(null,"height",l-a);c.setAttributeNS(null,"fill",this._makeShadingPattern(t));this.current.fillAlpha<1&&c.setAttributeNS(null,"fill-opacity",this.current.fillAlpha);this._ensureTransformGroup().append(c)}_makeColorN_Pattern(t){return"TilingPattern"===t[0]?this._makeTilingPattern(t):this._makeShadingPattern(t)}_makeTilingPattern(t){const e=t[1],n=t[2],i=t[3]||r.IDENTITY_MATRIX,[s,a,o,l]=t[4],c=t[5],h=t[6],d=t[7],u="shading"+p++,[f,g,m,b]=r.Util.normalizeRect([...r.Util.applyTransform([s,a],i),...r.Util.applyTransform([o,l],i)]),[v,y]=r.Util.singularValueDecompose2dScale(i),A=c*v,_=h*y,S=this.svgFactory.createElement("svg:pattern");S.setAttributeNS(null,"id",u);S.setAttributeNS(null,"patternUnits","userSpaceOnUse");S.setAttributeNS(null,"width",A);S.setAttributeNS(null,"height",_);S.setAttributeNS(null,"x",`${f}`);S.setAttributeNS(null,"y",`${g}`);const E=this.svg,x=this.transformMatrix,w=this.current.fillColor,C=this.current.strokeColor,T=this.svgFactory.create(m-f,b-g);this.svg=T;this.transformMatrix=i;if(2===d){const t=r.Util.makeHexColor(...e);this.current.fillColor=t;this.current.strokeColor=t}this.executeOpTree(this.convertOpList(n));this.svg=E;this.transformMatrix=x;this.current.fillColor=w;this.current.strokeColor=C;S.append(T.childNodes[0]);this.defs.append(S);return`url(#${u})`}_makeShadingPattern(t){"string"==typeof t&&(t=this.objs.get(t));switch(t[0]){case"RadialAxial":const e="shading"+p++,n=t[3];let i;switch(t[1]){case"axial":const n=t[4],r=t[5];i=this.svgFactory.createElement("svg:linearGradient");i.setAttributeNS(null,"id",e);i.setAttributeNS(null,"gradientUnits","userSpaceOnUse");i.setAttributeNS(null,"x1",n[0]);i.setAttributeNS(null,"y1",n[1]);i.setAttributeNS(null,"x2",r[0]);i.setAttributeNS(null,"y2",r[1]);break;case"radial":const s=t[4],a=t[5],o=t[6],l=t[7];i=this.svgFactory.createElement("svg:radialGradient");i.setAttributeNS(null,"id",e);i.setAttributeNS(null,"gradientUnits","userSpaceOnUse");i.setAttributeNS(null,"cx",a[0]);i.setAttributeNS(null,"cy",a[1]);i.setAttributeNS(null,"r",l);i.setAttributeNS(null,"fx",s[0]);i.setAttributeNS(null,"fy",s[1]);i.setAttributeNS(null,"fr",o);break;default:throw new Error(`Unknown RadialAxial type: ${t[1]}`)}for(const t of n){const e=this.svgFactory.createElement("svg:stop");e.setAttributeNS(null,"offset",t[0]);e.setAttributeNS(null,"stop-color",t[1]);i.append(e)}this.defs.append(i);return`url(#${e})`;case"Mesh":(0,r.warn)("Unimplemented pattern Mesh");return null;case"Dummy":return"hotpink";default:throw new Error(`Unknown IR type: ${t[0]}`)}}setDash(t,e){this.current.dashArray=t;this.current.dashPhase=e}constructPath(t,e){const n=this.current;let i=n.x,s=n.y,a=[],o=0;for(const n of t)switch(0|n){case r.OPS.rectangle:i=e[o++];s=e[o++];const t=i+e[o++],n=s+e[o++];a.push("M",pf(i),pf(s),"L",pf(t),pf(s),"L",pf(t),pf(n),"L",pf(i),pf(n),"Z");break;case r.OPS.moveTo:i=e[o++];s=e[o++];a.push("M",pf(i),pf(s));break;case r.OPS.lineTo:i=e[o++];s=e[o++];a.push("L",pf(i),pf(s));break;case r.OPS.curveTo:i=e[o+4];s=e[o+5];a.push("C",pf(e[o]),pf(e[o+1]),pf(e[o+2]),pf(e[o+3]),pf(i),pf(s));o+=6;break;case r.OPS.curveTo2:a.push("C",pf(i),pf(s),pf(e[o]),pf(e[o+1]),pf(e[o+2]),pf(e[o+3]));i=e[o+2];s=e[o+3];o+=4;break;case r.OPS.curveTo3:i=e[o+2];s=e[o+3];a.push("C",pf(e[o]),pf(e[o+1]),pf(i),pf(s),pf(i),pf(s));o+=4;break;case r.OPS.closePath:a.push("Z")}a=a.join(" ");if(n.path&&t.length>0&&t[0]!==r.OPS.rectangle&&t[0]!==r.OPS.moveTo)a=n.path.getAttributeNS(null,"d")+a;else{n.path=this.svgFactory.createElement("svg:path");this._ensureTransformGroup().append(n.path)}n.path.setAttributeNS(null,"d",a);n.path.setAttributeNS(null,"fill","none");n.element=n.path;n.setCurrentPoint(i,s)}endPath(){const t=this.current;t.path=null;if(!this.pendingClip)return;if(!t.element){this.pendingClip=null;return}const e="clippath"+d++,n=this.svgFactory.createElement("svg:clipPath");n.setAttributeNS(null,"id",e);n.setAttributeNS(null,"transform",pm(this.transformMatrix));const i=t.element.cloneNode(!0);"evenodd"===this.pendingClip?i.setAttributeNS(null,"clip-rule","evenodd"):i.setAttributeNS(null,"clip-rule","nonzero");this.pendingClip=null;n.append(i);this.defs.append(n);if(t.activeClipUrl){t.clipGroup=null;for(const t of this.extraStack)t.clipGroup=null;n.setAttributeNS(null,"clip-path",t.activeClipUrl)}t.activeClipUrl=`url(#${e})`;this.tgrp=null}clip(t){this.pendingClip=t}closePath(){const t=this.current;if(t.path){const e=`${t.path.getAttributeNS(null,"d")}Z`;t.path.setAttributeNS(null,"d",e)}}setLeading(t){this.current.leading=-t}setTextRise(t){this.current.textRise=t}setTextRenderingMode(t){this.current.textRenderingMode=t}setHScale(t){this.current.textHScale=t/100}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n);break;case"CA":this.setStrokeAlpha(n);break;case"ca":this.setFillAlpha(n);break;default:(0,r.warn)(`Unimplemented graphic state operator ${e}`)}}fill(){const t=this.current;if(t.element){t.element.setAttributeNS(null,"fill",t.fillColor);t.element.setAttributeNS(null,"fill-opacity",t.fillAlpha);this.endPath()}}stroke(){const t=this.current;if(t.element){this._setStrokeAttributes(t.element);t.element.setAttributeNS(null,"fill","none");this.endPath()}}_setStrokeAttributes(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.current;let i=n.dashArray;1!==e&&i.length>0&&(i=i.map((function(t){return e*t})));t.setAttributeNS(null,"stroke",n.strokeColor);t.setAttributeNS(null,"stroke-opacity",n.strokeAlpha);t.setAttributeNS(null,"stroke-miterlimit",pf(n.miterLimit));t.setAttributeNS(null,"stroke-linecap",n.lineCap);t.setAttributeNS(null,"stroke-linejoin",n.lineJoin);t.setAttributeNS(null,"stroke-width",pf(e*n.lineWidth)+"px");t.setAttributeNS(null,"stroke-dasharray",i.map(pf).join(" "));t.setAttributeNS(null,"stroke-dashoffset",pf(e*n.dashPhase)+"px")}eoFill(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd");this.fill()}fillStroke(){this.stroke();this.fill()}eoFillStroke(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd");this.fillStroke()}closeStroke(){this.closePath();this.stroke()}closeFillStroke(){this.closePath();this.fillStroke()}closeEOFillStroke(){this.closePath();this.eoFillStroke()}paintSolidColorImageMask(){const t=this.svgFactory.createElement("svg:rect");t.setAttributeNS(null,"x","0");t.setAttributeNS(null,"y","0");t.setAttributeNS(null,"width","1px");t.setAttributeNS(null,"height","1px");t.setAttributeNS(null,"fill",this.current.fillColor);this._ensureTransformGroup().append(t)}paintImageXObject(t){const e=this.getObject(t);e?this.paintInlineImageXObject(e):(0,r.warn)(`Dependent image with object ID ${t} is not ready yet`)}paintInlineImageXObject(t,e){const n=t.width,i=t.height,r=h(t,this.forceDataSchema,!!e),s=this.svgFactory.createElement("svg:rect");s.setAttributeNS(null,"x","0");s.setAttributeNS(null,"y","0");s.setAttributeNS(null,"width",pf(n));s.setAttributeNS(null,"height",pf(i));this.current.element=s;this.clip("nonzero");const a=this.svgFactory.createElement("svg:image");a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r);a.setAttributeNS(null,"x","0");a.setAttributeNS(null,"y",pf(-i));a.setAttributeNS(null,"width",pf(n)+"px");a.setAttributeNS(null,"height",pf(i)+"px");a.setAttributeNS(null,"transform",`scale(${pf(1/n)} ${pf(-1/i)})`);e?e.append(a):this._ensureTransformGroup().append(a)}paintImageMaskXObject(t){const e=this.getObject(t.data,t);if(e.bitmap){(0,r.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the `isOffscreenCanvasSupported` API parameter is disabled.");return}const n=this.current,i=e.width,s=e.height,a=n.fillColor;n.maskId="mask"+u++;const o=this.svgFactory.createElement("svg:mask");o.setAttributeNS(null,"id",n.maskId);const l=this.svgFactory.createElement("svg:rect");l.setAttributeNS(null,"x","0");l.setAttributeNS(null,"y","0");l.setAttributeNS(null,"width",pf(i));l.setAttributeNS(null,"height",pf(s));l.setAttributeNS(null,"fill",a);l.setAttributeNS(null,"mask",`url(#${n.maskId})`);this.defs.append(o);this._ensureTransformGroup().append(l);this.paintInlineImageXObject(e,o)}paintFormXObjectBegin(t,e){Array.isArray(t)&&6===t.length&&this.transform(t[0],t[1],t[2],t[3],t[4],t[5]);if(e){const t=e[2]-e[0],n=e[3]-e[1],i=this.svgFactory.createElement("svg:rect");i.setAttributeNS(null,"x",e[0]);i.setAttributeNS(null,"y",e[1]);i.setAttributeNS(null,"width",pf(t));i.setAttributeNS(null,"height",pf(n));this.current.element=i;this.clip("nonzero");this.endPath()}}paintFormXObjectEnd(){}_initialize(t){const e=this.svgFactory.create(t.width,t.height),n=this.svgFactory.createElement("svg:defs");e.append(n);this.defs=n;const i=this.svgFactory.createElement("svg:g");i.setAttributeNS(null,"transform",pm(t.transform));e.append(i);this.svg=i;return e}_ensureClipGroup(){if(!this.current.clipGroup){const t=this.svgFactory.createElement("svg:g");t.setAttributeNS(null,"clip-path",this.current.activeClipUrl);this.svg.append(t);this.current.clipGroup=t}return this.current.clipGroup}_ensureTransformGroup(){if(!this.tgrp){this.tgrp=this.svgFactory.createElement("svg:g");this.tgrp.setAttributeNS(null,"transform",pm(this.transformMatrix));this.current.activeClipUrl?this._ensureClipGroup().append(this.tgrp):this.svg.append(this.tgrp)}return this.tgrp}}},(t,e,n)=>{"use strict";var i=n(3),r=n(187),s=n(192);i({target:"Array",proto:!0},{group:function group(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}});s("group")},(t,e,n)=>{var i=n(99),r=n(14),s=n(13),a=n(40),o=n(18),l=n(64),c=n(188),h=n(108),d=Array,u=r([].push);t.exports=function(t,e,n,r){for(var p,f,g,m=a(t),b=s(m),v=i(e,n),y=c(null),A=l(b),_=0;A>_;_++){g=b[_];(f=o(v(g,_,m)))in y?u(y[f],g):y[f]=[g]}if(r&&(p=r(m))!==d)for(f in y)y[f]=h(p,y[f]);return y}},(t,e,n)=>{var i,r=n(47),s=n(189),a=n(66),o=n(55),l=n(191),c=n(43),h=n(54),d="prototype",u="script",p=h("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(t){return"<"+u+">"+t+""},NullProtoObjectViaActiveX=function(t){t.write(scriptTag(""));t.close();var e=t.parentWindow.Object;t=null;return e},NullProtoObject=function(){try{i=new ActiveXObject("htmlfile")}catch(t){}NullProtoObject="undefined"!=typeof document?document.domain&&i?NullProtoObjectViaActiveX(i):function(){var t,e=c("iframe"),n="java"+u+":";e.style.display="none";l.appendChild(e);e.src=String(n);(t=e.contentWindow.document).open();t.write(scriptTag("document.F=Object"));t.close();return t.F}():NullProtoObjectViaActiveX(i);for(var t=a.length;t--;)delete NullProtoObject[d][a[t]];return NullProtoObject()};o[p]=!0;t.exports=Object.create||function create(t,e){var n;if(null!==t){EmptyConstructor[d]=r(t);n=new EmptyConstructor;EmptyConstructor[d]=null;n[p]=t}else n=NullProtoObject();return void 0===e?n:s.f(n,e)}},(t,e,n)=>{var i=n(6),r=n(46),s=n(45),a=n(47),o=n(12),l=n(190);e.f=i&&!r?Object.defineProperties:function defineProperties(t,e){a(t);for(var n,i=o(e),r=l(e),c=r.length,h=0;c>h;)s.f(t,n=r[h++],i[n]);return t}},(t,e,n)=>{var i=n(59),r=n(66);t.exports=Object.keys||function keys(t){return i(t,r)}},(t,e,n)=>{var i=n(24);t.exports=i("document","documentElement")},(t,e,n)=>{var i=n(34),r=n(188),s=n(45).f,a=i("unscopables"),o=Array.prototype;null==o[a]&&s(o,a,{configurable:!0,value:r(null)});t.exports=function(t){o[a][t]=!0}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.XfaText=void 0;n(89);class XfaText{static textContent(t){const e=[],n={items:e,styles:Object.create(null)};!function walk(t){if(!t)return;let n=null;const i=t.name;if("#text"===i)n=t.value;else{if(!XfaText.shouldBuildText(i))return;t?.attributes?.textContent?n=t.attributes.textContent:t.value&&(n=t.value)}null!==n&&e.push({str:n});if(t.children)for(const e of t.children)walk(e)}(t);return n}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}e.XfaText=XfaText},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.TextLayerRenderTask=void 0;e.renderTextLayer=function renderTextLayer(t){if(!t.textContentSource&&(t.textContent||t.textContentStream)){(0,r.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters will be removed in the future, please use `textContentSource` instead.");t.textContentSource=t.textContent||t.textContentStream}const{container:e,viewport:n}=t,i=getComputedStyle(e),s=i.getPropertyValue("visibility"),a=parseFloat(i.getPropertyValue("--scale-factor"));"visible"===s&&(!a||Math.abs(a-n.scale)>1e-5)&&console.error("The `--scale-factor` CSS-variable must be set, to the same value as `viewport.scale`, either on the `container`-element itself or higher up in the DOM.");const o=new TextLayerRenderTask(t);o._render();return o};e.updateTextLayer=function updateTextLayer(t){let{container:e,viewport:n,textDivs:i,textDivProperties:s,isOffscreenCanvasSupported:a,mustRotate:o=!0,mustRescale:l=!0}=t;o&&(0,r.setLayerDimensions)(e,{rotation:n.rotation});if(l){const t=getCtx(0,a),e={prevFontSize:null,prevFontFamily:null,div:null,scale:n.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:t};for(const t of i){e.properties=s.get(t);e.div=t;layout(e)}}};n(89);n(2);var i=n(1),r=n(167);const s=30,a=.8,o=new Map;function getCtx(t,e){let n;if(e&&i.FeatureTest.isOffscreenCanvasSupported)n=new OffscreenCanvas(t,t).getContext("2d",{alpha:!1});else{const e=document.createElement("canvas");e.width=e.height=t;n=e.getContext("2d",{alpha:!1})}return n}function appendText(t,e,n){const r=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==e.str,hasEOL:e.hasEOL,fontSize:0};t._textDivs.push(r);const c=i.Util.transform(t._transform,e.transform);let h=Math.atan2(c[1],c[0]);const d=n[e.fontName];d.vertical&&(h+=Math.PI/2);const u=Math.hypot(c[2],c[3]),p=u*function getAscent(t,e){const n=o.get(t);if(n)return n;const i=getCtx(s,e);i.font=`${s}px ${t}`;const r=i.measureText("");let l=r.fontBoundingBoxAscent,c=Math.abs(r.fontBoundingBoxDescent);if(l){const e=l/(l+c);o.set(t,e);i.canvas.width=i.canvas.height=0;return e}i.strokeStyle="red";i.clearRect(0,0,s,s);i.strokeText("g",0,0);let h=i.getImageData(0,0,s,s).data;c=0;for(let t=h.length-1-3;t>=0;t-=4)if(h[t]>0){c=Math.ceil(t/4/s);break}i.clearRect(0,0,s,s);i.strokeText("A",0,s);h=i.getImageData(0,0,s,s).data;l=0;for(let t=0,e=h.length;t0){l=s-Math.floor(t/4/s);break}i.canvas.width=i.canvas.height=0;if(l){const e=l/(l+c);o.set(t,e);return e}o.set(t,a);return a}(d.fontFamily,t._isOffscreenCanvasSupported);let f,g;if(0===h){f=c[4];g=c[5]-p}else{f=c[4]+p*Math.sin(h);g=c[5]-p*Math.cos(h)}const m="calc(var(--scale-factor)*",b=r.style;if(t._container===t._rootContainer){b.left=`${(100*f/t._pageWidth).toFixed(2)}%`;b.top=`${(100*g/t._pageHeight).toFixed(2)}%`}else{b.left=`${m}${f.toFixed(2)}px)`;b.top=`${m}${g.toFixed(2)}px)`}b.fontSize=`${m}${u.toFixed(2)}px)`;b.fontFamily=d.fontFamily;l.fontSize=u;r.setAttribute("role","presentation");r.textContent=e.str;r.dir=e.dir;t._fontInspectorEnabled&&(r.dataset.fontName=e.fontName);0!==h&&(l.angle=h*(180/Math.PI));let v=!1;if(e.str.length>1)v=!0;else if(" "!==e.str&&e.transform[0]!==e.transform[3]){const t=Math.abs(e.transform[0]),n=Math.abs(e.transform[3]);t!==n&&Math.max(t,n)/Math.min(t,n)>1.5&&(v=!0)}v&&(l.canvasWidth=d.vertical?e.height:e.width);t._textDivProperties.set(r,l);t._isReadableStream&&t._layoutText(r)}function layout(t){const{div:e,scale:n,properties:i,ctx:r,prevFontSize:s,prevFontFamily:a}=t,{style:o}=e;let l="";if(0!==i.canvasWidth&&i.hasText){const{fontFamily:c}=o,{canvasWidth:h,fontSize:d}=i;if(s!==d||a!==c){r.font=`${d*n}px ${c}`;t.prevFontSize=d;t.prevFontFamily=c}const{width:u}=r.measureText(e.textContent);u>0&&(l=`scaleX(${h*n/u})`)}0!==i.angle&&(l=`rotate(${i.angle}deg) ${l}`);l.length>0&&(o.transform=l)}class TextLayerRenderTask{constructor(t){let{textContentSource:e,container:n,viewport:s,textDivs:a,textDivProperties:o,textContentItemsStr:l,isOffscreenCanvasSupported:c}=t;this._textContentSource=e;this._isReadableStream=e instanceof ReadableStream;this._container=this._rootContainer=n;this._textDivs=a||[];this._textContentItemsStr=l||[];this._isOffscreenCanvasSupported=c;this._fontInspectorEnabled=!!globalThis.FontInspector?.enabled;this._reader=null;this._textDivProperties=o||new WeakMap;this._canceled=!1;this._capability=new i.PromiseCapability;this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:s.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:getCtx(0,c)};const{pageWidth:h,pageHeight:d,pageX:u,pageY:p}=s.rawDims;this._transform=[1,0,0,-1,-u,p+d];this._pageWidth=h;this._pageHeight=d;(0,r.setLayerDimensions)(n,s);this._capability.promise.finally((()=>{this._layoutTextParams=null})).catch((()=>{}))}get promise(){return this._capability.promise}cancel(){this._canceled=!0;if(this._reader){this._reader.cancel(new i.AbortException("TextLayer task cancelled.")).catch((()=>{}));this._reader=null}this._capability.reject(new i.AbortException("TextLayer task cancelled."))}_processItems(t,e){for(const n of t)if(void 0!==n.str){this._textContentItemsStr.push(n.str);appendText(this,n,e)}else if("beginMarkedContentProps"===n.type||"beginMarkedContent"===n.type){const t=this._container;this._container=document.createElement("span");this._container.classList.add("markedContent");null!==n.id&&this._container.setAttribute("id",`${n.id}`);t.append(this._container)}else"endMarkedContent"===n.type&&(this._container=this._container.parentNode)}_layoutText(t){const e=this._layoutTextParams.properties=this._textDivProperties.get(t);this._layoutTextParams.div=t;layout(this._layoutTextParams);e.hasText&&this._container.append(t);if(e.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation");this._container.append(t)}}_render(){const t=new i.PromiseCapability;let e=Object.create(null);if(this._isReadableStream){const pump=()=>{this._reader.read().then((n=>{let{value:i,done:r}=n;if(r)t.resolve();else{Object.assign(e,i.styles);this._processItems(i.items,e);pump()}}),t.reject)};this._reader=this._textContentSource.getReader();pump()}else{if(!this._textContentSource)throw new Error('No "textContentSource" parameter specified.');{const{items:e,styles:n}=this._textContentSource;this._processItems(e,n);t.resolve()}}t.promise.then((()=>{e=null;!function render(t){if(t._canceled)return;const e=t._textDivs,n=t._capability;if(e.length>1e5)n.resolve();else{if(!t._isReadableStream)for(const n of e)t._layoutText(n);n.resolve()}}(this)}),this._capability.reject)}}e.TextLayerRenderTask=TextLayerRenderTask},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.AnnotationEditorLayer=void 0;n(125);n(135);n(137);n(140);n(142);n(144);n(146);var i=n(1),r=n(163),s=n(164),a=n(196),o=n(201),l=n(167),c=n(202);class AnnotationEditorLayer{#re;#se=!1;#ae=null;#oe=this.pointerup.bind(this);#le=this.pointerdown.bind(this);#ce=new Map;#he=!1;#de=!1;#ue=!1;#pe;static _initialized=!1;constructor(t){let{uiManager:e,pageIndex:n,div:i,accessibilityManager:r,annotationLayer:s,viewport:l,l10n:h}=t;const d=[a.FreeTextEditor,o.InkEditor,c.StampEditor];if(!AnnotationEditorLayer._initialized){AnnotationEditorLayer._initialized=!0;for(const t of d)t.initialize(h)}e.registerEditorTypes(d);this.#pe=e;this.pageIndex=n;this.div=i;this.#re=r;this.#ae=s;this.viewport=l;this.#pe.addLayer(this)}get isEmpty(){return 0===this.#ce.size}updateToolbar(t){this.#pe.updateToolbar(t)}updateMode(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.#pe.getMode();this.#fe();if(t===i.AnnotationEditorType.INK){this.addInkEditorIfNeeded(!1);this.disableClick()}else this.enableClick();this.#pe.unselectAll();if(t!==i.AnnotationEditorType.NONE){this.div.classList.toggle("freeTextEditing",t===i.AnnotationEditorType.FREETEXT);this.div.classList.toggle("inkEditing",t===i.AnnotationEditorType.INK);this.div.classList.toggle("stampEditing",t===i.AnnotationEditorType.STAMP);this.div.hidden=!1}}addInkEditorIfNeeded(t){if(!t&&this.#pe.getMode()!==i.AnnotationEditorType.INK)return;if(!t)for(const t of this.#ce.values())if(t.isEmpty()){t.setInBackground();return}this.#ge({offsetX:0,offsetY:0}).setInBackground()}setEditingState(t){this.#pe.setEditingState(t)}addCommands(t){this.#pe.addCommands(t)}enable(){this.div.style.pointerEvents="auto";const t=new Set;for(const e of this.#ce.values()){e.enableEditing();e.annotationElementId&&t.add(e.annotationElementId)}if(!this.#ae)return;const e=this.#ae.getEditableAnnotations();for(const n of e){n.hide();if(this.#pe.isDeletedAnnotationElement(n.data.id))continue;if(t.has(n.data.id))continue;const e=this.deserialize(n);if(e){this.addOrRebuild(e);e.enableEditing()}}}disable(){this.#ue=!0;this.div.style.pointerEvents="none";const t=new Set;for(const e of this.#ce.values()){e.disableEditing();if(e.annotationElementId&&null===e.serialize()){this.getEditableAnnotation(e.annotationElementId)?.show();e.remove()}else t.add(e.annotationElementId)}if(this.#ae){const e=this.#ae.getEditableAnnotations();for(const n of e){const{id:e}=n.data;t.has(e)||this.#pe.isDeletedAnnotationElement(e)||n.show()}}this.#fe();this.isEmpty&&(this.div.hidden=!0);this.#ue=!1}getEditableAnnotation(t){return this.#ae?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#pe.getActive()!==t&&this.#pe.setActiveEditor(t)}enableClick(){this.div.addEventListener("pointerdown",this.#le);this.div.addEventListener("pointerup",this.#oe)}disableClick(){this.div.removeEventListener("pointerdown",this.#le);this.div.removeEventListener("pointerup",this.#oe)}attach(t){this.#ce.set(t.id,t);const{annotationElementId:e}=t;e&&this.#pe.isDeletedAnnotationElement(e)&&this.#pe.removeDeletedAnnotationElement(t)}detach(t){this.#ce.delete(t.id);this.#re?.removePointerInTextLayer(t.contentDiv);!this.#ue&&t.annotationElementId&&this.#pe.addDeletedAnnotationElement(t)}remove(t){this.detach(t);this.#pe.removeEditor(t);t.div.style.display="none";setTimeout((()=>{t.div.style.display="";t.div.remove();t.isAttachedToDOM=!1;document.activeElement===document.body&&this.#pe.focusMainContainer()}),0);this.#de||this.addInkEditorIfNeeded(!1)}#me(t){if(t.parent!==this){if(t.annotationElementId){this.#pe.addDeletedAnnotationElement(t.annotationElementId);r.AnnotationEditor.deleteAnnotationElement(t);t.annotationElementId=null}this.attach(t);t.parent?.detach(t);t.setParent(this);if(t.div&&t.isAttachedToDOM){t.div.remove();this.div.append(t.div)}}}add(t){this.#me(t);this.#pe.addEditor(t);this.attach(t);if(!t.isAttachedToDOM){const e=t.render();this.div.append(e);t.isAttachedToDOM=!0}this.moveEditorInDOM(t);t.onceAdded();this.#pe.addToAnnotationStorage(t)}moveEditorInDOM(t){this.#re?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?t.rebuild():this.add(t)}addUndoableEditor(t){this.addCommands({cmd:()=>{this.addOrRebuild(t)},undo:()=>{t.remove()},mustExec:!1})}getNextId(){return this.#pe.getId()}#be(t){switch(this.#pe.getMode()){case i.AnnotationEditorType.FREETEXT:return new a.FreeTextEditor(t);case i.AnnotationEditorType.INK:return new o.InkEditor(t);case i.AnnotationEditorType.STAMP:return new c.StampEditor(t)}return null}deserialize(t){switch(t.annotationType??t.annotationEditorType){case i.AnnotationEditorType.FREETEXT:return a.FreeTextEditor.deserialize(t,this,this.#pe);case i.AnnotationEditorType.INK:return o.InkEditor.deserialize(t,this,this.#pe);case i.AnnotationEditorType.STAMP:return c.StampEditor.deserialize(t,this,this.#pe)}return null}#ge(t){const e=this.getNextId(),n=this.#be({parent:this,id:e,x:t.offsetX,y:t.offsetY,uiManager:this.#pe});n&&this.add(n);return n}setSelected(t){this.#pe.setSelected(t)}toggleSelected(t){this.#pe.toggleSelected(t)}isSelected(t){return this.#pe.isSelected(t)}unselect(t){this.#pe.unselect(t)}pointerup(t){const{isMac:e}=i.FeatureTest.platform;if(!(0!==t.button||t.ctrlKey&&e)&&t.target===this.div&&this.#he){this.#he=!1;this.#se?this.#ge(t):this.#se=!0}}pointerdown(t){if(this.#he){this.#he=!1;return}const{isMac:e}=i.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;if(t.target!==this.div)return;this.#he=!0;const n=this.#pe.getActive();this.#se=!n||n.isEmpty()}drop(t){const e=t.dataTransfer.getData("text/plain"),n=this.#pe.getEditor(e);if(!n)return;t.preventDefault();t.dataTransfer.dropEffect="move";this.#me(n);const i=this.div.getBoundingClientRect(),r=t.clientX-i.x,s=t.clientY-i.y;n.translate(r-n.startX,s-n.startY);this.moveEditorInDOM(n);n.div.focus()}dragover(t){t.preventDefault()}destroy(){this.#pe.getActive()?.parent===this&&this.#pe.setActiveEditor(null);for(const t of this.#ce.values()){this.#re?.removePointerInTextLayer(t.contentDiv);t.setParent(null);t.isAttachedToDOM=!1;t.div.remove()}this.div=null;this.#ce.clear();this.#pe.removeLayer(this)}#fe(){this.#de=!0;for(const t of this.#ce.values())t.isEmpty()&&t.remove();this.#de=!1}render(t){let{viewport:e}=t;this.viewport=e;(0,l.setLayerDimensions)(this.div,e);(0,s.bindEvents)(this,this.div,["dragover","drop"]);for(const t of this.#pe.getEditors(this.pageIndex))this.add(t);this.updateMode()}update(t){let{viewport:e}=t;this.#pe.commitOrRemove();this.viewport=e;(0,l.setLayerDimensions)(this.div,{rotation:e.rotation});this.updateMode()}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}}e.AnnotationEditorLayer=AnnotationEditorLayer},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.FreeTextEditor=void 0;n(89);var i=n(1),r=n(164),s=n(163),a=n(197);class FreeTextEditor extends s.AnnotationEditor{#ve=this.editorDivBlur.bind(this);#ye=this.editorDivFocus.bind(this);#Ae=this.editorDivInput.bind(this);#_e=this.editorDivKeydown.bind(this);#Se;#Ee="";#xe=`${this.id}-editor`;#we;#Ce=null;static _freeTextDefaultContent="";static _l10nPromise;static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=FreeTextEditor.prototype,arrowChecker=t=>t.isEmpty(),e=r.AnnotationEditorUIManager.TRANSLATE_SMALL,n=r.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,i.shadow)(this,"_keyboardManager",new r.KeyboardManager([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],t.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],t._translateEmpty,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-n,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t._translateEmpty,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[n,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t._translateEmpty,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-n],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t._translateEmpty,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,n],checker:arrowChecker}]]))}static _type="freetext";constructor(t){super({...t,name:"freeTextEditor"});this.#Se=t.color||FreeTextEditor._defaultColor||s.AnnotationEditor._defaultLineColor;this.#we=t.fontSize||FreeTextEditor._defaultFontSize}static initialize(t){this._l10nPromise=new Map(["free_text2_default_content","editor_free_text2_aria_label"].map((e=>[e,t.get(e)])));const e=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(e.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case i.AnnotationEditorParamsType.FREETEXT_SIZE:FreeTextEditor._defaultFontSize=e;break;case i.AnnotationEditorParamsType.FREETEXT_COLOR:FreeTextEditor._defaultColor=e}}updateParams(t,e){switch(t){case i.AnnotationEditorParamsType.FREETEXT_SIZE:this.#Te(e);break;case i.AnnotationEditorParamsType.FREETEXT_COLOR:this.#Pe(e)}}static get defaultPropertiesToUpdate(){return[[i.AnnotationEditorParamsType.FREETEXT_SIZE,FreeTextEditor._defaultFontSize],[i.AnnotationEditorParamsType.FREETEXT_COLOR,FreeTextEditor._defaultColor||s.AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[i.AnnotationEditorParamsType.FREETEXT_SIZE,this.#we],[i.AnnotationEditorParamsType.FREETEXT_COLOR,this.#Se]]}#Te(t){const setFontsize=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--scale-factor))`;this.translate(0,-(t-this.#we)*this.parentScale);this.#we=t;this.#ke()},e=this.#we;this.addCommands({cmd:()=>{setFontsize(t)},undo:()=>{setFontsize(e)},mustExec:!0,type:i.AnnotationEditorParamsType.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}#Pe(t){const e=this.#Se;this.addCommands({cmd:()=>{this.#Se=this.editorDiv.style.color=t},undo:()=>{this.#Se=this.editorDiv.style.color=e},mustExec:!0,type:i.AnnotationEditorParamsType.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-FreeTextEditor._internalPadding*t,-(FreeTextEditor._internalPadding+this.#we)*t]}rebuild(){super.rebuild();null!==this.div&&(this.isAttachedToDOM||this.parent.add(this))}enableEditMode(){if(!this.isInEditMode()){this.parent.setEditingState(!1);this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);super.enableEditMode();this.overlayDiv.classList.remove("enabled");this.editorDiv.contentEditable=!0;this.div.draggable=!1;this.div.removeAttribute("aria-activedescendant");this.editorDiv.addEventListener("keydown",this.#_e);this.editorDiv.addEventListener("focus",this.#ye);this.editorDiv.addEventListener("blur",this.#ve);this.editorDiv.addEventListener("input",this.#Ae)}}disableEditMode(){if(this.isInEditMode()){this.parent.setEditingState(!0);super.disableEditMode();this.overlayDiv.classList.add("enabled");this.editorDiv.contentEditable=!1;this.div.setAttribute("aria-activedescendant",this.#xe);this.div.draggable=!0;this.editorDiv.removeEventListener("keydown",this.#_e);this.editorDiv.removeEventListener("focus",this.#ye);this.editorDiv.removeEventListener("blur",this.#ve);this.editorDiv.removeEventListener("input",this.#Ae);this.div.focus({preventScroll:!0});this.isEditing=!1;this.parent.div.classList.add("freeTextEditing")}}focusin(t){super.focusin(t);t.target!==this.editorDiv&&this.editorDiv.focus()}onceAdded(){if(this.width)this.#Me();else{this.enableEditMode();this.editorDiv.focus()}}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1;if(this.parent){this.parent.setEditingState(!0);this.parent.div.classList.add("freeTextEditing")}super.remove()}#Re(){const t=this.editorDiv.getElementsByTagName("div");if(0===t.length)return this.editorDiv.innerText;const e=[];for(const n of t)e.push(n.innerText.replace(/\r\n?|\n/,""));return e.join("\n")}#ke(){const[t,e]=this.parentDimensions;let n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,i=e.style.display;e.style.display="hidden";t.div.append(this.div);n=e.getBoundingClientRect();e.remove();e.style.display=i}if(this.rotation%180==this.parentRotation%180){this.width=n.width/t;this.height=n.height/e}else{this.width=n.height/t;this.height=n.width/e}this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit();this.disableEditMode();const t=this.#Ee,e=this.#Ee=this.#Re().trimEnd();if(t===e)return;const setText=t=>{this.#Ee=t;if(t){this.#Fe();this.rebuild();this.#ke()}else this.remove()};this.addCommands({cmd:()=>{setText(e)},undo:()=>{setText(t)},mustExec:!1});this.#ke()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode();this.editorDiv.focus()}dblclick(t){this.enterInEditMode()}keydown(t){t.target===this.div&&"Enter"===t.key&&this.enterInEditMode()}editorDivKeydown(t){FreeTextEditor._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freeTextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment");this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox");this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();this.editorDiv=document.createElement("div");this.editorDiv.className="internal";this.editorDiv.setAttribute("id",this.#xe);this.enableEditing();FreeTextEditor._l10nPromise.get("editor_free_text2_aria_label").then((t=>this.editorDiv?.setAttribute("aria-label",t)));FreeTextEditor._l10nPromise.get("free_text2_default_content").then((t=>this.editorDiv?.setAttribute("default-content",t)));this.editorDiv.contentEditable=!0;const{style:n}=this.editorDiv;n.fontSize=`calc(${this.#we}px * var(--scale-factor))`;n.color=this.#Se;this.div.append(this.editorDiv);this.overlayDiv=document.createElement("div");this.overlayDiv.classList.add("overlay","enabled");this.div.append(this.overlayDiv);(0,r.bindEvents)(this,this.div,["dblclick","keydown"]);if(this.width){const[n,i]=this.parentDimensions;if(this.annotationElementId){const{position:r}=this.#Ce;let[s,a]=this.getInitialTranslation();[s,a]=this.pageTranslationToScreen(s,a);const[o,l]=this.pageDimensions,[c,h]=this.pageTranslation;let d,u;switch(this.rotation){case 0:d=t+(r[0]-c)/o;u=e+this.height-(r[1]-h)/l;break;case 90:d=t+(r[0]-c)/o;u=e-(r[1]-h)/l;[s,a]=[a,-s];break;case 180:d=t-this.width+(r[0]-c)/o;u=e-(r[1]-h)/l;[s,a]=[-s,-a];break;case 270:d=t+(r[0]-c-this.height*l)/o;u=e+(r[1]-h-this.width*o)/l;[s,a]=[-a,s]}this.setAt(d*n,u*i,s,a)}else this.setAt(t*n,e*i,this.width*n,this.height*i);this.#Fe();this.div.draggable=!0;this.editorDiv.contentEditable=!1}else{this.div.draggable=!1;this.editorDiv.contentEditable=!0}return this.div}#Fe(){this.editorDiv.replaceChildren();if(this.#Ee)for(const t of this.#Ee.split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br"));this.editorDiv.append(e)}}get contentDiv(){return this.editorDiv}static deserialize(t,e,n){let r=null;if(t instanceof a.FreeTextAnnotationElement){const{data:{defaultAppearanceData:{fontSize:e,fontColor:n},rect:s,rotation:a,id:o},textContent:l,textPosition:c,parent:{page:{pageNumber:h}}}=t;if(!l||0===l.length)return null;r=t={annotationType:i.AnnotationEditorType.FREETEXT,color:Array.from(n),fontSize:e,value:l.join("\n"),position:c,pageIndex:h-1,rect:s,rotation:a,id:o,deleted:!1}}const s=super.deserialize(t,e,n);s.#we=t.fontSize;s.#Se=i.Util.makeHexColor(...t.color);s.#Ee=t.value;s.annotationElementId=t.id||null;s.#Ce=r;return s}serialize(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const e=FreeTextEditor._internalPadding*this.parentScale,n=this.getRect(e,e),r=s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.#Se),a={annotationType:i.AnnotationEditorType.FREETEXT,color:r,fontSize:this.#we,value:this.#Ee,pageIndex:this.pageIndex,rect:n,rotation:this.rotation};if(t)return a;if(this.annotationElementId&&!this.#Ie(a))return null;a.id=this.annotationElementId;return a}#Ie(t){const{value:e,fontSize:n,color:i,rect:r,pageIndex:s}=this.#Ce;return t.value!==e||t.fontSize!==n||t.rect.some(((t,e)=>Math.abs(t-r[e])>=1))||t.color.some(((t,e)=>t!==i[e]))||t.pageIndex!==s}#Me(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.annotationElementId)return;this.#ke();if(!t&&(0===this.width||0===this.height)){setTimeout((()=>this.#Me(!0)),0);return}const e=FreeTextEditor._internalPadding*this.parentScale;this.#Ce.rect=this.getRect(e,e)}}e.FreeTextEditor=FreeTextEditor},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StampAnnotationElement=e.InkAnnotationElement=e.FreeTextAnnotationElement=e.AnnotationLayer=void 0;n(89);n(125);n(135);n(137);n(140);n(142);n(144);n(146);var i=n(1),r=n(167),s=n(162),a=n(198),o=n(199),l=n(200);const c=1e3,h=new WeakSet;function getRectDims(t){return{width:t[2]-t[0],height:t[3]-t[1]}}class AnnotationElementFactory{static create(t){switch(t.data.annotationType){case i.AnnotationType.LINK:return new LinkAnnotationElement(t);case i.AnnotationType.TEXT:return new TextAnnotationElement(t);case i.AnnotationType.WIDGET:switch(t.data.fieldType){case"Tx":return new TextWidgetAnnotationElement(t);case"Btn":return t.data.radioButton?new RadioButtonWidgetAnnotationElement(t):t.data.checkBox?new CheckboxWidgetAnnotationElement(t):new PushButtonWidgetAnnotationElement(t);case"Ch":return new ChoiceWidgetAnnotationElement(t);case"Sig":return new SignatureWidgetAnnotationElement(t)}return new WidgetAnnotationElement(t);case i.AnnotationType.POPUP:return new PopupAnnotationElement(t);case i.AnnotationType.FREETEXT:return new FreeTextAnnotationElement(t);case i.AnnotationType.LINE:return new LineAnnotationElement(t);case i.AnnotationType.SQUARE:return new SquareAnnotationElement(t);case i.AnnotationType.CIRCLE:return new CircleAnnotationElement(t);case i.AnnotationType.POLYLINE:return new PolylineAnnotationElement(t);case i.AnnotationType.CARET:return new CaretAnnotationElement(t);case i.AnnotationType.INK:return new InkAnnotationElement(t);case i.AnnotationType.POLYGON:return new PolygonAnnotationElement(t);case i.AnnotationType.HIGHLIGHT:return new HighlightAnnotationElement(t);case i.AnnotationType.UNDERLINE:return new UnderlineAnnotationElement(t);case i.AnnotationType.SQUIGGLY:return new SquigglyAnnotationElement(t);case i.AnnotationType.STRIKEOUT:return new StrikeOutAnnotationElement(t);case i.AnnotationType.STAMP:return new StampAnnotationElement(t);case i.AnnotationType.FILEATTACHMENT:return new FileAttachmentAnnotationElement(t);default:return new AnnotationElement(t)}}}class AnnotationElement{#De=!1;constructor(t){let{isRenderable:e=!1,ignoreBorder:n=!1,createQuadrilaterals:i=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.isRenderable=e;this.data=t.data;this.layer=t.layer;this.linkService=t.linkService;this.downloadManager=t.downloadManager;this.imageResourcesPath=t.imageResourcesPath;this.renderForms=t.renderForms;this.svgFactory=t.svgFactory;this.annotationStorage=t.annotationStorage;this.enableScripting=t.enableScripting;this.hasJSActions=t.hasJSActions;this._fieldObjects=t.fieldObjects;this.parent=t.parent;e&&(this.container=this._createContainer(n));i&&this._createQuadrilaterals()}_createContainer(t){const{data:e,parent:{page:n,viewport:r}}=this,s=document.createElement("section");s.setAttribute("data-annotation-id",e.id);s.style.zIndex=this.parent.zIndex++;this.data.popupRef&&s.setAttribute("aria-haspopup","dialog");e.noRotate&&s.classList.add("norotate");const{pageWidth:a,pageHeight:o,pageX:l,pageY:c}=r.rawDims;if(!e.rect||this instanceof PopupAnnotationElement){const{rotation:t}=e;e.hasOwnCanvas||0===t||this.setRotation(t,s);return s}const{width:h,height:d}=getRectDims(e.rect),u=i.Util.normalizeRect([e.rect[0],n.view[3]-e.rect[1]+n.view[1],e.rect[2],n.view[3]-e.rect[3]+n.view[1]]);if(!t&&e.borderStyle.width>0){s.style.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,n=e.borderStyle.verticalCornerRadius;if(t>0||n>0){const e=`calc(${t}px * var(--scale-factor)) / calc(${n}px * var(--scale-factor))`;s.style.borderRadius=e}else if(this instanceof RadioButtonWidgetAnnotationElement){const t=`calc(${h}px * var(--scale-factor)) / calc(${d}px * var(--scale-factor))`;s.style.borderRadius=t}switch(e.borderStyle.style){case i.AnnotationBorderStyleType.SOLID:s.style.borderStyle="solid";break;case i.AnnotationBorderStyleType.DASHED:s.style.borderStyle="dashed";break;case i.AnnotationBorderStyleType.BEVELED:(0,i.warn)("Unimplemented border style: beveled");break;case i.AnnotationBorderStyleType.INSET:(0,i.warn)("Unimplemented border style: inset");break;case i.AnnotationBorderStyleType.UNDERLINE:s.style.borderBottomStyle="solid"}const r=e.borderColor||null;if(r){this.#De=!0;s.style.borderColor=i.Util.makeHexColor(0|r[0],0|r[1],0|r[2])}else s.style.borderWidth=0}s.style.left=100*(u[0]-l)/a+"%";s.style.top=100*(u[1]-c)/o+"%";const{rotation:p}=e;if(e.hasOwnCanvas||0===p){s.style.width=100*h/a+"%";s.style.height=100*d/o+"%"}else this.setRotation(p,s);return s}setRotation(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.container;if(!this.data.rect)return;const{pageWidth:n,pageHeight:i}=this.parent.viewport.rawDims,{width:r,height:s}=getRectDims(this.data.rect);let a,o;if(t%180==0){a=100*r/n;o=100*s/i}else{a=100*s/n;o=100*r/i}e.style.width=`${a}%`;e.style.height=`${o}%`;e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const setColor=(t,e,n)=>{const i=n.detail[t];n.target.style[e]=a.ColorConverters[`${i[0]}_HTML`](i.slice(1))};return(0,i.shadow)(this,"_commonActions",{display:t=>{const e=t.detail.display%2==1;this.container.style.visibility=e?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:e,print:0===t.detail.display||3===t.detail.display})},print:t=>{this.annotationStorage.setValue(this.data.id,{print:t.detail.print})},hidden:t=>{this.container.style.visibility=t.detail.hidden?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:t.detail.hidden})},focus:t=>{setTimeout((()=>t.target.focus({preventScroll:!1})),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.detail.readonly?t.target.setAttribute("readonly",""):t.target.removeAttribute("readonly")},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{setColor("bgColor","backgroundColor",t)},fillColor:t=>{setColor("fillColor","backgroundColor",t)},fgColor:t=>{setColor("fgColor","color",t)},textColor:t=>{setColor("textColor","color",t)},borderColor:t=>{setColor("borderColor","borderColor",t)},strokeColor:t=>{setColor("strokeColor","borderColor",t)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e);this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const n=this._commonActions;for(const i of Object.keys(e.detail)){const r=t[i]||n[i];r?.(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const n=this._commonActions;for(const[i,r]of Object.entries(e)){const s=n[i];if(s){s({detail:{[i]:r},target:t});delete e[i]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,n,i,r]=this.data.rect;if(1===t.length){const[,{x:s,y:a},{x:o,y:l}]=t[0];if(i===s&&r===a&&e===o&&n===l)return}const{style:s}=this.container;let a;if(this.#De){const{borderColor:t,borderWidth:e}=s;s.borderWidth=0;a=["url('data:image/svg+xml;utf8,",'',``];this.container.classList.add("hasBorder")}const o=i-e,l=r-n,{svgFactory:c}=this,h=c.createElement("svg");h.classList.add("quadrilateralsContainer");h.setAttribute("width",0);h.setAttribute("height",0);const d=c.createElement("defs");h.append(d);const u=c.createElement("clipPath"),p=`clippath_${this.data.id}`;u.setAttribute("id",p);u.setAttribute("clipPathUnits","objectBoundingBox");d.append(u);for(const[,{x:n,y:i},{x:s,y:h}]of t){const t=c.createElement("rect"),d=(s-e)/o,p=(r-i)/l,f=(n-s)/o,g=(i-h)/l;t.setAttribute("x",d);t.setAttribute("y",p);t.setAttribute("width",f);t.setAttribute("height",g);u.append(t);a?.push(``)}if(this.#De){a.push("')");s.backgroundImage=a.join("")}this.container.append(h);this.container.style.clipPath=`url(#${p})`}_createPopup(){const{container:t,data:e}=this;t.setAttribute("aria-haspopup","dialog");const n=new PopupAnnotationElement({data:{color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation},parent:this.parent,elements:[this]});this.parent.div.append(n.render())}render(){(0,i.unreachable)("Abstract method `AnnotationElement.render` called")}_getElementsByName(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[];if(this._fieldObjects){const r=this._fieldObjects[t];if(r)for(const{page:t,id:s,exportValues:a}of r){if(-1===t)continue;if(s===e)continue;const r="string"==typeof a?a:null,o=document.querySelector(`[data-element-id="${s}"]`);!o||h.has(o)?n.push({id:s,exportValue:r,domElement:o}):(0,i.warn)(`_getElementsByName - element not allowed: ${s}`)}return n}for(const i of document.getElementsByName(t)){const{exportValue:t}=i,r=i.getAttribute("data-element-id");r!==e&&(h.has(i)&&n.push({id:r,exportValue:t,domElement:i}))}return n}show(){this.container&&(this.container.hidden=!1);this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0);this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",(()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e})}))}}class LinkAnnotationElement extends AnnotationElement{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;super(t,{isRenderable:!0,ignoreBorder:!!e?.ignoreBorder,createQuadrilaterals:!0});this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,n=document.createElement("a");n.setAttribute("data-element-id",t.id);let i=!1;if(t.url){e.addLinkAttributes(n,t.url,t.newWindow);i=!0}else if(t.action){this._bindNamedAction(n,t.action);i=!0}else if(t.attachment){this._bindAttachment(n,t.attachment);i=!0}else if(t.setOCGState){this.#Oe(n,t.setOCGState);i=!0}else if(t.dest){this._bindLink(n,t.dest);i=!0}else{if(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions){this._bindJSAction(n,t);i=!0}if(t.resetForm){this._bindResetFormAction(n,t.resetForm);i=!0}else if(this.isTooltipOnly&&!i){this._bindLink(n,"");i=!0}}this.container.classList.add("linkAnnotation");i&&this.container.append(n);return this.container}#Le(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e){t.href=this.linkService.getDestinationHash(e);t.onclick=()=>{e&&this.linkService.goToDestination(e);return!1};(e||""===e)&&this.#Le()}_bindNamedAction(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeNamedAction(e);return!1};this.#Le()}_bindAttachment(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.downloadManager?.openOrDownloadData(this.container,e.content,e.filename);return!1};this.#Le()}#Oe(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeSetOCGState(e);return!1};this.#Le()}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const i of Object.keys(e.actions)){const r=n.get(i);r&&(t[r]=()=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:i}});return!1})}t.onclick||(t.onclick=()=>!1);this.#Le()}_bindResetFormAction(t,e){const n=t.onclick;n||(t.href=this.linkService.getAnchorUrl(""));this.#Le();if(this._fieldObjects)t.onclick=()=>{n?.();const{fields:t,refs:r,include:s}=e,a=[];if(0!==t.length||0!==r.length){const e=new Set(r);for(const n of t){const t=this._fieldObjects[n]||[];for(const{id:n}of t)e.add(n)}for(const t of Object.values(this._fieldObjects))for(const n of t)e.has(n.id)===s&&a.push(n)}else for(const t of Object.values(this._fieldObjects))a.push(...t);const o=this.annotationStorage,l=[];for(const t of a){const{id:e}=t;l.push(e);switch(t.type){case"text":{const n=t.defaultValue||"";o.setValue(e,{value:n});break}case"checkbox":case"radiobutton":{const n=t.defaultValue===t.exportValues;o.setValue(e,{value:n});break}case"combobox":case"listbox":{const n=t.defaultValue||"";o.setValue(e,{value:n});break}default:continue}const n=document.querySelector(`[data-element-id="${e}"]`);n&&(h.has(n)?n.dispatchEvent(new Event("resetform")):(0,i.warn)(`_bindResetFormAction - element not allowed: ${e}`))}this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:l,name:"ResetForm"}});return!1};else{(0,i.warn)('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.');n||(t.onclick=()=>!1)}}}class TextAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!!(t.data.popupRef||t.data.titleObj?.str||t.data.contentsObj?.str||t.data.richText?.str)})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg";t.alt="[{{type}} Annotation]";t.dataset.l10nId="text_annotation_type";t.dataset.l10nArgs=JSON.stringify({type:this.data.name});this.data.popupRef||this._createPopup();this.container.append(t);return this.container}}class WidgetAnnotationElement extends AnnotationElement{render(){this.data.alternativeText&&(this.container.title=this.data.alternativeText);return this.container}showElementAndHideCanvas(t){if(this.data.hasOwnCanvas){"CANVAS"===t.previousSibling?.nodeName&&(t.previousSibling.hidden=!0);t.hidden=!1}}_getKeyModifier(t){const{isWin:e,isMac:n}=i.FeatureTest.platform;return e&&t.ctrlKey||n&&t.metaKey}_setEventListener(t,e,n,i){e.includes("mouse")?t.addEventListener(e,(t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:i(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})})):t.addEventListener(e,(t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:i(t)}})}))}_setEventListeners(t,e,n){for(const[i,r]of e)("Action"===r||this.data.actions?.[r])&&this._setEventListener(t,i,r,n)}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=null===e?"transparent":i.Util.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:n}=this.data.defaultAppearanceData,r=this.data.defaultAppearanceData.fontSize||9,s=t.style;let a;const roundToOneDecimal=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2),e=t/(Math.round(t/(i.LINE_FACTOR*r))||1);a=Math.min(r,roundToOneDecimal(e/i.LINE_FACTOR))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2);a=Math.min(r,roundToOneDecimal(t/i.LINE_FACTOR))}s.fontSize=`calc(${a}px * var(--scale-factor))`;s.color=i.Util.makeHexColor(n[0],n[1],n[2]);null!==this.data.textAlignment&&(s.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required");t.setAttribute("aria-required",e)}}class TextWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms||!t.data.hasAppearance&&!!t.data.fieldValue})}setPropertyOnSiblings(t,e,n,i){const r=this.annotationStorage;for(const s of this._getElementsByName(t.name,t.id)){s.domElement&&(s.domElement[e]=n);r.setValue(s.id,{[i]:n})}}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let n=null;if(this.renderForms){const i=t.getValue(e,{value:this.data.fieldValue});let r=i.value||"";const s=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;s&&r.length>s&&(r=r.slice(0,s));let a=i.formattedValue||this.data.textContent?.join("\n")||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const o={userValue:r,formattedValue:a,lastCommittedValue:null,commitKey:1};if(this.data.multiLine){n=document.createElement("textarea");n.textContent=a??r;this.data.doNotScroll&&(n.style.overflowY="hidden")}else{n=document.createElement("input");n.type="text";n.setAttribute("value",a??r);this.data.doNotScroll&&(n.style.overflowX="hidden")}this.data.hasOwnCanvas&&(n.hidden=!0);h.add(n);n.setAttribute("data-element-id",e);n.disabled=this.data.readOnly;n.name=this.data.baseFieldName||this.data.fieldName;n.tabIndex=c;this._setRequired(n,this.data.required);s&&(n.maxLength=s);n.addEventListener("input",(i=>{t.setValue(e,{value:i.target.value});this.setPropertyOnSiblings(n,"value",i.target.value,"value");o.formattedValue=null}));n.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue??"";n.value=o.userValue=e;o.formattedValue=null}));let blurListener=t=>{const{formattedValue:e}=o;null!=e&&(t.target.value=e);t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){n.addEventListener("focus",(t=>{const{target:e}=t;o.userValue&&(e.value=o.userValue);o.lastCommittedValue=e.value;o.commitKey=1}));n.addEventListener("updatefromsandbox",(n=>{this.showElementAndHideCanvas(n.target);const i={value(n){o.userValue=n.detail.value??"";t.setValue(e,{value:o.userValue.toString()});n.target.value=o.userValue},formattedValue(n){const{formattedValue:i}=n.detail;o.formattedValue=i;null!=i&&n.target!==document.activeElement&&(n.target.value=i);t.setValue(e,{formattedValue:i})},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:n=>{const{charLimit:i}=n.detail,{target:r}=n;if(0===i){r.removeAttribute("maxLength");return}r.setAttribute("maxLength",i);let s=o.userValue;if(s&&!(s.length<=i)){s=s.slice(0,i);r.value=o.userValue=s;t.setValue(e,{value:s});this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:s,willCommit:!0,commitKey:1,selStart:r.selectionStart,selEnd:r.selectionEnd}})}}};this._dispatchEventFromSandbox(i,n)}));n.addEventListener("keydown",(t=>{o.commitKey=1;let n=-1;"Escape"===t.key?n=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(o.commitKey=3):n=2;if(-1===n)return;const{value:i}=t.target;if(o.lastCommittedValue!==i){o.lastCommittedValue=i;o.userValue=i;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:i,willCommit:!0,commitKey:n,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}})}}));const i=blurListener;blurListener=null;n.addEventListener("blur",(t=>{if(!t.relatedTarget)return;const{value:n}=t.target;o.userValue=n;o.lastCommittedValue!==n&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:n,willCommit:!0,commitKey:o.commitKey,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}});i(t)}));this.data.actions?.Keystroke&&n.addEventListener("beforeinput",(t=>{o.lastCommittedValue=null;const{data:n,target:i}=t,{value:r,selectionStart:s,selectionEnd:a}=i;let l=s,c=a;switch(t.inputType){case"deleteWordBackward":{const t=r.substring(0,s).match(/\w*[^\w]*$/);t&&(l-=t[0].length);break}case"deleteWordForward":{const t=r.substring(s).match(/^[^\w]*\w*/);t&&(c+=t[0].length);break}case"deleteContentBackward":s===a&&(l-=1);break;case"deleteContentForward":s===a&&(c+=1)}t.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,change:n||"",willCommit:!1,selStart:l,selEnd:c}})}));this._setEventListeners(n,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.value))}blurListener&&n.addEventListener("blur",blurListener);if(this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/s;n.classList.add("comb");n.style.letterSpacing=`calc(${t}px * var(--scale-factor) - 1ch)`}}else{n=document.createElement("div");n.textContent=this.data.fieldValue;n.style.verticalAlign="middle";n.style.display="table-cell"}this._setTextStyle(n);this._setBackgroundColor(n);this._setDefaultPropertiesFromJS(n);this.container.append(n);return this.container}}class SignatureWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,n=e.id;let i=t.getValue(n,{value:e.exportValue===e.fieldValue}).value;if("string"==typeof i){i="Off"!==i;t.setValue(n,{value:i})}this.container.classList.add("buttonWidgetAnnotation","checkBox");const r=document.createElement("input");h.add(r);r.setAttribute("data-element-id",n);r.disabled=e.readOnly;this._setRequired(r,this.data.required);r.type="checkbox";r.name=e.baseFieldName||e.fieldName;i&&r.setAttribute("checked",!0);r.setAttribute("exportValue",e.exportValue);r.tabIndex=c;r.addEventListener("change",(i=>{const{name:r,checked:s}=i.target;for(const i of this._getElementsByName(r,n)){const n=s&&i.exportValue===e.exportValue;i.domElement&&(i.domElement.checked=n);t.setValue(i.id,{value:n})}t.setValue(n,{value:s})}));r.addEventListener("resetform",(t=>{const n=e.defaultFieldValue||"Off";t.target.checked=n===e.exportValue}));if(this.enableScripting&&this.hasJSActions){r.addEventListener("updatefromsandbox",(e=>{const i={value(e){e.target.checked="Off"!==e.detail.value;t.setValue(n,{value:e.target.checked})}};this._dispatchEventFromSandbox(i,e)}));this._setEventListeners(r,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(r);this._setDefaultPropertiesFromJS(r);this.container.append(r);return this.container}}class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,n=e.id;let i=t.getValue(n,{value:e.fieldValue===e.buttonValue}).value;if("string"==typeof i){i=i!==e.buttonValue;t.setValue(n,{value:i})}const r=document.createElement("input");h.add(r);r.setAttribute("data-element-id",n);r.disabled=e.readOnly;this._setRequired(r,this.data.required);r.type="radio";r.name=e.baseFieldName||e.fieldName;i&&r.setAttribute("checked",!0);r.tabIndex=c;r.addEventListener("change",(e=>{const{name:i,checked:r}=e.target;for(const e of this._getElementsByName(i,n))t.setValue(e.id,{value:!1});t.setValue(n,{value:r})}));r.addEventListener("resetform",(t=>{const n=e.defaultFieldValue;t.target.checked=null!=n&&n===e.buttonValue}));if(this.enableScripting&&this.hasJSActions){const i=e.buttonValue;r.addEventListener("updatefromsandbox",(e=>{const r={value:e=>{const r=i===e.detail.value;for(const i of this._getElementsByName(e.target.name)){const e=r&&i.id===n;i.domElement&&(i.domElement.checked=e);t.setValue(i.id,{value:e})}}};this._dispatchEventFromSandbox(r,e)}));this._setEventListeners(r,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(r);this._setDefaultPropertiesFromJS(r);this.container.append(r);return this.container}}class PushButtonWidgetAnnotationElement extends LinkAnnotationElement{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");this.data.alternativeText&&(t.title=this.data.alternativeText);const e=t.lastChild;if(this.enableScripting&&this.hasJSActions&&e){this._setDefaultPropertiesFromJS(e);e.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({},t)}))}return t}}class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,n=t.getValue(e,{value:this.data.fieldValue}),i=document.createElement("select");h.add(i);i.setAttribute("data-element-id",e);i.disabled=this.data.readOnly;this._setRequired(i,this.data.required);i.name=this.data.baseFieldName||this.data.fieldName;i.tabIndex=c;let r=this.data.combo&&this.data.options.length>0;if(!this.data.combo){i.size=this.data.options.length;this.data.multiSelect&&(i.multiple=!0)}i.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue;for(const t of i.options)t.selected=t.value===e}));for(const t of this.data.options){const e=document.createElement("option");e.textContent=t.displayValue;e.value=t.exportValue;if(n.value.includes(t.exportValue)){e.setAttribute("selected",!0);r=!1}i.append(e)}let s=null;if(r){const t=document.createElement("option");t.value=" ";t.setAttribute("hidden",!0);t.setAttribute("selected",!0);i.prepend(t);s=()=>{t.remove();i.removeEventListener("input",s);s=null};i.addEventListener("input",s)}const getValue=t=>{const e=t?"value":"textContent",{options:n,multiple:r}=i;return r?Array.prototype.filter.call(n,(t=>t.selected)).map((t=>t[e])):-1===n.selectedIndex?null:n[n.selectedIndex][e]};let a=getValue(!1);const getItems=t=>{const e=t.target.options;return Array.prototype.map.call(e,(t=>({displayValue:t.textContent,exportValue:t.value})))};if(this.enableScripting&&this.hasJSActions){i.addEventListener("updatefromsandbox",(n=>{const r={value(n){s?.();const r=n.detail.value,o=new Set(Array.isArray(r)?r:[r]);for(const t of i.options)t.selected=o.has(t.value);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},multipleSelection(t){i.multiple=!0},remove(n){const r=i.options,s=n.detail.remove;r[s].selected=!1;i.remove(s);if(r.length>0){-1===Array.prototype.findIndex.call(r,(t=>t.selected))&&(r[0].selected=!0)}t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},clear(n){for(;0!==i.length;)i.remove(0);t.setValue(e,{value:null,items:[]});a=getValue(!1)},insert(n){const{index:r,displayValue:s,exportValue:o}=n.detail.insert,l=i.children[r],c=document.createElement("option");c.textContent=s;c.value=o;l?l.before(c):i.append(c);t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},items(n){const{items:r}=n.detail;for(;0!==i.length;)i.remove(0);for(const t of r){const{displayValue:e,exportValue:n}=t,r=document.createElement("option");r.textContent=e;r.value=n;i.append(r)}i.options.length>0&&(i.options[0].selected=!0);t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},indices(n){const i=new Set(n.detail.indices);for(const t of n.target.options)t.selected=i.has(t.index);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(r,n)}));i.addEventListener("input",(n=>{const i=getValue(!0);t.setValue(e,{value:i});n.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:a,changeEx:i,willCommit:!1,commitKey:1,keyDown:!1}})}));this._setEventListeners(i,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(t=>t.target.value))}else i.addEventListener("input",(function(n){t.setValue(e,{value:getValue(!0)})}));this.data.combo&&this._setTextStyle(i);this._setBackgroundColor(i);this._setDefaultPropertiesFromJS(i);this.container.append(i);return this.container}}class PopupAnnotationElement extends AnnotationElement{constructor(t){const{data:e,elements:n}=t;super(t,{isRenderable:!!(e.titleObj?.str||e.contentsObj?.str||e.richText?.str)});this.elements=n}render(){this.container.classList.add("popupAnnotation");const t=new PopupElement({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),e=[];for(const n of this.elements){n.popup=t;e.push(n.data.id);n.addHighlightArea()}this.container.setAttribute("aria-controls",e.join(","));return this.container}}class PopupElement{#Ne=null;#Be=this.#je.bind(this);#Ue=this.#ze.bind(this);#He=this.#qe.bind(this);#Se=null;#bt=null;#We=null;#Ge=null;#Ve=null;#$e=null;#Xe=!1;#Ke=null;#Ye=null;#Je=null;#Qe=null;#Ze=!1;constructor(t){let{container:e,color:n,elements:i,titleObj:s,modificationDate:a,contentsObj:o,richText:l,parent:c,rect:h,parentRect:d,open:u}=t;this.#bt=e;this.#Qe=s;this.#We=o;this.#Je=l;this.#Ve=c;this.#Se=n;this.#Ye=h;this.#$e=d;this.#Ge=i;const p=r.PDFDateString.toDateObject(a);p&&(this.#Ne=c.l10n.get("annotation_date_string",{date:p.toLocaleDateString(),time:p.toLocaleTimeString()}));this.trigger=i.flatMap((t=>t.getElementsToTriggerPopup()));for(const t of this.trigger){t.addEventListener("click",this.#He);t.addEventListener("mouseenter",this.#Ue);t.addEventListener("mouseleave",this.#Be)}this.#bt.hidden=!0;u&&this.#qe()}render(){if(this.#Ke)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:n,pageX:r,pageY:s}}}=this.#Ve,a=this.#Ke=document.createElement("div");a.className="popup";if(this.#Se){const t=a.style.outlineColor=i.Util.makeHexColor(...this.#Se);if(CSS.supports("background-color","color-mix(in srgb, red 30%, white)"))a.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`;else{const t=.7;a.style.backgroundColor=i.Util.makeHexColor(...this.#Se.map((e=>Math.floor(t*(255-e)+e))))}}const o=document.createElement("span");o.className="header";const c=document.createElement("h1");o.append(c);({dir:c.dir,str:c.textContent}=this.#Qe);a.append(o);if(this.#Ne){const t=document.createElement("span");t.classList.add("popupDate");this.#Ne.then((e=>{t.textContent=e}));o.append(t)}const h=this.#We,d=this.#Je;if(!d?.str||h?.str&&h.str!==d.str){const t=this._formatContents(h);a.append(t)}else{l.XfaLayer.render({xfaHtml:d.html,intent:"richText",div:a});a.lastChild.classList.add("richText","popupContent")}let u=!!this.#$e,p=u?this.#$e:this.#Ye;for(const t of this.#Ge)if(!p||null!==i.Util.intersect(t.data.rect,p)){p=t.data.rect;u=!0;break}const f=i.Util.normalizeRect([p[0],t[3]-p[1]+t[1],p[2],t[3]-p[3]+t[1]]),g=u?p[2]-p[0]+5:0,m=f[0]+g,b=f[1],{style:v}=this.#bt;v.left=100*(m-r)/e+"%";v.top=100*(b-s)/n+"%";this.#bt.append(a)}_formatContents(t){let{str:e,dir:n}=t;const i=document.createElement("p");i.classList.add("popupContent");i.dir=n;const r=e.split(/(?:\r\n?|\n)/);for(let t=0,e=r.length;t0&&this.#on.set(n.data.id,n);const r=n.render();t.hidden&&(r.style.visibility="hidden");this.#ln(r,t.id)}this.#cn();await this.l10n.translate(n)}update(t){let{viewport:e}=t;const n=this.div;this.viewport=e;(0,r.setLayerDimensions)(n,{rotation:e.rotation});this.#cn();n.hidden=!1}#cn(){if(!this.#an)return;const t=this.div;for(const[e,n]of this.#an){const i=t.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;const{firstChild:r}=i;r?"CANVAS"===r.nodeName?r.replaceWith(n):r.before(n):i.append(n)}this.#an.clear()}getEditableAnnotations(){return Array.from(this.#on.values())}getEditableAnnotation(t){return this.#on.get(t)}}},(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.ColorConverters=void 0;function makeColorComp(t){return Math.floor(255*Math.max(0,Math.min(1,t))).toString(16).padStart(2,"0")}e.ColorConverters=class ColorConverters{static CMYK_G(t){let[e,n,i,r]=t;return["G",1-Math.min(1,.3*e+.59*i+.11*n+r)]}static G_CMYK(t){let[e]=t;return["CMYK",0,0,0,1-e]}static G_RGB(t){let[e]=t;return["RGB",e,e,e]}static G_HTML(t){let[e]=t;const n=makeColorComp(e);return`#${n}${n}${n}`}static RGB_G(t){let[e,n,i]=t;return["G",.3*e+.59*n+.11*i]}static RGB_HTML(t){let[e,n,i]=t;return`#${makeColorComp(e)}${makeColorComp(n)}${makeColorComp(i)}`}static T_HTML(){return"#00000000"}static CMYK_RGB(t){let[e,n,i,r]=t;return["RGB",1-Math.min(1,e+r),1-Math.min(1,i+r),1-Math.min(1,n+r)]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK(t){let[e,n,i]=t;const r=1-e,s=1-n,a=1-i;return["CMYK",r,s,a,Math.min(r,s,a)]}}},(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.NullL10n=void 0;e.getL10nFallback=getL10nFallback;const n={of_pages:"of {{pagesCount}}",page_of_pages:"({{pageNumber}} of {{pagesCount}})",document_properties_kb:"{{size_kb}} KB ({{size_b}} bytes)",document_properties_mb:"{{size_mb}} MB ({{size_b}} bytes)",document_properties_date_string:"{{date}}, {{time}}",document_properties_page_size_unit_inches:"in",document_properties_page_size_unit_millimeters:"mm",document_properties_page_size_orientation_portrait:"portrait",document_properties_page_size_orientation_landscape:"landscape",document_properties_page_size_name_a3:"A3",document_properties_page_size_name_a4:"A4",document_properties_page_size_name_letter:"Letter",document_properties_page_size_name_legal:"Legal",document_properties_page_size_dimension_string:"{{width}} × {{height}} {{unit}} ({{orientation}})",document_properties_page_size_dimension_name_string:"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})",document_properties_linearized_yes:"Yes",document_properties_linearized_no:"No",additional_layers:"Additional Layers",page_landmark:"Page {{page}}",thumb_page_title:"Page {{page}}",thumb_page_canvas:"Thumbnail of Page {{page}}",find_reached_top:"Reached top of document, continued from bottom",find_reached_bottom:"Reached end of document, continued from top","find_match_count[one]":"{{current}} of {{total}} match","find_match_count[other]":"{{current}} of {{total}} matches","find_match_count_limit[one]":"More than {{limit}} match","find_match_count_limit[other]":"More than {{limit}} matches",find_not_found:"Phrase not found",page_scale_width:"Page Width",page_scale_fit:"Page Fit",page_scale_auto:"Automatic Zoom",page_scale_actual:"Actual Size",page_scale_percent:"{{scale}}%",loading_error:"An error occurred while loading the PDF.",invalid_file_error:"Invalid or corrupted PDF file.",missing_file_error:"Missing PDF file.",unexpected_response_error:"Unexpected server response.",rendering_error:"An error occurred while rendering the page.",annotation_date_string:"{{date}}, {{time}}",printing_not_supported:"Warning: Printing is not fully supported by this browser.",printing_not_ready:"Warning: The PDF is not fully loaded for printing.",web_fonts_disabled:"Web fonts are disabled: unable to use embedded PDF fonts.",free_text2_default_content:"Start typing…",editor_free_text2_aria_label:"Text Editor",editor_ink2_aria_label:"Draw Editor",editor_ink_canvas_aria_label:"User-created image",print_progress_percent:"{{progress}}%"};function getL10nFallback(t,e){switch(t){case"find_match_count":t=`find_match_count[${1===e.total?"one":"other"}]`;break;case"find_match_count_limit":t=`find_match_count_limit[${1===e.limit?"one":"other"}]`}return n[t]||""}const i={getLanguage:async()=>"en-us",getDirection:async()=>"ltr",async get(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function formatL10nValue(t,e){return e?t.replaceAll(/\{\{\s*(\w+)\s*\}\}/g,((t,n)=>n in e?e[n]:"{{"+n+"}}")):t}(arguments.length>2&&void 0!==arguments[2]?arguments[2]:getL10nFallback(t,e),e)},async translate(t){}};e.NullL10n=i},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.XfaLayer=void 0;n(89);var i=n(193);e.XfaLayer=class XfaLayer{static setupStorage(t,e,n,i,r){const s=i.getValue(e,{value:null});switch(n.name){case"textarea":null!==s.value&&(t.textContent=s.value);if("print"===r)break;t.addEventListener("input",(t=>{i.setValue(e,{value:t.target.value})}));break;case"input":if("radio"===n.attributes.type||"checkbox"===n.attributes.type){s.value===n.attributes.xfaOn?t.setAttribute("checked",!0):s.value===n.attributes.xfaOff&&t.removeAttribute("checked");if("print"===r)break;t.addEventListener("change",(t=>{i.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})}))}else{null!==s.value&&t.setAttribute("value",s.value);if("print"===r)break;t.addEventListener("input",(t=>{i.setValue(e,{value:t.target.value})}))}break;case"select":if(null!==s.value){t.setAttribute("value",s.value);for(const t of n.children)t.attributes.value===s.value?t.attributes.selected=!0:t.attributes.hasOwnProperty("selected")&&delete t.attributes.selected}t.addEventListener("input",(t=>{const n=t.target.options,r=-1===n.selectedIndex?"":n[n.selectedIndex].value;i.setValue(e,{value:r})}))}}static setAttributes(t){let{html:e,element:n,storage:i=null,intent:r,linkService:s}=t;const{attributes:a}=n,o=e instanceof HTMLAnchorElement;"radio"===a.type&&(a.name=`${a.name}-${r}`);for(const[t,n]of Object.entries(a))if(null!=n)switch(t){case"class":n.length&&e.setAttribute(t,n.join(" "));break;case"dataId":break;case"id":e.setAttribute("data-element-id",n);break;case"style":Object.assign(e.style,n);break;case"textContent":e.textContent=n;break;default:(!o||"href"!==t&&"newWindow"!==t)&&e.setAttribute(t,n)}o&&s.addLinkAttributes(e,a.href,a.newWindow);i&&a.dataId&&this.setupStorage(e,a.dataId,n,i)}static render(t){const e=t.annotationStorage,n=t.linkService,r=t.xfaHtml,s=t.intent||"display",a=document.createElement(r.name);r.attributes&&this.setAttributes({html:a,element:r,intent:s,linkService:n});const o=[[r,-1,a]],l=t.div;l.append(a);if(t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;l.style.transform=e}"richText"!==s&&l.setAttribute("class","xfaLayer xfaFont");const c=[];for(;o.length>0;){const[t,r,a]=o.at(-1);if(r+1===t.children.length){o.pop();continue}const l=t.children[++o.at(-1)[1]];if(null===l)continue;const{name:h}=l;if("#text"===h){const t=document.createTextNode(l.value);c.push(t);a.append(t);continue}const d=l?.attributes?.xmlns?document.createElementNS(l.attributes.xmlns,h):document.createElement(h);a.append(d);l.attributes&&this.setAttributes({html:d,element:l,storage:e,intent:s,linkService:n});if(l.children&&l.children.length>0)o.push([l,-1,d]);else if(l.value){const t=document.createTextNode(l.value);i.XfaText.shouldBuildText(h)&&c.push(t);d.append(t)}}for(const t of l.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))t.setAttribute("readOnly",!0);return{textDivs:c}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e;t.div.hidden=!1}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.InkEditor=void 0;n(89);n(2);var i=n(1),r=n(163),s=n(197),a=n(164);class InkEditor extends r.AnnotationEditor{#hn=0;#dn=0;#un=this.canvasContextMenu.bind(this);#pn=this.canvasPointermove.bind(this);#fn=this.canvasPointerleave.bind(this);#gn=this.canvasPointerup.bind(this);#mn=this.canvasPointerdown.bind(this);#bn=new Path2D;#vn=!1;#yn=!1;#An=!1;#_n=null;#Sn=0;#En=0;#xn=null;static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=1;static _l10nPromise;static _type="ink";constructor(t){super({...t,name:"inkEditor"});this.color=t.color||null;this.thickness=t.thickness||null;this.opacity=t.opacity||null;this.paths=[];this.bezierPath2D=[];this.allRawPaths=[];this.currentPath=[];this.scaleFactor=1;this.translationX=this.translationY=0;this.x=0;this.y=0;this._willKeepAspectRatio=!0}static initialize(t){this._l10nPromise=new Map(["editor_ink_canvas_aria_label","editor_ink2_aria_label"].map((e=>[e,t.get(e)])))}static updateDefaultParams(t,e){switch(t){case i.AnnotationEditorParamsType.INK_THICKNESS:InkEditor._defaultThickness=e;break;case i.AnnotationEditorParamsType.INK_COLOR:InkEditor._defaultColor=e;break;case i.AnnotationEditorParamsType.INK_OPACITY:InkEditor._defaultOpacity=e/100}}updateParams(t,e){switch(t){case i.AnnotationEditorParamsType.INK_THICKNESS:this.#wn(e);break;case i.AnnotationEditorParamsType.INK_COLOR:this.#Pe(e);break;case i.AnnotationEditorParamsType.INK_OPACITY:this.#Cn(e)}}static get defaultPropertiesToUpdate(){return[[i.AnnotationEditorParamsType.INK_THICKNESS,InkEditor._defaultThickness],[i.AnnotationEditorParamsType.INK_COLOR,InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor],[i.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*InkEditor._defaultOpacity)]]}get propertiesToUpdate(){return[[i.AnnotationEditorParamsType.INK_THICKNESS,this.thickness||InkEditor._defaultThickness],[i.AnnotationEditorParamsType.INK_COLOR,this.color||InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor],[i.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*(this.opacity??InkEditor._defaultOpacity))]]}#wn(t){const e=this.thickness;this.addCommands({cmd:()=>{this.thickness=t;this.#Tn()},undo:()=>{this.thickness=e;this.#Tn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}#Pe(t){const e=this.color;this.addCommands({cmd:()=>{this.color=t;this.#Pn()},undo:()=>{this.color=e;this.#Pn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}#Cn(t){t/=100;const e=this.opacity;this.addCommands({cmd:()=>{this.opacity=t;this.#Pn()},undo:()=>{this.opacity=e;this.#Pn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}rebuild(){super.rebuild();if(null!==this.div){if(!this.canvas){this.#kn();this.#Mn()}if(!this.isAttachedToDOM){this.parent.add(this);this.#Rn()}this.#Tn()}}remove(){if(null!==this.canvas){this.isEmpty()||this.commit();this.canvas.width=this.canvas.height=0;this.canvas.remove();this.canvas=null;this.#_n.disconnect();this.#_n=null;super.remove()}}setParent(t){!this.parent&&t?this._uiManager.removeShouldRescale(this):this.parent&&null===t&&this._uiManager.addShouldRescale(this);super.setParent(t)}onScaleChanging(){const[t,e]=this.parentDimensions,n=this.width*t,i=this.height*e;this.setDimensions(n,i)}enableEditMode(){if(!this.#vn&&null!==this.canvas){super.enableEditMode();this.div.draggable=!1;this.canvas.addEventListener("pointerdown",this.#mn)}}disableEditMode(){if(this.isInEditMode()&&null!==this.canvas){super.disableEditMode();this.div.draggable=!this.isEmpty();this.div.classList.remove("editing");this.canvas.removeEventListener("pointerdown",this.#mn)}}onceAdded(){this.div.draggable=!this.isEmpty()}isEmpty(){return 0===this.paths.length||1===this.paths.length&&0===this.paths[0].length}#Fn(){const{parentRotation:t,parentDimensions:[e,n]}=this;switch(t){case 90:return[0,n,n,e];case 180:return[e,n,e,n];case 270:return[e,0,n,e];default:return[0,0,e,n]}}#In(){const{ctx:t,color:e,opacity:n,thickness:i,parentScale:r,scaleFactor:s}=this;t.lineWidth=i*r/s;t.lineCap="round";t.lineJoin="round";t.miterLimit=10;t.strokeStyle=`${e}${(0,a.opacityToHex)(n)}`}#Dn(t,e){this.canvas.addEventListener("contextmenu",this.#un);this.canvas.addEventListener("pointerleave",this.#fn);this.canvas.addEventListener("pointermove",this.#pn);this.canvas.addEventListener("pointerup",this.#gn);this.canvas.removeEventListener("pointerdown",this.#mn);this.isEditing=!0;if(!this.#An){this.#An=!0;this.#Rn();this.thickness||=InkEditor._defaultThickness;this.color||=InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor;this.opacity??=InkEditor._defaultOpacity}this.currentPath.push([t,e]);this.#yn=!1;this.#In();this.#xn=()=>{this.#On();this.#xn&&window.requestAnimationFrame(this.#xn)};window.requestAnimationFrame(this.#xn)}#Ln(t,e){const[n,i]=this.currentPath.at(-1);if(this.currentPath.length>1&&t===n&&e===i)return;const r=this.currentPath;let s=this.#bn;r.push([t,e]);this.#yn=!0;if(r.length<=2){s.moveTo(...r[0]);s.lineTo(t,e)}else{if(3===r.length){this.#bn=s=new Path2D;s.moveTo(...r[0])}this.#Nn(s,...r.at(-3),...r.at(-2),t,e)}}#Bn(){if(0===this.currentPath.length)return;const t=this.currentPath.at(-1);this.#bn.lineTo(...t)}#jn(t,e){this.#xn=null;t=Math.min(Math.max(t,0),this.canvas.width);e=Math.min(Math.max(e,0),this.canvas.height);this.#Ln(t,e);this.#Bn();let n;if(1!==this.currentPath.length)n=this.#Un();else{const i=[t,e];n=[[i,i.slice(),i.slice(),i]]}const i=this.#bn,r=this.currentPath;this.currentPath=[];this.#bn=new Path2D;this.addCommands({cmd:()=>{this.allRawPaths.push(r);this.paths.push(n);this.bezierPath2D.push(i);this.rebuild()},undo:()=>{this.allRawPaths.pop();this.paths.pop();this.bezierPath2D.pop();if(0===this.paths.length)this.remove();else{if(!this.canvas){this.#kn();this.#Mn()}this.#Tn()}},mustExec:!0})}#On(){if(!this.#yn)return;this.#yn=!1;const t=Math.ceil(this.thickness*this.parentScale),e=this.currentPath.slice(-3),n=e.map((t=>t[0])),i=e.map((t=>t[1])),{ctx:r}=(Math.min(...n),Math.max(...n),Math.min(...i),Math.max(...i),this);r.save();r.clearRect(0,0,this.canvas.width,this.canvas.height);for(const t of this.bezierPath2D)r.stroke(t);r.stroke(this.#bn);r.restore()}#Nn(t,e,n,i,r,s,a){const o=(e+i)/2,l=(n+r)/2,c=(i+s)/2,h=(r+a)/2;t.bezierCurveTo(o+2*(i-o)/3,l+2*(r-l)/3,c+2*(i-c)/3,h+2*(r-h)/3,c,h)}#Un(){const t=this.currentPath;if(t.length<=2)return[[t[0],t[0],t.at(-1),t.at(-1)]];const e=[];let n,[i,r]=t[0];for(n=1;n{this.canvas.removeEventListener("contextmenu",this.#un)}),10);this.#jn(t.offsetX,t.offsetY);this.addToAnnotationStorage();this.setInBackground()}#kn(){this.canvas=document.createElement("canvas");this.canvas.width=this.canvas.height=0;this.canvas.className="inkEditorCanvas";InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then((t=>this.canvas?.setAttribute("aria-label",t)));this.div.append(this.canvas);this.ctx=this.canvas.getContext("2d")}#Mn(){this.#_n=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.setDimensions(e.width,e.height)}));this.#_n.observe(this.div)}get isResizable(){return!this.isEmpty()&&this.#vn}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();InkEditor._l10nPromise.get("editor_ink2_aria_label").then((t=>this.div?.setAttribute("aria-label",t)));const[n,i,r,s]=this.#Fn();this.setAt(n,i,0,0);this.setDims(r,s);this.#kn();if(this.width){const[n,i]=this.parentDimensions;this.setAspectRatio(this.width*n,this.height*i);this.setAt(t*n,e*i,this.width*n,this.height*i);this.#An=!0;this.#Rn();this.setDims(this.width*n,this.height*i);this.#Pn();this.div.classList.add("disabled")}else{this.div.classList.add("editing");this.enableEditMode()}this.#Mn();return this.div}#Rn(){if(!this.#An)return;const[t,e]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*t);this.canvas.height=Math.ceil(this.height*e);this.#zn()}setDimensions(t,e){const n=Math.round(t),i=Math.round(e);if(this.#Sn===n&&this.#En===i)return;this.#Sn=n;this.#En=i;this.canvas.style.visibility="hidden";const[r,s]=this.parentDimensions;this.width=t/r;this.height=e/s;this.fixAndSetPosition();this.#vn&&this.#qn(t,e);this.#Rn();this.#Pn();this.canvas.style.visibility="visible";this.fixDims()}#qn(t,e){const n=this.#Wn(),i=(t-n)/this.#dn,r=(e-n)/this.#hn;this.scaleFactor=Math.min(i,r)}#zn(){const t=this.#Wn()/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+t,this.translationY*this.scaleFactor+t)}static#Gn(t){const e=new Path2D;for(let n=0,i=t.length;n0&&void 0!==arguments[0]&&arguments[0];if(this.isEmpty())return;if(!this.#vn){this.#Pn();return}const e=this.#Kn(),n=this.#Wn();this.#dn=Math.max(r.AnnotationEditor.MIN_SIZE,e[2]-e[0]);this.#hn=Math.max(r.AnnotationEditor.MIN_SIZE,e[3]-e[1]);const i=Math.ceil(n+this.#dn*this.scaleFactor),s=Math.ceil(n+this.#hn*this.scaleFactor),[a,o]=this.parentDimensions;this.width=i/a;this.height=s/o;this.setAspectRatio(i,s);const l=this.translationX,c=this.translationY;this.translationX=-e[0];this.translationY=-e[1];this.#Rn();this.#Pn();this.#Sn=i;this.#En=s;this.setDims(i,s);const h=t?n/this.scaleFactor/2:0;this.translate(l-this.translationX-h,c-this.translationY-h)}static deserialize(t,e,n){if(t instanceof s.InkAnnotationElement)return null;const a=super.deserialize(t,e,n);a.thickness=t.thickness;a.color=i.Util.makeHexColor(...t.color);a.opacity=t.opacity;const[o,l]=a.pageDimensions,c=a.width*o,h=a.height*l,d=a.parentScale,u=t.thickness/2;a.#vn=!0;a.#Sn=Math.round(c);a.#En=Math.round(h);const{paths:p,rect:f,rotation:g}=t;for(let{bezier:t}of p){t=InkEditor.#$n(t,f,g);const e=[];a.paths.push(e);let n=d*(t[0]-u),i=d*(t[1]-u);for(let r=2,s=t.length;r{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StampEditor=void 0;n(148);n(151);var i=n(163),r=n(1),s=n(167),a=n(197);class StampEditor extends i.AnnotationEditor{#Yn=null;#Jn=null;#Qn=null;#Zn=null;#ti=null;#_n=null;#ei=null;#ni=!1;static _type="stamp";constructor(t){super({...t,name:"stampEditor"});this.#Zn=t.bitmapUrl}#ii(){if(this.#Jn){this._uiManager.imageManager.getFromId(this.#Jn).then((t=>{if(t){this.#Yn=t.bitmap;this.#kn()}else this.remove()}));return}if(this.#Zn){const t=this.#Zn;this.#Zn=null;this.#Qn=this._uiManager.imageManager.getFromUrl(t).then((t=>{this.#Qn=null;if(t){({bitmap:this.#Yn,id:this.#Jn,isSvg:this.#ni}=t);this.#kn()}else this.remove()}));return}const t=document.createElement("input");t.type="file";t.accept="image/*";this.#Qn=new Promise((e=>{t.addEventListener("change",(async()=>{this.#Qn=null;if(t.files&&0!==t.files.length){const e=await this._uiManager.imageManager.getFromFile(t.files[0]);if(!e){this.remove();return}({bitmap:this.#Yn,id:this.#Jn,isSvg:this.#ni}=e);this.#kn()}else this.remove();e()}));t.addEventListener("cancel",(()=>{this.#Qn=null;this.remove();e()}))}));t.click()}remove(){if(this.#Jn){this.#Yn=null;this._uiManager.imageManager.deleteId(this.#Jn);this.#ti?.remove();this.#ti=null;this.#_n?.disconnect();this.#_n=null}super.remove()}rebuild(){super.rebuild();if(null!==this.div){this.#Jn&&this.#ii();this.isAttachedToDOM||this.parent.add(this)}}onceAdded(){this.div.draggable=!0;this.parent.addUndoableEditor(this);this.div.focus()}isEmpty(){return null===this.#Qn&&null===this.#Yn&&null===this.#Zn}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();if(this.#Yn)this.#kn();else{this.div.classList.add("loading");this.#ii()}if(this.width){const[n,i]=this.parentDimensions;this.setAt(t*n,e*i,this.width*n,this.height*i)}return this.div}#kn(){const{div:t}=this;let{width:e,height:n}=this.#Yn;const[i,r]=this.pageDimensions,s=.75;if(this.width){e=this.width*i;n=this.height*r}else if(e>s*i||n>s*r){const t=Math.min(s*i/e,s*r/n);e*=t;n*=t}const[a,o]=this.parentDimensions;this.setDims(e*a/i,n*o/r);const l=this.#ti=document.createElement("canvas");t.append(l);this.#ri(e,n);this.#Mn();t.classList.remove("loading")}#si(t,e){const[n,i]=this.parentDimensions;this.width=t/n;this.height=e/i;this.setDims(t,e);this.fixAndSetPosition();null!==this.#ei&&clearTimeout(this.#ei);this.#ei=setTimeout((()=>{this.#ei=null;this.#ri(t,e)}),200)}#ai(t,e){const{width:n,height:i}=this.#Yn;let r=n,s=i,a=this.#Yn;for(;r>2*t||s>2*e;){const n=r,i=s;r>2*t&&(r=r>=16384?Math.floor(r/2)-1:Math.ceil(r/2));s>2*e&&(s=s>=16384?Math.floor(s/2)-1:Math.ceil(s/2));const o=new OffscreenCanvas(r,s);o.getContext("2d").drawImage(a,0,0,n,i,0,0,r,s);a=o.transferToImageBitmap()}return a}#ri(t,e){const n=this.#ti;if(!n||n.width===t&&n.height===e)return;n.width=t;n.height=e;const i=this.#ni?this.#Yn:this.#ai(t,e),r=n.getContext("2d");r.filter=this._uiManager.hcmFilter;r.drawImage(i,0,0,i.width,i.height,0,0,t,e)}#oi(t){if(t){if(this.#ni){const t=this._uiManager.imageManager.getSvgUrl(this.#Jn);if(t)return t}const t=document.createElement("canvas");({width:t.width,height:t.height}=this.#Yn);t.getContext("2d").drawImage(this.#Yn,0,0);return t.toDataURL()}if(this.#ni){const[t,e]=this.pageDimensions,n=Math.round(this.width*t*s.PixelsPerInch.PDF_TO_CSS_UNITS),i=Math.round(this.height*e*s.PixelsPerInch.PDF_TO_CSS_UNITS),r=new OffscreenCanvas(n,i);r.getContext("2d").drawImage(this.#Yn,0,0,this.#Yn.width,this.#Yn.height,0,0,n,i);return r.transferToImageBitmap()}return structuredClone(this.#Yn)}#Mn(){this.#_n=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.#si(e.width,e.height)}));this.#_n.observe(this.div)}static deserialize(t,e,n){if(t instanceof a.StampAnnotationElement)return null;const i=super.deserialize(t,e,n),{rect:r,bitmapUrl:s,bitmapId:o,isSvg:l}=t;o&&n.imageManager.isValidId(o)?i.#Jn=o:i.#Zn=s;i.#ni=l;const[c,h]=i.pageDimensions;i.width=(r[2]-r[0])/c;i.height=(r[3]-r[1])/h;return i}serialize(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.isEmpty())return null;const n={annotationType:r.AnnotationEditorType.STAMP,bitmapId:this.#Jn,pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:this.#ni};if(t){n.bitmapUrl=this.#oi(!0);return n}if(null===e)return n;e.stamps||=new Map;const i=this.#ni?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(e.stamps.has(this.#Jn)){if(this.#ni){const t=e.stamps.get(this.#Jn);if(i>t.area){t.area=i;t.serialized.bitmap.close();t.serialized.bitmap=this.#oi(!1)}}}else{e.stamps.set(this.#Jn,{area:i,serialized:n});n.bitmap=this.#oi(!1)}return n}}e.StampEditor=StampEditor}],__webpack_module_cache__={};function __w_pdfjs_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={exports:{}};__webpack_modules__[t].call(n.exports,n,n.exports,__w_pdfjs_require__);return n.exports}var __webpack_exports__={};(()=>{"use strict";var t=__webpack_exports__;Object.defineProperty(t,"__esModule",{value:!0});Object.defineProperty(t,"AbortException",{enumerable:!0,get:function(){return e.AbortException}});Object.defineProperty(t,"AnnotationEditorLayer",{enumerable:!0,get:function(){return s.AnnotationEditorLayer}});Object.defineProperty(t,"AnnotationEditorParamsType",{enumerable:!0,get:function(){return e.AnnotationEditorParamsType}});Object.defineProperty(t,"AnnotationEditorType",{enumerable:!0,get:function(){return e.AnnotationEditorType}});Object.defineProperty(t,"AnnotationEditorUIManager",{enumerable:!0,get:function(){return a.AnnotationEditorUIManager}});Object.defineProperty(t,"AnnotationLayer",{enumerable:!0,get:function(){return o.AnnotationLayer}});Object.defineProperty(t,"AnnotationMode",{enumerable:!0,get:function(){return e.AnnotationMode}});Object.defineProperty(t,"CMapCompressionType",{enumerable:!0,get:function(){return e.CMapCompressionType}});Object.defineProperty(t,"FeatureTest",{enumerable:!0,get:function(){return e.FeatureTest}});Object.defineProperty(t,"GlobalWorkerOptions",{enumerable:!0,get:function(){return l.GlobalWorkerOptions}});Object.defineProperty(t,"ImageKind",{enumerable:!0,get:function(){return e.ImageKind}});Object.defineProperty(t,"InvalidPDFException",{enumerable:!0,get:function(){return e.InvalidPDFException}});Object.defineProperty(t,"MissingPDFException",{enumerable:!0,get:function(){return e.MissingPDFException}});Object.defineProperty(t,"OPS",{enumerable:!0,get:function(){return e.OPS}});Object.defineProperty(t,"PDFDataRangeTransport",{enumerable:!0,get:function(){return n.PDFDataRangeTransport}});Object.defineProperty(t,"PDFDateString",{enumerable:!0,get:function(){return i.PDFDateString}});Object.defineProperty(t,"PDFWorker",{enumerable:!0,get:function(){return n.PDFWorker}});Object.defineProperty(t,"PasswordResponses",{enumerable:!0,get:function(){return e.PasswordResponses}});Object.defineProperty(t,"PermissionFlag",{enumerable:!0,get:function(){return e.PermissionFlag}});Object.defineProperty(t,"PixelsPerInch",{enumerable:!0,get:function(){return i.PixelsPerInch}});Object.defineProperty(t,"PromiseCapability",{enumerable:!0,get:function(){return e.PromiseCapability}});Object.defineProperty(t,"RenderingCancelledException",{enumerable:!0,get:function(){return i.RenderingCancelledException}});Object.defineProperty(t,"SVGGraphics",{enumerable:!0,get:function(){return n.SVGGraphics}});Object.defineProperty(t,"UnexpectedResponseException",{enumerable:!0,get:function(){return e.UnexpectedResponseException}});Object.defineProperty(t,"Util",{enumerable:!0,get:function(){return e.Util}});Object.defineProperty(t,"VerbosityLevel",{enumerable:!0,get:function(){return e.VerbosityLevel}});Object.defineProperty(t,"XfaLayer",{enumerable:!0,get:function(){return c.XfaLayer}});Object.defineProperty(t,"build",{enumerable:!0,get:function(){return n.build}});Object.defineProperty(t,"createValidAbsoluteUrl",{enumerable:!0,get:function(){return e.createValidAbsoluteUrl}});Object.defineProperty(t,"getDocument",{enumerable:!0,get:function(){return n.getDocument}});Object.defineProperty(t,"getFilenameFromUrl",{enumerable:!0,get:function(){return i.getFilenameFromUrl}});Object.defineProperty(t,"getPdfFilenameFromUrl",{enumerable:!0,get:function(){return i.getPdfFilenameFromUrl}});Object.defineProperty(t,"getXfaPageViewport",{enumerable:!0,get:function(){return i.getXfaPageViewport}});Object.defineProperty(t,"isDataScheme",{enumerable:!0,get:function(){return i.isDataScheme}});Object.defineProperty(t,"isPdfFile",{enumerable:!0,get:function(){return i.isPdfFile}});Object.defineProperty(t,"loadScript",{enumerable:!0,get:function(){return i.loadScript}});Object.defineProperty(t,"normalizeUnicode",{enumerable:!0,get:function(){return e.normalizeUnicode}});Object.defineProperty(t,"renderTextLayer",{enumerable:!0,get:function(){return r.renderTextLayer}});Object.defineProperty(t,"setLayerDimensions",{enumerable:!0,get:function(){return i.setLayerDimensions}});Object.defineProperty(t,"shadow",{enumerable:!0,get:function(){return e.shadow}});Object.defineProperty(t,"updateTextLayer",{enumerable:!0,get:function(){return r.updateTextLayer}});Object.defineProperty(t,"version",{enumerable:!0,get:function(){return n.version}});var e=__w_pdfjs_require__(1),n=__w_pdfjs_require__(124),i=__w_pdfjs_require__(167),r=__w_pdfjs_require__(194),s=__w_pdfjs_require__(195),a=__w_pdfjs_require__(164),o=__w_pdfjs_require__(197),l=__w_pdfjs_require__(175),c=__w_pdfjs_require__(200)})();return __webpack_exports__})())); \ No newline at end of file +!function webpackUniversalModuleDefinition(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf",[],e):"object"==typeof exports?exports["pdfjs-dist/build/pdf"]=e():t["pdfjs-dist/build/pdf"]=t.pdfjsLib=e()}(globalThis,(()=>(()=>{var __webpack_modules__=[,(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.VerbosityLevel=e.Util=e.UnknownErrorException=e.UnexpectedResponseException=e.TextRenderingMode=e.RenderingIntentFlag=e.PromiseCapability=e.PermissionFlag=e.PasswordResponses=e.PasswordException=e.PageActionEventType=e.OPS=e.MissingPDFException=e.MAX_IMAGE_SIZE_TO_CACHE=e.LINE_FACTOR=e.LINE_DESCENT_FACTOR=e.InvalidPDFException=e.ImageKind=e.IDENTITY_MATRIX=e.FormatError=e.FeatureTest=e.FONT_IDENTITY_MATRIX=e.DocumentActionEventType=e.CMapCompressionType=e.BaseException=e.BASELINE_FACTOR=e.AnnotationType=e.AnnotationReplyType=e.AnnotationMode=e.AnnotationFlag=e.AnnotationFieldFlag=e.AnnotationEditorType=e.AnnotationEditorPrefix=e.AnnotationEditorParamsType=e.AnnotationBorderStyleType=e.AnnotationActionEventType=e.AbortException=void 0;e.assert=function assert(t,e){t||unreachable(e)};e.bytesToString=bytesToString;e.createValidAbsoluteUrl=function createValidAbsoluteUrl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!t)return null;try{if(n&&"string"==typeof t){if(n.addDefaultProtocol&&t.startsWith("www.")){const e=t.match(/\./g);e?.length>=2&&(t=`http://${t}`)}if(n.tryConvertEncoding)try{t=stringToUTF8String(t)}catch{}}const i=e?new URL(t,e):new URL(t);if(function _isValidProtocol(t){switch(t?.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(i))return i}catch{}return null};e.getModificationDate=function getModificationDate(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return[t.getUTCFullYear().toString(),(t.getUTCMonth()+1).toString().padStart(2,"0"),t.getUTCDate().toString().padStart(2,"0"),t.getUTCHours().toString().padStart(2,"0"),t.getUTCMinutes().toString().padStart(2,"0"),t.getUTCSeconds().toString().padStart(2,"0")].join("")};e.getUuid=function getUuid(){if("undefined"!=typeof crypto&&"function"==typeof crypto?.randomUUID)return crypto.randomUUID();const t=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof crypto?.getRandomValues)crypto.getRandomValues(t);else for(let e=0;e<32;e++)t[e]=Math.floor(255*Math.random());return bytesToString(t)};e.getVerbosityLevel=function getVerbosityLevel(){return s};e.info=function info(t){s>=r.INFOS&&console.log(`Info: ${t}`)};e.isArrayBuffer=function isArrayBuffer(t){return"object"==typeof t&&void 0!==t?.byteLength};e.isArrayEqual=function isArrayEqual(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;ne?e.normalize("NFKC"):h.get(n)))};e.objectFromMap=function objectFromMap(t){const e=Object.create(null);for(const[n,i]of t)e[n]=i;return e};e.objectSize=function objectSize(t){return Object.keys(t).length};e.setVerbosityLevel=function setVerbosityLevel(t){Number.isInteger(t)&&(s=t)};e.shadow=shadow;e.string32=function string32(t){return String.fromCharCode(t>>24&255,t>>16&255,t>>8&255,255&t)};e.stringToBytes=stringToBytes;e.stringToPDFString=function stringToPDFString(t){if(t[0]>="ï"){let e;"þ"===t[0]&&"ÿ"===t[1]?e="utf-16be":"ÿ"===t[0]&&"þ"===t[1]?e="utf-16le":"ï"===t[0]&&"»"===t[1]&&"¿"===t[2]&&(e="utf-8");if(e)try{const n=new TextDecoder(e,{fatal:!0}),i=stringToBytes(t);return n.decode(i)}catch(t){warn(`stringToPDFString: "${t}".`)}}const e=[];for(let n=0,i=t.length;n=r.WARNINGS&&console.log(`Warning: ${t}`)}function unreachable(t){throw new Error(t)}function shadow(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Object.defineProperty(t,e,{value:n,enumerable:!i,configurable:!0,writable:!1});return n}const a=function BaseExceptionClosure(){function BaseException(t,e){this.constructor===BaseException&&unreachable("Cannot initialize BaseException.");this.message=t;this.name=e}BaseException.prototype=new Error;BaseException.constructor=BaseException;return BaseException}();e.BaseException=a;e.PasswordException=class PasswordException extends a{constructor(t,e){super(t,"PasswordException");this.code=e}};e.UnknownErrorException=class UnknownErrorException extends a{constructor(t,e){super(t,"UnknownErrorException");this.details=e}};e.InvalidPDFException=class InvalidPDFException extends a{constructor(t){super(t,"InvalidPDFException")}};e.MissingPDFException=class MissingPDFException extends a{constructor(t){super(t,"MissingPDFException")}};e.UnexpectedResponseException=class UnexpectedResponseException extends a{constructor(t,e){super(t,"UnexpectedResponseException");this.status=e}};e.FormatError=class FormatError extends a{constructor(t){super(t,"FormatError")}};e.AbortException=class AbortException extends a{constructor(t){super(t,"AbortException")}};function bytesToString(t){"object"==typeof t&&void 0!==t?.length||unreachable("Invalid argument for bytesToString");const e=t.length,n=8192;if(et.toString(16).padStart(2,"0")));e.Util=class Util{static makeHexColor(t,e,n){return`#${o[t]}${o[e]}${o[n]}`}static scaleMinMax(t,e){let n;if(t[0]){if(t[0]<0){n=e[0];e[0]=e[1];e[1]=n}e[0]*=t[0];e[1]*=t[0];if(t[3]<0){n=e[2];e[2]=e[3];e[3]=n}e[2]*=t[3];e[3]*=t[3]}else{n=e[0];e[0]=e[2];e[2]=n;n=e[1];e[1]=e[3];e[3]=n;if(t[1]<0){n=e[2];e[2]=e[3];e[3]=n}e[2]*=t[1];e[3]*=t[1];if(t[2]<0){n=e[0];e[0]=e[1];e[1]=n}e[0]*=t[2];e[1]*=t[2]}e[0]+=t[4];e[1]+=t[4];e[2]+=t[5];e[3]+=t[5]}static transform(t,e){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],t[0]*e[4]+t[2]*e[5]+t[4],t[1]*e[4]+t[3]*e[5]+t[5]]}static applyTransform(t,e){return[t[0]*e[0]+t[1]*e[2]+e[4],t[0]*e[1]+t[1]*e[3]+e[5]]}static applyInverseTransform(t,e){const n=e[0]*e[3]-e[1]*e[2];return[(t[0]*e[3]-t[1]*e[2]+e[2]*e[5]-e[4]*e[3])/n,(-t[0]*e[1]+t[1]*e[0]+e[4]*e[1]-e[5]*e[0])/n]}static getAxialAlignedBoundingBox(t,e){const n=this.applyTransform(t,e),i=this.applyTransform(t.slice(2,4),e),r=this.applyTransform([t[0],t[3]],e),s=this.applyTransform([t[2],t[1]],e);return[Math.min(n[0],i[0],r[0],s[0]),Math.min(n[1],i[1],r[1],s[1]),Math.max(n[0],i[0],r[0],s[0]),Math.max(n[1],i[1],r[1],s[1])]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}static singularValueDecompose2dScale(t){const e=[t[0],t[2],t[1],t[3]],n=t[0]*e[0]+t[1]*e[2],i=t[0]*e[1]+t[1]*e[3],r=t[2]*e[0]+t[3]*e[2],s=t[2]*e[1]+t[3]*e[3],a=(n+s)/2,o=Math.sqrt((n+s)**2-4*(n*s-r*i))/2,l=a+o||1,c=a-o||1;return[Math.sqrt(l),Math.sqrt(c)]}static normalizeRect(t){const e=t.slice(0);if(t[0]>t[2]){e[0]=t[2];e[2]=t[0]}if(t[1]>t[3]){e[1]=t[3];e[3]=t[1]}return e}static intersect(t,e){const n=Math.max(Math.min(t[0],t[2]),Math.min(e[0],e[2])),i=Math.min(Math.max(t[0],t[2]),Math.max(e[0],e[2]));if(n>i)return null;const r=Math.max(Math.min(t[1],t[3]),Math.min(e[1],e[3])),s=Math.min(Math.max(t[1],t[3]),Math.max(e[1],e[3]));return r>s?null:[n,r,i,s]}static bezierBoundingBox(t,e,n,i,r,s,a,o){const l=[],c=[[],[]];let h,d,u,p,f,g,m,b;for(let c=0;c<2;++c){if(0===c){d=6*t-12*n+6*r;h=-3*t+9*n-9*r+3*a;u=3*n-3*t}else{d=6*e-12*i+6*s;h=-3*e+9*i-9*s+3*o;u=3*i-3*e}if(Math.abs(h)<1e-12){if(Math.abs(d)<1e-12)continue;p=-u/d;0{this.resolve=e=>{this.#t=!0;t(e)};this.reject=t=>{this.#t=!0;e(t)}}))}get settled(){return this.#t}};let c=null,h=null},(t,e,n)=>{var i=n(3),r=n(4),s=n(69),a=n(70),o="WebAssembly",l=r[o],c=7!==Error("e",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(t,e){var n={};n[t]=a(t,e,c);i({global:!0,constructor:!0,arity:1,forced:c},n)},exportWebAssemblyErrorCauseWrapper=function(t,e){if(l&&l[t]){var n={};n[t]=a(o+"."+t,e,c);i({target:o,stat:!0,constructor:!0,arity:1,forced:c},n)}};exportGlobalErrorCauseWrapper("Error",(function(t){return function Error(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("EvalError",(function(t){return function EvalError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("RangeError",(function(t){return function RangeError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("ReferenceError",(function(t){return function ReferenceError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("SyntaxError",(function(t){return function SyntaxError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("TypeError",(function(t){return function TypeError(e){return s(t,this,arguments)}}));exportGlobalErrorCauseWrapper("URIError",(function(t){return function URIError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("CompileError",(function(t){return function CompileError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("LinkError",(function(t){return function LinkError(e){return s(t,this,arguments)}}));exportWebAssemblyErrorCauseWrapper("RuntimeError",(function(t){return function RuntimeError(e){return s(t,this,arguments)}}))},(t,e,n)=>{var i=n(4),r=n(5).f,s=n(44),a=n(48),o=n(38),l=n(56),c=n(68);t.exports=function(t,e){var n,h,d,u,p,f=t.target,g=t.global,m=t.stat;if(n=g?i:m?i[f]||o(f,{}):(i[f]||{}).prototype)for(h in e){u=e[h];d=t.dontCallGetSet?(p=r(n,h))&&p.value:n[h];if(!c(g?h:f+(m?".":"#")+h,t.forced)&&void 0!==d){if(typeof u==typeof d)continue;l(u,d)}(t.sham||d&&d.sham)&&s(u,"sham",!0);a(n,h,u,t)}}},function(t){var check=function(t){return t&&t.Math==Math&&t};t.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof global&&global)||function(){return this}()||this||Function("return this")()},(t,e,n)=>{var i=n(6),r=n(8),s=n(10),a=n(11),o=n(12),l=n(18),c=n(39),h=n(42),d=Object.getOwnPropertyDescriptor;e.f=i?d:function getOwnPropertyDescriptor(t,e){t=o(t);e=l(e);if(h)try{return d(t,e)}catch(t){}if(c(t,e))return a(!r(s.f,t,e),t[e])}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},(t,e,n)=>{var i=n(9),r=Function.prototype.call;t.exports=i?r.bind(r):function(){return r.apply(r,arguments)}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},(t,e)=>{"use strict";var n={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,r=i&&!n.call({1:2},1);e.f=r?function propertyIsEnumerable(t){var e=i(this,t);return!!e&&e.enumerable}:n},t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},(t,e,n)=>{var i=n(13),r=n(16);t.exports=function(t){return i(r(t))}},(t,e,n)=>{var i=n(14),r=n(7),s=n(15),a=Object,o=i("".split);t.exports=r((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"==s(t)?o(t,""):a(t)}:a},(t,e,n)=>{var i=n(9),r=Function.prototype,s=r.call,a=i&&r.bind.bind(s,s);t.exports=i?a:function(t){return function(){return s.apply(t,arguments)}}},(t,e,n)=>{var i=n(14),r=i({}.toString),s=i("".slice);t.exports=function(t){return s(r(t),8,-1)}},(t,e,n)=>{var i=n(17),r=TypeError;t.exports=function(t){if(i(t))throw r("Can't call method on "+t);return t}},t=>{t.exports=function(t){return null==t}},(t,e,n)=>{var i=n(19),r=n(23);t.exports=function(t){var e=i(t,"string");return r(e)?e:e+""}},(t,e,n)=>{var i=n(8),r=n(20),s=n(23),a=n(30),o=n(33),l=n(34),c=TypeError,h=l("toPrimitive");t.exports=function(t,e){if(!r(t)||s(t))return t;var n,l=a(t,h);if(l){void 0===e&&(e="default");n=i(l,t,e);if(!r(n)||s(n))return n;throw c("Can't convert object to primitive value")}void 0===e&&(e="number");return o(t,e)}},(t,e,n)=>{var i=n(21),r=n(22),s=r.all;t.exports=r.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:i(t)||t===s}:function(t){return"object"==typeof t?null!==t:i(t)}},(t,e,n)=>{var i=n(22),r=i.all;t.exports=i.IS_HTMLDDA?function(t){return"function"==typeof t||t===r}:function(t){return"function"==typeof t}},t=>{var e="object"==typeof document&&document.all,n=void 0===e&&void 0!==e;t.exports={all:e,IS_HTMLDDA:n}},(t,e,n)=>{var i=n(24),r=n(21),s=n(25),a=n(26),o=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=i("Symbol");return r(e)&&s(e.prototype,o(t))}},(t,e,n)=>{var i=n(4),r=n(21);t.exports=function(t,e){return arguments.length<2?(n=i[t],r(n)?n:void 0):i[t]&&i[t][e];var n}},(t,e,n)=>{var i=n(14);t.exports=i({}.isPrototypeOf)},(t,e,n)=>{var i=n(27);t.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(t,e,n)=>{var i=n(28),r=n(7),s=n(4).String;t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&i&&i<41}))},(t,e,n)=>{var i,r,s=n(4),a=n(29),o=s.process,l=s.Deno,c=o&&o.versions||l&&l.version,h=c&&c.v8;h&&(r=(i=h.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1]));!r&&a&&(!(i=a.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=a.match(/Chrome\/(\d+)/))&&(r=+i[1]);t.exports=r},t=>{t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},(t,e,n)=>{var i=n(31),r=n(17);t.exports=function(t,e){var n=t[e];return r(n)?void 0:i(n)}},(t,e,n)=>{var i=n(21),r=n(32),s=TypeError;t.exports=function(t){if(i(t))return t;throw s(r(t)+" is not a function")}},t=>{var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},(t,e,n)=>{var i=n(8),r=n(21),s=n(20),a=TypeError;t.exports=function(t,e){var n,o;if("string"===e&&r(n=t.toString)&&!s(o=i(n,t)))return o;if(r(n=t.valueOf)&&!s(o=i(n,t)))return o;if("string"!==e&&r(n=t.toString)&&!s(o=i(n,t)))return o;throw a("Can't convert object to primitive value")}},(t,e,n)=>{var i=n(4),r=n(35),s=n(39),a=n(41),o=n(27),l=n(26),c=i.Symbol,h=r("wks"),d=l?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){s(h,t)||(h[t]=o&&s(c,t)?c[t]:d("Symbol."+t));return h[t]}},(t,e,n)=>{var i=n(36),r=n(37);(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.31.1",mode:i?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},t=>{t.exports=!1},(t,e,n)=>{var i=n(4),r=n(38),s="__core-js_shared__",a=i[s]||r(s,{});t.exports=a},(t,e,n)=>{var i=n(4),r=Object.defineProperty;t.exports=function(t,e){try{r(i,t,{value:e,configurable:!0,writable:!0})}catch(n){i[t]=e}return e}},(t,e,n)=>{var i=n(14),r=n(40),s=i({}.hasOwnProperty);t.exports=Object.hasOwn||function hasOwn(t,e){return s(r(t),e)}},(t,e,n)=>{var i=n(16),r=Object;t.exports=function(t){return r(i(t))}},(t,e,n)=>{var i=n(14),r=0,s=Math.random(),a=i(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++r+s,36)}},(t,e,n)=>{var i=n(6),r=n(7),s=n(43);t.exports=!i&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},(t,e,n)=>{var i=n(4),r=n(20),s=i.document,a=r(s)&&r(s.createElement);t.exports=function(t){return a?s.createElement(t):{}}},(t,e,n)=>{var i=n(6),r=n(45),s=n(11);t.exports=i?function(t,e,n){return r.f(t,e,s(1,n))}:function(t,e,n){t[e]=n;return t}},(t,e,n)=>{var i=n(6),r=n(42),s=n(46),a=n(47),o=n(18),l=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,d="enumerable",u="configurable",p="writable";e.f=i?s?function defineProperty(t,e,n){a(t);e=o(e);a(n);if("function"==typeof t&&"prototype"===e&&"value"in n&&p in n&&!n[p]){var i=h(t,e);if(i&&i[p]){t[e]=n.value;n={configurable:u in n?n[u]:i[u],enumerable:d in n?n[d]:i[d],writable:!1}}}return c(t,e,n)}:c:function defineProperty(t,e,n){a(t);e=o(e);a(n);if(r)try{return c(t,e,n)}catch(t){}if("get"in n||"set"in n)throw l("Accessors not supported");"value"in n&&(t[e]=n.value);return t}},(t,e,n)=>{var i=n(6),r=n(7);t.exports=i&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(t,e,n)=>{var i=n(20),r=String,s=TypeError;t.exports=function(t){if(i(t))return t;throw s(r(t)+" is not an object")}},(t,e,n)=>{var i=n(21),r=n(45),s=n(49),a=n(38);t.exports=function(t,e,n,o){o||(o={});var l=o.enumerable,c=void 0!==o.name?o.name:e;i(n)&&s(n,c,o);if(o.global)l?t[e]=n:a(e,n);else{try{o.unsafe?t[e]&&(l=!0):delete t[e]}catch(t){}l?t[e]=n:r.f(t,e,{value:n,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return t}},(t,e,n)=>{var i=n(14),r=n(7),s=n(21),a=n(39),o=n(6),l=n(50).CONFIGURABLE,c=n(51),h=n(52),d=h.enforce,u=h.get,p=String,f=Object.defineProperty,g=i("".slice),m=i("".replace),b=i([].join),v=o&&!r((function(){return 8!==f((function(){}),"length",{value:8}).length})),y=String(String).split("String"),A=t.exports=function(t,e,n){"Symbol("===g(p(e),0,7)&&(e="["+m(p(e),/^Symbol\(([^)]*)\)/,"$1")+"]");n&&n.getter&&(e="get "+e);n&&n.setter&&(e="set "+e);(!a(t,"name")||l&&t.name!==e)&&(o?f(t,"name",{value:e,configurable:!0}):t.name=e);v&&n&&a(n,"arity")&&t.length!==n.arity&&f(t,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?o&&f(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var i=d(t);a(i,"source")||(i.source=b(y,"string"==typeof e?e:""));return t};Function.prototype.toString=A((function toString(){return s(this)&&u(this).source||c(this)}),"toString")},(t,e,n)=>{var i=n(6),r=n(39),s=Function.prototype,a=i&&Object.getOwnPropertyDescriptor,o=r(s,"name"),l=o&&"something"===function something(){}.name,c=o&&(!i||i&&a(s,"name").configurable);t.exports={EXISTS:o,PROPER:l,CONFIGURABLE:c}},(t,e,n)=>{var i=n(14),r=n(21),s=n(37),a=i(Function.toString);r(s.inspectSource)||(s.inspectSource=function(t){return a(t)});t.exports=s.inspectSource},(t,e,n)=>{var i,r,s,a=n(53),o=n(4),l=n(20),c=n(44),h=n(39),d=n(37),u=n(54),p=n(55),f="Object already initialized",g=o.TypeError,m=o.WeakMap;if(a||d.state){var b=d.state||(d.state=new m);b.get=b.get;b.has=b.has;b.set=b.set;i=function(t,e){if(b.has(t))throw g(f);e.facade=t;b.set(t,e);return e};r=function(t){return b.get(t)||{}};s=function(t){return b.has(t)}}else{var v=u("state");p[v]=!0;i=function(t,e){if(h(t,v))throw g(f);e.facade=t;c(t,v,e);return e};r=function(t){return h(t,v)?t[v]:{}};s=function(t){return h(t,v)}}t.exports={set:i,get:r,has:s,enforce:function(t){return s(t)?r(t):i(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=r(e)).type!==t)throw g("Incompatible receiver, "+t+" required");return n}}}},(t,e,n)=>{var i=n(4),r=n(21),s=i.WeakMap;t.exports=r(s)&&/native code/.test(String(s))},(t,e,n)=>{var i=n(35),r=n(41),s=i("keys");t.exports=function(t){return s[t]||(s[t]=r(t))}},t=>{t.exports={}},(t,e,n)=>{var i=n(39),r=n(57),s=n(5),a=n(45);t.exports=function(t,e,n){for(var o=r(e),l=a.f,c=s.f,h=0;h{var i=n(24),r=n(14),s=n(58),a=n(67),o=n(47),l=r([].concat);t.exports=i("Reflect","ownKeys")||function ownKeys(t){var e=s.f(o(t)),n=a.f;return n?l(e,n(t)):e}},(t,e,n)=>{var i=n(59),r=n(66).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return i(t,r)}},(t,e,n)=>{var i=n(14),r=n(39),s=n(12),a=n(60).indexOf,o=n(55),l=i([].push);t.exports=function(t,e){var n,i=s(t),c=0,h=[];for(n in i)!r(o,n)&&r(i,n)&&l(h,n);for(;e.length>c;)r(i,n=e[c++])&&(~a(h,n)||l(h,n));return h}},(t,e,n)=>{var i=n(12),r=n(61),s=n(64),createMethod=function(t){return function(e,n,a){var o,l=i(e),c=s(l),h=r(a,c);if(t&&n!=n){for(;c>h;)if((o=l[h++])!=o)return!0}else for(;c>h;h++)if((t||h in l)&&l[h]===n)return t||h||0;return!t&&-1}};t.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},(t,e,n)=>{var i=n(62),r=Math.max,s=Math.min;t.exports=function(t,e){var n=i(t);return n<0?r(n+e,0):s(n,e)}},(t,e,n)=>{var i=n(63);t.exports=function(t){var e=+t;return e!=e||0===e?0:i(e)}},t=>{var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function trunc(t){var i=+t;return(i>0?n:e)(i)}},(t,e,n)=>{var i=n(65);t.exports=function(t){return i(t.length)}},(t,e,n)=>{var i=n(62),r=Math.min;t.exports=function(t){return t>0?r(i(t),9007199254740991):0}},t=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},(t,e)=>{e.f=Object.getOwnPropertySymbols},(t,e,n)=>{var i=n(7),r=n(21),s=/#|\.prototype\./,isForced=function(t,e){var n=o[a(t)];return n==c||n!=l&&(r(e)?i(e):!!e)},a=isForced.normalize=function(t){return String(t).replace(s,".").toLowerCase()},o=isForced.data={},l=isForced.NATIVE="N",c=isForced.POLYFILL="P";t.exports=isForced},(t,e,n)=>{var i=n(9),r=Function.prototype,s=r.apply,a=r.call;t.exports="object"==typeof Reflect&&Reflect.apply||(i?a.bind(s):function(){return a.apply(s,arguments)})},(t,e,n)=>{"use strict";var i=n(24),r=n(39),s=n(44),a=n(25),o=n(71),l=n(56),c=n(74),h=n(75),d=n(76),u=n(80),p=n(81),f=n(6),g=n(36);t.exports=function(t,e,n,m){var b="stackTraceLimit",v=m?2:1,y=t.split("."),A=y[y.length-1],_=i.apply(null,y);if(_){var S=_.prototype;!g&&r(S,"cause")&&delete S.cause;if(!n)return _;var E=i("Error"),x=e((function(t,e){var n=d(m?e:t,void 0),i=m?new _(t):new _;void 0!==n&&s(i,"message",n);p(i,x,i.stack,2);this&&a(S,this)&&h(i,this,x);arguments.length>v&&u(i,arguments[v]);return i}));x.prototype=S;if("Error"!==A)o?o(x,E):l(x,E,{name:!0});else if(f&&b in _){c(x,_,b);c(x,_,"prepareStackTrace")}l(x,_);if(!g)try{S.name!==A&&s(S,"name",A);S.constructor=x}catch(t){}return x}}},(t,e,n)=>{var i=n(72),r=n(47),s=n(73);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=i(Object.prototype,"__proto__","set"))(n,[]);e=n instanceof Array}catch(t){}return function setPrototypeOf(n,i){r(n);s(i);e?t(n,i):n.__proto__=i;return n}}():void 0)},(t,e,n)=>{var i=n(14),r=n(31);t.exports=function(t,e,n){try{return i(r(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},(t,e,n)=>{var i=n(21),r=String,s=TypeError;t.exports=function(t){if("object"==typeof t||i(t))return t;throw s("Can't set "+r(t)+" as a prototype")}},(t,e,n)=>{var i=n(45).f;t.exports=function(t,e,n){n in t||i(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},(t,e,n)=>{var i=n(21),r=n(20),s=n(71);t.exports=function(t,e,n){var a,o;s&&i(a=e.constructor)&&a!==n&&r(o=a.prototype)&&o!==n.prototype&&s(t,o);return t}},(t,e,n)=>{var i=n(77);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:i(t)}},(t,e,n)=>{var i=n(78),r=String;t.exports=function(t){if("Symbol"===i(t))throw TypeError("Cannot convert a Symbol value to a string");return r(t)}},(t,e,n)=>{var i=n(79),r=n(21),s=n(15),a=n(34)("toStringTag"),o=Object,l="Arguments"==s(function(){return arguments}());t.exports=i?s:function(t){var e,n,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=o(t),a))?n:l?s(e):"Object"==(i=s(e))&&r(e.callee)?"Arguments":i}},(t,e,n)=>{var i={};i[n(34)("toStringTag")]="z";t.exports="[object z]"===String(i)},(t,e,n)=>{var i=n(20),r=n(44);t.exports=function(t,e){i(e)&&"cause"in e&&r(t,"cause",e.cause)}},(t,e,n)=>{var i=n(44),r=n(82),s=n(83),a=Error.captureStackTrace;t.exports=function(t,e,n,o){s&&(a?a(t,e):i(t,"stack",r(n,o)))}},(t,e,n)=>{var i=n(14),r=Error,s=i("".replace),a=String(r("zxcasd").stack),o=/\n\s*at [^:]*:[^\n]*/,l=o.test(a);t.exports=function(t,e){if(l&&"string"==typeof t&&!r.prepareStackTrace)for(;e--;)t=s(t,o,"");return t}},(t,e,n)=>{var i=n(7),r=n(11);t.exports=!i((function(){var t=Error("a");if(!("stack"in t))return!0;Object.defineProperty(t,"stack",r(1,7));return 7!==t.stack}))},(t,e,n)=>{"use strict";var i=n(48),r=n(14),s=n(77),a=n(85),o=URLSearchParams,l=o.prototype,c=r(l.append),h=r(l.delete),d=r(l.forEach),u=r([].push),p=new o("a=1&a=2");p.delete("a",1);p+""!="a=2"&&i(l,"delete",(function(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return h(this,t);var i=[];d(this,(function(t,e){u(i,{key:e,value:t})}));a(e,1);for(var r,o=s(t),l=s(n),p=0,f=0,g=!1,m=i.length;p{var e=TypeError;t.exports=function(t,n){if(t{"use strict";var i=n(48),r=n(14),s=n(77),a=n(85),o=URLSearchParams,l=o.prototype,c=r(l.getAll),h=r(l.has);new o("a=1").has("a",2)&&i(l,"has",(function has(t){var e=arguments.length,n=e<2?void 0:arguments[1];if(e&&void 0===n)return h(this,t);var i=c(this,t);a(e,1);for(var r=s(n),o=0;o{"use strict";var i=n(6),r=n(14),s=n(88),a=URLSearchParams.prototype,o=r(a.forEach);i&&!("size"in a)&&s(a,"size",{get:function size(){var t=0;o(this,(function(){t++}));return t},configurable:!0,enumerable:!0})},(t,e,n)=>{var i=n(49),r=n(45);t.exports=function(t,e,n){n.get&&i(n.get,e,{getter:!0});n.set&&i(n.set,e,{setter:!0});return r.f(t,e,n)}},(t,e,n)=>{"use strict";var i=n(3),r=n(40),s=n(64),a=n(90),o=n(92);i({target:"Array",proto:!0,arity:1,forced:n(7)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}()},{push:function push(t){var e=r(this),n=s(e),i=arguments.length;o(n+i);for(var l=0;l{"use strict";var i=n(6),r=n(91),s=TypeError,a=Object.getOwnPropertyDescriptor,o=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=o?function(t,e){if(r(t)&&!a(t,"length").writable)throw s("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},(t,e,n)=>{var i=n(15);t.exports=Array.isArray||function isArray(t){return"Array"==i(t)}},t=>{var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e("Maximum allowed index exceeded");return t}},(t,e,n)=>{"use strict";var i=n(94),r=n(98).findLast,s=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLast",(function findLast(t){return r(s(this),t,arguments.length>1?arguments[1]:void 0)}))},(t,e,n)=>{"use strict";var i,r,s,a=n(95),o=n(6),l=n(4),c=n(21),h=n(20),d=n(39),u=n(78),p=n(32),f=n(44),g=n(48),m=n(88),b=n(25),v=n(96),y=n(71),A=n(34),_=n(41),S=n(52),E=S.enforce,x=S.get,w=l.Int8Array,C=w&&w.prototype,T=l.Uint8ClampedArray,P=T&&T.prototype,k=w&&v(w),M=C&&v(C),R=Object.prototype,I=l.TypeError,D=A("toStringTag"),O=_("TYPED_ARRAY_TAG"),L="TypedArrayConstructor",N=a&&!!y&&"Opera"!==u(l.opera),B=!1,j={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},U={BigInt64Array:8,BigUint64Array:8},getTypedArrayConstructor=function(t){var e=v(t);if(h(e)){var n=x(e);return n&&d(n,L)?n[L]:getTypedArrayConstructor(e)}},isTypedArray=function(t){if(!h(t))return!1;var e=u(t);return d(j,e)||d(U,e)};for(i in j)(s=(r=l[i])&&r.prototype)?E(s)[L]=r:N=!1;for(i in U)(s=(r=l[i])&&r.prototype)&&(E(s)[L]=r);if(!N||!c(k)||k===Function.prototype){k=function TypedArray(){throw I("Incorrect invocation")};if(N)for(i in j)l[i]&&y(l[i],k)}if(!N||!M||M===R){M=k.prototype;if(N)for(i in j)l[i]&&y(l[i].prototype,M)}N&&v(P)!==M&&y(P,M);if(o&&!d(M,D)){B=!0;m(M,D,{configurable:!0,get:function(){return h(this)?this[O]:void 0}});for(i in j)l[i]&&f(l[i],O,i)}t.exports={NATIVE_ARRAY_BUFFER_VIEWS:N,TYPED_ARRAY_TAG:B&&O,aTypedArray:function(t){if(isTypedArray(t))return t;throw I("Target is not a typed array")},aTypedArrayConstructor:function(t){if(c(t)&&(!y||b(k,t)))return t;throw I(p(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,i){if(o){if(n)for(var r in j){var s=l[r];if(s&&d(s.prototype,t))try{delete s.prototype[t]}catch(n){try{s.prototype[t]=e}catch(t){}}}M[t]&&!n||g(M,t,n?e:N&&C[t]||e,i)}},exportTypedArrayStaticMethod:function(t,e,n){var i,r;if(o){if(y){if(n)for(i in j)if((r=l[i])&&d(r,t))try{delete r[t]}catch(t){}if(k[t]&&!n)return;try{return g(k,t,n?e:N&&k[t]||e)}catch(t){}}for(i in j)!(r=l[i])||r[t]&&!n||g(r,t,e)}},getTypedArrayConstructor:getTypedArrayConstructor,isView:function isView(t){if(!h(t))return!1;var e=u(t);return"DataView"===e||d(j,e)||d(U,e)},isTypedArray:isTypedArray,TypedArray:k,TypedArrayPrototype:M}},t=>{t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(t,e,n)=>{var i=n(39),r=n(21),s=n(40),a=n(54),o=n(97),l=a("IE_PROTO"),c=Object,h=c.prototype;t.exports=o?c.getPrototypeOf:function(t){var e=s(t);if(i(e,l))return e[l];var n=e.constructor;return r(n)&&e instanceof n?n.prototype:e instanceof c?h:null}},(t,e,n)=>{var i=n(7);t.exports=!i((function(){function F(){}F.prototype.constructor=null;return Object.getPrototypeOf(new F)!==F.prototype}))},(t,e,n)=>{var i=n(99),r=n(13),s=n(40),a=n(64),createMethod=function(t){var e=1==t;return function(n,o,l){for(var c,h=s(n),d=r(h),u=i(o,l),p=a(d);p-- >0;)if(u(c=d[p],p,h))switch(t){case 0:return c;case 1:return p}return e?-1:void 0}};t.exports={findLast:createMethod(0),findLastIndex:createMethod(1)}},(t,e,n)=>{var i=n(100),r=n(31),s=n(9),a=i(i.bind);t.exports=function(t,e){r(t);return void 0===e?t:s?a(t,e):function(){return t.apply(e,arguments)}}},(t,e,n)=>{var i=n(15),r=n(14);t.exports=function(t){if("Function"===i(t))return r(t)}},(t,e,n)=>{"use strict";var i=n(94),r=n(98).findLastIndex,s=i.aTypedArray;(0,i.exportTypedArrayMethod)("findLastIndex",(function findLastIndex(t){return r(s(this),t,arguments.length>1?arguments[1]:void 0)}))},(t,e,n)=>{"use strict";var i=n(4),r=n(8),s=n(94),a=n(64),o=n(103),l=n(40),c=n(7),h=i.RangeError,d=i.Int8Array,u=d&&d.prototype,p=u&&u.set,f=s.aTypedArray,g=s.exportTypedArrayMethod,m=!c((function(){var t=new Uint8ClampedArray(2);r(p,t,{length:1,0:3},1);return 3!==t[1]})),b=m&&s.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var t=new d(2);t.set(1);t.set("2",1);return 0!==t[0]||2!==t[1]}));g("set",(function set(t){f(this);var e=o(arguments.length>1?arguments[1]:void 0,1),n=l(t);if(m)return r(p,this,n,e);var i=this.length,s=a(n),c=0;if(s+e>i)throw h("Wrong length");for(;c{var i=n(104),r=RangeError;t.exports=function(t,e){var n=i(t);if(n%e)throw r("Wrong offset");return n}},(t,e,n)=>{var i=n(62),r=RangeError;t.exports=function(t){var e=i(t);if(e<0)throw r("The argument can't be less than 0");return e}},(t,e,n)=>{"use strict";var i=n(106),r=n(94),s=r.aTypedArray,a=r.exportTypedArrayMethod,o=r.getTypedArrayConstructor;a("toReversed",(function toReversed(){return i(s(this),o(this))}))},(t,e,n)=>{var i=n(64);t.exports=function(t,e){for(var n=i(t),r=new e(n),s=0;s{"use strict";var i=n(94),r=n(14),s=n(31),a=n(108),o=i.aTypedArray,l=i.getTypedArrayConstructor,c=i.exportTypedArrayMethod,h=r(i.TypedArrayPrototype.sort);c("toSorted",(function toSorted(t){void 0!==t&&s(t);var e=o(this),n=a(l(e),e);return h(n,t)}))},(t,e,n)=>{var i=n(64);t.exports=function(t,e){for(var n=0,r=i(e),s=new t(r);r>n;)s[n]=e[n++];return s}},(t,e,n)=>{"use strict";var i=n(110),r=n(94),s=n(111),a=n(62),o=n(112),l=r.aTypedArray,c=r.getTypedArrayConstructor,h=r.exportTypedArrayMethod,d=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(t){return 8===t}}();h("with",{with:function(t,e){var n=l(this),r=a(t),h=s(n)?o(e):+e;return i(n,c(n),r,h)}}.with,!d)},(t,e,n)=>{var i=n(64),r=n(62),s=RangeError;t.exports=function(t,e,n,a){var o=i(t),l=r(n),c=l<0?o+l:l;if(c>=o||c<0)throw s("Incorrect index");for(var h=new e(o),d=0;d{var i=n(78);t.exports=function(t){var e=i(t);return"BigInt64Array"==e||"BigUint64Array"==e}},(t,e,n)=>{var i=n(19),r=TypeError;t.exports=function(t){var e=i(t,"number");if("number"==typeof e)throw r("Can't convert number to bigint");return BigInt(e)}},(t,e,n)=>{"use strict";var i=n(6),r=n(88),s=n(114),a=ArrayBuffer.prototype;i&&!("detached"in a)&&r(a,"detached",{configurable:!0,get:function detached(){return s(this)}})},(t,e,n)=>{var i=n(14),r=n(115),s=i(ArrayBuffer.prototype.slice);t.exports=function(t){if(0!==r(t))return!1;try{s(t,0,0);return!1}catch(t){return!0}}},(t,e,n)=>{var i=n(72),r=n(15),s=TypeError;t.exports=i(ArrayBuffer.prototype,"byteLength","get")||function(t){if("ArrayBuffer"!=r(t))throw s("ArrayBuffer expected");return t.byteLength}},(t,e,n)=>{"use strict";var i=n(3),r=n(117);r&&i({target:"ArrayBuffer",proto:!0},{transfer:function transfer(){return r(this,arguments.length?arguments[0]:void 0,!0)}})},(t,e,n)=>{var i=n(4),r=n(14),s=n(72),a=n(118),o=n(114),l=n(115),c=n(119),h=i.TypeError,d=i.structuredClone,u=i.ArrayBuffer,p=i.DataView,f=Math.min,g=u.prototype,m=p.prototype,b=r(g.slice),v=s(g,"resizable","get"),y=s(g,"maxByteLength","get"),A=r(m.getInt8),_=r(m.setInt8);t.exports=c&&function(t,e,n){var i=l(t),r=void 0===e?i:a(e),s=!v||!v(t);if(o(t))throw h("ArrayBuffer is detached");var c=d(t,{transfer:[t]});if(i==r&&(n||s))return c;if(i>=r&&(!n||s))return b(c,0,r);for(var g=n&&!s&&y?{maxByteLength:y(c)}:void 0,m=new u(r,g),S=new p(c),E=new p(m),x=f(r,i),w=0;w{var i=n(62),r=n(65),s=RangeError;t.exports=function(t){if(void 0===t)return 0;var e=i(t),n=r(e);if(e!==n)throw s("Wrong length or index");return n}},(t,e,n)=>{var i=n(4),r=n(7),s=n(28),a=n(120),o=n(121),l=n(122),c=i.structuredClone;t.exports=!!c&&!r((function(){if(o&&s>92||l&&s>94||a&&s>97)return!1;var t=new ArrayBuffer(8),e=c(t,{transfer:[t]});return 0!=t.byteLength||8!=e.byteLength}))},(t,e,n)=>{var i=n(121),r=n(122);t.exports=!i&&!r&&"object"==typeof window&&"object"==typeof document},t=>{t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},(t,e,n)=>{var i=n(15);t.exports="undefined"!=typeof process&&"process"==i(process)},(t,e,n)=>{"use strict";var i=n(3),r=n(117);r&&i({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function transferToFixedLength(){return r(this,arguments.length?arguments[0]:void 0,!1)}})},(__unused_webpack_module,exports,__w_pdfjs_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.RenderTask=exports.PDFWorkerUtil=exports.PDFWorker=exports.PDFPageProxy=exports.PDFDocumentProxy=exports.PDFDocumentLoadingTask=exports.PDFDataRangeTransport=exports.LoopbackPort=exports.DefaultStandardFontDataFactory=exports.DefaultFilterFactory=exports.DefaultCanvasFactory=exports.DefaultCMapReaderFactory=void 0;Object.defineProperty(exports,"SVGGraphics",{enumerable:!0,get:function(){return _displaySvg.SVGGraphics}});exports.build=void 0;exports.getDocument=getDocument;exports.version=void 0;__w_pdfjs_require__(84);__w_pdfjs_require__(86);__w_pdfjs_require__(87);__w_pdfjs_require__(2);__w_pdfjs_require__(93);__w_pdfjs_require__(101);__w_pdfjs_require__(102);__w_pdfjs_require__(105);__w_pdfjs_require__(107);__w_pdfjs_require__(109);__w_pdfjs_require__(113);__w_pdfjs_require__(116);__w_pdfjs_require__(123);__w_pdfjs_require__(89);__w_pdfjs_require__(125);__w_pdfjs_require__(135);__w_pdfjs_require__(137);__w_pdfjs_require__(140);__w_pdfjs_require__(142);__w_pdfjs_require__(144);__w_pdfjs_require__(146);__w_pdfjs_require__(148);__w_pdfjs_require__(151);var _util=__w_pdfjs_require__(1),_annotation_storage=__w_pdfjs_require__(162),_display_utils=__w_pdfjs_require__(167),_font_loader=__w_pdfjs_require__(170),_displayNode_utils=__w_pdfjs_require__(171),_canvas=__w_pdfjs_require__(172),_worker_options=__w_pdfjs_require__(175),_message_handler=__w_pdfjs_require__(176),_metadata=__w_pdfjs_require__(177),_optional_content_config=__w_pdfjs_require__(178),_transport_stream=__w_pdfjs_require__(179),_displayFetch_stream=__w_pdfjs_require__(180),_displayNetwork=__w_pdfjs_require__(183),_displayNode_stream=__w_pdfjs_require__(184),_displaySvg=__w_pdfjs_require__(185),_xfa_text=__w_pdfjs_require__(193);const DEFAULT_RANGE_CHUNK_SIZE=65536,RENDERING_CANCELLED_TIMEOUT=100,DELAYED_CLEANUP_TIMEOUT=5e3,DefaultCanvasFactory=_util.isNodeJS?_displayNode_utils.NodeCanvasFactory:_display_utils.DOMCanvasFactory;exports.DefaultCanvasFactory=DefaultCanvasFactory;const DefaultCMapReaderFactory=_util.isNodeJS?_displayNode_utils.NodeCMapReaderFactory:_display_utils.DOMCMapReaderFactory;exports.DefaultCMapReaderFactory=DefaultCMapReaderFactory;const DefaultFilterFactory=_util.isNodeJS?_displayNode_utils.NodeFilterFactory:_display_utils.DOMFilterFactory;exports.DefaultFilterFactory=DefaultFilterFactory;const DefaultStandardFontDataFactory=_util.isNodeJS?_displayNode_utils.NodeStandardFontDataFactory:_display_utils.DOMStandardFontDataFactory;exports.DefaultStandardFontDataFactory=DefaultStandardFontDataFactory;function getDocument(t){"string"==typeof t||t instanceof URL?t={url:t}:(0,_util.isArrayBuffer)(t)&&(t={data:t});if("object"!=typeof t)throw new Error("Invalid parameter in getDocument, need parameter object.");if(!t.url&&!t.data&&!t.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const e=new PDFDocumentLoadingTask,{docId:n}=e,i=t.url?getUrlProp(t.url):null,r=t.data?getDataProp(t.data):null,s=t.httpHeaders||null,a=!0===t.withCredentials,o=t.password??null,l=t.range instanceof PDFDataRangeTransport?t.range:null,c=Number.isInteger(t.rangeChunkSize)&&t.rangeChunkSize>0?t.rangeChunkSize:DEFAULT_RANGE_CHUNK_SIZE;let h=t.worker instanceof PDFWorker?t.worker:null;const d=t.verbosity,u="string"!=typeof t.docBaseUrl||(0,_display_utils.isDataScheme)(t.docBaseUrl)?null:t.docBaseUrl,p="string"==typeof t.cMapUrl?t.cMapUrl:null,f=!1!==t.cMapPacked,g=t.CMapReaderFactory||DefaultCMapReaderFactory,m="string"==typeof t.standardFontDataUrl?t.standardFontDataUrl:null,b=t.StandardFontDataFactory||DefaultStandardFontDataFactory,v=!0!==t.stopAtErrors,y=Number.isInteger(t.maxImageSize)&&t.maxImageSize>-1?t.maxImageSize:-1,A=!1!==t.isEvalSupported,_="boolean"==typeof t.isOffscreenCanvasSupported?t.isOffscreenCanvasSupported:!_util.isNodeJS,S=Number.isInteger(t.canvasMaxAreaInBytes)?t.canvasMaxAreaInBytes:-1,E="boolean"==typeof t.disableFontFace?t.disableFontFace:_util.isNodeJS,x=!0===t.fontExtraProperties,w=!0===t.enableXfa,C=t.ownerDocument||globalThis.document,T=!0===t.disableRange,P=!0===t.disableStream,k=!0===t.disableAutoFetch,M=!0===t.pdfBug,R=l?l.length:t.length??NaN,I="boolean"==typeof t.useSystemFonts?t.useSystemFonts:!_util.isNodeJS&&!E,D="boolean"==typeof t.useWorkerFetch?t.useWorkerFetch:g===_display_utils.DOMCMapReaderFactory&&b===_display_utils.DOMStandardFontDataFactory&&p&&m&&(0,_display_utils.isValidFetchUrl)(p,document.baseURI)&&(0,_display_utils.isValidFetchUrl)(m,document.baseURI),O=t.canvasFactory||new DefaultCanvasFactory({ownerDocument:C}),L=t.filterFactory||new DefaultFilterFactory({docId:n,ownerDocument:C});(0,_util.setVerbosityLevel)(d);const N={canvasFactory:O,filterFactory:L};if(!D){N.cMapReaderFactory=new g({baseUrl:p,isCompressed:f});N.standardFontDataFactory=new b({baseUrl:m})}if(!h){const t={verbosity:d,port:_worker_options.GlobalWorkerOptions.workerPort};h=t.port?PDFWorker.fromPort(t):new PDFWorker(t);e._worker=h}const B={docId:n,apiVersion:"3.9.179",data:r,password:o,disableAutoFetch:k,rangeChunkSize:c,length:R,docBaseUrl:u,enableXfa:w,evaluatorOptions:{maxImageSize:y,disableFontFace:E,ignoreErrors:v,isEvalSupported:A,isOffscreenCanvasSupported:_,canvasMaxAreaInBytes:S,fontExtraProperties:x,useSystemFonts:I,cMapUrl:D?p:null,standardFontDataUrl:D?m:null}},j={ignoreErrors:v,isEvalSupported:A,disableFontFace:E,fontExtraProperties:x,enableXfa:w,ownerDocument:C,disableAutoFetch:k,pdfBug:M,styleElement:null};h.promise.then((function(){if(e.destroyed)throw new Error("Loading aborted");const t=_fetchDocument(h,B),o=new Promise((function(t){let e;if(l)e=new _transport_stream.PDFDataTransportStream({length:R,initialData:l.initialData,progressiveDone:l.progressiveDone,contentDispositionFilename:l.contentDispositionFilename,disableRange:T,disableStream:P},l);else if(!r){e=(t=>_util.isNodeJS?new _displayNode_stream.PDFNodeStream(t):(0,_display_utils.isValidFetchUrl)(t.url)?new _displayFetch_stream.PDFFetchStream(t):new _displayNetwork.PDFNetworkStream(t))({url:i,length:R,httpHeaders:s,withCredentials:a,rangeChunkSize:c,disableRange:T,disableStream:P})}t(e)}));return Promise.all([t,o]).then((function(t){let[i,r]=t;if(e.destroyed)throw new Error("Loading aborted");const s=new _message_handler.MessageHandler(n,i,h.port),a=new WorkerTransport(s,e,r,j,N);e._transport=a;s.send("Ready",null)}))})).catch(e._capability.reject);return e}async function _fetchDocument(t,e){if(t.destroyed)throw new Error("Worker was destroyed");const n=await t.messageHandler.sendWithPromise("GetDocRequest",e,e.data?[e.data.buffer]:null);if(t.destroyed)throw new Error("Worker was destroyed");return n}function getUrlProp(t){if(t instanceof URL)return t.href;try{return new URL(t,window.location).href}catch{if(_util.isNodeJS&&"string"==typeof t)return t}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function getDataProp(t){if(_util.isNodeJS&&"undefined"!=typeof Buffer&&t instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength)return t;if("string"==typeof t)return(0,_util.stringToBytes)(t);if("object"==typeof t&&!isNaN(t?.length)||(0,_util.isArrayBuffer)(t))return new Uint8Array(t);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}class PDFDocumentLoadingTask{static#e=0;constructor(){this._capability=new _util.PromiseCapability;this._transport=null;this._worker=null;this.docId="d"+PDFDocumentLoadingTask.#e++;this.destroyed=!1;this.onPassword=null;this.onProgress=null}get promise(){return this._capability.promise}async destroy(){this.destroyed=!0;await(this._transport?.destroy());this._transport=null;if(this._worker){this._worker.destroy();this._worker=null}}}exports.PDFDocumentLoadingTask=PDFDocumentLoadingTask;class PDFDataRangeTransport{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;this.length=t;this.initialData=e;this.progressiveDone=n;this.contentDispositionFilename=i;this._rangeListeners=[];this._progressListeners=[];this._progressiveReadListeners=[];this._progressiveDoneListeners=[];this._readyCapability=new _util.PromiseCapability}addRangeListener(t){this._rangeListeners.push(t)}addProgressListener(t){this._progressListeners.push(t)}addProgressiveReadListener(t){this._progressiveReadListeners.push(t)}addProgressiveDoneListener(t){this._progressiveDoneListeners.push(t)}onDataRange(t,e){for(const n of this._rangeListeners)n(t,e)}onDataProgress(t,e){this._readyCapability.promise.then((()=>{for(const n of this._progressListeners)n(t,e)}))}onDataProgressiveRead(t){this._readyCapability.promise.then((()=>{for(const e of this._progressiveReadListeners)e(t)}))}onDataProgressiveDone(){this._readyCapability.promise.then((()=>{for(const t of this._progressiveDoneListeners)t()}))}transportReady(){this._readyCapability.resolve()}requestDataRange(t,e){(0,_util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}exports.PDFDataRangeTransport=PDFDataRangeTransport;class PDFDocumentProxy{constructor(t,e){this._pdfInfo=t;this._transport=e}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(t){return this._transport.getPage(t)}getPageIndex(t){return this._transport.getPageIndex(t)}getDestinations(){return this._transport.getDestinations()}getDestination(t){return this._transport.getDestination(t)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJavaScript(){return this._transport.getJavaScript()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig(){return this._transport.getOptionalContentConfig()}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._transport.startCleanup(t||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}exports.PDFDocumentProxy=PDFDocumentProxy;class PDFPageProxy{#n=null;#i=!1;constructor(t,e,n){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this._pageIndex=t;this._pageInfo=e;this._transport=n;this._stats=i?new _display_utils.StatTimer:null;this._pdfBug=i;this.commonObjs=n.commonObjs;this.objs=new PDFObjects;this._maybeCleanupAfterRender=!1;this._intentStates=new Map;this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport(){let{scale:t,rotation:e=this.rotate,offsetX:n=0,offsetY:i=0,dontFlip:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new _display_utils.PageViewport({viewBox:this.view,scale:t,rotation:e,offsetX:n,offsetY:i,dontFlip:r})}getAnnotations(){let{intent:t="display"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=this._transport.getRenderingIntent(t);return this._transport.getAnnotations(this._pageIndex,e.renderingIntent)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return(0,_util.shadow)(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){return this._transport._htmlForXfa?.children[this._pageIndex]||null}render(t){let{canvasContext:e,viewport:n,intent:i="display",annotationMode:r=_util.AnnotationMode.ENABLE,transform:s=null,background:a=null,optionalContentConfigPromise:o=null,annotationCanvasMap:l=null,pageColors:c=null,printAnnotationStorage:h=null}=t;this._stats?.time("Overall");const d=this._transport.getRenderingIntent(i,r,h);this.#i=!1;this.#r();o||(o=this._transport.getOptionalContentConfig());let u=this._intentStates.get(d.cacheKey);if(!u){u=Object.create(null);this._intentStates.set(d.cacheKey,u)}if(u.streamReaderCancelTimeout){clearTimeout(u.streamReaderCancelTimeout);u.streamReaderCancelTimeout=null}const p=!!(d.renderingIntent&_util.RenderingIntentFlag.PRINT);if(!u.displayReadyCapability){u.displayReadyCapability=new _util.PromiseCapability;u.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(d)}const complete=t=>{u.renderTasks.delete(f);(this._maybeCleanupAfterRender||p)&&(this.#i=!0);this.#s(!p);if(t){f.capability.reject(t);this._abortOperatorList({intentState:u,reason:t instanceof Error?t:new Error(t)})}else f.capability.resolve();this._stats?.timeEnd("Rendering");this._stats?.timeEnd("Overall")},f=new InternalRenderTask({callback:complete,params:{canvasContext:e,viewport:n,transform:s,background:a},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:l,operatorList:u.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!p,pdfBug:this._pdfBug,pageColors:c});(u.renderTasks||=new Set).add(f);const g=f.task;Promise.all([u.displayReadyCapability.promise,o]).then((t=>{let[e,n]=t;if(this.destroyed)complete();else{this._stats?.time("Rendering");f.initializeGraphics({transparency:e,optionalContentConfig:n});f.operatorListChanged()}})).catch(complete);return g}getOperatorList(){let{intent:t="display",annotationMode:e=_util.AnnotationMode.ENABLE,printAnnotationStorage:n=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=this._transport.getRenderingIntent(t,e,n,!0);let r,s=this._intentStates.get(i.cacheKey);if(!s){s=Object.create(null);this._intentStates.set(i.cacheKey,s)}if(!s.opListReadCapability){r=Object.create(null);r.operatorListChanged=function operatorListChanged(){if(s.operatorList.lastChunk){s.opListReadCapability.resolve(s.operatorList);s.renderTasks.delete(r)}};s.opListReadCapability=new _util.PromiseCapability;(s.renderTasks||=new Set).add(r);s.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null};this._stats?.time("Page Request");this._pumpOperatorList(i)}return s.opListReadCapability.promise}streamTextContent(){let{includeMarkedContent:t=!1,disableNormalization:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:!0===t,disableNormalization:!0===e},{highWaterMark:100,size:t=>t.items.length})}getTextContent(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._transport._htmlForXfa)return this.getXfa().then((t=>_xfa_text.XfaText.textContent(t)));const e=this.streamTextContent(t);return new Promise((function(t,n){const i=e.getReader(),r={items:[],styles:Object.create(null)};!function pump(){i.read().then((function(e){let{value:n,done:i}=e;if(i)t(r);else{Object.assign(r.styles,n.styles);r.items.push(...n.items);pump()}}),n)}()}))}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const t=[];for(const e of this._intentStates.values()){this._abortOperatorList({intentState:e,reason:new Error("Page was destroyed."),force:!0});if(!e.opListReadCapability)for(const n of e.renderTasks){t.push(n.completed);n.cancel()}}this.objs.clear();this.#i=!1;this.#r();return Promise.all(t)}cleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.#i=!0;const e=this.#s(!1);t&&e&&(this._stats&&=new _display_utils.StatTimer);return e}#s(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.#r();if(!this.#i||this.destroyed)return!1;if(t){this.#n=setTimeout((()=>{this.#n=null;this.#s(!1)}),DELAYED_CLEANUP_TIMEOUT);return!1}for(const{renderTasks:t,operatorList:e}of this._intentStates.values())if(t.size>0||!e.lastChunk)return!1;this._intentStates.clear();this.objs.clear();this.#i=!1;return!0}#r(){if(this.#n){clearTimeout(this.#n);this.#n=null}}_startRenderPage(t,e){const n=this._intentStates.get(e);if(n){this._stats?.timeEnd("Page Request");n.displayReadyCapability?.resolve(t)}}_renderPageChunk(t,e){for(let n=0,i=t.length;n{a.read().then((t=>{let{value:e,done:n}=t;if(n)o.streamReader=null;else if(!this._transport.destroyed){this._renderPageChunk(e,o);pump()}}),(t=>{o.streamReader=null;if(!this._transport.destroyed){if(o.operatorList){o.operatorList.lastChunk=!0;for(const t of o.renderTasks)t.operatorListChanged();this.#s(!0)}if(o.displayReadyCapability)o.displayReadyCapability.reject(t);else{if(!o.opListReadCapability)throw t;o.opListReadCapability.reject(t)}}}))};pump()}_abortOperatorList(t){let{intentState:e,reason:n,force:i=!1}=t;if(e.streamReader){if(e.streamReaderCancelTimeout){clearTimeout(e.streamReaderCancelTimeout);e.streamReaderCancelTimeout=null}if(!i){if(e.renderTasks.size>0)return;if(n instanceof _display_utils.RenderingCancelledException){let t=RENDERING_CANCELLED_TIMEOUT;n.extraDelay>0&&n.extraDelay<1e3&&(t+=n.extraDelay);e.streamReaderCancelTimeout=setTimeout((()=>{e.streamReaderCancelTimeout=null;this._abortOperatorList({intentState:e,reason:n,force:!0})}),t);return}}e.streamReader.cancel(new _util.AbortException(n.message)).catch((()=>{}));e.streamReader=null;if(!this._transport.destroyed){for(const[t,n]of this._intentStates)if(n===e){this._intentStates.delete(t);break}this.cleanup()}}}get stats(){return this._stats}}exports.PDFPageProxy=PDFPageProxy;class LoopbackPort{#a=new Set;#o=Promise.resolve();postMessage(t,e){const n={data:structuredClone(t,null)};this.#o.then((()=>{for(const t of this.#a)t.call(this,n)}))}addEventListener(t,e){this.#a.add(e)}removeEventListener(t,e){this.#a.delete(e)}terminate(){this.#a.clear()}}exports.LoopbackPort=LoopbackPort;const PDFWorkerUtil={isWorkerDisabled:!1,fallbackWorkerSrc:null,fakeWorkerId:0};exports.PDFWorkerUtil=PDFWorkerUtil;if(_util.isNodeJS&&"function"==typeof require){PDFWorkerUtil.isWorkerDisabled=!0;PDFWorkerUtil.fallbackWorkerSrc="./pdf.worker.js"}else if("object"==typeof document){const t=document?.currentScript?.src;t&&(PDFWorkerUtil.fallbackWorkerSrc=t.replace(/(\.(?:min\.)?js)(\?.*)?$/i,".worker$1$2"))}PDFWorkerUtil.isSameOrigin=function(t,e){let n;try{n=new URL(t);if(!n.origin||"null"===n.origin)return!1}catch{return!1}const i=new URL(e,n);return n.origin===i.origin};PDFWorkerUtil.createCDNWrapper=function(t){const e=`importScripts("${t}");`;return URL.createObjectURL(new Blob([e]))};class PDFWorker{static#l=new WeakMap;constructor(){let{name:t=null,port:e=null,verbosity:n=(0,_util.getVerbosityLevel)()}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e&&PDFWorker.#l.has(e))throw new Error("Cannot use more than one PDFWorker per port.");this.name=t;this.destroyed=!1;this.verbosity=n;this._readyCapability=new _util.PromiseCapability;this._port=null;this._webWorker=null;this._messageHandler=null;if(e){PDFWorker.#l.set(e,this);this._initializeFromPort(e)}else this._initialize()}get promise(){return this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(t){this._port=t;this._messageHandler=new _message_handler.MessageHandler("main","worker",t);this._messageHandler.on("ready",(function(){}));this._readyCapability.resolve();this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!PDFWorkerUtil.isWorkerDisabled&&!PDFWorker._mainThreadWorkerMessageHandler){let{workerSrc:t}=PDFWorker;try{PDFWorkerUtil.isSameOrigin(window.location.href,t)||(t=PDFWorkerUtil.createCDNWrapper(new URL(t,window.location).href));const e=new Worker(t),n=new _message_handler.MessageHandler("main","worker",e),terminateEarly=()=>{e.removeEventListener("error",onWorkerError);n.destroy();e.terminate();this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},onWorkerError=()=>{this._webWorker||terminateEarly()};e.addEventListener("error",onWorkerError);n.on("test",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else if(t){this._messageHandler=n;this._port=e;this._webWorker=e;this._readyCapability.resolve();n.send("configure",{verbosity:this.verbosity})}else{this._setupFakeWorker();n.destroy();e.terminate()}}));n.on("ready",(t=>{e.removeEventListener("error",onWorkerError);if(this.destroyed)terminateEarly();else try{sendTest()}catch{this._setupFakeWorker()}}));const sendTest=()=>{const t=new Uint8Array;n.send("test",t,[t.buffer])};sendTest();return}catch{(0,_util.info)("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){if(!PDFWorkerUtil.isWorkerDisabled){(0,_util.warn)("Setting up fake worker.");PDFWorkerUtil.isWorkerDisabled=!0}PDFWorker._setupFakeWorkerGlobal.then((t=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const e=new LoopbackPort;this._port=e;const n="fake"+PDFWorkerUtil.fakeWorkerId++,i=new _message_handler.MessageHandler(n+"_worker",n,e);t.setup(i,e);const r=new _message_handler.MessageHandler(n,n+"_worker",e);this._messageHandler=r;this._readyCapability.resolve();r.send("configure",{verbosity:this.verbosity})})).catch((t=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${t.message}".`))}))}destroy(){this.destroyed=!0;if(this._webWorker){this._webWorker.terminate();this._webWorker=null}PDFWorker.#l.delete(this._port);this._port=null;if(this._messageHandler){this._messageHandler.destroy();this._messageHandler=null}}static fromPort(t){if(!t?.port)throw new Error("PDFWorker.fromPort - invalid method signature.");return this.#l.has(t.port)?this.#l.get(t.port):new PDFWorker(t)}static get workerSrc(){if(_worker_options.GlobalWorkerOptions.workerSrc)return _worker_options.GlobalWorkerOptions.workerSrc;if(null!==PDFWorkerUtil.fallbackWorkerSrc){_util.isNodeJS||(0,_display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');return PDFWorkerUtil.fallbackWorkerSrc}throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _mainThreadWorkerMessageHandler(){try{return globalThis.pdfjsWorker?.WorkerMessageHandler||null}catch{return null}}static get _setupFakeWorkerGlobal(){const loader=async()=>{const mainWorkerMessageHandler=this._mainThreadWorkerMessageHandler;if(mainWorkerMessageHandler)return mainWorkerMessageHandler;if(_util.isNodeJS&&"function"==typeof require){const worker=eval("require")(this.workerSrc);return worker.WorkerMessageHandler}await(0,_display_utils.loadScript)(this.workerSrc);return window.pdfjsWorker.WorkerMessageHandler};return(0,_util.shadow)(this,"_setupFakeWorkerGlobal",loader())}}exports.PDFWorker=PDFWorker;class WorkerTransport{#c=new Map;#h=new Map;#d=new Map;#u=null;constructor(t,e,n,i,r){this.messageHandler=t;this.loadingTask=e;this.commonObjs=new PDFObjects;this.fontLoader=new _font_loader.FontLoader({ownerDocument:i.ownerDocument,styleElement:i.styleElement});this._params=i;this.canvasFactory=r.canvasFactory;this.filterFactory=r.filterFactory;this.cMapReaderFactory=r.cMapReaderFactory;this.standardFontDataFactory=r.standardFontDataFactory;this.destroyed=!1;this.destroyCapability=null;this._networkStream=n;this._fullReader=null;this._lastProgress=null;this.downloadInfoCapability=new _util.PromiseCapability;this.setupMessageHandler()}#p(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=this.#c.get(t);if(n)return n;const i=this.messageHandler.sendWithPromise(t,e);this.#c.set(t,i);return i}get annotationStorage(){return(0,_util.shadow)(this,"annotationStorage",new _annotation_storage.AnnotationStorage)}getRenderingIntent(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_util.AnnotationMode.ENABLE,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=_util.RenderingIntentFlag.DISPLAY,s=_annotation_storage.SerializableEmpty;switch(t){case"any":r=_util.RenderingIntentFlag.ANY;break;case"display":break;case"print":r=_util.RenderingIntentFlag.PRINT;break;default:(0,_util.warn)(`getRenderingIntent - invalid intent: ${t}`)}switch(e){case _util.AnnotationMode.DISABLE:r+=_util.RenderingIntentFlag.ANNOTATIONS_DISABLE;break;case _util.AnnotationMode.ENABLE:break;case _util.AnnotationMode.ENABLE_FORMS:r+=_util.RenderingIntentFlag.ANNOTATIONS_FORMS;break;case _util.AnnotationMode.ENABLE_STORAGE:r+=_util.RenderingIntentFlag.ANNOTATIONS_STORAGE;s=(r&_util.RenderingIntentFlag.PRINT&&n instanceof _annotation_storage.PrintAnnotationStorage?n:this.annotationStorage).serializable;break;default:(0,_util.warn)(`getRenderingIntent - invalid annotationMode: ${e}`)}i&&(r+=_util.RenderingIntentFlag.OPLIST);return{renderingIntent:r,cacheKey:`${r}_${s.hash}`,annotationStorageSerializable:s}}destroy(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0;this.destroyCapability=new _util.PromiseCapability;this.#u?.reject(new Error("Worker was destroyed during onPassword callback"));const t=[];for(const e of this.#h.values())t.push(e._destroy());this.#h.clear();this.#d.clear();this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const e=this.messageHandler.sendWithPromise("Terminate",null);t.push(e);Promise.all(t).then((()=>{this.commonObjs.clear();this.fontLoader.clear();this.#c.clear();this.filterFactory.destroy();this._networkStream&&this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));if(this.messageHandler){this.messageHandler.destroy();this.messageHandler=null}this.destroyCapability.resolve()}),this.destroyCapability.reject);return this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:t,loadingTask:e}=this;t.on("GetReader",((t,e)=>{(0,_util.assert)(this._networkStream,"GetReader - no `IPDFStream` instance available.");this._fullReader=this._networkStream.getFullReader();this._fullReader.onProgress=t=>{this._lastProgress={loaded:t.loaded,total:t.total}};e.onPull=()=>{this._fullReader.read().then((function(t){let{value:n,done:i}=t;if(i)e.close();else{(0,_util.assert)(n instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(n),1,[n])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{this._fullReader.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}));t.on("ReaderHeadersReady",(t=>{const n=new _util.PromiseCapability,i=this._fullReader;i.headersReady.then((()=>{if(!i.isStreamingSupported||!i.isRangeSupported){this._lastProgress&&e.onProgress?.(this._lastProgress);i.onProgress=t=>{e.onProgress?.({loaded:t.loaded,total:t.total})}}n.resolve({isStreamingSupported:i.isStreamingSupported,isRangeSupported:i.isRangeSupported,contentLength:i.contentLength})}),n.reject);return n.promise}));t.on("GetRangeReader",((t,e)=>{(0,_util.assert)(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const n=this._networkStream.getRangeReader(t.begin,t.end);if(n){e.onPull=()=>{n.read().then((function(t){let{value:n,done:i}=t;if(i)e.close();else{(0,_util.assert)(n instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer.");e.enqueue(new Uint8Array(n),1,[n])}})).catch((t=>{e.error(t)}))};e.onCancel=t=>{n.cancel(t);e.ready.catch((t=>{if(!this.destroyed)throw t}))}}else e.close()}));t.on("GetDoc",(t=>{let{pdfInfo:n}=t;this._numPages=n.numPages;this._htmlForXfa=n.htmlForXfa;delete n.htmlForXfa;e._capability.resolve(new PDFDocumentProxy(n,this))}));t.on("DocException",(function(t){let n;switch(t.name){case"PasswordException":n=new _util.PasswordException(t.message,t.code);break;case"InvalidPDFException":n=new _util.InvalidPDFException(t.message);break;case"MissingPDFException":n=new _util.MissingPDFException(t.message);break;case"UnexpectedResponseException":n=new _util.UnexpectedResponseException(t.message,t.status);break;case"UnknownErrorException":n=new _util.UnknownErrorException(t.message,t.details);break;default:(0,_util.unreachable)("DocException - expected a valid Error.")}e._capability.reject(n)}));t.on("PasswordRequest",(t=>{this.#u=new _util.PromiseCapability;if(e.onPassword){const updatePassword=t=>{t instanceof Error?this.#u.reject(t):this.#u.resolve({password:t})};try{e.onPassword(updatePassword,t.code)}catch(t){this.#u.reject(t)}}else this.#u.reject(new _util.PasswordException(t.message,t.code));return this.#u.promise}));t.on("DataLoaded",(t=>{e.onProgress?.({loaded:t.length,total:t.length});this.downloadInfoCapability.resolve(t)}));t.on("StartRenderPage",(t=>{if(this.destroyed)return;this.#h.get(t.pageIndex)._startRenderPage(t.transparency,t.cacheKey)}));t.on("commonobj",(e=>{let[n,i,r]=e;if(!this.destroyed&&!this.commonObjs.has(n))switch(i){case"Font":const e=this._params;if("error"in r){const t=r.error;(0,_util.warn)(`Error during font loading: ${t}`);this.commonObjs.resolve(n,t);break}const s=e.pdfBug&&globalThis.FontInspector?.enabled?(t,e)=>globalThis.FontInspector.fontAdded(t,e):null,a=new _font_loader.FontFaceObject(r,{isEvalSupported:e.isEvalSupported,disableFontFace:e.disableFontFace,ignoreErrors:e.ignoreErrors,inspectFont:s});this.fontLoader.bind(a).catch((e=>t.sendWithPromise("FontFallback",{id:n}))).finally((()=>{!e.fontExtraProperties&&a.data&&(a.data=null);this.commonObjs.resolve(n,a)}));break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(n,r);break;default:throw new Error(`Got unknown common object type ${i}`)}}));t.on("obj",(t=>{let[e,n,i,r]=t;if(this.destroyed)return;const s=this.#h.get(n);if(!s.objs.has(e))switch(i){case"Image":s.objs.resolve(e,r);if(r){let t;if(r.bitmap){const{width:e,height:n}=r;t=e*n*4}else t=r.data?.length||0;t>_util.MAX_IMAGE_SIZE_TO_CACHE&&(s._maybeCleanupAfterRender=!0)}break;case"Pattern":s.objs.resolve(e,r);break;default:throw new Error(`Got unknown object type ${i}`)}}));t.on("DocProgress",(t=>{this.destroyed||e.onProgress?.({loaded:t.loaded,total:t.total})}));t.on("FetchBuiltInCMap",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(t):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))));t.on("FetchStandardFontData",(t=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(t):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."))))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){this.annotationStorage.size<=0&&(0,_util.warn)("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:t,transfers:e}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:t,filename:this._fullReader?.filename??null},e).finally((()=>{this.annotationStorage.resetModified()}))}getPage(t){if(!Number.isInteger(t)||t<=0||t>this._numPages)return Promise.reject(new Error("Invalid page request."));const e=t-1,n=this.#d.get(e);if(n)return n;const i=this.messageHandler.sendWithPromise("GetPage",{pageIndex:e}).then((t=>{if(this.destroyed)throw new Error("Transport destroyed");const n=new PDFPageProxy(e,t,this,this._params.pdfBug);this.#h.set(e,n);return n}));this.#d.set(e,i);return i}getPageIndex(t){return"object"!=typeof t||null===t||!Number.isInteger(t.num)||t.num<0||!Number.isInteger(t.gen)||t.gen<0?Promise.reject(new Error("Invalid pageIndex request.")):this.messageHandler.sendWithPromise("GetPageIndex",{num:t.num,gen:t.gen})}getAnnotations(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})}getFieldObjects(){return this.#p("GetFieldObjects")}hasJSActions(){return this.#p("HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(t){return"string"!=typeof t?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:t})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getJavaScript(){return this.messageHandler.sendWithPromise("GetJavaScript",null)}getDocJSActions(){return this.messageHandler.sendWithPromise("GetDocJSActions",null)}getPageJSActions(t){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:t})}getStructTree(t){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:t})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(){return this.messageHandler.sendWithPromise("GetOptionalContentConfig",null).then((t=>new _optional_content_config.OptionalContentConfig(t)))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const t="GetMetadata",e=this.#c.get(t);if(e)return e;const n=this.messageHandler.sendWithPromise(t,null).then((t=>({info:t[0],metadata:t[1]?new _metadata.Metadata(t[1]):null,contentDispositionFilename:this._fullReader?.filename??null,contentLength:this._fullReader?.contentLength??null})));this.#c.set(t,n);return n}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.destroyed){await this.messageHandler.sendWithPromise("Cleanup",null);for(const t of this.#h.values()){if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`)}this.commonObjs.clear();t||this.fontLoader.clear();this.#c.clear();this.filterFactory.destroy(!0)}}get loadingParams(){const{disableAutoFetch:t,enableXfa:e}=this._params;return(0,_util.shadow)(this,"loadingParams",{disableAutoFetch:t,enableXfa:e})}}class PDFObjects{#f=Object.create(null);#g(t){const e=this.#f[t];return e||(this.#f[t]={capability:new _util.PromiseCapability,data:null})}get(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(e){const n=this.#g(t);n.capability.promise.then((()=>e(n.data)));return null}const n=this.#f[t];if(!n?.capability.settled)throw new Error(`Requesting object that isn't resolved yet ${t}.`);return n.data}has(t){const e=this.#f[t];return e?.capability.settled||!1}resolve(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=this.#g(t);n.data=e;n.capability.resolve()}clear(){for(const t in this.#f){const{data:e}=this.#f[t];e?.bitmap?.close()}this.#f=Object.create(null)}}class RenderTask{#m=null;constructor(t){this.#m=t;this.onContinue=null}get promise(){return this.#m.capability.promise}cancel(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.#m.cancel(null,t)}get separateAnnots(){const{separateAnnots:t}=this.#m.operatorList;if(!t)return!1;const{annotationCanvasMap:e}=this.#m;return t.form||t.canvas&&e?.size>0}}exports.RenderTask=RenderTask;class InternalRenderTask{static#b=new WeakSet;constructor(t){let{callback:e,params:n,objs:i,commonObjs:r,annotationCanvasMap:s,operatorList:a,pageIndex:o,canvasFactory:l,filterFactory:c,useRequestAnimationFrame:h=!1,pdfBug:d=!1,pageColors:u=null}=t;this.callback=e;this.params=n;this.objs=i;this.commonObjs=r;this.annotationCanvasMap=s;this.operatorListIdx=null;this.operatorList=a;this._pageIndex=o;this.canvasFactory=l;this.filterFactory=c;this._pdfBug=d;this.pageColors=u;this.running=!1;this.graphicsReadyCallback=null;this.graphicsReady=!1;this._useRequestAnimationFrame=!0===h&&"undefined"!=typeof window;this.cancelled=!1;this.capability=new _util.PromiseCapability;this.task=new RenderTask(this);this._cancelBound=this.cancel.bind(this);this._continueBound=this._continue.bind(this);this._scheduleNextBound=this._scheduleNext.bind(this);this._nextBound=this._next.bind(this);this._canvas=n.canvasContext.canvas}get completed(){return this.capability.promise.catch((function(){}))}initializeGraphics(t){let{transparency:e=!1,optionalContentConfig:n}=t;if(this.cancelled)return;if(this._canvas){if(InternalRenderTask.#b.has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");InternalRenderTask.#b.add(this._canvas)}if(this._pdfBug&&globalThis.StepperManager?.enabled){this.stepper=globalThis.StepperManager.create(this._pageIndex);this.stepper.init(this.operatorList);this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint()}const{canvasContext:i,viewport:r,transform:s,background:a}=this.params;this.gfx=new _canvas.CanvasGraphics(i,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:n},this.annotationCanvasMap,this.pageColors);this.gfx.beginDrawing({transform:s,viewport:r,transparency:e,background:a});this.operatorListIdx=0;this.graphicsReady=!0;this.graphicsReadyCallback?.()}cancel(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.running=!1;this.cancelled=!0;this.gfx?.endDrawing();this._canvas&&InternalRenderTask.#b.delete(this._canvas);this.callback(t||new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex+1}`,e))}operatorListChanged(){if(this.graphicsReady){this.stepper?.updateOperatorList(this.operatorList);this.running||this._continue()}else this.graphicsReadyCallback||=this._continueBound}_continue(){this.running=!0;this.cancelled||(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame((()=>{this._nextBound().catch(this._cancelBound)})):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){if(!this.cancelled){this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper);if(this.operatorListIdx===this.operatorList.argsArray.length){this.running=!1;if(this.operatorList.lastChunk){this.gfx.endDrawing(this.pageColors);this._canvas&&InternalRenderTask.#b.delete(this._canvas);this.callback()}}}}}const version="3.9.179";exports.version=version;const build="1ef6fbc52";exports.build=build},(t,e,n)=>{var i=n(3),r=n(126);i({target:"Set",proto:!0,real:!0,forced:!n(134)("difference")},{difference:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(129),a=n(132),o=n(133),l=n(130),c=n(131),h=r.has,d=r.remove;t.exports=function difference(t){var e=i(this),n=o(t),r=s(e);a(e)<=n.size?l(e,(function(t){n.includes(t)&&d(r,t)})):c(n.getIterator(),(function(t){h(e,t)&&d(r,t)}));return r}},(t,e,n)=>{var i=n(128).has;t.exports=function(t){i(t);return t}},(t,e,n)=>{var i=n(14),r=Set.prototype;t.exports={Set:Set,add:i(r.add),has:i(r.has),remove:i(r.delete),proto:r}},(t,e,n)=>{var i=n(128),r=n(130),s=i.Set,a=i.add;t.exports=function(t){var e=new s;r(t,(function(t){a(e,t)}));return e}},(t,e,n)=>{var i=n(14),r=n(131),s=n(128),a=s.Set,o=s.proto,l=i(o.forEach),c=i(o.keys),h=c(new a).next;t.exports=function(t,e,n){return n?r(c(t),e,h):l(t,e)}},(t,e,n)=>{var i=n(8);t.exports=function(t,e,n){for(var r,s,a=n||t.next;!(r=i(a,t)).done;)if(void 0!==(s=e(r.value)))return s}},(t,e,n)=>{var i=n(72),r=n(128);t.exports=i(r.proto,"size","get")||function(t){return t.size}},(t,e,n)=>{var i=n(31),r=n(47),s=n(8),a=n(62),o=TypeError,l=Math.max,SetRecord=function(t,e,n,i){this.set=t;this.size=e;this.has=n;this.keys=i};SetRecord.prototype={getIterator:function(){return r(s(this.keys,this.set))},includes:function(t){return s(this.has,this.set,t)}};t.exports=function(t){r(t);var e=+t.size;if(e!=e)throw o("Invalid size");return new SetRecord(t,l(a(e),0),i(t.has),i(t.keys))}},(t,e,n)=>{var i=n(24);t.exports=function(t){try{(new(i("Set")))[t]({size:0,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}});return!0}catch(t){return!1}}},(t,e,n)=>{var i=n(3),r=n(7),s=n(136);i({target:"Set",proto:!0,real:!0,forced:!n(134)("intersection")||r((function(){return"3,2"!=Array.from(new Set([1,2,3]).intersection(new Set([3,2])))}))},{intersection:s})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(132),a=n(133),o=n(130),l=n(131),c=r.Set,h=r.add,d=r.has;t.exports=function intersection(t){var e=i(this),n=a(t),r=new c;s(e)>n.size?l(n.getIterator(),(function(t){d(e,t)&&h(r,t)})):o(e,(function(t){n.includes(t)&&h(r,t)}));return r}},(t,e,n)=>{var i=n(3),r=n(138);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isDisjointFrom")},{isDisjointFrom:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).has,s=n(132),a=n(133),o=n(130),l=n(131),c=n(139);t.exports=function isDisjointFrom(t){var e=i(this),n=a(t);if(s(e)<=n.size)return!1!==o(e,(function(t){if(n.includes(t))return!1}),!0);var h=n.getIterator();return!1!==l(h,(function(t){if(r(e,t))return c(h,"normal",!1)}))}},(t,e,n)=>{var i=n(8),r=n(47),s=n(30);t.exports=function(t,e,n){var a,o;r(t);try{if(!(a=s(t,"return"))){if("throw"===e)throw n;return n}a=i(a,t)}catch(t){o=!0;a=t}if("throw"===e)throw n;if(o)throw a;r(a);return n}},(t,e,n)=>{var i=n(3),r=n(141);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isSubsetOf")},{isSubsetOf:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(132),s=n(130),a=n(133);t.exports=function isSubsetOf(t){var e=i(this),n=a(t);return!(r(e)>n.size)&&!1!==s(e,(function(t){if(!n.includes(t))return!1}),!0)}},(t,e,n)=>{var i=n(3),r=n(143);i({target:"Set",proto:!0,real:!0,forced:!n(134)("isSupersetOf")},{isSupersetOf:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).has,s=n(132),a=n(133),o=n(131),l=n(139);t.exports=function isSupersetOf(t){var e=i(this),n=a(t);if(s(e){var i=n(3),r=n(145);i({target:"Set",proto:!0,real:!0,forced:!n(134)("symmetricDifference")},{symmetricDifference:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128),s=n(129),a=n(133),o=n(131),l=r.add,c=r.has,h=r.remove;t.exports=function symmetricDifference(t){var e=i(this),n=a(t).getIterator(),r=s(e);o(n,(function(t){c(e,t)?h(r,t):l(r,t)}));return r}},(t,e,n)=>{var i=n(3),r=n(147);i({target:"Set",proto:!0,real:!0,forced:!n(134)("union")},{union:r})},(t,e,n)=>{"use strict";var i=n(127),r=n(128).add,s=n(129),a=n(133),o=n(131);t.exports=function union(t){var e=i(this),n=a(t).getIterator(),l=s(e);o(n,(function(t){r(l,t)}));return l}},(t,e,n)=>{"use strict";var i=n(3),r=n(4),s=n(24),a=n(11),o=n(45).f,l=n(39),c=n(149),h=n(75),d=n(76),u=n(150),p=n(82),f=n(6),g=n(36),m="DOMException",b=s("Error"),v=s(m),y=function DOMException(){c(this,A);var t=arguments.length,e=d(t<1?void 0:arguments[0]),n=d(t<2?void 0:arguments[1],"Error"),i=new v(e,n),r=b(e);r.name=m;o(i,"stack",a(1,p(r.stack,1)));h(i,this,y);return i},A=y.prototype=v.prototype,_="stack"in b(m),S="stack"in new v(1,2),E=v&&f&&Object.getOwnPropertyDescriptor(r,m),x=!(!E||E.writable&&E.configurable),w=_&&!x&&!S;i({global:!0,constructor:!0,forced:g||w},{DOMException:w?y:v});var C=s(m),T=C.prototype;if(T.constructor!==C){g||o(T,"constructor",a(1,C));for(var P in u)if(l(u,P)){var k=u[P],M=k.s;l(C,M)||o(C,M,a(6,k.c))}}},(t,e,n)=>{var i=n(25),r=TypeError;t.exports=function(t,e){if(i(e,t))return t;throw r("Incorrect invocation")}},t=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},(t,e,n)=>{var i,r=n(36),s=n(3),a=n(4),o=n(24),l=n(14),c=n(7),h=n(41),d=n(21),u=n(152),p=n(17),f=n(20),g=n(23),m=n(153),b=n(47),v=n(78),y=n(39),A=n(158),_=n(44),S=n(64),E=n(85),x=n(159),w=n(161),C=n(128),T=n(83),P=n(119),k=a.Object,M=a.Array,R=a.Date,I=a.Error,D=a.EvalError,O=a.RangeError,L=a.ReferenceError,N=a.SyntaxError,B=a.TypeError,j=a.URIError,U=a.PerformanceMark,z=a.WebAssembly,H=z&&z.CompileError||I,q=z&&z.LinkError||I,W=z&&z.RuntimeError||I,G=o("DOMException"),V=w.Map,$=w.has,X=w.get,K=w.set,Y=C.Set,J=C.add,Q=o("Object","keys"),Z=l([].push),tt=l((!0).valueOf),et=l(1..valueOf),nt=l("".valueOf),it=l(R.prototype.getTime),rt=h("structuredClone"),st="DataCloneError",at="Transferring",checkBasicSemantic=function(t){return!c((function(){var e=new a.Set([7]),n=t(e),i=t(k(7));return n==e||!n.has(7)||"object"!=typeof i||7!=i}))&&t},checkErrorsCloning=function(t,e){return!c((function(){var n=new e,i=t({a:n,b:n});return!(i&&i.a===i.b&&i.a instanceof e&&i.a.stack===n.stack)}))},ot=a.structuredClone,lt=r||!checkErrorsCloning(ot,I)||!checkErrorsCloning(ot,G)||!(i=ot,!c((function(){var t=i(new a.AggregateError([1],rt,{cause:3}));return"AggregateError"!=t.name||1!=t.errors[0]||t.message!=rt||3!=t.cause}))),ct=!ot&&checkBasicSemantic((function(t){return new U(rt,{detail:t}).detail})),ht=checkBasicSemantic(ot)||ct,throwUncloneable=function(t){throw new G("Uncloneable type: "+t,st)},throwUnpolyfillable=function(t,e){throw new G((e||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",st)},tryNativeRestrictedStructuredClone=function(t,e){ht||throwUnpolyfillable(e);return ht(t)},cloneBuffer=function(t,e,n){if($(e,t))return X(e,t);var i,r,s,o,l,c;if("SharedArrayBuffer"===(n||v(t)))i=ht?ht(t):t;else{var h=a.DataView;h||"function"==typeof t.slice||throwUnpolyfillable("ArrayBuffer");try{if("function"!=typeof t.slice||t.resizable){r=t.byteLength;s="maxByteLength"in t?{maxByteLength:t.maxByteLength}:void 0;i=new ArrayBuffer(r,s);o=new h(t);l=new h(i);for(c=0;c1&&!p(arguments[1])?b(arguments[1]):void 0,r=i?i.transfer:void 0,s=!1;if(void 0!==r){n=function(t,e){if(!f(t))throw B("Transfer option cannot be converted to a sequence");var n=[];m(t,(function(t){Z(n,b(t))}));for(var i,r,s,o,l,c=0,h=S(n),p=[];c{var i=n(14),r=n(7),s=n(21),a=n(78),o=n(24),l=n(51),noop=function(){},c=[],h=o("Reflect","construct"),d=/^\s*(?:class|function)\b/,u=i(d.exec),p=!d.exec(noop),f=function isConstructor(t){if(!s(t))return!1;try{h(noop,c,t);return!0}catch(t){return!1}},g=function isConstructor(t){if(!s(t))return!1;switch(a(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return p||!!u(d,l(t))}catch(t){return!0}};g.sham=!0;t.exports=!h||r((function(){var t;return f(f.call)||!f(Object)||!f((function(){t=!0}))||t}))?g:f},(t,e,n)=>{var i=n(99),r=n(8),s=n(47),a=n(32),o=n(154),l=n(64),c=n(25),h=n(156),d=n(157),u=n(139),p=TypeError,Result=function(t,e){this.stopped=t;this.result=e},f=Result.prototype;t.exports=function(t,e,n){var g,m,b,v,y,A,_,S=n&&n.that,E=!(!n||!n.AS_ENTRIES),x=!(!n||!n.IS_RECORD),w=!(!n||!n.IS_ITERATOR),C=!(!n||!n.INTERRUPTED),T=i(e,S),stop=function(t){g&&u(g,"normal",t);return new Result(!0,t)},callFn=function(t){if(E){s(t);return C?T(t[0],t[1],stop):T(t[0],t[1])}return C?T(t,stop):T(t)};if(x)g=t.iterator;else if(w)g=t;else{if(!(m=d(t)))throw p(a(t)+" is not iterable");if(o(m)){for(b=0,v=l(t);v>b;b++)if((y=callFn(t[b]))&&c(f,y))return y;return new Result(!1)}g=h(t,m)}A=x?t.next:g.next;for(;!(_=r(A,g)).done;){try{y=callFn(_.value)}catch(t){u(g,"throw",t)}if("object"==typeof y&&y&&c(f,y))return y}return new Result(!1)}},(t,e,n)=>{var i=n(34),r=n(155),s=i("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[s]===t)}},t=>{t.exports={}},(t,e,n)=>{var i=n(8),r=n(31),s=n(47),a=n(32),o=n(157),l=TypeError;t.exports=function(t,e){var n=arguments.length<2?o(t):e;if(r(n))return s(i(n,t));throw l(a(t)+" is not iterable")}},(t,e,n)=>{var i=n(78),r=n(30),s=n(17),a=n(155),o=n(34)("iterator");t.exports=function(t){if(!s(t))return r(t,o)||r(t,"@@iterator")||a[i(t)]}},(t,e,n)=>{"use strict";var i=n(18),r=n(45),s=n(11);t.exports=function(t,e,n){var a=i(e);a in t?r.f(t,a,s(0,n)):t[a]=n}},(t,e,n)=>{var i=n(8),r=n(39),s=n(25),a=n(160),o=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||"flags"in o||r(t,"flags")||!s(o,t)?e:i(a,t)}},(t,e,n)=>{"use strict";var i=n(47);t.exports=function(){var t=i(this),e="";t.hasIndices&&(e+="d");t.global&&(e+="g");t.ignoreCase&&(e+="i");t.multiline&&(e+="m");t.dotAll&&(e+="s");t.unicode&&(e+="u");t.unicodeSets&&(e+="v");t.sticky&&(e+="y");return e}},(t,e,n)=>{var i=n(14),r=Map.prototype;t.exports={Map:Map,set:i(r.set),get:i(r.get),has:i(r.has),remove:i(r.delete),proto:r}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SerializableEmpty=e.PrintAnnotationStorage=e.AnnotationStorage=void 0;n(89);n(148);n(151);var i=n(1),r=n(163),s=n(169);const a=Object.freeze({map:null,hash:"",transfers:void 0});e.SerializableEmpty=a;class AnnotationStorage{#v=!1;#y=new Map;constructor(){this.onSetModified=null;this.onResetModified=null;this.onAnnotationEditor=null}getValue(t,e){const n=this.#y.get(t);return void 0===n?e:Object.assign(e,n)}getRawValue(t){return this.#y.get(t)}remove(t){this.#y.delete(t);0===this.#y.size&&this.resetModified();if("function"==typeof this.onAnnotationEditor){for(const t of this.#y.values())if(t instanceof r.AnnotationEditor)return;this.onAnnotationEditor(null)}}setValue(t,e){const n=this.#y.get(t);let i=!1;if(void 0!==n){for(const[t,r]of Object.entries(e))if(n[t]!==r){i=!0;n[t]=r}}else{i=!0;this.#y.set(t,e)}i&&this.#A();e instanceof r.AnnotationEditor&&"function"==typeof this.onAnnotationEditor&&this.onAnnotationEditor(e.constructor._type)}has(t){return this.#y.has(t)}getAll(){return this.#y.size>0?(0,i.objectFromMap)(this.#y):null}setAll(t){for(const[e,n]of Object.entries(t))this.setValue(e,n)}get size(){return this.#y.size}#A(){if(!this.#v){this.#v=!0;"function"==typeof this.onSetModified&&this.onSetModified()}}resetModified(){if(this.#v){this.#v=!1;"function"==typeof this.onResetModified&&this.onResetModified()}}get print(){return new PrintAnnotationStorage(this)}get serializable(){if(0===this.#y.size)return a;const t=new Map,e=new s.MurmurHash3_64,n=[],i=Object.create(null);let o=!1;for(const[n,s]of this.#y){const a=s instanceof r.AnnotationEditor?s.serialize(!1,i):s;if(a){t.set(n,a);e.update(`${n}:${JSON.stringify(a)}`);o||=!!a.bitmap}}if(o)for(const e of t.values())e.bitmap&&n.push(e.bitmap);return t.size>0?{map:t,hash:e.hexdigest(),transfers:n}:a}}e.AnnotationStorage=AnnotationStorage;class PrintAnnotationStorage extends AnnotationStorage{#_;constructor(t){super();const{map:e,hash:n,transfers:i}=t.serializable,r=structuredClone(e,null);this.#_={map:r,hash:n,transfers:i}}get print(){(0,i.unreachable)("Should not call PrintAnnotationStorage.print")}get serializable(){return this.#_}}e.PrintAnnotationStorage=PrintAnnotationStorage},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.AnnotationEditor=void 0;n(89);n(2);var i=n(1),r=n(164);class AnnotationEditor{#S=!1;#E=null;#x=null;#w=this.focusin.bind(this);#C=this.focusout.bind(this);#T=!1;#P=!1;#k=!1;_uiManager=null;#M=AnnotationEditor._zIndex++;static _colorManager=new r.ColorManager;static _zIndex=1;constructor(t){this.constructor===AnnotationEditor&&(0,i.unreachable)("Cannot initialize AnnotationEditor.");this.parent=t.parent;this.id=t.id;this.width=this.height=null;this.pageIndex=t.parent.pageIndex;this.name=t.name;this.div=null;this._uiManager=t.uiManager;this.annotationElementId=null;this._willKeepAspectRatio=!1;const{rotation:e,rawDims:{pageWidth:n,pageHeight:r,pageX:s,pageY:a}}=this.parent.viewport;this.rotation=e;this.pageRotation=(360+e-this._uiManager.viewParameters.rotation)%360;this.pageDimensions=[n,r];this.pageTranslation=[s,a];const[o,l]=this.parentDimensions;this.x=t.x/o;this.y=t.y/l;this.isAttachedToDOM=!1;this.deleted=!1}static get _defaultLineColor(){return(0,i.shadow)(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(t){const e=new FakeEditor({id:t.parent.getNextId(),parent:t.parent,uiManager:t._uiManager});e.annotationElementId=t.annotationElementId;e.deleted=!0;e._uiManager.addToAnnotationStorage(e)}static initialize(t){}static updateDefaultParams(t,e){}static get defaultPropertiesToUpdate(){return[]}get propertiesToUpdate(){return[]}addCommands(t){this._uiManager.addCommands(t)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=this.#M}setParent(t){if(null!==t){this.pageIndex=t.pageIndex;this.pageDimensions=t.pageDimensions}this.parent=t}focusin(t){this.#T?this.#T=!1:this.parent.setSelected(this)}focusout(t){if(!this.isAttachedToDOM)return;const e=t.relatedTarget;if(!e?.closest(`#${this.id}`)){t.preventDefault();this.parent?.isMultipleSelection||this.commitOrRemove()}}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}dragstart(t){const e=this.parent.div.getBoundingClientRect();this.startX=t.clientX-e.x;this.startY=t.clientY-e.y;t.dataTransfer.setData("text/plain",this.id);t.dataTransfer.effectAllowed="move"}setAt(t,e,n,i){const[r,s]=this.parentDimensions;[n,i]=this.screenToPageTranslation(n,i);this.x=(t+n)/r;this.y=(e+i)/s;this.fixAndSetPosition()}#R(t,e,n){let[i,r]=t;[e,n]=this.screenToPageTranslation(e,n);this.x+=e/i;this.y+=n/r;this.fixAndSetPosition()}translate(t,e){this.#R(this.parentDimensions,t,e)}translateInPage(t,e){this.#R(this.pageDimensions,t,e);this.div.scrollIntoView({block:"nearest"})}fixAndSetPosition(){const[t,e]=this.pageDimensions;let{x:n,y:i,width:r,height:s}=this;r*=t;s*=e;n*=t;i*=e;switch(this.rotation){case 0:n=Math.max(0,Math.min(t-r,n));i=Math.max(0,Math.min(e-s,i));break;case 90:n=Math.max(0,Math.min(t-s,n));i=Math.min(e,Math.max(r,i));break;case 180:n=Math.min(t,Math.max(r,n));i=Math.min(e,Math.max(s,i));break;case 270:n=Math.min(t,Math.max(s,n));i=Math.max(0,Math.min(e-r,i))}this.x=n/t;this.y=i/e;this.div.style.left=`${(100*this.x).toFixed(2)}%`;this.div.style.top=`${(100*this.y).toFixed(2)}%`}screenToPageTranslation(t,e){switch(this.parentRotation){case 90:return[e,-t];case 180:return[-t,-e];case 270:return[-e,t];default:return[t,e]}}pageTranslationToScreen(t,e){switch(this.parentRotation){case 90:return[-e,t];case 180:return[-t,-e];case 270:return[e,-t];default:return[t,e]}}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{realScale:t}=this._uiManager.viewParameters,[e,n]=this.pageDimensions;return[e*t,n*t]}setDims(t,e){const[n,i]=this.parentDimensions;this.div.style.width=`${(100*t/n).toFixed(2)}%`;this.#S||(this.div.style.height=`${(100*e/i).toFixed(2)}%`)}fixDims(){const{style:t}=this.div,{height:e,width:n}=t,i=n.endsWith("%"),r=!this.#S&&e.endsWith("%");if(i&&r)return;const[s,a]=this.parentDimensions;i||(t.width=`${(100*parseFloat(n)/s).toFixed(2)}%`);this.#S||r||(t.height=`${(100*parseFloat(e)/a).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}#F(){if(this.#E)return;this.#E=document.createElement("div");this.#E.classList.add("resizers");const t=["topLeft","topRight","bottomRight","bottomLeft"];this._willKeepAspectRatio||t.push("topMiddle","middleRight","bottomMiddle","middleLeft");for(const e of t){const t=document.createElement("div");this.#E.append(t);t.classList.add("resizer",e);t.addEventListener("pointerdown",this.#I.bind(this,e))}this.div.prepend(this.#E)}#I(t,e){e.preventDefault();this.#x=[e.clientX,e.clientY];const n=this.#D.bind(this,t),i=this.div.draggable;this.div.draggable=!1;const r=`resizing${t.charAt(0).toUpperCase()}${t.slice(1)}`;this.parent.div.classList.add(r);const s={passive:!0,capture:!0};window.addEventListener("pointermove",n,s);window.addEventListener("pointerup",(()=>{this._uiManager.stopUndoAccumulation();this.div.draggable=i;this.parent.div.classList.remove(r);window.removeEventListener("pointermove",n,s)}),{once:!0})}#D(t,e){const{clientX:n,clientY:r}=e,s=n-this.#x[0],a=r-this.#x[1];this.#x[0]=n;this.#x[1]=r;const[o,l]=this.parentDimensions,c=this.x,h=this.y,d=this.width,u=this.height,p=AnnotationEditor.MIN_SIZE/o,f=AnnotationEditor.MIN_SIZE/l;let g;const round=t=>Math.round(1e4*t)/1e4,updatePosition=(t,e)=>{const[n,i]=this.parentDimensions;this.setDims(n*t,i*e);this.fixAndSetPosition()};switch(t){case"topLeft":{if(Math.sign(s)*Math.sign(a)<0)return;const t=Math.hypot(s,a),e=Math.hypot(d*o,u*l),n=round(c+d),i=round(h+u),r=Math.max(Math.min(1-Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),m=round(d*r),b=round(u*r),v=n-m,y=i-b;g=()=>{this.width=m;this.height=b;this.x=v;this.y=y;updatePosition(m,b)};break}case"topMiddle":{const t=round(this.y+u),e=round(Math.max(f,Math.min(1,u-a/l))),n=t-e;g=()=>{this.height=e;this.y=n;updatePosition(d,e)};break}case"topRight":{if(Math.sign(s)*Math.sign(a)>0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=round(h+this.height),i=Math.max(Math.min(1+Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),r=round(d*i),c=round(u*i),m=n-c;g=()=>{this.width=r;this.height=c;this.y=m;updatePosition(r,c)};break}case"middleRight":{const t=round(Math.max(p,Math.min(1,d+s/o)));g=()=>{this.width=t;updatePosition(t,u)};break}case"bottomRight":{if(Math.sign(s)*Math.sign(a)<0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=Math.max(Math.min(1+Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),i=round(d*n),r=round(u*n);g=()=>{this.width=i;this.height=r;updatePosition(i,r)};break}case"bottomMiddle":{const t=round(Math.max(f,Math.min(1,u+a/l)));g=()=>{this.height=t;updatePosition(d,t)};break}case"bottomLeft":{if(Math.sign(s)*Math.sign(a)>0)return;const t=Math.hypot(s,a),e=Math.hypot(this.width*o,this.height*l),n=round(c+this.width),i=Math.max(Math.min(1-Math.sign(s)*(t/e),1/d,1/u),p/d,f/u),r=round(d*i),h=round(u*i),m=n-r;g=()=>{this.width=r;this.height=h;this.x=m;updatePosition(r,h)};break}case"middleLeft":{const t=round(c+d),e=round(Math.max(p,Math.min(1,d-s/o))),n=t-e;g=()=>{this.width=e;this.x=n;updatePosition(e,u)};break}}this.addCommands({cmd:g,undo:()=>{this.width=d;this.height=u;this.x=c;this.y=h;updatePosition(d,u)},mustExec:!0,type:i.AnnotationEditorParamsType.RESIZE,overwriteIfSameType:!0,keepUndo:!0})}render(){this.div=document.createElement("div");this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360);this.div.className=this.name;this.div.setAttribute("id",this.id);this.div.setAttribute("tabIndex",0);this.setInForeground();this.div.addEventListener("focusin",this.#w);this.div.addEventListener("focusout",this.#C);const[t,e]=this.parentDimensions;if(this.parentRotation%180!=0){this.div.style.maxWidth=`${(100*e/t).toFixed(2)}%`;this.div.style.maxHeight=`${(100*t/e).toFixed(2)}%`}const[n,i]=this.getInitialTranslation();this.translate(n,i);(0,r.bindEvents)(this,this.div,["dragstart","pointerdown"]);return this.div}pointerdown(t){const{isMac:e}=i.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)t.preventDefault();else{t.ctrlKey&&!e||t.shiftKey||t.metaKey&&e?this.parent.toggleSelected(this):this.parent.setSelected(this);this.#T=!0}}getRect(t,e){const n=this.parentScale,[i,r]=this.pageDimensions,[s,a]=this.pageTranslation,o=t/n,l=e/n,c=this.x*i,h=this.y*r,d=this.width*i,u=this.height*r;switch(this.rotation){case 0:return[c+o+s,r-h-l-u+a,c+o+d+s,r-h-l+a];case 90:return[c+l+s,r-h+o+a,c+l+u+s,r-h+o+d+a];case 180:return[c-o-d+s,r-h+l+a,c-o+s,r-h+l+u+a];case 270:return[c-l-u+s,r-h-o-d+a,c-l+s,r-h-o+a];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(t,e){const[n,i,r,s]=t,a=r-n,o=s-i;switch(this.rotation){case 0:return[n,e-s,a,o];case 90:return[n,e-i,o,a];case 180:return[r,e-i,a,o];case 270:return[r,e-s,o,a];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){this.#k=!0}disableEditMode(){this.#k=!1}isInEditMode(){return this.#k}shouldGetKeyboardEvents(){return!1}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){this.div?.addEventListener("focusin",this.#w);this.div?.addEventListener("focusout",this.#C)}serialize(){(0,i.unreachable)("An editor must be serializable")}static deserialize(t,e,n){const i=new this.prototype.constructor({parent:e,id:e.getNextId(),uiManager:n});i.rotation=t.rotation;const[r,s]=i.pageDimensions,[a,o,l,c]=i.getRectInCurrentCoords(t.rect,s);i.x=a/r;i.y=o/s;i.width=l/r;i.height=c/s;return i}remove(){this.div.removeEventListener("focusin",this.#w);this.div.removeEventListener("focusout",this.#C);this.isEmpty()||this.commit();this.parent?this.parent.remove(this):this._uiManager.removeEditor(this)}get isResizable(){return!1}makeResizable(){if(this.isResizable){this.#F();this.#E.classList.remove("hidden")}}select(){this.makeResizable();this.div?.classList.add("selectedEditor")}unselect(){this.#E?.classList.add("hidden");this.div?.classList.remove("selectedEditor");this.div?.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus()}updateParams(t,e){}disableEditing(){}enableEditing(){}enterInEditMode(){}get contentDiv(){return this.div}get isEditing(){return this.#P}set isEditing(t){this.#P=t;if(this.parent)if(t){this.parent.setSelected(this);this.parent.setActiveEditor(this)}else this.parent.setActiveEditor(null)}setAspectRatio(t,e){this.#S=!0;const n=t/e,{style:i}=this.div;i.aspectRatio=n;i.height="auto"}static get MIN_SIZE(){return 16}}e.AnnotationEditor=AnnotationEditor;class FakeEditor extends AnnotationEditor{constructor(t){super(t);this.annotationElementId=t.annotationElementId;this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.KeyboardManager=e.CommandManager=e.ColorManager=e.AnnotationEditorUIManager=void 0;e.bindEvents=function bindEvents(t,e,n){for(const i of n)e.addEventListener(i,t[i].bind(t))};e.opacityToHex=function opacityToHex(t){return Math.round(Math.min(255,Math.max(1,255*t))).toString(16).padStart(2,"0")};n(2);n(89);n(125);n(135);n(137);n(140);n(142);n(144);n(146);n(165);var i=n(1),r=n(167);class IdManager{#O=0;getId(){return`${i.AnnotationEditorPrefix}${this.#O++}`}}class ImageManager{#L=(0,i.getUuid)();#O=0;#N=null;async#B(t,e){this.#N||=new Map;let n=this.#N.get(t);if(null===n)return null;if(n?.bitmap){n.refCounter+=1;return n}try{n||={bitmap:null,id:`image_${this.#L}_${this.#O++}`,refCounter:0,isSvg:!1};let t;if("string"==typeof e){n.url=e;const i=await fetch(e);if(!i.ok)throw new Error(i.statusText);t=await i.blob()}else t=n.file=e;if("image/svg+xml"===t.type){const e=new FileReader,i=new Image,r=new Promise(((t,r)=>{i.onload=()=>{n.bitmap=i;n.isSvg=!0;t()};e.onload=()=>{i.src=n.svgUrl=e.result};i.onerror=e.onerror=r}));e.readAsDataURL(t);await r}else n.bitmap=await createImageBitmap(t);n.refCounter=1}catch(t){console.error(t);n=null}this.#N.set(t,n);n&&this.#N.set(n.id,n);return n}async getFromFile(t){const{lastModified:e,name:n,size:i,type:r}=t;return this.#B(`${e}_${n}_${i}_${r}`,t)}async getFromUrl(t){return this.#B(t,t)}async getFromId(t){this.#N||=new Map;const e=this.#N.get(t);if(!e)return null;if(e.bitmap){e.refCounter+=1;return e}return e.file?this.getFromFile(e.file):this.getFromUrl(e.url)}getSvgUrl(t){const e=this.#N.get(t);return e?.isSvg?e.svgUrl:null}deleteId(t){this.#N||=new Map;const e=this.#N.get(t);if(e){e.refCounter-=1;0===e.refCounter&&(e.bitmap=null)}}isValidId(t){return t.startsWith(`image_${this.#L}_`)}}class CommandManager{#j=[];#U=!1;#z;#H=-1;constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:128;this.#z=t}add(t){let{cmd:e,undo:n,mustExec:i,type:r=NaN,overwriteIfSameType:s=!1,keepUndo:a=!1}=t;i&&e();if(this.#U)return;const o={cmd:e,undo:n,type:r};if(-1===this.#H){this.#j.length>0&&(this.#j.length=0);this.#H=0;this.#j.push(o);return}if(s&&this.#j[this.#H].type===r){a&&(o.undo=this.#j[this.#H].undo);this.#j[this.#H]=o;return}const l=this.#H+1;if(l===this.#z)this.#j.splice(0,1);else{this.#H=l;lt===e[n])))return ColorManager._colorsMapping.get(t);return e}getHexCode(t){const e=this._colors.get(t);return e?i.Util.makeHexColor(...e):t}}e.ColorManager=ColorManager;class AnnotationEditorUIManager{#W=null;#G=new Map;#V=new Map;#$=null;#X=new CommandManager;#K=0;#Y=new Set;#J=null;#Q=new Set;#Z=null;#tt=null;#et=new IdManager;#nt=!1;#it=i.AnnotationEditorType.NONE;#rt=new Set;#st=null;#at=this.copy.bind(this);#ot=this.cut.bind(this);#lt=this.paste.bind(this);#ct=this.keydown.bind(this);#ht=this.onEditingAction.bind(this);#dt=this.onPageChanging.bind(this);#ut=this.onScaleChanging.bind(this);#pt=this.onRotationChanging.bind(this);#ft={isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1};#gt=[0,0];#mt=null;#bt=null;static TRANSLATE_SMALL=1;static TRANSLATE_BIG=10;static get _keyboardManager(){const t=AnnotationEditorUIManager.prototype,arrowChecker=t=>{const{activeElement:e}=document;return e&&t.#bt.contains(e)&&t.hasSomethingToControl()},e=this.TRANSLATE_SMALL,n=this.TRANSLATE_BIG;return(0,i.shadow)(this,"_keyboardManager",new KeyboardManager([[["ctrl+a","mac+meta+a"],t.selectAll],[["ctrl+z","mac+meta+z"],t.undo],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],t.redo],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],t.delete],[["Escape","mac+Escape"],t.unselectAll],[["ArrowLeft","mac+ArrowLeft"],t.translateSelectedEditors,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t.translateSelectedEditors,{args:[-n,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t.translateSelectedEditors,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t.translateSelectedEditors,{args:[n,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t.translateSelectedEditors,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t.translateSelectedEditors,{args:[0,-n],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t.translateSelectedEditors,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t.translateSelectedEditors,{args:[0,n],checker:arrowChecker}]]))}constructor(t,e,n,i){this.#bt=t;this.#Z=e;this.#Z._on("editingaction",this.#ht);this.#Z._on("pagechanging",this.#dt);this.#Z._on("scalechanging",this.#ut);this.#Z._on("rotationchanging",this.#pt);this.#$=n.annotationStorage;this.#tt=n.filterFactory;this.#st=i;this.viewParameters={realScale:r.PixelsPerInch.PDF_TO_CSS_UNITS,rotation:0}}destroy(){this.#vt();this.#Z._off("editingaction",this.#ht);this.#Z._off("pagechanging",this.#dt);this.#Z._off("scalechanging",this.#ut);this.#Z._off("rotationchanging",this.#pt);for(const t of this.#V.values())t.destroy();this.#V.clear();this.#G.clear();this.#Q.clear();this.#W=null;this.#rt.clear();this.#X.destroy()}get hcmFilter(){return(0,i.shadow)(this,"hcmFilter",this.#st?this.#tt.addHCMFilter(this.#st.foreground,this.#st.background):"none")}onPageChanging(t){let{pageNumber:e}=t;this.#K=e-1}focusMainContainer(){this.#bt.focus()}addShouldRescale(t){this.#Q.add(t)}removeShouldRescale(t){this.#Q.delete(t)}onScaleChanging(t){let{scale:e}=t;this.commitOrRemove();this.viewParameters.realScale=e*r.PixelsPerInch.PDF_TO_CSS_UNITS;for(const t of this.#Q)t.onScaleChanging()}onRotationChanging(t){let{pagesRotation:e}=t;this.commitOrRemove();this.viewParameters.rotation=e}addToAnnotationStorage(t){t.isEmpty()||!this.#$||this.#$.has(t.id)||this.#$.setValue(t.id,t)}#yt(){window.addEventListener("keydown",this.#ct,{capture:!0})}#vt(){window.removeEventListener("keydown",this.#ct,{capture:!0})}#At(){document.addEventListener("copy",this.#at);document.addEventListener("cut",this.#ot);document.addEventListener("paste",this.#lt)}#_t(){document.removeEventListener("copy",this.#at);document.removeEventListener("cut",this.#ot);document.removeEventListener("paste",this.#lt)}copy(t){t.preventDefault();this.#W&&this.#W.commitOrRemove();if(!this.hasSelection)return;const e=[];for(const t of this.#rt){const n=t.serialize(!0);n&&e.push(n)}0!==e.length&&t.clipboardData.setData("application/pdfjs",JSON.stringify(e))}cut(t){this.copy(t);this.delete()}paste(t){t.preventDefault();let e=t.clipboardData.getData("application/pdfjs");if(!e)return;try{e=JSON.parse(e)}catch(t){(0,i.warn)(`paste: "${t.message}".`);return}if(!Array.isArray(e))return;this.unselectAll();const n=this.currentLayer;try{const t=[];for(const i of e){const e=n.deserialize(i);if(!e)return;t.push(e)}const cmd=()=>{for(const e of t)this.#St(e);this.#Et(t)},undo=()=>{for(const e of t)e.remove()};this.addCommands({cmd:cmd,undo:undo,mustExec:!0})}catch(t){(0,i.warn)(`paste: "${t.message}".`)}}keydown(t){this.getActive()?.shouldGetKeyboardEvents()||AnnotationEditorUIManager._keyboardManager.exec(this,t)}onEditingAction(t){["undo","redo","delete","selectAll"].includes(t.name)&&this[t.name]()}#xt(t){Object.entries(t).some((t=>{let[e,n]=t;return this.#ft[e]!==n}))&&this.#Z.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(this.#ft,t)})}#wt(t){this.#Z.dispatch("annotationeditorparamschanged",{source:this,details:t})}setEditingState(t){if(t){this.#yt();this.#At();this.#xt({isEditing:this.#it!==i.AnnotationEditorType.NONE,isEmpty:this.#Ct(),hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:this.#X.hasSomethingToRedo(),hasSelectedEditor:!1})}else{this.#vt();this.#_t();this.#xt({isEditing:!1})}}registerEditorTypes(t){if(!this.#J){this.#J=t;for(const t of this.#J)this.#wt(t.defaultPropertiesToUpdate)}}getId(){return this.#et.getId()}get currentLayer(){return this.#V.get(this.#K)}get currentPageIndex(){return this.#K}addLayer(t){this.#V.set(t.pageIndex,t);this.#nt?t.enable():t.disable()}removeLayer(t){this.#V.delete(t.pageIndex)}updateMode(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.#it=t;if(t!==i.AnnotationEditorType.NONE){this.setEditingState(!0);this.#Tt();for(const e of this.#V.values())e.updateMode(t);if(e)for(const t of this.#G.values())if(t.annotationElementId===e){this.setSelected(t);t.enterInEditMode();break}}else{this.setEditingState(!1);this.#Pt()}}updateToolbar(t){t!==this.#it&&this.#Z.dispatch("switchannotationeditormode",{source:this,mode:t})}updateParams(t,e){if(this.#J){for(const n of this.#rt)n.updateParams(t,e);for(const n of this.#J)n.updateDefaultParams(t,e)}}#Tt(){if(!this.#nt){this.#nt=!0;for(const t of this.#V.values())t.enable()}}#Pt(){this.unselectAll();if(this.#nt){this.#nt=!1;for(const t of this.#V.values())t.disable()}}getEditors(t){const e=[];for(const n of this.#G.values())n.pageIndex===t&&e.push(n);return e}getEditor(t){return this.#G.get(t)}addEditor(t){this.#G.set(t.id,t)}removeEditor(t){this.#G.delete(t.id);this.unselect(t);t.annotationElementId&&this.#Y.has(t.annotationElementId)||this.#$?.remove(t.id)}addDeletedAnnotationElement(t){this.#Y.add(t.annotationElementId);t.deleted=!0}isDeletedAnnotationElement(t){return this.#Y.has(t)}removeDeletedAnnotationElement(t){this.#Y.delete(t.annotationElementId);t.deleted=!1}#St(t){const e=this.#V.get(t.pageIndex);e?e.addOrRebuild(t):this.addEditor(t)}setActiveEditor(t){if(this.#W!==t){this.#W=t;t&&this.#wt(t.propertiesToUpdate)}}toggleSelected(t){if(this.#rt.has(t)){this.#rt.delete(t);t.unselect();this.#xt({hasSelectedEditor:this.hasSelection})}else{this.#rt.add(t);t.select();this.#wt(t.propertiesToUpdate);this.#xt({hasSelectedEditor:!0})}}setSelected(t){for(const e of this.#rt)e!==t&&e.unselect();this.#rt.clear();this.#rt.add(t);t.select();this.#wt(t.propertiesToUpdate);this.#xt({hasSelectedEditor:!0})}isSelected(t){return this.#rt.has(t)}unselect(t){t.unselect();this.#rt.delete(t);this.#xt({hasSelectedEditor:this.hasSelection})}get hasSelection(){return 0!==this.#rt.size}stopUndoAccumulation(){this.#X.stopUndoAccumulation()}undo(){this.#X.undo();this.#xt({hasSomethingToUndo:this.#X.hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:this.#Ct()})}redo(){this.#X.redo();this.#xt({hasSomethingToUndo:!0,hasSomethingToRedo:this.#X.hasSomethingToRedo(),isEmpty:this.#Ct()})}addCommands(t){this.#X.add(t);this.#xt({hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:this.#Ct()})}#Ct(){if(0===this.#G.size)return!0;if(1===this.#G.size)for(const t of this.#G.values())return t.isEmpty();return!1}delete(){this.commitOrRemove();if(!this.hasSelection)return;const t=[...this.#rt];this.addCommands({cmd:()=>{for(const e of t)e.remove()},undo:()=>{for(const e of t)this.#St(e)},mustExec:!0})}commitOrRemove(){this.#W?.commitOrRemove()}hasSomethingToControl(){return this.#W||this.hasSelection}#Et(t){this.#rt.clear();for(const e of t)if(!e.isEmpty()){this.#rt.add(e);e.select()}this.#xt({hasSelectedEditor:!0})}selectAll(){for(const t of this.#rt)t.commit();this.#Et(this.#G.values())}unselectAll(){if(this.#W)this.#W.commitOrRemove();else if(this.hasSelection){for(const t of this.#rt)t.unselect();this.#rt.clear();this.#xt({hasSelectedEditor:!1})}}translateSelectedEditors(t,e){arguments.length>2&&void 0!==arguments[2]&&arguments[2]||this.commitOrRemove();if(!this.hasSelection)return;this.#gt[0]+=t;this.#gt[1]+=e;const[n,i]=this.#gt,r=[...this.#rt];this.#mt&&clearTimeout(this.#mt);this.#mt=setTimeout((()=>{this.#mt=null;this.#gt[0]=this.#gt[1]=0;this.addCommands({cmd:()=>{for(const t of r)this.#G.has(t.id)&&t.translateInPage(n,i)},undo:()=>{for(const t of r)this.#G.has(t.id)&&t.translateInPage(-n,-i)},mustExec:!1})}),1e3);for(const n of r)n.translateInPage(t,e)}isActive(t){return this.#W===t}getActive(){return this.#W}getMode(){return this.#it}get imageManager(){return(0,i.shadow)(this,"imageManager",new ImageManager)}}e.AnnotationEditorUIManager=AnnotationEditorUIManager},(t,e,n)=>{"use strict";var i=n(3),r=n(6),s=n(4),a=n(24),o=n(14),l=n(8),c=n(21),h=n(20),d=n(91),u=n(39),p=n(77),f=n(64),g=n(158),m=n(7),b=n(166),v=n(27),y=s.JSON,A=s.Number,_=s.SyntaxError,S=y&&y.parse,E=a("Object","keys"),x=Object.getOwnPropertyDescriptor,w=o("".charAt),C=o("".slice),T=o(/./.exec),P=o([].push),k=/^\d$/,M=/^[1-9]$/,R=/^(-|\d)$/,I=/^[\t\n\r ]$/,internalize=function(t,e,n,i){var r,s,a,o,c,p=t[e],g=i&&p===i.value,m=g&&"string"==typeof i.source?{source:i.source}:{};if(h(p)){var b=d(p),v=g?i.nodes:b?[]:{};if(b){r=v.length;a=f(p);for(o=0;o{var i=n(14),r=n(39),s=SyntaxError,a=parseInt,o=String.fromCharCode,l=i("".charAt),c=i("".slice),h=i(/./.exec),d={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":"\n","\\r":"\r","\\t":"\t"},u=/^[\da-f]{4}$/i,p=/^[\u0000-\u001F]$/;t.exports=function(t,e){for(var n=!0,i="";e{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StatTimer=e.RenderingCancelledException=e.PixelsPerInch=e.PageViewport=e.PDFDateString=e.DOMStandardFontDataFactory=e.DOMSVGFactory=e.DOMFilterFactory=e.DOMCanvasFactory=e.DOMCMapReaderFactory=e.AnnotationPrefix=void 0;e.deprecated=function deprecated(t){console.log("Deprecated API usage: "+t)};e.getColorValues=function getColorValues(t){const e=document.createElement("span");e.style.visibility="hidden";document.body.append(e);for(const n of t.keys()){e.style.color=n;const i=window.getComputedStyle(e).color;t.set(n,getRGB(i))}e.remove()};e.getCurrentTransform=function getCurrentTransform(t){const{a:e,b:n,c:i,d:r,e:s,f:a}=t.getTransform();return[e,n,i,r,s,a]};e.getCurrentTransformInverse=function getCurrentTransformInverse(t){const{a:e,b:n,c:i,d:r,e:s,f:a}=t.getTransform().invertSelf();return[e,n,i,r,s,a]};e.getFilenameFromUrl=function getFilenameFromUrl(t){arguments.length>1&&void 0!==arguments[1]&&arguments[1]||([t]=t.split(/[#?]/,1));return t.substring(t.lastIndexOf("/")+1)};e.getPdfFilenameFromUrl=function getPdfFilenameFromUrl(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"document.pdf";if("string"!=typeof t)return e;if(isDataScheme(t)){(0,r.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');return e}const n=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,i=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/.exec(t);let s=n.exec(i[1])||n.exec(i[2])||n.exec(i[3]);if(s){s=s[0];if(s.includes("%"))try{s=n.exec(decodeURIComponent(s))[0]}catch{}}return s||e};e.getRGB=getRGB;e.getXfaPageViewport=function getXfaPageViewport(t,e){let{scale:n=1,rotation:i=0}=e;const{width:r,height:s}=t.attributes.style,a=[0,0,parseInt(r),parseInt(s)];return new PageViewport({viewBox:a,scale:n,rotation:i})};e.isDataScheme=isDataScheme;e.isPdfFile=function isPdfFile(t){return"string"==typeof t&&/\.pdf$/i.test(t)};e.isValidFetchUrl=isValidFetchUrl;e.loadScript=function loadScript(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise(((n,i)=>{const r=document.createElement("script");r.src=t;r.onload=function(t){e&&r.remove();n(t)};r.onerror=function(){i(new Error(`Cannot load script at: ${r.src}`))};(document.head||document.documentElement).append(r)}))};e.setLayerDimensions=function setLayerDimensions(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e instanceof PageViewport){const{pageWidth:i,pageHeight:r}=e.rawDims,{style:s}=t,a=`calc(var(--scale-factor) * ${i}px)`,o=`calc(var(--scale-factor) * ${r}px)`;if(n&&e.rotation%180!=0){s.width=o;s.height=a}else{s.width=a;s.height=o}}i&&t.setAttribute("data-main-rotation",e.rotation)};n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);n(84);n(86);n(87);var i=n(168),r=n(1);const s="http://www.w3.org/2000/svg";e.AnnotationPrefix="pdfjs_internal_id_";class PixelsPerInch{static CSS=96;static PDF=72;static PDF_TO_CSS_UNITS=this.CSS/this.PDF}e.PixelsPerInch=PixelsPerInch;class DOMFilterFactory extends i.BaseFilterFactory{#kt;#Mt;#e;#Rt;#Ft;#It;#Dt;#Ot;#Lt;#Nt;#O=0;constructor(){let{docId:t,ownerDocument:e=globalThis.document}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super();this.#e=t;this.#Rt=e}get#N(){return this.#kt||=new Map}get#Bt(){if(!this.#Mt){const t=this.#Rt.createElement("div"),{style:e}=t;e.visibility="hidden";e.contain="strict";e.width=e.height=0;e.position="absolute";e.top=e.left=0;e.zIndex=-1;const n=this.#Rt.createElementNS(s,"svg");n.setAttribute("width",0);n.setAttribute("height",0);this.#Mt=this.#Rt.createElementNS(s,"defs");t.append(n);n.append(this.#Mt);this.#Rt.body.append(t)}return this.#Mt}addFilter(t){if(!t)return"none";let e,n,i,r,s=this.#N.get(t);if(s)return s;if(1===t.length){const s=t[0],a=new Array(256);for(let t=0;t<256;t++)a[t]=s[t]/255;r=e=n=i=a.join(",")}else{const[s,a,o]=t,l=new Array(256),c=new Array(256),h=new Array(256);for(let t=0;t<256;t++){l[t]=s[t]/255;c[t]=a[t]/255;h[t]=o[t]/255}e=l.join(",");n=c.join(",");i=h.join(",");r=`${e}${n}${i}`}s=this.#N.get(r);if(s){this.#N.set(t,s);return s}const a=`g_${this.#e}_transfer_map_${this.#O++}`,o=`url(#${a})`;this.#N.set(t,o);this.#N.set(r,o);const l=this.#jt(a);this.#Ut(e,n,i,l);return o}addHCMFilter(t,e){const n=`${t}-${e}`;if(this.#It===n)return this.#Dt;this.#It=n;this.#Dt="none";this.#Ft?.remove();if(!t||!e)return this.#Dt;const i=this.#zt(t);t=r.Util.makeHexColor(...i);const s=this.#zt(e);e=r.Util.makeHexColor(...s);this.#Bt.style.color="";if("#000000"===t&&"#ffffff"===e||t===e)return this.#Dt;const a=new Array(256);for(let t=0;t<=255;t++){const e=t/255;a[t]=e<=.03928?e/12.92:((e+.055)/1.055)**2.4}const o=a.join(","),l=`g_${this.#e}_hcm_filter`,c=this.#Ot=this.#jt(l);this.#Ut(o,o,o,c);this.#Ht(c);const getSteps=(t,e)=>{const n=i[t]/255,r=s[t]/255,a=new Array(e+1);for(let t=0;t<=e;t++)a[t]=n+t/e*(r-n);return a.join(",")};this.#Ut(getSteps(0,5),getSteps(1,5),getSteps(2,5),c);this.#Dt=`url(#${l})`;return this.#Dt}addHighlightHCMFilter(t,e,n,i){const r=`${t}-${e}-${n}-${i}`;if(this.#Lt===r)return this.#Nt;this.#Lt=r;this.#Nt="none";this.#Ot?.remove();if(!t||!e)return this.#Nt;const[s,a]=[t,e].map(this.#zt.bind(this));let o=Math.round(.2126*s[0]+.7152*s[1]+.0722*s[2]),l=Math.round(.2126*a[0]+.7152*a[1]+.0722*a[2]),[c,h]=[n,i].map(this.#zt.bind(this));l{const i=new Array(256),r=(l-o)/n,s=t/255,a=(e-t)/(255*n);let c=0;for(let t=0;t<=n;t++){const e=Math.round(o+t*r),n=s+t*a;for(let t=c;t<=e;t++)i[t]=n;c=e+1}for(let t=c;t<256;t++)i[t]=i[c-1];return i.join(",")},d=`g_${this.#e}_hcm_highlight_filter`,u=this.#Ot=this.#jt(d);this.#Ht(u);this.#Ut(getSteps(c[0],h[0],5),getSteps(c[1],h[1],5),getSteps(c[2],h[2],5),u);this.#Nt=`url(#${d})`;return this.#Nt}destroy(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])||!this.#Dt&&!this.#Nt){if(this.#Mt){this.#Mt.parentNode.parentNode.remove();this.#Mt=null}if(this.#kt){this.#kt.clear();this.#kt=null}this.#O=0}}#Ht(t){const e=this.#Rt.createElementNS(s,"feColorMatrix");e.setAttribute("type","matrix");e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0");t.append(e)}#jt(t){const e=this.#Rt.createElementNS(s,"filter");e.setAttribute("color-interpolation-filters","sRGB");e.setAttribute("id",t);this.#Bt.append(e);return e}#qt(t,e,n){const i=this.#Rt.createElementNS(s,e);i.setAttribute("type","discrete");i.setAttribute("tableValues",n);t.append(i)}#Ut(t,e,n,i){const r=this.#Rt.createElementNS(s,"feComponentTransfer");i.append(r);this.#qt(r,"feFuncR",t);this.#qt(r,"feFuncG",e);this.#qt(r,"feFuncB",n)}#zt(t){this.#Bt.style.color=t;return getRGB(getComputedStyle(this.#Bt).getPropertyValue("color"))}}e.DOMFilterFactory=DOMFilterFactory;class DOMCanvasFactory extends i.BaseCanvasFactory{constructor(){let{ownerDocument:t=globalThis.document}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super();this._document=t}_createCanvas(t,e){const n=this._document.createElement("canvas");n.width=t;n.height=e;return n}}e.DOMCanvasFactory=DOMCanvasFactory;async function fetchData(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(isValidFetchUrl(t,document.baseURI)){const n=await fetch(t);if(!n.ok)throw new Error(n.statusText);return e?new Uint8Array(await n.arrayBuffer()):(0,r.stringToBytes)(await n.text())}return new Promise(((n,i)=>{const s=new XMLHttpRequest;s.open("GET",t,!0);e&&(s.responseType="arraybuffer");s.onreadystatechange=()=>{if(s.readyState===XMLHttpRequest.DONE){if(200===s.status||0===s.status){let t;e&&s.response?t=new Uint8Array(s.response):!e&&s.responseText&&(t=(0,r.stringToBytes)(s.responseText));if(t){n(t);return}}i(new Error(s.statusText))}};s.send(null)}))}class DOMCMapReaderFactory extends i.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t,this.isCompressed).then((t=>({cMapData:t,compressionType:e})))}}e.DOMCMapReaderFactory=DOMCMapReaderFactory;class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t,!0)}}e.DOMStandardFontDataFactory=DOMStandardFontDataFactory;class DOMSVGFactory extends i.BaseSVGFactory{_createSVG(t){return document.createElementNS(s,t)}}e.DOMSVGFactory=DOMSVGFactory;class PageViewport{constructor(t){let{viewBox:e,scale:n,rotation:i,offsetX:r=0,offsetY:s=0,dontFlip:a=!1}=t;this.viewBox=e;this.scale=n;this.rotation=i;this.offsetX=r;this.offsetY=s;const o=(e[2]+e[0])/2,l=(e[3]+e[1])/2;let c,h,d,u,p,f,g,m;i%=360;i<0&&(i+=360);switch(i){case 180:c=-1;h=0;d=0;u=1;break;case 90:c=0;h=1;d=1;u=0;break;case 270:c=0;h=-1;d=-1;u=0;break;case 0:c=1;h=0;d=0;u=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}if(a){d=-d;u=-u}if(0===c){p=Math.abs(l-e[1])*n+r;f=Math.abs(o-e[0])*n+s;g=(e[3]-e[1])*n;m=(e[2]-e[0])*n}else{p=Math.abs(o-e[0])*n+r;f=Math.abs(l-e[1])*n+s;g=(e[2]-e[0])*n;m=(e[3]-e[1])*n}this.transform=[c*n,h*n,d*n,u*n,p-c*n*o-d*n*l,f-h*n*o-u*n*l];this.width=g;this.height=m}get rawDims(){const{viewBox:t}=this;return(0,r.shadow)(this,"rawDims",{pageWidth:t[2]-t[0],pageHeight:t[3]-t[1],pageX:t[0],pageY:t[1]})}clone(){let{scale:t=this.scale,rotation:e=this.rotation,offsetX:n=this.offsetX,offsetY:i=this.offsetY,dontFlip:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new PageViewport({viewBox:this.viewBox.slice(),scale:t,rotation:e,offsetX:n,offsetY:i,dontFlip:r})}convertToViewportPoint(t,e){return r.Util.applyTransform([t,e],this.transform)}convertToViewportRectangle(t){const e=r.Util.applyTransform([t[0],t[1]],this.transform),n=r.Util.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]}convertToPdfPoint(t,e){return r.Util.applyInverseTransform([t,e],this.transform)}}e.PageViewport=PageViewport;class RenderingCancelledException extends r.BaseException{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;super(t,"RenderingCancelledException");this.extraDelay=e}}e.RenderingCancelledException=RenderingCancelledException;function isDataScheme(t){const e=t.length;let n=0;for(;n=1&&i<=12?i-1:0;let r=parseInt(e[3],10);r=r>=1&&r<=31?r:1;let s=parseInt(e[4],10);s=s>=0&&s<=23?s:0;let o=parseInt(e[5],10);o=o>=0&&o<=59?o:0;let l=parseInt(e[6],10);l=l>=0&&l<=59?l:0;const c=e[7]||"Z";let h=parseInt(e[8],10);h=h>=0&&h<=23?h:0;let d=parseInt(e[9],10)||0;d=d>=0&&d<=59?d:0;if("-"===c){s+=h;o+=d}else if("+"===c){s-=h;o-=d}return new Date(Date.UTC(n,i,r,s,o,l))}};function getRGB(t){if(t.startsWith("#")){const e=parseInt(t.slice(1),16);return[(16711680&e)>>16,(65280&e)>>8,255&e]}if(t.startsWith("rgb("))return t.slice(4,-1).split(",").map((t=>parseInt(t)));if(t.startsWith("rgba("))return t.slice(5,-1).split(",").map((t=>parseInt(t))).slice(0,3);(0,r.warn)(`Not a valid color format: "${t}"`);return[0,0,0]}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.BaseStandardFontDataFactory=e.BaseSVGFactory=e.BaseFilterFactory=e.BaseCanvasFactory=e.BaseCMapReaderFactory=void 0;n(2);var i=n(1);class BaseFilterFactory{constructor(){this.constructor===BaseFilterFactory&&(0,i.unreachable)("Cannot initialize BaseFilterFactory.")}addFilter(t){return"none"}addHCMFilter(t,e){return"none"}addHighlightHCMFilter(t,e,n,i){return"none"}destroy(){}}e.BaseFilterFactory=BaseFilterFactory;class BaseCanvasFactory{constructor(){this.constructor===BaseCanvasFactory&&(0,i.unreachable)("Cannot initialize BaseCanvasFactory.")}create(t,e){if(t<=0||e<=0)throw new Error("Invalid canvas size");const n=this._createCanvas(t,e);return{canvas:n,context:n.getContext("2d")}}reset(t,e,n){if(!t.canvas)throw new Error("Canvas is not specified");if(e<=0||n<=0)throw new Error("Invalid canvas size");t.canvas.width=e;t.canvas.height=n}destroy(t){if(!t.canvas)throw new Error("Canvas is not specified");t.canvas.width=0;t.canvas.height=0;t.canvas=null;t.context=null}_createCanvas(t,e){(0,i.unreachable)("Abstract method `_createCanvas` called.")}}e.BaseCanvasFactory=BaseCanvasFactory;class BaseCMapReaderFactory{constructor(t){let{baseUrl:e=null,isCompressed:n=!0}=t;this.constructor===BaseCMapReaderFactory&&(0,i.unreachable)("Cannot initialize BaseCMapReaderFactory.");this.baseUrl=e;this.isCompressed=n}async fetch(t){let{name:e}=t;if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!e)throw new Error("CMap name must be specified.");const n=this.baseUrl+e+(this.isCompressed?".bcmap":""),r=this.isCompressed?i.CMapCompressionType.BINARY:i.CMapCompressionType.NONE;return this._fetchData(n,r).catch((t=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${n}`)}))}_fetchData(t,e){(0,i.unreachable)("Abstract method `_fetchData` called.")}}e.BaseCMapReaderFactory=BaseCMapReaderFactory;class BaseStandardFontDataFactory{constructor(t){let{baseUrl:e=null}=t;this.constructor===BaseStandardFontDataFactory&&(0,i.unreachable)("Cannot initialize BaseStandardFontDataFactory.");this.baseUrl=e}async fetch(t){let{filename:e}=t;if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!e)throw new Error("Font filename must be specified.");const n=`${this.baseUrl}${e}`;return this._fetchData(n).catch((t=>{throw new Error(`Unable to load font data at: ${n}`)}))}_fetchData(t){(0,i.unreachable)("Abstract method `_fetchData` called.")}}e.BaseStandardFontDataFactory=BaseStandardFontDataFactory;class BaseSVGFactory{constructor(){this.constructor===BaseSVGFactory&&(0,i.unreachable)("Cannot initialize BaseSVGFactory.")}create(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t<=0||e<=0)throw new Error("Invalid SVG dimensions");const i=this._createSVG("svg:svg");i.setAttribute("version","1.1");if(!n){i.setAttribute("width",`${t}px`);i.setAttribute("height",`${e}px`)}i.setAttribute("preserveAspectRatio","none");i.setAttribute("viewBox",`0 0 ${t} ${e}`);return i}createElement(t){if("string"!=typeof t)throw new Error("Invalid SVG element type");return this._createSVG(t)}_createSVG(t){(0,i.unreachable)("Abstract method `_createSVG` called.")}}e.BaseSVGFactory=BaseSVGFactory},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.MurmurHash3_64=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(2);var i=n(1);const r=3285377520,s=4294901760,a=65535;e.MurmurHash3_64=class MurmurHash3_64{constructor(t){this.h1=t?4294967295&t:r;this.h2=t?4294967295&t:r}update(t){let e,n;if("string"==typeof t){e=new Uint8Array(2*t.length);n=0;for(let i=0,r=t.length;i>>8;e[n++]=255&r}}}else{if(!(0,i.isArrayBuffer)(t))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");e=t.slice();n=e.byteLength}const r=n>>2,o=n-4*r,l=new Uint32Array(e.buffer,0,r);let c=0,h=0,d=this.h1,u=this.h2;const p=3432918353,f=461845907,g=11601,m=13715;for(let t=0;t>>17;c=c*f&s|c*m&a;d^=c;d=d<<13|d>>>19;d=5*d+3864292196}else{h=l[t];h=h*p&s|h*g&a;h=h<<15|h>>>17;h=h*f&s|h*m&a;u^=h;u=u<<13|u>>>19;u=5*u+3864292196}c=0;switch(o){case 3:c^=e[4*r+2]<<16;case 2:c^=e[4*r+1]<<8;case 1:c^=e[4*r];c=c*p&s|c*g&a;c=c<<15|c>>>17;c=c*f&s|c*m&a;1&r?d^=c:u^=c}this.h1=d;this.h2=u}hexdigest(){let t=this.h1,e=this.h2;t^=e>>>1;t=3981806797*t&s|36045*t&a;e=4283543511*e&s|(2950163797*(e<<16|t>>>16)&s)>>>16;t^=e>>>1;t=444984403*t&s|60499*t&a;e=3301882366*e&s|(3120437893*(e<<16|t>>>16)&s)>>>16;t^=e>>>1;return(t>>>0).toString(16).padStart(8,"0")+(e>>>0).toString(16).padStart(8,"0")}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.FontLoader=e.FontFaceObject=void 0;n(125);n(135);n(137);n(140);n(142);n(144);n(146);n(89);n(148);var i=n(1);e.FontLoader=class FontLoader{#Wt=new Set;constructor(t){let{ownerDocument:e=globalThis.document,styleElement:n=null}=t;this._document=e;this.nativeFontFaces=new Set;this.styleElement=null;this.loadingRequests=[];this.loadTestFontId=0}addNativeFontFace(t){this.nativeFontFaces.add(t);this._document.fonts.add(t)}removeNativeFontFace(t){this.nativeFontFaces.delete(t);this._document.fonts.delete(t)}insertRule(t){if(!this.styleElement){this.styleElement=this._document.createElement("style");this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement)}const e=this.styleElement.sheet;e.insertRule(t,e.cssRules.length)}clear(){for(const t of this.nativeFontFaces)this._document.fonts.delete(t);this.nativeFontFaces.clear();this.#Wt.clear();if(this.styleElement){this.styleElement.remove();this.styleElement=null}}async loadSystemFont(t){if(t&&!this.#Wt.has(t.loadedName)){(0,i.assert)(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set.");if(this.isFontLoadingAPISupported){const{loadedName:e,src:n,style:r}=t,s=new FontFace(e,n,r);this.addNativeFontFace(s);try{await s.load();this.#Wt.add(e)}catch{(0,i.warn)(`Cannot load system font: ${t.baseFontName}, installing it could help to improve PDF rendering.`);this.removeNativeFontFace(s)}}else(0,i.unreachable)("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(t){if(t.attached||t.missingFile&&!t.systemFontInfo)return;t.attached=!0;if(t.systemFontInfo){await this.loadSystemFont(t.systemFontInfo);return}if(this.isFontLoadingAPISupported){const e=t.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(n){(0,i.warn)(`Failed to load font '${e.family}': '${n}'.`);t.disableFontFace=!0;throw n}}return}const e=t.createFontFaceRule();if(e){this.insertRule(e);if(this.isSyncFontLoadingSupported)return;await new Promise((e=>{const n=this._queueLoadingCallback(e);this._prepareFontLoadEvent(t,n)}))}}get isFontLoadingAPISupported(){const t=!!this._document?.fonts;return(0,i.shadow)(this,"isFontLoadingAPISupported",t)}get isSyncFontLoadingSupported(){let t=!1;(i.isNodeJS||"undefined"!=typeof navigator&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(t=!0);return(0,i.shadow)(this,"isSyncFontLoadingSupported",t)}_queueLoadingCallback(t){const{loadingRequests:e}=this,n={done:!1,complete:function completeRequest(){(0,i.assert)(!n.done,"completeRequest() cannot be called twice.");n.done=!0;for(;e.length>0&&e[0].done;){const t=e.shift();setTimeout(t.callback,0)}},callback:t};e.push(n);return n}get _loadTestFont(){const t=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return(0,i.shadow)(this,"_loadTestFont",t)}_prepareFontLoadEvent(t,e){function int32(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function spliceString(t,e,n,i){return t.substring(0,e)+i+t.substring(e+n)}let n,r;const s=this._document.createElement("canvas");s.width=1;s.height=1;const a=s.getContext("2d");let o=0;const l=`lt${Date.now()}${this.loadTestFontId++}`;let c=this._loadTestFont;c=spliceString(c,976,l.length,l);const h=1482184792;let d=int32(c,16);for(n=0,r=l.length-3;n30){(0,i.warn)("Load test font never loaded.");e();return}a.font="30px "+t;a.fillText(".",0,20);a.getImageData(0,0,1,1).data[3]>0?e():setTimeout(isFontReady.bind(null,t,e))}(l,(()=>{p.remove();e.complete()}))}};e.FontFaceObject=class FontFaceObject{constructor(t,e){let{isEvalSupported:n=!0,disableFontFace:i=!1,ignoreErrors:r=!1,inspectFont:s=null}=e;this.compiledGlyphs=Object.create(null);for(const e in t)this[e]=t[e];this.isEvalSupported=!1!==n;this.disableFontFace=!0===i;this.ignoreErrors=!0===r;this._inspectFont=s}createNativeFontFace(){if(!this.data||this.disableFontFace)return null;let t;if(this.cssFontInfo){const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`);t=new FontFace(this.cssFontInfo.fontFamily,this.data,e)}else t=new FontFace(this.loadedName,this.data,{});this._inspectFont?.(this);return t}createFontFaceRule(){if(!this.data||this.disableFontFace)return null;const t=(0,i.bytesToString)(this.data),e=`url(data:${this.mimetype};base64,${btoa(t)});`;let n;if(this.cssFontInfo){let t=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(t+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`);n=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${t}src:${e}}`}else n=`@font-face {font-family:"${this.loadedName}";src:${e}}`;this._inspectFont?.(this,e);return n}getPathGenerator(t,e){if(void 0!==this.compiledGlyphs[e])return this.compiledGlyphs[e];let n;try{n=t.get(this.loadedName+"_path_"+e)}catch(t){if(!this.ignoreErrors)throw t;(0,i.warn)(`getPathGenerator - ignoring character: "${t}".`);return this.compiledGlyphs[e]=function(t,e){}}if(this.isEvalSupported&&i.FeatureTest.isEvalSupported){const t=[];for(const e of n){const n=void 0!==e.args?e.args.join(","):"";t.push("c.",e.cmd,"(",n,");\n")}return this.compiledGlyphs[e]=new Function("c","size",t.join(""))}return this.compiledGlyphs[e]=function(t,e){for(const i of n){"scale"===i.cmd&&(i.args=[e,-e]);t[i.cmd].apply(t,i.args)}}}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.NodeStandardFontDataFactory=e.NodeFilterFactory=e.NodeCanvasFactory=e.NodeCMapReaderFactory=void 0;n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);var i=n(168),r=n(1);!function checkDOMMatrix(){if(!globalThis.DOMMatrix&&r.isNodeJS)try{globalThis.DOMMatrix=require("canvas").DOMMatrix}catch(t){(0,r.warn)(`Cannot polyfill \`DOMMatrix\`, rendering may be broken: "${t}".`)}}();!function checkPath2D(){if(!globalThis.Path2D&&r.isNodeJS)try{const{CanvasRenderingContext2D:t}=require("canvas"),{polyfillPath2D:e}=require("path2d-polyfill");globalThis.CanvasRenderingContext2D=t;e(globalThis)}catch(t){(0,r.warn)(`Cannot polyfill \`Path2D\`, rendering may be broken: "${t}".`)}}();const fetchData=function(t){return new Promise(((e,n)=>{require("fs").readFile(t,((t,i)=>{!t&&i?e(new Uint8Array(i)):n(new Error(t))}))}))};class NodeFilterFactory extends i.BaseFilterFactory{}e.NodeFilterFactory=NodeFilterFactory;class NodeCanvasFactory extends i.BaseCanvasFactory{_createCanvas(t,e){return require("canvas").createCanvas(t,e)}}e.NodeCanvasFactory=NodeCanvasFactory;class NodeCMapReaderFactory extends i.BaseCMapReaderFactory{_fetchData(t,e){return fetchData(t).then((t=>({cMapData:t,compressionType:e})))}}e.NodeCMapReaderFactory=NodeCMapReaderFactory;class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory{_fetchData(t){return fetchData(t)}}e.NodeStandardFontDataFactory=NodeStandardFontDataFactory},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.CanvasGraphics=void 0;n(2);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(167),s=n(173),a=n(174);const o=4096,l=16;class CachedCanvases{constructor(t){this.canvasFactory=t;this.cache=Object.create(null)}getCanvas(t,e,n){let i;if(void 0!==this.cache[t]){i=this.cache[t];this.canvasFactory.reset(i,e,n)}else{i=this.canvasFactory.create(e,n);this.cache[t]=i}return i}delete(t){delete this.cache[t]}clear(){for(const t in this.cache){const e=this.cache[t];this.canvasFactory.destroy(e);delete this.cache[t]}}}function drawImageAtIntegerCoords(t,e,n,i,s,a,o,l,c,h){const[d,u,p,f,g,m]=(0,r.getCurrentTransform)(t);if(0===u&&0===p){const r=o*d+g,b=Math.round(r),v=l*f+m,y=Math.round(v),A=(o+c)*d+g,_=Math.abs(Math.round(A)-b)||1,S=(l+h)*f+m,E=Math.abs(Math.round(S)-y)||1;t.setTransform(Math.sign(d),0,0,Math.sign(f),b,y);t.drawImage(e,n,i,s,a,0,0,_,E);t.setTransform(d,u,p,f,g,m);return[_,E]}if(0===d&&0===f){const r=l*p+g,b=Math.round(r),v=o*u+m,y=Math.round(v),A=(l+h)*p+g,_=Math.abs(Math.round(A)-b)||1,S=(o+c)*u+m,E=Math.abs(Math.round(S)-y)||1;t.setTransform(0,Math.sign(u),Math.sign(p),0,b,y);t.drawImage(e,n,i,s,a,0,0,E,_);t.setTransform(d,u,p,f,g,m);return[E,_]}t.drawImage(e,n,i,s,a,o,l,c,h);return[Math.hypot(d,u)*c,Math.hypot(p,f)*h]}class CanvasExtraState{constructor(t,e){this.alphaIsShape=!1;this.fontSize=0;this.fontSizeScale=1;this.textMatrix=i.IDENTITY_MATRIX;this.textMatrixScale=1;this.fontMatrix=i.FONT_IDENTITY_MATRIX;this.leading=0;this.x=0;this.y=0;this.lineX=0;this.lineY=0;this.charSpacing=0;this.wordSpacing=0;this.textHScale=1;this.textRenderingMode=i.TextRenderingMode.FILL;this.textRise=0;this.fillColor="#000000";this.strokeColor="#000000";this.patternFill=!1;this.fillAlpha=1;this.strokeAlpha=1;this.lineWidth=1;this.activeSMask=null;this.transferMaps="none";this.startNewPathAndClipBox([0,0,t,e])}clone(){const t=Object.create(this);t.clipBox=this.clipBox.slice();return t}setCurrentPoint(t,e){this.x=t;this.y=e}updatePathMinMax(t,e,n){[e,n]=i.Util.applyTransform([e,n],t);this.minX=Math.min(this.minX,e);this.minY=Math.min(this.minY,n);this.maxX=Math.max(this.maxX,e);this.maxY=Math.max(this.maxY,n)}updateRectMinMax(t,e){const n=i.Util.applyTransform(e,t),r=i.Util.applyTransform(e.slice(2),t);this.minX=Math.min(this.minX,n[0],r[0]);this.minY=Math.min(this.minY,n[1],r[1]);this.maxX=Math.max(this.maxX,n[0],r[0]);this.maxY=Math.max(this.maxY,n[1],r[1])}updateScalingPathMinMax(t,e){i.Util.scaleMinMax(t,e);this.minX=Math.min(this.minX,e[0]);this.maxX=Math.max(this.maxX,e[1]);this.minY=Math.min(this.minY,e[2]);this.maxY=Math.max(this.maxY,e[3])}updateCurvePathMinMax(t,e,n,r,s,a,o,l,c,h){const d=i.Util.bezierBoundingBox(e,n,r,s,a,o,l,c);if(h){h[0]=Math.min(h[0],d[0],d[2]);h[1]=Math.max(h[1],d[0],d[2]);h[2]=Math.min(h[2],d[1],d[3]);h[3]=Math.max(h[3],d[1],d[3])}else this.updateRectMinMax(t,d)}getPathBoundingBox(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[this.minX,this.minY,this.maxX,this.maxY];if(t===s.PathType.STROKE){e||(0,i.unreachable)("Stroke bounding box must include transform.");const t=i.Util.singularValueDecompose2dScale(e),r=t[0]*this.lineWidth/2,s=t[1]*this.lineWidth/2;n[0]-=r;n[1]-=s;n[2]+=r;n[3]+=s}return n}updateClipFromPath(){const t=i.Util.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(t||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(t){this.clipBox=t;this.minX=1/0;this.minY=1/0;this.maxX=0;this.maxY=0}getClippedPathBoundingBox(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.PathType.FILL,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return i.Util.intersect(this.clipBox,this.getPathBoundingBox(t,e))}}function putBinaryImageData(t,e){if("undefined"!=typeof ImageData&&e instanceof ImageData){t.putImageData(e,0,0);return}const n=e.height,r=e.width,s=n%l,a=(n-s)/l,o=0===s?a:a+1,c=t.createImageData(r,l);let h,d=0;const u=e.data,p=c.data;let f,g,m,b;if(e.kind===i.ImageKind.GRAYSCALE_1BPP){const e=u.byteLength,n=new Uint32Array(p.buffer,0,p.byteLength>>2),b=n.length,v=r+7>>3,y=4294967295,A=i.FeatureTest.isLittleEndian?4278190080:255;for(f=0;fv?r:8*t-7,a=-8&s;let o=0,l=0;for(;i>=1}}for(;h=a){m=s;b=r*m}h=0;for(g=b;g--;){p[h++]=u[d++];p[h++]=u[d++];p[h++]=u[d++];p[h++]=255}t.putImageData(c,0,f*l)}}}function putBinaryImageMask(t,e){if(e.bitmap){t.drawImage(e.bitmap,0,0);return}const n=e.height,i=e.width,r=n%l,s=(n-r)/l,o=0===r?s:s+1,c=t.createImageData(i,l);let h=0;const d=e.data,u=c.data;for(let e=0;e>8;t[s-2]=t[s-2]*r+n*a>>8;t[s-1]=t[s-1]*r+i*a>>8}}}function composeSMaskAlpha(t,e,n){const i=t.length;for(let r=3;r>8]>>8:e[r]*i>>16}}function composeSMask(t,e,n,i){const r=i[0],s=i[1],a=i[2]-r,o=i[3]-s;if(0!==a&&0!==o){!function genericComposeSMask(t,e,n,i,r,s,a,o,l,c,h){const d=!!s,u=d?s[0]:0,p=d?s[1]:0,f=d?s[2]:0,g="Luminosity"===r?composeSMaskLuminosity:composeSMaskAlpha,m=Math.min(i,Math.ceil(1048576/n));for(let r=0;r1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}beginDrawing(t){let{transform:e,viewport:n,transparency:i=!1,background:s=null}=t;const a=this.ctx.canvas.width,o=this.ctx.canvas.height,l=this.ctx.fillStyle;this.ctx.fillStyle=s||"#ffffff";this.ctx.fillRect(0,0,a,o);this.ctx.fillStyle=l;if(i){const t=this.cachedCanvases.getCanvas("transparent",a,o);this.compositeCtx=this.ctx;this.transparentCanvas=t.canvas;this.ctx=t.context;this.ctx.save();this.ctx.transform(...(0,r.getCurrentTransform)(this.compositeCtx))}this.ctx.save();resetCtxToDefault(this.ctx);if(e){this.ctx.transform(...e);this.outputScaleX=e[0];this.outputScaleY=e[0]}this.ctx.transform(...n.transform);this.viewportScale=n.scale;this.baseTransform=(0,r.getCurrentTransform)(this.ctx)}executeOperatorList(t,e,n,r){const s=t.argsArray,a=t.fnArray;let o=e||0;const l=s.length;if(l===o)return o;const c=l-o>10&&"function"==typeof n,h=c?Date.now()+15:0;let d=0;const u=this.commonObjs,p=this.objs;let f;for(;;){if(void 0!==r&&o===r.nextBreakPoint){r.breakIt(o,n);return o}f=a[o];if(f!==i.OPS.dependency)this[f].apply(this,s[o]);else for(const t of s[o]){const e=t.startsWith("g_")?u:p;if(!e.has(t)){e.get(t,n);return o}}o++;if(o===l)return o;if(c&&++d>10){if(Date.now()>h){n();return o}d=0}}}#Gt(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore();if(this.transparentCanvas){this.ctx=this.compositeCtx;this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.drawImage(this.transparentCanvas,0,0);this.ctx.restore();this.transparentCanvas=null}}endDrawing(){this.#Gt();this.cachedCanvases.clear();this.cachedPatterns.clear();for(const t of this._cachedBitmapsMap.values()){for(const e of t.values())"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&(e.width=e.height=0);t.clear()}this._cachedBitmapsMap.clear();this.#Vt()}#Vt(){if(this.pageColors){const t=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if("none"!==t){const e=this.ctx.filter;this.ctx.filter=t;this.ctx.drawImage(this.ctx.canvas,0,0);this.ctx.filter=e}}}_scaleImage(t,e){const n=t.width,i=t.height;let r,s,a=Math.max(Math.hypot(e[0],e[1]),1),o=Math.max(Math.hypot(e[2],e[3]),1),l=n,c=i,h="prescale1";for(;a>2&&l>1||o>2&&c>1;){let e=l,n=c;if(a>2&&l>1){e=l>=16384?Math.floor(l/2)-1||1:Math.ceil(l/2);a/=l/e}if(o>2&&c>1){n=c>=16384?Math.floor(c/2)-1||1:Math.ceil(c)/2;o/=c/n}r=this.cachedCanvases.getCanvas(h,e,n);s=r.context;s.clearRect(0,0,e,n);s.drawImage(t,0,0,l,c,0,0,e,n);t=r.canvas;l=e;c=n;h="prescale1"===h?"prescale2":"prescale1"}return{img:t,paintWidth:l,paintHeight:c}}_createMaskCanvas(t){const e=this.ctx,{width:n,height:a}=t,o=this.current.fillColor,l=this.current.patternFill,c=(0,r.getCurrentTransform)(e);let h,d,u,p;if((t.bitmap||t.data)&&t.count>1){const e=t.bitmap||t.data.buffer;d=JSON.stringify(l?c:[c.slice(0,4),o]);h=this._cachedBitmapsMap.get(e);if(!h){h=new Map;this._cachedBitmapsMap.set(e,h)}const n=h.get(d);if(n&&!l){return{canvas:n,offsetX:Math.round(Math.min(c[0],c[2])+c[4]),offsetY:Math.round(Math.min(c[1],c[3])+c[5])}}u=n}if(!u){p=this.cachedCanvases.getCanvas("maskCanvas",n,a);putBinaryImageMask(p.context,t)}let f=i.Util.transform(c,[1/n,0,0,-1/a,0,0]);f=i.Util.transform(f,[1,0,0,1,0,-a]);const g=i.Util.applyTransform([0,0],f),m=i.Util.applyTransform([n,a],f),b=i.Util.normalizeRect([g[0],g[1],m[0],m[1]]),v=Math.round(b[2]-b[0])||1,y=Math.round(b[3]-b[1])||1,A=this.cachedCanvases.getCanvas("fillCanvas",v,y),_=A.context,S=Math.min(g[0],m[0]),E=Math.min(g[1],m[1]);_.translate(-S,-E);_.transform(...f);if(!u){u=this._scaleImage(p.canvas,(0,r.getCurrentTransformInverse)(_));u=u.img;h&&l&&h.set(d,u)}_.imageSmoothingEnabled=getImageSmoothingEnabled((0,r.getCurrentTransform)(_),t.interpolate);drawImageAtIntegerCoords(_,u,0,0,u.width,u.height,0,0,n,a);_.globalCompositeOperation="source-in";const x=i.Util.transform((0,r.getCurrentTransformInverse)(_),[1,0,0,1,-S,-E]);_.fillStyle=l?o.getPattern(e,this,x,s.PathType.FILL):o;_.fillRect(0,0,n,a);if(h&&!l){this.cachedCanvases.delete("fillCanvas");h.set(d,A.canvas)}return{canvas:A.canvas,offsetX:Math.round(S),offsetY:Math.round(E)}}setLineWidth(t){t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1);this.current.lineWidth=t;this.ctx.lineWidth=t}setLineCap(t){this.ctx.lineCap=c[t]}setLineJoin(t){this.ctx.lineJoin=h[t]}setMiterLimit(t){this.ctx.miterLimit=t}setDash(t,e){const n=this.ctx;if(void 0!==n.setLineDash){n.setLineDash(t);n.lineDashOffset=e}}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n[0],n[1]);break;case"CA":this.current.strokeAlpha=n;break;case"ca":this.current.fillAlpha=n;this.ctx.globalAlpha=n;break;case"BM":this.ctx.globalCompositeOperation=n;break;case"SMask":this.current.activeSMask=n?this.tempSMask:null;this.tempSMask=null;this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(n)}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const t=this.inSMaskMode;this.current.activeSMask&&!t?this.beginSMaskMode():!this.current.activeSMask&&t&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,n="smaskGroupAt"+this.groupLevel,i=this.cachedCanvases.getCanvas(n,t,e);this.suspendedCtx=this.ctx;this.ctx=i.context;const s=this.ctx;s.setTransform(...(0,r.getCurrentTransform)(this.suspendedCtx));copyCtxState(this.suspendedCtx,s);!function mirrorContextOperations(t,e){if(t._removeMirroring)throw new Error("Context is already forwarding operations.");t.__originalSave=t.save;t.__originalRestore=t.restore;t.__originalRotate=t.rotate;t.__originalScale=t.scale;t.__originalTranslate=t.translate;t.__originalTransform=t.transform;t.__originalSetTransform=t.setTransform;t.__originalResetTransform=t.resetTransform;t.__originalClip=t.clip;t.__originalMoveTo=t.moveTo;t.__originalLineTo=t.lineTo;t.__originalBezierCurveTo=t.bezierCurveTo;t.__originalRect=t.rect;t.__originalClosePath=t.closePath;t.__originalBeginPath=t.beginPath;t._removeMirroring=()=>{t.save=t.__originalSave;t.restore=t.__originalRestore;t.rotate=t.__originalRotate;t.scale=t.__originalScale;t.translate=t.__originalTranslate;t.transform=t.__originalTransform;t.setTransform=t.__originalSetTransform;t.resetTransform=t.__originalResetTransform;t.clip=t.__originalClip;t.moveTo=t.__originalMoveTo;t.lineTo=t.__originalLineTo;t.bezierCurveTo=t.__originalBezierCurveTo;t.rect=t.__originalRect;t.closePath=t.__originalClosePath;t.beginPath=t.__originalBeginPath;delete t._removeMirroring};t.save=function ctxSave(){e.save();this.__originalSave()};t.restore=function ctxRestore(){e.restore();this.__originalRestore()};t.translate=function ctxTranslate(t,n){e.translate(t,n);this.__originalTranslate(t,n)};t.scale=function ctxScale(t,n){e.scale(t,n);this.__originalScale(t,n)};t.transform=function ctxTransform(t,n,i,r,s,a){e.transform(t,n,i,r,s,a);this.__originalTransform(t,n,i,r,s,a)};t.setTransform=function ctxSetTransform(t,n,i,r,s,a){e.setTransform(t,n,i,r,s,a);this.__originalSetTransform(t,n,i,r,s,a)};t.resetTransform=function ctxResetTransform(){e.resetTransform();this.__originalResetTransform()};t.rotate=function ctxRotate(t){e.rotate(t);this.__originalRotate(t)};t.clip=function ctxRotate(t){e.clip(t);this.__originalClip(t)};t.moveTo=function(t,n){e.moveTo(t,n);this.__originalMoveTo(t,n)};t.lineTo=function(t,n){e.lineTo(t,n);this.__originalLineTo(t,n)};t.bezierCurveTo=function(t,n,i,r,s,a){e.bezierCurveTo(t,n,i,r,s,a);this.__originalBezierCurveTo(t,n,i,r,s,a)};t.rect=function(t,n,i,r){e.rect(t,n,i,r);this.__originalRect(t,n,i,r)};t.closePath=function(){e.closePath();this.__originalClosePath()};t.beginPath=function(){e.beginPath();this.__originalBeginPath()}}(s,this.suspendedCtx);this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring();copyCtxState(this.ctx,this.suspendedCtx);this.ctx=this.suspendedCtx;this.suspendedCtx=null}compose(t){if(!this.current.activeSMask)return;if(t){t[0]=Math.floor(t[0]);t[1]=Math.floor(t[1]);t[2]=Math.ceil(t[2]);t[3]=Math.ceil(t[3])}else t=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const e=this.current.activeSMask;composeSMask(this.suspendedCtx,e,this.ctx,t);this.ctx.save();this.ctx.setTransform(1,0,0,1,0,0);this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height);this.ctx.restore()}save(){if(this.inSMaskMode){copyCtxState(this.ctx,this.suspendedCtx);this.suspendedCtx.save()}else this.ctx.save();const t=this.current;this.stateStack.push(t);this.current=t.clone()}restore(){0===this.stateStack.length&&this.inSMaskMode&&this.endSMaskMode();if(0!==this.stateStack.length){this.current=this.stateStack.pop();if(this.inSMaskMode){this.suspendedCtx.restore();copyCtxState(this.suspendedCtx,this.ctx)}else this.ctx.restore();this.checkSMaskState();this.pendingClip=null;this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}}transform(t,e,n,i,r,s){this.ctx.transform(t,e,n,i,r,s);this._cachedScaleForStroking[0]=-1;this._cachedGetSinglePixelWidth=null}constructPath(t,e,n){const s=this.ctx,a=this.current;let o,l,c=a.x,h=a.y;const d=(0,r.getCurrentTransform)(s),u=0===d[0]&&0===d[3]||0===d[1]&&0===d[2],p=u?n.slice(0):null;for(let n=0,r=0,f=t.length;n0&&void 0!==arguments[0])||arguments[0];const e=this.ctx,n=this.current.strokeColor;e.globalAlpha=this.current.strokeAlpha;if(this.contentVisible)if("object"==typeof n&&n?.getPattern){e.save();e.strokeStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.STROKE);this.rescaleAndStroke(!1);e.restore()}else this.rescaleAndStroke(!0);t&&this.consumePath(this.current.getClippedPathBoundingBox());e.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath();this.stroke()}fill(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const e=this.ctx,n=this.current.fillColor;let i=!1;if(this.current.patternFill){e.save();e.fillStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.FILL);i=!0}const a=this.current.getClippedPathBoundingBox();if(this.contentVisible&&null!==a)if(this.pendingEOFill){e.fill("evenodd");this.pendingEOFill=!1}else e.fill();i&&e.restore();t&&this.consumePath(a)}eoFill(){this.pendingEOFill=!0;this.fill()}fillStroke(){this.fill(!1);this.stroke(!1);this.consumePath()}eoFillStroke(){this.pendingEOFill=!0;this.fillStroke()}closeFillStroke(){this.closePath();this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0;this.closePath();this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=d}eoClip(){this.pendingClip=u}beginText(){this.current.textMatrix=i.IDENTITY_MATRIX;this.current.textMatrixScale=1;this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}endText(){const t=this.pendingTextPaths,e=this.ctx;if(void 0!==t){e.save();e.beginPath();for(const n of t){e.setTransform(...n.transform);e.translate(n.x,n.y);n.addToPath(e,n.fontSize)}e.restore();e.clip();e.beginPath();delete this.pendingTextPaths}else e.beginPath()}setCharSpacing(t){this.current.charSpacing=t}setWordSpacing(t){this.current.wordSpacing=t}setHScale(t){this.current.textHScale=t/100}setLeading(t){this.current.leading=-t}setFont(t,e){const n=this.commonObjs.get(t),r=this.current;if(!n)throw new Error(`Can't find font for ${t}`);r.fontMatrix=n.fontMatrix||i.FONT_IDENTITY_MATRIX;0!==r.fontMatrix[0]&&0!==r.fontMatrix[3]||(0,i.warn)("Invalid font matrix for font "+t);if(e<0){e=-e;r.fontDirection=-1}else r.fontDirection=1;this.current.font=n;this.current.fontSize=e;if(n.isType3Font)return;const s=n.loadedName||"sans-serif",a=n.systemFontInfo?.css||`"${s}", ${n.fallbackName}`;let o="normal";n.black?o="900":n.bold&&(o="bold");const l=n.italic?"italic":"normal";let c=e;e<16?c=16:e>100&&(c=100);this.current.fontSizeScale=e/c;this.ctx.font=`${l} ${o} ${c}px ${a}`}setTextRenderingMode(t){this.current.textRenderingMode=t}setTextRise(t){this.current.textRise=t}moveText(t,e){this.current.x=this.current.lineX+=t;this.current.y=this.current.lineY+=e}setLeadingMoveText(t,e){this.setLeading(-e);this.moveText(t,e)}setTextMatrix(t,e,n,i,r,s){this.current.textMatrix=[t,e,n,i,r,s];this.current.textMatrixScale=Math.hypot(t,e);this.current.x=this.current.lineX=0;this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(t,e,n,s){const a=this.ctx,o=this.current,l=o.font,c=o.textRenderingMode,h=o.fontSize/o.fontSizeScale,d=c&i.TextRenderingMode.FILL_STROKE_MASK,u=!!(c&i.TextRenderingMode.ADD_TO_PATH_FLAG),p=o.patternFill&&!l.missingFile;let f;(l.disableFontFace||u||p)&&(f=l.getPathGenerator(this.commonObjs,t));if(l.disableFontFace||p){a.save();a.translate(e,n);a.beginPath();f(a,h);s&&a.setTransform(...s);d!==i.TextRenderingMode.FILL&&d!==i.TextRenderingMode.FILL_STROKE||a.fill();d!==i.TextRenderingMode.STROKE&&d!==i.TextRenderingMode.FILL_STROKE||a.stroke();a.restore()}else{d!==i.TextRenderingMode.FILL&&d!==i.TextRenderingMode.FILL_STROKE||a.fillText(t,e,n);d!==i.TextRenderingMode.STROKE&&d!==i.TextRenderingMode.FILL_STROKE||a.strokeText(t,e,n)}if(u){(this.pendingTextPaths||=[]).push({transform:(0,r.getCurrentTransform)(a),x:e,y:n,fontSize:h,addToPath:f})}}get isFontSubpixelAAEnabled(){const{context:t}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);t.scale(1.5,1);t.fillText("I",0,10);const e=t.getImageData(0,0,10,10).data;let n=!1;for(let t=3;t0&&e[t]<255){n=!0;break}return(0,i.shadow)(this,"isFontSubpixelAAEnabled",n)}showText(t){const e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);const a=e.fontSize;if(0===a)return;const o=this.ctx,l=e.fontSizeScale,c=e.charSpacing,h=e.wordSpacing,d=e.fontDirection,u=e.textHScale*d,p=t.length,f=n.vertical,g=f?1:-1,m=n.defaultVMetrics,b=a*e.fontMatrix[0],v=e.textRenderingMode===i.TextRenderingMode.FILL&&!n.disableFontFace&&!e.patternFill;o.save();o.transform(...e.textMatrix);o.translate(e.x,e.y+e.textRise);d>0?o.scale(u,-1):o.scale(u,1);let y;if(e.patternFill){o.save();const t=e.fillColor.getPattern(o,this,(0,r.getCurrentTransformInverse)(o),s.PathType.FILL);y=(0,r.getCurrentTransform)(o);o.restore();o.fillStyle=t}let A=e.lineWidth;const _=e.textMatrixScale;if(0===_||0===A){const t=e.textRenderingMode&i.TextRenderingMode.FILL_STROKE_MASK;t!==i.TextRenderingMode.STROKE&&t!==i.TextRenderingMode.FILL_STROKE||(A=this.getSinglePixelWidth())}else A/=_;if(1!==l){o.scale(l,l);A/=l}o.lineWidth=A;if(n.isInvalidPDFjsFont){const n=[];let i=0;for(const e of t){n.push(e.unicode);i+=e.width}o.fillText(n.join(""),0,0);e.x+=i*b*u;o.restore();this.compose();return}let S,E=0;for(S=0;S0){const t=1e3*o.measureText(s).width/a*l;if(_new CanvasGraphics(t,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};e=new s.TilingPattern(t,n,this.ctx,a,i)}else e=this._getPattern(t[1],t[2]);return e}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments);this.current.patternFill=!0}setStrokeRGBColor(t,e,n){const r=i.Util.makeHexColor(t,e,n);this.ctx.strokeStyle=r;this.current.strokeColor=r}setFillRGBColor(t,e,n){const r=i.Util.makeHexColor(t,e,n);this.ctx.fillStyle=r;this.current.fillColor=r;this.current.patternFill=!1}_getPattern(t){let e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.cachedPatterns.has(t))e=this.cachedPatterns.get(t);else{e=(0,s.getShadingPattern)(this.getObject(t));this.cachedPatterns.set(t,e)}n&&(e.matrix=n);return e}shadingFill(t){if(!this.contentVisible)return;const e=this.ctx;this.save();const n=this._getPattern(t);e.fillStyle=n.getPattern(e,this,(0,r.getCurrentTransformInverse)(e),s.PathType.SHADING);const a=(0,r.getCurrentTransformInverse)(e);if(a){const{width:t,height:n}=e.canvas,[r,s,o,l]=i.Util.getAxialAlignedBoundingBox([0,0,t,n],a);this.ctx.fillRect(r,s,o-r,l-s)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox());this.restore()}beginInlineImage(){(0,i.unreachable)("Should not call beginInlineImage")}beginImageData(){(0,i.unreachable)("Should not call beginImageData")}paintFormXObjectBegin(t,e){if(this.contentVisible){this.save();this.baseTransformStack.push(this.baseTransform);Array.isArray(t)&&6===t.length&&this.transform(...t);this.baseTransform=(0,r.getCurrentTransform)(this.ctx);if(e){const t=e[2]-e[0],n=e[3]-e[1];this.ctx.rect(e[0],e[1],t,n);this.current.updateRectMinMax((0,r.getCurrentTransform)(this.ctx),e);this.clip();this.endPath()}}}paintFormXObjectEnd(){if(this.contentVisible){this.restore();this.baseTransform=this.baseTransformStack.pop()}}beginGroup(t){if(!this.contentVisible)return;this.save();if(this.inSMaskMode){this.endSMaskMode();this.current.activeSMask=null}const e=this.ctx;t.isolated||(0,i.info)("TODO: Support non-isolated groups.");t.knockout&&(0,i.warn)("Knockout groups not supported.");const n=(0,r.getCurrentTransform)(e);t.matrix&&e.transform(...t.matrix);if(!t.bbox)throw new Error("Bounding box is required.");let s=i.Util.getAxialAlignedBoundingBox(t.bbox,(0,r.getCurrentTransform)(e));const a=[0,0,e.canvas.width,e.canvas.height];s=i.Util.intersect(s,a)||[0,0,0,0];const l=Math.floor(s[0]),c=Math.floor(s[1]);let h=Math.max(Math.ceil(s[2])-l,1),d=Math.max(Math.ceil(s[3])-c,1),u=1,p=1;if(h>o){u=h/o;h=o}if(d>o){p=d/o;d=o}this.current.startNewPathAndClipBox([0,0,h,d]);let f="groupAt"+this.groupLevel;t.smask&&(f+="_smask_"+this.smaskCounter++%2);const g=this.cachedCanvases.getCanvas(f,h,d),m=g.context;m.scale(1/u,1/p);m.translate(-l,-c);m.transform(...n);if(t.smask)this.smaskStack.push({canvas:g.canvas,context:m,offsetX:l,offsetY:c,scaleX:u,scaleY:p,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null});else{e.setTransform(1,0,0,1,0,0);e.translate(l,c);e.scale(u,p);e.save()}copyCtxState(e,m);this.ctx=m;this.setGState([["BM","source-over"],["ca",1],["CA",1]]);this.groupStack.push(e);this.groupLevel++}endGroup(t){if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,n=this.groupStack.pop();this.ctx=n;this.ctx.imageSmoothingEnabled=!1;if(t.smask){this.tempSMask=this.smaskStack.pop();this.restore()}else{this.ctx.restore();const t=(0,r.getCurrentTransform)(this.ctx);this.restore();this.ctx.save();this.ctx.setTransform(...t);const n=i.Util.getAxialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],t);this.ctx.drawImage(e.canvas,0,0);this.ctx.restore();this.compose(n)}}beginAnnotation(t,e,n,s,a){this.#Gt();resetCtxToDefault(this.ctx);this.ctx.save();this.save();this.baseTransform&&this.ctx.setTransform(...this.baseTransform);if(Array.isArray(e)&&4===e.length){const s=e[2]-e[0],o=e[3]-e[1];if(a&&this.annotationCanvasMap){(n=n.slice())[4]-=e[0];n[5]-=e[1];(e=e.slice())[0]=e[1]=0;e[2]=s;e[3]=o;const[a,l]=i.Util.singularValueDecompose2dScale((0,r.getCurrentTransform)(this.ctx)),{viewportScale:c}=this,h=Math.ceil(s*this.outputScaleX*c),d=Math.ceil(o*this.outputScaleY*c);this.annotationCanvas=this.canvasFactory.create(h,d);const{canvas:u,context:p}=this.annotationCanvas;this.annotationCanvasMap.set(t,u);this.annotationCanvas.savedCtx=this.ctx;this.ctx=p;this.ctx.save();this.ctx.setTransform(a,0,0,-l,0,o*l);resetCtxToDefault(this.ctx)}else{resetCtxToDefault(this.ctx);this.ctx.rect(e[0],e[1],s,o);this.ctx.clip();this.endPath()}}this.current=new CanvasExtraState(this.ctx.canvas.width,this.ctx.canvas.height);this.transform(...n);this.transform(...s)}endAnnotation(){if(this.annotationCanvas){this.ctx.restore();this.#Vt();this.ctx=this.annotationCanvas.savedCtx;delete this.annotationCanvas.savedCtx;delete this.annotationCanvas}}paintImageMaskXObject(t){if(!this.contentVisible)return;const e=t.count;(t=this.getObject(t.data,t)).count=e;const n=this.ctx,i=this.processingType3;if(i){void 0===i.compiled&&(i.compiled=function compileType3Glyph(t){const{width:e,height:n}=t;if(e>1e3||n>1e3)return null;const i=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),r=e+1;let s,a,o,l=new Uint8Array(r*(n+1));const c=e+7&-8;let h=new Uint8Array(c*n),d=0;for(const e of t.data){let t=128;for(;t>0;){h[d++]=e&t?0:255;t>>=1}}let u=0;d=0;if(0!==h[d]){l[0]=1;++u}for(a=1;a>2)+(h[d+1]?4:0)+(h[d-c+1]?8:0);if(i[t]){l[o+a]=i[t];++u}d++}if(h[d-c]!==h[d]){l[o+a]=h[d]?2:4;++u}if(u>1e3)return null}d=c*(n-1);o=s*r;if(0!==h[d]){l[o]=8;++u}for(a=1;a1e3)return null;const p=new Int32Array([0,r,-1,0,-r,0,0,0,1]),f=new Path2D;for(s=0;u&&s<=n;s++){let t=s*r;const n=t+e;for(;t>4;l[t]&=a>>2|a<<2}f.lineTo(t%r,t/r|0);l[t]||--u}while(i!==t);--s}h=null;l=null;return function(t){t.save();t.scale(1/e,-1/n);t.translate(0,-n);t.fill(f);t.beginPath();t.restore()}}(t));if(i.compiled){i.compiled(n);return}}const r=this._createMaskCanvas(t),s=r.canvas;n.save();n.setTransform(1,0,0,1,0,0);n.drawImage(s,r.offsetX,r.offsetY);n.restore();this.compose()}paintImageMaskXObjectRepeat(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4?arguments[4]:void 0,o=arguments.length>5?arguments[5]:void 0;if(!this.contentVisible)return;t=this.getObject(t.data,t);const l=this.ctx;l.save();const c=(0,r.getCurrentTransform)(l);l.transform(e,n,s,a,0,0);const h=this._createMaskCanvas(t);l.setTransform(1,0,0,1,h.offsetX-c[4],h.offsetY-c[5]);for(let t=0,r=o.length;te?c/e:1;a=l>e?l/e:1}}this._cachedScaleForStroking[0]=s;this._cachedScaleForStroking[1]=a}return this._cachedScaleForStroking}rescaleAndStroke(t){const{ctx:e}=this,{lineWidth:n}=this.current,[i,r]=this.getScaleForStroking();e.lineWidth=n||1;if(1===i&&1===r){e.stroke();return}const s=e.getLineDash();t&&e.save();e.scale(i,r);if(s.length>0){const t=Math.max(i,r);e.setLineDash(s.map((e=>e/t)));e.lineDashOffset/=t}e.stroke();t&&e.restore()}isContentVisible(){for(let t=this.markedContentStack.length-1;t>=0;t--)if(!this.markedContentStack[t].visible)return!1;return!0}}e.CanvasGraphics=CanvasGraphics;for(const t in i.OPS)void 0!==CanvasGraphics.prototype[t]&&(CanvasGraphics.prototype[i.OPS[t]]=CanvasGraphics.prototype[t])},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.TilingPattern=e.PathType=void 0;e.getShadingPattern=function getShadingPattern(t){switch(t[0]){case"RadialAxial":return new RadialAxialShadingPattern(t);case"Mesh":return new MeshShadingPattern(t);case"Dummy":return new DummyShadingPattern}throw new Error(`Unknown IR type: ${t[0]}`)};n(2);var i=n(1),r=n(167);const s={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};e.PathType=s;function applyBoundingBox(t,e){if(!e)return;const n=e[2]-e[0],i=e[3]-e[1],r=new Path2D;r.rect(e[0],e[1],n,i);t.clip(r)}class BaseShadingPattern{constructor(){this.constructor===BaseShadingPattern&&(0,i.unreachable)("Cannot initialize BaseShadingPattern.")}getPattern(){(0,i.unreachable)("Abstract method `getPattern` called.")}}class RadialAxialShadingPattern extends BaseShadingPattern{constructor(t){super();this._type=t[1];this._bbox=t[2];this._colorStops=t[3];this._p0=t[4];this._p1=t[5];this._r0=t[6];this._r1=t[7];this.matrix=null}_createGradient(t){let e;"axial"===this._type?e=t.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):"radial"===this._type&&(e=t.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const t of this._colorStops)e.addColorStop(t[0],t[1]);return e}getPattern(t,e,n,a){let o;if(a===s.STROKE||a===s.FILL){const s=e.current.getClippedPathBoundingBox(a,(0,r.getCurrentTransform)(t))||[0,0,0,0],l=Math.ceil(s[2]-s[0])||1,c=Math.ceil(s[3]-s[1])||1,h=e.cachedCanvases.getCanvas("pattern",l,c,!0),d=h.context;d.clearRect(0,0,d.canvas.width,d.canvas.height);d.beginPath();d.rect(0,0,d.canvas.width,d.canvas.height);d.translate(-s[0],-s[1]);n=i.Util.transform(n,[1,0,0,1,s[0],s[1]]);d.transform(...e.baseTransform);this.matrix&&d.transform(...this.matrix);applyBoundingBox(d,this._bbox);d.fillStyle=this._createGradient(d);d.fill();o=t.createPattern(h.canvas,"no-repeat");const u=new DOMMatrix(n);o.setTransform(u)}else{applyBoundingBox(t,this._bbox);o=this._createGradient(t)}return o}}function drawTriangle(t,e,n,i,r,s,a,o){const l=e.coords,c=e.colors,h=t.data,d=4*t.width;let u;if(l[n+1]>l[i+1]){u=n;n=i;i=u;u=s;s=a;a=u}if(l[i+1]>l[r+1]){u=i;i=r;r=u;u=a;a=o;o=u}if(l[n+1]>l[i+1]){u=n;n=i;i=u;u=s;s=a;a=u}const p=(l[n]+e.offsetX)*e.scaleX,f=(l[n+1]+e.offsetY)*e.scaleY,g=(l[i]+e.offsetX)*e.scaleX,m=(l[i+1]+e.offsetY)*e.scaleY,b=(l[r]+e.offsetX)*e.scaleX,v=(l[r+1]+e.offsetY)*e.scaleY;if(f>=v)return;const y=c[s],A=c[s+1],_=c[s+2],S=c[a],E=c[a+1],x=c[a+2],w=c[o],C=c[o+1],T=c[o+2],P=Math.round(f),k=Math.round(v);let M,R,I,D,O,L,N,B;for(let t=P;t<=k;t++){if(tv?1:m===v?0:(m-t)/(m-v);M=g-(g-b)*e;R=S-(S-w)*e;I=E-(E-C)*e;D=x-(x-T)*e}let e;e=tv?1:(f-t)/(f-v);O=p-(p-b)*e;L=y-(y-w)*e;N=A-(A-C)*e;B=_-(_-T)*e;const n=Math.round(Math.min(M,O)),i=Math.round(Math.max(M,O));let r=d*t+4*n;for(let t=n;t<=i;t++){e=(M-t)/(M-O);e<0?e=0:e>1&&(e=1);h[r++]=R-(R-L)*e|0;h[r++]=I-(I-N)*e|0;h[r++]=D-(D-B)*e|0;h[r++]=255}}}function drawFigure(t,e,n){const i=e.coords,r=e.colors;let s,a;switch(e.type){case"lattice":const o=e.verticesPerRow,l=Math.floor(i.length/o)-1,c=o-1;for(s=0;s=i?r=i:n=r/t;return{scale:n,size:r}}clipBbox(t,e,n,i,s){const a=i-e,o=s-n;t.ctx.rect(e,n,a,o);t.current.updateRectMinMax((0,r.getCurrentTransform)(t.ctx),[e,n,i,s]);t.clip();t.endPath()}setFillAndStrokeStyleToContext(t,e,n){const r=t.ctx,s=t.current;switch(e){case a:const t=this.ctx;r.fillStyle=t.fillStyle;r.strokeStyle=t.strokeStyle;s.fillColor=t.fillStyle;s.strokeColor=t.strokeStyle;break;case o:const l=i.Util.makeHexColor(n[0],n[1],n[2]);r.fillStyle=l;r.strokeStyle=l;s.fillColor=l;s.strokeColor=l;break;default:throw new i.FormatError(`Unsupported paint type: ${e}`)}}getPattern(t,e,n,r){let a=n;if(r!==s.SHADING){a=i.Util.transform(a,e.baseTransform);this.matrix&&(a=i.Util.transform(a,this.matrix))}const o=this.createPatternCanvas(e);let l=new DOMMatrix(a);l=l.translate(o.offsetX,o.offsetY);l=l.scale(1/o.scaleX,1/o.scaleY);const c=t.createPattern(o.canvas,"repeat");c.setTransform(l);return c}}e.TilingPattern=TilingPattern},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.convertBlackAndWhiteToRGBA=convertBlackAndWhiteToRGBA;e.convertToRGBA=function convertToRGBA(t){switch(t.kind){case i.ImageKind.GRAYSCALE_1BPP:return convertBlackAndWhiteToRGBA(t);case i.ImageKind.RGB_24BPP:return function convertRGBToRGBA(t){let{src:e,srcPos:n=0,dest:r,destPos:s=0,width:a,height:o}=t,l=0;const c=e.length>>2,h=new Uint32Array(e.buffer,n,c);if(i.FeatureTest.isLittleEndian){for(;l>>24|e<<8|4278190080;r[s+2]=e>>>16|n<<16|4278190080;r[s+3]=n>>>8|4278190080}for(let t=4*l,n=e.length;t>>8|255;r[s+2]=e<<16|n>>>16|255;r[s+3]=n<<8|255}for(let t=4*l,n=e.length;t>3,p=7&s,f=e.length;r=new Uint32Array(r.buffer);let g=0;for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.GlobalWorkerOptions=void 0;const n=Object.create(null);e.GlobalWorkerOptions=n;n.workerPort=null;n.workerSrc=""},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.MessageHandler=void 0;n(2);var i=n(1);const r=1,s=2,a=1,o=2,l=3,c=4,h=5,d=6,u=7,p=8;function wrapReason(t){t instanceof Error||"object"==typeof t&&null!==t||(0,i.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');switch(t.name){case"AbortException":return new i.AbortException(t.message);case"MissingPDFException":return new i.MissingPDFException(t.message);case"PasswordException":return new i.PasswordException(t.message,t.code);case"UnexpectedResponseException":return new i.UnexpectedResponseException(t.message,t.status);case"UnknownErrorException":return new i.UnknownErrorException(t.message,t.details);default:return new i.UnknownErrorException(t.message,t.toString())}}e.MessageHandler=class MessageHandler{constructor(t,e,n){this.sourceName=t;this.targetName=e;this.comObj=n;this.callbackId=1;this.streamId=1;this.streamSinks=Object.create(null);this.streamControllers=Object.create(null);this.callbackCapabilities=Object.create(null);this.actionHandler=Object.create(null);this._onComObjOnMessage=t=>{const e=t.data;if(e.targetName!==this.sourceName)return;if(e.stream){this.#$t(e);return}if(e.callback){const t=e.callbackId,n=this.callbackCapabilities[t];if(!n)throw new Error(`Cannot resolve callback ${t}`);delete this.callbackCapabilities[t];if(e.callback===r)n.resolve(e.data);else{if(e.callback!==s)throw new Error("Unexpected callback case");n.reject(wrapReason(e.reason))}return}const i=this.actionHandler[e.action];if(!i)throw new Error(`Unknown action from worker: ${e.action}`);if(e.callbackId){const t=this.sourceName,a=e.sourceName;new Promise((function(t){t(i(e.data))})).then((function(i){n.postMessage({sourceName:t,targetName:a,callback:r,callbackId:e.callbackId,data:i})}),(function(i){n.postMessage({sourceName:t,targetName:a,callback:s,callbackId:e.callbackId,reason:wrapReason(i)})}))}else e.streamId?this.#Xt(e):i(e.data)};n.addEventListener("message",this._onComObjOnMessage)}on(t,e){const n=this.actionHandler;if(n[t])throw new Error(`There is already an actionName called "${t}"`);n[t]=e}send(t,e,n){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,data:e},n)}sendWithPromise(t,e,n){const r=this.callbackId++,s=new i.PromiseCapability;this.callbackCapabilities[r]=s;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:t,callbackId:r,data:e},n)}catch(t){s.reject(t)}return s.promise}sendWithStream(t,e,n,r){const s=this.streamId++,o=this.sourceName,l=this.targetName,c=this.comObj;return new ReadableStream({start:n=>{const a=new i.PromiseCapability;this.streamControllers[s]={controller:n,startCall:a,pullCall:null,cancelCall:null,isClosed:!1};c.postMessage({sourceName:o,targetName:l,action:t,streamId:s,data:e,desiredSize:n.desiredSize},r);return a.promise},pull:t=>{const e=new i.PromiseCapability;this.streamControllers[s].pullCall=e;c.postMessage({sourceName:o,targetName:l,stream:d,streamId:s,desiredSize:t.desiredSize});return e.promise},cancel:t=>{(0,i.assert)(t instanceof Error,"cancel must have a valid reason");const e=new i.PromiseCapability;this.streamControllers[s].cancelCall=e;this.streamControllers[s].isClosed=!0;c.postMessage({sourceName:o,targetName:l,stream:a,streamId:s,reason:wrapReason(t)});return e.promise}},n)}#Xt(t){const e=t.streamId,n=this.sourceName,r=t.sourceName,s=this.comObj,a=this,o=this.actionHandler[t.action],d={enqueue(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2?arguments[2]:void 0;if(this.isCancelled)return;const l=this.desiredSize;this.desiredSize-=a;if(l>0&&this.desiredSize<=0){this.sinkCapability=new i.PromiseCapability;this.ready=this.sinkCapability.promise}s.postMessage({sourceName:n,targetName:r,stream:c,streamId:e,chunk:t},o)},close(){if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:r,stream:l,streamId:e});delete a.streamSinks[e]}},error(t){(0,i.assert)(t instanceof Error,"error must have a valid reason");if(!this.isCancelled){this.isCancelled=!0;s.postMessage({sourceName:n,targetName:r,stream:h,streamId:e,reason:wrapReason(t)})}},sinkCapability:new i.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:t.desiredSize,ready:null};d.sinkCapability.resolve();d.ready=d.sinkCapability.promise;this.streamSinks[e]=d;new Promise((function(e){e(o(t.data,d))})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:p,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:p,streamId:e,reason:wrapReason(t)})}))}#$t(t){const e=t.streamId,n=this.sourceName,r=t.sourceName,s=this.comObj,f=this.streamControllers[e],g=this.streamSinks[e];switch(t.stream){case p:t.success?f.startCall.resolve():f.startCall.reject(wrapReason(t.reason));break;case u:t.success?f.pullCall.resolve():f.pullCall.reject(wrapReason(t.reason));break;case d:if(!g){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,success:!0});break}g.desiredSize<=0&&t.desiredSize>0&&g.sinkCapability.resolve();g.desiredSize=t.desiredSize;new Promise((function(t){t(g.onPull?.())})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:u,streamId:e,reason:wrapReason(t)})}));break;case c:(0,i.assert)(f,"enqueue should have stream controller");if(f.isClosed)break;f.controller.enqueue(t.chunk);break;case l:(0,i.assert)(f,"close should have stream controller");if(f.isClosed)break;f.isClosed=!0;f.controller.close();this.#Kt(f,e);break;case h:(0,i.assert)(f,"error should have stream controller");f.controller.error(wrapReason(t.reason));this.#Kt(f,e);break;case o:t.success?f.cancelCall.resolve():f.cancelCall.reject(wrapReason(t.reason));this.#Kt(f,e);break;case a:if(!g)break;new Promise((function(e){e(g.onCancel?.(wrapReason(t.reason)))})).then((function(){s.postMessage({sourceName:n,targetName:r,stream:o,streamId:e,success:!0})}),(function(t){s.postMessage({sourceName:n,targetName:r,stream:o,streamId:e,reason:wrapReason(t)})}));g.sinkCapability.reject(wrapReason(t.reason));g.isCancelled=!0;delete this.streamSinks[e];break;default:throw new Error("Unexpected stream case")}}async#Kt(t,e){await Promise.allSettled([t.startCall?.promise,t.pullCall?.promise,t.cancelCall?.promise]);delete this.streamControllers[e]}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.Metadata=void 0;var i=n(1);e.Metadata=class Metadata{#Yt;#Jt;constructor(t){let{parsedData:e,rawData:n}=t;this.#Yt=e;this.#Jt=n}getRaw(){return this.#Jt}get(t){return this.#Yt.get(t)??null}getAll(){return(0,i.objectFromMap)(this.#Yt)}has(t){return this.#Yt.has(t)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.OptionalContentConfig=void 0;var i=n(1),r=n(169);const s=Symbol("INTERNAL");class OptionalContentGroup{#Qt=!0;constructor(t,e){this.name=t;this.intent=e}get visible(){return this.#Qt}_setVisible(t,e){t!==s&&(0,i.unreachable)("Internal method `_setVisible` called.");this.#Qt=e}}e.OptionalContentConfig=class OptionalContentConfig{#Zt=null;#te=new Map;#ee=null;#ne=null;constructor(t){this.name=null;this.creator=null;if(null!==t){this.name=t.name;this.creator=t.creator;this.#ne=t.order;for(const e of t.groups)this.#te.set(e.id,new OptionalContentGroup(e.name,e.intent));if("OFF"===t.baseState)for(const t of this.#te.values())t._setVisible(s,!1);for(const e of t.on)this.#te.get(e)._setVisible(s,!0);for(const e of t.off)this.#te.get(e)._setVisible(s,!1);this.#ee=this.getHash()}}#ie(t){const e=t.length;if(e<2)return!0;const n=t[0];for(let r=1;r1&&void 0!==arguments[1])||arguments[1];if(this.#te.has(t)){this.#te.get(t)._setVisible(s,!!e);this.#Zt=null}else(0,i.warn)(`Optional content group not found: ${t}`)}get hasInitialVisibility(){return this.getHash()===this.#ee}getOrder(){return this.#te.size?this.#ne?this.#ne.slice():[...this.#te.keys()]:null}getGroups(){return this.#te.size>0?(0,i.objectFromMap)(this.#te):null}getGroup(t){return this.#te.get(t)||null}getHash(){if(null!==this.#Zt)return this.#Zt;const t=new r.MurmurHash3_64;for(const[e,n]of this.#te)t.update(`${e}:${n.visible}`);return this.#Zt=t.hexdigest()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFDataTransportStream=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(167);e.PDFDataTransportStream=class PDFDataTransportStream{constructor(t,e){let{length:n,initialData:r,progressiveDone:s=!1,contentDispositionFilename:a=null,disableRange:o=!1,disableStream:l=!1}=t;(0,i.assert)(e,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');this._queuedChunks=[];this._progressiveDone=s;this._contentDispositionFilename=a;if(r?.length>0){const t=r instanceof Uint8Array&&r.byteLength===r.buffer.byteLength?r.buffer:new Uint8Array(r).buffer;this._queuedChunks.push(t)}this._pdfDataRangeTransport=e;this._isStreamingSupported=!l;this._isRangeSupported=!o;this._contentLength=n;this._fullRequestReader=null;this._rangeReaders=[];this._pdfDataRangeTransport.addRangeListener(((t,e)=>{this._onReceiveData({begin:t,chunk:e})}));this._pdfDataRangeTransport.addProgressListener(((t,e)=>{this._onProgress({loaded:t,total:e})}));this._pdfDataRangeTransport.addProgressiveReadListener((t=>{this._onReceiveData({chunk:t})}));this._pdfDataRangeTransport.addProgressiveDoneListener((()=>{this._onProgressiveDone()}));this._pdfDataRangeTransport.transportReady()}_onReceiveData(t){let{begin:e,chunk:n}=t;const r=n instanceof Uint8Array&&n.byteLength===n.buffer.byteLength?n.buffer:new Uint8Array(n).buffer;if(void 0===e)this._fullRequestReader?this._fullRequestReader._enqueue(r):this._queuedChunks.push(r);else{const t=this._rangeReaders.some((function(t){if(t._begin!==e)return!1;t._enqueue(r);return!0}));(0,i.assert)(t,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}_onProgress(t){void 0===t.total?this._rangeReaders[0]?.onProgress?.({loaded:t.loaded}):this._fullRequestReader?.onProgress?.({loaded:t.loaded,total:t.total})}_onProgressiveDone(){this._fullRequestReader?.progressiveDone();this._progressiveDone=!0}_removeRangeReader(t){const e=this._rangeReaders.indexOf(t);e>=0&&this._rangeReaders.splice(e,1)}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const t=this._queuedChunks;this._queuedChunks=null;return new PDFDataTransportStreamReader(this,t,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new PDFDataTransportStreamRangeReader(this,t,e);this._pdfDataRangeTransport.requestDataRange(t,e);this._rangeReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeReaders.slice(0))e.cancel(t);this._pdfDataRangeTransport.abort()}};class PDFDataTransportStreamReader{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;this._stream=t;this._done=n||!1;this._filename=(0,r.isPdfFile)(i)?i:null;this._queuedChunks=e||[];this._loaded=0;for(const t of this._queuedChunks)this._loaded+=t.byteLength;this._requests=[];this._headersReady=Promise.resolve();t._fullRequestReader=this;this.onProgress=null}_enqueue(t){if(!this._done){if(this._requests.length>0){this._requests.shift().resolve({value:t,done:!1})}else this._queuedChunks.push(t);this._loaded+=t.byteLength}}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0){return{value:this._queuedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class PDFDataTransportStreamRangeReader{constructor(t,e,n){this._stream=t;this._begin=e;this._end=n;this._queuedChunk=null;this._requests=[];this._done=!1;this.onProgress=null}_enqueue(t){if(!this._done){if(0===this._requests.length)this._queuedChunk=t;else{this._requests.shift().resolve({value:t,done:!1});for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0;this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._stream._removeRangeReader(this)}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFFetchStream=void 0;n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(89);var i=n(1),r=n(181);function createFetchOptions(t,e,n){return{method:"GET",headers:t,signal:n.signal,mode:"cors",credentials:e?"include":"same-origin",redirect:"follow"}}function createHeaders(t){const e=new Headers;for(const n in t){const i=t[n];void 0!==i&&e.append(n,i)}return e}function getArrayBuffer(t){if(t instanceof Uint8Array)return t.buffer;if(t instanceof ArrayBuffer)return t;(0,i.warn)(`getArrayBuffer - unexpected data format: ${t}`);return new Uint8Array(t).buffer}e.PDFFetchStream=class PDFFetchStream{constructor(t){this.source=t;this.isHttp=/^https?:/i.test(t.url);this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once.");this._fullRequestReader=new PDFFetchStreamReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=new PDFFetchStreamRangeReader(this,t,e);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class PDFFetchStreamReader{constructor(t){this._stream=t;this._reader=null;this._loaded=0;this._filename=null;const e=t.source;this._withCredentials=e.withCredentials||!1;this._contentLength=e.length;this._headersCapability=new i.PromiseCapability;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._abortController=new AbortController;this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._headers=createHeaders(this._stream.httpHeaders);const n=e.url;fetch(n,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,r.validateResponseStatus)(t.status))throw(0,r.createResponseStatusError)(t.status,n);this._reader=t.body.getReader();this._headersCapability.resolve();const getResponseHeader=e=>t.headers.get(e),{allowRangeRequests:e,suggestedLength:s}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=e;this._contentLength=s||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader);!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new i.AbortException("Streaming is disabled."))})).catch(this._headersCapability.reject);this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._headersCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}class PDFFetchStreamRangeReader{constructor(t,e,n){this._stream=t;this._reader=null;this._loaded=0;const s=t.source;this._withCredentials=s.withCredentials||!1;this._readCapability=new i.PromiseCapability;this._isStreamingSupported=!s.disableStream;this._abortController=new AbortController;this._headers=createHeaders(this._stream.httpHeaders);this._headers.append("Range",`bytes=${e}-${n-1}`);const a=s.url;fetch(a,createFetchOptions(this._headers,this._withCredentials,this._abortController)).then((t=>{if(!(0,r.validateResponseStatus)(t.status))throw(0,r.createResponseStatusError)(t.status,a);this._readCapability.resolve();this._reader=t.body.getReader()})).catch(this._readCapability.reject);this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;const{value:t,done:e}=await this._reader.read();if(e)return{value:t,done:e};this._loaded+=t.byteLength;this.onProgress?.({loaded:this._loaded});return{value:getArrayBuffer(t),done:!1}}cancel(t){this._reader?.cancel(t);this._abortController.abort()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.createResponseStatusError=function createResponseStatusError(t,e){if(404===t||0===t&&e.startsWith("file:"))return new i.MissingPDFException('Missing PDF "'+e+'".');return new i.UnexpectedResponseException(`Unexpected server response (${t}) while retrieving PDF "${e}".`,t)};e.extractFilenameFromHeader=function extractFilenameFromHeader(t){const e=t("Content-Disposition");if(e){let t=(0,r.getFilenameFromContentDispositionHeader)(e);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if((0,s.isPdfFile)(t))return t}return null};e.validateRangeRequestCapabilities=function validateRangeRequestCapabilities(t){let{getResponseHeader:e,isHttp:n,rangeChunkSize:i,disableRange:r}=t;const s={allowRangeRequests:!1,suggestedLength:void 0},a=parseInt(e("Content-Length"),10);if(!Number.isInteger(a))return s;s.suggestedLength=a;if(a<=2*i)return s;if(r||!n)return s;if("bytes"!==e("Accept-Ranges"))return s;if("identity"!==(e("Content-Encoding")||"identity"))return s;s.allowRangeRequests=!0;return s};e.validateResponseStatus=function validateResponseStatus(t){return 200===t||206===t};var i=n(1),r=n(182),s=n(167)},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.getFilenameFromContentDispositionHeader=function getFilenameFromContentDispositionHeader(t){let e=!0,n=toParamRegExp("filename\\*","i").exec(t);if(n){n=n[1];let t=rfc2616unquote(n);t=unescape(t);t=rfc5987decode(t);t=rfc2047decode(t);return fixupEncoding(t)}n=function rfc2231getparam(t){const e=[];let n;const i=toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;null!==(n=i.exec(t));){let[,t,i,r]=n;t=parseInt(t,10);if(t in e){if(0===t)break}else e[t]=[i,r]}const r=[];for(let t=0;t{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFNetworkStream=void 0;n(89);var i=n(1),r=n(181);class NetworkManager{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.url=t;this.isHttp=/^https?:/i.test(t);this.httpHeaders=this.isHttp&&e.httpHeaders||Object.create(null);this.withCredentials=e.withCredentials||!1;this.currXhrId=0;this.pendingRequests=Object.create(null)}requestRange(t,e,n){const i={begin:t,end:e};for(const t in n)i[t]=n[t];return this.request(i)}requestFull(t){return this.request(t)}request(t){const e=new XMLHttpRequest,n=this.currXhrId++,i=this.pendingRequests[n]={xhr:e};e.open("GET",this.url, !0);e.withCredentials=this.withCredentials;for(const t in this.httpHeaders){const n=this.httpHeaders[t];void 0!==n&&e.setRequestHeader(t,n)}if(this.isHttp&&"begin"in t&&"end"in t){e.setRequestHeader("Range",`bytes=${t.begin}-${t.end-1}`);i.expectedStatus=206}else i.expectedStatus=200;e.responseType="arraybuffer";t.onError&&(e.onerror=function(n){t.onError(e.status)});e.onreadystatechange=this.onStateChange.bind(this,n);e.onprogress=this.onProgress.bind(this,n);i.onHeadersReceived=t.onHeadersReceived;i.onDone=t.onDone;i.onError=t.onError;i.onProgress=t.onProgress;e.send(null);return n}onProgress(t,e){const n=this.pendingRequests[t];n&&n.onProgress?.(e)}onStateChange(t,e){const n=this.pendingRequests[t];if(!n)return;const r=n.xhr;if(r.readyState>=2&&n.onHeadersReceived){n.onHeadersReceived();delete n.onHeadersReceived}if(4!==r.readyState)return;if(!(t in this.pendingRequests))return;delete this.pendingRequests[t];if(0===r.status&&this.isHttp){n.onError?.(r.status);return}const s=r.status||200;if(!(200===s&&206===n.expectedStatus)&&s!==n.expectedStatus){n.onError?.(r.status);return}const a=function getArrayBuffer(t){const e=t.response;return"string"!=typeof e?e:(0,i.stringToBytes)(e).buffer}(r);if(206===s){const t=r.getResponseHeader("Content-Range"),e=/bytes (\d+)-(\d+)\/(\d+)/.exec(t);n.onDone({begin:parseInt(e[1],10),chunk:a})}else a?n.onDone({begin:0,chunk:a}):n.onError?.(r.status)}getRequestXhr(t){return this.pendingRequests[t].xhr}isPendingRequest(t){return t in this.pendingRequests}abortRequest(t){const e=this.pendingRequests[t].xhr;delete this.pendingRequests[t];e.abort()}}e.PDFNetworkStream=class PDFNetworkStream{constructor(t){this._source=t;this._manager=new NetworkManager(t.url,{httpHeaders:t.httpHeaders,withCredentials:t.withCredentials});this._rangeChunkSize=t.rangeChunkSize;this._fullRequestReader=null;this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(t){const e=this._rangeRequestReaders.indexOf(t);e>=0&&this._rangeRequestReaders.splice(e,1)}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once.");this._fullRequestReader=new PDFNetworkStreamFullRequestReader(this._manager,this._source);return this._fullRequestReader}getRangeReader(t,e){const n=new PDFNetworkStreamRangeRequestReader(this._manager,t,e);n.onClosed=this._onRangeRequestReaderClosed.bind(this);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class PDFNetworkStreamFullRequestReader{constructor(t,e){this._manager=t;const n={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=e.url;this._fullRequestId=t.requestFull(n);this._headersReceivedCapability=new i.PromiseCapability;this._disableRange=e.disableRange||!1;this._contentLength=e.length;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!1;this._isRangeSupported=!1;this._cachedChunks=[];this._requests=[];this._done=!1;this._storedError=void 0;this._filename=null;this.onProgress=null}_onHeadersReceived(){const t=this._fullRequestId,e=this._manager.getRequestXhr(t),getResponseHeader=t=>e.getResponseHeader(t),{allowRangeRequests:n,suggestedLength:i}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});n&&(this._isRangeSupported=!0);this._contentLength=i||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader);this._isRangeSupported&&this._manager.abortRequest(t);this._headersReceivedCapability.resolve()}_onDone(t){if(t)if(this._requests.length>0){this._requests.shift().resolve({value:t.chunk,done:!1})}else this._cachedChunks.push(t.chunk);this._done=!0;if(!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(t){this._storedError=(0,r.createResponseStatusError)(t,this._url);this._headersReceivedCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._cachedChunks.length=0}_onProgress(t){this.onProgress?.({loaded:t.loaded,total:t.lengthComputable?t.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}async read(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0){return{value:this._cachedChunks.shift(),done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;this._headersReceivedCapability.reject(t);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId);this._fullRequestReader=null}}class PDFNetworkStreamRangeRequestReader{constructor(t,e,n){this._manager=t;const i={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=t.url;this._requestId=t.requestRange(e,n,i);this._requests=[];this._queuedChunk=null;this._done=!1;this._storedError=void 0;this.onProgress=null;this.onClosed=null}_close(){this.onClosed?.(this)}_onDone(t){const e=t.chunk;if(this._requests.length>0){this._requests.shift().resolve({value:e,done:!1})}else this._queuedChunk=e;this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._close()}_onError(t){this._storedError=(0,r.createResponseStatusError)(t,this._url);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0;this._queuedChunk=null}_onProgress(t){this.isStreamingSupported||this.onProgress?.({loaded:t.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(null!==this._queuedChunk){const t=this._queuedChunk;this._queuedChunk=null;return{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const t=new i.PromiseCapability;this._requests.push(t);return t.promise}cancel(t){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0;this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId);this._close()}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.PDFNodeStream=void 0;n(89);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);var i=n(1),r=n(181);const s=/^file:\/\/\/[a-zA-Z]:\//;e.PDFNodeStream=class PDFNodeStream{constructor(t){this.source=t;this.url=function parseUrl(t){const e=require("url"),n=e.parse(t);if("file:"===n.protocol||n.host)return n;if(/^[a-z]:[/\\]/i.test(t))return e.parse(`file:///${t}`);n.host||(n.protocol="file:");return n}(t.url);this.isHttp="http:"===this.url.protocol||"https:"===this.url.protocol;this.isFsUrl="file:"===this.url.protocol;this.httpHeaders=this.isHttp&&t.httpHeaders||{};this._fullRequestReader=null;this._rangeRequestReaders=[]}get _progressiveDataLength(){return this._fullRequestReader?._loaded??0}getFullReader(){(0,i.assert)(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once.");this._fullRequestReader=this.isFsUrl?new PDFNodeStreamFsFullReader(this):new PDFNodeStreamFullReader(this);return this._fullRequestReader}getRangeReader(t,e){if(e<=this._progressiveDataLength)return null;const n=this.isFsUrl?new PDFNodeStreamFsRangeReader(this,t,e):new PDFNodeStreamRangeReader(this,t,e);this._rangeRequestReaders.push(n);return n}cancelAllRequests(t){this._fullRequestReader?.cancel(t);for(const e of this._rangeRequestReaders.slice(0))e.cancel(t)}};class BaseFullReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;const e=t.source;this._contentLength=e.length;this._loaded=0;this._filename=null;this._disableRange=e.disableRange||!1;this._rangeChunkSize=e.rangeChunkSize;this._rangeChunkSize||this._disableRange||(this._disableRange=!0);this._isStreamingSupported=!e.disableStream;this._isRangeSupported=!e.disableRange;this._readableStream=null;this._readCapability=new i.PromiseCapability;this._headersCapability=new i.PromiseCapability}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new i.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded,total:this._contentLength});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));!this._isStreamingSupported&&this._isRangeSupported&&this._error(new i.AbortException("streaming is disabled"));this._storedError&&this._readableStream.destroy(this._storedError)}}class BaseRangeReader{constructor(t){this._url=t.url;this._done=!1;this._storedError=null;this.onProgress=null;this._loaded=0;this._readableStream=null;this._readCapability=new i.PromiseCapability;const e=t.source;this._isStreamingSupported=!e.disableStream}get isStreamingSupported(){return this._isStreamingSupported}async read(){await this._readCapability.promise;if(this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const t=this._readableStream.read();if(null===t){this._readCapability=new i.PromiseCapability;return this.read()}this._loaded+=t.length;this.onProgress?.({loaded:this._loaded});return{value:new Uint8Array(t).buffer,done:!1}}cancel(t){this._readableStream?this._readableStream.destroy(t):this._error(t)}_error(t){this._storedError=t;this._readCapability.resolve()}_setReadableStream(t){this._readableStream=t;t.on("readable",(()=>{this._readCapability.resolve()}));t.on("end",(()=>{t.destroy();this._done=!0;this._readCapability.resolve()}));t.on("error",(t=>{this._error(t)}));this._storedError&&this._readableStream.destroy(this._storedError)}}function createRequestOptions(t,e){return{protocol:t.protocol,auth:t.auth,host:t.hostname,port:t.port,path:t.path,method:"GET",headers:e}}class PDFNodeStreamFullReader extends BaseFullReader{constructor(t){super(t);const handleResponse=e=>{if(404===e.statusCode){const t=new i.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t;this._headersCapability.reject(t);return}this._headersCapability.resolve();this._setReadableStream(e);const getResponseHeader=t=>this._readableStream.headers[t.toLowerCase()],{allowRangeRequests:n,suggestedLength:s}=(0,r.validateRangeRequestCapabilities)({getResponseHeader:getResponseHeader,isHttp:t.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=n;this._contentLength=s||this._contentLength;this._filename=(0,r.extractFilenameFromHeader)(getResponseHeader)};this._request=null;if("http:"===this._url.protocol){const e=require("http");this._request=e.request(createRequestOptions(this._url,t.httpHeaders),handleResponse)}else{const e=require("https");this._request=e.request(createRequestOptions(this._url,t.httpHeaders),handleResponse)}this._request.on("error",(t=>{this._storedError=t;this._headersCapability.reject(t)}));this._request.end()}}class PDFNodeStreamRangeReader extends BaseRangeReader{constructor(t,e,n){super(t);this._httpHeaders={};for(const e in t.httpHeaders){const n=t.httpHeaders[e];void 0!==n&&(this._httpHeaders[e]=n)}this._httpHeaders.Range=`bytes=${e}-${n-1}`;const handleResponse=t=>{if(404!==t.statusCode)this._setReadableStream(t);else{const t=new i.MissingPDFException(`Missing PDF "${this._url}".`);this._storedError=t}};this._request=null;if("http:"===this._url.protocol){const t=require("http");this._request=t.request(createRequestOptions(this._url,this._httpHeaders),handleResponse)}else{const t=require("https");this._request=t.request(createRequestOptions(this._url,this._httpHeaders),handleResponse)}this._request.on("error",(t=>{this._storedError=t}));this._request.end()}}class PDFNodeStreamFsFullReader extends BaseFullReader{constructor(t){super(t);let e=decodeURIComponent(this._url.path);s.test(this._url.href)&&(e=e.replace(/^\//,""));const n=require("fs");n.lstat(e,((t,r)=>{if(t){"ENOENT"===t.code&&(t=new i.MissingPDFException(`Missing PDF "${e}".`));this._storedError=t;this._headersCapability.reject(t)}else{this._contentLength=r.size;this._setReadableStream(n.createReadStream(e));this._headersCapability.resolve()}}))}}class PDFNodeStreamFsRangeReader extends BaseRangeReader{constructor(t,e,n){super(t);let i=decodeURIComponent(this._url.path);s.test(this._url.href)&&(i=i.replace(/^\//,""));const r=require("fs");this._setReadableStream(r.createReadStream(i,{start:e,end:n-1}))}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SVGGraphics=void 0;n(84);n(86);n(87);n(93);n(101);n(102);n(105);n(107);n(109);n(113);n(116);n(123);n(2);n(89);n(186);var i=n(167),r=n(1);const s="normal",a="normal",o="#000000",l=["butt","round","square"],c=["miter","round","bevel"],createObjectURL=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(URL.createObjectURL&&"undefined"!=typeof Blob&&!n)return URL.createObjectURL(new Blob([t],{type:e}));const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";let r=`data:${e};base64,`;for(let e=0,n=t.length;e>2]+i[(3&s)<<4|a>>4]+i[e+1>6:64]+i[e+2>1&2147483647:n>>1&2147483647;e[t]=n}function writePngChunk(t,n,i,r){let s=r;const a=n.length;i[s]=a>>24&255;i[s+1]=a>>16&255;i[s+2]=a>>8&255;i[s+3]=255&a;s+=4;i[s]=255&t.charCodeAt(0);i[s+1]=255&t.charCodeAt(1);i[s+2]=255&t.charCodeAt(2);i[s+3]=255&t.charCodeAt(3);s+=4;i.set(n,s);s+=n.length;const o=function crc32(t,n,i){let r=-1;for(let s=n;s>>8^e[n]}return-1^r}(i,r+4,s);i[s]=o>>24&255;i[s+1]=o>>16&255;i[s+2]=o>>8&255;i[s+3]=255&o}function deflateSyncUncompressed(t){let e=t.length;const n=65535,i=Math.ceil(e/n),r=new Uint8Array(2+e+5*i+4);let s=0;r[s++]=120;r[s++]=156;let a=0;for(;e>n;){r[s++]=0;r[s++]=255;r[s++]=255;r[s++]=0;r[s++]=0;r.set(t.subarray(a,a+n),s);s+=n;a+=n;e-=n}r[s++]=1;r[s++]=255&e;r[s++]=e>>8&255;r[s++]=255&~e;r[s++]=(65535&~e)>>8&255;r.set(t.subarray(a),s);s+=t.length-a;const o=function adler32(t,e,n){let i=1,r=0;for(let s=e;s>24&255;r[s++]=o>>16&255;r[s++]=o>>8&255;r[s++]=255&o;return r}function encode(e,n,i,s){const a=e.width,o=e.height;let l,c,h;const d=e.data;switch(n){case r.ImageKind.GRAYSCALE_1BPP:c=0;l=1;h=a+7>>3;break;case r.ImageKind.RGB_24BPP:c=2;l=8;h=3*a;break;case r.ImageKind.RGBA_32BPP:c=6;l=8;h=4*a;break;default:throw new Error("invalid format")}const u=new Uint8Array((1+h)*o);let p=0,f=0;for(let t=0;t>24&255,a>>16&255,a>>8&255,255&a,o>>24&255,o>>16&255,o>>8&255,255&o,l,c,0,0,0]),m=function deflateSync(t){if(!r.isNodeJS)return deflateSyncUncompressed(t);try{const e=parseInt(process.versions.node)>=8?t:Buffer.from(t),n=require("zlib").deflateSync(e,{level:9});return n instanceof Uint8Array?n:new Uint8Array(n)}catch(t){(0,r.warn)("Not compressing PNG because zlib.deflateSync is unavailable: "+t)}return deflateSyncUncompressed(t)}(u),b=t.length+36+g.length+m.length,v=new Uint8Array(b);let y=0;v.set(t,y);y+=t.length;writePngChunk("IHDR",g,v,y);y+=12+g.length;writePngChunk("IDATA",m,v,y);y+=12+m.length;writePngChunk("IEND",new Uint8Array(0),v,y);return createObjectURL(v,"image/png",i)}return function convertImgDataToPng(t,e,n){return encode(t,void 0===t.kind?r.ImageKind.GRAYSCALE_1BPP:t.kind,e,n)}}();class SVGExtraState{constructor(){this.fontSizeScale=1;this.fontWeight=a;this.fontSize=0;this.textMatrix=r.IDENTITY_MATRIX;this.fontMatrix=r.FONT_IDENTITY_MATRIX;this.leading=0;this.textRenderingMode=r.TextRenderingMode.FILL;this.textMatrixScale=1;this.x=0;this.y=0;this.lineX=0;this.lineY=0;this.charSpacing=0;this.wordSpacing=0;this.textHScale=1;this.textRise=0;this.fillColor=o;this.strokeColor="#000000";this.fillAlpha=1;this.strokeAlpha=1;this.lineWidth=1;this.lineJoin="";this.lineCap="";this.miterLimit=0;this.dashArray=[];this.dashPhase=0;this.dependencies=[];this.activeClipUrl=null;this.clipGroup=null;this.maskId=""}clone(){return Object.create(this)}setCurrentPoint(t,e){this.x=t;this.y=e}}function pf(t){if(Number.isInteger(t))return t.toString();const e=t.toFixed(10);let n=e.length-1;if("0"!==e[n])return e;do{n--}while("0"===e[n]);return e.substring(0,"."===e[n]?n:n+1)}function pm(t){if(0===t[4]&&0===t[5]){if(0===t[1]&&0===t[2])return 1===t[0]&&1===t[3]?"":`scale(${pf(t[0])} ${pf(t[3])})`;if(t[0]===t[3]&&t[1]===-t[2]){return`rotate(${pf(180*Math.acos(t[0])/Math.PI)})`}}else if(1===t[0]&&0===t[1]&&0===t[2]&&1===t[3])return`translate(${pf(t[4])} ${pf(t[5])})`;return`matrix(${pf(t[0])} ${pf(t[1])} ${pf(t[2])} ${pf(t[3])} ${pf(t[4])} ${pf(t[5])})`}let d=0,u=0,p=0;e.SVGGraphics=class SVGGraphics{constructor(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,i.deprecated)("The SVG back-end is no longer maintained and *may* be removed in the future.");this.svgFactory=new i.DOMSVGFactory;this.current=new SVGExtraState;this.transformMatrix=r.IDENTITY_MATRIX;this.transformStack=[];this.extraStack=[];this.commonObjs=t;this.objs=e;this.pendingClip=null;this.pendingEOFill=!1;this.embedFonts=!1;this.embeddedFonts=Object.create(null);this.cssStyle=null;this.forceDataSchema=!!n;this._operatorIdMapping=[];for(const t in r.OPS)this._operatorIdMapping[r.OPS[t]]=t}getObject(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"string"==typeof t?t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t):e}save(){this.transformStack.push(this.transformMatrix);const t=this.current;this.extraStack.push(t);this.current=t.clone()}restore(){this.transformMatrix=this.transformStack.pop();this.current=this.extraStack.pop();this.pendingClip=null;this.tgrp=null}group(t){this.save();this.executeOpTree(t);this.restore()}loadDependencies(t){const e=t.fnArray,n=t.argsArray;for(let t=0,i=e.length;t{t.get(e,n)}));this.current.dependencies.push(n)}return Promise.all(this.current.dependencies)}transform(t,e,n,i,s,a){const o=[t,e,n,i,s,a];this.transformMatrix=r.Util.transform(this.transformMatrix,o);this.tgrp=null}getSVG(t,e){this.viewport=e;const n=this._initialize(e);return this.loadDependencies(t).then((()=>{this.transformMatrix=r.IDENTITY_MATRIX;this.executeOpTree(this.convertOpList(t));return n}))}convertOpList(t){const e=this._operatorIdMapping,n=t.argsArray,i=t.fnArray,r=[];for(let t=0,s=i.length;t0&&(this.current.lineWidth=t)}setLineCap(t){this.current.lineCap=l[t]}setLineJoin(t){this.current.lineJoin=c[t]}setMiterLimit(t){this.current.miterLimit=t}setStrokeAlpha(t){this.current.strokeAlpha=t}setStrokeRGBColor(t,e,n){this.current.strokeColor=r.Util.makeHexColor(t,e,n)}setFillAlpha(t){this.current.fillAlpha=t}setFillRGBColor(t,e,n){this.current.fillColor=r.Util.makeHexColor(t,e,n);this.current.tspan=this.svgFactory.createElement("svg:tspan");this.current.xcoords=[];this.current.ycoords=[]}setStrokeColorN(t){this.current.strokeColor=this._makeColorN_Pattern(t)}setFillColorN(t){this.current.fillColor=this._makeColorN_Pattern(t)}shadingFill(t){const{width:e,height:n}=this.viewport,i=r.Util.inverseTransform(this.transformMatrix),[s,a,o,l]=r.Util.getAxialAlignedBoundingBox([0,0,e,n],i),c=this.svgFactory.createElement("svg:rect");c.setAttributeNS(null,"x",s);c.setAttributeNS(null,"y",a);c.setAttributeNS(null,"width",o-s);c.setAttributeNS(null,"height",l-a);c.setAttributeNS(null,"fill",this._makeShadingPattern(t));this.current.fillAlpha<1&&c.setAttributeNS(null,"fill-opacity",this.current.fillAlpha);this._ensureTransformGroup().append(c)}_makeColorN_Pattern(t){return"TilingPattern"===t[0]?this._makeTilingPattern(t):this._makeShadingPattern(t)}_makeTilingPattern(t){const e=t[1],n=t[2],i=t[3]||r.IDENTITY_MATRIX,[s,a,o,l]=t[4],c=t[5],h=t[6],d=t[7],u="shading"+p++,[f,g,m,b]=r.Util.normalizeRect([...r.Util.applyTransform([s,a],i),...r.Util.applyTransform([o,l],i)]),[v,y]=r.Util.singularValueDecompose2dScale(i),A=c*v,_=h*y,S=this.svgFactory.createElement("svg:pattern");S.setAttributeNS(null,"id",u);S.setAttributeNS(null,"patternUnits","userSpaceOnUse");S.setAttributeNS(null,"width",A);S.setAttributeNS(null,"height",_);S.setAttributeNS(null,"x",`${f}`);S.setAttributeNS(null,"y",`${g}`);const E=this.svg,x=this.transformMatrix,w=this.current.fillColor,C=this.current.strokeColor,T=this.svgFactory.create(m-f,b-g);this.svg=T;this.transformMatrix=i;if(2===d){const t=r.Util.makeHexColor(...e);this.current.fillColor=t;this.current.strokeColor=t}this.executeOpTree(this.convertOpList(n));this.svg=E;this.transformMatrix=x;this.current.fillColor=w;this.current.strokeColor=C;S.append(T.childNodes[0]);this.defs.append(S);return`url(#${u})`}_makeShadingPattern(t){"string"==typeof t&&(t=this.objs.get(t));switch(t[0]){case"RadialAxial":const e="shading"+p++,n=t[3];let i;switch(t[1]){case"axial":const n=t[4],r=t[5];i=this.svgFactory.createElement("svg:linearGradient");i.setAttributeNS(null,"id",e);i.setAttributeNS(null,"gradientUnits","userSpaceOnUse");i.setAttributeNS(null,"x1",n[0]);i.setAttributeNS(null,"y1",n[1]);i.setAttributeNS(null,"x2",r[0]);i.setAttributeNS(null,"y2",r[1]);break;case"radial":const s=t[4],a=t[5],o=t[6],l=t[7];i=this.svgFactory.createElement("svg:radialGradient");i.setAttributeNS(null,"id",e);i.setAttributeNS(null,"gradientUnits","userSpaceOnUse");i.setAttributeNS(null,"cx",a[0]);i.setAttributeNS(null,"cy",a[1]);i.setAttributeNS(null,"r",l);i.setAttributeNS(null,"fx",s[0]);i.setAttributeNS(null,"fy",s[1]);i.setAttributeNS(null,"fr",o);break;default:throw new Error(`Unknown RadialAxial type: ${t[1]}`)}for(const t of n){const e=this.svgFactory.createElement("svg:stop");e.setAttributeNS(null,"offset",t[0]);e.setAttributeNS(null,"stop-color",t[1]);i.append(e)}this.defs.append(i);return`url(#${e})`;case"Mesh":(0,r.warn)("Unimplemented pattern Mesh");return null;case"Dummy":return"hotpink";default:throw new Error(`Unknown IR type: ${t[0]}`)}}setDash(t,e){this.current.dashArray=t;this.current.dashPhase=e}constructPath(t,e){const n=this.current;let i=n.x,s=n.y,a=[],o=0;for(const n of t)switch(0|n){case r.OPS.rectangle:i=e[o++];s=e[o++];const t=i+e[o++],n=s+e[o++];a.push("M",pf(i),pf(s),"L",pf(t),pf(s),"L",pf(t),pf(n),"L",pf(i),pf(n),"Z");break;case r.OPS.moveTo:i=e[o++];s=e[o++];a.push("M",pf(i),pf(s));break;case r.OPS.lineTo:i=e[o++];s=e[o++];a.push("L",pf(i),pf(s));break;case r.OPS.curveTo:i=e[o+4];s=e[o+5];a.push("C",pf(e[o]),pf(e[o+1]),pf(e[o+2]),pf(e[o+3]),pf(i),pf(s));o+=6;break;case r.OPS.curveTo2:a.push("C",pf(i),pf(s),pf(e[o]),pf(e[o+1]),pf(e[o+2]),pf(e[o+3]));i=e[o+2];s=e[o+3];o+=4;break;case r.OPS.curveTo3:i=e[o+2];s=e[o+3];a.push("C",pf(e[o]),pf(e[o+1]),pf(i),pf(s),pf(i),pf(s));o+=4;break;case r.OPS.closePath:a.push("Z")}a=a.join(" ");if(n.path&&t.length>0&&t[0]!==r.OPS.rectangle&&t[0]!==r.OPS.moveTo)a=n.path.getAttributeNS(null,"d")+a;else{n.path=this.svgFactory.createElement("svg:path");this._ensureTransformGroup().append(n.path)}n.path.setAttributeNS(null,"d",a);n.path.setAttributeNS(null,"fill","none");n.element=n.path;n.setCurrentPoint(i,s)}endPath(){const t=this.current;t.path=null;if(!this.pendingClip)return;if(!t.element){this.pendingClip=null;return}const e="clippath"+d++,n=this.svgFactory.createElement("svg:clipPath");n.setAttributeNS(null,"id",e);n.setAttributeNS(null,"transform",pm(this.transformMatrix));const i=t.element.cloneNode(!0);"evenodd"===this.pendingClip?i.setAttributeNS(null,"clip-rule","evenodd"):i.setAttributeNS(null,"clip-rule","nonzero");this.pendingClip=null;n.append(i);this.defs.append(n);if(t.activeClipUrl){t.clipGroup=null;for(const t of this.extraStack)t.clipGroup=null;n.setAttributeNS(null,"clip-path",t.activeClipUrl)}t.activeClipUrl=`url(#${e})`;this.tgrp=null}clip(t){this.pendingClip=t}closePath(){const t=this.current;if(t.path){const e=`${t.path.getAttributeNS(null,"d")}Z`;t.path.setAttributeNS(null,"d",e)}}setLeading(t){this.current.leading=-t}setTextRise(t){this.current.textRise=t}setTextRenderingMode(t){this.current.textRenderingMode=t}setHScale(t){this.current.textHScale=t/100}setRenderingIntent(t){}setFlatness(t){}setGState(t){for(const[e,n]of t)switch(e){case"LW":this.setLineWidth(n);break;case"LC":this.setLineCap(n);break;case"LJ":this.setLineJoin(n);break;case"ML":this.setMiterLimit(n);break;case"D":this.setDash(n[0],n[1]);break;case"RI":this.setRenderingIntent(n);break;case"FL":this.setFlatness(n);break;case"Font":this.setFont(n);break;case"CA":this.setStrokeAlpha(n);break;case"ca":this.setFillAlpha(n);break;default:(0,r.warn)(`Unimplemented graphic state operator ${e}`)}}fill(){const t=this.current;if(t.element){t.element.setAttributeNS(null,"fill",t.fillColor);t.element.setAttributeNS(null,"fill-opacity",t.fillAlpha);this.endPath()}}stroke(){const t=this.current;if(t.element){this._setStrokeAttributes(t.element);t.element.setAttributeNS(null,"fill","none");this.endPath()}}_setStrokeAttributes(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.current;let i=n.dashArray;1!==e&&i.length>0&&(i=i.map((function(t){return e*t})));t.setAttributeNS(null,"stroke",n.strokeColor);t.setAttributeNS(null,"stroke-opacity",n.strokeAlpha);t.setAttributeNS(null,"stroke-miterlimit",pf(n.miterLimit));t.setAttributeNS(null,"stroke-linecap",n.lineCap);t.setAttributeNS(null,"stroke-linejoin",n.lineJoin);t.setAttributeNS(null,"stroke-width",pf(e*n.lineWidth)+"px");t.setAttributeNS(null,"stroke-dasharray",i.map(pf).join(" "));t.setAttributeNS(null,"stroke-dashoffset",pf(e*n.dashPhase)+"px")}eoFill(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd");this.fill()}fillStroke(){this.stroke();this.fill()}eoFillStroke(){this.current.element?.setAttributeNS(null,"fill-rule","evenodd");this.fillStroke()}closeStroke(){this.closePath();this.stroke()}closeFillStroke(){this.closePath();this.fillStroke()}closeEOFillStroke(){this.closePath();this.eoFillStroke()}paintSolidColorImageMask(){const t=this.svgFactory.createElement("svg:rect");t.setAttributeNS(null,"x","0");t.setAttributeNS(null,"y","0");t.setAttributeNS(null,"width","1px");t.setAttributeNS(null,"height","1px");t.setAttributeNS(null,"fill",this.current.fillColor);this._ensureTransformGroup().append(t)}paintImageXObject(t){const e=this.getObject(t);e?this.paintInlineImageXObject(e):(0,r.warn)(`Dependent image with object ID ${t} is not ready yet`)}paintInlineImageXObject(t,e){const n=t.width,i=t.height,r=h(t,this.forceDataSchema,!!e),s=this.svgFactory.createElement("svg:rect");s.setAttributeNS(null,"x","0");s.setAttributeNS(null,"y","0");s.setAttributeNS(null,"width",pf(n));s.setAttributeNS(null,"height",pf(i));this.current.element=s;this.clip("nonzero");const a=this.svgFactory.createElement("svg:image");a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r);a.setAttributeNS(null,"x","0");a.setAttributeNS(null,"y",pf(-i));a.setAttributeNS(null,"width",pf(n)+"px");a.setAttributeNS(null,"height",pf(i)+"px");a.setAttributeNS(null,"transform",`scale(${pf(1/n)} ${pf(-1/i)})`);e?e.append(a):this._ensureTransformGroup().append(a)}paintImageMaskXObject(t){const e=this.getObject(t.data,t);if(e.bitmap){(0,r.warn)("paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the `isOffscreenCanvasSupported` API parameter is disabled.");return}const n=this.current,i=e.width,s=e.height,a=n.fillColor;n.maskId="mask"+u++;const o=this.svgFactory.createElement("svg:mask");o.setAttributeNS(null,"id",n.maskId);const l=this.svgFactory.createElement("svg:rect");l.setAttributeNS(null,"x","0");l.setAttributeNS(null,"y","0");l.setAttributeNS(null,"width",pf(i));l.setAttributeNS(null,"height",pf(s));l.setAttributeNS(null,"fill",a);l.setAttributeNS(null,"mask",`url(#${n.maskId})`);this.defs.append(o);this._ensureTransformGroup().append(l);this.paintInlineImageXObject(e,o)}paintFormXObjectBegin(t,e){Array.isArray(t)&&6===t.length&&this.transform(t[0],t[1],t[2],t[3],t[4],t[5]);if(e){const t=e[2]-e[0],n=e[3]-e[1],i=this.svgFactory.createElement("svg:rect");i.setAttributeNS(null,"x",e[0]);i.setAttributeNS(null,"y",e[1]);i.setAttributeNS(null,"width",pf(t));i.setAttributeNS(null,"height",pf(n));this.current.element=i;this.clip("nonzero");this.endPath()}}paintFormXObjectEnd(){}_initialize(t){const e=this.svgFactory.create(t.width,t.height),n=this.svgFactory.createElement("svg:defs");e.append(n);this.defs=n;const i=this.svgFactory.createElement("svg:g");i.setAttributeNS(null,"transform",pm(t.transform));e.append(i);this.svg=i;return e}_ensureClipGroup(){if(!this.current.clipGroup){const t=this.svgFactory.createElement("svg:g");t.setAttributeNS(null,"clip-path",this.current.activeClipUrl);this.svg.append(t);this.current.clipGroup=t}return this.current.clipGroup}_ensureTransformGroup(){if(!this.tgrp){this.tgrp=this.svgFactory.createElement("svg:g");this.tgrp.setAttributeNS(null,"transform",pm(this.transformMatrix));this.current.activeClipUrl?this._ensureClipGroup().append(this.tgrp):this.svg.append(this.tgrp)}return this.tgrp}}},(t,e,n)=>{"use strict";var i=n(3),r=n(187),s=n(192);i({target:"Array",proto:!0},{group:function group(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}});s("group")},(t,e,n)=>{var i=n(99),r=n(14),s=n(13),a=n(40),o=n(18),l=n(64),c=n(188),h=n(108),d=Array,u=r([].push);t.exports=function(t,e,n,r){for(var p,f,g,m=a(t),b=s(m),v=i(e,n),y=c(null),A=l(b),_=0;A>_;_++){g=b[_];(f=o(v(g,_,m)))in y?u(y[f],g):y[f]=[g]}if(r&&(p=r(m))!==d)for(f in y)y[f]=h(p,y[f]);return y}},(t,e,n)=>{var i,r=n(47),s=n(189),a=n(66),o=n(55),l=n(191),c=n(43),h=n(54),d="prototype",u="script",p=h("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(t){return"<"+u+">"+t+""},NullProtoObjectViaActiveX=function(t){t.write(scriptTag(""));t.close();var e=t.parentWindow.Object;t=null;return e},NullProtoObject=function(){try{i=new ActiveXObject("htmlfile")}catch(t){}NullProtoObject="undefined"!=typeof document?document.domain&&i?NullProtoObjectViaActiveX(i):function(){var t,e=c("iframe"),n="java"+u+":";e.style.display="none";l.appendChild(e);e.src=String(n);(t=e.contentWindow.document).open();t.write(scriptTag("document.F=Object"));t.close();return t.F}():NullProtoObjectViaActiveX(i);for(var t=a.length;t--;)delete NullProtoObject[d][a[t]];return NullProtoObject()};o[p]=!0;t.exports=Object.create||function create(t,e){var n;if(null!==t){EmptyConstructor[d]=r(t);n=new EmptyConstructor;EmptyConstructor[d]=null;n[p]=t}else n=NullProtoObject();return void 0===e?n:s.f(n,e)}},(t,e,n)=>{var i=n(6),r=n(46),s=n(45),a=n(47),o=n(12),l=n(190);e.f=i&&!r?Object.defineProperties:function defineProperties(t,e){a(t);for(var n,i=o(e),r=l(e),c=r.length,h=0;c>h;)s.f(t,n=r[h++],i[n]);return t}},(t,e,n)=>{var i=n(59),r=n(66);t.exports=Object.keys||function keys(t){return i(t,r)}},(t,e,n)=>{var i=n(24);t.exports=i("document","documentElement")},(t,e,n)=>{var i=n(34),r=n(188),s=n(45).f,a=i("unscopables"),o=Array.prototype;null==o[a]&&s(o,a,{configurable:!0,value:r(null)});t.exports=function(t){o[a][t]=!0}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.XfaText=void 0;n(89);class XfaText{static textContent(t){const e=[],n={items:e,styles:Object.create(null)};!function walk(t){if(!t)return;let n=null;const i=t.name;if("#text"===i)n=t.value;else{if(!XfaText.shouldBuildText(i))return;t?.attributes?.textContent?n=t.attributes.textContent:t.value&&(n=t.value)}null!==n&&e.push({str:n});if(t.children)for(const e of t.children)walk(e)}(t);return n}static shouldBuildText(t){return!("textarea"===t||"input"===t||"option"===t||"select"===t)}}e.XfaText=XfaText},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.TextLayerRenderTask=void 0;e.renderTextLayer=function renderTextLayer(t){if(!t.textContentSource&&(t.textContent||t.textContentStream)){(0,r.deprecated)("The TextLayerRender `textContent`/`textContentStream` parameters will be removed in the future, please use `textContentSource` instead.");t.textContentSource=t.textContent||t.textContentStream}const{container:e,viewport:n}=t,i=getComputedStyle(e),s=i.getPropertyValue("visibility"),a=parseFloat(i.getPropertyValue("--scale-factor"));"visible"===s&&(!a||Math.abs(a-n.scale)>1e-5)&&console.error("The `--scale-factor` CSS-variable must be set, to the same value as `viewport.scale`, either on the `container`-element itself or higher up in the DOM.");const o=new TextLayerRenderTask(t);o._render();return o};e.updateTextLayer=function updateTextLayer(t){let{container:e,viewport:n,textDivs:i,textDivProperties:s,isOffscreenCanvasSupported:a,mustRotate:o=!0,mustRescale:l=!0}=t;o&&(0,r.setLayerDimensions)(e,{rotation:n.rotation});if(l){const t=getCtx(0,a),e={prevFontSize:null,prevFontFamily:null,div:null,scale:n.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:t};for(const t of i){e.properties=s.get(t);e.div=t;layout(e)}}};n(89);n(2);var i=n(1),r=n(167);const s=30,a=.8,o=new Map;function getCtx(t,e){let n;if(e&&i.FeatureTest.isOffscreenCanvasSupported)n=new OffscreenCanvas(t,t).getContext("2d",{alpha:!1});else{const e=document.createElement("canvas");e.width=e.height=t;n=e.getContext("2d",{alpha:!1})}return n}function appendText(t,e,n){const r=document.createElement("span"),l={angle:0,canvasWidth:0,hasText:""!==e.str,hasEOL:e.hasEOL,fontSize:0};t._textDivs.push(r);const c=i.Util.transform(t._transform,e.transform);let h=Math.atan2(c[1],c[0]);const d=n[e.fontName];d.vertical&&(h+=Math.PI/2);const u=Math.hypot(c[2],c[3]),p=u*function getAscent(t,e){const n=o.get(t);if(n)return n;const i=getCtx(s,e);i.font=`${s}px ${t}`;const r=i.measureText("");let l=r.fontBoundingBoxAscent,c=Math.abs(r.fontBoundingBoxDescent);if(l){const e=l/(l+c);o.set(t,e);i.canvas.width=i.canvas.height=0;return e}i.strokeStyle="red";i.clearRect(0,0,s,s);i.strokeText("g",0,0);let h=i.getImageData(0,0,s,s).data;c=0;for(let t=h.length-1-3;t>=0;t-=4)if(h[t]>0){c=Math.ceil(t/4/s);break}i.clearRect(0,0,s,s);i.strokeText("A",0,s);h=i.getImageData(0,0,s,s).data;l=0;for(let t=0,e=h.length;t0){l=s-Math.floor(t/4/s);break}i.canvas.width=i.canvas.height=0;if(l){const e=l/(l+c);o.set(t,e);return e}o.set(t,a);return a}(d.fontFamily,t._isOffscreenCanvasSupported);let f,g;if(0===h){f=c[4];g=c[5]-p}else{f=c[4]+p*Math.sin(h);g=c[5]-p*Math.cos(h)}const m="calc(var(--scale-factor)*",b=r.style;if(t._container===t._rootContainer){b.left=`${(100*f/t._pageWidth).toFixed(2)}%`;b.top=`${(100*g/t._pageHeight).toFixed(2)}%`}else{b.left=`${m}${f.toFixed(2)}px)`;b.top=`${m}${g.toFixed(2)}px)`}b.fontSize=`${m}${u.toFixed(2)}px)`;b.fontFamily=d.fontFamily;l.fontSize=u;r.setAttribute("role","presentation");r.textContent=e.str;r.dir=e.dir;t._fontInspectorEnabled&&(r.dataset.fontName=e.fontName);0!==h&&(l.angle=h*(180/Math.PI));let v=!1;if(e.str.length>1)v=!0;else if(" "!==e.str&&e.transform[0]!==e.transform[3]){const t=Math.abs(e.transform[0]),n=Math.abs(e.transform[3]);t!==n&&Math.max(t,n)/Math.min(t,n)>1.5&&(v=!0)}v&&(l.canvasWidth=d.vertical?e.height:e.width);t._textDivProperties.set(r,l);t._isReadableStream&&t._layoutText(r)}function layout(t){const{div:e,scale:n,properties:i,ctx:r,prevFontSize:s,prevFontFamily:a}=t,{style:o}=e;let l="";if(0!==i.canvasWidth&&i.hasText){const{fontFamily:c}=o,{canvasWidth:h,fontSize:d}=i;if(s!==d||a!==c){r.font=`${d*n}px ${c}`;t.prevFontSize=d;t.prevFontFamily=c}const{width:u}=r.measureText(e.textContent);u>0&&(l=`scaleX(${h*n/u})`)}0!==i.angle&&(l=`rotate(${i.angle}deg) ${l}`);l.length>0&&(o.transform=l)}class TextLayerRenderTask{constructor(t){let{textContentSource:e,container:n,viewport:s,textDivs:a,textDivProperties:o,textContentItemsStr:l,isOffscreenCanvasSupported:c}=t;this._textContentSource=e;this._isReadableStream=e instanceof ReadableStream;this._container=this._rootContainer=n;this._textDivs=a||[];this._textContentItemsStr=l||[];this._isOffscreenCanvasSupported=c;this._fontInspectorEnabled=!!globalThis.FontInspector?.enabled;this._reader=null;this._textDivProperties=o||new WeakMap;this._canceled=!1;this._capability=new i.PromiseCapability;this._layoutTextParams={prevFontSize:null,prevFontFamily:null,div:null,scale:s.scale*(globalThis.devicePixelRatio||1),properties:null,ctx:getCtx(0,c)};const{pageWidth:h,pageHeight:d,pageX:u,pageY:p}=s.rawDims;this._transform=[1,0,0,-1,-u,p+d];this._pageWidth=h;this._pageHeight=d;(0,r.setLayerDimensions)(n,s);this._capability.promise.finally((()=>{this._layoutTextParams=null})).catch((()=>{}))}get promise(){return this._capability.promise}cancel(){this._canceled=!0;if(this._reader){this._reader.cancel(new i.AbortException("TextLayer task cancelled.")).catch((()=>{}));this._reader=null}this._capability.reject(new i.AbortException("TextLayer task cancelled."))}_processItems(t,e){for(const n of t)if(void 0!==n.str){this._textContentItemsStr.push(n.str);appendText(this,n,e)}else if("beginMarkedContentProps"===n.type||"beginMarkedContent"===n.type){const t=this._container;this._container=document.createElement("span");this._container.classList.add("markedContent");null!==n.id&&this._container.setAttribute("id",`${n.id}`);t.append(this._container)}else"endMarkedContent"===n.type&&(this._container=this._container.parentNode)}_layoutText(t){const e=this._layoutTextParams.properties=this._textDivProperties.get(t);this._layoutTextParams.div=t;layout(this._layoutTextParams);e.hasText&&this._container.append(t);if(e.hasEOL){const t=document.createElement("br");t.setAttribute("role","presentation");this._container.append(t)}}_render(){const t=new i.PromiseCapability;let e=Object.create(null);if(this._isReadableStream){const pump=()=>{this._reader.read().then((n=>{let{value:i,done:r}=n;if(r)t.resolve();else{Object.assign(e,i.styles);this._processItems(i.items,e);pump()}}),t.reject)};this._reader=this._textContentSource.getReader();pump()}else{if(!this._textContentSource)throw new Error('No "textContentSource" parameter specified.');{const{items:e,styles:n}=this._textContentSource;this._processItems(e,n);t.resolve()}}t.promise.then((()=>{e=null;!function render(t){if(t._canceled)return;const e=t._textDivs,n=t._capability;if(e.length>1e5)n.resolve();else{if(!t._isReadableStream)for(const n of e)t._layoutText(n);n.resolve()}}(this)}),this._capability.reject)}}e.TextLayerRenderTask=TextLayerRenderTask},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.AnnotationEditorLayer=void 0;n(125);n(135);n(137);n(140);n(142);n(144);n(146);var i=n(1),r=n(163),s=n(164),a=n(196),o=n(201),l=n(167),c=n(202);class AnnotationEditorLayer{#re;#se=!1;#ae=null;#oe=this.pointerup.bind(this);#le=this.pointerdown.bind(this);#ce=new Map;#he=!1;#de=!1;#ue=!1;#pe;static _initialized=!1;constructor(t){let{uiManager:e,pageIndex:n,div:i,accessibilityManager:r,annotationLayer:s,viewport:l,l10n:h}=t;const d=[a.FreeTextEditor,o.InkEditor,c.StampEditor];if(!AnnotationEditorLayer._initialized){AnnotationEditorLayer._initialized=!0;for(const t of d)t.initialize(h)}e.registerEditorTypes(d);this.#pe=e;this.pageIndex=n;this.div=i;this.#re=r;this.#ae=s;this.viewport=l;this.#pe.addLayer(this)}get isEmpty(){return 0===this.#ce.size}updateToolbar(t){this.#pe.updateToolbar(t)}updateMode(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.#pe.getMode();this.#fe();if(t===i.AnnotationEditorType.INK){this.addInkEditorIfNeeded(!1);this.disableClick()}else this.enableClick();this.#pe.unselectAll();if(t!==i.AnnotationEditorType.NONE){this.div.classList.toggle("freeTextEditing",t===i.AnnotationEditorType.FREETEXT);this.div.classList.toggle("inkEditing",t===i.AnnotationEditorType.INK);this.div.classList.toggle("stampEditing",t===i.AnnotationEditorType.STAMP);this.div.hidden=!1}}addInkEditorIfNeeded(t){if(!t&&this.#pe.getMode()!==i.AnnotationEditorType.INK)return;if(!t)for(const t of this.#ce.values())if(t.isEmpty()){t.setInBackground();return}this.#ge({offsetX:0,offsetY:0}).setInBackground()}setEditingState(t){this.#pe.setEditingState(t)}addCommands(t){this.#pe.addCommands(t)}enable(){this.div.style.pointerEvents="auto";const t=new Set;for(const e of this.#ce.values()){e.enableEditing();e.annotationElementId&&t.add(e.annotationElementId)}if(!this.#ae)return;const e=this.#ae.getEditableAnnotations();for(const n of e){n.hide();if(this.#pe.isDeletedAnnotationElement(n.data.id))continue;if(t.has(n.data.id))continue;const e=this.deserialize(n);if(e){this.addOrRebuild(e);e.enableEditing()}}}disable(){this.#ue=!0;this.div.style.pointerEvents="none";const t=new Set;for(const e of this.#ce.values()){e.disableEditing();if(e.annotationElementId&&null===e.serialize()){this.getEditableAnnotation(e.annotationElementId)?.show();e.remove()}else t.add(e.annotationElementId)}if(this.#ae){const e=this.#ae.getEditableAnnotations();for(const n of e){const{id:e}=n.data;t.has(e)||this.#pe.isDeletedAnnotationElement(e)||n.show()}}this.#fe();this.isEmpty&&(this.div.hidden=!0);this.#ue=!1}getEditableAnnotation(t){return this.#ae?.getEditableAnnotation(t)||null}setActiveEditor(t){this.#pe.getActive()!==t&&this.#pe.setActiveEditor(t)}enableClick(){this.div.addEventListener("pointerdown",this.#le);this.div.addEventListener("pointerup",this.#oe)}disableClick(){this.div.removeEventListener("pointerdown",this.#le);this.div.removeEventListener("pointerup",this.#oe)}attach(t){this.#ce.set(t.id,t);const{annotationElementId:e}=t;e&&this.#pe.isDeletedAnnotationElement(e)&&this.#pe.removeDeletedAnnotationElement(t)}detach(t){this.#ce.delete(t.id);this.#re?.removePointerInTextLayer(t.contentDiv);!this.#ue&&t.annotationElementId&&this.#pe.addDeletedAnnotationElement(t)}remove(t){this.detach(t);this.#pe.removeEditor(t);t.div.style.display="none";setTimeout((()=>{t.div.style.display="";t.div.remove();t.isAttachedToDOM=!1;document.activeElement===document.body&&this.#pe.focusMainContainer()}),0);this.#de||this.addInkEditorIfNeeded(!1)}#me(t){if(t.parent!==this){if(t.annotationElementId){this.#pe.addDeletedAnnotationElement(t.annotationElementId);r.AnnotationEditor.deleteAnnotationElement(t);t.annotationElementId=null}this.attach(t);t.parent?.detach(t);t.setParent(this);if(t.div&&t.isAttachedToDOM){t.div.remove();this.div.append(t.div)}}}add(t){this.#me(t);this.#pe.addEditor(t);this.attach(t);if(!t.isAttachedToDOM){const e=t.render();this.div.append(e);t.isAttachedToDOM=!0}this.moveEditorInDOM(t);t.onceAdded();this.#pe.addToAnnotationStorage(t)}moveEditorInDOM(t){this.#re?.moveElementInDOM(this.div,t.div,t.contentDiv,!0)}addOrRebuild(t){t.needsToBeRebuilt()?t.rebuild():this.add(t)}addUndoableEditor(t){this.addCommands({cmd:()=>{this.addOrRebuild(t)},undo:()=>{t.remove()},mustExec:!1})}getNextId(){return this.#pe.getId()}#be(t){switch(this.#pe.getMode()){case i.AnnotationEditorType.FREETEXT:return new a.FreeTextEditor(t);case i.AnnotationEditorType.INK:return new o.InkEditor(t);case i.AnnotationEditorType.STAMP:return new c.StampEditor(t)}return null}deserialize(t){switch(t.annotationType??t.annotationEditorType){case i.AnnotationEditorType.FREETEXT:return a.FreeTextEditor.deserialize(t,this,this.#pe);case i.AnnotationEditorType.INK:return o.InkEditor.deserialize(t,this,this.#pe);case i.AnnotationEditorType.STAMP:return c.StampEditor.deserialize(t,this,this.#pe)}return null}#ge(t){const e=this.getNextId(),n=this.#be({parent:this,id:e,x:t.offsetX,y:t.offsetY,uiManager:this.#pe});n&&this.add(n);return n}setSelected(t){this.#pe.setSelected(t)}toggleSelected(t){this.#pe.toggleSelected(t)}isSelected(t){return this.#pe.isSelected(t)}unselect(t){this.#pe.unselect(t)}pointerup(t){const{isMac:e}=i.FeatureTest.platform;if(!(0!==t.button||t.ctrlKey&&e)&&t.target===this.div&&this.#he){this.#he=!1;this.#se?this.#ge(t):this.#se=!0}}pointerdown(t){if(this.#he){this.#he=!1;return}const{isMac:e}=i.FeatureTest.platform;if(0!==t.button||t.ctrlKey&&e)return;if(t.target!==this.div)return;this.#he=!0;const n=this.#pe.getActive();this.#se=!n||n.isEmpty()}drop(t){const e=t.dataTransfer.getData("text/plain"),n=this.#pe.getEditor(e);if(!n)return;t.preventDefault();t.dataTransfer.dropEffect="move";this.#me(n);const i=this.div.getBoundingClientRect(),r=t.clientX-i.x,s=t.clientY-i.y;n.translate(r-n.startX,s-n.startY);this.moveEditorInDOM(n);n.div.focus()}dragover(t){t.preventDefault()}destroy(){this.#pe.getActive()?.parent===this&&this.#pe.setActiveEditor(null);for(const t of this.#ce.values()){this.#re?.removePointerInTextLayer(t.contentDiv);t.setParent(null);t.isAttachedToDOM=!1;t.div.remove()}this.div=null;this.#ce.clear();this.#pe.removeLayer(this)}#fe(){this.#de=!0;for(const t of this.#ce.values())t.isEmpty()&&t.remove();this.#de=!1}render(t){let{viewport:e}=t;this.viewport=e;(0,l.setLayerDimensions)(this.div,e);(0,s.bindEvents)(this,this.div,["dragover","drop"]);for(const t of this.#pe.getEditors(this.pageIndex))this.add(t);this.updateMode()}update(t){let{viewport:e}=t;this.#pe.commitOrRemove();this.viewport=e;(0,l.setLayerDimensions)(this.div,{rotation:e.rotation});this.updateMode()}get pageDimensions(){const{pageWidth:t,pageHeight:e}=this.viewport.rawDims;return[t,e]}}e.AnnotationEditorLayer=AnnotationEditorLayer},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.FreeTextEditor=void 0;n(89);var i=n(1),r=n(164),s=n(163),a=n(197);class FreeTextEditor extends s.AnnotationEditor{#ve=this.editorDivBlur.bind(this);#ye=this.editorDivFocus.bind(this);#Ae=this.editorDivInput.bind(this);#_e=this.editorDivKeydown.bind(this);#Se;#Ee="";#xe=`${this.id}-editor`;#we;#Ce=null;static _freeTextDefaultContent="";static _l10nPromise;static _internalPadding=0;static _defaultColor=null;static _defaultFontSize=10;static get _keyboardManager(){const t=FreeTextEditor.prototype,arrowChecker=t=>t.isEmpty(),e=r.AnnotationEditorUIManager.TRANSLATE_SMALL,n=r.AnnotationEditorUIManager.TRANSLATE_BIG;return(0,i.shadow)(this,"_keyboardManager",new r.KeyboardManager([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],t.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],t._translateEmpty,{args:[-e,0],checker:arrowChecker}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-n,0],checker:arrowChecker}],[["ArrowRight","mac+ArrowRight"],t._translateEmpty,{args:[e,0],checker:arrowChecker}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[n,0],checker:arrowChecker}],[["ArrowUp","mac+ArrowUp"],t._translateEmpty,{args:[0,-e],checker:arrowChecker}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-n],checker:arrowChecker}],[["ArrowDown","mac+ArrowDown"],t._translateEmpty,{args:[0,e],checker:arrowChecker}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,n],checker:arrowChecker}]]))}static _type="freetext";constructor(t){super({...t,name:"freeTextEditor"});this.#Se=t.color||FreeTextEditor._defaultColor||s.AnnotationEditor._defaultLineColor;this.#we=t.fontSize||FreeTextEditor._defaultFontSize}static initialize(t){this._l10nPromise=new Map(["free_text2_default_content","editor_free_text2_aria_label"].map((e=>[e,t.get(e)])));const e=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(e.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case i.AnnotationEditorParamsType.FREETEXT_SIZE:FreeTextEditor._defaultFontSize=e;break;case i.AnnotationEditorParamsType.FREETEXT_COLOR:FreeTextEditor._defaultColor=e}}updateParams(t,e){switch(t){case i.AnnotationEditorParamsType.FREETEXT_SIZE:this.#Te(e);break;case i.AnnotationEditorParamsType.FREETEXT_COLOR:this.#Pe(e)}}static get defaultPropertiesToUpdate(){return[[i.AnnotationEditorParamsType.FREETEXT_SIZE,FreeTextEditor._defaultFontSize],[i.AnnotationEditorParamsType.FREETEXT_COLOR,FreeTextEditor._defaultColor||s.AnnotationEditor._defaultLineColor]]}get propertiesToUpdate(){return[[i.AnnotationEditorParamsType.FREETEXT_SIZE,this.#we],[i.AnnotationEditorParamsType.FREETEXT_COLOR,this.#Se]]}#Te(t){const setFontsize=t=>{this.editorDiv.style.fontSize=`calc(${t}px * var(--scale-factor))`;this.translate(0,-(t-this.#we)*this.parentScale);this.#we=t;this.#ke()},e=this.#we;this.addCommands({cmd:()=>{setFontsize(t)},undo:()=>{setFontsize(e)},mustExec:!0,type:i.AnnotationEditorParamsType.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})}#Pe(t){const e=this.#Se;this.addCommands({cmd:()=>{this.#Se=this.editorDiv.style.color=t},undo:()=>{this.#Se=this.editorDiv.style.color=e},mustExec:!0,type:i.AnnotationEditorParamsType.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-FreeTextEditor._internalPadding*t,-(FreeTextEditor._internalPadding+this.#we)*t]}rebuild(){super.rebuild();null!==this.div&&(this.isAttachedToDOM||this.parent.add(this))}enableEditMode(){if(!this.isInEditMode()){this.parent.setEditingState(!1);this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);super.enableEditMode();this.overlayDiv.classList.remove("enabled");this.editorDiv.contentEditable=!0;this.div.draggable=!1;this.div.removeAttribute("aria-activedescendant");this.editorDiv.addEventListener("keydown",this.#_e);this.editorDiv.addEventListener("focus",this.#ye);this.editorDiv.addEventListener("blur",this.#ve);this.editorDiv.addEventListener("input",this.#Ae)}}disableEditMode(){if(this.isInEditMode()){this.parent.setEditingState(!0);super.disableEditMode();this.overlayDiv.classList.add("enabled");this.editorDiv.contentEditable=!1;this.div.setAttribute("aria-activedescendant",this.#xe);this.div.draggable=!0;this.editorDiv.removeEventListener("keydown",this.#_e);this.editorDiv.removeEventListener("focus",this.#ye);this.editorDiv.removeEventListener("blur",this.#ve);this.editorDiv.removeEventListener("input",this.#Ae);this.div.focus({preventScroll:!0});this.isEditing=!1;this.parent.div.classList.add("freeTextEditing")}}focusin(t){super.focusin(t);t.target!==this.editorDiv&&this.editorDiv.focus()}onceAdded(){if(this.width)this.#Me();else{this.enableEditMode();this.editorDiv.focus()}}isEmpty(){return!this.editorDiv||""===this.editorDiv.innerText.trim()}remove(){this.isEditing=!1;if(this.parent){this.parent.setEditingState(!0);this.parent.div.classList.add("freeTextEditing")}super.remove()}#Re(){const t=this.editorDiv.getElementsByTagName("div");if(0===t.length)return this.editorDiv.innerText;const e=[];for(const n of t)e.push(n.innerText.replace(/\r\n?|\n/,""));return e.join("\n")}#ke(){const[t,e]=this.parentDimensions;let n;if(this.isAttachedToDOM)n=this.div.getBoundingClientRect();else{const{currentLayer:t,div:e}=this,i=e.style.display;e.style.display="hidden";t.div.append(this.div);n=e.getBoundingClientRect();e.remove();e.style.display=i}if(this.rotation%180==this.parentRotation%180){this.width=n.width/t;this.height=n.height/e}else{this.width=n.height/t;this.height=n.width/e}this.fixAndSetPosition()}commit(){if(!this.isInEditMode())return;super.commit();this.disableEditMode();const t=this.#Ee,e=this.#Ee=this.#Re().trimEnd();if(t===e)return;const setText=t=>{this.#Ee=t;if(t){this.#Fe();this.rebuild();this.#ke()}else this.remove()};this.addCommands({cmd:()=>{setText(e)},undo:()=>{setText(t)},mustExec:!1});this.#ke()}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode();this.editorDiv.focus()}dblclick(t){this.enterInEditMode()}keydown(t){t.target===this.div&&"Enter"===t.key&&this.enterInEditMode()}editorDivKeydown(t){FreeTextEditor._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freeTextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment");this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox");this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();this.editorDiv=document.createElement("div");this.editorDiv.className="internal";this.editorDiv.setAttribute("id",this.#xe);this.enableEditing();FreeTextEditor._l10nPromise.get("editor_free_text2_aria_label").then((t=>this.editorDiv?.setAttribute("aria-label",t)));FreeTextEditor._l10nPromise.get("free_text2_default_content").then((t=>this.editorDiv?.setAttribute("default-content",t)));this.editorDiv.contentEditable=!0;const{style:n}=this.editorDiv;n.fontSize=`calc(${this.#we}px * var(--scale-factor))`;n.color=this.#Se;this.div.append(this.editorDiv);this.overlayDiv=document.createElement("div");this.overlayDiv.classList.add("overlay","enabled");this.div.append(this.overlayDiv);(0,r.bindEvents)(this,this.div,["dblclick","keydown"]);if(this.width){const[n,i]=this.parentDimensions;if(this.annotationElementId){const{position:r}=this.#Ce;let[s,a]=this.getInitialTranslation();[s,a]=this.pageTranslationToScreen(s,a);const[o,l]=this.pageDimensions,[c,h]=this.pageTranslation;let d,u;switch(this.rotation){case 0:d=t+(r[0]-c)/o;u=e+this.height-(r[1]-h)/l;break;case 90:d=t+(r[0]-c)/o;u=e-(r[1]-h)/l;[s,a]=[a,-s];break;case 180:d=t-this.width+(r[0]-c)/o;u=e-(r[1]-h)/l;[s,a]=[-s,-a];break;case 270:d=t+(r[0]-c-this.height*l)/o;u=e+(r[1]-h-this.width*o)/l;[s,a]=[-a,s]}this.setAt(d*n,u*i,s,a)}else this.setAt(t*n,e*i,this.width*n,this.height*i);this.#Fe();this.div.draggable=!0;this.editorDiv.contentEditable=!1}else{this.div.draggable=!1;this.editorDiv.contentEditable=!0}return this.div}#Fe(){this.editorDiv.replaceChildren();if(this.#Ee)for(const t of this.#Ee.split("\n")){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br"));this.editorDiv.append(e)}}get contentDiv(){return this.editorDiv}static deserialize(t,e,n){let r=null;if(t instanceof a.FreeTextAnnotationElement){const{data:{defaultAppearanceData:{fontSize:e,fontColor:n},rect:s,rotation:a,id:o},textContent:l,textPosition:c,parent:{page:{pageNumber:h}}}=t;if(!l||0===l.length)return null;r=t={annotationType:i.AnnotationEditorType.FREETEXT,color:Array.from(n),fontSize:e,value:l.join("\n"),position:c,pageIndex:h-1,rect:s,rotation:a,id:o,deleted:!1}}const s=super.deserialize(t,e,n);s.#we=t.fontSize;s.#Se=i.Util.makeHexColor(...t.color);s.#Ee=t.value;s.annotationElementId=t.id||null;s.#Ce=r;return s}serialize(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const e=FreeTextEditor._internalPadding*this.parentScale,n=this.getRect(e,e),r=s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.#Se),a={annotationType:i.AnnotationEditorType.FREETEXT,color:r,fontSize:this.#we,value:this.#Ee,pageIndex:this.pageIndex,rect:n,rotation:this.rotation};if(t)return a;if(this.annotationElementId&&!this.#Ie(a))return null;a.id=this.annotationElementId;return a}#Ie(t){const{value:e,fontSize:n,color:i,rect:r,pageIndex:s}=this.#Ce;return t.value!==e||t.fontSize!==n||t.rect.some(((t,e)=>Math.abs(t-r[e])>=1))||t.color.some(((t,e)=>t!==i[e]))||t.pageIndex!==s}#Me(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.annotationElementId)return;this.#ke();if(!t&&(0===this.width||0===this.height)){setTimeout((()=>this.#Me(!0)),0);return}const e=FreeTextEditor._internalPadding*this.parentScale;this.#Ce.rect=this.getRect(e,e)}}e.FreeTextEditor=FreeTextEditor},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StampAnnotationElement=e.InkAnnotationElement=e.FreeTextAnnotationElement=e.AnnotationLayer=void 0;n(89);n(125);n(135);n(137);n(140);n(142);n(144);n(146);var i=n(1),r=n(167),s=n(162),a=n(198),o=n(199),l=n(200);const c=1e3,h=new WeakSet;function getRectDims(t){return{width:t[2]-t[0],height:t[3]-t[1]}}class AnnotationElementFactory{static create(t){switch(t.data.annotationType){case i.AnnotationType.LINK:return new LinkAnnotationElement(t);case i.AnnotationType.TEXT:return new TextAnnotationElement(t);case i.AnnotationType.WIDGET:switch(t.data.fieldType){case"Tx":return new TextWidgetAnnotationElement(t);case"Btn":return t.data.radioButton?new RadioButtonWidgetAnnotationElement(t):t.data.checkBox?new CheckboxWidgetAnnotationElement(t):new PushButtonWidgetAnnotationElement(t);case"Ch":return new ChoiceWidgetAnnotationElement(t);case"Sig":return new SignatureWidgetAnnotationElement(t)}return new WidgetAnnotationElement(t);case i.AnnotationType.POPUP:return new PopupAnnotationElement(t);case i.AnnotationType.FREETEXT:return new FreeTextAnnotationElement(t);case i.AnnotationType.LINE:return new LineAnnotationElement(t);case i.AnnotationType.SQUARE:return new SquareAnnotationElement(t);case i.AnnotationType.CIRCLE:return new CircleAnnotationElement(t);case i.AnnotationType.POLYLINE:return new PolylineAnnotationElement(t);case i.AnnotationType.CARET:return new CaretAnnotationElement(t);case i.AnnotationType.INK:return new InkAnnotationElement(t);case i.AnnotationType.POLYGON:return new PolygonAnnotationElement(t);case i.AnnotationType.HIGHLIGHT:return new HighlightAnnotationElement(t);case i.AnnotationType.UNDERLINE:return new UnderlineAnnotationElement(t);case i.AnnotationType.SQUIGGLY:return new SquigglyAnnotationElement(t);case i.AnnotationType.STRIKEOUT:return new StrikeOutAnnotationElement(t);case i.AnnotationType.STAMP:return new StampAnnotationElement(t);case i.AnnotationType.FILEATTACHMENT:return new FileAttachmentAnnotationElement(t);default:return new AnnotationElement(t)}}}class AnnotationElement{#De=!1;constructor(t){let{isRenderable:e=!1,ignoreBorder:n=!1,createQuadrilaterals:i=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.isRenderable=e;this.data=t.data;this.layer=t.layer;this.linkService=t.linkService;this.downloadManager=t.downloadManager;this.imageResourcesPath=t.imageResourcesPath;this.renderForms=t.renderForms;this.svgFactory=t.svgFactory;this.annotationStorage=t.annotationStorage;this.enableScripting=t.enableScripting;this.hasJSActions=t.hasJSActions;this._fieldObjects=t.fieldObjects;this.parent=t.parent;e&&(this.container=this._createContainer(n));i&&this._createQuadrilaterals()}_createContainer(t){const{data:e,parent:{page:n,viewport:r}}=this,s=document.createElement("section");s.setAttribute("data-annotation-id",e.id);s.style.zIndex=this.parent.zIndex++;this.data.popupRef&&s.setAttribute("aria-haspopup","dialog");e.noRotate&&s.classList.add("norotate");const{pageWidth:a,pageHeight:o,pageX:l,pageY:c}=r.rawDims;if(!e.rect||this instanceof PopupAnnotationElement){const{rotation:t}=e;e.hasOwnCanvas||0===t||this.setRotation(t,s);return s}const{width:h,height:d}=getRectDims(e.rect),u=i.Util.normalizeRect([e.rect[0],n.view[3]-e.rect[1]+n.view[1],e.rect[2],n.view[3]-e.rect[3]+n.view[1]]);if(!t&&e.borderStyle.width>0){s.style.borderWidth=`${e.borderStyle.width}px`;const t=e.borderStyle.horizontalCornerRadius,n=e.borderStyle.verticalCornerRadius;if(t>0||n>0){const e=`calc(${t}px * var(--scale-factor)) / calc(${n}px * var(--scale-factor))`;s.style.borderRadius=e}else if(this instanceof RadioButtonWidgetAnnotationElement){const t=`calc(${h}px * var(--scale-factor)) / calc(${d}px * var(--scale-factor))`;s.style.borderRadius=t}switch(e.borderStyle.style){case i.AnnotationBorderStyleType.SOLID:s.style.borderStyle="solid";break;case i.AnnotationBorderStyleType.DASHED:s.style.borderStyle="dashed";break;case i.AnnotationBorderStyleType.BEVELED:(0,i.warn)("Unimplemented border style: beveled");break;case i.AnnotationBorderStyleType.INSET:(0,i.warn)("Unimplemented border style: inset");break;case i.AnnotationBorderStyleType.UNDERLINE:s.style.borderBottomStyle="solid"}const r=e.borderColor||null;if(r){this.#De=!0;s.style.borderColor=i.Util.makeHexColor(0|r[0],0|r[1],0|r[2])}else s.style.borderWidth=0}s.style.left=100*(u[0]-l)/a+"%";s.style.top=100*(u[1]-c)/o+"%";const{rotation:p}=e;if(e.hasOwnCanvas||0===p){s.style.width=100*h/a+"%";s.style.height=100*d/o+"%"}else this.setRotation(p,s);return s}setRotation(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.container;if(!this.data.rect)return;const{pageWidth:n,pageHeight:i}=this.parent.viewport.rawDims,{width:r,height:s}=getRectDims(this.data.rect);let a,o;if(t%180==0){a=100*r/n;o=100*s/i}else{a=100*s/n;o=100*r/i}e.style.width=`${a}%`;e.style.height=`${o}%`;e.setAttribute("data-main-rotation",(360-t)%360)}get _commonActions(){const setColor=(t,e,n)=>{const i=n.detail[t];n.target.style[e]=a.ColorConverters[`${i[0]}_HTML`](i.slice(1))};return(0,i.shadow)(this,"_commonActions",{display:t=>{const e=t.detail.display%2==1;this.container.style.visibility=e?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:e,print:0===t.detail.display||3===t.detail.display})},print:t=>{this.annotationStorage.setValue(this.data.id,{print:t.detail.print})},hidden:t=>{this.container.style.visibility=t.detail.hidden?"hidden":"visible";this.annotationStorage.setValue(this.data.id,{hidden:t.detail.hidden})},focus:t=>{setTimeout((()=>t.target.focus({preventScroll:!1})),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.detail.readonly?t.target.setAttribute("readonly",""):t.target.removeAttribute("readonly")},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{setColor("bgColor","backgroundColor",t)},fillColor:t=>{setColor("fillColor","backgroundColor",t)},fgColor:t=>{setColor("fgColor","color",t)},textColor:t=>{setColor("textColor","color",t)},borderColor:t=>{setColor("borderColor","borderColor",t)},strokeColor:t=>{setColor("strokeColor","borderColor",t)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e);this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(t,e){const n=this._commonActions;for(const i of Object.keys(e.detail)){const r=t[i]||n[i];r?.(e)}}_setDefaultPropertiesFromJS(t){if(!this.enableScripting)return;const e=this.annotationStorage.getRawValue(this.data.id);if(!e)return;const n=this._commonActions;for(const[i,r]of Object.entries(e)){const s=n[i];if(s){s({detail:{[i]:r},target:t});delete e[i]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:t}=this.data;if(!t)return;const[e,n,i,r]=this.data.rect;if(1===t.length){const[,{x:s,y:a},{x:o,y:l}]=t[0];if(i===s&&r===a&&e===o&&n===l)return}const{style:s}=this.container;let a;if(this.#De){const{borderColor:t,borderWidth:e}=s;s.borderWidth=0;a=["url('data:image/svg+xml;utf8,",'',``];this.container.classList.add("hasBorder")}const o=i-e,l=r-n,{svgFactory:c}=this,h=c.createElement("svg");h.classList.add("quadrilateralsContainer");h.setAttribute("width",0);h.setAttribute("height",0);const d=c.createElement("defs");h.append(d);const u=c.createElement("clipPath"),p=`clippath_${this.data.id}`;u.setAttribute("id",p);u.setAttribute("clipPathUnits","objectBoundingBox");d.append(u);for(const[,{x:n,y:i},{x:s,y:h}]of t){const t=c.createElement("rect"),d=(s-e)/o,p=(r-i)/l,f=(n-s)/o,g=(i-h)/l;t.setAttribute("x",d);t.setAttribute("y",p);t.setAttribute("width",f);t.setAttribute("height",g);u.append(t);a?.push(``)}if(this.#De){a.push("')");s.backgroundImage=a.join("")}this.container.append(h);this.container.style.clipPath=`url(#${p})`}_createPopup(){const{container:t,data:e}=this;t.setAttribute("aria-haspopup","dialog");const n=new PopupAnnotationElement({data:{color:e.color,titleObj:e.titleObj,modificationDate:e.modificationDate,contentsObj:e.contentsObj,richText:e.richText,parentRect:e.rect,borderStyle:0,id:`popup_${e.id}`,rotation:e.rotation},parent:this.parent,elements:[this]});this.parent.div.append(n.render())}render(){(0,i.unreachable)("Abstract method `AnnotationElement.render` called")}_getElementsByName(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[];if(this._fieldObjects){const r=this._fieldObjects[t];if(r)for(const{page:t,id:s,exportValues:a}of r){if(-1===t)continue;if(s===e)continue;const r="string"==typeof a?a:null,o=document.querySelector(`[data-element-id="${s}"]`);!o||h.has(o)?n.push({id:s,exportValue:r,domElement:o}):(0,i.warn)(`_getElementsByName - element not allowed: ${s}`)}return n}for(const i of document.getElementsByName(t)){const{exportValue:t}=i,r=i.getAttribute("data-element-id");r!==e&&(h.has(i)&&n.push({id:r,exportValue:t,domElement:i}))}return n}show(){this.container&&(this.container.hidden=!1);this.popup?.maybeShow()}hide(){this.container&&(this.container.hidden=!0);this.popup?.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const t=this.getElementsToTriggerPopup();if(Array.isArray(t))for(const e of t)e.classList.add("highlightArea");else t.classList.add("highlightArea")}_editOnDoubleClick(){const{annotationEditorType:t,data:{id:e}}=this;this.container.addEventListener("dblclick",(()=>{this.linkService.eventBus?.dispatch("switchannotationeditormode",{source:this,mode:t,editId:e})}))}}class LinkAnnotationElement extends AnnotationElement{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;super(t,{isRenderable:!0,ignoreBorder:!!e?.ignoreBorder,createQuadrilaterals:!0});this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,n=document.createElement("a");n.setAttribute("data-element-id",t.id);let i=!1;if(t.url){e.addLinkAttributes(n,t.url,t.newWindow);i=!0}else if(t.action){this._bindNamedAction(n,t.action);i=!0}else if(t.attachment){this._bindAttachment(n,t.attachment);i=!0}else if(t.setOCGState){this.#Oe(n,t.setOCGState);i=!0}else if(t.dest){this._bindLink(n,t.dest);i=!0}else{if(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions){this._bindJSAction(n,t);i=!0}if(t.resetForm){this._bindResetFormAction(n,t.resetForm);i=!0}else if(this.isTooltipOnly&&!i){this._bindLink(n,"");i=!0}}this.container.classList.add("linkAnnotation");i&&this.container.append(n);return this.container}#Le(){this.container.setAttribute("data-internal-link","")}_bindLink(t,e){t.href=this.linkService.getDestinationHash(e);t.onclick=()=>{e&&this.linkService.goToDestination(e);return!1};(e||""===e)&&this.#Le()}_bindNamedAction(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeNamedAction(e);return!1};this.#Le()}_bindAttachment(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.downloadManager?.openOrDownloadData(this.container,e.content,e.filename);return!1};this.#Le()}#Oe(t,e){t.href=this.linkService.getAnchorUrl("");t.onclick=()=>{this.linkService.executeSetOCGState(e);return!1};this.#Le()}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const n=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const i of Object.keys(e.actions)){const r=n.get(i);r&&(t[r]=()=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:i}});return!1})}t.onclick||(t.onclick=()=>!1);this.#Le()}_bindResetFormAction(t,e){const n=t.onclick;n||(t.href=this.linkService.getAnchorUrl(""));this.#Le();if(this._fieldObjects)t.onclick=()=>{n?.();const{fields:t,refs:r,include:s}=e,a=[];if(0!==t.length||0!==r.length){const e=new Set(r);for(const n of t){const t=this._fieldObjects[n]||[];for(const{id:n}of t)e.add(n)}for(const t of Object.values(this._fieldObjects))for(const n of t)e.has(n.id)===s&&a.push(n)}else for(const t of Object.values(this._fieldObjects))a.push(...t);const o=this.annotationStorage,l=[];for(const t of a){const{id:e}=t;l.push(e);switch(t.type){case"text":{const n=t.defaultValue||"";o.setValue(e,{value:n});break}case"checkbox":case"radiobutton":{const n=t.defaultValue===t.exportValues;o.setValue(e,{value:n});break}case"combobox":case"listbox":{const n=t.defaultValue||"";o.setValue(e,{value:n});break}default:continue}const n=document.querySelector(`[data-element-id="${e}"]`);n&&(h.has(n)?n.dispatchEvent(new Event("resetform")):(0,i.warn)(`_bindResetFormAction - element not allowed: ${e}`))}this.enableScripting&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:l,name:"ResetForm"}});return!1};else{(0,i.warn)('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.');n||(t.onclick=()=>!1)}}}class TextAnnotationElement extends AnnotationElement{constructor(t){super(t,{isRenderable:!!(t.data.popupRef||t.data.titleObj?.str||t.data.contentsObj?.str||t.data.richText?.str)})}render(){this.container.classList.add("textAnnotation");const t=document.createElement("img");t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg";t.alt="[{{type}} Annotation]";t.dataset.l10nId="text_annotation_type";t.dataset.l10nArgs=JSON.stringify({type:this.data.name});this.data.popupRef||this._createPopup();this.container.append(t);return this.container}}class WidgetAnnotationElement extends AnnotationElement{render(){this.data.alternativeText&&(this.container.title=this.data.alternativeText);return this.container}showElementAndHideCanvas(t){if(this.data.hasOwnCanvas){"CANVAS"===t.previousSibling?.nodeName&&(t.previousSibling.hidden=!0);t.hidden=!1}}_getKeyModifier(t){const{isWin:e,isMac:n}=i.FeatureTest.platform;return e&&t.ctrlKey||n&&t.metaKey}_setEventListener(t,e,n,i){e.includes("mouse")?t.addEventListener(e,(t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:i(t),shift:t.shiftKey,modifier:this._getKeyModifier(t)}})})):t.addEventListener(e,(t=>{this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:n,value:i(t)}})}))}_setEventListeners(t,e,n){for(const[i,r]of e)("Action"===r||this.data.actions?.[r])&&this._setEventListener(t,i,r,n)}_setBackgroundColor(t){const e=this.data.backgroundColor||null;t.style.backgroundColor=null===e?"transparent":i.Util.makeHexColor(e[0],e[1],e[2])}_setTextStyle(t){const e=["left","center","right"],{fontColor:n}=this.data.defaultAppearanceData,r=this.data.defaultAppearanceData.fontSize||9,s=t.style;let a;const roundToOneDecimal=t=>Math.round(10*t)/10;if(this.data.multiLine){const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2),e=t/(Math.round(t/(i.LINE_FACTOR*r))||1);a=Math.min(r,roundToOneDecimal(e/i.LINE_FACTOR))}else{const t=Math.abs(this.data.rect[3]-this.data.rect[1]-2);a=Math.min(r,roundToOneDecimal(t/i.LINE_FACTOR))}s.fontSize=`calc(${a}px * var(--scale-factor))`;s.color=i.Util.makeHexColor(n[0],n[1],n[2]);null!==this.data.textAlignment&&(s.textAlign=e[this.data.textAlignment])}_setRequired(t,e){e?t.setAttribute("required",!0):t.removeAttribute("required");t.setAttribute("aria-required",e)}}class TextWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms||!t.data.hasAppearance&&!!t.data.fieldValue})}setPropertyOnSiblings(t,e,n,i){const r=this.annotationStorage;for(const s of this._getElementsByName(t.name,t.id)){s.domElement&&(s.domElement[e]=n);r.setValue(s.id,{[i]:n})}}render(){const t=this.annotationStorage,e=this.data.id;this.container.classList.add("textWidgetAnnotation");let n=null;if(this.renderForms){const i=t.getValue(e,{value:this.data.fieldValue});let r=i.value||"";const s=t.getValue(e,{charLimit:this.data.maxLen}).charLimit;s&&r.length>s&&(r=r.slice(0,s));let a=i.formattedValue||this.data.textContent?.join("\n")||null;a&&this.data.comb&&(a=a.replaceAll(/\s+/g,""));const o={userValue:r,formattedValue:a,lastCommittedValue:null,commitKey:1};if(this.data.multiLine){n=document.createElement("textarea");n.textContent=a??r;this.data.doNotScroll&&(n.style.overflowY="hidden")}else{n=document.createElement("input");n.type="text";n.setAttribute("value",a??r);this.data.doNotScroll&&(n.style.overflowX="hidden")}this.data.hasOwnCanvas&&(n.hidden=!0);h.add(n);n.setAttribute("data-element-id",e);n.disabled=this.data.readOnly;n.name=this.data.baseFieldName||this.data.fieldName;n.tabIndex=c;this._setRequired(n,this.data.required);s&&(n.maxLength=s);n.addEventListener("input",(i=>{t.setValue(e,{value:i.target.value});this.setPropertyOnSiblings(n,"value",i.target.value,"value");o.formattedValue=null}));n.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue??"";n.value=o.userValue=e;o.formattedValue=null}));let blurListener=t=>{const{formattedValue:e}=o;null!=e&&(t.target.value=e);t.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){n.addEventListener("focus",(t=>{const{target:e}=t;o.userValue&&(e.value=o.userValue);o.lastCommittedValue=e.value;o.commitKey=1}));n.addEventListener("updatefromsandbox",(n=>{this.showElementAndHideCanvas(n.target);const i={value(n){o.userValue=n.detail.value??"";t.setValue(e,{value:o.userValue.toString()});n.target.value=o.userValue},formattedValue(n){const{formattedValue:i}=n.detail;o.formattedValue=i;null!=i&&n.target!==document.activeElement&&(n.target.value=i);t.setValue(e,{formattedValue:i})},selRange(t){t.target.setSelectionRange(...t.detail.selRange)},charLimit:n=>{const{charLimit:i}=n.detail,{target:r}=n;if(0===i){r.removeAttribute("maxLength");return}r.setAttribute("maxLength",i);let s=o.userValue;if(s&&!(s.length<=i)){s=s.slice(0,i);r.value=o.userValue=s;t.setValue(e,{value:s});this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:s,willCommit:!0,commitKey:1,selStart:r.selectionStart,selEnd:r.selectionEnd}})}}};this._dispatchEventFromSandbox(i,n)}));n.addEventListener("keydown",(t=>{o.commitKey=1;let n=-1;"Escape"===t.key?n=0:"Enter"!==t.key||this.data.multiLine?"Tab"===t.key&&(o.commitKey=3):n=2;if(-1===n)return;const{value:i}=t.target;if(o.lastCommittedValue!==i){o.lastCommittedValue=i;o.userValue=i;this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:i,willCommit:!0,commitKey:n,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}})}}));const i=blurListener;blurListener=null;n.addEventListener("blur",(t=>{if(!t.relatedTarget)return;const{value:n}=t.target;o.userValue=n;o.lastCommittedValue!==n&&this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:n,willCommit:!0,commitKey:o.commitKey,selStart:t.target.selectionStart,selEnd:t.target.selectionEnd}});i(t)}));this.data.actions?.Keystroke&&n.addEventListener("beforeinput",(t=>{o.lastCommittedValue=null;const{data:n,target:i}=t,{value:r,selectionStart:s,selectionEnd:a}=i;let l=s,c=a;switch(t.inputType){case"deleteWordBackward":{const t=r.substring(0,s).match(/\w*[^\w]*$/);t&&(l-=t[0].length);break}case"deleteWordForward":{const t=r.substring(s).match(/^[^\w]*\w*/);t&&(c+=t[0].length);break}case"deleteContentBackward":s===a&&(l-=1);break;case"deleteContentForward":s===a&&(c+=1)}t.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:r,change:n||"",willCommit:!1,selStart:l,selEnd:c}})}));this._setEventListeners(n,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.value))}blurListener&&n.addEventListener("blur",blurListener);if(this.data.comb){const t=(this.data.rect[2]-this.data.rect[0])/s;n.classList.add("comb");n.style.letterSpacing=`calc(${t}px * var(--scale-factor) - 1ch)`}}else{n=document.createElement("div");n.textContent=this.data.fieldValue;n.style.verticalAlign="middle";n.style.display="table-cell"}this._setTextStyle(n);this._setBackgroundColor(n);this._setDefaultPropertiesFromJS(n);this.container.append(n);return this.container}}class SignatureWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:!!t.data.hasOwnCanvas})}}class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){const t=this.annotationStorage,e=this.data,n=e.id;let i=t.getValue(n,{value:e.exportValue===e.fieldValue}).value;if("string"==typeof i){i="Off"!==i;t.setValue(n,{value:i})}this.container.classList.add("buttonWidgetAnnotation","checkBox");const r=document.createElement("input");h.add(r);r.setAttribute("data-element-id",n);r.disabled=e.readOnly;this._setRequired(r,this.data.required);r.type="checkbox";r.name=e.baseFieldName||e.fieldName;i&&r.setAttribute("checked",!0);r.setAttribute("exportValue",e.exportValue);r.tabIndex=c;r.addEventListener("change",(i=>{const{name:r,checked:s}=i.target;for(const i of this._getElementsByName(r,n)){const n=s&&i.exportValue===e.exportValue;i.domElement&&(i.domElement.checked=n);t.setValue(i.id,{value:n})}t.setValue(n,{value:s})}));r.addEventListener("resetform",(t=>{const n=e.defaultFieldValue||"Off";t.target.checked=n===e.exportValue}));if(this.enableScripting&&this.hasJSActions){r.addEventListener("updatefromsandbox",(e=>{const i={value(e){e.target.checked="Off"!==e.detail.value;t.setValue(n,{value:e.target.checked})}};this._dispatchEventFromSandbox(i,e)}));this._setEventListeners(r,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(r);this._setDefaultPropertiesFromJS(r);this.container.append(r);return this.container}}class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const t=this.annotationStorage,e=this.data,n=e.id;let i=t.getValue(n,{value:e.fieldValue===e.buttonValue}).value;if("string"==typeof i){i=i!==e.buttonValue;t.setValue(n,{value:i})}const r=document.createElement("input");h.add(r);r.setAttribute("data-element-id",n);r.disabled=e.readOnly;this._setRequired(r,this.data.required);r.type="radio";r.name=e.baseFieldName||e.fieldName;i&&r.setAttribute("checked",!0);r.tabIndex=c;r.addEventListener("change",(e=>{const{name:i,checked:r}=e.target;for(const e of this._getElementsByName(i,n))t.setValue(e.id,{value:!1});t.setValue(n,{value:r})}));r.addEventListener("resetform",(t=>{const n=e.defaultFieldValue;t.target.checked=null!=n&&n===e.buttonValue}));if(this.enableScripting&&this.hasJSActions){const i=e.buttonValue;r.addEventListener("updatefromsandbox",(e=>{const r={value:e=>{const r=i===e.detail.value;for(const i of this._getElementsByName(e.target.name)){const e=r&&i.id===n;i.domElement&&(i.domElement.checked=e);t.setValue(i.id,{value:e})}}};this._dispatchEventFromSandbox(r,e)}));this._setEventListeners(r,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],(t=>t.target.checked))}this._setBackgroundColor(r);this._setDefaultPropertiesFromJS(r);this.container.append(r);return this.container}}class PushButtonWidgetAnnotationElement extends LinkAnnotationElement{constructor(t){super(t,{ignoreBorder:t.data.hasAppearance})}render(){const t=super.render();t.classList.add("buttonWidgetAnnotation","pushButton");this.data.alternativeText&&(t.title=this.data.alternativeText);const e=t.lastChild;if(this.enableScripting&&this.hasJSActions&&e){this._setDefaultPropertiesFromJS(e);e.addEventListener("updatefromsandbox",(t=>{this._dispatchEventFromSandbox({},t)}))}return t}}class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement{constructor(t){super(t,{isRenderable:t.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const t=this.annotationStorage,e=this.data.id,n=t.getValue(e,{value:this.data.fieldValue}),i=document.createElement("select");h.add(i);i.setAttribute("data-element-id",e);i.disabled=this.data.readOnly;this._setRequired(i,this.data.required);i.name=this.data.baseFieldName||this.data.fieldName;i.tabIndex=c;let r=this.data.combo&&this.data.options.length>0;if(!this.data.combo){i.size=this.data.options.length;this.data.multiSelect&&(i.multiple=!0)}i.addEventListener("resetform",(t=>{const e=this.data.defaultFieldValue;for(const t of i.options)t.selected=t.value===e}));for(const t of this.data.options){const e=document.createElement("option");e.textContent=t.displayValue;e.value=t.exportValue;if(n.value.includes(t.exportValue)){e.setAttribute("selected",!0);r=!1}i.append(e)}let s=null;if(r){const t=document.createElement("option");t.value=" ";t.setAttribute("hidden",!0);t.setAttribute("selected",!0);i.prepend(t);s=()=>{t.remove();i.removeEventListener("input",s);s=null};i.addEventListener("input",s)}const getValue=t=>{const e=t?"value":"textContent",{options:n,multiple:r}=i;return r?Array.prototype.filter.call(n,(t=>t.selected)).map((t=>t[e])):-1===n.selectedIndex?null:n[n.selectedIndex][e]};let a=getValue(!1);const getItems=t=>{const e=t.target.options;return Array.prototype.map.call(e,(t=>({displayValue:t.textContent,exportValue:t.value})))};if(this.enableScripting&&this.hasJSActions){i.addEventListener("updatefromsandbox",(n=>{const r={value(n){s?.();const r=n.detail.value,o=new Set(Array.isArray(r)?r:[r]);for(const t of i.options)t.selected=o.has(t.value);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},multipleSelection(t){i.multiple=!0},remove(n){const r=i.options,s=n.detail.remove;r[s].selected=!1;i.remove(s);if(r.length>0){-1===Array.prototype.findIndex.call(r,(t=>t.selected))&&(r[0].selected=!0)}t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},clear(n){for(;0!==i.length;)i.remove(0);t.setValue(e,{value:null,items:[]});a=getValue(!1)},insert(n){const{index:r,displayValue:s,exportValue:o}=n.detail.insert,l=i.children[r],c=document.createElement("option");c.textContent=s;c.value=o;l?l.before(c):i.append(c);t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},items(n){const{items:r}=n.detail;for(;0!==i.length;)i.remove(0);for(const t of r){const{displayValue:e,exportValue:n}=t,r=document.createElement("option");r.textContent=e;r.value=n;i.append(r)}i.options.length>0&&(i.options[0].selected=!0);t.setValue(e,{value:getValue(!0),items:getItems(n)});a=getValue(!1)},indices(n){const i=new Set(n.detail.indices);for(const t of n.target.options)t.selected=i.has(t.index);t.setValue(e,{value:getValue(!0)});a=getValue(!1)},editable(t){t.target.disabled=!t.detail.editable}};this._dispatchEventFromSandbox(r,n)}));i.addEventListener("input",(n=>{const i=getValue(!0);t.setValue(e,{value:i});n.preventDefault();this.linkService.eventBus?.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e,name:"Keystroke",value:a,changeEx:i,willCommit:!1,commitKey:1,keyDown:!1}})}));this._setEventListeners(i,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],(t=>t.target.value))}else i.addEventListener("input",(function(n){t.setValue(e,{value:getValue(!0)})}));this.data.combo&&this._setTextStyle(i);this._setBackgroundColor(i);this._setDefaultPropertiesFromJS(i);this.container.append(i);return this.container}}class PopupAnnotationElement extends AnnotationElement{constructor(t){const{data:e,elements:n}=t;super(t,{isRenderable:!!(e.titleObj?.str||e.contentsObj?.str||e.richText?.str)});this.elements=n}render(){this.container.classList.add("popupAnnotation");const t=new PopupElement({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),e=[];for(const n of this.elements){n.popup=t;e.push(n.data.id);n.addHighlightArea()}this.container.setAttribute("aria-controls",e.join(","));return this.container}}class PopupElement{#Ne=null;#Be=this.#je.bind(this);#Ue=this.#ze.bind(this);#He=this.#qe.bind(this);#Se=null;#bt=null;#We=null;#Ge=null;#Ve=null;#$e=null;#Xe=!1;#Ke=null;#Ye=null;#Je=null;#Qe=null;#Ze=!1;constructor(t){let{container:e,color:n,elements:i,titleObj:s,modificationDate:a,contentsObj:o,richText:l,parent:c,rect:h,parentRect:d,open:u}=t;this.#bt=e;this.#Qe=s;this.#We=o;this.#Je=l;this.#Ve=c;this.#Se=n;this.#Ye=h;this.#$e=d;this.#Ge=i;const p=r.PDFDateString.toDateObject(a);p&&(this.#Ne=c.l10n.get("annotation_date_string",{date:p.toLocaleDateString(),time:p.toLocaleTimeString()}));this.trigger=i.flatMap((t=>t.getElementsToTriggerPopup()));for(const t of this.trigger){t.addEventListener("click",this.#He);t.addEventListener("mouseenter",this.#Ue);t.addEventListener("mouseleave",this.#Be)}this.#bt.hidden=!0;u&&this.#qe()}render(){if(this.#Ke)return;const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:n,pageX:r,pageY:s}}}=this.#Ve,a=this.#Ke=document.createElement("div");a.className="popup";if(this.#Se){const t=a.style.outlineColor=i.Util.makeHexColor(...this.#Se);if(CSS.supports("background-color","color-mix(in srgb, red 30%, white)"))a.style.backgroundColor=`color-mix(in srgb, ${t} 30%, white)`;else{const t=.7;a.style.backgroundColor=i.Util.makeHexColor(...this.#Se.map((e=>Math.floor(t*(255-e)+e))))}}const o=document.createElement("span");o.className="header";const c=document.createElement("h1");o.append(c);({dir:c.dir,str:c.textContent}=this.#Qe);a.append(o);if(this.#Ne){const t=document.createElement("span");t.classList.add("popupDate");this.#Ne.then((e=>{t.textContent=e}));o.append(t)}const h=this.#We,d=this.#Je;if(!d?.str||h?.str&&h.str!==d.str){const t=this._formatContents(h);a.append(t)}else{l.XfaLayer.render({xfaHtml:d.html,intent:"richText",div:a});a.lastChild.classList.add("richText","popupContent")}let u=!!this.#$e,p=u?this.#$e:this.#Ye;for(const t of this.#Ge)if(!p||null!==i.Util.intersect(t.data.rect,p)){p=t.data.rect;u=!0;break}const f=i.Util.normalizeRect([p[0],t[3]-p[1]+t[1],p[2],t[3]-p[3]+t[1]]),g=u?p[2]-p[0]+5:0,m=f[0]+g,b=f[1],{style:v}=this.#bt;v.left=100*(m-r)/e+"%";v.top=100*(b-s)/n+"%";this.#bt.append(a)}_formatContents(t){let{str:e,dir:n}=t;const i=document.createElement("p");i.classList.add("popupContent");i.dir=n;const r=e.split(/(?:\r\n?|\n)/);for(let t=0,e=r.length;t0&&this.#on.set(n.data.id,n);const r=n.render();t.hidden&&(r.style.visibility="hidden");this.#ln(r,t.id)}this.#cn();await this.l10n.translate(n)}update(t){let{viewport:e}=t;const n=this.div;this.viewport=e;(0,r.setLayerDimensions)(n,{rotation:e.rotation});this.#cn();n.hidden=!1}#cn(){if(!this.#an)return;const t=this.div;for(const[e,n]of this.#an){const i=t.querySelector(`[data-annotation-id="${e}"]`);if(!i)continue;const{firstChild:r}=i;r?"CANVAS"===r.nodeName?r.replaceWith(n):r.before(n):i.append(n)}this.#an.clear()}getEditableAnnotations(){return Array.from(this.#on.values())}getEditableAnnotation(t){return this.#on.get(t)}}},(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.ColorConverters=void 0;function makeColorComp(t){return Math.floor(255*Math.max(0,Math.min(1,t))).toString(16).padStart(2,"0")}e.ColorConverters=class ColorConverters{static CMYK_G(t){let[e,n,i,r]=t;return["G",1-Math.min(1,.3*e+.59*i+.11*n+r)]}static G_CMYK(t){let[e]=t;return["CMYK",0,0,0,1-e]}static G_RGB(t){let[e]=t;return["RGB",e,e,e]}static G_HTML(t){let[e]=t;const n=makeColorComp(e);return`#${n}${n}${n}`}static RGB_G(t){let[e,n,i]=t;return["G",.3*e+.59*n+.11*i]}static RGB_HTML(t){let[e,n,i]=t;return`#${makeColorComp(e)}${makeColorComp(n)}${makeColorComp(i)}`}static T_HTML(){return"#00000000"}static CMYK_RGB(t){let[e,n,i,r]=t;return["RGB",1-Math.min(1,e+r),1-Math.min(1,i+r),1-Math.min(1,n+r)]}static CMYK_HTML(t){const e=this.CMYK_RGB(t).slice(1);return this.RGB_HTML(e)}static RGB_CMYK(t){let[e,n,i]=t;const r=1-e,s=1-n,a=1-i;return["CMYK",r,s,a,Math.min(r,s,a)]}}},(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.NullL10n=void 0;e.getL10nFallback=getL10nFallback;const n={of_pages:"of {{pagesCount}}",page_of_pages:"({{pageNumber}} of {{pagesCount}})",document_properties_kb:"{{size_kb}} KB ({{size_b}} bytes)",document_properties_mb:"{{size_mb}} MB ({{size_b}} bytes)",document_properties_date_string:"{{date}}, {{time}}",document_properties_page_size_unit_inches:"in",document_properties_page_size_unit_millimeters:"mm",document_properties_page_size_orientation_portrait:"portrait",document_properties_page_size_orientation_landscape:"landscape",document_properties_page_size_name_a3:"A3",document_properties_page_size_name_a4:"A4",document_properties_page_size_name_letter:"Letter",document_properties_page_size_name_legal:"Legal",document_properties_page_size_dimension_string:"{{width}} × {{height}} {{unit}} ({{orientation}})",document_properties_page_size_dimension_name_string:"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})",document_properties_linearized_yes:"Yes",document_properties_linearized_no:"No",additional_layers:"Additional Layers",page_landmark:"Page {{page}}",thumb_page_title:"Page {{page}}",thumb_page_canvas:"Thumbnail of Page {{page}}",find_reached_top:"Reached top of document, continued from bottom",find_reached_bottom:"Reached end of document, continued from top","find_match_count[one]":"{{current}} of {{total}} match","find_match_count[other]":"{{current}} of {{total}} matches","find_match_count_limit[one]":"More than {{limit}} match","find_match_count_limit[other]":"More than {{limit}} matches",find_not_found:"Phrase not found",page_scale_width:"Page Width",page_scale_fit:"Page Fit",page_scale_auto:"Automatic Zoom",page_scale_actual:"Actual Size",page_scale_percent:"{{scale}}%",loading_error:"An error occurred while loading the PDF.",invalid_file_error:"Invalid or corrupted PDF file.",missing_file_error:"Missing PDF file.",unexpected_response_error:"Unexpected server response.",rendering_error:"An error occurred while rendering the page.",annotation_date_string:"{{date}}, {{time}}",printing_not_supported:"Warning: Printing is not fully supported by this browser.",printing_not_ready:"Warning: The PDF is not fully loaded for printing.",web_fonts_disabled:"Web fonts are disabled: unable to use embedded PDF fonts.",free_text2_default_content:"Start typing…",editor_free_text2_aria_label:"Text Editor",editor_ink2_aria_label:"Draw Editor",editor_ink_canvas_aria_label:"User-created image",print_progress_percent:"{{progress}}%"};function getL10nFallback(t,e){switch(t){case"find_match_count":t=`find_match_count[${1===e.total?"one":"other"}]`;break;case"find_match_count_limit":t=`find_match_count_limit[${1===e.limit?"one":"other"}]`}return n[t]||""}const i={getLanguage:async()=>"en-us",getDirection:async()=>"ltr",async get(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function formatL10nValue(t,e){return e?t.replaceAll(/\{\{\s*(\w+)\s*\}\}/g,((t,n)=>n in e?e[n]:"{{"+n+"}}")):t}(arguments.length>2&&void 0!==arguments[2]?arguments[2]:getL10nFallback(t,e),e)},async translate(t){}};e.NullL10n=i},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.XfaLayer=void 0;n(89);var i=n(193);e.XfaLayer=class XfaLayer{static setupStorage(t,e,n,i,r){const s=i.getValue(e,{value:null});switch(n.name){case"textarea":null!==s.value&&(t.textContent=s.value);if("print"===r)break;t.addEventListener("input",(t=>{i.setValue(e,{value:t.target.value})}));break;case"input":if("radio"===n.attributes.type||"checkbox"===n.attributes.type){s.value===n.attributes.xfaOn?t.setAttribute("checked",!0):s.value===n.attributes.xfaOff&&t.removeAttribute("checked");if("print"===r)break;t.addEventListener("change",(t=>{i.setValue(e,{value:t.target.checked?t.target.getAttribute("xfaOn"):t.target.getAttribute("xfaOff")})}))}else{null!==s.value&&t.setAttribute("value",s.value);if("print"===r)break;t.addEventListener("input",(t=>{i.setValue(e,{value:t.target.value})}))}break;case"select":if(null!==s.value){t.setAttribute("value",s.value);for(const t of n.children)t.attributes.value===s.value?t.attributes.selected=!0:t.attributes.hasOwnProperty("selected")&&delete t.attributes.selected}t.addEventListener("input",(t=>{const n=t.target.options,r=-1===n.selectedIndex?"":n[n.selectedIndex].value;i.setValue(e,{value:r})}))}}static setAttributes(t){let{html:e,element:n,storage:i=null,intent:r,linkService:s}=t;const{attributes:a}=n,o=e instanceof HTMLAnchorElement;"radio"===a.type&&(a.name=`${a.name}-${r}`);for(const[t,n]of Object.entries(a))if(null!=n)switch(t){case"class":n.length&&e.setAttribute(t,n.join(" "));break;case"dataId":break;case"id":e.setAttribute("data-element-id",n);break;case"style":Object.assign(e.style,n);break;case"textContent":e.textContent=n;break;default:(!o||"href"!==t&&"newWindow"!==t)&&e.setAttribute(t,n)}o&&s.addLinkAttributes(e,a.href,a.newWindow);i&&a.dataId&&this.setupStorage(e,a.dataId,n,i)}static render(t){const e=t.annotationStorage,n=t.linkService,r=t.xfaHtml,s=t.intent||"display",a=document.createElement(r.name);r.attributes&&this.setAttributes({html:a,element:r,intent:s,linkService:n});const o=[[r,-1,a]],l=t.div;l.append(a);if(t.viewport){const e=`matrix(${t.viewport.transform.join(",")})`;l.style.transform=e}"richText"!==s&&l.setAttribute("class","xfaLayer xfaFont");const c=[];for(;o.length>0;){const[t,r,a]=o.at(-1);if(r+1===t.children.length){o.pop();continue}const l=t.children[++o.at(-1)[1]];if(null===l)continue;const{name:h}=l;if("#text"===h){const t=document.createTextNode(l.value);c.push(t);a.append(t);continue}const d=l?.attributes?.xmlns?document.createElementNS(l.attributes.xmlns,h):document.createElement(h);a.append(d);l.attributes&&this.setAttributes({html:d,element:l,storage:e,intent:s,linkService:n});if(l.children&&l.children.length>0)o.push([l,-1,d]);else if(l.value){const t=document.createTextNode(l.value);i.XfaText.shouldBuildText(h)&&c.push(t);d.append(t)}}for(const t of l.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))t.setAttribute("readOnly",!0);return{textDivs:c}}static update(t){const e=`matrix(${t.viewport.transform.join(",")})`;t.div.style.transform=e;t.div.hidden=!1}}},(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.InkEditor=void 0;n(89);n(2);var i=n(1),r=n(163),s=n(197),a=n(164);class InkEditor extends r.AnnotationEditor{#hn=0;#dn=0;#un=this.canvasContextMenu.bind(this);#pn=this.canvasPointermove.bind(this);#fn=this.canvasPointerleave.bind(this);#gn=this.canvasPointerup.bind(this);#mn=this.canvasPointerdown.bind(this);#bn=new Path2D;#vn=!1;#yn=!1;#An=!1;#_n=null;#Sn=0;#En=0;#xn=null;static _defaultColor=null;static _defaultOpacity=1;static _defaultThickness=1;static _l10nPromise;static _type="ink";constructor(t){super({...t,name:"inkEditor"});this.color=t.color||null;this.thickness=t.thickness||null;this.opacity=t.opacity||null;this.paths=[];this.bezierPath2D=[];this.allRawPaths=[];this.currentPath=[];this.scaleFactor=1;this.translationX=this.translationY=0;this.x=0;this.y=0;this._willKeepAspectRatio=!0}static initialize(t){this._l10nPromise=new Map(["editor_ink_canvas_aria_label","editor_ink2_aria_label"].map((e=>[e,t.get(e)])))}static updateDefaultParams(t,e){switch(t){case i.AnnotationEditorParamsType.INK_THICKNESS:InkEditor._defaultThickness=e;break;case i.AnnotationEditorParamsType.INK_COLOR:InkEditor._defaultColor=e;break;case i.AnnotationEditorParamsType.INK_OPACITY:InkEditor._defaultOpacity=e/100}}updateParams(t,e){switch(t){case i.AnnotationEditorParamsType.INK_THICKNESS:this.#wn(e);break;case i.AnnotationEditorParamsType.INK_COLOR:this.#Pe(e);break;case i.AnnotationEditorParamsType.INK_OPACITY:this.#Cn(e)}}static get defaultPropertiesToUpdate(){return[[i.AnnotationEditorParamsType.INK_THICKNESS,InkEditor._defaultThickness],[i.AnnotationEditorParamsType.INK_COLOR,InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor],[i.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*InkEditor._defaultOpacity)]]}get propertiesToUpdate(){return[[i.AnnotationEditorParamsType.INK_THICKNESS,this.thickness||InkEditor._defaultThickness],[i.AnnotationEditorParamsType.INK_COLOR,this.color||InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor],[i.AnnotationEditorParamsType.INK_OPACITY,Math.round(100*(this.opacity??InkEditor._defaultOpacity))]]}#wn(t){const e=this.thickness;this.addCommands({cmd:()=>{this.thickness=t;this.#Tn()},undo:()=>{this.thickness=e;this.#Tn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})}#Pe(t){const e=this.color;this.addCommands({cmd:()=>{this.color=t;this.#Pn()},undo:()=>{this.color=e;this.#Pn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})}#Cn(t){t/=100;const e=this.opacity;this.addCommands({cmd:()=>{this.opacity=t;this.#Pn()},undo:()=>{this.opacity=e;this.#Pn()},mustExec:!0,type:i.AnnotationEditorParamsType.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})}rebuild(){super.rebuild();if(null!==this.div){if(!this.canvas){this.#kn();this.#Mn()}if(!this.isAttachedToDOM){this.parent.add(this);this.#Rn()}this.#Tn()}}remove(){if(null!==this.canvas){this.isEmpty()||this.commit();this.canvas.width=this.canvas.height=0;this.canvas.remove();this.canvas=null;this.#_n.disconnect();this.#_n=null;super.remove()}}setParent(t){!this.parent&&t?this._uiManager.removeShouldRescale(this):this.parent&&null===t&&this._uiManager.addShouldRescale(this);super.setParent(t)}onScaleChanging(){const[t,e]=this.parentDimensions,n=this.width*t,i=this.height*e;this.setDimensions(n,i)}enableEditMode(){if(!this.#vn&&null!==this.canvas){super.enableEditMode();this.div.draggable=!1;this.canvas.addEventListener("pointerdown",this.#mn)}}disableEditMode(){if(this.isInEditMode()&&null!==this.canvas){super.disableEditMode();this.div.draggable=!this.isEmpty();this.div.classList.remove("editing");this.canvas.removeEventListener("pointerdown",this.#mn)}}onceAdded(){this.div.draggable=!this.isEmpty()}isEmpty(){return 0===this.paths.length||1===this.paths.length&&0===this.paths[0].length}#Fn(){const{parentRotation:t,parentDimensions:[e,n]}=this;switch(t){case 90:return[0,n,n,e];case 180:return[e,n,e,n];case 270:return[e,0,n,e];default:return[0,0,e,n]}}#In(){const{ctx:t,color:e,opacity:n,thickness:i,parentScale:r,scaleFactor:s}=this;t.lineWidth=i*r/s;t.lineCap="round";t.lineJoin="round";t.miterLimit=10;t.strokeStyle=`${e}${(0,a.opacityToHex)(n)}`}#Dn(t,e){this.canvas.addEventListener("contextmenu",this.#un);this.canvas.addEventListener("pointerleave",this.#fn);this.canvas.addEventListener("pointermove",this.#pn);this.canvas.addEventListener("pointerup",this.#gn);this.canvas.removeEventListener("pointerdown",this.#mn);this.isEditing=!0;if(!this.#An){this.#An=!0;this.#Rn();this.thickness||=InkEditor._defaultThickness;this.color||=InkEditor._defaultColor||r.AnnotationEditor._defaultLineColor;this.opacity??=InkEditor._defaultOpacity}this.currentPath.push([t,e]);this.#yn=!1;this.#In();this.#xn=()=>{this.#On();this.#xn&&window.requestAnimationFrame(this.#xn)};window.requestAnimationFrame(this.#xn)}#Ln(t,e){const[n,i]=this.currentPath.at(-1);if(this.currentPath.length>1&&t===n&&e===i)return;const r=this.currentPath;let s=this.#bn;r.push([t,e]);this.#yn=!0;if(r.length<=2){s.moveTo(...r[0]);s.lineTo(t,e)}else{if(3===r.length){this.#bn=s=new Path2D;s.moveTo(...r[0])}this.#Nn(s,...r.at(-3),...r.at(-2),t,e)}}#Bn(){if(0===this.currentPath.length)return;const t=this.currentPath.at(-1);this.#bn.lineTo(...t)}#jn(t,e){this.#xn=null;t=Math.min(Math.max(t,0),this.canvas.width);e=Math.min(Math.max(e,0),this.canvas.height);this.#Ln(t,e);this.#Bn();let n;if(1!==this.currentPath.length)n=this.#Un();else{const i=[t,e];n=[[i,i.slice(),i.slice(),i]]}const i=this.#bn,r=this.currentPath;this.currentPath=[];this.#bn=new Path2D;this.addCommands({cmd:()=>{this.allRawPaths.push(r);this.paths.push(n);this.bezierPath2D.push(i);this.rebuild()},undo:()=>{this.allRawPaths.pop();this.paths.pop();this.bezierPath2D.pop();if(0===this.paths.length)this.remove();else{if(!this.canvas){this.#kn();this.#Mn()}this.#Tn()}},mustExec:!0})}#On(){if(!this.#yn)return;this.#yn=!1;const t=Math.ceil(this.thickness*this.parentScale),e=this.currentPath.slice(-3),n=e.map((t=>t[0])),i=e.map((t=>t[1])),{ctx:r}=(Math.min(...n),Math.max(...n),Math.min(...i),Math.max(...i),this);r.save();r.clearRect(0,0,this.canvas.width,this.canvas.height);for(const t of this.bezierPath2D)r.stroke(t);r.stroke(this.#bn);r.restore()}#Nn(t,e,n,i,r,s,a){const o=(e+i)/2,l=(n+r)/2,c=(i+s)/2,h=(r+a)/2;t.bezierCurveTo(o+2*(i-o)/3,l+2*(r-l)/3,c+2*(i-c)/3,h+2*(r-h)/3,c,h)}#Un(){const t=this.currentPath;if(t.length<=2)return[[t[0],t[0],t.at(-1),t.at(-1)]];const e=[];let n,[i,r]=t[0];for(n=1;n{this.canvas.removeEventListener("contextmenu",this.#un)}),10);this.#jn(t.offsetX,t.offsetY);this.addToAnnotationStorage();this.setInBackground()}#kn(){this.canvas=document.createElement("canvas");this.canvas.width=this.canvas.height=0;this.canvas.className="inkEditorCanvas";InkEditor._l10nPromise.get("editor_ink_canvas_aria_label").then((t=>this.canvas?.setAttribute("aria-label",t)));this.div.append(this.canvas);this.ctx=this.canvas.getContext("2d")}#Mn(){this.#_n=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.setDimensions(e.width,e.height)}));this.#_n.observe(this.div)}get isResizable(){return!this.isEmpty()&&this.#vn}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();InkEditor._l10nPromise.get("editor_ink2_aria_label").then((t=>this.div?.setAttribute("aria-label",t)));const[n,i,r,s]=this.#Fn();this.setAt(n,i,0,0);this.setDims(r,s);this.#kn();if(this.width){const[n,i]=this.parentDimensions;this.setAspectRatio(this.width*n,this.height*i);this.setAt(t*n,e*i,this.width*n,this.height*i);this.#An=!0;this.#Rn();this.setDims(this.width*n,this.height*i);this.#Pn();this.div.classList.add("disabled")}else{this.div.classList.add("editing");this.enableEditMode()}this.#Mn();return this.div}#Rn(){if(!this.#An)return;const[t,e]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*t);this.canvas.height=Math.ceil(this.height*e);this.#zn()}setDimensions(t,e){const n=Math.round(t),i=Math.round(e);if(this.#Sn===n&&this.#En===i)return;this.#Sn=n;this.#En=i;this.canvas.style.visibility="hidden";const[r,s]=this.parentDimensions;this.width=t/r;this.height=e/s;this.fixAndSetPosition();this.#vn&&this.#qn(t,e);this.#Rn();this.#Pn();this.canvas.style.visibility="visible";this.fixDims()}#qn(t,e){const n=this.#Wn(),i=(t-n)/this.#dn,r=(e-n)/this.#hn;this.scaleFactor=Math.min(i,r)}#zn(){const t=this.#Wn()/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+t,this.translationY*this.scaleFactor+t)}static#Gn(t){const e=new Path2D;for(let n=0,i=t.length;n0&&void 0!==arguments[0]&&arguments[0];if(this.isEmpty())return;if(!this.#vn){this.#Pn();return}const e=this.#Kn(),n=this.#Wn();this.#dn=Math.max(r.AnnotationEditor.MIN_SIZE,e[2]-e[0]);this.#hn=Math.max(r.AnnotationEditor.MIN_SIZE,e[3]-e[1]);const i=Math.ceil(n+this.#dn*this.scaleFactor),s=Math.ceil(n+this.#hn*this.scaleFactor),[a,o]=this.parentDimensions;this.width=i/a;this.height=s/o;this.setAspectRatio(i,s);const l=this.translationX,c=this.translationY;this.translationX=-e[0];this.translationY=-e[1];this.#Rn();this.#Pn();this.#Sn=i;this.#En=s;this.setDims(i,s);const h=t?n/this.scaleFactor/2:0;this.translate(l-this.translationX-h,c-this.translationY-h)}static deserialize(t,e,n){if(t instanceof s.InkAnnotationElement)return null;const a=super.deserialize(t,e,n);a.thickness=t.thickness;a.color=i.Util.makeHexColor(...t.color);a.opacity=t.opacity;const[o,l]=a.pageDimensions,c=a.width*o,h=a.height*l,d=a.parentScale,u=t.thickness/2;a.#vn=!0;a.#Sn=Math.round(c);a.#En=Math.round(h);const{paths:p,rect:f,rotation:g}=t;for(let{bezier:t}of p){t=InkEditor.#$n(t,f,g);const e=[];a.paths.push(e);let n=d*(t[0]-u),i=d*(t[1]-u);for(let r=2,s=t.length;r{"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.StampEditor=void 0;n(148);n(151);var i=n(163),r=n(1),s=n(167),a=n(197);class StampEditor extends i.AnnotationEditor{#Yn=null;#Jn=null;#Qn=null;#Zn=null;#ti=null;#_n=null;#ei=null;#ni=!1;static _type="stamp";constructor(t){super({...t,name:"stampEditor"});this.#Zn=t.bitmapUrl}#ii(){if(this.#Jn){this._uiManager.imageManager.getFromId(this.#Jn).then((t=>{if(t){this.#Yn=t.bitmap;this.#kn()}else this.remove()}));return}if(this.#Zn){const t=this.#Zn;this.#Zn=null;this.#Qn=this._uiManager.imageManager.getFromUrl(t).then((t=>{this.#Qn=null;if(t){({bitmap:this.#Yn,id:this.#Jn,isSvg:this.#ni}=t);this.#kn()}else this.remove()}));return}const t=document.createElement("input");t.type="file";t.accept="image/*";this.#Qn=new Promise((e=>{t.addEventListener("change",(async()=>{this.#Qn=null;if(t.files&&0!==t.files.length){const e=await this._uiManager.imageManager.getFromFile(t.files[0]);if(!e){this.remove();return}({bitmap:this.#Yn,id:this.#Jn,isSvg:this.#ni}=e);this.#kn()}else this.remove();e()}));t.addEventListener("cancel",(()=>{this.#Qn=null;this.remove();e()}))}));t.click()}remove(){if(this.#Jn){this.#Yn=null;this._uiManager.imageManager.deleteId(this.#Jn);this.#ti?.remove();this.#ti=null;this.#_n?.disconnect();this.#_n=null}super.remove()}rebuild(){super.rebuild();if(null!==this.div){this.#Jn&&this.#ii();this.isAttachedToDOM||this.parent.add(this)}}onceAdded(){this.div.draggable=!0;this.parent.addUndoableEditor(this);this.div.focus()}isEmpty(){return null===this.#Qn&&null===this.#Yn&&null===this.#Zn}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;if(this.width){t=this.x;e=this.y}super.render();if(this.#Yn)this.#kn();else{this.div.classList.add("loading");this.#ii()}if(this.width){const[n,i]=this.parentDimensions;this.setAt(t*n,e*i,this.width*n,this.height*i)}return this.div}#kn(){const{div:t}=this;let{width:e,height:n}=this.#Yn;const[i,r]=this.pageDimensions,s=.75;if(this.width){e=this.width*i;n=this.height*r}else if(e>s*i||n>s*r){const t=Math.min(s*i/e,s*r/n);e*=t;n*=t}const[a,o]=this.parentDimensions;this.setDims(e*a/i,n*o/r);const l=this.#ti=document.createElement("canvas");t.append(l);this.#ri(e,n);this.#Mn();t.classList.remove("loading")}#si(t,e){const[n,i]=this.parentDimensions;this.width=t/n;this.height=e/i;this.setDims(t,e);this.fixAndSetPosition();null!==this.#ei&&clearTimeout(this.#ei);this.#ei=setTimeout((()=>{this.#ei=null;this.#ri(t,e)}),200)}#ai(t,e){const{width:n,height:i}=this.#Yn;let r=n,s=i,a=this.#Yn;for(;r>2*t||s>2*e;){const n=r,i=s;r>2*t&&(r=r>=16384?Math.floor(r/2)-1:Math.ceil(r/2));s>2*e&&(s=s>=16384?Math.floor(s/2)-1:Math.ceil(s/2));const o=new OffscreenCanvas(r,s);o.getContext("2d").drawImage(a,0,0,n,i,0,0,r,s);a=o.transferToImageBitmap()}return a}#ri(t,e){const n=this.#ti;if(!n||n.width===t&&n.height===e)return;n.width=t;n.height=e;const i=this.#ni?this.#Yn:this.#ai(t,e),r=n.getContext("2d");r.filter=this._uiManager.hcmFilter;r.drawImage(i,0,0,i.width,i.height,0,0,t,e)}#oi(t){if(t){if(this.#ni){const t=this._uiManager.imageManager.getSvgUrl(this.#Jn);if(t)return t}const t=document.createElement("canvas");({width:t.width,height:t.height}=this.#Yn);t.getContext("2d").drawImage(this.#Yn,0,0);return t.toDataURL()}if(this.#ni){const[t,e]=this.pageDimensions,n=Math.round(this.width*t*s.PixelsPerInch.PDF_TO_CSS_UNITS),i=Math.round(this.height*e*s.PixelsPerInch.PDF_TO_CSS_UNITS),r=new OffscreenCanvas(n,i);r.getContext("2d").drawImage(this.#Yn,0,0,this.#Yn.width,this.#Yn.height,0,0,n,i);return r.transferToImageBitmap()}return structuredClone(this.#Yn)}#Mn(){this.#_n=new ResizeObserver((t=>{const e=t[0].contentRect;e.width&&e.height&&this.#si(e.width,e.height)}));this.#_n.observe(this.div)}static deserialize(t,e,n){if(t instanceof a.StampAnnotationElement)return null;const i=super.deserialize(t,e,n),{rect:r,bitmapUrl:s,bitmapId:o,isSvg:l}=t;o&&n.imageManager.isValidId(o)?i.#Jn=o:i.#Zn=s;i.#ni=l;const[c,h]=i.pageDimensions;i.width=(r[2]-r[0])/c;i.height=(r[3]-r[1])/h;return i}serialize(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.isEmpty())return null;const n={annotationType:r.AnnotationEditorType.STAMP,bitmapId:this.#Jn,pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:this.#ni};if(t){n.bitmapUrl=this.#oi(!0);return n}if(null===e)return n;e.stamps||=new Map;const i=this.#ni?(n.rect[2]-n.rect[0])*(n.rect[3]-n.rect[1]):null;if(e.stamps.has(this.#Jn)){if(this.#ni){const t=e.stamps.get(this.#Jn);if(i>t.area){t.area=i;t.serialized.bitmap.close();t.serialized.bitmap=this.#oi(!1)}}}else{e.stamps.set(this.#Jn,{area:i,serialized:n});n.bitmap=this.#oi(!1)}return n}}e.StampEditor=StampEditor}],__webpack_module_cache__={};function __w_pdfjs_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={exports:{}};__webpack_modules__[t].call(n.exports,n,n.exports,__w_pdfjs_require__);return n.exports}var __webpack_exports__={};(()=>{"use strict";var t=__webpack_exports__;Object.defineProperty(t,"__esModule",{value:!0});Object.defineProperty(t,"AbortException",{enumerable:!0,get:function(){return e.AbortException}});Object.defineProperty(t,"AnnotationEditorLayer",{enumerable:!0,get:function(){return s.AnnotationEditorLayer}});Object.defineProperty(t,"AnnotationEditorParamsType",{enumerable:!0,get:function(){return e.AnnotationEditorParamsType}});Object.defineProperty(t,"AnnotationEditorType",{enumerable:!0,get:function(){return e.AnnotationEditorType}});Object.defineProperty(t,"AnnotationEditorUIManager",{enumerable:!0,get:function(){return a.AnnotationEditorUIManager}});Object.defineProperty(t,"AnnotationLayer",{enumerable:!0,get:function(){return o.AnnotationLayer}});Object.defineProperty(t,"AnnotationMode",{enumerable:!0,get:function(){return e.AnnotationMode}});Object.defineProperty(t,"CMapCompressionType",{enumerable:!0,get:function(){return e.CMapCompressionType}});Object.defineProperty(t,"FeatureTest",{enumerable:!0,get:function(){return e.FeatureTest}});Object.defineProperty(t,"GlobalWorkerOptions",{enumerable:!0,get:function(){return l.GlobalWorkerOptions}});Object.defineProperty(t,"ImageKind",{enumerable:!0,get:function(){return e.ImageKind}});Object.defineProperty(t,"InvalidPDFException",{enumerable:!0,get:function(){return e.InvalidPDFException}});Object.defineProperty(t,"MissingPDFException",{enumerable:!0,get:function(){return e.MissingPDFException}});Object.defineProperty(t,"OPS",{enumerable:!0,get:function(){return e.OPS}});Object.defineProperty(t,"PDFDataRangeTransport",{enumerable:!0,get:function(){return n.PDFDataRangeTransport}});Object.defineProperty(t,"PDFDateString",{enumerable:!0,get:function(){return i.PDFDateString}});Object.defineProperty(t,"PDFWorker",{enumerable:!0,get:function(){return n.PDFWorker}});Object.defineProperty(t,"PasswordResponses",{enumerable:!0,get:function(){return e.PasswordResponses}});Object.defineProperty(t,"PermissionFlag",{enumerable:!0,get:function(){return e.PermissionFlag}});Object.defineProperty(t,"PixelsPerInch",{enumerable:!0,get:function(){return i.PixelsPerInch}});Object.defineProperty(t,"PromiseCapability",{enumerable:!0,get:function(){return e.PromiseCapability}});Object.defineProperty(t,"RenderingCancelledException",{enumerable:!0,get:function(){return i.RenderingCancelledException}});Object.defineProperty(t,"SVGGraphics",{enumerable:!0,get:function(){return n.SVGGraphics}});Object.defineProperty(t,"UnexpectedResponseException",{enumerable:!0,get:function(){return e.UnexpectedResponseException}});Object.defineProperty(t,"Util",{enumerable:!0,get:function(){return e.Util}});Object.defineProperty(t,"VerbosityLevel",{enumerable:!0,get:function(){return e.VerbosityLevel}});Object.defineProperty(t,"XfaLayer",{enumerable:!0,get:function(){return c.XfaLayer}});Object.defineProperty(t,"build",{enumerable:!0,get:function(){return n.build}});Object.defineProperty(t,"createValidAbsoluteUrl",{enumerable:!0,get:function(){return e.createValidAbsoluteUrl}});Object.defineProperty(t,"getDocument",{enumerable:!0,get:function(){return n.getDocument}});Object.defineProperty(t,"getFilenameFromUrl",{enumerable:!0,get:function(){return i.getFilenameFromUrl}});Object.defineProperty(t,"getPdfFilenameFromUrl",{enumerable:!0,get:function(){return i.getPdfFilenameFromUrl}});Object.defineProperty(t,"getXfaPageViewport",{enumerable:!0,get:function(){return i.getXfaPageViewport}});Object.defineProperty(t,"isDataScheme",{enumerable:!0,get:function(){return i.isDataScheme}});Object.defineProperty(t,"isPdfFile",{enumerable:!0,get:function(){return i.isPdfFile}});Object.defineProperty(t,"loadScript",{enumerable:!0,get:function(){return i.loadScript}});Object.defineProperty(t,"normalizeUnicode",{enumerable:!0,get:function(){return e.normalizeUnicode}});Object.defineProperty(t,"renderTextLayer",{enumerable:!0,get:function(){return r.renderTextLayer}});Object.defineProperty(t,"setLayerDimensions",{enumerable:!0,get:function(){return i.setLayerDimensions}});Object.defineProperty(t,"shadow",{enumerable:!0,get:function(){return e.shadow}});Object.defineProperty(t,"updateTextLayer",{enumerable:!0,get:function(){return r.updateTextLayer}});Object.defineProperty(t,"version",{enumerable:!0,get:function(){return n.version}});var e=__w_pdfjs_require__(1),n=__w_pdfjs_require__(124),i=__w_pdfjs_require__(167),r=__w_pdfjs_require__(194),s=__w_pdfjs_require__(195),a=__w_pdfjs_require__(164),o=__w_pdfjs_require__(197),l=__w_pdfjs_require__(175),c=__w_pdfjs_require__(200)})();return __webpack_exports__})())); \ No newline at end of file diff --git a/core/packages/vue-pdf/src/pdf.js b/core/packages/vue-pdf/src/pdf.js index bbd8e31..80747ad 100644 --- a/core/packages/vue-pdf/src/pdf.js +++ b/core/packages/vue-pdf/src/pdf.js @@ -1 +1 @@ -(()=>{"use strict";var __webpack_modules__=({"./pdf.js":((module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.global-this.js */ \"./node_modules/core-js/modules/es.global-this.js\");\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ \"./node_modules/core-js/modules/es.string.starts-with.js\");\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ \"./node_modules/core-js/modules/es.string.match.js\");\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ \"./node_modules/core-js/modules/web.url.js\");\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ \"./node_modules/core-js/modules/web.url-search-params.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array-buffer.slice.js */ \"./node_modules/core-js/modules/es.array-buffer.slice.js\");\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint8-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.typed-array.at.js */ \"./node_modules/core-js/modules/es.typed-array.at.js\");\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.typed-array.fill.js */ \"./node_modules/core-js/modules/es.typed-array.fill.js\");\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last.js */ \"./node_modules/core-js/modules/es.typed-array.find-last.js\");\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last-index.js */ \"./node_modules/core-js/modules/es.typed-array.find-last-index.js\");\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.typed-array.set.js */ \"./node_modules/core-js/modules/es.typed-array.set.js\");\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.typed-array.sort.js */ \"./node_modules/core-js/modules/es.typed-array.sort.js\");\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ \"./node_modules/core-js/modules/es.typed-array.to-locale-string.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-reversed.js */ \"./node_modules/core-js/modules/es.typed-array.to-reversed.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-sorted.js */ \"./node_modules/core-js/modules/es.typed-array.to-sorted.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.typed-array.with.js */ \"./node_modules/core-js/modules/es.typed-array.with.js\");\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.string.replace-all.js */ \"./node_modules/core-js/modules/es.string.replace-all.js\");\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint32-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint32-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__);\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! core-js/modules/es.weak-map.js */ \"./node_modules/core-js/modules/es.weak-map.js\");\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! core-js/modules/web.self.js */ \"./node_modules/core-js/modules/web.self.js\");\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"./node_modules/core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__);\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! core-js/modules/es.object.has-own.js */ \"./node_modules/core-js/modules/es.object.has-own.js\");\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__);\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ \"./node_modules/core-js/modules/es.regexp.test.js\");\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__);\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! core-js/modules/es.reflect.to-string-tag.js */ \"./node_modules/core-js/modules/es.reflect.to-string-tag.js\");\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__);\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! core-js/modules/es.array.find-last.js */ \"./node_modules/core-js/modules/es.array.find-last.js\");\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__);\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ \"./node_modules/core-js/modules/es.array-buffer.constructor.js\");\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__);\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! core-js/modules/es.array.find-last-index.js */ \"./node_modules/core-js/modules/es.array.find-last-index.js\");\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__);\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-clamped-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ \"./node_modules/core-js/modules/es.array.sort.js\");\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__);\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! core-js/modules/es.array.with.js */ \"./node_modules/core-js/modules/es.array.with.js\");\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__);\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! core-js/modules/es.typed-array.int8-array.js */ \"./node_modules/core-js/modules/es.typed-array.int8-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__);\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! core-js/modules/web.dom-exception.constructor.js */ \"./node_modules/core-js/modules/web.dom-exception.constructor.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__);\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ \"./node_modules/core-js/modules/web.dom-exception.stack.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__);\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! core-js/modules/web.dom-exception.to-string-tag.js */ \"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__);\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! core-js/modules/web.structured-clone.js */ \"./node_modules/core-js/modules/web.structured-clone.js\");\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__);\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ \"./node_modules/core-js/modules/es.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__);\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! core-js/modules/es.regexp.dot-all.js */ \"./node_modules/core-js/modules/es.regexp.dot-all.js\");\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__);\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! core-js/modules/es.regexp.flags.js */ \"./node_modules/core-js/modules/es.regexp.flags.js\");\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__);\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \"./node_modules/core-js/modules/es.number.to-fixed.js\");\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__);\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \"./node_modules/core-js/modules/es.string.ends-with.js\");\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__);\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! core-js/modules/es.parse-float.js */ \"./node_modules/core-js/modules/es.parse-float.js\");\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__);\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! core-js/modules/es.math.hypot.js */ \"./node_modules/core-js/modules/es.math.hypot.js\");\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__);\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! core-js/modules/es.array.at.js */ \"./node_modules/core-js/modules/es.array.at.js\");\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__);\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! core-js/modules/es.string.at-alternative.js */ \"./node_modules/core-js/modules/es.string.at-alternative.js\");\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__);\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \"./node_modules/core-js/modules/es.parse-int.js\");\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__);\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! core-js/modules/es.typed-array.int32-array.js */ \"./node_modules/core-js/modules/es.typed-array.int32-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__);\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! core-js/modules/es.promise.all-settled.js */ \"./node_modules/core-js/modules/es.promise.all-settled.js\");\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__);\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! core-js/modules/es.string.trim-end.js */ \"./node_modules/core-js/modules/es.string.trim-end.js\");\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ \"./node_modules/core-js/modules/es.array.flat-map.js\");\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ \"./node_modules/core-js/modules/es.array.unscopables.flat-map.js\");\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__);\n/* module decorator */ module = __webpack_require__.hmd(module);\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); return _classApplyDescriptorDestructureSet(receiver, descriptor); }\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) { if (descriptor.set) { if (!(\"__destrObj\" in descriptor)) { descriptor.__destrObj = { set value(v) { descriptor.set.call(receiver, v); } }; } return descriptor.__destrObj; } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } return descriptor; } }\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }\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 _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); }\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\"); } }\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\"Private static access of wrong provenance\"); } }\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n!function webpackUniversalModuleDefinition(t, e) {\n \"object\" == typeof exports && \"object\" == \"object\" ? module.exports = e() : \"function\" == typeof define && __webpack_require__.amdO ? define(\"pdfjs-dist/build/pdf\", [], e) : \"object\" == typeof exports ? exports[\"pdfjs-dist/build/pdf\"] = e() : t[\"pdfjs-dist/build/pdf\"] = t.pdfjsLib = e();\n}(globalThis, () => (() => {\n var __webpack_modules__ = [, (t, e, n) => {\n \"use strict\";\n\n var _t;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.VerbosityLevel = e.Util = e.UnknownErrorException = e.UnexpectedResponseException = e.TextRenderingMode = e.RenderingIntentFlag = e.PromiseCapability = e.PermissionFlag = e.PasswordResponses = e.PasswordException = e.PageActionEventType = e.OPS = e.MissingPDFException = e.MAX_IMAGE_SIZE_TO_CACHE = e.LINE_FACTOR = e.LINE_DESCENT_FACTOR = e.InvalidPDFException = e.ImageKind = e.IDENTITY_MATRIX = e.FormatError = e.FeatureTest = e.FONT_IDENTITY_MATRIX = e.DocumentActionEventType = e.CMapCompressionType = e.BaseException = e.BASELINE_FACTOR = e.AnnotationType = e.AnnotationReplyType = e.AnnotationMode = e.AnnotationFlag = e.AnnotationFieldFlag = e.AnnotationEditorType = e.AnnotationEditorPrefix = e.AnnotationEditorParamsType = e.AnnotationBorderStyleType = e.AnnotationActionEventType = e.AbortException = void 0;\n e.assert = function assert(t, e) {\n t || unreachable(e);\n };\n e.bytesToString = bytesToString;\n e.createValidAbsoluteUrl = function createValidAbsoluteUrl(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\n if (!t) return null;\n try {\n if (n && \"string\" == typeof t) {\n if (n.addDefaultProtocol && t.startsWith(\"www.\")) {\n const e = t.match(/\\./g);\n (e === null || e === void 0 ? void 0 : e.length) >= 2 && (t = \"http://\".concat(t));\n }\n if (n.tryConvertEncoding) try {\n t = stringToUTF8String(t);\n } catch (_unused) {}\n }\n const i = e ? new URL(t, e) : new URL(t);\n if (function _isValidProtocol(t) {\n switch (t === null || t === void 0 ? void 0 : t.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return !0;\n default:\n return !1;\n }\n }(i)) return i;\n } catch (_unused2) {}\n return null;\n };\n e.getModificationDate = function getModificationDate() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date();\n return [t.getUTCFullYear().toString(), (t.getUTCMonth() + 1).toString().padStart(2, \"0\"), t.getUTCDate().toString().padStart(2, \"0\"), t.getUTCHours().toString().padStart(2, \"0\"), t.getUTCMinutes().toString().padStart(2, \"0\"), t.getUTCSeconds().toString().padStart(2, \"0\")].join(\"\");\n };\n e.getUuid = function getUuid() {\n var _crypto, _crypto2;\n if (\"undefined\" != typeof crypto && \"function\" == typeof ((_crypto = crypto) === null || _crypto === void 0 ? void 0 : _crypto.randomUUID)) return crypto.randomUUID();\n const t = new Uint8Array(32);\n if (\"undefined\" != typeof crypto && \"function\" == typeof ((_crypto2 = crypto) === null || _crypto2 === void 0 ? void 0 : _crypto2.getRandomValues)) crypto.getRandomValues(t);else for (let e = 0; e < 32; e++) t[e] = Math.floor(255 * Math.random());\n return bytesToString(t);\n };\n e.getVerbosityLevel = function getVerbosityLevel() {\n return s;\n };\n e.info = function info(t) {\n s >= r.INFOS && console.log(\"Info: \".concat(t));\n };\n e.isArrayBuffer = function isArrayBuffer(t) {\n return \"object\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.byteLength);\n };\n e.isArrayEqual = function isArrayEqual(t, e) {\n if (t.length !== e.length) return !1;\n for (let n = 0, i = t.length; n < i; n++) if (t[n] !== e[n]) return !1;\n return !0;\n };\n e.isNodeJS = void 0;\n e.normalizeUnicode = function normalizeUnicode(t) {\n if (!c) {\n c = /([\\xA0\\xB5\\u037E\\u0EB3\\u2000-\\u200A\\u202F\\u2126\\uFB00-\\uFB04\\uFB06\\uFB20-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBA1\\uFBA4-\\uFBA9\\uFBAE-\\uFBB1\\uFBD3-\\uFBDC\\uFBDE-\\uFBE7\\uFBEA-\\uFBF8\\uFBFC\\uFBFD\\uFC00-\\uFC5D\\uFC64-\\uFCF1\\uFCF5-\\uFD3D\\uFD88\\uFDF4\\uFDFA\\uFDFB\\uFE71\\uFE77\\uFE79\\uFE7B\\uFE7D]+)|(\\uFB05+)/g;\n h = new Map([[\"ſt\", \"ſt\"]]);\n }\n return t.replaceAll(c, (t, e, n) => e ? e.normalize(\"NFKC\") : h.get(n));\n };\n e.objectFromMap = function objectFromMap(t) {\n const e = Object.create(null);\n for (const [n, i] of t) e[n] = i;\n return e;\n };\n e.objectSize = function objectSize(t) {\n return Object.keys(t).length;\n };\n e.setVerbosityLevel = function setVerbosityLevel(t) {\n Number.isInteger(t) && (s = t);\n };\n e.shadow = shadow;\n e.string32 = function string32(t) {\n return String.fromCharCode(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t);\n };\n e.stringToBytes = stringToBytes;\n e.stringToPDFString = function stringToPDFString(t) {\n if (t[0] >= \"ï\") {\n let e;\n \"þ\" === t[0] && \"ÿ\" === t[1] ? e = \"utf-16be\" : \"ÿ\" === t[0] && \"þ\" === t[1] ? e = \"utf-16le\" : \"ï\" === t[0] && \"»\" === t[1] && \"¿\" === t[2] && (e = \"utf-8\");\n if (e) try {\n const n = new TextDecoder(e, {\n fatal: !0\n }),\n i = stringToBytes(t);\n return n.decode(i);\n } catch (t) {\n warn(\"stringToPDFString: \\\"\".concat(t, \"\\\".\"));\n }\n }\n const e = [];\n for (let n = 0, i = t.length; n < i; n++) {\n const i = l[t.charCodeAt(n)];\n e.push(i ? String.fromCharCode(i) : t.charAt(n));\n }\n return e.join(\"\");\n };\n e.stringToUTF8String = stringToUTF8String;\n e.unreachable = unreachable;\n e.utf8StringToString = function utf8StringToString(t) {\n return unescape(encodeURIComponent(t));\n };\n e.warn = warn;\n n(2);\n n(84);\n n(86);\n n(87);\n n(89);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n const i = !(\"object\" != typeof process || process + \"\" != \"[object process]\" || process.versions.nw || process.versions.electron && process.type && \"browser\" !== process.type);\n e.isNodeJS = i;\n e.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n e.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];\n e.MAX_IMAGE_SIZE_TO_CACHE = 1e7;\n e.LINE_FACTOR = 1.35;\n e.LINE_DESCENT_FACTOR = .35;\n e.BASELINE_FACTOR = .25925925925925924;\n e.RenderingIntentFlag = {\n ANY: 1,\n DISPLAY: 2,\n PRINT: 4,\n SAVE: 8,\n ANNOTATIONS_FORMS: 16,\n ANNOTATIONS_STORAGE: 32,\n ANNOTATIONS_DISABLE: 64,\n OPLIST: 256\n };\n e.AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n };\n e.AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n e.AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15\n };\n e.AnnotationEditorParamsType = {\n RESIZE: 1,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23\n };\n e.PermissionFlag = {\n PRINT: 4,\n MODIFY_CONTENTS: 8,\n COPY: 16,\n MODIFY_ANNOTATIONS: 32,\n FILL_INTERACTIVE_FORMS: 256,\n COPY_FOR_ACCESSIBILITY: 512,\n ASSEMBLE: 1024,\n PRINT_HIGH_QUALITY: 2048\n };\n e.TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n };\n e.ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n };\n e.AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n };\n e.AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n };\n e.AnnotationFlag = {\n INVISIBLE: 1,\n HIDDEN: 2,\n PRINT: 4,\n NOZOOM: 8,\n NOROTATE: 16,\n NOVIEW: 32,\n READONLY: 64,\n LOCKED: 128,\n TOGGLENOVIEW: 256,\n LOCKEDCONTENTS: 512\n };\n e.AnnotationFieldFlag = {\n READONLY: 1,\n REQUIRED: 2,\n NOEXPORT: 4,\n MULTILINE: 4096,\n PASSWORD: 8192,\n NOTOGGLETOOFF: 16384,\n RADIO: 32768,\n PUSHBUTTON: 65536,\n COMBO: 131072,\n EDIT: 262144,\n SORT: 524288,\n FILESELECT: 1048576,\n MULTISELECT: 2097152,\n DONOTSPELLCHECK: 4194304,\n DONOTSCROLL: 8388608,\n COMB: 16777216,\n RICHTEXT: 33554432,\n RADIOSINUNISON: 33554432,\n COMMITONSELCHANGE: 67108864\n };\n e.AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n };\n e.AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n };\n e.DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n };\n e.PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n };\n const r = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n };\n e.VerbosityLevel = r;\n e.CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n };\n e.OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n };\n e.PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n };\n let s = r.WARNINGS;\n function warn(t) {\n s >= r.WARNINGS && console.log(\"Warning: \".concat(t));\n }\n function unreachable(t) {\n throw new Error(t);\n }\n function shadow(t, e, n) {\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n Object.defineProperty(t, e, {\n value: n,\n enumerable: !i,\n configurable: !0,\n writable: !1\n });\n return n;\n }\n const a = function BaseExceptionClosure() {\n function BaseException(t, e) {\n this.constructor === BaseException && unreachable(\"Cannot initialize BaseException.\");\n this.message = t;\n this.name = e;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n }();\n e.BaseException = a;\n e.PasswordException = class PasswordException extends a {\n constructor(t, e) {\n super(t, \"PasswordException\");\n this.code = e;\n }\n };\n e.UnknownErrorException = class UnknownErrorException extends a {\n constructor(t, e) {\n super(t, \"UnknownErrorException\");\n this.details = e;\n }\n };\n e.InvalidPDFException = class InvalidPDFException extends a {\n constructor(t) {\n super(t, \"InvalidPDFException\");\n }\n };\n e.MissingPDFException = class MissingPDFException extends a {\n constructor(t) {\n super(t, \"MissingPDFException\");\n }\n };\n e.UnexpectedResponseException = class UnexpectedResponseException extends a {\n constructor(t, e) {\n super(t, \"UnexpectedResponseException\");\n this.status = e;\n }\n };\n e.FormatError = class FormatError extends a {\n constructor(t) {\n super(t, \"FormatError\");\n }\n };\n e.AbortException = class AbortException extends a {\n constructor(t) {\n super(t, \"AbortException\");\n }\n };\n function bytesToString(t) {\n \"object\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.length) || unreachable(\"Invalid argument for bytesToString\");\n const e = t.length,\n n = 8192;\n if (e < n) return String.fromCharCode.apply(null, t);\n const i = [];\n for (let r = 0; r < e; r += n) {\n const s = Math.min(r + n, e),\n a = t.subarray(r, s);\n i.push(String.fromCharCode.apply(null, a));\n }\n return i.join(\"\");\n }\n function stringToBytes(t) {\n \"string\" != typeof t && unreachable(\"Invalid argument for stringToBytes\");\n const e = t.length,\n n = new Uint8Array(e);\n for (let i = 0; i < e; ++i) n[i] = 255 & t.charCodeAt(i);\n return n;\n }\n e.FeatureTest = class FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", function isLittleEndian() {\n const t = new Uint8Array(4);\n t[0] = 1;\n return 1 === new Uint32Array(t.buffer, 0, 1)[0];\n }());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", function isEvalSupported() {\n try {\n new Function(\"\");\n return !0;\n } catch (_unused3) {\n return !1;\n }\n }());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", \"undefined\" != typeof OffscreenCanvas);\n }\n static get platform() {\n return \"undefined\" == typeof navigator ? shadow(this, \"platform\", {\n isWin: !1,\n isMac: !1\n }) : shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n };\n const o = [...Array(256).keys()].map(t => t.toString(16).padStart(2, \"0\"));\n e.Util = class Util {\n static makeHexColor(t, e, n) {\n return \"#\".concat(o[t]).concat(o[e]).concat(o[n]);\n }\n static scaleMinMax(t, e) {\n let n;\n if (t[0]) {\n if (t[0] < 0) {\n n = e[0];\n e[0] = e[1];\n e[1] = n;\n }\n e[0] *= t[0];\n e[1] *= t[0];\n if (t[3] < 0) {\n n = e[2];\n e[2] = e[3];\n e[3] = n;\n }\n e[2] *= t[3];\n e[3] *= t[3];\n } else {\n n = e[0];\n e[0] = e[2];\n e[2] = n;\n n = e[1];\n e[1] = e[3];\n e[3] = n;\n if (t[1] < 0) {\n n = e[2];\n e[2] = e[3];\n e[3] = n;\n }\n e[2] *= t[1];\n e[3] *= t[1];\n if (t[2] < 0) {\n n = e[0];\n e[0] = e[1];\n e[1] = n;\n }\n e[0] *= t[2];\n e[1] *= t[2];\n }\n e[0] += t[4];\n e[1] += t[4];\n e[2] += t[5];\n e[3] += t[5];\n }\n static transform(t, e) {\n return [t[0] * e[0] + t[2] * e[1], t[1] * e[0] + t[3] * e[1], t[0] * e[2] + t[2] * e[3], t[1] * e[2] + t[3] * e[3], t[0] * e[4] + t[2] * e[5] + t[4], t[1] * e[4] + t[3] * e[5] + t[5]];\n }\n static applyTransform(t, e) {\n return [t[0] * e[0] + t[1] * e[2] + e[4], t[0] * e[1] + t[1] * e[3] + e[5]];\n }\n static applyInverseTransform(t, e) {\n const n = e[0] * e[3] - e[1] * e[2];\n return [(t[0] * e[3] - t[1] * e[2] + e[2] * e[5] - e[4] * e[3]) / n, (-t[0] * e[1] + t[1] * e[0] + e[4] * e[1] - e[5] * e[0]) / n];\n }\n static getAxialAlignedBoundingBox(t, e) {\n const n = this.applyTransform(t, e),\n i = this.applyTransform(t.slice(2, 4), e),\n r = this.applyTransform([t[0], t[3]], e),\n s = this.applyTransform([t[2], t[1]], e);\n return [Math.min(n[0], i[0], r[0], s[0]), Math.min(n[1], i[1], r[1], s[1]), Math.max(n[0], i[0], r[0], s[0]), Math.max(n[1], i[1], r[1], s[1])];\n }\n static inverseTransform(t) {\n const e = t[0] * t[3] - t[1] * t[2];\n return [t[3] / e, -t[1] / e, -t[2] / e, t[0] / e, (t[2] * t[5] - t[4] * t[3]) / e, (t[4] * t[1] - t[5] * t[0]) / e];\n }\n static singularValueDecompose2dScale(t) {\n const e = [t[0], t[2], t[1], t[3]],\n n = t[0] * e[0] + t[1] * e[2],\n i = t[0] * e[1] + t[1] * e[3],\n r = t[2] * e[0] + t[3] * e[2],\n s = t[2] * e[1] + t[3] * e[3],\n a = (n + s) / 2,\n o = Math.sqrt((n + s) ** 2 - 4 * (n * s - r * i)) / 2,\n l = a + o || 1,\n c = a - o || 1;\n return [Math.sqrt(l), Math.sqrt(c)];\n }\n static normalizeRect(t) {\n const e = t.slice(0);\n if (t[0] > t[2]) {\n e[0] = t[2];\n e[2] = t[0];\n }\n if (t[1] > t[3]) {\n e[1] = t[3];\n e[3] = t[1];\n }\n return e;\n }\n static intersect(t, e) {\n const n = Math.max(Math.min(t[0], t[2]), Math.min(e[0], e[2])),\n i = Math.min(Math.max(t[0], t[2]), Math.max(e[0], e[2]));\n if (n > i) return null;\n const r = Math.max(Math.min(t[1], t[3]), Math.min(e[1], e[3])),\n s = Math.min(Math.max(t[1], t[3]), Math.max(e[1], e[3]));\n return r > s ? null : [n, r, i, s];\n }\n static bezierBoundingBox(t, e, n, i, r, s, a, o) {\n const l = [],\n c = [[], []];\n let h, d, u, p, f, g, m, b;\n for (let c = 0; c < 2; ++c) {\n if (0 === c) {\n d = 6 * t - 12 * n + 6 * r;\n h = -3 * t + 9 * n - 9 * r + 3 * a;\n u = 3 * n - 3 * t;\n } else {\n d = 6 * e - 12 * i + 6 * s;\n h = -3 * e + 9 * i - 9 * s + 3 * o;\n u = 3 * i - 3 * e;\n }\n if (Math.abs(h) < 1e-12) {\n if (Math.abs(d) < 1e-12) continue;\n p = -u / d;\n 0 < p && p < 1 && l.push(p);\n } else {\n m = d * d - 4 * u * h;\n b = Math.sqrt(m);\n if (!(m < 0)) {\n f = (-d + b) / (2 * h);\n 0 < f && f < 1 && l.push(f);\n g = (-d - b) / (2 * h);\n 0 < g && g < 1 && l.push(g);\n }\n }\n }\n let v,\n y = l.length;\n const A = y;\n for (; y--;) {\n p = l[y];\n v = 1 - p;\n c[0][y] = v * v * v * t + 3 * v * v * p * n + 3 * v * p * p * r + p * p * p * a;\n c[1][y] = v * v * v * e + 3 * v * v * p * i + 3 * v * p * p * s + p * p * p * o;\n }\n c[0][A] = t;\n c[1][A] = e;\n c[0][A + 1] = a;\n c[1][A + 1] = o;\n c[0].length = c[1].length = A + 2;\n return [Math.min(...c[0]), Math.min(...c[1]), Math.max(...c[0]), Math.max(...c[1])];\n }\n };\n const l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364];\n function stringToUTF8String(t) {\n return decodeURIComponent(escape(t));\n }\n e.PromiseCapability = (_t = /*#__PURE__*/new WeakMap(), class PromiseCapability {\n constructor() {\n _classPrivateFieldInitSpec(this, _t, {\n writable: true,\n value: !1\n });\n this.promise = new Promise((t, e) => {\n this.resolve = e => {\n _classPrivateFieldSet(this, _t, !0);\n t(e);\n };\n this.reject = t => {\n _classPrivateFieldSet(this, _t, !0);\n e(t);\n };\n });\n }\n get settled() {\n return _classPrivateFieldGet(this, _t);\n }\n });\n let c = null,\n h = null;\n }, (t, e, n) => {\n var i = n(3),\n r = n(4),\n s = n(69),\n a = n(70),\n o = \"WebAssembly\",\n l = r[o],\n c = 7 !== Error(\"e\", {\n cause: 7\n }).cause,\n exportGlobalErrorCauseWrapper = function exportGlobalErrorCauseWrapper(t, e) {\n var n = {};\n n[t] = a(t, e, c);\n i({\n global: !0,\n constructor: !0,\n arity: 1,\n forced: c\n }, n);\n },\n exportWebAssemblyErrorCauseWrapper = function exportWebAssemblyErrorCauseWrapper(t, e) {\n if (l && l[t]) {\n var n = {};\n n[t] = a(o + \".\" + t, e, c);\n i({\n target: o,\n stat: !0,\n constructor: !0,\n arity: 1,\n forced: c\n }, n);\n }\n };\n exportGlobalErrorCauseWrapper(\"Error\", function (t) {\n return function Error(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"EvalError\", function (t) {\n return function EvalError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"RangeError\", function (t) {\n return function RangeError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"ReferenceError\", function (t) {\n return function ReferenceError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"SyntaxError\", function (t) {\n return function SyntaxError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"TypeError\", function (t) {\n return function TypeError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"URIError\", function (t) {\n return function URIError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"CompileError\", function (t) {\n return function CompileError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"LinkError\", function (t) {\n return function LinkError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"RuntimeError\", function (t) {\n return function RuntimeError(e) {\n return s(t, this, arguments);\n };\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(5).f,\n s = n(44),\n a = n(48),\n o = n(38),\n l = n(56),\n c = n(68);\n t.exports = function (t, e) {\n var n,\n h,\n d,\n u,\n p,\n f = t.target,\n g = t.global,\n m = t.stat;\n if (n = g ? i : m ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (h in e) {\n u = e[h];\n d = t.dontCallGetSet ? (p = r(n, h)) && p.value : n[h];\n if (!c(g ? h : f + (m ? \".\" : \"#\") + h, t.forced) && void 0 !== d) {\n if (typeof u == typeof d) continue;\n l(u, d);\n }\n (t.sham || d && d.sham) && s(u, \"sham\", !0);\n a(n, h, u, t);\n }\n };\n }, function (t) {\n var check = function check(t) {\n return t && t.Math == Math && t;\n };\n t.exports = check(\"object\" == typeof globalThis && globalThis) || check(\"object\" == typeof window && window) || check(\"object\" == typeof self && self) || check(\"object\" == typeof __webpack_require__.g && __webpack_require__.g) || function () {\n return this;\n }() || this || Function(\"return this\")();\n }, (t, e, n) => {\n var i = n(6),\n r = n(8),\n s = n(10),\n a = n(11),\n o = n(12),\n l = n(18),\n c = n(39),\n h = n(42),\n d = Object.getOwnPropertyDescriptor;\n e.f = i ? d : function getOwnPropertyDescriptor(t, e) {\n t = o(t);\n e = l(e);\n if (h) try {\n return d(t, e);\n } catch (t) {}\n if (c(t, e)) return a(!r(s.f, t, e), t[e]);\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n return 7 != Object.defineProperty({}, 1, {\n get: function get() {\n return 7;\n }\n })[1];\n });\n }, t => {\n t.exports = function (t) {\n try {\n return !!t();\n } catch (t) {\n return !0;\n }\n };\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype.call;\n t.exports = i ? r.bind(r) : function () {\n return r.apply(r, arguments);\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n var t = function () {}.bind();\n return \"function\" != typeof t || t.hasOwnProperty(\"prototype\");\n });\n }, (t, e) => {\n \"use strict\";\n\n var n = {}.propertyIsEnumerable,\n i = Object.getOwnPropertyDescriptor,\n r = i && !n.call({\n 1: 2\n }, 1);\n e.f = r ? function propertyIsEnumerable(t) {\n var e = i(this, t);\n return !!e && e.enumerable;\n } : n;\n }, t => {\n t.exports = function (t, e) {\n return {\n enumerable: !(1 & t),\n configurable: !(2 & t),\n writable: !(4 & t),\n value: e\n };\n };\n }, (t, e, n) => {\n var i = n(13),\n r = n(16);\n t.exports = function (t) {\n return i(r(t));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(15),\n a = Object,\n o = i(\"\".split);\n t.exports = r(function () {\n return !a(\"z\").propertyIsEnumerable(0);\n }) ? function (t) {\n return \"String\" == s(t) ? o(t, \"\") : a(t);\n } : a;\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype,\n s = r.call,\n a = i && r.bind.bind(s, s);\n t.exports = i ? a : function (t) {\n return function () {\n return s.apply(t, arguments);\n };\n };\n }, (t, e, n) => {\n var i = n(14),\n r = i({}.toString),\n s = i(\"\".slice);\n t.exports = function (t) {\n return s(r(t), 8, -1);\n };\n }, (t, e, n) => {\n var i = n(17),\n r = TypeError;\n t.exports = function (t) {\n if (i(t)) throw r(\"Can't call method on \" + t);\n return t;\n };\n }, t => {\n t.exports = function (t) {\n return null == t;\n };\n }, (t, e, n) => {\n var i = n(19),\n r = n(23);\n t.exports = function (t) {\n var e = i(t, \"string\");\n return r(e) ? e : e + \"\";\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(20),\n s = n(23),\n a = n(30),\n o = n(33),\n l = n(34),\n c = TypeError,\n h = l(\"toPrimitive\");\n t.exports = function (t, e) {\n if (!r(t) || s(t)) return t;\n var n,\n l = a(t, h);\n if (l) {\n void 0 === e && (e = \"default\");\n n = i(l, t, e);\n if (!r(n) || s(n)) return n;\n throw c(\"Can't convert object to primitive value\");\n }\n void 0 === e && (e = \"number\");\n return o(t, e);\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(22),\n s = r.all;\n t.exports = r.IS_HTMLDDA ? function (t) {\n return \"object\" == typeof t ? null !== t : i(t) || t === s;\n } : function (t) {\n return \"object\" == typeof t ? null !== t : i(t);\n };\n }, (t, e, n) => {\n var i = n(22),\n r = i.all;\n t.exports = i.IS_HTMLDDA ? function (t) {\n return \"function\" == typeof t || t === r;\n } : function (t) {\n return \"function\" == typeof t;\n };\n }, t => {\n var e = \"object\" == typeof document && document.all,\n n = void 0 === e && void 0 !== e;\n t.exports = {\n all: e,\n IS_HTMLDDA: n\n };\n }, (t, e, n) => {\n var i = n(24),\n r = n(21),\n s = n(25),\n a = n(26),\n o = Object;\n t.exports = a ? function (t) {\n return \"symbol\" == typeof t;\n } : function (t) {\n var e = i(\"Symbol\");\n return r(e) && s(e.prototype, o(t));\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(21);\n t.exports = function (t, e) {\n return arguments.length < 2 ? (n = i[t], r(n) ? n : void 0) : i[t] && i[t][e];\n var n;\n };\n }, (t, e, n) => {\n var i = n(14);\n t.exports = i({}.isPrototypeOf);\n }, (t, e, n) => {\n var i = n(27);\n t.exports = i && !Symbol.sham && \"symbol\" == typeof Symbol.iterator;\n }, (t, e, n) => {\n var i = n(28),\n r = n(7),\n s = n(4).String;\n t.exports = !!Object.getOwnPropertySymbols && !r(function () {\n var t = Symbol();\n return !s(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && i && i < 41;\n });\n }, (t, e, n) => {\n var i,\n r,\n s = n(4),\n a = n(29),\n o = s.process,\n l = s.Deno,\n c = o && o.versions || l && l.version,\n h = c && c.v8;\n h && (r = (i = h.split(\".\"))[0] > 0 && i[0] < 4 ? 1 : +(i[0] + i[1]));\n !r && a && (!(i = a.match(/Edge\\/(\\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\\/(\\d+)/)) && (r = +i[1]);\n t.exports = r;\n }, t => {\n t.exports = \"undefined\" != typeof navigator && String(navigator.userAgent) || \"\";\n }, (t, e, n) => {\n var i = n(31),\n r = n(17);\n t.exports = function (t, e) {\n var n = t[e];\n return r(n) ? void 0 : i(n);\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(32),\n s = TypeError;\n t.exports = function (t) {\n if (i(t)) return t;\n throw s(r(t) + \" is not a function\");\n };\n }, t => {\n var e = String;\n t.exports = function (t) {\n try {\n return e(t);\n } catch (t) {\n return \"Object\";\n }\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(21),\n s = n(20),\n a = TypeError;\n t.exports = function (t, e) {\n var n, o;\n if (\"string\" === e && r(n = t.toString) && !s(o = i(n, t))) return o;\n if (r(n = t.valueOf) && !s(o = i(n, t))) return o;\n if (\"string\" !== e && r(n = t.toString) && !s(o = i(n, t))) return o;\n throw a(\"Can't convert object to primitive value\");\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(35),\n s = n(39),\n a = n(41),\n o = n(27),\n l = n(26),\n c = i.Symbol,\n h = r(\"wks\"),\n d = l ? c.for || c : c && c.withoutSetter || a;\n t.exports = function (t) {\n s(h, t) || (h[t] = o && s(c, t) ? c[t] : d(\"Symbol.\" + t));\n return h[t];\n };\n }, (t, e, n) => {\n var i = n(36),\n r = n(37);\n (t.exports = function (t, e) {\n return r[t] || (r[t] = void 0 !== e ? e : {});\n })(\"versions\", []).push({\n version: \"3.31.1\",\n mode: i ? \"pure\" : \"global\",\n copyright: \"© 2014-2023 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n });\n }, t => {\n t.exports = !1;\n }, (t, e, n) => {\n var i = n(4),\n r = n(38),\n s = \"__core-js_shared__\",\n a = i[s] || r(s, {});\n t.exports = a;\n }, (t, e, n) => {\n var i = n(4),\n r = Object.defineProperty;\n t.exports = function (t, e) {\n try {\n r(i, t, {\n value: e,\n configurable: !0,\n writable: !0\n });\n } catch (n) {\n i[t] = e;\n }\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(40),\n s = i({}.hasOwnProperty);\n t.exports = Object.hasOwn || function hasOwn(t, e) {\n return s(r(t), e);\n };\n }, (t, e, n) => {\n var i = n(16),\n r = Object;\n t.exports = function (t) {\n return r(i(t));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = 0,\n s = Math.random(),\n a = i(1..toString);\n t.exports = function (t) {\n return \"Symbol(\" + (void 0 === t ? \"\" : t) + \")_\" + a(++r + s, 36);\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(7),\n s = n(43);\n t.exports = !i && !r(function () {\n return 7 != Object.defineProperty(s(\"div\"), \"a\", {\n get: function get() {\n return 7;\n }\n }).a;\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(20),\n s = i.document,\n a = r(s) && r(s.createElement);\n t.exports = function (t) {\n return a ? s.createElement(t) : {};\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(45),\n s = n(11);\n t.exports = i ? function (t, e, n) {\n return r.f(t, e, s(1, n));\n } : function (t, e, n) {\n t[e] = n;\n return t;\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(42),\n s = n(46),\n a = n(47),\n o = n(18),\n l = TypeError,\n c = Object.defineProperty,\n h = Object.getOwnPropertyDescriptor,\n d = \"enumerable\",\n u = \"configurable\",\n p = \"writable\";\n e.f = i ? s ? function defineProperty(t, e, n) {\n a(t);\n e = o(e);\n a(n);\n if (\"function\" == typeof t && \"prototype\" === e && \"value\" in n && p in n && !n[p]) {\n var i = h(t, e);\n if (i && i[p]) {\n t[e] = n.value;\n n = {\n configurable: u in n ? n[u] : i[u],\n enumerable: d in n ? n[d] : i[d],\n writable: !1\n };\n }\n }\n return c(t, e, n);\n } : c : function defineProperty(t, e, n) {\n a(t);\n e = o(e);\n a(n);\n if (r) try {\n return c(t, e, n);\n } catch (t) {}\n if (\"get\" in n || \"set\" in n) throw l(\"Accessors not supported\");\n \"value\" in n && (t[e] = n.value);\n return t;\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(7);\n t.exports = i && r(function () {\n return 42 != Object.defineProperty(function () {}, \"prototype\", {\n value: 42,\n writable: !1\n }).prototype;\n });\n }, (t, e, n) => {\n var i = n(20),\n r = String,\n s = TypeError;\n t.exports = function (t) {\n if (i(t)) return t;\n throw s(r(t) + \" is not an object\");\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(45),\n s = n(49),\n a = n(38);\n t.exports = function (t, e, n, o) {\n o || (o = {});\n var l = o.enumerable,\n c = void 0 !== o.name ? o.name : e;\n i(n) && s(n, c, o);\n if (o.global) l ? t[e] = n : a(e, n);else {\n try {\n o.unsafe ? t[e] && (l = !0) : delete t[e];\n } catch (t) {}\n l ? t[e] = n : r.f(t, e, {\n value: n,\n enumerable: !1,\n configurable: !o.nonConfigurable,\n writable: !o.nonWritable\n });\n }\n return t;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(21),\n a = n(39),\n o = n(6),\n l = n(50).CONFIGURABLE,\n c = n(51),\n h = n(52),\n d = h.enforce,\n u = h.get,\n p = String,\n f = Object.defineProperty,\n g = i(\"\".slice),\n m = i(\"\".replace),\n b = i([].join),\n v = o && !r(function () {\n return 8 !== f(function () {}, \"length\", {\n value: 8\n }).length;\n }),\n y = String(String).split(\"String\"),\n A = t.exports = function (t, e, n) {\n \"Symbol(\" === g(p(e), 0, 7) && (e = \"[\" + m(p(e), /^Symbol\\(([^)]*)\\)/, \"$1\") + \"]\");\n n && n.getter && (e = \"get \" + e);\n n && n.setter && (e = \"set \" + e);\n (!a(t, \"name\") || l && t.name !== e) && (o ? f(t, \"name\", {\n value: e,\n configurable: !0\n }) : t.name = e);\n v && n && a(n, \"arity\") && t.length !== n.arity && f(t, \"length\", {\n value: n.arity\n });\n try {\n n && a(n, \"constructor\") && n.constructor ? o && f(t, \"prototype\", {\n writable: !1\n }) : t.prototype && (t.prototype = void 0);\n } catch (t) {}\n var i = d(t);\n a(i, \"source\") || (i.source = b(y, \"string\" == typeof e ? e : \"\"));\n return t;\n };\n Function.prototype.toString = A(function toString() {\n return s(this) && u(this).source || c(this);\n }, \"toString\");\n }, (t, e, n) => {\n var i = n(6),\n r = n(39),\n s = Function.prototype,\n a = i && Object.getOwnPropertyDescriptor,\n o = r(s, \"name\"),\n l = o && \"something\" === function something() {}.name,\n c = o && (!i || i && a(s, \"name\").configurable);\n t.exports = {\n EXISTS: o,\n PROPER: l,\n CONFIGURABLE: c\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(21),\n s = n(37),\n a = i(Function.toString);\n r(s.inspectSource) || (s.inspectSource = function (t) {\n return a(t);\n });\n t.exports = s.inspectSource;\n }, (t, e, n) => {\n var i,\n r,\n s,\n a = n(53),\n o = n(4),\n l = n(20),\n c = n(44),\n h = n(39),\n d = n(37),\n u = n(54),\n p = n(55),\n f = \"Object already initialized\",\n g = o.TypeError,\n m = o.WeakMap;\n if (a || d.state) {\n var b = d.state || (d.state = new m());\n b.get = b.get;\n b.has = b.has;\n b.set = b.set;\n i = function i(t, e) {\n if (b.has(t)) throw g(f);\n e.facade = t;\n b.set(t, e);\n return e;\n };\n r = function r(t) {\n return b.get(t) || {};\n };\n s = function s(t) {\n return b.has(t);\n };\n } else {\n var v = u(\"state\");\n p[v] = !0;\n i = function i(t, e) {\n if (h(t, v)) throw g(f);\n e.facade = t;\n c(t, v, e);\n return e;\n };\n r = function r(t) {\n return h(t, v) ? t[v] : {};\n };\n s = function s(t) {\n return h(t, v);\n };\n }\n t.exports = {\n set: i,\n get: r,\n has: s,\n enforce: function enforce(t) {\n return s(t) ? r(t) : i(t, {});\n },\n getterFor: function getterFor(t) {\n return function (e) {\n var n;\n if (!l(e) || (n = r(e)).type !== t) throw g(\"Incompatible receiver, \" + t + \" required\");\n return n;\n };\n }\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(21),\n s = i.WeakMap;\n t.exports = r(s) && /native code/.test(String(s));\n }, (t, e, n) => {\n var i = n(35),\n r = n(41),\n s = i(\"keys\");\n t.exports = function (t) {\n return s[t] || (s[t] = r(t));\n };\n }, t => {\n t.exports = {};\n }, (t, e, n) => {\n var i = n(39),\n r = n(57),\n s = n(5),\n a = n(45);\n t.exports = function (t, e, n) {\n for (var o = r(e), l = a.f, c = s.f, h = 0; h < o.length; h++) {\n var d = o[h];\n i(t, d) || n && i(n, d) || l(t, d, c(e, d));\n }\n };\n }, (t, e, n) => {\n var i = n(24),\n r = n(14),\n s = n(58),\n a = n(67),\n o = n(47),\n l = r([].concat);\n t.exports = i(\"Reflect\", \"ownKeys\") || function ownKeys(t) {\n var e = s.f(o(t)),\n n = a.f;\n return n ? l(e, n(t)) : e;\n };\n }, (t, e, n) => {\n var i = n(59),\n r = n(66).concat(\"length\", \"prototype\");\n e.f = Object.getOwnPropertyNames || function getOwnPropertyNames(t) {\n return i(t, r);\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(39),\n s = n(12),\n a = n(60).indexOf,\n o = n(55),\n l = i([].push);\n t.exports = function (t, e) {\n var n,\n i = s(t),\n c = 0,\n h = [];\n for (n in i) !r(o, n) && r(i, n) && l(h, n);\n for (; e.length > c;) r(i, n = e[c++]) && (~a(h, n) || l(h, n));\n return h;\n };\n }, (t, e, n) => {\n var i = n(12),\n r = n(61),\n s = n(64),\n createMethod = function createMethod(t) {\n return function (e, n, a) {\n var o,\n l = i(e),\n c = s(l),\n h = r(a, c);\n if (t && n != n) {\n for (; c > h;) if ((o = l[h++]) != o) return !0;\n } else for (; c > h; h++) if ((t || h in l) && l[h] === n) return t || h || 0;\n return !t && -1;\n };\n };\n t.exports = {\n includes: createMethod(!0),\n indexOf: createMethod(!1)\n };\n }, (t, e, n) => {\n var i = n(62),\n r = Math.max,\n s = Math.min;\n t.exports = function (t, e) {\n var n = i(t);\n return n < 0 ? r(n + e, 0) : s(n, e);\n };\n }, (t, e, n) => {\n var i = n(63);\n t.exports = function (t) {\n var e = +t;\n return e != e || 0 === e ? 0 : i(e);\n };\n }, t => {\n var e = Math.ceil,\n n = Math.floor;\n t.exports = Math.trunc || function trunc(t) {\n var i = +t;\n return (i > 0 ? n : e)(i);\n };\n }, (t, e, n) => {\n var i = n(65);\n t.exports = function (t) {\n return i(t.length);\n };\n }, (t, e, n) => {\n var i = n(62),\n r = Math.min;\n t.exports = function (t) {\n return t > 0 ? r(i(t), 9007199254740991) : 0;\n };\n }, t => {\n t.exports = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"];\n }, (t, e) => {\n e.f = Object.getOwnPropertySymbols;\n }, (t, e, n) => {\n var i = n(7),\n r = n(21),\n s = /#|\\.prototype\\./,\n isForced = function isForced(t, e) {\n var n = o[a(t)];\n return n == c || n != l && (r(e) ? i(e) : !!e);\n },\n a = isForced.normalize = function (t) {\n return String(t).replace(s, \".\").toLowerCase();\n },\n o = isForced.data = {},\n l = isForced.NATIVE = \"N\",\n c = isForced.POLYFILL = \"P\";\n t.exports = isForced;\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype,\n s = r.apply,\n a = r.call;\n t.exports = \"object\" == typeof Reflect && Reflect.apply || (i ? a.bind(s) : function () {\n return a.apply(s, arguments);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(24),\n r = n(39),\n s = n(44),\n a = n(25),\n o = n(71),\n l = n(56),\n c = n(74),\n h = n(75),\n d = n(76),\n u = n(80),\n p = n(81),\n f = n(6),\n g = n(36);\n t.exports = function (t, e, n, m) {\n var b = \"stackTraceLimit\",\n v = m ? 2 : 1,\n y = t.split(\".\"),\n A = y[y.length - 1],\n _ = i.apply(null, y);\n if (_) {\n var S = _.prototype;\n !g && r(S, \"cause\") && delete S.cause;\n if (!n) return _;\n var E = i(\"Error\"),\n x = e(function (t, e) {\n var n = d(m ? e : t, void 0),\n i = m ? new _(t) : new _();\n void 0 !== n && s(i, \"message\", n);\n p(i, x, i.stack, 2);\n this && a(S, this) && h(i, this, x);\n arguments.length > v && u(i, arguments[v]);\n return i;\n });\n x.prototype = S;\n if (\"Error\" !== A) o ? o(x, E) : l(x, E, {\n name: !0\n });else if (f && b in _) {\n c(x, _, b);\n c(x, _, \"prepareStackTrace\");\n }\n l(x, _);\n if (!g) try {\n S.name !== A && s(S, \"name\", A);\n S.constructor = x;\n } catch (t) {}\n return x;\n }\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(47),\n s = n(73);\n t.exports = Object.setPrototypeOf || (\"__proto__\" in {} ? function () {\n var t,\n e = !1,\n n = {};\n try {\n (t = i(Object.prototype, \"__proto__\", \"set\"))(n, []);\n e = n instanceof Array;\n } catch (t) {}\n return function setPrototypeOf(n, i) {\n r(n);\n s(i);\n e ? t(n, i) : n.__proto__ = i;\n return n;\n };\n }() : void 0);\n }, (t, e, n) => {\n var i = n(14),\n r = n(31);\n t.exports = function (t, e, n) {\n try {\n return i(r(Object.getOwnPropertyDescriptor(t, e)[n]));\n } catch (t) {}\n };\n }, (t, e, n) => {\n var i = n(21),\n r = String,\n s = TypeError;\n t.exports = function (t) {\n if (\"object\" == typeof t || i(t)) return t;\n throw s(\"Can't set \" + r(t) + \" as a prototype\");\n };\n }, (t, e, n) => {\n var i = n(45).f;\n t.exports = function (t, e, n) {\n n in t || i(t, n, {\n configurable: !0,\n get: function get() {\n return e[n];\n },\n set: function set(t) {\n e[n] = t;\n }\n });\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(20),\n s = n(71);\n t.exports = function (t, e, n) {\n var a, o;\n s && i(a = e.constructor) && a !== n && r(o = a.prototype) && o !== n.prototype && s(t, o);\n return t;\n };\n }, (t, e, n) => {\n var i = n(77);\n t.exports = function (t, e) {\n return void 0 === t ? arguments.length < 2 ? \"\" : e : i(t);\n };\n }, (t, e, n) => {\n var i = n(78),\n r = String;\n t.exports = function (t) {\n if (\"Symbol\" === i(t)) throw TypeError(\"Cannot convert a Symbol value to a string\");\n return r(t);\n };\n }, (t, e, n) => {\n var i = n(79),\n r = n(21),\n s = n(15),\n a = n(34)(\"toStringTag\"),\n o = Object,\n l = \"Arguments\" == s(function () {\n return arguments;\n }());\n t.exports = i ? s : function (t) {\n var e, n, i;\n return void 0 === t ? \"Undefined\" : null === t ? \"Null\" : \"string\" == typeof (n = function (t, e) {\n try {\n return t[e];\n } catch (t) {}\n }(e = o(t), a)) ? n : l ? s(e) : \"Object\" == (i = s(e)) && r(e.callee) ? \"Arguments\" : i;\n };\n }, (t, e, n) => {\n var i = {};\n i[n(34)(\"toStringTag\")] = \"z\";\n t.exports = \"[object z]\" === String(i);\n }, (t, e, n) => {\n var i = n(20),\n r = n(44);\n t.exports = function (t, e) {\n i(e) && \"cause\" in e && r(t, \"cause\", e.cause);\n };\n }, (t, e, n) => {\n var i = n(44),\n r = n(82),\n s = n(83),\n a = Error.captureStackTrace;\n t.exports = function (t, e, n, o) {\n s && (a ? a(t, e) : i(t, \"stack\", r(n, o)));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Error,\n s = i(\"\".replace),\n a = String(r(\"zxcasd\").stack),\n o = /\\n\\s*at [^:]*:[^\\n]*/,\n l = o.test(a);\n t.exports = function (t, e) {\n if (l && \"string\" == typeof t && !r.prepareStackTrace) for (; e--;) t = s(t, o, \"\");\n return t;\n };\n }, (t, e, n) => {\n var i = n(7),\n r = n(11);\n t.exports = !i(function () {\n var t = Error(\"a\");\n if (!(\"stack\" in t)) return !0;\n Object.defineProperty(t, \"stack\", r(1, 7));\n return 7 !== t.stack;\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(48),\n r = n(14),\n s = n(77),\n a = n(85),\n o = URLSearchParams,\n l = o.prototype,\n c = r(l.append),\n h = r(l.delete),\n d = r(l.forEach),\n u = r([].push),\n p = new o(\"a=1&a=2\");\n p.delete(\"a\", 1);\n p + \"\" != \"a=2\" && i(l, \"delete\", function (t) {\n var e = arguments.length,\n n = e < 2 ? void 0 : arguments[1];\n if (e && void 0 === n) return h(this, t);\n var i = [];\n d(this, function (t, e) {\n u(i, {\n key: e,\n value: t\n });\n });\n a(e, 1);\n for (var r, o = s(t), l = s(n), p = 0, f = 0, g = !1, m = i.length; p < m;) {\n r = i[p++];\n if (g || r.key === o) {\n g = !0;\n h(this, r.key);\n } else f++;\n }\n for (; f < m;) (r = i[f++]).key === o && r.value === l || c(this, r.key, r.value);\n }, {\n enumerable: !0,\n unsafe: !0\n });\n }, t => {\n var e = TypeError;\n t.exports = function (t, n) {\n if (t < n) throw e(\"Not enough arguments\");\n return t;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(48),\n r = n(14),\n s = n(77),\n a = n(85),\n o = URLSearchParams,\n l = o.prototype,\n c = r(l.getAll),\n h = r(l.has);\n new o(\"a=1\").has(\"a\", 2) && i(l, \"has\", function has(t) {\n var e = arguments.length,\n n = e < 2 ? void 0 : arguments[1];\n if (e && void 0 === n) return h(this, t);\n var i = c(this, t);\n a(e, 1);\n for (var r = s(n), o = 0; o < i.length;) if (i[o++] === r) return !0;\n return !1;\n }, {\n enumerable: !0,\n unsafe: !0\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(14),\n s = n(88),\n a = URLSearchParams.prototype,\n o = r(a.forEach);\n i && !(\"size\" in a) && s(a, \"size\", {\n get: function size() {\n var t = 0;\n o(this, function () {\n t++;\n });\n return t;\n },\n configurable: !0,\n enumerable: !0\n });\n }, (t, e, n) => {\n var i = n(49),\n r = n(45);\n t.exports = function (t, e, n) {\n n.get && i(n.get, e, {\n getter: !0\n });\n n.set && i(n.set, e, {\n setter: !0\n });\n return r.f(t, e, n);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(40),\n s = n(64),\n a = n(90),\n o = n(92);\n i({\n target: \"Array\",\n proto: !0,\n arity: 1,\n forced: n(7)(function () {\n return 4294967297 !== [].push.call({\n length: 4294967296\n }, 1);\n }) || !function () {\n try {\n Object.defineProperty([], \"length\", {\n writable: !1\n }).push();\n } catch (t) {\n return t instanceof TypeError;\n }\n }()\n }, {\n push: function push(t) {\n var e = r(this),\n n = s(e),\n i = arguments.length;\n o(n + i);\n for (var l = 0; l < i; l++) {\n e[n] = arguments[l];\n n++;\n }\n a(e, n);\n return n;\n }\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(91),\n s = TypeError,\n a = Object.getOwnPropertyDescriptor,\n o = i && !function () {\n if (void 0 !== this) return !0;\n try {\n Object.defineProperty([], \"length\", {\n writable: !1\n }).length = 1;\n } catch (t) {\n return t instanceof TypeError;\n }\n }();\n t.exports = o ? function (t, e) {\n if (r(t) && !a(t, \"length\").writable) throw s(\"Cannot set read only .length\");\n return t.length = e;\n } : function (t, e) {\n return t.length = e;\n };\n }, (t, e, n) => {\n var i = n(15);\n t.exports = Array.isArray || function isArray(t) {\n return \"Array\" == i(t);\n };\n }, t => {\n var e = TypeError;\n t.exports = function (t) {\n if (t > 9007199254740991) throw e(\"Maximum allowed index exceeded\");\n return t;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(98).findLast,\n s = i.aTypedArray;\n (0, i.exportTypedArrayMethod)(\"findLast\", function findLast(t) {\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i,\n r,\n s,\n a = n(95),\n o = n(6),\n l = n(4),\n c = n(21),\n h = n(20),\n d = n(39),\n u = n(78),\n p = n(32),\n f = n(44),\n g = n(48),\n m = n(88),\n b = n(25),\n v = n(96),\n y = n(71),\n A = n(34),\n _ = n(41),\n S = n(52),\n E = S.enforce,\n x = S.get,\n w = l.Int8Array,\n C = w && w.prototype,\n T = l.Uint8ClampedArray,\n P = T && T.prototype,\n k = w && v(w),\n M = C && v(C),\n R = Object.prototype,\n I = l.TypeError,\n D = A(\"toStringTag\"),\n O = _(\"TYPED_ARRAY_TAG\"),\n L = \"TypedArrayConstructor\",\n N = a && !!y && \"Opera\" !== u(l.opera),\n B = !1,\n j = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n },\n U = {\n BigInt64Array: 8,\n BigUint64Array: 8\n },\n getTypedArrayConstructor = function getTypedArrayConstructor(t) {\n var e = v(t);\n if (h(e)) {\n var n = x(e);\n return n && d(n, L) ? n[L] : getTypedArrayConstructor(e);\n }\n },\n isTypedArray = function isTypedArray(t) {\n if (!h(t)) return !1;\n var e = u(t);\n return d(j, e) || d(U, e);\n };\n for (i in j) (s = (r = l[i]) && r.prototype) ? E(s)[L] = r : N = !1;\n for (i in U) (s = (r = l[i]) && r.prototype) && (E(s)[L] = r);\n if (!N || !c(k) || k === Function.prototype) {\n k = function TypedArray() {\n throw I(\"Incorrect invocation\");\n };\n if (N) for (i in j) l[i] && y(l[i], k);\n }\n if (!N || !M || M === R) {\n M = k.prototype;\n if (N) for (i in j) l[i] && y(l[i].prototype, M);\n }\n N && v(P) !== M && y(P, M);\n if (o && !d(M, D)) {\n B = !0;\n m(M, D, {\n configurable: !0,\n get: function get() {\n return h(this) ? this[O] : void 0;\n }\n });\n for (i in j) l[i] && f(l[i], O, i);\n }\n t.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: N,\n TYPED_ARRAY_TAG: B && O,\n aTypedArray: function aTypedArray(t) {\n if (isTypedArray(t)) return t;\n throw I(\"Target is not a typed array\");\n },\n aTypedArrayConstructor: function aTypedArrayConstructor(t) {\n if (c(t) && (!y || b(k, t))) return t;\n throw I(p(t) + \" is not a typed array constructor\");\n },\n exportTypedArrayMethod: function exportTypedArrayMethod(t, e, n, i) {\n if (o) {\n if (n) for (var r in j) {\n var s = l[r];\n if (s && d(s.prototype, t)) try {\n delete s.prototype[t];\n } catch (n) {\n try {\n s.prototype[t] = e;\n } catch (t) {}\n }\n }\n M[t] && !n || g(M, t, n ? e : N && C[t] || e, i);\n }\n },\n exportTypedArrayStaticMethod: function exportTypedArrayStaticMethod(t, e, n) {\n var i, r;\n if (o) {\n if (y) {\n if (n) for (i in j) if ((r = l[i]) && d(r, t)) try {\n delete r[t];\n } catch (t) {}\n if (k[t] && !n) return;\n try {\n return g(k, t, n ? e : N && k[t] || e);\n } catch (t) {}\n }\n for (i in j) !(r = l[i]) || r[t] && !n || g(r, t, e);\n }\n },\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: function isView(t) {\n if (!h(t)) return !1;\n var e = u(t);\n return \"DataView\" === e || d(j, e) || d(U, e);\n },\n isTypedArray: isTypedArray,\n TypedArray: k,\n TypedArrayPrototype: M\n };\n }, t => {\n t.exports = \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof DataView;\n }, (t, e, n) => {\n var i = n(39),\n r = n(21),\n s = n(40),\n a = n(54),\n o = n(97),\n l = a(\"IE_PROTO\"),\n c = Object,\n h = c.prototype;\n t.exports = o ? c.getPrototypeOf : function (t) {\n var e = s(t);\n if (i(e, l)) return e[l];\n var n = e.constructor;\n return r(n) && e instanceof n ? n.prototype : e instanceof c ? h : null;\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n function F() {}\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n });\n }, (t, e, n) => {\n var i = n(99),\n r = n(13),\n s = n(40),\n a = n(64),\n createMethod = function createMethod(t) {\n var e = 1 == t;\n return function (n, o, l) {\n for (var c, h = s(n), d = r(h), u = i(o, l), p = a(d); p-- > 0;) if (u(c = d[p], p, h)) switch (t) {\n case 0:\n return c;\n case 1:\n return p;\n }\n return e ? -1 : void 0;\n };\n };\n t.exports = {\n findLast: createMethod(0),\n findLastIndex: createMethod(1)\n };\n }, (t, e, n) => {\n var i = n(100),\n r = n(31),\n s = n(9),\n a = i(i.bind);\n t.exports = function (t, e) {\n r(t);\n return void 0 === e ? t : s ? a(t, e) : function () {\n return t.apply(e, arguments);\n };\n };\n }, (t, e, n) => {\n var i = n(15),\n r = n(14);\n t.exports = function (t) {\n if (\"Function\" === i(t)) return r(t);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(98).findLastIndex,\n s = i.aTypedArray;\n (0, i.exportTypedArrayMethod)(\"findLastIndex\", function findLastIndex(t) {\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(4),\n r = n(8),\n s = n(94),\n a = n(64),\n o = n(103),\n l = n(40),\n c = n(7),\n h = i.RangeError,\n d = i.Int8Array,\n u = d && d.prototype,\n p = u && u.set,\n f = s.aTypedArray,\n g = s.exportTypedArrayMethod,\n m = !c(function () {\n var t = new Uint8ClampedArray(2);\n r(p, t, {\n length: 1,\n 0: 3\n }, 1);\n return 3 !== t[1];\n }),\n b = m && s.NATIVE_ARRAY_BUFFER_VIEWS && c(function () {\n var t = new d(2);\n t.set(1);\n t.set(\"2\", 1);\n return 0 !== t[0] || 2 !== t[1];\n });\n g(\"set\", function set(t) {\n f(this);\n var e = o(arguments.length > 1 ? arguments[1] : void 0, 1),\n n = l(t);\n if (m) return r(p, this, n, e);\n var i = this.length,\n s = a(n),\n c = 0;\n if (s + e > i) throw h(\"Wrong length\");\n for (; c < s;) this[e + c] = n[c++];\n }, !m || b);\n }, (t, e, n) => {\n var i = n(104),\n r = RangeError;\n t.exports = function (t, e) {\n var n = i(t);\n if (n % e) throw r(\"Wrong offset\");\n return n;\n };\n }, (t, e, n) => {\n var i = n(62),\n r = RangeError;\n t.exports = function (t) {\n var e = i(t);\n if (e < 0) throw r(\"The argument can't be less than 0\");\n return e;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(106),\n r = n(94),\n s = r.aTypedArray,\n a = r.exportTypedArrayMethod,\n o = r.getTypedArrayConstructor;\n a(\"toReversed\", function toReversed() {\n return i(s(this), o(this));\n });\n }, (t, e, n) => {\n var i = n(64);\n t.exports = function (t, e) {\n for (var n = i(t), r = new e(n), s = 0; s < n; s++) r[s] = t[n - s - 1];\n return r;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(14),\n s = n(31),\n a = n(108),\n o = i.aTypedArray,\n l = i.getTypedArrayConstructor,\n c = i.exportTypedArrayMethod,\n h = r(i.TypedArrayPrototype.sort);\n c(\"toSorted\", function toSorted(t) {\n void 0 !== t && s(t);\n var e = o(this),\n n = a(l(e), e);\n return h(n, t);\n });\n }, (t, e, n) => {\n var i = n(64);\n t.exports = function (t, e) {\n for (var n = 0, r = i(e), s = new t(r); r > n;) s[n] = e[n++];\n return s;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(110),\n r = n(94),\n s = n(111),\n a = n(62),\n o = n(112),\n l = r.aTypedArray,\n c = r.getTypedArrayConstructor,\n h = r.exportTypedArrayMethod,\n d = !!function () {\n try {\n new Int8Array(1).with(2, {\n valueOf: function valueOf() {\n throw 8;\n }\n });\n } catch (t) {\n return 8 === t;\n }\n }();\n h(\"with\", {\n with: function _with(t, e) {\n var n = l(this),\n r = a(t),\n h = s(n) ? o(e) : +e;\n return i(n, c(n), r, h);\n }\n }.with, !d);\n }, (t, e, n) => {\n var i = n(64),\n r = n(62),\n s = RangeError;\n t.exports = function (t, e, n, a) {\n var o = i(t),\n l = r(n),\n c = l < 0 ? o + l : l;\n if (c >= o || c < 0) throw s(\"Incorrect index\");\n for (var h = new e(o), d = 0; d < o; d++) h[d] = d === c ? a : t[d];\n return h;\n };\n }, (t, e, n) => {\n var i = n(78);\n t.exports = function (t) {\n var e = i(t);\n return \"BigInt64Array\" == e || \"BigUint64Array\" == e;\n };\n }, (t, e, n) => {\n var i = n(19),\n r = TypeError;\n t.exports = function (t) {\n var e = i(t, \"number\");\n if (\"number\" == typeof e) throw r(\"Can't convert number to bigint\");\n return BigInt(e);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(88),\n s = n(114),\n a = ArrayBuffer.prototype;\n i && !(\"detached\" in a) && r(a, \"detached\", {\n configurable: !0,\n get: function detached() {\n return s(this);\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(115),\n s = i(ArrayBuffer.prototype.slice);\n t.exports = function (t) {\n if (0 !== r(t)) return !1;\n try {\n s(t, 0, 0);\n return !1;\n } catch (t) {\n return !0;\n }\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(15),\n s = TypeError;\n t.exports = i(ArrayBuffer.prototype, \"byteLength\", \"get\") || function (t) {\n if (\"ArrayBuffer\" != r(t)) throw s(\"ArrayBuffer expected\");\n return t.byteLength;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(117);\n r && i({\n target: \"ArrayBuffer\",\n proto: !0\n }, {\n transfer: function transfer() {\n return r(this, arguments.length ? arguments[0] : void 0, !0);\n }\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(14),\n s = n(72),\n a = n(118),\n o = n(114),\n l = n(115),\n c = n(119),\n h = i.TypeError,\n d = i.structuredClone,\n u = i.ArrayBuffer,\n p = i.DataView,\n f = Math.min,\n g = u.prototype,\n m = p.prototype,\n b = r(g.slice),\n v = s(g, \"resizable\", \"get\"),\n y = s(g, \"maxByteLength\", \"get\"),\n A = r(m.getInt8),\n _ = r(m.setInt8);\n t.exports = c && function (t, e, n) {\n var i = l(t),\n r = void 0 === e ? i : a(e),\n s = !v || !v(t);\n if (o(t)) throw h(\"ArrayBuffer is detached\");\n var c = d(t, {\n transfer: [t]\n });\n if (i == r && (n || s)) return c;\n if (i >= r && (!n || s)) return b(c, 0, r);\n for (var g = n && !s && y ? {\n maxByteLength: y(c)\n } : void 0, m = new u(r, g), S = new p(c), E = new p(m), x = f(r, i), w = 0; w < x; w++) _(E, w, A(S, w));\n return m;\n };\n }, (t, e, n) => {\n var i = n(62),\n r = n(65),\n s = RangeError;\n t.exports = function (t) {\n if (void 0 === t) return 0;\n var e = i(t),\n n = r(e);\n if (e !== n) throw s(\"Wrong length or index\");\n return n;\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(7),\n s = n(28),\n a = n(120),\n o = n(121),\n l = n(122),\n c = i.structuredClone;\n t.exports = !!c && !r(function () {\n if (o && s > 92 || l && s > 94 || a && s > 97) return !1;\n var t = new ArrayBuffer(8),\n e = c(t, {\n transfer: [t]\n });\n return 0 != t.byteLength || 8 != e.byteLength;\n });\n }, (t, e, n) => {\n var i = n(121),\n r = n(122);\n t.exports = !i && !r && \"object\" == typeof window && \"object\" == typeof document;\n }, t => {\n t.exports = \"object\" == typeof Deno && Deno && \"object\" == typeof Deno.version;\n }, (t, e, n) => {\n var i = n(15);\n t.exports = \"undefined\" != typeof process && \"process\" == i(process);\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(117);\n r && i({\n target: \"ArrayBuffer\",\n proto: !0\n }, {\n transferToFixedLength: function transferToFixedLength() {\n return r(this, arguments.length ? arguments[0] : void 0, !1);\n }\n });\n }, (__unused_webpack_module, exports, __w_pdfjs_require__) => {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\n Object.defineProperty(exports, \"SVGGraphics\", {\n enumerable: !0,\n get: function get() {\n return _displaySvg.SVGGraphics;\n }\n });\n exports.build = void 0;\n exports.getDocument = getDocument;\n exports.version = void 0;\n __w_pdfjs_require__(84);\n __w_pdfjs_require__(86);\n __w_pdfjs_require__(87);\n __w_pdfjs_require__(2);\n __w_pdfjs_require__(93);\n __w_pdfjs_require__(101);\n __w_pdfjs_require__(102);\n __w_pdfjs_require__(105);\n __w_pdfjs_require__(107);\n __w_pdfjs_require__(109);\n __w_pdfjs_require__(113);\n __w_pdfjs_require__(116);\n __w_pdfjs_require__(123);\n __w_pdfjs_require__(89);\n __w_pdfjs_require__(125);\n __w_pdfjs_require__(135);\n __w_pdfjs_require__(137);\n __w_pdfjs_require__(140);\n __w_pdfjs_require__(142);\n __w_pdfjs_require__(144);\n __w_pdfjs_require__(146);\n __w_pdfjs_require__(148);\n __w_pdfjs_require__(151);\n var _util = __w_pdfjs_require__(1),\n _annotation_storage = __w_pdfjs_require__(162),\n _display_utils = __w_pdfjs_require__(167),\n _font_loader = __w_pdfjs_require__(170),\n _displayNode_utils = __w_pdfjs_require__(171),\n _canvas = __w_pdfjs_require__(172),\n _worker_options = __w_pdfjs_require__(175),\n _message_handler = __w_pdfjs_require__(176),\n _metadata = __w_pdfjs_require__(177),\n _optional_content_config = __w_pdfjs_require__(178),\n _transport_stream = __w_pdfjs_require__(179),\n _displayFetch_stream = __w_pdfjs_require__(180),\n _displayNetwork = __w_pdfjs_require__(183),\n _displayNode_stream = __w_pdfjs_require__(184),\n _displaySvg = __w_pdfjs_require__(185),\n _xfa_text = __w_pdfjs_require__(193);\n const DEFAULT_RANGE_CHUNK_SIZE = 65536,\n RENDERING_CANCELLED_TIMEOUT = 100,\n DELAYED_CLEANUP_TIMEOUT = 5e3,\n DefaultCanvasFactory = _util.isNodeJS ? _displayNode_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\n exports.DefaultCanvasFactory = DefaultCanvasFactory;\n const DefaultCMapReaderFactory = _util.isNodeJS ? _displayNode_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\n const DefaultFilterFactory = _util.isNodeJS ? _displayNode_utils.NodeFilterFactory : _display_utils.DOMFilterFactory;\n exports.DefaultFilterFactory = DefaultFilterFactory;\n const DefaultStandardFontDataFactory = _util.isNodeJS ? _displayNode_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\n function getDocument(t) {\n var _t$password, _t$length;\n \"string\" == typeof t || t instanceof URL ? t = {\n url: t\n } : (0, _util.isArrayBuffer)(t) && (t = {\n data: t\n });\n if (\"object\" != typeof t) throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n if (!t.url && !t.data && !t.range) throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n const e = new PDFDocumentLoadingTask(),\n {\n docId: n\n } = e,\n i = t.url ? getUrlProp(t.url) : null,\n r = t.data ? getDataProp(t.data) : null,\n s = t.httpHeaders || null,\n a = !0 === t.withCredentials,\n o = (_t$password = t.password) !== null && _t$password !== void 0 ? _t$password : null,\n l = t.range instanceof PDFDataRangeTransport ? t.range : null,\n c = Number.isInteger(t.rangeChunkSize) && t.rangeChunkSize > 0 ? t.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let h = t.worker instanceof PDFWorker ? t.worker : null;\n const d = t.verbosity,\n u = \"string\" != typeof t.docBaseUrl || (0, _display_utils.isDataScheme)(t.docBaseUrl) ? null : t.docBaseUrl,\n p = \"string\" == typeof t.cMapUrl ? t.cMapUrl : null,\n f = !1 !== t.cMapPacked,\n g = t.CMapReaderFactory || DefaultCMapReaderFactory,\n m = \"string\" == typeof t.standardFontDataUrl ? t.standardFontDataUrl : null,\n b = t.StandardFontDataFactory || DefaultStandardFontDataFactory,\n v = !0 !== t.stopAtErrors,\n y = Number.isInteger(t.maxImageSize) && t.maxImageSize > -1 ? t.maxImageSize : -1,\n A = !1 !== t.isEvalSupported,\n _ = \"boolean\" == typeof t.isOffscreenCanvasSupported ? t.isOffscreenCanvasSupported : !_util.isNodeJS,\n S = Number.isInteger(t.canvasMaxAreaInBytes) ? t.canvasMaxAreaInBytes : -1,\n E = \"boolean\" == typeof t.disableFontFace ? t.disableFontFace : _util.isNodeJS,\n x = !0 === t.fontExtraProperties,\n w = !0 === t.enableXfa,\n C = t.ownerDocument || globalThis.document,\n T = !0 === t.disableRange,\n P = !0 === t.disableStream,\n k = !0 === t.disableAutoFetch,\n M = !0 === t.pdfBug,\n R = l ? l.length : (_t$length = t.length) !== null && _t$length !== void 0 ? _t$length : NaN,\n I = \"boolean\" == typeof t.useSystemFonts ? t.useSystemFonts : !_util.isNodeJS && !E,\n D = \"boolean\" == typeof t.useWorkerFetch ? t.useWorkerFetch : g === _display_utils.DOMCMapReaderFactory && b === _display_utils.DOMStandardFontDataFactory && p && m && (0, _display_utils.isValidFetchUrl)(p, document.baseURI) && (0, _display_utils.isValidFetchUrl)(m, document.baseURI),\n O = t.canvasFactory || new DefaultCanvasFactory({\n ownerDocument: C\n }),\n L = t.filterFactory || new DefaultFilterFactory({\n docId: n,\n ownerDocument: C\n });\n (0, _util.setVerbosityLevel)(d);\n const N = {\n canvasFactory: O,\n filterFactory: L\n };\n if (!D) {\n N.cMapReaderFactory = new g({\n baseUrl: p,\n isCompressed: f\n });\n N.standardFontDataFactory = new b({\n baseUrl: m\n });\n }\n if (!h) {\n const t = {\n verbosity: d,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n h = t.port ? PDFWorker.fromPort(t) : new PDFWorker(t);\n e._worker = h;\n }\n const B = {\n docId: n,\n apiVersion: \"3.9.179\",\n data: r,\n password: o,\n disableAutoFetch: k,\n rangeChunkSize: c,\n length: R,\n docBaseUrl: u,\n enableXfa: w,\n evaluatorOptions: {\n maxImageSize: y,\n disableFontFace: E,\n ignoreErrors: v,\n isEvalSupported: A,\n isOffscreenCanvasSupported: _,\n canvasMaxAreaInBytes: S,\n fontExtraProperties: x,\n useSystemFonts: I,\n cMapUrl: D ? p : null,\n standardFontDataUrl: D ? m : null\n }\n },\n j = {\n ignoreErrors: v,\n isEvalSupported: A,\n disableFontFace: E,\n fontExtraProperties: x,\n enableXfa: w,\n ownerDocument: C,\n disableAutoFetch: k,\n pdfBug: M,\n styleElement: null\n };\n h.promise.then(function () {\n if (e.destroyed) throw new Error(\"Loading aborted\");\n const t = _fetchDocument(h, B),\n o = new Promise(function (t) {\n let e;\n if (l) e = new _transport_stream.PDFDataTransportStream({\n length: R,\n initialData: l.initialData,\n progressiveDone: l.progressiveDone,\n contentDispositionFilename: l.contentDispositionFilename,\n disableRange: T,\n disableStream: P\n }, l);else if (!r) {\n e = (t => _util.isNodeJS ? new _displayNode_stream.PDFNodeStream(t) : (0, _display_utils.isValidFetchUrl)(t.url) ? new _displayFetch_stream.PDFFetchStream(t) : new _displayNetwork.PDFNetworkStream(t))({\n url: i,\n length: R,\n httpHeaders: s,\n withCredentials: a,\n rangeChunkSize: c,\n disableRange: T,\n disableStream: P\n });\n }\n t(e);\n });\n return Promise.all([t, o]).then(function (t) {\n let [i, r] = t;\n if (e.destroyed) throw new Error(\"Loading aborted\");\n const s = new _message_handler.MessageHandler(n, i, h.port),\n a = new WorkerTransport(s, e, r, j, N);\n e._transport = a;\n s.send(\"Ready\", null);\n });\n }).catch(e._capability.reject);\n return e;\n }\n async function _fetchDocument(t, e) {\n if (t.destroyed) throw new Error(\"Worker was destroyed\");\n const n = await t.messageHandler.sendWithPromise(\"GetDocRequest\", e, e.data ? [e.data.buffer] : null);\n if (t.destroyed) throw new Error(\"Worker was destroyed\");\n return n;\n }\n function getUrlProp(t) {\n if (t instanceof URL) return t.href;\n try {\n return new URL(t, window.location).href;\n } catch (_unused4) {\n if (_util.isNodeJS && \"string\" == typeof t) return t;\n }\n throw new Error(\"Invalid PDF url data: either string or URL-object is expected in the url property.\");\n }\n function getDataProp(t) {\n if (_util.isNodeJS && \"undefined\" != typeof Buffer && t instanceof Buffer) throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n if (t instanceof Uint8Array && t.byteLength === t.buffer.byteLength) return t;\n if (\"string\" == typeof t) return (0, _util.stringToBytes)(t);\n if (\"object\" == typeof t && !isNaN(t === null || t === void 0 ? void 0 : t.length) || (0, _util.isArrayBuffer)(t)) return new Uint8Array(t);\n throw new Error(\"Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.\");\n }\n class PDFDocumentLoadingTask {\n constructor() {\n var _PDFDocumentLoadingTa, _PDFDocumentLoadingTa2;\n this._capability = new _util.PromiseCapability();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\" + (_classStaticPrivateFieldSpecSet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e, (_PDFDocumentLoadingTa = _classStaticPrivateFieldSpecGet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e), _PDFDocumentLoadingTa2 = _PDFDocumentLoadingTa++, _PDFDocumentLoadingTa)), _PDFDocumentLoadingTa2);\n this.destroyed = !1;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n var _this$_transport;\n this.destroyed = !0;\n await ((_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy());\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n }\n var _e = {\n writable: true,\n value: 0\n };\n exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n class PDFDataRangeTransport {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\n this.length = t;\n this.initialData = e;\n this.progressiveDone = n;\n this.contentDispositionFilename = i;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new _util.PromiseCapability();\n }\n addRangeListener(t) {\n this._rangeListeners.push(t);\n }\n addProgressListener(t) {\n this._progressListeners.push(t);\n }\n addProgressiveReadListener(t) {\n this._progressiveReadListeners.push(t);\n }\n addProgressiveDoneListener(t) {\n this._progressiveDoneListeners.push(t);\n }\n onDataRange(t, e) {\n for (const n of this._rangeListeners) n(t, e);\n }\n onDataProgress(t, e) {\n this._readyCapability.promise.then(() => {\n for (const n of this._progressListeners) n(t, e);\n });\n }\n onDataProgressiveRead(t) {\n this._readyCapability.promise.then(() => {\n for (const e of this._progressiveReadListeners) e(t);\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const t of this._progressiveDoneListeners) t();\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(t, e) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n }\n exports.PDFDataRangeTransport = PDFDataRangeTransport;\n class PDFDocumentProxy {\n constructor(t, e) {\n this._pdfInfo = t;\n this._transport = e;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(t) {\n return this._transport.getPage(t);\n }\n getPageIndex(t) {\n return this._transport.getPageIndex(t);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(t) {\n return this._transport.getDestination(t);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n return this._transport.startCleanup(t || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n }\n exports.PDFDocumentProxy = PDFDocumentProxy;\n var _n = /*#__PURE__*/new WeakMap();\n var _i = /*#__PURE__*/new WeakMap();\n var _s = /*#__PURE__*/new WeakSet();\n var _r = /*#__PURE__*/new WeakSet();\n class PDFPageProxy {\n constructor(_t2, _e2, n) {\n _classPrivateMethodInitSpec(this, _r);\n _classPrivateMethodInitSpec(this, _s);\n _classPrivateFieldInitSpec(this, _n, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _i, {\n writable: true,\n value: !1\n });\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n this._pageIndex = _t2;\n this._pageInfo = _e2;\n this._transport = n;\n this._stats = i ? new _display_utils.StatTimer() : null;\n this._pdfBug = i;\n this.commonObjs = n.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = !1;\n this._intentStates = new Map();\n this.destroyed = !1;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport() {\n let {\n scale: t,\n rotation: e = this.rotate,\n offsetX: n = 0,\n offsetY: i = 0,\n dontFlip: r = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale: t,\n rotation: e,\n offsetX: n,\n offsetY: i,\n dontFlip: r\n });\n }\n getAnnotations() {\n let {\n intent: t = \"display\"\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n const e = this._transport.getRenderingIntent(t);\n return this._transport.getAnnotations(this._pageIndex, e.renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n var _this$_transport$_htm;\n return ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null;\n }\n render(t) {\n var _this$_stats, _u;\n let {\n canvasContext: e,\n viewport: n,\n intent: i = \"display\",\n annotationMode: r = _util.AnnotationMode.ENABLE,\n transform: s = null,\n background: a = null,\n optionalContentConfigPromise: o = null,\n annotationCanvasMap: l = null,\n pageColors: c = null,\n printAnnotationStorage: h = null\n } = t;\n (_this$_stats = this._stats) === null || _this$_stats === void 0 ? void 0 : _this$_stats.time(\"Overall\");\n const d = this._transport.getRenderingIntent(i, r, h);\n _classPrivateFieldSet(this, _i, !1);\n _classPrivateMethodGet(this, _r, _r2).call(this);\n o || (o = this._transport.getOptionalContentConfig());\n let u = this._intentStates.get(d.cacheKey);\n if (!u) {\n u = Object.create(null);\n this._intentStates.set(d.cacheKey, u);\n }\n if (u.streamReaderCancelTimeout) {\n clearTimeout(u.streamReaderCancelTimeout);\n u.streamReaderCancelTimeout = null;\n }\n const p = !!(d.renderingIntent & _util.RenderingIntentFlag.PRINT);\n if (!u.displayReadyCapability) {\n var _this$_stats2;\n u.displayReadyCapability = new _util.PromiseCapability();\n u.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: !1,\n separateAnnots: null\n };\n (_this$_stats2 = this._stats) === null || _this$_stats2 === void 0 ? void 0 : _this$_stats2.time(\"Page Request\");\n this._pumpOperatorList(d);\n }\n const complete = t => {\n var _this$_stats3, _this$_stats4;\n u.renderTasks.delete(f);\n (this._maybeCleanupAfterRender || p) && _classPrivateFieldSet(this, _i, !0);\n _classPrivateMethodGet(this, _s, _s2).call(this, !p);\n if (t) {\n f.capability.reject(t);\n this._abortOperatorList({\n intentState: u,\n reason: t instanceof Error ? t : new Error(t)\n });\n } else f.capability.resolve();\n (_this$_stats3 = this._stats) === null || _this$_stats3 === void 0 ? void 0 : _this$_stats3.timeEnd(\"Rendering\");\n (_this$_stats4 = this._stats) === null || _this$_stats4 === void 0 ? void 0 : _this$_stats4.timeEnd(\"Overall\");\n },\n f = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext: e,\n viewport: n,\n transform: s,\n background: a\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap: l,\n operatorList: u.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !p,\n pdfBug: this._pdfBug,\n pageColors: c\n });\n ((_u = u).renderTasks || (_u.renderTasks = new Set())).add(f);\n const g = f.task;\n Promise.all([u.displayReadyCapability.promise, o]).then(t => {\n let [e, n] = t;\n if (this.destroyed) complete();else {\n var _this$_stats5;\n (_this$_stats5 = this._stats) === null || _this$_stats5 === void 0 ? void 0 : _this$_stats5.time(\"Rendering\");\n f.initializeGraphics({\n transparency: e,\n optionalContentConfig: n\n });\n f.operatorListChanged();\n }\n }).catch(complete);\n return g;\n }\n getOperatorList() {\n let {\n intent: t = \"display\",\n annotationMode: e = _util.AnnotationMode.ENABLE,\n printAnnotationStorage: n = null\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n const i = this._transport.getRenderingIntent(t, e, n, !0);\n let r,\n s = this._intentStates.get(i.cacheKey);\n if (!s) {\n s = Object.create(null);\n this._intentStates.set(i.cacheKey, s);\n }\n if (!s.opListReadCapability) {\n var _s3, _this$_stats6;\n r = Object.create(null);\n r.operatorListChanged = function operatorListChanged() {\n if (s.operatorList.lastChunk) {\n s.opListReadCapability.resolve(s.operatorList);\n s.renderTasks.delete(r);\n }\n };\n s.opListReadCapability = new _util.PromiseCapability();\n ((_s3 = s).renderTasks || (_s3.renderTasks = new Set())).add(r);\n s.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: !1,\n separateAnnots: null\n };\n (_this$_stats6 = this._stats) === null || _this$_stats6 === void 0 ? void 0 : _this$_stats6.time(\"Page Request\");\n this._pumpOperatorList(i);\n }\n return s.opListReadCapability.promise;\n }\n streamTextContent() {\n let {\n includeMarkedContent: t = !1,\n disableNormalization: e = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: !0 === t,\n disableNormalization: !0 === e\n }, {\n highWaterMark: 100,\n size: t => t.items.length\n });\n }\n getTextContent() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (this._transport._htmlForXfa) return this.getXfa().then(t => _xfa_text.XfaText.textContent(t));\n const e = this.streamTextContent(t);\n return new Promise(function (t, n) {\n const i = e.getReader(),\n r = {\n items: [],\n styles: Object.create(null)\n };\n !function pump() {\n i.read().then(function (e) {\n let {\n value: n,\n done: i\n } = e;\n if (i) t(r);else {\n Object.assign(r.styles, n.styles);\n r.items.push(...n.items);\n pump();\n }\n }, n);\n }();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = !0;\n const t = [];\n for (const e of this._intentStates.values()) {\n this._abortOperatorList({\n intentState: e,\n reason: new Error(\"Page was destroyed.\"),\n force: !0\n });\n if (!e.opListReadCapability) for (const n of e.renderTasks) {\n t.push(n.completed);\n n.cancel();\n }\n }\n this.objs.clear();\n _classPrivateFieldSet(this, _i, !1);\n _classPrivateMethodGet(this, _r, _r2).call(this);\n return Promise.all(t);\n }\n cleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n _classPrivateFieldSet(this, _i, !0);\n const e = _classPrivateMethodGet(this, _s, _s2).call(this, !1);\n t && e && this._stats && (this._stats = new _display_utils.StatTimer());\n return e;\n }\n _startRenderPage(t, e) {\n const n = this._intentStates.get(e);\n if (n) {\n var _this$_stats7, _n$displayReadyCapabi;\n (_this$_stats7 = this._stats) === null || _this$_stats7 === void 0 ? void 0 : _this$_stats7.timeEnd(\"Page Request\");\n (_n$displayReadyCapabi = n.displayReadyCapability) === null || _n$displayReadyCapabi === void 0 ? void 0 : _n$displayReadyCapabi.resolve(t);\n }\n }\n _renderPageChunk(t, e) {\n for (let n = 0, i = t.length; n < i; n++) {\n e.operatorList.fnArray.push(t.fnArray[n]);\n e.operatorList.argsArray.push(t.argsArray[n]);\n }\n e.operatorList.lastChunk = t.lastChunk;\n e.operatorList.separateAnnots = t.separateAnnots;\n for (const t of e.renderTasks) t.operatorListChanged();\n t.lastChunk && _classPrivateMethodGet(this, _s, _s2).call(this, !0);\n }\n _pumpOperatorList(t) {\n let {\n renderingIntent: e,\n cacheKey: n,\n annotationStorageSerializable: i\n } = t;\n const {\n map: r,\n transfers: s\n } = i,\n a = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: e,\n cacheKey: n,\n annotationStorage: r\n }, s).getReader(),\n o = this._intentStates.get(n);\n o.streamReader = a;\n const pump = () => {\n a.read().then(t => {\n let {\n value: e,\n done: n\n } = t;\n if (n) o.streamReader = null;else if (!this._transport.destroyed) {\n this._renderPageChunk(e, o);\n pump();\n }\n }, t => {\n o.streamReader = null;\n if (!this._transport.destroyed) {\n if (o.operatorList) {\n o.operatorList.lastChunk = !0;\n for (const t of o.renderTasks) t.operatorListChanged();\n _classPrivateMethodGet(this, _s, _s2).call(this, !0);\n }\n if (o.displayReadyCapability) o.displayReadyCapability.reject(t);else {\n if (!o.opListReadCapability) throw t;\n o.opListReadCapability.reject(t);\n }\n }\n });\n };\n pump();\n }\n _abortOperatorList(t) {\n let {\n intentState: e,\n reason: n,\n force: i = !1\n } = t;\n if (e.streamReader) {\n if (e.streamReaderCancelTimeout) {\n clearTimeout(e.streamReaderCancelTimeout);\n e.streamReaderCancelTimeout = null;\n }\n if (!i) {\n if (e.renderTasks.size > 0) return;\n if (n instanceof _display_utils.RenderingCancelledException) {\n let t = RENDERING_CANCELLED_TIMEOUT;\n n.extraDelay > 0 && n.extraDelay < 1e3 && (t += n.extraDelay);\n e.streamReaderCancelTimeout = setTimeout(() => {\n e.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState: e,\n reason: n,\n force: !0\n });\n }, t);\n return;\n }\n }\n e.streamReader.cancel(new _util.AbortException(n.message)).catch(() => {});\n e.streamReader = null;\n if (!this._transport.destroyed) {\n for (const [t, n] of this._intentStates) if (n === e) {\n this._intentStates.delete(t);\n break;\n }\n this.cleanup();\n }\n }\n }\n get stats() {\n return this._stats;\n }\n }\n function _s2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n _classPrivateMethodGet(this, _r, _r2).call(this);\n if (!_classPrivateFieldGet(this, _i) || this.destroyed) return !1;\n if (t) {\n _classPrivateFieldSet(this, _n, setTimeout(() => {\n _classPrivateFieldSet(this, _n, null);\n _classPrivateMethodGet(this, _s, _s2).call(this, !1);\n }, DELAYED_CLEANUP_TIMEOUT));\n return !1;\n }\n for (const {\n renderTasks: t,\n operatorList: e\n } of this._intentStates.values()) if (t.size > 0 || !e.lastChunk) return !1;\n this._intentStates.clear();\n this.objs.clear();\n _classPrivateFieldSet(this, _i, !1);\n return !0;\n }\n function _r2() {\n if (_classPrivateFieldGet(this, _n)) {\n clearTimeout(_classPrivateFieldGet(this, _n));\n _classPrivateFieldSet(this, _n, null);\n }\n }\n exports.PDFPageProxy = PDFPageProxy;\n var _a = /*#__PURE__*/new WeakMap();\n var _o = /*#__PURE__*/new WeakMap();\n class LoopbackPort {\n constructor() {\n _classPrivateFieldInitSpec(this, _a, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _o, {\n writable: true,\n value: Promise.resolve()\n });\n }\n postMessage(t, e) {\n const n = {\n data: structuredClone(t, null)\n };\n _classPrivateFieldGet(this, _o).then(() => {\n for (const t of _classPrivateFieldGet(this, _a)) t.call(this, n);\n });\n }\n addEventListener(t, e) {\n _classPrivateFieldGet(this, _a).add(e);\n }\n removeEventListener(t, e) {\n _classPrivateFieldGet(this, _a).delete(e);\n }\n terminate() {\n _classPrivateFieldGet(this, _a).clear();\n }\n }\n exports.LoopbackPort = LoopbackPort;\n const PDFWorkerUtil = {\n isWorkerDisabled: !1,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n };\n exports.PDFWorkerUtil = PDFWorkerUtil;\n if (_util.isNodeJS && \"function\" == \"function\") {\n PDFWorkerUtil.isWorkerDisabled = !0;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (\"object\" == typeof document) {\n var _document;\n const t = (_document = document) === null || _document === void 0 || (_document = _document.currentScript) === null || _document === void 0 ? void 0 : _document.src;\n t && (PDFWorkerUtil.fallbackWorkerSrc = t.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\"));\n }\n PDFWorkerUtil.isSameOrigin = function (t, e) {\n let n;\n try {\n n = new URL(t);\n if (!n.origin || \"null\" === n.origin) return !1;\n } catch (_unused5) {\n return !1;\n }\n const i = new URL(e, n);\n return n.origin === i.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (t) {\n const e = \"importScripts(\\\"\".concat(t, \"\\\");\");\n return URL.createObjectURL(new Blob([e]));\n };\n class PDFWorker {\n constructor() {\n let {\n name: t = null,\n port: e = null,\n verbosity: n = (0, _util.getVerbosityLevel)()\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (e && _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).has(e)) throw new Error(\"Cannot use more than one PDFWorker per port.\");\n this.name = t;\n this.destroyed = !1;\n this.verbosity = n;\n this._readyCapability = new _util.PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (e) {\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).set(e, this);\n this._initializeFromPort(e);\n } else this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(t) {\n this._port = t;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", t);\n this._messageHandler.on(\"ready\", function () {});\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let {\n workerSrc: t\n } = PDFWorker;\n try {\n PDFWorkerUtil.isSameOrigin(window.location.href, t) || (t = PDFWorkerUtil.createCDNWrapper(new URL(t, window.location).href));\n const e = new Worker(t),\n n = new _message_handler.MessageHandler(\"main\", \"worker\", e),\n terminateEarly = () => {\n e.removeEventListener(\"error\", onWorkerError);\n n.destroy();\n e.terminate();\n this.destroyed ? this._readyCapability.reject(new Error(\"Worker was destroyed\")) : this._setupFakeWorker();\n },\n onWorkerError = () => {\n this._webWorker || terminateEarly();\n };\n e.addEventListener(\"error\", onWorkerError);\n n.on(\"test\", t => {\n e.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) terminateEarly();else if (t) {\n this._messageHandler = n;\n this._port = e;\n this._webWorker = e;\n this._readyCapability.resolve();\n n.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n n.destroy();\n e.terminate();\n }\n });\n n.on(\"ready\", t => {\n e.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) terminateEarly();else try {\n sendTest();\n } catch (_unused6) {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const t = new Uint8Array();\n n.send(\"test\", t, [t.buffer]);\n };\n sendTest();\n return;\n } catch (_unused7) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = !0;\n }\n PDFWorker._setupFakeWorkerGlobal.then(t => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const e = new LoopbackPort();\n this._port = e;\n const n = \"fake\" + PDFWorkerUtil.fakeWorkerId++,\n i = new _message_handler.MessageHandler(n + \"_worker\", n, e);\n t.setup(i, e);\n const r = new _message_handler.MessageHandler(n, n + \"_worker\", e);\n this._messageHandler = r;\n this._readyCapability.resolve();\n r.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(t => {\n this._readyCapability.reject(new Error(\"Setting up fake worker failed: \\\"\".concat(t.message, \"\\\".\")));\n });\n }\n destroy() {\n this.destroyed = !0;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(t) {\n if (!(t !== null && t !== void 0 && t.port)) throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n return _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).has(t.port) ? _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).get(t.port) : new PDFWorker(t);\n }\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) return _worker_options.GlobalWorkerOptions.workerSrc;\n if (null !== PDFWorkerUtil.fallbackWorkerSrc) {\n _util.isNodeJS || (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get _mainThreadWorkerMessageHandler() {\n try {\n var _globalThis$pdfjsWork;\n return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null;\n } catch (_unused8) {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n if (mainWorkerMessageHandler) return mainWorkerMessageHandler;\n if (_util.isNodeJS && \"function\" == \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n }\n var _l = {\n writable: true,\n value: new WeakMap()\n };\n exports.PDFWorker = PDFWorker;\n var _c = /*#__PURE__*/new WeakMap();\n var _h = /*#__PURE__*/new WeakMap();\n var _d = /*#__PURE__*/new WeakMap();\n var _u2 = /*#__PURE__*/new WeakMap();\n var _p = /*#__PURE__*/new WeakSet();\n class WorkerTransport {\n constructor(_t3, _e3, _n2, _i2, r) {\n _classPrivateMethodInitSpec(this, _p);\n _classPrivateFieldInitSpec(this, _c, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _h, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _d, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _u2, {\n writable: true,\n value: null\n });\n this.messageHandler = _t3;\n this.loadingTask = _e3;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n ownerDocument: _i2.ownerDocument,\n styleElement: _i2.styleElement\n });\n this._params = _i2;\n this.canvasFactory = r.canvasFactory;\n this.filterFactory = r.filterFactory;\n this.cMapReaderFactory = r.cMapReaderFactory;\n this.standardFontDataFactory = r.standardFontDataFactory;\n this.destroyed = !1;\n this.destroyCapability = null;\n this._networkStream = _n2;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new _util.PromiseCapability();\n this.setupMessageHandler();\n }\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n getRenderingIntent(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _util.AnnotationMode.ENABLE,\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,\n i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],\n r = _util.RenderingIntentFlag.DISPLAY,\n s = _annotation_storage.SerializableEmpty;\n switch (t) {\n case \"any\":\n r = _util.RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n r = _util.RenderingIntentFlag.PRINT;\n break;\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid intent: \".concat(t));\n }\n switch (e) {\n case _util.AnnotationMode.DISABLE:\n r += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case _util.AnnotationMode.ENABLE:\n break;\n case _util.AnnotationMode.ENABLE_FORMS:\n r += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case _util.AnnotationMode.ENABLE_STORAGE:\n r += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n s = (r & _util.RenderingIntentFlag.PRINT && n instanceof _annotation_storage.PrintAnnotationStorage ? n : this.annotationStorage).serializable;\n break;\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid annotationMode: \".concat(e));\n }\n i && (r += _util.RenderingIntentFlag.OPLIST);\n return {\n renderingIntent: r,\n cacheKey: \"\".concat(r, \"_\").concat(s.hash),\n annotationStorageSerializable: s\n };\n }\n destroy() {\n var _classPrivateFieldGet2;\n if (this.destroyCapability) return this.destroyCapability.promise;\n this.destroyed = !0;\n this.destroyCapability = new _util.PromiseCapability();\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _u2)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const t = [];\n for (const e of _classPrivateFieldGet(this, _h).values()) t.push(e._destroy());\n _classPrivateFieldGet(this, _h).clear();\n _classPrivateFieldGet(this, _d).clear();\n this.hasOwnProperty(\"annotationStorage\") && this.annotationStorage.resetModified();\n const e = this.messageHandler.sendWithPromise(\"Terminate\", null);\n t.push(e);\n Promise.all(t).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n _classPrivateFieldGet(this, _c).clear();\n this.filterFactory.destroy();\n this._networkStream && this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler: t,\n loadingTask: e\n } = this;\n t.on(\"GetReader\", (t, e) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = t => {\n this._lastProgress = {\n loaded: t.loaded,\n total: t.total\n };\n };\n e.onPull = () => {\n this._fullReader.read().then(function (t) {\n let {\n value: n,\n done: i\n } = t;\n if (i) e.close();else {\n (0, _util.assert)(n instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n e.enqueue(new Uint8Array(n), 1, [n]);\n }\n }).catch(t => {\n e.error(t);\n });\n };\n e.onCancel = t => {\n this._fullReader.cancel(t);\n e.ready.catch(t => {\n if (!this.destroyed) throw t;\n });\n };\n });\n t.on(\"ReaderHeadersReady\", t => {\n const n = new _util.PromiseCapability(),\n i = this._fullReader;\n i.headersReady.then(() => {\n if (!i.isStreamingSupported || !i.isRangeSupported) {\n var _e$onProgress;\n this._lastProgress && ((_e$onProgress = e.onProgress) === null || _e$onProgress === void 0 ? void 0 : _e$onProgress.call(e, this._lastProgress));\n i.onProgress = t => {\n var _e$onProgress2;\n (_e$onProgress2 = e.onProgress) === null || _e$onProgress2 === void 0 ? void 0 : _e$onProgress2.call(e, {\n loaded: t.loaded,\n total: t.total\n });\n };\n }\n n.resolve({\n isStreamingSupported: i.isStreamingSupported,\n isRangeSupported: i.isRangeSupported,\n contentLength: i.contentLength\n });\n }, n.reject);\n return n.promise;\n });\n t.on(\"GetRangeReader\", (t, e) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const n = this._networkStream.getRangeReader(t.begin, t.end);\n if (n) {\n e.onPull = () => {\n n.read().then(function (t) {\n let {\n value: n,\n done: i\n } = t;\n if (i) e.close();else {\n (0, _util.assert)(n instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n e.enqueue(new Uint8Array(n), 1, [n]);\n }\n }).catch(t => {\n e.error(t);\n });\n };\n e.onCancel = t => {\n n.cancel(t);\n e.ready.catch(t => {\n if (!this.destroyed) throw t;\n });\n };\n } else e.close();\n });\n t.on(\"GetDoc\", t => {\n let {\n pdfInfo: n\n } = t;\n this._numPages = n.numPages;\n this._htmlForXfa = n.htmlForXfa;\n delete n.htmlForXfa;\n e._capability.resolve(new PDFDocumentProxy(n, this));\n });\n t.on(\"DocException\", function (t) {\n let n;\n switch (t.name) {\n case \"PasswordException\":\n n = new _util.PasswordException(t.message, t.code);\n break;\n case \"InvalidPDFException\":\n n = new _util.InvalidPDFException(t.message);\n break;\n case \"MissingPDFException\":\n n = new _util.MissingPDFException(t.message);\n break;\n case \"UnexpectedResponseException\":\n n = new _util.UnexpectedResponseException(t.message, t.status);\n break;\n case \"UnknownErrorException\":\n n = new _util.UnknownErrorException(t.message, t.details);\n break;\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n e._capability.reject(n);\n });\n t.on(\"PasswordRequest\", t => {\n _classPrivateFieldSet(this, _u2, new _util.PromiseCapability());\n if (e.onPassword) {\n const updatePassword = t => {\n t instanceof Error ? _classPrivateFieldGet(this, _u2).reject(t) : _classPrivateFieldGet(this, _u2).resolve({\n password: t\n });\n };\n try {\n e.onPassword(updatePassword, t.code);\n } catch (t) {\n _classPrivateFieldGet(this, _u2).reject(t);\n }\n } else _classPrivateFieldGet(this, _u2).reject(new _util.PasswordException(t.message, t.code));\n return _classPrivateFieldGet(this, _u2).promise;\n });\n t.on(\"DataLoaded\", t => {\n var _e$onProgress3;\n (_e$onProgress3 = e.onProgress) === null || _e$onProgress3 === void 0 ? void 0 : _e$onProgress3.call(e, {\n loaded: t.length,\n total: t.length\n });\n this.downloadInfoCapability.resolve(t);\n });\n t.on(\"StartRenderPage\", t => {\n if (this.destroyed) return;\n _classPrivateFieldGet(this, _h).get(t.pageIndex)._startRenderPage(t.transparency, t.cacheKey);\n });\n t.on(\"commonobj\", e => {\n var _globalThis$FontInspe;\n let [n, i, r] = e;\n if (!this.destroyed && !this.commonObjs.has(n)) switch (i) {\n case \"Font\":\n const e = this._params;\n if (\"error\" in r) {\n const t = r.error;\n (0, _util.warn)(\"Error during font loading: \".concat(t));\n this.commonObjs.resolve(n, t);\n break;\n }\n const s = e.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled ? (t, e) => globalThis.FontInspector.fontAdded(t, e) : null,\n a = new _font_loader.FontFaceObject(r, {\n isEvalSupported: e.isEvalSupported,\n disableFontFace: e.disableFontFace,\n ignoreErrors: e.ignoreErrors,\n inspectFont: s\n });\n this.fontLoader.bind(a).catch(e => t.sendWithPromise(\"FontFallback\", {\n id: n\n })).finally(() => {\n !e.fontExtraProperties && a.data && (a.data = null);\n this.commonObjs.resolve(n, a);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(n, r);\n break;\n default:\n throw new Error(\"Got unknown common object type \".concat(i));\n }\n });\n t.on(\"obj\", t => {\n let [e, n, i, r] = t;\n if (this.destroyed) return;\n const s = _classPrivateFieldGet(this, _h).get(n);\n if (!s.objs.has(e)) switch (i) {\n case \"Image\":\n s.objs.resolve(e, r);\n if (r) {\n var _r$data;\n let t;\n if (r.bitmap) {\n const {\n width: e,\n height: n\n } = r;\n t = e * n * 4;\n } else t = ((_r$data = r.data) === null || _r$data === void 0 ? void 0 : _r$data.length) || 0;\n t > _util.MAX_IMAGE_SIZE_TO_CACHE && (s._maybeCleanupAfterRender = !0);\n }\n break;\n case \"Pattern\":\n s.objs.resolve(e, r);\n break;\n default:\n throw new Error(\"Got unknown object type \".concat(i));\n }\n });\n t.on(\"DocProgress\", t => {\n var _e$onProgress4;\n this.destroyed || ((_e$onProgress4 = e.onProgress) === null || _e$onProgress4 === void 0 ? void 0 : _e$onProgress4.call(e, {\n loaded: t.loaded,\n total: t.total\n }));\n });\n t.on(\"FetchBuiltInCMap\", t => this.destroyed ? Promise.reject(new Error(\"Worker was destroyed.\")) : this.cMapReaderFactory ? this.cMapReaderFactory.fetch(t) : Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\")));\n t.on(\"FetchStandardFontData\", t => this.destroyed ? Promise.reject(new Error(\"Worker was destroyed.\")) : this.standardFontDataFactory ? this.standardFontDataFactory.fetch(t) : Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\")));\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n var _this$_fullReader$fil, _this$_fullReader;\n this.annotationStorage.size <= 0 && (0, _util.warn)(\"saveDocument called while `annotationStorage` is empty, please use the getData-method instead.\");\n const {\n map: t,\n transfers: e\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: t,\n filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null\n }, e).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(t) {\n if (!Number.isInteger(t) || t <= 0 || t > this._numPages) return Promise.reject(new Error(\"Invalid page request.\"));\n const e = t - 1,\n n = _classPrivateFieldGet(this, _d).get(e);\n if (n) return n;\n const i = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: e\n }).then(t => {\n if (this.destroyed) throw new Error(\"Transport destroyed\");\n const n = new PDFPageProxy(e, t, this, this._params.pdfBug);\n _classPrivateFieldGet(this, _h).set(e, n);\n return n;\n });\n _classPrivateFieldGet(this, _d).set(e, i);\n return i;\n }\n getPageIndex(t) {\n return \"object\" != typeof t || null === t || !Number.isInteger(t.num) || t.num < 0 || !Number.isInteger(t.gen) || t.gen < 0 ? Promise.reject(new Error(\"Invalid pageIndex request.\")) : this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: t.num,\n gen: t.gen\n });\n }\n getAnnotations(t, e) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: t,\n intent: e\n });\n }\n getFieldObjects() {\n return _classPrivateMethodGet(this, _p, _p2).call(this, \"GetFieldObjects\");\n }\n hasJSActions() {\n return _classPrivateMethodGet(this, _p, _p2).call(this, \"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(t) {\n return \"string\" != typeof t ? Promise.reject(new Error(\"Invalid destination request.\")) : this.messageHandler.sendWithPromise(\"GetDestination\", {\n id: t\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n getPageJSActions(t) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex: t\n });\n }\n getStructTree(t) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: t\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(t => new _optional_content_config.OptionalContentConfig(t));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const t = \"GetMetadata\",\n e = _classPrivateFieldGet(this, _c).get(t);\n if (e) return e;\n const n = this.messageHandler.sendWithPromise(t, null).then(t => {\n var _this$_fullReader$fil2, _this$_fullReader2, _this$_fullReader$con, _this$_fullReader3;\n return {\n info: t[0],\n metadata: t[1] ? new _metadata.Metadata(t[1]) : null,\n contentDispositionFilename: (_this$_fullReader$fil2 = (_this$_fullReader2 = this._fullReader) === null || _this$_fullReader2 === void 0 ? void 0 : _this$_fullReader2.filename) !== null && _this$_fullReader$fil2 !== void 0 ? _this$_fullReader$fil2 : null,\n contentLength: (_this$_fullReader$con = (_this$_fullReader3 = this._fullReader) === null || _this$_fullReader3 === void 0 ? void 0 : _this$_fullReader3.contentLength) !== null && _this$_fullReader$con !== void 0 ? _this$_fullReader$con : null\n };\n });\n _classPrivateFieldGet(this, _c).set(t, n);\n return n;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (!this.destroyed) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const t of _classPrivateFieldGet(this, _h).values()) {\n if (!t.cleanup()) throw new Error(\"startCleanup: Page \".concat(t.pageNumber, \" is currently rendering.\"));\n }\n this.commonObjs.clear();\n t || this.fontLoader.clear();\n _classPrivateFieldGet(this, _c).clear();\n this.filterFactory.destroy(!0);\n }\n }\n get loadingParams() {\n const {\n disableAutoFetch: t,\n enableXfa: e\n } = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: t,\n enableXfa: e\n });\n }\n }\n function _p2(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = _classPrivateFieldGet(this, _c).get(t);\n if (n) return n;\n const i = this.messageHandler.sendWithPromise(t, e);\n _classPrivateFieldGet(this, _c).set(t, i);\n return i;\n }\n var _f = /*#__PURE__*/new WeakMap();\n var _g = /*#__PURE__*/new WeakSet();\n class PDFObjects {\n constructor() {\n _classPrivateMethodInitSpec(this, _g);\n _classPrivateFieldInitSpec(this, _f, {\n writable: true,\n value: Object.create(null)\n });\n }\n get(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (e) {\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\n n.capability.promise.then(() => e(n.data));\n return null;\n }\n const n = _classPrivateFieldGet(this, _f)[t];\n if (!(n !== null && n !== void 0 && n.capability.settled)) throw new Error(\"Requesting object that isn't resolved yet \".concat(t, \".\"));\n return n.data;\n }\n has(t) {\n const e = _classPrivateFieldGet(this, _f)[t];\n return (e === null || e === void 0 ? void 0 : e.capability.settled) || !1;\n }\n resolve(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\n n.data = e;\n n.capability.resolve();\n }\n clear() {\n for (const t in _classPrivateFieldGet(this, _f)) {\n var _e$bitmap;\n const {\n data: e\n } = _classPrivateFieldGet(this, _f)[t];\n e === null || e === void 0 || (_e$bitmap = e.bitmap) === null || _e$bitmap === void 0 ? void 0 : _e$bitmap.close();\n }\n _classPrivateFieldSet(this, _f, Object.create(null));\n }\n }\n function _g2(t) {\n const e = _classPrivateFieldGet(this, _f)[t];\n return e || (_classPrivateFieldGet(this, _f)[t] = {\n capability: new _util.PromiseCapability(),\n data: null\n });\n }\n var _m = /*#__PURE__*/new WeakMap();\n class RenderTask {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _m, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _m, t);\n this.onContinue = null;\n }\n get promise() {\n return _classPrivateFieldGet(this, _m).capability.promise;\n }\n cancel() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\n _classPrivateFieldGet(this, _m).cancel(null, t);\n }\n get separateAnnots() {\n const {\n separateAnnots: t\n } = _classPrivateFieldGet(this, _m).operatorList;\n if (!t) return !1;\n const {\n annotationCanvasMap: e\n } = _classPrivateFieldGet(this, _m);\n return t.form || t.canvas && (e === null || e === void 0 ? void 0 : e.size) > 0;\n }\n }\n exports.RenderTask = RenderTask;\n class InternalRenderTask {\n constructor(t) {\n let {\n callback: e,\n params: n,\n objs: i,\n commonObjs: r,\n annotationCanvasMap: s,\n operatorList: a,\n pageIndex: o,\n canvasFactory: l,\n filterFactory: c,\n useRequestAnimationFrame: h = !1,\n pdfBug: d = !1,\n pageColors: u = null\n } = t;\n this.callback = e;\n this.params = n;\n this.objs = i;\n this.commonObjs = r;\n this.annotationCanvasMap = s;\n this.operatorListIdx = null;\n this.operatorList = a;\n this._pageIndex = o;\n this.canvasFactory = l;\n this.filterFactory = c;\n this._pdfBug = d;\n this.pageColors = u;\n this.running = !1;\n this.graphicsReadyCallback = null;\n this.graphicsReady = !1;\n this._useRequestAnimationFrame = !0 === h && \"undefined\" != typeof window;\n this.cancelled = !1;\n this.capability = new _util.PromiseCapability();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = n.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics(t) {\n var _globalThis$StepperMa, _this$graphicsReadyCa;\n let {\n transparency: e = !1,\n optionalContentConfig: n\n } = t;\n if (this.cancelled) return;\n if (this._canvas) {\n if (_classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).has(this._canvas)) throw new Error(\"Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.\");\n _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).add(this._canvas);\n }\n if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext: i,\n viewport: r,\n transform: s,\n background: a\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(i, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: n\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform: s,\n viewport: r,\n transparency: e,\n background: a\n });\n this.operatorListIdx = 0;\n this.graphicsReady = !0;\n (_this$graphicsReadyCa = this.graphicsReadyCallback) === null || _this$graphicsReadyCa === void 0 ? void 0 : _this$graphicsReadyCa.call(this);\n }\n cancel() {\n var _this$gfx;\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\n this.running = !1;\n this.cancelled = !0;\n (_this$gfx = this.gfx) === null || _this$gfx === void 0 ? void 0 : _this$gfx.endDrawing();\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\n this.callback(t || new _display_utils.RenderingCancelledException(\"Rendering cancelled, page \".concat(this._pageIndex + 1), e));\n }\n operatorListChanged() {\n if (this.graphicsReady) {\n var _this$stepper;\n (_this$stepper = this.stepper) === null || _this$stepper === void 0 ? void 0 : _this$stepper.updateOperatorList(this.operatorList);\n this.running || this._continue();\n } else this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound);\n }\n _continue() {\n this.running = !0;\n this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext());\n }\n _scheduleNext() {\n this._useRequestAnimationFrame ? window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n }) : Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n async _next() {\n if (!this.cancelled) {\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = !1;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing(this.pageColors);\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\n this.callback();\n }\n }\n }\n }\n }\n var _b = {\n writable: true,\n value: new WeakSet()\n };\n const version = \"3.9.179\";\n exports.version = version;\n const build = \"1ef6fbc52\";\n exports.build = build;\n }, (t, e, n) => {\n var i = n(3),\n r = n(126);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"difference\")\n }, {\n difference: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(129),\n a = n(132),\n o = n(133),\n l = n(130),\n c = n(131),\n h = r.has,\n d = r.remove;\n t.exports = function difference(t) {\n var e = i(this),\n n = o(t),\n r = s(e);\n a(e) <= n.size ? l(e, function (t) {\n n.includes(t) && d(r, t);\n }) : c(n.getIterator(), function (t) {\n h(e, t) && d(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(128).has;\n t.exports = function (t) {\n i(t);\n return t;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Set.prototype;\n t.exports = {\n Set: Set,\n add: i(r.add),\n has: i(r.has),\n remove: i(r.delete),\n proto: r\n };\n }, (t, e, n) => {\n var i = n(128),\n r = n(130),\n s = i.Set,\n a = i.add;\n t.exports = function (t) {\n var e = new s();\n r(t, function (t) {\n a(e, t);\n });\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(131),\n s = n(128),\n a = s.Set,\n o = s.proto,\n l = i(o.forEach),\n c = i(o.keys),\n h = c(new a()).next;\n t.exports = function (t, e, n) {\n return n ? r(c(t), e, h) : l(t, e);\n };\n }, (t, e, n) => {\n var i = n(8);\n t.exports = function (t, e, n) {\n for (var r, s, a = n || t.next; !(r = i(a, t)).done;) if (void 0 !== (s = e(r.value))) return s;\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(128);\n t.exports = i(r.proto, \"size\", \"get\") || function (t) {\n return t.size;\n };\n }, (t, e, n) => {\n var i = n(31),\n r = n(47),\n s = n(8),\n a = n(62),\n o = TypeError,\n l = Math.max,\n SetRecord = function SetRecord(t, e, n, i) {\n this.set = t;\n this.size = e;\n this.has = n;\n this.keys = i;\n };\n SetRecord.prototype = {\n getIterator: function getIterator() {\n return r(s(this.keys, this.set));\n },\n includes: function includes(t) {\n return s(this.has, this.set, t);\n }\n };\n t.exports = function (t) {\n r(t);\n var e = +t.size;\n if (e != e) throw o(\"Invalid size\");\n return new SetRecord(t, l(a(e), 0), i(t.has), i(t.keys));\n };\n }, (t, e, n) => {\n var i = n(24);\n t.exports = function (t) {\n try {\n new (i(\"Set\"))()[t]({\n size: 0,\n has: function has() {\n return !1;\n },\n keys: function keys() {\n return {\n next: function next() {\n return {\n done: !0\n };\n }\n };\n }\n });\n return !0;\n } catch (t) {\n return !1;\n }\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(7),\n s = n(136);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"intersection\") || r(function () {\n return \"3,2\" != Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])));\n })\n }, {\n intersection: s\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(132),\n a = n(133),\n o = n(130),\n l = n(131),\n c = r.Set,\n h = r.add,\n d = r.has;\n t.exports = function intersection(t) {\n var e = i(this),\n n = a(t),\n r = new c();\n s(e) > n.size ? l(n.getIterator(), function (t) {\n d(e, t) && h(r, t);\n }) : o(e, function (t) {\n n.includes(t) && h(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(138);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isDisjointFrom\")\n }, {\n isDisjointFrom: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).has,\n s = n(132),\n a = n(133),\n o = n(130),\n l = n(131),\n c = n(139);\n t.exports = function isDisjointFrom(t) {\n var e = i(this),\n n = a(t);\n if (s(e) <= n.size) return !1 !== o(e, function (t) {\n if (n.includes(t)) return !1;\n }, !0);\n var h = n.getIterator();\n return !1 !== l(h, function (t) {\n if (r(e, t)) return c(h, \"normal\", !1);\n });\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(47),\n s = n(30);\n t.exports = function (t, e, n) {\n var a, o;\n r(t);\n try {\n if (!(a = s(t, \"return\"))) {\n if (\"throw\" === e) throw n;\n return n;\n }\n a = i(a, t);\n } catch (t) {\n o = !0;\n a = t;\n }\n if (\"throw\" === e) throw n;\n if (o) throw a;\n r(a);\n return n;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(141);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isSubsetOf\")\n }, {\n isSubsetOf: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(132),\n s = n(130),\n a = n(133);\n t.exports = function isSubsetOf(t) {\n var e = i(this),\n n = a(t);\n return !(r(e) > n.size) && !1 !== s(e, function (t) {\n if (!n.includes(t)) return !1;\n }, !0);\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(143);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isSupersetOf\")\n }, {\n isSupersetOf: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).has,\n s = n(132),\n a = n(133),\n o = n(131),\n l = n(139);\n t.exports = function isSupersetOf(t) {\n var e = i(this),\n n = a(t);\n if (s(e) < n.size) return !1;\n var c = n.getIterator();\n return !1 !== o(c, function (t) {\n if (!r(e, t)) return l(c, \"normal\", !1);\n });\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(145);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"symmetricDifference\")\n }, {\n symmetricDifference: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(129),\n a = n(133),\n o = n(131),\n l = r.add,\n c = r.has,\n h = r.remove;\n t.exports = function symmetricDifference(t) {\n var e = i(this),\n n = a(t).getIterator(),\n r = s(e);\n o(n, function (t) {\n c(e, t) ? h(r, t) : l(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(147);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"union\")\n }, {\n union: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).add,\n s = n(129),\n a = n(133),\n o = n(131);\n t.exports = function union(t) {\n var e = i(this),\n n = a(t).getIterator(),\n l = s(e);\n o(n, function (t) {\n r(l, t);\n });\n return l;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(4),\n s = n(24),\n a = n(11),\n o = n(45).f,\n l = n(39),\n c = n(149),\n h = n(75),\n d = n(76),\n u = n(150),\n p = n(82),\n f = n(6),\n g = n(36),\n m = \"DOMException\",\n b = s(\"Error\"),\n v = s(m),\n y = function DOMException() {\n c(this, A);\n var t = arguments.length,\n e = d(t < 1 ? void 0 : arguments[0]),\n n = d(t < 2 ? void 0 : arguments[1], \"Error\"),\n i = new v(e, n),\n r = b(e);\n r.name = m;\n o(i, \"stack\", a(1, p(r.stack, 1)));\n h(i, this, y);\n return i;\n },\n A = y.prototype = v.prototype,\n _ = (\"stack\" in b(m)),\n S = (\"stack\" in new v(1, 2)),\n E = v && f && Object.getOwnPropertyDescriptor(r, m),\n x = !(!E || E.writable && E.configurable),\n w = _ && !x && !S;\n i({\n global: !0,\n constructor: !0,\n forced: g || w\n }, {\n DOMException: w ? y : v\n });\n var C = s(m),\n T = C.prototype;\n if (T.constructor !== C) {\n g || o(T, \"constructor\", a(1, C));\n for (var P in u) if (l(u, P)) {\n var k = u[P],\n M = k.s;\n l(C, M) || o(C, M, a(6, k.c));\n }\n }\n }, (t, e, n) => {\n var i = n(25),\n r = TypeError;\n t.exports = function (t, e) {\n if (i(e, t)) return t;\n throw r(\"Incorrect invocation\");\n };\n }, t => {\n t.exports = {\n IndexSizeError: {\n s: \"INDEX_SIZE_ERR\",\n c: 1,\n m: 1\n },\n DOMStringSizeError: {\n s: \"DOMSTRING_SIZE_ERR\",\n c: 2,\n m: 0\n },\n HierarchyRequestError: {\n s: \"HIERARCHY_REQUEST_ERR\",\n c: 3,\n m: 1\n },\n WrongDocumentError: {\n s: \"WRONG_DOCUMENT_ERR\",\n c: 4,\n m: 1\n },\n InvalidCharacterError: {\n s: \"INVALID_CHARACTER_ERR\",\n c: 5,\n m: 1\n },\n NoDataAllowedError: {\n s: \"NO_DATA_ALLOWED_ERR\",\n c: 6,\n m: 0\n },\n NoModificationAllowedError: {\n s: \"NO_MODIFICATION_ALLOWED_ERR\",\n c: 7,\n m: 1\n },\n NotFoundError: {\n s: \"NOT_FOUND_ERR\",\n c: 8,\n m: 1\n },\n NotSupportedError: {\n s: \"NOT_SUPPORTED_ERR\",\n c: 9,\n m: 1\n },\n InUseAttributeError: {\n s: \"INUSE_ATTRIBUTE_ERR\",\n c: 10,\n m: 1\n },\n InvalidStateError: {\n s: \"INVALID_STATE_ERR\",\n c: 11,\n m: 1\n },\n SyntaxError: {\n s: \"SYNTAX_ERR\",\n c: 12,\n m: 1\n },\n InvalidModificationError: {\n s: \"INVALID_MODIFICATION_ERR\",\n c: 13,\n m: 1\n },\n NamespaceError: {\n s: \"NAMESPACE_ERR\",\n c: 14,\n m: 1\n },\n InvalidAccessError: {\n s: \"INVALID_ACCESS_ERR\",\n c: 15,\n m: 1\n },\n ValidationError: {\n s: \"VALIDATION_ERR\",\n c: 16,\n m: 0\n },\n TypeMismatchError: {\n s: \"TYPE_MISMATCH_ERR\",\n c: 17,\n m: 1\n },\n SecurityError: {\n s: \"SECURITY_ERR\",\n c: 18,\n m: 1\n },\n NetworkError: {\n s: \"NETWORK_ERR\",\n c: 19,\n m: 1\n },\n AbortError: {\n s: \"ABORT_ERR\",\n c: 20,\n m: 1\n },\n URLMismatchError: {\n s: \"URL_MISMATCH_ERR\",\n c: 21,\n m: 1\n },\n QuotaExceededError: {\n s: \"QUOTA_EXCEEDED_ERR\",\n c: 22,\n m: 1\n },\n TimeoutError: {\n s: \"TIMEOUT_ERR\",\n c: 23,\n m: 1\n },\n InvalidNodeTypeError: {\n s: \"INVALID_NODE_TYPE_ERR\",\n c: 24,\n m: 1\n },\n DataCloneError: {\n s: \"DATA_CLONE_ERR\",\n c: 25,\n m: 1\n }\n };\n }, (t, e, n) => {\n var i,\n r = n(36),\n s = n(3),\n a = n(4),\n o = n(24),\n l = n(14),\n c = n(7),\n h = n(41),\n d = n(21),\n u = n(152),\n p = n(17),\n f = n(20),\n g = n(23),\n m = n(153),\n b = n(47),\n v = n(78),\n y = n(39),\n A = n(158),\n _ = n(44),\n S = n(64),\n E = n(85),\n x = n(159),\n w = n(161),\n C = n(128),\n T = n(83),\n P = n(119),\n k = a.Object,\n M = a.Array,\n R = a.Date,\n I = a.Error,\n D = a.EvalError,\n O = a.RangeError,\n L = a.ReferenceError,\n N = a.SyntaxError,\n B = a.TypeError,\n j = a.URIError,\n U = a.PerformanceMark,\n z = a.WebAssembly,\n H = z && z.CompileError || I,\n q = z && z.LinkError || I,\n W = z && z.RuntimeError || I,\n G = o(\"DOMException\"),\n V = w.Map,\n $ = w.has,\n X = w.get,\n K = w.set,\n Y = C.Set,\n J = C.add,\n Q = o(\"Object\", \"keys\"),\n Z = l([].push),\n tt = l((!0).valueOf),\n et = l(1..valueOf),\n nt = l(\"\".valueOf),\n it = l(R.prototype.getTime),\n rt = h(\"structuredClone\"),\n st = \"DataCloneError\",\n at = \"Transferring\",\n checkBasicSemantic = function checkBasicSemantic(t) {\n return !c(function () {\n var e = new a.Set([7]),\n n = t(e),\n i = t(k(7));\n return n == e || !n.has(7) || \"object\" != typeof i || 7 != i;\n }) && t;\n },\n checkErrorsCloning = function checkErrorsCloning(t, e) {\n return !c(function () {\n var n = new e(),\n i = t({\n a: n,\n b: n\n });\n return !(i && i.a === i.b && i.a instanceof e && i.a.stack === n.stack);\n });\n },\n ot = a.structuredClone,\n lt = r || !checkErrorsCloning(ot, I) || !checkErrorsCloning(ot, G) || !(i = ot, !c(function () {\n var t = i(new a.AggregateError([1], rt, {\n cause: 3\n }));\n return \"AggregateError\" != t.name || 1 != t.errors[0] || t.message != rt || 3 != t.cause;\n })),\n ct = !ot && checkBasicSemantic(function (t) {\n return new U(rt, {\n detail: t\n }).detail;\n }),\n ht = checkBasicSemantic(ot) || ct,\n throwUncloneable = function throwUncloneable(t) {\n throw new G(\"Uncloneable type: \" + t, st);\n },\n throwUnpolyfillable = function throwUnpolyfillable(t, e) {\n throw new G((e || \"Cloning\") + \" of \" + t + \" cannot be properly polyfilled in this engine\", st);\n },\n tryNativeRestrictedStructuredClone = function tryNativeRestrictedStructuredClone(t, e) {\n ht || throwUnpolyfillable(e);\n return ht(t);\n },\n cloneBuffer = function cloneBuffer(t, e, n) {\n if ($(e, t)) return X(e, t);\n var i, r, s, o, l, c;\n if (\"SharedArrayBuffer\" === (n || v(t))) i = ht ? ht(t) : t;else {\n var h = a.DataView;\n h || \"function\" == typeof t.slice || throwUnpolyfillable(\"ArrayBuffer\");\n try {\n if (\"function\" != typeof t.slice || t.resizable) {\n r = t.byteLength;\n s = \"maxByteLength\" in t ? {\n maxByteLength: t.maxByteLength\n } : void 0;\n i = new ArrayBuffer(r, s);\n o = new h(t);\n l = new h(i);\n for (c = 0; c < r; c++) l.setUint8(c, o.getUint8(c));\n } else i = t.slice(0);\n } catch (t) {\n throw new G(\"ArrayBuffer is detached\", st);\n }\n }\n K(e, t, i);\n return i;\n },\n cloneView = function cloneView(t, e, n, i, r) {\n var s = a[e];\n f(s) || throwUnpolyfillable(e);\n return new s(cloneBuffer(t.buffer, r), n, i);\n },\n Placeholder = function Placeholder(t, e, n) {\n this.object = t;\n this.type = e;\n this.metadata = n;\n },\n structuredCloneInternal = function structuredCloneInternal(t, e, n) {\n g(t) && throwUncloneable(\"Symbol\");\n if (!f(t)) return t;\n if (e) {\n if ($(e, t)) return X(e, t);\n } else e = new V();\n var i,\n r,\n s,\n l,\n c,\n h,\n u,\n p,\n m = v(t);\n switch (m) {\n case \"Array\":\n s = M(S(t));\n break;\n case \"Object\":\n s = {};\n break;\n case \"Map\":\n s = new V();\n break;\n case \"Set\":\n s = new Y();\n break;\n case \"RegExp\":\n s = new RegExp(t.source, x(t));\n break;\n case \"Error\":\n switch (r = t.name) {\n case \"AggregateError\":\n s = o(\"AggregateError\")([]);\n break;\n case \"EvalError\":\n s = D();\n break;\n case \"RangeError\":\n s = O();\n break;\n case \"ReferenceError\":\n s = L();\n break;\n case \"SyntaxError\":\n s = N();\n break;\n case \"TypeError\":\n s = B();\n break;\n case \"URIError\":\n s = j();\n break;\n case \"CompileError\":\n s = H();\n break;\n case \"LinkError\":\n s = q();\n break;\n case \"RuntimeError\":\n s = W();\n break;\n default:\n s = I();\n }\n break;\n case \"DOMException\":\n s = new G(t.message, t.name);\n break;\n case \"ArrayBuffer\":\n case \"SharedArrayBuffer\":\n s = n ? new Placeholder(t, m) : cloneBuffer(t, e, m);\n break;\n case \"DataView\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float16Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n h = \"DataView\" === m ? t.byteLength : t.length;\n s = n ? new Placeholder(t, m, {\n offset: t.byteOffset,\n length: h\n }) : cloneView(t, m, t.byteOffset, h, e);\n break;\n case \"DOMQuad\":\n try {\n s = new DOMQuad(structuredCloneInternal(t.p1, e, n), structuredCloneInternal(t.p2, e, n), structuredCloneInternal(t.p3, e, n), structuredCloneInternal(t.p4, e, n));\n } catch (e) {\n s = tryNativeRestrictedStructuredClone(t, m);\n }\n break;\n case \"File\":\n if (ht) try {\n s = ht(t);\n v(s) !== m && (s = void 0);\n } catch (t) {}\n if (!s) try {\n s = new File([t], t.name, t);\n } catch (t) {}\n s || throwUnpolyfillable(m);\n break;\n case \"FileList\":\n if (l = function () {\n var t;\n try {\n t = new a.DataTransfer();\n } catch (e) {\n try {\n t = new a.ClipboardEvent(\"\").clipboardData;\n } catch (t) {}\n }\n return t && t.items && t.files ? t : null;\n }()) {\n for (c = 0, h = S(t); c < h; c++) l.items.add(structuredCloneInternal(t[c], e, n));\n s = l.files;\n } else s = tryNativeRestrictedStructuredClone(t, m);\n break;\n case \"ImageData\":\n try {\n s = new ImageData(structuredCloneInternal(t.data, e, n), t.width, t.height, {\n colorSpace: t.colorSpace\n });\n } catch (e) {\n s = tryNativeRestrictedStructuredClone(t, m);\n }\n break;\n default:\n if (ht) s = ht(t);else switch (m) {\n case \"BigInt\":\n s = k(t.valueOf());\n break;\n case \"Boolean\":\n s = k(tt(t));\n break;\n case \"Number\":\n s = k(et(t));\n break;\n case \"String\":\n s = k(nt(t));\n break;\n case \"Date\":\n s = new R(it(t));\n break;\n case \"Blob\":\n try {\n s = t.slice(0, t.size, t.type);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMPoint\":\n case \"DOMPointReadOnly\":\n i = a[m];\n try {\n s = i.fromPoint ? i.fromPoint(t) : new i(t.x, t.y, t.z, t.w);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMRect\":\n case \"DOMRectReadOnly\":\n i = a[m];\n try {\n s = i.fromRect ? i.fromRect(t) : new i(t.x, t.y, t.width, t.height);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMMatrix\":\n case \"DOMMatrixReadOnly\":\n i = a[m];\n try {\n s = i.fromMatrix ? i.fromMatrix(t) : new i(t);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"AudioData\":\n case \"VideoFrame\":\n d(t.clone) || throwUnpolyfillable(m);\n try {\n s = t.clone();\n } catch (t) {\n throwUncloneable(m);\n }\n break;\n case \"CropTarget\":\n case \"CryptoKey\":\n case \"FileSystemDirectoryHandle\":\n case \"FileSystemFileHandle\":\n case \"FileSystemHandle\":\n case \"GPUCompilationInfo\":\n case \"GPUCompilationMessage\":\n case \"ImageBitmap\":\n case \"RTCCertificate\":\n case \"WebAssembly.Module\":\n throwUnpolyfillable(m);\n default:\n throwUncloneable(m);\n }\n }\n K(e, t, s);\n switch (m) {\n case \"Array\":\n case \"Object\":\n u = Q(t);\n for (c = 0, h = S(u); c < h; c++) {\n p = u[c];\n A(s, p, structuredCloneInternal(t[p], e, n));\n }\n break;\n case \"Map\":\n t.forEach(function (t, i) {\n K(s, structuredCloneInternal(i, e, n), structuredCloneInternal(t, e, n));\n });\n break;\n case \"Set\":\n t.forEach(function (t) {\n J(s, structuredCloneInternal(t, e, n));\n });\n break;\n case \"Error\":\n _(s, \"message\", structuredCloneInternal(t.message, e, n));\n y(t, \"cause\") && _(s, \"cause\", structuredCloneInternal(t.cause, e, n));\n \"AggregateError\" == r && (s.errors = structuredCloneInternal(t.errors, e, n));\n case \"DOMException\":\n T && _(s, \"stack\", structuredCloneInternal(t.stack, e, n));\n }\n return s;\n },\n replacePlaceholders = function replacePlaceholders(t, e) {\n if (!f(t)) return t;\n if ($(e, t)) return X(e, t);\n var n, i, r, s, a, o, l, c;\n if (t instanceof Placeholder) {\n n = t.type;\n i = t.object;\n switch (n) {\n case \"ArrayBuffer\":\n case \"SharedArrayBuffer\":\n c = cloneBuffer(i, e, n);\n break;\n case \"DataView\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float16Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n r = t.metadata;\n c = cloneView(i, n, r.offset, r.length, e);\n }\n } else switch (v(t)) {\n case \"Array\":\n case \"Object\":\n o = Q(t);\n for (s = 0, a = S(o); s < a; s++) t[l = o[s]] = replacePlaceholders(t[l], e);\n break;\n case \"Map\":\n c = new V();\n t.forEach(function (t, n) {\n K(c, replacePlaceholders(n, e), replacePlaceholders(t, e));\n });\n break;\n case \"Set\":\n c = new Y();\n t.forEach(function (t) {\n J(c, replacePlaceholders(t, e));\n });\n break;\n case \"Error\":\n t.message = replacePlaceholders(t.message, e);\n y(t, \"cause\") && (t.cause = replacePlaceholders(t.cause, e));\n \"AggregateError\" == t.name && (t.errors = replacePlaceholders(t.errors, e));\n case \"DOMException\":\n T && (t.stack = replacePlaceholders(t.stack, e));\n }\n K(e, t, c || t);\n return c || t;\n };\n s({\n global: !0,\n enumerable: !0,\n sham: !P,\n forced: lt\n }, {\n structuredClone: function structuredClone(t) {\n var e,\n n,\n i = E(arguments.length, 1) > 1 && !p(arguments[1]) ? b(arguments[1]) : void 0,\n r = i ? i.transfer : void 0,\n s = !1;\n if (void 0 !== r) {\n n = function (t, e) {\n if (!f(t)) throw B(\"Transfer option cannot be converted to a sequence\");\n var n = [];\n m(t, function (t) {\n Z(n, b(t));\n });\n for (var i, r, s, o, l, c = 0, h = S(n), p = []; c < h;) {\n i = n[c++];\n if (\"ArrayBuffer\" !== (r = v(i))) {\n if ($(e, i)) throw new G(\"Duplicate transferable\", st);\n if (P) o = ot(i, {\n transfer: [i]\n });else switch (r) {\n case \"ImageBitmap\":\n s = a.OffscreenCanvas;\n u(s) || throwUnpolyfillable(r, at);\n try {\n (l = new s(i.width, i.height)).getContext(\"bitmaprenderer\").transferFromImageBitmap(i);\n o = l.transferToImageBitmap();\n } catch (t) {}\n break;\n case \"AudioData\":\n case \"VideoFrame\":\n d(i.clone) && d(i.close) || throwUnpolyfillable(r, at);\n try {\n o = i.clone();\n i.close();\n } catch (t) {}\n break;\n case \"MediaSourceHandle\":\n case \"MessagePort\":\n case \"OffscreenCanvas\":\n case \"ReadableStream\":\n case \"TransformStream\":\n case \"WritableStream\":\n throwUnpolyfillable(r, at);\n }\n if (void 0 === o) throw new G(\"This object cannot be transferred: \" + r, st);\n K(e, i, o);\n } else Z(p, i);\n }\n return p;\n }(r, e = new V());\n s = !!S(n);\n }\n var o = structuredCloneInternal(t, e, s);\n if (s) {\n !function (t, e) {\n for (var n, i, r = 0, s = S(t); r < s;) {\n n = t[r++];\n if ($(e, n)) throw new G(\"Duplicate transferable\", st);\n if (P) i = ot(n, {\n transfer: [n]\n });else {\n d(n.transfer) || throwUnpolyfillable(\"ArrayBuffer\", at);\n i = n.transfer();\n }\n K(e, n, i);\n }\n }(r, e = new V());\n o = replacePlaceholders(o, e);\n }\n return o;\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(21),\n a = n(78),\n o = n(24),\n l = n(51),\n noop = function noop() {},\n c = [],\n h = o(\"Reflect\", \"construct\"),\n d = /^\\s*(?:class|function)\\b/,\n u = i(d.exec),\n p = !d.exec(noop),\n f = function isConstructor(t) {\n if (!s(t)) return !1;\n try {\n h(noop, c, t);\n return !0;\n } catch (t) {\n return !1;\n }\n },\n g = function isConstructor(t) {\n if (!s(t)) return !1;\n switch (a(t)) {\n case \"AsyncFunction\":\n case \"GeneratorFunction\":\n case \"AsyncGeneratorFunction\":\n return !1;\n }\n try {\n return p || !!u(d, l(t));\n } catch (t) {\n return !0;\n }\n };\n g.sham = !0;\n t.exports = !h || r(function () {\n var t;\n return f(f.call) || !f(Object) || !f(function () {\n t = !0;\n }) || t;\n }) ? g : f;\n }, (t, e, n) => {\n var i = n(99),\n r = n(8),\n s = n(47),\n a = n(32),\n o = n(154),\n l = n(64),\n c = n(25),\n h = n(156),\n d = n(157),\n u = n(139),\n p = TypeError,\n Result = function Result(t, e) {\n this.stopped = t;\n this.result = e;\n },\n f = Result.prototype;\n t.exports = function (t, e, n) {\n var g,\n m,\n b,\n v,\n y,\n A,\n _,\n S = n && n.that,\n E = !(!n || !n.AS_ENTRIES),\n x = !(!n || !n.IS_RECORD),\n w = !(!n || !n.IS_ITERATOR),\n C = !(!n || !n.INTERRUPTED),\n T = i(e, S),\n stop = function stop(t) {\n g && u(g, \"normal\", t);\n return new Result(!0, t);\n },\n callFn = function callFn(t) {\n if (E) {\n s(t);\n return C ? T(t[0], t[1], stop) : T(t[0], t[1]);\n }\n return C ? T(t, stop) : T(t);\n };\n if (x) g = t.iterator;else if (w) g = t;else {\n if (!(m = d(t))) throw p(a(t) + \" is not iterable\");\n if (o(m)) {\n for (b = 0, v = l(t); v > b; b++) if ((y = callFn(t[b])) && c(f, y)) return y;\n return new Result(!1);\n }\n g = h(t, m);\n }\n A = x ? t.next : g.next;\n for (; !(_ = r(A, g)).done;) {\n try {\n y = callFn(_.value);\n } catch (t) {\n u(g, \"throw\", t);\n }\n if (\"object\" == typeof y && y && c(f, y)) return y;\n }\n return new Result(!1);\n };\n }, (t, e, n) => {\n var i = n(34),\n r = n(155),\n s = i(\"iterator\"),\n a = Array.prototype;\n t.exports = function (t) {\n return void 0 !== t && (r.Array === t || a[s] === t);\n };\n }, t => {\n t.exports = {};\n }, (t, e, n) => {\n var i = n(8),\n r = n(31),\n s = n(47),\n a = n(32),\n o = n(157),\n l = TypeError;\n t.exports = function (t, e) {\n var n = arguments.length < 2 ? o(t) : e;\n if (r(n)) return s(i(n, t));\n throw l(a(t) + \" is not iterable\");\n };\n }, (t, e, n) => {\n var i = n(78),\n r = n(30),\n s = n(17),\n a = n(155),\n o = n(34)(\"iterator\");\n t.exports = function (t) {\n if (!s(t)) return r(t, o) || r(t, \"@@iterator\") || a[i(t)];\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(18),\n r = n(45),\n s = n(11);\n t.exports = function (t, e, n) {\n var a = i(e);\n a in t ? r.f(t, a, s(0, n)) : t[a] = n;\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(39),\n s = n(25),\n a = n(160),\n o = RegExp.prototype;\n t.exports = function (t) {\n var e = t.flags;\n return void 0 !== e || \"flags\" in o || r(t, \"flags\") || !s(o, t) ? e : i(a, t);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(47);\n t.exports = function () {\n var t = i(this),\n e = \"\";\n t.hasIndices && (e += \"d\");\n t.global && (e += \"g\");\n t.ignoreCase && (e += \"i\");\n t.multiline && (e += \"m\");\n t.dotAll && (e += \"s\");\n t.unicode && (e += \"u\");\n t.unicodeSets && (e += \"v\");\n t.sticky && (e += \"y\");\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Map.prototype;\n t.exports = {\n Map: Map,\n set: i(r.set),\n get: i(r.get),\n has: i(r.has),\n remove: i(r.delete),\n proto: r\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.SerializableEmpty = e.PrintAnnotationStorage = e.AnnotationStorage = void 0;\n n(89);\n n(148);\n n(151);\n var i = n(1),\n r = n(163),\n s = n(169);\n const a = Object.freeze({\n map: null,\n hash: \"\",\n transfers: void 0\n });\n e.SerializableEmpty = a;\n var _v = /*#__PURE__*/new WeakMap();\n var _y = /*#__PURE__*/new WeakMap();\n var _A = /*#__PURE__*/new WeakSet();\n class AnnotationStorage {\n constructor() {\n _classPrivateMethodInitSpec(this, _A);\n _classPrivateFieldInitSpec(this, _v, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _y, {\n writable: true,\n value: new Map()\n });\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(t, e) {\n const n = _classPrivateFieldGet(this, _y).get(t);\n return void 0 === n ? e : Object.assign(e, n);\n }\n getRawValue(t) {\n return _classPrivateFieldGet(this, _y).get(t);\n }\n remove(t) {\n _classPrivateFieldGet(this, _y).delete(t);\n 0 === _classPrivateFieldGet(this, _y).size && this.resetModified();\n if (\"function\" == typeof this.onAnnotationEditor) {\n for (const t of _classPrivateFieldGet(this, _y).values()) if (t instanceof r.AnnotationEditor) return;\n this.onAnnotationEditor(null);\n }\n }\n setValue(t, e) {\n const n = _classPrivateFieldGet(this, _y).get(t);\n let i = !1;\n if (void 0 !== n) {\n for (const [t, r] of Object.entries(e)) if (n[t] !== r) {\n i = !0;\n n[t] = r;\n }\n } else {\n i = !0;\n _classPrivateFieldGet(this, _y).set(t, e);\n }\n i && _classPrivateMethodGet(this, _A, _A2).call(this);\n e instanceof r.AnnotationEditor && \"function\" == typeof this.onAnnotationEditor && this.onAnnotationEditor(e.constructor._type);\n }\n has(t) {\n return _classPrivateFieldGet(this, _y).has(t);\n }\n getAll() {\n return _classPrivateFieldGet(this, _y).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _y)) : null;\n }\n setAll(t) {\n for (const [e, n] of Object.entries(t)) this.setValue(e, n);\n }\n get size() {\n return _classPrivateFieldGet(this, _y).size;\n }\n resetModified() {\n if (_classPrivateFieldGet(this, _v)) {\n _classPrivateFieldSet(this, _v, !1);\n \"function\" == typeof this.onResetModified && this.onResetModified();\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (0 === _classPrivateFieldGet(this, _y).size) return a;\n const t = new Map(),\n e = new s.MurmurHash3_64(),\n n = [],\n i = Object.create(null);\n let o = !1;\n for (const [n, s] of _classPrivateFieldGet(this, _y)) {\n const a = s instanceof r.AnnotationEditor ? s.serialize(!1, i) : s;\n if (a) {\n t.set(n, a);\n e.update(\"\".concat(n, \":\").concat(JSON.stringify(a)));\n o || (o = !!a.bitmap);\n }\n }\n if (o) for (const e of t.values()) e.bitmap && n.push(e.bitmap);\n return t.size > 0 ? {\n map: t,\n hash: e.hexdigest(),\n transfers: n\n } : a;\n }\n }\n function _A2() {\n if (!_classPrivateFieldGet(this, _v)) {\n _classPrivateFieldSet(this, _v, !0);\n \"function\" == typeof this.onSetModified && this.onSetModified();\n }\n }\n e.AnnotationStorage = AnnotationStorage;\n var _2 = /*#__PURE__*/new WeakMap();\n class PrintAnnotationStorage extends AnnotationStorage {\n constructor(t) {\n super();\n _classPrivateFieldInitSpec(this, _2, {\n writable: true,\n value: void 0\n });\n const {\n map: e,\n hash: n,\n transfers: i\n } = t.serializable,\n r = structuredClone(e, null);\n _classPrivateFieldSet(this, _2, {\n map: r,\n hash: n,\n transfers: i\n });\n }\n get print() {\n (0, i.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return _classPrivateFieldGet(this, _2);\n }\n }\n e.PrintAnnotationStorage = PrintAnnotationStorage;\n }, (t, e, n) => {\n \"use strict\";\n\n var _class12;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.AnnotationEditor = void 0;\n n(89);\n n(2);\n var i = n(1),\n r = n(164);\n var _S = /*#__PURE__*/new WeakMap();\n var _E = /*#__PURE__*/new WeakMap();\n var _x = /*#__PURE__*/new WeakMap();\n var _w = /*#__PURE__*/new WeakMap();\n var _C = /*#__PURE__*/new WeakMap();\n var _T = /*#__PURE__*/new WeakMap();\n var _P = /*#__PURE__*/new WeakMap();\n var _k = /*#__PURE__*/new WeakMap();\n var _M = /*#__PURE__*/new WeakMap();\n var _R = /*#__PURE__*/new WeakSet();\n var _F = /*#__PURE__*/new WeakSet();\n var _I = /*#__PURE__*/new WeakSet();\n var _D = /*#__PURE__*/new WeakSet();\n class AnnotationEditor {\n constructor(_t4) {\n _classPrivateMethodInitSpec(this, _D);\n _classPrivateMethodInitSpec(this, _I);\n _classPrivateMethodInitSpec(this, _F);\n _classPrivateMethodInitSpec(this, _R);\n _classPrivateFieldInitSpec(this, _S, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _E, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _x, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _w, {\n writable: true,\n value: this.focusin.bind(this)\n });\n _classPrivateFieldInitSpec(this, _C, {\n writable: true,\n value: this.focusout.bind(this)\n });\n _classPrivateFieldInitSpec(this, _T, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _P, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _k, {\n writable: true,\n value: !1\n });\n _defineProperty(this, \"_uiManager\", null);\n _classPrivateFieldInitSpec(this, _M, {\n writable: true,\n value: AnnotationEditor._zIndex++\n });\n this.constructor === AnnotationEditor && (0, i.unreachable)(\"Cannot initialize AnnotationEditor.\");\n this.parent = _t4.parent;\n this.id = _t4.id;\n this.width = this.height = null;\n this.pageIndex = _t4.parent.pageIndex;\n this.name = _t4.name;\n this.div = null;\n this._uiManager = _t4.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = !1;\n const {\n rotation: _e4,\n rawDims: {\n pageWidth: _n3,\n pageHeight: _r3,\n pageX: _s4,\n pageY: _a2\n }\n } = this.parent.viewport;\n this.rotation = _e4;\n this.pageRotation = (360 + _e4 - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [_n3, _r3];\n this.pageTranslation = [_s4, _a2];\n const [_o2, _l2] = this.parentDimensions;\n this.x = _t4.x / _o2;\n this.y = _t4.y / _l2;\n this.isAttachedToDOM = !1;\n this.deleted = !1;\n }\n static get _defaultLineColor() {\n return (0, i.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(t) {\n const e = new FakeEditor({\n id: t.parent.getNextId(),\n parent: t.parent,\n uiManager: t._uiManager\n });\n e.annotationElementId = t.annotationElementId;\n e.deleted = !0;\n e._uiManager.addToAnnotationStorage(e);\n }\n static initialize(t) {}\n static updateDefaultParams(t, e) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n get propertiesToUpdate() {\n return [];\n }\n addCommands(t) {\n this._uiManager.addCommands(t);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = _classPrivateFieldGet(this, _M);\n }\n setParent(t) {\n if (null !== t) {\n this.pageIndex = t.pageIndex;\n this.pageDimensions = t.pageDimensions;\n }\n this.parent = t;\n }\n focusin(t) {\n _classPrivateFieldGet(this, _T) ? _classPrivateFieldSet(this, _T, !1) : this.parent.setSelected(this);\n }\n focusout(t) {\n if (!this.isAttachedToDOM) return;\n const e = t.relatedTarget;\n if (!(e !== null && e !== void 0 && e.closest(\"#\".concat(this.id)))) {\n var _this$parent;\n t.preventDefault();\n ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.isMultipleSelection) || this.commitOrRemove();\n }\n }\n commitOrRemove() {\n this.isEmpty() ? this.remove() : this.commit();\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n dragstart(t) {\n const e = this.parent.div.getBoundingClientRect();\n this.startX = t.clientX - e.x;\n this.startY = t.clientY - e.y;\n t.dataTransfer.setData(\"text/plain\", this.id);\n t.dataTransfer.effectAllowed = \"move\";\n }\n setAt(t, e, n, i) {\n const [r, s] = this.parentDimensions;\n [n, i] = this.screenToPageTranslation(n, i);\n this.x = (t + n) / r;\n this.y = (e + i) / s;\n this.fixAndSetPosition();\n }\n translate(t, e) {\n _classPrivateMethodGet(this, _R, _R2).call(this, this.parentDimensions, t, e);\n }\n translateInPage(t, e) {\n _classPrivateMethodGet(this, _R, _R2).call(this, this.pageDimensions, t, e);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n fixAndSetPosition() {\n const [t, e] = this.pageDimensions;\n let {\n x: n,\n y: i,\n width: r,\n height: s\n } = this;\n r *= t;\n s *= e;\n n *= t;\n i *= e;\n switch (this.rotation) {\n case 0:\n n = Math.max(0, Math.min(t - r, n));\n i = Math.max(0, Math.min(e - s, i));\n break;\n case 90:\n n = Math.max(0, Math.min(t - s, n));\n i = Math.min(e, Math.max(r, i));\n break;\n case 180:\n n = Math.min(t, Math.max(r, n));\n i = Math.min(e, Math.max(s, i));\n break;\n case 270:\n n = Math.min(t, Math.max(s, n));\n i = Math.max(0, Math.min(e - r, i));\n }\n this.x = n / t;\n this.y = i / e;\n this.div.style.left = \"\".concat((100 * this.x).toFixed(2), \"%\");\n this.div.style.top = \"\".concat((100 * this.y).toFixed(2), \"%\");\n }\n screenToPageTranslation(t, e) {\n switch (this.parentRotation) {\n case 90:\n return [e, -t];\n case 180:\n return [-t, -e];\n case 270:\n return [-e, t];\n default:\n return [t, e];\n }\n }\n pageTranslationToScreen(t, e) {\n switch (this.parentRotation) {\n case 90:\n return [-e, t];\n case 180:\n return [-t, -e];\n case 270:\n return [e, -t];\n default:\n return [t, e];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n realScale: t\n } = this._uiManager.viewParameters,\n [e, n] = this.pageDimensions;\n return [e * t, n * t];\n }\n setDims(t, e) {\n const [n, i] = this.parentDimensions;\n this.div.style.width = \"\".concat((100 * t / n).toFixed(2), \"%\");\n _classPrivateFieldGet(this, _S) || (this.div.style.height = \"\".concat((100 * e / i).toFixed(2), \"%\"));\n }\n fixDims() {\n const {\n style: t\n } = this.div,\n {\n height: e,\n width: n\n } = t,\n i = n.endsWith(\"%\"),\n r = !_classPrivateFieldGet(this, _S) && e.endsWith(\"%\");\n if (i && r) return;\n const [s, a] = this.parentDimensions;\n i || (t.width = \"\".concat((100 * parseFloat(n) / s).toFixed(2), \"%\"));\n _classPrivateFieldGet(this, _S) || r || (t.height = \"\".concat((100 * parseFloat(e) / a).toFixed(2), \"%\"));\n }\n getInitialTranslation() {\n return [0, 0];\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n this.div.addEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n const [t, e] = this.parentDimensions;\n if (this.parentRotation % 180 != 0) {\n this.div.style.maxWidth = \"\".concat((100 * e / t).toFixed(2), \"%\");\n this.div.style.maxHeight = \"\".concat((100 * t / e).toFixed(2), \"%\");\n }\n const [n, i] = this.getInitialTranslation();\n this.translate(n, i);\n (0, r.bindEvents)(this, this.div, [\"dragstart\", \"pointerdown\"]);\n return this.div;\n }\n pointerdown(t) {\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (0 !== t.button || t.ctrlKey && e) t.preventDefault();else {\n t.ctrlKey && !e || t.shiftKey || t.metaKey && e ? this.parent.toggleSelected(this) : this.parent.setSelected(this);\n _classPrivateFieldSet(this, _T, !0);\n }\n }\n getRect(t, e) {\n const n = this.parentScale,\n [i, r] = this.pageDimensions,\n [s, a] = this.pageTranslation,\n o = t / n,\n l = e / n,\n c = this.x * i,\n h = this.y * r,\n d = this.width * i,\n u = this.height * r;\n switch (this.rotation) {\n case 0:\n return [c + o + s, r - h - l - u + a, c + o + d + s, r - h - l + a];\n case 90:\n return [c + l + s, r - h + o + a, c + l + u + s, r - h + o + d + a];\n case 180:\n return [c - o - d + s, r - h + l + a, c - o + s, r - h + l + u + a];\n case 270:\n return [c - l - u + s, r - h - o - d + a, c - l + s, r - h - o + a];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(t, e) {\n const [n, i, r, s] = t,\n a = r - n,\n o = s - i;\n switch (this.rotation) {\n case 0:\n return [n, e - s, a, o];\n case 90:\n return [n, e - i, o, a];\n case 180:\n return [r, e - i, a, o];\n case 270:\n return [r, e - s, o, a];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return !1;\n }\n enableEditMode() {\n _classPrivateFieldSet(this, _k, !0);\n }\n disableEditMode() {\n _classPrivateFieldSet(this, _k, !1);\n }\n isInEditMode() {\n return _classPrivateFieldGet(this, _k);\n }\n shouldGetKeyboardEvents() {\n return !1;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n var _this$div, _this$div2;\n (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.addEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n (_this$div2 = this.div) === null || _this$div2 === void 0 ? void 0 : _this$div2.addEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n }\n serialize() {\n (0, i.unreachable)(\"An editor must be serializable\");\n }\n static deserialize(t, e, n) {\n const i = new this.prototype.constructor({\n parent: e,\n id: e.getNextId(),\n uiManager: n\n });\n i.rotation = t.rotation;\n const [r, s] = i.pageDimensions,\n [a, o, l, c] = i.getRectInCurrentCoords(t.rect, s);\n i.x = a / r;\n i.y = o / s;\n i.width = l / r;\n i.height = c / s;\n return i;\n }\n remove() {\n this.div.removeEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n this.div.removeEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n this.isEmpty() || this.commit();\n this.parent ? this.parent.remove(this) : this._uiManager.removeEditor(this);\n }\n get isResizable() {\n return !1;\n }\n makeResizable() {\n if (this.isResizable) {\n _classPrivateMethodGet(this, _F, _F2).call(this);\n _classPrivateFieldGet(this, _E).classList.remove(\"hidden\");\n }\n }\n select() {\n var _this$div3;\n this.makeResizable();\n (_this$div3 = this.div) === null || _this$div3 === void 0 ? void 0 : _this$div3.classList.add(\"selectedEditor\");\n }\n unselect() {\n var _classPrivateFieldGet3, _this$div4, _this$div5;\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _E)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.classList.add(\"hidden\");\n (_this$div4 = this.div) === null || _this$div4 === void 0 ? void 0 : _this$div4.classList.remove(\"selectedEditor\");\n ((_this$div5 = this.div) === null || _this$div5 === void 0 ? void 0 : _this$div5.contains(document.activeElement)) && this._uiManager.currentLayer.div.focus();\n }\n updateParams(t, e) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return _classPrivateFieldGet(this, _P);\n }\n set isEditing(t) {\n _classPrivateFieldSet(this, _P, t);\n if (this.parent) if (t) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else this.parent.setActiveEditor(null);\n }\n setAspectRatio(t, e) {\n _classPrivateFieldSet(this, _S, !0);\n const n = t / e,\n {\n style: i\n } = this.div;\n i.aspectRatio = n;\n i.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n }\n _class12 = AnnotationEditor;\n function _R2(t, e, n) {\n let [i, r] = t;\n [e, n] = this.screenToPageTranslation(e, n);\n this.x += e / i;\n this.y += n / r;\n this.fixAndSetPosition();\n }\n function _F2() {\n if (_classPrivateFieldGet(this, _E)) return;\n _classPrivateFieldSet(this, _E, document.createElement(\"div\"));\n _classPrivateFieldGet(this, _E).classList.add(\"resizers\");\n const t = [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"];\n this._willKeepAspectRatio || t.push(\"topMiddle\", \"middleRight\", \"bottomMiddle\", \"middleLeft\");\n for (const e of t) {\n const t = document.createElement(\"div\");\n _classPrivateFieldGet(this, _E).append(t);\n t.classList.add(\"resizer\", e);\n t.addEventListener(\"pointerdown\", _classPrivateMethodGet(this, _I, _I2).bind(this, e));\n }\n this.div.prepend(_classPrivateFieldGet(this, _E));\n }\n function _I2(t, e) {\n e.preventDefault();\n _classPrivateFieldSet(this, _x, [e.clientX, e.clientY]);\n const n = _classPrivateMethodGet(this, _D, _D2).bind(this, t),\n i = this.div.draggable;\n this.div.draggable = !1;\n const r = \"resizing\".concat(t.charAt(0).toUpperCase()).concat(t.slice(1));\n this.parent.div.classList.add(r);\n const s = {\n passive: !0,\n capture: !0\n };\n window.addEventListener(\"pointermove\", n, s);\n window.addEventListener(\"pointerup\", () => {\n this._uiManager.stopUndoAccumulation();\n this.div.draggable = i;\n this.parent.div.classList.remove(r);\n window.removeEventListener(\"pointermove\", n, s);\n }, {\n once: !0\n });\n }\n function _D2(t, e) {\n const {\n clientX: n,\n clientY: r\n } = e,\n s = n - _classPrivateFieldGet(this, _x)[0],\n a = r - _classPrivateFieldGet(this, _x)[1];\n _classPrivateFieldGet(this, _x)[0] = n;\n _classPrivateFieldGet(this, _x)[1] = r;\n const [o, l] = this.parentDimensions,\n c = this.x,\n h = this.y,\n d = this.width,\n u = this.height,\n p = _class12.MIN_SIZE / o,\n f = _class12.MIN_SIZE / l;\n let g;\n const round = t => Math.round(1e4 * t) / 1e4,\n updatePosition = (t, e) => {\n const [n, i] = this.parentDimensions;\n this.setDims(n * t, i * e);\n this.fixAndSetPosition();\n };\n switch (t) {\n case \"topLeft\":\n {\n if (Math.sign(s) * Math.sign(a) < 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(d * o, u * l),\n n = round(c + d),\n i = round(h + u),\n r = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n m = round(d * r),\n b = round(u * r),\n v = n - m,\n y = i - b;\n g = () => {\n this.width = m;\n this.height = b;\n this.x = v;\n this.y = y;\n updatePosition(m, b);\n };\n break;\n }\n case \"topMiddle\":\n {\n const t = round(this.y + u),\n e = round(Math.max(f, Math.min(1, u - a / l))),\n n = t - e;\n g = () => {\n this.height = e;\n this.y = n;\n updatePosition(d, e);\n };\n break;\n }\n case \"topRight\":\n {\n if (Math.sign(s) * Math.sign(a) > 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = round(h + this.height),\n i = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n r = round(d * i),\n c = round(u * i),\n m = n - c;\n g = () => {\n this.width = r;\n this.height = c;\n this.y = m;\n updatePosition(r, c);\n };\n break;\n }\n case \"middleRight\":\n {\n const t = round(Math.max(p, Math.min(1, d + s / o)));\n g = () => {\n this.width = t;\n updatePosition(t, u);\n };\n break;\n }\n case \"bottomRight\":\n {\n if (Math.sign(s) * Math.sign(a) < 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n i = round(d * n),\n r = round(u * n);\n g = () => {\n this.width = i;\n this.height = r;\n updatePosition(i, r);\n };\n break;\n }\n case \"bottomMiddle\":\n {\n const t = round(Math.max(f, Math.min(1, u + a / l)));\n g = () => {\n this.height = t;\n updatePosition(d, t);\n };\n break;\n }\n case \"bottomLeft\":\n {\n if (Math.sign(s) * Math.sign(a) > 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = round(c + this.width),\n i = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n r = round(d * i),\n h = round(u * i),\n m = n - r;\n g = () => {\n this.width = r;\n this.height = h;\n this.x = m;\n updatePosition(r, h);\n };\n break;\n }\n case \"middleLeft\":\n {\n const t = round(c + d),\n e = round(Math.max(p, Math.min(1, d - s / o))),\n n = t - e;\n g = () => {\n this.width = e;\n this.x = n;\n updatePosition(e, u);\n };\n break;\n }\n }\n this.addCommands({\n cmd: g,\n undo: () => {\n this.width = d;\n this.height = u;\n this.x = c;\n this.y = h;\n updatePosition(d, u);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.RESIZE,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n _defineProperty(AnnotationEditor, \"_colorManager\", new r.ColorManager());\n _defineProperty(AnnotationEditor, \"_zIndex\", 1);\n e.AnnotationEditor = AnnotationEditor;\n class FakeEditor extends AnnotationEditor {\n constructor(t) {\n super(t);\n this.annotationElementId = t.annotationElementId;\n this.deleted = !0;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: !0,\n pageIndex: this.pageIndex\n };\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.KeyboardManager = e.CommandManager = e.ColorManager = e.AnnotationEditorUIManager = void 0;\n e.bindEvents = function bindEvents(t, e, n) {\n for (const i of n) e.addEventListener(i, t[i].bind(t));\n };\n e.opacityToHex = function opacityToHex(t) {\n return Math.round(Math.min(255, Math.max(1, 255 * t))).toString(16).padStart(2, \"0\");\n };\n n(2);\n n(89);\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n n(165);\n var i = n(1),\n r = n(167);\n var _O = /*#__PURE__*/new WeakMap();\n class IdManager {\n constructor() {\n _classPrivateFieldInitSpec(this, _O, {\n writable: true,\n value: 0\n });\n }\n getId() {\n var _this$O, _this$O2;\n return \"\".concat(i.AnnotationEditorPrefix).concat((_classPrivateFieldSet(this, _O, (_this$O = _classPrivateFieldGet(this, _O), _this$O2 = _this$O++, _this$O)), _this$O2));\n }\n }\n var _L = /*#__PURE__*/new WeakMap();\n var _O2 = /*#__PURE__*/new WeakMap();\n var _N = /*#__PURE__*/new WeakMap();\n var _B = /*#__PURE__*/new WeakSet();\n class ImageManager {\n constructor() {\n _classPrivateMethodInitSpec(this, _B);\n _classPrivateFieldInitSpec(this, _L, {\n writable: true,\n value: (0, i.getUuid)()\n });\n _classPrivateFieldInitSpec(this, _O2, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _N, {\n writable: true,\n value: null\n });\n }\n async getFromFile(t) {\n const {\n lastModified: e,\n name: n,\n size: i,\n type: r\n } = t;\n return _classPrivateMethodGet(this, _B, _B2).call(this, \"\".concat(e, \"_\").concat(n, \"_\").concat(i, \"_\").concat(r), t);\n }\n async getFromUrl(t) {\n return _classPrivateMethodGet(this, _B, _B2).call(this, t, t);\n }\n async getFromId(t) {\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n const e = _classPrivateFieldGet(this, _N).get(t);\n if (!e) return null;\n if (e.bitmap) {\n e.refCounter += 1;\n return e;\n }\n return e.file ? this.getFromFile(e.file) : this.getFromUrl(e.url);\n }\n getSvgUrl(t) {\n const e = _classPrivateFieldGet(this, _N).get(t);\n return e !== null && e !== void 0 && e.isSvg ? e.svgUrl : null;\n }\n deleteId(t) {\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n const e = _classPrivateFieldGet(this, _N).get(t);\n if (e) {\n e.refCounter -= 1;\n 0 === e.refCounter && (e.bitmap = null);\n }\n }\n isValidId(t) {\n return t.startsWith(\"image_\".concat(_classPrivateFieldGet(this, _L), \"_\"));\n }\n }\n async function _B2(t, e) {\n var _n5;\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n let n = _classPrivateFieldGet(this, _N).get(t);\n if (null === n) return null;\n if ((_n5 = n) !== null && _n5 !== void 0 && _n5.bitmap) {\n n.refCounter += 1;\n return n;\n }\n try {\n var _this$O3, _this$O4;\n n || (n = {\n bitmap: null,\n id: \"image_\".concat(_classPrivateFieldGet(this, _L), \"_\").concat((_classPrivateFieldSet(this, _O2, (_this$O3 = _classPrivateFieldGet(this, _O2), _this$O4 = _this$O3++, _this$O3)), _this$O4)),\n refCounter: 0,\n isSvg: !1\n });\n let t;\n if (\"string\" == typeof e) {\n n.url = e;\n const i = await fetch(e);\n if (!i.ok) throw new Error(i.statusText);\n t = await i.blob();\n } else t = n.file = e;\n if (\"image/svg+xml\" === t.type) {\n const e = new FileReader(),\n i = new Image(),\n r = new Promise((t, r) => {\n i.onload = () => {\n n.bitmap = i;\n n.isSvg = !0;\n t();\n };\n e.onload = () => {\n i.src = n.svgUrl = e.result;\n };\n i.onerror = e.onerror = r;\n });\n e.readAsDataURL(t);\n await r;\n } else n.bitmap = await createImageBitmap(t);\n n.refCounter = 1;\n } catch (t) {\n console.error(t);\n n = null;\n }\n _classPrivateFieldGet(this, _N).set(t, n);\n n && _classPrivateFieldGet(this, _N).set(n.id, n);\n return n;\n }\n var _j = /*#__PURE__*/new WeakMap();\n var _U = /*#__PURE__*/new WeakMap();\n var _z = /*#__PURE__*/new WeakMap();\n var _H = /*#__PURE__*/new WeakMap();\n class CommandManager {\n constructor() {\n _classPrivateFieldInitSpec(this, _j, {\n writable: true,\n value: []\n });\n _classPrivateFieldInitSpec(this, _U, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _z, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _H, {\n writable: true,\n value: -1\n });\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 128;\n _classPrivateFieldSet(this, _z, t);\n }\n add(t) {\n let {\n cmd: e,\n undo: n,\n mustExec: i,\n type: r = NaN,\n overwriteIfSameType: s = !1,\n keepUndo: a = !1\n } = t;\n i && e();\n if (_classPrivateFieldGet(this, _U)) return;\n const o = {\n cmd: e,\n undo: n,\n type: r\n };\n if (-1 === _classPrivateFieldGet(this, _H)) {\n _classPrivateFieldGet(this, _j).length > 0 && (_classPrivateFieldGet(this, _j).length = 0);\n _classPrivateFieldSet(this, _H, 0);\n _classPrivateFieldGet(this, _j).push(o);\n return;\n }\n if (s && _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type === r) {\n a && (o.undo = _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)] = o;\n return;\n }\n const l = _classPrivateFieldGet(this, _H) + 1;\n if (l === _classPrivateFieldGet(this, _z)) _classPrivateFieldGet(this, _j).splice(0, 1);else {\n _classPrivateFieldSet(this, _H, l);\n l < _classPrivateFieldGet(this, _j).length && _classPrivateFieldGet(this, _j).splice(l);\n }\n _classPrivateFieldGet(this, _j).push(o);\n }\n stopUndoAccumulation() {\n -1 !== _classPrivateFieldGet(this, _H) && (_classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type = NaN);\n }\n undo() {\n if (-1 !== _classPrivateFieldGet(this, _H)) {\n _classPrivateFieldSet(this, _U, !0);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo();\n _classPrivateFieldSet(this, _U, !1);\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) - 1);\n }\n }\n redo() {\n if (_classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1) {\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) + 1);\n _classPrivateFieldSet(this, _U, !0);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].cmd();\n _classPrivateFieldSet(this, _U, !1);\n }\n }\n hasSomethingToUndo() {\n return -1 !== _classPrivateFieldGet(this, _H);\n }\n hasSomethingToRedo() {\n return _classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1;\n }\n destroy() {\n _classPrivateFieldSet(this, _j, null);\n }\n }\n e.CommandManager = CommandManager;\n var _q = /*#__PURE__*/new WeakSet();\n class KeyboardManager {\n constructor(_t5) {\n _classPrivateMethodInitSpec(this, _q);\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac: _e5\n } = i.FeatureTest.platform;\n for (const [n, i, r = {}] of _t5) for (const t of n) {\n const n = t.startsWith(\"mac+\");\n if (_e5 && n) {\n this.callbacks.set(t.slice(4), {\n callback: i,\n options: r\n });\n this.allKeys.add(t.split(\"+\").at(-1));\n } else if (!_e5 && !n) {\n this.callbacks.set(t, {\n callback: i,\n options: r\n });\n this.allKeys.add(t.split(\"+\").at(-1));\n }\n }\n }\n exec(t, e) {\n if (!this.allKeys.has(e.key)) return;\n const n = this.callbacks.get(_classPrivateMethodGet(this, _q, _q2).call(this, e));\n if (!n) return;\n const {\n callback: i,\n options: {\n bubbles: r = !1,\n args: s = [],\n checker: a = null\n }\n } = n;\n if (!a || a(t, e)) {\n i.bind(t, ...s)();\n if (!r) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n }\n function _q2(t) {\n t.altKey && this.buffer.push(\"alt\");\n t.ctrlKey && this.buffer.push(\"ctrl\");\n t.metaKey && this.buffer.push(\"meta\");\n t.shiftKey && this.buffer.push(\"shift\");\n this.buffer.push(t.key);\n const e = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return e;\n }\n e.KeyboardManager = KeyboardManager;\n class ColorManager {\n get _colors() {\n const t = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, r.getColorValues)(t);\n return (0, i.shadow)(this, \"_colors\", t);\n }\n convert(t) {\n const e = (0, r.getRGB)(t);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) return e;\n for (const [t, n] of this._colors) if (n.every((t, n) => t === e[n])) return ColorManager._colorsMapping.get(t);\n return e;\n }\n getHexCode(t) {\n const e = this._colors.get(t);\n return e ? i.Util.makeHexColor(...e) : t;\n }\n }\n _defineProperty(ColorManager, \"_colorsMapping\", new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]));\n e.ColorManager = ColorManager;\n var _W = /*#__PURE__*/new WeakMap();\n var _G = /*#__PURE__*/new WeakMap();\n var _V = /*#__PURE__*/new WeakMap();\n var _$ = /*#__PURE__*/new WeakMap();\n var _X = /*#__PURE__*/new WeakMap();\n var _K = /*#__PURE__*/new WeakMap();\n var _Y = /*#__PURE__*/new WeakMap();\n var _J = /*#__PURE__*/new WeakMap();\n var _Q = /*#__PURE__*/new WeakMap();\n var _Z = /*#__PURE__*/new WeakMap();\n var _tt = /*#__PURE__*/new WeakMap();\n var _et = /*#__PURE__*/new WeakMap();\n var _nt = /*#__PURE__*/new WeakMap();\n var _it = /*#__PURE__*/new WeakMap();\n var _rt = /*#__PURE__*/new WeakMap();\n var _st = /*#__PURE__*/new WeakMap();\n var _at = /*#__PURE__*/new WeakMap();\n var _ot = /*#__PURE__*/new WeakMap();\n var _lt = /*#__PURE__*/new WeakMap();\n var _ct = /*#__PURE__*/new WeakMap();\n var _ht = /*#__PURE__*/new WeakMap();\n var _dt = /*#__PURE__*/new WeakMap();\n var _ut = /*#__PURE__*/new WeakMap();\n var _pt = /*#__PURE__*/new WeakMap();\n var _ft = /*#__PURE__*/new WeakMap();\n var _gt = /*#__PURE__*/new WeakMap();\n var _mt = /*#__PURE__*/new WeakMap();\n var _bt = /*#__PURE__*/new WeakMap();\n var _yt = /*#__PURE__*/new WeakSet();\n var _vt = /*#__PURE__*/new WeakSet();\n var _At = /*#__PURE__*/new WeakSet();\n var _t6 = /*#__PURE__*/new WeakSet();\n var _xt = /*#__PURE__*/new WeakSet();\n var _wt = /*#__PURE__*/new WeakSet();\n var _Tt = /*#__PURE__*/new WeakSet();\n var _Pt = /*#__PURE__*/new WeakSet();\n var _St = /*#__PURE__*/new WeakSet();\n var _Ct = /*#__PURE__*/new WeakSet();\n var _Et = /*#__PURE__*/new WeakSet();\n class AnnotationEditorUIManager {\n static get _keyboardManager() {\n const t = AnnotationEditorUIManager.prototype,\n arrowChecker = t => {\n const {\n activeElement: e\n } = document;\n return e && _classPrivateFieldGet(t, _bt).contains(e) && t.hasSomethingToControl();\n },\n e = this.TRANSLATE_SMALL,\n n = this.TRANSLATE_BIG;\n return (0, i.shadow)(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], t.selectAll], [[\"ctrl+z\", \"mac+meta+z\"], t.undo], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], t.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], t.delete], [[\"Escape\", \"mac+Escape\"], t.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], t.translateSelectedEditors, {\n args: [-e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], t.translateSelectedEditors, {\n args: [-n, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], t.translateSelectedEditors, {\n args: [e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], t.translateSelectedEditors, {\n args: [n, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], t.translateSelectedEditors, {\n args: [0, -e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], t.translateSelectedEditors, {\n args: [0, -n],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], t.translateSelectedEditors, {\n args: [0, e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], t.translateSelectedEditors, {\n args: [0, n],\n checker: arrowChecker\n }]]));\n }\n constructor(_t8, _e6, _n4, _i3) {\n _classPrivateMethodInitSpec(this, _Et);\n _classPrivateMethodInitSpec(this, _Ct);\n _classPrivateMethodInitSpec(this, _St);\n _classPrivateMethodInitSpec(this, _Pt);\n _classPrivateMethodInitSpec(this, _Tt);\n _classPrivateMethodInitSpec(this, _wt);\n _classPrivateMethodInitSpec(this, _xt);\n _classPrivateMethodInitSpec(this, _t6);\n _classPrivateMethodInitSpec(this, _At);\n _classPrivateMethodInitSpec(this, _vt);\n _classPrivateMethodInitSpec(this, _yt);\n _classPrivateFieldInitSpec(this, _W, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _G, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _V, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _$, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _X, {\n writable: true,\n value: new CommandManager()\n });\n _classPrivateFieldInitSpec(this, _K, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _Y, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _J, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Q, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _Z, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _tt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _et, {\n writable: true,\n value: new IdManager()\n });\n _classPrivateFieldInitSpec(this, _nt, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _it, {\n writable: true,\n value: i.AnnotationEditorType.NONE\n });\n _classPrivateFieldInitSpec(this, _rt, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _st, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _at, {\n writable: true,\n value: this.copy.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ot, {\n writable: true,\n value: this.cut.bind(this)\n });\n _classPrivateFieldInitSpec(this, _lt, {\n writable: true,\n value: this.paste.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ct, {\n writable: true,\n value: this.keydown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ht, {\n writable: true,\n value: this.onEditingAction.bind(this)\n });\n _classPrivateFieldInitSpec(this, _dt, {\n writable: true,\n value: this.onPageChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ut, {\n writable: true,\n value: this.onScaleChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _pt, {\n writable: true,\n value: this.onRotationChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ft, {\n writable: true,\n value: {\n isEditing: !1,\n isEmpty: !0,\n hasSomethingToUndo: !1,\n hasSomethingToRedo: !1,\n hasSelectedEditor: !1\n }\n });\n _classPrivateFieldInitSpec(this, _gt, {\n writable: true,\n value: [0, 0]\n });\n _classPrivateFieldInitSpec(this, _mt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _bt, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _bt, _t8);\n _classPrivateFieldSet(this, _Z, _e6);\n _classPrivateFieldGet(this, _Z)._on(\"editingaction\", _classPrivateFieldGet(this, _ht));\n _classPrivateFieldGet(this, _Z)._on(\"pagechanging\", _classPrivateFieldGet(this, _dt));\n _classPrivateFieldGet(this, _Z)._on(\"scalechanging\", _classPrivateFieldGet(this, _ut));\n _classPrivateFieldGet(this, _Z)._on(\"rotationchanging\", _classPrivateFieldGet(this, _pt));\n _classPrivateFieldSet(this, _$, _n4.annotationStorage);\n _classPrivateFieldSet(this, _tt, _n4.filterFactory);\n _classPrivateFieldSet(this, _st, _i3);\n this.viewParameters = {\n realScale: r.PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n }\n destroy() {\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\n _classPrivateFieldGet(this, _Z)._off(\"editingaction\", _classPrivateFieldGet(this, _ht));\n _classPrivateFieldGet(this, _Z)._off(\"pagechanging\", _classPrivateFieldGet(this, _dt));\n _classPrivateFieldGet(this, _Z)._off(\"scalechanging\", _classPrivateFieldGet(this, _ut));\n _classPrivateFieldGet(this, _Z)._off(\"rotationchanging\", _classPrivateFieldGet(this, _pt));\n for (const t of _classPrivateFieldGet(this, _V).values()) t.destroy();\n _classPrivateFieldGet(this, _V).clear();\n _classPrivateFieldGet(this, _G).clear();\n _classPrivateFieldGet(this, _Q).clear();\n _classPrivateFieldSet(this, _W, null);\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateFieldGet(this, _X).destroy();\n }\n get hcmFilter() {\n return (0, i.shadow)(this, \"hcmFilter\", _classPrivateFieldGet(this, _st) ? _classPrivateFieldGet(this, _tt).addHCMFilter(_classPrivateFieldGet(this, _st).foreground, _classPrivateFieldGet(this, _st).background) : \"none\");\n }\n onPageChanging(t) {\n let {\n pageNumber: e\n } = t;\n _classPrivateFieldSet(this, _K, e - 1);\n }\n focusMainContainer() {\n _classPrivateFieldGet(this, _bt).focus();\n }\n addShouldRescale(t) {\n _classPrivateFieldGet(this, _Q).add(t);\n }\n removeShouldRescale(t) {\n _classPrivateFieldGet(this, _Q).delete(t);\n }\n onScaleChanging(t) {\n let {\n scale: e\n } = t;\n this.commitOrRemove();\n this.viewParameters.realScale = e * r.PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const t of _classPrivateFieldGet(this, _Q)) t.onScaleChanging();\n }\n onRotationChanging(t) {\n let {\n pagesRotation: e\n } = t;\n this.commitOrRemove();\n this.viewParameters.rotation = e;\n }\n addToAnnotationStorage(t) {\n t.isEmpty() || !_classPrivateFieldGet(this, _$) || _classPrivateFieldGet(this, _$).has(t.id) || _classPrivateFieldGet(this, _$).setValue(t.id, t);\n }\n copy(t) {\n t.preventDefault();\n _classPrivateFieldGet(this, _W) && _classPrivateFieldGet(this, _W).commitOrRemove();\n if (!this.hasSelection) return;\n const e = [];\n for (const t of _classPrivateFieldGet(this, _rt)) {\n const n = t.serialize(!0);\n n && e.push(n);\n }\n 0 !== e.length && t.clipboardData.setData(\"application/pdfjs\", JSON.stringify(e));\n }\n cut(t) {\n this.copy(t);\n this.delete();\n }\n paste(t) {\n t.preventDefault();\n let e = t.clipboardData.getData(\"application/pdfjs\");\n if (!e) return;\n try {\n e = JSON.parse(e);\n } catch (t) {\n (0, i.warn)(\"paste: \\\"\".concat(t.message, \"\\\".\"));\n return;\n }\n if (!Array.isArray(e)) return;\n this.unselectAll();\n const n = this.currentLayer;\n try {\n const t = [];\n for (const i of e) {\n const e = n.deserialize(i);\n if (!e) return;\n t.push(e);\n }\n const cmd = () => {\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\n _classPrivateMethodGet(this, _Et, _Et2).call(this, t);\n },\n undo = () => {\n for (const e of t) e.remove();\n };\n this.addCommands({\n cmd: cmd,\n undo: undo,\n mustExec: !0\n });\n } catch (t) {\n (0, i.warn)(\"paste: \\\"\".concat(t.message, \"\\\".\"));\n }\n }\n keydown(t) {\n var _this$getActive;\n ((_this$getActive = this.getActive()) === null || _this$getActive === void 0 ? void 0 : _this$getActive.shouldGetKeyboardEvents()) || AnnotationEditorUIManager._keyboardManager.exec(this, t);\n }\n onEditingAction(t) {\n [\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(t.name) && this[t.name]();\n }\n setEditingState(t) {\n if (t) {\n _classPrivateMethodGet(this, _yt, _yt2).call(this);\n _classPrivateMethodGet(this, _At, _At2).call(this);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n isEditing: _classPrivateFieldGet(this, _it) !== i.AnnotationEditorType.NONE,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this),\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\n hasSelectedEditor: !1\n });\n } else {\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\n _classPrivateMethodGet(this, _t6, _t7).call(this);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n isEditing: !1\n });\n }\n }\n registerEditorTypes(t) {\n if (!_classPrivateFieldGet(this, _J)) {\n _classPrivateFieldSet(this, _J, t);\n for (const t of _classPrivateFieldGet(this, _J)) _classPrivateMethodGet(this, _wt, _wt2).call(this, t.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return _classPrivateFieldGet(this, _et).getId();\n }\n get currentLayer() {\n return _classPrivateFieldGet(this, _V).get(_classPrivateFieldGet(this, _K));\n }\n get currentPageIndex() {\n return _classPrivateFieldGet(this, _K);\n }\n addLayer(t) {\n _classPrivateFieldGet(this, _V).set(t.pageIndex, t);\n _classPrivateFieldGet(this, _nt) ? t.enable() : t.disable();\n }\n removeLayer(t) {\n _classPrivateFieldGet(this, _V).delete(t.pageIndex);\n }\n updateMode(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n _classPrivateFieldSet(this, _it, t);\n if (t !== i.AnnotationEditorType.NONE) {\n this.setEditingState(!0);\n _classPrivateMethodGet(this, _Tt, _Tt2).call(this);\n for (const e of _classPrivateFieldGet(this, _V).values()) e.updateMode(t);\n if (e) for (const t of _classPrivateFieldGet(this, _G).values()) if (t.annotationElementId === e) {\n this.setSelected(t);\n t.enterInEditMode();\n break;\n }\n } else {\n this.setEditingState(!1);\n _classPrivateMethodGet(this, _Pt, _Pt2).call(this);\n }\n }\n updateToolbar(t) {\n t !== _classPrivateFieldGet(this, _it) && _classPrivateFieldGet(this, _Z).dispatch(\"switchannotationeditormode\", {\n source: this,\n mode: t\n });\n }\n updateParams(t, e) {\n if (_classPrivateFieldGet(this, _J)) {\n for (const n of _classPrivateFieldGet(this, _rt)) n.updateParams(t, e);\n for (const n of _classPrivateFieldGet(this, _J)) n.updateDefaultParams(t, e);\n }\n }\n getEditors(t) {\n const e = [];\n for (const n of _classPrivateFieldGet(this, _G).values()) n.pageIndex === t && e.push(n);\n return e;\n }\n getEditor(t) {\n return _classPrivateFieldGet(this, _G).get(t);\n }\n addEditor(t) {\n _classPrivateFieldGet(this, _G).set(t.id, t);\n }\n removeEditor(t) {\n var _classPrivateFieldGet4;\n _classPrivateFieldGet(this, _G).delete(t.id);\n this.unselect(t);\n t.annotationElementId && _classPrivateFieldGet(this, _Y).has(t.annotationElementId) || ((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _$)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.remove(t.id));\n }\n addDeletedAnnotationElement(t) {\n _classPrivateFieldGet(this, _Y).add(t.annotationElementId);\n t.deleted = !0;\n }\n isDeletedAnnotationElement(t) {\n return _classPrivateFieldGet(this, _Y).has(t);\n }\n removeDeletedAnnotationElement(t) {\n _classPrivateFieldGet(this, _Y).delete(t.annotationElementId);\n t.deleted = !1;\n }\n setActiveEditor(t) {\n if (_classPrivateFieldGet(this, _W) !== t) {\n _classPrivateFieldSet(this, _W, t);\n t && _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n }\n }\n toggleSelected(t) {\n if (_classPrivateFieldGet(this, _rt).has(t)) {\n _classPrivateFieldGet(this, _rt).delete(t);\n t.unselect();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: this.hasSelection\n });\n } else {\n _classPrivateFieldGet(this, _rt).add(t);\n t.select();\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n }\n setSelected(t) {\n for (const e of _classPrivateFieldGet(this, _rt)) e !== t && e.unselect();\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateFieldGet(this, _rt).add(t);\n t.select();\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n isSelected(t) {\n return _classPrivateFieldGet(this, _rt).has(t);\n }\n unselect(t) {\n t.unselect();\n _classPrivateFieldGet(this, _rt).delete(t);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return 0 !== _classPrivateFieldGet(this, _rt).size;\n }\n stopUndoAccumulation() {\n _classPrivateFieldGet(this, _X).stopUndoAccumulation();\n }\n undo() {\n _classPrivateFieldGet(this, _X).undo();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\n hasSomethingToRedo: !0,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n redo() {\n _classPrivateFieldGet(this, _X).redo();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: !0,\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n addCommands(t) {\n _classPrivateFieldGet(this, _X).add(t);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: !0,\n hasSomethingToRedo: !1,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) return;\n const t = [..._classPrivateFieldGet(this, _rt)];\n this.addCommands({\n cmd: () => {\n for (const e of t) e.remove();\n },\n undo: () => {\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\n },\n mustExec: !0\n });\n }\n commitOrRemove() {\n var _classPrivateFieldGet5;\n (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _W)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.commitOrRemove();\n }\n hasSomethingToControl() {\n return _classPrivateFieldGet(this, _W) || this.hasSelection;\n }\n selectAll() {\n for (const t of _classPrivateFieldGet(this, _rt)) t.commit();\n _classPrivateMethodGet(this, _Et, _Et2).call(this, _classPrivateFieldGet(this, _G).values());\n }\n unselectAll() {\n if (_classPrivateFieldGet(this, _W)) _classPrivateFieldGet(this, _W).commitOrRemove();else if (this.hasSelection) {\n for (const t of _classPrivateFieldGet(this, _rt)) t.unselect();\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !1\n });\n }\n }\n translateSelectedEditors(t, e) {\n arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || this.commitOrRemove();\n if (!this.hasSelection) return;\n _classPrivateFieldGet(this, _gt)[0] += t;\n _classPrivateFieldGet(this, _gt)[1] += e;\n const [n, i] = _classPrivateFieldGet(this, _gt),\n r = [..._classPrivateFieldGet(this, _rt)];\n _classPrivateFieldGet(this, _mt) && clearTimeout(_classPrivateFieldGet(this, _mt));\n _classPrivateFieldSet(this, _mt, setTimeout(() => {\n _classPrivateFieldSet(this, _mt, null);\n _classPrivateFieldGet(this, _gt)[0] = _classPrivateFieldGet(this, _gt)[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(n, i);\n },\n undo: () => {\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(-n, -i);\n },\n mustExec: !1\n });\n }, 1e3));\n for (const n of r) n.translateInPage(t, e);\n }\n isActive(t) {\n return _classPrivateFieldGet(this, _W) === t;\n }\n getActive() {\n return _classPrivateFieldGet(this, _W);\n }\n getMode() {\n return _classPrivateFieldGet(this, _it);\n }\n get imageManager() {\n return (0, i.shadow)(this, \"imageManager\", new ImageManager());\n }\n }\n function _yt2() {\n window.addEventListener(\"keydown\", _classPrivateFieldGet(this, _ct), {\n capture: !0\n });\n }\n function _vt2() {\n window.removeEventListener(\"keydown\", _classPrivateFieldGet(this, _ct), {\n capture: !0\n });\n }\n function _At2() {\n document.addEventListener(\"copy\", _classPrivateFieldGet(this, _at));\n document.addEventListener(\"cut\", _classPrivateFieldGet(this, _ot));\n document.addEventListener(\"paste\", _classPrivateFieldGet(this, _lt));\n }\n function _t7() {\n document.removeEventListener(\"copy\", _classPrivateFieldGet(this, _at));\n document.removeEventListener(\"cut\", _classPrivateFieldGet(this, _ot));\n document.removeEventListener(\"paste\", _classPrivateFieldGet(this, _lt));\n }\n function _xt2(t) {\n Object.entries(t).some(t => {\n let [e, n] = t;\n return _classPrivateFieldGet(this, _ft)[e] !== n;\n }) && _classPrivateFieldGet(this, _Z).dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(_classPrivateFieldGet(this, _ft), t)\n });\n }\n function _wt2(t) {\n _classPrivateFieldGet(this, _Z).dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details: t\n });\n }\n function _Tt2() {\n if (!_classPrivateFieldGet(this, _nt)) {\n _classPrivateFieldSet(this, _nt, !0);\n for (const t of _classPrivateFieldGet(this, _V).values()) t.enable();\n }\n }\n function _Pt2() {\n this.unselectAll();\n if (_classPrivateFieldGet(this, _nt)) {\n _classPrivateFieldSet(this, _nt, !1);\n for (const t of _classPrivateFieldGet(this, _V).values()) t.disable();\n }\n }\n function _St2(t) {\n const e = _classPrivateFieldGet(this, _V).get(t.pageIndex);\n e ? e.addOrRebuild(t) : this.addEditor(t);\n }\n function _Ct2() {\n if (0 === _classPrivateFieldGet(this, _G).size) return !0;\n if (1 === _classPrivateFieldGet(this, _G).size) for (const t of _classPrivateFieldGet(this, _G).values()) return t.isEmpty();\n return !1;\n }\n function _Et2(t) {\n _classPrivateFieldGet(this, _rt).clear();\n for (const e of t) if (!e.isEmpty()) {\n _classPrivateFieldGet(this, _rt).add(e);\n e.select();\n }\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n _defineProperty(AnnotationEditorUIManager, \"TRANSLATE_SMALL\", 1);\n _defineProperty(AnnotationEditorUIManager, \"TRANSLATE_BIG\", 10);\n e.AnnotationEditorUIManager = AnnotationEditorUIManager;\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(6),\n s = n(4),\n a = n(24),\n o = n(14),\n l = n(8),\n c = n(21),\n h = n(20),\n d = n(91),\n u = n(39),\n p = n(77),\n f = n(64),\n g = n(158),\n m = n(7),\n b = n(166),\n v = n(27),\n y = s.JSON,\n A = s.Number,\n _ = s.SyntaxError,\n S = y && y.parse,\n E = a(\"Object\", \"keys\"),\n x = Object.getOwnPropertyDescriptor,\n w = o(\"\".charAt),\n C = o(\"\".slice),\n T = o(/./.exec),\n P = o([].push),\n k = /^\\d$/,\n M = /^[1-9]$/,\n R = /^(-|\\d)$/,\n I = /^[\\t\\n\\r ]$/,\n internalize = function internalize(t, e, n, i) {\n var r,\n s,\n a,\n o,\n c,\n p = t[e],\n g = i && p === i.value,\n m = g && \"string\" == typeof i.source ? {\n source: i.source\n } : {};\n if (h(p)) {\n var b = d(p),\n v = g ? i.nodes : b ? [] : {};\n if (b) {\n r = v.length;\n a = f(p);\n for (o = 0; o < a; o++) internalizeProperty(p, o, internalize(p, \"\" + o, n, o < r ? v[o] : void 0));\n } else {\n s = E(p);\n a = f(s);\n for (o = 0; o < a; o++) {\n c = s[o];\n internalizeProperty(p, c, internalize(p, c, n, u(v, c) ? v[c] : void 0));\n }\n }\n }\n return l(n, t, e, p, m);\n },\n internalizeProperty = function internalizeProperty(t, e, n) {\n if (r) {\n var i = x(t, e);\n if (i && !i.configurable) return;\n }\n void 0 === n ? delete t[e] : g(t, e, n);\n },\n Node = function Node(t, e, n, i) {\n this.value = t;\n this.end = e;\n this.source = n;\n this.nodes = i;\n },\n Context = function Context(t, e) {\n this.source = t;\n this.index = e;\n };\n Context.prototype = {\n fork: function fork(t) {\n return new Context(this.source, t);\n },\n parse: function parse() {\n var t = this.source,\n e = this.skip(I, this.index),\n n = this.fork(e),\n i = w(t, e);\n if (T(R, i)) return n.number();\n switch (i) {\n case \"{\":\n return n.object();\n case \"[\":\n return n.array();\n case '\"':\n return n.string();\n case \"t\":\n return n.keyword(!0);\n case \"f\":\n return n.keyword(!1);\n case \"n\":\n return n.keyword(null);\n }\n throw _('Unexpected character: \"' + i + '\" at: ' + e);\n },\n node: function node(t, e, n, i, r) {\n return new Node(e, i, t ? null : C(this.source, n, i), r);\n },\n object: function object() {\n for (var t = this.source, e = this.index + 1, n = !1, i = {}, r = {}; e < t.length;) {\n e = this.until(['\"', \"}\"], e);\n if (\"}\" == w(t, e) && !n) {\n e++;\n break;\n }\n var s = this.fork(e).string(),\n a = s.value;\n e = s.end;\n e = this.until([\":\"], e) + 1;\n e = this.skip(I, e);\n s = this.fork(e).parse();\n g(r, a, s);\n g(i, a, s.value);\n e = this.until([\",\", \"}\"], s.end);\n var o = w(t, e);\n if (\",\" == o) {\n n = !0;\n e++;\n } else if (\"}\" == o) {\n e++;\n break;\n }\n }\n return this.node(1, i, this.index, e, r);\n },\n array: function array() {\n for (var t = this.source, e = this.index + 1, n = !1, i = [], r = []; e < t.length;) {\n e = this.skip(I, e);\n if (\"]\" == w(t, e) && !n) {\n e++;\n break;\n }\n var s = this.fork(e).parse();\n P(r, s);\n P(i, s.value);\n e = this.until([\",\", \"]\"], s.end);\n if (\",\" == w(t, e)) {\n n = !0;\n e++;\n } else if (\"]\" == w(t, e)) {\n e++;\n break;\n }\n }\n return this.node(1, i, this.index, e, r);\n },\n string: function string() {\n var t = this.index,\n e = b(this.source, this.index + 1);\n return this.node(0, e.value, t, e.end);\n },\n number: function number() {\n var t = this.source,\n e = this.index,\n n = e;\n \"-\" == w(t, n) && n++;\n if (\"0\" == w(t, n)) n++;else {\n if (!T(M, w(t, n))) throw _(\"Failed to parse number at: \" + n);\n n = this.skip(k, ++n);\n }\n \".\" == w(t, n) && (n = this.skip(k, ++n));\n if (\"e\" == w(t, n) || \"E\" == w(t, n)) {\n n++;\n \"+\" != w(t, n) && \"-\" != w(t, n) || n++;\n if (n == (n = this.skip(k, n))) throw _(\"Failed to parse number's exponent value at: \" + n);\n }\n return this.node(0, A(C(t, e, n)), e, n);\n },\n keyword: function keyword(t) {\n var e = \"\" + t,\n n = this.index,\n i = n + e.length;\n if (C(this.source, n, i) != e) throw _(\"Failed to parse value at: \" + n);\n return this.node(0, t, n, i);\n },\n skip: function skip(t, e) {\n for (var n = this.source; e < n.length && T(t, w(n, e)); e++);\n return e;\n },\n until: function until(t, e) {\n e = this.skip(I, e);\n for (var n = w(this.source, e), i = 0; i < t.length; i++) if (t[i] == n) return e;\n throw _('Unexpected character: \"' + n + '\" at: ' + e);\n }\n };\n var D = m(function () {\n var t,\n e = \"9007199254740993\";\n S(e, function (e, n, i) {\n t = i.source;\n });\n return t !== e;\n }),\n O = v && !m(function () {\n return 1 / S(\"-0 \\t\") != -1 / 0;\n });\n i({\n target: \"JSON\",\n stat: !0,\n forced: D\n }, {\n parse: function parse(t, e) {\n return O && !c(e) ? S(t) : function (t, e) {\n t = p(t);\n var n = new Context(t, 0, \"\"),\n i = n.parse(),\n r = i.value,\n s = n.skip(I, i.end);\n if (s < t.length) throw _('Unexpected extra character: \"' + w(t, s) + '\" after the parsed data at: ' + s);\n return c(e) ? internalize({\n \"\": r\n }, \"\", e, i) : r;\n }(t, e);\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(39),\n s = SyntaxError,\n a = parseInt,\n o = String.fromCharCode,\n l = i(\"\".charAt),\n c = i(\"\".slice),\n h = i(/./.exec),\n d = {\n '\\\\\"': '\"',\n \"\\\\\\\\\": \"\\\\\",\n \"\\\\/\": \"/\",\n \"\\\\b\": \"\\b\",\n \"\\\\f\": \"\\f\",\n \"\\\\n\": \"\\n\",\n \"\\\\r\": \"\\r\",\n \"\\\\t\": \"\\t\"\n },\n u = /^[\\da-f]{4}$/i,\n p = /^[\\u0000-\\u001F]$/;\n t.exports = function (t, e) {\n for (var n = !0, i = \"\"; e < t.length;) {\n var f = l(t, e);\n if (\"\\\\\" == f) {\n var g = c(t, e, e + 2);\n if (r(d, g)) {\n i += d[g];\n e += 2;\n } else {\n if (\"\\\\u\" != g) throw s('Unknown escape sequence: \"' + g + '\"');\n var m = c(t, e += 2, e + 4);\n if (!h(u, m)) throw s(\"Bad Unicode escape at: \" + e);\n i += o(a(m, 16));\n e += 4;\n }\n } else {\n if ('\"' == f) {\n n = !1;\n e++;\n break;\n }\n if (h(p, f)) throw s(\"Bad control character in string literal at: \" + e);\n i += f;\n e++;\n }\n }\n if (n) throw s(\"Unterminated string at: \" + e);\n return {\n value: i,\n end: e\n };\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _class19;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StatTimer = e.RenderingCancelledException = e.PixelsPerInch = e.PageViewport = e.PDFDateString = e.DOMStandardFontDataFactory = e.DOMSVGFactory = e.DOMFilterFactory = e.DOMCanvasFactory = e.DOMCMapReaderFactory = e.AnnotationPrefix = void 0;\n e.deprecated = function deprecated(t) {\n console.log(\"Deprecated API usage: \" + t);\n };\n e.getColorValues = function getColorValues(t) {\n const e = document.createElement(\"span\");\n e.style.visibility = \"hidden\";\n document.body.append(e);\n for (const n of t.keys()) {\n e.style.color = n;\n const i = window.getComputedStyle(e).color;\n t.set(n, getRGB(i));\n }\n e.remove();\n };\n e.getCurrentTransform = function getCurrentTransform(t) {\n const {\n a: e,\n b: n,\n c: i,\n d: r,\n e: s,\n f: a\n } = t.getTransform();\n return [e, n, i, r, s, a];\n };\n e.getCurrentTransformInverse = function getCurrentTransformInverse(t) {\n const {\n a: e,\n b: n,\n c: i,\n d: r,\n e: s,\n f: a\n } = t.getTransform().invertSelf();\n return [e, n, i, r, s, a];\n };\n e.getFilenameFromUrl = function getFilenameFromUrl(t) {\n arguments.length > 1 && void 0 !== arguments[1] && arguments[1] || ([t] = t.split(/[#?]/, 1));\n return t.substring(t.lastIndexOf(\"/\") + 1);\n };\n e.getPdfFilenameFromUrl = function getPdfFilenameFromUrl(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"document.pdf\";\n if (\"string\" != typeof t) return e;\n if (isDataScheme(t)) {\n (0, r.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return e;\n }\n const n = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i,\n i = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/.exec(t);\n let s = n.exec(i[1]) || n.exec(i[2]) || n.exec(i[3]);\n if (s) {\n s = s[0];\n if (s.includes(\"%\")) try {\n s = n.exec(decodeURIComponent(s))[0];\n } catch (_unused9) {}\n }\n return s || e;\n };\n e.getRGB = getRGB;\n e.getXfaPageViewport = function getXfaPageViewport(t, e) {\n let {\n scale: n = 1,\n rotation: i = 0\n } = e;\n const {\n width: r,\n height: s\n } = t.attributes.style,\n a = [0, 0, parseInt(r), parseInt(s)];\n return new PageViewport({\n viewBox: a,\n scale: n,\n rotation: i\n });\n };\n e.isDataScheme = isDataScheme;\n e.isPdfFile = function isPdfFile(t) {\n return \"string\" == typeof t && /\\.pdf$/i.test(t);\n };\n e.isValidFetchUrl = isValidFetchUrl;\n e.loadScript = function loadScript(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n return new Promise((n, i) => {\n const r = document.createElement(\"script\");\n r.src = t;\n r.onload = function (t) {\n e && r.remove();\n n(t);\n };\n r.onerror = function () {\n i(new Error(\"Cannot load script at: \".concat(r.src)));\n };\n (document.head || document.documentElement).append(r);\n });\n };\n e.setLayerDimensions = function setLayerDimensions(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];\n if (e instanceof PageViewport) {\n const {\n pageWidth: i,\n pageHeight: r\n } = e.rawDims,\n {\n style: s\n } = t,\n a = \"calc(var(--scale-factor) * \".concat(i, \"px)\"),\n o = \"calc(var(--scale-factor) * \".concat(r, \"px)\");\n if (n && e.rotation % 180 != 0) {\n s.width = o;\n s.height = a;\n } else {\n s.width = a;\n s.height = o;\n }\n }\n i && t.setAttribute(\"data-main-rotation\", e.rotation);\n };\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n n(84);\n n(86);\n n(87);\n var i = n(168),\n r = n(1);\n const s = \"http://www.w3.org/2000/svg\";\n e.AnnotationPrefix = \"pdfjs_internal_id_\";\n class PixelsPerInch {}\n _class19 = PixelsPerInch;\n _defineProperty(PixelsPerInch, \"CSS\", 96);\n _defineProperty(PixelsPerInch, \"PDF\", 72);\n _defineProperty(PixelsPerInch, \"PDF_TO_CSS_UNITS\", _class19.CSS / _class19.PDF);\n e.PixelsPerInch = PixelsPerInch;\n var _kt = /*#__PURE__*/new WeakMap();\n var _Mt = /*#__PURE__*/new WeakMap();\n var _e7 = /*#__PURE__*/new WeakMap();\n var _Rt = /*#__PURE__*/new WeakMap();\n var _Ft = /*#__PURE__*/new WeakMap();\n var _It = /*#__PURE__*/new WeakMap();\n var _Dt = /*#__PURE__*/new WeakMap();\n var _Ot = /*#__PURE__*/new WeakMap();\n var _Lt = /*#__PURE__*/new WeakMap();\n var _Nt = /*#__PURE__*/new WeakMap();\n var _O3 = /*#__PURE__*/new WeakMap();\n var _N2 = /*#__PURE__*/new WeakMap();\n var _Bt = /*#__PURE__*/new WeakMap();\n var _Ht = /*#__PURE__*/new WeakSet();\n var _jt = /*#__PURE__*/new WeakSet();\n var _qt = /*#__PURE__*/new WeakSet();\n var _Ut = /*#__PURE__*/new WeakSet();\n var _zt = /*#__PURE__*/new WeakSet();\n class DOMFilterFactory extends i.BaseFilterFactory {\n constructor() {\n let {\n docId: _t9,\n ownerDocument: _e8 = globalThis.document\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n super();\n _classPrivateMethodInitSpec(this, _zt);\n _classPrivateMethodInitSpec(this, _Ut);\n _classPrivateMethodInitSpec(this, _qt);\n _classPrivateMethodInitSpec(this, _jt);\n _classPrivateMethodInitSpec(this, _Ht);\n _classPrivateFieldInitSpec(this, _Bt, {\n get: _get_Bt,\n set: void 0\n });\n _classPrivateFieldInitSpec(this, _N2, {\n get: _get_N,\n set: void 0\n });\n _classPrivateFieldInitSpec(this, _kt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Mt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _e7, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Rt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ft, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _It, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Dt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ot, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Lt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Nt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _O3, {\n writable: true,\n value: 0\n });\n _classPrivateFieldSet(this, _e7, _t9);\n _classPrivateFieldSet(this, _Rt, _e8);\n }\n addFilter(t) {\n var _this$O5, _this$O6;\n if (!t) return \"none\";\n let e,\n n,\n i,\n r,\n s = _classPrivateFieldGet(this, _N2).get(t);\n if (s) return s;\n if (1 === t.length) {\n const s = t[0],\n a = new Array(256);\n for (let t = 0; t < 256; t++) a[t] = s[t] / 255;\n r = e = n = i = a.join(\",\");\n } else {\n const [s, a, o] = t,\n l = new Array(256),\n c = new Array(256),\n h = new Array(256);\n for (let t = 0; t < 256; t++) {\n l[t] = s[t] / 255;\n c[t] = a[t] / 255;\n h[t] = o[t] / 255;\n }\n e = l.join(\",\");\n n = c.join(\",\");\n i = h.join(\",\");\n r = \"\".concat(e).concat(n).concat(i);\n }\n s = _classPrivateFieldGet(this, _N2).get(r);\n if (s) {\n _classPrivateFieldGet(this, _N2).set(t, s);\n return s;\n }\n const a = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_transfer_map_\").concat((_classPrivateFieldSet(this, _O3, (_this$O5 = _classPrivateFieldGet(this, _O3), _this$O6 = _this$O5++, _this$O5)), _this$O6)),\n o = \"url(#\".concat(a, \")\");\n _classPrivateFieldGet(this, _N2).set(t, o);\n _classPrivateFieldGet(this, _N2).set(r, o);\n const l = _classPrivateMethodGet(this, _jt, _jt2).call(this, a);\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, e, n, i, l);\n return o;\n }\n addHCMFilter(t, e) {\n var _classPrivateFieldGet6;\n const n = \"\".concat(t, \"-\").concat(e);\n if (_classPrivateFieldGet(this, _It) === n) return _classPrivateFieldGet(this, _Dt);\n _classPrivateFieldSet(this, _It, n);\n _classPrivateFieldSet(this, _Dt, \"none\");\n (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _Ft)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.remove();\n if (!t || !e) return _classPrivateFieldGet(this, _Dt);\n const i = _classPrivateMethodGet(this, _zt, _zt2).call(this, t);\n t = r.Util.makeHexColor(...i);\n const s = _classPrivateMethodGet(this, _zt, _zt2).call(this, e);\n e = r.Util.makeHexColor(...s);\n _classPrivateFieldGet(this, _Bt).style.color = \"\";\n if (\"#000000\" === t && \"#ffffff\" === e || t === e) return _classPrivateFieldGet(this, _Dt);\n const a = new Array(256);\n for (let t = 0; t <= 255; t++) {\n const e = t / 255;\n a[t] = e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;\n }\n const o = a.join(\",\"),\n l = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_hcm_filter\"),\n c = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, l));\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, o, o, o, c);\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, c);\n const getSteps = (t, e) => {\n const n = i[t] / 255,\n r = s[t] / 255,\n a = new Array(e + 1);\n for (let t = 0; t <= e; t++) a[t] = n + t / e * (r - n);\n return a.join(\",\");\n };\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), c);\n _classPrivateFieldSet(this, _Dt, \"url(#\".concat(l, \")\"));\n return _classPrivateFieldGet(this, _Dt);\n }\n addHighlightHCMFilter(t, e, n, i) {\n var _classPrivateFieldGet7;\n const r = \"\".concat(t, \"-\").concat(e, \"-\").concat(n, \"-\").concat(i);\n if (_classPrivateFieldGet(this, _Lt) === r) return _classPrivateFieldGet(this, _Nt);\n _classPrivateFieldSet(this, _Lt, r);\n _classPrivateFieldSet(this, _Nt, \"none\");\n (_classPrivateFieldGet7 = _classPrivateFieldGet(this, _Ot)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.remove();\n if (!t || !e) return _classPrivateFieldGet(this, _Nt);\n const [s, a] = [t, e].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\n let o = Math.round(.2126 * s[0] + .7152 * s[1] + .0722 * s[2]),\n l = Math.round(.2126 * a[0] + .7152 * a[1] + .0722 * a[2]),\n [c, h] = [n, i].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\n l < o && ([o, l, c, h] = [l, o, h, c]);\n _classPrivateFieldGet(this, _Bt).style.color = \"\";\n const getSteps = (t, e, n) => {\n const i = new Array(256),\n r = (l - o) / n,\n s = t / 255,\n a = (e - t) / (255 * n);\n let c = 0;\n for (let t = 0; t <= n; t++) {\n const e = Math.round(o + t * r),\n n = s + t * a;\n for (let t = c; t <= e; t++) i[t] = n;\n c = e + 1;\n }\n for (let t = c; t < 256; t++) i[t] = i[c - 1];\n return i.join(\",\");\n },\n d = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_hcm_highlight_filter\"),\n u = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, d));\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, u);\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(c[0], h[0], 5), getSteps(c[1], h[1], 5), getSteps(c[2], h[2], 5), u);\n _classPrivateFieldSet(this, _Nt, \"url(#\".concat(d, \")\"));\n return _classPrivateFieldGet(this, _Nt);\n }\n destroy() {\n if (!(arguments.length > 0 && void 0 !== arguments[0] && arguments[0]) || !_classPrivateFieldGet(this, _Dt) && !_classPrivateFieldGet(this, _Nt)) {\n if (_classPrivateFieldGet(this, _Mt)) {\n _classPrivateFieldGet(this, _Mt).parentNode.parentNode.remove();\n _classPrivateFieldSet(this, _Mt, null);\n }\n if (_classPrivateFieldGet(this, _kt)) {\n _classPrivateFieldGet(this, _kt).clear();\n _classPrivateFieldSet(this, _kt, null);\n }\n _classPrivateFieldSet(this, _O3, 0);\n }\n }\n }\n function _get_N() {\n return _classPrivateFieldGet(this, _kt) || _classPrivateFieldSet(this, _kt, new Map());\n }\n function _get_Bt() {\n if (!_classPrivateFieldGet(this, _Mt)) {\n const t = _classPrivateFieldGet(this, _Rt).createElement(\"div\"),\n {\n style: e\n } = t;\n e.visibility = \"hidden\";\n e.contain = \"strict\";\n e.width = e.height = 0;\n e.position = \"absolute\";\n e.top = e.left = 0;\n e.zIndex = -1;\n const n = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"svg\");\n n.setAttribute(\"width\", 0);\n n.setAttribute(\"height\", 0);\n _classPrivateFieldSet(this, _Mt, _classPrivateFieldGet(this, _Rt).createElementNS(s, \"defs\"));\n t.append(n);\n n.append(_classPrivateFieldGet(this, _Mt));\n _classPrivateFieldGet(this, _Rt).body.append(t);\n }\n return _classPrivateFieldGet(this, _Mt);\n }\n function _Ht2(t) {\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"feColorMatrix\");\n e.setAttribute(\"type\", \"matrix\");\n e.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n t.append(e);\n }\n function _jt2(t) {\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"filter\");\n e.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n e.setAttribute(\"id\", t);\n _classPrivateFieldGet(this, _Bt).append(e);\n return e;\n }\n function _qt2(t, e, n) {\n const i = _classPrivateFieldGet(this, _Rt).createElementNS(s, e);\n i.setAttribute(\"type\", \"discrete\");\n i.setAttribute(\"tableValues\", n);\n t.append(i);\n }\n function _Ut2(t, e, n, i) {\n const r = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"feComponentTransfer\");\n i.append(r);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncR\", t);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncG\", e);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncB\", n);\n }\n function _zt2(t) {\n _classPrivateFieldGet(this, _Bt).style.color = t;\n return getRGB(getComputedStyle(_classPrivateFieldGet(this, _Bt)).getPropertyValue(\"color\"));\n }\n e.DOMFilterFactory = DOMFilterFactory;\n class DOMCanvasFactory extends i.BaseCanvasFactory {\n constructor() {\n let {\n ownerDocument: t = globalThis.document\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n super();\n this._document = t;\n }\n _createCanvas(t, e) {\n const n = this._document.createElement(\"canvas\");\n n.width = t;\n n.height = e;\n return n;\n }\n }\n e.DOMCanvasFactory = DOMCanvasFactory;\n async function fetchData(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (isValidFetchUrl(t, document.baseURI)) {\n const n = await fetch(t);\n if (!n.ok) throw new Error(n.statusText);\n return e ? new Uint8Array(await n.arrayBuffer()) : (0, r.stringToBytes)(await n.text());\n }\n return new Promise((n, i) => {\n const s = new XMLHttpRequest();\n s.open(\"GET\", t, !0);\n e && (s.responseType = \"arraybuffer\");\n s.onreadystatechange = () => {\n if (s.readyState === XMLHttpRequest.DONE) {\n if (200 === s.status || 0 === s.status) {\n let t;\n e && s.response ? t = new Uint8Array(s.response) : !e && s.responseText && (t = (0, r.stringToBytes)(s.responseText));\n if (t) {\n n(t);\n return;\n }\n }\n i(new Error(s.statusText));\n }\n };\n s.send(null);\n });\n }\n class DOMCMapReaderFactory extends i.BaseCMapReaderFactory {\n _fetchData(t, e) {\n return fetchData(t, this.isCompressed).then(t => ({\n cMapData: t,\n compressionType: e\n }));\n }\n }\n e.DOMCMapReaderFactory = DOMCMapReaderFactory;\n class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory {\n _fetchData(t) {\n return fetchData(t, !0);\n }\n }\n e.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n class DOMSVGFactory extends i.BaseSVGFactory {\n _createSVG(t) {\n return document.createElementNS(s, t);\n }\n }\n e.DOMSVGFactory = DOMSVGFactory;\n class PageViewport {\n constructor(t) {\n let {\n viewBox: e,\n scale: n,\n rotation: i,\n offsetX: r = 0,\n offsetY: s = 0,\n dontFlip: a = !1\n } = t;\n this.viewBox = e;\n this.scale = n;\n this.rotation = i;\n this.offsetX = r;\n this.offsetY = s;\n const o = (e[2] + e[0]) / 2,\n l = (e[3] + e[1]) / 2;\n let c, h, d, u, p, f, g, m;\n i %= 360;\n i < 0 && (i += 360);\n switch (i) {\n case 180:\n c = -1;\n h = 0;\n d = 0;\n u = 1;\n break;\n case 90:\n c = 0;\n h = 1;\n d = 1;\n u = 0;\n break;\n case 270:\n c = 0;\n h = -1;\n d = -1;\n u = 0;\n break;\n case 0:\n c = 1;\n h = 0;\n d = 0;\n u = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (a) {\n d = -d;\n u = -u;\n }\n if (0 === c) {\n p = Math.abs(l - e[1]) * n + r;\n f = Math.abs(o - e[0]) * n + s;\n g = (e[3] - e[1]) * n;\n m = (e[2] - e[0]) * n;\n } else {\n p = Math.abs(o - e[0]) * n + r;\n f = Math.abs(l - e[1]) * n + s;\n g = (e[2] - e[0]) * n;\n m = (e[3] - e[1]) * n;\n }\n this.transform = [c * n, h * n, d * n, u * n, p - c * n * o - d * n * l, f - h * n * o - u * n * l];\n this.width = g;\n this.height = m;\n }\n get rawDims() {\n const {\n viewBox: t\n } = this;\n return (0, r.shadow)(this, \"rawDims\", {\n pageWidth: t[2] - t[0],\n pageHeight: t[3] - t[1],\n pageX: t[0],\n pageY: t[1]\n });\n }\n clone() {\n let {\n scale: t = this.scale,\n rotation: e = this.rotation,\n offsetX: n = this.offsetX,\n offsetY: i = this.offsetY,\n dontFlip: r = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale: t,\n rotation: e,\n offsetX: n,\n offsetY: i,\n dontFlip: r\n });\n }\n convertToViewportPoint(t, e) {\n return r.Util.applyTransform([t, e], this.transform);\n }\n convertToViewportRectangle(t) {\n const e = r.Util.applyTransform([t[0], t[1]], this.transform),\n n = r.Util.applyTransform([t[2], t[3]], this.transform);\n return [e[0], e[1], n[0], n[1]];\n }\n convertToPdfPoint(t, e) {\n return r.Util.applyInverseTransform([t, e], this.transform);\n }\n }\n e.PageViewport = PageViewport;\n class RenderingCancelledException extends r.BaseException {\n constructor(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\n super(t, \"RenderingCancelledException\");\n this.extraDelay = e;\n }\n }\n e.RenderingCancelledException = RenderingCancelledException;\n function isDataScheme(t) {\n const e = t.length;\n let n = 0;\n for (; n < e && \"\" === t[n].trim();) n++;\n return \"data:\" === t.substring(n, n + 5).toLowerCase();\n }\n e.StatTimer = class StatTimer {\n constructor() {\n _defineProperty(this, \"started\", Object.create(null));\n _defineProperty(this, \"times\", []);\n }\n time(t) {\n t in this.started && (0, r.warn)(\"Timer is already running for \".concat(t));\n this.started[t] = Date.now();\n }\n timeEnd(t) {\n t in this.started || (0, r.warn)(\"Timer has not been started for \".concat(t));\n this.times.push({\n name: t,\n start: this.started[t],\n end: Date.now()\n });\n delete this.started[t];\n }\n toString() {\n const t = [];\n let e = 0;\n for (const {\n name: t\n } of this.times) e = Math.max(t.length, e);\n for (const {\n name: n,\n start: i,\n end: r\n } of this.times) t.push(\"\".concat(n.padEnd(e), \" \").concat(r - i, \"ms\\n\"));\n return t.join(\"\");\n }\n };\n function isValidFetchUrl(t, e) {\n try {\n const {\n protocol: n\n } = e ? new URL(t, e) : new URL(t);\n return \"http:\" === n || \"https:\" === n;\n } catch (_unused10) {\n return !1;\n }\n }\n let a;\n e.PDFDateString = class PDFDateString {\n static toDateObject(t) {\n if (!t || \"string\" != typeof t) return null;\n a || (a = new RegExp(\"^D:(\\\\d{4})(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?([Z|+|-])?(\\\\d{2})?'?(\\\\d{2})?'?\"));\n const e = a.exec(t);\n if (!e) return null;\n const n = parseInt(e[1], 10);\n let i = parseInt(e[2], 10);\n i = i >= 1 && i <= 12 ? i - 1 : 0;\n let r = parseInt(e[3], 10);\n r = r >= 1 && r <= 31 ? r : 1;\n let s = parseInt(e[4], 10);\n s = s >= 0 && s <= 23 ? s : 0;\n let o = parseInt(e[5], 10);\n o = o >= 0 && o <= 59 ? o : 0;\n let l = parseInt(e[6], 10);\n l = l >= 0 && l <= 59 ? l : 0;\n const c = e[7] || \"Z\";\n let h = parseInt(e[8], 10);\n h = h >= 0 && h <= 23 ? h : 0;\n let d = parseInt(e[9], 10) || 0;\n d = d >= 0 && d <= 59 ? d : 0;\n if (\"-\" === c) {\n s += h;\n o += d;\n } else if (\"+\" === c) {\n s -= h;\n o -= d;\n }\n return new Date(Date.UTC(n, i, r, s, o, l));\n }\n };\n function getRGB(t) {\n if (t.startsWith(\"#\")) {\n const e = parseInt(t.slice(1), 16);\n return [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e];\n }\n if (t.startsWith(\"rgb(\")) return t.slice(4, -1).split(\",\").map(t => parseInt(t));\n if (t.startsWith(\"rgba(\")) return t.slice(5, -1).split(\",\").map(t => parseInt(t)).slice(0, 3);\n (0, r.warn)(\"Not a valid color format: \\\"\".concat(t, \"\\\"\"));\n return [0, 0, 0];\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.BaseStandardFontDataFactory = e.BaseSVGFactory = e.BaseFilterFactory = e.BaseCanvasFactory = e.BaseCMapReaderFactory = void 0;\n n(2);\n var i = n(1);\n class BaseFilterFactory {\n constructor() {\n this.constructor === BaseFilterFactory && (0, i.unreachable)(\"Cannot initialize BaseFilterFactory.\");\n }\n addFilter(t) {\n return \"none\";\n }\n addHCMFilter(t, e) {\n return \"none\";\n }\n addHighlightHCMFilter(t, e, n, i) {\n return \"none\";\n }\n destroy() {}\n }\n e.BaseFilterFactory = BaseFilterFactory;\n class BaseCanvasFactory {\n constructor() {\n this.constructor === BaseCanvasFactory && (0, i.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n create(t, e) {\n if (t <= 0 || e <= 0) throw new Error(\"Invalid canvas size\");\n const n = this._createCanvas(t, e);\n return {\n canvas: n,\n context: n.getContext(\"2d\")\n };\n }\n reset(t, e, n) {\n if (!t.canvas) throw new Error(\"Canvas is not specified\");\n if (e <= 0 || n <= 0) throw new Error(\"Invalid canvas size\");\n t.canvas.width = e;\n t.canvas.height = n;\n }\n destroy(t) {\n if (!t.canvas) throw new Error(\"Canvas is not specified\");\n t.canvas.width = 0;\n t.canvas.height = 0;\n t.canvas = null;\n t.context = null;\n }\n _createCanvas(t, e) {\n (0, i.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n }\n e.BaseCanvasFactory = BaseCanvasFactory;\n class BaseCMapReaderFactory {\n constructor(t) {\n let {\n baseUrl: e = null,\n isCompressed: n = !0\n } = t;\n this.constructor === BaseCMapReaderFactory && (0, i.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n this.baseUrl = e;\n this.isCompressed = n;\n }\n async fetch(t) {\n let {\n name: e\n } = t;\n if (!this.baseUrl) throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n if (!e) throw new Error(\"CMap name must be specified.\");\n const n = this.baseUrl + e + (this.isCompressed ? \".bcmap\" : \"\"),\n r = this.isCompressed ? i.CMapCompressionType.BINARY : i.CMapCompressionType.NONE;\n return this._fetchData(n, r).catch(t => {\n throw new Error(\"Unable to load \".concat(this.isCompressed ? \"binary \" : \"\", \"CMap at: \").concat(n));\n });\n }\n _fetchData(t, e) {\n (0, i.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }\n e.BaseCMapReaderFactory = BaseCMapReaderFactory;\n class BaseStandardFontDataFactory {\n constructor(t) {\n let {\n baseUrl: e = null\n } = t;\n this.constructor === BaseStandardFontDataFactory && (0, i.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n this.baseUrl = e;\n }\n async fetch(t) {\n let {\n filename: e\n } = t;\n if (!this.baseUrl) throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that the \"standardFontDataUrl\" API parameter is provided.');\n if (!e) throw new Error(\"Font filename must be specified.\");\n const n = \"\".concat(this.baseUrl).concat(e);\n return this._fetchData(n).catch(t => {\n throw new Error(\"Unable to load font data at: \".concat(n));\n });\n }\n _fetchData(t) {\n (0, i.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }\n e.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n class BaseSVGFactory {\n constructor() {\n this.constructor === BaseSVGFactory && (0, i.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n create(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (t <= 0 || e <= 0) throw new Error(\"Invalid SVG dimensions\");\n const i = this._createSVG(\"svg:svg\");\n i.setAttribute(\"version\", \"1.1\");\n if (!n) {\n i.setAttribute(\"width\", \"\".concat(t, \"px\"));\n i.setAttribute(\"height\", \"\".concat(e, \"px\"));\n }\n i.setAttribute(\"preserveAspectRatio\", \"none\");\n i.setAttribute(\"viewBox\", \"0 0 \".concat(t, \" \").concat(e));\n return i;\n }\n createElement(t) {\n if (\"string\" != typeof t) throw new Error(\"Invalid SVG element type\");\n return this._createSVG(t);\n }\n _createSVG(t) {\n (0, i.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n }\n e.BaseSVGFactory = BaseSVGFactory;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.MurmurHash3_64 = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(2);\n var i = n(1);\n const r = 3285377520,\n s = 4294901760,\n a = 65535;\n e.MurmurHash3_64 = class MurmurHash3_64 {\n constructor(t) {\n this.h1 = t ? 4294967295 & t : r;\n this.h2 = t ? 4294967295 & t : r;\n }\n update(t) {\n let e, n;\n if (\"string\" == typeof t) {\n e = new Uint8Array(2 * t.length);\n n = 0;\n for (let i = 0, r = t.length; i < r; i++) {\n const r = t.charCodeAt(i);\n if (r <= 255) e[n++] = r;else {\n e[n++] = r >>> 8;\n e[n++] = 255 & r;\n }\n }\n } else {\n if (!(0, i.isArrayBuffer)(t)) throw new Error(\"Wrong data format in MurmurHash3_64_update. Input must be a string or array.\");\n e = t.slice();\n n = e.byteLength;\n }\n const r = n >> 2,\n o = n - 4 * r,\n l = new Uint32Array(e.buffer, 0, r);\n let c = 0,\n h = 0,\n d = this.h1,\n u = this.h2;\n const p = 3432918353,\n f = 461845907,\n g = 11601,\n m = 13715;\n for (let t = 0; t < r; t++) if (1 & t) {\n c = l[t];\n c = c * p & s | c * g & a;\n c = c << 15 | c >>> 17;\n c = c * f & s | c * m & a;\n d ^= c;\n d = d << 13 | d >>> 19;\n d = 5 * d + 3864292196;\n } else {\n h = l[t];\n h = h * p & s | h * g & a;\n h = h << 15 | h >>> 17;\n h = h * f & s | h * m & a;\n u ^= h;\n u = u << 13 | u >>> 19;\n u = 5 * u + 3864292196;\n }\n c = 0;\n switch (o) {\n case 3:\n c ^= e[4 * r + 2] << 16;\n case 2:\n c ^= e[4 * r + 1] << 8;\n case 1:\n c ^= e[4 * r];\n c = c * p & s | c * g & a;\n c = c << 15 | c >>> 17;\n c = c * f & s | c * m & a;\n 1 & r ? d ^= c : u ^= c;\n }\n this.h1 = d;\n this.h2 = u;\n }\n hexdigest() {\n let t = this.h1,\n e = this.h2;\n t ^= e >>> 1;\n t = 3981806797 * t & s | 36045 * t & a;\n e = 4283543511 * e & s | (2950163797 * (e << 16 | t >>> 16) & s) >>> 16;\n t ^= e >>> 1;\n t = 444984403 * t & s | 60499 * t & a;\n e = 3301882366 * e & s | (3120437893 * (e << 16 | t >>> 16) & s) >>> 16;\n t ^= e >>> 1;\n return (t >>> 0).toString(16).padStart(8, \"0\") + (e >>> 0).toString(16).padStart(8, \"0\");\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _Wt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.FontLoader = e.FontFaceObject = void 0;\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n n(89);\n n(148);\n var i = n(1);\n e.FontLoader = (_Wt = /*#__PURE__*/new WeakMap(), class FontLoader {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _Wt, {\n writable: true,\n value: new Set()\n });\n let {\n ownerDocument: e = globalThis.document,\n styleElement: n = null\n } = t;\n this._document = e;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(t) {\n this.nativeFontFaces.add(t);\n this._document.fonts.add(t);\n }\n removeNativeFontFace(t) {\n this.nativeFontFaces.delete(t);\n this._document.fonts.delete(t);\n }\n insertRule(t) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const e = this.styleElement.sheet;\n e.insertRule(t, e.cssRules.length);\n }\n clear() {\n for (const t of this.nativeFontFaces) this._document.fonts.delete(t);\n this.nativeFontFaces.clear();\n _classPrivateFieldGet(this, _Wt).clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont(t) {\n if (t && !_classPrivateFieldGet(this, _Wt).has(t.loadedName)) {\n (0, i.assert)(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName: e,\n src: n,\n style: r\n } = t,\n s = new FontFace(e, n, r);\n this.addNativeFontFace(s);\n try {\n await s.load();\n _classPrivateFieldGet(this, _Wt).add(e);\n } catch (_unused11) {\n (0, i.warn)(\"Cannot load system font: \".concat(t.baseFontName, \", installing it could help to improve PDF rendering.\"));\n this.removeNativeFontFace(s);\n }\n } else (0, i.unreachable)(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n }\n async bind(t) {\n if (t.attached || t.missingFile && !t.systemFontInfo) return;\n t.attached = !0;\n if (t.systemFontInfo) {\n await this.loadSystemFont(t.systemFontInfo);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const e = t.createNativeFontFace();\n if (e) {\n this.addNativeFontFace(e);\n try {\n await e.loaded;\n } catch (n) {\n (0, i.warn)(\"Failed to load font '\".concat(e.family, \"': '\").concat(n, \"'.\"));\n t.disableFontFace = !0;\n throw n;\n }\n }\n return;\n }\n const e = t.createFontFaceRule();\n if (e) {\n this.insertRule(e);\n if (this.isSyncFontLoadingSupported) return;\n await new Promise(e => {\n const n = this._queueLoadingCallback(e);\n this._prepareFontLoadEvent(t, n);\n });\n }\n }\n get isFontLoadingAPISupported() {\n var _this$_document;\n const t = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts);\n return (0, i.shadow)(this, \"isFontLoadingAPISupported\", t);\n }\n get isSyncFontLoadingSupported() {\n let t = !1;\n (i.isNodeJS || \"undefined\" != typeof navigator && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) && (t = !0);\n return (0, i.shadow)(this, \"isSyncFontLoadingSupported\", t);\n }\n _queueLoadingCallback(t) {\n const {\n loadingRequests: e\n } = this,\n n = {\n done: !1,\n complete: function completeRequest() {\n (0, i.assert)(!n.done, \"completeRequest() cannot be called twice.\");\n n.done = !0;\n for (; e.length > 0 && e[0].done;) {\n const t = e.shift();\n setTimeout(t.callback, 0);\n }\n },\n callback: t\n };\n e.push(n);\n return n;\n }\n get _loadTestFont() {\n const t = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return (0, i.shadow)(this, \"_loadTestFont\", t);\n }\n _prepareFontLoadEvent(t, e) {\n function int32(t, e) {\n return t.charCodeAt(e) << 24 | t.charCodeAt(e + 1) << 16 | t.charCodeAt(e + 2) << 8 | 255 & t.charCodeAt(e + 3);\n }\n function spliceString(t, e, n, i) {\n return t.substring(0, e) + i + t.substring(e + n);\n }\n let n, r;\n const s = this._document.createElement(\"canvas\");\n s.width = 1;\n s.height = 1;\n const a = s.getContext(\"2d\");\n let o = 0;\n const l = \"lt\".concat(Date.now()).concat(this.loadTestFontId++);\n let c = this._loadTestFont;\n c = spliceString(c, 976, l.length, l);\n const h = 1482184792;\n let d = int32(c, 16);\n for (n = 0, r = l.length - 3; n < r; n += 4) d = d - h + int32(l, n) | 0;\n n < l.length && (d = d - h + int32(l + \"XXX\", n) | 0);\n c = spliceString(c, 16, 4, (0, i.string32)(d));\n const u = \"@font-face {font-family:\\\"\".concat(l, \"\\\";src:\", \"url(data:font/opentype;base64,\".concat(btoa(c), \");\"), \"}\");\n this.insertRule(u);\n const p = this._document.createElement(\"div\");\n p.style.visibility = \"hidden\";\n p.style.width = p.style.height = \"10px\";\n p.style.position = \"absolute\";\n p.style.top = p.style.left = \"0px\";\n for (const e of [t.loadedName, l]) {\n const t = this._document.createElement(\"span\");\n t.textContent = \"Hi\";\n t.style.fontFamily = e;\n p.append(t);\n }\n this._document.body.append(p);\n !function isFontReady(t, e) {\n if (++o > 30) {\n (0, i.warn)(\"Load test font never loaded.\");\n e();\n return;\n }\n a.font = \"30px \" + t;\n a.fillText(\".\", 0, 20);\n a.getImageData(0, 0, 1, 1).data[3] > 0 ? e() : setTimeout(isFontReady.bind(null, t, e));\n }(l, () => {\n p.remove();\n e.complete();\n });\n }\n });\n e.FontFaceObject = class FontFaceObject {\n constructor(t, e) {\n let {\n isEvalSupported: n = !0,\n disableFontFace: i = !1,\n ignoreErrors: r = !1,\n inspectFont: s = null\n } = e;\n this.compiledGlyphs = Object.create(null);\n for (const e in t) this[e] = t[e];\n this.isEvalSupported = !1 !== n;\n this.disableFontFace = !0 === i;\n this.ignoreErrors = !0 === r;\n this._inspectFont = s;\n }\n createNativeFontFace() {\n var _this$_inspectFont;\n if (!this.data || this.disableFontFace) return null;\n let t;\n if (this.cssFontInfo) {\n const e = {\n weight: this.cssFontInfo.fontWeight\n };\n this.cssFontInfo.italicAngle && (e.style = \"oblique \".concat(this.cssFontInfo.italicAngle, \"deg\"));\n t = new FontFace(this.cssFontInfo.fontFamily, this.data, e);\n } else t = new FontFace(this.loadedName, this.data, {});\n (_this$_inspectFont = this._inspectFont) === null || _this$_inspectFont === void 0 ? void 0 : _this$_inspectFont.call(this, this);\n return t;\n }\n createFontFaceRule() {\n var _this$_inspectFont2;\n if (!this.data || this.disableFontFace) return null;\n const t = (0, i.bytesToString)(this.data),\n e = \"url(data:\".concat(this.mimetype, \";base64,\").concat(btoa(t), \");\");\n let n;\n if (this.cssFontInfo) {\n let t = \"font-weight: \".concat(this.cssFontInfo.fontWeight, \";\");\n this.cssFontInfo.italicAngle && (t += \"font-style: oblique \".concat(this.cssFontInfo.italicAngle, \"deg;\"));\n n = \"@font-face {font-family:\\\"\".concat(this.cssFontInfo.fontFamily, \"\\\";\").concat(t, \"src:\").concat(e, \"}\");\n } else n = \"@font-face {font-family:\\\"\".concat(this.loadedName, \"\\\";src:\").concat(e, \"}\");\n (_this$_inspectFont2 = this._inspectFont) === null || _this$_inspectFont2 === void 0 ? void 0 : _this$_inspectFont2.call(this, this, e);\n return n;\n }\n getPathGenerator(t, e) {\n if (void 0 !== this.compiledGlyphs[e]) return this.compiledGlyphs[e];\n let n;\n try {\n n = t.get(this.loadedName + \"_path_\" + e);\n } catch (t) {\n if (!this.ignoreErrors) throw t;\n (0, i.warn)(\"getPathGenerator - ignoring character: \\\"\".concat(t, \"\\\".\"));\n return this.compiledGlyphs[e] = function (t, e) {};\n }\n if (this.isEvalSupported && i.FeatureTest.isEvalSupported) {\n const t = [];\n for (const e of n) {\n const n = void 0 !== e.args ? e.args.join(\",\") : \"\";\n t.push(\"c.\", e.cmd, \"(\", n, \");\\n\");\n }\n return this.compiledGlyphs[e] = new Function(\"c\", \"size\", t.join(\"\"));\n }\n return this.compiledGlyphs[e] = function (t, e) {\n for (const i of n) {\n \"scale\" === i.cmd && (i.args = [e, -e]);\n t[i.cmd].apply(t, i.args);\n }\n };\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.NodeStandardFontDataFactory = e.NodeFilterFactory = e.NodeCanvasFactory = e.NodeCMapReaderFactory = void 0;\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(168),\n r = n(1);\n !function checkDOMMatrix() {\n if (!globalThis.DOMMatrix && r.isNodeJS) try {\n globalThis.DOMMatrix = Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\n } catch (t) {\n (0, r.warn)(\"Cannot polyfill `DOMMatrix`, rendering may be broken: \\\"\".concat(t, \"\\\".\"));\n }\n }();\n !function checkPath2D() {\n if (!globalThis.Path2D && r.isNodeJS) try {\n const {\n CanvasRenderingContext2D: t\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\n {\n polyfillPath2D: e\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'path2d-polyfill'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n globalThis.CanvasRenderingContext2D = t;\n e(globalThis);\n } catch (t) {\n (0, r.warn)(\"Cannot polyfill `Path2D`, rendering may be broken: \\\"\".concat(t, \"\\\".\"));\n }\n }();\n const fetchData = function fetchData(t) {\n return new Promise((e, n) => {\n Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, (t, i) => {\n !t && i ? e(new Uint8Array(i)) : n(new Error(t));\n });\n });\n };\n class NodeFilterFactory extends i.BaseFilterFactory {}\n e.NodeFilterFactory = NodeFilterFactory;\n class NodeCanvasFactory extends i.BaseCanvasFactory {\n _createCanvas(t, e) {\n return Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, e);\n }\n }\n e.NodeCanvasFactory = NodeCanvasFactory;\n class NodeCMapReaderFactory extends i.BaseCMapReaderFactory {\n _fetchData(t, e) {\n return fetchData(t).then(t => ({\n cMapData: t,\n compressionType: e\n }));\n }\n }\n e.NodeCMapReaderFactory = NodeCMapReaderFactory;\n class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory {\n _fetchData(t) {\n return fetchData(t);\n }\n }\n e.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.CanvasGraphics = void 0;\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(167),\n s = n(173),\n a = n(174);\n const o = 4096,\n l = 16;\n class CachedCanvases {\n constructor(t) {\n this.canvasFactory = t;\n this.cache = Object.create(null);\n }\n getCanvas(t, e, n) {\n let i;\n if (void 0 !== this.cache[t]) {\n i = this.cache[t];\n this.canvasFactory.reset(i, e, n);\n } else {\n i = this.canvasFactory.create(e, n);\n this.cache[t] = i;\n }\n return i;\n }\n delete(t) {\n delete this.cache[t];\n }\n clear() {\n for (const t in this.cache) {\n const e = this.cache[t];\n this.canvasFactory.destroy(e);\n delete this.cache[t];\n }\n }\n }\n function drawImageAtIntegerCoords(t, e, n, i, s, a, o, l, c, h) {\n const [d, u, p, f, g, m] = (0, r.getCurrentTransform)(t);\n if (0 === u && 0 === p) {\n const r = o * d + g,\n b = Math.round(r),\n v = l * f + m,\n y = Math.round(v),\n A = (o + c) * d + g,\n _ = Math.abs(Math.round(A) - b) || 1,\n S = (l + h) * f + m,\n E = Math.abs(Math.round(S) - y) || 1;\n t.setTransform(Math.sign(d), 0, 0, Math.sign(f), b, y);\n t.drawImage(e, n, i, s, a, 0, 0, _, E);\n t.setTransform(d, u, p, f, g, m);\n return [_, E];\n }\n if (0 === d && 0 === f) {\n const r = l * p + g,\n b = Math.round(r),\n v = o * u + m,\n y = Math.round(v),\n A = (l + h) * p + g,\n _ = Math.abs(Math.round(A) - b) || 1,\n S = (o + c) * u + m,\n E = Math.abs(Math.round(S) - y) || 1;\n t.setTransform(0, Math.sign(u), Math.sign(p), 0, b, y);\n t.drawImage(e, n, i, s, a, 0, 0, E, _);\n t.setTransform(d, u, p, f, g, m);\n return [E, _];\n }\n t.drawImage(e, n, i, s, a, o, l, c, h);\n return [Math.hypot(d, u) * c, Math.hypot(p, f) * h];\n }\n class CanvasExtraState {\n constructor(t, e) {\n this.alphaIsShape = !1;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = i.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = i.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = i.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = !1;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, t, e]);\n }\n clone() {\n const t = Object.create(this);\n t.clipBox = this.clipBox.slice();\n return t;\n }\n setCurrentPoint(t, e) {\n this.x = t;\n this.y = e;\n }\n updatePathMinMax(t, e, n) {\n [e, n] = i.Util.applyTransform([e, n], t);\n this.minX = Math.min(this.minX, e);\n this.minY = Math.min(this.minY, n);\n this.maxX = Math.max(this.maxX, e);\n this.maxY = Math.max(this.maxY, n);\n }\n updateRectMinMax(t, e) {\n const n = i.Util.applyTransform(e, t),\n r = i.Util.applyTransform(e.slice(2), t);\n this.minX = Math.min(this.minX, n[0], r[0]);\n this.minY = Math.min(this.minY, n[1], r[1]);\n this.maxX = Math.max(this.maxX, n[0], r[0]);\n this.maxY = Math.max(this.maxY, n[1], r[1]);\n }\n updateScalingPathMinMax(t, e) {\n i.Util.scaleMinMax(t, e);\n this.minX = Math.min(this.minX, e[0]);\n this.maxX = Math.max(this.maxX, e[1]);\n this.minY = Math.min(this.minY, e[2]);\n this.maxY = Math.max(this.maxY, e[3]);\n }\n updateCurvePathMinMax(t, e, n, r, s, a, o, l, c, h) {\n const d = i.Util.bezierBoundingBox(e, n, r, s, a, o, l, c);\n if (h) {\n h[0] = Math.min(h[0], d[0], d[2]);\n h[1] = Math.max(h[1], d[0], d[2]);\n h[2] = Math.min(h[2], d[1], d[3]);\n h[3] = Math.max(h[3], d[1], d[3]);\n } else this.updateRectMinMax(t, d);\n }\n getPathBoundingBox() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = [this.minX, this.minY, this.maxX, this.maxY];\n if (t === s.PathType.STROKE) {\n e || (0, i.unreachable)(\"Stroke bounding box must include transform.\");\n const t = i.Util.singularValueDecompose2dScale(e),\n r = t[0] * this.lineWidth / 2,\n s = t[1] * this.lineWidth / 2;\n n[0] -= r;\n n[1] -= s;\n n[2] += r;\n n[3] += s;\n }\n return n;\n }\n updateClipFromPath() {\n const t = i.Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(t || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === 1 / 0;\n }\n startNewPathAndClipBox(t) {\n this.clipBox = t;\n this.minX = 1 / 0;\n this.minY = 1 / 0;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return i.Util.intersect(this.clipBox, this.getPathBoundingBox(t, e));\n }\n }\n function putBinaryImageData(t, e) {\n if (\"undefined\" != typeof ImageData && e instanceof ImageData) {\n t.putImageData(e, 0, 0);\n return;\n }\n const n = e.height,\n r = e.width,\n s = n % l,\n a = (n - s) / l,\n o = 0 === s ? a : a + 1,\n c = t.createImageData(r, l);\n let h,\n d = 0;\n const u = e.data,\n p = c.data;\n let f, g, m, b;\n if (e.kind === i.ImageKind.GRAYSCALE_1BPP) {\n const e = u.byteLength,\n n = new Uint32Array(p.buffer, 0, p.byteLength >> 2),\n b = n.length,\n v = r + 7 >> 3,\n y = 4294967295,\n A = i.FeatureTest.isLittleEndian ? 4278190080 : 255;\n for (f = 0; f < o; f++) {\n m = f < a ? l : s;\n h = 0;\n for (g = 0; g < m; g++) {\n const t = e - d;\n let i = 0;\n const s = t > v ? r : 8 * t - 7,\n a = -8 & s;\n let o = 0,\n l = 0;\n for (; i < a; i += 8) {\n l = u[d++];\n n[h++] = 128 & l ? y : A;\n n[h++] = 64 & l ? y : A;\n n[h++] = 32 & l ? y : A;\n n[h++] = 16 & l ? y : A;\n n[h++] = 8 & l ? y : A;\n n[h++] = 4 & l ? y : A;\n n[h++] = 2 & l ? y : A;\n n[h++] = 1 & l ? y : A;\n }\n for (; i < s; i++) {\n if (0 === o) {\n l = u[d++];\n o = 128;\n }\n n[h++] = l & o ? y : A;\n o >>= 1;\n }\n }\n for (; h < b;) n[h++] = 0;\n t.putImageData(c, 0, f * l);\n }\n } else if (e.kind === i.ImageKind.RGBA_32BPP) {\n g = 0;\n b = r * l * 4;\n for (f = 0; f < a; f++) {\n p.set(u.subarray(d, d + b));\n d += b;\n t.putImageData(c, 0, g);\n g += l;\n }\n if (f < o) {\n b = r * s * 4;\n p.set(u.subarray(d, d + b));\n t.putImageData(c, 0, g);\n }\n } else {\n if (e.kind !== i.ImageKind.RGB_24BPP) throw new Error(\"bad image kind: \".concat(e.kind));\n m = l;\n b = r * m;\n for (f = 0; f < o; f++) {\n if (f >= a) {\n m = s;\n b = r * m;\n }\n h = 0;\n for (g = b; g--;) {\n p[h++] = u[d++];\n p[h++] = u[d++];\n p[h++] = u[d++];\n p[h++] = 255;\n }\n t.putImageData(c, 0, f * l);\n }\n }\n }\n function putBinaryImageMask(t, e) {\n if (e.bitmap) {\n t.drawImage(e.bitmap, 0, 0);\n return;\n }\n const n = e.height,\n i = e.width,\n r = n % l,\n s = (n - r) / l,\n o = 0 === r ? s : s + 1,\n c = t.createImageData(i, l);\n let h = 0;\n const d = e.data,\n u = c.data;\n for (let e = 0; e < o; e++) {\n const n = e < s ? l : r;\n ({\n srcPos: h\n } = (0, a.convertBlackAndWhiteToRGBA)({\n src: d,\n srcPos: h,\n dest: u,\n width: i,\n height: n,\n nonBlackColor: 0\n }));\n t.putImageData(c, 0, e * l);\n }\n }\n function copyCtxState(t, e) {\n const n = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const i of n) void 0 !== t[i] && (e[i] = t[i]);\n if (void 0 !== t.setLineDash) {\n e.setLineDash(t.getLineDash());\n e.lineDashOffset = t.lineDashOffset;\n }\n }\n function resetCtxToDefault(t) {\n t.strokeStyle = t.fillStyle = \"#000000\";\n t.fillRule = \"nonzero\";\n t.globalAlpha = 1;\n t.lineWidth = 1;\n t.lineCap = \"butt\";\n t.lineJoin = \"miter\";\n t.miterLimit = 10;\n t.globalCompositeOperation = \"source-over\";\n t.font = \"10px sans-serif\";\n if (void 0 !== t.setLineDash) {\n t.setLineDash([]);\n t.lineDashOffset = 0;\n }\n if (!i.isNodeJS) {\n const {\n filter: e\n } = t;\n \"none\" !== e && \"\" !== e && (t.filter = \"none\");\n }\n }\n function composeSMaskBackdrop(t, e, n, i) {\n const r = t.length;\n for (let s = 3; s < r; s += 4) {\n const r = t[s];\n if (0 === r) {\n t[s - 3] = e;\n t[s - 2] = n;\n t[s - 1] = i;\n } else if (r < 255) {\n const a = 255 - r;\n t[s - 3] = t[s - 3] * r + e * a >> 8;\n t[s - 2] = t[s - 2] * r + n * a >> 8;\n t[s - 1] = t[s - 1] * r + i * a >> 8;\n }\n }\n }\n function composeSMaskAlpha(t, e, n) {\n const i = t.length;\n for (let r = 3; r < i; r += 4) {\n const i = n ? n[t[r]] : t[r];\n e[r] = e[r] * i * .00392156862745098 | 0;\n }\n }\n function composeSMaskLuminosity(t, e, n) {\n const i = t.length;\n for (let r = 3; r < i; r += 4) {\n const i = 77 * t[r - 3] + 152 * t[r - 2] + 28 * t[r - 1];\n e[r] = n ? e[r] * n[i >> 8] >> 8 : e[r] * i >> 16;\n }\n }\n function composeSMask(t, e, n, i) {\n const r = i[0],\n s = i[1],\n a = i[2] - r,\n o = i[3] - s;\n if (0 !== a && 0 !== o) {\n !function genericComposeSMask(t, e, n, i, r, s, a, o, l, c, h) {\n const d = !!s,\n u = d ? s[0] : 0,\n p = d ? s[1] : 0,\n f = d ? s[2] : 0,\n g = \"Luminosity\" === r ? composeSMaskLuminosity : composeSMaskAlpha,\n m = Math.min(i, Math.ceil(1048576 / n));\n for (let r = 0; r < i; r += m) {\n const s = Math.min(m, i - r),\n b = t.getImageData(o - c, r + (l - h), n, s),\n v = e.getImageData(o, r + l, n, s);\n d && composeSMaskBackdrop(b.data, u, p, f);\n g(b.data, v.data, a);\n e.putImageData(v, o, r + l);\n }\n }(e.context, n, a, o, e.subtype, e.backdrop, e.transferMap, r, s, e.offsetX, e.offsetY);\n t.save();\n t.globalAlpha = 1;\n t.globalCompositeOperation = \"source-over\";\n t.setTransform(1, 0, 0, 1, 0, 0);\n t.drawImage(n.canvas, 0, 0);\n t.restore();\n }\n }\n function getImageSmoothingEnabled(t, e) {\n const n = i.Util.singularValueDecompose2dScale(t);\n n[0] = Math.fround(n[0]);\n n[1] = Math.fround(n[1]);\n const s = Math.fround((globalThis.devicePixelRatio || 1) * r.PixelsPerInch.PDF_TO_CSS_UNITS);\n return void 0 !== e ? e : n[0] <= s || n[1] <= s;\n }\n const c = [\"butt\", \"round\", \"square\"],\n h = [\"miter\", \"round\", \"bevel\"],\n d = {},\n u = {};\n var _Gt = /*#__PURE__*/new WeakSet();\n var _Vt = /*#__PURE__*/new WeakSet();\n class CanvasGraphics {\n constructor(_t10, _e9, n, i, r, s, a, o) {\n _classPrivateMethodInitSpec(this, _Vt);\n _classPrivateMethodInitSpec(this, _Gt);\n let {\n optionalContentConfig: l,\n markedContentStack: c = null\n } = s;\n this.ctx = _t10;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = !1;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = _e9;\n this.objs = n;\n this.canvasFactory = i;\n this.filterFactory = r;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = !0;\n this.markedContentStack = c || [];\n this.optionalContentConfig = l;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = a;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = o;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return \"string\" == typeof t ? t.startsWith(\"g_\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\n }\n beginDrawing(t) {\n let {\n transform: e,\n viewport: n,\n transparency: i = !1,\n background: s = null\n } = t;\n const a = this.ctx.canvas.width,\n o = this.ctx.canvas.height,\n l = this.ctx.fillStyle;\n this.ctx.fillStyle = s || \"#ffffff\";\n this.ctx.fillRect(0, 0, a, o);\n this.ctx.fillStyle = l;\n if (i) {\n const t = this.cachedCanvases.getCanvas(\"transparent\", a, o);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = t.canvas;\n this.ctx = t.context;\n this.ctx.save();\n this.ctx.transform(...(0, r.getCurrentTransform)(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (e) {\n this.ctx.transform(...e);\n this.outputScaleX = e[0];\n this.outputScaleY = e[0];\n }\n this.ctx.transform(...n.transform);\n this.viewportScale = n.scale;\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\n }\n executeOperatorList(t, e, n, r) {\n const s = t.argsArray,\n a = t.fnArray;\n let o = e || 0;\n const l = s.length;\n if (l === o) return o;\n const c = l - o > 10 && \"function\" == typeof n,\n h = c ? Date.now() + 15 : 0;\n let d = 0;\n const u = this.commonObjs,\n p = this.objs;\n let f;\n for (;;) {\n if (void 0 !== r && o === r.nextBreakPoint) {\n r.breakIt(o, n);\n return o;\n }\n f = a[o];\n if (f !== i.OPS.dependency) this[f].apply(this, s[o]);else for (const t of s[o]) {\n const e = t.startsWith(\"g_\") ? u : p;\n if (!e.has(t)) {\n e.get(t, n);\n return o;\n }\n }\n o++;\n if (o === l) return o;\n if (c && ++d > 10) {\n if (Date.now() > h) {\n n();\n return o;\n }\n d = 0;\n }\n }\n }\n endDrawing() {\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const t of this._cachedBitmapsMap.values()) {\n for (const e of t.values()) \"undefined\" != typeof HTMLCanvasElement && e instanceof HTMLCanvasElement && (e.width = e.height = 0);\n t.clear();\n }\n this._cachedBitmapsMap.clear();\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\n }\n _scaleImage(t, e) {\n const n = t.width,\n i = t.height;\n let r,\n s,\n a = Math.max(Math.hypot(e[0], e[1]), 1),\n o = Math.max(Math.hypot(e[2], e[3]), 1),\n l = n,\n c = i,\n h = \"prescale1\";\n for (; a > 2 && l > 1 || o > 2 && c > 1;) {\n let e = l,\n n = c;\n if (a > 2 && l > 1) {\n e = l >= 16384 ? Math.floor(l / 2) - 1 || 1 : Math.ceil(l / 2);\n a /= l / e;\n }\n if (o > 2 && c > 1) {\n n = c >= 16384 ? Math.floor(c / 2) - 1 || 1 : Math.ceil(c) / 2;\n o /= c / n;\n }\n r = this.cachedCanvases.getCanvas(h, e, n);\n s = r.context;\n s.clearRect(0, 0, e, n);\n s.drawImage(t, 0, 0, l, c, 0, 0, e, n);\n t = r.canvas;\n l = e;\n c = n;\n h = \"prescale1\" === h ? \"prescale2\" : \"prescale1\";\n }\n return {\n img: t,\n paintWidth: l,\n paintHeight: c\n };\n }\n _createMaskCanvas(t) {\n const e = this.ctx,\n {\n width: n,\n height: a\n } = t,\n o = this.current.fillColor,\n l = this.current.patternFill,\n c = (0, r.getCurrentTransform)(e);\n let h, d, u, p;\n if ((t.bitmap || t.data) && t.count > 1) {\n const e = t.bitmap || t.data.buffer;\n d = JSON.stringify(l ? c : [c.slice(0, 4), o]);\n h = this._cachedBitmapsMap.get(e);\n if (!h) {\n h = new Map();\n this._cachedBitmapsMap.set(e, h);\n }\n const n = h.get(d);\n if (n && !l) {\n return {\n canvas: n,\n offsetX: Math.round(Math.min(c[0], c[2]) + c[4]),\n offsetY: Math.round(Math.min(c[1], c[3]) + c[5])\n };\n }\n u = n;\n }\n if (!u) {\n p = this.cachedCanvases.getCanvas(\"maskCanvas\", n, a);\n putBinaryImageMask(p.context, t);\n }\n let f = i.Util.transform(c, [1 / n, 0, 0, -1 / a, 0, 0]);\n f = i.Util.transform(f, [1, 0, 0, 1, 0, -a]);\n const g = i.Util.applyTransform([0, 0], f),\n m = i.Util.applyTransform([n, a], f),\n b = i.Util.normalizeRect([g[0], g[1], m[0], m[1]]),\n v = Math.round(b[2] - b[0]) || 1,\n y = Math.round(b[3] - b[1]) || 1,\n A = this.cachedCanvases.getCanvas(\"fillCanvas\", v, y),\n _ = A.context,\n S = Math.min(g[0], m[0]),\n E = Math.min(g[1], m[1]);\n _.translate(-S, -E);\n _.transform(...f);\n if (!u) {\n u = this._scaleImage(p.canvas, (0, r.getCurrentTransformInverse)(_));\n u = u.img;\n h && l && h.set(d, u);\n }\n _.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(_), t.interpolate);\n drawImageAtIntegerCoords(_, u, 0, 0, u.width, u.height, 0, 0, n, a);\n _.globalCompositeOperation = \"source-in\";\n const x = i.Util.transform((0, r.getCurrentTransformInverse)(_), [1, 0, 0, 1, -S, -E]);\n _.fillStyle = l ? o.getPattern(e, this, x, s.PathType.FILL) : o;\n _.fillRect(0, 0, n, a);\n if (h && !l) {\n this.cachedCanvases.delete(\"fillCanvas\");\n h.set(d, A.canvas);\n }\n return {\n canvas: A.canvas,\n offsetX: Math.round(S),\n offsetY: Math.round(E)\n };\n }\n setLineWidth(t) {\n t !== this.current.lineWidth && (this._cachedScaleForStroking[0] = -1);\n this.current.lineWidth = t;\n this.ctx.lineWidth = t;\n }\n setLineCap(t) {\n this.ctx.lineCap = c[t];\n }\n setLineJoin(t) {\n this.ctx.lineJoin = h[t];\n }\n setMiterLimit(t) {\n this.ctx.miterLimit = t;\n }\n setDash(t, e) {\n const n = this.ctx;\n if (void 0 !== n.setLineDash) {\n n.setLineDash(t);\n n.lineDashOffset = e;\n }\n }\n setRenderingIntent(t) {}\n setFlatness(t) {}\n setGState(t) {\n for (const [e, n] of t) switch (e) {\n case \"LW\":\n this.setLineWidth(n);\n break;\n case \"LC\":\n this.setLineCap(n);\n break;\n case \"LJ\":\n this.setLineJoin(n);\n break;\n case \"ML\":\n this.setMiterLimit(n);\n break;\n case \"D\":\n this.setDash(n[0], n[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(n);\n break;\n case \"FL\":\n this.setFlatness(n);\n break;\n case \"Font\":\n this.setFont(n[0], n[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = n;\n break;\n case \"ca\":\n this.current.fillAlpha = n;\n this.ctx.globalAlpha = n;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = n;\n break;\n case \"SMask\":\n this.current.activeSMask = n ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(n);\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const t = this.inSMaskMode;\n this.current.activeSMask && !t ? this.beginSMaskMode() : !this.current.activeSMask && t && this.endSMaskMode();\n }\n beginSMaskMode() {\n if (this.inSMaskMode) throw new Error(\"beginSMaskMode called while already in smask mode\");\n const t = this.ctx.canvas.width,\n e = this.ctx.canvas.height,\n n = \"smaskGroupAt\" + this.groupLevel,\n i = this.cachedCanvases.getCanvas(n, t, e);\n this.suspendedCtx = this.ctx;\n this.ctx = i.context;\n const s = this.ctx;\n s.setTransform(...(0, r.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, s);\n !function mirrorContextOperations(t, e) {\n if (t._removeMirroring) throw new Error(\"Context is already forwarding operations.\");\n t.__originalSave = t.save;\n t.__originalRestore = t.restore;\n t.__originalRotate = t.rotate;\n t.__originalScale = t.scale;\n t.__originalTranslate = t.translate;\n t.__originalTransform = t.transform;\n t.__originalSetTransform = t.setTransform;\n t.__originalResetTransform = t.resetTransform;\n t.__originalClip = t.clip;\n t.__originalMoveTo = t.moveTo;\n t.__originalLineTo = t.lineTo;\n t.__originalBezierCurveTo = t.bezierCurveTo;\n t.__originalRect = t.rect;\n t.__originalClosePath = t.closePath;\n t.__originalBeginPath = t.beginPath;\n t._removeMirroring = () => {\n t.save = t.__originalSave;\n t.restore = t.__originalRestore;\n t.rotate = t.__originalRotate;\n t.scale = t.__originalScale;\n t.translate = t.__originalTranslate;\n t.transform = t.__originalTransform;\n t.setTransform = t.__originalSetTransform;\n t.resetTransform = t.__originalResetTransform;\n t.clip = t.__originalClip;\n t.moveTo = t.__originalMoveTo;\n t.lineTo = t.__originalLineTo;\n t.bezierCurveTo = t.__originalBezierCurveTo;\n t.rect = t.__originalRect;\n t.closePath = t.__originalClosePath;\n t.beginPath = t.__originalBeginPath;\n delete t._removeMirroring;\n };\n t.save = function ctxSave() {\n e.save();\n this.__originalSave();\n };\n t.restore = function ctxRestore() {\n e.restore();\n this.__originalRestore();\n };\n t.translate = function ctxTranslate(t, n) {\n e.translate(t, n);\n this.__originalTranslate(t, n);\n };\n t.scale = function ctxScale(t, n) {\n e.scale(t, n);\n this.__originalScale(t, n);\n };\n t.transform = function ctxTransform(t, n, i, r, s, a) {\n e.transform(t, n, i, r, s, a);\n this.__originalTransform(t, n, i, r, s, a);\n };\n t.setTransform = function ctxSetTransform(t, n, i, r, s, a) {\n e.setTransform(t, n, i, r, s, a);\n this.__originalSetTransform(t, n, i, r, s, a);\n };\n t.resetTransform = function ctxResetTransform() {\n e.resetTransform();\n this.__originalResetTransform();\n };\n t.rotate = function ctxRotate(t) {\n e.rotate(t);\n this.__originalRotate(t);\n };\n t.clip = function ctxRotate(t) {\n e.clip(t);\n this.__originalClip(t);\n };\n t.moveTo = function (t, n) {\n e.moveTo(t, n);\n this.__originalMoveTo(t, n);\n };\n t.lineTo = function (t, n) {\n e.lineTo(t, n);\n this.__originalLineTo(t, n);\n };\n t.bezierCurveTo = function (t, n, i, r, s, a) {\n e.bezierCurveTo(t, n, i, r, s, a);\n this.__originalBezierCurveTo(t, n, i, r, s, a);\n };\n t.rect = function (t, n, i, r) {\n e.rect(t, n, i, r);\n this.__originalRect(t, n, i, r);\n };\n t.closePath = function () {\n e.closePath();\n this.__originalClosePath();\n };\n t.beginPath = function () {\n e.beginPath();\n this.__originalBeginPath();\n };\n }(s, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) throw new Error(\"endSMaskMode called while not in smask mode\");\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(t) {\n if (!this.current.activeSMask) return;\n if (t) {\n t[0] = Math.floor(t[0]);\n t[1] = Math.floor(t[1]);\n t[2] = Math.ceil(t[2]);\n t[3] = Math.ceil(t[3]);\n } else t = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n const e = this.current.activeSMask;\n composeSMask(this.suspendedCtx, e, this.ctx, t);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else this.ctx.save();\n const t = this.current;\n this.stateStack.push(t);\n this.current = t.clone();\n }\n restore() {\n 0 === this.stateStack.length && this.inSMaskMode && this.endSMaskMode();\n if (0 !== this.stateStack.length) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else this.ctx.restore();\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(t, e, n, i, r, s) {\n this.ctx.transform(t, e, n, i, r, s);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(t, e, n) {\n const s = this.ctx,\n a = this.current;\n let o,\n l,\n c = a.x,\n h = a.y;\n const d = (0, r.getCurrentTransform)(s),\n u = 0 === d[0] && 0 === d[3] || 0 === d[1] && 0 === d[2],\n p = u ? n.slice(0) : null;\n for (let n = 0, r = 0, f = t.length; n < f; n++) switch (0 | t[n]) {\n case i.OPS.rectangle:\n c = e[r++];\n h = e[r++];\n const t = e[r++],\n n = e[r++],\n f = c + t,\n g = h + n;\n s.moveTo(c, h);\n if (0 === t || 0 === n) s.lineTo(f, g);else {\n s.lineTo(f, h);\n s.lineTo(f, g);\n s.lineTo(c, g);\n }\n u || a.updateRectMinMax(d, [c, h, f, g]);\n s.closePath();\n break;\n case i.OPS.moveTo:\n c = e[r++];\n h = e[r++];\n s.moveTo(c, h);\n u || a.updatePathMinMax(d, c, h);\n break;\n case i.OPS.lineTo:\n c = e[r++];\n h = e[r++];\n s.lineTo(c, h);\n u || a.updatePathMinMax(d, c, h);\n break;\n case i.OPS.curveTo:\n o = c;\n l = h;\n c = e[r + 4];\n h = e[r + 5];\n s.bezierCurveTo(e[r], e[r + 1], e[r + 2], e[r + 3], c, h);\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], e[r + 2], e[r + 3], c, h, p);\n r += 6;\n break;\n case i.OPS.curveTo2:\n o = c;\n l = h;\n s.bezierCurveTo(c, h, e[r], e[r + 1], e[r + 2], e[r + 3]);\n a.updateCurvePathMinMax(d, o, l, c, h, e[r], e[r + 1], e[r + 2], e[r + 3], p);\n c = e[r + 2];\n h = e[r + 3];\n r += 4;\n break;\n case i.OPS.curveTo3:\n o = c;\n l = h;\n c = e[r + 2];\n h = e[r + 3];\n s.bezierCurveTo(e[r], e[r + 1], c, h, c, h);\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], c, h, c, h, p);\n r += 4;\n break;\n case i.OPS.closePath:\n s.closePath();\n }\n u && a.updateScalingPathMinMax(d, p);\n a.setCurrentPoint(c, h);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n const e = this.ctx,\n n = this.current.strokeColor;\n e.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) if (\"object\" == typeof n && n !== null && n !== void 0 && n.getPattern) {\n e.save();\n e.strokeStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.STROKE);\n this.rescaleAndStroke(!1);\n e.restore();\n } else this.rescaleAndStroke(!0);\n t && this.consumePath(this.current.getClippedPathBoundingBox());\n e.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n const e = this.ctx,\n n = this.current.fillColor;\n let i = !1;\n if (this.current.patternFill) {\n e.save();\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL);\n i = !0;\n }\n const a = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && null !== a) if (this.pendingEOFill) {\n e.fill(\"evenodd\");\n this.pendingEOFill = !1;\n } else e.fill();\n i && e.restore();\n t && this.consumePath(a);\n }\n eoFill() {\n this.pendingEOFill = !0;\n this.fill();\n }\n fillStroke() {\n this.fill(!1);\n this.stroke(!1);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = !0;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = !0;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = d;\n }\n eoClip() {\n this.pendingClip = u;\n }\n beginText() {\n this.current.textMatrix = i.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const t = this.pendingTextPaths,\n e = this.ctx;\n if (void 0 !== t) {\n e.save();\n e.beginPath();\n for (const n of t) {\n e.setTransform(...n.transform);\n e.translate(n.x, n.y);\n n.addToPath(e, n.fontSize);\n }\n e.restore();\n e.clip();\n e.beginPath();\n delete this.pendingTextPaths;\n } else e.beginPath();\n }\n setCharSpacing(t) {\n this.current.charSpacing = t;\n }\n setWordSpacing(t) {\n this.current.wordSpacing = t;\n }\n setHScale(t) {\n this.current.textHScale = t / 100;\n }\n setLeading(t) {\n this.current.leading = -t;\n }\n setFont(t, e) {\n var _n$systemFontInfo;\n const n = this.commonObjs.get(t),\n r = this.current;\n if (!n) throw new Error(\"Can't find font for \".concat(t));\n r.fontMatrix = n.fontMatrix || i.FONT_IDENTITY_MATRIX;\n 0 !== r.fontMatrix[0] && 0 !== r.fontMatrix[3] || (0, i.warn)(\"Invalid font matrix for font \" + t);\n if (e < 0) {\n e = -e;\n r.fontDirection = -1;\n } else r.fontDirection = 1;\n this.current.font = n;\n this.current.fontSize = e;\n if (n.isType3Font) return;\n const s = n.loadedName || \"sans-serif\",\n a = ((_n$systemFontInfo = n.systemFontInfo) === null || _n$systemFontInfo === void 0 ? void 0 : _n$systemFontInfo.css) || \"\\\"\".concat(s, \"\\\", \").concat(n.fallbackName);\n let o = \"normal\";\n n.black ? o = \"900\" : n.bold && (o = \"bold\");\n const l = n.italic ? \"italic\" : \"normal\";\n let c = e;\n e < 16 ? c = 16 : e > 100 && (c = 100);\n this.current.fontSizeScale = e / c;\n this.ctx.font = \"\".concat(l, \" \").concat(o, \" \").concat(c, \"px \").concat(a);\n }\n setTextRenderingMode(t) {\n this.current.textRenderingMode = t;\n }\n setTextRise(t) {\n this.current.textRise = t;\n }\n moveText(t, e) {\n this.current.x = this.current.lineX += t;\n this.current.y = this.current.lineY += e;\n }\n setLeadingMoveText(t, e) {\n this.setLeading(-e);\n this.moveText(t, e);\n }\n setTextMatrix(t, e, n, i, r, s) {\n this.current.textMatrix = [t, e, n, i, r, s];\n this.current.textMatrixScale = Math.hypot(t, e);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(t, e, n, s) {\n const a = this.ctx,\n o = this.current,\n l = o.font,\n c = o.textRenderingMode,\n h = o.fontSize / o.fontSizeScale,\n d = c & i.TextRenderingMode.FILL_STROKE_MASK,\n u = !!(c & i.TextRenderingMode.ADD_TO_PATH_FLAG),\n p = o.patternFill && !l.missingFile;\n let f;\n (l.disableFontFace || u || p) && (f = l.getPathGenerator(this.commonObjs, t));\n if (l.disableFontFace || p) {\n a.save();\n a.translate(e, n);\n a.beginPath();\n f(a, h);\n s && a.setTransform(...s);\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fill();\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.stroke();\n a.restore();\n } else {\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fillText(t, e, n);\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.strokeText(t, e, n);\n }\n if (u) {\n (this.pendingTextPaths || (this.pendingTextPaths = [])).push({\n transform: (0, r.getCurrentTransform)(a),\n x: e,\n y: n,\n fontSize: h,\n addToPath: f\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: t\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n t.scale(1.5, 1);\n t.fillText(\"I\", 0, 10);\n const e = t.getImageData(0, 0, 10, 10).data;\n let n = !1;\n for (let t = 3; t < e.length; t += 4) if (e[t] > 0 && e[t] < 255) {\n n = !0;\n break;\n }\n return (0, i.shadow)(this, \"isFontSubpixelAAEnabled\", n);\n }\n showText(t) {\n const e = this.current,\n n = e.font;\n if (n.isType3Font) return this.showType3Text(t);\n const a = e.fontSize;\n if (0 === a) return;\n const o = this.ctx,\n l = e.fontSizeScale,\n c = e.charSpacing,\n h = e.wordSpacing,\n d = e.fontDirection,\n u = e.textHScale * d,\n p = t.length,\n f = n.vertical,\n g = f ? 1 : -1,\n m = n.defaultVMetrics,\n b = a * e.fontMatrix[0],\n v = e.textRenderingMode === i.TextRenderingMode.FILL && !n.disableFontFace && !e.patternFill;\n o.save();\n o.transform(...e.textMatrix);\n o.translate(e.x, e.y + e.textRise);\n d > 0 ? o.scale(u, -1) : o.scale(u, 1);\n let y;\n if (e.patternFill) {\n o.save();\n const t = e.fillColor.getPattern(o, this, (0, r.getCurrentTransformInverse)(o), s.PathType.FILL);\n y = (0, r.getCurrentTransform)(o);\n o.restore();\n o.fillStyle = t;\n }\n let A = e.lineWidth;\n const _ = e.textMatrixScale;\n if (0 === _ || 0 === A) {\n const t = e.textRenderingMode & i.TextRenderingMode.FILL_STROKE_MASK;\n t !== i.TextRenderingMode.STROKE && t !== i.TextRenderingMode.FILL_STROKE || (A = this.getSinglePixelWidth());\n } else A /= _;\n if (1 !== l) {\n o.scale(l, l);\n A /= l;\n }\n o.lineWidth = A;\n if (n.isInvalidPDFjsFont) {\n const n = [];\n let i = 0;\n for (const e of t) {\n n.push(e.unicode);\n i += e.width;\n }\n o.fillText(n.join(\"\"), 0, 0);\n e.x += i * b * u;\n o.restore();\n this.compose();\n return;\n }\n let S,\n E = 0;\n for (S = 0; S < p; ++S) {\n const e = t[S];\n if (\"number\" == typeof e) {\n E += g * e * a / 1e3;\n continue;\n }\n let i = !1;\n const r = (e.isSpace ? h : 0) + c,\n s = e.fontChar,\n u = e.accent;\n let p,\n A,\n _ = e.width;\n if (f) {\n const t = e.vmetric || m,\n n = -(e.vmetric ? t[1] : .5 * _) * b,\n i = t[2] * b;\n _ = t ? -t[0] : _;\n p = n / l;\n A = (E + i) / l;\n } else {\n p = E / l;\n A = 0;\n }\n if (n.remeasure && _ > 0) {\n const t = 1e3 * o.measureText(s).width / a * l;\n if (_ < t && this.isFontSubpixelAAEnabled) {\n const e = _ / t;\n i = !0;\n o.save();\n o.scale(e, 1);\n p /= e;\n } else _ !== t && (p += (_ - t) / 2e3 * a / l);\n }\n if (this.contentVisible && (e.isInFont || n.missingFile)) if (v && !u) o.fillText(s, p, A);else {\n this.paintChar(s, p, A, y);\n if (u) {\n const t = p + a * u.offset.x / l,\n e = A - a * u.offset.y / l;\n this.paintChar(u.fontChar, t, e, y);\n }\n }\n E += f ? _ * b - r * d : _ * b + r * d;\n i && o.restore();\n }\n f ? e.y -= E : e.x += E * u;\n o.restore();\n this.compose();\n }\n showType3Text(t) {\n const e = this.ctx,\n n = this.current,\n r = n.font,\n s = n.fontSize,\n a = n.fontDirection,\n o = r.vertical ? 1 : -1,\n l = n.charSpacing,\n c = n.wordSpacing,\n h = n.textHScale * a,\n d = n.fontMatrix || i.FONT_IDENTITY_MATRIX,\n u = t.length;\n let p, f, g, m;\n if (!(n.textRenderingMode === i.TextRenderingMode.INVISIBLE) && 0 !== s) {\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n e.save();\n e.transform(...n.textMatrix);\n e.translate(n.x, n.y);\n e.scale(h, a);\n for (p = 0; p < u; ++p) {\n f = t[p];\n if (\"number\" == typeof f) {\n m = o * f * s / 1e3;\n this.ctx.translate(m, 0);\n n.x += m * h;\n continue;\n }\n const a = (f.isSpace ? c : 0) + l,\n u = r.charProcOperatorList[f.operatorListId];\n if (!u) {\n (0, i.warn)(\"Type3 character \\\"\".concat(f.operatorListId, \"\\\" is not available.\"));\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = f;\n this.save();\n e.scale(s, s);\n e.transform(...d);\n this.executeOperatorList(u);\n this.restore();\n }\n g = i.Util.applyTransform([f.width, 0], d)[0] * s + a;\n e.translate(g, 0);\n n.x += g * h;\n }\n e.restore();\n this.processingType3 = null;\n }\n }\n setCharWidth(t, e) {}\n setCharWidthAndBounds(t, e, n, i, r, s) {\n this.ctx.rect(n, i, r - n, s - i);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(t) {\n let e;\n if (\"TilingPattern\" === t[0]) {\n const n = t[1],\n i = this.baseTransform || (0, r.getCurrentTransform)(this.ctx),\n a = {\n createCanvasGraphics: t => new CanvasGraphics(t, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n e = new s.TilingPattern(t, n, this.ctx, a, i);\n } else e = this._getPattern(t[1], t[2]);\n return e;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = !0;\n }\n setStrokeRGBColor(t, e, n) {\n const r = i.Util.makeHexColor(t, e, n);\n this.ctx.strokeStyle = r;\n this.current.strokeColor = r;\n }\n setFillRGBColor(t, e, n) {\n const r = i.Util.makeHexColor(t, e, n);\n this.ctx.fillStyle = r;\n this.current.fillColor = r;\n this.current.patternFill = !1;\n }\n _getPattern(t) {\n let e,\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (this.cachedPatterns.has(t)) e = this.cachedPatterns.get(t);else {\n e = (0, s.getShadingPattern)(this.getObject(t));\n this.cachedPatterns.set(t, e);\n }\n n && (e.matrix = n);\n return e;\n }\n shadingFill(t) {\n if (!this.contentVisible) return;\n const e = this.ctx;\n this.save();\n const n = this._getPattern(t);\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.SHADING);\n const a = (0, r.getCurrentTransformInverse)(e);\n if (a) {\n const {\n width: t,\n height: n\n } = e.canvas,\n [r, s, o, l] = i.Util.getAxialAlignedBoundingBox([0, 0, t, n], a);\n this.ctx.fillRect(r, s, o - r, l - s);\n } else this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n (0, i.unreachable)(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n (0, i.unreachable)(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(t, e) {\n if (this.contentVisible) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n Array.isArray(t) && 6 === t.length && this.transform(...t);\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\n if (e) {\n const t = e[2] - e[0],\n n = e[3] - e[1];\n this.ctx.rect(e[0], e[1], t, n);\n this.current.updateRectMinMax((0, r.getCurrentTransform)(this.ctx), e);\n this.clip();\n this.endPath();\n }\n }\n }\n paintFormXObjectEnd() {\n if (this.contentVisible) {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n }\n beginGroup(t) {\n if (!this.contentVisible) return;\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const e = this.ctx;\n t.isolated || (0, i.info)(\"TODO: Support non-isolated groups.\");\n t.knockout && (0, i.warn)(\"Knockout groups not supported.\");\n const n = (0, r.getCurrentTransform)(e);\n t.matrix && e.transform(...t.matrix);\n if (!t.bbox) throw new Error(\"Bounding box is required.\");\n let s = i.Util.getAxialAlignedBoundingBox(t.bbox, (0, r.getCurrentTransform)(e));\n const a = [0, 0, e.canvas.width, e.canvas.height];\n s = i.Util.intersect(s, a) || [0, 0, 0, 0];\n const l = Math.floor(s[0]),\n c = Math.floor(s[1]);\n let h = Math.max(Math.ceil(s[2]) - l, 1),\n d = Math.max(Math.ceil(s[3]) - c, 1),\n u = 1,\n p = 1;\n if (h > o) {\n u = h / o;\n h = o;\n }\n if (d > o) {\n p = d / o;\n d = o;\n }\n this.current.startNewPathAndClipBox([0, 0, h, d]);\n let f = \"groupAt\" + this.groupLevel;\n t.smask && (f += \"_smask_\" + this.smaskCounter++ % 2);\n const g = this.cachedCanvases.getCanvas(f, h, d),\n m = g.context;\n m.scale(1 / u, 1 / p);\n m.translate(-l, -c);\n m.transform(...n);\n if (t.smask) this.smaskStack.push({\n canvas: g.canvas,\n context: m,\n offsetX: l,\n offsetY: c,\n scaleX: u,\n scaleY: p,\n subtype: t.smask.subtype,\n backdrop: t.smask.backdrop,\n transferMap: t.smask.transferMap || null,\n startTransformInverse: null\n });else {\n e.setTransform(1, 0, 0, 1, 0, 0);\n e.translate(l, c);\n e.scale(u, p);\n e.save();\n }\n copyCtxState(e, m);\n this.ctx = m;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(e);\n this.groupLevel++;\n }\n endGroup(t) {\n if (!this.contentVisible) return;\n this.groupLevel--;\n const e = this.ctx,\n n = this.groupStack.pop();\n this.ctx = n;\n this.ctx.imageSmoothingEnabled = !1;\n if (t.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const t = (0, r.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...t);\n const n = i.Util.getAxialAlignedBoundingBox([0, 0, e.canvas.width, e.canvas.height], t);\n this.ctx.drawImage(e.canvas, 0, 0);\n this.ctx.restore();\n this.compose(n);\n }\n }\n beginAnnotation(t, e, n, s, a) {\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n this.baseTransform && this.ctx.setTransform(...this.baseTransform);\n if (Array.isArray(e) && 4 === e.length) {\n const s = e[2] - e[0],\n o = e[3] - e[1];\n if (a && this.annotationCanvasMap) {\n (n = n.slice())[4] -= e[0];\n n[5] -= e[1];\n (e = e.slice())[0] = e[1] = 0;\n e[2] = s;\n e[3] = o;\n const [a, l] = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(this.ctx)),\n {\n viewportScale: c\n } = this,\n h = Math.ceil(s * this.outputScaleX * c),\n d = Math.ceil(o * this.outputScaleY * c);\n this.annotationCanvas = this.canvasFactory.create(h, d);\n const {\n canvas: u,\n context: p\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(t, u);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = p;\n this.ctx.save();\n this.ctx.setTransform(a, 0, 0, -l, 0, o * l);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(e[0], e[1], s, o);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...n);\n this.transform(...s);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(t) {\n if (!this.contentVisible) return;\n const e = t.count;\n (t = this.getObject(t.data, t)).count = e;\n const n = this.ctx,\n i = this.processingType3;\n if (i) {\n void 0 === i.compiled && (i.compiled = function compileType3Glyph(t) {\n const {\n width: e,\n height: n\n } = t;\n if (e > 1e3 || n > 1e3) return null;\n const i = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]),\n r = e + 1;\n let s,\n a,\n o,\n l = new Uint8Array(r * (n + 1));\n const c = e + 7 & -8;\n let h = new Uint8Array(c * n),\n d = 0;\n for (const e of t.data) {\n let t = 128;\n for (; t > 0;) {\n h[d++] = e & t ? 0 : 255;\n t >>= 1;\n }\n }\n let u = 0;\n d = 0;\n if (0 !== h[d]) {\n l[0] = 1;\n ++u;\n }\n for (a = 1; a < e; a++) {\n if (h[d] !== h[d + 1]) {\n l[a] = h[d] ? 2 : 1;\n ++u;\n }\n d++;\n }\n if (0 !== h[d]) {\n l[a] = 2;\n ++u;\n }\n for (s = 1; s < n; s++) {\n d = s * c;\n o = s * r;\n if (h[d - c] !== h[d]) {\n l[o] = h[d] ? 1 : 8;\n ++u;\n }\n let t = (h[d] ? 4 : 0) + (h[d - c] ? 8 : 0);\n for (a = 1; a < e; a++) {\n t = (t >> 2) + (h[d + 1] ? 4 : 0) + (h[d - c + 1] ? 8 : 0);\n if (i[t]) {\n l[o + a] = i[t];\n ++u;\n }\n d++;\n }\n if (h[d - c] !== h[d]) {\n l[o + a] = h[d] ? 2 : 4;\n ++u;\n }\n if (u > 1e3) return null;\n }\n d = c * (n - 1);\n o = s * r;\n if (0 !== h[d]) {\n l[o] = 8;\n ++u;\n }\n for (a = 1; a < e; a++) {\n if (h[d] !== h[d + 1]) {\n l[o + a] = h[d] ? 4 : 8;\n ++u;\n }\n d++;\n }\n if (0 !== h[d]) {\n l[o + a] = 4;\n ++u;\n }\n if (u > 1e3) return null;\n const p = new Int32Array([0, r, -1, 0, -r, 0, 0, 0, 1]),\n f = new Path2D();\n for (s = 0; u && s <= n; s++) {\n let t = s * r;\n const n = t + e;\n for (; t < n && !l[t];) t++;\n if (t === n) continue;\n f.moveTo(t % r, s);\n const i = t;\n let a = l[t];\n do {\n const e = p[a];\n do {\n t += e;\n } while (!l[t]);\n const n = l[t];\n if (5 !== n && 10 !== n) {\n a = n;\n l[t] = 0;\n } else {\n a = n & 51 * a >> 4;\n l[t] &= a >> 2 | a << 2;\n }\n f.lineTo(t % r, t / r | 0);\n l[t] || --u;\n } while (i !== t);\n --s;\n }\n h = null;\n l = null;\n return function (t) {\n t.save();\n t.scale(1 / e, -1 / n);\n t.translate(0, -n);\n t.fill(f);\n t.beginPath();\n t.restore();\n };\n }(t));\n if (i.compiled) {\n i.compiled(n);\n return;\n }\n }\n const r = this._createMaskCanvas(t),\n s = r.canvas;\n n.save();\n n.setTransform(1, 0, 0, 1, 0, 0);\n n.drawImage(s, r.offsetX, r.offsetY);\n n.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,\n s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,\n a = arguments.length > 4 ? arguments[4] : void 0,\n o = arguments.length > 5 ? arguments[5] : void 0;\n if (!this.contentVisible) return;\n t = this.getObject(t.data, t);\n const l = this.ctx;\n l.save();\n const c = (0, r.getCurrentTransform)(l);\n l.transform(e, n, s, a, 0, 0);\n const h = this._createMaskCanvas(t);\n l.setTransform(1, 0, 0, 1, h.offsetX - c[4], h.offsetY - c[5]);\n for (let t = 0, r = o.length; t < r; t += 2) {\n const r = i.Util.transform(c, [e, n, s, a, o[t], o[t + 1]]),\n [d, u] = i.Util.applyTransform([0, 0], r);\n l.drawImage(h.canvas, d, u);\n }\n l.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(t) {\n if (!this.contentVisible) return;\n const e = this.ctx,\n n = this.current.fillColor,\n i = this.current.patternFill;\n for (const a of t) {\n const {\n data: t,\n width: o,\n height: l,\n transform: c\n } = a,\n h = this.cachedCanvases.getCanvas(\"maskCanvas\", o, l),\n d = h.context;\n d.save();\n putBinaryImageMask(d, this.getObject(t, a));\n d.globalCompositeOperation = \"source-in\";\n d.fillStyle = i ? n.getPattern(d, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL) : n;\n d.fillRect(0, 0, o, l);\n d.restore();\n e.save();\n e.transform(...c);\n e.scale(1, -1);\n drawImageAtIntegerCoords(e, h.canvas, 0, 0, o, l, 0, -1, 1, 1);\n e.restore();\n }\n this.compose();\n }\n paintImageXObject(t) {\n if (!this.contentVisible) return;\n const e = this.getObject(t);\n e ? this.paintInlineImageXObject(e) : (0, i.warn)(\"Dependent image isn't ready yet\");\n }\n paintImageXObjectRepeat(t, e, n, r) {\n if (!this.contentVisible) return;\n const s = this.getObject(t);\n if (!s) {\n (0, i.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n const a = s.width,\n o = s.height,\n l = [];\n for (let t = 0, i = r.length; t < i; t += 2) l.push({\n transform: [e, 0, 0, n, r[t], r[t + 1]],\n x: 0,\n y: 0,\n w: a,\n h: o\n });\n this.paintInlineImageXObjectGroup(s, l);\n }\n applyTransferMapsToCanvas(t) {\n if (\"none\" !== this.current.transferMaps) {\n t.filter = this.current.transferMaps;\n t.drawImage(t.canvas, 0, 0);\n t.filter = \"none\";\n }\n return t.canvas;\n }\n applyTransferMapsToBitmap(t) {\n if (\"none\" === this.current.transferMaps) return t.bitmap;\n const {\n bitmap: e,\n width: n,\n height: i\n } = t,\n r = this.cachedCanvases.getCanvas(\"inlineImage\", n, i),\n s = r.context;\n s.filter = this.current.transferMaps;\n s.drawImage(e, 0, 0);\n s.filter = \"none\";\n return r.canvas;\n }\n paintInlineImageXObject(t) {\n if (!this.contentVisible) return;\n const e = t.width,\n n = t.height,\n s = this.ctx;\n this.save();\n if (!i.isNodeJS) {\n const {\n filter: t\n } = s;\n \"none\" !== t && \"\" !== t && (s.filter = \"none\");\n }\n s.scale(1 / e, -1 / n);\n let a;\n if (t.bitmap) a = this.applyTransferMapsToBitmap(t);else if (\"function\" == typeof HTMLElement && t instanceof HTMLElement || !t.data) a = t;else {\n const i = this.cachedCanvases.getCanvas(\"inlineImage\", e, n).context;\n putBinaryImageData(i, t);\n a = this.applyTransferMapsToCanvas(i);\n }\n const o = this._scaleImage(a, (0, r.getCurrentTransformInverse)(s));\n s.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(s), t.interpolate);\n drawImageAtIntegerCoords(s, o.img, 0, 0, o.paintWidth, o.paintHeight, 0, -n, e, n);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(t, e) {\n if (!this.contentVisible) return;\n const n = this.ctx;\n let i;\n if (t.bitmap) i = t.bitmap;else {\n const e = t.width,\n n = t.height,\n r = this.cachedCanvases.getCanvas(\"inlineImage\", e, n).context;\n putBinaryImageData(r, t);\n i = this.applyTransferMapsToCanvas(r);\n }\n for (const t of e) {\n n.save();\n n.transform(...t.transform);\n n.scale(1, -1);\n drawImageAtIntegerCoords(n, i, t.x, t.y, t.w, t.h, 0, -1, 1, 1);\n n.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (this.contentVisible) {\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n }\n markPoint(t) {}\n markPointProps(t, e) {}\n beginMarkedContent(t) {\n this.markedContentStack.push({\n visible: !0\n });\n }\n beginMarkedContentProps(t, e) {\n \"OC\" === t ? this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(e)\n }) : this.markedContentStack.push({\n visible: !0\n });\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(t) {\n const e = this.current.isEmptyClip();\n this.pendingClip && this.current.updateClipFromPath();\n this.pendingClip || this.compose(t);\n const n = this.ctx;\n if (this.pendingClip) {\n e || (this.pendingClip === u ? n.clip(\"evenodd\") : n.clip());\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n n.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const t = (0, r.getCurrentTransform)(this.ctx);\n if (0 === t[1] && 0 === t[2]) this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(t[0]), Math.abs(t[3]));else {\n const e = Math.abs(t[0] * t[3] - t[2] * t[1]),\n n = Math.hypot(t[0], t[2]),\n i = Math.hypot(t[1], t[3]);\n this._cachedGetSinglePixelWidth = Math.max(n, i) / e;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (-1 === this._cachedScaleForStroking[0]) {\n const {\n lineWidth: t\n } = this.current,\n {\n a: e,\n b: n,\n c: i,\n d: r\n } = this.ctx.getTransform();\n let s, a;\n if (0 === n && 0 === i) {\n const n = Math.abs(e),\n i = Math.abs(r);\n if (n === i) {\n if (0 === t) s = a = 1 / n;else {\n const e = n * t;\n s = a = e < 1 ? 1 / e : 1;\n }\n } else if (0 === t) {\n s = 1 / n;\n a = 1 / i;\n } else {\n const e = n * t,\n r = i * t;\n s = e < 1 ? 1 / e : 1;\n a = r < 1 ? 1 / r : 1;\n }\n } else {\n const o = Math.abs(e * r - n * i),\n l = Math.hypot(e, n),\n c = Math.hypot(i, r);\n if (0 === t) {\n s = c / o;\n a = l / o;\n } else {\n const e = t * o;\n s = c > e ? c / e : 1;\n a = l > e ? l / e : 1;\n }\n }\n this._cachedScaleForStroking[0] = s;\n this._cachedScaleForStroking[1] = a;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(t) {\n const {\n ctx: e\n } = this,\n {\n lineWidth: n\n } = this.current,\n [i, r] = this.getScaleForStroking();\n e.lineWidth = n || 1;\n if (1 === i && 1 === r) {\n e.stroke();\n return;\n }\n const s = e.getLineDash();\n t && e.save();\n e.scale(i, r);\n if (s.length > 0) {\n const t = Math.max(i, r);\n e.setLineDash(s.map(e => e / t));\n e.lineDashOffset /= t;\n }\n e.stroke();\n t && e.restore();\n }\n isContentVisible() {\n for (let t = this.markedContentStack.length - 1; t >= 0; t--) if (!this.markedContentStack[t].visible) return !1;\n return !0;\n }\n }\n function _Gt2() {\n for (; this.stateStack.length || this.inSMaskMode;) this.restore();\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n function _Vt2() {\n if (this.pageColors) {\n const t = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (\"none\" !== t) {\n const e = this.ctx.filter;\n this.ctx.filter = t;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = e;\n }\n }\n }\n e.CanvasGraphics = CanvasGraphics;\n for (const t in i.OPS) void 0 !== CanvasGraphics.prototype[t] && (CanvasGraphics.prototype[i.OPS[t]] = CanvasGraphics.prototype[t]);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.TilingPattern = e.PathType = void 0;\n e.getShadingPattern = function getShadingPattern(t) {\n switch (t[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(t);\n case \"Mesh\":\n return new MeshShadingPattern(t);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(\"Unknown IR type: \".concat(t[0]));\n };\n n(2);\n var i = n(1),\n r = n(167);\n const s = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n };\n e.PathType = s;\n function applyBoundingBox(t, e) {\n if (!e) return;\n const n = e[2] - e[0],\n i = e[3] - e[1],\n r = new Path2D();\n r.rect(e[0], e[1], n, i);\n t.clip(r);\n }\n class BaseShadingPattern {\n constructor() {\n this.constructor === BaseShadingPattern && (0, i.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n getPattern() {\n (0, i.unreachable)(\"Abstract method `getPattern` called.\");\n }\n }\n class RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(t) {\n super();\n this._type = t[1];\n this._bbox = t[2];\n this._colorStops = t[3];\n this._p0 = t[4];\n this._p1 = t[5];\n this._r0 = t[6];\n this._r1 = t[7];\n this.matrix = null;\n }\n _createGradient(t) {\n let e;\n \"axial\" === this._type ? e = t.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]) : \"radial\" === this._type && (e = t.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1));\n for (const t of this._colorStops) e.addColorStop(t[0], t[1]);\n return e;\n }\n getPattern(t, e, n, a) {\n let o;\n if (a === s.STROKE || a === s.FILL) {\n const s = e.current.getClippedPathBoundingBox(a, (0, r.getCurrentTransform)(t)) || [0, 0, 0, 0],\n l = Math.ceil(s[2] - s[0]) || 1,\n c = Math.ceil(s[3] - s[1]) || 1,\n h = e.cachedCanvases.getCanvas(\"pattern\", l, c, !0),\n d = h.context;\n d.clearRect(0, 0, d.canvas.width, d.canvas.height);\n d.beginPath();\n d.rect(0, 0, d.canvas.width, d.canvas.height);\n d.translate(-s[0], -s[1]);\n n = i.Util.transform(n, [1, 0, 0, 1, s[0], s[1]]);\n d.transform(...e.baseTransform);\n this.matrix && d.transform(...this.matrix);\n applyBoundingBox(d, this._bbox);\n d.fillStyle = this._createGradient(d);\n d.fill();\n o = t.createPattern(h.canvas, \"no-repeat\");\n const u = new DOMMatrix(n);\n o.setTransform(u);\n } else {\n applyBoundingBox(t, this._bbox);\n o = this._createGradient(t);\n }\n return o;\n }\n }\n function drawTriangle(t, e, n, i, r, s, a, o) {\n const l = e.coords,\n c = e.colors,\n h = t.data,\n d = 4 * t.width;\n let u;\n if (l[n + 1] > l[i + 1]) {\n u = n;\n n = i;\n i = u;\n u = s;\n s = a;\n a = u;\n }\n if (l[i + 1] > l[r + 1]) {\n u = i;\n i = r;\n r = u;\n u = a;\n a = o;\n o = u;\n }\n if (l[n + 1] > l[i + 1]) {\n u = n;\n n = i;\n i = u;\n u = s;\n s = a;\n a = u;\n }\n const p = (l[n] + e.offsetX) * e.scaleX,\n f = (l[n + 1] + e.offsetY) * e.scaleY,\n g = (l[i] + e.offsetX) * e.scaleX,\n m = (l[i + 1] + e.offsetY) * e.scaleY,\n b = (l[r] + e.offsetX) * e.scaleX,\n v = (l[r + 1] + e.offsetY) * e.scaleY;\n if (f >= v) return;\n const y = c[s],\n A = c[s + 1],\n _ = c[s + 2],\n S = c[a],\n E = c[a + 1],\n x = c[a + 2],\n w = c[o],\n C = c[o + 1],\n T = c[o + 2],\n P = Math.round(f),\n k = Math.round(v);\n let M, R, I, D, O, L, N, B;\n for (let t = P; t <= k; t++) {\n if (t < m) {\n const e = t < f ? 0 : (f - t) / (f - m);\n M = p - (p - g) * e;\n R = y - (y - S) * e;\n I = A - (A - E) * e;\n D = _ - (_ - x) * e;\n } else {\n let e;\n e = t > v ? 1 : m === v ? 0 : (m - t) / (m - v);\n M = g - (g - b) * e;\n R = S - (S - w) * e;\n I = E - (E - C) * e;\n D = x - (x - T) * e;\n }\n let e;\n e = t < f ? 0 : t > v ? 1 : (f - t) / (f - v);\n O = p - (p - b) * e;\n L = y - (y - w) * e;\n N = A - (A - C) * e;\n B = _ - (_ - T) * e;\n const n = Math.round(Math.min(M, O)),\n i = Math.round(Math.max(M, O));\n let r = d * t + 4 * n;\n for (let t = n; t <= i; t++) {\n e = (M - t) / (M - O);\n e < 0 ? e = 0 : e > 1 && (e = 1);\n h[r++] = R - (R - L) * e | 0;\n h[r++] = I - (I - N) * e | 0;\n h[r++] = D - (D - B) * e | 0;\n h[r++] = 255;\n }\n }\n }\n function drawFigure(t, e, n) {\n const i = e.coords,\n r = e.colors;\n let s, a;\n switch (e.type) {\n case \"lattice\":\n const o = e.verticesPerRow,\n l = Math.floor(i.length / o) - 1,\n c = o - 1;\n for (s = 0; s < l; s++) {\n let e = s * o;\n for (let s = 0; s < c; s++, e++) {\n drawTriangle(t, n, i[e], i[e + 1], i[e + o], r[e], r[e + 1], r[e + o]);\n drawTriangle(t, n, i[e + o + 1], i[e + 1], i[e + o], r[e + o + 1], r[e + 1], r[e + o]);\n }\n }\n break;\n case \"triangles\":\n for (s = 0, a = i.length; s < a; s += 3) drawTriangle(t, n, i[s], i[s + 1], i[s + 2], r[s], r[s + 1], r[s + 2]);\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n }\n class MeshShadingPattern extends BaseShadingPattern {\n constructor(t) {\n super();\n this._coords = t[2];\n this._colors = t[3];\n this._figures = t[4];\n this._bounds = t[5];\n this._bbox = t[7];\n this._background = t[8];\n this.matrix = null;\n }\n _createMeshCanvas(t, e, n) {\n const i = Math.floor(this._bounds[0]),\n r = Math.floor(this._bounds[1]),\n s = Math.ceil(this._bounds[2]) - i,\n a = Math.ceil(this._bounds[3]) - r,\n o = Math.min(Math.ceil(Math.abs(s * t[0] * 1.1)), 3e3),\n l = Math.min(Math.ceil(Math.abs(a * t[1] * 1.1)), 3e3),\n c = s / o,\n h = a / l,\n d = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -i,\n offsetY: -r,\n scaleX: 1 / c,\n scaleY: 1 / h\n },\n u = o + 4,\n p = l + 4,\n f = n.getCanvas(\"mesh\", u, p, !1),\n g = f.context,\n m = g.createImageData(o, l);\n if (e) {\n const t = m.data;\n for (let n = 0, i = t.length; n < i; n += 4) {\n t[n] = e[0];\n t[n + 1] = e[1];\n t[n + 2] = e[2];\n t[n + 3] = 255;\n }\n }\n for (const t of this._figures) drawFigure(m, t, d);\n g.putImageData(m, 2, 2);\n return {\n canvas: f.canvas,\n offsetX: i - 2 * c,\n offsetY: r - 2 * h,\n scaleX: c,\n scaleY: h\n };\n }\n getPattern(t, e, n, a) {\n applyBoundingBox(t, this._bbox);\n let o;\n if (a === s.SHADING) o = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(t));else {\n o = i.Util.singularValueDecompose2dScale(e.baseTransform);\n if (this.matrix) {\n const t = i.Util.singularValueDecompose2dScale(this.matrix);\n o = [o[0] * t[0], o[1] * t[1]];\n }\n }\n const l = this._createMeshCanvas(o, a === s.SHADING ? null : this._background, e.cachedCanvases);\n if (a !== s.SHADING) {\n t.setTransform(...e.baseTransform);\n this.matrix && t.transform(...this.matrix);\n }\n t.translate(l.offsetX, l.offsetY);\n t.scale(l.scaleX, l.scaleY);\n return t.createPattern(l.canvas, \"no-repeat\");\n }\n }\n class DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n }\n const a = 1,\n o = 2;\n class TilingPattern {\n constructor(t, e, n, i, r) {\n this.operatorList = t[2];\n this.matrix = t[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = t[4];\n this.xstep = t[5];\n this.ystep = t[6];\n this.paintType = t[7];\n this.tilingType = t[8];\n this.color = e;\n this.ctx = n;\n this.canvasGraphicsFactory = i;\n this.baseTransform = r;\n }\n createPatternCanvas(t) {\n const e = this.operatorList,\n n = this.bbox,\n s = this.xstep,\n a = this.ystep,\n o = this.paintType,\n l = this.tilingType,\n c = this.color,\n h = this.canvasGraphicsFactory;\n (0, i.info)(\"TilingType: \" + l);\n const d = n[0],\n u = n[1],\n p = n[2],\n f = n[3],\n g = i.Util.singularValueDecompose2dScale(this.matrix),\n m = i.Util.singularValueDecompose2dScale(this.baseTransform),\n b = [g[0] * m[0], g[1] * m[1]],\n v = this.getSizeAndScale(s, this.ctx.canvas.width, b[0]),\n y = this.getSizeAndScale(a, this.ctx.canvas.height, b[1]),\n A = t.cachedCanvases.getCanvas(\"pattern\", v.size, y.size, !0),\n _ = A.context,\n S = h.createCanvasGraphics(_);\n S.groupLevel = t.groupLevel;\n this.setFillAndStrokeStyleToContext(S, o, c);\n let E = d,\n x = u,\n w = p,\n C = f;\n if (d < 0) {\n E = 0;\n w += Math.abs(d);\n }\n if (u < 0) {\n x = 0;\n C += Math.abs(u);\n }\n _.translate(-v.scale * E, -y.scale * x);\n S.transform(v.scale, 0, 0, y.scale, 0, 0);\n _.save();\n this.clipBbox(S, E, x, w, C);\n S.baseTransform = (0, r.getCurrentTransform)(S.ctx);\n S.executeOperatorList(e);\n S.endDrawing();\n return {\n canvas: A.canvas,\n scaleX: v.scale,\n scaleY: y.scale,\n offsetX: E,\n offsetY: x\n };\n }\n getSizeAndScale(t, e, n) {\n t = Math.abs(t);\n const i = Math.max(TilingPattern.MAX_PATTERN_SIZE, e);\n let r = Math.ceil(t * n);\n r >= i ? r = i : n = r / t;\n return {\n scale: n,\n size: r\n };\n }\n clipBbox(t, e, n, i, s) {\n const a = i - e,\n o = s - n;\n t.ctx.rect(e, n, a, o);\n t.current.updateRectMinMax((0, r.getCurrentTransform)(t.ctx), [e, n, i, s]);\n t.clip();\n t.endPath();\n }\n setFillAndStrokeStyleToContext(t, e, n) {\n const r = t.ctx,\n s = t.current;\n switch (e) {\n case a:\n const t = this.ctx;\n r.fillStyle = t.fillStyle;\n r.strokeStyle = t.strokeStyle;\n s.fillColor = t.fillStyle;\n s.strokeColor = t.strokeStyle;\n break;\n case o:\n const l = i.Util.makeHexColor(n[0], n[1], n[2]);\n r.fillStyle = l;\n r.strokeStyle = l;\n s.fillColor = l;\n s.strokeColor = l;\n break;\n default:\n throw new i.FormatError(\"Unsupported paint type: \".concat(e));\n }\n }\n getPattern(t, e, n, r) {\n let a = n;\n if (r !== s.SHADING) {\n a = i.Util.transform(a, e.baseTransform);\n this.matrix && (a = i.Util.transform(a, this.matrix));\n }\n const o = this.createPatternCanvas(e);\n let l = new DOMMatrix(a);\n l = l.translate(o.offsetX, o.offsetY);\n l = l.scale(1 / o.scaleX, 1 / o.scaleY);\n const c = t.createPattern(o.canvas, \"repeat\");\n c.setTransform(l);\n return c;\n }\n }\n _defineProperty(TilingPattern, \"MAX_PATTERN_SIZE\", 3e3);\n e.TilingPattern = TilingPattern;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\n e.convertToRGBA = function convertToRGBA(t) {\n switch (t.kind) {\n case i.ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(t);\n case i.ImageKind.RGB_24BPP:\n return function convertRGBToRGBA(t) {\n let {\n src: e,\n srcPos: n = 0,\n dest: r,\n destPos: s = 0,\n width: a,\n height: o\n } = t,\n l = 0;\n const c = e.length >> 2,\n h = new Uint32Array(e.buffer, n, c);\n if (i.FeatureTest.isLittleEndian) {\n for (; l < c - 2; l += 3, s += 4) {\n const t = h[l],\n e = h[l + 1],\n n = h[l + 2];\n r[s] = 4278190080 | t;\n r[s + 1] = t >>> 24 | e << 8 | 4278190080;\n r[s + 2] = e >>> 16 | n << 16 | 4278190080;\n r[s + 3] = n >>> 8 | 4278190080;\n }\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] | e[t + 1] << 8 | e[t + 2] << 16 | 4278190080;\n } else {\n for (; l < c - 2; l += 3, s += 4) {\n const t = h[l],\n e = h[l + 1],\n n = h[l + 2];\n r[s] = 255 | t;\n r[s + 1] = t << 24 | e >>> 8 | 255;\n r[s + 2] = e << 16 | n >>> 16 | 255;\n r[s + 3] = n << 8 | 255;\n }\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | 255;\n }\n return {\n srcPos: n,\n destPos: s\n };\n }(t);\n }\n return null;\n };\n e.grayToRGBA = function grayToRGBA(t, e) {\n if (i.FeatureTest.isLittleEndian) for (let n = 0, i = t.length; n < i; n++) e[n] = 65793 * t[n] | 4278190080;else for (let n = 0, i = t.length; n < i; n++) e[n] = 16843008 * t[n] | 255;\n };\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(1);\n function convertBlackAndWhiteToRGBA(t) {\n let {\n src: e,\n srcPos: n = 0,\n dest: r,\n width: s,\n height: a,\n nonBlackColor: o = 4294967295,\n inverseDecode: l = !1\n } = t;\n const c = i.FeatureTest.isLittleEndian ? 4278190080 : 255,\n [h, d] = l ? [o, c] : [c, o],\n u = s >> 3,\n p = 7 & s,\n f = e.length;\n r = new Uint32Array(r.buffer);\n let g = 0;\n for (let t = 0; t < a; t++) {\n for (const t = n + u; n < t; n++) {\n const t = n < f ? e[n] : 255;\n r[g++] = 128 & t ? d : h;\n r[g++] = 64 & t ? d : h;\n r[g++] = 32 & t ? d : h;\n r[g++] = 16 & t ? d : h;\n r[g++] = 8 & t ? d : h;\n r[g++] = 4 & t ? d : h;\n r[g++] = 2 & t ? d : h;\n r[g++] = 1 & t ? d : h;\n }\n if (0 === p) continue;\n const t = n < f ? e[n++] : 255;\n for (let e = 0; e < p; e++) r[g++] = t & 1 << 7 - e ? d : h;\n }\n return {\n srcPos: n,\n destPos: g\n };\n }\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.GlobalWorkerOptions = void 0;\n const n = Object.create(null);\n e.GlobalWorkerOptions = n;\n n.workerPort = null;\n n.workerSrc = \"\";\n }, (t, e, n) => {\n \"use strict\";\n\n var _Xt, _$t, _Kt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.MessageHandler = void 0;\n n(2);\n var i = n(1);\n const r = 1,\n s = 2,\n a = 1,\n o = 2,\n l = 3,\n c = 4,\n h = 5,\n d = 6,\n u = 7,\n p = 8;\n function wrapReason(t) {\n t instanceof Error || \"object\" == typeof t && null !== t || (0, i.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n switch (t.name) {\n case \"AbortException\":\n return new i.AbortException(t.message);\n case \"MissingPDFException\":\n return new i.MissingPDFException(t.message);\n case \"PasswordException\":\n return new i.PasswordException(t.message, t.code);\n case \"UnexpectedResponseException\":\n return new i.UnexpectedResponseException(t.message, t.status);\n case \"UnknownErrorException\":\n return new i.UnknownErrorException(t.message, t.details);\n default:\n return new i.UnknownErrorException(t.message, t.toString());\n }\n }\n e.MessageHandler = (_Xt = /*#__PURE__*/new WeakSet(), _$t = /*#__PURE__*/new WeakSet(), _Kt = /*#__PURE__*/new WeakSet(), class MessageHandler {\n constructor(_t11, _e10, _n6) {\n _classPrivateMethodInitSpec(this, _Kt);\n _classPrivateMethodInitSpec(this, _$t);\n _classPrivateMethodInitSpec(this, _Xt);\n this.sourceName = _t11;\n this.targetName = _e10;\n this.comObj = _n6;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = t => {\n const e = t.data;\n if (e.targetName !== this.sourceName) return;\n if (e.stream) {\n _classPrivateMethodGet(this, _$t, _$t2).call(this, e);\n return;\n }\n if (e.callback) {\n const t = e.callbackId,\n n = this.callbackCapabilities[t];\n if (!n) throw new Error(\"Cannot resolve callback \".concat(t));\n delete this.callbackCapabilities[t];\n if (e.callback === r) n.resolve(e.data);else {\n if (e.callback !== s) throw new Error(\"Unexpected callback case\");\n n.reject(wrapReason(e.reason));\n }\n return;\n }\n const i = this.actionHandler[e.action];\n if (!i) throw new Error(\"Unknown action from worker: \".concat(e.action));\n if (e.callbackId) {\n const t = this.sourceName,\n a = e.sourceName;\n new Promise(function (t) {\n t(i(e.data));\n }).then(function (i) {\n _n6.postMessage({\n sourceName: t,\n targetName: a,\n callback: r,\n callbackId: e.callbackId,\n data: i\n });\n }, function (i) {\n _n6.postMessage({\n sourceName: t,\n targetName: a,\n callback: s,\n callbackId: e.callbackId,\n reason: wrapReason(i)\n });\n });\n } else e.streamId ? _classPrivateMethodGet(this, _Xt, _Xt2).call(this, e) : i(e.data);\n };\n _n6.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(t, e) {\n const n = this.actionHandler;\n if (n[t]) throw new Error(\"There is already an actionName called \\\"\".concat(t, \"\\\"\"));\n n[t] = e;\n }\n send(t, e, n) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: t,\n data: e\n }, n);\n }\n sendWithPromise(t, e, n) {\n const r = this.callbackId++,\n s = new i.PromiseCapability();\n this.callbackCapabilities[r] = s;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: t,\n callbackId: r,\n data: e\n }, n);\n } catch (t) {\n s.reject(t);\n }\n return s.promise;\n }\n sendWithStream(t, e, n, r) {\n const s = this.streamId++,\n o = this.sourceName,\n l = this.targetName,\n c = this.comObj;\n return new ReadableStream({\n start: n => {\n const a = new i.PromiseCapability();\n this.streamControllers[s] = {\n controller: n,\n startCall: a,\n pullCall: null,\n cancelCall: null,\n isClosed: !1\n };\n c.postMessage({\n sourceName: o,\n targetName: l,\n action: t,\n streamId: s,\n data: e,\n desiredSize: n.desiredSize\n }, r);\n return a.promise;\n },\n pull: t => {\n const e = new i.PromiseCapability();\n this.streamControllers[s].pullCall = e;\n c.postMessage({\n sourceName: o,\n targetName: l,\n stream: d,\n streamId: s,\n desiredSize: t.desiredSize\n });\n return e.promise;\n },\n cancel: t => {\n (0, i.assert)(t instanceof Error, \"cancel must have a valid reason\");\n const e = new i.PromiseCapability();\n this.streamControllers[s].cancelCall = e;\n this.streamControllers[s].isClosed = !0;\n c.postMessage({\n sourceName: o,\n targetName: l,\n stream: a,\n streamId: s,\n reason: wrapReason(t)\n });\n return e.promise;\n }\n }, n);\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n });\n function _Xt2(t) {\n const e = t.streamId,\n n = this.sourceName,\n r = t.sourceName,\n s = this.comObj,\n a = this,\n o = this.actionHandler[t.action],\n d = {\n enqueue(t) {\n let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,\n o = arguments.length > 2 ? arguments[2] : void 0;\n if (this.isCancelled) return;\n const l = this.desiredSize;\n this.desiredSize -= a;\n if (l > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new i.PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: c,\n streamId: e,\n chunk: t\n }, o);\n },\n close() {\n if (!this.isCancelled) {\n this.isCancelled = !0;\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: l,\n streamId: e\n });\n delete a.streamSinks[e];\n }\n },\n error(t) {\n (0, i.assert)(t instanceof Error, \"error must have a valid reason\");\n if (!this.isCancelled) {\n this.isCancelled = !0;\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: h,\n streamId: e,\n reason: wrapReason(t)\n });\n }\n },\n sinkCapability: new i.PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: !1,\n desiredSize: t.desiredSize,\n ready: null\n };\n d.sinkCapability.resolve();\n d.ready = d.sinkCapability.promise;\n this.streamSinks[e] = d;\n new Promise(function (e) {\n e(o(t.data, d));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: p,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: p,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n }\n function _$t2(t) {\n const e = t.streamId,\n n = this.sourceName,\n r = t.sourceName,\n s = this.comObj,\n f = this.streamControllers[e],\n g = this.streamSinks[e];\n switch (t.stream) {\n case p:\n t.success ? f.startCall.resolve() : f.startCall.reject(wrapReason(t.reason));\n break;\n case u:\n t.success ? f.pullCall.resolve() : f.pullCall.reject(wrapReason(t.reason));\n break;\n case d:\n if (!g) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n success: !0\n });\n break;\n }\n g.desiredSize <= 0 && t.desiredSize > 0 && g.sinkCapability.resolve();\n g.desiredSize = t.desiredSize;\n new Promise(function (t) {\n var _g$onPull;\n t((_g$onPull = g.onPull) === null || _g$onPull === void 0 ? void 0 : _g$onPull.call(g));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n break;\n case c:\n (0, i.assert)(f, \"enqueue should have stream controller\");\n if (f.isClosed) break;\n f.controller.enqueue(t.chunk);\n break;\n case l:\n (0, i.assert)(f, \"close should have stream controller\");\n if (f.isClosed) break;\n f.isClosed = !0;\n f.controller.close();\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case h:\n (0, i.assert)(f, \"error should have stream controller\");\n f.controller.error(wrapReason(t.reason));\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case o:\n t.success ? f.cancelCall.resolve() : f.cancelCall.reject(wrapReason(t.reason));\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case a:\n if (!g) break;\n new Promise(function (e) {\n var _g$onCancel;\n e((_g$onCancel = g.onCancel) === null || _g$onCancel === void 0 ? void 0 : _g$onCancel.call(g, wrapReason(t.reason)));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: o,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: o,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n g.sinkCapability.reject(wrapReason(t.reason));\n g.isCancelled = !0;\n delete this.streamSinks[e];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async function _Kt2(t, e) {\n var _t$startCall, _t$pullCall, _t$cancelCall;\n await Promise.allSettled([(_t$startCall = t.startCall) === null || _t$startCall === void 0 ? void 0 : _t$startCall.promise, (_t$pullCall = t.pullCall) === null || _t$pullCall === void 0 ? void 0 : _t$pullCall.promise, (_t$cancelCall = t.cancelCall) === null || _t$cancelCall === void 0 ? void 0 : _t$cancelCall.promise]);\n delete this.streamControllers[e];\n }\n }, (t, e, n) => {\n \"use strict\";\n\n var _Yt, _Jt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.Metadata = void 0;\n var i = n(1);\n e.Metadata = (_Yt = /*#__PURE__*/new WeakMap(), _Jt = /*#__PURE__*/new WeakMap(), class Metadata {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _Yt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Jt, {\n writable: true,\n value: void 0\n });\n let {\n parsedData: e,\n rawData: n\n } = t;\n _classPrivateFieldSet(this, _Yt, e);\n _classPrivateFieldSet(this, _Jt, n);\n }\n getRaw() {\n return _classPrivateFieldGet(this, _Jt);\n }\n get(t) {\n var _classPrivateFieldGet8;\n return (_classPrivateFieldGet8 = _classPrivateFieldGet(this, _Yt).get(t)) !== null && _classPrivateFieldGet8 !== void 0 ? _classPrivateFieldGet8 : null;\n }\n getAll() {\n return (0, i.objectFromMap)(_classPrivateFieldGet(this, _Yt));\n }\n has(t) {\n return _classPrivateFieldGet(this, _Yt).has(t);\n }\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var _Zt, _te, _ee, _ne, _ie;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.OptionalContentConfig = void 0;\n var i = n(1),\n r = n(169);\n const s = Symbol(\"INTERNAL\");\n var _Qt = /*#__PURE__*/new WeakMap();\n class OptionalContentGroup {\n constructor(t, e) {\n _classPrivateFieldInitSpec(this, _Qt, {\n writable: true,\n value: !0\n });\n this.name = t;\n this.intent = e;\n }\n get visible() {\n return _classPrivateFieldGet(this, _Qt);\n }\n _setVisible(t, e) {\n t !== s && (0, i.unreachable)(\"Internal method `_setVisible` called.\");\n _classPrivateFieldSet(this, _Qt, e);\n }\n }\n e.OptionalContentConfig = (_Zt = /*#__PURE__*/new WeakMap(), _te = /*#__PURE__*/new WeakMap(), _ee = /*#__PURE__*/new WeakMap(), _ne = /*#__PURE__*/new WeakMap(), _ie = /*#__PURE__*/new WeakSet(), class OptionalContentConfig {\n constructor(_t12) {\n _classPrivateMethodInitSpec(this, _ie);\n _classPrivateFieldInitSpec(this, _Zt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _te, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _ee, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ne, {\n writable: true,\n value: null\n });\n this.name = null;\n this.creator = null;\n if (null !== _t12) {\n this.name = _t12.name;\n this.creator = _t12.creator;\n _classPrivateFieldSet(this, _ne, _t12.order);\n for (const e of _t12.groups) _classPrivateFieldGet(this, _te).set(e.id, new OptionalContentGroup(e.name, e.intent));\n if (\"OFF\" === _t12.baseState) for (const t of _classPrivateFieldGet(this, _te).values()) t._setVisible(s, !1);\n for (const e of _t12.on) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !0);\n for (const e of _t12.off) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !1);\n _classPrivateFieldSet(this, _ee, this.getHash());\n }\n }\n isVisible(t) {\n if (0 === _classPrivateFieldGet(this, _te).size) return !0;\n if (!t) {\n (0, i.warn)(\"Optional content group not defined.\");\n return !0;\n }\n if (\"OCG\" === t.type) {\n if (!_classPrivateFieldGet(this, _te).has(t.id)) {\n (0, i.warn)(\"Optional content group not found: \".concat(t.id));\n return !0;\n }\n return _classPrivateFieldGet(this, _te).get(t.id).visible;\n }\n if (\"OCMD\" === t.type) {\n if (t.expression) return _classPrivateMethodGet(this, _ie, _ie2).call(this, t.expression);\n if (!t.policy || \"AnyOn\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !0;\n }\n return !1;\n }\n if (\"AllOn\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !1;\n }\n return !0;\n }\n if (\"AnyOff\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !0;\n }\n return !1;\n }\n if (\"AllOff\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !1;\n }\n return !0;\n }\n (0, i.warn)(\"Unknown optional content policy \".concat(t.policy, \".\"));\n return !0;\n }\n (0, i.warn)(\"Unknown group type \".concat(t.type, \".\"));\n return !0;\n }\n setVisibility(t) {\n let e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n if (_classPrivateFieldGet(this, _te).has(t)) {\n _classPrivateFieldGet(this, _te).get(t)._setVisible(s, !!e);\n _classPrivateFieldSet(this, _Zt, null);\n } else (0, i.warn)(\"Optional content group not found: \".concat(t));\n }\n get hasInitialVisibility() {\n return this.getHash() === _classPrivateFieldGet(this, _ee);\n }\n getOrder() {\n return _classPrivateFieldGet(this, _te).size ? _classPrivateFieldGet(this, _ne) ? _classPrivateFieldGet(this, _ne).slice() : [..._classPrivateFieldGet(this, _te).keys()] : null;\n }\n getGroups() {\n return _classPrivateFieldGet(this, _te).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _te)) : null;\n }\n getGroup(t) {\n return _classPrivateFieldGet(this, _te).get(t) || null;\n }\n getHash() {\n if (null !== _classPrivateFieldGet(this, _Zt)) return _classPrivateFieldGet(this, _Zt);\n const t = new r.MurmurHash3_64();\n for (const [e, n] of _classPrivateFieldGet(this, _te)) t.update(\"\".concat(e, \":\").concat(n.visible));\n return _classPrivateFieldSet(this, _Zt, t.hexdigest());\n }\n });\n function _ie2(t) {\n const e = t.length;\n if (e < 2) return !0;\n const n = t[0];\n for (let r = 1; r < e; r++) {\n const e = t[r];\n let s;\n if (Array.isArray(e)) s = _classPrivateMethodGet(this, _ie, _ie2).call(this, e);else {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n s = _classPrivateFieldGet(this, _te).get(e).visible;\n }\n switch (n) {\n case \"And\":\n if (!s) return !1;\n break;\n case \"Or\":\n if (s) return !0;\n break;\n case \"Not\":\n return !s;\n default:\n return !0;\n }\n }\n return \"And\" === n;\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFDataTransportStream = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(167);\n e.PDFDataTransportStream = class PDFDataTransportStream {\n constructor(t, e) {\n let {\n length: n,\n initialData: r,\n progressiveDone: s = !1,\n contentDispositionFilename: a = null,\n disableRange: o = !1,\n disableStream: l = !1\n } = t;\n (0, i.assert)(e, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = s;\n this._contentDispositionFilename = a;\n if ((r === null || r === void 0 ? void 0 : r.length) > 0) {\n const t = r instanceof Uint8Array && r.byteLength === r.buffer.byteLength ? r.buffer : new Uint8Array(r).buffer;\n this._queuedChunks.push(t);\n }\n this._pdfDataRangeTransport = e;\n this._isStreamingSupported = !l;\n this._isRangeSupported = !o;\n this._contentLength = n;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n this._pdfDataRangeTransport.addRangeListener((t, e) => {\n this._onReceiveData({\n begin: t,\n chunk: e\n });\n });\n this._pdfDataRangeTransport.addProgressListener((t, e) => {\n this._onProgress({\n loaded: t,\n total: e\n });\n });\n this._pdfDataRangeTransport.addProgressiveReadListener(t => {\n this._onReceiveData({\n chunk: t\n });\n });\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n this._pdfDataRangeTransport.transportReady();\n }\n _onReceiveData(t) {\n let {\n begin: e,\n chunk: n\n } = t;\n const r = n instanceof Uint8Array && n.byteLength === n.buffer.byteLength ? n.buffer : new Uint8Array(n).buffer;\n if (void 0 === e) this._fullRequestReader ? this._fullRequestReader._enqueue(r) : this._queuedChunks.push(r);else {\n const t = this._rangeReaders.some(function (t) {\n if (t._begin !== e) return !1;\n t._enqueue(r);\n return !0;\n });\n (0, i.assert)(t, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea, _this$_fullRequestRea2;\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\n }\n _onProgress(t) {\n var _this$_rangeReaders$, _this$_rangeReaders$$, _this$_fullRequestRea3, _this$_fullRequestRea4;\n void 0 === t.total ? (_this$_rangeReaders$ = this._rangeReaders[0]) === null || _this$_rangeReaders$ === void 0 || (_this$_rangeReaders$$ = _this$_rangeReaders$.onProgress) === null || _this$_rangeReaders$$ === void 0 ? void 0 : _this$_rangeReaders$$.call(_this$_rangeReaders$, {\n loaded: t.loaded\n }) : (_this$_fullRequestRea3 = this._fullRequestReader) === null || _this$_fullRequestRea3 === void 0 || (_this$_fullRequestRea4 = _this$_fullRequestRea3.onProgress) === null || _this$_fullRequestRea4 === void 0 ? void 0 : _this$_fullRequestRea4.call(_this$_fullRequestRea3, {\n loaded: t.loaded,\n total: t.total\n });\n }\n _onProgressiveDone() {\n var _this$_fullRequestRea5;\n (_this$_fullRequestRea5 = this._fullRequestReader) === null || _this$_fullRequestRea5 === void 0 ? void 0 : _this$_fullRequestRea5.progressiveDone();\n this._progressiveDone = !0;\n }\n _removeRangeReader(t) {\n const e = this._rangeReaders.indexOf(t);\n e >= 0 && this._rangeReaders.splice(e, 1);\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const t = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, t, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = new PDFDataTransportStreamRangeReader(this, t, e);\n this._pdfDataRangeTransport.requestDataRange(t, e);\n this._rangeReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea6;\n (_this$_fullRequestRea6 = this._fullRequestReader) === null || _this$_fullRequestRea6 === void 0 ? void 0 : _this$_fullRequestRea6.cancel(t);\n for (const e of this._rangeReaders.slice(0)) e.cancel(t);\n this._pdfDataRangeTransport.abort();\n }\n };\n class PDFDataTransportStreamReader {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\n this._stream = t;\n this._done = n || !1;\n this._filename = (0, r.isPdfFile)(i) ? i : null;\n this._queuedChunks = e || [];\n this._loaded = 0;\n for (const t of this._queuedChunks) this._loaded += t.byteLength;\n this._requests = [];\n this._headersReady = Promise.resolve();\n t._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(t) {\n if (!this._done) {\n if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: t,\n done: !1\n });\n } else this._queuedChunks.push(t);\n this._loaded += t.byteLength;\n }\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n return {\n value: this._queuedChunks.shift(),\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n progressiveDone() {\n this._done || (this._done = !0);\n }\n }\n class PDFDataTransportStreamRangeReader {\n constructor(t, e, n) {\n this._stream = t;\n this._begin = e;\n this._end = n;\n this._queuedChunk = null;\n this._requests = [];\n this._done = !1;\n this.onProgress = null;\n }\n _enqueue(t) {\n if (!this._done) {\n if (0 === this._requests.length) this._queuedChunk = t;else {\n this._requests.shift().resolve({\n value: t,\n done: !1\n });\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n this._done = !0;\n this._stream._removeRangeReader(this);\n }\n }\n get isStreamingSupported() {\n return !1;\n }\n async read() {\n if (this._queuedChunk) {\n const t = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: t,\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFFetchStream = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(181);\n function createFetchOptions(t, e, n) {\n return {\n method: \"GET\",\n headers: t,\n signal: n.signal,\n mode: \"cors\",\n credentials: e ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n }\n function createHeaders(t) {\n const e = new Headers();\n for (const n in t) {\n const i = t[n];\n void 0 !== i && e.append(n, i);\n }\n return e;\n }\n function getArrayBuffer(t) {\n if (t instanceof Uint8Array) return t.buffer;\n if (t instanceof ArrayBuffer) return t;\n (0, i.warn)(\"getArrayBuffer - unexpected data format: \".concat(t));\n return new Uint8Array(t).buffer;\n }\n e.PDFFetchStream = class PDFFetchStream {\n constructor(t) {\n this.source = t;\n this.isHttp = /^https?:/i.test(t.url);\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea7, _this$_fullRequestRea8;\n return (_this$_fullRequestRea7 = (_this$_fullRequestRea8 = this._fullRequestReader) === null || _this$_fullRequestRea8 === void 0 ? void 0 : _this$_fullRequestRea8._loaded) !== null && _this$_fullRequestRea7 !== void 0 ? _this$_fullRequestRea7 : 0;\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = new PDFFetchStreamRangeReader(this, t, e);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea9;\n (_this$_fullRequestRea9 = this._fullRequestReader) === null || _this$_fullRequestRea9 === void 0 ? void 0 : _this$_fullRequestRea9.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class PDFFetchStreamReader {\n constructor(t) {\n this._stream = t;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const e = t.source;\n this._withCredentials = e.withCredentials || !1;\n this._contentLength = e.length;\n this._headersCapability = new i.PromiseCapability();\n this._disableRange = e.disableRange || !1;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._abortController = new AbortController();\n this._isStreamingSupported = !e.disableStream;\n this._isRangeSupported = !e.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const n = e.url;\n fetch(n, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, n);\n this._reader = t.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = e => t.headers.get(e),\n {\n allowRangeRequests: e,\n suggestedLength: s\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = e;\n this._contentLength = s || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n !this._isStreamingSupported && this._isRangeSupported && this.cancel(new i.AbortException(\"Streaming is disabled.\"));\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress;\n await this._headersCapability.promise;\n const {\n value: t,\n done: e\n } = await this._reader.read();\n if (e) return {\n value: t,\n done: e\n };\n this._loaded += t.byteLength;\n (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, {\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(t),\n done: !1\n };\n }\n cancel(t) {\n var _this$_reader;\n (_this$_reader = this._reader) === null || _this$_reader === void 0 ? void 0 : _this$_reader.cancel(t);\n this._abortController.abort();\n }\n }\n class PDFFetchStreamRangeReader {\n constructor(t, e, n) {\n this._stream = t;\n this._reader = null;\n this._loaded = 0;\n const s = t.source;\n this._withCredentials = s.withCredentials || !1;\n this._readCapability = new i.PromiseCapability();\n this._isStreamingSupported = !s.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", \"bytes=\".concat(e, \"-\").concat(n - 1));\n const a = s.url;\n fetch(a, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, a);\n this._readCapability.resolve();\n this._reader = t.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress2;\n await this._readCapability.promise;\n const {\n value: t,\n done: e\n } = await this._reader.read();\n if (e) return {\n value: t,\n done: e\n };\n this._loaded += t.byteLength;\n (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, {\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(t),\n done: !1\n };\n }\n cancel(t) {\n var _this$_reader2;\n (_this$_reader2 = this._reader) === null || _this$_reader2 === void 0 ? void 0 : _this$_reader2.cancel(t);\n this._abortController.abort();\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.createResponseStatusError = function createResponseStatusError(t, e) {\n if (404 === t || 0 === t && e.startsWith(\"file:\")) return new i.MissingPDFException('Missing PDF \"' + e + '\".');\n return new i.UnexpectedResponseException(\"Unexpected server response (\".concat(t, \") while retrieving PDF \\\"\").concat(e, \"\\\".\"), t);\n };\n e.extractFilenameFromHeader = function extractFilenameFromHeader(t) {\n const e = t(\"Content-Disposition\");\n if (e) {\n let t = (0, r.getFilenameFromContentDispositionHeader)(e);\n if (t.includes(\"%\")) try {\n t = decodeURIComponent(t);\n } catch (_unused12) {}\n if ((0, s.isPdfFile)(t)) return t;\n }\n return null;\n };\n e.validateRangeRequestCapabilities = function validateRangeRequestCapabilities(t) {\n let {\n getResponseHeader: e,\n isHttp: n,\n rangeChunkSize: i,\n disableRange: r\n } = t;\n const s = {\n allowRangeRequests: !1,\n suggestedLength: void 0\n },\n a = parseInt(e(\"Content-Length\"), 10);\n if (!Number.isInteger(a)) return s;\n s.suggestedLength = a;\n if (a <= 2 * i) return s;\n if (r || !n) return s;\n if (\"bytes\" !== e(\"Accept-Ranges\")) return s;\n if (\"identity\" !== (e(\"Content-Encoding\") || \"identity\")) return s;\n s.allowRangeRequests = !0;\n return s;\n };\n e.validateResponseStatus = function validateResponseStatus(t) {\n return 200 === t || 206 === t;\n };\n var i = n(1),\n r = n(182),\n s = n(167);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(t) {\n let e = !0,\n n = toParamRegExp(\"filename\\\\*\", \"i\").exec(t);\n if (n) {\n n = n[1];\n let t = rfc2616unquote(n);\n t = unescape(t);\n t = rfc5987decode(t);\n t = rfc2047decode(t);\n return fixupEncoding(t);\n }\n n = function rfc2231getparam(t) {\n const e = [];\n let n;\n const i = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n for (; null !== (n = i.exec(t));) {\n let [, t, i, r] = n;\n t = parseInt(t, 10);\n if (t in e) {\n if (0 === t) break;\n } else e[t] = [i, r];\n }\n const r = [];\n for (let t = 0; t < e.length && t in e; ++t) {\n let [n, i] = e[t];\n i = rfc2616unquote(i);\n if (n) {\n i = unescape(i);\n 0 === t && (i = rfc5987decode(i));\n }\n r.push(i);\n }\n return r.join(\"\");\n }(t);\n if (n) {\n return fixupEncoding(rfc2047decode(n));\n }\n n = toParamRegExp(\"filename\", \"i\").exec(t);\n if (n) {\n n = n[1];\n let t = rfc2616unquote(n);\n t = rfc2047decode(t);\n return fixupEncoding(t);\n }\n function toParamRegExp(t, e) {\n return new RegExp(\"(?:^|;)\\\\s*\" + t + '\\\\s*=\\\\s*([^\";\\\\s][^;\\\\s]*|\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?)', e);\n }\n function textdecode(t, n) {\n if (t) {\n if (!/^[\\x00-\\xFF]+$/.test(n)) return n;\n try {\n const r = new TextDecoder(t, {\n fatal: !0\n }),\n s = (0, i.stringToBytes)(n);\n n = r.decode(s);\n e = !1;\n } catch (_unused13) {}\n }\n return n;\n }\n function fixupEncoding(t) {\n if (e && /[\\x80-\\xff]/.test(t)) {\n t = textdecode(\"utf-8\", t);\n e && (t = textdecode(\"iso-8859-1\", t));\n }\n return t;\n }\n function rfc2616unquote(t) {\n if (t.startsWith('\"')) {\n const e = t.slice(1).split('\\\\\"');\n for (let t = 0; t < e.length; ++t) {\n const n = e[t].indexOf('\"');\n if (-1 !== n) {\n e[t] = e[t].slice(0, n);\n e.length = t + 1;\n }\n e[t] = e[t].replaceAll(/\\\\(.)/g, \"$1\");\n }\n t = e.join('\"');\n }\n return t;\n }\n function rfc5987decode(t) {\n const e = t.indexOf(\"'\");\n if (-1 === e) return t;\n return textdecode(t.slice(0, e), t.slice(e + 1).replace(/^[^']*'/, \"\"));\n }\n function rfc2047decode(t) {\n return !t.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(t) ? t : t.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (t, e, n, i) {\n if (\"q\" === n || \"Q\" === n) return textdecode(e, i = (i = i.replaceAll(\"_\", \" \")).replaceAll(/=([0-9a-fA-F]{2})/g, function (t, e) {\n return String.fromCharCode(parseInt(e, 16));\n }));\n try {\n i = atob(i);\n } catch (_unused14) {}\n return textdecode(e, i);\n });\n }\n return \"\";\n };\n n(89);\n n(148);\n var i = n(1);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFNetworkStream = void 0;\n n(89);\n var i = n(1),\n r = n(181);\n class NetworkManager {\n constructor(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n this.url = t;\n this.isHttp = /^https?:/i.test(t);\n this.httpHeaders = this.isHttp && e.httpHeaders || Object.create(null);\n this.withCredentials = e.withCredentials || !1;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(t, e, n) {\n const i = {\n begin: t,\n end: e\n };\n for (const t in n) i[t] = n[t];\n return this.request(i);\n }\n requestFull(t) {\n return this.request(t);\n }\n request(t) {\n const e = new XMLHttpRequest(),\n n = this.currXhrId++,\n i = this.pendingRequests[n] = {\n xhr: e\n };\n e.open(\"GET\", this.url);\n e.withCredentials = this.withCredentials;\n for (const t in this.httpHeaders) {\n const n = this.httpHeaders[t];\n void 0 !== n && e.setRequestHeader(t, n);\n }\n if (this.isHttp && \"begin\" in t && \"end\" in t) {\n e.setRequestHeader(\"Range\", \"bytes=\".concat(t.begin, \"-\").concat(t.end - 1));\n i.expectedStatus = 206;\n } else i.expectedStatus = 200;\n e.responseType = \"arraybuffer\";\n t.onError && (e.onerror = function (n) {\n t.onError(e.status);\n });\n e.onreadystatechange = this.onStateChange.bind(this, n);\n e.onprogress = this.onProgress.bind(this, n);\n i.onHeadersReceived = t.onHeadersReceived;\n i.onDone = t.onDone;\n i.onError = t.onError;\n i.onProgress = t.onProgress;\n e.send(null);\n return n;\n }\n onProgress(t, e) {\n var _n$onProgress;\n const n = this.pendingRequests[t];\n n && ((_n$onProgress = n.onProgress) === null || _n$onProgress === void 0 ? void 0 : _n$onProgress.call(n, e));\n }\n onStateChange(t, e) {\n var _n$onError3;\n const n = this.pendingRequests[t];\n if (!n) return;\n const r = n.xhr;\n if (r.readyState >= 2 && n.onHeadersReceived) {\n n.onHeadersReceived();\n delete n.onHeadersReceived;\n }\n if (4 !== r.readyState) return;\n if (!(t in this.pendingRequests)) return;\n delete this.pendingRequests[t];\n if (0 === r.status && this.isHttp) {\n var _n$onError;\n (_n$onError = n.onError) === null || _n$onError === void 0 ? void 0 : _n$onError.call(n, r.status);\n return;\n }\n const s = r.status || 200;\n if (!(200 === s && 206 === n.expectedStatus) && s !== n.expectedStatus) {\n var _n$onError2;\n (_n$onError2 = n.onError) === null || _n$onError2 === void 0 ? void 0 : _n$onError2.call(n, r.status);\n return;\n }\n const a = function getArrayBuffer(t) {\n const e = t.response;\n return \"string\" != typeof e ? e : (0, i.stringToBytes)(e).buffer;\n }(r);\n if (206 === s) {\n const t = r.getResponseHeader(\"Content-Range\"),\n e = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(t);\n n.onDone({\n begin: parseInt(e[1], 10),\n chunk: a\n });\n } else a ? n.onDone({\n begin: 0,\n chunk: a\n }) : (_n$onError3 = n.onError) === null || _n$onError3 === void 0 ? void 0 : _n$onError3.call(n, r.status);\n }\n getRequestXhr(t) {\n return this.pendingRequests[t].xhr;\n }\n isPendingRequest(t) {\n return t in this.pendingRequests;\n }\n abortRequest(t) {\n const e = this.pendingRequests[t].xhr;\n delete this.pendingRequests[t];\n e.abort();\n }\n }\n e.PDFNetworkStream = class PDFNetworkStream {\n constructor(t) {\n this._source = t;\n this._manager = new NetworkManager(t.url, {\n httpHeaders: t.httpHeaders,\n withCredentials: t.withCredentials\n });\n this._rangeChunkSize = t.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(t) {\n const e = this._rangeRequestReaders.indexOf(t);\n e >= 0 && this._rangeRequestReaders.splice(e, 1);\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n const n = new PDFNetworkStreamRangeRequestReader(this._manager, t, e);\n n.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea10;\n (_this$_fullRequestRea10 = this._fullRequestReader) === null || _this$_fullRequestRea10 === void 0 ? void 0 : _this$_fullRequestRea10.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class PDFNetworkStreamFullRequestReader {\n constructor(t, e) {\n this._manager = t;\n const n = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = e.url;\n this._fullRequestId = t.requestFull(n);\n this._headersReceivedCapability = new i.PromiseCapability();\n this._disableRange = e.disableRange || !1;\n this._contentLength = e.length;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._isStreamingSupported = !1;\n this._isRangeSupported = !1;\n this._cachedChunks = [];\n this._requests = [];\n this._done = !1;\n this._storedError = void 0;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const t = this._fullRequestId,\n e = this._manager.getRequestXhr(t),\n getResponseHeader = t => e.getResponseHeader(t),\n {\n allowRangeRequests: n,\n suggestedLength: i\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n n && (this._isRangeSupported = !0);\n this._contentLength = i || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n this._isRangeSupported && this._manager.abortRequest(t);\n this._headersReceivedCapability.resolve();\n }\n _onDone(t) {\n if (t) if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: t.chunk,\n done: !1\n });\n } else this._cachedChunks.push(t.chunk);\n this._done = !0;\n if (!(this._cachedChunks.length > 0)) {\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n }\n _onError(t) {\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const t of this._requests) t.reject(this._storedError);\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(t) {\n var _this$onProgress3;\n (_this$onProgress3 = this.onProgress) === null || _this$onProgress3 === void 0 ? void 0 : _this$onProgress3.call(this, {\n loaded: t.loaded,\n total: t.lengthComputable ? t.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) throw this._storedError;\n if (this._cachedChunks.length > 0) {\n return {\n value: this._cachedChunks.shift(),\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n this._headersReceivedCapability.reject(t);\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);\n this._fullRequestReader = null;\n }\n }\n class PDFNetworkStreamRangeRequestReader {\n constructor(t, e, n) {\n this._manager = t;\n const i = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = t.url;\n this._requestId = t.requestRange(e, n, i);\n this._requests = [];\n this._queuedChunk = null;\n this._done = !1;\n this._storedError = void 0;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n var _this$onClosed;\n (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this);\n }\n _onDone(t) {\n const e = t.chunk;\n if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: e,\n done: !1\n });\n } else this._queuedChunk = e;\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._close();\n }\n _onError(t) {\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\n for (const t of this._requests) t.reject(this._storedError);\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(t) {\n var _this$onProgress4;\n this.isStreamingSupported || ((_this$onProgress4 = this.onProgress) === null || _this$onProgress4 === void 0 ? void 0 : _this$onProgress4.call(this, {\n loaded: t.loaded\n }));\n }\n get isStreamingSupported() {\n return !1;\n }\n async read() {\n if (this._storedError) throw this._storedError;\n if (null !== this._queuedChunk) {\n const t = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: t,\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);\n this._close();\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFNodeStream = void 0;\n n(89);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(1),\n r = n(181);\n const s = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n e.PDFNodeStream = class PDFNodeStream {\n constructor(t) {\n this.source = t;\n this.url = function parseUrl(t) {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'url'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\n n = e.parse(t);\n if (\"file:\" === n.protocol || n.host) return n;\n if (/^[a-z]:[/\\\\]/i.test(t)) return e.parse(\"file:///\".concat(t));\n n.host || (n.protocol = \"file:\");\n return n;\n }(t.url);\n this.isHttp = \"http:\" === this.url.protocol || \"https:\" === this.url.protocol;\n this.isFsUrl = \"file:\" === this.url.protocol;\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea11, _this$_fullRequestRea12;\n return (_this$_fullRequestRea11 = (_this$_fullRequestRea12 = this._fullRequestReader) === null || _this$_fullRequestRea12 === void 0 ? void 0 : _this$_fullRequestRea12._loaded) !== null && _this$_fullRequestRea11 !== void 0 ? _this$_fullRequestRea11 : 0;\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, t, e) : new PDFNodeStreamRangeReader(this, t, e);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea13;\n (_this$_fullRequestRea13 = this._fullRequestReader) === null || _this$_fullRequestRea13 === void 0 ? void 0 : _this$_fullRequestRea13.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class BaseFullReader {\n constructor(t) {\n this._url = t.url;\n this._done = !1;\n this._storedError = null;\n this.onProgress = null;\n const e = t.source;\n this._contentLength = e.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = e.disableRange || !1;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._isStreamingSupported = !e.disableStream;\n this._isRangeSupported = !e.disableRange;\n this._readableStream = null;\n this._readCapability = new i.PromiseCapability();\n this._headersCapability = new i.PromiseCapability();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress5;\n await this._readCapability.promise;\n if (this._done) return {\n value: void 0,\n done: !0\n };\n if (this._storedError) throw this._storedError;\n const t = this._readableStream.read();\n if (null === t) {\n this._readCapability = new i.PromiseCapability();\n return this.read();\n }\n this._loaded += t.length;\n (_this$onProgress5 = this.onProgress) === null || _this$onProgress5 === void 0 ? void 0 : _this$onProgress5.call(this, {\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: new Uint8Array(t).buffer,\n done: !1\n };\n }\n cancel(t) {\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\n }\n _error(t) {\n this._storedError = t;\n this._readCapability.resolve();\n }\n _setReadableStream(t) {\n this._readableStream = t;\n t.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n t.on(\"end\", () => {\n t.destroy();\n this._done = !0;\n this._readCapability.resolve();\n });\n t.on(\"error\", t => {\n this._error(t);\n });\n !this._isStreamingSupported && this._isRangeSupported && this._error(new i.AbortException(\"streaming is disabled\"));\n this._storedError && this._readableStream.destroy(this._storedError);\n }\n }\n class BaseRangeReader {\n constructor(t) {\n this._url = t.url;\n this._done = !1;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new i.PromiseCapability();\n const e = t.source;\n this._isStreamingSupported = !e.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress6;\n await this._readCapability.promise;\n if (this._done) return {\n value: void 0,\n done: !0\n };\n if (this._storedError) throw this._storedError;\n const t = this._readableStream.read();\n if (null === t) {\n this._readCapability = new i.PromiseCapability();\n return this.read();\n }\n this._loaded += t.length;\n (_this$onProgress6 = this.onProgress) === null || _this$onProgress6 === void 0 ? void 0 : _this$onProgress6.call(this, {\n loaded: this._loaded\n });\n return {\n value: new Uint8Array(t).buffer,\n done: !1\n };\n }\n cancel(t) {\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\n }\n _error(t) {\n this._storedError = t;\n this._readCapability.resolve();\n }\n _setReadableStream(t) {\n this._readableStream = t;\n t.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n t.on(\"end\", () => {\n t.destroy();\n this._done = !0;\n this._readCapability.resolve();\n });\n t.on(\"error\", t => {\n this._error(t);\n });\n this._storedError && this._readableStream.destroy(this._storedError);\n }\n }\n function createRequestOptions(t, e) {\n return {\n protocol: t.protocol,\n auth: t.auth,\n host: t.hostname,\n port: t.port,\n path: t.path,\n method: \"GET\",\n headers: e\n };\n }\n class PDFNodeStreamFullReader extends BaseFullReader {\n constructor(t) {\n super(t);\n const handleResponse = e => {\n if (404 === e.statusCode) {\n const t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(this._url, \"\\\".\"));\n this._storedError = t;\n this._headersCapability.reject(t);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(e);\n const getResponseHeader = t => this._readableStream.headers[t.toLowerCase()],\n {\n allowRangeRequests: n,\n suggestedLength: s\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: t.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = n;\n this._contentLength = s || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n };\n this._request = null;\n if (\"http:\" === this._url.protocol) {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'http'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\n } else {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'https'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", t => {\n this._storedError = t;\n this._headersCapability.reject(t);\n });\n this._request.end();\n }\n }\n class PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(t, e, n) {\n super(t);\n this._httpHeaders = {};\n for (const e in t.httpHeaders) {\n const n = t.httpHeaders[e];\n void 0 !== n && (this._httpHeaders[e] = n);\n }\n this._httpHeaders.Range = \"bytes=\".concat(e, \"-\").concat(n - 1);\n const handleResponse = t => {\n if (404 !== t.statusCode) this._setReadableStream(t);else {\n const t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(this._url, \"\\\".\"));\n this._storedError = t;\n }\n };\n this._request = null;\n if (\"http:\" === this._url.protocol) {\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'http'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'https'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", t => {\n this._storedError = t;\n });\n this._request.end();\n }\n }\n class PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(t) {\n super(t);\n let e = decodeURIComponent(this._url.path);\n s.test(this._url.href) && (e = e.replace(/^\\//, \"\"));\n const n = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n n.lstat(e, (t, r) => {\n if (t) {\n \"ENOENT\" === t.code && (t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(e, \"\\\".\")));\n this._storedError = t;\n this._headersCapability.reject(t);\n } else {\n this._contentLength = r.size;\n this._setReadableStream(n.createReadStream(e));\n this._headersCapability.resolve();\n }\n });\n }\n }\n class PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(t, e, n) {\n super(t);\n let i = decodeURIComponent(this._url.path);\n s.test(this._url.href) && (i = i.replace(/^\\//, \"\"));\n const r = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._setReadableStream(r.createReadStream(i, {\n start: e,\n end: n - 1\n }));\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.SVGGraphics = void 0;\n n(84);\n n(86);\n n(87);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(2);\n n(89);\n n(186);\n var i = n(167),\n r = n(1);\n const s = \"normal\",\n a = \"normal\",\n o = \"#000000\",\n l = [\"butt\", \"round\", \"square\"],\n c = [\"miter\", \"round\", \"bevel\"],\n createObjectURL = function createObjectURL(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\",\n n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (URL.createObjectURL && \"undefined\" != typeof Blob && !n) return URL.createObjectURL(new Blob([t], {\n type: e\n }));\n const i = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let r = \"data:\".concat(e, \";base64,\");\n for (let e = 0, n = t.length; e < n; e += 3) {\n const s = 255 & t[e],\n a = 255 & t[e + 1],\n o = 255 & t[e + 2];\n r += i[s >> 2] + i[(3 & s) << 4 | a >> 4] + i[e + 1 < n ? (15 & a) << 2 | o >> 6 : 64] + i[e + 2 < n ? 63 & o : 64];\n }\n return r;\n },\n h = function () {\n const t = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]),\n e = new Int32Array(256);\n for (let t = 0; t < 256; t++) {\n let n = t;\n for (let t = 0; t < 8; t++) n = 1 & n ? 3988292384 ^ n >> 1 & 2147483647 : n >> 1 & 2147483647;\n e[t] = n;\n }\n function writePngChunk(t, n, i, r) {\n let s = r;\n const a = n.length;\n i[s] = a >> 24 & 255;\n i[s + 1] = a >> 16 & 255;\n i[s + 2] = a >> 8 & 255;\n i[s + 3] = 255 & a;\n s += 4;\n i[s] = 255 & t.charCodeAt(0);\n i[s + 1] = 255 & t.charCodeAt(1);\n i[s + 2] = 255 & t.charCodeAt(2);\n i[s + 3] = 255 & t.charCodeAt(3);\n s += 4;\n i.set(n, s);\n s += n.length;\n const o = function crc32(t, n, i) {\n let r = -1;\n for (let s = n; s < i; s++) {\n const n = 255 & (r ^ t[s]);\n r = r >>> 8 ^ e[n];\n }\n return -1 ^ r;\n }(i, r + 4, s);\n i[s] = o >> 24 & 255;\n i[s + 1] = o >> 16 & 255;\n i[s + 2] = o >> 8 & 255;\n i[s + 3] = 255 & o;\n }\n function deflateSyncUncompressed(t) {\n let e = t.length;\n const n = 65535,\n i = Math.ceil(e / n),\n r = new Uint8Array(2 + e + 5 * i + 4);\n let s = 0;\n r[s++] = 120;\n r[s++] = 156;\n let a = 0;\n for (; e > n;) {\n r[s++] = 0;\n r[s++] = 255;\n r[s++] = 255;\n r[s++] = 0;\n r[s++] = 0;\n r.set(t.subarray(a, a + n), s);\n s += n;\n a += n;\n e -= n;\n }\n r[s++] = 1;\n r[s++] = 255 & e;\n r[s++] = e >> 8 & 255;\n r[s++] = 255 & ~e;\n r[s++] = (65535 & ~e) >> 8 & 255;\n r.set(t.subarray(a), s);\n s += t.length - a;\n const o = function adler32(t, e, n) {\n let i = 1,\n r = 0;\n for (let s = e; s < n; ++s) {\n i = (i + (255 & t[s])) % 65521;\n r = (r + i) % 65521;\n }\n return r << 16 | i;\n }(t, 0, t.length);\n r[s++] = o >> 24 & 255;\n r[s++] = o >> 16 & 255;\n r[s++] = o >> 8 & 255;\n r[s++] = 255 & o;\n return r;\n }\n function encode(e, n, i, s) {\n const a = e.width,\n o = e.height;\n let l, c, h;\n const d = e.data;\n switch (n) {\n case r.ImageKind.GRAYSCALE_1BPP:\n c = 0;\n l = 1;\n h = a + 7 >> 3;\n break;\n case r.ImageKind.RGB_24BPP:\n c = 2;\n l = 8;\n h = 3 * a;\n break;\n case r.ImageKind.RGBA_32BPP:\n c = 6;\n l = 8;\n h = 4 * a;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n const u = new Uint8Array((1 + h) * o);\n let p = 0,\n f = 0;\n for (let t = 0; t < o; ++t) {\n u[p++] = 0;\n u.set(d.subarray(f, f + h), p);\n f += h;\n p += h;\n }\n if (n === r.ImageKind.GRAYSCALE_1BPP && s) {\n p = 0;\n for (let t = 0; t < o; t++) {\n p++;\n for (let t = 0; t < h; t++) u[p++] ^= 255;\n }\n }\n const g = new Uint8Array([a >> 24 & 255, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l, c, 0, 0, 0]),\n m = function deflateSync(t) {\n if (!r.isNodeJS) return deflateSyncUncompressed(t);\n try {\n const e = parseInt(process.versions.node) >= 8 ? t : Buffer.from(t),\n n = Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'zlib'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(e, {\n level: 9\n });\n return n instanceof Uint8Array ? n : new Uint8Array(n);\n } catch (t) {\n (0, r.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + t);\n }\n return deflateSyncUncompressed(t);\n }(u),\n b = t.length + 36 + g.length + m.length,\n v = new Uint8Array(b);\n let y = 0;\n v.set(t, y);\n y += t.length;\n writePngChunk(\"IHDR\", g, v, y);\n y += 12 + g.length;\n writePngChunk(\"IDATA\", m, v, y);\n y += 12 + m.length;\n writePngChunk(\"IEND\", new Uint8Array(0), v, y);\n return createObjectURL(v, \"image/png\", i);\n }\n return function convertImgDataToPng(t, e, n) {\n return encode(t, void 0 === t.kind ? r.ImageKind.GRAYSCALE_1BPP : t.kind, e, n);\n };\n }();\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = a;\n this.fontSize = 0;\n this.textMatrix = r.IDENTITY_MATRIX;\n this.fontMatrix = r.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = r.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = o;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n clone() {\n return Object.create(this);\n }\n setCurrentPoint(t, e) {\n this.x = t;\n this.y = e;\n }\n }\n function pf(t) {\n if (Number.isInteger(t)) return t.toString();\n const e = t.toFixed(10);\n let n = e.length - 1;\n if (\"0\" !== e[n]) return e;\n do {\n n--;\n } while (\"0\" === e[n]);\n return e.substring(0, \".\" === e[n] ? n : n + 1);\n }\n function pm(t) {\n if (0 === t[4] && 0 === t[5]) {\n if (0 === t[1] && 0 === t[2]) return 1 === t[0] && 1 === t[3] ? \"\" : \"scale(\".concat(pf(t[0]), \" \").concat(pf(t[3]), \")\");\n if (t[0] === t[3] && t[1] === -t[2]) {\n return \"rotate(\".concat(pf(180 * Math.acos(t[0]) / Math.PI), \")\");\n }\n } else if (1 === t[0] && 0 === t[1] && 0 === t[2] && 1 === t[3]) return \"translate(\".concat(pf(t[4]), \" \").concat(pf(t[5]), \")\");\n return \"matrix(\".concat(pf(t[0]), \" \").concat(pf(t[1]), \" \").concat(pf(t[2]), \" \").concat(pf(t[3]), \" \").concat(pf(t[4]), \" \").concat(pf(t[5]), \")\");\n }\n let d = 0,\n u = 0,\n p = 0;\n e.SVGGraphics = class SVGGraphics {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n (0, i.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new i.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = r.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = t;\n this.objs = e;\n this.pendingClip = null;\n this.pendingEOFill = !1;\n this.embedFonts = !1;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!n;\n this._operatorIdMapping = [];\n for (const t in r.OPS) this._operatorIdMapping[r.OPS[t]] = t;\n }\n getObject(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return \"string\" == typeof t ? t.startsWith(\"g_\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\n }\n save() {\n this.transformStack.push(this.transformMatrix);\n const t = this.current;\n this.extraStack.push(t);\n this.current = t.clone();\n }\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n group(t) {\n this.save();\n this.executeOpTree(t);\n this.restore();\n }\n loadDependencies(t) {\n const e = t.fnArray,\n n = t.argsArray;\n for (let t = 0, i = e.length; t < i; t++) if (e[t] === r.OPS.dependency) for (const e of n[t]) {\n const t = e.startsWith(\"g_\") ? this.commonObjs : this.objs,\n n = new Promise(n => {\n t.get(e, n);\n });\n this.current.dependencies.push(n);\n }\n return Promise.all(this.current.dependencies);\n }\n transform(t, e, n, i, s, a) {\n const o = [t, e, n, i, s, a];\n this.transformMatrix = r.Util.transform(this.transformMatrix, o);\n this.tgrp = null;\n }\n getSVG(t, e) {\n this.viewport = e;\n const n = this._initialize(e);\n return this.loadDependencies(t).then(() => {\n this.transformMatrix = r.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(t));\n return n;\n });\n }\n convertOpList(t) {\n const e = this._operatorIdMapping,\n n = t.argsArray,\n i = t.fnArray,\n r = [];\n for (let t = 0, s = i.length; t < s; t++) {\n const s = i[t];\n r.push({\n fnId: s,\n fn: e[s],\n args: n[t]\n });\n }\n return function opListToTree(t) {\n let e = [];\n const n = [];\n for (const i of t) if (\"save\" !== i.fn) \"restore\" === i.fn ? e = n.pop() : e.push(i);else {\n e.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n n.push(e);\n e = e.at(-1).items;\n }\n return e;\n }(r);\n }\n executeOpTree(t) {\n for (const e of t) {\n const t = e.fn,\n n = e.fnId,\n i = e.args;\n switch (0 | n) {\n case r.OPS.beginText:\n this.beginText();\n break;\n case r.OPS.dependency:\n break;\n case r.OPS.setLeading:\n this.setLeading(i);\n break;\n case r.OPS.setLeadingMoveText:\n this.setLeadingMoveText(i[0], i[1]);\n break;\n case r.OPS.setFont:\n this.setFont(i);\n break;\n case r.OPS.showText:\n case r.OPS.showSpacedText:\n this.showText(i[0]);\n break;\n case r.OPS.endText:\n this.endText();\n break;\n case r.OPS.moveText:\n this.moveText(i[0], i[1]);\n break;\n case r.OPS.setCharSpacing:\n this.setCharSpacing(i[0]);\n break;\n case r.OPS.setWordSpacing:\n this.setWordSpacing(i[0]);\n break;\n case r.OPS.setHScale:\n this.setHScale(i[0]);\n break;\n case r.OPS.setTextMatrix:\n this.setTextMatrix(i[0], i[1], i[2], i[3], i[4], i[5]);\n break;\n case r.OPS.setTextRise:\n this.setTextRise(i[0]);\n break;\n case r.OPS.setTextRenderingMode:\n this.setTextRenderingMode(i[0]);\n break;\n case r.OPS.setLineWidth:\n this.setLineWidth(i[0]);\n break;\n case r.OPS.setLineJoin:\n this.setLineJoin(i[0]);\n break;\n case r.OPS.setLineCap:\n this.setLineCap(i[0]);\n break;\n case r.OPS.setMiterLimit:\n this.setMiterLimit(i[0]);\n break;\n case r.OPS.setFillRGBColor:\n this.setFillRGBColor(i[0], i[1], i[2]);\n break;\n case r.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(i[0], i[1], i[2]);\n break;\n case r.OPS.setStrokeColorN:\n this.setStrokeColorN(i);\n break;\n case r.OPS.setFillColorN:\n this.setFillColorN(i);\n break;\n case r.OPS.shadingFill:\n this.shadingFill(i[0]);\n break;\n case r.OPS.setDash:\n this.setDash(i[0], i[1]);\n break;\n case r.OPS.setRenderingIntent:\n this.setRenderingIntent(i[0]);\n break;\n case r.OPS.setFlatness:\n this.setFlatness(i[0]);\n break;\n case r.OPS.setGState:\n this.setGState(i[0]);\n break;\n case r.OPS.fill:\n this.fill();\n break;\n case r.OPS.eoFill:\n this.eoFill();\n break;\n case r.OPS.stroke:\n this.stroke();\n break;\n case r.OPS.fillStroke:\n this.fillStroke();\n break;\n case r.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case r.OPS.clip:\n this.clip(\"nonzero\");\n break;\n case r.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case r.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case r.OPS.paintImageXObject:\n this.paintImageXObject(i[0]);\n break;\n case r.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(i[0]);\n break;\n case r.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(i[0]);\n break;\n case r.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(i[0], i[1]);\n break;\n case r.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case r.OPS.closePath:\n this.closePath();\n break;\n case r.OPS.closeStroke:\n this.closeStroke();\n break;\n case r.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case r.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case r.OPS.nextLine:\n this.nextLine();\n break;\n case r.OPS.transform:\n this.transform(i[0], i[1], i[2], i[3], i[4], i[5]);\n break;\n case r.OPS.constructPath:\n this.constructPath(i[0], i[1]);\n break;\n case r.OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(e.items);\n break;\n default:\n (0, r.warn)(\"Unimplemented operator \".concat(t));\n }\n }\n }\n setWordSpacing(t) {\n this.current.wordSpacing = t;\n }\n setCharSpacing(t) {\n this.current.charSpacing = t;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n setTextMatrix(t, e, n, i, r, s) {\n const a = this.current;\n a.textMatrix = a.lineMatrix = [t, e, n, i, r, s];\n a.textMatrixScale = Math.hypot(t, e);\n a.x = a.lineX = 0;\n a.y = a.lineY = 0;\n a.xcoords = [];\n a.ycoords = [];\n a.tspan = this.svgFactory.createElement(\"svg:tspan\");\n a.tspan.setAttributeNS(null, \"font-family\", a.fontFamily);\n a.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(a.fontSize), \"px\"));\n a.tspan.setAttributeNS(null, \"y\", pf(-a.y));\n a.txtElement = this.svgFactory.createElement(\"svg:text\");\n a.txtElement.append(a.tspan);\n }\n beginText() {\n const t = this.current;\n t.x = t.lineX = 0;\n t.y = t.lineY = 0;\n t.textMatrix = r.IDENTITY_MATRIX;\n t.lineMatrix = r.IDENTITY_MATRIX;\n t.textMatrixScale = 1;\n t.tspan = this.svgFactory.createElement(\"svg:tspan\");\n t.txtElement = this.svgFactory.createElement(\"svg:text\");\n t.txtgrp = this.svgFactory.createElement(\"svg:g\");\n t.xcoords = [];\n t.ycoords = [];\n }\n moveText(t, e) {\n const n = this.current;\n n.x = n.lineX += t;\n n.y = n.lineY += e;\n n.xcoords = [];\n n.ycoords = [];\n n.tspan = this.svgFactory.createElement(\"svg:tspan\");\n n.tspan.setAttributeNS(null, \"font-family\", n.fontFamily);\n n.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(n.fontSize), \"px\"));\n n.tspan.setAttributeNS(null, \"y\", pf(-n.y));\n }\n showText(t) {\n const e = this.current,\n n = e.font,\n i = e.fontSize;\n if (0 === i) return;\n const l = e.fontSizeScale,\n c = e.charSpacing,\n h = e.wordSpacing,\n d = e.fontDirection,\n u = e.textHScale * d,\n p = n.vertical,\n f = p ? 1 : -1,\n g = n.defaultVMetrics,\n m = i * e.fontMatrix[0];\n let b = 0;\n for (const r of t) {\n if (null === r) {\n b += d * h;\n continue;\n }\n if (\"number\" == typeof r) {\n b += f * r * i / 1e3;\n continue;\n }\n const t = (r.isSpace ? h : 0) + c,\n s = r.fontChar;\n let a,\n o,\n u = r.width;\n if (p) {\n let t;\n const e = r.vmetric || g;\n t = r.vmetric ? e[1] : .5 * u;\n t = -t * m;\n const n = e[2] * m;\n u = e ? -e[0] : u;\n a = t / l;\n o = (b + n) / l;\n } else {\n a = b / l;\n o = 0;\n }\n if (r.isInFont || n.missingFile) {\n e.xcoords.push(e.x + a);\n p && e.ycoords.push(-e.y + o);\n e.tspan.textContent += s;\n }\n b += p ? u * m - t * d : u * m + t * d;\n }\n e.tspan.setAttributeNS(null, \"x\", e.xcoords.map(pf).join(\" \"));\n p ? e.tspan.setAttributeNS(null, \"y\", e.ycoords.map(pf).join(\" \")) : e.tspan.setAttributeNS(null, \"y\", pf(-e.y));\n p ? e.y -= b : e.x += b * u;\n e.tspan.setAttributeNS(null, \"font-family\", e.fontFamily);\n e.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(e.fontSize), \"px\"));\n e.fontStyle !== s && e.tspan.setAttributeNS(null, \"font-style\", e.fontStyle);\n e.fontWeight !== a && e.tspan.setAttributeNS(null, \"font-weight\", e.fontWeight);\n const v = e.textRenderingMode & r.TextRenderingMode.FILL_STROKE_MASK;\n if (v === r.TextRenderingMode.FILL || v === r.TextRenderingMode.FILL_STROKE) {\n e.fillColor !== o && e.tspan.setAttributeNS(null, \"fill\", e.fillColor);\n e.fillAlpha < 1 && e.tspan.setAttributeNS(null, \"fill-opacity\", e.fillAlpha);\n } else e.textRenderingMode === r.TextRenderingMode.ADD_TO_PATH ? e.tspan.setAttributeNS(null, \"fill\", \"transparent\") : e.tspan.setAttributeNS(null, \"fill\", \"none\");\n if (v === r.TextRenderingMode.STROKE || v === r.TextRenderingMode.FILL_STROKE) {\n const t = 1 / (e.textMatrixScale || 1);\n this._setStrokeAttributes(e.tspan, t);\n }\n let y = e.textMatrix;\n if (0 !== e.textRise) {\n y = y.slice();\n y[5] += e.textRise;\n }\n e.txtElement.setAttributeNS(null, \"transform\", \"\".concat(pm(y), \" scale(\").concat(pf(u), \", -1)\"));\n e.txtElement.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n e.txtElement.append(e.tspan);\n e.txtgrp.append(e.txtElement);\n this._ensureTransformGroup().append(e.txtElement);\n }\n setLeadingMoveText(t, e) {\n this.setLeading(-e);\n this.moveText(t, e);\n }\n addFontStyle(t) {\n if (!t.data) throw new Error('addFontStyle: No font data available, ensure that the \"fontExtraProperties\" API parameter is set.');\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n const e = createObjectURL(t.data, t.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += \"@font-face { font-family: \\\"\".concat(t.loadedName, \"\\\"; src: url(\").concat(e, \"); }\\n\");\n }\n setFont(t) {\n const e = this.current,\n n = this.commonObjs.get(t[0]);\n let i = t[1];\n e.font = n;\n if (this.embedFonts && !n.missingFile && !this.embeddedFonts[n.loadedName]) {\n this.addFontStyle(n);\n this.embeddedFonts[n.loadedName] = n;\n }\n e.fontMatrix = n.fontMatrix || r.FONT_IDENTITY_MATRIX;\n let s = \"normal\";\n n.black ? s = \"900\" : n.bold && (s = \"bold\");\n const a = n.italic ? \"italic\" : \"normal\";\n if (i < 0) {\n i = -i;\n e.fontDirection = -1;\n } else e.fontDirection = 1;\n e.fontSize = i;\n e.fontFamily = n.loadedName;\n e.fontWeight = s;\n e.fontStyle = a;\n e.tspan = this.svgFactory.createElement(\"svg:tspan\");\n e.tspan.setAttributeNS(null, \"y\", pf(-e.y));\n e.xcoords = [];\n e.ycoords = [];\n }\n endText() {\n var _t$txtElement;\n const t = this.current;\n if (t.textRenderingMode & r.TextRenderingMode.ADD_TO_PATH_FLAG && (_t$txtElement = t.txtElement) !== null && _t$txtElement !== void 0 && _t$txtElement.hasChildNodes()) {\n t.element = t.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n setLineWidth(t) {\n t > 0 && (this.current.lineWidth = t);\n }\n setLineCap(t) {\n this.current.lineCap = l[t];\n }\n setLineJoin(t) {\n this.current.lineJoin = c[t];\n }\n setMiterLimit(t) {\n this.current.miterLimit = t;\n }\n setStrokeAlpha(t) {\n this.current.strokeAlpha = t;\n }\n setStrokeRGBColor(t, e, n) {\n this.current.strokeColor = r.Util.makeHexColor(t, e, n);\n }\n setFillAlpha(t) {\n this.current.fillAlpha = t;\n }\n setFillRGBColor(t, e, n) {\n this.current.fillColor = r.Util.makeHexColor(t, e, n);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n setStrokeColorN(t) {\n this.current.strokeColor = this._makeColorN_Pattern(t);\n }\n setFillColorN(t) {\n this.current.fillColor = this._makeColorN_Pattern(t);\n }\n shadingFill(t) {\n const {\n width: e,\n height: n\n } = this.viewport,\n i = r.Util.inverseTransform(this.transformMatrix),\n [s, a, o, l] = r.Util.getAxialAlignedBoundingBox([0, 0, e, n], i),\n c = this.svgFactory.createElement(\"svg:rect\");\n c.setAttributeNS(null, \"x\", s);\n c.setAttributeNS(null, \"y\", a);\n c.setAttributeNS(null, \"width\", o - s);\n c.setAttributeNS(null, \"height\", l - a);\n c.setAttributeNS(null, \"fill\", this._makeShadingPattern(t));\n this.current.fillAlpha < 1 && c.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n this._ensureTransformGroup().append(c);\n }\n _makeColorN_Pattern(t) {\n return \"TilingPattern\" === t[0] ? this._makeTilingPattern(t) : this._makeShadingPattern(t);\n }\n _makeTilingPattern(t) {\n const e = t[1],\n n = t[2],\n i = t[3] || r.IDENTITY_MATRIX,\n [s, a, o, l] = t[4],\n c = t[5],\n h = t[6],\n d = t[7],\n u = \"shading\" + p++,\n [f, g, m, b] = r.Util.normalizeRect([...r.Util.applyTransform([s, a], i), ...r.Util.applyTransform([o, l], i)]),\n [v, y] = r.Util.singularValueDecompose2dScale(i),\n A = c * v,\n _ = h * y,\n S = this.svgFactory.createElement(\"svg:pattern\");\n S.setAttributeNS(null, \"id\", u);\n S.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n S.setAttributeNS(null, \"width\", A);\n S.setAttributeNS(null, \"height\", _);\n S.setAttributeNS(null, \"x\", \"\".concat(f));\n S.setAttributeNS(null, \"y\", \"\".concat(g));\n const E = this.svg,\n x = this.transformMatrix,\n w = this.current.fillColor,\n C = this.current.strokeColor,\n T = this.svgFactory.create(m - f, b - g);\n this.svg = T;\n this.transformMatrix = i;\n if (2 === d) {\n const t = r.Util.makeHexColor(...e);\n this.current.fillColor = t;\n this.current.strokeColor = t;\n }\n this.executeOpTree(this.convertOpList(n));\n this.svg = E;\n this.transformMatrix = x;\n this.current.fillColor = w;\n this.current.strokeColor = C;\n S.append(T.childNodes[0]);\n this.defs.append(S);\n return \"url(#\".concat(u, \")\");\n }\n _makeShadingPattern(t) {\n \"string\" == typeof t && (t = this.objs.get(t));\n switch (t[0]) {\n case \"RadialAxial\":\n const e = \"shading\" + p++,\n n = t[3];\n let i;\n switch (t[1]) {\n case \"axial\":\n const n = t[4],\n r = t[5];\n i = this.svgFactory.createElement(\"svg:linearGradient\");\n i.setAttributeNS(null, \"id\", e);\n i.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n i.setAttributeNS(null, \"x1\", n[0]);\n i.setAttributeNS(null, \"y1\", n[1]);\n i.setAttributeNS(null, \"x2\", r[0]);\n i.setAttributeNS(null, \"y2\", r[1]);\n break;\n case \"radial\":\n const s = t[4],\n a = t[5],\n o = t[6],\n l = t[7];\n i = this.svgFactory.createElement(\"svg:radialGradient\");\n i.setAttributeNS(null, \"id\", e);\n i.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n i.setAttributeNS(null, \"cx\", a[0]);\n i.setAttributeNS(null, \"cy\", a[1]);\n i.setAttributeNS(null, \"r\", l);\n i.setAttributeNS(null, \"fx\", s[0]);\n i.setAttributeNS(null, \"fy\", s[1]);\n i.setAttributeNS(null, \"fr\", o);\n break;\n default:\n throw new Error(\"Unknown RadialAxial type: \".concat(t[1]));\n }\n for (const t of n) {\n const e = this.svgFactory.createElement(\"svg:stop\");\n e.setAttributeNS(null, \"offset\", t[0]);\n e.setAttributeNS(null, \"stop-color\", t[1]);\n i.append(e);\n }\n this.defs.append(i);\n return \"url(#\".concat(e, \")\");\n case \"Mesh\":\n (0, r.warn)(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(\"Unknown IR type: \".concat(t[0]));\n }\n }\n setDash(t, e) {\n this.current.dashArray = t;\n this.current.dashPhase = e;\n }\n constructPath(t, e) {\n const n = this.current;\n let i = n.x,\n s = n.y,\n a = [],\n o = 0;\n for (const n of t) switch (0 | n) {\n case r.OPS.rectangle:\n i = e[o++];\n s = e[o++];\n const t = i + e[o++],\n n = s + e[o++];\n a.push(\"M\", pf(i), pf(s), \"L\", pf(t), pf(s), \"L\", pf(t), pf(n), \"L\", pf(i), pf(n), \"Z\");\n break;\n case r.OPS.moveTo:\n i = e[o++];\n s = e[o++];\n a.push(\"M\", pf(i), pf(s));\n break;\n case r.OPS.lineTo:\n i = e[o++];\n s = e[o++];\n a.push(\"L\", pf(i), pf(s));\n break;\n case r.OPS.curveTo:\n i = e[o + 4];\n s = e[o + 5];\n a.push(\"C\", pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]), pf(i), pf(s));\n o += 6;\n break;\n case r.OPS.curveTo2:\n a.push(\"C\", pf(i), pf(s), pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]));\n i = e[o + 2];\n s = e[o + 3];\n o += 4;\n break;\n case r.OPS.curveTo3:\n i = e[o + 2];\n s = e[o + 3];\n a.push(\"C\", pf(e[o]), pf(e[o + 1]), pf(i), pf(s), pf(i), pf(s));\n o += 4;\n break;\n case r.OPS.closePath:\n a.push(\"Z\");\n }\n a = a.join(\" \");\n if (n.path && t.length > 0 && t[0] !== r.OPS.rectangle && t[0] !== r.OPS.moveTo) a = n.path.getAttributeNS(null, \"d\") + a;else {\n n.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(n.path);\n }\n n.path.setAttributeNS(null, \"d\", a);\n n.path.setAttributeNS(null, \"fill\", \"none\");\n n.element = n.path;\n n.setCurrentPoint(i, s);\n }\n endPath() {\n const t = this.current;\n t.path = null;\n if (!this.pendingClip) return;\n if (!t.element) {\n this.pendingClip = null;\n return;\n }\n const e = \"clippath\" + d++,\n n = this.svgFactory.createElement(\"svg:clipPath\");\n n.setAttributeNS(null, \"id\", e);\n n.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const i = t.element.cloneNode(!0);\n \"evenodd\" === this.pendingClip ? i.setAttributeNS(null, \"clip-rule\", \"evenodd\") : i.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n this.pendingClip = null;\n n.append(i);\n this.defs.append(n);\n if (t.activeClipUrl) {\n t.clipGroup = null;\n for (const t of this.extraStack) t.clipGroup = null;\n n.setAttributeNS(null, \"clip-path\", t.activeClipUrl);\n }\n t.activeClipUrl = \"url(#\".concat(e, \")\");\n this.tgrp = null;\n }\n clip(t) {\n this.pendingClip = t;\n }\n closePath() {\n const t = this.current;\n if (t.path) {\n const e = \"\".concat(t.path.getAttributeNS(null, \"d\"), \"Z\");\n t.path.setAttributeNS(null, \"d\", e);\n }\n }\n setLeading(t) {\n this.current.leading = -t;\n }\n setTextRise(t) {\n this.current.textRise = t;\n }\n setTextRenderingMode(t) {\n this.current.textRenderingMode = t;\n }\n setHScale(t) {\n this.current.textHScale = t / 100;\n }\n setRenderingIntent(t) {}\n setFlatness(t) {}\n setGState(t) {\n for (const [e, n] of t) switch (e) {\n case \"LW\":\n this.setLineWidth(n);\n break;\n case \"LC\":\n this.setLineCap(n);\n break;\n case \"LJ\":\n this.setLineJoin(n);\n break;\n case \"ML\":\n this.setMiterLimit(n);\n break;\n case \"D\":\n this.setDash(n[0], n[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(n);\n break;\n case \"FL\":\n this.setFlatness(n);\n break;\n case \"Font\":\n this.setFont(n);\n break;\n case \"CA\":\n this.setStrokeAlpha(n);\n break;\n case \"ca\":\n this.setFillAlpha(n);\n break;\n default:\n (0, r.warn)(\"Unimplemented graphic state operator \".concat(e));\n }\n }\n fill() {\n const t = this.current;\n if (t.element) {\n t.element.setAttributeNS(null, \"fill\", t.fillColor);\n t.element.setAttributeNS(null, \"fill-opacity\", t.fillAlpha);\n this.endPath();\n }\n }\n stroke() {\n const t = this.current;\n if (t.element) {\n this._setStrokeAttributes(t.element);\n t.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n _setStrokeAttributes(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n const n = this.current;\n let i = n.dashArray;\n 1 !== e && i.length > 0 && (i = i.map(function (t) {\n return e * t;\n }));\n t.setAttributeNS(null, \"stroke\", n.strokeColor);\n t.setAttributeNS(null, \"stroke-opacity\", n.strokeAlpha);\n t.setAttributeNS(null, \"stroke-miterlimit\", pf(n.miterLimit));\n t.setAttributeNS(null, \"stroke-linecap\", n.lineCap);\n t.setAttributeNS(null, \"stroke-linejoin\", n.lineJoin);\n t.setAttributeNS(null, \"stroke-width\", pf(e * n.lineWidth) + \"px\");\n t.setAttributeNS(null, \"stroke-dasharray\", i.map(pf).join(\" \"));\n t.setAttributeNS(null, \"stroke-dashoffset\", pf(e * n.dashPhase) + \"px\");\n }\n eoFill() {\n var _this$current$element;\n (_this$current$element = this.current.element) === null || _this$current$element === void 0 ? void 0 : _this$current$element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n fillStroke() {\n this.stroke();\n this.fill();\n }\n eoFillStroke() {\n var _this$current$element2;\n (_this$current$element2 = this.current.element) === null || _this$current$element2 === void 0 ? void 0 : _this$current$element2.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n paintSolidColorImageMask() {\n const t = this.svgFactory.createElement(\"svg:rect\");\n t.setAttributeNS(null, \"x\", \"0\");\n t.setAttributeNS(null, \"y\", \"0\");\n t.setAttributeNS(null, \"width\", \"1px\");\n t.setAttributeNS(null, \"height\", \"1px\");\n t.setAttributeNS(null, \"fill\", this.current.fillColor);\n this._ensureTransformGroup().append(t);\n }\n paintImageXObject(t) {\n const e = this.getObject(t);\n e ? this.paintInlineImageXObject(e) : (0, r.warn)(\"Dependent image with object ID \".concat(t, \" is not ready yet\"));\n }\n paintInlineImageXObject(t, e) {\n const n = t.width,\n i = t.height,\n r = h(t, this.forceDataSchema, !!e),\n s = this.svgFactory.createElement(\"svg:rect\");\n s.setAttributeNS(null, \"x\", \"0\");\n s.setAttributeNS(null, \"y\", \"0\");\n s.setAttributeNS(null, \"width\", pf(n));\n s.setAttributeNS(null, \"height\", pf(i));\n this.current.element = s;\n this.clip(\"nonzero\");\n const a = this.svgFactory.createElement(\"svg:image\");\n a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", r);\n a.setAttributeNS(null, \"x\", \"0\");\n a.setAttributeNS(null, \"y\", pf(-i));\n a.setAttributeNS(null, \"width\", pf(n) + \"px\");\n a.setAttributeNS(null, \"height\", pf(i) + \"px\");\n a.setAttributeNS(null, \"transform\", \"scale(\".concat(pf(1 / n), \" \").concat(pf(-1 / i), \")\"));\n e ? e.append(a) : this._ensureTransformGroup().append(a);\n }\n paintImageMaskXObject(t) {\n const e = this.getObject(t.data, t);\n if (e.bitmap) {\n (0, r.warn)(\"paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\");\n return;\n }\n const n = this.current,\n i = e.width,\n s = e.height,\n a = n.fillColor;\n n.maskId = \"mask\" + u++;\n const o = this.svgFactory.createElement(\"svg:mask\");\n o.setAttributeNS(null, \"id\", n.maskId);\n const l = this.svgFactory.createElement(\"svg:rect\");\n l.setAttributeNS(null, \"x\", \"0\");\n l.setAttributeNS(null, \"y\", \"0\");\n l.setAttributeNS(null, \"width\", pf(i));\n l.setAttributeNS(null, \"height\", pf(s));\n l.setAttributeNS(null, \"fill\", a);\n l.setAttributeNS(null, \"mask\", \"url(#\".concat(n.maskId, \")\"));\n this.defs.append(o);\n this._ensureTransformGroup().append(l);\n this.paintInlineImageXObject(e, o);\n }\n paintFormXObjectBegin(t, e) {\n Array.isArray(t) && 6 === t.length && this.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n if (e) {\n const t = e[2] - e[0],\n n = e[3] - e[1],\n i = this.svgFactory.createElement(\"svg:rect\");\n i.setAttributeNS(null, \"x\", e[0]);\n i.setAttributeNS(null, \"y\", e[1]);\n i.setAttributeNS(null, \"width\", pf(t));\n i.setAttributeNS(null, \"height\", pf(n));\n this.current.element = i;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n paintFormXObjectEnd() {}\n _initialize(t) {\n const e = this.svgFactory.create(t.width, t.height),\n n = this.svgFactory.createElement(\"svg:defs\");\n e.append(n);\n this.defs = n;\n const i = this.svgFactory.createElement(\"svg:g\");\n i.setAttributeNS(null, \"transform\", pm(t.transform));\n e.append(i);\n this.svg = i;\n return e;\n }\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const t = this.svgFactory.createElement(\"svg:g\");\n t.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(t);\n this.current.clipGroup = t;\n }\n return this.current.clipGroup;\n }\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n this.current.activeClipUrl ? this._ensureClipGroup().append(this.tgrp) : this.svg.append(this.tgrp);\n }\n return this.tgrp;\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(187),\n s = n(192);\n i({\n target: \"Array\",\n proto: !0\n }, {\n group: function group(t) {\n return r(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n });\n s(\"group\");\n }, (t, e, n) => {\n var i = n(99),\n r = n(14),\n s = n(13),\n a = n(40),\n o = n(18),\n l = n(64),\n c = n(188),\n h = n(108),\n d = Array,\n u = r([].push);\n t.exports = function (t, e, n, r) {\n for (var p, f, g, m = a(t), b = s(m), v = i(e, n), y = c(null), A = l(b), _ = 0; A > _; _++) {\n g = b[_];\n (f = o(v(g, _, m))) in y ? u(y[f], g) : y[f] = [g];\n }\n if (r && (p = r(m)) !== d) for (f in y) y[f] = h(p, y[f]);\n return y;\n };\n }, (t, e, n) => {\n var i,\n r = n(47),\n s = n(189),\n a = n(66),\n o = n(55),\n l = n(191),\n c = n(43),\n h = n(54),\n d = \"prototype\",\n u = \"script\",\n p = h(\"IE_PROTO\"),\n EmptyConstructor = function EmptyConstructor() {},\n scriptTag = function scriptTag(t) {\n return \"<\" + u + \">\" + t + \"\";\n },\n NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(t) {\n t.write(scriptTag(\"\"));\n t.close();\n var e = t.parentWindow.Object;\n t = null;\n return e;\n },\n _NullProtoObject = function NullProtoObject() {\n try {\n i = new ActiveXObject(\"htmlfile\");\n } catch (t) {}\n _NullProtoObject = \"undefined\" != typeof document ? document.domain && i ? NullProtoObjectViaActiveX(i) : function () {\n var t,\n e = c(\"iframe\"),\n n = \"java\" + u + \":\";\n e.style.display = \"none\";\n l.appendChild(e);\n e.src = String(n);\n (t = e.contentWindow.document).open();\n t.write(scriptTag(\"document.F=Object\"));\n t.close();\n return t.F;\n }() : NullProtoObjectViaActiveX(i);\n for (var t = a.length; t--;) delete _NullProtoObject[d][a[t]];\n return _NullProtoObject();\n };\n o[p] = !0;\n t.exports = Object.create || function create(t, e) {\n var n;\n if (null !== t) {\n EmptyConstructor[d] = r(t);\n n = new EmptyConstructor();\n EmptyConstructor[d] = null;\n n[p] = t;\n } else n = _NullProtoObject();\n return void 0 === e ? n : s.f(n, e);\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(46),\n s = n(45),\n a = n(47),\n o = n(12),\n l = n(190);\n e.f = i && !r ? Object.defineProperties : function defineProperties(t, e) {\n a(t);\n for (var n, i = o(e), r = l(e), c = r.length, h = 0; c > h;) s.f(t, n = r[h++], i[n]);\n return t;\n };\n }, (t, e, n) => {\n var i = n(59),\n r = n(66);\n t.exports = Object.keys || function keys(t) {\n return i(t, r);\n };\n }, (t, e, n) => {\n var i = n(24);\n t.exports = i(\"document\", \"documentElement\");\n }, (t, e, n) => {\n var i = n(34),\n r = n(188),\n s = n(45).f,\n a = i(\"unscopables\"),\n o = Array.prototype;\n null == o[a] && s(o, a, {\n configurable: !0,\n value: r(null)\n });\n t.exports = function (t) {\n o[a][t] = !0;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.XfaText = void 0;\n n(89);\n class XfaText {\n static textContent(t) {\n const e = [],\n n = {\n items: e,\n styles: Object.create(null)\n };\n !function walk(t) {\n if (!t) return;\n let n = null;\n const i = t.name;\n if (\"#text\" === i) n = t.value;else {\n var _t$attributes;\n if (!XfaText.shouldBuildText(i)) return;\n t !== null && t !== void 0 && (_t$attributes = t.attributes) !== null && _t$attributes !== void 0 && _t$attributes.textContent ? n = t.attributes.textContent : t.value && (n = t.value);\n }\n null !== n && e.push({\n str: n\n });\n if (t.children) for (const e of t.children) walk(e);\n }(t);\n return n;\n }\n static shouldBuildText(t) {\n return !(\"textarea\" === t || \"input\" === t || \"option\" === t || \"select\" === t);\n }\n }\n e.XfaText = XfaText;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.TextLayerRenderTask = void 0;\n e.renderTextLayer = function renderTextLayer(t) {\n if (!t.textContentSource && (t.textContent || t.textContentStream)) {\n (0, r.deprecated)(\"The TextLayerRender `textContent`/`textContentStream` parameters will be removed in the future, please use `textContentSource` instead.\");\n t.textContentSource = t.textContent || t.textContentStream;\n }\n const {\n container: e,\n viewport: n\n } = t,\n i = getComputedStyle(e),\n s = i.getPropertyValue(\"visibility\"),\n a = parseFloat(i.getPropertyValue(\"--scale-factor\"));\n \"visible\" === s && (!a || Math.abs(a - n.scale) > 1e-5) && console.error(\"The `--scale-factor` CSS-variable must be set, to the same value as `viewport.scale`, either on the `container`-element itself or higher up in the DOM.\");\n const o = new TextLayerRenderTask(t);\n o._render();\n return o;\n };\n e.updateTextLayer = function updateTextLayer(t) {\n let {\n container: e,\n viewport: n,\n textDivs: i,\n textDivProperties: s,\n isOffscreenCanvasSupported: a,\n mustRotate: o = !0,\n mustRescale: l = !0\n } = t;\n o && (0, r.setLayerDimensions)(e, {\n rotation: n.rotation\n });\n if (l) {\n const t = getCtx(0, a),\n e = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: n.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: t\n };\n for (const t of i) {\n e.properties = s.get(t);\n e.div = t;\n layout(e);\n }\n }\n };\n n(89);\n n(2);\n var i = n(1),\n r = n(167);\n const s = 30,\n a = .8,\n o = new Map();\n function getCtx(t, e) {\n let n;\n if (e && i.FeatureTest.isOffscreenCanvasSupported) n = new OffscreenCanvas(t, t).getContext(\"2d\", {\n alpha: !1\n });else {\n const e = document.createElement(\"canvas\");\n e.width = e.height = t;\n n = e.getContext(\"2d\", {\n alpha: !1\n });\n }\n return n;\n }\n function appendText(t, e, n) {\n const r = document.createElement(\"span\"),\n l = {\n angle: 0,\n canvasWidth: 0,\n hasText: \"\" !== e.str,\n hasEOL: e.hasEOL,\n fontSize: 0\n };\n t._textDivs.push(r);\n const c = i.Util.transform(t._transform, e.transform);\n let h = Math.atan2(c[1], c[0]);\n const d = n[e.fontName];\n d.vertical && (h += Math.PI / 2);\n const u = Math.hypot(c[2], c[3]),\n p = u * function getAscent(t, e) {\n const n = o.get(t);\n if (n) return n;\n const i = getCtx(s, e);\n i.font = \"\".concat(s, \"px \").concat(t);\n const r = i.measureText(\"\");\n let l = r.fontBoundingBoxAscent,\n c = Math.abs(r.fontBoundingBoxDescent);\n if (l) {\n const e = l / (l + c);\n o.set(t, e);\n i.canvas.width = i.canvas.height = 0;\n return e;\n }\n i.strokeStyle = \"red\";\n i.clearRect(0, 0, s, s);\n i.strokeText(\"g\", 0, 0);\n let h = i.getImageData(0, 0, s, s).data;\n c = 0;\n for (let t = h.length - 1 - 3; t >= 0; t -= 4) if (h[t] > 0) {\n c = Math.ceil(t / 4 / s);\n break;\n }\n i.clearRect(0, 0, s, s);\n i.strokeText(\"A\", 0, s);\n h = i.getImageData(0, 0, s, s).data;\n l = 0;\n for (let t = 0, e = h.length; t < e; t += 4) if (h[t] > 0) {\n l = s - Math.floor(t / 4 / s);\n break;\n }\n i.canvas.width = i.canvas.height = 0;\n if (l) {\n const e = l / (l + c);\n o.set(t, e);\n return e;\n }\n o.set(t, a);\n return a;\n }(d.fontFamily, t._isOffscreenCanvasSupported);\n let f, g;\n if (0 === h) {\n f = c[4];\n g = c[5] - p;\n } else {\n f = c[4] + p * Math.sin(h);\n g = c[5] - p * Math.cos(h);\n }\n const m = \"calc(var(--scale-factor)*\",\n b = r.style;\n if (t._container === t._rootContainer) {\n b.left = \"\".concat((100 * f / t._pageWidth).toFixed(2), \"%\");\n b.top = \"\".concat((100 * g / t._pageHeight).toFixed(2), \"%\");\n } else {\n b.left = \"\".concat(m).concat(f.toFixed(2), \"px)\");\n b.top = \"\".concat(m).concat(g.toFixed(2), \"px)\");\n }\n b.fontSize = \"\".concat(m).concat(u.toFixed(2), \"px)\");\n b.fontFamily = d.fontFamily;\n l.fontSize = u;\n r.setAttribute(\"role\", \"presentation\");\n r.textContent = e.str;\n r.dir = e.dir;\n t._fontInspectorEnabled && (r.dataset.fontName = e.fontName);\n 0 !== h && (l.angle = h * (180 / Math.PI));\n let v = !1;\n if (e.str.length > 1) v = !0;else if (\" \" !== e.str && e.transform[0] !== e.transform[3]) {\n const t = Math.abs(e.transform[0]),\n n = Math.abs(e.transform[3]);\n t !== n && Math.max(t, n) / Math.min(t, n) > 1.5 && (v = !0);\n }\n v && (l.canvasWidth = d.vertical ? e.height : e.width);\n t._textDivProperties.set(r, l);\n t._isReadableStream && t._layoutText(r);\n }\n function layout(t) {\n const {\n div: e,\n scale: n,\n properties: i,\n ctx: r,\n prevFontSize: s,\n prevFontFamily: a\n } = t,\n {\n style: o\n } = e;\n let l = \"\";\n if (0 !== i.canvasWidth && i.hasText) {\n const {\n fontFamily: c\n } = o,\n {\n canvasWidth: h,\n fontSize: d\n } = i;\n if (s !== d || a !== c) {\n r.font = \"\".concat(d * n, \"px \").concat(c);\n t.prevFontSize = d;\n t.prevFontFamily = c;\n }\n const {\n width: u\n } = r.measureText(e.textContent);\n u > 0 && (l = \"scaleX(\".concat(h * n / u, \")\"));\n }\n 0 !== i.angle && (l = \"rotate(\".concat(i.angle, \"deg) \").concat(l));\n l.length > 0 && (o.transform = l);\n }\n class TextLayerRenderTask {\n constructor(t) {\n var _globalThis$FontInspe2;\n let {\n textContentSource: e,\n container: n,\n viewport: s,\n textDivs: a,\n textDivProperties: o,\n textContentItemsStr: l,\n isOffscreenCanvasSupported: c\n } = t;\n this._textContentSource = e;\n this._isReadableStream = e instanceof ReadableStream;\n this._container = this._rootContainer = n;\n this._textDivs = a || [];\n this._textContentItemsStr = l || [];\n this._isOffscreenCanvasSupported = c;\n this._fontInspectorEnabled = !!((_globalThis$FontInspe2 = globalThis.FontInspector) !== null && _globalThis$FontInspe2 !== void 0 && _globalThis$FontInspe2.enabled);\n this._reader = null;\n this._textDivProperties = o || new WeakMap();\n this._canceled = !1;\n this._capability = new i.PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: s.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, c)\n };\n const {\n pageWidth: h,\n pageHeight: d,\n pageX: u,\n pageY: p\n } = s.rawDims;\n this._transform = [1, 0, 0, -1, -u, p + d];\n this._pageWidth = h;\n this._pageHeight = d;\n (0, r.setLayerDimensions)(n, s);\n this._capability.promise.finally(() => {\n this._layoutTextParams = null;\n }).catch(() => {});\n }\n get promise() {\n return this._capability.promise;\n }\n cancel() {\n this._canceled = !0;\n if (this._reader) {\n this._reader.cancel(new i.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n this._reader = null;\n }\n this._capability.reject(new i.AbortException(\"TextLayer task cancelled.\"));\n }\n _processItems(t, e) {\n for (const n of t) if (void 0 !== n.str) {\n this._textContentItemsStr.push(n.str);\n appendText(this, n, e);\n } else if (\"beginMarkedContentProps\" === n.type || \"beginMarkedContent\" === n.type) {\n const t = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n null !== n.id && this._container.setAttribute(\"id\", \"\".concat(n.id));\n t.append(this._container);\n } else \"endMarkedContent\" === n.type && (this._container = this._container.parentNode);\n }\n _layoutText(t) {\n const e = this._layoutTextParams.properties = this._textDivProperties.get(t);\n this._layoutTextParams.div = t;\n layout(this._layoutTextParams);\n e.hasText && this._container.append(t);\n if (e.hasEOL) {\n const t = document.createElement(\"br\");\n t.setAttribute(\"role\", \"presentation\");\n this._container.append(t);\n }\n }\n _render() {\n const t = new i.PromiseCapability();\n let e = Object.create(null);\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(n => {\n let {\n value: i,\n done: r\n } = n;\n if (r) t.resolve();else {\n Object.assign(e, i.styles);\n this._processItems(i.items, e);\n pump();\n }\n }, t.reject);\n };\n this._reader = this._textContentSource.getReader();\n pump();\n } else {\n if (!this._textContentSource) throw new Error('No \"textContentSource\" parameter specified.');\n {\n const {\n items: e,\n styles: n\n } = this._textContentSource;\n this._processItems(e, n);\n t.resolve();\n }\n }\n t.promise.then(() => {\n e = null;\n !function render(t) {\n if (t._canceled) return;\n const e = t._textDivs,\n n = t._capability;\n if (e.length > 1e5) n.resolve();else {\n if (!t._isReadableStream) for (const n of e) t._layoutText(n);\n n.resolve();\n }\n }(this);\n }, this._capability.reject);\n }\n }\n e.TextLayerRenderTask = TextLayerRenderTask;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.AnnotationEditorLayer = void 0;\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n var i = n(1),\n r = n(163),\n s = n(164),\n a = n(196),\n o = n(201),\n l = n(167),\n c = n(202);\n var _re = /*#__PURE__*/new WeakMap();\n var _se = /*#__PURE__*/new WeakMap();\n var _ae = /*#__PURE__*/new WeakMap();\n var _oe = /*#__PURE__*/new WeakMap();\n var _le = /*#__PURE__*/new WeakMap();\n var _ce = /*#__PURE__*/new WeakMap();\n var _he = /*#__PURE__*/new WeakMap();\n var _de = /*#__PURE__*/new WeakMap();\n var _ue = /*#__PURE__*/new WeakMap();\n var _pe = /*#__PURE__*/new WeakMap();\n var _me = /*#__PURE__*/new WeakSet();\n var _be = /*#__PURE__*/new WeakSet();\n var _ge = /*#__PURE__*/new WeakSet();\n var _fe = /*#__PURE__*/new WeakSet();\n class AnnotationEditorLayer {\n constructor(_t13) {\n _classPrivateMethodInitSpec(this, _fe);\n _classPrivateMethodInitSpec(this, _ge);\n _classPrivateMethodInitSpec(this, _be);\n _classPrivateMethodInitSpec(this, _me);\n _classPrivateFieldInitSpec(this, _re, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _se, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _ae, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _oe, {\n writable: true,\n value: this.pointerup.bind(this)\n });\n _classPrivateFieldInitSpec(this, _le, {\n writable: true,\n value: this.pointerdown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ce, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _he, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _de, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _ue, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _pe, {\n writable: true,\n value: void 0\n });\n let {\n uiManager: _e11,\n pageIndex: _n7,\n div: _i4,\n accessibilityManager: _r4,\n annotationLayer: s,\n viewport: l,\n l10n: h\n } = _t13;\n const d = [a.FreeTextEditor, o.InkEditor, c.StampEditor];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = !0;\n for (const t of d) t.initialize(h);\n }\n _e11.registerEditorTypes(d);\n _classPrivateFieldSet(this, _pe, _e11);\n this.pageIndex = _n7;\n this.div = _i4;\n _classPrivateFieldSet(this, _re, _r4);\n _classPrivateFieldSet(this, _ae, s);\n this.viewport = l;\n _classPrivateFieldGet(this, _pe).addLayer(this);\n }\n get isEmpty() {\n return 0 === _classPrivateFieldGet(this, _ce).size;\n }\n updateToolbar(t) {\n _classPrivateFieldGet(this, _pe).updateToolbar(t);\n }\n updateMode() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _classPrivateFieldGet(this, _pe).getMode();\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\n if (t === i.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(!1);\n this.disableClick();\n } else this.enableClick();\n _classPrivateFieldGet(this, _pe).unselectAll();\n if (t !== i.AnnotationEditorType.NONE) {\n this.div.classList.toggle(\"freeTextEditing\", t === i.AnnotationEditorType.FREETEXT);\n this.div.classList.toggle(\"inkEditing\", t === i.AnnotationEditorType.INK);\n this.div.classList.toggle(\"stampEditing\", t === i.AnnotationEditorType.STAMP);\n this.div.hidden = !1;\n }\n }\n addInkEditorIfNeeded(t) {\n if (!t && _classPrivateFieldGet(this, _pe).getMode() !== i.AnnotationEditorType.INK) return;\n if (!t) for (const t of _classPrivateFieldGet(this, _ce).values()) if (t.isEmpty()) {\n t.setInBackground();\n return;\n }\n _classPrivateMethodGet(this, _ge, _ge2).call(this, {\n offsetX: 0,\n offsetY: 0\n }).setInBackground();\n }\n setEditingState(t) {\n _classPrivateFieldGet(this, _pe).setEditingState(t);\n }\n addCommands(t) {\n _classPrivateFieldGet(this, _pe).addCommands(t);\n }\n enable() {\n this.div.style.pointerEvents = \"auto\";\n const t = new Set();\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\n e.enableEditing();\n e.annotationElementId && t.add(e.annotationElementId);\n }\n if (!_classPrivateFieldGet(this, _ae)) return;\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\n for (const n of e) {\n n.hide();\n if (_classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(n.data.id)) continue;\n if (t.has(n.data.id)) continue;\n const e = this.deserialize(n);\n if (e) {\n this.addOrRebuild(e);\n e.enableEditing();\n }\n }\n }\n disable() {\n _classPrivateFieldSet(this, _ue, !0);\n this.div.style.pointerEvents = \"none\";\n const t = new Set();\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\n e.disableEditing();\n if (e.annotationElementId && null === e.serialize()) {\n var _this$getEditableAnno;\n (_this$getEditableAnno = this.getEditableAnnotation(e.annotationElementId)) === null || _this$getEditableAnno === void 0 ? void 0 : _this$getEditableAnno.show();\n e.remove();\n } else t.add(e.annotationElementId);\n }\n if (_classPrivateFieldGet(this, _ae)) {\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\n for (const n of e) {\n const {\n id: e\n } = n.data;\n t.has(e) || _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) || n.show();\n }\n }\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\n this.isEmpty && (this.div.hidden = !0);\n _classPrivateFieldSet(this, _ue, !1);\n }\n getEditableAnnotation(t) {\n var _classPrivateFieldGet9;\n return ((_classPrivateFieldGet9 = _classPrivateFieldGet(this, _ae)) === null || _classPrivateFieldGet9 === void 0 ? void 0 : _classPrivateFieldGet9.getEditableAnnotation(t)) || null;\n }\n setActiveEditor(t) {\n _classPrivateFieldGet(this, _pe).getActive() !== t && _classPrivateFieldGet(this, _pe).setActiveEditor(t);\n }\n enableClick() {\n this.div.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _le));\n this.div.addEventListener(\"pointerup\", _classPrivateFieldGet(this, _oe));\n }\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _le));\n this.div.removeEventListener(\"pointerup\", _classPrivateFieldGet(this, _oe));\n }\n attach(t) {\n _classPrivateFieldGet(this, _ce).set(t.id, t);\n const {\n annotationElementId: e\n } = t;\n e && _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) && _classPrivateFieldGet(this, _pe).removeDeletedAnnotationElement(t);\n }\n detach(t) {\n var _classPrivateFieldGet10;\n _classPrivateFieldGet(this, _ce).delete(t.id);\n (_classPrivateFieldGet10 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet10 === void 0 ? void 0 : _classPrivateFieldGet10.removePointerInTextLayer(t.contentDiv);\n !_classPrivateFieldGet(this, _ue) && t.annotationElementId && _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t);\n }\n remove(t) {\n this.detach(t);\n _classPrivateFieldGet(this, _pe).removeEditor(t);\n t.div.style.display = \"none\";\n setTimeout(() => {\n t.div.style.display = \"\";\n t.div.remove();\n t.isAttachedToDOM = !1;\n document.activeElement === document.body && _classPrivateFieldGet(this, _pe).focusMainContainer();\n }, 0);\n _classPrivateFieldGet(this, _de) || this.addInkEditorIfNeeded(!1);\n }\n add(t) {\n _classPrivateMethodGet(this, _me, _me2).call(this, t);\n _classPrivateFieldGet(this, _pe).addEditor(t);\n this.attach(t);\n if (!t.isAttachedToDOM) {\n const e = t.render();\n this.div.append(e);\n t.isAttachedToDOM = !0;\n }\n this.moveEditorInDOM(t);\n t.onceAdded();\n _classPrivateFieldGet(this, _pe).addToAnnotationStorage(t);\n }\n moveEditorInDOM(t) {\n var _classPrivateFieldGet11;\n (_classPrivateFieldGet11 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet11 === void 0 ? void 0 : _classPrivateFieldGet11.moveElementInDOM(this.div, t.div, t.contentDiv, !0);\n }\n addOrRebuild(t) {\n t.needsToBeRebuilt() ? t.rebuild() : this.add(t);\n }\n addUndoableEditor(t) {\n this.addCommands({\n cmd: () => {\n this.addOrRebuild(t);\n },\n undo: () => {\n t.remove();\n },\n mustExec: !1\n });\n }\n getNextId() {\n return _classPrivateFieldGet(this, _pe).getId();\n }\n deserialize(t) {\n var _t$annotationType;\n switch ((_t$annotationType = t.annotationType) !== null && _t$annotationType !== void 0 ? _t$annotationType : t.annotationEditorType) {\n case i.AnnotationEditorType.FREETEXT:\n return a.FreeTextEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n case i.AnnotationEditorType.INK:\n return o.InkEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n case i.AnnotationEditorType.STAMP:\n return c.StampEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n }\n return null;\n }\n setSelected(t) {\n _classPrivateFieldGet(this, _pe).setSelected(t);\n }\n toggleSelected(t) {\n _classPrivateFieldGet(this, _pe).toggleSelected(t);\n }\n isSelected(t) {\n return _classPrivateFieldGet(this, _pe).isSelected(t);\n }\n unselect(t) {\n _classPrivateFieldGet(this, _pe).unselect(t);\n }\n pointerup(t) {\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (!(0 !== t.button || t.ctrlKey && e) && t.target === this.div && _classPrivateFieldGet(this, _he)) {\n _classPrivateFieldSet(this, _he, !1);\n _classPrivateFieldGet(this, _se) ? _classPrivateMethodGet(this, _ge, _ge2).call(this, t) : _classPrivateFieldSet(this, _se, !0);\n }\n }\n pointerdown(t) {\n if (_classPrivateFieldGet(this, _he)) {\n _classPrivateFieldSet(this, _he, !1);\n return;\n }\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (0 !== t.button || t.ctrlKey && e) return;\n if (t.target !== this.div) return;\n _classPrivateFieldSet(this, _he, !0);\n const n = _classPrivateFieldGet(this, _pe).getActive();\n _classPrivateFieldSet(this, _se, !n || n.isEmpty());\n }\n drop(t) {\n const e = t.dataTransfer.getData(\"text/plain\"),\n n = _classPrivateFieldGet(this, _pe).getEditor(e);\n if (!n) return;\n t.preventDefault();\n t.dataTransfer.dropEffect = \"move\";\n _classPrivateMethodGet(this, _me, _me2).call(this, n);\n const i = this.div.getBoundingClientRect(),\n r = t.clientX - i.x,\n s = t.clientY - i.y;\n n.translate(r - n.startX, s - n.startY);\n this.moveEditorInDOM(n);\n n.div.focus();\n }\n dragover(t) {\n t.preventDefault();\n }\n destroy() {\n var _classPrivateFieldGet12;\n ((_classPrivateFieldGet12 = _classPrivateFieldGet(this, _pe).getActive()) === null || _classPrivateFieldGet12 === void 0 ? void 0 : _classPrivateFieldGet12.parent) === this && _classPrivateFieldGet(this, _pe).setActiveEditor(null);\n for (const t of _classPrivateFieldGet(this, _ce).values()) {\n var _classPrivateFieldGet13;\n (_classPrivateFieldGet13 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet13 === void 0 ? void 0 : _classPrivateFieldGet13.removePointerInTextLayer(t.contentDiv);\n t.setParent(null);\n t.isAttachedToDOM = !1;\n t.div.remove();\n }\n this.div = null;\n _classPrivateFieldGet(this, _ce).clear();\n _classPrivateFieldGet(this, _pe).removeLayer(this);\n }\n render(t) {\n let {\n viewport: e\n } = t;\n this.viewport = e;\n (0, l.setLayerDimensions)(this.div, e);\n (0, s.bindEvents)(this, this.div, [\"dragover\", \"drop\"]);\n for (const t of _classPrivateFieldGet(this, _pe).getEditors(this.pageIndex)) this.add(t);\n this.updateMode();\n }\n update(t) {\n let {\n viewport: e\n } = t;\n _classPrivateFieldGet(this, _pe).commitOrRemove();\n this.viewport = e;\n (0, l.setLayerDimensions)(this.div, {\n rotation: e.rotation\n });\n this.updateMode();\n }\n get pageDimensions() {\n const {\n pageWidth: t,\n pageHeight: e\n } = this.viewport.rawDims;\n return [t, e];\n }\n }\n function _me2(t) {\n if (t.parent !== this) {\n var _t$parent;\n if (t.annotationElementId) {\n _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t.annotationElementId);\n r.AnnotationEditor.deleteAnnotationElement(t);\n t.annotationElementId = null;\n }\n this.attach(t);\n (_t$parent = t.parent) === null || _t$parent === void 0 ? void 0 : _t$parent.detach(t);\n t.setParent(this);\n if (t.div && t.isAttachedToDOM) {\n t.div.remove();\n this.div.append(t.div);\n }\n }\n }\n function _be2(t) {\n switch (_classPrivateFieldGet(this, _pe).getMode()) {\n case i.AnnotationEditorType.FREETEXT:\n return new a.FreeTextEditor(t);\n case i.AnnotationEditorType.INK:\n return new o.InkEditor(t);\n case i.AnnotationEditorType.STAMP:\n return new c.StampEditor(t);\n }\n return null;\n }\n function _ge2(t) {\n const e = this.getNextId(),\n n = _classPrivateMethodGet(this, _be, _be2).call(this, {\n parent: this,\n id: e,\n x: t.offsetX,\n y: t.offsetY,\n uiManager: _classPrivateFieldGet(this, _pe)\n });\n n && this.add(n);\n return n;\n }\n function _fe2() {\n _classPrivateFieldSet(this, _de, !0);\n for (const t of _classPrivateFieldGet(this, _ce).values()) t.isEmpty() && t.remove();\n _classPrivateFieldSet(this, _de, !1);\n }\n _defineProperty(AnnotationEditorLayer, \"_initialized\", !1);\n e.AnnotationEditorLayer = AnnotationEditorLayer;\n }, (t, e, n) => {\n \"use strict\";\n\n var _class30;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.FreeTextEditor = void 0;\n n(89);\n var i = n(1),\n r = n(164),\n s = n(163),\n a = n(197);\n var _ve = /*#__PURE__*/new WeakMap();\n var _ye = /*#__PURE__*/new WeakMap();\n var _Ae = /*#__PURE__*/new WeakMap();\n var _e12 = /*#__PURE__*/new WeakMap();\n var _Se = /*#__PURE__*/new WeakMap();\n var _Ee = /*#__PURE__*/new WeakMap();\n var _xe = /*#__PURE__*/new WeakMap();\n var _we = /*#__PURE__*/new WeakMap();\n var _Ce = /*#__PURE__*/new WeakMap();\n var _Te = /*#__PURE__*/new WeakSet();\n var _Pe = /*#__PURE__*/new WeakSet();\n var _Re = /*#__PURE__*/new WeakSet();\n var _ke = /*#__PURE__*/new WeakSet();\n var _Fe = /*#__PURE__*/new WeakSet();\n var _Ie = /*#__PURE__*/new WeakSet();\n var _Me = /*#__PURE__*/new WeakSet();\n class FreeTextEditor extends s.AnnotationEditor {\n static get _keyboardManager() {\n const t = FreeTextEditor.prototype,\n arrowChecker = t => t.isEmpty(),\n e = r.AnnotationEditorUIManager.TRANSLATE_SMALL,\n n = r.AnnotationEditorUIManager.TRANSLATE_BIG;\n return (0, i.shadow)(this, \"_keyboardManager\", new r.KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], t.commitOrRemove, {\n bubbles: !0\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], t.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], t._translateEmpty, {\n args: [-e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], t._translateEmpty, {\n args: [-n, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], t._translateEmpty, {\n args: [e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], t._translateEmpty, {\n args: [n, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], t._translateEmpty, {\n args: [0, -e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], t._translateEmpty, {\n args: [0, -n],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], t._translateEmpty, {\n args: [0, e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], t._translateEmpty, {\n args: [0, n],\n checker: arrowChecker\n }]]));\n }\n constructor(_t14) {\n super(_objectSpread(_objectSpread({}, _t14), {}, {\n name: \"freeTextEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Me);\n _classPrivateMethodInitSpec(this, _Ie);\n _classPrivateMethodInitSpec(this, _Fe);\n _classPrivateMethodInitSpec(this, _ke);\n _classPrivateMethodInitSpec(this, _Re);\n _classPrivateMethodInitSpec(this, _Pe);\n _classPrivateMethodInitSpec(this, _Te);\n _classPrivateFieldInitSpec(this, _ve, {\n writable: true,\n value: this.editorDivBlur.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ye, {\n writable: true,\n value: this.editorDivFocus.bind(this)\n });\n _classPrivateFieldInitSpec(this, _Ae, {\n writable: true,\n value: this.editorDivInput.bind(this)\n });\n _classPrivateFieldInitSpec(this, _e12, {\n writable: true,\n value: this.editorDivKeydown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _Se, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ee, {\n writable: true,\n value: \"\"\n });\n _classPrivateFieldInitSpec(this, _xe, {\n writable: true,\n value: \"\".concat(this.id, \"-editor\")\n });\n _classPrivateFieldInitSpec(this, _we, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ce, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _Se, _t14.color || FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor);\n _classPrivateFieldSet(this, _we, _t14.fontSize || FreeTextEditor._defaultFontSize);\n }\n static initialize(t) {\n this._l10nPromise = new Map([\"free_text2_default_content\", \"editor_free_text2_aria_label\"].map(e => [e, t.get(e)]));\n const e = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(e.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = e;\n break;\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = e;\n }\n }\n updateParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\n _classPrivateMethodGet(this, _Te, _Te2).call(this, e);\n break;\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\n _classPrivateMethodGet(this, _Pe, _Pe2).call(this, e);\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [i.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, _classPrivateFieldGet(this, _we)], [i.AnnotationEditorParamsType.FREETEXT_COLOR, _classPrivateFieldGet(this, _Se)]];\n }\n _translateEmpty(t, e) {\n this._uiManager.translateSelectedEditors(t, e, !0);\n }\n getInitialTranslation() {\n const t = this.parentScale;\n return [-FreeTextEditor._internalPadding * t, -(FreeTextEditor._internalPadding + _classPrivateFieldGet(this, _we)) * t];\n }\n rebuild() {\n super.rebuild();\n null !== this.div && (this.isAttachedToDOM || this.parent.add(this));\n }\n enableEditMode() {\n if (!this.isInEditMode()) {\n this.parent.setEditingState(!1);\n this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = !0;\n this.div.draggable = !1;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", _classPrivateFieldGet(this, _e12));\n this.editorDiv.addEventListener(\"focus\", _classPrivateFieldGet(this, _ye));\n this.editorDiv.addEventListener(\"blur\", _classPrivateFieldGet(this, _ve));\n this.editorDiv.addEventListener(\"input\", _classPrivateFieldGet(this, _Ae));\n }\n }\n disableEditMode() {\n if (this.isInEditMode()) {\n this.parent.setEditingState(!0);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = !1;\n this.div.setAttribute(\"aria-activedescendant\", _classPrivateFieldGet(this, _xe));\n this.div.draggable = !0;\n this.editorDiv.removeEventListener(\"keydown\", _classPrivateFieldGet(this, _e12));\n this.editorDiv.removeEventListener(\"focus\", _classPrivateFieldGet(this, _ye));\n this.editorDiv.removeEventListener(\"blur\", _classPrivateFieldGet(this, _ve));\n this.editorDiv.removeEventListener(\"input\", _classPrivateFieldGet(this, _Ae));\n this.div.focus({\n preventScroll: !0\n });\n this.isEditing = !1;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n }\n focusin(t) {\n super.focusin(t);\n t.target !== this.editorDiv && this.editorDiv.focus();\n }\n onceAdded() {\n if (this.width) _classPrivateMethodGet(this, _Me, _Me2).call(this);else {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n isEmpty() {\n return !this.editorDiv || \"\" === this.editorDiv.innerText.trim();\n }\n remove() {\n this.isEditing = !1;\n if (this.parent) {\n this.parent.setEditingState(!0);\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n super.remove();\n }\n commit() {\n if (!this.isInEditMode()) return;\n super.commit();\n this.disableEditMode();\n const t = _classPrivateFieldGet(this, _Ee),\n e = _classPrivateFieldSet(this, _Ee, _classPrivateMethodGet(this, _Re, _Re2).call(this).trimEnd());\n if (t === e) return;\n const setText = t => {\n _classPrivateFieldSet(this, _Ee, t);\n if (t) {\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\n this.rebuild();\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n } else this.remove();\n };\n this.addCommands({\n cmd: () => {\n setText(e);\n },\n undo: () => {\n setText(t);\n },\n mustExec: !1\n });\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(t) {\n this.enterInEditMode();\n }\n keydown(t) {\n t.target === this.div && \"Enter\" === t.key && this.enterInEditMode();\n }\n editorDivKeydown(t) {\n FreeTextEditor._keyboardManager.exec(this, t);\n }\n editorDivFocus(t) {\n this.isEditing = !0;\n }\n editorDivBlur(t) {\n this.isEditing = !1;\n }\n editorDivInput(t) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", !0);\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", _classPrivateFieldGet(this, _xe));\n this.enableEditing();\n FreeTextEditor._l10nPromise.get(\"editor_free_text2_aria_label\").then(t => {\n var _this$editorDiv;\n return (_this$editorDiv = this.editorDiv) === null || _this$editorDiv === void 0 ? void 0 : _this$editorDiv.setAttribute(\"aria-label\", t);\n });\n FreeTextEditor._l10nPromise.get(\"free_text2_default_content\").then(t => {\n var _this$editorDiv2;\n return (_this$editorDiv2 = this.editorDiv) === null || _this$editorDiv2 === void 0 ? void 0 : _this$editorDiv2.setAttribute(\"default-content\", t);\n });\n this.editorDiv.contentEditable = !0;\n const {\n style: n\n } = this.editorDiv;\n n.fontSize = \"calc(\".concat(_classPrivateFieldGet(this, _we), \"px * var(--scale-factor))\");\n n.color = _classPrivateFieldGet(this, _Se);\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0, r.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [n, i] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position: r\n } = _classPrivateFieldGet(this, _Ce);\n let [s, a] = this.getInitialTranslation();\n [s, a] = this.pageTranslationToScreen(s, a);\n const [o, l] = this.pageDimensions,\n [c, h] = this.pageTranslation;\n let d, u;\n switch (this.rotation) {\n case 0:\n d = t + (r[0] - c) / o;\n u = e + this.height - (r[1] - h) / l;\n break;\n case 90:\n d = t + (r[0] - c) / o;\n u = e - (r[1] - h) / l;\n [s, a] = [a, -s];\n break;\n case 180:\n d = t - this.width + (r[0] - c) / o;\n u = e - (r[1] - h) / l;\n [s, a] = [-s, -a];\n break;\n case 270:\n d = t + (r[0] - c - this.height * l) / o;\n u = e + (r[1] - h - this.width * o) / l;\n [s, a] = [-a, s];\n }\n this.setAt(d * n, u * i, s, a);\n } else this.setAt(t * n, e * i, this.width * n, this.height * i);\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\n this.div.draggable = !0;\n this.editorDiv.contentEditable = !1;\n } else {\n this.div.draggable = !1;\n this.editorDiv.contentEditable = !0;\n }\n return this.div;\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(t, e, n) {\n let r = null;\n if (t instanceof a.FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize: e,\n fontColor: n\n },\n rect: s,\n rotation: a,\n id: o\n },\n textContent: l,\n textPosition: c,\n parent: {\n page: {\n pageNumber: h\n }\n }\n } = t;\n if (!l || 0 === l.length) return null;\n r = t = {\n annotationType: i.AnnotationEditorType.FREETEXT,\n color: Array.from(n),\n fontSize: e,\n value: l.join(\"\\n\"),\n position: c,\n pageIndex: h - 1,\n rect: s,\n rotation: a,\n id: o,\n deleted: !1\n };\n }\n const s = super.deserialize(t, e, n);\n _classPrivateFieldSet(s, _we, t.fontSize);\n _classPrivateFieldSet(s, _Se, i.Util.makeHexColor(...t.color));\n _classPrivateFieldSet(s, _Ee, t.value);\n s.annotationElementId = t.id || null;\n _classPrivateFieldSet(s, _Ce, r);\n return s;\n }\n serialize() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.isEmpty()) return null;\n if (this.deleted) return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: !0\n };\n const e = FreeTextEditor._internalPadding * this.parentScale,\n n = this.getRect(e, e),\n r = s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : _classPrivateFieldGet(this, _Se)),\n a = {\n annotationType: i.AnnotationEditorType.FREETEXT,\n color: r,\n fontSize: _classPrivateFieldGet(this, _we),\n value: _classPrivateFieldGet(this, _Ee),\n pageIndex: this.pageIndex,\n rect: n,\n rotation: this.rotation\n };\n if (t) return a;\n if (this.annotationElementId && !_classPrivateMethodGet(this, _Ie, _Ie2).call(this, a)) return null;\n a.id = this.annotationElementId;\n return a;\n }\n }\n _class30 = FreeTextEditor;\n function _Te2(t) {\n const setFontsize = t => {\n this.editorDiv.style.fontSize = \"calc(\".concat(t, \"px * var(--scale-factor))\");\n this.translate(0, -(t - _classPrivateFieldGet(this, _we)) * this.parentScale);\n _classPrivateFieldSet(this, _we, t);\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n },\n e = _classPrivateFieldGet(this, _we);\n this.addCommands({\n cmd: () => {\n setFontsize(t);\n },\n undo: () => {\n setFontsize(e);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Pe2(t) {\n const e = _classPrivateFieldGet(this, _Se);\n this.addCommands({\n cmd: () => {\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = t);\n },\n undo: () => {\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = e);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Re2() {\n const t = this.editorDiv.getElementsByTagName(\"div\");\n if (0 === t.length) return this.editorDiv.innerText;\n const e = [];\n for (const n of t) e.push(n.innerText.replace(/\\r\\n?|\\n/, \"\"));\n return e.join(\"\\n\");\n }\n function _ke2() {\n const [t, e] = this.parentDimensions;\n let n;\n if (this.isAttachedToDOM) n = this.div.getBoundingClientRect();else {\n const {\n currentLayer: t,\n div: e\n } = this,\n i = e.style.display;\n e.style.display = \"hidden\";\n t.div.append(this.div);\n n = e.getBoundingClientRect();\n e.remove();\n e.style.display = i;\n }\n if (this.rotation % 180 == this.parentRotation % 180) {\n this.width = n.width / t;\n this.height = n.height / e;\n } else {\n this.width = n.height / t;\n this.height = n.width / e;\n }\n this.fixAndSetPosition();\n }\n function _Fe2() {\n this.editorDiv.replaceChildren();\n if (_classPrivateFieldGet(this, _Ee)) for (const t of _classPrivateFieldGet(this, _Ee).split(\"\\n\")) {\n const e = document.createElement(\"div\");\n e.append(t ? document.createTextNode(t) : document.createElement(\"br\"));\n this.editorDiv.append(e);\n }\n }\n function _Ie2(t) {\n const {\n value: e,\n fontSize: n,\n color: i,\n rect: r,\n pageIndex: s\n } = _classPrivateFieldGet(this, _Ce);\n return t.value !== e || t.fontSize !== n || t.rect.some((t, e) => Math.abs(t - r[e]) >= 1) || t.color.some((t, e) => t !== i[e]) || t.pageIndex !== s;\n }\n function _Me2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (!this.annotationElementId) return;\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n if (!t && (0 === this.width || 0 === this.height)) {\n setTimeout(() => _classPrivateMethodGet(this, _Me, _Me2).call(this, !0), 0);\n return;\n }\n const e = _class30._internalPadding * this.parentScale;\n _classPrivateFieldGet(this, _Ce).rect = this.getRect(e, e);\n }\n _defineProperty(FreeTextEditor, \"_freeTextDefaultContent\", \"\");\n _defineProperty(FreeTextEditor, \"_l10nPromise\", void 0);\n _defineProperty(FreeTextEditor, \"_internalPadding\", 0);\n _defineProperty(FreeTextEditor, \"_defaultColor\", null);\n _defineProperty(FreeTextEditor, \"_defaultFontSize\", 10);\n _defineProperty(FreeTextEditor, \"_type\", \"freetext\");\n e.FreeTextEditor = FreeTextEditor;\n }, (t, e, n) => {\n \"use strict\";\n\n var _re2, _an, _on, _ln, _cn;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StampAnnotationElement = e.InkAnnotationElement = e.FreeTextAnnotationElement = e.AnnotationLayer = void 0;\n n(89);\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n var i = n(1),\n r = n(167),\n s = n(162),\n a = n(198),\n o = n(199),\n l = n(200);\n const c = 1e3,\n h = new WeakSet();\n function getRectDims(t) {\n return {\n width: t[2] - t[0],\n height: t[3] - t[1]\n };\n }\n class AnnotationElementFactory {\n static create(t) {\n switch (t.data.annotationType) {\n case i.AnnotationType.LINK:\n return new LinkAnnotationElement(t);\n case i.AnnotationType.TEXT:\n return new TextAnnotationElement(t);\n case i.AnnotationType.WIDGET:\n switch (t.data.fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(t);\n case \"Btn\":\n return t.data.radioButton ? new RadioButtonWidgetAnnotationElement(t) : t.data.checkBox ? new CheckboxWidgetAnnotationElement(t) : new PushButtonWidgetAnnotationElement(t);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(t);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(t);\n }\n return new WidgetAnnotationElement(t);\n case i.AnnotationType.POPUP:\n return new PopupAnnotationElement(t);\n case i.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(t);\n case i.AnnotationType.LINE:\n return new LineAnnotationElement(t);\n case i.AnnotationType.SQUARE:\n return new SquareAnnotationElement(t);\n case i.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(t);\n case i.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(t);\n case i.AnnotationType.CARET:\n return new CaretAnnotationElement(t);\n case i.AnnotationType.INK:\n return new InkAnnotationElement(t);\n case i.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(t);\n case i.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(t);\n case i.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(t);\n case i.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(t);\n case i.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(t);\n case i.AnnotationType.STAMP:\n return new StampAnnotationElement(t);\n case i.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(t);\n default:\n return new AnnotationElement(t);\n }\n }\n }\n var _De = /*#__PURE__*/new WeakMap();\n class AnnotationElement {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _De, {\n writable: true,\n value: !1\n });\n let {\n isRenderable: e = !1,\n ignoreBorder: n = !1,\n createQuadrilaterals: i = !1\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n this.isRenderable = e;\n this.data = t.data;\n this.layer = t.layer;\n this.linkService = t.linkService;\n this.downloadManager = t.downloadManager;\n this.imageResourcesPath = t.imageResourcesPath;\n this.renderForms = t.renderForms;\n this.svgFactory = t.svgFactory;\n this.annotationStorage = t.annotationStorage;\n this.enableScripting = t.enableScripting;\n this.hasJSActions = t.hasJSActions;\n this._fieldObjects = t.fieldObjects;\n this.parent = t.parent;\n e && (this.container = this._createContainer(n));\n i && this._createQuadrilaterals();\n }\n _createContainer(t) {\n const {\n data: e,\n parent: {\n page: n,\n viewport: r\n }\n } = this,\n s = document.createElement(\"section\");\n s.setAttribute(\"data-annotation-id\", e.id);\n s.style.zIndex = this.parent.zIndex++;\n this.data.popupRef && s.setAttribute(\"aria-haspopup\", \"dialog\");\n e.noRotate && s.classList.add(\"norotate\");\n const {\n pageWidth: a,\n pageHeight: o,\n pageX: l,\n pageY: c\n } = r.rawDims;\n if (!e.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation: t\n } = e;\n e.hasOwnCanvas || 0 === t || this.setRotation(t, s);\n return s;\n }\n const {\n width: h,\n height: d\n } = getRectDims(e.rect),\n u = i.Util.normalizeRect([e.rect[0], n.view[3] - e.rect[1] + n.view[1], e.rect[2], n.view[3] - e.rect[3] + n.view[1]]);\n if (!t && e.borderStyle.width > 0) {\n s.style.borderWidth = \"\".concat(e.borderStyle.width, \"px\");\n const t = e.borderStyle.horizontalCornerRadius,\n n = e.borderStyle.verticalCornerRadius;\n if (t > 0 || n > 0) {\n const e = \"calc(\".concat(t, \"px * var(--scale-factor)) / calc(\").concat(n, \"px * var(--scale-factor))\");\n s.style.borderRadius = e;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const t = \"calc(\".concat(h, \"px * var(--scale-factor)) / calc(\").concat(d, \"px * var(--scale-factor))\");\n s.style.borderRadius = t;\n }\n switch (e.borderStyle.style) {\n case i.AnnotationBorderStyleType.SOLID:\n s.style.borderStyle = \"solid\";\n break;\n case i.AnnotationBorderStyleType.DASHED:\n s.style.borderStyle = \"dashed\";\n break;\n case i.AnnotationBorderStyleType.BEVELED:\n (0, i.warn)(\"Unimplemented border style: beveled\");\n break;\n case i.AnnotationBorderStyleType.INSET:\n (0, i.warn)(\"Unimplemented border style: inset\");\n break;\n case i.AnnotationBorderStyleType.UNDERLINE:\n s.style.borderBottomStyle = \"solid\";\n }\n const r = e.borderColor || null;\n if (r) {\n _classPrivateFieldSet(this, _De, !0);\n s.style.borderColor = i.Util.makeHexColor(0 | r[0], 0 | r[1], 0 | r[2]);\n } else s.style.borderWidth = 0;\n }\n s.style.left = 100 * (u[0] - l) / a + \"%\";\n s.style.top = 100 * (u[1] - c) / o + \"%\";\n const {\n rotation: p\n } = e;\n if (e.hasOwnCanvas || 0 === p) {\n s.style.width = 100 * h / a + \"%\";\n s.style.height = 100 * d / o + \"%\";\n } else this.setRotation(p, s);\n return s;\n }\n setRotation(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.container;\n if (!this.data.rect) return;\n const {\n pageWidth: n,\n pageHeight: i\n } = this.parent.viewport.rawDims,\n {\n width: r,\n height: s\n } = getRectDims(this.data.rect);\n let a, o;\n if (t % 180 == 0) {\n a = 100 * r / n;\n o = 100 * s / i;\n } else {\n a = 100 * s / n;\n o = 100 * r / i;\n }\n e.style.width = \"\".concat(a, \"%\");\n e.style.height = \"\".concat(o, \"%\");\n e.setAttribute(\"data-main-rotation\", (360 - t) % 360);\n }\n get _commonActions() {\n const setColor = (t, e, n) => {\n const i = n.detail[t];\n n.target.style[e] = a.ColorConverters[\"\".concat(i[0], \"_HTML\")](i.slice(1));\n };\n return (0, i.shadow)(this, \"_commonActions\", {\n display: t => {\n const e = t.detail.display % 2 == 1;\n this.container.style.visibility = e ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: e,\n print: 0 === t.detail.display || 3 === t.detail.display\n });\n },\n print: t => {\n this.annotationStorage.setValue(this.data.id, {\n print: t.detail.print\n });\n },\n hidden: t => {\n this.container.style.visibility = t.detail.hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: t.detail.hidden\n });\n },\n focus: t => {\n setTimeout(() => t.target.focus({\n preventScroll: !1\n }), 0);\n },\n userName: t => {\n t.target.title = t.detail.userName;\n },\n readonly: t => {\n t.detail.readonly ? t.target.setAttribute(\"readonly\", \"\") : t.target.removeAttribute(\"readonly\");\n },\n required: t => {\n this._setRequired(t.target, t.detail.required);\n },\n bgColor: t => {\n setColor(\"bgColor\", \"backgroundColor\", t);\n },\n fillColor: t => {\n setColor(\"fillColor\", \"backgroundColor\", t);\n },\n fgColor: t => {\n setColor(\"fgColor\", \"color\", t);\n },\n textColor: t => {\n setColor(\"textColor\", \"color\", t);\n },\n borderColor: t => {\n setColor(\"borderColor\", \"borderColor\", t);\n },\n strokeColor: t => {\n setColor(\"strokeColor\", \"borderColor\", t);\n },\n rotation: t => {\n const e = t.detail.rotation;\n this.setRotation(e);\n this.annotationStorage.setValue(this.data.id, {\n rotation: e\n });\n }\n });\n }\n _dispatchEventFromSandbox(t, e) {\n const n = this._commonActions;\n for (const i of Object.keys(e.detail)) {\n const r = t[i] || n[i];\n r === null || r === void 0 ? void 0 : r(e);\n }\n }\n _setDefaultPropertiesFromJS(t) {\n if (!this.enableScripting) return;\n const e = this.annotationStorage.getRawValue(this.data.id);\n if (!e) return;\n const n = this._commonActions;\n for (const [i, r] of Object.entries(e)) {\n const s = n[i];\n if (s) {\n s({\n detail: {\n [i]: r\n },\n target: t\n });\n delete e[i];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) return;\n const {\n quadPoints: t\n } = this.data;\n if (!t) return;\n const [e, n, i, r] = this.data.rect;\n if (1 === t.length) {\n const [, {\n x: s,\n y: a\n }, {\n x: o,\n y: l\n }] = t[0];\n if (i === s && r === a && e === o && n === l) return;\n }\n const {\n style: s\n } = this.container;\n let a;\n if (_classPrivateFieldGet(this, _De)) {\n const {\n borderColor: t,\n borderWidth: e\n } = s;\n s.borderWidth = 0;\n a = [\"url('data:image/svg+xml;utf8,\", '', \"\")];\n this.container.classList.add(\"hasBorder\");\n }\n const o = i - e,\n l = r - n,\n {\n svgFactory: c\n } = this,\n h = c.createElement(\"svg\");\n h.classList.add(\"quadrilateralsContainer\");\n h.setAttribute(\"width\", 0);\n h.setAttribute(\"height\", 0);\n const d = c.createElement(\"defs\");\n h.append(d);\n const u = c.createElement(\"clipPath\"),\n p = \"clippath_\".concat(this.data.id);\n u.setAttribute(\"id\", p);\n u.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n d.append(u);\n for (const [, {\n x: n,\n y: i\n }, {\n x: s,\n y: h\n }] of t) {\n var _a3;\n const t = c.createElement(\"rect\"),\n d = (s - e) / o,\n p = (r - i) / l,\n f = (n - s) / o,\n g = (i - h) / l;\n t.setAttribute(\"x\", d);\n t.setAttribute(\"y\", p);\n t.setAttribute(\"width\", f);\n t.setAttribute(\"height\", g);\n u.append(t);\n (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.push(\"\"));\n }\n if (_classPrivateFieldGet(this, _De)) {\n a.push(\"')\");\n s.backgroundImage = a.join(\"\");\n }\n this.container.append(h);\n this.container.style.clipPath = \"url(#\".concat(p, \")\");\n }\n _createPopup() {\n const {\n container: t,\n data: e\n } = this;\n t.setAttribute(\"aria-haspopup\", \"dialog\");\n const n = new PopupAnnotationElement({\n data: {\n color: e.color,\n titleObj: e.titleObj,\n modificationDate: e.modificationDate,\n contentsObj: e.contentsObj,\n richText: e.richText,\n parentRect: e.rect,\n borderStyle: 0,\n id: \"popup_\".concat(e.id),\n rotation: e.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(n.render());\n }\n render() {\n (0, i.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = [];\n if (this._fieldObjects) {\n const r = this._fieldObjects[t];\n if (r) for (const {\n page: t,\n id: s,\n exportValues: a\n } of r) {\n if (-1 === t) continue;\n if (s === e) continue;\n const r = \"string\" == typeof a ? a : null,\n o = document.querySelector(\"[data-element-id=\\\"\".concat(s, \"\\\"]\"));\n !o || h.has(o) ? n.push({\n id: s,\n exportValue: r,\n domElement: o\n }) : (0, i.warn)(\"_getElementsByName - element not allowed: \".concat(s));\n }\n return n;\n }\n for (const i of document.getElementsByName(t)) {\n const {\n exportValue: t\n } = i,\n r = i.getAttribute(\"data-element-id\");\n r !== e && h.has(i) && n.push({\n id: r,\n exportValue: t,\n domElement: i\n });\n }\n return n;\n }\n show() {\n var _this$popup;\n this.container && (this.container.hidden = !1);\n (_this$popup = this.popup) === null || _this$popup === void 0 ? void 0 : _this$popup.maybeShow();\n }\n hide() {\n var _this$popup2;\n this.container && (this.container.hidden = !0);\n (_this$popup2 = this.popup) === null || _this$popup2 === void 0 ? void 0 : _this$popup2.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const t = this.getElementsToTriggerPopup();\n if (Array.isArray(t)) for (const e of t) e.classList.add(\"highlightArea\");else t.classList.add(\"highlightArea\");\n }\n _editOnDoubleClick() {\n const {\n annotationEditorType: t,\n data: {\n id: e\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n var _this$linkService$eve;\n (_this$linkService$eve = this.linkService.eventBus) === null || _this$linkService$eve === void 0 ? void 0 : _this$linkService$eve.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode: t,\n editId: e\n });\n });\n }\n }\n var _Le = /*#__PURE__*/new WeakSet();\n var _Oe = /*#__PURE__*/new WeakSet();\n class LinkAnnotationElement extends AnnotationElement {\n constructor(_t15) {\n let _e13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n super(_t15, {\n isRenderable: !0,\n ignoreBorder: !!(_e13 !== null && _e13 !== void 0 && _e13.ignoreBorder),\n createQuadrilaterals: !0\n });\n _classPrivateMethodInitSpec(this, _Oe);\n _classPrivateMethodInitSpec(this, _Le);\n this.isTooltipOnly = _t15.data.isTooltipOnly;\n }\n render() {\n const {\n data: t,\n linkService: e\n } = this,\n n = document.createElement(\"a\");\n n.setAttribute(\"data-element-id\", t.id);\n let i = !1;\n if (t.url) {\n e.addLinkAttributes(n, t.url, t.newWindow);\n i = !0;\n } else if (t.action) {\n this._bindNamedAction(n, t.action);\n i = !0;\n } else if (t.attachment) {\n this._bindAttachment(n, t.attachment);\n i = !0;\n } else if (t.setOCGState) {\n _classPrivateMethodGet(this, _Oe, _Oe2).call(this, n, t.setOCGState);\n i = !0;\n } else if (t.dest) {\n this._bindLink(n, t.dest);\n i = !0;\n } else {\n if (t.actions && (t.actions.Action || t.actions[\"Mouse Up\"] || t.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(n, t);\n i = !0;\n }\n if (t.resetForm) {\n this._bindResetFormAction(n, t.resetForm);\n i = !0;\n } else if (this.isTooltipOnly && !i) {\n this._bindLink(n, \"\");\n i = !0;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n i && this.container.append(n);\n return this.container;\n }\n _bindLink(t, e) {\n t.href = this.linkService.getDestinationHash(e);\n t.onclick = () => {\n e && this.linkService.goToDestination(e);\n return !1;\n };\n (e || \"\" === e) && _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindNamedAction(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n this.linkService.executeNamedAction(e);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindAttachment(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n var _this$downloadManager;\n (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, e.content, e.filename);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindJSAction(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n const n = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const i of Object.keys(e.actions)) {\n const r = n.get(i);\n r && (t[r] = () => {\n var _this$linkService$eve2;\n (_this$linkService$eve2 = this.linkService.eventBus) === null || _this$linkService$eve2 === void 0 ? void 0 : _this$linkService$eve2.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e.id,\n name: i\n }\n });\n return !1;\n });\n }\n t.onclick || (t.onclick = () => !1);\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindResetFormAction(t, e) {\n const n = t.onclick;\n n || (t.href = this.linkService.getAnchorUrl(\"\"));\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n if (this._fieldObjects) t.onclick = () => {\n var _this$linkService$eve3;\n n === null || n === void 0 ? void 0 : n();\n const {\n fields: t,\n refs: r,\n include: s\n } = e,\n a = [];\n if (0 !== t.length || 0 !== r.length) {\n const e = new Set(r);\n for (const n of t) {\n const t = this._fieldObjects[n] || [];\n for (const {\n id: n\n } of t) e.add(n);\n }\n for (const t of Object.values(this._fieldObjects)) for (const n of t) e.has(n.id) === s && a.push(n);\n } else for (const t of Object.values(this._fieldObjects)) a.push(...t);\n const o = this.annotationStorage,\n l = [];\n for (const t of a) {\n const {\n id: e\n } = t;\n l.push(e);\n switch (t.type) {\n case \"text\":\n {\n const n = t.defaultValue || \"\";\n o.setValue(e, {\n value: n\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const n = t.defaultValue === t.exportValues;\n o.setValue(e, {\n value: n\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const n = t.defaultValue || \"\";\n o.setValue(e, {\n value: n\n });\n break;\n }\n default:\n continue;\n }\n const n = document.querySelector(\"[data-element-id=\\\"\".concat(e, \"\\\"]\"));\n n && (h.has(n) ? n.dispatchEvent(new Event(\"resetform\")) : (0, i.warn)(\"_bindResetFormAction - element not allowed: \".concat(e)));\n }\n this.enableScripting && ((_this$linkService$eve3 = this.linkService.eventBus) === null || _this$linkService$eve3 === void 0 ? void 0 : _this$linkService$eve3.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: l,\n name: \"ResetForm\"\n }\n }));\n return !1;\n };else {\n (0, i.warn)('_bindResetFormAction - \"resetForm\" action not supported, ensure that the `fieldObjects` parameter is provided.');\n n || (t.onclick = () => !1);\n }\n }\n }\n function _Le2() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n function _Oe2(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n this.linkService.executeSetOCGState(e);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n class TextAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj, _t$data$contentsObj, _t$data$richText;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj = t.data.titleObj) !== null && _t$data$titleObj !== void 0 && _t$data$titleObj.str || (_t$data$contentsObj = t.data.contentsObj) !== null && _t$data$contentsObj !== void 0 && _t$data$contentsObj.str || (_t$data$richText = t.data.richText) !== null && _t$data$richText !== void 0 && _t$data$richText.str)\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const t = document.createElement(\"img\");\n t.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n t.alt = \"[{{type}} Annotation]\";\n t.dataset.l10nId = \"text_annotation_type\";\n t.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n this.data.popupRef || this._createPopup();\n this.container.append(t);\n return this.container;\n }\n }\n class WidgetAnnotationElement extends AnnotationElement {\n render() {\n this.data.alternativeText && (this.container.title = this.data.alternativeText);\n return this.container;\n }\n showElementAndHideCanvas(t) {\n if (this.data.hasOwnCanvas) {\n var _t$previousSibling;\n \"CANVAS\" === ((_t$previousSibling = t.previousSibling) === null || _t$previousSibling === void 0 ? void 0 : _t$previousSibling.nodeName) && (t.previousSibling.hidden = !0);\n t.hidden = !1;\n }\n }\n _getKeyModifier(t) {\n const {\n isWin: e,\n isMac: n\n } = i.FeatureTest.platform;\n return e && t.ctrlKey || n && t.metaKey;\n }\n _setEventListener(t, e, n, i) {\n e.includes(\"mouse\") ? t.addEventListener(e, t => {\n var _this$linkService$eve4;\n (_this$linkService$eve4 = this.linkService.eventBus) === null || _this$linkService$eve4 === void 0 ? void 0 : _this$linkService$eve4.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: n,\n value: i(t),\n shift: t.shiftKey,\n modifier: this._getKeyModifier(t)\n }\n });\n }) : t.addEventListener(e, t => {\n var _this$linkService$eve5;\n (_this$linkService$eve5 = this.linkService.eventBus) === null || _this$linkService$eve5 === void 0 ? void 0 : _this$linkService$eve5.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: n,\n value: i(t)\n }\n });\n });\n }\n _setEventListeners(t, e, n) {\n for (const [i, r] of e) {\n var _this$data$actions;\n (\"Action\" === r || ((_this$data$actions = this.data.actions) === null || _this$data$actions === void 0 ? void 0 : _this$data$actions[r])) && this._setEventListener(t, i, r, n);\n }\n }\n _setBackgroundColor(t) {\n const e = this.data.backgroundColor || null;\n t.style.backgroundColor = null === e ? \"transparent\" : i.Util.makeHexColor(e[0], e[1], e[2]);\n }\n _setTextStyle(t) {\n const e = [\"left\", \"center\", \"right\"],\n {\n fontColor: n\n } = this.data.defaultAppearanceData,\n r = this.data.defaultAppearanceData.fontSize || 9,\n s = t.style;\n let a;\n const roundToOneDecimal = t => Math.round(10 * t) / 10;\n if (this.data.multiLine) {\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2),\n e = t / (Math.round(t / (i.LINE_FACTOR * r)) || 1);\n a = Math.min(r, roundToOneDecimal(e / i.LINE_FACTOR));\n } else {\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2);\n a = Math.min(r, roundToOneDecimal(t / i.LINE_FACTOR));\n }\n s.fontSize = \"calc(\".concat(a, \"px * var(--scale-factor))\");\n s.color = i.Util.makeHexColor(n[0], n[1], n[2]);\n null !== this.data.textAlignment && (s.textAlign = e[this.data.textAlignment]);\n }\n _setRequired(t, e) {\n e ? t.setAttribute(\"required\", !0) : t.removeAttribute(\"required\");\n t.setAttribute(\"aria-required\", e);\n }\n }\n class TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms || !t.data.hasAppearance && !!t.data.fieldValue\n });\n }\n setPropertyOnSiblings(t, e, n, i) {\n const r = this.annotationStorage;\n for (const s of this._getElementsByName(t.name, t.id)) {\n s.domElement && (s.domElement[e] = n);\n r.setValue(s.id, {\n [i]: n\n });\n }\n }\n render() {\n const t = this.annotationStorage,\n e = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let n = null;\n if (this.renderForms) {\n var _this$data$textConten;\n const i = t.getValue(e, {\n value: this.data.fieldValue\n });\n let r = i.value || \"\";\n const s = t.getValue(e, {\n charLimit: this.data.maxLen\n }).charLimit;\n s && r.length > s && (r = r.slice(0, s));\n let a = i.formattedValue || ((_this$data$textConten = this.data.textContent) === null || _this$data$textConten === void 0 ? void 0 : _this$data$textConten.join(\"\\n\")) || null;\n a && this.data.comb && (a = a.replaceAll(/\\s+/g, \"\"));\n const o = {\n userValue: r,\n formattedValue: a,\n lastCommittedValue: null,\n commitKey: 1\n };\n if (this.data.multiLine) {\n var _a4;\n n = document.createElement(\"textarea\");\n n.textContent = (_a4 = a) !== null && _a4 !== void 0 ? _a4 : r;\n this.data.doNotScroll && (n.style.overflowY = \"hidden\");\n } else {\n var _a5;\n n = document.createElement(\"input\");\n n.type = \"text\";\n n.setAttribute(\"value\", (_a5 = a) !== null && _a5 !== void 0 ? _a5 : r);\n this.data.doNotScroll && (n.style.overflowX = \"hidden\");\n }\n this.data.hasOwnCanvas && (n.hidden = !0);\n h.add(n);\n n.setAttribute(\"data-element-id\", e);\n n.disabled = this.data.readOnly;\n n.name = this.data.baseFieldName || this.data.fieldName;\n n.tabIndex = c;\n this._setRequired(n, this.data.required);\n s && (n.maxLength = s);\n n.addEventListener(\"input\", i => {\n t.setValue(e, {\n value: i.target.value\n });\n this.setPropertyOnSiblings(n, \"value\", i.target.value, \"value\");\n o.formattedValue = null;\n });\n n.addEventListener(\"resetform\", t => {\n var _this$data$defaultFie;\n const e = (_this$data$defaultFie = this.data.defaultFieldValue) !== null && _this$data$defaultFie !== void 0 ? _this$data$defaultFie : \"\";\n n.value = o.userValue = e;\n o.formattedValue = null;\n });\n let blurListener = t => {\n const {\n formattedValue: e\n } = o;\n null != e && (t.target.value = e);\n t.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n var _this$data$actions2;\n n.addEventListener(\"focus\", t => {\n const {\n target: e\n } = t;\n o.userValue && (e.value = o.userValue);\n o.lastCommittedValue = e.value;\n o.commitKey = 1;\n });\n n.addEventListener(\"updatefromsandbox\", n => {\n this.showElementAndHideCanvas(n.target);\n const i = {\n value(n) {\n var _n$detail$value;\n o.userValue = (_n$detail$value = n.detail.value) !== null && _n$detail$value !== void 0 ? _n$detail$value : \"\";\n t.setValue(e, {\n value: o.userValue.toString()\n });\n n.target.value = o.userValue;\n },\n formattedValue(n) {\n const {\n formattedValue: i\n } = n.detail;\n o.formattedValue = i;\n null != i && n.target !== document.activeElement && (n.target.value = i);\n t.setValue(e, {\n formattedValue: i\n });\n },\n selRange(t) {\n t.target.setSelectionRange(...t.detail.selRange);\n },\n charLimit: n => {\n const {\n charLimit: i\n } = n.detail,\n {\n target: r\n } = n;\n if (0 === i) {\n r.removeAttribute(\"maxLength\");\n return;\n }\n r.setAttribute(\"maxLength\", i);\n let s = o.userValue;\n if (s && !(s.length <= i)) {\n var _this$linkService$eve6;\n s = s.slice(0, i);\n r.value = o.userValue = s;\n t.setValue(e, {\n value: s\n });\n (_this$linkService$eve6 = this.linkService.eventBus) === null || _this$linkService$eve6 === void 0 ? void 0 : _this$linkService$eve6.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: s,\n willCommit: !0,\n commitKey: 1,\n selStart: r.selectionStart,\n selEnd: r.selectionEnd\n }\n });\n }\n }\n };\n this._dispatchEventFromSandbox(i, n);\n });\n n.addEventListener(\"keydown\", t => {\n o.commitKey = 1;\n let n = -1;\n \"Escape\" === t.key ? n = 0 : \"Enter\" !== t.key || this.data.multiLine ? \"Tab\" === t.key && (o.commitKey = 3) : n = 2;\n if (-1 === n) return;\n const {\n value: i\n } = t.target;\n if (o.lastCommittedValue !== i) {\n var _this$linkService$eve7;\n o.lastCommittedValue = i;\n o.userValue = i;\n (_this$linkService$eve7 = this.linkService.eventBus) === null || _this$linkService$eve7 === void 0 ? void 0 : _this$linkService$eve7.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: i,\n willCommit: !0,\n commitKey: n,\n selStart: t.target.selectionStart,\n selEnd: t.target.selectionEnd\n }\n });\n }\n });\n const i = blurListener;\n blurListener = null;\n n.addEventListener(\"blur\", t => {\n var _this$linkService$eve8;\n if (!t.relatedTarget) return;\n const {\n value: n\n } = t.target;\n o.userValue = n;\n o.lastCommittedValue !== n && ((_this$linkService$eve8 = this.linkService.eventBus) === null || _this$linkService$eve8 === void 0 ? void 0 : _this$linkService$eve8.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: n,\n willCommit: !0,\n commitKey: o.commitKey,\n selStart: t.target.selectionStart,\n selEnd: t.target.selectionEnd\n }\n }));\n i(t);\n });\n ((_this$data$actions2 = this.data.actions) === null || _this$data$actions2 === void 0 ? void 0 : _this$data$actions2.Keystroke) && n.addEventListener(\"beforeinput\", t => {\n var _this$linkService$eve9;\n o.lastCommittedValue = null;\n const {\n data: n,\n target: i\n } = t,\n {\n value: r,\n selectionStart: s,\n selectionEnd: a\n } = i;\n let l = s,\n c = a;\n switch (t.inputType) {\n case \"deleteWordBackward\":\n {\n const t = r.substring(0, s).match(/\\w*[^\\w]*$/);\n t && (l -= t[0].length);\n break;\n }\n case \"deleteWordForward\":\n {\n const t = r.substring(s).match(/^[^\\w]*\\w*/);\n t && (c += t[0].length);\n break;\n }\n case \"deleteContentBackward\":\n s === a && (l -= 1);\n break;\n case \"deleteContentForward\":\n s === a && (c += 1);\n }\n t.preventDefault();\n (_this$linkService$eve9 = this.linkService.eventBus) === null || _this$linkService$eve9 === void 0 ? void 0 : _this$linkService$eve9.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: r,\n change: n || \"\",\n willCommit: !1,\n selStart: l,\n selEnd: c\n }\n });\n });\n this._setEventListeners(n, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.value);\n }\n blurListener && n.addEventListener(\"blur\", blurListener);\n if (this.data.comb) {\n const t = (this.data.rect[2] - this.data.rect[0]) / s;\n n.classList.add(\"comb\");\n n.style.letterSpacing = \"calc(\".concat(t, \"px * var(--scale-factor) - 1ch)\");\n }\n } else {\n n = document.createElement(\"div\");\n n.textContent = this.data.fieldValue;\n n.style.verticalAlign = \"middle\";\n n.style.display = \"table-cell\";\n }\n this._setTextStyle(n);\n this._setBackgroundColor(n);\n this._setDefaultPropertiesFromJS(n);\n this.container.append(n);\n return this.container;\n }\n }\n class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: !!t.data.hasOwnCanvas\n });\n }\n }\n class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n const t = this.annotationStorage,\n e = this.data,\n n = e.id;\n let i = t.getValue(n, {\n value: e.exportValue === e.fieldValue\n }).value;\n if (\"string\" == typeof i) {\n i = \"Off\" !== i;\n t.setValue(n, {\n value: i\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const r = document.createElement(\"input\");\n h.add(r);\n r.setAttribute(\"data-element-id\", n);\n r.disabled = e.readOnly;\n this._setRequired(r, this.data.required);\n r.type = \"checkbox\";\n r.name = e.baseFieldName || e.fieldName;\n i && r.setAttribute(\"checked\", !0);\n r.setAttribute(\"exportValue\", e.exportValue);\n r.tabIndex = c;\n r.addEventListener(\"change\", i => {\n const {\n name: r,\n checked: s\n } = i.target;\n for (const i of this._getElementsByName(r, n)) {\n const n = s && i.exportValue === e.exportValue;\n i.domElement && (i.domElement.checked = n);\n t.setValue(i.id, {\n value: n\n });\n }\n t.setValue(n, {\n value: s\n });\n });\n r.addEventListener(\"resetform\", t => {\n const n = e.defaultFieldValue || \"Off\";\n t.target.checked = n === e.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n r.addEventListener(\"updatefromsandbox\", e => {\n const i = {\n value(e) {\n e.target.checked = \"Off\" !== e.detail.value;\n t.setValue(n, {\n value: e.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(i, e);\n });\n this._setEventListeners(r, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.checked);\n }\n this._setBackgroundColor(r);\n this._setDefaultPropertiesFromJS(r);\n this.container.append(r);\n return this.container;\n }\n }\n class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const t = this.annotationStorage,\n e = this.data,\n n = e.id;\n let i = t.getValue(n, {\n value: e.fieldValue === e.buttonValue\n }).value;\n if (\"string\" == typeof i) {\n i = i !== e.buttonValue;\n t.setValue(n, {\n value: i\n });\n }\n const r = document.createElement(\"input\");\n h.add(r);\n r.setAttribute(\"data-element-id\", n);\n r.disabled = e.readOnly;\n this._setRequired(r, this.data.required);\n r.type = \"radio\";\n r.name = e.baseFieldName || e.fieldName;\n i && r.setAttribute(\"checked\", !0);\n r.tabIndex = c;\n r.addEventListener(\"change\", e => {\n const {\n name: i,\n checked: r\n } = e.target;\n for (const e of this._getElementsByName(i, n)) t.setValue(e.id, {\n value: !1\n });\n t.setValue(n, {\n value: r\n });\n });\n r.addEventListener(\"resetform\", t => {\n const n = e.defaultFieldValue;\n t.target.checked = null != n && n === e.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const i = e.buttonValue;\n r.addEventListener(\"updatefromsandbox\", e => {\n const r = {\n value: e => {\n const r = i === e.detail.value;\n for (const i of this._getElementsByName(e.target.name)) {\n const e = r && i.id === n;\n i.domElement && (i.domElement.checked = e);\n t.setValue(i.id, {\n value: e\n });\n }\n }\n };\n this._dispatchEventFromSandbox(r, e);\n });\n this._setEventListeners(r, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.checked);\n }\n this._setBackgroundColor(r);\n this._setDefaultPropertiesFromJS(r);\n this.container.append(r);\n return this.container;\n }\n }\n class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(t) {\n super(t, {\n ignoreBorder: t.data.hasAppearance\n });\n }\n render() {\n const t = super.render();\n t.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n this.data.alternativeText && (t.title = this.data.alternativeText);\n const e = t.lastChild;\n if (this.enableScripting && this.hasJSActions && e) {\n this._setDefaultPropertiesFromJS(e);\n e.addEventListener(\"updatefromsandbox\", t => {\n this._dispatchEventFromSandbox({}, t);\n });\n }\n return t;\n }\n }\n class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const t = this.annotationStorage,\n e = this.data.id,\n n = t.getValue(e, {\n value: this.data.fieldValue\n }),\n i = document.createElement(\"select\");\n h.add(i);\n i.setAttribute(\"data-element-id\", e);\n i.disabled = this.data.readOnly;\n this._setRequired(i, this.data.required);\n i.name = this.data.baseFieldName || this.data.fieldName;\n i.tabIndex = c;\n let r = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n i.size = this.data.options.length;\n this.data.multiSelect && (i.multiple = !0);\n }\n i.addEventListener(\"resetform\", t => {\n const e = this.data.defaultFieldValue;\n for (const t of i.options) t.selected = t.value === e;\n });\n for (const t of this.data.options) {\n const e = document.createElement(\"option\");\n e.textContent = t.displayValue;\n e.value = t.exportValue;\n if (n.value.includes(t.exportValue)) {\n e.setAttribute(\"selected\", !0);\n r = !1;\n }\n i.append(e);\n }\n let s = null;\n if (r) {\n const t = document.createElement(\"option\");\n t.value = \" \";\n t.setAttribute(\"hidden\", !0);\n t.setAttribute(\"selected\", !0);\n i.prepend(t);\n s = () => {\n t.remove();\n i.removeEventListener(\"input\", s);\n s = null;\n };\n i.addEventListener(\"input\", s);\n }\n const getValue = t => {\n const e = t ? \"value\" : \"textContent\",\n {\n options: n,\n multiple: r\n } = i;\n return r ? Array.prototype.filter.call(n, t => t.selected).map(t => t[e]) : -1 === n.selectedIndex ? null : n[n.selectedIndex][e];\n };\n let a = getValue(!1);\n const getItems = t => {\n const e = t.target.options;\n return Array.prototype.map.call(e, t => ({\n displayValue: t.textContent,\n exportValue: t.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n i.addEventListener(\"updatefromsandbox\", n => {\n const r = {\n value(n) {\n var _s5;\n (_s5 = s) === null || _s5 === void 0 ? void 0 : _s5();\n const r = n.detail.value,\n o = new Set(Array.isArray(r) ? r : [r]);\n for (const t of i.options) t.selected = o.has(t.value);\n t.setValue(e, {\n value: getValue(!0)\n });\n a = getValue(!1);\n },\n multipleSelection(t) {\n i.multiple = !0;\n },\n remove(n) {\n const r = i.options,\n s = n.detail.remove;\n r[s].selected = !1;\n i.remove(s);\n if (r.length > 0) {\n -1 === Array.prototype.findIndex.call(r, t => t.selected) && (r[0].selected = !0);\n }\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n clear(n) {\n for (; 0 !== i.length;) i.remove(0);\n t.setValue(e, {\n value: null,\n items: []\n });\n a = getValue(!1);\n },\n insert(n) {\n const {\n index: r,\n displayValue: s,\n exportValue: o\n } = n.detail.insert,\n l = i.children[r],\n c = document.createElement(\"option\");\n c.textContent = s;\n c.value = o;\n l ? l.before(c) : i.append(c);\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n items(n) {\n const {\n items: r\n } = n.detail;\n for (; 0 !== i.length;) i.remove(0);\n for (const t of r) {\n const {\n displayValue: e,\n exportValue: n\n } = t,\n r = document.createElement(\"option\");\n r.textContent = e;\n r.value = n;\n i.append(r);\n }\n i.options.length > 0 && (i.options[0].selected = !0);\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n indices(n) {\n const i = new Set(n.detail.indices);\n for (const t of n.target.options) t.selected = i.has(t.index);\n t.setValue(e, {\n value: getValue(!0)\n });\n a = getValue(!1);\n },\n editable(t) {\n t.target.disabled = !t.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(r, n);\n });\n i.addEventListener(\"input\", n => {\n var _this$linkService$eve10;\n const i = getValue(!0);\n t.setValue(e, {\n value: i\n });\n n.preventDefault();\n (_this$linkService$eve10 = this.linkService.eventBus) === null || _this$linkService$eve10 === void 0 ? void 0 : _this$linkService$eve10.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: a,\n changeEx: i,\n willCommit: !1,\n commitKey: 1,\n keyDown: !1\n }\n });\n });\n this._setEventListeners(i, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], t => t.target.value);\n } else i.addEventListener(\"input\", function (n) {\n t.setValue(e, {\n value: getValue(!0)\n });\n });\n this.data.combo && this._setTextStyle(i);\n this._setBackgroundColor(i);\n this._setDefaultPropertiesFromJS(i);\n this.container.append(i);\n return this.container;\n }\n }\n class PopupAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _e$titleObj, _e$contentsObj, _e$richText;\n const {\n data: e,\n elements: n\n } = t;\n super(t, {\n isRenderable: !!((_e$titleObj = e.titleObj) !== null && _e$titleObj !== void 0 && _e$titleObj.str || (_e$contentsObj = e.contentsObj) !== null && _e$contentsObj !== void 0 && _e$contentsObj.str || (_e$richText = e.richText) !== null && _e$richText !== void 0 && _e$richText.str)\n });\n this.elements = n;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const t = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n }),\n e = [];\n for (const n of this.elements) {\n n.popup = t;\n e.push(n.data.id);\n n.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", e.join(\",\"));\n return this.container;\n }\n }\n var _Ne = /*#__PURE__*/new WeakMap();\n var _Be = /*#__PURE__*/new WeakMap();\n var _Ue = /*#__PURE__*/new WeakMap();\n var _He = /*#__PURE__*/new WeakMap();\n var _Se2 = /*#__PURE__*/new WeakMap();\n var _bt2 = /*#__PURE__*/new WeakMap();\n var _We = /*#__PURE__*/new WeakMap();\n var _Ge = /*#__PURE__*/new WeakMap();\n var _Ve = /*#__PURE__*/new WeakMap();\n var _$e = /*#__PURE__*/new WeakMap();\n var _Xe = /*#__PURE__*/new WeakMap();\n var _Ke = /*#__PURE__*/new WeakMap();\n var _Ye = /*#__PURE__*/new WeakMap();\n var _Je = /*#__PURE__*/new WeakMap();\n var _Qe = /*#__PURE__*/new WeakMap();\n var _Ze = /*#__PURE__*/new WeakMap();\n var _qe = /*#__PURE__*/new WeakSet();\n var _ze = /*#__PURE__*/new WeakSet();\n var _je = /*#__PURE__*/new WeakSet();\n class PopupElement {\n constructor(t) {\n _classPrivateMethodInitSpec(this, _je);\n _classPrivateMethodInitSpec(this, _ze);\n _classPrivateMethodInitSpec(this, _qe);\n _classPrivateFieldInitSpec(this, _Ne, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Be, {\n writable: true,\n value: _classPrivateMethodGet(this, _je, _je2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _Ue, {\n writable: true,\n value: _classPrivateMethodGet(this, _ze, _ze2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _He, {\n writable: true,\n value: _classPrivateMethodGet(this, _qe, _qe2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _Se2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _bt2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _We, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ge, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ve, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _$e, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Xe, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _Ke, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ye, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Je, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Qe, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ze, {\n writable: true,\n value: !1\n });\n let {\n container: e,\n color: n,\n elements: i,\n titleObj: s,\n modificationDate: a,\n contentsObj: o,\n richText: l,\n parent: c,\n rect: h,\n parentRect: d,\n open: u\n } = t;\n _classPrivateFieldSet(this, _bt2, e);\n _classPrivateFieldSet(this, _Qe, s);\n _classPrivateFieldSet(this, _We, o);\n _classPrivateFieldSet(this, _Je, l);\n _classPrivateFieldSet(this, _Ve, c);\n _classPrivateFieldSet(this, _Se2, n);\n _classPrivateFieldSet(this, _Ye, h);\n _classPrivateFieldSet(this, _$e, d);\n _classPrivateFieldSet(this, _Ge, i);\n const p = r.PDFDateString.toDateObject(a);\n p && _classPrivateFieldSet(this, _Ne, c.l10n.get(\"annotation_date_string\", {\n date: p.toLocaleDateString(),\n time: p.toLocaleTimeString()\n }));\n this.trigger = i.flatMap(t => t.getElementsToTriggerPopup());\n for (const t of this.trigger) {\n t.addEventListener(\"click\", _classPrivateFieldGet(this, _He));\n t.addEventListener(\"mouseenter\", _classPrivateFieldGet(this, _Ue));\n t.addEventListener(\"mouseleave\", _classPrivateFieldGet(this, _Be));\n }\n _classPrivateFieldGet(this, _bt2).hidden = !0;\n u && _classPrivateMethodGet(this, _qe, _qe2).call(this);\n }\n render() {\n if (_classPrivateFieldGet(this, _Ke)) return;\n const {\n page: {\n view: t\n },\n viewport: {\n rawDims: {\n pageWidth: e,\n pageHeight: n,\n pageX: r,\n pageY: s\n }\n }\n } = _classPrivateFieldGet(this, _Ve),\n a = _classPrivateFieldSet(this, _Ke, document.createElement(\"div\"));\n a.className = \"popup\";\n if (_classPrivateFieldGet(this, _Se2)) {\n const t = a.style.outlineColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2));\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) a.style.backgroundColor = \"color-mix(in srgb, \".concat(t, \" 30%, white)\");else {\n const t = .7;\n a.style.backgroundColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2).map(e => Math.floor(t * (255 - e) + e)));\n }\n }\n const o = document.createElement(\"span\");\n o.className = \"header\";\n const c = document.createElement(\"h1\");\n o.append(c);\n ({\n dir: c.dir,\n str: c.textContent\n } = _classPrivateFieldGet(this, _Qe));\n a.append(o);\n if (_classPrivateFieldGet(this, _Ne)) {\n const t = document.createElement(\"span\");\n t.classList.add(\"popupDate\");\n _classPrivateFieldGet(this, _Ne).then(e => {\n t.textContent = e;\n });\n o.append(t);\n }\n const h = _classPrivateFieldGet(this, _We),\n d = _classPrivateFieldGet(this, _Je);\n if (!(d !== null && d !== void 0 && d.str) || h !== null && h !== void 0 && h.str && h.str !== d.str) {\n const t = this._formatContents(h);\n a.append(t);\n } else {\n l.XfaLayer.render({\n xfaHtml: d.html,\n intent: \"richText\",\n div: a\n });\n a.lastChild.classList.add(\"richText\", \"popupContent\");\n }\n let u = !!_classPrivateFieldGet(this, _$e),\n p = u ? _classPrivateFieldGet(this, _$e) : _classPrivateFieldGet(this, _Ye);\n for (const t of _classPrivateFieldGet(this, _Ge)) if (!p || null !== i.Util.intersect(t.data.rect, p)) {\n p = t.data.rect;\n u = !0;\n break;\n }\n const f = i.Util.normalizeRect([p[0], t[3] - p[1] + t[1], p[2], t[3] - p[3] + t[1]]),\n g = u ? p[2] - p[0] + 5 : 0,\n m = f[0] + g,\n b = f[1],\n {\n style: v\n } = _classPrivateFieldGet(this, _bt2);\n v.left = 100 * (m - r) / e + \"%\";\n v.top = 100 * (b - s) / n + \"%\";\n _classPrivateFieldGet(this, _bt2).append(a);\n }\n _formatContents(t) {\n let {\n str: e,\n dir: n\n } = t;\n const i = document.createElement(\"p\");\n i.classList.add(\"popupContent\");\n i.dir = n;\n const r = e.split(/(?:\\r\\n?|\\n)/);\n for (let t = 0, e = r.length; t < e; ++t) {\n const n = r[t];\n i.append(document.createTextNode(n));\n t < e - 1 && i.append(document.createElement(\"br\"));\n }\n return i;\n }\n forceHide() {\n _classPrivateFieldSet(this, _Ze, this.isVisible);\n _classPrivateFieldGet(this, _Ze) && (_classPrivateFieldGet(this, _bt2).hidden = !0);\n }\n maybeShow() {\n if (_classPrivateFieldGet(this, _Ze)) {\n _classPrivateFieldSet(this, _Ze, !1);\n _classPrivateFieldGet(this, _bt2).hidden = !1;\n }\n }\n get isVisible() {\n return !1 === _classPrivateFieldGet(this, _bt2).hidden;\n }\n }\n function _qe2() {\n _classPrivateFieldSet(this, _Xe, !_classPrivateFieldGet(this, _Xe));\n if (_classPrivateFieldGet(this, _Xe)) {\n _classPrivateMethodGet(this, _ze, _ze2).call(this);\n _classPrivateFieldGet(this, _bt2).addEventListener(\"click\", _classPrivateFieldGet(this, _He));\n } else {\n _classPrivateMethodGet(this, _je, _je2).call(this);\n _classPrivateFieldGet(this, _bt2).removeEventListener(\"click\", _classPrivateFieldGet(this, _He));\n }\n }\n function _ze2() {\n _classPrivateFieldGet(this, _Ke) || this.render();\n if (this.isVisible) _classPrivateFieldGet(this, _Xe) && _classPrivateFieldGet(this, _bt2).classList.add(\"focused\");else {\n _classPrivateFieldGet(this, _bt2).hidden = !1;\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) + 1e3;\n }\n }\n function _je2() {\n _classPrivateFieldGet(this, _bt2).classList.remove(\"focused\");\n if (!_classPrivateFieldGet(this, _Xe) && this.isVisible) {\n _classPrivateFieldGet(this, _bt2).hidden = !0;\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) - 1e3;\n }\n }\n class FreeTextAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj2, _t$data$contentsObj2, _t$data$richText2;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj2 = t.data.titleObj) !== null && _t$data$titleObj2 !== void 0 && _t$data$titleObj2.str || (_t$data$contentsObj2 = t.data.contentsObj) !== null && _t$data$contentsObj2 !== void 0 && _t$data$contentsObj2.str || (_t$data$richText2 = t.data.richText) !== null && _t$data$richText2 !== void 0 && _t$data$richText2.str),\n ignoreBorder: !0\n });\n this.textContent = t.data.textContent;\n this.textPosition = t.data.textPosition;\n this.annotationEditorType = i.AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const t = document.createElement(\"div\");\n t.classList.add(\"annotationTextContent\");\n t.setAttribute(\"role\", \"comment\");\n for (const e of this.textContent) {\n const n = document.createElement(\"span\");\n n.textContent = e;\n t.append(n);\n }\n this.container.append(t);\n }\n this.data.popupRef || this._createPopup();\n this._editOnDoubleClick();\n return this.container;\n }\n }\n e.FreeTextAnnotationElement = FreeTextAnnotationElement;\n var _tn = /*#__PURE__*/new WeakMap();\n class LineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj3, _t$data$contentsObj3, _t$data$richText3;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj3 = t.data.titleObj) !== null && _t$data$titleObj3 !== void 0 && _t$data$titleObj3.str || (_t$data$contentsObj3 = t.data.contentsObj) !== null && _t$data$contentsObj3 !== void 0 && _t$data$contentsObj3.str || (_t$data$richText3 = t.data.richText) !== null && _t$data$richText3 !== void 0 && _t$data$richText3.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _tn, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = _classPrivateFieldSet(this, _tn, this.svgFactory.createElement(\"svg:line\"));\n r.setAttribute(\"x1\", t.rect[2] - t.lineCoordinates[0]);\n r.setAttribute(\"y1\", t.rect[3] - t.lineCoordinates[1]);\n r.setAttribute(\"x2\", t.rect[2] - t.lineCoordinates[2]);\n r.setAttribute(\"y2\", t.rect[3] - t.lineCoordinates[3]);\n r.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n r.setAttribute(\"stroke\", \"transparent\");\n r.setAttribute(\"fill\", \"transparent\");\n i.append(r);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _tn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _en = /*#__PURE__*/new WeakMap();\n class SquareAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj4, _t$data$contentsObj4, _t$data$richText4;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj4 = t.data.titleObj) !== null && _t$data$titleObj4 !== void 0 && _t$data$titleObj4.str || (_t$data$contentsObj4 = t.data.contentsObj) !== null && _t$data$contentsObj4 !== void 0 && _t$data$contentsObj4.str || (_t$data$richText4 = t.data.richText) !== null && _t$data$richText4 !== void 0 && _t$data$richText4.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _en, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = t.borderStyle.width,\n s = _classPrivateFieldSet(this, _en, this.svgFactory.createElement(\"svg:rect\"));\n s.setAttribute(\"x\", r / 2);\n s.setAttribute(\"y\", r / 2);\n s.setAttribute(\"width\", e - r);\n s.setAttribute(\"height\", n - r);\n s.setAttribute(\"stroke-width\", r || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _en);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _nn = /*#__PURE__*/new WeakMap();\n class CircleAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj5, _t$data$contentsObj5, _t$data$richText5;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj5 = t.data.titleObj) !== null && _t$data$titleObj5 !== void 0 && _t$data$titleObj5.str || (_t$data$contentsObj5 = t.data.contentsObj) !== null && _t$data$contentsObj5 !== void 0 && _t$data$contentsObj5.str || (_t$data$richText5 = t.data.richText) !== null && _t$data$richText5 !== void 0 && _t$data$richText5.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _nn, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = t.borderStyle.width,\n s = _classPrivateFieldSet(this, _nn, this.svgFactory.createElement(\"svg:ellipse\"));\n s.setAttribute(\"cx\", e / 2);\n s.setAttribute(\"cy\", n / 2);\n s.setAttribute(\"rx\", e / 2 - r / 2);\n s.setAttribute(\"ry\", n / 2 - r / 2);\n s.setAttribute(\"stroke-width\", r || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _nn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _in = /*#__PURE__*/new WeakMap();\n class PolylineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj6, _t$data$contentsObj6, _t$data$richText6;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj6 = t.data.titleObj) !== null && _t$data$titleObj6 !== void 0 && _t$data$titleObj6.str || (_t$data$contentsObj6 = t.data.contentsObj) !== null && _t$data$contentsObj6 !== void 0 && _t$data$contentsObj6.str || (_t$data$richText6 = t.data.richText) !== null && _t$data$richText6 !== void 0 && _t$data$richText6.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _in, {\n writable: true,\n value: null\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0);\n let r = [];\n for (const e of t.vertices) {\n const n = e.x - t.rect[0],\n i = t.rect[3] - e.y;\n r.push(n + \",\" + i);\n }\n r = r.join(\" \");\n const s = _classPrivateFieldSet(this, _in, this.svgFactory.createElement(this.svgElementName));\n s.setAttribute(\"points\", r);\n s.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup(s, t);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _in);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n class PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(t) {\n super(t);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n }\n class CaretAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj7, _t$data$contentsObj7, _t$data$richText7;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj7 = t.data.titleObj) !== null && _t$data$titleObj7 !== void 0 && _t$data$titleObj7.str || (_t$data$contentsObj7 = t.data.contentsObj) !== null && _t$data$contentsObj7 !== void 0 && _t$data$contentsObj7.str || (_t$data$richText7 = t.data.richText) !== null && _t$data$richText7 !== void 0 && _t$data$richText7.str),\n ignoreBorder: !0\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n this.data.popupRef || this._createPopup();\n return this.container;\n }\n }\n var _rn = /*#__PURE__*/new WeakMap();\n class InkAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj8, _t$data$contentsObj8, _t$data$richText8;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj8 = t.data.titleObj) !== null && _t$data$titleObj8 !== void 0 && _t$data$titleObj8.str || (_t$data$contentsObj8 = t.data.contentsObj) !== null && _t$data$contentsObj8 !== void 0 && _t$data$contentsObj8.str || (_t$data$richText8 = t.data.richText) !== null && _t$data$richText8 !== void 0 && _t$data$richText8.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _rn, {\n writable: true,\n value: []\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = i.AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0);\n for (const e of t.inkLists) {\n let n = [];\n for (const i of e) {\n const e = i.x - t.rect[0],\n r = t.rect[3] - i.y;\n n.push(\"\".concat(e, \",\").concat(r));\n }\n n = n.join(\" \");\n const r = this.svgFactory.createElement(this.svgElementName);\n _classPrivateFieldGet(this, _rn).push(r);\n r.setAttribute(\"points\", n);\n r.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n r.setAttribute(\"stroke\", \"transparent\");\n r.setAttribute(\"fill\", \"transparent\");\n t.popupRef || this._createPopup(r, t);\n i.append(r);\n }\n this.container.append(i);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _rn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n e.InkAnnotationElement = InkAnnotationElement;\n class HighlightAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj9, _t$data$contentsObj9, _t$data$richText9;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj9 = t.data.titleObj) !== null && _t$data$titleObj9 !== void 0 && _t$data$titleObj9.str || (_t$data$contentsObj9 = t.data.contentsObj) !== null && _t$data$contentsObj9 !== void 0 && _t$data$contentsObj9.str || (_t$data$richText9 = t.data.richText) !== null && _t$data$richText9 !== void 0 && _t$data$richText9.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n }\n class UnderlineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj10, _t$data$contentsObj10, _t$data$richText10;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj10 = t.data.titleObj) !== null && _t$data$titleObj10 !== void 0 && _t$data$titleObj10.str || (_t$data$contentsObj10 = t.data.contentsObj) !== null && _t$data$contentsObj10 !== void 0 && _t$data$contentsObj10.str || (_t$data$richText10 = t.data.richText) !== null && _t$data$richText10 !== void 0 && _t$data$richText10.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n }\n class SquigglyAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj11, _t$data$contentsObj11, _t$data$richText11;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj11 = t.data.titleObj) !== null && _t$data$titleObj11 !== void 0 && _t$data$titleObj11.str || (_t$data$contentsObj11 = t.data.contentsObj) !== null && _t$data$contentsObj11 !== void 0 && _t$data$contentsObj11.str || (_t$data$richText11 = t.data.richText) !== null && _t$data$richText11 !== void 0 && _t$data$richText11.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n }\n class StrikeOutAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj12, _t$data$contentsObj12, _t$data$richText12;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj12 = t.data.titleObj) !== null && _t$data$titleObj12 !== void 0 && _t$data$titleObj12.str || (_t$data$contentsObj12 = t.data.contentsObj) !== null && _t$data$contentsObj12 !== void 0 && _t$data$contentsObj12.str || (_t$data$richText12 = t.data.richText) !== null && _t$data$richText12 !== void 0 && _t$data$richText12.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n }\n class StampAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj13, _t$data$contentsObj13, _t$data$richText13;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj13 = t.data.titleObj) !== null && _t$data$titleObj13 !== void 0 && _t$data$titleObj13.str || (_t$data$contentsObj13 = t.data.contentsObj) !== null && _t$data$contentsObj13 !== void 0 && _t$data$contentsObj13.str || (_t$data$richText13 = t.data.richText) !== null && _t$data$richText13 !== void 0 && _t$data$richText13.str),\n ignoreBorder: !0\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.data.popupRef || this._createPopup();\n return this.container;\n }\n }\n e.StampAnnotationElement = StampAnnotationElement;\n var _sn = /*#__PURE__*/new WeakMap();\n class FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _this$linkService$eve11;\n super(t, {\n isRenderable: !0\n });\n _classPrivateFieldInitSpec(this, _sn, {\n writable: true,\n value: null\n });\n const {\n filename: e,\n content: n\n } = this.data.file;\n this.filename = (0, r.getFilenameFromUrl)(e, !0);\n this.content = n;\n (_this$linkService$eve11 = this.linkService.eventBus) === null || _this$linkService$eve11 === void 0 ? void 0 : _this$linkService$eve11.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename: e,\n content: n\n });\n }\n render() {\n var _this$data$titleObj, _this$data$contentsOb;\n this.container.classList.add(\"fileAttachmentAnnotation\");\n let t;\n if (this.data.hasAppearance) t = document.createElement(\"div\");else {\n t = document.createElement(\"img\");\n t.src = \"\".concat(this.imageResourcesPath, \"annotation-\").concat(/paperclip/i.test(this.data.name) ? \"paperclip\" : \"pushpin\", \".svg\");\n }\n t.classList.add(\"popupTriggerArea\");\n t.addEventListener(\"dblclick\", this._download.bind(this));\n _classPrivateFieldSet(this, _sn, t);\n !this.data.popupRef && (((_this$data$titleObj = this.data.titleObj) === null || _this$data$titleObj === void 0 ? void 0 : _this$data$titleObj.str) || ((_this$data$contentsOb = this.data.contentsObj) === null || _this$data$contentsOb === void 0 ? void 0 : _this$data$contentsOb.str) || this.data.richText) && this._createPopup();\n this.container.append(t);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _sn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n _download() {\n var _this$downloadManager2;\n (_this$downloadManager2 = this.downloadManager) === null || _this$downloadManager2 === void 0 ? void 0 : _this$downloadManager2.openOrDownloadData(this.container, this.content, this.filename);\n }\n }\n e.AnnotationLayer = (_re2 = /*#__PURE__*/new WeakMap(), _an = /*#__PURE__*/new WeakMap(), _on = /*#__PURE__*/new WeakMap(), _ln = /*#__PURE__*/new WeakSet(), _cn = /*#__PURE__*/new WeakSet(), class AnnotationLayer {\n constructor(_t16) {\n _classPrivateMethodInitSpec(this, _cn);\n _classPrivateMethodInitSpec(this, _ln);\n _classPrivateFieldInitSpec(this, _re2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _an, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _on, {\n writable: true,\n value: new Map()\n });\n let {\n div: _e14,\n accessibilityManager: _n8,\n annotationCanvasMap: _i5,\n l10n: _r5,\n page: s,\n viewport: a\n } = _t16;\n this.div = _e14;\n _classPrivateFieldSet(this, _re2, _n8);\n _classPrivateFieldSet(this, _an, _i5);\n this.l10n = _r5;\n this.page = s;\n this.viewport = a;\n this.zIndex = 0;\n this.l10n || (this.l10n = o.NullL10n);\n }\n async render(t) {\n const {\n annotations: e\n } = t,\n n = this.div;\n (0, r.setLayerDimensions)(n, this.viewport);\n const a = new Map(),\n o = {\n data: null,\n layer: n,\n linkService: t.linkService,\n downloadManager: t.downloadManager,\n imageResourcesPath: t.imageResourcesPath || \"\",\n renderForms: !1 !== t.renderForms,\n svgFactory: new r.DOMSVGFactory(),\n annotationStorage: t.annotationStorage || new s.AnnotationStorage(),\n enableScripting: !0 === t.enableScripting,\n hasJSActions: t.hasJSActions,\n fieldObjects: t.fieldObjects,\n parent: this,\n elements: null\n };\n for (const t of e) {\n if (t.noHTML) continue;\n const e = t.annotationType === i.AnnotationType.POPUP;\n if (e) {\n const e = a.get(t.id);\n if (!e) continue;\n o.elements = e;\n } else {\n const {\n width: e,\n height: n\n } = getRectDims(t.rect);\n if (e <= 0 || n <= 0) continue;\n }\n o.data = t;\n const n = AnnotationElementFactory.create(o);\n if (!n.isRenderable) continue;\n if (!e && t.popupRef) {\n const e = a.get(t.popupRef);\n e ? e.push(n) : a.set(t.popupRef, [n]);\n }\n n.annotationEditorType > 0 && _classPrivateFieldGet(this, _on).set(n.data.id, n);\n const r = n.render();\n t.hidden && (r.style.visibility = \"hidden\");\n _classPrivateMethodGet(this, _ln, _ln2).call(this, r, t.id);\n }\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\n await this.l10n.translate(n);\n }\n update(t) {\n let {\n viewport: e\n } = t;\n const n = this.div;\n this.viewport = e;\n (0, r.setLayerDimensions)(n, {\n rotation: e.rotation\n });\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\n n.hidden = !1;\n }\n getEditableAnnotations() {\n return Array.from(_classPrivateFieldGet(this, _on).values());\n }\n getEditableAnnotation(t) {\n return _classPrivateFieldGet(this, _on).get(t);\n }\n });\n function _ln2(t, e) {\n var _classPrivateFieldGet14;\n const n = t.firstChild || t;\n n.id = \"\".concat(r.AnnotationPrefix).concat(e);\n this.div.append(t);\n (_classPrivateFieldGet14 = _classPrivateFieldGet(this, _re2)) === null || _classPrivateFieldGet14 === void 0 ? void 0 : _classPrivateFieldGet14.moveElementInDOM(this.div, t, n, !1);\n }\n function _cn2() {\n if (!_classPrivateFieldGet(this, _an)) return;\n const t = this.div;\n for (const [e, n] of _classPrivateFieldGet(this, _an)) {\n const i = t.querySelector(\"[data-annotation-id=\\\"\".concat(e, \"\\\"]\"));\n if (!i) continue;\n const {\n firstChild: r\n } = i;\n r ? \"CANVAS\" === r.nodeName ? r.replaceWith(n) : r.before(n) : i.append(n);\n }\n _classPrivateFieldGet(this, _an).clear();\n }\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.ColorConverters = void 0;\n function makeColorComp(t) {\n return Math.floor(255 * Math.max(0, Math.min(1, t))).toString(16).padStart(2, \"0\");\n }\n e.ColorConverters = class ColorConverters {\n static CMYK_G(t) {\n let [e, n, i, r] = t;\n return [\"G\", 1 - Math.min(1, .3 * e + .59 * i + .11 * n + r)];\n }\n static G_CMYK(t) {\n let [e] = t;\n return [\"CMYK\", 0, 0, 0, 1 - e];\n }\n static G_RGB(t) {\n let [e] = t;\n return [\"RGB\", e, e, e];\n }\n static G_HTML(t) {\n let [e] = t;\n const n = makeColorComp(e);\n return \"#\".concat(n).concat(n).concat(n);\n }\n static RGB_G(t) {\n let [e, n, i] = t;\n return [\"G\", .3 * e + .59 * n + .11 * i];\n }\n static RGB_HTML(t) {\n let [e, n, i] = t;\n return \"#\".concat(makeColorComp(e)).concat(makeColorComp(n)).concat(makeColorComp(i));\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static CMYK_RGB(t) {\n let [e, n, i, r] = t;\n return [\"RGB\", 1 - Math.min(1, e + r), 1 - Math.min(1, i + r), 1 - Math.min(1, n + r)];\n }\n static CMYK_HTML(t) {\n const e = this.CMYK_RGB(t).slice(1);\n return this.RGB_HTML(e);\n }\n static RGB_CMYK(t) {\n let [e, n, i] = t;\n const r = 1 - e,\n s = 1 - n,\n a = 1 - i;\n return [\"CMYK\", r, s, a, Math.min(r, s, a)];\n }\n };\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.NullL10n = void 0;\n e.getL10nFallback = getL10nFallback;\n const n = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string: \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string: \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n rendering_error: \"An error occurred while rendering the page.\",\n annotation_date_string: \"{{date}}, {{time}}\",\n printing_not_supported: \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled: \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n free_text2_default_content: \"Start typing…\",\n editor_free_text2_aria_label: \"Text Editor\",\n editor_ink2_aria_label: \"Draw Editor\",\n editor_ink_canvas_aria_label: \"User-created image\",\n print_progress_percent: \"{{progress}}%\"\n };\n function getL10nFallback(t, e) {\n switch (t) {\n case \"find_match_count\":\n t = \"find_match_count[\".concat(1 === e.total ? \"one\" : \"other\", \"]\");\n break;\n case \"find_match_count_limit\":\n t = \"find_match_count_limit[\".concat(1 === e.limit ? \"one\" : \"other\", \"]\");\n }\n return n[t] || \"\";\n }\n const i = {\n getLanguage: async () => \"en-us\",\n getDirection: async () => \"ltr\",\n async get(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return function formatL10nValue(t, e) {\n return e ? t.replaceAll(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (t, n) => n in e ? e[n] : \"{{\" + n + \"}}\") : t;\n }(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : getL10nFallback(t, e), e);\n },\n async translate(t) {}\n };\n e.NullL10n = i;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.XfaLayer = void 0;\n n(89);\n var i = n(193);\n e.XfaLayer = class XfaLayer {\n static setupStorage(t, e, n, i, r) {\n const s = i.getValue(e, {\n value: null\n });\n switch (n.name) {\n case \"textarea\":\n null !== s.value && (t.textContent = s.value);\n if (\"print\" === r) break;\n t.addEventListener(\"input\", t => {\n i.setValue(e, {\n value: t.target.value\n });\n });\n break;\n case \"input\":\n if (\"radio\" === n.attributes.type || \"checkbox\" === n.attributes.type) {\n s.value === n.attributes.xfaOn ? t.setAttribute(\"checked\", !0) : s.value === n.attributes.xfaOff && t.removeAttribute(\"checked\");\n if (\"print\" === r) break;\n t.addEventListener(\"change\", t => {\n i.setValue(e, {\n value: t.target.checked ? t.target.getAttribute(\"xfaOn\") : t.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n null !== s.value && t.setAttribute(\"value\", s.value);\n if (\"print\" === r) break;\n t.addEventListener(\"input\", t => {\n i.setValue(e, {\n value: t.target.value\n });\n });\n }\n break;\n case \"select\":\n if (null !== s.value) {\n t.setAttribute(\"value\", s.value);\n for (const t of n.children) t.attributes.value === s.value ? t.attributes.selected = !0 : t.attributes.hasOwnProperty(\"selected\") && delete t.attributes.selected;\n }\n t.addEventListener(\"input\", t => {\n const n = t.target.options,\n r = -1 === n.selectedIndex ? \"\" : n[n.selectedIndex].value;\n i.setValue(e, {\n value: r\n });\n });\n }\n }\n static setAttributes(t) {\n let {\n html: e,\n element: n,\n storage: i = null,\n intent: r,\n linkService: s\n } = t;\n const {\n attributes: a\n } = n,\n o = e instanceof HTMLAnchorElement;\n \"radio\" === a.type && (a.name = \"\".concat(a.name, \"-\").concat(r));\n for (const [t, n] of Object.entries(a)) if (null != n) switch (t) {\n case \"class\":\n n.length && e.setAttribute(t, n.join(\" \"));\n break;\n case \"dataId\":\n break;\n case \"id\":\n e.setAttribute(\"data-element-id\", n);\n break;\n case \"style\":\n Object.assign(e.style, n);\n break;\n case \"textContent\":\n e.textContent = n;\n break;\n default:\n (!o || \"href\" !== t && \"newWindow\" !== t) && e.setAttribute(t, n);\n }\n o && s.addLinkAttributes(e, a.href, a.newWindow);\n i && a.dataId && this.setupStorage(e, a.dataId, n, i);\n }\n static render(t) {\n const e = t.annotationStorage,\n n = t.linkService,\n r = t.xfaHtml,\n s = t.intent || \"display\",\n a = document.createElement(r.name);\n r.attributes && this.setAttributes({\n html: a,\n element: r,\n intent: s,\n linkService: n\n });\n const o = [[r, -1, a]],\n l = t.div;\n l.append(a);\n if (t.viewport) {\n const e = \"matrix(\".concat(t.viewport.transform.join(\",\"), \")\");\n l.style.transform = e;\n }\n \"richText\" !== s && l.setAttribute(\"class\", \"xfaLayer xfaFont\");\n const c = [];\n for (; o.length > 0;) {\n var _l$attributes;\n const [t, r, a] = o.at(-1);\n if (r + 1 === t.children.length) {\n o.pop();\n continue;\n }\n const l = t.children[++o.at(-1)[1]];\n if (null === l) continue;\n const {\n name: h\n } = l;\n if (\"#text\" === h) {\n const t = document.createTextNode(l.value);\n c.push(t);\n a.append(t);\n continue;\n }\n const d = l !== null && l !== void 0 && (_l$attributes = l.attributes) !== null && _l$attributes !== void 0 && _l$attributes.xmlns ? document.createElementNS(l.attributes.xmlns, h) : document.createElement(h);\n a.append(d);\n l.attributes && this.setAttributes({\n html: d,\n element: l,\n storage: e,\n intent: s,\n linkService: n\n });\n if (l.children && l.children.length > 0) o.push([l, -1, d]);else if (l.value) {\n const t = document.createTextNode(l.value);\n i.XfaText.shouldBuildText(h) && c.push(t);\n d.append(t);\n }\n }\n for (const t of l.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) t.setAttribute(\"readOnly\", !0);\n return {\n textDivs: c\n };\n }\n static update(t) {\n const e = \"matrix(\".concat(t.viewport.transform.join(\",\"), \")\");\n t.div.style.transform = e;\n t.div.hidden = !1;\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _class41;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.InkEditor = void 0;\n n(89);\n n(2);\n var i = n(1),\n r = n(163),\n s = n(197),\n a = n(164);\n var _hn = /*#__PURE__*/new WeakMap();\n var _dn = /*#__PURE__*/new WeakMap();\n var _un = /*#__PURE__*/new WeakMap();\n var _pn = /*#__PURE__*/new WeakMap();\n var _fn = /*#__PURE__*/new WeakMap();\n var _gn = /*#__PURE__*/new WeakMap();\n var _mn = /*#__PURE__*/new WeakMap();\n var _bn = /*#__PURE__*/new WeakMap();\n var _vn = /*#__PURE__*/new WeakMap();\n var _yn = /*#__PURE__*/new WeakMap();\n var _An = /*#__PURE__*/new WeakMap();\n var _n9 = /*#__PURE__*/new WeakMap();\n var _Sn = /*#__PURE__*/new WeakMap();\n var _En = /*#__PURE__*/new WeakMap();\n var _xn = /*#__PURE__*/new WeakMap();\n var _wn = /*#__PURE__*/new WeakSet();\n var _Pe3 = /*#__PURE__*/new WeakSet();\n var _Cn = /*#__PURE__*/new WeakSet();\n var _Fn = /*#__PURE__*/new WeakSet();\n var _In = /*#__PURE__*/new WeakSet();\n var _Dn = /*#__PURE__*/new WeakSet();\n var _Ln = /*#__PURE__*/new WeakSet();\n var _Bn = /*#__PURE__*/new WeakSet();\n var _jn = /*#__PURE__*/new WeakSet();\n var _On = /*#__PURE__*/new WeakSet();\n var _Nn = /*#__PURE__*/new WeakSet();\n var _Un = /*#__PURE__*/new WeakSet();\n var _Pn = /*#__PURE__*/new WeakSet();\n var _Hn = /*#__PURE__*/new WeakSet();\n var _kn = /*#__PURE__*/new WeakSet();\n var _Mn = /*#__PURE__*/new WeakSet();\n var _Rn = /*#__PURE__*/new WeakSet();\n var _qn = /*#__PURE__*/new WeakSet();\n var _zn = /*#__PURE__*/new WeakSet();\n var _Xn = /*#__PURE__*/new WeakSet();\n var _Kn = /*#__PURE__*/new WeakSet();\n var _Wn = /*#__PURE__*/new WeakSet();\n var _Tn = /*#__PURE__*/new WeakSet();\n class InkEditor extends r.AnnotationEditor {\n constructor(_t17) {\n super(_objectSpread(_objectSpread({}, _t17), {}, {\n name: \"inkEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Tn);\n _classPrivateMethodInitSpec(this, _Wn);\n _classPrivateMethodInitSpec(this, _Kn);\n _classPrivateMethodInitSpec(this, _Xn);\n _classPrivateMethodInitSpec(this, _zn);\n _classPrivateMethodInitSpec(this, _qn);\n _classPrivateMethodInitSpec(this, _Rn);\n _classPrivateMethodInitSpec(this, _Mn);\n _classPrivateMethodInitSpec(this, _kn);\n _classPrivateMethodInitSpec(this, _Hn);\n _classPrivateMethodInitSpec(this, _Pn);\n _classPrivateMethodInitSpec(this, _Un);\n _classPrivateMethodInitSpec(this, _Nn);\n _classPrivateMethodInitSpec(this, _On);\n _classPrivateMethodInitSpec(this, _jn);\n _classPrivateMethodInitSpec(this, _Bn);\n _classPrivateMethodInitSpec(this, _Ln);\n _classPrivateMethodInitSpec(this, _Dn);\n _classPrivateMethodInitSpec(this, _In);\n _classPrivateMethodInitSpec(this, _Fn);\n _classPrivateMethodInitSpec(this, _Cn);\n _classPrivateMethodInitSpec(this, _Pe3);\n _classPrivateMethodInitSpec(this, _wn);\n _classPrivateFieldInitSpec(this, _hn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _dn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _un, {\n writable: true,\n value: this.canvasContextMenu.bind(this)\n });\n _classPrivateFieldInitSpec(this, _pn, {\n writable: true,\n value: this.canvasPointermove.bind(this)\n });\n _classPrivateFieldInitSpec(this, _fn, {\n writable: true,\n value: this.canvasPointerleave.bind(this)\n });\n _classPrivateFieldInitSpec(this, _gn, {\n writable: true,\n value: this.canvasPointerup.bind(this)\n });\n _classPrivateFieldInitSpec(this, _mn, {\n writable: true,\n value: this.canvasPointerdown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _bn, {\n writable: true,\n value: new Path2D()\n });\n _classPrivateFieldInitSpec(this, _vn, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _yn, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _An, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _n9, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Sn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _En, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _xn, {\n writable: true,\n value: null\n });\n this.color = _t17.color || null;\n this.thickness = _t17.thickness || null;\n this.opacity = _t17.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = !0;\n }\n static initialize(t) {\n this._l10nPromise = new Map([\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"].map(e => [e, t.get(e)]));\n }\n static updateDefaultParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = e;\n break;\n case i.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = e;\n break;\n case i.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = e / 100;\n }\n }\n updateParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.INK_THICKNESS:\n _classPrivateMethodGet(this, _wn, _wn2).call(this, e);\n break;\n case i.AnnotationEditorParamsType.INK_COLOR:\n _classPrivateMethodGet(this, _Pe3, _Pe4).call(this, e);\n break;\n case i.AnnotationEditorParamsType.INK_OPACITY:\n _classPrivateMethodGet(this, _Cn, _Cn2).call(this, e);\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * InkEditor._defaultOpacity)]];\n }\n get propertiesToUpdate() {\n var _this$opacity;\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * ((_this$opacity = this.opacity) !== null && _this$opacity !== void 0 ? _this$opacity : InkEditor._defaultOpacity))]];\n }\n rebuild() {\n super.rebuild();\n if (null !== this.div) {\n if (!this.canvas) {\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n }\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n }\n }\n remove() {\n if (null !== this.canvas) {\n this.isEmpty() || this.commit();\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n _classPrivateFieldGet(this, _n9).disconnect();\n _classPrivateFieldSet(this, _n9, null);\n super.remove();\n }\n }\n setParent(t) {\n !this.parent && t ? this._uiManager.removeShouldRescale(this) : this.parent && null === t && this._uiManager.addShouldRescale(this);\n super.setParent(t);\n }\n onScaleChanging() {\n const [t, e] = this.parentDimensions,\n n = this.width * t,\n i = this.height * e;\n this.setDimensions(n, i);\n }\n enableEditMode() {\n if (!_classPrivateFieldGet(this, _vn) && null !== this.canvas) {\n super.enableEditMode();\n this.div.draggable = !1;\n this.canvas.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n }\n }\n disableEditMode() {\n if (this.isInEditMode() && null !== this.canvas) {\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n }\n }\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n isEmpty() {\n return 0 === this.paths.length || 1 === this.paths.length && 0 === this.paths[0].length;\n }\n commit() {\n if (!_classPrivateFieldGet(this, _vn)) {\n super.commit();\n this.isEditing = !1;\n this.disableEditMode();\n this.setInForeground();\n _classPrivateFieldSet(this, _vn, !0);\n this.div.classList.add(\"disabled\");\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this, !0);\n this.makeResizable();\n this.parent.addInkEditorIfNeeded(!0);\n this.parent.moveEditorInDOM(this);\n this.div.focus({\n preventScroll: !0\n });\n }\n }\n focusin(t) {\n super.focusin(t);\n this.enableEditMode();\n }\n canvasPointerdown(t) {\n if (0 === t.button && this.isInEditMode() && !_classPrivateFieldGet(this, _vn)) {\n this.setInForeground();\n t.preventDefault();\n \"mouse\" !== t.type && this.div.focus();\n _classPrivateMethodGet(this, _Dn, _Dn2).call(this, t.offsetX, t.offsetY);\n }\n }\n canvasContextMenu(t) {\n t.preventDefault();\n }\n canvasPointermove(t) {\n t.preventDefault();\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t.offsetX, t.offsetY);\n }\n canvasPointerup(t) {\n t.preventDefault();\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\n }\n canvasPointerleave(t) {\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\n }\n get isResizable() {\n return !this.isEmpty() && _classPrivateFieldGet(this, _vn);\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n InkEditor._l10nPromise.get(\"editor_ink2_aria_label\").then(t => {\n var _this$div6;\n return (_this$div6 = this.div) === null || _this$div6 === void 0 ? void 0 : _this$div6.setAttribute(\"aria-label\", t);\n });\n const [n, i, r, s] = _classPrivateMethodGet(this, _Fn, _Fn2).call(this);\n this.setAt(n, i, 0, 0);\n this.setDims(r, s);\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n if (this.width) {\n const [n, i] = this.parentDimensions;\n this.setAspectRatio(this.width * n, this.height * i);\n this.setAt(t * n, e * i, this.width * n, this.height * i);\n _classPrivateFieldSet(this, _An, !0);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n this.setDims(this.width * n, this.height * i);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n return this.div;\n }\n setDimensions(t, e) {\n const n = Math.round(t),\n i = Math.round(e);\n if (_classPrivateFieldGet(this, _Sn) === n && _classPrivateFieldGet(this, _En) === i) return;\n _classPrivateFieldSet(this, _Sn, n);\n _classPrivateFieldSet(this, _En, i);\n this.canvas.style.visibility = \"hidden\";\n const [r, s] = this.parentDimensions;\n this.width = t / r;\n this.height = e / s;\n this.fixAndSetPosition();\n _classPrivateFieldGet(this, _vn) && _classPrivateMethodGet(this, _qn, _qn2).call(this, t, e);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n static deserialize(t, e, n) {\n if (t instanceof s.InkAnnotationElement) return null;\n const a = super.deserialize(t, e, n);\n a.thickness = t.thickness;\n a.color = i.Util.makeHexColor(...t.color);\n a.opacity = t.opacity;\n const [o, l] = a.pageDimensions,\n c = a.width * o,\n h = a.height * l,\n d = a.parentScale,\n u = t.thickness / 2;\n _classPrivateFieldSet(a, _vn, !0);\n _classPrivateFieldSet(a, _Sn, Math.round(c));\n _classPrivateFieldSet(a, _En, Math.round(h));\n const {\n paths: p,\n rect: f,\n rotation: g\n } = t;\n for (let {\n bezier: t\n } of p) {\n t = _classStaticPrivateMethodGet(InkEditor, InkEditor, _$n).call(InkEditor, t, f, g);\n const e = [];\n a.paths.push(e);\n let n = d * (t[0] - u),\n i = d * (t[1] - u);\n for (let r = 2, s = t.length; r < s; r += 6) {\n const s = d * (t[r] - u),\n a = d * (t[r + 1] - u),\n o = d * (t[r + 2] - u),\n l = d * (t[r + 3] - u),\n c = d * (t[r + 4] - u),\n h = d * (t[r + 5] - u);\n e.push([[n, i], [s, a], [o, l], [c, h]]);\n n = c;\n i = h;\n }\n const r = _classStaticPrivateMethodGet(this, InkEditor, _Gn).call(this, e);\n a.bezierPath2D.push(r);\n }\n const m = _classPrivateMethodGet(a, _Kn, _Kn2).call(a);\n _classPrivateFieldSet(a, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, m[2] - m[0]));\n _classPrivateFieldSet(a, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, m[3] - m[1]));\n _classPrivateMethodGet(a, _qn, _qn2).call(a, c, h);\n return a;\n }\n serialize() {\n if (this.isEmpty()) return null;\n const t = this.getRect(0, 0),\n e = r.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: i.AnnotationEditorType.INK,\n color: e,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: _classPrivateMethodGet(this, _Xn, _Xn2).call(this, this.scaleFactor / this.parentScale, this.translationX, this.translationY, t),\n pageIndex: this.pageIndex,\n rect: t,\n rotation: this.rotation\n };\n }\n }\n _class41 = InkEditor;\n function _wn2(t) {\n const e = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = t;\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n },\n undo: () => {\n this.thickness = e;\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Pe4(t) {\n const e = this.color;\n this.addCommands({\n cmd: () => {\n this.color = t;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n undo: () => {\n this.color = e;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Cn2(t) {\n t /= 100;\n const e = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = t;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n undo: () => {\n this.opacity = e;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Fn2() {\n const {\n parentRotation: t,\n parentDimensions: [e, n]\n } = this;\n switch (t) {\n case 90:\n return [0, n, n, e];\n case 180:\n return [e, n, e, n];\n case 270:\n return [e, 0, n, e];\n default:\n return [0, 0, e, n];\n }\n }\n function _In2() {\n const {\n ctx: t,\n color: e,\n opacity: n,\n thickness: i,\n parentScale: r,\n scaleFactor: s\n } = this;\n t.lineWidth = i * r / s;\n t.lineCap = \"round\";\n t.lineJoin = \"round\";\n t.miterLimit = 10;\n t.strokeStyle = \"\".concat(e).concat((0, a.opacityToHex)(n));\n }\n function _Dn2(t, e) {\n this.canvas.addEventListener(\"contextmenu\", _classPrivateFieldGet(this, _un));\n this.canvas.addEventListener(\"pointerleave\", _classPrivateFieldGet(this, _fn));\n this.canvas.addEventListener(\"pointermove\", _classPrivateFieldGet(this, _pn));\n this.canvas.addEventListener(\"pointerup\", _classPrivateFieldGet(this, _gn));\n this.canvas.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n this.isEditing = !0;\n if (!_classPrivateFieldGet(this, _An)) {\n var _this$opacity2;\n _classPrivateFieldSet(this, _An, !0);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n this.thickness || (this.thickness = _class41._defaultThickness);\n this.color || (this.color = _class41._defaultColor || r.AnnotationEditor._defaultLineColor);\n (_this$opacity2 = this.opacity) !== null && _this$opacity2 !== void 0 ? _this$opacity2 : this.opacity = _class41._defaultOpacity;\n }\n this.currentPath.push([t, e]);\n _classPrivateFieldSet(this, _yn, !1);\n _classPrivateMethodGet(this, _In, _In2).call(this);\n _classPrivateFieldSet(this, _xn, () => {\n _classPrivateMethodGet(this, _On, _On2).call(this);\n _classPrivateFieldGet(this, _xn) && window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\n });\n window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\n }\n function _Ln2(t, e) {\n const [n, i] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && t === n && e === i) return;\n const r = this.currentPath;\n let s = _classPrivateFieldGet(this, _bn);\n r.push([t, e]);\n _classPrivateFieldSet(this, _yn, !0);\n if (r.length <= 2) {\n s.moveTo(...r[0]);\n s.lineTo(t, e);\n } else {\n if (3 === r.length) {\n _classPrivateFieldSet(this, _bn, s = new Path2D());\n s.moveTo(...r[0]);\n }\n _classPrivateMethodGet(this, _Nn, _Nn2).call(this, s, ...r.at(-3), ...r.at(-2), t, e);\n }\n }\n function _Bn2() {\n if (0 === this.currentPath.length) return;\n const t = this.currentPath.at(-1);\n _classPrivateFieldGet(this, _bn).lineTo(...t);\n }\n function _jn2(t, e) {\n _classPrivateFieldSet(this, _xn, null);\n t = Math.min(Math.max(t, 0), this.canvas.width);\n e = Math.min(Math.max(e, 0), this.canvas.height);\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t, e);\n _classPrivateMethodGet(this, _Bn, _Bn2).call(this);\n let n;\n if (1 !== this.currentPath.length) n = _classPrivateMethodGet(this, _Un, _Un2).call(this);else {\n const i = [t, e];\n n = [[i, i.slice(), i.slice(), i]];\n }\n const i = _classPrivateFieldGet(this, _bn),\n r = this.currentPath;\n this.currentPath = [];\n _classPrivateFieldSet(this, _bn, new Path2D());\n this.addCommands({\n cmd: () => {\n this.allRawPaths.push(r);\n this.paths.push(n);\n this.bezierPath2D.push(i);\n this.rebuild();\n },\n undo: () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (0 === this.paths.length) this.remove();else {\n if (!this.canvas) {\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n }\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n }\n },\n mustExec: !0\n });\n }\n function _On2() {\n if (!_classPrivateFieldGet(this, _yn)) return;\n _classPrivateFieldSet(this, _yn, !1);\n const t = Math.ceil(this.thickness * this.parentScale),\n e = this.currentPath.slice(-3),\n n = e.map(t => t[0]),\n i = e.map(t => t[1]),\n {\n ctx: r\n } = (Math.min(...n), Math.max(...n), Math.min(...i), Math.max(...i), this);\n r.save();\n r.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const t of this.bezierPath2D) r.stroke(t);\n r.stroke(_classPrivateFieldGet(this, _bn));\n r.restore();\n }\n function _Nn2(t, e, n, i, r, s, a) {\n const o = (e + i) / 2,\n l = (n + r) / 2,\n c = (i + s) / 2,\n h = (r + a) / 2;\n t.bezierCurveTo(o + 2 * (i - o) / 3, l + 2 * (r - l) / 3, c + 2 * (i - c) / 3, h + 2 * (r - h) / 3, c, h);\n }\n function _Un2() {\n const t = this.currentPath;\n if (t.length <= 2) return [[t[0], t[0], t.at(-1), t.at(-1)]];\n const e = [];\n let n,\n [i, r] = t[0];\n for (n = 1; n < t.length - 2; n++) {\n const [s, a] = t[n],\n [o, l] = t[n + 1],\n c = (s + o) / 2,\n h = (a + l) / 2,\n d = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\n u = [c + 2 * (s - c) / 3, h + 2 * (a - h) / 3];\n e.push([[i, r], d, u, [c, h]]);\n [i, r] = [c, h];\n }\n const [s, a] = t[n],\n [o, l] = t[n + 1],\n c = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\n h = [o + 2 * (s - o) / 3, l + 2 * (a - l) / 3];\n e.push([[i, r], c, h, [o, l]]);\n return e;\n }\n function _Pn2() {\n if (this.isEmpty()) {\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n return;\n }\n _classPrivateMethodGet(this, _In, _In2).call(this);\n const {\n canvas: t,\n ctx: e\n } = this;\n e.setTransform(1, 0, 0, 1, 0, 0);\n e.clearRect(0, 0, t.width, t.height);\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n for (const t of this.bezierPath2D) e.stroke(t);\n }\n function _Hn2(t) {\n this.canvas.removeEventListener(\"pointerleave\", _classPrivateFieldGet(this, _fn));\n this.canvas.removeEventListener(\"pointermove\", _classPrivateFieldGet(this, _pn));\n this.canvas.removeEventListener(\"pointerup\", _classPrivateFieldGet(this, _gn));\n this.canvas.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n setTimeout(() => {\n this.canvas.removeEventListener(\"contextmenu\", _classPrivateFieldGet(this, _un));\n }, 10);\n _classPrivateMethodGet(this, _jn, _jn2).call(this, t.offsetX, t.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n function _kn2() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n _class41._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(t => {\n var _this$canvas;\n return (_this$canvas = this.canvas) === null || _this$canvas === void 0 ? void 0 : _this$canvas.setAttribute(\"aria-label\", t);\n });\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n function _Mn2() {\n _classPrivateFieldSet(this, _n9, new ResizeObserver(t => {\n const e = t[0].contentRect;\n e.width && e.height && this.setDimensions(e.width, e.height);\n }));\n _classPrivateFieldGet(this, _n9).observe(this.div);\n }\n function _Rn2() {\n if (!_classPrivateFieldGet(this, _An)) return;\n const [t, e] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * t);\n this.canvas.height = Math.ceil(this.height * e);\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n }\n function _qn2(t, e) {\n const n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this),\n i = (t - n) / _classPrivateFieldGet(this, _dn),\n r = (e - n) / _classPrivateFieldGet(this, _hn);\n this.scaleFactor = Math.min(i, r);\n }\n function _zn2() {\n const t = _classPrivateMethodGet(this, _Wn, _Wn2).call(this) / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + t, this.translationY * this.scaleFactor + t);\n }\n function _Gn(t) {\n const e = new Path2D();\n for (let n = 0, i = t.length; n < i; n++) {\n const [i, r, s, a] = t[n];\n 0 === n && e.moveTo(...i);\n e.bezierCurveTo(r[0], r[1], s[0], s[1], a[0], a[1]);\n }\n return e;\n }\n function _Vn(t, e, n) {\n const [i, r, s, a] = e;\n switch (n) {\n case 0:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] += i;\n t[e + 1] = a - t[e + 1];\n }\n break;\n case 90:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = t[e + 1] + i;\n t[e + 1] = n + r;\n }\n break;\n case 180:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] = s - t[e];\n t[e + 1] += r;\n }\n break;\n case 270:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = s - t[e + 1];\n t[e + 1] = a - n;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return t;\n }\n function _$n(t, e, n) {\n const [i, r, s, a] = e;\n switch (n) {\n case 0:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] -= i;\n t[e + 1] = a - t[e + 1];\n }\n break;\n case 90:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = t[e + 1] - r;\n t[e + 1] = n - i;\n }\n break;\n case 180:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] = s - t[e];\n t[e + 1] -= r;\n }\n break;\n case 270:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = a - t[e + 1];\n t[e + 1] = s - n;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return t;\n }\n function _Xn2(t, e, n, i) {\n const r = [],\n s = this.thickness / 2,\n a = t * e + s,\n o = t * n + s;\n for (const e of this.paths) {\n const n = [],\n s = [];\n for (let i = 0, r = e.length; i < r; i++) {\n const [l, c, h, d] = e[i],\n u = t * l[0] + a,\n p = t * l[1] + o,\n f = t * c[0] + a,\n g = t * c[1] + o,\n m = t * h[0] + a,\n b = t * h[1] + o,\n v = t * d[0] + a,\n y = t * d[1] + o;\n if (0 === i) {\n n.push(u, p);\n s.push(u, p);\n }\n n.push(f, g, m, b, v, y);\n s.push(f, g);\n i === r - 1 && s.push(v, y);\n }\n r.push({\n bezier: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, n, i, this.rotation),\n points: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, s, i, this.rotation)\n });\n }\n return r;\n }\n function _Kn2() {\n let t = 1 / 0,\n e = -1 / 0,\n n = 1 / 0,\n r = -1 / 0;\n for (const s of this.paths) for (const [a, o, l, c] of s) {\n const s = i.Util.bezierBoundingBox(...a, ...o, ...l, ...c);\n t = Math.min(t, s[0]);\n n = Math.min(n, s[1]);\n e = Math.max(e, s[2]);\n r = Math.max(r, s[3]);\n }\n return [t, n, e, r];\n }\n function _Wn2() {\n return _classPrivateFieldGet(this, _vn) ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n function _Tn2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.isEmpty()) return;\n if (!_classPrivateFieldGet(this, _vn)) {\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n return;\n }\n const e = _classPrivateMethodGet(this, _Kn, _Kn2).call(this),\n n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this);\n _classPrivateFieldSet(this, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, e[2] - e[0]));\n _classPrivateFieldSet(this, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, e[3] - e[1]));\n const i = Math.ceil(n + _classPrivateFieldGet(this, _dn) * this.scaleFactor),\n s = Math.ceil(n + _classPrivateFieldGet(this, _hn) * this.scaleFactor),\n [a, o] = this.parentDimensions;\n this.width = i / a;\n this.height = s / o;\n this.setAspectRatio(i, s);\n const l = this.translationX,\n c = this.translationY;\n this.translationX = -e[0];\n this.translationY = -e[1];\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n _classPrivateFieldSet(this, _Sn, i);\n _classPrivateFieldSet(this, _En, s);\n this.setDims(i, s);\n const h = t ? n / this.scaleFactor / 2 : 0;\n this.translate(l - this.translationX - h, c - this.translationY - h);\n }\n _defineProperty(InkEditor, \"_defaultColor\", null);\n _defineProperty(InkEditor, \"_defaultOpacity\", 1);\n _defineProperty(InkEditor, \"_defaultThickness\", 1);\n _defineProperty(InkEditor, \"_l10nPromise\", void 0);\n _defineProperty(InkEditor, \"_type\", \"ink\");\n e.InkEditor = InkEditor;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StampEditor = void 0;\n n(148);\n n(151);\n var i = n(163),\n r = n(1),\n s = n(167),\n a = n(197);\n var _Yn = /*#__PURE__*/new WeakMap();\n var _Jn = /*#__PURE__*/new WeakMap();\n var _Qn = /*#__PURE__*/new WeakMap();\n var _Zn = /*#__PURE__*/new WeakMap();\n var _ti = /*#__PURE__*/new WeakMap();\n var _n10 = /*#__PURE__*/new WeakMap();\n var _ei = /*#__PURE__*/new WeakMap();\n var _ni = /*#__PURE__*/new WeakMap();\n var _ii = /*#__PURE__*/new WeakSet();\n var _kn3 = /*#__PURE__*/new WeakSet();\n var _si = /*#__PURE__*/new WeakSet();\n var _ai = /*#__PURE__*/new WeakSet();\n var _ri = /*#__PURE__*/new WeakSet();\n var _oi = /*#__PURE__*/new WeakSet();\n var _Mn3 = /*#__PURE__*/new WeakSet();\n class StampEditor extends i.AnnotationEditor {\n constructor(_t18) {\n super(_objectSpread(_objectSpread({}, _t18), {}, {\n name: \"stampEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Mn3);\n _classPrivateMethodInitSpec(this, _oi);\n _classPrivateMethodInitSpec(this, _ri);\n _classPrivateMethodInitSpec(this, _ai);\n _classPrivateMethodInitSpec(this, _si);\n _classPrivateMethodInitSpec(this, _kn3);\n _classPrivateMethodInitSpec(this, _ii);\n _classPrivateFieldInitSpec(this, _Yn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Jn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Qn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Zn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ti, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _n10, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ei, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ni, {\n writable: true,\n value: !1\n });\n _classPrivateFieldSet(this, _Zn, _t18.bitmapUrl);\n }\n remove() {\n if (_classPrivateFieldGet(this, _Jn)) {\n var _classPrivateFieldGet15, _classPrivateFieldGet16;\n _classPrivateFieldSet(this, _Yn, null);\n this._uiManager.imageManager.deleteId(_classPrivateFieldGet(this, _Jn));\n (_classPrivateFieldGet15 = _classPrivateFieldGet(this, _ti)) === null || _classPrivateFieldGet15 === void 0 ? void 0 : _classPrivateFieldGet15.remove();\n _classPrivateFieldSet(this, _ti, null);\n (_classPrivateFieldGet16 = _classPrivateFieldGet(this, _n10)) === null || _classPrivateFieldGet16 === void 0 ? void 0 : _classPrivateFieldGet16.disconnect();\n _classPrivateFieldSet(this, _n10, null);\n }\n super.remove();\n }\n rebuild() {\n super.rebuild();\n if (null !== this.div) {\n _classPrivateFieldGet(this, _Jn) && _classPrivateMethodGet(this, _ii, _ii2).call(this);\n this.isAttachedToDOM || this.parent.add(this);\n }\n }\n onceAdded() {\n this.div.draggable = !0;\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n isEmpty() {\n return null === _classPrivateFieldGet(this, _Qn) && null === _classPrivateFieldGet(this, _Yn) && null === _classPrivateFieldGet(this, _Zn);\n }\n get isResizable() {\n return !0;\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n if (_classPrivateFieldGet(this, _Yn)) _classPrivateMethodGet(this, _kn3, _kn4).call(this);else {\n this.div.classList.add(\"loading\");\n _classPrivateMethodGet(this, _ii, _ii2).call(this);\n }\n if (this.width) {\n const [n, i] = this.parentDimensions;\n this.setAt(t * n, e * i, this.width * n, this.height * i);\n }\n return this.div;\n }\n static deserialize(t, e, n) {\n if (t instanceof a.StampAnnotationElement) return null;\n const i = super.deserialize(t, e, n),\n {\n rect: r,\n bitmapUrl: s,\n bitmapId: o,\n isSvg: l\n } = t;\n o && n.imageManager.isValidId(o) ? _classPrivateFieldSet(i, _Jn, o) : _classPrivateFieldSet(i, _Zn, s);\n _classPrivateFieldSet(i, _ni, l);\n const [c, h] = i.pageDimensions;\n i.width = (r[2] - r[0]) / c;\n i.height = (r[3] - r[1]) / h;\n return i;\n }\n serialize() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (this.isEmpty()) return null;\n const n = {\n annotationType: r.AnnotationEditorType.STAMP,\n bitmapId: _classPrivateFieldGet(this, _Jn),\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: _classPrivateFieldGet(this, _ni)\n };\n if (t) {\n n.bitmapUrl = _classPrivateMethodGet(this, _oi, _oi2).call(this, !0);\n return n;\n }\n if (null === e) return n;\n e.stamps || (e.stamps = new Map());\n const i = _classPrivateFieldGet(this, _ni) ? (n.rect[2] - n.rect[0]) * (n.rect[3] - n.rect[1]) : null;\n if (e.stamps.has(_classPrivateFieldGet(this, _Jn))) {\n if (_classPrivateFieldGet(this, _ni)) {\n const t = e.stamps.get(_classPrivateFieldGet(this, _Jn));\n if (i > t.area) {\n t.area = i;\n t.serialized.bitmap.close();\n t.serialized.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\n }\n }\n } else {\n e.stamps.set(_classPrivateFieldGet(this, _Jn), {\n area: i,\n serialized: n\n });\n n.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\n }\n return n;\n }\n }\n function _ii2() {\n if (_classPrivateFieldGet(this, _Jn)) {\n this._uiManager.imageManager.getFromId(_classPrivateFieldGet(this, _Jn)).then(t => {\n if (t) {\n _classPrivateFieldSet(this, _Yn, t.bitmap);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n });\n return;\n }\n if (_classPrivateFieldGet(this, _Zn)) {\n const t = _classPrivateFieldGet(this, _Zn);\n _classPrivateFieldSet(this, _Zn, null);\n _classPrivateFieldSet(this, _Qn, this._uiManager.imageManager.getFromUrl(t).then(t => {\n _classPrivateFieldSet(this, _Qn, null);\n if (t) {\n ({\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\n } = t);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n }));\n return;\n }\n const t = document.createElement(\"input\");\n t.type = \"file\";\n t.accept = \"image/*\";\n _classPrivateFieldSet(this, _Qn, new Promise(e => {\n t.addEventListener(\"change\", async () => {\n _classPrivateFieldSet(this, _Qn, null);\n if (t.files && 0 !== t.files.length) {\n const e = await this._uiManager.imageManager.getFromFile(t.files[0]);\n if (!e) {\n this.remove();\n return;\n }\n ({\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\n } = e);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n e();\n });\n t.addEventListener(\"cancel\", () => {\n _classPrivateFieldSet(this, _Qn, null);\n this.remove();\n e();\n });\n }));\n t.click();\n }\n function _kn4() {\n const {\n div: t\n } = this;\n let {\n width: e,\n height: n\n } = _classPrivateFieldGet(this, _Yn);\n const [i, r] = this.pageDimensions,\n s = .75;\n if (this.width) {\n e = this.width * i;\n n = this.height * r;\n } else if (e > s * i || n > s * r) {\n const t = Math.min(s * i / e, s * r / n);\n e *= t;\n n *= t;\n }\n const [a, o] = this.parentDimensions;\n this.setDims(e * a / i, n * o / r);\n const l = _classPrivateFieldSet(this, _ti, document.createElement(\"canvas\"));\n t.append(l);\n _classPrivateMethodGet(this, _ri, _ri2).call(this, e, n);\n _classPrivateMethodGet(this, _Mn3, _Mn4).call(this);\n t.classList.remove(\"loading\");\n }\n function _si2(t, e) {\n const [n, i] = this.parentDimensions;\n this.width = t / n;\n this.height = e / i;\n this.setDims(t, e);\n this.fixAndSetPosition();\n null !== _classPrivateFieldGet(this, _ei) && clearTimeout(_classPrivateFieldGet(this, _ei));\n _classPrivateFieldSet(this, _ei, setTimeout(() => {\n _classPrivateFieldSet(this, _ei, null);\n _classPrivateMethodGet(this, _ri, _ri2).call(this, t, e);\n }, 200));\n }\n function _ai2(t, e) {\n const {\n width: n,\n height: i\n } = _classPrivateFieldGet(this, _Yn);\n let r = n,\n s = i,\n a = _classPrivateFieldGet(this, _Yn);\n for (; r > 2 * t || s > 2 * e;) {\n const n = r,\n i = s;\n r > 2 * t && (r = r >= 16384 ? Math.floor(r / 2) - 1 : Math.ceil(r / 2));\n s > 2 * e && (s = s >= 16384 ? Math.floor(s / 2) - 1 : Math.ceil(s / 2));\n const o = new OffscreenCanvas(r, s);\n o.getContext(\"2d\").drawImage(a, 0, 0, n, i, 0, 0, r, s);\n a = o.transferToImageBitmap();\n }\n return a;\n }\n function _ri2(t, e) {\n const n = _classPrivateFieldGet(this, _ti);\n if (!n || n.width === t && n.height === e) return;\n n.width = t;\n n.height = e;\n const i = _classPrivateFieldGet(this, _ni) ? _classPrivateFieldGet(this, _Yn) : _classPrivateMethodGet(this, _ai, _ai2).call(this, t, e),\n r = n.getContext(\"2d\");\n r.filter = this._uiManager.hcmFilter;\n r.drawImage(i, 0, 0, i.width, i.height, 0, 0, t, e);\n }\n function _oi2(t) {\n if (t) {\n if (_classPrivateFieldGet(this, _ni)) {\n const t = this._uiManager.imageManager.getSvgUrl(_classPrivateFieldGet(this, _Jn));\n if (t) return t;\n }\n const t = document.createElement(\"canvas\");\n ({\n width: t.width,\n height: t.height\n } = _classPrivateFieldGet(this, _Yn));\n t.getContext(\"2d\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0);\n return t.toDataURL();\n }\n if (_classPrivateFieldGet(this, _ni)) {\n const [t, e] = this.pageDimensions,\n n = Math.round(this.width * t * s.PixelsPerInch.PDF_TO_CSS_UNITS),\n i = Math.round(this.height * e * s.PixelsPerInch.PDF_TO_CSS_UNITS),\n r = new OffscreenCanvas(n, i);\n r.getContext(\"2d\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0, _classPrivateFieldGet(this, _Yn).width, _classPrivateFieldGet(this, _Yn).height, 0, 0, n, i);\n return r.transferToImageBitmap();\n }\n return structuredClone(_classPrivateFieldGet(this, _Yn));\n }\n function _Mn4() {\n _classPrivateFieldSet(this, _n10, new ResizeObserver(t => {\n const e = t[0].contentRect;\n e.width && e.height && _classPrivateMethodGet(this, _si, _si2).call(this, e.width, e.height);\n }));\n _classPrivateFieldGet(this, _n10).observe(this.div);\n }\n _defineProperty(StampEditor, \"_type\", \"stamp\");\n e.StampEditor = StampEditor;\n }],\n __webpack_module_cache__ = {};\n function __w_pdfjs_require__(t) {\n var e = __webpack_module_cache__[t];\n if (void 0 !== e) return e.exports;\n var n = __webpack_module_cache__[t] = {\n exports: {}\n };\n __webpack_modules__[t].call(n.exports, n, n.exports, __w_pdfjs_require__);\n return n.exports;\n }\n var __nested_webpack_exports__ = {};\n (() => {\n \"use strict\";\n\n var t = __nested_webpack_exports__;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n Object.defineProperty(t, \"AbortException\", {\n enumerable: !0,\n get: function get() {\n return e.AbortException;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorLayer\", {\n enumerable: !0,\n get: function get() {\n return s.AnnotationEditorLayer;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorParamsType\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationEditorParamsType;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorType\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationEditorType;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorUIManager\", {\n enumerable: !0,\n get: function get() {\n return a.AnnotationEditorUIManager;\n }\n });\n Object.defineProperty(t, \"AnnotationLayer\", {\n enumerable: !0,\n get: function get() {\n return o.AnnotationLayer;\n }\n });\n Object.defineProperty(t, \"AnnotationMode\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationMode;\n }\n });\n Object.defineProperty(t, \"CMapCompressionType\", {\n enumerable: !0,\n get: function get() {\n return e.CMapCompressionType;\n }\n });\n Object.defineProperty(t, \"FeatureTest\", {\n enumerable: !0,\n get: function get() {\n return e.FeatureTest;\n }\n });\n Object.defineProperty(t, \"GlobalWorkerOptions\", {\n enumerable: !0,\n get: function get() {\n return l.GlobalWorkerOptions;\n }\n });\n Object.defineProperty(t, \"ImageKind\", {\n enumerable: !0,\n get: function get() {\n return e.ImageKind;\n }\n });\n Object.defineProperty(t, \"InvalidPDFException\", {\n enumerable: !0,\n get: function get() {\n return e.InvalidPDFException;\n }\n });\n Object.defineProperty(t, \"MissingPDFException\", {\n enumerable: !0,\n get: function get() {\n return e.MissingPDFException;\n }\n });\n Object.defineProperty(t, \"OPS\", {\n enumerable: !0,\n get: function get() {\n return e.OPS;\n }\n });\n Object.defineProperty(t, \"PDFDataRangeTransport\", {\n enumerable: !0,\n get: function get() {\n return n.PDFDataRangeTransport;\n }\n });\n Object.defineProperty(t, \"PDFDateString\", {\n enumerable: !0,\n get: function get() {\n return i.PDFDateString;\n }\n });\n Object.defineProperty(t, \"PDFWorker\", {\n enumerable: !0,\n get: function get() {\n return n.PDFWorker;\n }\n });\n Object.defineProperty(t, \"PasswordResponses\", {\n enumerable: !0,\n get: function get() {\n return e.PasswordResponses;\n }\n });\n Object.defineProperty(t, \"PermissionFlag\", {\n enumerable: !0,\n get: function get() {\n return e.PermissionFlag;\n }\n });\n Object.defineProperty(t, \"PixelsPerInch\", {\n enumerable: !0,\n get: function get() {\n return i.PixelsPerInch;\n }\n });\n Object.defineProperty(t, \"PromiseCapability\", {\n enumerable: !0,\n get: function get() {\n return e.PromiseCapability;\n }\n });\n Object.defineProperty(t, \"RenderingCancelledException\", {\n enumerable: !0,\n get: function get() {\n return i.RenderingCancelledException;\n }\n });\n Object.defineProperty(t, \"SVGGraphics\", {\n enumerable: !0,\n get: function get() {\n return n.SVGGraphics;\n }\n });\n Object.defineProperty(t, \"UnexpectedResponseException\", {\n enumerable: !0,\n get: function get() {\n return e.UnexpectedResponseException;\n }\n });\n Object.defineProperty(t, \"Util\", {\n enumerable: !0,\n get: function get() {\n return e.Util;\n }\n });\n Object.defineProperty(t, \"VerbosityLevel\", {\n enumerable: !0,\n get: function get() {\n return e.VerbosityLevel;\n }\n });\n Object.defineProperty(t, \"XfaLayer\", {\n enumerable: !0,\n get: function get() {\n return c.XfaLayer;\n }\n });\n Object.defineProperty(t, \"build\", {\n enumerable: !0,\n get: function get() {\n return n.build;\n }\n });\n Object.defineProperty(t, \"createValidAbsoluteUrl\", {\n enumerable: !0,\n get: function get() {\n return e.createValidAbsoluteUrl;\n }\n });\n Object.defineProperty(t, \"getDocument\", {\n enumerable: !0,\n get: function get() {\n return n.getDocument;\n }\n });\n Object.defineProperty(t, \"getFilenameFromUrl\", {\n enumerable: !0,\n get: function get() {\n return i.getFilenameFromUrl;\n }\n });\n Object.defineProperty(t, \"getPdfFilenameFromUrl\", {\n enumerable: !0,\n get: function get() {\n return i.getPdfFilenameFromUrl;\n }\n });\n Object.defineProperty(t, \"getXfaPageViewport\", {\n enumerable: !0,\n get: function get() {\n return i.getXfaPageViewport;\n }\n });\n Object.defineProperty(t, \"isDataScheme\", {\n enumerable: !0,\n get: function get() {\n return i.isDataScheme;\n }\n });\n Object.defineProperty(t, \"isPdfFile\", {\n enumerable: !0,\n get: function get() {\n return i.isPdfFile;\n }\n });\n Object.defineProperty(t, \"loadScript\", {\n enumerable: !0,\n get: function get() {\n return i.loadScript;\n }\n });\n Object.defineProperty(t, \"normalizeUnicode\", {\n enumerable: !0,\n get: function get() {\n return e.normalizeUnicode;\n }\n });\n Object.defineProperty(t, \"renderTextLayer\", {\n enumerable: !0,\n get: function get() {\n return r.renderTextLayer;\n }\n });\n Object.defineProperty(t, \"setLayerDimensions\", {\n enumerable: !0,\n get: function get() {\n return i.setLayerDimensions;\n }\n });\n Object.defineProperty(t, \"shadow\", {\n enumerable: !0,\n get: function get() {\n return e.shadow;\n }\n });\n Object.defineProperty(t, \"updateTextLayer\", {\n enumerable: !0,\n get: function get() {\n return r.updateTextLayer;\n }\n });\n Object.defineProperty(t, \"version\", {\n enumerable: !0,\n get: function get() {\n return n.version;\n }\n });\n var e = __w_pdfjs_require__(1),\n n = __w_pdfjs_require__(124),\n i = __w_pdfjs_require__(167),\n r = __w_pdfjs_require__(194),\n s = __w_pdfjs_require__(195),\n a = __w_pdfjs_require__(164),\n o = __w_pdfjs_require__(197),\n l = __w_pdfjs_require__(175),\n c = __w_pdfjs_require__(200);\n })();\n return __nested_webpack_exports__;\n})());\n\n//# sourceURL=webpack://babel/./pdf.js?")}),"./node_modules/core-js/internals/a-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-callable.js?")}),"./node_modules/core-js/internals/a-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-constructor.js?")}),"./node_modules/core-js/internals/a-possible-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-possible-prototype.js?")}),"./node_modules/core-js/internals/add-to-unscopables.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/add-to-unscopables.js?")}),"./node_modules/core-js/internals/advance-string-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").charAt);\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/advance-string-index.js?")}),"./node_modules/core-js/internals/an-instance.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-instance.js?")}),"./node_modules/core-js/internals/an-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-object.js?")}),"./node_modules/core-js/internals/array-buffer-basic-detection.js":((module)=>{eval("\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-basic-detection.js?")}),"./node_modules/core-js/internals/array-buffer-non-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-non-extensible.js?")}),"./node_modules/core-js/internals/array-buffer-view-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \"./node_modules/core-js/internals/array-buffer-basic-detection.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-view-core.js?")}),"./node_modules/core-js/internals/array-buffer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \"./node_modules/core-js/internals/array-buffer-basic-detection.js\");\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \"./node_modules/core-js/internals/to-index.js\");\nvar IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ \"./node_modules/core-js/internals/ieee754.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar arrayFill = __webpack_require__(/*! ../internals/array-fill */ \"./node_modules/core-js/internals/array-fill.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var pack = conversion(+value);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n type: ARRAY_BUFFER,\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) {\n this.byteLength = byteLength;\n this.detached = false;\n }\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferState = getInternalArrayBufferState(buffer);\n var bufferLength = bufferState.byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n type: DATA_VIEW,\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset,\n bytes: bufferState.bytes\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n addGetter($DataView, 'buffer', getInternalDataViewState);\n addGetter($DataView, 'byteLength', getInternalDataViewState);\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer.js?")}),"./node_modules/core-js/internals/array-fill.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-fill.js?")}),"./node_modules/core-js/internals/array-from-constructor-and-list.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from-constructor-and-list.js?")}),"./node_modules/core-js/internals/array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from.js?")}),"./node_modules/core-js/internals/array-includes.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-includes.js?")}),"./node_modules/core-js/internals/array-iteration-from-last.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE == 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var index = lengthOfArrayLike(self);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration-from-last.js?")}),"./node_modules/core-js/internals/array-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js/internals/array-species-create.js\");\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration.js?")}),"./node_modules/core-js/internals/array-method-is-strict.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-method-is-strict.js?")}),"./node_modules/core-js/internals/array-set-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-set-length.js?")}),"./node_modules/core-js/internals/array-slice-simple.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice-simple.js?")}),"./node_modules/core-js/internals/array-slice.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis([].slice);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice.js?")}),"./node_modules/core-js/internals/array-sort.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-sort.js?")}),"./node_modules/core-js/internals/array-species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-constructor.js?")}),"./node_modules/core-js/internals/array-species-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ \"./node_modules/core-js/internals/array-species-constructor.js\");\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-create.js?")}),"./node_modules/core-js/internals/array-to-reversed.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-to-reversed.js?")}),"./node_modules/core-js/internals/array-with.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-with.js?")}),"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \"./node_modules/core-js/internals/iterator-close.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/call-with-safe-iteration-closing.js?")}),"./node_modules/core-js/internals/check-correctness-of-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/check-correctness-of-iteration.js?")}),"./node_modules/core-js/internals/classof-raw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof-raw.js?")}),"./node_modules/core-js/internals/classof.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js/internals/to-string-tag-support.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof.js?")}),"./node_modules/core-js/internals/collection-weak.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar getWeakData = (__webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\").getWeakData);\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js/internals/array-iteration.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (state) {\n return state.frozen || (state.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) splice(this.entries, index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n defineBuiltIns(Prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && hasOwn(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && hasOwn(data, state.id);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return Constructor;\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection-weak.js?")}),"./node_modules/core-js/internals/collection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection.js?")}),"./node_modules/core-js/internals/copy-constructor-properties.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/copy-constructor-properties.js?")}),"./node_modules/core-js/internals/correct-is-regexp-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-is-regexp-logic.js?")}),"./node_modules/core-js/internals/correct-prototype-getter.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-prototype-getter.js?")}),"./node_modules/core-js/internals/create-iter-result-object.js":((module)=>{eval("\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-iter-result-object.js?")}),"./node_modules/core-js/internals/create-non-enumerable-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-non-enumerable-property.js?")}),"./node_modules/core-js/internals/create-property-descriptor.js":((module)=>{eval("\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property-descriptor.js?")}),"./node_modules/core-js/internals/create-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property.js?")}),"./node_modules/core-js/internals/define-built-in-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/core-js/internals/make-built-in.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in-accessor.js?")}),"./node_modules/core-js/internals/define-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/core-js/internals/make-built-in.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in.js?")}),"./node_modules/core-js/internals/define-built-ins.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-ins.js?")}),"./node_modules/core-js/internals/define-global-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-global-property.js?")}),"./node_modules/core-js/internals/delete-property-or-throw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/delete-property-or-throw.js?")}),"./node_modules/core-js/internals/descriptors.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/descriptors.js?")}),"./node_modules/core-js/internals/document-all.js":((module)=>{eval("\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-all.js?")}),"./node_modules/core-js/internals/document-create-element.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-create-element.js?")}),"./node_modules/core-js/internals/does-not-exceed-safe-integer.js":((module)=>{eval("\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/does-not-exceed-safe-integer.js?")}),"./node_modules/core-js/internals/dom-exception-constants.js":((module)=>{eval("\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-exception-constants.js?")}),"./node_modules/core-js/internals/dom-iterables.js":((module)=>{eval("\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-iterables.js?")}),"./node_modules/core-js/internals/dom-token-list-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-token-list-prototype.js?")}),"./node_modules/core-js/internals/engine-ff-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-ff-version.js?")}),"./node_modules/core-js/internals/engine-is-browser.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-browser.js?")}),"./node_modules/core-js/internals/engine-is-deno.js":((module)=>{eval("\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-deno.js?")}),"./node_modules/core-js/internals/engine-is-ie-or-edge.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar UA = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ie-or-edge.js?")}),"./node_modules/core-js/internals/engine-is-ios-pebble.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios-pebble.js?")}),"./node_modules/core-js/internals/engine-is-ios.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios.js?")}),"./node_modules/core-js/internals/engine-is-node.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-node.js?")}),"./node_modules/core-js/internals/engine-is-webos-webkit.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-webos-webkit.js?")}),"./node_modules/core-js/internals/engine-user-agent.js":((module)=>{eval("\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-user-agent.js?")}),"./node_modules/core-js/internals/engine-v8-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-v8-version.js?")}),"./node_modules/core-js/internals/engine-webkit-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-webkit-version.js?")}),"./node_modules/core-js/internals/enum-bug-keys.js":((module)=>{eval("\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/enum-bug-keys.js?")}),"./node_modules/core-js/internals/error-stack-clear.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-clear.js?")}),"./node_modules/core-js/internals/error-stack-install.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \"./node_modules/core-js/internals/error-stack-installable.js\");\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n if (ERROR_STACK_INSTALLABLE) {\n if (captureStackTrace) captureStackTrace(error, C);\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-install.js?")}),"./node_modules/core-js/internals/error-stack-installable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-installable.js?")}),"./node_modules/core-js/internals/error-to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n if (DESCRIPTORS) {\n // Chrome 32- incorrectly call accessor\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n var object = create(Object.defineProperty({}, 'name', { get: function () {\n return this === object;\n } }));\n if (nativeErrorToString.call(object) !== 'true') return true;\n }\n // FF10- does not properly handle non-strings\n return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n // IE8 does not properly handle defaults\n || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n var O = anObject(this);\n var name = normalizeStringArgument(O.name, 'Error');\n var message = normalizeStringArgument(O.message);\n return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-to-string.js?")}),"./node_modules/core-js/internals/export.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/export.js?")}),"./node_modules/core-js/internals/fails.js":((module)=>{eval("\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fails.js?")}),"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(/*! ../modules/es.regexp.exec */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js?")}),"./node_modules/core-js/internals/flatten-into-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/flatten-into-array.js?")}),"./node_modules/core-js/internals/freezing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/freezing.js?")}),"./node_modules/core-js/internals/function-apply.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-apply.js?")}),"./node_modules/core-js/internals/function-bind-context.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-context.js?")}),"./node_modules/core-js/internals/function-bind-native.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-native.js?")}),"./node_modules/core-js/internals/function-call.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-call.js?")}),"./node_modules/core-js/internals/function-name.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-name.js?")}),"./node_modules/core-js/internals/function-uncurry-this-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-accessor.js?")}),"./node_modules/core-js/internals/function-uncurry-this-clause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-clause.js?")}),"./node_modules/core-js/internals/function-uncurry-this.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this.js?")}),"./node_modules/core-js/internals/get-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-built-in.js?")}),"./node_modules/core-js/internals/get-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator-method.js?")}),"./node_modules/core-js/internals/get-iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator.js?")}),"./node_modules/core-js/internals/get-json-replacer-function.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-json-replacer-function.js?")}),"./node_modules/core-js/internals/get-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-method.js?")}),"./node_modules/core-js/internals/get-substitution.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-substitution.js?")}),"./node_modules/core-js/internals/global.js":(function(module,__unused_webpack_exports,__webpack_require__){eval("\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/global.js?")}),"./node_modules/core-js/internals/has-own-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/has-own-property.js?")}),"./node_modules/core-js/internals/hidden-keys.js":((module)=>{eval("\nmodule.exports = {};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/hidden-keys.js?")}),"./node_modules/core-js/internals/host-report-errors.js":((module)=>{eval("\nmodule.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/host-report-errors.js?")}),"./node_modules/core-js/internals/html.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/html.js?")}),"./node_modules/core-js/internals/ie8-dom-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ie8-dom-define.js?")}),"./node_modules/core-js/internals/ieee754.js":((module)=>{eval("\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ieee754.js?")}),"./node_modules/core-js/internals/indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/indexed-object.js?")}),"./node_modules/core-js/internals/inherit-if-required.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inherit-if-required.js?")}),"./node_modules/core-js/internals/inspect-source.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inspect-source.js?")}),"./node_modules/core-js/internals/install-error-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/install-error-cause.js?")}),"./node_modules/core-js/internals/internal-metadata.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertyNamesExternalModule = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \"./node_modules/core-js/internals/object-get-own-property-names-external.js\");\nvar isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ \"./node_modules/core-js/internals/object-is-extensible.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-metadata.js?")}),"./node_modules/core-js/internals/internal-state.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \"./node_modules/core-js/internals/weak-map-basic-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar shared = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-state.js?")}),"./node_modules/core-js/internals/is-array-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array-iterator-method.js?")}),"./node_modules/core-js/internals/is-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array.js?")}),"./node_modules/core-js/internals/is-big-int-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass == 'BigInt64Array' || klass == 'BigUint64Array';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-big-int-array.js?")}),"./node_modules/core-js/internals/is-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-callable.js?")}),"./node_modules/core-js/internals/is-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-constructor.js?")}),"./node_modules/core-js/internals/is-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-forced.js?")}),"./node_modules/core-js/internals/is-integral-number.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-integral-number.js?")}),"./node_modules/core-js/internals/is-null-or-undefined.js":((module)=>{eval("\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-null-or-undefined.js?")}),"./node_modules/core-js/internals/is-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-object.js?")}),"./node_modules/core-js/internals/is-pure.js":((module)=>{eval("\nmodule.exports = false;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-pure.js?")}),"./node_modules/core-js/internals/is-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-regexp.js?")}),"./node_modules/core-js/internals/is-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js/internals/use-symbol-as-uid.js\");\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-symbol.js?")}),"./node_modules/core-js/internals/iterate.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \"./node_modules/core-js/internals/iterator-close.js\");\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterate.js?")}),"./node_modules/core-js/internals/iterator-close.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-close.js?")}),"./node_modules/core-js/internals/iterator-create-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype);\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-create-constructor.js?")}),"./node_modules/core-js/internals/iterator-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js/internals/iterator-create-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-define.js?")}),"./node_modules/core-js/internals/iterators-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators-core.js?")}),"./node_modules/core-js/internals/iterators.js":((module)=>{eval("\nmodule.exports = {};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators.js?")}),"./node_modules/core-js/internals/length-of-array-like.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/length-of-array-like.js?")}),"./node_modules/core-js/internals/make-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").CONFIGURABLE);\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/make-built-in.js?")}),"./node_modules/core-js/internals/map-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-map -- safe\n Map: Map,\n set: uncurryThis(MapPrototype.set),\n get: uncurryThis(MapPrototype.get),\n has: uncurryThis(MapPrototype.has),\n remove: uncurryThis(MapPrototype['delete']),\n proto: MapPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/map-helpers.js?")}),"./node_modules/core-js/internals/math-trunc.js":((module)=>{eval("\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/math-trunc.js?")}),"./node_modules/core-js/internals/microtask.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar macrotask = (__webpack_require__(/*! ../internals/task */ \"./node_modules/core-js/internals/task.js\").set);\nvar Queue = __webpack_require__(/*! ../internals/queue */ \"./node_modules/core-js/internals/queue.js\");\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js/internals/engine-is-ios.js\");\nvar IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/engine-is-ios-pebble */ \"./node_modules/core-js/internals/engine-is-ios-pebble.js\");\nvar IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ \"./node_modules/core-js/internals/engine-is-webos-webkit.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/microtask.js?")}),"./node_modules/core-js/internals/new-promise-capability.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/new-promise-capability.js?")}),"./node_modules/core-js/internals/normalize-string-argument.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/normalize-string-argument.js?")}),"./node_modules/core-js/internals/not-a-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/not-a-regexp.js?")}),"./node_modules/core-js/internals/number-parse-float.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : $parseFloat;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-float.js?")}),"./node_modules/core-js/internals/number-parse-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-int.js?")}),"./node_modules/core-js/internals/object-assign.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-assign.js?")}),"./node_modules/core-js/internals/object-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-create.js?")}),"./node_modules/core-js/internals/object-define-properties.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js/internals/v8-prototype-define-bug.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-properties.js?")}),"./node_modules/core-js/internals/object-define-property.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js/internals/v8-prototype-define-bug.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-property.js?")}),"./node_modules/core-js/internals/object-get-own-property-descriptor.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-descriptor.js?")}),"./node_modules/core-js/internals/object-get-own-property-names-external.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names-external.js?")}),"./node_modules/core-js/internals/object-get-own-property-names.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names.js?")}),"./node_modules/core-js/internals/object-get-own-property-symbols.js":((__unused_webpack_module,exports)=>{eval("\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-symbols.js?")}),"./node_modules/core-js/internals/object-get-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-prototype-of.js?")}),"./node_modules/core-js/internals/object-is-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(/*! ../internals/array-buffer-non-extensible */ \"./node_modules/core-js/internals/array-buffer-non-extensible.js\");\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-extensible.js?")}),"./node_modules/core-js/internals/object-is-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-prototype-of.js?")}),"./node_modules/core-js/internals/object-keys-internal.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar indexOf = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").indexOf);\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys-internal.js?")}),"./node_modules/core-js/internals/object-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys.js?")}),"./node_modules/core-js/internals/object-property-is-enumerable.js":((__unused_webpack_module,exports)=>{eval("\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-property-is-enumerable.js?")}),"./node_modules/core-js/internals/object-set-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ \"./node_modules/core-js/internals/function-uncurry-this-accessor.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \"./node_modules/core-js/internals/a-possible-prototype.js\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-set-prototype-of.js?")}),"./node_modules/core-js/internals/ordinary-to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ordinary-to-primitive.js?")}),"./node_modules/core-js/internals/own-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/own-keys.js?")}),"./node_modules/core-js/internals/perform.js":((module)=>{eval("\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/perform.js?")}),"./node_modules/core-js/internals/promise-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \"./node_modules/core-js/internals/engine-is-browser.js\");\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-constructor-detection.js?")}),"./node_modules/core-js/internals/promise-native-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nmodule.exports = global.Promise;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-native-constructor.js?")}),"./node_modules/core-js/internals/promise-resolve.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-resolve.js?")}),"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js?")}),"./node_modules/core-js/internals/proxy-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/proxy-accessor.js?")}),"./node_modules/core-js/internals/queue.js":((module)=>{eval("\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/queue.js?")}),"./node_modules/core-js/internals/regexp-exec-abstract.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec-abstract.js?")}),"./node_modules/core-js/internals/regexp-exec.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").get);\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \"./node_modules/core-js/internals/regexp-unsupported-ncg.js\");\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec.js?")}),"./node_modules/core-js/internals/regexp-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-flags.js?")}),"./node_modules/core-js/internals/regexp-get-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-get-flags.js?")}),"./node_modules/core-js/internals/regexp-sticky-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-sticky-helpers.js?")}),"./node_modules/core-js/internals/regexp-unsupported-dot-all.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-dot-all.js?")}),"./node_modules/core-js/internals/regexp-unsupported-ncg.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-ncg.js?")}),"./node_modules/core-js/internals/require-object-coercible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/require-object-coercible.js?")}),"./node_modules/core-js/internals/set-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-helpers.js?")}),"./node_modules/core-js/internals/set-species.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-species.js?")}),"./node_modules/core-js/internals/set-to-string-tag.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-to-string-tag.js?")}),"./node_modules/core-js/internals/shared-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-key.js?")}),"./node_modules/core-js/internals/shared-store.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-store.js?")}),"./node_modules/core-js/internals/shared.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.32.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared.js?")}),"./node_modules/core-js/internals/species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \"./node_modules/core-js/internals/a-constructor.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/species-constructor.js?")}),"./node_modules/core-js/internals/string-multibyte.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-multibyte.js?")}),"./node_modules/core-js/internals/string-punycode-to-ascii.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-punycode-to-ascii.js?")}),"./node_modules/core-js/internals/string-repeat.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-repeat.js?")}),"./node_modules/core-js/internals/string-trim-end.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $trimEnd = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").end);\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js/internals/string-trim-forced.js\");\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-end.js?")}),"./node_modules/core-js/internals/string-trim-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").PROPER);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-forced.js?")}),"./node_modules/core-js/internals/string-trim.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim.js?")}),"./node_modules/core-js/internals/structured-clone-proper-transfer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \"./node_modules/core-js/internals/engine-is-browser.js\");\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength != 0 || clone.byteLength != 8;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/structured-clone-proper-transfer.js?")}),"./node_modules/core-js/internals/symbol-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/symbol-constructor-detection.js?")}),"./node_modules/core-js/internals/task.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js/internals/engine-is-ios.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/task.js?")}),"./node_modules/core-js/internals/this-number-value.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/this-number-value.js?")}),"./node_modules/core-js/internals/to-absolute-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-absolute-index.js?")}),"./node_modules/core-js/internals/to-big-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-big-int.js?")}),"./node_modules/core-js/internals/to-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw $RangeError('Wrong length or index');\n return length;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-index.js?")}),"./node_modules/core-js/internals/to-indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-indexed-object.js?")}),"./node_modules/core-js/internals/to-integer-or-infinity.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar trunc = __webpack_require__(/*! ../internals/math-trunc */ \"./node_modules/core-js/internals/math-trunc.js\");\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-integer-or-infinity.js?")}),"./node_modules/core-js/internals/to-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-length.js?")}),"./node_modules/core-js/internals/to-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-object.js?")}),"./node_modules/core-js/internals/to-offset.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ \"./node_modules/core-js/internals/to-positive-integer.js\");\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-offset.js?")}),"./node_modules/core-js/internals/to-positive-integer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-positive-integer.js?")}),"./node_modules/core-js/internals/to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ \"./node_modules/core-js/internals/ordinary-to-primitive.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-primitive.js?")}),"./node_modules/core-js/internals/to-property-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-property-key.js?")}),"./node_modules/core-js/internals/to-string-tag-support.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string-tag-support.js?")}),"./node_modules/core-js/internals/to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string.js?")}),"./node_modules/core-js/internals/to-uint8-clamped.js":((module)=>{eval("\nvar round = Math.round;\n\nmodule.exports = function (it) {\n var value = round(it);\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-uint8-clamped.js?")}),"./node_modules/core-js/internals/try-node-require.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nmodule.exports = function (name) {\n try {\n // eslint-disable-next-line no-new-func -- safe\n if (IS_NODE) return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-node-require.js?")}),"./node_modules/core-js/internals/try-to-string.js":((module)=>{eval("\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-to-string.js?")}),"./node_modules/core-js/internals/typed-array-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ \"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar isIntegralNumber = __webpack_require__(/*! ../internals/is-integral-number */ \"./node_modules/core-js/internals/is-integral-number.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \"./node_modules/core-js/internals/to-index.js\");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \"./node_modules/core-js/internals/to-offset.js\");\nvar toUint8Clamped = __webpack_require__(/*! ../internals/to-uint8-clamped */ \"./node_modules/core-js/internals/to-uint8-clamped.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ \"./node_modules/core-js/internals/typed-array-from.js\");\nvar forEach = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js/internals/array-iteration.js\").forEach);\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n defineBuiltInAccessor(it, key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructor.js?")}),"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\").NATIVE_ARRAY_BUFFER_VIEWS);\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js?")}),"./node_modules/core-js/internals/typed-array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \"./node_modules/core-js/internals/a-constructor.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \"./node_modules/core-js/internals/is-big-int-array.js\");\nvar aTypedArrayConstructor = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\").aTypedArrayConstructor);\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-from.js?")}),"./node_modules/core-js/internals/uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/uid.js?")}),"./node_modules/core-js/internals/url-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/url-constructor-detection.js?")}),"./node_modules/core-js/internals/use-symbol-as-uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/use-symbol-as-uid.js?")}),"./node_modules/core-js/internals/v8-prototype-define-bug.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/v8-prototype-define-bug.js?")}),"./node_modules/core-js/internals/validate-arguments-length.js":((module)=>{eval("\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/validate-arguments-length.js?")}),"./node_modules/core-js/internals/weak-map-basic-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/weak-map-basic-detection.js?")}),"./node_modules/core-js/internals/well-known-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js/internals/use-symbol-as-uid.js\");\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/well-known-symbol.js?")}),"./node_modules/core-js/internals/whitespaces.js":((module)=>{eval("\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/whitespaces.js?")}),"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \"./node_modules/core-js/internals/proxy-accessor.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ \"./node_modules/core-js/internals/install-error-cause.js\");\nvar installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ \"./node_modules/core-js/internals/error-stack-install.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n installErrorStack(result, WrappedError, result.stack, 2);\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js?")}),"./node_modules/core-js/modules/es.array-buffer.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.constructor.js?")}),"./node_modules/core-js/modules/es.array-buffer.slice.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice && end === undefined) {\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\n } return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.slice.js?")}),"./node_modules/core-js/modules/es.array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n at: function at(index) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n }\n});\n\naddToUnscopables('at');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.at.js?")}),"./node_modules/core-js/modules/es.array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLastIndex);\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\naddToUnscopables('findLastIndex');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last-index.js?")}),"./node_modules/core-js/modules/es.array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLast);\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n findLast: function findLast(callbackfn /* , that = undefined */) {\n return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\naddToUnscopables('findLast');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last.js?")}),"./node_modules/core-js/modules/es.array.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar flattenIntoArray = __webpack_require__(/*! ../internals/flatten-into-array */ \"./node_modules/core-js/internals/flatten-into-array.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js/internals/array-species-create.js\");\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.flat-map.js?")}),"./node_modules/core-js/modules/es.array.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $includes = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").includes);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.includes.js?")}),"./node_modules/core-js/modules/es.array.iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js/internals/create-iter-result-object.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n if (kind == 'keys') return createIterResultObject(index, false);\n if (kind == 'values') return createIterResultObject(target[index], false);\n return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.iterator.js?")}),"./node_modules/core-js/modules/es.array.push.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \"./node_modules/core-js/internals/array-set-length.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.push.js?")}),"./node_modules/core-js/modules/es.array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \"./node_modules/core-js/internals/delete-property-or-throw.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js/internals/array-method-is-strict.js\");\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \"./node_modules/core-js/internals/engine-ff-version.js\");\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \"./node_modules/core-js/internals/engine-is-ie-or-edge.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \"./node_modules/core-js/internals/engine-webkit-version.js\");\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.sort.js?")}),"./node_modules/core-js/modules/es.array.unscopables.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.unscopables.flat-map.js?")}),"./node_modules/core-js/modules/es.array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \"./node_modules/core-js/internals/array-with.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n 'with': function (index, value) {\n return arrayWith(toIndexedObject(this), $Array, index, value);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.with.js?")}),"./node_modules/core-js/modules/es.error.cause.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar wrapErrorConstructorWithCause = __webpack_require__(/*! ../internals/wrap-error-constructor-with-cause */ \"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js\");\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.error.cause.js?")}),"./node_modules/core-js/modules/es.global-this.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n globalThis: global\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.global-this.js?")}),"./node_modules/core-js/modules/es.json.stringify.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\nvar getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ \"./node_modules/core-js/internals/get-json-replacer-function.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.json.stringify.js?")}),"./node_modules/core-js/modules/es.math.hypot.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n hypot: function hypot(value1, value2) {\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.math.hypot.js?")}),"./node_modules/core-js/modules/es.number.to-fixed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar thisNumberValue = __webpack_require__(/*! ../internals/this-number-value */ \"./node_modules/core-js/internals/this-number-value.js\");\nvar $repeat = __webpack_require__(/*! ../internals/string-repeat */ \"./node_modules/core-js/internals/string-repeat.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return nativeToFixed(0.00008, 3) !== '0.000' ||\n nativeToFixed(0.9, 0) !== '1' ||\n nativeToFixed(1.255, 2) !== '1.25' ||\n nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.number.to-fixed.js?")}),"./node_modules/core-js/modules/es.object.assign.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js/internals/object-assign.js\");\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.assign.js?")}),"./node_modules/core-js/modules/es.object.has-own.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n hasOwn: hasOwn\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.has-own.js?")}),"./node_modules/core-js/modules/es.parse-float.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $parseFloat = __webpack_require__(/*! ../internals/number-parse-float */ \"./node_modules/core-js/internals/number-parse-float.js\");\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-float.js?")}),"./node_modules/core-js/modules/es.parse-int.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ \"./node_modules/core-js/internals/number-parse-int.js\");\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n parseInt: $parseInt\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-int.js?")}),"./node_modules/core-js/modules/es.promise.all-settled.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all-settled.js?")}),"./node_modules/core-js/modules/es.promise.all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all.js?")}),"./node_modules/core-js/modules/es.promise.catch.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.catch.js?")}),"./node_modules/core-js/modules/es.promise.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar task = (__webpack_require__(/*! ../internals/task */ \"./node_modules/core-js/internals/task.js\").set);\nvar microtask = __webpack_require__(/*! ../internals/microtask */ \"./node_modules/core-js/internals/microtask.js\");\nvar hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ \"./node_modules/core-js/internals/host-report-errors.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar Queue = __webpack_require__(/*! ../internals/queue */ \"./node_modules/core-js/internals/queue.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.constructor.js?")}),"./node_modules/core-js/modules/es.promise.finally.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js/internals/promise-resolve.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.finally.js?")}),"./node_modules/core-js/modules/es.promise.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(/*! ../modules/es.promise.constructor */ \"./node_modules/core-js/modules/es.promise.constructor.js\");\n__webpack_require__(/*! ../modules/es.promise.all */ \"./node_modules/core-js/modules/es.promise.all.js\");\n__webpack_require__(/*! ../modules/es.promise.catch */ \"./node_modules/core-js/modules/es.promise.catch.js\");\n__webpack_require__(/*! ../modules/es.promise.race */ \"./node_modules/core-js/modules/es.promise.race.js\");\n__webpack_require__(/*! ../modules/es.promise.reject */ \"./node_modules/core-js/modules/es.promise.reject.js\");\n__webpack_require__(/*! ../modules/es.promise.resolve */ \"./node_modules/core-js/modules/es.promise.resolve.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.js?")}),"./node_modules/core-js/modules/es.promise.race.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.race.js?")}),"./node_modules/core-js/modules/es.promise.reject.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.reject.js?")}),"./node_modules/core-js/modules/es.promise.resolve.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js/internals/promise-resolve.js\");\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.resolve.js?")}),"./node_modules/core-js/modules/es.reflect.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.reflect.to-string-tag.js?")}),"./node_modules/core-js/modules/es.regexp.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \"./node_modules/core-js/internals/proxy-accessor.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").enforce);\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \"./node_modules/core-js/internals/regexp-unsupported-ncg.js\");\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.constructor.js?")}),"./node_modules/core-js/modules/es.regexp.dot-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").get);\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.dot-all.js?")}),"./node_modules/core-js/modules/es.regexp.exec.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar exec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.exec.js?")}),"./node_modules/core-js/modules/es.regexp.flags.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.flags.js?")}),"./node_modules/core-js/modules/es.regexp.test.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(/*! ../modules/es.regexp.exec */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (S) {\n var R = anObject(this);\n var string = toString(S);\n var exec = R.exec;\n if (!isCallable(exec)) return call(nativeTest, R, string);\n var result = call(exec, R, string);\n if (result === null) return false;\n anObject(result);\n return true;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.test.js?")}),"./node_modules/core-js/modules/es.regexp.to-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").PROPER);\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.to-string.js?")}),"./node_modules/core-js/modules/es.string.at-alternative.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-array-string-prototype-at -- safe\n return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n at: function at(index) {\n var S = toString(requireObjectCoercible(this));\n var len = S.length;\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.at-alternative.js?")}),"./node_modules/core-js/modules/es.string.ends-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return nativeEndsWith\n ? nativeEndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.ends-with.js?")}),"./node_modules/core-js/modules/es.string.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.includes.js?")}),"./node_modules/core-js/modules/es.string.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").charAt);\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js/internals/create-iter-result-object.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.iterator.js?")}),"./node_modules/core-js/modules/es.string.match.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.match.js?")}),"./node_modules/core-js/modules/es.string.replace-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \"./node_modules/core-js/internals/get-substitution.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace-all.js?")}),"./node_modules/core-js/modules/es.string.replace.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \"./node_modules/core-js/internals/get-substitution.js\");\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace.js?")}),"./node_modules/core-js/modules/es.string.split.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.split.js?")}),"./node_modules/core-js/modules/es.string.starts-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return nativeStartsWith\n ? nativeStartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.starts-with.js?")}),"./node_modules/core-js/modules/es.string.trim-end.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this line from `core-js@4`\n__webpack_require__(/*! ../modules/es.string.trim-right */ \"./node_modules/core-js/modules/es.string.trim-right.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \"./node_modules/core-js/internals/string-trim-end.js\");\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n trimEnd: trimEnd\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-end.js?")}),"./node_modules/core-js/modules/es.string.trim-right.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \"./node_modules/core-js/internals/string-trim-end.js\");\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n trimRight: trimEnd\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-right.js?")}),"./node_modules/core-js/modules/es.string.trim.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js/internals/string-trim-forced.js\");\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim.js?")}),"./node_modules/core-js/modules/es.symbol.description.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = thisSymbolValue(this);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var string = symbolDescriptiveString(symbol);\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.symbol.description.js?")}),"./node_modules/core-js/modules/es.typed-array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.at.js?")}),"./node_modules/core-js/modules/es.typed-array.fill.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $fill = __webpack_require__(/*! ../internals/array-fill */ \"./node_modules/core-js/internals/array-fill.js\");\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.fill.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLastIndex);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last-index.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLast);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last.js?")}),"./node_modules/core-js/modules/es.typed-array.int32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.int8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.set.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \"./node_modules/core-js/internals/to-offset.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.set.js?")}),"./node_modules/core-js/modules/es.typed-array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \"./node_modules/core-js/internals/engine-ff-version.js\");\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \"./node_modules/core-js/internals/engine-is-ie-or-edge.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \"./node_modules/core-js/internals/engine-webkit-version.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.sort.js?")}),"./node_modules/core-js/modules/es.typed-array.to-locale-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-locale-string.js?")}),"./node_modules/core-js/modules/es.typed-array.to-reversed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arrayToReversed = __webpack_require__(/*! ../internals/array-to-reversed */ \"./node_modules/core-js/internals/array-to-reversed.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-reversed.js?")}),"./node_modules/core-js/modules/es.typed-array.to-sorted.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ \"./node_modules/core-js/internals/array-from-constructor-and-list.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-sorted.js?")}),"./node_modules/core-js/modules/es.typed-array.uint32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js?")}),"./node_modules/core-js/modules/es.typed-array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \"./node_modules/core-js/internals/array-with.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \"./node_modules/core-js/internals/is-big-int-array.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.with.js?")}),"./node_modules/core-js/modules/es.weak-map.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\");\nvar collection = __webpack_require__(/*! ../internals/collection */ \"./node_modules/core-js/internals/collection.js\");\nvar collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ \"./node_modules/core-js/internals/collection-weak.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").enforce);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \"./node_modules/core-js/internals/weak-map-basic-detection.js\");\n\nvar $Object = Object;\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray = Array.isArray;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = $Object.isExtensible;\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar isFrozen = $Object.isFrozen;\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar isSealed = $Object.isSealed;\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar freeze = $Object.freeze;\n// eslint-disable-next-line es/no-object-seal -- safe\nvar seal = $Object.seal;\n\nvar FROZEN = {};\nvar SEALED = {};\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\nvar WeakMapPrototype = $WeakMap.prototype;\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\n\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\nvar hasMSEdgeFreezingBug = function () {\n return FREEZING && fails(function () {\n var frozenArray = freeze([]);\n nativeSet(new $WeakMap(), frozenArray, 1);\n return !isFrozen(frozenArray);\n });\n};\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.enable();\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n var nativeHas = uncurryThis(WeakMapPrototype.has);\n var nativeGet = uncurryThis(WeakMapPrototype.get);\n defineBuiltIns(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete(this, key) || state.frozen['delete'](key);\n } return nativeDelete(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) || state.frozen.has(key);\n } return nativeHas(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n } return nativeGet(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n } else nativeSet(this, key, value);\n return this;\n }\n });\n// Chakra Edge frozen keys fix\n} else if (hasMSEdgeFreezingBug()) {\n defineBuiltIns(WeakMapPrototype, {\n set: function set(key, value) {\n var arrayIntegrityLevel;\n if (isArray(key)) {\n if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\n else if (isSealed(key)) arrayIntegrityLevel = SEALED;\n }\n nativeSet(this, key, value);\n if (arrayIntegrityLevel == FROZEN) freeze(key);\n if (arrayIntegrityLevel == SEALED) seal(key);\n return this;\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.constructor.js?")}),"./node_modules/core-js/modules/es.weak-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/es.weak-map.constructor */ \"./node_modules/core-js/modules/es.weak-map.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.js?")}),"./node_modules/core-js/modules/web.dom-collections.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \"./node_modules/core-js/internals/dom-iterables.js\");\nvar DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ \"./node_modules/core-js/internals/dom-token-list-prototype.js\");\nvar ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-collections.iterator.js?")}),"./node_modules/core-js/modules/web.dom-exception.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar tryNodeRequire = __webpack_require__(/*! ../internals/try-node-require */ \"./node_modules/core-js/internals/try-node-require.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar errorToString = __webpack_require__(/*! ../internals/error-to-string */ \"./node_modules/core-js/internals/error-to-string.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \"./node_modules/core-js/internals/dom-exception-constants.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n try {\n // NodeJS < 15.0 does not expose `MessageChannel` to global\n var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\n // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\n new MessageChannel().port1.postMessage(new WeakMap());\n } catch (error) {\n if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;\n }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var code = codeFor(name);\n setInternalState(this, {\n type: DOM_EXCEPTION,\n name: name,\n message: message,\n code: code\n });\n if (!DESCRIPTORS) {\n this.name = name;\n this.message = message;\n this.code = code;\n }\n if (HAS_STACK) {\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n return createGetterDescriptor(function () {\n return getInternalState(this)[key];\n });\n};\n\nif (DESCRIPTORS) {\n // `DOMException.prototype.code` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n // `DOMException.prototype.message` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n // `DOMException.prototype.name` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n || NativeDOMException[DATA_CLONE_ERR] !== 25\n || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n return codeFor(anObject(this).name);\n }));\n}\n\n// `DOMException` constants\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n var descriptor = createPropertyDescriptor(6, constant.c);\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, descriptor);\n }\n if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.constructor.js?")}),"./node_modules/core-js/modules/web.dom-exception.stack.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \"./node_modules/core-js/internals/dom-exception-constants.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.stack.js?")}),"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\n\n// `DOMException.prototype[@@toStringTag]` property\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.to-string-tag.js?")}),"./node_modules/core-js/modules/web.self.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = global.self !== global;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n if (DESCRIPTORS) {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\n // some engines have `self`, but with incorrect descriptor\n // https://github.com/denoland/deno/issues/15765\n if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n defineBuiltInAccessor(global, 'self', {\n get: function self() {\n return global;\n },\n set: function self(value) {\n if (this !== global) throw $TypeError('Illegal invocation');\n defineProperty(global, 'self', {\n value: value,\n writable: true,\n configurable: true,\n enumerable: true\n });\n },\n configurable: true,\n enumerable: true\n });\n }\n } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n self: global\n });\n} catch (error) { /* empty */ }\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.self.js?")}),"./node_modules/core-js/modules/web.structured-clone.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getBuiltin = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar MapHelpers = __webpack_require__(/*! ../internals/map-helpers */ \"./node_modules/core-js/internals/map-helpers.js\");\nvar SetHelpers = __webpack_require__(/*! ../internals/set-helpers */ \"./node_modules/core-js/internals/set-helpers.js\");\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \"./node_modules/core-js/internals/error-stack-installable.js\");\nvar PROPER_TRANSFER = __webpack_require__(/*! ../internals/structured-clone-proper-transfer */ \"./node_modules/core-js/internals/structured-clone-proper-transfer.js\");\n\nvar Object = global.Object;\nvar Array = global.Array;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapGet = MapHelpers.get;\nvar mapSet = MapHelpers.set;\nvar Set = SetHelpers.Set;\nvar setAdd = SetHelpers.add;\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var set1 = new global.Set([7]);\n var set2 = structuredCloneImplementation(set1);\n var number = structuredCloneImplementation(Object(7));\n return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\n }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n return !fails(function () {\n var error = new $Error();\n var test = structuredCloneImplementation({ a: error, b: error });\n return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\n });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n || !checkErrorsCloning(nativeStructuredClone, Error)\n || !checkErrorsCloning(nativeStructuredClone, DOMException)\n || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar tryNativeRestrictedStructuredClone = function (value, type) {\n if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\n return nativeRestrictedStructuredClone(value);\n};\n\nvar createDataTransfer = function () {\n var dataTransfer;\n try {\n dataTransfer = new global.DataTransfer();\n } catch (error) {\n try {\n dataTransfer = new global.ClipboardEvent('').clipboardData;\n } catch (error2) { /* empty */ }\n }\n return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar cloneBuffer = function (value, map, $type) {\n if (mapHas(map, value)) return mapGet(map, value);\n\n var type = $type || classof(value);\n var clone, length, options, source, target, i;\n\n if (type === 'SharedArrayBuffer') {\n if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\n // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n else clone = value;\n } else {\n var DataView = global.DataView;\n\n // `ArrayBuffer#slice` is not available in IE10\n // `ArrayBuffer#slice` and `DataView` are not available in old FF\n if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\n // detached buffers throws in `DataView` and `.slice`\n try {\n if (typeof value.slice == 'function' && !value.resizable) {\n clone = value.slice(0);\n } else {\n length = value.byteLength;\n options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\n clone = new ArrayBuffer(length, options);\n source = new DataView(value);\n target = new DataView(clone);\n for (i = 0; i < length; i++) {\n target.setUint8(i, source.getUint8(i));\n }\n }\n } catch (error) {\n throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n }\n }\n\n mapSet(map, value, clone);\n\n return clone;\n};\n\nvar cloneView = function (value, type, offset, length, map) {\n var C = global[type];\n // in some old engines like Safari 9, typeof C is 'object'\n // on Uint8ClampedArray or some other constructors\n if (!isObject(C)) throwUnpolyfillable(type);\n return new C(cloneBuffer(value.buffer, map), offset, length);\n};\n\nvar Placeholder = function (object, type, metadata) {\n this.object = object;\n this.type = type;\n this.metadata = metadata;\n};\n\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\n if (isSymbol(value)) throwUncloneable('Symbol');\n if (!isObject(value)) return value;\n // effectively preserves circular references\n if (map) {\n if (mapHas(map, value)) return mapGet(map, value);\n } else map = new Map();\n\n var type = classof(value);\n var C, name, cloned, dataTransfer, i, length, keys, key;\n\n switch (type) {\n case 'Array':\n cloned = Array(lengthOfArrayLike(value));\n break;\n case 'Object':\n cloned = {};\n break;\n case 'Map':\n cloned = new Map();\n break;\n case 'Set':\n cloned = new Set();\n break;\n case 'RegExp':\n // in this block because of a Safari 14.1 bug\n // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n cloned = new RegExp(value.source, getRegExpFlags(value));\n break;\n case 'Error':\n name = value.name;\n switch (name) {\n case 'AggregateError':\n cloned = getBuiltin('AggregateError')([]);\n break;\n case 'EvalError':\n cloned = EvalError();\n break;\n case 'RangeError':\n cloned = RangeError();\n break;\n case 'ReferenceError':\n cloned = ReferenceError();\n break;\n case 'SyntaxError':\n cloned = SyntaxError();\n break;\n case 'TypeError':\n cloned = TypeError();\n break;\n case 'URIError':\n cloned = URIError();\n break;\n case 'CompileError':\n cloned = CompileError();\n break;\n case 'LinkError':\n cloned = LinkError();\n break;\n case 'RuntimeError':\n cloned = RuntimeError();\n break;\n default:\n cloned = Error();\n }\n break;\n case 'DOMException':\n cloned = new DOMException(value.message, value.name);\n break;\n case 'ArrayBuffer':\n case 'SharedArrayBuffer':\n cloned = transferredBuffers\n ? new Placeholder(value, type)\n : cloneBuffer(value, map, type);\n break;\n case 'DataView':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float16Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n length = type === 'DataView' ? value.byteLength : value.length;\n cloned = transferredBuffers\n ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\n : cloneView(value, type, value.byteOffset, length, map);\n break;\n case 'DOMQuad':\n try {\n cloned = new DOMQuad(\n structuredCloneInternal(value.p1, map, transferredBuffers),\n structuredCloneInternal(value.p2, map, transferredBuffers),\n structuredCloneInternal(value.p3, map, transferredBuffers),\n structuredCloneInternal(value.p4, map, transferredBuffers)\n );\n } catch (error) {\n cloned = tryNativeRestrictedStructuredClone(value, type);\n }\n break;\n case 'File':\n if (nativeRestrictedStructuredClone) try {\n cloned = nativeRestrictedStructuredClone(value);\n // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\n if (classof(cloned) !== type) cloned = undefined;\n } catch (error) { /* empty */ }\n if (!cloned) try {\n cloned = new File([value], value.name, value);\n } catch (error) { /* empty */ }\n if (!cloned) throwUnpolyfillable(type);\n break;\n case 'FileList':\n dataTransfer = createDataTransfer();\n if (dataTransfer) {\n for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\n }\n cloned = dataTransfer.files;\n } else cloned = tryNativeRestrictedStructuredClone(value, type);\n break;\n case 'ImageData':\n // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n try {\n cloned = new ImageData(\n structuredCloneInternal(value.data, map, transferredBuffers),\n value.width,\n value.height,\n { colorSpace: value.colorSpace }\n );\n } catch (error) {\n cloned = tryNativeRestrictedStructuredClone(value, type);\n } break;\n default:\n if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else switch (type) {\n case 'BigInt':\n // can be a 3rd party polyfill\n cloned = Object(value.valueOf());\n break;\n case 'Boolean':\n cloned = Object(thisBooleanValue(value));\n break;\n case 'Number':\n cloned = Object(thisNumberValue(value));\n break;\n case 'String':\n cloned = Object(thisStringValue(value));\n break;\n case 'Date':\n cloned = new Date(thisTimeValue(value));\n break;\n case 'Blob':\n try {\n cloned = value.slice(0, value.size, value.type);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMPoint':\n case 'DOMPointReadOnly':\n C = global[type];\n try {\n cloned = C.fromPoint\n ? C.fromPoint(value)\n : new C(value.x, value.y, value.z, value.w);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMRect':\n case 'DOMRectReadOnly':\n C = global[type];\n try {\n cloned = C.fromRect\n ? C.fromRect(value)\n : new C(value.x, value.y, value.width, value.height);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMMatrix':\n case 'DOMMatrixReadOnly':\n C = global[type];\n try {\n cloned = C.fromMatrix\n ? C.fromMatrix(value)\n : new C(value);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone)) throwUnpolyfillable(type);\n try {\n cloned = value.clone();\n } catch (error) {\n throwUncloneable(type);\n } break;\n case 'CropTarget':\n case 'CryptoKey':\n case 'FileSystemDirectoryHandle':\n case 'FileSystemFileHandle':\n case 'FileSystemHandle':\n case 'GPUCompilationInfo':\n case 'GPUCompilationMessage':\n case 'ImageBitmap':\n case 'RTCCertificate':\n case 'WebAssembly.Module':\n throwUnpolyfillable(type);\n // break omitted\n default:\n throwUncloneable(type);\n }\n }\n\n mapSet(map, value, cloned);\n\n switch (type) {\n case 'Array':\n case 'Object':\n keys = objectKeys(value);\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n key = keys[i];\n createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\n } break;\n case 'Map':\n value.forEach(function (v, k) {\n mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\n });\n break;\n case 'Set':\n value.forEach(function (v) {\n setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\n });\n break;\n case 'Error':\n createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\n if (hasOwn(value, 'cause')) {\n createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\n }\n if (name == 'AggregateError') {\n cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\n } // break omitted\n case 'DOMException':\n if (ERROR_STACK_INSTALLABLE) {\n createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\n }\n }\n\n return cloned;\n};\n\nvar replacePlaceholders = function (value, map) {\n if (!isObject(value)) return value;\n if (mapHas(map, value)) return mapGet(map, value);\n\n var type, object, metadata, i, length, keys, key, replacement;\n\n if (value instanceof Placeholder) {\n type = value.type;\n object = value.object;\n\n switch (type) {\n case 'ArrayBuffer':\n case 'SharedArrayBuffer':\n replacement = cloneBuffer(object, map, type);\n break;\n case 'DataView':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float16Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n metadata = value.metadata;\n replacement = cloneView(object, type, metadata.offset, metadata.length, map);\n }\n } else switch (classof(value)) {\n case 'Array':\n case 'Object':\n keys = objectKeys(value);\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n key = keys[i];\n value[key] = replacePlaceholders(value[key], map);\n } break;\n case 'Map':\n replacement = new Map();\n value.forEach(function (v, k) {\n mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\n });\n break;\n case 'Set':\n replacement = new Set();\n value.forEach(function (v) {\n setAdd(replacement, replacePlaceholders(v, map));\n });\n break;\n case 'Error':\n value.message = replacePlaceholders(value.message, map);\n if (hasOwn(value, 'cause')) {\n value.cause = replacePlaceholders(value.cause, map);\n }\n if (value.name == 'AggregateError') {\n value.errors = replacePlaceholders(value.errors, map);\n } // break omitted\n case 'DOMException':\n if (ERROR_STACK_INSTALLABLE) {\n value.stack = replacePlaceholders(value.stack, map);\n }\n }\n\n mapSet(map, value, replacement || value);\n\n return replacement || value;\n};\n\nvar tryToTransfer = function (rawTransfer, map) {\n if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\n\n var transfer = [];\n\n iterate(rawTransfer, function (value) {\n push(transfer, anObject(value));\n });\n\n var i = 0;\n var length = lengthOfArrayLike(transfer);\n var buffers = [];\n var value, type, C, transferred, canvas, context;\n\n while (i < length) {\n value = transfer[i++];\n\n type = classof(value);\n\n if (type === 'ArrayBuffer') {\n push(buffers, value);\n continue;\n }\n\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n if (PROPER_TRANSFER) {\n transferred = nativeStructuredClone(value, { transfer: [value] });\n } else switch (type) {\n case 'ImageBitmap':\n C = global.OffscreenCanvas;\n if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n canvas = new C(value.width, value.height);\n context = canvas.getContext('bitmaprenderer');\n context.transferFromImageBitmap(value);\n transferred = canvas.transferToImageBitmap();\n } catch (error) { /* empty */ }\n break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n transferred = value.clone();\n value.close();\n } catch (error) { /* empty */ }\n break;\n case 'MediaSourceHandle':\n case 'MessagePort':\n case 'OffscreenCanvas':\n case 'ReadableStream':\n case 'TransformStream':\n case 'WritableStream':\n throwUnpolyfillable(type, TRANSFERRING);\n }\n\n if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n\n mapSet(map, value, transferred);\n }\n\n return buffers;\n};\n\nvar tryToTransferBuffers = function (transfer, map) {\n var i = 0;\n var length = lengthOfArrayLike(transfer);\n var value, transferred;\n\n while (i < length) {\n value = transfer[i++];\n\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n if (PROPER_TRANSFER) {\n transferred = nativeStructuredClone(value, { transfer: [value] });\n } else {\n if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\n transferred = value.transfer();\n }\n\n mapSet(map, value, transferred);\n }\n};\n\n// `structuredClone` method\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\n structuredClone: function structuredClone(value /* , { transfer } */) {\n var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n var transfer = options ? options.transfer : undefined;\n var transferredBuffers = false;\n var map, buffers;\n\n if (transfer !== undefined) {\n map = new Map();\n buffers = tryToTransfer(transfer, map);\n transferredBuffers = !!lengthOfArrayLike(buffers);\n }\n\n var clone = structuredCloneInternal(value, map, transferredBuffers);\n\n // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\n // https://github.com/zloirock/core-js/issues/1265\n if (transferredBuffers) {\n map = new Map();\n tryToTransferBuffers(transfer, map);\n clone = replacePlaceholders(clone, map);\n }\n\n return clone;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.structured-clone.js?")}),"./node_modules/core-js/modules/web.url-search-params.constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js/internals/url-constructor-detection.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js/internals/iterator-create-constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar arraySort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var state = setInternalState(this, new URLSearchParamsState(init));\n if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 2);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n if (!DESCRIPTORS) this.length++;\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name /* , value */) {\n var state = getInternalParamsState(this);\n var length = validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index];\n if (entry.key === key && (value === undefined || entry.value === value)) {\n splice(entries, index, 1);\n if (value !== undefined) break;\n } else index++;\n }\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name /* , value */) {\n var entries = getInternalParamsState(this).entries;\n var length = validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index++];\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n return getInternalParamsState(this).entries.length;\n },\n configurable: true,\n enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.constructor.js?")}),"./node_modules/core-js/modules/web.url-search-params.delete.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.delete.js?")}),"./node_modules/core-js/modules/web.url-search-params.has.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.has.js?")}),"./node_modules/core-js/modules/web.url-search-params.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js/modules/web.url-search-params.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.js?")}),"./node_modules/core-js/modules/web.url-search-params.size.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.size.js?")}),"./node_modules/core-js/modules/web.url.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js/internals/url-constructor-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js/internals/object-assign.js\");\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").codeAt);\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \"./node_modules/core-js/internals/string-punycode-to-ascii.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js/modules/web.url-search-params.constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.constructor.js?")}),"./node_modules/core-js/modules/web.url.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url.constructor */ \"./node_modules/core-js/modules/web.url.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.js?")})});var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:false,exports:{}};__webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}(()=>{__webpack_require__.amdO={}})();(()=>{__webpack_require__.n=(module)=>{var getter=module&&module.__esModule?()=>(module['default']):()=>(module);__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.g=(function(){if(typeof globalThis==='object')return globalThis;try{return this||new Function('return this')()}catch(e){if(typeof window==='object')return window}})()})();(()=>{__webpack_require__.hmd=(module)=>{module=Object.create(module);if(!module.children)module.children=[];Object.defineProperty(module,'exports',{enumerable:true,set:()=>{throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: '+module.id);}});return module}})();(()=>{__webpack_require__.o=(obj,prop)=>(Object.prototype.hasOwnProperty.call(obj,prop))})();(()=>{__webpack_require__.r=(exports)=>{if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'})}Object.defineProperty(exports,'__esModule',{value:true})}})();var __webpack_exports__=__webpack_require__("./pdf.js")})(); \ No newline at end of file +(()=>{"use strict";var __webpack_modules__=({"./pdf.js":((module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.global-this.js */ \"./node_modules/core-js/modules/es.global-this.js\");\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ \"./node_modules/core-js/modules/es.string.starts-with.js\");\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ \"./node_modules/core-js/modules/es.string.match.js\");\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \"./node_modules/core-js/modules/web.dom-collections.iterator.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ \"./node_modules/core-js/modules/web.url.js\");\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ \"./node_modules/core-js/modules/web.url-search-params.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \"./node_modules/core-js/modules/web.url-search-params.delete.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \"./node_modules/core-js/modules/web.url-search-params.has.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \"./node_modules/core-js/modules/web.url-search-params.size.js\");\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array-buffer.slice.js */ \"./node_modules/core-js/modules/es.array-buffer.slice.js\");\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint8-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.typed-array.at.js */ \"./node_modules/core-js/modules/es.typed-array.at.js\");\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.typed-array.fill.js */ \"./node_modules/core-js/modules/es.typed-array.fill.js\");\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last.js */ \"./node_modules/core-js/modules/es.typed-array.find-last.js\");\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last-index.js */ \"./node_modules/core-js/modules/es.typed-array.find-last-index.js\");\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.typed-array.set.js */ \"./node_modules/core-js/modules/es.typed-array.set.js\");\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.typed-array.sort.js */ \"./node_modules/core-js/modules/es.typed-array.sort.js\");\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ \"./node_modules/core-js/modules/es.typed-array.to-locale-string.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-reversed.js */ \"./node_modules/core-js/modules/es.typed-array.to-reversed.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-sorted.js */ \"./node_modules/core-js/modules/es.typed-array.to-sorted.js\");\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.typed-array.with.js */ \"./node_modules/core-js/modules/es.typed-array.with.js\");\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.string.replace-all.js */ \"./node_modules/core-js/modules/es.string.replace-all.js\");\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ \"./node_modules/core-js/modules/es.error.cause.js\");\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint32-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint32-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__);\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! core-js/modules/es.weak-map.js */ \"./node_modules/core-js/modules/es.weak-map.js\");\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__);\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! core-js/modules/web.self.js */ \"./node_modules/core-js/modules/web.self.js\");\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__);\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \"./node_modules/core-js/modules/es.symbol.description.js\");\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__);\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! core-js/modules/es.object.has-own.js */ \"./node_modules/core-js/modules/es.object.has-own.js\");\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__);\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ \"./node_modules/core-js/modules/es.regexp.test.js\");\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__);\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! core-js/modules/es.reflect.to-string-tag.js */ \"./node_modules/core-js/modules/es.reflect.to-string-tag.js\");\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__);\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! core-js/modules/es.array.find-last.js */ \"./node_modules/core-js/modules/es.array.find-last.js\");\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__);\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ \"./node_modules/core-js/modules/es.array-buffer.constructor.js\");\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__);\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! core-js/modules/es.array.find-last-index.js */ \"./node_modules/core-js/modules/es.array.find-last-index.js\");\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__);\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-clamped-array.js */ \"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__);\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ \"./node_modules/core-js/modules/es.array.sort.js\");\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__);\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! core-js/modules/es.array.with.js */ \"./node_modules/core-js/modules/es.array.with.js\");\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__);\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! core-js/modules/es.typed-array.int8-array.js */ \"./node_modules/core-js/modules/es.typed-array.int8-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__);\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__);\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! core-js/modules/web.dom-exception.constructor.js */ \"./node_modules/core-js/modules/web.dom-exception.constructor.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__);\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ \"./node_modules/core-js/modules/web.dom-exception.stack.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__);\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! core-js/modules/web.dom-exception.to-string-tag.js */ \"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js\");\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__);\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! core-js/modules/web.structured-clone.js */ \"./node_modules/core-js/modules/web.structured-clone.js\");\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__);\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__);\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ \"./node_modules/core-js/modules/es.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__);\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! core-js/modules/es.regexp.dot-all.js */ \"./node_modules/core-js/modules/es.regexp.dot-all.js\");\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__);\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! core-js/modules/es.regexp.flags.js */ \"./node_modules/core-js/modules/es.regexp.flags.js\");\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__);\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \"./node_modules/core-js/modules/es.json.stringify.js\");\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__);\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \"./node_modules/core-js/modules/es.number.to-fixed.js\");\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__);\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \"./node_modules/core-js/modules/es.string.ends-with.js\");\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__);\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! core-js/modules/es.parse-float.js */ \"./node_modules/core-js/modules/es.parse-float.js\");\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__);\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! core-js/modules/es.math.hypot.js */ \"./node_modules/core-js/modules/es.math.hypot.js\");\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__);\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! core-js/modules/es.array.at.js */ \"./node_modules/core-js/modules/es.array.at.js\");\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__);\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! core-js/modules/es.string.at-alternative.js */ \"./node_modules/core-js/modules/es.string.at-alternative.js\");\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__);\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \"./node_modules/core-js/modules/es.parse-int.js\");\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__);\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__);\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! core-js/modules/es.typed-array.int32-array.js */ \"./node_modules/core-js/modules/es.typed-array.int32-array.js\");\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__);\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! core-js/modules/es.promise.all-settled.js */ \"./node_modules/core-js/modules/es.promise.all-settled.js\");\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__);\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! core-js/modules/es.string.trim-end.js */ \"./node_modules/core-js/modules/es.string.trim-end.js\");\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__);\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ \"./node_modules/core-js/modules/es.array.flat-map.js\");\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__);\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ \"./node_modules/core-js/modules/es.array.unscopables.flat-map.js\");\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__);\n/* module decorator */ module = __webpack_require__.hmd(module);\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); return _classApplyDescriptorDestructureSet(receiver, descriptor); }\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) { if (descriptor.set) { if (!(\"__destrObj\" in descriptor)) { descriptor.__destrObj = { set value(v) { descriptor.set.call(receiver, v); } }; } return descriptor.__destrObj; } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } return descriptor; } }\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }\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 _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); }\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\"attempted to get private field on non-instance\"); } return fn; }\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\"); } }\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\"Private static access of wrong provenance\"); } }\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n!function webpackUniversalModuleDefinition(t, e) {\n \"object\" == typeof exports && \"object\" == \"object\" ? module.exports = e() : \"function\" == typeof define && __webpack_require__.amdO ? define(\"pdfjs-dist/build/pdf\", [], e) : \"object\" == typeof exports ? exports[\"pdfjs-dist/build/pdf\"] = e() : t[\"pdfjs-dist/build/pdf\"] = t.pdfjsLib = e();\n}(globalThis, () => (() => {\n var __webpack_modules__ = [, (t, e, n) => {\n \"use strict\";\n\n var _t;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.VerbosityLevel = e.Util = e.UnknownErrorException = e.UnexpectedResponseException = e.TextRenderingMode = e.RenderingIntentFlag = e.PromiseCapability = e.PermissionFlag = e.PasswordResponses = e.PasswordException = e.PageActionEventType = e.OPS = e.MissingPDFException = e.MAX_IMAGE_SIZE_TO_CACHE = e.LINE_FACTOR = e.LINE_DESCENT_FACTOR = e.InvalidPDFException = e.ImageKind = e.IDENTITY_MATRIX = e.FormatError = e.FeatureTest = e.FONT_IDENTITY_MATRIX = e.DocumentActionEventType = e.CMapCompressionType = e.BaseException = e.BASELINE_FACTOR = e.AnnotationType = e.AnnotationReplyType = e.AnnotationMode = e.AnnotationFlag = e.AnnotationFieldFlag = e.AnnotationEditorType = e.AnnotationEditorPrefix = e.AnnotationEditorParamsType = e.AnnotationBorderStyleType = e.AnnotationActionEventType = e.AbortException = void 0;\n e.assert = function assert(t, e) {\n t || unreachable(e);\n };\n e.bytesToString = bytesToString;\n e.createValidAbsoluteUrl = function createValidAbsoluteUrl(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\n if (!t) return null;\n try {\n if (n && \"string\" == typeof t) {\n if (n.addDefaultProtocol && t.startsWith(\"www.\")) {\n const e = t.match(/\\./g);\n (e === null || e === void 0 ? void 0 : e.length) >= 2 && (t = \"http://\".concat(t));\n }\n if (n.tryConvertEncoding) try {\n t = stringToUTF8String(t);\n } catch (_unused) {}\n }\n const i = e ? new URL(t, e) : new URL(t);\n if (function _isValidProtocol(t) {\n switch (t === null || t === void 0 ? void 0 : t.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return !0;\n default:\n return !1;\n }\n }(i)) return i;\n } catch (_unused2) {}\n return null;\n };\n e.getModificationDate = function getModificationDate() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date();\n return [t.getUTCFullYear().toString(), (t.getUTCMonth() + 1).toString().padStart(2, \"0\"), t.getUTCDate().toString().padStart(2, \"0\"), t.getUTCHours().toString().padStart(2, \"0\"), t.getUTCMinutes().toString().padStart(2, \"0\"), t.getUTCSeconds().toString().padStart(2, \"0\")].join(\"\");\n };\n e.getUuid = function getUuid() {\n var _crypto, _crypto2;\n if (\"undefined\" != typeof crypto && \"function\" == typeof ((_crypto = crypto) === null || _crypto === void 0 ? void 0 : _crypto.randomUUID)) return crypto.randomUUID();\n const t = new Uint8Array(32);\n if (\"undefined\" != typeof crypto && \"function\" == typeof ((_crypto2 = crypto) === null || _crypto2 === void 0 ? void 0 : _crypto2.getRandomValues)) crypto.getRandomValues(t);else for (let e = 0; e < 32; e++) t[e] = Math.floor(255 * Math.random());\n return bytesToString(t);\n };\n e.getVerbosityLevel = function getVerbosityLevel() {\n return s;\n };\n e.info = function info(t) {\n s >= r.INFOS && console.log(\"Info: \".concat(t));\n };\n e.isArrayBuffer = function isArrayBuffer(t) {\n return \"object\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.byteLength);\n };\n e.isArrayEqual = function isArrayEqual(t, e) {\n if (t.length !== e.length) return !1;\n for (let n = 0, i = t.length; n < i; n++) if (t[n] !== e[n]) return !1;\n return !0;\n };\n e.isNodeJS = void 0;\n e.normalizeUnicode = function normalizeUnicode(t) {\n if (!c) {\n c = /([\\xA0\\xB5\\u037E\\u0EB3\\u2000-\\u200A\\u202F\\u2126\\uFB00-\\uFB04\\uFB06\\uFB20-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBA1\\uFBA4-\\uFBA9\\uFBAE-\\uFBB1\\uFBD3-\\uFBDC\\uFBDE-\\uFBE7\\uFBEA-\\uFBF8\\uFBFC\\uFBFD\\uFC00-\\uFC5D\\uFC64-\\uFCF1\\uFCF5-\\uFD3D\\uFD88\\uFDF4\\uFDFA\\uFDFB\\uFE71\\uFE77\\uFE79\\uFE7B\\uFE7D]+)|(\\uFB05+)/g;\n h = new Map([[\"ſt\", \"ſt\"]]);\n }\n return t.replaceAll(c, (t, e, n) => e ? e.normalize(\"NFKC\") : h.get(n));\n };\n e.objectFromMap = function objectFromMap(t) {\n const e = Object.create(null);\n for (const [n, i] of t) e[n] = i;\n return e;\n };\n e.objectSize = function objectSize(t) {\n return Object.keys(t).length;\n };\n e.setVerbosityLevel = function setVerbosityLevel(t) {\n Number.isInteger(t) && (s = t);\n };\n e.shadow = shadow;\n e.string32 = function string32(t) {\n return String.fromCharCode(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t);\n };\n e.stringToBytes = stringToBytes;\n e.stringToPDFString = function stringToPDFString(t) {\n if (t[0] >= \"ï\") {\n let e;\n \"þ\" === t[0] && \"ÿ\" === t[1] ? e = \"utf-16be\" : \"ÿ\" === t[0] && \"þ\" === t[1] ? e = \"utf-16le\" : \"ï\" === t[0] && \"»\" === t[1] && \"¿\" === t[2] && (e = \"utf-8\");\n if (e) try {\n const n = new TextDecoder(e, {\n fatal: !0\n }),\n i = stringToBytes(t);\n return n.decode(i);\n } catch (t) {\n warn(\"stringToPDFString: \\\"\".concat(t, \"\\\".\"));\n }\n }\n const e = [];\n for (let n = 0, i = t.length; n < i; n++) {\n const i = l[t.charCodeAt(n)];\n e.push(i ? String.fromCharCode(i) : t.charAt(n));\n }\n return e.join(\"\");\n };\n e.stringToUTF8String = stringToUTF8String;\n e.unreachable = unreachable;\n e.utf8StringToString = function utf8StringToString(t) {\n return unescape(encodeURIComponent(t));\n };\n e.warn = warn;\n n(2);\n n(84);\n n(86);\n n(87);\n n(89);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n const i = !(\"object\" != typeof process || process + \"\" != \"[object process]\" || process.versions.nw || process.versions.electron && process.type && \"browser\" !== process.type);\n e.isNodeJS = i;\n e.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n e.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];\n e.MAX_IMAGE_SIZE_TO_CACHE = 1e7;\n e.LINE_FACTOR = 1.35;\n e.LINE_DESCENT_FACTOR = .35;\n e.BASELINE_FACTOR = .25925925925925924;\n e.RenderingIntentFlag = {\n ANY: 1,\n DISPLAY: 2,\n PRINT: 4,\n SAVE: 8,\n ANNOTATIONS_FORMS: 16,\n ANNOTATIONS_STORAGE: 32,\n ANNOTATIONS_DISABLE: 64,\n OPLIST: 256\n };\n e.AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n };\n e.AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n e.AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n STAMP: 13,\n INK: 15\n };\n e.AnnotationEditorParamsType = {\n RESIZE: 1,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23\n };\n e.PermissionFlag = {\n PRINT: 4,\n MODIFY_CONTENTS: 8,\n COPY: 16,\n MODIFY_ANNOTATIONS: 32,\n FILL_INTERACTIVE_FORMS: 256,\n COPY_FOR_ACCESSIBILITY: 512,\n ASSEMBLE: 1024,\n PRINT_HIGH_QUALITY: 2048\n };\n e.TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n };\n e.ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n };\n e.AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n };\n e.AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n };\n e.AnnotationFlag = {\n INVISIBLE: 1,\n HIDDEN: 2,\n PRINT: 4,\n NOZOOM: 8,\n NOROTATE: 16,\n NOVIEW: 32,\n READONLY: 64,\n LOCKED: 128,\n TOGGLENOVIEW: 256,\n LOCKEDCONTENTS: 512\n };\n e.AnnotationFieldFlag = {\n READONLY: 1,\n REQUIRED: 2,\n NOEXPORT: 4,\n MULTILINE: 4096,\n PASSWORD: 8192,\n NOTOGGLETOOFF: 16384,\n RADIO: 32768,\n PUSHBUTTON: 65536,\n COMBO: 131072,\n EDIT: 262144,\n SORT: 524288,\n FILESELECT: 1048576,\n MULTISELECT: 2097152,\n DONOTSPELLCHECK: 4194304,\n DONOTSCROLL: 8388608,\n COMB: 16777216,\n RICHTEXT: 33554432,\n RADIOSINUNISON: 33554432,\n COMMITONSELCHANGE: 67108864\n };\n e.AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n };\n e.AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n };\n e.DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n };\n e.PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n };\n const r = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n };\n e.VerbosityLevel = r;\n e.CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n };\n e.OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n };\n e.PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n };\n let s = r.WARNINGS;\n function warn(t) {\n s >= r.WARNINGS && console.log(\"Warning: \".concat(t));\n }\n function unreachable(t) {\n throw new Error(t);\n }\n function shadow(t, e, n) {\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n Object.defineProperty(t, e, {\n value: n,\n enumerable: !i,\n configurable: !0,\n writable: !1\n });\n return n;\n }\n const a = function BaseExceptionClosure() {\n function BaseException(t, e) {\n this.constructor === BaseException && unreachable(\"Cannot initialize BaseException.\");\n this.message = t;\n this.name = e;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n }();\n e.BaseException = a;\n e.PasswordException = class PasswordException extends a {\n constructor(t, e) {\n super(t, \"PasswordException\");\n this.code = e;\n }\n };\n e.UnknownErrorException = class UnknownErrorException extends a {\n constructor(t, e) {\n super(t, \"UnknownErrorException\");\n this.details = e;\n }\n };\n e.InvalidPDFException = class InvalidPDFException extends a {\n constructor(t) {\n super(t, \"InvalidPDFException\");\n }\n };\n e.MissingPDFException = class MissingPDFException extends a {\n constructor(t) {\n super(t, \"MissingPDFException\");\n }\n };\n e.UnexpectedResponseException = class UnexpectedResponseException extends a {\n constructor(t, e) {\n super(t, \"UnexpectedResponseException\");\n this.status = e;\n }\n };\n e.FormatError = class FormatError extends a {\n constructor(t) {\n super(t, \"FormatError\");\n }\n };\n e.AbortException = class AbortException extends a {\n constructor(t) {\n super(t, \"AbortException\");\n }\n };\n function bytesToString(t) {\n \"object\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.length) || unreachable(\"Invalid argument for bytesToString\");\n const e = t.length,\n n = 8192;\n if (e < n) return String.fromCharCode.apply(null, t);\n const i = [];\n for (let r = 0; r < e; r += n) {\n const s = Math.min(r + n, e),\n a = t.subarray(r, s);\n i.push(String.fromCharCode.apply(null, a));\n }\n return i.join(\"\");\n }\n function stringToBytes(t) {\n \"string\" != typeof t && unreachable(\"Invalid argument for stringToBytes\");\n const e = t.length,\n n = new Uint8Array(e);\n for (let i = 0; i < e; ++i) n[i] = 255 & t.charCodeAt(i);\n return n;\n }\n e.FeatureTest = class FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", function isLittleEndian() {\n const t = new Uint8Array(4);\n t[0] = 1;\n return 1 === new Uint32Array(t.buffer, 0, 1)[0];\n }());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", function isEvalSupported() {\n try {\n new Function(\"\");\n return !0;\n } catch (_unused3) {\n return !1;\n }\n }());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", \"undefined\" != typeof OffscreenCanvas);\n }\n static get platform() {\n return \"undefined\" == typeof navigator ? shadow(this, \"platform\", {\n isWin: !1,\n isMac: !1\n }) : shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n };\n const o = [...Array(256).keys()].map(t => t.toString(16).padStart(2, \"0\"));\n e.Util = class Util {\n static makeHexColor(t, e, n) {\n return \"#\".concat(o[t]).concat(o[e]).concat(o[n]);\n }\n static scaleMinMax(t, e) {\n let n;\n if (t[0]) {\n if (t[0] < 0) {\n n = e[0];\n e[0] = e[1];\n e[1] = n;\n }\n e[0] *= t[0];\n e[1] *= t[0];\n if (t[3] < 0) {\n n = e[2];\n e[2] = e[3];\n e[3] = n;\n }\n e[2] *= t[3];\n e[3] *= t[3];\n } else {\n n = e[0];\n e[0] = e[2];\n e[2] = n;\n n = e[1];\n e[1] = e[3];\n e[3] = n;\n if (t[1] < 0) {\n n = e[2];\n e[2] = e[3];\n e[3] = n;\n }\n e[2] *= t[1];\n e[3] *= t[1];\n if (t[2] < 0) {\n n = e[0];\n e[0] = e[1];\n e[1] = n;\n }\n e[0] *= t[2];\n e[1] *= t[2];\n }\n e[0] += t[4];\n e[1] += t[4];\n e[2] += t[5];\n e[3] += t[5];\n }\n static transform(t, e) {\n return [t[0] * e[0] + t[2] * e[1], t[1] * e[0] + t[3] * e[1], t[0] * e[2] + t[2] * e[3], t[1] * e[2] + t[3] * e[3], t[0] * e[4] + t[2] * e[5] + t[4], t[1] * e[4] + t[3] * e[5] + t[5]];\n }\n static applyTransform(t, e) {\n return [t[0] * e[0] + t[1] * e[2] + e[4], t[0] * e[1] + t[1] * e[3] + e[5]];\n }\n static applyInverseTransform(t, e) {\n const n = e[0] * e[3] - e[1] * e[2];\n return [(t[0] * e[3] - t[1] * e[2] + e[2] * e[5] - e[4] * e[3]) / n, (-t[0] * e[1] + t[1] * e[0] + e[4] * e[1] - e[5] * e[0]) / n];\n }\n static getAxialAlignedBoundingBox(t, e) {\n const n = this.applyTransform(t, e),\n i = this.applyTransform(t.slice(2, 4), e),\n r = this.applyTransform([t[0], t[3]], e),\n s = this.applyTransform([t[2], t[1]], e);\n return [Math.min(n[0], i[0], r[0], s[0]), Math.min(n[1], i[1], r[1], s[1]), Math.max(n[0], i[0], r[0], s[0]), Math.max(n[1], i[1], r[1], s[1])];\n }\n static inverseTransform(t) {\n const e = t[0] * t[3] - t[1] * t[2];\n return [t[3] / e, -t[1] / e, -t[2] / e, t[0] / e, (t[2] * t[5] - t[4] * t[3]) / e, (t[4] * t[1] - t[5] * t[0]) / e];\n }\n static singularValueDecompose2dScale(t) {\n const e = [t[0], t[2], t[1], t[3]],\n n = t[0] * e[0] + t[1] * e[2],\n i = t[0] * e[1] + t[1] * e[3],\n r = t[2] * e[0] + t[3] * e[2],\n s = t[2] * e[1] + t[3] * e[3],\n a = (n + s) / 2,\n o = Math.sqrt((n + s) ** 2 - 4 * (n * s - r * i)) / 2,\n l = a + o || 1,\n c = a - o || 1;\n return [Math.sqrt(l), Math.sqrt(c)];\n }\n static normalizeRect(t) {\n const e = t.slice(0);\n if (t[0] > t[2]) {\n e[0] = t[2];\n e[2] = t[0];\n }\n if (t[1] > t[3]) {\n e[1] = t[3];\n e[3] = t[1];\n }\n return e;\n }\n static intersect(t, e) {\n const n = Math.max(Math.min(t[0], t[2]), Math.min(e[0], e[2])),\n i = Math.min(Math.max(t[0], t[2]), Math.max(e[0], e[2]));\n if (n > i) return null;\n const r = Math.max(Math.min(t[1], t[3]), Math.min(e[1], e[3])),\n s = Math.min(Math.max(t[1], t[3]), Math.max(e[1], e[3]));\n return r > s ? null : [n, r, i, s];\n }\n static bezierBoundingBox(t, e, n, i, r, s, a, o) {\n const l = [],\n c = [[], []];\n let h, d, u, p, f, g, m, b;\n for (let c = 0; c < 2; ++c) {\n if (0 === c) {\n d = 6 * t - 12 * n + 6 * r;\n h = -3 * t + 9 * n - 9 * r + 3 * a;\n u = 3 * n - 3 * t;\n } else {\n d = 6 * e - 12 * i + 6 * s;\n h = -3 * e + 9 * i - 9 * s + 3 * o;\n u = 3 * i - 3 * e;\n }\n if (Math.abs(h) < 1e-12) {\n if (Math.abs(d) < 1e-12) continue;\n p = -u / d;\n 0 < p && p < 1 && l.push(p);\n } else {\n m = d * d - 4 * u * h;\n b = Math.sqrt(m);\n if (!(m < 0)) {\n f = (-d + b) / (2 * h);\n 0 < f && f < 1 && l.push(f);\n g = (-d - b) / (2 * h);\n 0 < g && g < 1 && l.push(g);\n }\n }\n }\n let v,\n y = l.length;\n const A = y;\n for (; y--;) {\n p = l[y];\n v = 1 - p;\n c[0][y] = v * v * v * t + 3 * v * v * p * n + 3 * v * p * p * r + p * p * p * a;\n c[1][y] = v * v * v * e + 3 * v * v * p * i + 3 * v * p * p * s + p * p * p * o;\n }\n c[0][A] = t;\n c[1][A] = e;\n c[0][A + 1] = a;\n c[1][A + 1] = o;\n c[0].length = c[1].length = A + 2;\n return [Math.min(...c[0]), Math.min(...c[1]), Math.max(...c[0]), Math.max(...c[1])];\n }\n };\n const l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364];\n function stringToUTF8String(t) {\n return decodeURIComponent(escape(t));\n }\n e.PromiseCapability = (_t = /*#__PURE__*/new WeakMap(), class PromiseCapability {\n constructor() {\n _classPrivateFieldInitSpec(this, _t, {\n writable: true,\n value: !1\n });\n this.promise = new Promise((t, e) => {\n this.resolve = e => {\n _classPrivateFieldSet(this, _t, !0);\n t(e);\n };\n this.reject = t => {\n _classPrivateFieldSet(this, _t, !0);\n e(t);\n };\n });\n }\n get settled() {\n return _classPrivateFieldGet(this, _t);\n }\n });\n let c = null,\n h = null;\n }, (t, e, n) => {\n var i = n(3),\n r = n(4),\n s = n(69),\n a = n(70),\n o = \"WebAssembly\",\n l = r[o],\n c = 7 !== Error(\"e\", {\n cause: 7\n }).cause,\n exportGlobalErrorCauseWrapper = function exportGlobalErrorCauseWrapper(t, e) {\n var n = {};\n n[t] = a(t, e, c);\n i({\n global: !0,\n constructor: !0,\n arity: 1,\n forced: c\n }, n);\n },\n exportWebAssemblyErrorCauseWrapper = function exportWebAssemblyErrorCauseWrapper(t, e) {\n if (l && l[t]) {\n var n = {};\n n[t] = a(o + \".\" + t, e, c);\n i({\n target: o,\n stat: !0,\n constructor: !0,\n arity: 1,\n forced: c\n }, n);\n }\n };\n exportGlobalErrorCauseWrapper(\"Error\", function (t) {\n return function Error(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"EvalError\", function (t) {\n return function EvalError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"RangeError\", function (t) {\n return function RangeError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"ReferenceError\", function (t) {\n return function ReferenceError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"SyntaxError\", function (t) {\n return function SyntaxError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"TypeError\", function (t) {\n return function TypeError(e) {\n return s(t, this, arguments);\n };\n });\n exportGlobalErrorCauseWrapper(\"URIError\", function (t) {\n return function URIError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"CompileError\", function (t) {\n return function CompileError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"LinkError\", function (t) {\n return function LinkError(e) {\n return s(t, this, arguments);\n };\n });\n exportWebAssemblyErrorCauseWrapper(\"RuntimeError\", function (t) {\n return function RuntimeError(e) {\n return s(t, this, arguments);\n };\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(5).f,\n s = n(44),\n a = n(48),\n o = n(38),\n l = n(56),\n c = n(68);\n t.exports = function (t, e) {\n var n,\n h,\n d,\n u,\n p,\n f = t.target,\n g = t.global,\n m = t.stat;\n if (n = g ? i : m ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (h in e) {\n u = e[h];\n d = t.dontCallGetSet ? (p = r(n, h)) && p.value : n[h];\n if (!c(g ? h : f + (m ? \".\" : \"#\") + h, t.forced) && void 0 !== d) {\n if (typeof u == typeof d) continue;\n l(u, d);\n }\n (t.sham || d && d.sham) && s(u, \"sham\", !0);\n a(n, h, u, t);\n }\n };\n }, function (t) {\n var check = function check(t) {\n return t && t.Math == Math && t;\n };\n t.exports = check(\"object\" == typeof globalThis && globalThis) || check(\"object\" == typeof window && window) || check(\"object\" == typeof self && self) || check(\"object\" == typeof __webpack_require__.g && __webpack_require__.g) || function () {\n return this;\n }() || this || Function(\"return this\")();\n }, (t, e, n) => {\n var i = n(6),\n r = n(8),\n s = n(10),\n a = n(11),\n o = n(12),\n l = n(18),\n c = n(39),\n h = n(42),\n d = Object.getOwnPropertyDescriptor;\n e.f = i ? d : function getOwnPropertyDescriptor(t, e) {\n t = o(t);\n e = l(e);\n if (h) try {\n return d(t, e);\n } catch (t) {}\n if (c(t, e)) return a(!r(s.f, t, e), t[e]);\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n return 7 != Object.defineProperty({}, 1, {\n get: function get() {\n return 7;\n }\n })[1];\n });\n }, t => {\n t.exports = function (t) {\n try {\n return !!t();\n } catch (t) {\n return !0;\n }\n };\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype.call;\n t.exports = i ? r.bind(r) : function () {\n return r.apply(r, arguments);\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n var t = function () {}.bind();\n return \"function\" != typeof t || t.hasOwnProperty(\"prototype\");\n });\n }, (t, e) => {\n \"use strict\";\n\n var n = {}.propertyIsEnumerable,\n i = Object.getOwnPropertyDescriptor,\n r = i && !n.call({\n 1: 2\n }, 1);\n e.f = r ? function propertyIsEnumerable(t) {\n var e = i(this, t);\n return !!e && e.enumerable;\n } : n;\n }, t => {\n t.exports = function (t, e) {\n return {\n enumerable: !(1 & t),\n configurable: !(2 & t),\n writable: !(4 & t),\n value: e\n };\n };\n }, (t, e, n) => {\n var i = n(13),\n r = n(16);\n t.exports = function (t) {\n return i(r(t));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(15),\n a = Object,\n o = i(\"\".split);\n t.exports = r(function () {\n return !a(\"z\").propertyIsEnumerable(0);\n }) ? function (t) {\n return \"String\" == s(t) ? o(t, \"\") : a(t);\n } : a;\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype,\n s = r.call,\n a = i && r.bind.bind(s, s);\n t.exports = i ? a : function (t) {\n return function () {\n return s.apply(t, arguments);\n };\n };\n }, (t, e, n) => {\n var i = n(14),\n r = i({}.toString),\n s = i(\"\".slice);\n t.exports = function (t) {\n return s(r(t), 8, -1);\n };\n }, (t, e, n) => {\n var i = n(17),\n r = TypeError;\n t.exports = function (t) {\n if (i(t)) throw r(\"Can't call method on \" + t);\n return t;\n };\n }, t => {\n t.exports = function (t) {\n return null == t;\n };\n }, (t, e, n) => {\n var i = n(19),\n r = n(23);\n t.exports = function (t) {\n var e = i(t, \"string\");\n return r(e) ? e : e + \"\";\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(20),\n s = n(23),\n a = n(30),\n o = n(33),\n l = n(34),\n c = TypeError,\n h = l(\"toPrimitive\");\n t.exports = function (t, e) {\n if (!r(t) || s(t)) return t;\n var n,\n l = a(t, h);\n if (l) {\n void 0 === e && (e = \"default\");\n n = i(l, t, e);\n if (!r(n) || s(n)) return n;\n throw c(\"Can't convert object to primitive value\");\n }\n void 0 === e && (e = \"number\");\n return o(t, e);\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(22),\n s = r.all;\n t.exports = r.IS_HTMLDDA ? function (t) {\n return \"object\" == typeof t ? null !== t : i(t) || t === s;\n } : function (t) {\n return \"object\" == typeof t ? null !== t : i(t);\n };\n }, (t, e, n) => {\n var i = n(22),\n r = i.all;\n t.exports = i.IS_HTMLDDA ? function (t) {\n return \"function\" == typeof t || t === r;\n } : function (t) {\n return \"function\" == typeof t;\n };\n }, t => {\n var e = \"object\" == typeof document && document.all,\n n = void 0 === e && void 0 !== e;\n t.exports = {\n all: e,\n IS_HTMLDDA: n\n };\n }, (t, e, n) => {\n var i = n(24),\n r = n(21),\n s = n(25),\n a = n(26),\n o = Object;\n t.exports = a ? function (t) {\n return \"symbol\" == typeof t;\n } : function (t) {\n var e = i(\"Symbol\");\n return r(e) && s(e.prototype, o(t));\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(21);\n t.exports = function (t, e) {\n return arguments.length < 2 ? (n = i[t], r(n) ? n : void 0) : i[t] && i[t][e];\n var n;\n };\n }, (t, e, n) => {\n var i = n(14);\n t.exports = i({}.isPrototypeOf);\n }, (t, e, n) => {\n var i = n(27);\n t.exports = i && !Symbol.sham && \"symbol\" == typeof Symbol.iterator;\n }, (t, e, n) => {\n var i = n(28),\n r = n(7),\n s = n(4).String;\n t.exports = !!Object.getOwnPropertySymbols && !r(function () {\n var t = Symbol();\n return !s(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && i && i < 41;\n });\n }, (t, e, n) => {\n var i,\n r,\n s = n(4),\n a = n(29),\n o = s.process,\n l = s.Deno,\n c = o && o.versions || l && l.version,\n h = c && c.v8;\n h && (r = (i = h.split(\".\"))[0] > 0 && i[0] < 4 ? 1 : +(i[0] + i[1]));\n !r && a && (!(i = a.match(/Edge\\/(\\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\\/(\\d+)/)) && (r = +i[1]);\n t.exports = r;\n }, t => {\n t.exports = \"undefined\" != typeof navigator && String(navigator.userAgent) || \"\";\n }, (t, e, n) => {\n var i = n(31),\n r = n(17);\n t.exports = function (t, e) {\n var n = t[e];\n return r(n) ? void 0 : i(n);\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(32),\n s = TypeError;\n t.exports = function (t) {\n if (i(t)) return t;\n throw s(r(t) + \" is not a function\");\n };\n }, t => {\n var e = String;\n t.exports = function (t) {\n try {\n return e(t);\n } catch (t) {\n return \"Object\";\n }\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(21),\n s = n(20),\n a = TypeError;\n t.exports = function (t, e) {\n var n, o;\n if (\"string\" === e && r(n = t.toString) && !s(o = i(n, t))) return o;\n if (r(n = t.valueOf) && !s(o = i(n, t))) return o;\n if (\"string\" !== e && r(n = t.toString) && !s(o = i(n, t))) return o;\n throw a(\"Can't convert object to primitive value\");\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(35),\n s = n(39),\n a = n(41),\n o = n(27),\n l = n(26),\n c = i.Symbol,\n h = r(\"wks\"),\n d = l ? c.for || c : c && c.withoutSetter || a;\n t.exports = function (t) {\n s(h, t) || (h[t] = o && s(c, t) ? c[t] : d(\"Symbol.\" + t));\n return h[t];\n };\n }, (t, e, n) => {\n var i = n(36),\n r = n(37);\n (t.exports = function (t, e) {\n return r[t] || (r[t] = void 0 !== e ? e : {});\n })(\"versions\", []).push({\n version: \"3.31.1\",\n mode: i ? \"pure\" : \"global\",\n copyright: \"© 2014-2023 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n });\n }, t => {\n t.exports = !1;\n }, (t, e, n) => {\n var i = n(4),\n r = n(38),\n s = \"__core-js_shared__\",\n a = i[s] || r(s, {});\n t.exports = a;\n }, (t, e, n) => {\n var i = n(4),\n r = Object.defineProperty;\n t.exports = function (t, e) {\n try {\n r(i, t, {\n value: e,\n configurable: !0,\n writable: !0\n });\n } catch (n) {\n i[t] = e;\n }\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(40),\n s = i({}.hasOwnProperty);\n t.exports = Object.hasOwn || function hasOwn(t, e) {\n return s(r(t), e);\n };\n }, (t, e, n) => {\n var i = n(16),\n r = Object;\n t.exports = function (t) {\n return r(i(t));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = 0,\n s = Math.random(),\n a = i(1..toString);\n t.exports = function (t) {\n return \"Symbol(\" + (void 0 === t ? \"\" : t) + \")_\" + a(++r + s, 36);\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(7),\n s = n(43);\n t.exports = !i && !r(function () {\n return 7 != Object.defineProperty(s(\"div\"), \"a\", {\n get: function get() {\n return 7;\n }\n }).a;\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(20),\n s = i.document,\n a = r(s) && r(s.createElement);\n t.exports = function (t) {\n return a ? s.createElement(t) : {};\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(45),\n s = n(11);\n t.exports = i ? function (t, e, n) {\n return r.f(t, e, s(1, n));\n } : function (t, e, n) {\n t[e] = n;\n return t;\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(42),\n s = n(46),\n a = n(47),\n o = n(18),\n l = TypeError,\n c = Object.defineProperty,\n h = Object.getOwnPropertyDescriptor,\n d = \"enumerable\",\n u = \"configurable\",\n p = \"writable\";\n e.f = i ? s ? function defineProperty(t, e, n) {\n a(t);\n e = o(e);\n a(n);\n if (\"function\" == typeof t && \"prototype\" === e && \"value\" in n && p in n && !n[p]) {\n var i = h(t, e);\n if (i && i[p]) {\n t[e] = n.value;\n n = {\n configurable: u in n ? n[u] : i[u],\n enumerable: d in n ? n[d] : i[d],\n writable: !1\n };\n }\n }\n return c(t, e, n);\n } : c : function defineProperty(t, e, n) {\n a(t);\n e = o(e);\n a(n);\n if (r) try {\n return c(t, e, n);\n } catch (t) {}\n if (\"get\" in n || \"set\" in n) throw l(\"Accessors not supported\");\n \"value\" in n && (t[e] = n.value);\n return t;\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(7);\n t.exports = i && r(function () {\n return 42 != Object.defineProperty(function () {}, \"prototype\", {\n value: 42,\n writable: !1\n }).prototype;\n });\n }, (t, e, n) => {\n var i = n(20),\n r = String,\n s = TypeError;\n t.exports = function (t) {\n if (i(t)) return t;\n throw s(r(t) + \" is not an object\");\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(45),\n s = n(49),\n a = n(38);\n t.exports = function (t, e, n, o) {\n o || (o = {});\n var l = o.enumerable,\n c = void 0 !== o.name ? o.name : e;\n i(n) && s(n, c, o);\n if (o.global) l ? t[e] = n : a(e, n);else {\n try {\n o.unsafe ? t[e] && (l = !0) : delete t[e];\n } catch (t) {}\n l ? t[e] = n : r.f(t, e, {\n value: n,\n enumerable: !1,\n configurable: !o.nonConfigurable,\n writable: !o.nonWritable\n });\n }\n return t;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(21),\n a = n(39),\n o = n(6),\n l = n(50).CONFIGURABLE,\n c = n(51),\n h = n(52),\n d = h.enforce,\n u = h.get,\n p = String,\n f = Object.defineProperty,\n g = i(\"\".slice),\n m = i(\"\".replace),\n b = i([].join),\n v = o && !r(function () {\n return 8 !== f(function () {}, \"length\", {\n value: 8\n }).length;\n }),\n y = String(String).split(\"String\"),\n A = t.exports = function (t, e, n) {\n \"Symbol(\" === g(p(e), 0, 7) && (e = \"[\" + m(p(e), /^Symbol\\(([^)]*)\\)/, \"$1\") + \"]\");\n n && n.getter && (e = \"get \" + e);\n n && n.setter && (e = \"set \" + e);\n (!a(t, \"name\") || l && t.name !== e) && (o ? f(t, \"name\", {\n value: e,\n configurable: !0\n }) : t.name = e);\n v && n && a(n, \"arity\") && t.length !== n.arity && f(t, \"length\", {\n value: n.arity\n });\n try {\n n && a(n, \"constructor\") && n.constructor ? o && f(t, \"prototype\", {\n writable: !1\n }) : t.prototype && (t.prototype = void 0);\n } catch (t) {}\n var i = d(t);\n a(i, \"source\") || (i.source = b(y, \"string\" == typeof e ? e : \"\"));\n return t;\n };\n Function.prototype.toString = A(function toString() {\n return s(this) && u(this).source || c(this);\n }, \"toString\");\n }, (t, e, n) => {\n var i = n(6),\n r = n(39),\n s = Function.prototype,\n a = i && Object.getOwnPropertyDescriptor,\n o = r(s, \"name\"),\n l = o && \"something\" === function something() {}.name,\n c = o && (!i || i && a(s, \"name\").configurable);\n t.exports = {\n EXISTS: o,\n PROPER: l,\n CONFIGURABLE: c\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(21),\n s = n(37),\n a = i(Function.toString);\n r(s.inspectSource) || (s.inspectSource = function (t) {\n return a(t);\n });\n t.exports = s.inspectSource;\n }, (t, e, n) => {\n var i,\n r,\n s,\n a = n(53),\n o = n(4),\n l = n(20),\n c = n(44),\n h = n(39),\n d = n(37),\n u = n(54),\n p = n(55),\n f = \"Object already initialized\",\n g = o.TypeError,\n m = o.WeakMap;\n if (a || d.state) {\n var b = d.state || (d.state = new m());\n b.get = b.get;\n b.has = b.has;\n b.set = b.set;\n i = function i(t, e) {\n if (b.has(t)) throw g(f);\n e.facade = t;\n b.set(t, e);\n return e;\n };\n r = function r(t) {\n return b.get(t) || {};\n };\n s = function s(t) {\n return b.has(t);\n };\n } else {\n var v = u(\"state\");\n p[v] = !0;\n i = function i(t, e) {\n if (h(t, v)) throw g(f);\n e.facade = t;\n c(t, v, e);\n return e;\n };\n r = function r(t) {\n return h(t, v) ? t[v] : {};\n };\n s = function s(t) {\n return h(t, v);\n };\n }\n t.exports = {\n set: i,\n get: r,\n has: s,\n enforce: function enforce(t) {\n return s(t) ? r(t) : i(t, {});\n },\n getterFor: function getterFor(t) {\n return function (e) {\n var n;\n if (!l(e) || (n = r(e)).type !== t) throw g(\"Incompatible receiver, \" + t + \" required\");\n return n;\n };\n }\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(21),\n s = i.WeakMap;\n t.exports = r(s) && /native code/.test(String(s));\n }, (t, e, n) => {\n var i = n(35),\n r = n(41),\n s = i(\"keys\");\n t.exports = function (t) {\n return s[t] || (s[t] = r(t));\n };\n }, t => {\n t.exports = {};\n }, (t, e, n) => {\n var i = n(39),\n r = n(57),\n s = n(5),\n a = n(45);\n t.exports = function (t, e, n) {\n for (var o = r(e), l = a.f, c = s.f, h = 0; h < o.length; h++) {\n var d = o[h];\n i(t, d) || n && i(n, d) || l(t, d, c(e, d));\n }\n };\n }, (t, e, n) => {\n var i = n(24),\n r = n(14),\n s = n(58),\n a = n(67),\n o = n(47),\n l = r([].concat);\n t.exports = i(\"Reflect\", \"ownKeys\") || function ownKeys(t) {\n var e = s.f(o(t)),\n n = a.f;\n return n ? l(e, n(t)) : e;\n };\n }, (t, e, n) => {\n var i = n(59),\n r = n(66).concat(\"length\", \"prototype\");\n e.f = Object.getOwnPropertyNames || function getOwnPropertyNames(t) {\n return i(t, r);\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(39),\n s = n(12),\n a = n(60).indexOf,\n o = n(55),\n l = i([].push);\n t.exports = function (t, e) {\n var n,\n i = s(t),\n c = 0,\n h = [];\n for (n in i) !r(o, n) && r(i, n) && l(h, n);\n for (; e.length > c;) r(i, n = e[c++]) && (~a(h, n) || l(h, n));\n return h;\n };\n }, (t, e, n) => {\n var i = n(12),\n r = n(61),\n s = n(64),\n createMethod = function createMethod(t) {\n return function (e, n, a) {\n var o,\n l = i(e),\n c = s(l),\n h = r(a, c);\n if (t && n != n) {\n for (; c > h;) if ((o = l[h++]) != o) return !0;\n } else for (; c > h; h++) if ((t || h in l) && l[h] === n) return t || h || 0;\n return !t && -1;\n };\n };\n t.exports = {\n includes: createMethod(!0),\n indexOf: createMethod(!1)\n };\n }, (t, e, n) => {\n var i = n(62),\n r = Math.max,\n s = Math.min;\n t.exports = function (t, e) {\n var n = i(t);\n return n < 0 ? r(n + e, 0) : s(n, e);\n };\n }, (t, e, n) => {\n var i = n(63);\n t.exports = function (t) {\n var e = +t;\n return e != e || 0 === e ? 0 : i(e);\n };\n }, t => {\n var e = Math.ceil,\n n = Math.floor;\n t.exports = Math.trunc || function trunc(t) {\n var i = +t;\n return (i > 0 ? n : e)(i);\n };\n }, (t, e, n) => {\n var i = n(65);\n t.exports = function (t) {\n return i(t.length);\n };\n }, (t, e, n) => {\n var i = n(62),\n r = Math.min;\n t.exports = function (t) {\n return t > 0 ? r(i(t), 9007199254740991) : 0;\n };\n }, t => {\n t.exports = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"];\n }, (t, e) => {\n e.f = Object.getOwnPropertySymbols;\n }, (t, e, n) => {\n var i = n(7),\n r = n(21),\n s = /#|\\.prototype\\./,\n isForced = function isForced(t, e) {\n var n = o[a(t)];\n return n == c || n != l && (r(e) ? i(e) : !!e);\n },\n a = isForced.normalize = function (t) {\n return String(t).replace(s, \".\").toLowerCase();\n },\n o = isForced.data = {},\n l = isForced.NATIVE = \"N\",\n c = isForced.POLYFILL = \"P\";\n t.exports = isForced;\n }, (t, e, n) => {\n var i = n(9),\n r = Function.prototype,\n s = r.apply,\n a = r.call;\n t.exports = \"object\" == typeof Reflect && Reflect.apply || (i ? a.bind(s) : function () {\n return a.apply(s, arguments);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(24),\n r = n(39),\n s = n(44),\n a = n(25),\n o = n(71),\n l = n(56),\n c = n(74),\n h = n(75),\n d = n(76),\n u = n(80),\n p = n(81),\n f = n(6),\n g = n(36);\n t.exports = function (t, e, n, m) {\n var b = \"stackTraceLimit\",\n v = m ? 2 : 1,\n y = t.split(\".\"),\n A = y[y.length - 1],\n _ = i.apply(null, y);\n if (_) {\n var S = _.prototype;\n !g && r(S, \"cause\") && delete S.cause;\n if (!n) return _;\n var E = i(\"Error\"),\n x = e(function (t, e) {\n var n = d(m ? e : t, void 0),\n i = m ? new _(t) : new _();\n void 0 !== n && s(i, \"message\", n);\n p(i, x, i.stack, 2);\n this && a(S, this) && h(i, this, x);\n arguments.length > v && u(i, arguments[v]);\n return i;\n });\n x.prototype = S;\n if (\"Error\" !== A) o ? o(x, E) : l(x, E, {\n name: !0\n });else if (f && b in _) {\n c(x, _, b);\n c(x, _, \"prepareStackTrace\");\n }\n l(x, _);\n if (!g) try {\n S.name !== A && s(S, \"name\", A);\n S.constructor = x;\n } catch (t) {}\n return x;\n }\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(47),\n s = n(73);\n t.exports = Object.setPrototypeOf || (\"__proto__\" in {} ? function () {\n var t,\n e = !1,\n n = {};\n try {\n (t = i(Object.prototype, \"__proto__\", \"set\"))(n, []);\n e = n instanceof Array;\n } catch (t) {}\n return function setPrototypeOf(n, i) {\n r(n);\n s(i);\n e ? t(n, i) : n.__proto__ = i;\n return n;\n };\n }() : void 0);\n }, (t, e, n) => {\n var i = n(14),\n r = n(31);\n t.exports = function (t, e, n) {\n try {\n return i(r(Object.getOwnPropertyDescriptor(t, e)[n]));\n } catch (t) {}\n };\n }, (t, e, n) => {\n var i = n(21),\n r = String,\n s = TypeError;\n t.exports = function (t) {\n if (\"object\" == typeof t || i(t)) return t;\n throw s(\"Can't set \" + r(t) + \" as a prototype\");\n };\n }, (t, e, n) => {\n var i = n(45).f;\n t.exports = function (t, e, n) {\n n in t || i(t, n, {\n configurable: !0,\n get: function get() {\n return e[n];\n },\n set: function set(t) {\n e[n] = t;\n }\n });\n };\n }, (t, e, n) => {\n var i = n(21),\n r = n(20),\n s = n(71);\n t.exports = function (t, e, n) {\n var a, o;\n s && i(a = e.constructor) && a !== n && r(o = a.prototype) && o !== n.prototype && s(t, o);\n return t;\n };\n }, (t, e, n) => {\n var i = n(77);\n t.exports = function (t, e) {\n return void 0 === t ? arguments.length < 2 ? \"\" : e : i(t);\n };\n }, (t, e, n) => {\n var i = n(78),\n r = String;\n t.exports = function (t) {\n if (\"Symbol\" === i(t)) throw TypeError(\"Cannot convert a Symbol value to a string\");\n return r(t);\n };\n }, (t, e, n) => {\n var i = n(79),\n r = n(21),\n s = n(15),\n a = n(34)(\"toStringTag\"),\n o = Object,\n l = \"Arguments\" == s(function () {\n return arguments;\n }());\n t.exports = i ? s : function (t) {\n var e, n, i;\n return void 0 === t ? \"Undefined\" : null === t ? \"Null\" : \"string\" == typeof (n = function (t, e) {\n try {\n return t[e];\n } catch (t) {}\n }(e = o(t), a)) ? n : l ? s(e) : \"Object\" == (i = s(e)) && r(e.callee) ? \"Arguments\" : i;\n };\n }, (t, e, n) => {\n var i = {};\n i[n(34)(\"toStringTag\")] = \"z\";\n t.exports = \"[object z]\" === String(i);\n }, (t, e, n) => {\n var i = n(20),\n r = n(44);\n t.exports = function (t, e) {\n i(e) && \"cause\" in e && r(t, \"cause\", e.cause);\n };\n }, (t, e, n) => {\n var i = n(44),\n r = n(82),\n s = n(83),\n a = Error.captureStackTrace;\n t.exports = function (t, e, n, o) {\n s && (a ? a(t, e) : i(t, \"stack\", r(n, o)));\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Error,\n s = i(\"\".replace),\n a = String(r(\"zxcasd\").stack),\n o = /\\n\\s*at [^:]*:[^\\n]*/,\n l = o.test(a);\n t.exports = function (t, e) {\n if (l && \"string\" == typeof t && !r.prepareStackTrace) for (; e--;) t = s(t, o, \"\");\n return t;\n };\n }, (t, e, n) => {\n var i = n(7),\n r = n(11);\n t.exports = !i(function () {\n var t = Error(\"a\");\n if (!(\"stack\" in t)) return !0;\n Object.defineProperty(t, \"stack\", r(1, 7));\n return 7 !== t.stack;\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(48),\n r = n(14),\n s = n(77),\n a = n(85),\n o = URLSearchParams,\n l = o.prototype,\n c = r(l.append),\n h = r(l.delete),\n d = r(l.forEach),\n u = r([].push),\n p = new o(\"a=1&a=2\");\n p.delete(\"a\", 1);\n p + \"\" != \"a=2\" && i(l, \"delete\", function (t) {\n var e = arguments.length,\n n = e < 2 ? void 0 : arguments[1];\n if (e && void 0 === n) return h(this, t);\n var i = [];\n d(this, function (t, e) {\n u(i, {\n key: e,\n value: t\n });\n });\n a(e, 1);\n for (var r, o = s(t), l = s(n), p = 0, f = 0, g = !1, m = i.length; p < m;) {\n r = i[p++];\n if (g || r.key === o) {\n g = !0;\n h(this, r.key);\n } else f++;\n }\n for (; f < m;) (r = i[f++]).key === o && r.value === l || c(this, r.key, r.value);\n }, {\n enumerable: !0,\n unsafe: !0\n });\n }, t => {\n var e = TypeError;\n t.exports = function (t, n) {\n if (t < n) throw e(\"Not enough arguments\");\n return t;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(48),\n r = n(14),\n s = n(77),\n a = n(85),\n o = URLSearchParams,\n l = o.prototype,\n c = r(l.getAll),\n h = r(l.has);\n new o(\"a=1\").has(\"a\", 2) && i(l, \"has\", function has(t) {\n var e = arguments.length,\n n = e < 2 ? void 0 : arguments[1];\n if (e && void 0 === n) return h(this, t);\n var i = c(this, t);\n a(e, 1);\n for (var r = s(n), o = 0; o < i.length;) if (i[o++] === r) return !0;\n return !1;\n }, {\n enumerable: !0,\n unsafe: !0\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(14),\n s = n(88),\n a = URLSearchParams.prototype,\n o = r(a.forEach);\n i && !(\"size\" in a) && s(a, \"size\", {\n get: function size() {\n var t = 0;\n o(this, function () {\n t++;\n });\n return t;\n },\n configurable: !0,\n enumerable: !0\n });\n }, (t, e, n) => {\n var i = n(49),\n r = n(45);\n t.exports = function (t, e, n) {\n n.get && i(n.get, e, {\n getter: !0\n });\n n.set && i(n.set, e, {\n setter: !0\n });\n return r.f(t, e, n);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(40),\n s = n(64),\n a = n(90),\n o = n(92);\n i({\n target: \"Array\",\n proto: !0,\n arity: 1,\n forced: n(7)(function () {\n return 4294967297 !== [].push.call({\n length: 4294967296\n }, 1);\n }) || !function () {\n try {\n Object.defineProperty([], \"length\", {\n writable: !1\n }).push();\n } catch (t) {\n return t instanceof TypeError;\n }\n }()\n }, {\n push: function push(t) {\n var e = r(this),\n n = s(e),\n i = arguments.length;\n o(n + i);\n for (var l = 0; l < i; l++) {\n e[n] = arguments[l];\n n++;\n }\n a(e, n);\n return n;\n }\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(91),\n s = TypeError,\n a = Object.getOwnPropertyDescriptor,\n o = i && !function () {\n if (void 0 !== this) return !0;\n try {\n Object.defineProperty([], \"length\", {\n writable: !1\n }).length = 1;\n } catch (t) {\n return t instanceof TypeError;\n }\n }();\n t.exports = o ? function (t, e) {\n if (r(t) && !a(t, \"length\").writable) throw s(\"Cannot set read only .length\");\n return t.length = e;\n } : function (t, e) {\n return t.length = e;\n };\n }, (t, e, n) => {\n var i = n(15);\n t.exports = Array.isArray || function isArray(t) {\n return \"Array\" == i(t);\n };\n }, t => {\n var e = TypeError;\n t.exports = function (t) {\n if (t > 9007199254740991) throw e(\"Maximum allowed index exceeded\");\n return t;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(98).findLast,\n s = i.aTypedArray;\n (0, i.exportTypedArrayMethod)(\"findLast\", function findLast(t) {\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i,\n r,\n s,\n a = n(95),\n o = n(6),\n l = n(4),\n c = n(21),\n h = n(20),\n d = n(39),\n u = n(78),\n p = n(32),\n f = n(44),\n g = n(48),\n m = n(88),\n b = n(25),\n v = n(96),\n y = n(71),\n A = n(34),\n _ = n(41),\n S = n(52),\n E = S.enforce,\n x = S.get,\n w = l.Int8Array,\n C = w && w.prototype,\n T = l.Uint8ClampedArray,\n P = T && T.prototype,\n k = w && v(w),\n M = C && v(C),\n R = Object.prototype,\n I = l.TypeError,\n D = A(\"toStringTag\"),\n O = _(\"TYPED_ARRAY_TAG\"),\n L = \"TypedArrayConstructor\",\n N = a && !!y && \"Opera\" !== u(l.opera),\n B = !1,\n j = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n },\n U = {\n BigInt64Array: 8,\n BigUint64Array: 8\n },\n getTypedArrayConstructor = function getTypedArrayConstructor(t) {\n var e = v(t);\n if (h(e)) {\n var n = x(e);\n return n && d(n, L) ? n[L] : getTypedArrayConstructor(e);\n }\n },\n isTypedArray = function isTypedArray(t) {\n if (!h(t)) return !1;\n var e = u(t);\n return d(j, e) || d(U, e);\n };\n for (i in j) (s = (r = l[i]) && r.prototype) ? E(s)[L] = r : N = !1;\n for (i in U) (s = (r = l[i]) && r.prototype) && (E(s)[L] = r);\n if (!N || !c(k) || k === Function.prototype) {\n k = function TypedArray() {\n throw I(\"Incorrect invocation\");\n };\n if (N) for (i in j) l[i] && y(l[i], k);\n }\n if (!N || !M || M === R) {\n M = k.prototype;\n if (N) for (i in j) l[i] && y(l[i].prototype, M);\n }\n N && v(P) !== M && y(P, M);\n if (o && !d(M, D)) {\n B = !0;\n m(M, D, {\n configurable: !0,\n get: function get() {\n return h(this) ? this[O] : void 0;\n }\n });\n for (i in j) l[i] && f(l[i], O, i);\n }\n t.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: N,\n TYPED_ARRAY_TAG: B && O,\n aTypedArray: function aTypedArray(t) {\n if (isTypedArray(t)) return t;\n throw I(\"Target is not a typed array\");\n },\n aTypedArrayConstructor: function aTypedArrayConstructor(t) {\n if (c(t) && (!y || b(k, t))) return t;\n throw I(p(t) + \" is not a typed array constructor\");\n },\n exportTypedArrayMethod: function exportTypedArrayMethod(t, e, n, i) {\n if (o) {\n if (n) for (var r in j) {\n var s = l[r];\n if (s && d(s.prototype, t)) try {\n delete s.prototype[t];\n } catch (n) {\n try {\n s.prototype[t] = e;\n } catch (t) {}\n }\n }\n M[t] && !n || g(M, t, n ? e : N && C[t] || e, i);\n }\n },\n exportTypedArrayStaticMethod: function exportTypedArrayStaticMethod(t, e, n) {\n var i, r;\n if (o) {\n if (y) {\n if (n) for (i in j) if ((r = l[i]) && d(r, t)) try {\n delete r[t];\n } catch (t) {}\n if (k[t] && !n) return;\n try {\n return g(k, t, n ? e : N && k[t] || e);\n } catch (t) {}\n }\n for (i in j) !(r = l[i]) || r[t] && !n || g(r, t, e);\n }\n },\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: function isView(t) {\n if (!h(t)) return !1;\n var e = u(t);\n return \"DataView\" === e || d(j, e) || d(U, e);\n },\n isTypedArray: isTypedArray,\n TypedArray: k,\n TypedArrayPrototype: M\n };\n }, t => {\n t.exports = \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof DataView;\n }, (t, e, n) => {\n var i = n(39),\n r = n(21),\n s = n(40),\n a = n(54),\n o = n(97),\n l = a(\"IE_PROTO\"),\n c = Object,\n h = c.prototype;\n t.exports = o ? c.getPrototypeOf : function (t) {\n var e = s(t);\n if (i(e, l)) return e[l];\n var n = e.constructor;\n return r(n) && e instanceof n ? n.prototype : e instanceof c ? h : null;\n };\n }, (t, e, n) => {\n var i = n(7);\n t.exports = !i(function () {\n function F() {}\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n });\n }, (t, e, n) => {\n var i = n(99),\n r = n(13),\n s = n(40),\n a = n(64),\n createMethod = function createMethod(t) {\n var e = 1 == t;\n return function (n, o, l) {\n for (var c, h = s(n), d = r(h), u = i(o, l), p = a(d); p-- > 0;) if (u(c = d[p], p, h)) switch (t) {\n case 0:\n return c;\n case 1:\n return p;\n }\n return e ? -1 : void 0;\n };\n };\n t.exports = {\n findLast: createMethod(0),\n findLastIndex: createMethod(1)\n };\n }, (t, e, n) => {\n var i = n(100),\n r = n(31),\n s = n(9),\n a = i(i.bind);\n t.exports = function (t, e) {\n r(t);\n return void 0 === e ? t : s ? a(t, e) : function () {\n return t.apply(e, arguments);\n };\n };\n }, (t, e, n) => {\n var i = n(15),\n r = n(14);\n t.exports = function (t) {\n if (\"Function\" === i(t)) return r(t);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(98).findLastIndex,\n s = i.aTypedArray;\n (0, i.exportTypedArrayMethod)(\"findLastIndex\", function findLastIndex(t) {\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(4),\n r = n(8),\n s = n(94),\n a = n(64),\n o = n(103),\n l = n(40),\n c = n(7),\n h = i.RangeError,\n d = i.Int8Array,\n u = d && d.prototype,\n p = u && u.set,\n f = s.aTypedArray,\n g = s.exportTypedArrayMethod,\n m = !c(function () {\n var t = new Uint8ClampedArray(2);\n r(p, t, {\n length: 1,\n 0: 3\n }, 1);\n return 3 !== t[1];\n }),\n b = m && s.NATIVE_ARRAY_BUFFER_VIEWS && c(function () {\n var t = new d(2);\n t.set(1);\n t.set(\"2\", 1);\n return 0 !== t[0] || 2 !== t[1];\n });\n g(\"set\", function set(t) {\n f(this);\n var e = o(arguments.length > 1 ? arguments[1] : void 0, 1),\n n = l(t);\n if (m) return r(p, this, n, e);\n var i = this.length,\n s = a(n),\n c = 0;\n if (s + e > i) throw h(\"Wrong length\");\n for (; c < s;) this[e + c] = n[c++];\n }, !m || b);\n }, (t, e, n) => {\n var i = n(104),\n r = RangeError;\n t.exports = function (t, e) {\n var n = i(t);\n if (n % e) throw r(\"Wrong offset\");\n return n;\n };\n }, (t, e, n) => {\n var i = n(62),\n r = RangeError;\n t.exports = function (t) {\n var e = i(t);\n if (e < 0) throw r(\"The argument can't be less than 0\");\n return e;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(106),\n r = n(94),\n s = r.aTypedArray,\n a = r.exportTypedArrayMethod,\n o = r.getTypedArrayConstructor;\n a(\"toReversed\", function toReversed() {\n return i(s(this), o(this));\n });\n }, (t, e, n) => {\n var i = n(64);\n t.exports = function (t, e) {\n for (var n = i(t), r = new e(n), s = 0; s < n; s++) r[s] = t[n - s - 1];\n return r;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(94),\n r = n(14),\n s = n(31),\n a = n(108),\n o = i.aTypedArray,\n l = i.getTypedArrayConstructor,\n c = i.exportTypedArrayMethod,\n h = r(i.TypedArrayPrototype.sort);\n c(\"toSorted\", function toSorted(t) {\n void 0 !== t && s(t);\n var e = o(this),\n n = a(l(e), e);\n return h(n, t);\n });\n }, (t, e, n) => {\n var i = n(64);\n t.exports = function (t, e) {\n for (var n = 0, r = i(e), s = new t(r); r > n;) s[n] = e[n++];\n return s;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(110),\n r = n(94),\n s = n(111),\n a = n(62),\n o = n(112),\n l = r.aTypedArray,\n c = r.getTypedArrayConstructor,\n h = r.exportTypedArrayMethod,\n d = !!function () {\n try {\n new Int8Array(1).with(2, {\n valueOf: function valueOf() {\n throw 8;\n }\n });\n } catch (t) {\n return 8 === t;\n }\n }();\n h(\"with\", {\n with: function _with(t, e) {\n var n = l(this),\n r = a(t),\n h = s(n) ? o(e) : +e;\n return i(n, c(n), r, h);\n }\n }.with, !d);\n }, (t, e, n) => {\n var i = n(64),\n r = n(62),\n s = RangeError;\n t.exports = function (t, e, n, a) {\n var o = i(t),\n l = r(n),\n c = l < 0 ? o + l : l;\n if (c >= o || c < 0) throw s(\"Incorrect index\");\n for (var h = new e(o), d = 0; d < o; d++) h[d] = d === c ? a : t[d];\n return h;\n };\n }, (t, e, n) => {\n var i = n(78);\n t.exports = function (t) {\n var e = i(t);\n return \"BigInt64Array\" == e || \"BigUint64Array\" == e;\n };\n }, (t, e, n) => {\n var i = n(19),\n r = TypeError;\n t.exports = function (t) {\n var e = i(t, \"number\");\n if (\"number\" == typeof e) throw r(\"Can't convert number to bigint\");\n return BigInt(e);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(6),\n r = n(88),\n s = n(114),\n a = ArrayBuffer.prototype;\n i && !(\"detached\" in a) && r(a, \"detached\", {\n configurable: !0,\n get: function detached() {\n return s(this);\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(115),\n s = i(ArrayBuffer.prototype.slice);\n t.exports = function (t) {\n if (0 !== r(t)) return !1;\n try {\n s(t, 0, 0);\n return !1;\n } catch (t) {\n return !0;\n }\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(15),\n s = TypeError;\n t.exports = i(ArrayBuffer.prototype, \"byteLength\", \"get\") || function (t) {\n if (\"ArrayBuffer\" != r(t)) throw s(\"ArrayBuffer expected\");\n return t.byteLength;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(117);\n r && i({\n target: \"ArrayBuffer\",\n proto: !0\n }, {\n transfer: function transfer() {\n return r(this, arguments.length ? arguments[0] : void 0, !0);\n }\n });\n }, (t, e, n) => {\n var i = n(4),\n r = n(14),\n s = n(72),\n a = n(118),\n o = n(114),\n l = n(115),\n c = n(119),\n h = i.TypeError,\n d = i.structuredClone,\n u = i.ArrayBuffer,\n p = i.DataView,\n f = Math.min,\n g = u.prototype,\n m = p.prototype,\n b = r(g.slice),\n v = s(g, \"resizable\", \"get\"),\n y = s(g, \"maxByteLength\", \"get\"),\n A = r(m.getInt8),\n _ = r(m.setInt8);\n t.exports = c && function (t, e, n) {\n var i = l(t),\n r = void 0 === e ? i : a(e),\n s = !v || !v(t);\n if (o(t)) throw h(\"ArrayBuffer is detached\");\n var c = d(t, {\n transfer: [t]\n });\n if (i == r && (n || s)) return c;\n if (i >= r && (!n || s)) return b(c, 0, r);\n for (var g = n && !s && y ? {\n maxByteLength: y(c)\n } : void 0, m = new u(r, g), S = new p(c), E = new p(m), x = f(r, i), w = 0; w < x; w++) _(E, w, A(S, w));\n return m;\n };\n }, (t, e, n) => {\n var i = n(62),\n r = n(65),\n s = RangeError;\n t.exports = function (t) {\n if (void 0 === t) return 0;\n var e = i(t),\n n = r(e);\n if (e !== n) throw s(\"Wrong length or index\");\n return n;\n };\n }, (t, e, n) => {\n var i = n(4),\n r = n(7),\n s = n(28),\n a = n(120),\n o = n(121),\n l = n(122),\n c = i.structuredClone;\n t.exports = !!c && !r(function () {\n if (o && s > 92 || l && s > 94 || a && s > 97) return !1;\n var t = new ArrayBuffer(8),\n e = c(t, {\n transfer: [t]\n });\n return 0 != t.byteLength || 8 != e.byteLength;\n });\n }, (t, e, n) => {\n var i = n(121),\n r = n(122);\n t.exports = !i && !r && \"object\" == typeof window && \"object\" == typeof document;\n }, t => {\n t.exports = \"object\" == typeof Deno && Deno && \"object\" == typeof Deno.version;\n }, (t, e, n) => {\n var i = n(15);\n t.exports = \"undefined\" != typeof process && \"process\" == i(process);\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(117);\n r && i({\n target: \"ArrayBuffer\",\n proto: !0\n }, {\n transferToFixedLength: function transferToFixedLength() {\n return r(this, arguments.length ? arguments[0] : void 0, !1);\n }\n });\n }, (__unused_webpack_module, exports, __w_pdfjs_require__) => {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\n Object.defineProperty(exports, \"SVGGraphics\", {\n enumerable: !0,\n get: function get() {\n return _displaySvg.SVGGraphics;\n }\n });\n exports.build = void 0;\n exports.getDocument = getDocument;\n exports.version = void 0;\n __w_pdfjs_require__(84);\n __w_pdfjs_require__(86);\n __w_pdfjs_require__(87);\n __w_pdfjs_require__(2);\n __w_pdfjs_require__(93);\n __w_pdfjs_require__(101);\n __w_pdfjs_require__(102);\n __w_pdfjs_require__(105);\n __w_pdfjs_require__(107);\n __w_pdfjs_require__(109);\n __w_pdfjs_require__(113);\n __w_pdfjs_require__(116);\n __w_pdfjs_require__(123);\n __w_pdfjs_require__(89);\n __w_pdfjs_require__(125);\n __w_pdfjs_require__(135);\n __w_pdfjs_require__(137);\n __w_pdfjs_require__(140);\n __w_pdfjs_require__(142);\n __w_pdfjs_require__(144);\n __w_pdfjs_require__(146);\n __w_pdfjs_require__(148);\n __w_pdfjs_require__(151);\n var _util = __w_pdfjs_require__(1),\n _annotation_storage = __w_pdfjs_require__(162),\n _display_utils = __w_pdfjs_require__(167),\n _font_loader = __w_pdfjs_require__(170),\n _displayNode_utils = __w_pdfjs_require__(171),\n _canvas = __w_pdfjs_require__(172),\n _worker_options = __w_pdfjs_require__(175),\n _message_handler = __w_pdfjs_require__(176),\n _metadata = __w_pdfjs_require__(177),\n _optional_content_config = __w_pdfjs_require__(178),\n _transport_stream = __w_pdfjs_require__(179),\n _displayFetch_stream = __w_pdfjs_require__(180),\n _displayNetwork = __w_pdfjs_require__(183),\n _displayNode_stream = __w_pdfjs_require__(184),\n _displaySvg = __w_pdfjs_require__(185),\n _xfa_text = __w_pdfjs_require__(193);\n const DEFAULT_RANGE_CHUNK_SIZE = 65536,\n RENDERING_CANCELLED_TIMEOUT = 100,\n DELAYED_CLEANUP_TIMEOUT = 5e3,\n DefaultCanvasFactory = _util.isNodeJS ? _displayNode_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\n exports.DefaultCanvasFactory = DefaultCanvasFactory;\n const DefaultCMapReaderFactory = _util.isNodeJS ? _displayNode_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\n const DefaultFilterFactory = _util.isNodeJS ? _displayNode_utils.NodeFilterFactory : _display_utils.DOMFilterFactory;\n exports.DefaultFilterFactory = DefaultFilterFactory;\n const DefaultStandardFontDataFactory = _util.isNodeJS ? _displayNode_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\n function getDocument(t) {\n var _t$password, _t$length;\n \"string\" == typeof t || t instanceof URL ? t = {\n url: t\n } : (0, _util.isArrayBuffer)(t) && (t = {\n data: t\n });\n if (\"object\" != typeof t) throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n if (!t.url && !t.data && !t.range) throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n const e = new PDFDocumentLoadingTask(),\n {\n docId: n\n } = e,\n i = t.url ? getUrlProp(t.url) : null,\n r = t.data ? getDataProp(t.data) : null,\n s = t.httpHeaders || null,\n a = !0 === t.withCredentials,\n o = (_t$password = t.password) !== null && _t$password !== void 0 ? _t$password : null,\n l = t.range instanceof PDFDataRangeTransport ? t.range : null,\n c = Number.isInteger(t.rangeChunkSize) && t.rangeChunkSize > 0 ? t.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let h = t.worker instanceof PDFWorker ? t.worker : null;\n const d = t.verbosity,\n u = \"string\" != typeof t.docBaseUrl || (0, _display_utils.isDataScheme)(t.docBaseUrl) ? null : t.docBaseUrl,\n p = \"string\" == typeof t.cMapUrl ? t.cMapUrl : null,\n f = !1 !== t.cMapPacked,\n g = t.CMapReaderFactory || DefaultCMapReaderFactory,\n m = \"string\" == typeof t.standardFontDataUrl ? t.standardFontDataUrl : null,\n b = t.StandardFontDataFactory || DefaultStandardFontDataFactory,\n v = !0 !== t.stopAtErrors,\n y = Number.isInteger(t.maxImageSize) && t.maxImageSize > -1 ? t.maxImageSize : -1,\n A = !1 !== t.isEvalSupported,\n _ = \"boolean\" == typeof t.isOffscreenCanvasSupported ? t.isOffscreenCanvasSupported : !_util.isNodeJS,\n S = Number.isInteger(t.canvasMaxAreaInBytes) ? t.canvasMaxAreaInBytes : -1,\n E = \"boolean\" == typeof t.disableFontFace ? t.disableFontFace : _util.isNodeJS,\n x = !0 === t.fontExtraProperties,\n w = !0 === t.enableXfa,\n C = t.ownerDocument || globalThis.document,\n T = !0 === t.disableRange,\n P = !0 === t.disableStream,\n k = !0 === t.disableAutoFetch,\n M = !0 === t.pdfBug,\n R = l ? l.length : (_t$length = t.length) !== null && _t$length !== void 0 ? _t$length : NaN,\n I = \"boolean\" == typeof t.useSystemFonts ? t.useSystemFonts : !_util.isNodeJS && !E,\n D = \"boolean\" == typeof t.useWorkerFetch ? t.useWorkerFetch : g === _display_utils.DOMCMapReaderFactory && b === _display_utils.DOMStandardFontDataFactory && p && m && (0, _display_utils.isValidFetchUrl)(p, document.baseURI) && (0, _display_utils.isValidFetchUrl)(m, document.baseURI),\n O = t.canvasFactory || new DefaultCanvasFactory({\n ownerDocument: C\n }),\n L = t.filterFactory || new DefaultFilterFactory({\n docId: n,\n ownerDocument: C\n });\n (0, _util.setVerbosityLevel)(d);\n const N = {\n canvasFactory: O,\n filterFactory: L\n };\n if (!D) {\n N.cMapReaderFactory = new g({\n baseUrl: p,\n isCompressed: f\n });\n N.standardFontDataFactory = new b({\n baseUrl: m\n });\n }\n if (!h) {\n const t = {\n verbosity: d,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n h = t.port ? PDFWorker.fromPort(t) : new PDFWorker(t);\n e._worker = h;\n }\n const B = {\n docId: n,\n apiVersion: \"3.9.179\",\n data: r,\n password: o,\n disableAutoFetch: k,\n rangeChunkSize: c,\n length: R,\n docBaseUrl: u,\n enableXfa: w,\n evaluatorOptions: {\n maxImageSize: y,\n disableFontFace: E,\n ignoreErrors: v,\n isEvalSupported: A,\n isOffscreenCanvasSupported: _,\n canvasMaxAreaInBytes: S,\n fontExtraProperties: x,\n useSystemFonts: I,\n cMapUrl: D ? p : null,\n standardFontDataUrl: D ? m : null\n }\n },\n j = {\n ignoreErrors: v,\n isEvalSupported: A,\n disableFontFace: E,\n fontExtraProperties: x,\n enableXfa: w,\n ownerDocument: C,\n disableAutoFetch: k,\n pdfBug: M,\n styleElement: null\n };\n h.promise.then(function () {\n if (e.destroyed) throw new Error(\"Loading aborted\");\n const t = _fetchDocument(h, B),\n o = new Promise(function (t) {\n let e;\n if (l) e = new _transport_stream.PDFDataTransportStream({\n length: R,\n initialData: l.initialData,\n progressiveDone: l.progressiveDone,\n contentDispositionFilename: l.contentDispositionFilename,\n disableRange: T,\n disableStream: P\n }, l);else if (!r) {\n e = (t => _util.isNodeJS ? new _displayNode_stream.PDFNodeStream(t) : (0, _display_utils.isValidFetchUrl)(t.url) ? new _displayFetch_stream.PDFFetchStream(t) : new _displayNetwork.PDFNetworkStream(t))({\n url: i,\n length: R,\n httpHeaders: s,\n withCredentials: a,\n rangeChunkSize: c,\n disableRange: T,\n disableStream: P\n });\n }\n t(e);\n });\n return Promise.all([t, o]).then(function (t) {\n let [i, r] = t;\n if (e.destroyed) throw new Error(\"Loading aborted\");\n const s = new _message_handler.MessageHandler(n, i, h.port),\n a = new WorkerTransport(s, e, r, j, N);\n e._transport = a;\n s.send(\"Ready\", null);\n });\n }).catch(e._capability.reject);\n return e;\n }\n async function _fetchDocument(t, e) {\n if (t.destroyed) throw new Error(\"Worker was destroyed\");\n const n = await t.messageHandler.sendWithPromise(\"GetDocRequest\", e, e.data ? [e.data.buffer] : null);\n if (t.destroyed) throw new Error(\"Worker was destroyed\");\n return n;\n }\n function getUrlProp(t) {\n if (t instanceof URL) return t.href;\n try {\n return new URL(t, window.location).href;\n } catch (_unused4) {\n if (_util.isNodeJS && \"string\" == typeof t) return t;\n }\n throw new Error(\"Invalid PDF url data: either string or URL-object is expected in the url property.\");\n }\n function getDataProp(t) {\n if (_util.isNodeJS && \"undefined\" != typeof Buffer && t instanceof Buffer) throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n if (t instanceof Uint8Array && t.byteLength === t.buffer.byteLength) return t;\n if (\"string\" == typeof t) return (0, _util.stringToBytes)(t);\n if (\"object\" == typeof t && !isNaN(t === null || t === void 0 ? void 0 : t.length) || (0, _util.isArrayBuffer)(t)) return new Uint8Array(t);\n throw new Error(\"Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.\");\n }\n class PDFDocumentLoadingTask {\n constructor() {\n var _PDFDocumentLoadingTa, _PDFDocumentLoadingTa2;\n this._capability = new _util.PromiseCapability();\n this._transport = null;\n this._worker = null;\n this.docId = \"d\" + (_classStaticPrivateFieldSpecSet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e, (_PDFDocumentLoadingTa = _classStaticPrivateFieldSpecGet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e), _PDFDocumentLoadingTa2 = _PDFDocumentLoadingTa++, _PDFDocumentLoadingTa)), _PDFDocumentLoadingTa2);\n this.destroyed = !1;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n var _this$_transport;\n this.destroyed = !0;\n await ((_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy());\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n }\n var _e = {\n writable: true,\n value: 0\n };\n exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n class PDFDataRangeTransport {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\n this.length = t;\n this.initialData = e;\n this.progressiveDone = n;\n this.contentDispositionFilename = i;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new _util.PromiseCapability();\n }\n addRangeListener(t) {\n this._rangeListeners.push(t);\n }\n addProgressListener(t) {\n this._progressListeners.push(t);\n }\n addProgressiveReadListener(t) {\n this._progressiveReadListeners.push(t);\n }\n addProgressiveDoneListener(t) {\n this._progressiveDoneListeners.push(t);\n }\n onDataRange(t, e) {\n for (const n of this._rangeListeners) n(t, e);\n }\n onDataProgress(t, e) {\n this._readyCapability.promise.then(() => {\n for (const n of this._progressListeners) n(t, e);\n });\n }\n onDataProgressiveRead(t) {\n this._readyCapability.promise.then(() => {\n for (const e of this._progressiveReadListeners) e(t);\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const t of this._progressiveDoneListeners) t();\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(t, e) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n }\n exports.PDFDataRangeTransport = PDFDataRangeTransport;\n class PDFDocumentProxy {\n constructor(t, e) {\n this._pdfInfo = t;\n this._transport = e;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(t) {\n return this._transport.getPage(t);\n }\n getPageIndex(t) {\n return this._transport.getPageIndex(t);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(t) {\n return this._transport.getDestination(t);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n return this._transport.startCleanup(t || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n }\n exports.PDFDocumentProxy = PDFDocumentProxy;\n var _n = /*#__PURE__*/new WeakMap();\n var _i = /*#__PURE__*/new WeakMap();\n var _s = /*#__PURE__*/new WeakSet();\n var _r = /*#__PURE__*/new WeakSet();\n class PDFPageProxy {\n constructor(_t2, _e2, n) {\n _classPrivateMethodInitSpec(this, _r);\n _classPrivateMethodInitSpec(this, _s);\n _classPrivateFieldInitSpec(this, _n, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _i, {\n writable: true,\n value: !1\n });\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\n this._pageIndex = _t2;\n this._pageInfo = _e2;\n this._transport = n;\n this._stats = i ? new _display_utils.StatTimer() : null;\n this._pdfBug = i;\n this.commonObjs = n.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = !1;\n this._intentStates = new Map();\n this.destroyed = !1;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport() {\n let {\n scale: t,\n rotation: e = this.rotate,\n offsetX: n = 0,\n offsetY: i = 0,\n dontFlip: r = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale: t,\n rotation: e,\n offsetX: n,\n offsetY: i,\n dontFlip: r\n });\n }\n getAnnotations() {\n let {\n intent: t = \"display\"\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n const e = this._transport.getRenderingIntent(t);\n return this._transport.getAnnotations(this._pageIndex, e.renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n var _this$_transport$_htm;\n return ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null;\n }\n render(t) {\n var _this$_stats, _u;\n let {\n canvasContext: e,\n viewport: n,\n intent: i = \"display\",\n annotationMode: r = _util.AnnotationMode.ENABLE,\n transform: s = null,\n background: a = null,\n optionalContentConfigPromise: o = null,\n annotationCanvasMap: l = null,\n pageColors: c = null,\n printAnnotationStorage: h = null\n } = t;\n (_this$_stats = this._stats) === null || _this$_stats === void 0 ? void 0 : _this$_stats.time(\"Overall\");\n const d = this._transport.getRenderingIntent(i, r, h);\n _classPrivateFieldSet(this, _i, !1);\n _classPrivateMethodGet(this, _r, _r2).call(this);\n o || (o = this._transport.getOptionalContentConfig());\n let u = this._intentStates.get(d.cacheKey);\n if (!u) {\n u = Object.create(null);\n this._intentStates.set(d.cacheKey, u);\n }\n if (u.streamReaderCancelTimeout) {\n clearTimeout(u.streamReaderCancelTimeout);\n u.streamReaderCancelTimeout = null;\n }\n const p = !!(d.renderingIntent & _util.RenderingIntentFlag.PRINT);\n if (!u.displayReadyCapability) {\n var _this$_stats2;\n u.displayReadyCapability = new _util.PromiseCapability();\n u.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: !1,\n separateAnnots: null\n };\n (_this$_stats2 = this._stats) === null || _this$_stats2 === void 0 ? void 0 : _this$_stats2.time(\"Page Request\");\n this._pumpOperatorList(d);\n }\n const complete = t => {\n var _this$_stats3, _this$_stats4;\n u.renderTasks.delete(f);\n (this._maybeCleanupAfterRender || p) && _classPrivateFieldSet(this, _i, !0);\n _classPrivateMethodGet(this, _s, _s2).call(this, !p);\n if (t) {\n f.capability.reject(t);\n this._abortOperatorList({\n intentState: u,\n reason: t instanceof Error ? t : new Error(t)\n });\n } else f.capability.resolve();\n (_this$_stats3 = this._stats) === null || _this$_stats3 === void 0 ? void 0 : _this$_stats3.timeEnd(\"Rendering\");\n (_this$_stats4 = this._stats) === null || _this$_stats4 === void 0 ? void 0 : _this$_stats4.timeEnd(\"Overall\");\n },\n f = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext: e,\n viewport: n,\n transform: s,\n background: a\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap: l,\n operatorList: u.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !p,\n pdfBug: this._pdfBug,\n pageColors: c\n });\n ((_u = u).renderTasks || (_u.renderTasks = new Set())).add(f);\n const g = f.task;\n Promise.all([u.displayReadyCapability.promise, o]).then(t => {\n let [e, n] = t;\n if (this.destroyed) complete();else {\n var _this$_stats5;\n (_this$_stats5 = this._stats) === null || _this$_stats5 === void 0 ? void 0 : _this$_stats5.time(\"Rendering\");\n f.initializeGraphics({\n transparency: e,\n optionalContentConfig: n\n });\n f.operatorListChanged();\n }\n }).catch(complete);\n return g;\n }\n getOperatorList() {\n let {\n intent: t = \"display\",\n annotationMode: e = _util.AnnotationMode.ENABLE,\n printAnnotationStorage: n = null\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n const i = this._transport.getRenderingIntent(t, e, n, !0);\n let r,\n s = this._intentStates.get(i.cacheKey);\n if (!s) {\n s = Object.create(null);\n this._intentStates.set(i.cacheKey, s);\n }\n if (!s.opListReadCapability) {\n var _s3, _this$_stats6;\n r = Object.create(null);\n r.operatorListChanged = function operatorListChanged() {\n if (s.operatorList.lastChunk) {\n s.opListReadCapability.resolve(s.operatorList);\n s.renderTasks.delete(r);\n }\n };\n s.opListReadCapability = new _util.PromiseCapability();\n ((_s3 = s).renderTasks || (_s3.renderTasks = new Set())).add(r);\n s.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: !1,\n separateAnnots: null\n };\n (_this$_stats6 = this._stats) === null || _this$_stats6 === void 0 ? void 0 : _this$_stats6.time(\"Page Request\");\n this._pumpOperatorList(i);\n }\n return s.opListReadCapability.promise;\n }\n streamTextContent() {\n let {\n includeMarkedContent: t = !1,\n disableNormalization: e = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: !0 === t,\n disableNormalization: !0 === e\n }, {\n highWaterMark: 100,\n size: t => t.items.length\n });\n }\n getTextContent() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (this._transport._htmlForXfa) return this.getXfa().then(t => _xfa_text.XfaText.textContent(t));\n const e = this.streamTextContent(t);\n return new Promise(function (t, n) {\n const i = e.getReader(),\n r = {\n items: [],\n styles: Object.create(null)\n };\n !function pump() {\n i.read().then(function (e) {\n let {\n value: n,\n done: i\n } = e;\n if (i) t(r);else {\n Object.assign(r.styles, n.styles);\n r.items.push(...n.items);\n pump();\n }\n }, n);\n }();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = !0;\n const t = [];\n for (const e of this._intentStates.values()) {\n this._abortOperatorList({\n intentState: e,\n reason: new Error(\"Page was destroyed.\"),\n force: !0\n });\n if (!e.opListReadCapability) for (const n of e.renderTasks) {\n t.push(n.completed);\n n.cancel();\n }\n }\n this.objs.clear();\n _classPrivateFieldSet(this, _i, !1);\n _classPrivateMethodGet(this, _r, _r2).call(this);\n return Promise.all(t);\n }\n cleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n _classPrivateFieldSet(this, _i, !0);\n const e = _classPrivateMethodGet(this, _s, _s2).call(this, !1);\n t && e && this._stats && (this._stats = new _display_utils.StatTimer());\n return e;\n }\n _startRenderPage(t, e) {\n const n = this._intentStates.get(e);\n if (n) {\n var _this$_stats7, _n$displayReadyCapabi;\n (_this$_stats7 = this._stats) === null || _this$_stats7 === void 0 ? void 0 : _this$_stats7.timeEnd(\"Page Request\");\n (_n$displayReadyCapabi = n.displayReadyCapability) === null || _n$displayReadyCapabi === void 0 ? void 0 : _n$displayReadyCapabi.resolve(t);\n }\n }\n _renderPageChunk(t, e) {\n for (let n = 0, i = t.length; n < i; n++) {\n e.operatorList.fnArray.push(t.fnArray[n]);\n e.operatorList.argsArray.push(t.argsArray[n]);\n }\n e.operatorList.lastChunk = t.lastChunk;\n e.operatorList.separateAnnots = t.separateAnnots;\n for (const t of e.renderTasks) t.operatorListChanged();\n t.lastChunk && _classPrivateMethodGet(this, _s, _s2).call(this, !0);\n }\n _pumpOperatorList(t) {\n let {\n renderingIntent: e,\n cacheKey: n,\n annotationStorageSerializable: i\n } = t;\n const {\n map: r,\n transfers: s\n } = i,\n a = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: e,\n cacheKey: n,\n annotationStorage: r\n }, s).getReader(),\n o = this._intentStates.get(n);\n o.streamReader = a;\n const pump = () => {\n a.read().then(t => {\n let {\n value: e,\n done: n\n } = t;\n if (n) o.streamReader = null;else if (!this._transport.destroyed) {\n this._renderPageChunk(e, o);\n pump();\n }\n }, t => {\n o.streamReader = null;\n if (!this._transport.destroyed) {\n if (o.operatorList) {\n o.operatorList.lastChunk = !0;\n for (const t of o.renderTasks) t.operatorListChanged();\n _classPrivateMethodGet(this, _s, _s2).call(this, !0);\n }\n if (o.displayReadyCapability) o.displayReadyCapability.reject(t);else {\n if (!o.opListReadCapability) throw t;\n o.opListReadCapability.reject(t);\n }\n }\n });\n };\n pump();\n }\n _abortOperatorList(t) {\n let {\n intentState: e,\n reason: n,\n force: i = !1\n } = t;\n if (e.streamReader) {\n if (e.streamReaderCancelTimeout) {\n clearTimeout(e.streamReaderCancelTimeout);\n e.streamReaderCancelTimeout = null;\n }\n if (!i) {\n if (e.renderTasks.size > 0) return;\n if (n instanceof _display_utils.RenderingCancelledException) {\n let t = RENDERING_CANCELLED_TIMEOUT;\n n.extraDelay > 0 && n.extraDelay < 1e3 && (t += n.extraDelay);\n e.streamReaderCancelTimeout = setTimeout(() => {\n e.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState: e,\n reason: n,\n force: !0\n });\n }, t);\n return;\n }\n }\n e.streamReader.cancel(new _util.AbortException(n.message)).catch(() => {});\n e.streamReader = null;\n if (!this._transport.destroyed) {\n for (const [t, n] of this._intentStates) if (n === e) {\n this._intentStates.delete(t);\n break;\n }\n this.cleanup();\n }\n }\n }\n get stats() {\n return this._stats;\n }\n }\n function _s2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n _classPrivateMethodGet(this, _r, _r2).call(this);\n if (!_classPrivateFieldGet(this, _i) || this.destroyed) return !1;\n if (t) {\n _classPrivateFieldSet(this, _n, setTimeout(() => {\n _classPrivateFieldSet(this, _n, null);\n _classPrivateMethodGet(this, _s, _s2).call(this, !1);\n }, DELAYED_CLEANUP_TIMEOUT));\n return !1;\n }\n for (const {\n renderTasks: t,\n operatorList: e\n } of this._intentStates.values()) if (t.size > 0 || !e.lastChunk) return !1;\n this._intentStates.clear();\n this.objs.clear();\n _classPrivateFieldSet(this, _i, !1);\n return !0;\n }\n function _r2() {\n if (_classPrivateFieldGet(this, _n)) {\n clearTimeout(_classPrivateFieldGet(this, _n));\n _classPrivateFieldSet(this, _n, null);\n }\n }\n exports.PDFPageProxy = PDFPageProxy;\n var _a = /*#__PURE__*/new WeakMap();\n var _o = /*#__PURE__*/new WeakMap();\n class LoopbackPort {\n constructor() {\n _classPrivateFieldInitSpec(this, _a, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _o, {\n writable: true,\n value: Promise.resolve()\n });\n }\n postMessage(t, e) {\n const n = {\n data: structuredClone(t, null)\n };\n _classPrivateFieldGet(this, _o).then(() => {\n for (const t of _classPrivateFieldGet(this, _a)) t.call(this, n);\n });\n }\n addEventListener(t, e) {\n _classPrivateFieldGet(this, _a).add(e);\n }\n removeEventListener(t, e) {\n _classPrivateFieldGet(this, _a).delete(e);\n }\n terminate() {\n _classPrivateFieldGet(this, _a).clear();\n }\n }\n exports.LoopbackPort = LoopbackPort;\n const PDFWorkerUtil = {\n isWorkerDisabled: !1,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n };\n exports.PDFWorkerUtil = PDFWorkerUtil;\n if (_util.isNodeJS && \"function\" == \"function\") {\n PDFWorkerUtil.isWorkerDisabled = !0;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (\"object\" == typeof document) {\n var _document;\n const t = (_document = document) === null || _document === void 0 || (_document = _document.currentScript) === null || _document === void 0 ? void 0 : _document.src;\n t && (PDFWorkerUtil.fallbackWorkerSrc = t.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\"));\n }\n PDFWorkerUtil.isSameOrigin = function (t, e) {\n let n;\n try {\n n = new URL(t);\n if (!n.origin || \"null\" === n.origin) return !1;\n } catch (_unused5) {\n return !1;\n }\n const i = new URL(e, n);\n return n.origin === i.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (t) {\n const e = \"importScripts(\\\"\".concat(t, \"\\\");\");\n return URL.createObjectURL(new Blob([e]));\n };\n class PDFWorker {\n constructor() {\n let {\n name: t = null,\n port: e = null,\n verbosity: n = (0, _util.getVerbosityLevel)()\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n if (e && _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).has(e)) throw new Error(\"Cannot use more than one PDFWorker per port.\");\n this.name = t;\n this.destroyed = !1;\n this.verbosity = n;\n this._readyCapability = new _util.PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (e) {\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).set(e, this);\n this._initializeFromPort(e);\n } else this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(t) {\n this._port = t;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", t);\n this._messageHandler.on(\"ready\", function () {});\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let {\n workerSrc: t\n } = PDFWorker;\n try {\n PDFWorkerUtil.isSameOrigin(window.location.href, t) || (t = PDFWorkerUtil.createCDNWrapper(new URL(t, window.location).href));\n const e = new Worker(t),\n n = new _message_handler.MessageHandler(\"main\", \"worker\", e),\n terminateEarly = () => {\n e.removeEventListener(\"error\", onWorkerError);\n n.destroy();\n e.terminate();\n this.destroyed ? this._readyCapability.reject(new Error(\"Worker was destroyed\")) : this._setupFakeWorker();\n },\n onWorkerError = () => {\n this._webWorker || terminateEarly();\n };\n e.addEventListener(\"error\", onWorkerError);\n n.on(\"test\", t => {\n e.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) terminateEarly();else if (t) {\n this._messageHandler = n;\n this._port = e;\n this._webWorker = e;\n this._readyCapability.resolve();\n n.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n n.destroy();\n e.terminate();\n }\n });\n n.on(\"ready\", t => {\n e.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) terminateEarly();else try {\n sendTest();\n } catch (_unused6) {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const t = new Uint8Array();\n n.send(\"test\", t, [t.buffer]);\n };\n sendTest();\n return;\n } catch (_unused7) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = !0;\n }\n PDFWorker._setupFakeWorkerGlobal.then(t => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const e = new LoopbackPort();\n this._port = e;\n const n = \"fake\" + PDFWorkerUtil.fakeWorkerId++,\n i = new _message_handler.MessageHandler(n + \"_worker\", n, e);\n t.setup(i, e);\n const r = new _message_handler.MessageHandler(n, n + \"_worker\", e);\n this._messageHandler = r;\n this._readyCapability.resolve();\n r.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(t => {\n this._readyCapability.reject(new Error(\"Setting up fake worker failed: \\\"\".concat(t.message, \"\\\".\")));\n });\n }\n destroy() {\n this.destroyed = !0;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(t) {\n if (!(t !== null && t !== void 0 && t.port)) throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n return _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).has(t.port) ? _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).get(t.port) : new PDFWorker(t);\n }\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) return _worker_options.GlobalWorkerOptions.workerSrc;\n if (null !== PDFWorkerUtil.fallbackWorkerSrc) {\n _util.isNodeJS || (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get _mainThreadWorkerMessageHandler() {\n try {\n var _globalThis$pdfjsWork;\n return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null;\n } catch (_unused8) {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n if (mainWorkerMessageHandler) return mainWorkerMessageHandler;\n if (_util.isNodeJS && \"function\" == \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n }\n var _l = {\n writable: true,\n value: new WeakMap()\n };\n exports.PDFWorker = PDFWorker;\n var _c = /*#__PURE__*/new WeakMap();\n var _h = /*#__PURE__*/new WeakMap();\n var _d = /*#__PURE__*/new WeakMap();\n var _u2 = /*#__PURE__*/new WeakMap();\n var _p = /*#__PURE__*/new WeakSet();\n class WorkerTransport {\n constructor(_t3, _e3, _n2, _i2, r) {\n _classPrivateMethodInitSpec(this, _p);\n _classPrivateFieldInitSpec(this, _c, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _h, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _d, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _u2, {\n writable: true,\n value: null\n });\n this.messageHandler = _t3;\n this.loadingTask = _e3;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n ownerDocument: _i2.ownerDocument,\n styleElement: _i2.styleElement\n });\n this._params = _i2;\n this.canvasFactory = r.canvasFactory;\n this.filterFactory = r.filterFactory;\n this.cMapReaderFactory = r.cMapReaderFactory;\n this.standardFontDataFactory = r.standardFontDataFactory;\n this.destroyed = !1;\n this.destroyCapability = null;\n this._networkStream = _n2;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new _util.PromiseCapability();\n this.setupMessageHandler();\n }\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n getRenderingIntent(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _util.AnnotationMode.ENABLE,\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,\n i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],\n r = _util.RenderingIntentFlag.DISPLAY,\n s = _annotation_storage.SerializableEmpty;\n switch (t) {\n case \"any\":\n r = _util.RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n r = _util.RenderingIntentFlag.PRINT;\n break;\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid intent: \".concat(t));\n }\n switch (e) {\n case _util.AnnotationMode.DISABLE:\n r += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case _util.AnnotationMode.ENABLE:\n break;\n case _util.AnnotationMode.ENABLE_FORMS:\n r += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case _util.AnnotationMode.ENABLE_STORAGE:\n r += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n s = (r & _util.RenderingIntentFlag.PRINT && n instanceof _annotation_storage.PrintAnnotationStorage ? n : this.annotationStorage).serializable;\n break;\n default:\n (0, _util.warn)(\"getRenderingIntent - invalid annotationMode: \".concat(e));\n }\n i && (r += _util.RenderingIntentFlag.OPLIST);\n return {\n renderingIntent: r,\n cacheKey: \"\".concat(r, \"_\").concat(s.hash),\n annotationStorageSerializable: s\n };\n }\n destroy() {\n var _classPrivateFieldGet2;\n if (this.destroyCapability) return this.destroyCapability.promise;\n this.destroyed = !0;\n this.destroyCapability = new _util.PromiseCapability();\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _u2)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const t = [];\n for (const e of _classPrivateFieldGet(this, _h).values()) t.push(e._destroy());\n _classPrivateFieldGet(this, _h).clear();\n _classPrivateFieldGet(this, _d).clear();\n this.hasOwnProperty(\"annotationStorage\") && this.annotationStorage.resetModified();\n const e = this.messageHandler.sendWithPromise(\"Terminate\", null);\n t.push(e);\n Promise.all(t).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n _classPrivateFieldGet(this, _c).clear();\n this.filterFactory.destroy();\n this._networkStream && this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler: t,\n loadingTask: e\n } = this;\n t.on(\"GetReader\", (t, e) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = t => {\n this._lastProgress = {\n loaded: t.loaded,\n total: t.total\n };\n };\n e.onPull = () => {\n this._fullReader.read().then(function (t) {\n let {\n value: n,\n done: i\n } = t;\n if (i) e.close();else {\n (0, _util.assert)(n instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n e.enqueue(new Uint8Array(n), 1, [n]);\n }\n }).catch(t => {\n e.error(t);\n });\n };\n e.onCancel = t => {\n this._fullReader.cancel(t);\n e.ready.catch(t => {\n if (!this.destroyed) throw t;\n });\n };\n });\n t.on(\"ReaderHeadersReady\", t => {\n const n = new _util.PromiseCapability(),\n i = this._fullReader;\n i.headersReady.then(() => {\n if (!i.isStreamingSupported || !i.isRangeSupported) {\n var _e$onProgress;\n this._lastProgress && ((_e$onProgress = e.onProgress) === null || _e$onProgress === void 0 ? void 0 : _e$onProgress.call(e, this._lastProgress));\n i.onProgress = t => {\n var _e$onProgress2;\n (_e$onProgress2 = e.onProgress) === null || _e$onProgress2 === void 0 ? void 0 : _e$onProgress2.call(e, {\n loaded: t.loaded,\n total: t.total\n });\n };\n }\n n.resolve({\n isStreamingSupported: i.isStreamingSupported,\n isRangeSupported: i.isRangeSupported,\n contentLength: i.contentLength\n });\n }, n.reject);\n return n.promise;\n });\n t.on(\"GetRangeReader\", (t, e) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const n = this._networkStream.getRangeReader(t.begin, t.end);\n if (n) {\n e.onPull = () => {\n n.read().then(function (t) {\n let {\n value: n,\n done: i\n } = t;\n if (i) e.close();else {\n (0, _util.assert)(n instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n e.enqueue(new Uint8Array(n), 1, [n]);\n }\n }).catch(t => {\n e.error(t);\n });\n };\n e.onCancel = t => {\n n.cancel(t);\n e.ready.catch(t => {\n if (!this.destroyed) throw t;\n });\n };\n } else e.close();\n });\n t.on(\"GetDoc\", t => {\n let {\n pdfInfo: n\n } = t;\n this._numPages = n.numPages;\n this._htmlForXfa = n.htmlForXfa;\n delete n.htmlForXfa;\n e._capability.resolve(new PDFDocumentProxy(n, this));\n });\n t.on(\"DocException\", function (t) {\n let n;\n switch (t.name) {\n case \"PasswordException\":\n n = new _util.PasswordException(t.message, t.code);\n break;\n case \"InvalidPDFException\":\n n = new _util.InvalidPDFException(t.message);\n break;\n case \"MissingPDFException\":\n n = new _util.MissingPDFException(t.message);\n break;\n case \"UnexpectedResponseException\":\n n = new _util.UnexpectedResponseException(t.message, t.status);\n break;\n case \"UnknownErrorException\":\n n = new _util.UnknownErrorException(t.message, t.details);\n break;\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n e._capability.reject(n);\n });\n t.on(\"PasswordRequest\", t => {\n _classPrivateFieldSet(this, _u2, new _util.PromiseCapability());\n if (e.onPassword) {\n const updatePassword = t => {\n t instanceof Error ? _classPrivateFieldGet(this, _u2).reject(t) : _classPrivateFieldGet(this, _u2).resolve({\n password: t\n });\n };\n try {\n e.onPassword(updatePassword, t.code);\n } catch (t) {\n _classPrivateFieldGet(this, _u2).reject(t);\n }\n } else _classPrivateFieldGet(this, _u2).reject(new _util.PasswordException(t.message, t.code));\n return _classPrivateFieldGet(this, _u2).promise;\n });\n t.on(\"DataLoaded\", t => {\n var _e$onProgress3;\n (_e$onProgress3 = e.onProgress) === null || _e$onProgress3 === void 0 ? void 0 : _e$onProgress3.call(e, {\n loaded: t.length,\n total: t.length\n });\n this.downloadInfoCapability.resolve(t);\n });\n t.on(\"StartRenderPage\", t => {\n if (this.destroyed) return;\n _classPrivateFieldGet(this, _h).get(t.pageIndex)._startRenderPage(t.transparency, t.cacheKey);\n });\n t.on(\"commonobj\", e => {\n var _globalThis$FontInspe;\n let [n, i, r] = e;\n if (!this.destroyed && !this.commonObjs.has(n)) switch (i) {\n case \"Font\":\n const e = this._params;\n if (\"error\" in r) {\n const t = r.error;\n (0, _util.warn)(\"Error during font loading: \".concat(t));\n this.commonObjs.resolve(n, t);\n break;\n }\n const s = e.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled ? (t, e) => globalThis.FontInspector.fontAdded(t, e) : null,\n a = new _font_loader.FontFaceObject(r, {\n isEvalSupported: e.isEvalSupported,\n disableFontFace: e.disableFontFace,\n ignoreErrors: e.ignoreErrors,\n inspectFont: s\n });\n this.fontLoader.bind(a).catch(e => t.sendWithPromise(\"FontFallback\", {\n id: n\n })).finally(() => {\n !e.fontExtraProperties && a.data && (a.data = null);\n this.commonObjs.resolve(n, a);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(n, r);\n break;\n default:\n throw new Error(\"Got unknown common object type \".concat(i));\n }\n });\n t.on(\"obj\", t => {\n let [e, n, i, r] = t;\n if (this.destroyed) return;\n const s = _classPrivateFieldGet(this, _h).get(n);\n if (!s.objs.has(e)) switch (i) {\n case \"Image\":\n s.objs.resolve(e, r);\n if (r) {\n var _r$data;\n let t;\n if (r.bitmap) {\n const {\n width: e,\n height: n\n } = r;\n t = e * n * 4;\n } else t = ((_r$data = r.data) === null || _r$data === void 0 ? void 0 : _r$data.length) || 0;\n t > _util.MAX_IMAGE_SIZE_TO_CACHE && (s._maybeCleanupAfterRender = !0);\n }\n break;\n case \"Pattern\":\n s.objs.resolve(e, r);\n break;\n default:\n throw new Error(\"Got unknown object type \".concat(i));\n }\n });\n t.on(\"DocProgress\", t => {\n var _e$onProgress4;\n this.destroyed || ((_e$onProgress4 = e.onProgress) === null || _e$onProgress4 === void 0 ? void 0 : _e$onProgress4.call(e, {\n loaded: t.loaded,\n total: t.total\n }));\n });\n t.on(\"FetchBuiltInCMap\", t => this.destroyed ? Promise.reject(new Error(\"Worker was destroyed.\")) : this.cMapReaderFactory ? this.cMapReaderFactory.fetch(t) : Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\")));\n t.on(\"FetchStandardFontData\", t => this.destroyed ? Promise.reject(new Error(\"Worker was destroyed.\")) : this.standardFontDataFactory ? this.standardFontDataFactory.fetch(t) : Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\")));\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n var _this$_fullReader$fil, _this$_fullReader;\n this.annotationStorage.size <= 0 && (0, _util.warn)(\"saveDocument called while `annotationStorage` is empty, please use the getData-method instead.\");\n const {\n map: t,\n transfers: e\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: t,\n filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null\n }, e).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(t) {\n if (!Number.isInteger(t) || t <= 0 || t > this._numPages) return Promise.reject(new Error(\"Invalid page request.\"));\n const e = t - 1,\n n = _classPrivateFieldGet(this, _d).get(e);\n if (n) return n;\n const i = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex: e\n }).then(t => {\n if (this.destroyed) throw new Error(\"Transport destroyed\");\n const n = new PDFPageProxy(e, t, this, this._params.pdfBug);\n _classPrivateFieldGet(this, _h).set(e, n);\n return n;\n });\n _classPrivateFieldGet(this, _d).set(e, i);\n return i;\n }\n getPageIndex(t) {\n return \"object\" != typeof t || null === t || !Number.isInteger(t.num) || t.num < 0 || !Number.isInteger(t.gen) || t.gen < 0 ? Promise.reject(new Error(\"Invalid pageIndex request.\")) : this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: t.num,\n gen: t.gen\n });\n }\n getAnnotations(t, e) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex: t,\n intent: e\n });\n }\n getFieldObjects() {\n return _classPrivateMethodGet(this, _p, _p2).call(this, \"GetFieldObjects\");\n }\n hasJSActions() {\n return _classPrivateMethodGet(this, _p, _p2).call(this, \"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(t) {\n return \"string\" != typeof t ? Promise.reject(new Error(\"Invalid destination request.\")) : this.messageHandler.sendWithPromise(\"GetDestination\", {\n id: t\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n getPageJSActions(t) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex: t\n });\n }\n getStructTree(t) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex: t\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(t => new _optional_content_config.OptionalContentConfig(t));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const t = \"GetMetadata\",\n e = _classPrivateFieldGet(this, _c).get(t);\n if (e) return e;\n const n = this.messageHandler.sendWithPromise(t, null).then(t => {\n var _this$_fullReader$fil2, _this$_fullReader2, _this$_fullReader$con, _this$_fullReader3;\n return {\n info: t[0],\n metadata: t[1] ? new _metadata.Metadata(t[1]) : null,\n contentDispositionFilename: (_this$_fullReader$fil2 = (_this$_fullReader2 = this._fullReader) === null || _this$_fullReader2 === void 0 ? void 0 : _this$_fullReader2.filename) !== null && _this$_fullReader$fil2 !== void 0 ? _this$_fullReader$fil2 : null,\n contentLength: (_this$_fullReader$con = (_this$_fullReader3 = this._fullReader) === null || _this$_fullReader3 === void 0 ? void 0 : _this$_fullReader3.contentLength) !== null && _this$_fullReader$con !== void 0 ? _this$_fullReader$con : null\n };\n });\n _classPrivateFieldGet(this, _c).set(t, n);\n return n;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (!this.destroyed) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const t of _classPrivateFieldGet(this, _h).values()) {\n if (!t.cleanup()) throw new Error(\"startCleanup: Page \".concat(t.pageNumber, \" is currently rendering.\"));\n }\n this.commonObjs.clear();\n t || this.fontLoader.clear();\n _classPrivateFieldGet(this, _c).clear();\n this.filterFactory.destroy(!0);\n }\n }\n get loadingParams() {\n const {\n disableAutoFetch: t,\n enableXfa: e\n } = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch: t,\n enableXfa: e\n });\n }\n }\n function _p2(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = _classPrivateFieldGet(this, _c).get(t);\n if (n) return n;\n const i = this.messageHandler.sendWithPromise(t, e);\n _classPrivateFieldGet(this, _c).set(t, i);\n return i;\n }\n var _f = /*#__PURE__*/new WeakMap();\n var _g = /*#__PURE__*/new WeakSet();\n class PDFObjects {\n constructor() {\n _classPrivateMethodInitSpec(this, _g);\n _classPrivateFieldInitSpec(this, _f, {\n writable: true,\n value: Object.create(null)\n });\n }\n get(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (e) {\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\n n.capability.promise.then(() => e(n.data));\n return null;\n }\n const n = _classPrivateFieldGet(this, _f)[t];\n if (!(n !== null && n !== void 0 && n.capability.settled)) throw new Error(\"Requesting object that isn't resolved yet \".concat(t, \".\"));\n return n.data;\n }\n has(t) {\n const e = _classPrivateFieldGet(this, _f)[t];\n return (e === null || e === void 0 ? void 0 : e.capability.settled) || !1;\n }\n resolve(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\n n.data = e;\n n.capability.resolve();\n }\n clear() {\n for (const t in _classPrivateFieldGet(this, _f)) {\n var _e$bitmap;\n const {\n data: e\n } = _classPrivateFieldGet(this, _f)[t];\n e === null || e === void 0 || (_e$bitmap = e.bitmap) === null || _e$bitmap === void 0 ? void 0 : _e$bitmap.close();\n }\n _classPrivateFieldSet(this, _f, Object.create(null));\n }\n }\n function _g2(t) {\n const e = _classPrivateFieldGet(this, _f)[t];\n return e || (_classPrivateFieldGet(this, _f)[t] = {\n capability: new _util.PromiseCapability(),\n data: null\n });\n }\n var _m = /*#__PURE__*/new WeakMap();\n class RenderTask {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _m, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _m, t);\n this.onContinue = null;\n }\n get promise() {\n return _classPrivateFieldGet(this, _m).capability.promise;\n }\n cancel() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\n _classPrivateFieldGet(this, _m).cancel(null, t);\n }\n get separateAnnots() {\n const {\n separateAnnots: t\n } = _classPrivateFieldGet(this, _m).operatorList;\n if (!t) return !1;\n const {\n annotationCanvasMap: e\n } = _classPrivateFieldGet(this, _m);\n return t.form || t.canvas && (e === null || e === void 0 ? void 0 : e.size) > 0;\n }\n }\n exports.RenderTask = RenderTask;\n class InternalRenderTask {\n constructor(t) {\n let {\n callback: e,\n params: n,\n objs: i,\n commonObjs: r,\n annotationCanvasMap: s,\n operatorList: a,\n pageIndex: o,\n canvasFactory: l,\n filterFactory: c,\n useRequestAnimationFrame: h = !1,\n pdfBug: d = !1,\n pageColors: u = null\n } = t;\n this.callback = e;\n this.params = n;\n this.objs = i;\n this.commonObjs = r;\n this.annotationCanvasMap = s;\n this.operatorListIdx = null;\n this.operatorList = a;\n this._pageIndex = o;\n this.canvasFactory = l;\n this.filterFactory = c;\n this._pdfBug = d;\n this.pageColors = u;\n this.running = !1;\n this.graphicsReadyCallback = null;\n this.graphicsReady = !1;\n this._useRequestAnimationFrame = !0 === h && \"undefined\" != typeof window;\n this.cancelled = !1;\n this.capability = new _util.PromiseCapability();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = n.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics(t) {\n var _globalThis$StepperMa, _this$graphicsReadyCa;\n let {\n transparency: e = !1,\n optionalContentConfig: n\n } = t;\n if (this.cancelled) return;\n if (this._canvas) {\n if (_classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).has(this._canvas)) throw new Error(\"Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.\");\n _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).add(this._canvas);\n }\n if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext: i,\n viewport: r,\n transform: s,\n background: a\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(i, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: n\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform: s,\n viewport: r,\n transparency: e,\n background: a\n });\n this.operatorListIdx = 0;\n this.graphicsReady = !0;\n (_this$graphicsReadyCa = this.graphicsReadyCallback) === null || _this$graphicsReadyCa === void 0 ? void 0 : _this$graphicsReadyCa.call(this);\n }\n cancel() {\n var _this$gfx;\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\n this.running = !1;\n this.cancelled = !0;\n (_this$gfx = this.gfx) === null || _this$gfx === void 0 ? void 0 : _this$gfx.endDrawing();\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\n this.callback(t || new _display_utils.RenderingCancelledException(\"Rendering cancelled, page \".concat(this._pageIndex + 1), e));\n }\n operatorListChanged() {\n if (this.graphicsReady) {\n var _this$stepper;\n (_this$stepper = this.stepper) === null || _this$stepper === void 0 ? void 0 : _this$stepper.updateOperatorList(this.operatorList);\n this.running || this._continue();\n } else this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound);\n }\n _continue() {\n this.running = !0;\n this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext());\n }\n _scheduleNext() {\n this._useRequestAnimationFrame ? window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n }) : Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n async _next() {\n if (!this.cancelled) {\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = !1;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing(this.pageColors);\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\n this.callback();\n }\n }\n }\n }\n }\n var _b = {\n writable: true,\n value: new WeakSet()\n };\n const version = \"3.9.179\";\n exports.version = version;\n const build = \"1ef6fbc52\";\n exports.build = build;\n }, (t, e, n) => {\n var i = n(3),\n r = n(126);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"difference\")\n }, {\n difference: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(129),\n a = n(132),\n o = n(133),\n l = n(130),\n c = n(131),\n h = r.has,\n d = r.remove;\n t.exports = function difference(t) {\n var e = i(this),\n n = o(t),\n r = s(e);\n a(e) <= n.size ? l(e, function (t) {\n n.includes(t) && d(r, t);\n }) : c(n.getIterator(), function (t) {\n h(e, t) && d(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(128).has;\n t.exports = function (t) {\n i(t);\n return t;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Set.prototype;\n t.exports = {\n Set: Set,\n add: i(r.add),\n has: i(r.has),\n remove: i(r.delete),\n proto: r\n };\n }, (t, e, n) => {\n var i = n(128),\n r = n(130),\n s = i.Set,\n a = i.add;\n t.exports = function (t) {\n var e = new s();\n r(t, function (t) {\n a(e, t);\n });\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = n(131),\n s = n(128),\n a = s.Set,\n o = s.proto,\n l = i(o.forEach),\n c = i(o.keys),\n h = c(new a()).next;\n t.exports = function (t, e, n) {\n return n ? r(c(t), e, h) : l(t, e);\n };\n }, (t, e, n) => {\n var i = n(8);\n t.exports = function (t, e, n) {\n for (var r, s, a = n || t.next; !(r = i(a, t)).done;) if (void 0 !== (s = e(r.value))) return s;\n };\n }, (t, e, n) => {\n var i = n(72),\n r = n(128);\n t.exports = i(r.proto, \"size\", \"get\") || function (t) {\n return t.size;\n };\n }, (t, e, n) => {\n var i = n(31),\n r = n(47),\n s = n(8),\n a = n(62),\n o = TypeError,\n l = Math.max,\n SetRecord = function SetRecord(t, e, n, i) {\n this.set = t;\n this.size = e;\n this.has = n;\n this.keys = i;\n };\n SetRecord.prototype = {\n getIterator: function getIterator() {\n return r(s(this.keys, this.set));\n },\n includes: function includes(t) {\n return s(this.has, this.set, t);\n }\n };\n t.exports = function (t) {\n r(t);\n var e = +t.size;\n if (e != e) throw o(\"Invalid size\");\n return new SetRecord(t, l(a(e), 0), i(t.has), i(t.keys));\n };\n }, (t, e, n) => {\n var i = n(24);\n t.exports = function (t) {\n try {\n new (i(\"Set\"))()[t]({\n size: 0,\n has: function has() {\n return !1;\n },\n keys: function keys() {\n return {\n next: function next() {\n return {\n done: !0\n };\n }\n };\n }\n });\n return !0;\n } catch (t) {\n return !1;\n }\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(7),\n s = n(136);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"intersection\") || r(function () {\n return \"3,2\" != Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])));\n })\n }, {\n intersection: s\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(132),\n a = n(133),\n o = n(130),\n l = n(131),\n c = r.Set,\n h = r.add,\n d = r.has;\n t.exports = function intersection(t) {\n var e = i(this),\n n = a(t),\n r = new c();\n s(e) > n.size ? l(n.getIterator(), function (t) {\n d(e, t) && h(r, t);\n }) : o(e, function (t) {\n n.includes(t) && h(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(138);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isDisjointFrom\")\n }, {\n isDisjointFrom: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).has,\n s = n(132),\n a = n(133),\n o = n(130),\n l = n(131),\n c = n(139);\n t.exports = function isDisjointFrom(t) {\n var e = i(this),\n n = a(t);\n if (s(e) <= n.size) return !1 !== o(e, function (t) {\n if (n.includes(t)) return !1;\n }, !0);\n var h = n.getIterator();\n return !1 !== l(h, function (t) {\n if (r(e, t)) return c(h, \"normal\", !1);\n });\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(47),\n s = n(30);\n t.exports = function (t, e, n) {\n var a, o;\n r(t);\n try {\n if (!(a = s(t, \"return\"))) {\n if (\"throw\" === e) throw n;\n return n;\n }\n a = i(a, t);\n } catch (t) {\n o = !0;\n a = t;\n }\n if (\"throw\" === e) throw n;\n if (o) throw a;\n r(a);\n return n;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(141);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isSubsetOf\")\n }, {\n isSubsetOf: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(132),\n s = n(130),\n a = n(133);\n t.exports = function isSubsetOf(t) {\n var e = i(this),\n n = a(t);\n return !(r(e) > n.size) && !1 !== s(e, function (t) {\n if (!n.includes(t)) return !1;\n }, !0);\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(143);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"isSupersetOf\")\n }, {\n isSupersetOf: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).has,\n s = n(132),\n a = n(133),\n o = n(131),\n l = n(139);\n t.exports = function isSupersetOf(t) {\n var e = i(this),\n n = a(t);\n if (s(e) < n.size) return !1;\n var c = n.getIterator();\n return !1 !== o(c, function (t) {\n if (!r(e, t)) return l(c, \"normal\", !1);\n });\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(145);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"symmetricDifference\")\n }, {\n symmetricDifference: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128),\n s = n(129),\n a = n(133),\n o = n(131),\n l = r.add,\n c = r.has,\n h = r.remove;\n t.exports = function symmetricDifference(t) {\n var e = i(this),\n n = a(t).getIterator(),\n r = s(e);\n o(n, function (t) {\n c(e, t) ? h(r, t) : l(r, t);\n });\n return r;\n };\n }, (t, e, n) => {\n var i = n(3),\n r = n(147);\n i({\n target: \"Set\",\n proto: !0,\n real: !0,\n forced: !n(134)(\"union\")\n }, {\n union: r\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(127),\n r = n(128).add,\n s = n(129),\n a = n(133),\n o = n(131);\n t.exports = function union(t) {\n var e = i(this),\n n = a(t).getIterator(),\n l = s(e);\n o(n, function (t) {\n r(l, t);\n });\n return l;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(4),\n s = n(24),\n a = n(11),\n o = n(45).f,\n l = n(39),\n c = n(149),\n h = n(75),\n d = n(76),\n u = n(150),\n p = n(82),\n f = n(6),\n g = n(36),\n m = \"DOMException\",\n b = s(\"Error\"),\n v = s(m),\n y = function DOMException() {\n c(this, A);\n var t = arguments.length,\n e = d(t < 1 ? void 0 : arguments[0]),\n n = d(t < 2 ? void 0 : arguments[1], \"Error\"),\n i = new v(e, n),\n r = b(e);\n r.name = m;\n o(i, \"stack\", a(1, p(r.stack, 1)));\n h(i, this, y);\n return i;\n },\n A = y.prototype = v.prototype,\n _ = (\"stack\" in b(m)),\n S = (\"stack\" in new v(1, 2)),\n E = v && f && Object.getOwnPropertyDescriptor(r, m),\n x = !(!E || E.writable && E.configurable),\n w = _ && !x && !S;\n i({\n global: !0,\n constructor: !0,\n forced: g || w\n }, {\n DOMException: w ? y : v\n });\n var C = s(m),\n T = C.prototype;\n if (T.constructor !== C) {\n g || o(T, \"constructor\", a(1, C));\n for (var P in u) if (l(u, P)) {\n var k = u[P],\n M = k.s;\n l(C, M) || o(C, M, a(6, k.c));\n }\n }\n }, (t, e, n) => {\n var i = n(25),\n r = TypeError;\n t.exports = function (t, e) {\n if (i(e, t)) return t;\n throw r(\"Incorrect invocation\");\n };\n }, t => {\n t.exports = {\n IndexSizeError: {\n s: \"INDEX_SIZE_ERR\",\n c: 1,\n m: 1\n },\n DOMStringSizeError: {\n s: \"DOMSTRING_SIZE_ERR\",\n c: 2,\n m: 0\n },\n HierarchyRequestError: {\n s: \"HIERARCHY_REQUEST_ERR\",\n c: 3,\n m: 1\n },\n WrongDocumentError: {\n s: \"WRONG_DOCUMENT_ERR\",\n c: 4,\n m: 1\n },\n InvalidCharacterError: {\n s: \"INVALID_CHARACTER_ERR\",\n c: 5,\n m: 1\n },\n NoDataAllowedError: {\n s: \"NO_DATA_ALLOWED_ERR\",\n c: 6,\n m: 0\n },\n NoModificationAllowedError: {\n s: \"NO_MODIFICATION_ALLOWED_ERR\",\n c: 7,\n m: 1\n },\n NotFoundError: {\n s: \"NOT_FOUND_ERR\",\n c: 8,\n m: 1\n },\n NotSupportedError: {\n s: \"NOT_SUPPORTED_ERR\",\n c: 9,\n m: 1\n },\n InUseAttributeError: {\n s: \"INUSE_ATTRIBUTE_ERR\",\n c: 10,\n m: 1\n },\n InvalidStateError: {\n s: \"INVALID_STATE_ERR\",\n c: 11,\n m: 1\n },\n SyntaxError: {\n s: \"SYNTAX_ERR\",\n c: 12,\n m: 1\n },\n InvalidModificationError: {\n s: \"INVALID_MODIFICATION_ERR\",\n c: 13,\n m: 1\n },\n NamespaceError: {\n s: \"NAMESPACE_ERR\",\n c: 14,\n m: 1\n },\n InvalidAccessError: {\n s: \"INVALID_ACCESS_ERR\",\n c: 15,\n m: 1\n },\n ValidationError: {\n s: \"VALIDATION_ERR\",\n c: 16,\n m: 0\n },\n TypeMismatchError: {\n s: \"TYPE_MISMATCH_ERR\",\n c: 17,\n m: 1\n },\n SecurityError: {\n s: \"SECURITY_ERR\",\n c: 18,\n m: 1\n },\n NetworkError: {\n s: \"NETWORK_ERR\",\n c: 19,\n m: 1\n },\n AbortError: {\n s: \"ABORT_ERR\",\n c: 20,\n m: 1\n },\n URLMismatchError: {\n s: \"URL_MISMATCH_ERR\",\n c: 21,\n m: 1\n },\n QuotaExceededError: {\n s: \"QUOTA_EXCEEDED_ERR\",\n c: 22,\n m: 1\n },\n TimeoutError: {\n s: \"TIMEOUT_ERR\",\n c: 23,\n m: 1\n },\n InvalidNodeTypeError: {\n s: \"INVALID_NODE_TYPE_ERR\",\n c: 24,\n m: 1\n },\n DataCloneError: {\n s: \"DATA_CLONE_ERR\",\n c: 25,\n m: 1\n }\n };\n }, (t, e, n) => {\n var i,\n r = n(36),\n s = n(3),\n a = n(4),\n o = n(24),\n l = n(14),\n c = n(7),\n h = n(41),\n d = n(21),\n u = n(152),\n p = n(17),\n f = n(20),\n g = n(23),\n m = n(153),\n b = n(47),\n v = n(78),\n y = n(39),\n A = n(158),\n _ = n(44),\n S = n(64),\n E = n(85),\n x = n(159),\n w = n(161),\n C = n(128),\n T = n(83),\n P = n(119),\n k = a.Object,\n M = a.Array,\n R = a.Date,\n I = a.Error,\n D = a.EvalError,\n O = a.RangeError,\n L = a.ReferenceError,\n N = a.SyntaxError,\n B = a.TypeError,\n j = a.URIError,\n U = a.PerformanceMark,\n z = a.WebAssembly,\n H = z && z.CompileError || I,\n q = z && z.LinkError || I,\n W = z && z.RuntimeError || I,\n G = o(\"DOMException\"),\n V = w.Map,\n $ = w.has,\n X = w.get,\n K = w.set,\n Y = C.Set,\n J = C.add,\n Q = o(\"Object\", \"keys\"),\n Z = l([].push),\n tt = l((!0).valueOf),\n et = l(1..valueOf),\n nt = l(\"\".valueOf),\n it = l(R.prototype.getTime),\n rt = h(\"structuredClone\"),\n st = \"DataCloneError\",\n at = \"Transferring\",\n checkBasicSemantic = function checkBasicSemantic(t) {\n return !c(function () {\n var e = new a.Set([7]),\n n = t(e),\n i = t(k(7));\n return n == e || !n.has(7) || \"object\" != typeof i || 7 != i;\n }) && t;\n },\n checkErrorsCloning = function checkErrorsCloning(t, e) {\n return !c(function () {\n var n = new e(),\n i = t({\n a: n,\n b: n\n });\n return !(i && i.a === i.b && i.a instanceof e && i.a.stack === n.stack);\n });\n },\n ot = a.structuredClone,\n lt = r || !checkErrorsCloning(ot, I) || !checkErrorsCloning(ot, G) || !(i = ot, !c(function () {\n var t = i(new a.AggregateError([1], rt, {\n cause: 3\n }));\n return \"AggregateError\" != t.name || 1 != t.errors[0] || t.message != rt || 3 != t.cause;\n })),\n ct = !ot && checkBasicSemantic(function (t) {\n return new U(rt, {\n detail: t\n }).detail;\n }),\n ht = checkBasicSemantic(ot) || ct,\n throwUncloneable = function throwUncloneable(t) {\n throw new G(\"Uncloneable type: \" + t, st);\n },\n throwUnpolyfillable = function throwUnpolyfillable(t, e) {\n throw new G((e || \"Cloning\") + \" of \" + t + \" cannot be properly polyfilled in this engine\", st);\n },\n tryNativeRestrictedStructuredClone = function tryNativeRestrictedStructuredClone(t, e) {\n ht || throwUnpolyfillable(e);\n return ht(t);\n },\n cloneBuffer = function cloneBuffer(t, e, n) {\n if ($(e, t)) return X(e, t);\n var i, r, s, o, l, c;\n if (\"SharedArrayBuffer\" === (n || v(t))) i = ht ? ht(t) : t;else {\n var h = a.DataView;\n h || \"function\" == typeof t.slice || throwUnpolyfillable(\"ArrayBuffer\");\n try {\n if (\"function\" != typeof t.slice || t.resizable) {\n r = t.byteLength;\n s = \"maxByteLength\" in t ? {\n maxByteLength: t.maxByteLength\n } : void 0;\n i = new ArrayBuffer(r, s);\n o = new h(t);\n l = new h(i);\n for (c = 0; c < r; c++) l.setUint8(c, o.getUint8(c));\n } else i = t.slice(0);\n } catch (t) {\n throw new G(\"ArrayBuffer is detached\", st);\n }\n }\n K(e, t, i);\n return i;\n },\n cloneView = function cloneView(t, e, n, i, r) {\n var s = a[e];\n f(s) || throwUnpolyfillable(e);\n return new s(cloneBuffer(t.buffer, r), n, i);\n },\n Placeholder = function Placeholder(t, e, n) {\n this.object = t;\n this.type = e;\n this.metadata = n;\n },\n structuredCloneInternal = function structuredCloneInternal(t, e, n) {\n g(t) && throwUncloneable(\"Symbol\");\n if (!f(t)) return t;\n if (e) {\n if ($(e, t)) return X(e, t);\n } else e = new V();\n var i,\n r,\n s,\n l,\n c,\n h,\n u,\n p,\n m = v(t);\n switch (m) {\n case \"Array\":\n s = M(S(t));\n break;\n case \"Object\":\n s = {};\n break;\n case \"Map\":\n s = new V();\n break;\n case \"Set\":\n s = new Y();\n break;\n case \"RegExp\":\n s = new RegExp(t.source, x(t));\n break;\n case \"Error\":\n switch (r = t.name) {\n case \"AggregateError\":\n s = o(\"AggregateError\")([]);\n break;\n case \"EvalError\":\n s = D();\n break;\n case \"RangeError\":\n s = O();\n break;\n case \"ReferenceError\":\n s = L();\n break;\n case \"SyntaxError\":\n s = N();\n break;\n case \"TypeError\":\n s = B();\n break;\n case \"URIError\":\n s = j();\n break;\n case \"CompileError\":\n s = H();\n break;\n case \"LinkError\":\n s = q();\n break;\n case \"RuntimeError\":\n s = W();\n break;\n default:\n s = I();\n }\n break;\n case \"DOMException\":\n s = new G(t.message, t.name);\n break;\n case \"ArrayBuffer\":\n case \"SharedArrayBuffer\":\n s = n ? new Placeholder(t, m) : cloneBuffer(t, e, m);\n break;\n case \"DataView\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float16Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n h = \"DataView\" === m ? t.byteLength : t.length;\n s = n ? new Placeholder(t, m, {\n offset: t.byteOffset,\n length: h\n }) : cloneView(t, m, t.byteOffset, h, e);\n break;\n case \"DOMQuad\":\n try {\n s = new DOMQuad(structuredCloneInternal(t.p1, e, n), structuredCloneInternal(t.p2, e, n), structuredCloneInternal(t.p3, e, n), structuredCloneInternal(t.p4, e, n));\n } catch (e) {\n s = tryNativeRestrictedStructuredClone(t, m);\n }\n break;\n case \"File\":\n if (ht) try {\n s = ht(t);\n v(s) !== m && (s = void 0);\n } catch (t) {}\n if (!s) try {\n s = new File([t], t.name, t);\n } catch (t) {}\n s || throwUnpolyfillable(m);\n break;\n case \"FileList\":\n if (l = function () {\n var t;\n try {\n t = new a.DataTransfer();\n } catch (e) {\n try {\n t = new a.ClipboardEvent(\"\").clipboardData;\n } catch (t) {}\n }\n return t && t.items && t.files ? t : null;\n }()) {\n for (c = 0, h = S(t); c < h; c++) l.items.add(structuredCloneInternal(t[c], e, n));\n s = l.files;\n } else s = tryNativeRestrictedStructuredClone(t, m);\n break;\n case \"ImageData\":\n try {\n s = new ImageData(structuredCloneInternal(t.data, e, n), t.width, t.height, {\n colorSpace: t.colorSpace\n });\n } catch (e) {\n s = tryNativeRestrictedStructuredClone(t, m);\n }\n break;\n default:\n if (ht) s = ht(t);else switch (m) {\n case \"BigInt\":\n s = k(t.valueOf());\n break;\n case \"Boolean\":\n s = k(tt(t));\n break;\n case \"Number\":\n s = k(et(t));\n break;\n case \"String\":\n s = k(nt(t));\n break;\n case \"Date\":\n s = new R(it(t));\n break;\n case \"Blob\":\n try {\n s = t.slice(0, t.size, t.type);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMPoint\":\n case \"DOMPointReadOnly\":\n i = a[m];\n try {\n s = i.fromPoint ? i.fromPoint(t) : new i(t.x, t.y, t.z, t.w);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMRect\":\n case \"DOMRectReadOnly\":\n i = a[m];\n try {\n s = i.fromRect ? i.fromRect(t) : new i(t.x, t.y, t.width, t.height);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"DOMMatrix\":\n case \"DOMMatrixReadOnly\":\n i = a[m];\n try {\n s = i.fromMatrix ? i.fromMatrix(t) : new i(t);\n } catch (t) {\n throwUnpolyfillable(m);\n }\n break;\n case \"AudioData\":\n case \"VideoFrame\":\n d(t.clone) || throwUnpolyfillable(m);\n try {\n s = t.clone();\n } catch (t) {\n throwUncloneable(m);\n }\n break;\n case \"CropTarget\":\n case \"CryptoKey\":\n case \"FileSystemDirectoryHandle\":\n case \"FileSystemFileHandle\":\n case \"FileSystemHandle\":\n case \"GPUCompilationInfo\":\n case \"GPUCompilationMessage\":\n case \"ImageBitmap\":\n case \"RTCCertificate\":\n case \"WebAssembly.Module\":\n throwUnpolyfillable(m);\n default:\n throwUncloneable(m);\n }\n }\n K(e, t, s);\n switch (m) {\n case \"Array\":\n case \"Object\":\n u = Q(t);\n for (c = 0, h = S(u); c < h; c++) {\n p = u[c];\n A(s, p, structuredCloneInternal(t[p], e, n));\n }\n break;\n case \"Map\":\n t.forEach(function (t, i) {\n K(s, structuredCloneInternal(i, e, n), structuredCloneInternal(t, e, n));\n });\n break;\n case \"Set\":\n t.forEach(function (t) {\n J(s, structuredCloneInternal(t, e, n));\n });\n break;\n case \"Error\":\n _(s, \"message\", structuredCloneInternal(t.message, e, n));\n y(t, \"cause\") && _(s, \"cause\", structuredCloneInternal(t.cause, e, n));\n \"AggregateError\" == r && (s.errors = structuredCloneInternal(t.errors, e, n));\n case \"DOMException\":\n T && _(s, \"stack\", structuredCloneInternal(t.stack, e, n));\n }\n return s;\n },\n replacePlaceholders = function replacePlaceholders(t, e) {\n if (!f(t)) return t;\n if ($(e, t)) return X(e, t);\n var n, i, r, s, a, o, l, c;\n if (t instanceof Placeholder) {\n n = t.type;\n i = t.object;\n switch (n) {\n case \"ArrayBuffer\":\n case \"SharedArrayBuffer\":\n c = cloneBuffer(i, e, n);\n break;\n case \"DataView\":\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float16Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n r = t.metadata;\n c = cloneView(i, n, r.offset, r.length, e);\n }\n } else switch (v(t)) {\n case \"Array\":\n case \"Object\":\n o = Q(t);\n for (s = 0, a = S(o); s < a; s++) t[l = o[s]] = replacePlaceholders(t[l], e);\n break;\n case \"Map\":\n c = new V();\n t.forEach(function (t, n) {\n K(c, replacePlaceholders(n, e), replacePlaceholders(t, e));\n });\n break;\n case \"Set\":\n c = new Y();\n t.forEach(function (t) {\n J(c, replacePlaceholders(t, e));\n });\n break;\n case \"Error\":\n t.message = replacePlaceholders(t.message, e);\n y(t, \"cause\") && (t.cause = replacePlaceholders(t.cause, e));\n \"AggregateError\" == t.name && (t.errors = replacePlaceholders(t.errors, e));\n case \"DOMException\":\n T && (t.stack = replacePlaceholders(t.stack, e));\n }\n K(e, t, c || t);\n return c || t;\n };\n s({\n global: !0,\n enumerable: !0,\n sham: !P,\n forced: lt\n }, {\n structuredClone: function structuredClone(t) {\n var e,\n n,\n i = E(arguments.length, 1) > 1 && !p(arguments[1]) ? b(arguments[1]) : void 0,\n r = i ? i.transfer : void 0,\n s = !1;\n if (void 0 !== r) {\n n = function (t, e) {\n if (!f(t)) throw B(\"Transfer option cannot be converted to a sequence\");\n var n = [];\n m(t, function (t) {\n Z(n, b(t));\n });\n for (var i, r, s, o, l, c = 0, h = S(n), p = []; c < h;) {\n i = n[c++];\n if (\"ArrayBuffer\" !== (r = v(i))) {\n if ($(e, i)) throw new G(\"Duplicate transferable\", st);\n if (P) o = ot(i, {\n transfer: [i]\n });else switch (r) {\n case \"ImageBitmap\":\n s = a.OffscreenCanvas;\n u(s) || throwUnpolyfillable(r, at);\n try {\n (l = new s(i.width, i.height)).getContext(\"bitmaprenderer\").transferFromImageBitmap(i);\n o = l.transferToImageBitmap();\n } catch (t) {}\n break;\n case \"AudioData\":\n case \"VideoFrame\":\n d(i.clone) && d(i.close) || throwUnpolyfillable(r, at);\n try {\n o = i.clone();\n i.close();\n } catch (t) {}\n break;\n case \"MediaSourceHandle\":\n case \"MessagePort\":\n case \"OffscreenCanvas\":\n case \"ReadableStream\":\n case \"TransformStream\":\n case \"WritableStream\":\n throwUnpolyfillable(r, at);\n }\n if (void 0 === o) throw new G(\"This object cannot be transferred: \" + r, st);\n K(e, i, o);\n } else Z(p, i);\n }\n return p;\n }(r, e = new V());\n s = !!S(n);\n }\n var o = structuredCloneInternal(t, e, s);\n if (s) {\n !function (t, e) {\n for (var n, i, r = 0, s = S(t); r < s;) {\n n = t[r++];\n if ($(e, n)) throw new G(\"Duplicate transferable\", st);\n if (P) i = ot(n, {\n transfer: [n]\n });else {\n d(n.transfer) || throwUnpolyfillable(\"ArrayBuffer\", at);\n i = n.transfer();\n }\n K(e, n, i);\n }\n }(r, e = new V());\n o = replacePlaceholders(o, e);\n }\n return o;\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(7),\n s = n(21),\n a = n(78),\n o = n(24),\n l = n(51),\n noop = function noop() {},\n c = [],\n h = o(\"Reflect\", \"construct\"),\n d = /^\\s*(?:class|function)\\b/,\n u = i(d.exec),\n p = !d.exec(noop),\n f = function isConstructor(t) {\n if (!s(t)) return !1;\n try {\n h(noop, c, t);\n return !0;\n } catch (t) {\n return !1;\n }\n },\n g = function isConstructor(t) {\n if (!s(t)) return !1;\n switch (a(t)) {\n case \"AsyncFunction\":\n case \"GeneratorFunction\":\n case \"AsyncGeneratorFunction\":\n return !1;\n }\n try {\n return p || !!u(d, l(t));\n } catch (t) {\n return !0;\n }\n };\n g.sham = !0;\n t.exports = !h || r(function () {\n var t;\n return f(f.call) || !f(Object) || !f(function () {\n t = !0;\n }) || t;\n }) ? g : f;\n }, (t, e, n) => {\n var i = n(99),\n r = n(8),\n s = n(47),\n a = n(32),\n o = n(154),\n l = n(64),\n c = n(25),\n h = n(156),\n d = n(157),\n u = n(139),\n p = TypeError,\n Result = function Result(t, e) {\n this.stopped = t;\n this.result = e;\n },\n f = Result.prototype;\n t.exports = function (t, e, n) {\n var g,\n m,\n b,\n v,\n y,\n A,\n _,\n S = n && n.that,\n E = !(!n || !n.AS_ENTRIES),\n x = !(!n || !n.IS_RECORD),\n w = !(!n || !n.IS_ITERATOR),\n C = !(!n || !n.INTERRUPTED),\n T = i(e, S),\n stop = function stop(t) {\n g && u(g, \"normal\", t);\n return new Result(!0, t);\n },\n callFn = function callFn(t) {\n if (E) {\n s(t);\n return C ? T(t[0], t[1], stop) : T(t[0], t[1]);\n }\n return C ? T(t, stop) : T(t);\n };\n if (x) g = t.iterator;else if (w) g = t;else {\n if (!(m = d(t))) throw p(a(t) + \" is not iterable\");\n if (o(m)) {\n for (b = 0, v = l(t); v > b; b++) if ((y = callFn(t[b])) && c(f, y)) return y;\n return new Result(!1);\n }\n g = h(t, m);\n }\n A = x ? t.next : g.next;\n for (; !(_ = r(A, g)).done;) {\n try {\n y = callFn(_.value);\n } catch (t) {\n u(g, \"throw\", t);\n }\n if (\"object\" == typeof y && y && c(f, y)) return y;\n }\n return new Result(!1);\n };\n }, (t, e, n) => {\n var i = n(34),\n r = n(155),\n s = i(\"iterator\"),\n a = Array.prototype;\n t.exports = function (t) {\n return void 0 !== t && (r.Array === t || a[s] === t);\n };\n }, t => {\n t.exports = {};\n }, (t, e, n) => {\n var i = n(8),\n r = n(31),\n s = n(47),\n a = n(32),\n o = n(157),\n l = TypeError;\n t.exports = function (t, e) {\n var n = arguments.length < 2 ? o(t) : e;\n if (r(n)) return s(i(n, t));\n throw l(a(t) + \" is not iterable\");\n };\n }, (t, e, n) => {\n var i = n(78),\n r = n(30),\n s = n(17),\n a = n(155),\n o = n(34)(\"iterator\");\n t.exports = function (t) {\n if (!s(t)) return r(t, o) || r(t, \"@@iterator\") || a[i(t)];\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(18),\n r = n(45),\n s = n(11);\n t.exports = function (t, e, n) {\n var a = i(e);\n a in t ? r.f(t, a, s(0, n)) : t[a] = n;\n };\n }, (t, e, n) => {\n var i = n(8),\n r = n(39),\n s = n(25),\n a = n(160),\n o = RegExp.prototype;\n t.exports = function (t) {\n var e = t.flags;\n return void 0 !== e || \"flags\" in o || r(t, \"flags\") || !s(o, t) ? e : i(a, t);\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(47);\n t.exports = function () {\n var t = i(this),\n e = \"\";\n t.hasIndices && (e += \"d\");\n t.global && (e += \"g\");\n t.ignoreCase && (e += \"i\");\n t.multiline && (e += \"m\");\n t.dotAll && (e += \"s\");\n t.unicode && (e += \"u\");\n t.unicodeSets && (e += \"v\");\n t.sticky && (e += \"y\");\n return e;\n };\n }, (t, e, n) => {\n var i = n(14),\n r = Map.prototype;\n t.exports = {\n Map: Map,\n set: i(r.set),\n get: i(r.get),\n has: i(r.has),\n remove: i(r.delete),\n proto: r\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.SerializableEmpty = e.PrintAnnotationStorage = e.AnnotationStorage = void 0;\n n(89);\n n(148);\n n(151);\n var i = n(1),\n r = n(163),\n s = n(169);\n const a = Object.freeze({\n map: null,\n hash: \"\",\n transfers: void 0\n });\n e.SerializableEmpty = a;\n var _v = /*#__PURE__*/new WeakMap();\n var _y = /*#__PURE__*/new WeakMap();\n var _A = /*#__PURE__*/new WeakSet();\n class AnnotationStorage {\n constructor() {\n _classPrivateMethodInitSpec(this, _A);\n _classPrivateFieldInitSpec(this, _v, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _y, {\n writable: true,\n value: new Map()\n });\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(t, e) {\n const n = _classPrivateFieldGet(this, _y).get(t);\n return void 0 === n ? e : Object.assign(e, n);\n }\n getRawValue(t) {\n return _classPrivateFieldGet(this, _y).get(t);\n }\n remove(t) {\n _classPrivateFieldGet(this, _y).delete(t);\n 0 === _classPrivateFieldGet(this, _y).size && this.resetModified();\n if (\"function\" == typeof this.onAnnotationEditor) {\n for (const t of _classPrivateFieldGet(this, _y).values()) if (t instanceof r.AnnotationEditor) return;\n this.onAnnotationEditor(null);\n }\n }\n setValue(t, e) {\n const n = _classPrivateFieldGet(this, _y).get(t);\n let i = !1;\n if (void 0 !== n) {\n for (const [t, r] of Object.entries(e)) if (n[t] !== r) {\n i = !0;\n n[t] = r;\n }\n } else {\n i = !0;\n _classPrivateFieldGet(this, _y).set(t, e);\n }\n i && _classPrivateMethodGet(this, _A, _A2).call(this);\n e instanceof r.AnnotationEditor && \"function\" == typeof this.onAnnotationEditor && this.onAnnotationEditor(e.constructor._type);\n }\n has(t) {\n return _classPrivateFieldGet(this, _y).has(t);\n }\n getAll() {\n return _classPrivateFieldGet(this, _y).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _y)) : null;\n }\n setAll(t) {\n for (const [e, n] of Object.entries(t)) this.setValue(e, n);\n }\n get size() {\n return _classPrivateFieldGet(this, _y).size;\n }\n resetModified() {\n if (_classPrivateFieldGet(this, _v)) {\n _classPrivateFieldSet(this, _v, !1);\n \"function\" == typeof this.onResetModified && this.onResetModified();\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (0 === _classPrivateFieldGet(this, _y).size) return a;\n const t = new Map(),\n e = new s.MurmurHash3_64(),\n n = [],\n i = Object.create(null);\n let o = !1;\n for (const [n, s] of _classPrivateFieldGet(this, _y)) {\n const a = s instanceof r.AnnotationEditor ? s.serialize(!1, i) : s;\n if (a) {\n t.set(n, a);\n e.update(\"\".concat(n, \":\").concat(JSON.stringify(a)));\n o || (o = !!a.bitmap);\n }\n }\n if (o) for (const e of t.values()) e.bitmap && n.push(e.bitmap);\n return t.size > 0 ? {\n map: t,\n hash: e.hexdigest(),\n transfers: n\n } : a;\n }\n }\n function _A2() {\n if (!_classPrivateFieldGet(this, _v)) {\n _classPrivateFieldSet(this, _v, !0);\n \"function\" == typeof this.onSetModified && this.onSetModified();\n }\n }\n e.AnnotationStorage = AnnotationStorage;\n var _2 = /*#__PURE__*/new WeakMap();\n class PrintAnnotationStorage extends AnnotationStorage {\n constructor(t) {\n super();\n _classPrivateFieldInitSpec(this, _2, {\n writable: true,\n value: void 0\n });\n const {\n map: e,\n hash: n,\n transfers: i\n } = t.serializable,\n r = structuredClone(e, null);\n _classPrivateFieldSet(this, _2, {\n map: r,\n hash: n,\n transfers: i\n });\n }\n get print() {\n (0, i.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return _classPrivateFieldGet(this, _2);\n }\n }\n e.PrintAnnotationStorage = PrintAnnotationStorage;\n }, (t, e, n) => {\n \"use strict\";\n\n var _class12;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.AnnotationEditor = void 0;\n n(89);\n n(2);\n var i = n(1),\n r = n(164);\n var _S = /*#__PURE__*/new WeakMap();\n var _E = /*#__PURE__*/new WeakMap();\n var _x = /*#__PURE__*/new WeakMap();\n var _w = /*#__PURE__*/new WeakMap();\n var _C = /*#__PURE__*/new WeakMap();\n var _T = /*#__PURE__*/new WeakMap();\n var _P = /*#__PURE__*/new WeakMap();\n var _k = /*#__PURE__*/new WeakMap();\n var _M = /*#__PURE__*/new WeakMap();\n var _R = /*#__PURE__*/new WeakSet();\n var _F = /*#__PURE__*/new WeakSet();\n var _I = /*#__PURE__*/new WeakSet();\n var _D = /*#__PURE__*/new WeakSet();\n class AnnotationEditor {\n constructor(_t4) {\n _classPrivateMethodInitSpec(this, _D);\n _classPrivateMethodInitSpec(this, _I);\n _classPrivateMethodInitSpec(this, _F);\n _classPrivateMethodInitSpec(this, _R);\n _classPrivateFieldInitSpec(this, _S, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _E, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _x, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _w, {\n writable: true,\n value: this.focusin.bind(this)\n });\n _classPrivateFieldInitSpec(this, _C, {\n writable: true,\n value: this.focusout.bind(this)\n });\n _classPrivateFieldInitSpec(this, _T, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _P, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _k, {\n writable: true,\n value: !1\n });\n _defineProperty(this, \"_uiManager\", null);\n _classPrivateFieldInitSpec(this, _M, {\n writable: true,\n value: AnnotationEditor._zIndex++\n });\n this.constructor === AnnotationEditor && (0, i.unreachable)(\"Cannot initialize AnnotationEditor.\");\n this.parent = _t4.parent;\n this.id = _t4.id;\n this.width = this.height = null;\n this.pageIndex = _t4.parent.pageIndex;\n this.name = _t4.name;\n this.div = null;\n this._uiManager = _t4.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = !1;\n const {\n rotation: _e4,\n rawDims: {\n pageWidth: _n3,\n pageHeight: _r3,\n pageX: _s4,\n pageY: _a2\n }\n } = this.parent.viewport;\n this.rotation = _e4;\n this.pageRotation = (360 + _e4 - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [_n3, _r3];\n this.pageTranslation = [_s4, _a2];\n const [_o2, _l2] = this.parentDimensions;\n this.x = _t4.x / _o2;\n this.y = _t4.y / _l2;\n this.isAttachedToDOM = !1;\n this.deleted = !1;\n }\n static get _defaultLineColor() {\n return (0, i.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(t) {\n const e = new FakeEditor({\n id: t.parent.getNextId(),\n parent: t.parent,\n uiManager: t._uiManager\n });\n e.annotationElementId = t.annotationElementId;\n e.deleted = !0;\n e._uiManager.addToAnnotationStorage(e);\n }\n static initialize(t) {}\n static updateDefaultParams(t, e) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n get propertiesToUpdate() {\n return [];\n }\n addCommands(t) {\n this._uiManager.addCommands(t);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = _classPrivateFieldGet(this, _M);\n }\n setParent(t) {\n if (null !== t) {\n this.pageIndex = t.pageIndex;\n this.pageDimensions = t.pageDimensions;\n }\n this.parent = t;\n }\n focusin(t) {\n _classPrivateFieldGet(this, _T) ? _classPrivateFieldSet(this, _T, !1) : this.parent.setSelected(this);\n }\n focusout(t) {\n if (!this.isAttachedToDOM) return;\n const e = t.relatedTarget;\n if (!(e !== null && e !== void 0 && e.closest(\"#\".concat(this.id)))) {\n var _this$parent;\n t.preventDefault();\n ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.isMultipleSelection) || this.commitOrRemove();\n }\n }\n commitOrRemove() {\n this.isEmpty() ? this.remove() : this.commit();\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n dragstart(t) {\n const e = this.parent.div.getBoundingClientRect();\n this.startX = t.clientX - e.x;\n this.startY = t.clientY - e.y;\n t.dataTransfer.setData(\"text/plain\", this.id);\n t.dataTransfer.effectAllowed = \"move\";\n }\n setAt(t, e, n, i) {\n const [r, s] = this.parentDimensions;\n [n, i] = this.screenToPageTranslation(n, i);\n this.x = (t + n) / r;\n this.y = (e + i) / s;\n this.fixAndSetPosition();\n }\n translate(t, e) {\n _classPrivateMethodGet(this, _R, _R2).call(this, this.parentDimensions, t, e);\n }\n translateInPage(t, e) {\n _classPrivateMethodGet(this, _R, _R2).call(this, this.pageDimensions, t, e);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n fixAndSetPosition() {\n const [t, e] = this.pageDimensions;\n let {\n x: n,\n y: i,\n width: r,\n height: s\n } = this;\n r *= t;\n s *= e;\n n *= t;\n i *= e;\n switch (this.rotation) {\n case 0:\n n = Math.max(0, Math.min(t - r, n));\n i = Math.max(0, Math.min(e - s, i));\n break;\n case 90:\n n = Math.max(0, Math.min(t - s, n));\n i = Math.min(e, Math.max(r, i));\n break;\n case 180:\n n = Math.min(t, Math.max(r, n));\n i = Math.min(e, Math.max(s, i));\n break;\n case 270:\n n = Math.min(t, Math.max(s, n));\n i = Math.max(0, Math.min(e - r, i));\n }\n this.x = n / t;\n this.y = i / e;\n this.div.style.left = \"\".concat((100 * this.x).toFixed(2), \"%\");\n this.div.style.top = \"\".concat((100 * this.y).toFixed(2), \"%\");\n }\n screenToPageTranslation(t, e) {\n switch (this.parentRotation) {\n case 90:\n return [e, -t];\n case 180:\n return [-t, -e];\n case 270:\n return [-e, t];\n default:\n return [t, e];\n }\n }\n pageTranslationToScreen(t, e) {\n switch (this.parentRotation) {\n case 90:\n return [-e, t];\n case 180:\n return [-t, -e];\n case 270:\n return [e, -t];\n default:\n return [t, e];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n realScale: t\n } = this._uiManager.viewParameters,\n [e, n] = this.pageDimensions;\n return [e * t, n * t];\n }\n setDims(t, e) {\n const [n, i] = this.parentDimensions;\n this.div.style.width = \"\".concat((100 * t / n).toFixed(2), \"%\");\n _classPrivateFieldGet(this, _S) || (this.div.style.height = \"\".concat((100 * e / i).toFixed(2), \"%\"));\n }\n fixDims() {\n const {\n style: t\n } = this.div,\n {\n height: e,\n width: n\n } = t,\n i = n.endsWith(\"%\"),\n r = !_classPrivateFieldGet(this, _S) && e.endsWith(\"%\");\n if (i && r) return;\n const [s, a] = this.parentDimensions;\n i || (t.width = \"\".concat((100 * parseFloat(n) / s).toFixed(2), \"%\"));\n _classPrivateFieldGet(this, _S) || r || (t.height = \"\".concat((100 * parseFloat(e) / a).toFixed(2), \"%\"));\n }\n getInitialTranslation() {\n return [0, 0];\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n this.div.addEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n const [t, e] = this.parentDimensions;\n if (this.parentRotation % 180 != 0) {\n this.div.style.maxWidth = \"\".concat((100 * e / t).toFixed(2), \"%\");\n this.div.style.maxHeight = \"\".concat((100 * t / e).toFixed(2), \"%\");\n }\n const [n, i] = this.getInitialTranslation();\n this.translate(n, i);\n (0, r.bindEvents)(this, this.div, [\"dragstart\", \"pointerdown\"]);\n return this.div;\n }\n pointerdown(t) {\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (0 !== t.button || t.ctrlKey && e) t.preventDefault();else {\n t.ctrlKey && !e || t.shiftKey || t.metaKey && e ? this.parent.toggleSelected(this) : this.parent.setSelected(this);\n _classPrivateFieldSet(this, _T, !0);\n }\n }\n getRect(t, e) {\n const n = this.parentScale,\n [i, r] = this.pageDimensions,\n [s, a] = this.pageTranslation,\n o = t / n,\n l = e / n,\n c = this.x * i,\n h = this.y * r,\n d = this.width * i,\n u = this.height * r;\n switch (this.rotation) {\n case 0:\n return [c + o + s, r - h - l - u + a, c + o + d + s, r - h - l + a];\n case 90:\n return [c + l + s, r - h + o + a, c + l + u + s, r - h + o + d + a];\n case 180:\n return [c - o - d + s, r - h + l + a, c - o + s, r - h + l + u + a];\n case 270:\n return [c - l - u + s, r - h - o - d + a, c - l + s, r - h - o + a];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(t, e) {\n const [n, i, r, s] = t,\n a = r - n,\n o = s - i;\n switch (this.rotation) {\n case 0:\n return [n, e - s, a, o];\n case 90:\n return [n, e - i, o, a];\n case 180:\n return [r, e - i, a, o];\n case 270:\n return [r, e - s, o, a];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return !1;\n }\n enableEditMode() {\n _classPrivateFieldSet(this, _k, !0);\n }\n disableEditMode() {\n _classPrivateFieldSet(this, _k, !1);\n }\n isInEditMode() {\n return _classPrivateFieldGet(this, _k);\n }\n shouldGetKeyboardEvents() {\n return !1;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n var _this$div, _this$div2;\n (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.addEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n (_this$div2 = this.div) === null || _this$div2 === void 0 ? void 0 : _this$div2.addEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n }\n serialize() {\n (0, i.unreachable)(\"An editor must be serializable\");\n }\n static deserialize(t, e, n) {\n const i = new this.prototype.constructor({\n parent: e,\n id: e.getNextId(),\n uiManager: n\n });\n i.rotation = t.rotation;\n const [r, s] = i.pageDimensions,\n [a, o, l, c] = i.getRectInCurrentCoords(t.rect, s);\n i.x = a / r;\n i.y = o / s;\n i.width = l / r;\n i.height = c / s;\n return i;\n }\n remove() {\n this.div.removeEventListener(\"focusin\", _classPrivateFieldGet(this, _w));\n this.div.removeEventListener(\"focusout\", _classPrivateFieldGet(this, _C));\n this.isEmpty() || this.commit();\n this.parent ? this.parent.remove(this) : this._uiManager.removeEditor(this);\n }\n get isResizable() {\n return !1;\n }\n makeResizable() {\n if (this.isResizable) {\n _classPrivateMethodGet(this, _F, _F2).call(this);\n _classPrivateFieldGet(this, _E).classList.remove(\"hidden\");\n }\n }\n select() {\n var _this$div3;\n this.makeResizable();\n (_this$div3 = this.div) === null || _this$div3 === void 0 ? void 0 : _this$div3.classList.add(\"selectedEditor\");\n }\n unselect() {\n var _classPrivateFieldGet3, _this$div4, _this$div5;\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _E)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.classList.add(\"hidden\");\n (_this$div4 = this.div) === null || _this$div4 === void 0 ? void 0 : _this$div4.classList.remove(\"selectedEditor\");\n ((_this$div5 = this.div) === null || _this$div5 === void 0 ? void 0 : _this$div5.contains(document.activeElement)) && this._uiManager.currentLayer.div.focus();\n }\n updateParams(t, e) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return _classPrivateFieldGet(this, _P);\n }\n set isEditing(t) {\n _classPrivateFieldSet(this, _P, t);\n if (this.parent) if (t) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else this.parent.setActiveEditor(null);\n }\n setAspectRatio(t, e) {\n _classPrivateFieldSet(this, _S, !0);\n const n = t / e,\n {\n style: i\n } = this.div;\n i.aspectRatio = n;\n i.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n }\n _class12 = AnnotationEditor;\n function _R2(t, e, n) {\n let [i, r] = t;\n [e, n] = this.screenToPageTranslation(e, n);\n this.x += e / i;\n this.y += n / r;\n this.fixAndSetPosition();\n }\n function _F2() {\n if (_classPrivateFieldGet(this, _E)) return;\n _classPrivateFieldSet(this, _E, document.createElement(\"div\"));\n _classPrivateFieldGet(this, _E).classList.add(\"resizers\");\n const t = [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"];\n this._willKeepAspectRatio || t.push(\"topMiddle\", \"middleRight\", \"bottomMiddle\", \"middleLeft\");\n for (const e of t) {\n const t = document.createElement(\"div\");\n _classPrivateFieldGet(this, _E).append(t);\n t.classList.add(\"resizer\", e);\n t.addEventListener(\"pointerdown\", _classPrivateMethodGet(this, _I, _I2).bind(this, e));\n }\n this.div.prepend(_classPrivateFieldGet(this, _E));\n }\n function _I2(t, e) {\n e.preventDefault();\n _classPrivateFieldSet(this, _x, [e.clientX, e.clientY]);\n const n = _classPrivateMethodGet(this, _D, _D2).bind(this, t),\n i = this.div.draggable;\n this.div.draggable = !1;\n const r = \"resizing\".concat(t.charAt(0).toUpperCase()).concat(t.slice(1));\n this.parent.div.classList.add(r);\n const s = {\n passive: !0,\n capture: !0\n };\n window.addEventListener(\"pointermove\", n, s);\n window.addEventListener(\"pointerup\", () => {\n this._uiManager.stopUndoAccumulation();\n this.div.draggable = i;\n this.parent.div.classList.remove(r);\n window.removeEventListener(\"pointermove\", n, s);\n }, {\n once: !0\n });\n }\n function _D2(t, e) {\n const {\n clientX: n,\n clientY: r\n } = e,\n s = n - _classPrivateFieldGet(this, _x)[0],\n a = r - _classPrivateFieldGet(this, _x)[1];\n _classPrivateFieldGet(this, _x)[0] = n;\n _classPrivateFieldGet(this, _x)[1] = r;\n const [o, l] = this.parentDimensions,\n c = this.x,\n h = this.y,\n d = this.width,\n u = this.height,\n p = _class12.MIN_SIZE / o,\n f = _class12.MIN_SIZE / l;\n let g;\n const round = t => Math.round(1e4 * t) / 1e4,\n updatePosition = (t, e) => {\n const [n, i] = this.parentDimensions;\n this.setDims(n * t, i * e);\n this.fixAndSetPosition();\n };\n switch (t) {\n case \"topLeft\":\n {\n if (Math.sign(s) * Math.sign(a) < 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(d * o, u * l),\n n = round(c + d),\n i = round(h + u),\n r = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n m = round(d * r),\n b = round(u * r),\n v = n - m,\n y = i - b;\n g = () => {\n this.width = m;\n this.height = b;\n this.x = v;\n this.y = y;\n updatePosition(m, b);\n };\n break;\n }\n case \"topMiddle\":\n {\n const t = round(this.y + u),\n e = round(Math.max(f, Math.min(1, u - a / l))),\n n = t - e;\n g = () => {\n this.height = e;\n this.y = n;\n updatePosition(d, e);\n };\n break;\n }\n case \"topRight\":\n {\n if (Math.sign(s) * Math.sign(a) > 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = round(h + this.height),\n i = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n r = round(d * i),\n c = round(u * i),\n m = n - c;\n g = () => {\n this.width = r;\n this.height = c;\n this.y = m;\n updatePosition(r, c);\n };\n break;\n }\n case \"middleRight\":\n {\n const t = round(Math.max(p, Math.min(1, d + s / o)));\n g = () => {\n this.width = t;\n updatePosition(t, u);\n };\n break;\n }\n case \"bottomRight\":\n {\n if (Math.sign(s) * Math.sign(a) < 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n i = round(d * n),\n r = round(u * n);\n g = () => {\n this.width = i;\n this.height = r;\n updatePosition(i, r);\n };\n break;\n }\n case \"bottomMiddle\":\n {\n const t = round(Math.max(f, Math.min(1, u + a / l)));\n g = () => {\n this.height = t;\n updatePosition(d, t);\n };\n break;\n }\n case \"bottomLeft\":\n {\n if (Math.sign(s) * Math.sign(a) > 0) return;\n const t = Math.hypot(s, a),\n e = Math.hypot(this.width * o, this.height * l),\n n = round(c + this.width),\n i = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\n r = round(d * i),\n h = round(u * i),\n m = n - r;\n g = () => {\n this.width = r;\n this.height = h;\n this.x = m;\n updatePosition(r, h);\n };\n break;\n }\n case \"middleLeft\":\n {\n const t = round(c + d),\n e = round(Math.max(p, Math.min(1, d - s / o))),\n n = t - e;\n g = () => {\n this.width = e;\n this.x = n;\n updatePosition(e, u);\n };\n break;\n }\n }\n this.addCommands({\n cmd: g,\n undo: () => {\n this.width = d;\n this.height = u;\n this.x = c;\n this.y = h;\n updatePosition(d, u);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.RESIZE,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n _defineProperty(AnnotationEditor, \"_colorManager\", new r.ColorManager());\n _defineProperty(AnnotationEditor, \"_zIndex\", 1);\n e.AnnotationEditor = AnnotationEditor;\n class FakeEditor extends AnnotationEditor {\n constructor(t) {\n super(t);\n this.annotationElementId = t.annotationElementId;\n this.deleted = !0;\n }\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: !0,\n pageIndex: this.pageIndex\n };\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.KeyboardManager = e.CommandManager = e.ColorManager = e.AnnotationEditorUIManager = void 0;\n e.bindEvents = function bindEvents(t, e, n) {\n for (const i of n) e.addEventListener(i, t[i].bind(t));\n };\n e.opacityToHex = function opacityToHex(t) {\n return Math.round(Math.min(255, Math.max(1, 255 * t))).toString(16).padStart(2, \"0\");\n };\n n(2);\n n(89);\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n n(165);\n var i = n(1),\n r = n(167);\n var _O = /*#__PURE__*/new WeakMap();\n class IdManager {\n constructor() {\n _classPrivateFieldInitSpec(this, _O, {\n writable: true,\n value: 0\n });\n }\n getId() {\n var _this$O, _this$O2;\n return \"\".concat(i.AnnotationEditorPrefix).concat((_classPrivateFieldSet(this, _O, (_this$O = _classPrivateFieldGet(this, _O), _this$O2 = _this$O++, _this$O)), _this$O2));\n }\n }\n var _L = /*#__PURE__*/new WeakMap();\n var _O2 = /*#__PURE__*/new WeakMap();\n var _N = /*#__PURE__*/new WeakMap();\n var _B = /*#__PURE__*/new WeakSet();\n class ImageManager {\n constructor() {\n _classPrivateMethodInitSpec(this, _B);\n _classPrivateFieldInitSpec(this, _L, {\n writable: true,\n value: (0, i.getUuid)()\n });\n _classPrivateFieldInitSpec(this, _O2, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _N, {\n writable: true,\n value: null\n });\n }\n async getFromFile(t) {\n const {\n lastModified: e,\n name: n,\n size: i,\n type: r\n } = t;\n return _classPrivateMethodGet(this, _B, _B2).call(this, \"\".concat(e, \"_\").concat(n, \"_\").concat(i, \"_\").concat(r), t);\n }\n async getFromUrl(t) {\n return _classPrivateMethodGet(this, _B, _B2).call(this, t, t);\n }\n async getFromId(t) {\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n const e = _classPrivateFieldGet(this, _N).get(t);\n if (!e) return null;\n if (e.bitmap) {\n e.refCounter += 1;\n return e;\n }\n return e.file ? this.getFromFile(e.file) : this.getFromUrl(e.url);\n }\n getSvgUrl(t) {\n const e = _classPrivateFieldGet(this, _N).get(t);\n return e !== null && e !== void 0 && e.isSvg ? e.svgUrl : null;\n }\n deleteId(t) {\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n const e = _classPrivateFieldGet(this, _N).get(t);\n if (e) {\n e.refCounter -= 1;\n 0 === e.refCounter && (e.bitmap = null);\n }\n }\n isValidId(t) {\n return t.startsWith(\"image_\".concat(_classPrivateFieldGet(this, _L), \"_\"));\n }\n }\n async function _B2(t, e) {\n var _n5;\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\n let n = _classPrivateFieldGet(this, _N).get(t);\n if (null === n) return null;\n if ((_n5 = n) !== null && _n5 !== void 0 && _n5.bitmap) {\n n.refCounter += 1;\n return n;\n }\n try {\n var _this$O3, _this$O4;\n n || (n = {\n bitmap: null,\n id: \"image_\".concat(_classPrivateFieldGet(this, _L), \"_\").concat((_classPrivateFieldSet(this, _O2, (_this$O3 = _classPrivateFieldGet(this, _O2), _this$O4 = _this$O3++, _this$O3)), _this$O4)),\n refCounter: 0,\n isSvg: !1\n });\n let t;\n if (\"string\" == typeof e) {\n n.url = e;\n const i = await fetch(e);\n if (!i.ok) throw new Error(i.statusText);\n t = await i.blob();\n } else t = n.file = e;\n if (\"image/svg+xml\" === t.type) {\n const e = new FileReader(),\n i = new Image(),\n r = new Promise((t, r) => {\n i.onload = () => {\n n.bitmap = i;\n n.isSvg = !0;\n t();\n };\n e.onload = () => {\n i.src = n.svgUrl = e.result;\n };\n i.onerror = e.onerror = r;\n });\n e.readAsDataURL(t);\n await r;\n } else n.bitmap = await createImageBitmap(t);\n n.refCounter = 1;\n } catch (t) {\n console.error(t);\n n = null;\n }\n _classPrivateFieldGet(this, _N).set(t, n);\n n && _classPrivateFieldGet(this, _N).set(n.id, n);\n return n;\n }\n var _j = /*#__PURE__*/new WeakMap();\n var _U = /*#__PURE__*/new WeakMap();\n var _z = /*#__PURE__*/new WeakMap();\n var _H = /*#__PURE__*/new WeakMap();\n class CommandManager {\n constructor() {\n _classPrivateFieldInitSpec(this, _j, {\n writable: true,\n value: []\n });\n _classPrivateFieldInitSpec(this, _U, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _z, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _H, {\n writable: true,\n value: -1\n });\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 128;\n _classPrivateFieldSet(this, _z, t);\n }\n add(t) {\n let {\n cmd: e,\n undo: n,\n mustExec: i,\n type: r = NaN,\n overwriteIfSameType: s = !1,\n keepUndo: a = !1\n } = t;\n i && e();\n if (_classPrivateFieldGet(this, _U)) return;\n const o = {\n cmd: e,\n undo: n,\n type: r\n };\n if (-1 === _classPrivateFieldGet(this, _H)) {\n _classPrivateFieldGet(this, _j).length > 0 && (_classPrivateFieldGet(this, _j).length = 0);\n _classPrivateFieldSet(this, _H, 0);\n _classPrivateFieldGet(this, _j).push(o);\n return;\n }\n if (s && _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type === r) {\n a && (o.undo = _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)] = o;\n return;\n }\n const l = _classPrivateFieldGet(this, _H) + 1;\n if (l === _classPrivateFieldGet(this, _z)) _classPrivateFieldGet(this, _j).splice(0, 1);else {\n _classPrivateFieldSet(this, _H, l);\n l < _classPrivateFieldGet(this, _j).length && _classPrivateFieldGet(this, _j).splice(l);\n }\n _classPrivateFieldGet(this, _j).push(o);\n }\n stopUndoAccumulation() {\n -1 !== _classPrivateFieldGet(this, _H) && (_classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type = NaN);\n }\n undo() {\n if (-1 !== _classPrivateFieldGet(this, _H)) {\n _classPrivateFieldSet(this, _U, !0);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo();\n _classPrivateFieldSet(this, _U, !1);\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) - 1);\n }\n }\n redo() {\n if (_classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1) {\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) + 1);\n _classPrivateFieldSet(this, _U, !0);\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].cmd();\n _classPrivateFieldSet(this, _U, !1);\n }\n }\n hasSomethingToUndo() {\n return -1 !== _classPrivateFieldGet(this, _H);\n }\n hasSomethingToRedo() {\n return _classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1;\n }\n destroy() {\n _classPrivateFieldSet(this, _j, null);\n }\n }\n e.CommandManager = CommandManager;\n var _q = /*#__PURE__*/new WeakSet();\n class KeyboardManager {\n constructor(_t5) {\n _classPrivateMethodInitSpec(this, _q);\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac: _e5\n } = i.FeatureTest.platform;\n for (const [n, i, r = {}] of _t5) for (const t of n) {\n const n = t.startsWith(\"mac+\");\n if (_e5 && n) {\n this.callbacks.set(t.slice(4), {\n callback: i,\n options: r\n });\n this.allKeys.add(t.split(\"+\").at(-1));\n } else if (!_e5 && !n) {\n this.callbacks.set(t, {\n callback: i,\n options: r\n });\n this.allKeys.add(t.split(\"+\").at(-1));\n }\n }\n }\n exec(t, e) {\n if (!this.allKeys.has(e.key)) return;\n const n = this.callbacks.get(_classPrivateMethodGet(this, _q, _q2).call(this, e));\n if (!n) return;\n const {\n callback: i,\n options: {\n bubbles: r = !1,\n args: s = [],\n checker: a = null\n }\n } = n;\n if (!a || a(t, e)) {\n i.bind(t, ...s)();\n if (!r) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n }\n }\n function _q2(t) {\n t.altKey && this.buffer.push(\"alt\");\n t.ctrlKey && this.buffer.push(\"ctrl\");\n t.metaKey && this.buffer.push(\"meta\");\n t.shiftKey && this.buffer.push(\"shift\");\n this.buffer.push(t.key);\n const e = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return e;\n }\n e.KeyboardManager = KeyboardManager;\n class ColorManager {\n get _colors() {\n const t = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, r.getColorValues)(t);\n return (0, i.shadow)(this, \"_colors\", t);\n }\n convert(t) {\n const e = (0, r.getRGB)(t);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) return e;\n for (const [t, n] of this._colors) if (n.every((t, n) => t === e[n])) return ColorManager._colorsMapping.get(t);\n return e;\n }\n getHexCode(t) {\n const e = this._colors.get(t);\n return e ? i.Util.makeHexColor(...e) : t;\n }\n }\n _defineProperty(ColorManager, \"_colorsMapping\", new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]));\n e.ColorManager = ColorManager;\n var _W = /*#__PURE__*/new WeakMap();\n var _G = /*#__PURE__*/new WeakMap();\n var _V = /*#__PURE__*/new WeakMap();\n var _$ = /*#__PURE__*/new WeakMap();\n var _X = /*#__PURE__*/new WeakMap();\n var _K = /*#__PURE__*/new WeakMap();\n var _Y = /*#__PURE__*/new WeakMap();\n var _J = /*#__PURE__*/new WeakMap();\n var _Q = /*#__PURE__*/new WeakMap();\n var _Z = /*#__PURE__*/new WeakMap();\n var _tt = /*#__PURE__*/new WeakMap();\n var _et = /*#__PURE__*/new WeakMap();\n var _nt = /*#__PURE__*/new WeakMap();\n var _it = /*#__PURE__*/new WeakMap();\n var _rt = /*#__PURE__*/new WeakMap();\n var _st = /*#__PURE__*/new WeakMap();\n var _at = /*#__PURE__*/new WeakMap();\n var _ot = /*#__PURE__*/new WeakMap();\n var _lt = /*#__PURE__*/new WeakMap();\n var _ct = /*#__PURE__*/new WeakMap();\n var _ht = /*#__PURE__*/new WeakMap();\n var _dt = /*#__PURE__*/new WeakMap();\n var _ut = /*#__PURE__*/new WeakMap();\n var _pt = /*#__PURE__*/new WeakMap();\n var _ft = /*#__PURE__*/new WeakMap();\n var _gt = /*#__PURE__*/new WeakMap();\n var _mt = /*#__PURE__*/new WeakMap();\n var _bt = /*#__PURE__*/new WeakMap();\n var _yt = /*#__PURE__*/new WeakSet();\n var _vt = /*#__PURE__*/new WeakSet();\n var _At = /*#__PURE__*/new WeakSet();\n var _t6 = /*#__PURE__*/new WeakSet();\n var _xt = /*#__PURE__*/new WeakSet();\n var _wt = /*#__PURE__*/new WeakSet();\n var _Tt = /*#__PURE__*/new WeakSet();\n var _Pt = /*#__PURE__*/new WeakSet();\n var _St = /*#__PURE__*/new WeakSet();\n var _Ct = /*#__PURE__*/new WeakSet();\n var _Et = /*#__PURE__*/new WeakSet();\n class AnnotationEditorUIManager {\n static get _keyboardManager() {\n const t = AnnotationEditorUIManager.prototype,\n arrowChecker = t => {\n const {\n activeElement: e\n } = document;\n return e && _classPrivateFieldGet(t, _bt).contains(e) && t.hasSomethingToControl();\n },\n e = this.TRANSLATE_SMALL,\n n = this.TRANSLATE_BIG;\n return (0, i.shadow)(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], t.selectAll], [[\"ctrl+z\", \"mac+meta+z\"], t.undo], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], t.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], t.delete], [[\"Escape\", \"mac+Escape\"], t.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], t.translateSelectedEditors, {\n args: [-e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], t.translateSelectedEditors, {\n args: [-n, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], t.translateSelectedEditors, {\n args: [e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], t.translateSelectedEditors, {\n args: [n, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], t.translateSelectedEditors, {\n args: [0, -e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], t.translateSelectedEditors, {\n args: [0, -n],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], t.translateSelectedEditors, {\n args: [0, e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], t.translateSelectedEditors, {\n args: [0, n],\n checker: arrowChecker\n }]]));\n }\n constructor(_t8, _e6, _n4, _i3) {\n _classPrivateMethodInitSpec(this, _Et);\n _classPrivateMethodInitSpec(this, _Ct);\n _classPrivateMethodInitSpec(this, _St);\n _classPrivateMethodInitSpec(this, _Pt);\n _classPrivateMethodInitSpec(this, _Tt);\n _classPrivateMethodInitSpec(this, _wt);\n _classPrivateMethodInitSpec(this, _xt);\n _classPrivateMethodInitSpec(this, _t6);\n _classPrivateMethodInitSpec(this, _At);\n _classPrivateMethodInitSpec(this, _vt);\n _classPrivateMethodInitSpec(this, _yt);\n _classPrivateFieldInitSpec(this, _W, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _G, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _V, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _$, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _X, {\n writable: true,\n value: new CommandManager()\n });\n _classPrivateFieldInitSpec(this, _K, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _Y, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _J, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Q, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _Z, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _tt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _et, {\n writable: true,\n value: new IdManager()\n });\n _classPrivateFieldInitSpec(this, _nt, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _it, {\n writable: true,\n value: i.AnnotationEditorType.NONE\n });\n _classPrivateFieldInitSpec(this, _rt, {\n writable: true,\n value: new Set()\n });\n _classPrivateFieldInitSpec(this, _st, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _at, {\n writable: true,\n value: this.copy.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ot, {\n writable: true,\n value: this.cut.bind(this)\n });\n _classPrivateFieldInitSpec(this, _lt, {\n writable: true,\n value: this.paste.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ct, {\n writable: true,\n value: this.keydown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ht, {\n writable: true,\n value: this.onEditingAction.bind(this)\n });\n _classPrivateFieldInitSpec(this, _dt, {\n writable: true,\n value: this.onPageChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ut, {\n writable: true,\n value: this.onScaleChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _pt, {\n writable: true,\n value: this.onRotationChanging.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ft, {\n writable: true,\n value: {\n isEditing: !1,\n isEmpty: !0,\n hasSomethingToUndo: !1,\n hasSomethingToRedo: !1,\n hasSelectedEditor: !1\n }\n });\n _classPrivateFieldInitSpec(this, _gt, {\n writable: true,\n value: [0, 0]\n });\n _classPrivateFieldInitSpec(this, _mt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _bt, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _bt, _t8);\n _classPrivateFieldSet(this, _Z, _e6);\n _classPrivateFieldGet(this, _Z)._on(\"editingaction\", _classPrivateFieldGet(this, _ht));\n _classPrivateFieldGet(this, _Z)._on(\"pagechanging\", _classPrivateFieldGet(this, _dt));\n _classPrivateFieldGet(this, _Z)._on(\"scalechanging\", _classPrivateFieldGet(this, _ut));\n _classPrivateFieldGet(this, _Z)._on(\"rotationchanging\", _classPrivateFieldGet(this, _pt));\n _classPrivateFieldSet(this, _$, _n4.annotationStorage);\n _classPrivateFieldSet(this, _tt, _n4.filterFactory);\n _classPrivateFieldSet(this, _st, _i3);\n this.viewParameters = {\n realScale: r.PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n }\n destroy() {\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\n _classPrivateFieldGet(this, _Z)._off(\"editingaction\", _classPrivateFieldGet(this, _ht));\n _classPrivateFieldGet(this, _Z)._off(\"pagechanging\", _classPrivateFieldGet(this, _dt));\n _classPrivateFieldGet(this, _Z)._off(\"scalechanging\", _classPrivateFieldGet(this, _ut));\n _classPrivateFieldGet(this, _Z)._off(\"rotationchanging\", _classPrivateFieldGet(this, _pt));\n for (const t of _classPrivateFieldGet(this, _V).values()) t.destroy();\n _classPrivateFieldGet(this, _V).clear();\n _classPrivateFieldGet(this, _G).clear();\n _classPrivateFieldGet(this, _Q).clear();\n _classPrivateFieldSet(this, _W, null);\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateFieldGet(this, _X).destroy();\n }\n get hcmFilter() {\n return (0, i.shadow)(this, \"hcmFilter\", _classPrivateFieldGet(this, _st) ? _classPrivateFieldGet(this, _tt).addHCMFilter(_classPrivateFieldGet(this, _st).foreground, _classPrivateFieldGet(this, _st).background) : \"none\");\n }\n onPageChanging(t) {\n let {\n pageNumber: e\n } = t;\n _classPrivateFieldSet(this, _K, e - 1);\n }\n focusMainContainer() {\n _classPrivateFieldGet(this, _bt).focus();\n }\n addShouldRescale(t) {\n _classPrivateFieldGet(this, _Q).add(t);\n }\n removeShouldRescale(t) {\n _classPrivateFieldGet(this, _Q).delete(t);\n }\n onScaleChanging(t) {\n let {\n scale: e\n } = t;\n this.commitOrRemove();\n this.viewParameters.realScale = e * r.PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const t of _classPrivateFieldGet(this, _Q)) t.onScaleChanging();\n }\n onRotationChanging(t) {\n let {\n pagesRotation: e\n } = t;\n this.commitOrRemove();\n this.viewParameters.rotation = e;\n }\n addToAnnotationStorage(t) {\n t.isEmpty() || !_classPrivateFieldGet(this, _$) || _classPrivateFieldGet(this, _$).has(t.id) || _classPrivateFieldGet(this, _$).setValue(t.id, t);\n }\n copy(t) {\n t.preventDefault();\n _classPrivateFieldGet(this, _W) && _classPrivateFieldGet(this, _W).commitOrRemove();\n if (!this.hasSelection) return;\n const e = [];\n for (const t of _classPrivateFieldGet(this, _rt)) {\n const n = t.serialize(!0);\n n && e.push(n);\n }\n 0 !== e.length && t.clipboardData.setData(\"application/pdfjs\", JSON.stringify(e));\n }\n cut(t) {\n this.copy(t);\n this.delete();\n }\n paste(t) {\n t.preventDefault();\n let e = t.clipboardData.getData(\"application/pdfjs\");\n if (!e) return;\n try {\n e = JSON.parse(e);\n } catch (t) {\n (0, i.warn)(\"paste: \\\"\".concat(t.message, \"\\\".\"));\n return;\n }\n if (!Array.isArray(e)) return;\n this.unselectAll();\n const n = this.currentLayer;\n try {\n const t = [];\n for (const i of e) {\n const e = n.deserialize(i);\n if (!e) return;\n t.push(e);\n }\n const cmd = () => {\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\n _classPrivateMethodGet(this, _Et, _Et2).call(this, t);\n },\n undo = () => {\n for (const e of t) e.remove();\n };\n this.addCommands({\n cmd: cmd,\n undo: undo,\n mustExec: !0\n });\n } catch (t) {\n (0, i.warn)(\"paste: \\\"\".concat(t.message, \"\\\".\"));\n }\n }\n keydown(t) {\n var _this$getActive;\n ((_this$getActive = this.getActive()) === null || _this$getActive === void 0 ? void 0 : _this$getActive.shouldGetKeyboardEvents()) || AnnotationEditorUIManager._keyboardManager.exec(this, t);\n }\n onEditingAction(t) {\n [\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(t.name) && this[t.name]();\n }\n setEditingState(t) {\n if (t) {\n _classPrivateMethodGet(this, _yt, _yt2).call(this);\n _classPrivateMethodGet(this, _At, _At2).call(this);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n isEditing: _classPrivateFieldGet(this, _it) !== i.AnnotationEditorType.NONE,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this),\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\n hasSelectedEditor: !1\n });\n } else {\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\n _classPrivateMethodGet(this, _t6, _t7).call(this);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n isEditing: !1\n });\n }\n }\n registerEditorTypes(t) {\n if (!_classPrivateFieldGet(this, _J)) {\n _classPrivateFieldSet(this, _J, t);\n for (const t of _classPrivateFieldGet(this, _J)) _classPrivateMethodGet(this, _wt, _wt2).call(this, t.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return _classPrivateFieldGet(this, _et).getId();\n }\n get currentLayer() {\n return _classPrivateFieldGet(this, _V).get(_classPrivateFieldGet(this, _K));\n }\n get currentPageIndex() {\n return _classPrivateFieldGet(this, _K);\n }\n addLayer(t) {\n _classPrivateFieldGet(this, _V).set(t.pageIndex, t);\n _classPrivateFieldGet(this, _nt) ? t.enable() : t.disable();\n }\n removeLayer(t) {\n _classPrivateFieldGet(this, _V).delete(t.pageIndex);\n }\n updateMode(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n _classPrivateFieldSet(this, _it, t);\n if (t !== i.AnnotationEditorType.NONE) {\n this.setEditingState(!0);\n _classPrivateMethodGet(this, _Tt, _Tt2).call(this);\n for (const e of _classPrivateFieldGet(this, _V).values()) e.updateMode(t);\n if (e) for (const t of _classPrivateFieldGet(this, _G).values()) if (t.annotationElementId === e) {\n this.setSelected(t);\n t.enterInEditMode();\n break;\n }\n } else {\n this.setEditingState(!1);\n _classPrivateMethodGet(this, _Pt, _Pt2).call(this);\n }\n }\n updateToolbar(t) {\n t !== _classPrivateFieldGet(this, _it) && _classPrivateFieldGet(this, _Z).dispatch(\"switchannotationeditormode\", {\n source: this,\n mode: t\n });\n }\n updateParams(t, e) {\n if (_classPrivateFieldGet(this, _J)) {\n for (const n of _classPrivateFieldGet(this, _rt)) n.updateParams(t, e);\n for (const n of _classPrivateFieldGet(this, _J)) n.updateDefaultParams(t, e);\n }\n }\n getEditors(t) {\n const e = [];\n for (const n of _classPrivateFieldGet(this, _G).values()) n.pageIndex === t && e.push(n);\n return e;\n }\n getEditor(t) {\n return _classPrivateFieldGet(this, _G).get(t);\n }\n addEditor(t) {\n _classPrivateFieldGet(this, _G).set(t.id, t);\n }\n removeEditor(t) {\n var _classPrivateFieldGet4;\n _classPrivateFieldGet(this, _G).delete(t.id);\n this.unselect(t);\n t.annotationElementId && _classPrivateFieldGet(this, _Y).has(t.annotationElementId) || ((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _$)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.remove(t.id));\n }\n addDeletedAnnotationElement(t) {\n _classPrivateFieldGet(this, _Y).add(t.annotationElementId);\n t.deleted = !0;\n }\n isDeletedAnnotationElement(t) {\n return _classPrivateFieldGet(this, _Y).has(t);\n }\n removeDeletedAnnotationElement(t) {\n _classPrivateFieldGet(this, _Y).delete(t.annotationElementId);\n t.deleted = !1;\n }\n setActiveEditor(t) {\n if (_classPrivateFieldGet(this, _W) !== t) {\n _classPrivateFieldSet(this, _W, t);\n t && _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n }\n }\n toggleSelected(t) {\n if (_classPrivateFieldGet(this, _rt).has(t)) {\n _classPrivateFieldGet(this, _rt).delete(t);\n t.unselect();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: this.hasSelection\n });\n } else {\n _classPrivateFieldGet(this, _rt).add(t);\n t.select();\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n }\n setSelected(t) {\n for (const e of _classPrivateFieldGet(this, _rt)) e !== t && e.unselect();\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateFieldGet(this, _rt).add(t);\n t.select();\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n isSelected(t) {\n return _classPrivateFieldGet(this, _rt).has(t);\n }\n unselect(t) {\n t.unselect();\n _classPrivateFieldGet(this, _rt).delete(t);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return 0 !== _classPrivateFieldGet(this, _rt).size;\n }\n stopUndoAccumulation() {\n _classPrivateFieldGet(this, _X).stopUndoAccumulation();\n }\n undo() {\n _classPrivateFieldGet(this, _X).undo();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\n hasSomethingToRedo: !0,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n redo() {\n _classPrivateFieldGet(this, _X).redo();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: !0,\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n addCommands(t) {\n _classPrivateFieldGet(this, _X).add(t);\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSomethingToUndo: !0,\n hasSomethingToRedo: !1,\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\n });\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) return;\n const t = [..._classPrivateFieldGet(this, _rt)];\n this.addCommands({\n cmd: () => {\n for (const e of t) e.remove();\n },\n undo: () => {\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\n },\n mustExec: !0\n });\n }\n commitOrRemove() {\n var _classPrivateFieldGet5;\n (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _W)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.commitOrRemove();\n }\n hasSomethingToControl() {\n return _classPrivateFieldGet(this, _W) || this.hasSelection;\n }\n selectAll() {\n for (const t of _classPrivateFieldGet(this, _rt)) t.commit();\n _classPrivateMethodGet(this, _Et, _Et2).call(this, _classPrivateFieldGet(this, _G).values());\n }\n unselectAll() {\n if (_classPrivateFieldGet(this, _W)) _classPrivateFieldGet(this, _W).commitOrRemove();else if (this.hasSelection) {\n for (const t of _classPrivateFieldGet(this, _rt)) t.unselect();\n _classPrivateFieldGet(this, _rt).clear();\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !1\n });\n }\n }\n translateSelectedEditors(t, e) {\n arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || this.commitOrRemove();\n if (!this.hasSelection) return;\n _classPrivateFieldGet(this, _gt)[0] += t;\n _classPrivateFieldGet(this, _gt)[1] += e;\n const [n, i] = _classPrivateFieldGet(this, _gt),\n r = [..._classPrivateFieldGet(this, _rt)];\n _classPrivateFieldGet(this, _mt) && clearTimeout(_classPrivateFieldGet(this, _mt));\n _classPrivateFieldSet(this, _mt, setTimeout(() => {\n _classPrivateFieldSet(this, _mt, null);\n _classPrivateFieldGet(this, _gt)[0] = _classPrivateFieldGet(this, _gt)[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(n, i);\n },\n undo: () => {\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(-n, -i);\n },\n mustExec: !1\n });\n }, 1e3));\n for (const n of r) n.translateInPage(t, e);\n }\n isActive(t) {\n return _classPrivateFieldGet(this, _W) === t;\n }\n getActive() {\n return _classPrivateFieldGet(this, _W);\n }\n getMode() {\n return _classPrivateFieldGet(this, _it);\n }\n get imageManager() {\n return (0, i.shadow)(this, \"imageManager\", new ImageManager());\n }\n }\n function _yt2() {\n window.addEventListener(\"keydown\", _classPrivateFieldGet(this, _ct), {\n capture: !0\n });\n }\n function _vt2() {\n window.removeEventListener(\"keydown\", _classPrivateFieldGet(this, _ct), {\n capture: !0\n });\n }\n function _At2() {\n document.addEventListener(\"copy\", _classPrivateFieldGet(this, _at));\n document.addEventListener(\"cut\", _classPrivateFieldGet(this, _ot));\n document.addEventListener(\"paste\", _classPrivateFieldGet(this, _lt));\n }\n function _t7() {\n document.removeEventListener(\"copy\", _classPrivateFieldGet(this, _at));\n document.removeEventListener(\"cut\", _classPrivateFieldGet(this, _ot));\n document.removeEventListener(\"paste\", _classPrivateFieldGet(this, _lt));\n }\n function _xt2(t) {\n Object.entries(t).some(t => {\n let [e, n] = t;\n return _classPrivateFieldGet(this, _ft)[e] !== n;\n }) && _classPrivateFieldGet(this, _Z).dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(_classPrivateFieldGet(this, _ft), t)\n });\n }\n function _wt2(t) {\n _classPrivateFieldGet(this, _Z).dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details: t\n });\n }\n function _Tt2() {\n if (!_classPrivateFieldGet(this, _nt)) {\n _classPrivateFieldSet(this, _nt, !0);\n for (const t of _classPrivateFieldGet(this, _V).values()) t.enable();\n }\n }\n function _Pt2() {\n this.unselectAll();\n if (_classPrivateFieldGet(this, _nt)) {\n _classPrivateFieldSet(this, _nt, !1);\n for (const t of _classPrivateFieldGet(this, _V).values()) t.disable();\n }\n }\n function _St2(t) {\n const e = _classPrivateFieldGet(this, _V).get(t.pageIndex);\n e ? e.addOrRebuild(t) : this.addEditor(t);\n }\n function _Ct2() {\n if (0 === _classPrivateFieldGet(this, _G).size) return !0;\n if (1 === _classPrivateFieldGet(this, _G).size) for (const t of _classPrivateFieldGet(this, _G).values()) return t.isEmpty();\n return !1;\n }\n function _Et2(t) {\n _classPrivateFieldGet(this, _rt).clear();\n for (const e of t) if (!e.isEmpty()) {\n _classPrivateFieldGet(this, _rt).add(e);\n e.select();\n }\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\n hasSelectedEditor: !0\n });\n }\n _defineProperty(AnnotationEditorUIManager, \"TRANSLATE_SMALL\", 1);\n _defineProperty(AnnotationEditorUIManager, \"TRANSLATE_BIG\", 10);\n e.AnnotationEditorUIManager = AnnotationEditorUIManager;\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(6),\n s = n(4),\n a = n(24),\n o = n(14),\n l = n(8),\n c = n(21),\n h = n(20),\n d = n(91),\n u = n(39),\n p = n(77),\n f = n(64),\n g = n(158),\n m = n(7),\n b = n(166),\n v = n(27),\n y = s.JSON,\n A = s.Number,\n _ = s.SyntaxError,\n S = y && y.parse,\n E = a(\"Object\", \"keys\"),\n x = Object.getOwnPropertyDescriptor,\n w = o(\"\".charAt),\n C = o(\"\".slice),\n T = o(/./.exec),\n P = o([].push),\n k = /^\\d$/,\n M = /^[1-9]$/,\n R = /^(-|\\d)$/,\n I = /^[\\t\\n\\r ]$/,\n internalize = function internalize(t, e, n, i) {\n var r,\n s,\n a,\n o,\n c,\n p = t[e],\n g = i && p === i.value,\n m = g && \"string\" == typeof i.source ? {\n source: i.source\n } : {};\n if (h(p)) {\n var b = d(p),\n v = g ? i.nodes : b ? [] : {};\n if (b) {\n r = v.length;\n a = f(p);\n for (o = 0; o < a; o++) internalizeProperty(p, o, internalize(p, \"\" + o, n, o < r ? v[o] : void 0));\n } else {\n s = E(p);\n a = f(s);\n for (o = 0; o < a; o++) {\n c = s[o];\n internalizeProperty(p, c, internalize(p, c, n, u(v, c) ? v[c] : void 0));\n }\n }\n }\n return l(n, t, e, p, m);\n },\n internalizeProperty = function internalizeProperty(t, e, n) {\n if (r) {\n var i = x(t, e);\n if (i && !i.configurable) return;\n }\n void 0 === n ? delete t[e] : g(t, e, n);\n },\n Node = function Node(t, e, n, i) {\n this.value = t;\n this.end = e;\n this.source = n;\n this.nodes = i;\n },\n Context = function Context(t, e) {\n this.source = t;\n this.index = e;\n };\n Context.prototype = {\n fork: function fork(t) {\n return new Context(this.source, t);\n },\n parse: function parse() {\n var t = this.source,\n e = this.skip(I, this.index),\n n = this.fork(e),\n i = w(t, e);\n if (T(R, i)) return n.number();\n switch (i) {\n case \"{\":\n return n.object();\n case \"[\":\n return n.array();\n case '\"':\n return n.string();\n case \"t\":\n return n.keyword(!0);\n case \"f\":\n return n.keyword(!1);\n case \"n\":\n return n.keyword(null);\n }\n throw _('Unexpected character: \"' + i + '\" at: ' + e);\n },\n node: function node(t, e, n, i, r) {\n return new Node(e, i, t ? null : C(this.source, n, i), r);\n },\n object: function object() {\n for (var t = this.source, e = this.index + 1, n = !1, i = {}, r = {}; e < t.length;) {\n e = this.until(['\"', \"}\"], e);\n if (\"}\" == w(t, e) && !n) {\n e++;\n break;\n }\n var s = this.fork(e).string(),\n a = s.value;\n e = s.end;\n e = this.until([\":\"], e) + 1;\n e = this.skip(I, e);\n s = this.fork(e).parse();\n g(r, a, s);\n g(i, a, s.value);\n e = this.until([\",\", \"}\"], s.end);\n var o = w(t, e);\n if (\",\" == o) {\n n = !0;\n e++;\n } else if (\"}\" == o) {\n e++;\n break;\n }\n }\n return this.node(1, i, this.index, e, r);\n },\n array: function array() {\n for (var t = this.source, e = this.index + 1, n = !1, i = [], r = []; e < t.length;) {\n e = this.skip(I, e);\n if (\"]\" == w(t, e) && !n) {\n e++;\n break;\n }\n var s = this.fork(e).parse();\n P(r, s);\n P(i, s.value);\n e = this.until([\",\", \"]\"], s.end);\n if (\",\" == w(t, e)) {\n n = !0;\n e++;\n } else if (\"]\" == w(t, e)) {\n e++;\n break;\n }\n }\n return this.node(1, i, this.index, e, r);\n },\n string: function string() {\n var t = this.index,\n e = b(this.source, this.index + 1);\n return this.node(0, e.value, t, e.end);\n },\n number: function number() {\n var t = this.source,\n e = this.index,\n n = e;\n \"-\" == w(t, n) && n++;\n if (\"0\" == w(t, n)) n++;else {\n if (!T(M, w(t, n))) throw _(\"Failed to parse number at: \" + n);\n n = this.skip(k, ++n);\n }\n \".\" == w(t, n) && (n = this.skip(k, ++n));\n if (\"e\" == w(t, n) || \"E\" == w(t, n)) {\n n++;\n \"+\" != w(t, n) && \"-\" != w(t, n) || n++;\n if (n == (n = this.skip(k, n))) throw _(\"Failed to parse number's exponent value at: \" + n);\n }\n return this.node(0, A(C(t, e, n)), e, n);\n },\n keyword: function keyword(t) {\n var e = \"\" + t,\n n = this.index,\n i = n + e.length;\n if (C(this.source, n, i) != e) throw _(\"Failed to parse value at: \" + n);\n return this.node(0, t, n, i);\n },\n skip: function skip(t, e) {\n for (var n = this.source; e < n.length && T(t, w(n, e)); e++);\n return e;\n },\n until: function until(t, e) {\n e = this.skip(I, e);\n for (var n = w(this.source, e), i = 0; i < t.length; i++) if (t[i] == n) return e;\n throw _('Unexpected character: \"' + n + '\" at: ' + e);\n }\n };\n var D = m(function () {\n var t,\n e = \"9007199254740993\";\n S(e, function (e, n, i) {\n t = i.source;\n });\n return t !== e;\n }),\n O = v && !m(function () {\n return 1 / S(\"-0 \\t\") != -1 / 0;\n });\n i({\n target: \"JSON\",\n stat: !0,\n forced: D\n }, {\n parse: function parse(t, e) {\n return O && !c(e) ? S(t) : function (t, e) {\n t = p(t);\n var n = new Context(t, 0, \"\"),\n i = n.parse(),\n r = i.value,\n s = n.skip(I, i.end);\n if (s < t.length) throw _('Unexpected extra character: \"' + w(t, s) + '\" after the parsed data at: ' + s);\n return c(e) ? internalize({\n \"\": r\n }, \"\", e, i) : r;\n }(t, e);\n }\n });\n }, (t, e, n) => {\n var i = n(14),\n r = n(39),\n s = SyntaxError,\n a = parseInt,\n o = String.fromCharCode,\n l = i(\"\".charAt),\n c = i(\"\".slice),\n h = i(/./.exec),\n d = {\n '\\\\\"': '\"',\n \"\\\\\\\\\": \"\\\\\",\n \"\\\\/\": \"/\",\n \"\\\\b\": \"\\b\",\n \"\\\\f\": \"\\f\",\n \"\\\\n\": \"\\n\",\n \"\\\\r\": \"\\r\",\n \"\\\\t\": \"\\t\"\n },\n u = /^[\\da-f]{4}$/i,\n p = /^[\\u0000-\\u001F]$/;\n t.exports = function (t, e) {\n for (var n = !0, i = \"\"; e < t.length;) {\n var f = l(t, e);\n if (\"\\\\\" == f) {\n var g = c(t, e, e + 2);\n if (r(d, g)) {\n i += d[g];\n e += 2;\n } else {\n if (\"\\\\u\" != g) throw s('Unknown escape sequence: \"' + g + '\"');\n var m = c(t, e += 2, e + 4);\n if (!h(u, m)) throw s(\"Bad Unicode escape at: \" + e);\n i += o(a(m, 16));\n e += 4;\n }\n } else {\n if ('\"' == f) {\n n = !1;\n e++;\n break;\n }\n if (h(p, f)) throw s(\"Bad control character in string literal at: \" + e);\n i += f;\n e++;\n }\n }\n if (n) throw s(\"Unterminated string at: \" + e);\n return {\n value: i,\n end: e\n };\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _class19;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StatTimer = e.RenderingCancelledException = e.PixelsPerInch = e.PageViewport = e.PDFDateString = e.DOMStandardFontDataFactory = e.DOMSVGFactory = e.DOMFilterFactory = e.DOMCanvasFactory = e.DOMCMapReaderFactory = e.AnnotationPrefix = void 0;\n e.deprecated = function deprecated(t) {\n console.log(\"Deprecated API usage: \" + t);\n };\n e.getColorValues = function getColorValues(t) {\n const e = document.createElement(\"span\");\n e.style.visibility = \"hidden\";\n document.body.append(e);\n for (const n of t.keys()) {\n e.style.color = n;\n const i = window.getComputedStyle(e).color;\n t.set(n, getRGB(i));\n }\n e.remove();\n };\n e.getCurrentTransform = function getCurrentTransform(t) {\n const {\n a: e,\n b: n,\n c: i,\n d: r,\n e: s,\n f: a\n } = t.getTransform();\n return [e, n, i, r, s, a];\n };\n e.getCurrentTransformInverse = function getCurrentTransformInverse(t) {\n const {\n a: e,\n b: n,\n c: i,\n d: r,\n e: s,\n f: a\n } = t.getTransform().invertSelf();\n return [e, n, i, r, s, a];\n };\n e.getFilenameFromUrl = function getFilenameFromUrl(t) {\n arguments.length > 1 && void 0 !== arguments[1] && arguments[1] || ([t] = t.split(/[#?]/, 1));\n return t.substring(t.lastIndexOf(\"/\") + 1);\n };\n e.getPdfFilenameFromUrl = function getPdfFilenameFromUrl(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"document.pdf\";\n if (\"string\" != typeof t) return e;\n if (isDataScheme(t)) {\n (0, r.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return e;\n }\n const n = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i,\n i = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/.exec(t);\n let s = n.exec(i[1]) || n.exec(i[2]) || n.exec(i[3]);\n if (s) {\n s = s[0];\n if (s.includes(\"%\")) try {\n s = n.exec(decodeURIComponent(s))[0];\n } catch (_unused9) {}\n }\n return s || e;\n };\n e.getRGB = getRGB;\n e.getXfaPageViewport = function getXfaPageViewport(t, e) {\n let {\n scale: n = 1,\n rotation: i = 0\n } = e;\n const {\n width: r,\n height: s\n } = t.attributes.style,\n a = [0, 0, parseInt(r), parseInt(s)];\n return new PageViewport({\n viewBox: a,\n scale: n,\n rotation: i\n });\n };\n e.isDataScheme = isDataScheme;\n e.isPdfFile = function isPdfFile(t) {\n return \"string\" == typeof t && /\\.pdf$/i.test(t);\n };\n e.isValidFetchUrl = isValidFetchUrl;\n e.loadScript = function loadScript(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n return new Promise((n, i) => {\n const r = document.createElement(\"script\");\n r.src = t;\n r.onload = function (t) {\n e && r.remove();\n n(t);\n };\n r.onerror = function () {\n i(new Error(\"Cannot load script at: \".concat(r.src)));\n };\n (document.head || document.documentElement).append(r);\n });\n };\n e.setLayerDimensions = function setLayerDimensions(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];\n if (e instanceof PageViewport) {\n const {\n pageWidth: i,\n pageHeight: r\n } = e.rawDims,\n {\n style: s\n } = t,\n a = \"calc(var(--scale-factor) * \".concat(i, \"px)\"),\n o = \"calc(var(--scale-factor) * \".concat(r, \"px)\");\n if (n && e.rotation % 180 != 0) {\n s.width = o;\n s.height = a;\n } else {\n s.width = a;\n s.height = o;\n }\n }\n i && t.setAttribute(\"data-main-rotation\", e.rotation);\n };\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n n(84);\n n(86);\n n(87);\n var i = n(168),\n r = n(1);\n const s = \"http://www.w3.org/2000/svg\";\n e.AnnotationPrefix = \"pdfjs_internal_id_\";\n class PixelsPerInch {}\n _class19 = PixelsPerInch;\n _defineProperty(PixelsPerInch, \"CSS\", 96);\n _defineProperty(PixelsPerInch, \"PDF\", 72);\n _defineProperty(PixelsPerInch, \"PDF_TO_CSS_UNITS\", _class19.CSS / _class19.PDF);\n e.PixelsPerInch = PixelsPerInch;\n var _kt = /*#__PURE__*/new WeakMap();\n var _Mt = /*#__PURE__*/new WeakMap();\n var _e7 = /*#__PURE__*/new WeakMap();\n var _Rt = /*#__PURE__*/new WeakMap();\n var _Ft = /*#__PURE__*/new WeakMap();\n var _It = /*#__PURE__*/new WeakMap();\n var _Dt = /*#__PURE__*/new WeakMap();\n var _Ot = /*#__PURE__*/new WeakMap();\n var _Lt = /*#__PURE__*/new WeakMap();\n var _Nt = /*#__PURE__*/new WeakMap();\n var _O3 = /*#__PURE__*/new WeakMap();\n var _N2 = /*#__PURE__*/new WeakMap();\n var _Bt = /*#__PURE__*/new WeakMap();\n var _Ht = /*#__PURE__*/new WeakSet();\n var _jt = /*#__PURE__*/new WeakSet();\n var _qt = /*#__PURE__*/new WeakSet();\n var _Ut = /*#__PURE__*/new WeakSet();\n var _zt = /*#__PURE__*/new WeakSet();\n class DOMFilterFactory extends i.BaseFilterFactory {\n constructor() {\n let {\n docId: _t9,\n ownerDocument: _e8 = globalThis.document\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n super();\n _classPrivateMethodInitSpec(this, _zt);\n _classPrivateMethodInitSpec(this, _Ut);\n _classPrivateMethodInitSpec(this, _qt);\n _classPrivateMethodInitSpec(this, _jt);\n _classPrivateMethodInitSpec(this, _Ht);\n _classPrivateFieldInitSpec(this, _Bt, {\n get: _get_Bt,\n set: void 0\n });\n _classPrivateFieldInitSpec(this, _N2, {\n get: _get_N,\n set: void 0\n });\n _classPrivateFieldInitSpec(this, _kt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Mt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _e7, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Rt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ft, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _It, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Dt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ot, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Lt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Nt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _O3, {\n writable: true,\n value: 0\n });\n _classPrivateFieldSet(this, _e7, _t9);\n _classPrivateFieldSet(this, _Rt, _e8);\n }\n addFilter(t) {\n var _this$O5, _this$O6;\n if (!t) return \"none\";\n let e,\n n,\n i,\n r,\n s = _classPrivateFieldGet(this, _N2).get(t);\n if (s) return s;\n if (1 === t.length) {\n const s = t[0],\n a = new Array(256);\n for (let t = 0; t < 256; t++) a[t] = s[t] / 255;\n r = e = n = i = a.join(\",\");\n } else {\n const [s, a, o] = t,\n l = new Array(256),\n c = new Array(256),\n h = new Array(256);\n for (let t = 0; t < 256; t++) {\n l[t] = s[t] / 255;\n c[t] = a[t] / 255;\n h[t] = o[t] / 255;\n }\n e = l.join(\",\");\n n = c.join(\",\");\n i = h.join(\",\");\n r = \"\".concat(e).concat(n).concat(i);\n }\n s = _classPrivateFieldGet(this, _N2).get(r);\n if (s) {\n _classPrivateFieldGet(this, _N2).set(t, s);\n return s;\n }\n const a = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_transfer_map_\").concat((_classPrivateFieldSet(this, _O3, (_this$O5 = _classPrivateFieldGet(this, _O3), _this$O6 = _this$O5++, _this$O5)), _this$O6)),\n o = \"url(#\".concat(a, \")\");\n _classPrivateFieldGet(this, _N2).set(t, o);\n _classPrivateFieldGet(this, _N2).set(r, o);\n const l = _classPrivateMethodGet(this, _jt, _jt2).call(this, a);\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, e, n, i, l);\n return o;\n }\n addHCMFilter(t, e) {\n var _classPrivateFieldGet6;\n const n = \"\".concat(t, \"-\").concat(e);\n if (_classPrivateFieldGet(this, _It) === n) return _classPrivateFieldGet(this, _Dt);\n _classPrivateFieldSet(this, _It, n);\n _classPrivateFieldSet(this, _Dt, \"none\");\n (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _Ft)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.remove();\n if (!t || !e) return _classPrivateFieldGet(this, _Dt);\n const i = _classPrivateMethodGet(this, _zt, _zt2).call(this, t);\n t = r.Util.makeHexColor(...i);\n const s = _classPrivateMethodGet(this, _zt, _zt2).call(this, e);\n e = r.Util.makeHexColor(...s);\n _classPrivateFieldGet(this, _Bt).style.color = \"\";\n if (\"#000000\" === t && \"#ffffff\" === e || t === e) return _classPrivateFieldGet(this, _Dt);\n const a = new Array(256);\n for (let t = 0; t <= 255; t++) {\n const e = t / 255;\n a[t] = e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;\n }\n const o = a.join(\",\"),\n l = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_hcm_filter\"),\n c = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, l));\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, o, o, o, c);\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, c);\n const getSteps = (t, e) => {\n const n = i[t] / 255,\n r = s[t] / 255,\n a = new Array(e + 1);\n for (let t = 0; t <= e; t++) a[t] = n + t / e * (r - n);\n return a.join(\",\");\n };\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), c);\n _classPrivateFieldSet(this, _Dt, \"url(#\".concat(l, \")\"));\n return _classPrivateFieldGet(this, _Dt);\n }\n addHighlightHCMFilter(t, e, n, i) {\n var _classPrivateFieldGet7;\n const r = \"\".concat(t, \"-\").concat(e, \"-\").concat(n, \"-\").concat(i);\n if (_classPrivateFieldGet(this, _Lt) === r) return _classPrivateFieldGet(this, _Nt);\n _classPrivateFieldSet(this, _Lt, r);\n _classPrivateFieldSet(this, _Nt, \"none\");\n (_classPrivateFieldGet7 = _classPrivateFieldGet(this, _Ot)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.remove();\n if (!t || !e) return _classPrivateFieldGet(this, _Nt);\n const [s, a] = [t, e].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\n let o = Math.round(.2126 * s[0] + .7152 * s[1] + .0722 * s[2]),\n l = Math.round(.2126 * a[0] + .7152 * a[1] + .0722 * a[2]),\n [c, h] = [n, i].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\n l < o && ([o, l, c, h] = [l, o, h, c]);\n _classPrivateFieldGet(this, _Bt).style.color = \"\";\n const getSteps = (t, e, n) => {\n const i = new Array(256),\n r = (l - o) / n,\n s = t / 255,\n a = (e - t) / (255 * n);\n let c = 0;\n for (let t = 0; t <= n; t++) {\n const e = Math.round(o + t * r),\n n = s + t * a;\n for (let t = c; t <= e; t++) i[t] = n;\n c = e + 1;\n }\n for (let t = c; t < 256; t++) i[t] = i[c - 1];\n return i.join(\",\");\n },\n d = \"g_\".concat(_classPrivateFieldGet(this, _e7), \"_hcm_highlight_filter\"),\n u = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, d));\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, u);\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(c[0], h[0], 5), getSteps(c[1], h[1], 5), getSteps(c[2], h[2], 5), u);\n _classPrivateFieldSet(this, _Nt, \"url(#\".concat(d, \")\"));\n return _classPrivateFieldGet(this, _Nt);\n }\n destroy() {\n if (!(arguments.length > 0 && void 0 !== arguments[0] && arguments[0]) || !_classPrivateFieldGet(this, _Dt) && !_classPrivateFieldGet(this, _Nt)) {\n if (_classPrivateFieldGet(this, _Mt)) {\n _classPrivateFieldGet(this, _Mt).parentNode.parentNode.remove();\n _classPrivateFieldSet(this, _Mt, null);\n }\n if (_classPrivateFieldGet(this, _kt)) {\n _classPrivateFieldGet(this, _kt).clear();\n _classPrivateFieldSet(this, _kt, null);\n }\n _classPrivateFieldSet(this, _O3, 0);\n }\n }\n }\n function _get_N() {\n return _classPrivateFieldGet(this, _kt) || _classPrivateFieldSet(this, _kt, new Map());\n }\n function _get_Bt() {\n if (!_classPrivateFieldGet(this, _Mt)) {\n const t = _classPrivateFieldGet(this, _Rt).createElement(\"div\"),\n {\n style: e\n } = t;\n e.visibility = \"hidden\";\n e.contain = \"strict\";\n e.width = e.height = 0;\n e.position = \"absolute\";\n e.top = e.left = 0;\n e.zIndex = -1;\n const n = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"svg\");\n n.setAttribute(\"width\", 0);\n n.setAttribute(\"height\", 0);\n _classPrivateFieldSet(this, _Mt, _classPrivateFieldGet(this, _Rt).createElementNS(s, \"defs\"));\n t.append(n);\n n.append(_classPrivateFieldGet(this, _Mt));\n _classPrivateFieldGet(this, _Rt).body.append(t);\n }\n return _classPrivateFieldGet(this, _Mt);\n }\n function _Ht2(t) {\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"feColorMatrix\");\n e.setAttribute(\"type\", \"matrix\");\n e.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n t.append(e);\n }\n function _jt2(t) {\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"filter\");\n e.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n e.setAttribute(\"id\", t);\n _classPrivateFieldGet(this, _Bt).append(e);\n return e;\n }\n function _qt2(t, e, n) {\n const i = _classPrivateFieldGet(this, _Rt).createElementNS(s, e);\n i.setAttribute(\"type\", \"discrete\");\n i.setAttribute(\"tableValues\", n);\n t.append(i);\n }\n function _Ut2(t, e, n, i) {\n const r = _classPrivateFieldGet(this, _Rt).createElementNS(s, \"feComponentTransfer\");\n i.append(r);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncR\", t);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncG\", e);\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \"feFuncB\", n);\n }\n function _zt2(t) {\n _classPrivateFieldGet(this, _Bt).style.color = t;\n return getRGB(getComputedStyle(_classPrivateFieldGet(this, _Bt)).getPropertyValue(\"color\"));\n }\n e.DOMFilterFactory = DOMFilterFactory;\n class DOMCanvasFactory extends i.BaseCanvasFactory {\n constructor() {\n let {\n ownerDocument: t = globalThis.document\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n super();\n this._document = t;\n }\n _createCanvas(t, e) {\n const n = this._document.createElement(\"canvas\");\n n.width = t;\n n.height = e;\n return n;\n }\n }\n e.DOMCanvasFactory = DOMCanvasFactory;\n async function fetchData(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (isValidFetchUrl(t, document.baseURI)) {\n const n = await fetch(t);\n if (!n.ok) throw new Error(n.statusText);\n return e ? new Uint8Array(await n.arrayBuffer()) : (0, r.stringToBytes)(await n.text());\n }\n return new Promise((n, i) => {\n const s = new XMLHttpRequest();\n s.open(\"GET\", t, !0);\n e && (s.responseType = \"arraybuffer\");\n s.onreadystatechange = () => {\n if (s.readyState === XMLHttpRequest.DONE) {\n if (200 === s.status || 0 === s.status) {\n let t;\n e && s.response ? t = new Uint8Array(s.response) : !e && s.responseText && (t = (0, r.stringToBytes)(s.responseText));\n if (t) {\n n(t);\n return;\n }\n }\n i(new Error(s.statusText));\n }\n };\n s.send(null);\n });\n }\n class DOMCMapReaderFactory extends i.BaseCMapReaderFactory {\n _fetchData(t, e) {\n return fetchData(t, this.isCompressed).then(t => ({\n cMapData: t,\n compressionType: e\n }));\n }\n }\n e.DOMCMapReaderFactory = DOMCMapReaderFactory;\n class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory {\n _fetchData(t) {\n return fetchData(t, !0);\n }\n }\n e.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n class DOMSVGFactory extends i.BaseSVGFactory {\n _createSVG(t) {\n return document.createElementNS(s, t);\n }\n }\n e.DOMSVGFactory = DOMSVGFactory;\n class PageViewport {\n constructor(t) {\n let {\n viewBox: e,\n scale: n,\n rotation: i,\n offsetX: r = 0,\n offsetY: s = 0,\n dontFlip: a = !1\n } = t;\n this.viewBox = e;\n this.scale = n;\n this.rotation = i;\n this.offsetX = r;\n this.offsetY = s;\n const o = (e[2] + e[0]) / 2,\n l = (e[3] + e[1]) / 2;\n let c, h, d, u, p, f, g, m;\n i %= 360;\n i < 0 && (i += 360);\n switch (i) {\n case 180:\n c = -1;\n h = 0;\n d = 0;\n u = 1;\n break;\n case 90:\n c = 0;\n h = 1;\n d = 1;\n u = 0;\n break;\n case 270:\n c = 0;\n h = -1;\n d = -1;\n u = 0;\n break;\n case 0:\n c = 1;\n h = 0;\n d = 0;\n u = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (a) {\n d = -d;\n u = -u;\n }\n if (0 === c) {\n p = Math.abs(l - e[1]) * n + r;\n f = Math.abs(o - e[0]) * n + s;\n g = (e[3] - e[1]) * n;\n m = (e[2] - e[0]) * n;\n } else {\n p = Math.abs(o - e[0]) * n + r;\n f = Math.abs(l - e[1]) * n + s;\n g = (e[2] - e[0]) * n;\n m = (e[3] - e[1]) * n;\n }\n this.transform = [c * n, h * n, d * n, u * n, p - c * n * o - d * n * l, f - h * n * o - u * n * l];\n this.width = g;\n this.height = m;\n }\n get rawDims() {\n const {\n viewBox: t\n } = this;\n return (0, r.shadow)(this, \"rawDims\", {\n pageWidth: t[2] - t[0],\n pageHeight: t[3] - t[1],\n pageX: t[0],\n pageY: t[1]\n });\n }\n clone() {\n let {\n scale: t = this.scale,\n rotation: e = this.rotation,\n offsetX: n = this.offsetX,\n offsetY: i = this.offsetY,\n dontFlip: r = !1\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale: t,\n rotation: e,\n offsetX: n,\n offsetY: i,\n dontFlip: r\n });\n }\n convertToViewportPoint(t, e) {\n return r.Util.applyTransform([t, e], this.transform);\n }\n convertToViewportRectangle(t) {\n const e = r.Util.applyTransform([t[0], t[1]], this.transform),\n n = r.Util.applyTransform([t[2], t[3]], this.transform);\n return [e[0], e[1], n[0], n[1]];\n }\n convertToPdfPoint(t, e) {\n return r.Util.applyInverseTransform([t, e], this.transform);\n }\n }\n e.PageViewport = PageViewport;\n class RenderingCancelledException extends r.BaseException {\n constructor(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\n super(t, \"RenderingCancelledException\");\n this.extraDelay = e;\n }\n }\n e.RenderingCancelledException = RenderingCancelledException;\n function isDataScheme(t) {\n const e = t.length;\n let n = 0;\n for (; n < e && \"\" === t[n].trim();) n++;\n return \"data:\" === t.substring(n, n + 5).toLowerCase();\n }\n e.StatTimer = class StatTimer {\n constructor() {\n _defineProperty(this, \"started\", Object.create(null));\n _defineProperty(this, \"times\", []);\n }\n time(t) {\n t in this.started && (0, r.warn)(\"Timer is already running for \".concat(t));\n this.started[t] = Date.now();\n }\n timeEnd(t) {\n t in this.started || (0, r.warn)(\"Timer has not been started for \".concat(t));\n this.times.push({\n name: t,\n start: this.started[t],\n end: Date.now()\n });\n delete this.started[t];\n }\n toString() {\n const t = [];\n let e = 0;\n for (const {\n name: t\n } of this.times) e = Math.max(t.length, e);\n for (const {\n name: n,\n start: i,\n end: r\n } of this.times) t.push(\"\".concat(n.padEnd(e), \" \").concat(r - i, \"ms\\n\"));\n return t.join(\"\");\n }\n };\n function isValidFetchUrl(t, e) {\n try {\n const {\n protocol: n\n } = e ? new URL(t, e) : new URL(t);\n return \"http:\" === n || \"https:\" === n;\n } catch (_unused10) {\n return !1;\n }\n }\n let a;\n e.PDFDateString = class PDFDateString {\n static toDateObject(t) {\n if (!t || \"string\" != typeof t) return null;\n a || (a = new RegExp(\"^D:(\\\\d{4})(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?(\\\\d{2})?([Z|+|-])?(\\\\d{2})?'?(\\\\d{2})?'?\"));\n const e = a.exec(t);\n if (!e) return null;\n const n = parseInt(e[1], 10);\n let i = parseInt(e[2], 10);\n i = i >= 1 && i <= 12 ? i - 1 : 0;\n let r = parseInt(e[3], 10);\n r = r >= 1 && r <= 31 ? r : 1;\n let s = parseInt(e[4], 10);\n s = s >= 0 && s <= 23 ? s : 0;\n let o = parseInt(e[5], 10);\n o = o >= 0 && o <= 59 ? o : 0;\n let l = parseInt(e[6], 10);\n l = l >= 0 && l <= 59 ? l : 0;\n const c = e[7] || \"Z\";\n let h = parseInt(e[8], 10);\n h = h >= 0 && h <= 23 ? h : 0;\n let d = parseInt(e[9], 10) || 0;\n d = d >= 0 && d <= 59 ? d : 0;\n if (\"-\" === c) {\n s += h;\n o += d;\n } else if (\"+\" === c) {\n s -= h;\n o -= d;\n }\n return new Date(Date.UTC(n, i, r, s, o, l));\n }\n };\n function getRGB(t) {\n if (t.startsWith(\"#\")) {\n const e = parseInt(t.slice(1), 16);\n return [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e];\n }\n if (t.startsWith(\"rgb(\")) return t.slice(4, -1).split(\",\").map(t => parseInt(t));\n if (t.startsWith(\"rgba(\")) return t.slice(5, -1).split(\",\").map(t => parseInt(t)).slice(0, 3);\n (0, r.warn)(\"Not a valid color format: \\\"\".concat(t, \"\\\"\"));\n return [0, 0, 0];\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.BaseStandardFontDataFactory = e.BaseSVGFactory = e.BaseFilterFactory = e.BaseCanvasFactory = e.BaseCMapReaderFactory = void 0;\n n(2);\n var i = n(1);\n class BaseFilterFactory {\n constructor() {\n this.constructor === BaseFilterFactory && (0, i.unreachable)(\"Cannot initialize BaseFilterFactory.\");\n }\n addFilter(t) {\n return \"none\";\n }\n addHCMFilter(t, e) {\n return \"none\";\n }\n addHighlightHCMFilter(t, e, n, i) {\n return \"none\";\n }\n destroy() {}\n }\n e.BaseFilterFactory = BaseFilterFactory;\n class BaseCanvasFactory {\n constructor() {\n this.constructor === BaseCanvasFactory && (0, i.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n create(t, e) {\n if (t <= 0 || e <= 0) throw new Error(\"Invalid canvas size\");\n const n = this._createCanvas(t, e);\n return {\n canvas: n,\n context: n.getContext(\"2d\")\n };\n }\n reset(t, e, n) {\n if (!t.canvas) throw new Error(\"Canvas is not specified\");\n if (e <= 0 || n <= 0) throw new Error(\"Invalid canvas size\");\n t.canvas.width = e;\n t.canvas.height = n;\n }\n destroy(t) {\n if (!t.canvas) throw new Error(\"Canvas is not specified\");\n t.canvas.width = 0;\n t.canvas.height = 0;\n t.canvas = null;\n t.context = null;\n }\n _createCanvas(t, e) {\n (0, i.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n }\n e.BaseCanvasFactory = BaseCanvasFactory;\n class BaseCMapReaderFactory {\n constructor(t) {\n let {\n baseUrl: e = null,\n isCompressed: n = !0\n } = t;\n this.constructor === BaseCMapReaderFactory && (0, i.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n this.baseUrl = e;\n this.isCompressed = n;\n }\n async fetch(t) {\n let {\n name: e\n } = t;\n if (!this.baseUrl) throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n if (!e) throw new Error(\"CMap name must be specified.\");\n const n = this.baseUrl + e + (this.isCompressed ? \".bcmap\" : \"\"),\n r = this.isCompressed ? i.CMapCompressionType.BINARY : i.CMapCompressionType.NONE;\n return this._fetchData(n, r).catch(t => {\n throw new Error(\"Unable to load \".concat(this.isCompressed ? \"binary \" : \"\", \"CMap at: \").concat(n));\n });\n }\n _fetchData(t, e) {\n (0, i.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }\n e.BaseCMapReaderFactory = BaseCMapReaderFactory;\n class BaseStandardFontDataFactory {\n constructor(t) {\n let {\n baseUrl: e = null\n } = t;\n this.constructor === BaseStandardFontDataFactory && (0, i.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n this.baseUrl = e;\n }\n async fetch(t) {\n let {\n filename: e\n } = t;\n if (!this.baseUrl) throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that the \"standardFontDataUrl\" API parameter is provided.');\n if (!e) throw new Error(\"Font filename must be specified.\");\n const n = \"\".concat(this.baseUrl).concat(e);\n return this._fetchData(n).catch(t => {\n throw new Error(\"Unable to load font data at: \".concat(n));\n });\n }\n _fetchData(t) {\n (0, i.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n }\n e.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n class BaseSVGFactory {\n constructor() {\n this.constructor === BaseSVGFactory && (0, i.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n create(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (t <= 0 || e <= 0) throw new Error(\"Invalid SVG dimensions\");\n const i = this._createSVG(\"svg:svg\");\n i.setAttribute(\"version\", \"1.1\");\n if (!n) {\n i.setAttribute(\"width\", \"\".concat(t, \"px\"));\n i.setAttribute(\"height\", \"\".concat(e, \"px\"));\n }\n i.setAttribute(\"preserveAspectRatio\", \"none\");\n i.setAttribute(\"viewBox\", \"0 0 \".concat(t, \" \").concat(e));\n return i;\n }\n createElement(t) {\n if (\"string\" != typeof t) throw new Error(\"Invalid SVG element type\");\n return this._createSVG(t);\n }\n _createSVG(t) {\n (0, i.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n }\n e.BaseSVGFactory = BaseSVGFactory;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.MurmurHash3_64 = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(2);\n var i = n(1);\n const r = 3285377520,\n s = 4294901760,\n a = 65535;\n e.MurmurHash3_64 = class MurmurHash3_64 {\n constructor(t) {\n this.h1 = t ? 4294967295 & t : r;\n this.h2 = t ? 4294967295 & t : r;\n }\n update(t) {\n let e, n;\n if (\"string\" == typeof t) {\n e = new Uint8Array(2 * t.length);\n n = 0;\n for (let i = 0, r = t.length; i < r; i++) {\n const r = t.charCodeAt(i);\n if (r <= 255) e[n++] = r;else {\n e[n++] = r >>> 8;\n e[n++] = 255 & r;\n }\n }\n } else {\n if (!(0, i.isArrayBuffer)(t)) throw new Error(\"Wrong data format in MurmurHash3_64_update. Input must be a string or array.\");\n e = t.slice();\n n = e.byteLength;\n }\n const r = n >> 2,\n o = n - 4 * r,\n l = new Uint32Array(e.buffer, 0, r);\n let c = 0,\n h = 0,\n d = this.h1,\n u = this.h2;\n const p = 3432918353,\n f = 461845907,\n g = 11601,\n m = 13715;\n for (let t = 0; t < r; t++) if (1 & t) {\n c = l[t];\n c = c * p & s | c * g & a;\n c = c << 15 | c >>> 17;\n c = c * f & s | c * m & a;\n d ^= c;\n d = d << 13 | d >>> 19;\n d = 5 * d + 3864292196;\n } else {\n h = l[t];\n h = h * p & s | h * g & a;\n h = h << 15 | h >>> 17;\n h = h * f & s | h * m & a;\n u ^= h;\n u = u << 13 | u >>> 19;\n u = 5 * u + 3864292196;\n }\n c = 0;\n switch (o) {\n case 3:\n c ^= e[4 * r + 2] << 16;\n case 2:\n c ^= e[4 * r + 1] << 8;\n case 1:\n c ^= e[4 * r];\n c = c * p & s | c * g & a;\n c = c << 15 | c >>> 17;\n c = c * f & s | c * m & a;\n 1 & r ? d ^= c : u ^= c;\n }\n this.h1 = d;\n this.h2 = u;\n }\n hexdigest() {\n let t = this.h1,\n e = this.h2;\n t ^= e >>> 1;\n t = 3981806797 * t & s | 36045 * t & a;\n e = 4283543511 * e & s | (2950163797 * (e << 16 | t >>> 16) & s) >>> 16;\n t ^= e >>> 1;\n t = 444984403 * t & s | 60499 * t & a;\n e = 3301882366 * e & s | (3120437893 * (e << 16 | t >>> 16) & s) >>> 16;\n t ^= e >>> 1;\n return (t >>> 0).toString(16).padStart(8, \"0\") + (e >>> 0).toString(16).padStart(8, \"0\");\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _Wt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.FontLoader = e.FontFaceObject = void 0;\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n n(89);\n n(148);\n var i = n(1);\n e.FontLoader = (_Wt = /*#__PURE__*/new WeakMap(), class FontLoader {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _Wt, {\n writable: true,\n value: new Set()\n });\n let {\n ownerDocument: e = globalThis.document,\n styleElement: n = null\n } = t;\n this._document = e;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(t) {\n this.nativeFontFaces.add(t);\n this._document.fonts.add(t);\n }\n removeNativeFontFace(t) {\n this.nativeFontFaces.delete(t);\n this._document.fonts.delete(t);\n }\n insertRule(t) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const e = this.styleElement.sheet;\n e.insertRule(t, e.cssRules.length);\n }\n clear() {\n for (const t of this.nativeFontFaces) this._document.fonts.delete(t);\n this.nativeFontFaces.clear();\n _classPrivateFieldGet(this, _Wt).clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont(t) {\n if (t && !_classPrivateFieldGet(this, _Wt).has(t.loadedName)) {\n (0, i.assert)(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName: e,\n src: n,\n style: r\n } = t,\n s = new FontFace(e, n, r);\n this.addNativeFontFace(s);\n try {\n await s.load();\n _classPrivateFieldGet(this, _Wt).add(e);\n } catch (_unused11) {\n (0, i.warn)(\"Cannot load system font: \".concat(t.baseFontName, \", installing it could help to improve PDF rendering.\"));\n this.removeNativeFontFace(s);\n }\n } else (0, i.unreachable)(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n }\n async bind(t) {\n if (t.attached || t.missingFile && !t.systemFontInfo) return;\n t.attached = !0;\n if (t.systemFontInfo) {\n await this.loadSystemFont(t.systemFontInfo);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const e = t.createNativeFontFace();\n if (e) {\n this.addNativeFontFace(e);\n try {\n await e.loaded;\n } catch (n) {\n (0, i.warn)(\"Failed to load font '\".concat(e.family, \"': '\").concat(n, \"'.\"));\n t.disableFontFace = !0;\n throw n;\n }\n }\n return;\n }\n const e = t.createFontFaceRule();\n if (e) {\n this.insertRule(e);\n if (this.isSyncFontLoadingSupported) return;\n await new Promise(e => {\n const n = this._queueLoadingCallback(e);\n this._prepareFontLoadEvent(t, n);\n });\n }\n }\n get isFontLoadingAPISupported() {\n var _this$_document;\n const t = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts);\n return (0, i.shadow)(this, \"isFontLoadingAPISupported\", t);\n }\n get isSyncFontLoadingSupported() {\n let t = !1;\n (i.isNodeJS || \"undefined\" != typeof navigator && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) && (t = !0);\n return (0, i.shadow)(this, \"isSyncFontLoadingSupported\", t);\n }\n _queueLoadingCallback(t) {\n const {\n loadingRequests: e\n } = this,\n n = {\n done: !1,\n complete: function completeRequest() {\n (0, i.assert)(!n.done, \"completeRequest() cannot be called twice.\");\n n.done = !0;\n for (; e.length > 0 && e[0].done;) {\n const t = e.shift();\n setTimeout(t.callback, 0);\n }\n },\n callback: t\n };\n e.push(n);\n return n;\n }\n get _loadTestFont() {\n const t = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return (0, i.shadow)(this, \"_loadTestFont\", t);\n }\n _prepareFontLoadEvent(t, e) {\n function int32(t, e) {\n return t.charCodeAt(e) << 24 | t.charCodeAt(e + 1) << 16 | t.charCodeAt(e + 2) << 8 | 255 & t.charCodeAt(e + 3);\n }\n function spliceString(t, e, n, i) {\n return t.substring(0, e) + i + t.substring(e + n);\n }\n let n, r;\n const s = this._document.createElement(\"canvas\");\n s.width = 1;\n s.height = 1;\n const a = s.getContext(\"2d\");\n let o = 0;\n const l = \"lt\".concat(Date.now()).concat(this.loadTestFontId++);\n let c = this._loadTestFont;\n c = spliceString(c, 976, l.length, l);\n const h = 1482184792;\n let d = int32(c, 16);\n for (n = 0, r = l.length - 3; n < r; n += 4) d = d - h + int32(l, n) | 0;\n n < l.length && (d = d - h + int32(l + \"XXX\", n) | 0);\n c = spliceString(c, 16, 4, (0, i.string32)(d));\n const u = \"@font-face {font-family:\\\"\".concat(l, \"\\\";src:\", \"url(data:font/opentype;base64,\".concat(btoa(c), \");\"), \"}\");\n this.insertRule(u);\n const p = this._document.createElement(\"div\");\n p.style.visibility = \"hidden\";\n p.style.width = p.style.height = \"10px\";\n p.style.position = \"absolute\";\n p.style.top = p.style.left = \"0px\";\n for (const e of [t.loadedName, l]) {\n const t = this._document.createElement(\"span\");\n t.textContent = \"Hi\";\n t.style.fontFamily = e;\n p.append(t);\n }\n this._document.body.append(p);\n !function isFontReady(t, e) {\n if (++o > 30) {\n (0, i.warn)(\"Load test font never loaded.\");\n e();\n return;\n }\n a.font = \"30px \" + t;\n a.fillText(\".\", 0, 20);\n a.getImageData(0, 0, 1, 1).data[3] > 0 ? e() : setTimeout(isFontReady.bind(null, t, e));\n }(l, () => {\n p.remove();\n e.complete();\n });\n }\n });\n e.FontFaceObject = class FontFaceObject {\n constructor(t, e) {\n let {\n isEvalSupported: n = !0,\n disableFontFace: i = !1,\n ignoreErrors: r = !1,\n inspectFont: s = null\n } = e;\n this.compiledGlyphs = Object.create(null);\n for (const e in t) this[e] = t[e];\n this.isEvalSupported = !1 !== n;\n this.disableFontFace = !0 === i;\n this.ignoreErrors = !0 === r;\n this._inspectFont = s;\n }\n createNativeFontFace() {\n var _this$_inspectFont;\n if (!this.data || this.disableFontFace) return null;\n let t;\n if (this.cssFontInfo) {\n const e = {\n weight: this.cssFontInfo.fontWeight\n };\n this.cssFontInfo.italicAngle && (e.style = \"oblique \".concat(this.cssFontInfo.italicAngle, \"deg\"));\n t = new FontFace(this.cssFontInfo.fontFamily, this.data, e);\n } else t = new FontFace(this.loadedName, this.data, {});\n (_this$_inspectFont = this._inspectFont) === null || _this$_inspectFont === void 0 ? void 0 : _this$_inspectFont.call(this, this);\n return t;\n }\n createFontFaceRule() {\n var _this$_inspectFont2;\n if (!this.data || this.disableFontFace) return null;\n const t = (0, i.bytesToString)(this.data),\n e = \"url(data:\".concat(this.mimetype, \";base64,\").concat(btoa(t), \");\");\n let n;\n if (this.cssFontInfo) {\n let t = \"font-weight: \".concat(this.cssFontInfo.fontWeight, \";\");\n this.cssFontInfo.italicAngle && (t += \"font-style: oblique \".concat(this.cssFontInfo.italicAngle, \"deg;\"));\n n = \"@font-face {font-family:\\\"\".concat(this.cssFontInfo.fontFamily, \"\\\";\").concat(t, \"src:\").concat(e, \"}\");\n } else n = \"@font-face {font-family:\\\"\".concat(this.loadedName, \"\\\";src:\").concat(e, \"}\");\n (_this$_inspectFont2 = this._inspectFont) === null || _this$_inspectFont2 === void 0 ? void 0 : _this$_inspectFont2.call(this, this, e);\n return n;\n }\n getPathGenerator(t, e) {\n if (void 0 !== this.compiledGlyphs[e]) return this.compiledGlyphs[e];\n let n;\n try {\n n = t.get(this.loadedName + \"_path_\" + e);\n } catch (t) {\n if (!this.ignoreErrors) throw t;\n (0, i.warn)(\"getPathGenerator - ignoring character: \\\"\".concat(t, \"\\\".\"));\n return this.compiledGlyphs[e] = function (t, e) {};\n }\n if (this.isEvalSupported && i.FeatureTest.isEvalSupported) {\n const t = [];\n for (const e of n) {\n const n = void 0 !== e.args ? e.args.join(\",\") : \"\";\n t.push(\"c.\", e.cmd, \"(\", n, \");\\n\");\n }\n return this.compiledGlyphs[e] = new Function(\"c\", \"size\", t.join(\"\"));\n }\n return this.compiledGlyphs[e] = function (t, e) {\n for (const i of n) {\n \"scale\" === i.cmd && (i.args = [e, -e]);\n t[i.cmd].apply(t, i.args);\n }\n };\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.NodeStandardFontDataFactory = e.NodeFilterFactory = e.NodeCanvasFactory = e.NodeCMapReaderFactory = void 0;\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(168),\n r = n(1);\n !function checkDOMMatrix() {\n if (!globalThis.DOMMatrix && r.isNodeJS) try {\n globalThis.DOMMatrix = Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\n } catch (t) {\n (0, r.warn)(\"Cannot polyfill `DOMMatrix`, rendering may be broken: \\\"\".concat(t, \"\\\".\"));\n }\n }();\n !function checkPath2D() {\n if (!globalThis.Path2D && r.isNodeJS) try {\n const {\n CanvasRenderingContext2D: t\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\n {\n polyfillPath2D: e\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'path2d-polyfill'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n globalThis.CanvasRenderingContext2D = t;\n e(globalThis);\n } catch (t) {\n (0, r.warn)(\"Cannot polyfill `Path2D`, rendering may be broken: \\\"\".concat(t, \"\\\".\"));\n }\n }();\n const fetchData = function fetchData(t) {\n return new Promise((e, n) => {\n Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, (t, i) => {\n !t && i ? e(new Uint8Array(i)) : n(new Error(t));\n });\n });\n };\n class NodeFilterFactory extends i.BaseFilterFactory {}\n e.NodeFilterFactory = NodeFilterFactory;\n class NodeCanvasFactory extends i.BaseCanvasFactory {\n _createCanvas(t, e) {\n return Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'canvas'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, e);\n }\n }\n e.NodeCanvasFactory = NodeCanvasFactory;\n class NodeCMapReaderFactory extends i.BaseCMapReaderFactory {\n _fetchData(t, e) {\n return fetchData(t).then(t => ({\n cMapData: t,\n compressionType: e\n }));\n }\n }\n e.NodeCMapReaderFactory = NodeCMapReaderFactory;\n class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory {\n _fetchData(t) {\n return fetchData(t);\n }\n }\n e.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.CanvasGraphics = void 0;\n n(2);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(167),\n s = n(173),\n a = n(174);\n const o = 4096,\n l = 16;\n class CachedCanvases {\n constructor(t) {\n this.canvasFactory = t;\n this.cache = Object.create(null);\n }\n getCanvas(t, e, n) {\n let i;\n if (void 0 !== this.cache[t]) {\n i = this.cache[t];\n this.canvasFactory.reset(i, e, n);\n } else {\n i = this.canvasFactory.create(e, n);\n this.cache[t] = i;\n }\n return i;\n }\n delete(t) {\n delete this.cache[t];\n }\n clear() {\n for (const t in this.cache) {\n const e = this.cache[t];\n this.canvasFactory.destroy(e);\n delete this.cache[t];\n }\n }\n }\n function drawImageAtIntegerCoords(t, e, n, i, s, a, o, l, c, h) {\n const [d, u, p, f, g, m] = (0, r.getCurrentTransform)(t);\n if (0 === u && 0 === p) {\n const r = o * d + g,\n b = Math.round(r),\n v = l * f + m,\n y = Math.round(v),\n A = (o + c) * d + g,\n _ = Math.abs(Math.round(A) - b) || 1,\n S = (l + h) * f + m,\n E = Math.abs(Math.round(S) - y) || 1;\n t.setTransform(Math.sign(d), 0, 0, Math.sign(f), b, y);\n t.drawImage(e, n, i, s, a, 0, 0, _, E);\n t.setTransform(d, u, p, f, g, m);\n return [_, E];\n }\n if (0 === d && 0 === f) {\n const r = l * p + g,\n b = Math.round(r),\n v = o * u + m,\n y = Math.round(v),\n A = (l + h) * p + g,\n _ = Math.abs(Math.round(A) - b) || 1,\n S = (o + c) * u + m,\n E = Math.abs(Math.round(S) - y) || 1;\n t.setTransform(0, Math.sign(u), Math.sign(p), 0, b, y);\n t.drawImage(e, n, i, s, a, 0, 0, E, _);\n t.setTransform(d, u, p, f, g, m);\n return [E, _];\n }\n t.drawImage(e, n, i, s, a, o, l, c, h);\n return [Math.hypot(d, u) * c, Math.hypot(p, f) * h];\n }\n class CanvasExtraState {\n constructor(t, e) {\n this.alphaIsShape = !1;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = i.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = i.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = i.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = !1;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, t, e]);\n }\n clone() {\n const t = Object.create(this);\n t.clipBox = this.clipBox.slice();\n return t;\n }\n setCurrentPoint(t, e) {\n this.x = t;\n this.y = e;\n }\n updatePathMinMax(t, e, n) {\n [e, n] = i.Util.applyTransform([e, n], t);\n this.minX = Math.min(this.minX, e);\n this.minY = Math.min(this.minY, n);\n this.maxX = Math.max(this.maxX, e);\n this.maxY = Math.max(this.maxY, n);\n }\n updateRectMinMax(t, e) {\n const n = i.Util.applyTransform(e, t),\n r = i.Util.applyTransform(e.slice(2), t);\n this.minX = Math.min(this.minX, n[0], r[0]);\n this.minY = Math.min(this.minY, n[1], r[1]);\n this.maxX = Math.max(this.maxX, n[0], r[0]);\n this.maxY = Math.max(this.maxY, n[1], r[1]);\n }\n updateScalingPathMinMax(t, e) {\n i.Util.scaleMinMax(t, e);\n this.minX = Math.min(this.minX, e[0]);\n this.maxX = Math.max(this.maxX, e[1]);\n this.minY = Math.min(this.minY, e[2]);\n this.maxY = Math.max(this.maxY, e[3]);\n }\n updateCurvePathMinMax(t, e, n, r, s, a, o, l, c, h) {\n const d = i.Util.bezierBoundingBox(e, n, r, s, a, o, l, c);\n if (h) {\n h[0] = Math.min(h[0], d[0], d[2]);\n h[1] = Math.max(h[1], d[0], d[2]);\n h[2] = Math.min(h[2], d[1], d[3]);\n h[3] = Math.max(h[3], d[1], d[3]);\n } else this.updateRectMinMax(t, d);\n }\n getPathBoundingBox() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = [this.minX, this.minY, this.maxX, this.maxY];\n if (t === s.PathType.STROKE) {\n e || (0, i.unreachable)(\"Stroke bounding box must include transform.\");\n const t = i.Util.singularValueDecompose2dScale(e),\n r = t[0] * this.lineWidth / 2,\n s = t[1] * this.lineWidth / 2;\n n[0] -= r;\n n[1] -= s;\n n[2] += r;\n n[3] += s;\n }\n return n;\n }\n updateClipFromPath() {\n const t = i.Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(t || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === 1 / 0;\n }\n startNewPathAndClipBox(t) {\n this.clipBox = t;\n this.minX = 1 / 0;\n this.minY = 1 / 0;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return i.Util.intersect(this.clipBox, this.getPathBoundingBox(t, e));\n }\n }\n function putBinaryImageData(t, e) {\n if (\"undefined\" != typeof ImageData && e instanceof ImageData) {\n t.putImageData(e, 0, 0);\n return;\n }\n const n = e.height,\n r = e.width,\n s = n % l,\n a = (n - s) / l,\n o = 0 === s ? a : a + 1,\n c = t.createImageData(r, l);\n let h,\n d = 0;\n const u = e.data,\n p = c.data;\n let f, g, m, b;\n if (e.kind === i.ImageKind.GRAYSCALE_1BPP) {\n const e = u.byteLength,\n n = new Uint32Array(p.buffer, 0, p.byteLength >> 2),\n b = n.length,\n v = r + 7 >> 3,\n y = 4294967295,\n A = i.FeatureTest.isLittleEndian ? 4278190080 : 255;\n for (f = 0; f < o; f++) {\n m = f < a ? l : s;\n h = 0;\n for (g = 0; g < m; g++) {\n const t = e - d;\n let i = 0;\n const s = t > v ? r : 8 * t - 7,\n a = -8 & s;\n let o = 0,\n l = 0;\n for (; i < a; i += 8) {\n l = u[d++];\n n[h++] = 128 & l ? y : A;\n n[h++] = 64 & l ? y : A;\n n[h++] = 32 & l ? y : A;\n n[h++] = 16 & l ? y : A;\n n[h++] = 8 & l ? y : A;\n n[h++] = 4 & l ? y : A;\n n[h++] = 2 & l ? y : A;\n n[h++] = 1 & l ? y : A;\n }\n for (; i < s; i++) {\n if (0 === o) {\n l = u[d++];\n o = 128;\n }\n n[h++] = l & o ? y : A;\n o >>= 1;\n }\n }\n for (; h < b;) n[h++] = 0;\n t.putImageData(c, 0, f * l);\n }\n } else if (e.kind === i.ImageKind.RGBA_32BPP) {\n g = 0;\n b = r * l * 4;\n for (f = 0; f < a; f++) {\n p.set(u.subarray(d, d + b));\n d += b;\n t.putImageData(c, 0, g);\n g += l;\n }\n if (f < o) {\n b = r * s * 4;\n p.set(u.subarray(d, d + b));\n t.putImageData(c, 0, g);\n }\n } else {\n if (e.kind !== i.ImageKind.RGB_24BPP) throw new Error(\"bad image kind: \".concat(e.kind));\n m = l;\n b = r * m;\n for (f = 0; f < o; f++) {\n if (f >= a) {\n m = s;\n b = r * m;\n }\n h = 0;\n for (g = b; g--;) {\n p[h++] = u[d++];\n p[h++] = u[d++];\n p[h++] = u[d++];\n p[h++] = 255;\n }\n t.putImageData(c, 0, f * l);\n }\n }\n }\n function putBinaryImageMask(t, e) {\n if (e.bitmap) {\n t.drawImage(e.bitmap, 0, 0);\n return;\n }\n const n = e.height,\n i = e.width,\n r = n % l,\n s = (n - r) / l,\n o = 0 === r ? s : s + 1,\n c = t.createImageData(i, l);\n let h = 0;\n const d = e.data,\n u = c.data;\n for (let e = 0; e < o; e++) {\n const n = e < s ? l : r;\n ({\n srcPos: h\n } = (0, a.convertBlackAndWhiteToRGBA)({\n src: d,\n srcPos: h,\n dest: u,\n width: i,\n height: n,\n nonBlackColor: 0\n }));\n t.putImageData(c, 0, e * l);\n }\n }\n function copyCtxState(t, e) {\n const n = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const i of n) void 0 !== t[i] && (e[i] = t[i]);\n if (void 0 !== t.setLineDash) {\n e.setLineDash(t.getLineDash());\n e.lineDashOffset = t.lineDashOffset;\n }\n }\n function resetCtxToDefault(t) {\n t.strokeStyle = t.fillStyle = \"#000000\";\n t.fillRule = \"nonzero\";\n t.globalAlpha = 1;\n t.lineWidth = 1;\n t.lineCap = \"butt\";\n t.lineJoin = \"miter\";\n t.miterLimit = 10;\n t.globalCompositeOperation = \"source-over\";\n t.font = \"10px sans-serif\";\n if (void 0 !== t.setLineDash) {\n t.setLineDash([]);\n t.lineDashOffset = 0;\n }\n if (!i.isNodeJS) {\n const {\n filter: e\n } = t;\n \"none\" !== e && \"\" !== e && (t.filter = \"none\");\n }\n }\n function composeSMaskBackdrop(t, e, n, i) {\n const r = t.length;\n for (let s = 3; s < r; s += 4) {\n const r = t[s];\n if (0 === r) {\n t[s - 3] = e;\n t[s - 2] = n;\n t[s - 1] = i;\n } else if (r < 255) {\n const a = 255 - r;\n t[s - 3] = t[s - 3] * r + e * a >> 8;\n t[s - 2] = t[s - 2] * r + n * a >> 8;\n t[s - 1] = t[s - 1] * r + i * a >> 8;\n }\n }\n }\n function composeSMaskAlpha(t, e, n) {\n const i = t.length;\n for (let r = 3; r < i; r += 4) {\n const i = n ? n[t[r]] : t[r];\n e[r] = e[r] * i * .00392156862745098 | 0;\n }\n }\n function composeSMaskLuminosity(t, e, n) {\n const i = t.length;\n for (let r = 3; r < i; r += 4) {\n const i = 77 * t[r - 3] + 152 * t[r - 2] + 28 * t[r - 1];\n e[r] = n ? e[r] * n[i >> 8] >> 8 : e[r] * i >> 16;\n }\n }\n function composeSMask(t, e, n, i) {\n const r = i[0],\n s = i[1],\n a = i[2] - r,\n o = i[3] - s;\n if (0 !== a && 0 !== o) {\n !function genericComposeSMask(t, e, n, i, r, s, a, o, l, c, h) {\n const d = !!s,\n u = d ? s[0] : 0,\n p = d ? s[1] : 0,\n f = d ? s[2] : 0,\n g = \"Luminosity\" === r ? composeSMaskLuminosity : composeSMaskAlpha,\n m = Math.min(i, Math.ceil(1048576 / n));\n for (let r = 0; r < i; r += m) {\n const s = Math.min(m, i - r),\n b = t.getImageData(o - c, r + (l - h), n, s),\n v = e.getImageData(o, r + l, n, s);\n d && composeSMaskBackdrop(b.data, u, p, f);\n g(b.data, v.data, a);\n e.putImageData(v, o, r + l);\n }\n }(e.context, n, a, o, e.subtype, e.backdrop, e.transferMap, r, s, e.offsetX, e.offsetY);\n t.save();\n t.globalAlpha = 1;\n t.globalCompositeOperation = \"source-over\";\n t.setTransform(1, 0, 0, 1, 0, 0);\n t.drawImage(n.canvas, 0, 0);\n t.restore();\n }\n }\n function getImageSmoothingEnabled(t, e) {\n const n = i.Util.singularValueDecompose2dScale(t);\n n[0] = Math.fround(n[0]);\n n[1] = Math.fround(n[1]);\n const s = Math.fround((globalThis.devicePixelRatio || 1) * r.PixelsPerInch.PDF_TO_CSS_UNITS);\n return void 0 !== e ? e : n[0] <= s || n[1] <= s;\n }\n const c = [\"butt\", \"round\", \"square\"],\n h = [\"miter\", \"round\", \"bevel\"],\n d = {},\n u = {};\n var _Gt = /*#__PURE__*/new WeakSet();\n var _Vt = /*#__PURE__*/new WeakSet();\n class CanvasGraphics {\n constructor(_t10, _e9, n, i, r, s, a, o) {\n _classPrivateMethodInitSpec(this, _Vt);\n _classPrivateMethodInitSpec(this, _Gt);\n let {\n optionalContentConfig: l,\n markedContentStack: c = null\n } = s;\n this.ctx = _t10;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = !1;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = _e9;\n this.objs = n;\n this.canvasFactory = i;\n this.filterFactory = r;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = !0;\n this.markedContentStack = c || [];\n this.optionalContentConfig = l;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = a;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = o;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return \"string\" == typeof t ? t.startsWith(\"g_\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\n }\n beginDrawing(t) {\n let {\n transform: e,\n viewport: n,\n transparency: i = !1,\n background: s = null\n } = t;\n const a = this.ctx.canvas.width,\n o = this.ctx.canvas.height,\n l = this.ctx.fillStyle;\n this.ctx.fillStyle = s || \"#ffffff\";\n this.ctx.fillRect(0, 0, a, o);\n this.ctx.fillStyle = l;\n if (i) {\n const t = this.cachedCanvases.getCanvas(\"transparent\", a, o);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = t.canvas;\n this.ctx = t.context;\n this.ctx.save();\n this.ctx.transform(...(0, r.getCurrentTransform)(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (e) {\n this.ctx.transform(...e);\n this.outputScaleX = e[0];\n this.outputScaleY = e[0];\n }\n this.ctx.transform(...n.transform);\n this.viewportScale = n.scale;\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\n }\n executeOperatorList(t, e, n, r) {\n const s = t.argsArray,\n a = t.fnArray;\n let o = e || 0;\n const l = s.length;\n if (l === o) return o;\n const c = l - o > 10 && \"function\" == typeof n,\n h = c ? Date.now() + 15 : 0;\n let d = 0;\n const u = this.commonObjs,\n p = this.objs;\n let f;\n for (;;) {\n if (void 0 !== r && o === r.nextBreakPoint) {\n r.breakIt(o, n);\n return o;\n }\n f = a[o];\n if (f !== i.OPS.dependency) this[f].apply(this, s[o]);else for (const t of s[o]) {\n const e = t.startsWith(\"g_\") ? u : p;\n if (!e.has(t)) {\n e.get(t, n);\n return o;\n }\n }\n o++;\n if (o === l) return o;\n if (c && ++d > 10) {\n if (Date.now() > h) {\n n();\n return o;\n }\n d = 0;\n }\n }\n }\n endDrawing() {\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const t of this._cachedBitmapsMap.values()) {\n for (const e of t.values()) \"undefined\" != typeof HTMLCanvasElement && e instanceof HTMLCanvasElement && (e.width = e.height = 0);\n t.clear();\n }\n this._cachedBitmapsMap.clear();\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\n }\n _scaleImage(t, e) {\n const n = t.width,\n i = t.height;\n let r,\n s,\n a = Math.max(Math.hypot(e[0], e[1]), 1),\n o = Math.max(Math.hypot(e[2], e[3]), 1),\n l = n,\n c = i,\n h = \"prescale1\";\n for (; a > 2 && l > 1 || o > 2 && c > 1;) {\n let e = l,\n n = c;\n if (a > 2 && l > 1) {\n e = l >= 16384 ? Math.floor(l / 2) - 1 || 1 : Math.ceil(l / 2);\n a /= l / e;\n }\n if (o > 2 && c > 1) {\n n = c >= 16384 ? Math.floor(c / 2) - 1 || 1 : Math.ceil(c) / 2;\n o /= c / n;\n }\n r = this.cachedCanvases.getCanvas(h, e, n);\n s = r.context;\n s.clearRect(0, 0, e, n);\n s.drawImage(t, 0, 0, l, c, 0, 0, e, n);\n t = r.canvas;\n l = e;\n c = n;\n h = \"prescale1\" === h ? \"prescale2\" : \"prescale1\";\n }\n return {\n img: t,\n paintWidth: l,\n paintHeight: c\n };\n }\n _createMaskCanvas(t) {\n const e = this.ctx,\n {\n width: n,\n height: a\n } = t,\n o = this.current.fillColor,\n l = this.current.patternFill,\n c = (0, r.getCurrentTransform)(e);\n let h, d, u, p;\n if ((t.bitmap || t.data) && t.count > 1) {\n const e = t.bitmap || t.data.buffer;\n d = JSON.stringify(l ? c : [c.slice(0, 4), o]);\n h = this._cachedBitmapsMap.get(e);\n if (!h) {\n h = new Map();\n this._cachedBitmapsMap.set(e, h);\n }\n const n = h.get(d);\n if (n && !l) {\n return {\n canvas: n,\n offsetX: Math.round(Math.min(c[0], c[2]) + c[4]),\n offsetY: Math.round(Math.min(c[1], c[3]) + c[5])\n };\n }\n u = n;\n }\n if (!u) {\n p = this.cachedCanvases.getCanvas(\"maskCanvas\", n, a);\n putBinaryImageMask(p.context, t);\n }\n let f = i.Util.transform(c, [1 / n, 0, 0, -1 / a, 0, 0]);\n f = i.Util.transform(f, [1, 0, 0, 1, 0, -a]);\n const g = i.Util.applyTransform([0, 0], f),\n m = i.Util.applyTransform([n, a], f),\n b = i.Util.normalizeRect([g[0], g[1], m[0], m[1]]),\n v = Math.round(b[2] - b[0]) || 1,\n y = Math.round(b[3] - b[1]) || 1,\n A = this.cachedCanvases.getCanvas(\"fillCanvas\", v, y),\n _ = A.context,\n S = Math.min(g[0], m[0]),\n E = Math.min(g[1], m[1]);\n _.translate(-S, -E);\n _.transform(...f);\n if (!u) {\n u = this._scaleImage(p.canvas, (0, r.getCurrentTransformInverse)(_));\n u = u.img;\n h && l && h.set(d, u);\n }\n _.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(_), t.interpolate);\n drawImageAtIntegerCoords(_, u, 0, 0, u.width, u.height, 0, 0, n, a);\n _.globalCompositeOperation = \"source-in\";\n const x = i.Util.transform((0, r.getCurrentTransformInverse)(_), [1, 0, 0, 1, -S, -E]);\n _.fillStyle = l ? o.getPattern(e, this, x, s.PathType.FILL) : o;\n _.fillRect(0, 0, n, a);\n if (h && !l) {\n this.cachedCanvases.delete(\"fillCanvas\");\n h.set(d, A.canvas);\n }\n return {\n canvas: A.canvas,\n offsetX: Math.round(S),\n offsetY: Math.round(E)\n };\n }\n setLineWidth(t) {\n t !== this.current.lineWidth && (this._cachedScaleForStroking[0] = -1);\n this.current.lineWidth = t;\n this.ctx.lineWidth = t;\n }\n setLineCap(t) {\n this.ctx.lineCap = c[t];\n }\n setLineJoin(t) {\n this.ctx.lineJoin = h[t];\n }\n setMiterLimit(t) {\n this.ctx.miterLimit = t;\n }\n setDash(t, e) {\n const n = this.ctx;\n if (void 0 !== n.setLineDash) {\n n.setLineDash(t);\n n.lineDashOffset = e;\n }\n }\n setRenderingIntent(t) {}\n setFlatness(t) {}\n setGState(t) {\n for (const [e, n] of t) switch (e) {\n case \"LW\":\n this.setLineWidth(n);\n break;\n case \"LC\":\n this.setLineCap(n);\n break;\n case \"LJ\":\n this.setLineJoin(n);\n break;\n case \"ML\":\n this.setMiterLimit(n);\n break;\n case \"D\":\n this.setDash(n[0], n[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(n);\n break;\n case \"FL\":\n this.setFlatness(n);\n break;\n case \"Font\":\n this.setFont(n[0], n[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = n;\n break;\n case \"ca\":\n this.current.fillAlpha = n;\n this.ctx.globalAlpha = n;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = n;\n break;\n case \"SMask\":\n this.current.activeSMask = n ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(n);\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const t = this.inSMaskMode;\n this.current.activeSMask && !t ? this.beginSMaskMode() : !this.current.activeSMask && t && this.endSMaskMode();\n }\n beginSMaskMode() {\n if (this.inSMaskMode) throw new Error(\"beginSMaskMode called while already in smask mode\");\n const t = this.ctx.canvas.width,\n e = this.ctx.canvas.height,\n n = \"smaskGroupAt\" + this.groupLevel,\n i = this.cachedCanvases.getCanvas(n, t, e);\n this.suspendedCtx = this.ctx;\n this.ctx = i.context;\n const s = this.ctx;\n s.setTransform(...(0, r.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, s);\n !function mirrorContextOperations(t, e) {\n if (t._removeMirroring) throw new Error(\"Context is already forwarding operations.\");\n t.__originalSave = t.save;\n t.__originalRestore = t.restore;\n t.__originalRotate = t.rotate;\n t.__originalScale = t.scale;\n t.__originalTranslate = t.translate;\n t.__originalTransform = t.transform;\n t.__originalSetTransform = t.setTransform;\n t.__originalResetTransform = t.resetTransform;\n t.__originalClip = t.clip;\n t.__originalMoveTo = t.moveTo;\n t.__originalLineTo = t.lineTo;\n t.__originalBezierCurveTo = t.bezierCurveTo;\n t.__originalRect = t.rect;\n t.__originalClosePath = t.closePath;\n t.__originalBeginPath = t.beginPath;\n t._removeMirroring = () => {\n t.save = t.__originalSave;\n t.restore = t.__originalRestore;\n t.rotate = t.__originalRotate;\n t.scale = t.__originalScale;\n t.translate = t.__originalTranslate;\n t.transform = t.__originalTransform;\n t.setTransform = t.__originalSetTransform;\n t.resetTransform = t.__originalResetTransform;\n t.clip = t.__originalClip;\n t.moveTo = t.__originalMoveTo;\n t.lineTo = t.__originalLineTo;\n t.bezierCurveTo = t.__originalBezierCurveTo;\n t.rect = t.__originalRect;\n t.closePath = t.__originalClosePath;\n t.beginPath = t.__originalBeginPath;\n delete t._removeMirroring;\n };\n t.save = function ctxSave() {\n e.save();\n this.__originalSave();\n };\n t.restore = function ctxRestore() {\n e.restore();\n this.__originalRestore();\n };\n t.translate = function ctxTranslate(t, n) {\n e.translate(t, n);\n this.__originalTranslate(t, n);\n };\n t.scale = function ctxScale(t, n) {\n e.scale(t, n);\n this.__originalScale(t, n);\n };\n t.transform = function ctxTransform(t, n, i, r, s, a) {\n e.transform(t, n, i, r, s, a);\n this.__originalTransform(t, n, i, r, s, a);\n };\n t.setTransform = function ctxSetTransform(t, n, i, r, s, a) {\n e.setTransform(t, n, i, r, s, a);\n this.__originalSetTransform(t, n, i, r, s, a);\n };\n t.resetTransform = function ctxResetTransform() {\n e.resetTransform();\n this.__originalResetTransform();\n };\n t.rotate = function ctxRotate(t) {\n e.rotate(t);\n this.__originalRotate(t);\n };\n t.clip = function ctxRotate(t) {\n e.clip(t);\n this.__originalClip(t);\n };\n t.moveTo = function (t, n) {\n e.moveTo(t, n);\n this.__originalMoveTo(t, n);\n };\n t.lineTo = function (t, n) {\n e.lineTo(t, n);\n this.__originalLineTo(t, n);\n };\n t.bezierCurveTo = function (t, n, i, r, s, a) {\n e.bezierCurveTo(t, n, i, r, s, a);\n this.__originalBezierCurveTo(t, n, i, r, s, a);\n };\n t.rect = function (t, n, i, r) {\n e.rect(t, n, i, r);\n this.__originalRect(t, n, i, r);\n };\n t.closePath = function () {\n e.closePath();\n this.__originalClosePath();\n };\n t.beginPath = function () {\n e.beginPath();\n this.__originalBeginPath();\n };\n }(s, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) throw new Error(\"endSMaskMode called while not in smask mode\");\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(t) {\n if (!this.current.activeSMask) return;\n if (t) {\n t[0] = Math.floor(t[0]);\n t[1] = Math.floor(t[1]);\n t[2] = Math.ceil(t[2]);\n t[3] = Math.ceil(t[3]);\n } else t = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n const e = this.current.activeSMask;\n composeSMask(this.suspendedCtx, e, this.ctx, t);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else this.ctx.save();\n const t = this.current;\n this.stateStack.push(t);\n this.current = t.clone();\n }\n restore() {\n 0 === this.stateStack.length && this.inSMaskMode && this.endSMaskMode();\n if (0 !== this.stateStack.length) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else this.ctx.restore();\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(t, e, n, i, r, s) {\n this.ctx.transform(t, e, n, i, r, s);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(t, e, n) {\n const s = this.ctx,\n a = this.current;\n let o,\n l,\n c = a.x,\n h = a.y;\n const d = (0, r.getCurrentTransform)(s),\n u = 0 === d[0] && 0 === d[3] || 0 === d[1] && 0 === d[2],\n p = u ? n.slice(0) : null;\n for (let n = 0, r = 0, f = t.length; n < f; n++) switch (0 | t[n]) {\n case i.OPS.rectangle:\n c = e[r++];\n h = e[r++];\n const t = e[r++],\n n = e[r++],\n f = c + t,\n g = h + n;\n s.moveTo(c, h);\n if (0 === t || 0 === n) s.lineTo(f, g);else {\n s.lineTo(f, h);\n s.lineTo(f, g);\n s.lineTo(c, g);\n }\n u || a.updateRectMinMax(d, [c, h, f, g]);\n s.closePath();\n break;\n case i.OPS.moveTo:\n c = e[r++];\n h = e[r++];\n s.moveTo(c, h);\n u || a.updatePathMinMax(d, c, h);\n break;\n case i.OPS.lineTo:\n c = e[r++];\n h = e[r++];\n s.lineTo(c, h);\n u || a.updatePathMinMax(d, c, h);\n break;\n case i.OPS.curveTo:\n o = c;\n l = h;\n c = e[r + 4];\n h = e[r + 5];\n s.bezierCurveTo(e[r], e[r + 1], e[r + 2], e[r + 3], c, h);\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], e[r + 2], e[r + 3], c, h, p);\n r += 6;\n break;\n case i.OPS.curveTo2:\n o = c;\n l = h;\n s.bezierCurveTo(c, h, e[r], e[r + 1], e[r + 2], e[r + 3]);\n a.updateCurvePathMinMax(d, o, l, c, h, e[r], e[r + 1], e[r + 2], e[r + 3], p);\n c = e[r + 2];\n h = e[r + 3];\n r += 4;\n break;\n case i.OPS.curveTo3:\n o = c;\n l = h;\n c = e[r + 2];\n h = e[r + 3];\n s.bezierCurveTo(e[r], e[r + 1], c, h, c, h);\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], c, h, c, h, p);\n r += 4;\n break;\n case i.OPS.closePath:\n s.closePath();\n }\n u && a.updateScalingPathMinMax(d, p);\n a.setCurrentPoint(c, h);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n const e = this.ctx,\n n = this.current.strokeColor;\n e.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) if (\"object\" == typeof n && n !== null && n !== void 0 && n.getPattern) {\n e.save();\n e.strokeStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.STROKE);\n this.rescaleAndStroke(!1);\n e.restore();\n } else this.rescaleAndStroke(!0);\n t && this.consumePath(this.current.getClippedPathBoundingBox());\n e.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n const e = this.ctx,\n n = this.current.fillColor;\n let i = !1;\n if (this.current.patternFill) {\n e.save();\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL);\n i = !0;\n }\n const a = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && null !== a) if (this.pendingEOFill) {\n e.fill(\"evenodd\");\n this.pendingEOFill = !1;\n } else e.fill();\n i && e.restore();\n t && this.consumePath(a);\n }\n eoFill() {\n this.pendingEOFill = !0;\n this.fill();\n }\n fillStroke() {\n this.fill(!1);\n this.stroke(!1);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = !0;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = !0;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = d;\n }\n eoClip() {\n this.pendingClip = u;\n }\n beginText() {\n this.current.textMatrix = i.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const t = this.pendingTextPaths,\n e = this.ctx;\n if (void 0 !== t) {\n e.save();\n e.beginPath();\n for (const n of t) {\n e.setTransform(...n.transform);\n e.translate(n.x, n.y);\n n.addToPath(e, n.fontSize);\n }\n e.restore();\n e.clip();\n e.beginPath();\n delete this.pendingTextPaths;\n } else e.beginPath();\n }\n setCharSpacing(t) {\n this.current.charSpacing = t;\n }\n setWordSpacing(t) {\n this.current.wordSpacing = t;\n }\n setHScale(t) {\n this.current.textHScale = t / 100;\n }\n setLeading(t) {\n this.current.leading = -t;\n }\n setFont(t, e) {\n var _n$systemFontInfo;\n const n = this.commonObjs.get(t),\n r = this.current;\n if (!n) throw new Error(\"Can't find font for \".concat(t));\n r.fontMatrix = n.fontMatrix || i.FONT_IDENTITY_MATRIX;\n 0 !== r.fontMatrix[0] && 0 !== r.fontMatrix[3] || (0, i.warn)(\"Invalid font matrix for font \" + t);\n if (e < 0) {\n e = -e;\n r.fontDirection = -1;\n } else r.fontDirection = 1;\n this.current.font = n;\n this.current.fontSize = e;\n if (n.isType3Font) return;\n const s = n.loadedName || \"sans-serif\",\n a = ((_n$systemFontInfo = n.systemFontInfo) === null || _n$systemFontInfo === void 0 ? void 0 : _n$systemFontInfo.css) || \"\\\"\".concat(s, \"\\\", \").concat(n.fallbackName);\n let o = \"normal\";\n n.black ? o = \"900\" : n.bold && (o = \"bold\");\n const l = n.italic ? \"italic\" : \"normal\";\n let c = e;\n e < 16 ? c = 16 : e > 100 && (c = 100);\n this.current.fontSizeScale = e / c;\n this.ctx.font = \"\".concat(l, \" \").concat(o, \" \").concat(c, \"px \").concat(a);\n }\n setTextRenderingMode(t) {\n this.current.textRenderingMode = t;\n }\n setTextRise(t) {\n this.current.textRise = t;\n }\n moveText(t, e) {\n this.current.x = this.current.lineX += t;\n this.current.y = this.current.lineY += e;\n }\n setLeadingMoveText(t, e) {\n this.setLeading(-e);\n this.moveText(t, e);\n }\n setTextMatrix(t, e, n, i, r, s) {\n this.current.textMatrix = [t, e, n, i, r, s];\n this.current.textMatrixScale = Math.hypot(t, e);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(t, e, n, s) {\n const a = this.ctx,\n o = this.current,\n l = o.font,\n c = o.textRenderingMode,\n h = o.fontSize / o.fontSizeScale,\n d = c & i.TextRenderingMode.FILL_STROKE_MASK,\n u = !!(c & i.TextRenderingMode.ADD_TO_PATH_FLAG),\n p = o.patternFill && !l.missingFile;\n let f;\n (l.disableFontFace || u || p) && (f = l.getPathGenerator(this.commonObjs, t));\n if (l.disableFontFace || p) {\n a.save();\n a.translate(e, n);\n a.beginPath();\n f(a, h);\n s && a.setTransform(...s);\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fill();\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.stroke();\n a.restore();\n } else {\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fillText(t, e, n);\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.strokeText(t, e, n);\n }\n if (u) {\n (this.pendingTextPaths || (this.pendingTextPaths = [])).push({\n transform: (0, r.getCurrentTransform)(a),\n x: e,\n y: n,\n fontSize: h,\n addToPath: f\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: t\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n t.scale(1.5, 1);\n t.fillText(\"I\", 0, 10);\n const e = t.getImageData(0, 0, 10, 10).data;\n let n = !1;\n for (let t = 3; t < e.length; t += 4) if (e[t] > 0 && e[t] < 255) {\n n = !0;\n break;\n }\n return (0, i.shadow)(this, \"isFontSubpixelAAEnabled\", n);\n }\n showText(t) {\n const e = this.current,\n n = e.font;\n if (n.isType3Font) return this.showType3Text(t);\n const a = e.fontSize;\n if (0 === a) return;\n const o = this.ctx,\n l = e.fontSizeScale,\n c = e.charSpacing,\n h = e.wordSpacing,\n d = e.fontDirection,\n u = e.textHScale * d,\n p = t.length,\n f = n.vertical,\n g = f ? 1 : -1,\n m = n.defaultVMetrics,\n b = a * e.fontMatrix[0],\n v = e.textRenderingMode === i.TextRenderingMode.FILL && !n.disableFontFace && !e.patternFill;\n o.save();\n o.transform(...e.textMatrix);\n o.translate(e.x, e.y + e.textRise);\n d > 0 ? o.scale(u, -1) : o.scale(u, 1);\n let y;\n if (e.patternFill) {\n o.save();\n const t = e.fillColor.getPattern(o, this, (0, r.getCurrentTransformInverse)(o), s.PathType.FILL);\n y = (0, r.getCurrentTransform)(o);\n o.restore();\n o.fillStyle = t;\n }\n let A = e.lineWidth;\n const _ = e.textMatrixScale;\n if (0 === _ || 0 === A) {\n const t = e.textRenderingMode & i.TextRenderingMode.FILL_STROKE_MASK;\n t !== i.TextRenderingMode.STROKE && t !== i.TextRenderingMode.FILL_STROKE || (A = this.getSinglePixelWidth());\n } else A /= _;\n if (1 !== l) {\n o.scale(l, l);\n A /= l;\n }\n o.lineWidth = A;\n if (n.isInvalidPDFjsFont) {\n const n = [];\n let i = 0;\n for (const e of t) {\n n.push(e.unicode);\n i += e.width;\n }\n o.fillText(n.join(\"\"), 0, 0);\n e.x += i * b * u;\n o.restore();\n this.compose();\n return;\n }\n let S,\n E = 0;\n for (S = 0; S < p; ++S) {\n const e = t[S];\n if (\"number\" == typeof e) {\n E += g * e * a / 1e3;\n continue;\n }\n let i = !1;\n const r = (e.isSpace ? h : 0) + c,\n s = e.fontChar,\n u = e.accent;\n let p,\n A,\n _ = e.width;\n if (f) {\n const t = e.vmetric || m,\n n = -(e.vmetric ? t[1] : .5 * _) * b,\n i = t[2] * b;\n _ = t ? -t[0] : _;\n p = n / l;\n A = (E + i) / l;\n } else {\n p = E / l;\n A = 0;\n }\n if (n.remeasure && _ > 0) {\n const t = 1e3 * o.measureText(s).width / a * l;\n if (_ < t && this.isFontSubpixelAAEnabled) {\n const e = _ / t;\n i = !0;\n o.save();\n o.scale(e, 1);\n p /= e;\n } else _ !== t && (p += (_ - t) / 2e3 * a / l);\n }\n if (this.contentVisible && (e.isInFont || n.missingFile)) if (v && !u) o.fillText(s, p, A);else {\n this.paintChar(s, p, A, y);\n if (u) {\n const t = p + a * u.offset.x / l,\n e = A - a * u.offset.y / l;\n this.paintChar(u.fontChar, t, e, y);\n }\n }\n E += f ? _ * b - r * d : _ * b + r * d;\n i && o.restore();\n }\n f ? e.y -= E : e.x += E * u;\n o.restore();\n this.compose();\n }\n showType3Text(t) {\n const e = this.ctx,\n n = this.current,\n r = n.font,\n s = n.fontSize,\n a = n.fontDirection,\n o = r.vertical ? 1 : -1,\n l = n.charSpacing,\n c = n.wordSpacing,\n h = n.textHScale * a,\n d = n.fontMatrix || i.FONT_IDENTITY_MATRIX,\n u = t.length;\n let p, f, g, m;\n if (!(n.textRenderingMode === i.TextRenderingMode.INVISIBLE) && 0 !== s) {\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n e.save();\n e.transform(...n.textMatrix);\n e.translate(n.x, n.y);\n e.scale(h, a);\n for (p = 0; p < u; ++p) {\n f = t[p];\n if (\"number\" == typeof f) {\n m = o * f * s / 1e3;\n this.ctx.translate(m, 0);\n n.x += m * h;\n continue;\n }\n const a = (f.isSpace ? c : 0) + l,\n u = r.charProcOperatorList[f.operatorListId];\n if (!u) {\n (0, i.warn)(\"Type3 character \\\"\".concat(f.operatorListId, \"\\\" is not available.\"));\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = f;\n this.save();\n e.scale(s, s);\n e.transform(...d);\n this.executeOperatorList(u);\n this.restore();\n }\n g = i.Util.applyTransform([f.width, 0], d)[0] * s + a;\n e.translate(g, 0);\n n.x += g * h;\n }\n e.restore();\n this.processingType3 = null;\n }\n }\n setCharWidth(t, e) {}\n setCharWidthAndBounds(t, e, n, i, r, s) {\n this.ctx.rect(n, i, r - n, s - i);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(t) {\n let e;\n if (\"TilingPattern\" === t[0]) {\n const n = t[1],\n i = this.baseTransform || (0, r.getCurrentTransform)(this.ctx),\n a = {\n createCanvasGraphics: t => new CanvasGraphics(t, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n e = new s.TilingPattern(t, n, this.ctx, a, i);\n } else e = this._getPattern(t[1], t[2]);\n return e;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = !0;\n }\n setStrokeRGBColor(t, e, n) {\n const r = i.Util.makeHexColor(t, e, n);\n this.ctx.strokeStyle = r;\n this.current.strokeColor = r;\n }\n setFillRGBColor(t, e, n) {\n const r = i.Util.makeHexColor(t, e, n);\n this.ctx.fillStyle = r;\n this.current.fillColor = r;\n this.current.patternFill = !1;\n }\n _getPattern(t) {\n let e,\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (this.cachedPatterns.has(t)) e = this.cachedPatterns.get(t);else {\n e = (0, s.getShadingPattern)(this.getObject(t));\n this.cachedPatterns.set(t, e);\n }\n n && (e.matrix = n);\n return e;\n }\n shadingFill(t) {\n if (!this.contentVisible) return;\n const e = this.ctx;\n this.save();\n const n = this._getPattern(t);\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.SHADING);\n const a = (0, r.getCurrentTransformInverse)(e);\n if (a) {\n const {\n width: t,\n height: n\n } = e.canvas,\n [r, s, o, l] = i.Util.getAxialAlignedBoundingBox([0, 0, t, n], a);\n this.ctx.fillRect(r, s, o - r, l - s);\n } else this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n (0, i.unreachable)(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n (0, i.unreachable)(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(t, e) {\n if (this.contentVisible) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n Array.isArray(t) && 6 === t.length && this.transform(...t);\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\n if (e) {\n const t = e[2] - e[0],\n n = e[3] - e[1];\n this.ctx.rect(e[0], e[1], t, n);\n this.current.updateRectMinMax((0, r.getCurrentTransform)(this.ctx), e);\n this.clip();\n this.endPath();\n }\n }\n }\n paintFormXObjectEnd() {\n if (this.contentVisible) {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n }\n beginGroup(t) {\n if (!this.contentVisible) return;\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const e = this.ctx;\n t.isolated || (0, i.info)(\"TODO: Support non-isolated groups.\");\n t.knockout && (0, i.warn)(\"Knockout groups not supported.\");\n const n = (0, r.getCurrentTransform)(e);\n t.matrix && e.transform(...t.matrix);\n if (!t.bbox) throw new Error(\"Bounding box is required.\");\n let s = i.Util.getAxialAlignedBoundingBox(t.bbox, (0, r.getCurrentTransform)(e));\n const a = [0, 0, e.canvas.width, e.canvas.height];\n s = i.Util.intersect(s, a) || [0, 0, 0, 0];\n const l = Math.floor(s[0]),\n c = Math.floor(s[1]);\n let h = Math.max(Math.ceil(s[2]) - l, 1),\n d = Math.max(Math.ceil(s[3]) - c, 1),\n u = 1,\n p = 1;\n if (h > o) {\n u = h / o;\n h = o;\n }\n if (d > o) {\n p = d / o;\n d = o;\n }\n this.current.startNewPathAndClipBox([0, 0, h, d]);\n let f = \"groupAt\" + this.groupLevel;\n t.smask && (f += \"_smask_\" + this.smaskCounter++ % 2);\n const g = this.cachedCanvases.getCanvas(f, h, d),\n m = g.context;\n m.scale(1 / u, 1 / p);\n m.translate(-l, -c);\n m.transform(...n);\n if (t.smask) this.smaskStack.push({\n canvas: g.canvas,\n context: m,\n offsetX: l,\n offsetY: c,\n scaleX: u,\n scaleY: p,\n subtype: t.smask.subtype,\n backdrop: t.smask.backdrop,\n transferMap: t.smask.transferMap || null,\n startTransformInverse: null\n });else {\n e.setTransform(1, 0, 0, 1, 0, 0);\n e.translate(l, c);\n e.scale(u, p);\n e.save();\n }\n copyCtxState(e, m);\n this.ctx = m;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(e);\n this.groupLevel++;\n }\n endGroup(t) {\n if (!this.contentVisible) return;\n this.groupLevel--;\n const e = this.ctx,\n n = this.groupStack.pop();\n this.ctx = n;\n this.ctx.imageSmoothingEnabled = !1;\n if (t.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const t = (0, r.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...t);\n const n = i.Util.getAxialAlignedBoundingBox([0, 0, e.canvas.width, e.canvas.height], t);\n this.ctx.drawImage(e.canvas, 0, 0);\n this.ctx.restore();\n this.compose(n);\n }\n }\n beginAnnotation(t, e, n, s, a) {\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n this.baseTransform && this.ctx.setTransform(...this.baseTransform);\n if (Array.isArray(e) && 4 === e.length) {\n const s = e[2] - e[0],\n o = e[3] - e[1];\n if (a && this.annotationCanvasMap) {\n (n = n.slice())[4] -= e[0];\n n[5] -= e[1];\n (e = e.slice())[0] = e[1] = 0;\n e[2] = s;\n e[3] = o;\n const [a, l] = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(this.ctx)),\n {\n viewportScale: c\n } = this,\n h = Math.ceil(s * this.outputScaleX * c),\n d = Math.ceil(o * this.outputScaleY * c);\n this.annotationCanvas = this.canvasFactory.create(h, d);\n const {\n canvas: u,\n context: p\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(t, u);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = p;\n this.ctx.save();\n this.ctx.setTransform(a, 0, 0, -l, 0, o * l);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(e[0], e[1], s, o);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...n);\n this.transform(...s);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(t) {\n if (!this.contentVisible) return;\n const e = t.count;\n (t = this.getObject(t.data, t)).count = e;\n const n = this.ctx,\n i = this.processingType3;\n if (i) {\n void 0 === i.compiled && (i.compiled = function compileType3Glyph(t) {\n const {\n width: e,\n height: n\n } = t;\n if (e > 1e3 || n > 1e3) return null;\n const i = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]),\n r = e + 1;\n let s,\n a,\n o,\n l = new Uint8Array(r * (n + 1));\n const c = e + 7 & -8;\n let h = new Uint8Array(c * n),\n d = 0;\n for (const e of t.data) {\n let t = 128;\n for (; t > 0;) {\n h[d++] = e & t ? 0 : 255;\n t >>= 1;\n }\n }\n let u = 0;\n d = 0;\n if (0 !== h[d]) {\n l[0] = 1;\n ++u;\n }\n for (a = 1; a < e; a++) {\n if (h[d] !== h[d + 1]) {\n l[a] = h[d] ? 2 : 1;\n ++u;\n }\n d++;\n }\n if (0 !== h[d]) {\n l[a] = 2;\n ++u;\n }\n for (s = 1; s < n; s++) {\n d = s * c;\n o = s * r;\n if (h[d - c] !== h[d]) {\n l[o] = h[d] ? 1 : 8;\n ++u;\n }\n let t = (h[d] ? 4 : 0) + (h[d - c] ? 8 : 0);\n for (a = 1; a < e; a++) {\n t = (t >> 2) + (h[d + 1] ? 4 : 0) + (h[d - c + 1] ? 8 : 0);\n if (i[t]) {\n l[o + a] = i[t];\n ++u;\n }\n d++;\n }\n if (h[d - c] !== h[d]) {\n l[o + a] = h[d] ? 2 : 4;\n ++u;\n }\n if (u > 1e3) return null;\n }\n d = c * (n - 1);\n o = s * r;\n if (0 !== h[d]) {\n l[o] = 8;\n ++u;\n }\n for (a = 1; a < e; a++) {\n if (h[d] !== h[d + 1]) {\n l[o + a] = h[d] ? 4 : 8;\n ++u;\n }\n d++;\n }\n if (0 !== h[d]) {\n l[o + a] = 4;\n ++u;\n }\n if (u > 1e3) return null;\n const p = new Int32Array([0, r, -1, 0, -r, 0, 0, 0, 1]),\n f = new Path2D();\n for (s = 0; u && s <= n; s++) {\n let t = s * r;\n const n = t + e;\n for (; t < n && !l[t];) t++;\n if (t === n) continue;\n f.moveTo(t % r, s);\n const i = t;\n let a = l[t];\n do {\n const e = p[a];\n do {\n t += e;\n } while (!l[t]);\n const n = l[t];\n if (5 !== n && 10 !== n) {\n a = n;\n l[t] = 0;\n } else {\n a = n & 51 * a >> 4;\n l[t] &= a >> 2 | a << 2;\n }\n f.lineTo(t % r, t / r | 0);\n l[t] || --u;\n } while (i !== t);\n --s;\n }\n h = null;\n l = null;\n return function (t) {\n t.save();\n t.scale(1 / e, -1 / n);\n t.translate(0, -n);\n t.fill(f);\n t.beginPath();\n t.restore();\n };\n }(t));\n if (i.compiled) {\n i.compiled(n);\n return;\n }\n }\n const r = this._createMaskCanvas(t),\n s = r.canvas;\n n.save();\n n.setTransform(1, 0, 0, 1, 0, 0);\n n.drawImage(s, r.offsetX, r.offsetY);\n n.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,\n s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,\n a = arguments.length > 4 ? arguments[4] : void 0,\n o = arguments.length > 5 ? arguments[5] : void 0;\n if (!this.contentVisible) return;\n t = this.getObject(t.data, t);\n const l = this.ctx;\n l.save();\n const c = (0, r.getCurrentTransform)(l);\n l.transform(e, n, s, a, 0, 0);\n const h = this._createMaskCanvas(t);\n l.setTransform(1, 0, 0, 1, h.offsetX - c[4], h.offsetY - c[5]);\n for (let t = 0, r = o.length; t < r; t += 2) {\n const r = i.Util.transform(c, [e, n, s, a, o[t], o[t + 1]]),\n [d, u] = i.Util.applyTransform([0, 0], r);\n l.drawImage(h.canvas, d, u);\n }\n l.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(t) {\n if (!this.contentVisible) return;\n const e = this.ctx,\n n = this.current.fillColor,\n i = this.current.patternFill;\n for (const a of t) {\n const {\n data: t,\n width: o,\n height: l,\n transform: c\n } = a,\n h = this.cachedCanvases.getCanvas(\"maskCanvas\", o, l),\n d = h.context;\n d.save();\n putBinaryImageMask(d, this.getObject(t, a));\n d.globalCompositeOperation = \"source-in\";\n d.fillStyle = i ? n.getPattern(d, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL) : n;\n d.fillRect(0, 0, o, l);\n d.restore();\n e.save();\n e.transform(...c);\n e.scale(1, -1);\n drawImageAtIntegerCoords(e, h.canvas, 0, 0, o, l, 0, -1, 1, 1);\n e.restore();\n }\n this.compose();\n }\n paintImageXObject(t) {\n if (!this.contentVisible) return;\n const e = this.getObject(t);\n e ? this.paintInlineImageXObject(e) : (0, i.warn)(\"Dependent image isn't ready yet\");\n }\n paintImageXObjectRepeat(t, e, n, r) {\n if (!this.contentVisible) return;\n const s = this.getObject(t);\n if (!s) {\n (0, i.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n const a = s.width,\n o = s.height,\n l = [];\n for (let t = 0, i = r.length; t < i; t += 2) l.push({\n transform: [e, 0, 0, n, r[t], r[t + 1]],\n x: 0,\n y: 0,\n w: a,\n h: o\n });\n this.paintInlineImageXObjectGroup(s, l);\n }\n applyTransferMapsToCanvas(t) {\n if (\"none\" !== this.current.transferMaps) {\n t.filter = this.current.transferMaps;\n t.drawImage(t.canvas, 0, 0);\n t.filter = \"none\";\n }\n return t.canvas;\n }\n applyTransferMapsToBitmap(t) {\n if (\"none\" === this.current.transferMaps) return t.bitmap;\n const {\n bitmap: e,\n width: n,\n height: i\n } = t,\n r = this.cachedCanvases.getCanvas(\"inlineImage\", n, i),\n s = r.context;\n s.filter = this.current.transferMaps;\n s.drawImage(e, 0, 0);\n s.filter = \"none\";\n return r.canvas;\n }\n paintInlineImageXObject(t) {\n if (!this.contentVisible) return;\n const e = t.width,\n n = t.height,\n s = this.ctx;\n this.save();\n if (!i.isNodeJS) {\n const {\n filter: t\n } = s;\n \"none\" !== t && \"\" !== t && (s.filter = \"none\");\n }\n s.scale(1 / e, -1 / n);\n let a;\n if (t.bitmap) a = this.applyTransferMapsToBitmap(t);else if (\"function\" == typeof HTMLElement && t instanceof HTMLElement || !t.data) a = t;else {\n const i = this.cachedCanvases.getCanvas(\"inlineImage\", e, n).context;\n putBinaryImageData(i, t);\n a = this.applyTransferMapsToCanvas(i);\n }\n const o = this._scaleImage(a, (0, r.getCurrentTransformInverse)(s));\n s.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(s), t.interpolate);\n drawImageAtIntegerCoords(s, o.img, 0, 0, o.paintWidth, o.paintHeight, 0, -n, e, n);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(t, e) {\n if (!this.contentVisible) return;\n const n = this.ctx;\n let i;\n if (t.bitmap) i = t.bitmap;else {\n const e = t.width,\n n = t.height,\n r = this.cachedCanvases.getCanvas(\"inlineImage\", e, n).context;\n putBinaryImageData(r, t);\n i = this.applyTransferMapsToCanvas(r);\n }\n for (const t of e) {\n n.save();\n n.transform(...t.transform);\n n.scale(1, -1);\n drawImageAtIntegerCoords(n, i, t.x, t.y, t.w, t.h, 0, -1, 1, 1);\n n.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (this.contentVisible) {\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n }\n markPoint(t) {}\n markPointProps(t, e) {}\n beginMarkedContent(t) {\n this.markedContentStack.push({\n visible: !0\n });\n }\n beginMarkedContentProps(t, e) {\n \"OC\" === t ? this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(e)\n }) : this.markedContentStack.push({\n visible: !0\n });\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(t) {\n const e = this.current.isEmptyClip();\n this.pendingClip && this.current.updateClipFromPath();\n this.pendingClip || this.compose(t);\n const n = this.ctx;\n if (this.pendingClip) {\n e || (this.pendingClip === u ? n.clip(\"evenodd\") : n.clip());\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n n.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const t = (0, r.getCurrentTransform)(this.ctx);\n if (0 === t[1] && 0 === t[2]) this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(t[0]), Math.abs(t[3]));else {\n const e = Math.abs(t[0] * t[3] - t[2] * t[1]),\n n = Math.hypot(t[0], t[2]),\n i = Math.hypot(t[1], t[3]);\n this._cachedGetSinglePixelWidth = Math.max(n, i) / e;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (-1 === this._cachedScaleForStroking[0]) {\n const {\n lineWidth: t\n } = this.current,\n {\n a: e,\n b: n,\n c: i,\n d: r\n } = this.ctx.getTransform();\n let s, a;\n if (0 === n && 0 === i) {\n const n = Math.abs(e),\n i = Math.abs(r);\n if (n === i) {\n if (0 === t) s = a = 1 / n;else {\n const e = n * t;\n s = a = e < 1 ? 1 / e : 1;\n }\n } else if (0 === t) {\n s = 1 / n;\n a = 1 / i;\n } else {\n const e = n * t,\n r = i * t;\n s = e < 1 ? 1 / e : 1;\n a = r < 1 ? 1 / r : 1;\n }\n } else {\n const o = Math.abs(e * r - n * i),\n l = Math.hypot(e, n),\n c = Math.hypot(i, r);\n if (0 === t) {\n s = c / o;\n a = l / o;\n } else {\n const e = t * o;\n s = c > e ? c / e : 1;\n a = l > e ? l / e : 1;\n }\n }\n this._cachedScaleForStroking[0] = s;\n this._cachedScaleForStroking[1] = a;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(t) {\n const {\n ctx: e\n } = this,\n {\n lineWidth: n\n } = this.current,\n [i, r] = this.getScaleForStroking();\n e.lineWidth = n || 1;\n if (1 === i && 1 === r) {\n e.stroke();\n return;\n }\n const s = e.getLineDash();\n t && e.save();\n e.scale(i, r);\n if (s.length > 0) {\n const t = Math.max(i, r);\n e.setLineDash(s.map(e => e / t));\n e.lineDashOffset /= t;\n }\n e.stroke();\n t && e.restore();\n }\n isContentVisible() {\n for (let t = this.markedContentStack.length - 1; t >= 0; t--) if (!this.markedContentStack[t].visible) return !1;\n return !0;\n }\n }\n function _Gt2() {\n for (; this.stateStack.length || this.inSMaskMode;) this.restore();\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n function _Vt2() {\n if (this.pageColors) {\n const t = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (\"none\" !== t) {\n const e = this.ctx.filter;\n this.ctx.filter = t;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = e;\n }\n }\n }\n e.CanvasGraphics = CanvasGraphics;\n for (const t in i.OPS) void 0 !== CanvasGraphics.prototype[t] && (CanvasGraphics.prototype[i.OPS[t]] = CanvasGraphics.prototype[t]);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.TilingPattern = e.PathType = void 0;\n e.getShadingPattern = function getShadingPattern(t) {\n switch (t[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(t);\n case \"Mesh\":\n return new MeshShadingPattern(t);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(\"Unknown IR type: \".concat(t[0]));\n };\n n(2);\n var i = n(1),\n r = n(167);\n const s = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n };\n e.PathType = s;\n function applyBoundingBox(t, e) {\n if (!e) return;\n const n = e[2] - e[0],\n i = e[3] - e[1],\n r = new Path2D();\n r.rect(e[0], e[1], n, i);\n t.clip(r);\n }\n class BaseShadingPattern {\n constructor() {\n this.constructor === BaseShadingPattern && (0, i.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n getPattern() {\n (0, i.unreachable)(\"Abstract method `getPattern` called.\");\n }\n }\n class RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(t) {\n super();\n this._type = t[1];\n this._bbox = t[2];\n this._colorStops = t[3];\n this._p0 = t[4];\n this._p1 = t[5];\n this._r0 = t[6];\n this._r1 = t[7];\n this.matrix = null;\n }\n _createGradient(t) {\n let e;\n \"axial\" === this._type ? e = t.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]) : \"radial\" === this._type && (e = t.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1));\n for (const t of this._colorStops) e.addColorStop(t[0], t[1]);\n return e;\n }\n getPattern(t, e, n, a) {\n let o;\n if (a === s.STROKE || a === s.FILL) {\n const s = e.current.getClippedPathBoundingBox(a, (0, r.getCurrentTransform)(t)) || [0, 0, 0, 0],\n l = Math.ceil(s[2] - s[0]) || 1,\n c = Math.ceil(s[3] - s[1]) || 1,\n h = e.cachedCanvases.getCanvas(\"pattern\", l, c, !0),\n d = h.context;\n d.clearRect(0, 0, d.canvas.width, d.canvas.height);\n d.beginPath();\n d.rect(0, 0, d.canvas.width, d.canvas.height);\n d.translate(-s[0], -s[1]);\n n = i.Util.transform(n, [1, 0, 0, 1, s[0], s[1]]);\n d.transform(...e.baseTransform);\n this.matrix && d.transform(...this.matrix);\n applyBoundingBox(d, this._bbox);\n d.fillStyle = this._createGradient(d);\n d.fill();\n o = t.createPattern(h.canvas, \"no-repeat\");\n const u = new DOMMatrix(n);\n o.setTransform(u);\n } else {\n applyBoundingBox(t, this._bbox);\n o = this._createGradient(t);\n }\n return o;\n }\n }\n function drawTriangle(t, e, n, i, r, s, a, o) {\n const l = e.coords,\n c = e.colors,\n h = t.data,\n d = 4 * t.width;\n let u;\n if (l[n + 1] > l[i + 1]) {\n u = n;\n n = i;\n i = u;\n u = s;\n s = a;\n a = u;\n }\n if (l[i + 1] > l[r + 1]) {\n u = i;\n i = r;\n r = u;\n u = a;\n a = o;\n o = u;\n }\n if (l[n + 1] > l[i + 1]) {\n u = n;\n n = i;\n i = u;\n u = s;\n s = a;\n a = u;\n }\n const p = (l[n] + e.offsetX) * e.scaleX,\n f = (l[n + 1] + e.offsetY) * e.scaleY,\n g = (l[i] + e.offsetX) * e.scaleX,\n m = (l[i + 1] + e.offsetY) * e.scaleY,\n b = (l[r] + e.offsetX) * e.scaleX,\n v = (l[r + 1] + e.offsetY) * e.scaleY;\n if (f >= v) return;\n const y = c[s],\n A = c[s + 1],\n _ = c[s + 2],\n S = c[a],\n E = c[a + 1],\n x = c[a + 2],\n w = c[o],\n C = c[o + 1],\n T = c[o + 2],\n P = Math.round(f),\n k = Math.round(v);\n let M, R, I, D, O, L, N, B;\n for (let t = P; t <= k; t++) {\n if (t < m) {\n const e = t < f ? 0 : (f - t) / (f - m);\n M = p - (p - g) * e;\n R = y - (y - S) * e;\n I = A - (A - E) * e;\n D = _ - (_ - x) * e;\n } else {\n let e;\n e = t > v ? 1 : m === v ? 0 : (m - t) / (m - v);\n M = g - (g - b) * e;\n R = S - (S - w) * e;\n I = E - (E - C) * e;\n D = x - (x - T) * e;\n }\n let e;\n e = t < f ? 0 : t > v ? 1 : (f - t) / (f - v);\n O = p - (p - b) * e;\n L = y - (y - w) * e;\n N = A - (A - C) * e;\n B = _ - (_ - T) * e;\n const n = Math.round(Math.min(M, O)),\n i = Math.round(Math.max(M, O));\n let r = d * t + 4 * n;\n for (let t = n; t <= i; t++) {\n e = (M - t) / (M - O);\n e < 0 ? e = 0 : e > 1 && (e = 1);\n h[r++] = R - (R - L) * e | 0;\n h[r++] = I - (I - N) * e | 0;\n h[r++] = D - (D - B) * e | 0;\n h[r++] = 255;\n }\n }\n }\n function drawFigure(t, e, n) {\n const i = e.coords,\n r = e.colors;\n let s, a;\n switch (e.type) {\n case \"lattice\":\n const o = e.verticesPerRow,\n l = Math.floor(i.length / o) - 1,\n c = o - 1;\n for (s = 0; s < l; s++) {\n let e = s * o;\n for (let s = 0; s < c; s++, e++) {\n drawTriangle(t, n, i[e], i[e + 1], i[e + o], r[e], r[e + 1], r[e + o]);\n drawTriangle(t, n, i[e + o + 1], i[e + 1], i[e + o], r[e + o + 1], r[e + 1], r[e + o]);\n }\n }\n break;\n case \"triangles\":\n for (s = 0, a = i.length; s < a; s += 3) drawTriangle(t, n, i[s], i[s + 1], i[s + 2], r[s], r[s + 1], r[s + 2]);\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n }\n class MeshShadingPattern extends BaseShadingPattern {\n constructor(t) {\n super();\n this._coords = t[2];\n this._colors = t[3];\n this._figures = t[4];\n this._bounds = t[5];\n this._bbox = t[7];\n this._background = t[8];\n this.matrix = null;\n }\n _createMeshCanvas(t, e, n) {\n const i = Math.floor(this._bounds[0]),\n r = Math.floor(this._bounds[1]),\n s = Math.ceil(this._bounds[2]) - i,\n a = Math.ceil(this._bounds[3]) - r,\n o = Math.min(Math.ceil(Math.abs(s * t[0] * 1.1)), 3e3),\n l = Math.min(Math.ceil(Math.abs(a * t[1] * 1.1)), 3e3),\n c = s / o,\n h = a / l,\n d = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -i,\n offsetY: -r,\n scaleX: 1 / c,\n scaleY: 1 / h\n },\n u = o + 4,\n p = l + 4,\n f = n.getCanvas(\"mesh\", u, p, !1),\n g = f.context,\n m = g.createImageData(o, l);\n if (e) {\n const t = m.data;\n for (let n = 0, i = t.length; n < i; n += 4) {\n t[n] = e[0];\n t[n + 1] = e[1];\n t[n + 2] = e[2];\n t[n + 3] = 255;\n }\n }\n for (const t of this._figures) drawFigure(m, t, d);\n g.putImageData(m, 2, 2);\n return {\n canvas: f.canvas,\n offsetX: i - 2 * c,\n offsetY: r - 2 * h,\n scaleX: c,\n scaleY: h\n };\n }\n getPattern(t, e, n, a) {\n applyBoundingBox(t, this._bbox);\n let o;\n if (a === s.SHADING) o = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(t));else {\n o = i.Util.singularValueDecompose2dScale(e.baseTransform);\n if (this.matrix) {\n const t = i.Util.singularValueDecompose2dScale(this.matrix);\n o = [o[0] * t[0], o[1] * t[1]];\n }\n }\n const l = this._createMeshCanvas(o, a === s.SHADING ? null : this._background, e.cachedCanvases);\n if (a !== s.SHADING) {\n t.setTransform(...e.baseTransform);\n this.matrix && t.transform(...this.matrix);\n }\n t.translate(l.offsetX, l.offsetY);\n t.scale(l.scaleX, l.scaleY);\n return t.createPattern(l.canvas, \"no-repeat\");\n }\n }\n class DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n }\n const a = 1,\n o = 2;\n class TilingPattern {\n constructor(t, e, n, i, r) {\n this.operatorList = t[2];\n this.matrix = t[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = t[4];\n this.xstep = t[5];\n this.ystep = t[6];\n this.paintType = t[7];\n this.tilingType = t[8];\n this.color = e;\n this.ctx = n;\n this.canvasGraphicsFactory = i;\n this.baseTransform = r;\n }\n createPatternCanvas(t) {\n const e = this.operatorList,\n n = this.bbox,\n s = this.xstep,\n a = this.ystep,\n o = this.paintType,\n l = this.tilingType,\n c = this.color,\n h = this.canvasGraphicsFactory;\n (0, i.info)(\"TilingType: \" + l);\n const d = n[0],\n u = n[1],\n p = n[2],\n f = n[3],\n g = i.Util.singularValueDecompose2dScale(this.matrix),\n m = i.Util.singularValueDecompose2dScale(this.baseTransform),\n b = [g[0] * m[0], g[1] * m[1]],\n v = this.getSizeAndScale(s, this.ctx.canvas.width, b[0]),\n y = this.getSizeAndScale(a, this.ctx.canvas.height, b[1]),\n A = t.cachedCanvases.getCanvas(\"pattern\", v.size, y.size, !0),\n _ = A.context,\n S = h.createCanvasGraphics(_);\n S.groupLevel = t.groupLevel;\n this.setFillAndStrokeStyleToContext(S, o, c);\n let E = d,\n x = u,\n w = p,\n C = f;\n if (d < 0) {\n E = 0;\n w += Math.abs(d);\n }\n if (u < 0) {\n x = 0;\n C += Math.abs(u);\n }\n _.translate(-v.scale * E, -y.scale * x);\n S.transform(v.scale, 0, 0, y.scale, 0, 0);\n _.save();\n this.clipBbox(S, E, x, w, C);\n S.baseTransform = (0, r.getCurrentTransform)(S.ctx);\n S.executeOperatorList(e);\n S.endDrawing();\n return {\n canvas: A.canvas,\n scaleX: v.scale,\n scaleY: y.scale,\n offsetX: E,\n offsetY: x\n };\n }\n getSizeAndScale(t, e, n) {\n t = Math.abs(t);\n const i = Math.max(TilingPattern.MAX_PATTERN_SIZE, e);\n let r = Math.ceil(t * n);\n r >= i ? r = i : n = r / t;\n return {\n scale: n,\n size: r\n };\n }\n clipBbox(t, e, n, i, s) {\n const a = i - e,\n o = s - n;\n t.ctx.rect(e, n, a, o);\n t.current.updateRectMinMax((0, r.getCurrentTransform)(t.ctx), [e, n, i, s]);\n t.clip();\n t.endPath();\n }\n setFillAndStrokeStyleToContext(t, e, n) {\n const r = t.ctx,\n s = t.current;\n switch (e) {\n case a:\n const t = this.ctx;\n r.fillStyle = t.fillStyle;\n r.strokeStyle = t.strokeStyle;\n s.fillColor = t.fillStyle;\n s.strokeColor = t.strokeStyle;\n break;\n case o:\n const l = i.Util.makeHexColor(n[0], n[1], n[2]);\n r.fillStyle = l;\n r.strokeStyle = l;\n s.fillColor = l;\n s.strokeColor = l;\n break;\n default:\n throw new i.FormatError(\"Unsupported paint type: \".concat(e));\n }\n }\n getPattern(t, e, n, r) {\n let a = n;\n if (r !== s.SHADING) {\n a = i.Util.transform(a, e.baseTransform);\n this.matrix && (a = i.Util.transform(a, this.matrix));\n }\n const o = this.createPatternCanvas(e);\n let l = new DOMMatrix(a);\n l = l.translate(o.offsetX, o.offsetY);\n l = l.scale(1 / o.scaleX, 1 / o.scaleY);\n const c = t.createPattern(o.canvas, \"repeat\");\n c.setTransform(l);\n return c;\n }\n }\n _defineProperty(TilingPattern, \"MAX_PATTERN_SIZE\", 3e3);\n e.TilingPattern = TilingPattern;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\n e.convertToRGBA = function convertToRGBA(t) {\n switch (t.kind) {\n case i.ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(t);\n case i.ImageKind.RGB_24BPP:\n return function convertRGBToRGBA(t) {\n let {\n src: e,\n srcPos: n = 0,\n dest: r,\n destPos: s = 0,\n width: a,\n height: o\n } = t,\n l = 0;\n const c = e.length >> 2,\n h = new Uint32Array(e.buffer, n, c);\n if (i.FeatureTest.isLittleEndian) {\n for (; l < c - 2; l += 3, s += 4) {\n const t = h[l],\n e = h[l + 1],\n n = h[l + 2];\n r[s] = 4278190080 | t;\n r[s + 1] = t >>> 24 | e << 8 | 4278190080;\n r[s + 2] = e >>> 16 | n << 16 | 4278190080;\n r[s + 3] = n >>> 8 | 4278190080;\n }\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] | e[t + 1] << 8 | e[t + 2] << 16 | 4278190080;\n } else {\n for (; l < c - 2; l += 3, s += 4) {\n const t = h[l],\n e = h[l + 1],\n n = h[l + 2];\n r[s] = 255 | t;\n r[s + 1] = t << 24 | e >>> 8 | 255;\n r[s + 2] = e << 16 | n >>> 16 | 255;\n r[s + 3] = n << 8 | 255;\n }\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | 255;\n }\n return {\n srcPos: n,\n destPos: s\n };\n }(t);\n }\n return null;\n };\n e.grayToRGBA = function grayToRGBA(t, e) {\n if (i.FeatureTest.isLittleEndian) for (let n = 0, i = t.length; n < i; n++) e[n] = 65793 * t[n] | 4278190080;else for (let n = 0, i = t.length; n < i; n++) e[n] = 16843008 * t[n] | 255;\n };\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(1);\n function convertBlackAndWhiteToRGBA(t) {\n let {\n src: e,\n srcPos: n = 0,\n dest: r,\n width: s,\n height: a,\n nonBlackColor: o = 4294967295,\n inverseDecode: l = !1\n } = t;\n const c = i.FeatureTest.isLittleEndian ? 4278190080 : 255,\n [h, d] = l ? [o, c] : [c, o],\n u = s >> 3,\n p = 7 & s,\n f = e.length;\n r = new Uint32Array(r.buffer);\n let g = 0;\n for (let t = 0; t < a; t++) {\n for (const t = n + u; n < t; n++) {\n const t = n < f ? e[n] : 255;\n r[g++] = 128 & t ? d : h;\n r[g++] = 64 & t ? d : h;\n r[g++] = 32 & t ? d : h;\n r[g++] = 16 & t ? d : h;\n r[g++] = 8 & t ? d : h;\n r[g++] = 4 & t ? d : h;\n r[g++] = 2 & t ? d : h;\n r[g++] = 1 & t ? d : h;\n }\n if (0 === p) continue;\n const t = n < f ? e[n++] : 255;\n for (let e = 0; e < p; e++) r[g++] = t & 1 << 7 - e ? d : h;\n }\n return {\n srcPos: n,\n destPos: g\n };\n }\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.GlobalWorkerOptions = void 0;\n const n = Object.create(null);\n e.GlobalWorkerOptions = n;\n n.workerPort = null;\n n.workerSrc = \"\";\n }, (t, e, n) => {\n \"use strict\";\n\n var _Xt, _$t, _Kt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.MessageHandler = void 0;\n n(2);\n var i = n(1);\n const r = 1,\n s = 2,\n a = 1,\n o = 2,\n l = 3,\n c = 4,\n h = 5,\n d = 6,\n u = 7,\n p = 8;\n function wrapReason(t) {\n t instanceof Error || \"object\" == typeof t && null !== t || (0, i.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n switch (t.name) {\n case \"AbortException\":\n return new i.AbortException(t.message);\n case \"MissingPDFException\":\n return new i.MissingPDFException(t.message);\n case \"PasswordException\":\n return new i.PasswordException(t.message, t.code);\n case \"UnexpectedResponseException\":\n return new i.UnexpectedResponseException(t.message, t.status);\n case \"UnknownErrorException\":\n return new i.UnknownErrorException(t.message, t.details);\n default:\n return new i.UnknownErrorException(t.message, t.toString());\n }\n }\n e.MessageHandler = (_Xt = /*#__PURE__*/new WeakSet(), _$t = /*#__PURE__*/new WeakSet(), _Kt = /*#__PURE__*/new WeakSet(), class MessageHandler {\n constructor(_t11, _e10, _n6) {\n _classPrivateMethodInitSpec(this, _Kt);\n _classPrivateMethodInitSpec(this, _$t);\n _classPrivateMethodInitSpec(this, _Xt);\n this.sourceName = _t11;\n this.targetName = _e10;\n this.comObj = _n6;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = t => {\n const e = t.data;\n if (e.targetName !== this.sourceName) return;\n if (e.stream) {\n _classPrivateMethodGet(this, _$t, _$t2).call(this, e);\n return;\n }\n if (e.callback) {\n const t = e.callbackId,\n n = this.callbackCapabilities[t];\n if (!n) throw new Error(\"Cannot resolve callback \".concat(t));\n delete this.callbackCapabilities[t];\n if (e.callback === r) n.resolve(e.data);else {\n if (e.callback !== s) throw new Error(\"Unexpected callback case\");\n n.reject(wrapReason(e.reason));\n }\n return;\n }\n const i = this.actionHandler[e.action];\n if (!i) throw new Error(\"Unknown action from worker: \".concat(e.action));\n if (e.callbackId) {\n const t = this.sourceName,\n a = e.sourceName;\n new Promise(function (t) {\n t(i(e.data));\n }).then(function (i) {\n _n6.postMessage({\n sourceName: t,\n targetName: a,\n callback: r,\n callbackId: e.callbackId,\n data: i\n });\n }, function (i) {\n _n6.postMessage({\n sourceName: t,\n targetName: a,\n callback: s,\n callbackId: e.callbackId,\n reason: wrapReason(i)\n });\n });\n } else e.streamId ? _classPrivateMethodGet(this, _Xt, _Xt2).call(this, e) : i(e.data);\n };\n _n6.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(t, e) {\n const n = this.actionHandler;\n if (n[t]) throw new Error(\"There is already an actionName called \\\"\".concat(t, \"\\\"\"));\n n[t] = e;\n }\n send(t, e, n) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: t,\n data: e\n }, n);\n }\n sendWithPromise(t, e, n) {\n const r = this.callbackId++,\n s = new i.PromiseCapability();\n this.callbackCapabilities[r] = s;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: t,\n callbackId: r,\n data: e\n }, n);\n } catch (t) {\n s.reject(t);\n }\n return s.promise;\n }\n sendWithStream(t, e, n, r) {\n const s = this.streamId++,\n o = this.sourceName,\n l = this.targetName,\n c = this.comObj;\n return new ReadableStream({\n start: n => {\n const a = new i.PromiseCapability();\n this.streamControllers[s] = {\n controller: n,\n startCall: a,\n pullCall: null,\n cancelCall: null,\n isClosed: !1\n };\n c.postMessage({\n sourceName: o,\n targetName: l,\n action: t,\n streamId: s,\n data: e,\n desiredSize: n.desiredSize\n }, r);\n return a.promise;\n },\n pull: t => {\n const e = new i.PromiseCapability();\n this.streamControllers[s].pullCall = e;\n c.postMessage({\n sourceName: o,\n targetName: l,\n stream: d,\n streamId: s,\n desiredSize: t.desiredSize\n });\n return e.promise;\n },\n cancel: t => {\n (0, i.assert)(t instanceof Error, \"cancel must have a valid reason\");\n const e = new i.PromiseCapability();\n this.streamControllers[s].cancelCall = e;\n this.streamControllers[s].isClosed = !0;\n c.postMessage({\n sourceName: o,\n targetName: l,\n stream: a,\n streamId: s,\n reason: wrapReason(t)\n });\n return e.promise;\n }\n }, n);\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n });\n function _Xt2(t) {\n const e = t.streamId,\n n = this.sourceName,\n r = t.sourceName,\n s = this.comObj,\n a = this,\n o = this.actionHandler[t.action],\n d = {\n enqueue(t) {\n let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,\n o = arguments.length > 2 ? arguments[2] : void 0;\n if (this.isCancelled) return;\n const l = this.desiredSize;\n this.desiredSize -= a;\n if (l > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new i.PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: c,\n streamId: e,\n chunk: t\n }, o);\n },\n close() {\n if (!this.isCancelled) {\n this.isCancelled = !0;\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: l,\n streamId: e\n });\n delete a.streamSinks[e];\n }\n },\n error(t) {\n (0, i.assert)(t instanceof Error, \"error must have a valid reason\");\n if (!this.isCancelled) {\n this.isCancelled = !0;\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: h,\n streamId: e,\n reason: wrapReason(t)\n });\n }\n },\n sinkCapability: new i.PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: !1,\n desiredSize: t.desiredSize,\n ready: null\n };\n d.sinkCapability.resolve();\n d.ready = d.sinkCapability.promise;\n this.streamSinks[e] = d;\n new Promise(function (e) {\n e(o(t.data, d));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: p,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: p,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n }\n function _$t2(t) {\n const e = t.streamId,\n n = this.sourceName,\n r = t.sourceName,\n s = this.comObj,\n f = this.streamControllers[e],\n g = this.streamSinks[e];\n switch (t.stream) {\n case p:\n t.success ? f.startCall.resolve() : f.startCall.reject(wrapReason(t.reason));\n break;\n case u:\n t.success ? f.pullCall.resolve() : f.pullCall.reject(wrapReason(t.reason));\n break;\n case d:\n if (!g) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n success: !0\n });\n break;\n }\n g.desiredSize <= 0 && t.desiredSize > 0 && g.sinkCapability.resolve();\n g.desiredSize = t.desiredSize;\n new Promise(function (t) {\n var _g$onPull;\n t((_g$onPull = g.onPull) === null || _g$onPull === void 0 ? void 0 : _g$onPull.call(g));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: u,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n break;\n case c:\n (0, i.assert)(f, \"enqueue should have stream controller\");\n if (f.isClosed) break;\n f.controller.enqueue(t.chunk);\n break;\n case l:\n (0, i.assert)(f, \"close should have stream controller\");\n if (f.isClosed) break;\n f.isClosed = !0;\n f.controller.close();\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case h:\n (0, i.assert)(f, \"error should have stream controller\");\n f.controller.error(wrapReason(t.reason));\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case o:\n t.success ? f.cancelCall.resolve() : f.cancelCall.reject(wrapReason(t.reason));\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\n break;\n case a:\n if (!g) break;\n new Promise(function (e) {\n var _g$onCancel;\n e((_g$onCancel = g.onCancel) === null || _g$onCancel === void 0 ? void 0 : _g$onCancel.call(g, wrapReason(t.reason)));\n }).then(function () {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: o,\n streamId: e,\n success: !0\n });\n }, function (t) {\n s.postMessage({\n sourceName: n,\n targetName: r,\n stream: o,\n streamId: e,\n reason: wrapReason(t)\n });\n });\n g.sinkCapability.reject(wrapReason(t.reason));\n g.isCancelled = !0;\n delete this.streamSinks[e];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async function _Kt2(t, e) {\n var _t$startCall, _t$pullCall, _t$cancelCall;\n await Promise.allSettled([(_t$startCall = t.startCall) === null || _t$startCall === void 0 ? void 0 : _t$startCall.promise, (_t$pullCall = t.pullCall) === null || _t$pullCall === void 0 ? void 0 : _t$pullCall.promise, (_t$cancelCall = t.cancelCall) === null || _t$cancelCall === void 0 ? void 0 : _t$cancelCall.promise]);\n delete this.streamControllers[e];\n }\n }, (t, e, n) => {\n \"use strict\";\n\n var _Yt, _Jt;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.Metadata = void 0;\n var i = n(1);\n e.Metadata = (_Yt = /*#__PURE__*/new WeakMap(), _Jt = /*#__PURE__*/new WeakMap(), class Metadata {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _Yt, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Jt, {\n writable: true,\n value: void 0\n });\n let {\n parsedData: e,\n rawData: n\n } = t;\n _classPrivateFieldSet(this, _Yt, e);\n _classPrivateFieldSet(this, _Jt, n);\n }\n getRaw() {\n return _classPrivateFieldGet(this, _Jt);\n }\n get(t) {\n var _classPrivateFieldGet8;\n return (_classPrivateFieldGet8 = _classPrivateFieldGet(this, _Yt).get(t)) !== null && _classPrivateFieldGet8 !== void 0 ? _classPrivateFieldGet8 : null;\n }\n getAll() {\n return (0, i.objectFromMap)(_classPrivateFieldGet(this, _Yt));\n }\n has(t) {\n return _classPrivateFieldGet(this, _Yt).has(t);\n }\n });\n }, (t, e, n) => {\n \"use strict\";\n\n var _Zt, _te, _ee, _ne, _ie;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.OptionalContentConfig = void 0;\n var i = n(1),\n r = n(169);\n const s = Symbol(\"INTERNAL\");\n var _Qt = /*#__PURE__*/new WeakMap();\n class OptionalContentGroup {\n constructor(t, e) {\n _classPrivateFieldInitSpec(this, _Qt, {\n writable: true,\n value: !0\n });\n this.name = t;\n this.intent = e;\n }\n get visible() {\n return _classPrivateFieldGet(this, _Qt);\n }\n _setVisible(t, e) {\n t !== s && (0, i.unreachable)(\"Internal method `_setVisible` called.\");\n _classPrivateFieldSet(this, _Qt, e);\n }\n }\n e.OptionalContentConfig = (_Zt = /*#__PURE__*/new WeakMap(), _te = /*#__PURE__*/new WeakMap(), _ee = /*#__PURE__*/new WeakMap(), _ne = /*#__PURE__*/new WeakMap(), _ie = /*#__PURE__*/new WeakSet(), class OptionalContentConfig {\n constructor(_t12) {\n _classPrivateMethodInitSpec(this, _ie);\n _classPrivateFieldInitSpec(this, _Zt, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _te, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _ee, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ne, {\n writable: true,\n value: null\n });\n this.name = null;\n this.creator = null;\n if (null !== _t12) {\n this.name = _t12.name;\n this.creator = _t12.creator;\n _classPrivateFieldSet(this, _ne, _t12.order);\n for (const e of _t12.groups) _classPrivateFieldGet(this, _te).set(e.id, new OptionalContentGroup(e.name, e.intent));\n if (\"OFF\" === _t12.baseState) for (const t of _classPrivateFieldGet(this, _te).values()) t._setVisible(s, !1);\n for (const e of _t12.on) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !0);\n for (const e of _t12.off) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !1);\n _classPrivateFieldSet(this, _ee, this.getHash());\n }\n }\n isVisible(t) {\n if (0 === _classPrivateFieldGet(this, _te).size) return !0;\n if (!t) {\n (0, i.warn)(\"Optional content group not defined.\");\n return !0;\n }\n if (\"OCG\" === t.type) {\n if (!_classPrivateFieldGet(this, _te).has(t.id)) {\n (0, i.warn)(\"Optional content group not found: \".concat(t.id));\n return !0;\n }\n return _classPrivateFieldGet(this, _te).get(t.id).visible;\n }\n if (\"OCMD\" === t.type) {\n if (t.expression) return _classPrivateMethodGet(this, _ie, _ie2).call(this, t.expression);\n if (!t.policy || \"AnyOn\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !0;\n }\n return !1;\n }\n if (\"AllOn\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !1;\n }\n return !0;\n }\n if (\"AnyOff\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !0;\n }\n return !1;\n }\n if (\"AllOff\" === t.policy) {\n for (const e of t.ids) {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !1;\n }\n return !0;\n }\n (0, i.warn)(\"Unknown optional content policy \".concat(t.policy, \".\"));\n return !0;\n }\n (0, i.warn)(\"Unknown group type \".concat(t.type, \".\"));\n return !0;\n }\n setVisibility(t) {\n let e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n if (_classPrivateFieldGet(this, _te).has(t)) {\n _classPrivateFieldGet(this, _te).get(t)._setVisible(s, !!e);\n _classPrivateFieldSet(this, _Zt, null);\n } else (0, i.warn)(\"Optional content group not found: \".concat(t));\n }\n get hasInitialVisibility() {\n return this.getHash() === _classPrivateFieldGet(this, _ee);\n }\n getOrder() {\n return _classPrivateFieldGet(this, _te).size ? _classPrivateFieldGet(this, _ne) ? _classPrivateFieldGet(this, _ne).slice() : [..._classPrivateFieldGet(this, _te).keys()] : null;\n }\n getGroups() {\n return _classPrivateFieldGet(this, _te).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _te)) : null;\n }\n getGroup(t) {\n return _classPrivateFieldGet(this, _te).get(t) || null;\n }\n getHash() {\n if (null !== _classPrivateFieldGet(this, _Zt)) return _classPrivateFieldGet(this, _Zt);\n const t = new r.MurmurHash3_64();\n for (const [e, n] of _classPrivateFieldGet(this, _te)) t.update(\"\".concat(e, \":\").concat(n.visible));\n return _classPrivateFieldSet(this, _Zt, t.hexdigest());\n }\n });\n function _ie2(t) {\n const e = t.length;\n if (e < 2) return !0;\n const n = t[0];\n for (let r = 1; r < e; r++) {\n const e = t[r];\n let s;\n if (Array.isArray(e)) s = _classPrivateMethodGet(this, _ie, _ie2).call(this, e);else {\n if (!_classPrivateFieldGet(this, _te).has(e)) {\n (0, i.warn)(\"Optional content group not found: \".concat(e));\n return !0;\n }\n s = _classPrivateFieldGet(this, _te).get(e).visible;\n }\n switch (n) {\n case \"And\":\n if (!s) return !1;\n break;\n case \"Or\":\n if (s) return !0;\n break;\n case \"Not\":\n return !s;\n default:\n return !0;\n }\n }\n return \"And\" === n;\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFDataTransportStream = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(167);\n e.PDFDataTransportStream = class PDFDataTransportStream {\n constructor(t, e) {\n let {\n length: n,\n initialData: r,\n progressiveDone: s = !1,\n contentDispositionFilename: a = null,\n disableRange: o = !1,\n disableStream: l = !1\n } = t;\n (0, i.assert)(e, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = s;\n this._contentDispositionFilename = a;\n if ((r === null || r === void 0 ? void 0 : r.length) > 0) {\n const t = r instanceof Uint8Array && r.byteLength === r.buffer.byteLength ? r.buffer : new Uint8Array(r).buffer;\n this._queuedChunks.push(t);\n }\n this._pdfDataRangeTransport = e;\n this._isStreamingSupported = !l;\n this._isRangeSupported = !o;\n this._contentLength = n;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n this._pdfDataRangeTransport.addRangeListener((t, e) => {\n this._onReceiveData({\n begin: t,\n chunk: e\n });\n });\n this._pdfDataRangeTransport.addProgressListener((t, e) => {\n this._onProgress({\n loaded: t,\n total: e\n });\n });\n this._pdfDataRangeTransport.addProgressiveReadListener(t => {\n this._onReceiveData({\n chunk: t\n });\n });\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n this._pdfDataRangeTransport.transportReady();\n }\n _onReceiveData(t) {\n let {\n begin: e,\n chunk: n\n } = t;\n const r = n instanceof Uint8Array && n.byteLength === n.buffer.byteLength ? n.buffer : new Uint8Array(n).buffer;\n if (void 0 === e) this._fullRequestReader ? this._fullRequestReader._enqueue(r) : this._queuedChunks.push(r);else {\n const t = this._rangeReaders.some(function (t) {\n if (t._begin !== e) return !1;\n t._enqueue(r);\n return !0;\n });\n (0, i.assert)(t, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea, _this$_fullRequestRea2;\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\n }\n _onProgress(t) {\n var _this$_rangeReaders$, _this$_rangeReaders$$, _this$_fullRequestRea3, _this$_fullRequestRea4;\n void 0 === t.total ? (_this$_rangeReaders$ = this._rangeReaders[0]) === null || _this$_rangeReaders$ === void 0 || (_this$_rangeReaders$$ = _this$_rangeReaders$.onProgress) === null || _this$_rangeReaders$$ === void 0 ? void 0 : _this$_rangeReaders$$.call(_this$_rangeReaders$, {\n loaded: t.loaded\n }) : (_this$_fullRequestRea3 = this._fullRequestReader) === null || _this$_fullRequestRea3 === void 0 || (_this$_fullRequestRea4 = _this$_fullRequestRea3.onProgress) === null || _this$_fullRequestRea4 === void 0 ? void 0 : _this$_fullRequestRea4.call(_this$_fullRequestRea3, {\n loaded: t.loaded,\n total: t.total\n });\n }\n _onProgressiveDone() {\n var _this$_fullRequestRea5;\n (_this$_fullRequestRea5 = this._fullRequestReader) === null || _this$_fullRequestRea5 === void 0 ? void 0 : _this$_fullRequestRea5.progressiveDone();\n this._progressiveDone = !0;\n }\n _removeRangeReader(t) {\n const e = this._rangeReaders.indexOf(t);\n e >= 0 && this._rangeReaders.splice(e, 1);\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const t = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, t, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = new PDFDataTransportStreamRangeReader(this, t, e);\n this._pdfDataRangeTransport.requestDataRange(t, e);\n this._rangeReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea6;\n (_this$_fullRequestRea6 = this._fullRequestReader) === null || _this$_fullRequestRea6 === void 0 ? void 0 : _this$_fullRequestRea6.cancel(t);\n for (const e of this._rangeReaders.slice(0)) e.cancel(t);\n this._pdfDataRangeTransport.abort();\n }\n };\n class PDFDataTransportStreamReader {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\n this._stream = t;\n this._done = n || !1;\n this._filename = (0, r.isPdfFile)(i) ? i : null;\n this._queuedChunks = e || [];\n this._loaded = 0;\n for (const t of this._queuedChunks) this._loaded += t.byteLength;\n this._requests = [];\n this._headersReady = Promise.resolve();\n t._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(t) {\n if (!this._done) {\n if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: t,\n done: !1\n });\n } else this._queuedChunks.push(t);\n this._loaded += t.byteLength;\n }\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n return {\n value: this._queuedChunks.shift(),\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n progressiveDone() {\n this._done || (this._done = !0);\n }\n }\n class PDFDataTransportStreamRangeReader {\n constructor(t, e, n) {\n this._stream = t;\n this._begin = e;\n this._end = n;\n this._queuedChunk = null;\n this._requests = [];\n this._done = !1;\n this.onProgress = null;\n }\n _enqueue(t) {\n if (!this._done) {\n if (0 === this._requests.length) this._queuedChunk = t;else {\n this._requests.shift().resolve({\n value: t,\n done: !1\n });\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n this._done = !0;\n this._stream._removeRangeReader(this);\n }\n }\n get isStreamingSupported() {\n return !1;\n }\n async read() {\n if (this._queuedChunk) {\n const t = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: t,\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFFetchStream = void 0;\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(89);\n var i = n(1),\n r = n(181);\n function createFetchOptions(t, e, n) {\n return {\n method: \"GET\",\n headers: t,\n signal: n.signal,\n mode: \"cors\",\n credentials: e ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n }\n function createHeaders(t) {\n const e = new Headers();\n for (const n in t) {\n const i = t[n];\n void 0 !== i && e.append(n, i);\n }\n return e;\n }\n function getArrayBuffer(t) {\n if (t instanceof Uint8Array) return t.buffer;\n if (t instanceof ArrayBuffer) return t;\n (0, i.warn)(\"getArrayBuffer - unexpected data format: \".concat(t));\n return new Uint8Array(t).buffer;\n }\n e.PDFFetchStream = class PDFFetchStream {\n constructor(t) {\n this.source = t;\n this.isHttp = /^https?:/i.test(t.url);\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea7, _this$_fullRequestRea8;\n return (_this$_fullRequestRea7 = (_this$_fullRequestRea8 = this._fullRequestReader) === null || _this$_fullRequestRea8 === void 0 ? void 0 : _this$_fullRequestRea8._loaded) !== null && _this$_fullRequestRea7 !== void 0 ? _this$_fullRequestRea7 : 0;\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = new PDFFetchStreamRangeReader(this, t, e);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea9;\n (_this$_fullRequestRea9 = this._fullRequestReader) === null || _this$_fullRequestRea9 === void 0 ? void 0 : _this$_fullRequestRea9.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class PDFFetchStreamReader {\n constructor(t) {\n this._stream = t;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const e = t.source;\n this._withCredentials = e.withCredentials || !1;\n this._contentLength = e.length;\n this._headersCapability = new i.PromiseCapability();\n this._disableRange = e.disableRange || !1;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._abortController = new AbortController();\n this._isStreamingSupported = !e.disableStream;\n this._isRangeSupported = !e.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const n = e.url;\n fetch(n, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, n);\n this._reader = t.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = e => t.headers.get(e),\n {\n allowRangeRequests: e,\n suggestedLength: s\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = e;\n this._contentLength = s || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n !this._isStreamingSupported && this._isRangeSupported && this.cancel(new i.AbortException(\"Streaming is disabled.\"));\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress;\n await this._headersCapability.promise;\n const {\n value: t,\n done: e\n } = await this._reader.read();\n if (e) return {\n value: t,\n done: e\n };\n this._loaded += t.byteLength;\n (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, {\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(t),\n done: !1\n };\n }\n cancel(t) {\n var _this$_reader;\n (_this$_reader = this._reader) === null || _this$_reader === void 0 ? void 0 : _this$_reader.cancel(t);\n this._abortController.abort();\n }\n }\n class PDFFetchStreamRangeReader {\n constructor(t, e, n) {\n this._stream = t;\n this._reader = null;\n this._loaded = 0;\n const s = t.source;\n this._withCredentials = s.withCredentials || !1;\n this._readCapability = new i.PromiseCapability();\n this._isStreamingSupported = !s.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", \"bytes=\".concat(e, \"-\").concat(n - 1));\n const a = s.url;\n fetch(a, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, a);\n this._readCapability.resolve();\n this._reader = t.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress2;\n await this._readCapability.promise;\n const {\n value: t,\n done: e\n } = await this._reader.read();\n if (e) return {\n value: t,\n done: e\n };\n this._loaded += t.byteLength;\n (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, {\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(t),\n done: !1\n };\n }\n cancel(t) {\n var _this$_reader2;\n (_this$_reader2 = this._reader) === null || _this$_reader2 === void 0 ? void 0 : _this$_reader2.cancel(t);\n this._abortController.abort();\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.createResponseStatusError = function createResponseStatusError(t, e) {\n if (404 === t || 0 === t && e.startsWith(\"file:\")) return new i.MissingPDFException('Missing PDF \"' + e + '\".');\n return new i.UnexpectedResponseException(\"Unexpected server response (\".concat(t, \") while retrieving PDF \\\"\").concat(e, \"\\\".\"), t);\n };\n e.extractFilenameFromHeader = function extractFilenameFromHeader(t) {\n const e = t(\"Content-Disposition\");\n if (e) {\n let t = (0, r.getFilenameFromContentDispositionHeader)(e);\n if (t.includes(\"%\")) try {\n t = decodeURIComponent(t);\n } catch (_unused12) {}\n if ((0, s.isPdfFile)(t)) return t;\n }\n return null;\n };\n e.validateRangeRequestCapabilities = function validateRangeRequestCapabilities(t) {\n let {\n getResponseHeader: e,\n isHttp: n,\n rangeChunkSize: i,\n disableRange: r\n } = t;\n const s = {\n allowRangeRequests: !1,\n suggestedLength: void 0\n },\n a = parseInt(e(\"Content-Length\"), 10);\n if (!Number.isInteger(a)) return s;\n s.suggestedLength = a;\n if (a <= 2 * i) return s;\n if (r || !n) return s;\n if (\"bytes\" !== e(\"Accept-Ranges\")) return s;\n if (\"identity\" !== (e(\"Content-Encoding\") || \"identity\")) return s;\n s.allowRangeRequests = !0;\n return s;\n };\n e.validateResponseStatus = function validateResponseStatus(t) {\n return 200 === t || 206 === t;\n };\n var i = n(1),\n r = n(182),\n s = n(167);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(t) {\n let e = !0,\n n = toParamRegExp(\"filename\\\\*\", \"i\").exec(t);\n if (n) {\n n = n[1];\n let t = rfc2616unquote(n);\n t = unescape(t);\n t = rfc5987decode(t);\n t = rfc2047decode(t);\n return fixupEncoding(t);\n }\n n = function rfc2231getparam(t) {\n const e = [];\n let n;\n const i = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n for (; null !== (n = i.exec(t));) {\n let [, t, i, r] = n;\n t = parseInt(t, 10);\n if (t in e) {\n if (0 === t) break;\n } else e[t] = [i, r];\n }\n const r = [];\n for (let t = 0; t < e.length && t in e; ++t) {\n let [n, i] = e[t];\n i = rfc2616unquote(i);\n if (n) {\n i = unescape(i);\n 0 === t && (i = rfc5987decode(i));\n }\n r.push(i);\n }\n return r.join(\"\");\n }(t);\n if (n) {\n return fixupEncoding(rfc2047decode(n));\n }\n n = toParamRegExp(\"filename\", \"i\").exec(t);\n if (n) {\n n = n[1];\n let t = rfc2616unquote(n);\n t = rfc2047decode(t);\n return fixupEncoding(t);\n }\n function toParamRegExp(t, e) {\n return new RegExp(\"(?:^|;)\\\\s*\" + t + '\\\\s*=\\\\s*([^\";\\\\s][^;\\\\s]*|\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?)', e);\n }\n function textdecode(t, n) {\n if (t) {\n if (!/^[\\x00-\\xFF]+$/.test(n)) return n;\n try {\n const r = new TextDecoder(t, {\n fatal: !0\n }),\n s = (0, i.stringToBytes)(n);\n n = r.decode(s);\n e = !1;\n } catch (_unused13) {}\n }\n return n;\n }\n function fixupEncoding(t) {\n if (e && /[\\x80-\\xff]/.test(t)) {\n t = textdecode(\"utf-8\", t);\n e && (t = textdecode(\"iso-8859-1\", t));\n }\n return t;\n }\n function rfc2616unquote(t) {\n if (t.startsWith('\"')) {\n const e = t.slice(1).split('\\\\\"');\n for (let t = 0; t < e.length; ++t) {\n const n = e[t].indexOf('\"');\n if (-1 !== n) {\n e[t] = e[t].slice(0, n);\n e.length = t + 1;\n }\n e[t] = e[t].replaceAll(/\\\\(.)/g, \"$1\");\n }\n t = e.join('\"');\n }\n return t;\n }\n function rfc5987decode(t) {\n const e = t.indexOf(\"'\");\n if (-1 === e) return t;\n return textdecode(t.slice(0, e), t.slice(e + 1).replace(/^[^']*'/, \"\"));\n }\n function rfc2047decode(t) {\n return !t.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(t) ? t : t.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (t, e, n, i) {\n if (\"q\" === n || \"Q\" === n) return textdecode(e, i = (i = i.replaceAll(\"_\", \" \")).replaceAll(/=([0-9a-fA-F]{2})/g, function (t, e) {\n return String.fromCharCode(parseInt(e, 16));\n }));\n try {\n i = atob(i);\n } catch (_unused14) {}\n return textdecode(e, i);\n });\n }\n return \"\";\n };\n n(89);\n n(148);\n var i = n(1);\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFNetworkStream = void 0;\n n(89);\n var i = n(1),\n r = n(181);\n class NetworkManager {\n constructor(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n this.url = t;\n this.isHttp = /^https?:/i.test(t);\n this.httpHeaders = this.isHttp && e.httpHeaders || Object.create(null);\n this.withCredentials = e.withCredentials || !1;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(t, e, n) {\n const i = {\n begin: t,\n end: e\n };\n for (const t in n) i[t] = n[t];\n return this.request(i);\n }\n requestFull(t) {\n return this.request(t);\n }\n request(t) {\n const e = new XMLHttpRequest(),\n n = this.currXhrId++,\n i = this.pendingRequests[n] = {\n xhr: e\n };\n e.open(\"GET\", this.url, !0);\n e.withCredentials = this.withCredentials;\n for (const t in this.httpHeaders) {\n const n = this.httpHeaders[t];\n void 0 !== n && e.setRequestHeader(t, n);\n }\n if (this.isHttp && \"begin\" in t && \"end\" in t) {\n e.setRequestHeader(\"Range\", \"bytes=\".concat(t.begin, \"-\").concat(t.end - 1));\n i.expectedStatus = 206;\n } else i.expectedStatus = 200;\n e.responseType = \"arraybuffer\";\n t.onError && (e.onerror = function (n) {\n t.onError(e.status);\n });\n e.onreadystatechange = this.onStateChange.bind(this, n);\n e.onprogress = this.onProgress.bind(this, n);\n i.onHeadersReceived = t.onHeadersReceived;\n i.onDone = t.onDone;\n i.onError = t.onError;\n i.onProgress = t.onProgress;\n e.send(null);\n return n;\n }\n onProgress(t, e) {\n var _n$onProgress;\n const n = this.pendingRequests[t];\n n && ((_n$onProgress = n.onProgress) === null || _n$onProgress === void 0 ? void 0 : _n$onProgress.call(n, e));\n }\n onStateChange(t, e) {\n var _n$onError3;\n const n = this.pendingRequests[t];\n if (!n) return;\n const r = n.xhr;\n if (r.readyState >= 2 && n.onHeadersReceived) {\n n.onHeadersReceived();\n delete n.onHeadersReceived;\n }\n if (4 !== r.readyState) return;\n if (!(t in this.pendingRequests)) return;\n delete this.pendingRequests[t];\n if (0 === r.status && this.isHttp) {\n var _n$onError;\n (_n$onError = n.onError) === null || _n$onError === void 0 ? void 0 : _n$onError.call(n, r.status);\n return;\n }\n const s = r.status || 200;\n if (!(200 === s && 206 === n.expectedStatus) && s !== n.expectedStatus) {\n var _n$onError2;\n (_n$onError2 = n.onError) === null || _n$onError2 === void 0 ? void 0 : _n$onError2.call(n, r.status);\n return;\n }\n const a = function getArrayBuffer(t) {\n const e = t.response;\n return \"string\" != typeof e ? e : (0, i.stringToBytes)(e).buffer;\n }(r);\n if (206 === s) {\n const t = r.getResponseHeader(\"Content-Range\"),\n e = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(t);\n n.onDone({\n begin: parseInt(e[1], 10),\n chunk: a\n });\n } else a ? n.onDone({\n begin: 0,\n chunk: a\n }) : (_n$onError3 = n.onError) === null || _n$onError3 === void 0 ? void 0 : _n$onError3.call(n, r.status);\n }\n getRequestXhr(t) {\n return this.pendingRequests[t].xhr;\n }\n isPendingRequest(t) {\n return t in this.pendingRequests;\n }\n abortRequest(t) {\n const e = this.pendingRequests[t].xhr;\n delete this.pendingRequests[t];\n e.abort();\n }\n }\n e.PDFNetworkStream = class PDFNetworkStream {\n constructor(t) {\n this._source = t;\n this._manager = new NetworkManager(t.url, {\n httpHeaders: t.httpHeaders,\n withCredentials: t.withCredentials\n });\n this._rangeChunkSize = t.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(t) {\n const e = this._rangeRequestReaders.indexOf(t);\n e >= 0 && this._rangeRequestReaders.splice(e, 1);\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n const n = new PDFNetworkStreamRangeRequestReader(this._manager, t, e);\n n.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea10;\n (_this$_fullRequestRea10 = this._fullRequestReader) === null || _this$_fullRequestRea10 === void 0 ? void 0 : _this$_fullRequestRea10.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class PDFNetworkStreamFullRequestReader {\n constructor(t, e) {\n this._manager = t;\n const n = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = e.url;\n this._fullRequestId = t.requestFull(n);\n this._headersReceivedCapability = new i.PromiseCapability();\n this._disableRange = e.disableRange || !1;\n this._contentLength = e.length;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._isStreamingSupported = !1;\n this._isRangeSupported = !1;\n this._cachedChunks = [];\n this._requests = [];\n this._done = !1;\n this._storedError = void 0;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const t = this._fullRequestId,\n e = this._manager.getRequestXhr(t),\n getResponseHeader = t => e.getResponseHeader(t),\n {\n allowRangeRequests: n,\n suggestedLength: i\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n n && (this._isRangeSupported = !0);\n this._contentLength = i || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n this._isRangeSupported && this._manager.abortRequest(t);\n this._headersReceivedCapability.resolve();\n }\n _onDone(t) {\n if (t) if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: t.chunk,\n done: !1\n });\n } else this._cachedChunks.push(t.chunk);\n this._done = !0;\n if (!(this._cachedChunks.length > 0)) {\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n }\n }\n _onError(t) {\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const t of this._requests) t.reject(this._storedError);\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(t) {\n var _this$onProgress3;\n (_this$onProgress3 = this.onProgress) === null || _this$onProgress3 === void 0 ? void 0 : _this$onProgress3.call(this, {\n loaded: t.loaded,\n total: t.lengthComputable ? t.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) throw this._storedError;\n if (this._cachedChunks.length > 0) {\n return {\n value: this._cachedChunks.shift(),\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n this._headersReceivedCapability.reject(t);\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);\n this._fullRequestReader = null;\n }\n }\n class PDFNetworkStreamRangeRequestReader {\n constructor(t, e, n) {\n this._manager = t;\n const i = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = t.url;\n this._requestId = t.requestRange(e, n, i);\n this._requests = [];\n this._queuedChunk = null;\n this._done = !1;\n this._storedError = void 0;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n var _this$onClosed;\n (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this);\n }\n _onDone(t) {\n const e = t.chunk;\n if (this._requests.length > 0) {\n this._requests.shift().resolve({\n value: e,\n done: !1\n });\n } else this._queuedChunk = e;\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._close();\n }\n _onError(t) {\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\n for (const t of this._requests) t.reject(this._storedError);\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(t) {\n var _this$onProgress4;\n this.isStreamingSupported || ((_this$onProgress4 = this.onProgress) === null || _this$onProgress4 === void 0 ? void 0 : _this$onProgress4.call(this, {\n loaded: t.loaded\n }));\n }\n get isStreamingSupported() {\n return !1;\n }\n async read() {\n if (this._storedError) throw this._storedError;\n if (null !== this._queuedChunk) {\n const t = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: t,\n done: !1\n };\n }\n if (this._done) return {\n value: void 0,\n done: !0\n };\n const t = new i.PromiseCapability();\n this._requests.push(t);\n return t.promise;\n }\n cancel(t) {\n this._done = !0;\n for (const t of this._requests) t.resolve({\n value: void 0,\n done: !0\n });\n this._requests.length = 0;\n this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);\n this._close();\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.PDFNodeStream = void 0;\n n(89);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n var i = n(1),\n r = n(181);\n const s = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n e.PDFNodeStream = class PDFNodeStream {\n constructor(t) {\n this.source = t;\n this.url = function parseUrl(t) {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'url'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\n n = e.parse(t);\n if (\"file:\" === n.protocol || n.host) return n;\n if (/^[a-z]:[/\\\\]/i.test(t)) return e.parse(\"file:///\".concat(t));\n n.host || (n.protocol = \"file:\");\n return n;\n }(t.url);\n this.isHttp = \"http:\" === this.url.protocol || \"https:\" === this.url.protocol;\n this.isFsUrl = \"file:\" === this.url.protocol;\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n var _this$_fullRequestRea11, _this$_fullRequestRea12;\n return (_this$_fullRequestRea11 = (_this$_fullRequestRea12 = this._fullRequestReader) === null || _this$_fullRequestRea12 === void 0 ? void 0 : _this$_fullRequestRea12._loaded) !== null && _this$_fullRequestRea11 !== void 0 ? _this$_fullRequestRea11 : 0;\n }\n getFullReader() {\n (0, i.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(t, e) {\n if (e <= this._progressiveDataLength) return null;\n const n = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, t, e) : new PDFNodeStreamRangeReader(this, t, e);\n this._rangeRequestReaders.push(n);\n return n;\n }\n cancelAllRequests(t) {\n var _this$_fullRequestRea13;\n (_this$_fullRequestRea13 = this._fullRequestReader) === null || _this$_fullRequestRea13 === void 0 ? void 0 : _this$_fullRequestRea13.cancel(t);\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\n }\n };\n class BaseFullReader {\n constructor(t) {\n this._url = t.url;\n this._done = !1;\n this._storedError = null;\n this.onProgress = null;\n const e = t.source;\n this._contentLength = e.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = e.disableRange || !1;\n this._rangeChunkSize = e.rangeChunkSize;\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\n this._isStreamingSupported = !e.disableStream;\n this._isRangeSupported = !e.disableRange;\n this._readableStream = null;\n this._readCapability = new i.PromiseCapability();\n this._headersCapability = new i.PromiseCapability();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress5;\n await this._readCapability.promise;\n if (this._done) return {\n value: void 0,\n done: !0\n };\n if (this._storedError) throw this._storedError;\n const t = this._readableStream.read();\n if (null === t) {\n this._readCapability = new i.PromiseCapability();\n return this.read();\n }\n this._loaded += t.length;\n (_this$onProgress5 = this.onProgress) === null || _this$onProgress5 === void 0 ? void 0 : _this$onProgress5.call(this, {\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: new Uint8Array(t).buffer,\n done: !1\n };\n }\n cancel(t) {\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\n }\n _error(t) {\n this._storedError = t;\n this._readCapability.resolve();\n }\n _setReadableStream(t) {\n this._readableStream = t;\n t.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n t.on(\"end\", () => {\n t.destroy();\n this._done = !0;\n this._readCapability.resolve();\n });\n t.on(\"error\", t => {\n this._error(t);\n });\n !this._isStreamingSupported && this._isRangeSupported && this._error(new i.AbortException(\"streaming is disabled\"));\n this._storedError && this._readableStream.destroy(this._storedError);\n }\n }\n class BaseRangeReader {\n constructor(t) {\n this._url = t.url;\n this._done = !1;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new i.PromiseCapability();\n const e = t.source;\n this._isStreamingSupported = !e.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n var _this$onProgress6;\n await this._readCapability.promise;\n if (this._done) return {\n value: void 0,\n done: !0\n };\n if (this._storedError) throw this._storedError;\n const t = this._readableStream.read();\n if (null === t) {\n this._readCapability = new i.PromiseCapability();\n return this.read();\n }\n this._loaded += t.length;\n (_this$onProgress6 = this.onProgress) === null || _this$onProgress6 === void 0 ? void 0 : _this$onProgress6.call(this, {\n loaded: this._loaded\n });\n return {\n value: new Uint8Array(t).buffer,\n done: !1\n };\n }\n cancel(t) {\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\n }\n _error(t) {\n this._storedError = t;\n this._readCapability.resolve();\n }\n _setReadableStream(t) {\n this._readableStream = t;\n t.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n t.on(\"end\", () => {\n t.destroy();\n this._done = !0;\n this._readCapability.resolve();\n });\n t.on(\"error\", t => {\n this._error(t);\n });\n this._storedError && this._readableStream.destroy(this._storedError);\n }\n }\n function createRequestOptions(t, e) {\n return {\n protocol: t.protocol,\n auth: t.auth,\n host: t.hostname,\n port: t.port,\n path: t.path,\n method: \"GET\",\n headers: e\n };\n }\n class PDFNodeStreamFullReader extends BaseFullReader {\n constructor(t) {\n super(t);\n const handleResponse = e => {\n if (404 === e.statusCode) {\n const t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(this._url, \"\\\".\"));\n this._storedError = t;\n this._headersCapability.reject(t);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(e);\n const getResponseHeader = t => this._readableStream.headers[t.toLowerCase()],\n {\n allowRangeRequests: n,\n suggestedLength: s\n } = (0, r.validateRangeRequestCapabilities)({\n getResponseHeader: getResponseHeader,\n isHttp: t.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = n;\n this._contentLength = s || this._contentLength;\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\n };\n this._request = null;\n if (\"http:\" === this._url.protocol) {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'http'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\n } else {\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'https'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", t => {\n this._storedError = t;\n this._headersCapability.reject(t);\n });\n this._request.end();\n }\n }\n class PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(t, e, n) {\n super(t);\n this._httpHeaders = {};\n for (const e in t.httpHeaders) {\n const n = t.httpHeaders[e];\n void 0 !== n && (this._httpHeaders[e] = n);\n }\n this._httpHeaders.Range = \"bytes=\".concat(e, \"-\").concat(n - 1);\n const handleResponse = t => {\n if (404 !== t.statusCode) this._setReadableStream(t);else {\n const t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(this._url, \"\\\".\"));\n this._storedError = t;\n }\n };\n this._request = null;\n if (\"http:\" === this._url.protocol) {\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'http'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'https'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", t => {\n this._storedError = t;\n });\n this._request.end();\n }\n }\n class PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(t) {\n super(t);\n let e = decodeURIComponent(this._url.path);\n s.test(this._url.href) && (e = e.replace(/^\\//, \"\"));\n const n = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n n.lstat(e, (t, r) => {\n if (t) {\n \"ENOENT\" === t.code && (t = new i.MissingPDFException(\"Missing PDF \\\"\".concat(e, \"\\\".\")));\n this._storedError = t;\n this._headersCapability.reject(t);\n } else {\n this._contentLength = r.size;\n this._setReadableStream(n.createReadStream(e));\n this._headersCapability.resolve();\n }\n });\n }\n }\n class PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(t, e, n) {\n super(t);\n let i = decodeURIComponent(this._url.path);\n s.test(this._url.href) && (i = i.replace(/^\\//, \"\"));\n const r = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'fs'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\n this._setReadableStream(r.createReadStream(i, {\n start: e,\n end: n - 1\n }));\n }\n }\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.SVGGraphics = void 0;\n n(84);\n n(86);\n n(87);\n n(93);\n n(101);\n n(102);\n n(105);\n n(107);\n n(109);\n n(113);\n n(116);\n n(123);\n n(2);\n n(89);\n n(186);\n var i = n(167),\n r = n(1);\n const s = \"normal\",\n a = \"normal\",\n o = \"#000000\",\n l = [\"butt\", \"round\", \"square\"],\n c = [\"miter\", \"round\", \"bevel\"],\n createObjectURL = function createObjectURL(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\",\n n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n if (URL.createObjectURL && \"undefined\" != typeof Blob && !n) return URL.createObjectURL(new Blob([t], {\n type: e\n }));\n const i = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let r = \"data:\".concat(e, \";base64,\");\n for (let e = 0, n = t.length; e < n; e += 3) {\n const s = 255 & t[e],\n a = 255 & t[e + 1],\n o = 255 & t[e + 2];\n r += i[s >> 2] + i[(3 & s) << 4 | a >> 4] + i[e + 1 < n ? (15 & a) << 2 | o >> 6 : 64] + i[e + 2 < n ? 63 & o : 64];\n }\n return r;\n },\n h = function () {\n const t = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]),\n e = new Int32Array(256);\n for (let t = 0; t < 256; t++) {\n let n = t;\n for (let t = 0; t < 8; t++) n = 1 & n ? 3988292384 ^ n >> 1 & 2147483647 : n >> 1 & 2147483647;\n e[t] = n;\n }\n function writePngChunk(t, n, i, r) {\n let s = r;\n const a = n.length;\n i[s] = a >> 24 & 255;\n i[s + 1] = a >> 16 & 255;\n i[s + 2] = a >> 8 & 255;\n i[s + 3] = 255 & a;\n s += 4;\n i[s] = 255 & t.charCodeAt(0);\n i[s + 1] = 255 & t.charCodeAt(1);\n i[s + 2] = 255 & t.charCodeAt(2);\n i[s + 3] = 255 & t.charCodeAt(3);\n s += 4;\n i.set(n, s);\n s += n.length;\n const o = function crc32(t, n, i) {\n let r = -1;\n for (let s = n; s < i; s++) {\n const n = 255 & (r ^ t[s]);\n r = r >>> 8 ^ e[n];\n }\n return -1 ^ r;\n }(i, r + 4, s);\n i[s] = o >> 24 & 255;\n i[s + 1] = o >> 16 & 255;\n i[s + 2] = o >> 8 & 255;\n i[s + 3] = 255 & o;\n }\n function deflateSyncUncompressed(t) {\n let e = t.length;\n const n = 65535,\n i = Math.ceil(e / n),\n r = new Uint8Array(2 + e + 5 * i + 4);\n let s = 0;\n r[s++] = 120;\n r[s++] = 156;\n let a = 0;\n for (; e > n;) {\n r[s++] = 0;\n r[s++] = 255;\n r[s++] = 255;\n r[s++] = 0;\n r[s++] = 0;\n r.set(t.subarray(a, a + n), s);\n s += n;\n a += n;\n e -= n;\n }\n r[s++] = 1;\n r[s++] = 255 & e;\n r[s++] = e >> 8 & 255;\n r[s++] = 255 & ~e;\n r[s++] = (65535 & ~e) >> 8 & 255;\n r.set(t.subarray(a), s);\n s += t.length - a;\n const o = function adler32(t, e, n) {\n let i = 1,\n r = 0;\n for (let s = e; s < n; ++s) {\n i = (i + (255 & t[s])) % 65521;\n r = (r + i) % 65521;\n }\n return r << 16 | i;\n }(t, 0, t.length);\n r[s++] = o >> 24 & 255;\n r[s++] = o >> 16 & 255;\n r[s++] = o >> 8 & 255;\n r[s++] = 255 & o;\n return r;\n }\n function encode(e, n, i, s) {\n const a = e.width,\n o = e.height;\n let l, c, h;\n const d = e.data;\n switch (n) {\n case r.ImageKind.GRAYSCALE_1BPP:\n c = 0;\n l = 1;\n h = a + 7 >> 3;\n break;\n case r.ImageKind.RGB_24BPP:\n c = 2;\n l = 8;\n h = 3 * a;\n break;\n case r.ImageKind.RGBA_32BPP:\n c = 6;\n l = 8;\n h = 4 * a;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n const u = new Uint8Array((1 + h) * o);\n let p = 0,\n f = 0;\n for (let t = 0; t < o; ++t) {\n u[p++] = 0;\n u.set(d.subarray(f, f + h), p);\n f += h;\n p += h;\n }\n if (n === r.ImageKind.GRAYSCALE_1BPP && s) {\n p = 0;\n for (let t = 0; t < o; t++) {\n p++;\n for (let t = 0; t < h; t++) u[p++] ^= 255;\n }\n }\n const g = new Uint8Array([a >> 24 & 255, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l, c, 0, 0, 0]),\n m = function deflateSync(t) {\n if (!r.isNodeJS) return deflateSyncUncompressed(t);\n try {\n const e = parseInt(process.versions.node) >= 8 ? t : Buffer.from(t),\n n = Object(function webpackMissingModule() { var e = new Error(\"Cannot find module 'zlib'\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(e, {\n level: 9\n });\n return n instanceof Uint8Array ? n : new Uint8Array(n);\n } catch (t) {\n (0, r.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + t);\n }\n return deflateSyncUncompressed(t);\n }(u),\n b = t.length + 36 + g.length + m.length,\n v = new Uint8Array(b);\n let y = 0;\n v.set(t, y);\n y += t.length;\n writePngChunk(\"IHDR\", g, v, y);\n y += 12 + g.length;\n writePngChunk(\"IDATA\", m, v, y);\n y += 12 + m.length;\n writePngChunk(\"IEND\", new Uint8Array(0), v, y);\n return createObjectURL(v, \"image/png\", i);\n }\n return function convertImgDataToPng(t, e, n) {\n return encode(t, void 0 === t.kind ? r.ImageKind.GRAYSCALE_1BPP : t.kind, e, n);\n };\n }();\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = a;\n this.fontSize = 0;\n this.textMatrix = r.IDENTITY_MATRIX;\n this.fontMatrix = r.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = r.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = o;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n clone() {\n return Object.create(this);\n }\n setCurrentPoint(t, e) {\n this.x = t;\n this.y = e;\n }\n }\n function pf(t) {\n if (Number.isInteger(t)) return t.toString();\n const e = t.toFixed(10);\n let n = e.length - 1;\n if (\"0\" !== e[n]) return e;\n do {\n n--;\n } while (\"0\" === e[n]);\n return e.substring(0, \".\" === e[n] ? n : n + 1);\n }\n function pm(t) {\n if (0 === t[4] && 0 === t[5]) {\n if (0 === t[1] && 0 === t[2]) return 1 === t[0] && 1 === t[3] ? \"\" : \"scale(\".concat(pf(t[0]), \" \").concat(pf(t[3]), \")\");\n if (t[0] === t[3] && t[1] === -t[2]) {\n return \"rotate(\".concat(pf(180 * Math.acos(t[0]) / Math.PI), \")\");\n }\n } else if (1 === t[0] && 0 === t[1] && 0 === t[2] && 1 === t[3]) return \"translate(\".concat(pf(t[4]), \" \").concat(pf(t[5]), \")\");\n return \"matrix(\".concat(pf(t[0]), \" \").concat(pf(t[1]), \" \").concat(pf(t[2]), \" \").concat(pf(t[3]), \" \").concat(pf(t[4]), \" \").concat(pf(t[5]), \")\");\n }\n let d = 0,\n u = 0,\n p = 0;\n e.SVGGraphics = class SVGGraphics {\n constructor(t, e) {\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n (0, i.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new i.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = r.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = t;\n this.objs = e;\n this.pendingClip = null;\n this.pendingEOFill = !1;\n this.embedFonts = !1;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!n;\n this._operatorIdMapping = [];\n for (const t in r.OPS) this._operatorIdMapping[r.OPS[t]] = t;\n }\n getObject(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return \"string\" == typeof t ? t.startsWith(\"g_\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\n }\n save() {\n this.transformStack.push(this.transformMatrix);\n const t = this.current;\n this.extraStack.push(t);\n this.current = t.clone();\n }\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n group(t) {\n this.save();\n this.executeOpTree(t);\n this.restore();\n }\n loadDependencies(t) {\n const e = t.fnArray,\n n = t.argsArray;\n for (let t = 0, i = e.length; t < i; t++) if (e[t] === r.OPS.dependency) for (const e of n[t]) {\n const t = e.startsWith(\"g_\") ? this.commonObjs : this.objs,\n n = new Promise(n => {\n t.get(e, n);\n });\n this.current.dependencies.push(n);\n }\n return Promise.all(this.current.dependencies);\n }\n transform(t, e, n, i, s, a) {\n const o = [t, e, n, i, s, a];\n this.transformMatrix = r.Util.transform(this.transformMatrix, o);\n this.tgrp = null;\n }\n getSVG(t, e) {\n this.viewport = e;\n const n = this._initialize(e);\n return this.loadDependencies(t).then(() => {\n this.transformMatrix = r.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(t));\n return n;\n });\n }\n convertOpList(t) {\n const e = this._operatorIdMapping,\n n = t.argsArray,\n i = t.fnArray,\n r = [];\n for (let t = 0, s = i.length; t < s; t++) {\n const s = i[t];\n r.push({\n fnId: s,\n fn: e[s],\n args: n[t]\n });\n }\n return function opListToTree(t) {\n let e = [];\n const n = [];\n for (const i of t) if (\"save\" !== i.fn) \"restore\" === i.fn ? e = n.pop() : e.push(i);else {\n e.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n n.push(e);\n e = e.at(-1).items;\n }\n return e;\n }(r);\n }\n executeOpTree(t) {\n for (const e of t) {\n const t = e.fn,\n n = e.fnId,\n i = e.args;\n switch (0 | n) {\n case r.OPS.beginText:\n this.beginText();\n break;\n case r.OPS.dependency:\n break;\n case r.OPS.setLeading:\n this.setLeading(i);\n break;\n case r.OPS.setLeadingMoveText:\n this.setLeadingMoveText(i[0], i[1]);\n break;\n case r.OPS.setFont:\n this.setFont(i);\n break;\n case r.OPS.showText:\n case r.OPS.showSpacedText:\n this.showText(i[0]);\n break;\n case r.OPS.endText:\n this.endText();\n break;\n case r.OPS.moveText:\n this.moveText(i[0], i[1]);\n break;\n case r.OPS.setCharSpacing:\n this.setCharSpacing(i[0]);\n break;\n case r.OPS.setWordSpacing:\n this.setWordSpacing(i[0]);\n break;\n case r.OPS.setHScale:\n this.setHScale(i[0]);\n break;\n case r.OPS.setTextMatrix:\n this.setTextMatrix(i[0], i[1], i[2], i[3], i[4], i[5]);\n break;\n case r.OPS.setTextRise:\n this.setTextRise(i[0]);\n break;\n case r.OPS.setTextRenderingMode:\n this.setTextRenderingMode(i[0]);\n break;\n case r.OPS.setLineWidth:\n this.setLineWidth(i[0]);\n break;\n case r.OPS.setLineJoin:\n this.setLineJoin(i[0]);\n break;\n case r.OPS.setLineCap:\n this.setLineCap(i[0]);\n break;\n case r.OPS.setMiterLimit:\n this.setMiterLimit(i[0]);\n break;\n case r.OPS.setFillRGBColor:\n this.setFillRGBColor(i[0], i[1], i[2]);\n break;\n case r.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(i[0], i[1], i[2]);\n break;\n case r.OPS.setStrokeColorN:\n this.setStrokeColorN(i);\n break;\n case r.OPS.setFillColorN:\n this.setFillColorN(i);\n break;\n case r.OPS.shadingFill:\n this.shadingFill(i[0]);\n break;\n case r.OPS.setDash:\n this.setDash(i[0], i[1]);\n break;\n case r.OPS.setRenderingIntent:\n this.setRenderingIntent(i[0]);\n break;\n case r.OPS.setFlatness:\n this.setFlatness(i[0]);\n break;\n case r.OPS.setGState:\n this.setGState(i[0]);\n break;\n case r.OPS.fill:\n this.fill();\n break;\n case r.OPS.eoFill:\n this.eoFill();\n break;\n case r.OPS.stroke:\n this.stroke();\n break;\n case r.OPS.fillStroke:\n this.fillStroke();\n break;\n case r.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case r.OPS.clip:\n this.clip(\"nonzero\");\n break;\n case r.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case r.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case r.OPS.paintImageXObject:\n this.paintImageXObject(i[0]);\n break;\n case r.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(i[0]);\n break;\n case r.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(i[0]);\n break;\n case r.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(i[0], i[1]);\n break;\n case r.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case r.OPS.closePath:\n this.closePath();\n break;\n case r.OPS.closeStroke:\n this.closeStroke();\n break;\n case r.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case r.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case r.OPS.nextLine:\n this.nextLine();\n break;\n case r.OPS.transform:\n this.transform(i[0], i[1], i[2], i[3], i[4], i[5]);\n break;\n case r.OPS.constructPath:\n this.constructPath(i[0], i[1]);\n break;\n case r.OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(e.items);\n break;\n default:\n (0, r.warn)(\"Unimplemented operator \".concat(t));\n }\n }\n }\n setWordSpacing(t) {\n this.current.wordSpacing = t;\n }\n setCharSpacing(t) {\n this.current.charSpacing = t;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n setTextMatrix(t, e, n, i, r, s) {\n const a = this.current;\n a.textMatrix = a.lineMatrix = [t, e, n, i, r, s];\n a.textMatrixScale = Math.hypot(t, e);\n a.x = a.lineX = 0;\n a.y = a.lineY = 0;\n a.xcoords = [];\n a.ycoords = [];\n a.tspan = this.svgFactory.createElement(\"svg:tspan\");\n a.tspan.setAttributeNS(null, \"font-family\", a.fontFamily);\n a.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(a.fontSize), \"px\"));\n a.tspan.setAttributeNS(null, \"y\", pf(-a.y));\n a.txtElement = this.svgFactory.createElement(\"svg:text\");\n a.txtElement.append(a.tspan);\n }\n beginText() {\n const t = this.current;\n t.x = t.lineX = 0;\n t.y = t.lineY = 0;\n t.textMatrix = r.IDENTITY_MATRIX;\n t.lineMatrix = r.IDENTITY_MATRIX;\n t.textMatrixScale = 1;\n t.tspan = this.svgFactory.createElement(\"svg:tspan\");\n t.txtElement = this.svgFactory.createElement(\"svg:text\");\n t.txtgrp = this.svgFactory.createElement(\"svg:g\");\n t.xcoords = [];\n t.ycoords = [];\n }\n moveText(t, e) {\n const n = this.current;\n n.x = n.lineX += t;\n n.y = n.lineY += e;\n n.xcoords = [];\n n.ycoords = [];\n n.tspan = this.svgFactory.createElement(\"svg:tspan\");\n n.tspan.setAttributeNS(null, \"font-family\", n.fontFamily);\n n.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(n.fontSize), \"px\"));\n n.tspan.setAttributeNS(null, \"y\", pf(-n.y));\n }\n showText(t) {\n const e = this.current,\n n = e.font,\n i = e.fontSize;\n if (0 === i) return;\n const l = e.fontSizeScale,\n c = e.charSpacing,\n h = e.wordSpacing,\n d = e.fontDirection,\n u = e.textHScale * d,\n p = n.vertical,\n f = p ? 1 : -1,\n g = n.defaultVMetrics,\n m = i * e.fontMatrix[0];\n let b = 0;\n for (const r of t) {\n if (null === r) {\n b += d * h;\n continue;\n }\n if (\"number\" == typeof r) {\n b += f * r * i / 1e3;\n continue;\n }\n const t = (r.isSpace ? h : 0) + c,\n s = r.fontChar;\n let a,\n o,\n u = r.width;\n if (p) {\n let t;\n const e = r.vmetric || g;\n t = r.vmetric ? e[1] : .5 * u;\n t = -t * m;\n const n = e[2] * m;\n u = e ? -e[0] : u;\n a = t / l;\n o = (b + n) / l;\n } else {\n a = b / l;\n o = 0;\n }\n if (r.isInFont || n.missingFile) {\n e.xcoords.push(e.x + a);\n p && e.ycoords.push(-e.y + o);\n e.tspan.textContent += s;\n }\n b += p ? u * m - t * d : u * m + t * d;\n }\n e.tspan.setAttributeNS(null, \"x\", e.xcoords.map(pf).join(\" \"));\n p ? e.tspan.setAttributeNS(null, \"y\", e.ycoords.map(pf).join(\" \")) : e.tspan.setAttributeNS(null, \"y\", pf(-e.y));\n p ? e.y -= b : e.x += b * u;\n e.tspan.setAttributeNS(null, \"font-family\", e.fontFamily);\n e.tspan.setAttributeNS(null, \"font-size\", \"\".concat(pf(e.fontSize), \"px\"));\n e.fontStyle !== s && e.tspan.setAttributeNS(null, \"font-style\", e.fontStyle);\n e.fontWeight !== a && e.tspan.setAttributeNS(null, \"font-weight\", e.fontWeight);\n const v = e.textRenderingMode & r.TextRenderingMode.FILL_STROKE_MASK;\n if (v === r.TextRenderingMode.FILL || v === r.TextRenderingMode.FILL_STROKE) {\n e.fillColor !== o && e.tspan.setAttributeNS(null, \"fill\", e.fillColor);\n e.fillAlpha < 1 && e.tspan.setAttributeNS(null, \"fill-opacity\", e.fillAlpha);\n } else e.textRenderingMode === r.TextRenderingMode.ADD_TO_PATH ? e.tspan.setAttributeNS(null, \"fill\", \"transparent\") : e.tspan.setAttributeNS(null, \"fill\", \"none\");\n if (v === r.TextRenderingMode.STROKE || v === r.TextRenderingMode.FILL_STROKE) {\n const t = 1 / (e.textMatrixScale || 1);\n this._setStrokeAttributes(e.tspan, t);\n }\n let y = e.textMatrix;\n if (0 !== e.textRise) {\n y = y.slice();\n y[5] += e.textRise;\n }\n e.txtElement.setAttributeNS(null, \"transform\", \"\".concat(pm(y), \" scale(\").concat(pf(u), \", -1)\"));\n e.txtElement.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n e.txtElement.append(e.tspan);\n e.txtgrp.append(e.txtElement);\n this._ensureTransformGroup().append(e.txtElement);\n }\n setLeadingMoveText(t, e) {\n this.setLeading(-e);\n this.moveText(t, e);\n }\n addFontStyle(t) {\n if (!t.data) throw new Error('addFontStyle: No font data available, ensure that the \"fontExtraProperties\" API parameter is set.');\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n const e = createObjectURL(t.data, t.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += \"@font-face { font-family: \\\"\".concat(t.loadedName, \"\\\"; src: url(\").concat(e, \"); }\\n\");\n }\n setFont(t) {\n const e = this.current,\n n = this.commonObjs.get(t[0]);\n let i = t[1];\n e.font = n;\n if (this.embedFonts && !n.missingFile && !this.embeddedFonts[n.loadedName]) {\n this.addFontStyle(n);\n this.embeddedFonts[n.loadedName] = n;\n }\n e.fontMatrix = n.fontMatrix || r.FONT_IDENTITY_MATRIX;\n let s = \"normal\";\n n.black ? s = \"900\" : n.bold && (s = \"bold\");\n const a = n.italic ? \"italic\" : \"normal\";\n if (i < 0) {\n i = -i;\n e.fontDirection = -1;\n } else e.fontDirection = 1;\n e.fontSize = i;\n e.fontFamily = n.loadedName;\n e.fontWeight = s;\n e.fontStyle = a;\n e.tspan = this.svgFactory.createElement(\"svg:tspan\");\n e.tspan.setAttributeNS(null, \"y\", pf(-e.y));\n e.xcoords = [];\n e.ycoords = [];\n }\n endText() {\n var _t$txtElement;\n const t = this.current;\n if (t.textRenderingMode & r.TextRenderingMode.ADD_TO_PATH_FLAG && (_t$txtElement = t.txtElement) !== null && _t$txtElement !== void 0 && _t$txtElement.hasChildNodes()) {\n t.element = t.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n setLineWidth(t) {\n t > 0 && (this.current.lineWidth = t);\n }\n setLineCap(t) {\n this.current.lineCap = l[t];\n }\n setLineJoin(t) {\n this.current.lineJoin = c[t];\n }\n setMiterLimit(t) {\n this.current.miterLimit = t;\n }\n setStrokeAlpha(t) {\n this.current.strokeAlpha = t;\n }\n setStrokeRGBColor(t, e, n) {\n this.current.strokeColor = r.Util.makeHexColor(t, e, n);\n }\n setFillAlpha(t) {\n this.current.fillAlpha = t;\n }\n setFillRGBColor(t, e, n) {\n this.current.fillColor = r.Util.makeHexColor(t, e, n);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n setStrokeColorN(t) {\n this.current.strokeColor = this._makeColorN_Pattern(t);\n }\n setFillColorN(t) {\n this.current.fillColor = this._makeColorN_Pattern(t);\n }\n shadingFill(t) {\n const {\n width: e,\n height: n\n } = this.viewport,\n i = r.Util.inverseTransform(this.transformMatrix),\n [s, a, o, l] = r.Util.getAxialAlignedBoundingBox([0, 0, e, n], i),\n c = this.svgFactory.createElement(\"svg:rect\");\n c.setAttributeNS(null, \"x\", s);\n c.setAttributeNS(null, \"y\", a);\n c.setAttributeNS(null, \"width\", o - s);\n c.setAttributeNS(null, \"height\", l - a);\n c.setAttributeNS(null, \"fill\", this._makeShadingPattern(t));\n this.current.fillAlpha < 1 && c.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n this._ensureTransformGroup().append(c);\n }\n _makeColorN_Pattern(t) {\n return \"TilingPattern\" === t[0] ? this._makeTilingPattern(t) : this._makeShadingPattern(t);\n }\n _makeTilingPattern(t) {\n const e = t[1],\n n = t[2],\n i = t[3] || r.IDENTITY_MATRIX,\n [s, a, o, l] = t[4],\n c = t[5],\n h = t[6],\n d = t[7],\n u = \"shading\" + p++,\n [f, g, m, b] = r.Util.normalizeRect([...r.Util.applyTransform([s, a], i), ...r.Util.applyTransform([o, l], i)]),\n [v, y] = r.Util.singularValueDecompose2dScale(i),\n A = c * v,\n _ = h * y,\n S = this.svgFactory.createElement(\"svg:pattern\");\n S.setAttributeNS(null, \"id\", u);\n S.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n S.setAttributeNS(null, \"width\", A);\n S.setAttributeNS(null, \"height\", _);\n S.setAttributeNS(null, \"x\", \"\".concat(f));\n S.setAttributeNS(null, \"y\", \"\".concat(g));\n const E = this.svg,\n x = this.transformMatrix,\n w = this.current.fillColor,\n C = this.current.strokeColor,\n T = this.svgFactory.create(m - f, b - g);\n this.svg = T;\n this.transformMatrix = i;\n if (2 === d) {\n const t = r.Util.makeHexColor(...e);\n this.current.fillColor = t;\n this.current.strokeColor = t;\n }\n this.executeOpTree(this.convertOpList(n));\n this.svg = E;\n this.transformMatrix = x;\n this.current.fillColor = w;\n this.current.strokeColor = C;\n S.append(T.childNodes[0]);\n this.defs.append(S);\n return \"url(#\".concat(u, \")\");\n }\n _makeShadingPattern(t) {\n \"string\" == typeof t && (t = this.objs.get(t));\n switch (t[0]) {\n case \"RadialAxial\":\n const e = \"shading\" + p++,\n n = t[3];\n let i;\n switch (t[1]) {\n case \"axial\":\n const n = t[4],\n r = t[5];\n i = this.svgFactory.createElement(\"svg:linearGradient\");\n i.setAttributeNS(null, \"id\", e);\n i.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n i.setAttributeNS(null, \"x1\", n[0]);\n i.setAttributeNS(null, \"y1\", n[1]);\n i.setAttributeNS(null, \"x2\", r[0]);\n i.setAttributeNS(null, \"y2\", r[1]);\n break;\n case \"radial\":\n const s = t[4],\n a = t[5],\n o = t[6],\n l = t[7];\n i = this.svgFactory.createElement(\"svg:radialGradient\");\n i.setAttributeNS(null, \"id\", e);\n i.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n i.setAttributeNS(null, \"cx\", a[0]);\n i.setAttributeNS(null, \"cy\", a[1]);\n i.setAttributeNS(null, \"r\", l);\n i.setAttributeNS(null, \"fx\", s[0]);\n i.setAttributeNS(null, \"fy\", s[1]);\n i.setAttributeNS(null, \"fr\", o);\n break;\n default:\n throw new Error(\"Unknown RadialAxial type: \".concat(t[1]));\n }\n for (const t of n) {\n const e = this.svgFactory.createElement(\"svg:stop\");\n e.setAttributeNS(null, \"offset\", t[0]);\n e.setAttributeNS(null, \"stop-color\", t[1]);\n i.append(e);\n }\n this.defs.append(i);\n return \"url(#\".concat(e, \")\");\n case \"Mesh\":\n (0, r.warn)(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(\"Unknown IR type: \".concat(t[0]));\n }\n }\n setDash(t, e) {\n this.current.dashArray = t;\n this.current.dashPhase = e;\n }\n constructPath(t, e) {\n const n = this.current;\n let i = n.x,\n s = n.y,\n a = [],\n o = 0;\n for (const n of t) switch (0 | n) {\n case r.OPS.rectangle:\n i = e[o++];\n s = e[o++];\n const t = i + e[o++],\n n = s + e[o++];\n a.push(\"M\", pf(i), pf(s), \"L\", pf(t), pf(s), \"L\", pf(t), pf(n), \"L\", pf(i), pf(n), \"Z\");\n break;\n case r.OPS.moveTo:\n i = e[o++];\n s = e[o++];\n a.push(\"M\", pf(i), pf(s));\n break;\n case r.OPS.lineTo:\n i = e[o++];\n s = e[o++];\n a.push(\"L\", pf(i), pf(s));\n break;\n case r.OPS.curveTo:\n i = e[o + 4];\n s = e[o + 5];\n a.push(\"C\", pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]), pf(i), pf(s));\n o += 6;\n break;\n case r.OPS.curveTo2:\n a.push(\"C\", pf(i), pf(s), pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]));\n i = e[o + 2];\n s = e[o + 3];\n o += 4;\n break;\n case r.OPS.curveTo3:\n i = e[o + 2];\n s = e[o + 3];\n a.push(\"C\", pf(e[o]), pf(e[o + 1]), pf(i), pf(s), pf(i), pf(s));\n o += 4;\n break;\n case r.OPS.closePath:\n a.push(\"Z\");\n }\n a = a.join(\" \");\n if (n.path && t.length > 0 && t[0] !== r.OPS.rectangle && t[0] !== r.OPS.moveTo) a = n.path.getAttributeNS(null, \"d\") + a;else {\n n.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(n.path);\n }\n n.path.setAttributeNS(null, \"d\", a);\n n.path.setAttributeNS(null, \"fill\", \"none\");\n n.element = n.path;\n n.setCurrentPoint(i, s);\n }\n endPath() {\n const t = this.current;\n t.path = null;\n if (!this.pendingClip) return;\n if (!t.element) {\n this.pendingClip = null;\n return;\n }\n const e = \"clippath\" + d++,\n n = this.svgFactory.createElement(\"svg:clipPath\");\n n.setAttributeNS(null, \"id\", e);\n n.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const i = t.element.cloneNode(!0);\n \"evenodd\" === this.pendingClip ? i.setAttributeNS(null, \"clip-rule\", \"evenodd\") : i.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n this.pendingClip = null;\n n.append(i);\n this.defs.append(n);\n if (t.activeClipUrl) {\n t.clipGroup = null;\n for (const t of this.extraStack) t.clipGroup = null;\n n.setAttributeNS(null, \"clip-path\", t.activeClipUrl);\n }\n t.activeClipUrl = \"url(#\".concat(e, \")\");\n this.tgrp = null;\n }\n clip(t) {\n this.pendingClip = t;\n }\n closePath() {\n const t = this.current;\n if (t.path) {\n const e = \"\".concat(t.path.getAttributeNS(null, \"d\"), \"Z\");\n t.path.setAttributeNS(null, \"d\", e);\n }\n }\n setLeading(t) {\n this.current.leading = -t;\n }\n setTextRise(t) {\n this.current.textRise = t;\n }\n setTextRenderingMode(t) {\n this.current.textRenderingMode = t;\n }\n setHScale(t) {\n this.current.textHScale = t / 100;\n }\n setRenderingIntent(t) {}\n setFlatness(t) {}\n setGState(t) {\n for (const [e, n] of t) switch (e) {\n case \"LW\":\n this.setLineWidth(n);\n break;\n case \"LC\":\n this.setLineCap(n);\n break;\n case \"LJ\":\n this.setLineJoin(n);\n break;\n case \"ML\":\n this.setMiterLimit(n);\n break;\n case \"D\":\n this.setDash(n[0], n[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(n);\n break;\n case \"FL\":\n this.setFlatness(n);\n break;\n case \"Font\":\n this.setFont(n);\n break;\n case \"CA\":\n this.setStrokeAlpha(n);\n break;\n case \"ca\":\n this.setFillAlpha(n);\n break;\n default:\n (0, r.warn)(\"Unimplemented graphic state operator \".concat(e));\n }\n }\n fill() {\n const t = this.current;\n if (t.element) {\n t.element.setAttributeNS(null, \"fill\", t.fillColor);\n t.element.setAttributeNS(null, \"fill-opacity\", t.fillAlpha);\n this.endPath();\n }\n }\n stroke() {\n const t = this.current;\n if (t.element) {\n this._setStrokeAttributes(t.element);\n t.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n _setStrokeAttributes(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\n const n = this.current;\n let i = n.dashArray;\n 1 !== e && i.length > 0 && (i = i.map(function (t) {\n return e * t;\n }));\n t.setAttributeNS(null, \"stroke\", n.strokeColor);\n t.setAttributeNS(null, \"stroke-opacity\", n.strokeAlpha);\n t.setAttributeNS(null, \"stroke-miterlimit\", pf(n.miterLimit));\n t.setAttributeNS(null, \"stroke-linecap\", n.lineCap);\n t.setAttributeNS(null, \"stroke-linejoin\", n.lineJoin);\n t.setAttributeNS(null, \"stroke-width\", pf(e * n.lineWidth) + \"px\");\n t.setAttributeNS(null, \"stroke-dasharray\", i.map(pf).join(\" \"));\n t.setAttributeNS(null, \"stroke-dashoffset\", pf(e * n.dashPhase) + \"px\");\n }\n eoFill() {\n var _this$current$element;\n (_this$current$element = this.current.element) === null || _this$current$element === void 0 ? void 0 : _this$current$element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n fillStroke() {\n this.stroke();\n this.fill();\n }\n eoFillStroke() {\n var _this$current$element2;\n (_this$current$element2 = this.current.element) === null || _this$current$element2 === void 0 ? void 0 : _this$current$element2.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n paintSolidColorImageMask() {\n const t = this.svgFactory.createElement(\"svg:rect\");\n t.setAttributeNS(null, \"x\", \"0\");\n t.setAttributeNS(null, \"y\", \"0\");\n t.setAttributeNS(null, \"width\", \"1px\");\n t.setAttributeNS(null, \"height\", \"1px\");\n t.setAttributeNS(null, \"fill\", this.current.fillColor);\n this._ensureTransformGroup().append(t);\n }\n paintImageXObject(t) {\n const e = this.getObject(t);\n e ? this.paintInlineImageXObject(e) : (0, r.warn)(\"Dependent image with object ID \".concat(t, \" is not ready yet\"));\n }\n paintInlineImageXObject(t, e) {\n const n = t.width,\n i = t.height,\n r = h(t, this.forceDataSchema, !!e),\n s = this.svgFactory.createElement(\"svg:rect\");\n s.setAttributeNS(null, \"x\", \"0\");\n s.setAttributeNS(null, \"y\", \"0\");\n s.setAttributeNS(null, \"width\", pf(n));\n s.setAttributeNS(null, \"height\", pf(i));\n this.current.element = s;\n this.clip(\"nonzero\");\n const a = this.svgFactory.createElement(\"svg:image\");\n a.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"xlink:href\", r);\n a.setAttributeNS(null, \"x\", \"0\");\n a.setAttributeNS(null, \"y\", pf(-i));\n a.setAttributeNS(null, \"width\", pf(n) + \"px\");\n a.setAttributeNS(null, \"height\", pf(i) + \"px\");\n a.setAttributeNS(null, \"transform\", \"scale(\".concat(pf(1 / n), \" \").concat(pf(-1 / i), \")\"));\n e ? e.append(a) : this._ensureTransformGroup().append(a);\n }\n paintImageMaskXObject(t) {\n const e = this.getObject(t.data, t);\n if (e.bitmap) {\n (0, r.warn)(\"paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\");\n return;\n }\n const n = this.current,\n i = e.width,\n s = e.height,\n a = n.fillColor;\n n.maskId = \"mask\" + u++;\n const o = this.svgFactory.createElement(\"svg:mask\");\n o.setAttributeNS(null, \"id\", n.maskId);\n const l = this.svgFactory.createElement(\"svg:rect\");\n l.setAttributeNS(null, \"x\", \"0\");\n l.setAttributeNS(null, \"y\", \"0\");\n l.setAttributeNS(null, \"width\", pf(i));\n l.setAttributeNS(null, \"height\", pf(s));\n l.setAttributeNS(null, \"fill\", a);\n l.setAttributeNS(null, \"mask\", \"url(#\".concat(n.maskId, \")\"));\n this.defs.append(o);\n this._ensureTransformGroup().append(l);\n this.paintInlineImageXObject(e, o);\n }\n paintFormXObjectBegin(t, e) {\n Array.isArray(t) && 6 === t.length && this.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n if (e) {\n const t = e[2] - e[0],\n n = e[3] - e[1],\n i = this.svgFactory.createElement(\"svg:rect\");\n i.setAttributeNS(null, \"x\", e[0]);\n i.setAttributeNS(null, \"y\", e[1]);\n i.setAttributeNS(null, \"width\", pf(t));\n i.setAttributeNS(null, \"height\", pf(n));\n this.current.element = i;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n paintFormXObjectEnd() {}\n _initialize(t) {\n const e = this.svgFactory.create(t.width, t.height),\n n = this.svgFactory.createElement(\"svg:defs\");\n e.append(n);\n this.defs = n;\n const i = this.svgFactory.createElement(\"svg:g\");\n i.setAttributeNS(null, \"transform\", pm(t.transform));\n e.append(i);\n this.svg = i;\n return e;\n }\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const t = this.svgFactory.createElement(\"svg:g\");\n t.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(t);\n this.current.clipGroup = t;\n }\n return this.current.clipGroup;\n }\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n this.current.activeClipUrl ? this._ensureClipGroup().append(this.tgrp) : this.svg.append(this.tgrp);\n }\n return this.tgrp;\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var i = n(3),\n r = n(187),\n s = n(192);\n i({\n target: \"Array\",\n proto: !0\n }, {\n group: function group(t) {\n return r(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n });\n s(\"group\");\n }, (t, e, n) => {\n var i = n(99),\n r = n(14),\n s = n(13),\n a = n(40),\n o = n(18),\n l = n(64),\n c = n(188),\n h = n(108),\n d = Array,\n u = r([].push);\n t.exports = function (t, e, n, r) {\n for (var p, f, g, m = a(t), b = s(m), v = i(e, n), y = c(null), A = l(b), _ = 0; A > _; _++) {\n g = b[_];\n (f = o(v(g, _, m))) in y ? u(y[f], g) : y[f] = [g];\n }\n if (r && (p = r(m)) !== d) for (f in y) y[f] = h(p, y[f]);\n return y;\n };\n }, (t, e, n) => {\n var i,\n r = n(47),\n s = n(189),\n a = n(66),\n o = n(55),\n l = n(191),\n c = n(43),\n h = n(54),\n d = \"prototype\",\n u = \"script\",\n p = h(\"IE_PROTO\"),\n EmptyConstructor = function EmptyConstructor() {},\n scriptTag = function scriptTag(t) {\n return \"<\" + u + \">\" + t + \"\";\n },\n NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(t) {\n t.write(scriptTag(\"\"));\n t.close();\n var e = t.parentWindow.Object;\n t = null;\n return e;\n },\n _NullProtoObject = function NullProtoObject() {\n try {\n i = new ActiveXObject(\"htmlfile\");\n } catch (t) {}\n _NullProtoObject = \"undefined\" != typeof document ? document.domain && i ? NullProtoObjectViaActiveX(i) : function () {\n var t,\n e = c(\"iframe\"),\n n = \"java\" + u + \":\";\n e.style.display = \"none\";\n l.appendChild(e);\n e.src = String(n);\n (t = e.contentWindow.document).open();\n t.write(scriptTag(\"document.F=Object\"));\n t.close();\n return t.F;\n }() : NullProtoObjectViaActiveX(i);\n for (var t = a.length; t--;) delete _NullProtoObject[d][a[t]];\n return _NullProtoObject();\n };\n o[p] = !0;\n t.exports = Object.create || function create(t, e) {\n var n;\n if (null !== t) {\n EmptyConstructor[d] = r(t);\n n = new EmptyConstructor();\n EmptyConstructor[d] = null;\n n[p] = t;\n } else n = _NullProtoObject();\n return void 0 === e ? n : s.f(n, e);\n };\n }, (t, e, n) => {\n var i = n(6),\n r = n(46),\n s = n(45),\n a = n(47),\n o = n(12),\n l = n(190);\n e.f = i && !r ? Object.defineProperties : function defineProperties(t, e) {\n a(t);\n for (var n, i = o(e), r = l(e), c = r.length, h = 0; c > h;) s.f(t, n = r[h++], i[n]);\n return t;\n };\n }, (t, e, n) => {\n var i = n(59),\n r = n(66);\n t.exports = Object.keys || function keys(t) {\n return i(t, r);\n };\n }, (t, e, n) => {\n var i = n(24);\n t.exports = i(\"document\", \"documentElement\");\n }, (t, e, n) => {\n var i = n(34),\n r = n(188),\n s = n(45).f,\n a = i(\"unscopables\"),\n o = Array.prototype;\n null == o[a] && s(o, a, {\n configurable: !0,\n value: r(null)\n });\n t.exports = function (t) {\n o[a][t] = !0;\n };\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.XfaText = void 0;\n n(89);\n class XfaText {\n static textContent(t) {\n const e = [],\n n = {\n items: e,\n styles: Object.create(null)\n };\n !function walk(t) {\n if (!t) return;\n let n = null;\n const i = t.name;\n if (\"#text\" === i) n = t.value;else {\n var _t$attributes;\n if (!XfaText.shouldBuildText(i)) return;\n t !== null && t !== void 0 && (_t$attributes = t.attributes) !== null && _t$attributes !== void 0 && _t$attributes.textContent ? n = t.attributes.textContent : t.value && (n = t.value);\n }\n null !== n && e.push({\n str: n\n });\n if (t.children) for (const e of t.children) walk(e);\n }(t);\n return n;\n }\n static shouldBuildText(t) {\n return !(\"textarea\" === t || \"input\" === t || \"option\" === t || \"select\" === t);\n }\n }\n e.XfaText = XfaText;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.TextLayerRenderTask = void 0;\n e.renderTextLayer = function renderTextLayer(t) {\n if (!t.textContentSource && (t.textContent || t.textContentStream)) {\n (0, r.deprecated)(\"The TextLayerRender `textContent`/`textContentStream` parameters will be removed in the future, please use `textContentSource` instead.\");\n t.textContentSource = t.textContent || t.textContentStream;\n }\n const {\n container: e,\n viewport: n\n } = t,\n i = getComputedStyle(e),\n s = i.getPropertyValue(\"visibility\"),\n a = parseFloat(i.getPropertyValue(\"--scale-factor\"));\n \"visible\" === s && (!a || Math.abs(a - n.scale) > 1e-5) && console.error(\"The `--scale-factor` CSS-variable must be set, to the same value as `viewport.scale`, either on the `container`-element itself or higher up in the DOM.\");\n const o = new TextLayerRenderTask(t);\n o._render();\n return o;\n };\n e.updateTextLayer = function updateTextLayer(t) {\n let {\n container: e,\n viewport: n,\n textDivs: i,\n textDivProperties: s,\n isOffscreenCanvasSupported: a,\n mustRotate: o = !0,\n mustRescale: l = !0\n } = t;\n o && (0, r.setLayerDimensions)(e, {\n rotation: n.rotation\n });\n if (l) {\n const t = getCtx(0, a),\n e = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: n.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: t\n };\n for (const t of i) {\n e.properties = s.get(t);\n e.div = t;\n layout(e);\n }\n }\n };\n n(89);\n n(2);\n var i = n(1),\n r = n(167);\n const s = 30,\n a = .8,\n o = new Map();\n function getCtx(t, e) {\n let n;\n if (e && i.FeatureTest.isOffscreenCanvasSupported) n = new OffscreenCanvas(t, t).getContext(\"2d\", {\n alpha: !1\n });else {\n const e = document.createElement(\"canvas\");\n e.width = e.height = t;\n n = e.getContext(\"2d\", {\n alpha: !1\n });\n }\n return n;\n }\n function appendText(t, e, n) {\n const r = document.createElement(\"span\"),\n l = {\n angle: 0,\n canvasWidth: 0,\n hasText: \"\" !== e.str,\n hasEOL: e.hasEOL,\n fontSize: 0\n };\n t._textDivs.push(r);\n const c = i.Util.transform(t._transform, e.transform);\n let h = Math.atan2(c[1], c[0]);\n const d = n[e.fontName];\n d.vertical && (h += Math.PI / 2);\n const u = Math.hypot(c[2], c[3]),\n p = u * function getAscent(t, e) {\n const n = o.get(t);\n if (n) return n;\n const i = getCtx(s, e);\n i.font = \"\".concat(s, \"px \").concat(t);\n const r = i.measureText(\"\");\n let l = r.fontBoundingBoxAscent,\n c = Math.abs(r.fontBoundingBoxDescent);\n if (l) {\n const e = l / (l + c);\n o.set(t, e);\n i.canvas.width = i.canvas.height = 0;\n return e;\n }\n i.strokeStyle = \"red\";\n i.clearRect(0, 0, s, s);\n i.strokeText(\"g\", 0, 0);\n let h = i.getImageData(0, 0, s, s).data;\n c = 0;\n for (let t = h.length - 1 - 3; t >= 0; t -= 4) if (h[t] > 0) {\n c = Math.ceil(t / 4 / s);\n break;\n }\n i.clearRect(0, 0, s, s);\n i.strokeText(\"A\", 0, s);\n h = i.getImageData(0, 0, s, s).data;\n l = 0;\n for (let t = 0, e = h.length; t < e; t += 4) if (h[t] > 0) {\n l = s - Math.floor(t / 4 / s);\n break;\n }\n i.canvas.width = i.canvas.height = 0;\n if (l) {\n const e = l / (l + c);\n o.set(t, e);\n return e;\n }\n o.set(t, a);\n return a;\n }(d.fontFamily, t._isOffscreenCanvasSupported);\n let f, g;\n if (0 === h) {\n f = c[4];\n g = c[5] - p;\n } else {\n f = c[4] + p * Math.sin(h);\n g = c[5] - p * Math.cos(h);\n }\n const m = \"calc(var(--scale-factor)*\",\n b = r.style;\n if (t._container === t._rootContainer) {\n b.left = \"\".concat((100 * f / t._pageWidth).toFixed(2), \"%\");\n b.top = \"\".concat((100 * g / t._pageHeight).toFixed(2), \"%\");\n } else {\n b.left = \"\".concat(m).concat(f.toFixed(2), \"px)\");\n b.top = \"\".concat(m).concat(g.toFixed(2), \"px)\");\n }\n b.fontSize = \"\".concat(m).concat(u.toFixed(2), \"px)\");\n b.fontFamily = d.fontFamily;\n l.fontSize = u;\n r.setAttribute(\"role\", \"presentation\");\n r.textContent = e.str;\n r.dir = e.dir;\n t._fontInspectorEnabled && (r.dataset.fontName = e.fontName);\n 0 !== h && (l.angle = h * (180 / Math.PI));\n let v = !1;\n if (e.str.length > 1) v = !0;else if (\" \" !== e.str && e.transform[0] !== e.transform[3]) {\n const t = Math.abs(e.transform[0]),\n n = Math.abs(e.transform[3]);\n t !== n && Math.max(t, n) / Math.min(t, n) > 1.5 && (v = !0);\n }\n v && (l.canvasWidth = d.vertical ? e.height : e.width);\n t._textDivProperties.set(r, l);\n t._isReadableStream && t._layoutText(r);\n }\n function layout(t) {\n const {\n div: e,\n scale: n,\n properties: i,\n ctx: r,\n prevFontSize: s,\n prevFontFamily: a\n } = t,\n {\n style: o\n } = e;\n let l = \"\";\n if (0 !== i.canvasWidth && i.hasText) {\n const {\n fontFamily: c\n } = o,\n {\n canvasWidth: h,\n fontSize: d\n } = i;\n if (s !== d || a !== c) {\n r.font = \"\".concat(d * n, \"px \").concat(c);\n t.prevFontSize = d;\n t.prevFontFamily = c;\n }\n const {\n width: u\n } = r.measureText(e.textContent);\n u > 0 && (l = \"scaleX(\".concat(h * n / u, \")\"));\n }\n 0 !== i.angle && (l = \"rotate(\".concat(i.angle, \"deg) \").concat(l));\n l.length > 0 && (o.transform = l);\n }\n class TextLayerRenderTask {\n constructor(t) {\n var _globalThis$FontInspe2;\n let {\n textContentSource: e,\n container: n,\n viewport: s,\n textDivs: a,\n textDivProperties: o,\n textContentItemsStr: l,\n isOffscreenCanvasSupported: c\n } = t;\n this._textContentSource = e;\n this._isReadableStream = e instanceof ReadableStream;\n this._container = this._rootContainer = n;\n this._textDivs = a || [];\n this._textContentItemsStr = l || [];\n this._isOffscreenCanvasSupported = c;\n this._fontInspectorEnabled = !!((_globalThis$FontInspe2 = globalThis.FontInspector) !== null && _globalThis$FontInspe2 !== void 0 && _globalThis$FontInspe2.enabled);\n this._reader = null;\n this._textDivProperties = o || new WeakMap();\n this._canceled = !1;\n this._capability = new i.PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: s.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, c)\n };\n const {\n pageWidth: h,\n pageHeight: d,\n pageX: u,\n pageY: p\n } = s.rawDims;\n this._transform = [1, 0, 0, -1, -u, p + d];\n this._pageWidth = h;\n this._pageHeight = d;\n (0, r.setLayerDimensions)(n, s);\n this._capability.promise.finally(() => {\n this._layoutTextParams = null;\n }).catch(() => {});\n }\n get promise() {\n return this._capability.promise;\n }\n cancel() {\n this._canceled = !0;\n if (this._reader) {\n this._reader.cancel(new i.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n this._reader = null;\n }\n this._capability.reject(new i.AbortException(\"TextLayer task cancelled.\"));\n }\n _processItems(t, e) {\n for (const n of t) if (void 0 !== n.str) {\n this._textContentItemsStr.push(n.str);\n appendText(this, n, e);\n } else if (\"beginMarkedContentProps\" === n.type || \"beginMarkedContent\" === n.type) {\n const t = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n null !== n.id && this._container.setAttribute(\"id\", \"\".concat(n.id));\n t.append(this._container);\n } else \"endMarkedContent\" === n.type && (this._container = this._container.parentNode);\n }\n _layoutText(t) {\n const e = this._layoutTextParams.properties = this._textDivProperties.get(t);\n this._layoutTextParams.div = t;\n layout(this._layoutTextParams);\n e.hasText && this._container.append(t);\n if (e.hasEOL) {\n const t = document.createElement(\"br\");\n t.setAttribute(\"role\", \"presentation\");\n this._container.append(t);\n }\n }\n _render() {\n const t = new i.PromiseCapability();\n let e = Object.create(null);\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(n => {\n let {\n value: i,\n done: r\n } = n;\n if (r) t.resolve();else {\n Object.assign(e, i.styles);\n this._processItems(i.items, e);\n pump();\n }\n }, t.reject);\n };\n this._reader = this._textContentSource.getReader();\n pump();\n } else {\n if (!this._textContentSource) throw new Error('No \"textContentSource\" parameter specified.');\n {\n const {\n items: e,\n styles: n\n } = this._textContentSource;\n this._processItems(e, n);\n t.resolve();\n }\n }\n t.promise.then(() => {\n e = null;\n !function render(t) {\n if (t._canceled) return;\n const e = t._textDivs,\n n = t._capability;\n if (e.length > 1e5) n.resolve();else {\n if (!t._isReadableStream) for (const n of e) t._layoutText(n);\n n.resolve();\n }\n }(this);\n }, this._capability.reject);\n }\n }\n e.TextLayerRenderTask = TextLayerRenderTask;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.AnnotationEditorLayer = void 0;\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n var i = n(1),\n r = n(163),\n s = n(164),\n a = n(196),\n o = n(201),\n l = n(167),\n c = n(202);\n var _re = /*#__PURE__*/new WeakMap();\n var _se = /*#__PURE__*/new WeakMap();\n var _ae = /*#__PURE__*/new WeakMap();\n var _oe = /*#__PURE__*/new WeakMap();\n var _le = /*#__PURE__*/new WeakMap();\n var _ce = /*#__PURE__*/new WeakMap();\n var _he = /*#__PURE__*/new WeakMap();\n var _de = /*#__PURE__*/new WeakMap();\n var _ue = /*#__PURE__*/new WeakMap();\n var _pe = /*#__PURE__*/new WeakMap();\n var _me = /*#__PURE__*/new WeakSet();\n var _be = /*#__PURE__*/new WeakSet();\n var _ge = /*#__PURE__*/new WeakSet();\n var _fe = /*#__PURE__*/new WeakSet();\n class AnnotationEditorLayer {\n constructor(_t13) {\n _classPrivateMethodInitSpec(this, _fe);\n _classPrivateMethodInitSpec(this, _ge);\n _classPrivateMethodInitSpec(this, _be);\n _classPrivateMethodInitSpec(this, _me);\n _classPrivateFieldInitSpec(this, _re, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _se, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _ae, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _oe, {\n writable: true,\n value: this.pointerup.bind(this)\n });\n _classPrivateFieldInitSpec(this, _le, {\n writable: true,\n value: this.pointerdown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ce, {\n writable: true,\n value: new Map()\n });\n _classPrivateFieldInitSpec(this, _he, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _de, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _ue, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _pe, {\n writable: true,\n value: void 0\n });\n let {\n uiManager: _e11,\n pageIndex: _n7,\n div: _i4,\n accessibilityManager: _r4,\n annotationLayer: s,\n viewport: l,\n l10n: h\n } = _t13;\n const d = [a.FreeTextEditor, o.InkEditor, c.StampEditor];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = !0;\n for (const t of d) t.initialize(h);\n }\n _e11.registerEditorTypes(d);\n _classPrivateFieldSet(this, _pe, _e11);\n this.pageIndex = _n7;\n this.div = _i4;\n _classPrivateFieldSet(this, _re, _r4);\n _classPrivateFieldSet(this, _ae, s);\n this.viewport = l;\n _classPrivateFieldGet(this, _pe).addLayer(this);\n }\n get isEmpty() {\n return 0 === _classPrivateFieldGet(this, _ce).size;\n }\n updateToolbar(t) {\n _classPrivateFieldGet(this, _pe).updateToolbar(t);\n }\n updateMode() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _classPrivateFieldGet(this, _pe).getMode();\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\n if (t === i.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(!1);\n this.disableClick();\n } else this.enableClick();\n _classPrivateFieldGet(this, _pe).unselectAll();\n if (t !== i.AnnotationEditorType.NONE) {\n this.div.classList.toggle(\"freeTextEditing\", t === i.AnnotationEditorType.FREETEXT);\n this.div.classList.toggle(\"inkEditing\", t === i.AnnotationEditorType.INK);\n this.div.classList.toggle(\"stampEditing\", t === i.AnnotationEditorType.STAMP);\n this.div.hidden = !1;\n }\n }\n addInkEditorIfNeeded(t) {\n if (!t && _classPrivateFieldGet(this, _pe).getMode() !== i.AnnotationEditorType.INK) return;\n if (!t) for (const t of _classPrivateFieldGet(this, _ce).values()) if (t.isEmpty()) {\n t.setInBackground();\n return;\n }\n _classPrivateMethodGet(this, _ge, _ge2).call(this, {\n offsetX: 0,\n offsetY: 0\n }).setInBackground();\n }\n setEditingState(t) {\n _classPrivateFieldGet(this, _pe).setEditingState(t);\n }\n addCommands(t) {\n _classPrivateFieldGet(this, _pe).addCommands(t);\n }\n enable() {\n this.div.style.pointerEvents = \"auto\";\n const t = new Set();\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\n e.enableEditing();\n e.annotationElementId && t.add(e.annotationElementId);\n }\n if (!_classPrivateFieldGet(this, _ae)) return;\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\n for (const n of e) {\n n.hide();\n if (_classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(n.data.id)) continue;\n if (t.has(n.data.id)) continue;\n const e = this.deserialize(n);\n if (e) {\n this.addOrRebuild(e);\n e.enableEditing();\n }\n }\n }\n disable() {\n _classPrivateFieldSet(this, _ue, !0);\n this.div.style.pointerEvents = \"none\";\n const t = new Set();\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\n e.disableEditing();\n if (e.annotationElementId && null === e.serialize()) {\n var _this$getEditableAnno;\n (_this$getEditableAnno = this.getEditableAnnotation(e.annotationElementId)) === null || _this$getEditableAnno === void 0 ? void 0 : _this$getEditableAnno.show();\n e.remove();\n } else t.add(e.annotationElementId);\n }\n if (_classPrivateFieldGet(this, _ae)) {\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\n for (const n of e) {\n const {\n id: e\n } = n.data;\n t.has(e) || _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) || n.show();\n }\n }\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\n this.isEmpty && (this.div.hidden = !0);\n _classPrivateFieldSet(this, _ue, !1);\n }\n getEditableAnnotation(t) {\n var _classPrivateFieldGet9;\n return ((_classPrivateFieldGet9 = _classPrivateFieldGet(this, _ae)) === null || _classPrivateFieldGet9 === void 0 ? void 0 : _classPrivateFieldGet9.getEditableAnnotation(t)) || null;\n }\n setActiveEditor(t) {\n _classPrivateFieldGet(this, _pe).getActive() !== t && _classPrivateFieldGet(this, _pe).setActiveEditor(t);\n }\n enableClick() {\n this.div.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _le));\n this.div.addEventListener(\"pointerup\", _classPrivateFieldGet(this, _oe));\n }\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _le));\n this.div.removeEventListener(\"pointerup\", _classPrivateFieldGet(this, _oe));\n }\n attach(t) {\n _classPrivateFieldGet(this, _ce).set(t.id, t);\n const {\n annotationElementId: e\n } = t;\n e && _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) && _classPrivateFieldGet(this, _pe).removeDeletedAnnotationElement(t);\n }\n detach(t) {\n var _classPrivateFieldGet10;\n _classPrivateFieldGet(this, _ce).delete(t.id);\n (_classPrivateFieldGet10 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet10 === void 0 ? void 0 : _classPrivateFieldGet10.removePointerInTextLayer(t.contentDiv);\n !_classPrivateFieldGet(this, _ue) && t.annotationElementId && _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t);\n }\n remove(t) {\n this.detach(t);\n _classPrivateFieldGet(this, _pe).removeEditor(t);\n t.div.style.display = \"none\";\n setTimeout(() => {\n t.div.style.display = \"\";\n t.div.remove();\n t.isAttachedToDOM = !1;\n document.activeElement === document.body && _classPrivateFieldGet(this, _pe).focusMainContainer();\n }, 0);\n _classPrivateFieldGet(this, _de) || this.addInkEditorIfNeeded(!1);\n }\n add(t) {\n _classPrivateMethodGet(this, _me, _me2).call(this, t);\n _classPrivateFieldGet(this, _pe).addEditor(t);\n this.attach(t);\n if (!t.isAttachedToDOM) {\n const e = t.render();\n this.div.append(e);\n t.isAttachedToDOM = !0;\n }\n this.moveEditorInDOM(t);\n t.onceAdded();\n _classPrivateFieldGet(this, _pe).addToAnnotationStorage(t);\n }\n moveEditorInDOM(t) {\n var _classPrivateFieldGet11;\n (_classPrivateFieldGet11 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet11 === void 0 ? void 0 : _classPrivateFieldGet11.moveElementInDOM(this.div, t.div, t.contentDiv, !0);\n }\n addOrRebuild(t) {\n t.needsToBeRebuilt() ? t.rebuild() : this.add(t);\n }\n addUndoableEditor(t) {\n this.addCommands({\n cmd: () => {\n this.addOrRebuild(t);\n },\n undo: () => {\n t.remove();\n },\n mustExec: !1\n });\n }\n getNextId() {\n return _classPrivateFieldGet(this, _pe).getId();\n }\n deserialize(t) {\n var _t$annotationType;\n switch ((_t$annotationType = t.annotationType) !== null && _t$annotationType !== void 0 ? _t$annotationType : t.annotationEditorType) {\n case i.AnnotationEditorType.FREETEXT:\n return a.FreeTextEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n case i.AnnotationEditorType.INK:\n return o.InkEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n case i.AnnotationEditorType.STAMP:\n return c.StampEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\n }\n return null;\n }\n setSelected(t) {\n _classPrivateFieldGet(this, _pe).setSelected(t);\n }\n toggleSelected(t) {\n _classPrivateFieldGet(this, _pe).toggleSelected(t);\n }\n isSelected(t) {\n return _classPrivateFieldGet(this, _pe).isSelected(t);\n }\n unselect(t) {\n _classPrivateFieldGet(this, _pe).unselect(t);\n }\n pointerup(t) {\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (!(0 !== t.button || t.ctrlKey && e) && t.target === this.div && _classPrivateFieldGet(this, _he)) {\n _classPrivateFieldSet(this, _he, !1);\n _classPrivateFieldGet(this, _se) ? _classPrivateMethodGet(this, _ge, _ge2).call(this, t) : _classPrivateFieldSet(this, _se, !0);\n }\n }\n pointerdown(t) {\n if (_classPrivateFieldGet(this, _he)) {\n _classPrivateFieldSet(this, _he, !1);\n return;\n }\n const {\n isMac: e\n } = i.FeatureTest.platform;\n if (0 !== t.button || t.ctrlKey && e) return;\n if (t.target !== this.div) return;\n _classPrivateFieldSet(this, _he, !0);\n const n = _classPrivateFieldGet(this, _pe).getActive();\n _classPrivateFieldSet(this, _se, !n || n.isEmpty());\n }\n drop(t) {\n const e = t.dataTransfer.getData(\"text/plain\"),\n n = _classPrivateFieldGet(this, _pe).getEditor(e);\n if (!n) return;\n t.preventDefault();\n t.dataTransfer.dropEffect = \"move\";\n _classPrivateMethodGet(this, _me, _me2).call(this, n);\n const i = this.div.getBoundingClientRect(),\n r = t.clientX - i.x,\n s = t.clientY - i.y;\n n.translate(r - n.startX, s - n.startY);\n this.moveEditorInDOM(n);\n n.div.focus();\n }\n dragover(t) {\n t.preventDefault();\n }\n destroy() {\n var _classPrivateFieldGet12;\n ((_classPrivateFieldGet12 = _classPrivateFieldGet(this, _pe).getActive()) === null || _classPrivateFieldGet12 === void 0 ? void 0 : _classPrivateFieldGet12.parent) === this && _classPrivateFieldGet(this, _pe).setActiveEditor(null);\n for (const t of _classPrivateFieldGet(this, _ce).values()) {\n var _classPrivateFieldGet13;\n (_classPrivateFieldGet13 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet13 === void 0 ? void 0 : _classPrivateFieldGet13.removePointerInTextLayer(t.contentDiv);\n t.setParent(null);\n t.isAttachedToDOM = !1;\n t.div.remove();\n }\n this.div = null;\n _classPrivateFieldGet(this, _ce).clear();\n _classPrivateFieldGet(this, _pe).removeLayer(this);\n }\n render(t) {\n let {\n viewport: e\n } = t;\n this.viewport = e;\n (0, l.setLayerDimensions)(this.div, e);\n (0, s.bindEvents)(this, this.div, [\"dragover\", \"drop\"]);\n for (const t of _classPrivateFieldGet(this, _pe).getEditors(this.pageIndex)) this.add(t);\n this.updateMode();\n }\n update(t) {\n let {\n viewport: e\n } = t;\n _classPrivateFieldGet(this, _pe).commitOrRemove();\n this.viewport = e;\n (0, l.setLayerDimensions)(this.div, {\n rotation: e.rotation\n });\n this.updateMode();\n }\n get pageDimensions() {\n const {\n pageWidth: t,\n pageHeight: e\n } = this.viewport.rawDims;\n return [t, e];\n }\n }\n function _me2(t) {\n if (t.parent !== this) {\n var _t$parent;\n if (t.annotationElementId) {\n _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t.annotationElementId);\n r.AnnotationEditor.deleteAnnotationElement(t);\n t.annotationElementId = null;\n }\n this.attach(t);\n (_t$parent = t.parent) === null || _t$parent === void 0 ? void 0 : _t$parent.detach(t);\n t.setParent(this);\n if (t.div && t.isAttachedToDOM) {\n t.div.remove();\n this.div.append(t.div);\n }\n }\n }\n function _be2(t) {\n switch (_classPrivateFieldGet(this, _pe).getMode()) {\n case i.AnnotationEditorType.FREETEXT:\n return new a.FreeTextEditor(t);\n case i.AnnotationEditorType.INK:\n return new o.InkEditor(t);\n case i.AnnotationEditorType.STAMP:\n return new c.StampEditor(t);\n }\n return null;\n }\n function _ge2(t) {\n const e = this.getNextId(),\n n = _classPrivateMethodGet(this, _be, _be2).call(this, {\n parent: this,\n id: e,\n x: t.offsetX,\n y: t.offsetY,\n uiManager: _classPrivateFieldGet(this, _pe)\n });\n n && this.add(n);\n return n;\n }\n function _fe2() {\n _classPrivateFieldSet(this, _de, !0);\n for (const t of _classPrivateFieldGet(this, _ce).values()) t.isEmpty() && t.remove();\n _classPrivateFieldSet(this, _de, !1);\n }\n _defineProperty(AnnotationEditorLayer, \"_initialized\", !1);\n e.AnnotationEditorLayer = AnnotationEditorLayer;\n }, (t, e, n) => {\n \"use strict\";\n\n var _class30;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.FreeTextEditor = void 0;\n n(89);\n var i = n(1),\n r = n(164),\n s = n(163),\n a = n(197);\n var _ve = /*#__PURE__*/new WeakMap();\n var _ye = /*#__PURE__*/new WeakMap();\n var _Ae = /*#__PURE__*/new WeakMap();\n var _e12 = /*#__PURE__*/new WeakMap();\n var _Se = /*#__PURE__*/new WeakMap();\n var _Ee = /*#__PURE__*/new WeakMap();\n var _xe = /*#__PURE__*/new WeakMap();\n var _we = /*#__PURE__*/new WeakMap();\n var _Ce = /*#__PURE__*/new WeakMap();\n var _Te = /*#__PURE__*/new WeakSet();\n var _Pe = /*#__PURE__*/new WeakSet();\n var _Re = /*#__PURE__*/new WeakSet();\n var _ke = /*#__PURE__*/new WeakSet();\n var _Fe = /*#__PURE__*/new WeakSet();\n var _Ie = /*#__PURE__*/new WeakSet();\n var _Me = /*#__PURE__*/new WeakSet();\n class FreeTextEditor extends s.AnnotationEditor {\n static get _keyboardManager() {\n const t = FreeTextEditor.prototype,\n arrowChecker = t => t.isEmpty(),\n e = r.AnnotationEditorUIManager.TRANSLATE_SMALL,\n n = r.AnnotationEditorUIManager.TRANSLATE_BIG;\n return (0, i.shadow)(this, \"_keyboardManager\", new r.KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], t.commitOrRemove, {\n bubbles: !0\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], t.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], t._translateEmpty, {\n args: [-e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], t._translateEmpty, {\n args: [-n, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], t._translateEmpty, {\n args: [e, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], t._translateEmpty, {\n args: [n, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], t._translateEmpty, {\n args: [0, -e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], t._translateEmpty, {\n args: [0, -n],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], t._translateEmpty, {\n args: [0, e],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], t._translateEmpty, {\n args: [0, n],\n checker: arrowChecker\n }]]));\n }\n constructor(_t14) {\n super(_objectSpread(_objectSpread({}, _t14), {}, {\n name: \"freeTextEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Me);\n _classPrivateMethodInitSpec(this, _Ie);\n _classPrivateMethodInitSpec(this, _Fe);\n _classPrivateMethodInitSpec(this, _ke);\n _classPrivateMethodInitSpec(this, _Re);\n _classPrivateMethodInitSpec(this, _Pe);\n _classPrivateMethodInitSpec(this, _Te);\n _classPrivateFieldInitSpec(this, _ve, {\n writable: true,\n value: this.editorDivBlur.bind(this)\n });\n _classPrivateFieldInitSpec(this, _ye, {\n writable: true,\n value: this.editorDivFocus.bind(this)\n });\n _classPrivateFieldInitSpec(this, _Ae, {\n writable: true,\n value: this.editorDivInput.bind(this)\n });\n _classPrivateFieldInitSpec(this, _e12, {\n writable: true,\n value: this.editorDivKeydown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _Se, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ee, {\n writable: true,\n value: \"\"\n });\n _classPrivateFieldInitSpec(this, _xe, {\n writable: true,\n value: \"\".concat(this.id, \"-editor\")\n });\n _classPrivateFieldInitSpec(this, _we, {\n writable: true,\n value: void 0\n });\n _classPrivateFieldInitSpec(this, _Ce, {\n writable: true,\n value: null\n });\n _classPrivateFieldSet(this, _Se, _t14.color || FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor);\n _classPrivateFieldSet(this, _we, _t14.fontSize || FreeTextEditor._defaultFontSize);\n }\n static initialize(t) {\n this._l10nPromise = new Map([\"free_text2_default_content\", \"editor_free_text2_aria_label\"].map(e => [e, t.get(e)]));\n const e = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(e.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = e;\n break;\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = e;\n }\n }\n updateParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\n _classPrivateMethodGet(this, _Te, _Te2).call(this, e);\n break;\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\n _classPrivateMethodGet(this, _Pe, _Pe2).call(this, e);\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [i.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, _classPrivateFieldGet(this, _we)], [i.AnnotationEditorParamsType.FREETEXT_COLOR, _classPrivateFieldGet(this, _Se)]];\n }\n _translateEmpty(t, e) {\n this._uiManager.translateSelectedEditors(t, e, !0);\n }\n getInitialTranslation() {\n const t = this.parentScale;\n return [-FreeTextEditor._internalPadding * t, -(FreeTextEditor._internalPadding + _classPrivateFieldGet(this, _we)) * t];\n }\n rebuild() {\n super.rebuild();\n null !== this.div && (this.isAttachedToDOM || this.parent.add(this));\n }\n enableEditMode() {\n if (!this.isInEditMode()) {\n this.parent.setEditingState(!1);\n this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = !0;\n this.div.draggable = !1;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", _classPrivateFieldGet(this, _e12));\n this.editorDiv.addEventListener(\"focus\", _classPrivateFieldGet(this, _ye));\n this.editorDiv.addEventListener(\"blur\", _classPrivateFieldGet(this, _ve));\n this.editorDiv.addEventListener(\"input\", _classPrivateFieldGet(this, _Ae));\n }\n }\n disableEditMode() {\n if (this.isInEditMode()) {\n this.parent.setEditingState(!0);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = !1;\n this.div.setAttribute(\"aria-activedescendant\", _classPrivateFieldGet(this, _xe));\n this.div.draggable = !0;\n this.editorDiv.removeEventListener(\"keydown\", _classPrivateFieldGet(this, _e12));\n this.editorDiv.removeEventListener(\"focus\", _classPrivateFieldGet(this, _ye));\n this.editorDiv.removeEventListener(\"blur\", _classPrivateFieldGet(this, _ve));\n this.editorDiv.removeEventListener(\"input\", _classPrivateFieldGet(this, _Ae));\n this.div.focus({\n preventScroll: !0\n });\n this.isEditing = !1;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n }\n focusin(t) {\n super.focusin(t);\n t.target !== this.editorDiv && this.editorDiv.focus();\n }\n onceAdded() {\n if (this.width) _classPrivateMethodGet(this, _Me, _Me2).call(this);else {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n isEmpty() {\n return !this.editorDiv || \"\" === this.editorDiv.innerText.trim();\n }\n remove() {\n this.isEditing = !1;\n if (this.parent) {\n this.parent.setEditingState(!0);\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n super.remove();\n }\n commit() {\n if (!this.isInEditMode()) return;\n super.commit();\n this.disableEditMode();\n const t = _classPrivateFieldGet(this, _Ee),\n e = _classPrivateFieldSet(this, _Ee, _classPrivateMethodGet(this, _Re, _Re2).call(this).trimEnd());\n if (t === e) return;\n const setText = t => {\n _classPrivateFieldSet(this, _Ee, t);\n if (t) {\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\n this.rebuild();\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n } else this.remove();\n };\n this.addCommands({\n cmd: () => {\n setText(e);\n },\n undo: () => {\n setText(t);\n },\n mustExec: !1\n });\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(t) {\n this.enterInEditMode();\n }\n keydown(t) {\n t.target === this.div && \"Enter\" === t.key && this.enterInEditMode();\n }\n editorDivKeydown(t) {\n FreeTextEditor._keyboardManager.exec(this, t);\n }\n editorDivFocus(t) {\n this.isEditing = !0;\n }\n editorDivBlur(t) {\n this.isEditing = !1;\n }\n editorDivInput(t) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", !0);\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", _classPrivateFieldGet(this, _xe));\n this.enableEditing();\n FreeTextEditor._l10nPromise.get(\"editor_free_text2_aria_label\").then(t => {\n var _this$editorDiv;\n return (_this$editorDiv = this.editorDiv) === null || _this$editorDiv === void 0 ? void 0 : _this$editorDiv.setAttribute(\"aria-label\", t);\n });\n FreeTextEditor._l10nPromise.get(\"free_text2_default_content\").then(t => {\n var _this$editorDiv2;\n return (_this$editorDiv2 = this.editorDiv) === null || _this$editorDiv2 === void 0 ? void 0 : _this$editorDiv2.setAttribute(\"default-content\", t);\n });\n this.editorDiv.contentEditable = !0;\n const {\n style: n\n } = this.editorDiv;\n n.fontSize = \"calc(\".concat(_classPrivateFieldGet(this, _we), \"px * var(--scale-factor))\");\n n.color = _classPrivateFieldGet(this, _Se);\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0, r.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [n, i] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position: r\n } = _classPrivateFieldGet(this, _Ce);\n let [s, a] = this.getInitialTranslation();\n [s, a] = this.pageTranslationToScreen(s, a);\n const [o, l] = this.pageDimensions,\n [c, h] = this.pageTranslation;\n let d, u;\n switch (this.rotation) {\n case 0:\n d = t + (r[0] - c) / o;\n u = e + this.height - (r[1] - h) / l;\n break;\n case 90:\n d = t + (r[0] - c) / o;\n u = e - (r[1] - h) / l;\n [s, a] = [a, -s];\n break;\n case 180:\n d = t - this.width + (r[0] - c) / o;\n u = e - (r[1] - h) / l;\n [s, a] = [-s, -a];\n break;\n case 270:\n d = t + (r[0] - c - this.height * l) / o;\n u = e + (r[1] - h - this.width * o) / l;\n [s, a] = [-a, s];\n }\n this.setAt(d * n, u * i, s, a);\n } else this.setAt(t * n, e * i, this.width * n, this.height * i);\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\n this.div.draggable = !0;\n this.editorDiv.contentEditable = !1;\n } else {\n this.div.draggable = !1;\n this.editorDiv.contentEditable = !0;\n }\n return this.div;\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(t, e, n) {\n let r = null;\n if (t instanceof a.FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize: e,\n fontColor: n\n },\n rect: s,\n rotation: a,\n id: o\n },\n textContent: l,\n textPosition: c,\n parent: {\n page: {\n pageNumber: h\n }\n }\n } = t;\n if (!l || 0 === l.length) return null;\n r = t = {\n annotationType: i.AnnotationEditorType.FREETEXT,\n color: Array.from(n),\n fontSize: e,\n value: l.join(\"\\n\"),\n position: c,\n pageIndex: h - 1,\n rect: s,\n rotation: a,\n id: o,\n deleted: !1\n };\n }\n const s = super.deserialize(t, e, n);\n _classPrivateFieldSet(s, _we, t.fontSize);\n _classPrivateFieldSet(s, _Se, i.Util.makeHexColor(...t.color));\n _classPrivateFieldSet(s, _Ee, t.value);\n s.annotationElementId = t.id || null;\n _classPrivateFieldSet(s, _Ce, r);\n return s;\n }\n serialize() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.isEmpty()) return null;\n if (this.deleted) return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: !0\n };\n const e = FreeTextEditor._internalPadding * this.parentScale,\n n = this.getRect(e, e),\n r = s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : _classPrivateFieldGet(this, _Se)),\n a = {\n annotationType: i.AnnotationEditorType.FREETEXT,\n color: r,\n fontSize: _classPrivateFieldGet(this, _we),\n value: _classPrivateFieldGet(this, _Ee),\n pageIndex: this.pageIndex,\n rect: n,\n rotation: this.rotation\n };\n if (t) return a;\n if (this.annotationElementId && !_classPrivateMethodGet(this, _Ie, _Ie2).call(this, a)) return null;\n a.id = this.annotationElementId;\n return a;\n }\n }\n _class30 = FreeTextEditor;\n function _Te2(t) {\n const setFontsize = t => {\n this.editorDiv.style.fontSize = \"calc(\".concat(t, \"px * var(--scale-factor))\");\n this.translate(0, -(t - _classPrivateFieldGet(this, _we)) * this.parentScale);\n _classPrivateFieldSet(this, _we, t);\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n },\n e = _classPrivateFieldGet(this, _we);\n this.addCommands({\n cmd: () => {\n setFontsize(t);\n },\n undo: () => {\n setFontsize(e);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Pe2(t) {\n const e = _classPrivateFieldGet(this, _Se);\n this.addCommands({\n cmd: () => {\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = t);\n },\n undo: () => {\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = e);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Re2() {\n const t = this.editorDiv.getElementsByTagName(\"div\");\n if (0 === t.length) return this.editorDiv.innerText;\n const e = [];\n for (const n of t) e.push(n.innerText.replace(/\\r\\n?|\\n/, \"\"));\n return e.join(\"\\n\");\n }\n function _ke2() {\n const [t, e] = this.parentDimensions;\n let n;\n if (this.isAttachedToDOM) n = this.div.getBoundingClientRect();else {\n const {\n currentLayer: t,\n div: e\n } = this,\n i = e.style.display;\n e.style.display = \"hidden\";\n t.div.append(this.div);\n n = e.getBoundingClientRect();\n e.remove();\n e.style.display = i;\n }\n if (this.rotation % 180 == this.parentRotation % 180) {\n this.width = n.width / t;\n this.height = n.height / e;\n } else {\n this.width = n.height / t;\n this.height = n.width / e;\n }\n this.fixAndSetPosition();\n }\n function _Fe2() {\n this.editorDiv.replaceChildren();\n if (_classPrivateFieldGet(this, _Ee)) for (const t of _classPrivateFieldGet(this, _Ee).split(\"\\n\")) {\n const e = document.createElement(\"div\");\n e.append(t ? document.createTextNode(t) : document.createElement(\"br\"));\n this.editorDiv.append(e);\n }\n }\n function _Ie2(t) {\n const {\n value: e,\n fontSize: n,\n color: i,\n rect: r,\n pageIndex: s\n } = _classPrivateFieldGet(this, _Ce);\n return t.value !== e || t.fontSize !== n || t.rect.some((t, e) => Math.abs(t - r[e]) >= 1) || t.color.some((t, e) => t !== i[e]) || t.pageIndex !== s;\n }\n function _Me2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (!this.annotationElementId) return;\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\n if (!t && (0 === this.width || 0 === this.height)) {\n setTimeout(() => _classPrivateMethodGet(this, _Me, _Me2).call(this, !0), 0);\n return;\n }\n const e = _class30._internalPadding * this.parentScale;\n _classPrivateFieldGet(this, _Ce).rect = this.getRect(e, e);\n }\n _defineProperty(FreeTextEditor, \"_freeTextDefaultContent\", \"\");\n _defineProperty(FreeTextEditor, \"_l10nPromise\", void 0);\n _defineProperty(FreeTextEditor, \"_internalPadding\", 0);\n _defineProperty(FreeTextEditor, \"_defaultColor\", null);\n _defineProperty(FreeTextEditor, \"_defaultFontSize\", 10);\n _defineProperty(FreeTextEditor, \"_type\", \"freetext\");\n e.FreeTextEditor = FreeTextEditor;\n }, (t, e, n) => {\n \"use strict\";\n\n var _re2, _an, _on, _ln, _cn;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StampAnnotationElement = e.InkAnnotationElement = e.FreeTextAnnotationElement = e.AnnotationLayer = void 0;\n n(89);\n n(125);\n n(135);\n n(137);\n n(140);\n n(142);\n n(144);\n n(146);\n var i = n(1),\n r = n(167),\n s = n(162),\n a = n(198),\n o = n(199),\n l = n(200);\n const c = 1e3,\n h = new WeakSet();\n function getRectDims(t) {\n return {\n width: t[2] - t[0],\n height: t[3] - t[1]\n };\n }\n class AnnotationElementFactory {\n static create(t) {\n switch (t.data.annotationType) {\n case i.AnnotationType.LINK:\n return new LinkAnnotationElement(t);\n case i.AnnotationType.TEXT:\n return new TextAnnotationElement(t);\n case i.AnnotationType.WIDGET:\n switch (t.data.fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(t);\n case \"Btn\":\n return t.data.radioButton ? new RadioButtonWidgetAnnotationElement(t) : t.data.checkBox ? new CheckboxWidgetAnnotationElement(t) : new PushButtonWidgetAnnotationElement(t);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(t);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(t);\n }\n return new WidgetAnnotationElement(t);\n case i.AnnotationType.POPUP:\n return new PopupAnnotationElement(t);\n case i.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(t);\n case i.AnnotationType.LINE:\n return new LineAnnotationElement(t);\n case i.AnnotationType.SQUARE:\n return new SquareAnnotationElement(t);\n case i.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(t);\n case i.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(t);\n case i.AnnotationType.CARET:\n return new CaretAnnotationElement(t);\n case i.AnnotationType.INK:\n return new InkAnnotationElement(t);\n case i.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(t);\n case i.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(t);\n case i.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(t);\n case i.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(t);\n case i.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(t);\n case i.AnnotationType.STAMP:\n return new StampAnnotationElement(t);\n case i.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(t);\n default:\n return new AnnotationElement(t);\n }\n }\n }\n var _De = /*#__PURE__*/new WeakMap();\n class AnnotationElement {\n constructor(t) {\n _classPrivateFieldInitSpec(this, _De, {\n writable: true,\n value: !1\n });\n let {\n isRenderable: e = !1,\n ignoreBorder: n = !1,\n createQuadrilaterals: i = !1\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n this.isRenderable = e;\n this.data = t.data;\n this.layer = t.layer;\n this.linkService = t.linkService;\n this.downloadManager = t.downloadManager;\n this.imageResourcesPath = t.imageResourcesPath;\n this.renderForms = t.renderForms;\n this.svgFactory = t.svgFactory;\n this.annotationStorage = t.annotationStorage;\n this.enableScripting = t.enableScripting;\n this.hasJSActions = t.hasJSActions;\n this._fieldObjects = t.fieldObjects;\n this.parent = t.parent;\n e && (this.container = this._createContainer(n));\n i && this._createQuadrilaterals();\n }\n _createContainer(t) {\n const {\n data: e,\n parent: {\n page: n,\n viewport: r\n }\n } = this,\n s = document.createElement(\"section\");\n s.setAttribute(\"data-annotation-id\", e.id);\n s.style.zIndex = this.parent.zIndex++;\n this.data.popupRef && s.setAttribute(\"aria-haspopup\", \"dialog\");\n e.noRotate && s.classList.add(\"norotate\");\n const {\n pageWidth: a,\n pageHeight: o,\n pageX: l,\n pageY: c\n } = r.rawDims;\n if (!e.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation: t\n } = e;\n e.hasOwnCanvas || 0 === t || this.setRotation(t, s);\n return s;\n }\n const {\n width: h,\n height: d\n } = getRectDims(e.rect),\n u = i.Util.normalizeRect([e.rect[0], n.view[3] - e.rect[1] + n.view[1], e.rect[2], n.view[3] - e.rect[3] + n.view[1]]);\n if (!t && e.borderStyle.width > 0) {\n s.style.borderWidth = \"\".concat(e.borderStyle.width, \"px\");\n const t = e.borderStyle.horizontalCornerRadius,\n n = e.borderStyle.verticalCornerRadius;\n if (t > 0 || n > 0) {\n const e = \"calc(\".concat(t, \"px * var(--scale-factor)) / calc(\").concat(n, \"px * var(--scale-factor))\");\n s.style.borderRadius = e;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const t = \"calc(\".concat(h, \"px * var(--scale-factor)) / calc(\").concat(d, \"px * var(--scale-factor))\");\n s.style.borderRadius = t;\n }\n switch (e.borderStyle.style) {\n case i.AnnotationBorderStyleType.SOLID:\n s.style.borderStyle = \"solid\";\n break;\n case i.AnnotationBorderStyleType.DASHED:\n s.style.borderStyle = \"dashed\";\n break;\n case i.AnnotationBorderStyleType.BEVELED:\n (0, i.warn)(\"Unimplemented border style: beveled\");\n break;\n case i.AnnotationBorderStyleType.INSET:\n (0, i.warn)(\"Unimplemented border style: inset\");\n break;\n case i.AnnotationBorderStyleType.UNDERLINE:\n s.style.borderBottomStyle = \"solid\";\n }\n const r = e.borderColor || null;\n if (r) {\n _classPrivateFieldSet(this, _De, !0);\n s.style.borderColor = i.Util.makeHexColor(0 | r[0], 0 | r[1], 0 | r[2]);\n } else s.style.borderWidth = 0;\n }\n s.style.left = 100 * (u[0] - l) / a + \"%\";\n s.style.top = 100 * (u[1] - c) / o + \"%\";\n const {\n rotation: p\n } = e;\n if (e.hasOwnCanvas || 0 === p) {\n s.style.width = 100 * h / a + \"%\";\n s.style.height = 100 * d / o + \"%\";\n } else this.setRotation(p, s);\n return s;\n }\n setRotation(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.container;\n if (!this.data.rect) return;\n const {\n pageWidth: n,\n pageHeight: i\n } = this.parent.viewport.rawDims,\n {\n width: r,\n height: s\n } = getRectDims(this.data.rect);\n let a, o;\n if (t % 180 == 0) {\n a = 100 * r / n;\n o = 100 * s / i;\n } else {\n a = 100 * s / n;\n o = 100 * r / i;\n }\n e.style.width = \"\".concat(a, \"%\");\n e.style.height = \"\".concat(o, \"%\");\n e.setAttribute(\"data-main-rotation\", (360 - t) % 360);\n }\n get _commonActions() {\n const setColor = (t, e, n) => {\n const i = n.detail[t];\n n.target.style[e] = a.ColorConverters[\"\".concat(i[0], \"_HTML\")](i.slice(1));\n };\n return (0, i.shadow)(this, \"_commonActions\", {\n display: t => {\n const e = t.detail.display % 2 == 1;\n this.container.style.visibility = e ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: e,\n print: 0 === t.detail.display || 3 === t.detail.display\n });\n },\n print: t => {\n this.annotationStorage.setValue(this.data.id, {\n print: t.detail.print\n });\n },\n hidden: t => {\n this.container.style.visibility = t.detail.hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: t.detail.hidden\n });\n },\n focus: t => {\n setTimeout(() => t.target.focus({\n preventScroll: !1\n }), 0);\n },\n userName: t => {\n t.target.title = t.detail.userName;\n },\n readonly: t => {\n t.detail.readonly ? t.target.setAttribute(\"readonly\", \"\") : t.target.removeAttribute(\"readonly\");\n },\n required: t => {\n this._setRequired(t.target, t.detail.required);\n },\n bgColor: t => {\n setColor(\"bgColor\", \"backgroundColor\", t);\n },\n fillColor: t => {\n setColor(\"fillColor\", \"backgroundColor\", t);\n },\n fgColor: t => {\n setColor(\"fgColor\", \"color\", t);\n },\n textColor: t => {\n setColor(\"textColor\", \"color\", t);\n },\n borderColor: t => {\n setColor(\"borderColor\", \"borderColor\", t);\n },\n strokeColor: t => {\n setColor(\"strokeColor\", \"borderColor\", t);\n },\n rotation: t => {\n const e = t.detail.rotation;\n this.setRotation(e);\n this.annotationStorage.setValue(this.data.id, {\n rotation: e\n });\n }\n });\n }\n _dispatchEventFromSandbox(t, e) {\n const n = this._commonActions;\n for (const i of Object.keys(e.detail)) {\n const r = t[i] || n[i];\n r === null || r === void 0 ? void 0 : r(e);\n }\n }\n _setDefaultPropertiesFromJS(t) {\n if (!this.enableScripting) return;\n const e = this.annotationStorage.getRawValue(this.data.id);\n if (!e) return;\n const n = this._commonActions;\n for (const [i, r] of Object.entries(e)) {\n const s = n[i];\n if (s) {\n s({\n detail: {\n [i]: r\n },\n target: t\n });\n delete e[i];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) return;\n const {\n quadPoints: t\n } = this.data;\n if (!t) return;\n const [e, n, i, r] = this.data.rect;\n if (1 === t.length) {\n const [, {\n x: s,\n y: a\n }, {\n x: o,\n y: l\n }] = t[0];\n if (i === s && r === a && e === o && n === l) return;\n }\n const {\n style: s\n } = this.container;\n let a;\n if (_classPrivateFieldGet(this, _De)) {\n const {\n borderColor: t,\n borderWidth: e\n } = s;\n s.borderWidth = 0;\n a = [\"url('data:image/svg+xml;utf8,\", '', \"\")];\n this.container.classList.add(\"hasBorder\");\n }\n const o = i - e,\n l = r - n,\n {\n svgFactory: c\n } = this,\n h = c.createElement(\"svg\");\n h.classList.add(\"quadrilateralsContainer\");\n h.setAttribute(\"width\", 0);\n h.setAttribute(\"height\", 0);\n const d = c.createElement(\"defs\");\n h.append(d);\n const u = c.createElement(\"clipPath\"),\n p = \"clippath_\".concat(this.data.id);\n u.setAttribute(\"id\", p);\n u.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n d.append(u);\n for (const [, {\n x: n,\n y: i\n }, {\n x: s,\n y: h\n }] of t) {\n var _a3;\n const t = c.createElement(\"rect\"),\n d = (s - e) / o,\n p = (r - i) / l,\n f = (n - s) / o,\n g = (i - h) / l;\n t.setAttribute(\"x\", d);\n t.setAttribute(\"y\", p);\n t.setAttribute(\"width\", f);\n t.setAttribute(\"height\", g);\n u.append(t);\n (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.push(\"\"));\n }\n if (_classPrivateFieldGet(this, _De)) {\n a.push(\"')\");\n s.backgroundImage = a.join(\"\");\n }\n this.container.append(h);\n this.container.style.clipPath = \"url(#\".concat(p, \")\");\n }\n _createPopup() {\n const {\n container: t,\n data: e\n } = this;\n t.setAttribute(\"aria-haspopup\", \"dialog\");\n const n = new PopupAnnotationElement({\n data: {\n color: e.color,\n titleObj: e.titleObj,\n modificationDate: e.modificationDate,\n contentsObj: e.contentsObj,\n richText: e.richText,\n parentRect: e.rect,\n borderStyle: 0,\n id: \"popup_\".concat(e.id),\n rotation: e.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(n.render());\n }\n render() {\n (0, i.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n const n = [];\n if (this._fieldObjects) {\n const r = this._fieldObjects[t];\n if (r) for (const {\n page: t,\n id: s,\n exportValues: a\n } of r) {\n if (-1 === t) continue;\n if (s === e) continue;\n const r = \"string\" == typeof a ? a : null,\n o = document.querySelector(\"[data-element-id=\\\"\".concat(s, \"\\\"]\"));\n !o || h.has(o) ? n.push({\n id: s,\n exportValue: r,\n domElement: o\n }) : (0, i.warn)(\"_getElementsByName - element not allowed: \".concat(s));\n }\n return n;\n }\n for (const i of document.getElementsByName(t)) {\n const {\n exportValue: t\n } = i,\n r = i.getAttribute(\"data-element-id\");\n r !== e && h.has(i) && n.push({\n id: r,\n exportValue: t,\n domElement: i\n });\n }\n return n;\n }\n show() {\n var _this$popup;\n this.container && (this.container.hidden = !1);\n (_this$popup = this.popup) === null || _this$popup === void 0 ? void 0 : _this$popup.maybeShow();\n }\n hide() {\n var _this$popup2;\n this.container && (this.container.hidden = !0);\n (_this$popup2 = this.popup) === null || _this$popup2 === void 0 ? void 0 : _this$popup2.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const t = this.getElementsToTriggerPopup();\n if (Array.isArray(t)) for (const e of t) e.classList.add(\"highlightArea\");else t.classList.add(\"highlightArea\");\n }\n _editOnDoubleClick() {\n const {\n annotationEditorType: t,\n data: {\n id: e\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n var _this$linkService$eve;\n (_this$linkService$eve = this.linkService.eventBus) === null || _this$linkService$eve === void 0 ? void 0 : _this$linkService$eve.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode: t,\n editId: e\n });\n });\n }\n }\n var _Le = /*#__PURE__*/new WeakSet();\n var _Oe = /*#__PURE__*/new WeakSet();\n class LinkAnnotationElement extends AnnotationElement {\n constructor(_t15) {\n let _e13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n super(_t15, {\n isRenderable: !0,\n ignoreBorder: !!(_e13 !== null && _e13 !== void 0 && _e13.ignoreBorder),\n createQuadrilaterals: !0\n });\n _classPrivateMethodInitSpec(this, _Oe);\n _classPrivateMethodInitSpec(this, _Le);\n this.isTooltipOnly = _t15.data.isTooltipOnly;\n }\n render() {\n const {\n data: t,\n linkService: e\n } = this,\n n = document.createElement(\"a\");\n n.setAttribute(\"data-element-id\", t.id);\n let i = !1;\n if (t.url) {\n e.addLinkAttributes(n, t.url, t.newWindow);\n i = !0;\n } else if (t.action) {\n this._bindNamedAction(n, t.action);\n i = !0;\n } else if (t.attachment) {\n this._bindAttachment(n, t.attachment);\n i = !0;\n } else if (t.setOCGState) {\n _classPrivateMethodGet(this, _Oe, _Oe2).call(this, n, t.setOCGState);\n i = !0;\n } else if (t.dest) {\n this._bindLink(n, t.dest);\n i = !0;\n } else {\n if (t.actions && (t.actions.Action || t.actions[\"Mouse Up\"] || t.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(n, t);\n i = !0;\n }\n if (t.resetForm) {\n this._bindResetFormAction(n, t.resetForm);\n i = !0;\n } else if (this.isTooltipOnly && !i) {\n this._bindLink(n, \"\");\n i = !0;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n i && this.container.append(n);\n return this.container;\n }\n _bindLink(t, e) {\n t.href = this.linkService.getDestinationHash(e);\n t.onclick = () => {\n e && this.linkService.goToDestination(e);\n return !1;\n };\n (e || \"\" === e) && _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindNamedAction(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n this.linkService.executeNamedAction(e);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindAttachment(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n var _this$downloadManager;\n (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, e.content, e.filename);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindJSAction(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n const n = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const i of Object.keys(e.actions)) {\n const r = n.get(i);\n r && (t[r] = () => {\n var _this$linkService$eve2;\n (_this$linkService$eve2 = this.linkService.eventBus) === null || _this$linkService$eve2 === void 0 ? void 0 : _this$linkService$eve2.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e.id,\n name: i\n }\n });\n return !1;\n });\n }\n t.onclick || (t.onclick = () => !1);\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n _bindResetFormAction(t, e) {\n const n = t.onclick;\n n || (t.href = this.linkService.getAnchorUrl(\"\"));\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n if (this._fieldObjects) t.onclick = () => {\n var _this$linkService$eve3;\n n === null || n === void 0 ? void 0 : n();\n const {\n fields: t,\n refs: r,\n include: s\n } = e,\n a = [];\n if (0 !== t.length || 0 !== r.length) {\n const e = new Set(r);\n for (const n of t) {\n const t = this._fieldObjects[n] || [];\n for (const {\n id: n\n } of t) e.add(n);\n }\n for (const t of Object.values(this._fieldObjects)) for (const n of t) e.has(n.id) === s && a.push(n);\n } else for (const t of Object.values(this._fieldObjects)) a.push(...t);\n const o = this.annotationStorage,\n l = [];\n for (const t of a) {\n const {\n id: e\n } = t;\n l.push(e);\n switch (t.type) {\n case \"text\":\n {\n const n = t.defaultValue || \"\";\n o.setValue(e, {\n value: n\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const n = t.defaultValue === t.exportValues;\n o.setValue(e, {\n value: n\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const n = t.defaultValue || \"\";\n o.setValue(e, {\n value: n\n });\n break;\n }\n default:\n continue;\n }\n const n = document.querySelector(\"[data-element-id=\\\"\".concat(e, \"\\\"]\"));\n n && (h.has(n) ? n.dispatchEvent(new Event(\"resetform\")) : (0, i.warn)(\"_bindResetFormAction - element not allowed: \".concat(e)));\n }\n this.enableScripting && ((_this$linkService$eve3 = this.linkService.eventBus) === null || _this$linkService$eve3 === void 0 ? void 0 : _this$linkService$eve3.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: l,\n name: \"ResetForm\"\n }\n }));\n return !1;\n };else {\n (0, i.warn)('_bindResetFormAction - \"resetForm\" action not supported, ensure that the `fieldObjects` parameter is provided.');\n n || (t.onclick = () => !1);\n }\n }\n }\n function _Le2() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n function _Oe2(t, e) {\n t.href = this.linkService.getAnchorUrl(\"\");\n t.onclick = () => {\n this.linkService.executeSetOCGState(e);\n return !1;\n };\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\n }\n class TextAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj, _t$data$contentsObj, _t$data$richText;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj = t.data.titleObj) !== null && _t$data$titleObj !== void 0 && _t$data$titleObj.str || (_t$data$contentsObj = t.data.contentsObj) !== null && _t$data$contentsObj !== void 0 && _t$data$contentsObj.str || (_t$data$richText = t.data.richText) !== null && _t$data$richText !== void 0 && _t$data$richText.str)\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const t = document.createElement(\"img\");\n t.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n t.alt = \"[{{type}} Annotation]\";\n t.dataset.l10nId = \"text_annotation_type\";\n t.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n this.data.popupRef || this._createPopup();\n this.container.append(t);\n return this.container;\n }\n }\n class WidgetAnnotationElement extends AnnotationElement {\n render() {\n this.data.alternativeText && (this.container.title = this.data.alternativeText);\n return this.container;\n }\n showElementAndHideCanvas(t) {\n if (this.data.hasOwnCanvas) {\n var _t$previousSibling;\n \"CANVAS\" === ((_t$previousSibling = t.previousSibling) === null || _t$previousSibling === void 0 ? void 0 : _t$previousSibling.nodeName) && (t.previousSibling.hidden = !0);\n t.hidden = !1;\n }\n }\n _getKeyModifier(t) {\n const {\n isWin: e,\n isMac: n\n } = i.FeatureTest.platform;\n return e && t.ctrlKey || n && t.metaKey;\n }\n _setEventListener(t, e, n, i) {\n e.includes(\"mouse\") ? t.addEventListener(e, t => {\n var _this$linkService$eve4;\n (_this$linkService$eve4 = this.linkService.eventBus) === null || _this$linkService$eve4 === void 0 ? void 0 : _this$linkService$eve4.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: n,\n value: i(t),\n shift: t.shiftKey,\n modifier: this._getKeyModifier(t)\n }\n });\n }) : t.addEventListener(e, t => {\n var _this$linkService$eve5;\n (_this$linkService$eve5 = this.linkService.eventBus) === null || _this$linkService$eve5 === void 0 ? void 0 : _this$linkService$eve5.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: n,\n value: i(t)\n }\n });\n });\n }\n _setEventListeners(t, e, n) {\n for (const [i, r] of e) {\n var _this$data$actions;\n (\"Action\" === r || ((_this$data$actions = this.data.actions) === null || _this$data$actions === void 0 ? void 0 : _this$data$actions[r])) && this._setEventListener(t, i, r, n);\n }\n }\n _setBackgroundColor(t) {\n const e = this.data.backgroundColor || null;\n t.style.backgroundColor = null === e ? \"transparent\" : i.Util.makeHexColor(e[0], e[1], e[2]);\n }\n _setTextStyle(t) {\n const e = [\"left\", \"center\", \"right\"],\n {\n fontColor: n\n } = this.data.defaultAppearanceData,\n r = this.data.defaultAppearanceData.fontSize || 9,\n s = t.style;\n let a;\n const roundToOneDecimal = t => Math.round(10 * t) / 10;\n if (this.data.multiLine) {\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2),\n e = t / (Math.round(t / (i.LINE_FACTOR * r)) || 1);\n a = Math.min(r, roundToOneDecimal(e / i.LINE_FACTOR));\n } else {\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2);\n a = Math.min(r, roundToOneDecimal(t / i.LINE_FACTOR));\n }\n s.fontSize = \"calc(\".concat(a, \"px * var(--scale-factor))\");\n s.color = i.Util.makeHexColor(n[0], n[1], n[2]);\n null !== this.data.textAlignment && (s.textAlign = e[this.data.textAlignment]);\n }\n _setRequired(t, e) {\n e ? t.setAttribute(\"required\", !0) : t.removeAttribute(\"required\");\n t.setAttribute(\"aria-required\", e);\n }\n }\n class TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms || !t.data.hasAppearance && !!t.data.fieldValue\n });\n }\n setPropertyOnSiblings(t, e, n, i) {\n const r = this.annotationStorage;\n for (const s of this._getElementsByName(t.name, t.id)) {\n s.domElement && (s.domElement[e] = n);\n r.setValue(s.id, {\n [i]: n\n });\n }\n }\n render() {\n const t = this.annotationStorage,\n e = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let n = null;\n if (this.renderForms) {\n var _this$data$textConten;\n const i = t.getValue(e, {\n value: this.data.fieldValue\n });\n let r = i.value || \"\";\n const s = t.getValue(e, {\n charLimit: this.data.maxLen\n }).charLimit;\n s && r.length > s && (r = r.slice(0, s));\n let a = i.formattedValue || ((_this$data$textConten = this.data.textContent) === null || _this$data$textConten === void 0 ? void 0 : _this$data$textConten.join(\"\\n\")) || null;\n a && this.data.comb && (a = a.replaceAll(/\\s+/g, \"\"));\n const o = {\n userValue: r,\n formattedValue: a,\n lastCommittedValue: null,\n commitKey: 1\n };\n if (this.data.multiLine) {\n var _a4;\n n = document.createElement(\"textarea\");\n n.textContent = (_a4 = a) !== null && _a4 !== void 0 ? _a4 : r;\n this.data.doNotScroll && (n.style.overflowY = \"hidden\");\n } else {\n var _a5;\n n = document.createElement(\"input\");\n n.type = \"text\";\n n.setAttribute(\"value\", (_a5 = a) !== null && _a5 !== void 0 ? _a5 : r);\n this.data.doNotScroll && (n.style.overflowX = \"hidden\");\n }\n this.data.hasOwnCanvas && (n.hidden = !0);\n h.add(n);\n n.setAttribute(\"data-element-id\", e);\n n.disabled = this.data.readOnly;\n n.name = this.data.baseFieldName || this.data.fieldName;\n n.tabIndex = c;\n this._setRequired(n, this.data.required);\n s && (n.maxLength = s);\n n.addEventListener(\"input\", i => {\n t.setValue(e, {\n value: i.target.value\n });\n this.setPropertyOnSiblings(n, \"value\", i.target.value, \"value\");\n o.formattedValue = null;\n });\n n.addEventListener(\"resetform\", t => {\n var _this$data$defaultFie;\n const e = (_this$data$defaultFie = this.data.defaultFieldValue) !== null && _this$data$defaultFie !== void 0 ? _this$data$defaultFie : \"\";\n n.value = o.userValue = e;\n o.formattedValue = null;\n });\n let blurListener = t => {\n const {\n formattedValue: e\n } = o;\n null != e && (t.target.value = e);\n t.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n var _this$data$actions2;\n n.addEventListener(\"focus\", t => {\n const {\n target: e\n } = t;\n o.userValue && (e.value = o.userValue);\n o.lastCommittedValue = e.value;\n o.commitKey = 1;\n });\n n.addEventListener(\"updatefromsandbox\", n => {\n this.showElementAndHideCanvas(n.target);\n const i = {\n value(n) {\n var _n$detail$value;\n o.userValue = (_n$detail$value = n.detail.value) !== null && _n$detail$value !== void 0 ? _n$detail$value : \"\";\n t.setValue(e, {\n value: o.userValue.toString()\n });\n n.target.value = o.userValue;\n },\n formattedValue(n) {\n const {\n formattedValue: i\n } = n.detail;\n o.formattedValue = i;\n null != i && n.target !== document.activeElement && (n.target.value = i);\n t.setValue(e, {\n formattedValue: i\n });\n },\n selRange(t) {\n t.target.setSelectionRange(...t.detail.selRange);\n },\n charLimit: n => {\n const {\n charLimit: i\n } = n.detail,\n {\n target: r\n } = n;\n if (0 === i) {\n r.removeAttribute(\"maxLength\");\n return;\n }\n r.setAttribute(\"maxLength\", i);\n let s = o.userValue;\n if (s && !(s.length <= i)) {\n var _this$linkService$eve6;\n s = s.slice(0, i);\n r.value = o.userValue = s;\n t.setValue(e, {\n value: s\n });\n (_this$linkService$eve6 = this.linkService.eventBus) === null || _this$linkService$eve6 === void 0 ? void 0 : _this$linkService$eve6.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: s,\n willCommit: !0,\n commitKey: 1,\n selStart: r.selectionStart,\n selEnd: r.selectionEnd\n }\n });\n }\n }\n };\n this._dispatchEventFromSandbox(i, n);\n });\n n.addEventListener(\"keydown\", t => {\n o.commitKey = 1;\n let n = -1;\n \"Escape\" === t.key ? n = 0 : \"Enter\" !== t.key || this.data.multiLine ? \"Tab\" === t.key && (o.commitKey = 3) : n = 2;\n if (-1 === n) return;\n const {\n value: i\n } = t.target;\n if (o.lastCommittedValue !== i) {\n var _this$linkService$eve7;\n o.lastCommittedValue = i;\n o.userValue = i;\n (_this$linkService$eve7 = this.linkService.eventBus) === null || _this$linkService$eve7 === void 0 ? void 0 : _this$linkService$eve7.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: i,\n willCommit: !0,\n commitKey: n,\n selStart: t.target.selectionStart,\n selEnd: t.target.selectionEnd\n }\n });\n }\n });\n const i = blurListener;\n blurListener = null;\n n.addEventListener(\"blur\", t => {\n var _this$linkService$eve8;\n if (!t.relatedTarget) return;\n const {\n value: n\n } = t.target;\n o.userValue = n;\n o.lastCommittedValue !== n && ((_this$linkService$eve8 = this.linkService.eventBus) === null || _this$linkService$eve8 === void 0 ? void 0 : _this$linkService$eve8.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: n,\n willCommit: !0,\n commitKey: o.commitKey,\n selStart: t.target.selectionStart,\n selEnd: t.target.selectionEnd\n }\n }));\n i(t);\n });\n ((_this$data$actions2 = this.data.actions) === null || _this$data$actions2 === void 0 ? void 0 : _this$data$actions2.Keystroke) && n.addEventListener(\"beforeinput\", t => {\n var _this$linkService$eve9;\n o.lastCommittedValue = null;\n const {\n data: n,\n target: i\n } = t,\n {\n value: r,\n selectionStart: s,\n selectionEnd: a\n } = i;\n let l = s,\n c = a;\n switch (t.inputType) {\n case \"deleteWordBackward\":\n {\n const t = r.substring(0, s).match(/\\w*[^\\w]*$/);\n t && (l -= t[0].length);\n break;\n }\n case \"deleteWordForward\":\n {\n const t = r.substring(s).match(/^[^\\w]*\\w*/);\n t && (c += t[0].length);\n break;\n }\n case \"deleteContentBackward\":\n s === a && (l -= 1);\n break;\n case \"deleteContentForward\":\n s === a && (c += 1);\n }\n t.preventDefault();\n (_this$linkService$eve9 = this.linkService.eventBus) === null || _this$linkService$eve9 === void 0 ? void 0 : _this$linkService$eve9.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: r,\n change: n || \"\",\n willCommit: !1,\n selStart: l,\n selEnd: c\n }\n });\n });\n this._setEventListeners(n, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.value);\n }\n blurListener && n.addEventListener(\"blur\", blurListener);\n if (this.data.comb) {\n const t = (this.data.rect[2] - this.data.rect[0]) / s;\n n.classList.add(\"comb\");\n n.style.letterSpacing = \"calc(\".concat(t, \"px * var(--scale-factor) - 1ch)\");\n }\n } else {\n n = document.createElement(\"div\");\n n.textContent = this.data.fieldValue;\n n.style.verticalAlign = \"middle\";\n n.style.display = \"table-cell\";\n }\n this._setTextStyle(n);\n this._setBackgroundColor(n);\n this._setDefaultPropertiesFromJS(n);\n this.container.append(n);\n return this.container;\n }\n }\n class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: !!t.data.hasOwnCanvas\n });\n }\n }\n class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n const t = this.annotationStorage,\n e = this.data,\n n = e.id;\n let i = t.getValue(n, {\n value: e.exportValue === e.fieldValue\n }).value;\n if (\"string\" == typeof i) {\n i = \"Off\" !== i;\n t.setValue(n, {\n value: i\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const r = document.createElement(\"input\");\n h.add(r);\n r.setAttribute(\"data-element-id\", n);\n r.disabled = e.readOnly;\n this._setRequired(r, this.data.required);\n r.type = \"checkbox\";\n r.name = e.baseFieldName || e.fieldName;\n i && r.setAttribute(\"checked\", !0);\n r.setAttribute(\"exportValue\", e.exportValue);\n r.tabIndex = c;\n r.addEventListener(\"change\", i => {\n const {\n name: r,\n checked: s\n } = i.target;\n for (const i of this._getElementsByName(r, n)) {\n const n = s && i.exportValue === e.exportValue;\n i.domElement && (i.domElement.checked = n);\n t.setValue(i.id, {\n value: n\n });\n }\n t.setValue(n, {\n value: s\n });\n });\n r.addEventListener(\"resetform\", t => {\n const n = e.defaultFieldValue || \"Off\";\n t.target.checked = n === e.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n r.addEventListener(\"updatefromsandbox\", e => {\n const i = {\n value(e) {\n e.target.checked = \"Off\" !== e.detail.value;\n t.setValue(n, {\n value: e.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(i, e);\n });\n this._setEventListeners(r, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.checked);\n }\n this._setBackgroundColor(r);\n this._setDefaultPropertiesFromJS(r);\n this.container.append(r);\n return this.container;\n }\n }\n class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const t = this.annotationStorage,\n e = this.data,\n n = e.id;\n let i = t.getValue(n, {\n value: e.fieldValue === e.buttonValue\n }).value;\n if (\"string\" == typeof i) {\n i = i !== e.buttonValue;\n t.setValue(n, {\n value: i\n });\n }\n const r = document.createElement(\"input\");\n h.add(r);\n r.setAttribute(\"data-element-id\", n);\n r.disabled = e.readOnly;\n this._setRequired(r, this.data.required);\n r.type = \"radio\";\n r.name = e.baseFieldName || e.fieldName;\n i && r.setAttribute(\"checked\", !0);\n r.tabIndex = c;\n r.addEventListener(\"change\", e => {\n const {\n name: i,\n checked: r\n } = e.target;\n for (const e of this._getElementsByName(i, n)) t.setValue(e.id, {\n value: !1\n });\n t.setValue(n, {\n value: r\n });\n });\n r.addEventListener(\"resetform\", t => {\n const n = e.defaultFieldValue;\n t.target.checked = null != n && n === e.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const i = e.buttonValue;\n r.addEventListener(\"updatefromsandbox\", e => {\n const r = {\n value: e => {\n const r = i === e.detail.value;\n for (const i of this._getElementsByName(e.target.name)) {\n const e = r && i.id === n;\n i.domElement && (i.domElement.checked = e);\n t.setValue(i.id, {\n value: e\n });\n }\n }\n };\n this._dispatchEventFromSandbox(r, e);\n });\n this._setEventListeners(r, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], t => t.target.checked);\n }\n this._setBackgroundColor(r);\n this._setDefaultPropertiesFromJS(r);\n this.container.append(r);\n return this.container;\n }\n }\n class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(t) {\n super(t, {\n ignoreBorder: t.data.hasAppearance\n });\n }\n render() {\n const t = super.render();\n t.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n this.data.alternativeText && (t.title = this.data.alternativeText);\n const e = t.lastChild;\n if (this.enableScripting && this.hasJSActions && e) {\n this._setDefaultPropertiesFromJS(e);\n e.addEventListener(\"updatefromsandbox\", t => {\n this._dispatchEventFromSandbox({}, t);\n });\n }\n return t;\n }\n }\n class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(t) {\n super(t, {\n isRenderable: t.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const t = this.annotationStorage,\n e = this.data.id,\n n = t.getValue(e, {\n value: this.data.fieldValue\n }),\n i = document.createElement(\"select\");\n h.add(i);\n i.setAttribute(\"data-element-id\", e);\n i.disabled = this.data.readOnly;\n this._setRequired(i, this.data.required);\n i.name = this.data.baseFieldName || this.data.fieldName;\n i.tabIndex = c;\n let r = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n i.size = this.data.options.length;\n this.data.multiSelect && (i.multiple = !0);\n }\n i.addEventListener(\"resetform\", t => {\n const e = this.data.defaultFieldValue;\n for (const t of i.options) t.selected = t.value === e;\n });\n for (const t of this.data.options) {\n const e = document.createElement(\"option\");\n e.textContent = t.displayValue;\n e.value = t.exportValue;\n if (n.value.includes(t.exportValue)) {\n e.setAttribute(\"selected\", !0);\n r = !1;\n }\n i.append(e);\n }\n let s = null;\n if (r) {\n const t = document.createElement(\"option\");\n t.value = \" \";\n t.setAttribute(\"hidden\", !0);\n t.setAttribute(\"selected\", !0);\n i.prepend(t);\n s = () => {\n t.remove();\n i.removeEventListener(\"input\", s);\n s = null;\n };\n i.addEventListener(\"input\", s);\n }\n const getValue = t => {\n const e = t ? \"value\" : \"textContent\",\n {\n options: n,\n multiple: r\n } = i;\n return r ? Array.prototype.filter.call(n, t => t.selected).map(t => t[e]) : -1 === n.selectedIndex ? null : n[n.selectedIndex][e];\n };\n let a = getValue(!1);\n const getItems = t => {\n const e = t.target.options;\n return Array.prototype.map.call(e, t => ({\n displayValue: t.textContent,\n exportValue: t.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n i.addEventListener(\"updatefromsandbox\", n => {\n const r = {\n value(n) {\n var _s5;\n (_s5 = s) === null || _s5 === void 0 ? void 0 : _s5();\n const r = n.detail.value,\n o = new Set(Array.isArray(r) ? r : [r]);\n for (const t of i.options) t.selected = o.has(t.value);\n t.setValue(e, {\n value: getValue(!0)\n });\n a = getValue(!1);\n },\n multipleSelection(t) {\n i.multiple = !0;\n },\n remove(n) {\n const r = i.options,\n s = n.detail.remove;\n r[s].selected = !1;\n i.remove(s);\n if (r.length > 0) {\n -1 === Array.prototype.findIndex.call(r, t => t.selected) && (r[0].selected = !0);\n }\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n clear(n) {\n for (; 0 !== i.length;) i.remove(0);\n t.setValue(e, {\n value: null,\n items: []\n });\n a = getValue(!1);\n },\n insert(n) {\n const {\n index: r,\n displayValue: s,\n exportValue: o\n } = n.detail.insert,\n l = i.children[r],\n c = document.createElement(\"option\");\n c.textContent = s;\n c.value = o;\n l ? l.before(c) : i.append(c);\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n items(n) {\n const {\n items: r\n } = n.detail;\n for (; 0 !== i.length;) i.remove(0);\n for (const t of r) {\n const {\n displayValue: e,\n exportValue: n\n } = t,\n r = document.createElement(\"option\");\n r.textContent = e;\n r.value = n;\n i.append(r);\n }\n i.options.length > 0 && (i.options[0].selected = !0);\n t.setValue(e, {\n value: getValue(!0),\n items: getItems(n)\n });\n a = getValue(!1);\n },\n indices(n) {\n const i = new Set(n.detail.indices);\n for (const t of n.target.options) t.selected = i.has(t.index);\n t.setValue(e, {\n value: getValue(!0)\n });\n a = getValue(!1);\n },\n editable(t) {\n t.target.disabled = !t.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(r, n);\n });\n i.addEventListener(\"input\", n => {\n var _this$linkService$eve10;\n const i = getValue(!0);\n t.setValue(e, {\n value: i\n });\n n.preventDefault();\n (_this$linkService$eve10 = this.linkService.eventBus) === null || _this$linkService$eve10 === void 0 ? void 0 : _this$linkService$eve10.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: e,\n name: \"Keystroke\",\n value: a,\n changeEx: i,\n willCommit: !1,\n commitKey: 1,\n keyDown: !1\n }\n });\n });\n this._setEventListeners(i, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], t => t.target.value);\n } else i.addEventListener(\"input\", function (n) {\n t.setValue(e, {\n value: getValue(!0)\n });\n });\n this.data.combo && this._setTextStyle(i);\n this._setBackgroundColor(i);\n this._setDefaultPropertiesFromJS(i);\n this.container.append(i);\n return this.container;\n }\n }\n class PopupAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _e$titleObj, _e$contentsObj, _e$richText;\n const {\n data: e,\n elements: n\n } = t;\n super(t, {\n isRenderable: !!((_e$titleObj = e.titleObj) !== null && _e$titleObj !== void 0 && _e$titleObj.str || (_e$contentsObj = e.contentsObj) !== null && _e$contentsObj !== void 0 && _e$contentsObj.str || (_e$richText = e.richText) !== null && _e$richText !== void 0 && _e$richText.str)\n });\n this.elements = n;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const t = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n }),\n e = [];\n for (const n of this.elements) {\n n.popup = t;\n e.push(n.data.id);\n n.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", e.join(\",\"));\n return this.container;\n }\n }\n var _Ne = /*#__PURE__*/new WeakMap();\n var _Be = /*#__PURE__*/new WeakMap();\n var _Ue = /*#__PURE__*/new WeakMap();\n var _He = /*#__PURE__*/new WeakMap();\n var _Se2 = /*#__PURE__*/new WeakMap();\n var _bt2 = /*#__PURE__*/new WeakMap();\n var _We = /*#__PURE__*/new WeakMap();\n var _Ge = /*#__PURE__*/new WeakMap();\n var _Ve = /*#__PURE__*/new WeakMap();\n var _$e = /*#__PURE__*/new WeakMap();\n var _Xe = /*#__PURE__*/new WeakMap();\n var _Ke = /*#__PURE__*/new WeakMap();\n var _Ye = /*#__PURE__*/new WeakMap();\n var _Je = /*#__PURE__*/new WeakMap();\n var _Qe = /*#__PURE__*/new WeakMap();\n var _Ze = /*#__PURE__*/new WeakMap();\n var _qe = /*#__PURE__*/new WeakSet();\n var _ze = /*#__PURE__*/new WeakSet();\n var _je = /*#__PURE__*/new WeakSet();\n class PopupElement {\n constructor(t) {\n _classPrivateMethodInitSpec(this, _je);\n _classPrivateMethodInitSpec(this, _ze);\n _classPrivateMethodInitSpec(this, _qe);\n _classPrivateFieldInitSpec(this, _Ne, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Be, {\n writable: true,\n value: _classPrivateMethodGet(this, _je, _je2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _Ue, {\n writable: true,\n value: _classPrivateMethodGet(this, _ze, _ze2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _He, {\n writable: true,\n value: _classPrivateMethodGet(this, _qe, _qe2).bind(this)\n });\n _classPrivateFieldInitSpec(this, _Se2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _bt2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _We, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ge, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ve, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _$e, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Xe, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _Ke, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ye, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Je, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Qe, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Ze, {\n writable: true,\n value: !1\n });\n let {\n container: e,\n color: n,\n elements: i,\n titleObj: s,\n modificationDate: a,\n contentsObj: o,\n richText: l,\n parent: c,\n rect: h,\n parentRect: d,\n open: u\n } = t;\n _classPrivateFieldSet(this, _bt2, e);\n _classPrivateFieldSet(this, _Qe, s);\n _classPrivateFieldSet(this, _We, o);\n _classPrivateFieldSet(this, _Je, l);\n _classPrivateFieldSet(this, _Ve, c);\n _classPrivateFieldSet(this, _Se2, n);\n _classPrivateFieldSet(this, _Ye, h);\n _classPrivateFieldSet(this, _$e, d);\n _classPrivateFieldSet(this, _Ge, i);\n const p = r.PDFDateString.toDateObject(a);\n p && _classPrivateFieldSet(this, _Ne, c.l10n.get(\"annotation_date_string\", {\n date: p.toLocaleDateString(),\n time: p.toLocaleTimeString()\n }));\n this.trigger = i.flatMap(t => t.getElementsToTriggerPopup());\n for (const t of this.trigger) {\n t.addEventListener(\"click\", _classPrivateFieldGet(this, _He));\n t.addEventListener(\"mouseenter\", _classPrivateFieldGet(this, _Ue));\n t.addEventListener(\"mouseleave\", _classPrivateFieldGet(this, _Be));\n }\n _classPrivateFieldGet(this, _bt2).hidden = !0;\n u && _classPrivateMethodGet(this, _qe, _qe2).call(this);\n }\n render() {\n if (_classPrivateFieldGet(this, _Ke)) return;\n const {\n page: {\n view: t\n },\n viewport: {\n rawDims: {\n pageWidth: e,\n pageHeight: n,\n pageX: r,\n pageY: s\n }\n }\n } = _classPrivateFieldGet(this, _Ve),\n a = _classPrivateFieldSet(this, _Ke, document.createElement(\"div\"));\n a.className = \"popup\";\n if (_classPrivateFieldGet(this, _Se2)) {\n const t = a.style.outlineColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2));\n if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) a.style.backgroundColor = \"color-mix(in srgb, \".concat(t, \" 30%, white)\");else {\n const t = .7;\n a.style.backgroundColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2).map(e => Math.floor(t * (255 - e) + e)));\n }\n }\n const o = document.createElement(\"span\");\n o.className = \"header\";\n const c = document.createElement(\"h1\");\n o.append(c);\n ({\n dir: c.dir,\n str: c.textContent\n } = _classPrivateFieldGet(this, _Qe));\n a.append(o);\n if (_classPrivateFieldGet(this, _Ne)) {\n const t = document.createElement(\"span\");\n t.classList.add(\"popupDate\");\n _classPrivateFieldGet(this, _Ne).then(e => {\n t.textContent = e;\n });\n o.append(t);\n }\n const h = _classPrivateFieldGet(this, _We),\n d = _classPrivateFieldGet(this, _Je);\n if (!(d !== null && d !== void 0 && d.str) || h !== null && h !== void 0 && h.str && h.str !== d.str) {\n const t = this._formatContents(h);\n a.append(t);\n } else {\n l.XfaLayer.render({\n xfaHtml: d.html,\n intent: \"richText\",\n div: a\n });\n a.lastChild.classList.add(\"richText\", \"popupContent\");\n }\n let u = !!_classPrivateFieldGet(this, _$e),\n p = u ? _classPrivateFieldGet(this, _$e) : _classPrivateFieldGet(this, _Ye);\n for (const t of _classPrivateFieldGet(this, _Ge)) if (!p || null !== i.Util.intersect(t.data.rect, p)) {\n p = t.data.rect;\n u = !0;\n break;\n }\n const f = i.Util.normalizeRect([p[0], t[3] - p[1] + t[1], p[2], t[3] - p[3] + t[1]]),\n g = u ? p[2] - p[0] + 5 : 0,\n m = f[0] + g,\n b = f[1],\n {\n style: v\n } = _classPrivateFieldGet(this, _bt2);\n v.left = 100 * (m - r) / e + \"%\";\n v.top = 100 * (b - s) / n + \"%\";\n _classPrivateFieldGet(this, _bt2).append(a);\n }\n _formatContents(t) {\n let {\n str: e,\n dir: n\n } = t;\n const i = document.createElement(\"p\");\n i.classList.add(\"popupContent\");\n i.dir = n;\n const r = e.split(/(?:\\r\\n?|\\n)/);\n for (let t = 0, e = r.length; t < e; ++t) {\n const n = r[t];\n i.append(document.createTextNode(n));\n t < e - 1 && i.append(document.createElement(\"br\"));\n }\n return i;\n }\n forceHide() {\n _classPrivateFieldSet(this, _Ze, this.isVisible);\n _classPrivateFieldGet(this, _Ze) && (_classPrivateFieldGet(this, _bt2).hidden = !0);\n }\n maybeShow() {\n if (_classPrivateFieldGet(this, _Ze)) {\n _classPrivateFieldSet(this, _Ze, !1);\n _classPrivateFieldGet(this, _bt2).hidden = !1;\n }\n }\n get isVisible() {\n return !1 === _classPrivateFieldGet(this, _bt2).hidden;\n }\n }\n function _qe2() {\n _classPrivateFieldSet(this, _Xe, !_classPrivateFieldGet(this, _Xe));\n if (_classPrivateFieldGet(this, _Xe)) {\n _classPrivateMethodGet(this, _ze, _ze2).call(this);\n _classPrivateFieldGet(this, _bt2).addEventListener(\"click\", _classPrivateFieldGet(this, _He));\n } else {\n _classPrivateMethodGet(this, _je, _je2).call(this);\n _classPrivateFieldGet(this, _bt2).removeEventListener(\"click\", _classPrivateFieldGet(this, _He));\n }\n }\n function _ze2() {\n _classPrivateFieldGet(this, _Ke) || this.render();\n if (this.isVisible) _classPrivateFieldGet(this, _Xe) && _classPrivateFieldGet(this, _bt2).classList.add(\"focused\");else {\n _classPrivateFieldGet(this, _bt2).hidden = !1;\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) + 1e3;\n }\n }\n function _je2() {\n _classPrivateFieldGet(this, _bt2).classList.remove(\"focused\");\n if (!_classPrivateFieldGet(this, _Xe) && this.isVisible) {\n _classPrivateFieldGet(this, _bt2).hidden = !0;\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) - 1e3;\n }\n }\n class FreeTextAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj2, _t$data$contentsObj2, _t$data$richText2;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj2 = t.data.titleObj) !== null && _t$data$titleObj2 !== void 0 && _t$data$titleObj2.str || (_t$data$contentsObj2 = t.data.contentsObj) !== null && _t$data$contentsObj2 !== void 0 && _t$data$contentsObj2.str || (_t$data$richText2 = t.data.richText) !== null && _t$data$richText2 !== void 0 && _t$data$richText2.str),\n ignoreBorder: !0\n });\n this.textContent = t.data.textContent;\n this.textPosition = t.data.textPosition;\n this.annotationEditorType = i.AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const t = document.createElement(\"div\");\n t.classList.add(\"annotationTextContent\");\n t.setAttribute(\"role\", \"comment\");\n for (const e of this.textContent) {\n const n = document.createElement(\"span\");\n n.textContent = e;\n t.append(n);\n }\n this.container.append(t);\n }\n this.data.popupRef || this._createPopup();\n this._editOnDoubleClick();\n return this.container;\n }\n }\n e.FreeTextAnnotationElement = FreeTextAnnotationElement;\n var _tn = /*#__PURE__*/new WeakMap();\n class LineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj3, _t$data$contentsObj3, _t$data$richText3;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj3 = t.data.titleObj) !== null && _t$data$titleObj3 !== void 0 && _t$data$titleObj3.str || (_t$data$contentsObj3 = t.data.contentsObj) !== null && _t$data$contentsObj3 !== void 0 && _t$data$contentsObj3.str || (_t$data$richText3 = t.data.richText) !== null && _t$data$richText3 !== void 0 && _t$data$richText3.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _tn, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = _classPrivateFieldSet(this, _tn, this.svgFactory.createElement(\"svg:line\"));\n r.setAttribute(\"x1\", t.rect[2] - t.lineCoordinates[0]);\n r.setAttribute(\"y1\", t.rect[3] - t.lineCoordinates[1]);\n r.setAttribute(\"x2\", t.rect[2] - t.lineCoordinates[2]);\n r.setAttribute(\"y2\", t.rect[3] - t.lineCoordinates[3]);\n r.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n r.setAttribute(\"stroke\", \"transparent\");\n r.setAttribute(\"fill\", \"transparent\");\n i.append(r);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _tn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _en = /*#__PURE__*/new WeakMap();\n class SquareAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj4, _t$data$contentsObj4, _t$data$richText4;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj4 = t.data.titleObj) !== null && _t$data$titleObj4 !== void 0 && _t$data$titleObj4.str || (_t$data$contentsObj4 = t.data.contentsObj) !== null && _t$data$contentsObj4 !== void 0 && _t$data$contentsObj4.str || (_t$data$richText4 = t.data.richText) !== null && _t$data$richText4 !== void 0 && _t$data$richText4.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _en, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = t.borderStyle.width,\n s = _classPrivateFieldSet(this, _en, this.svgFactory.createElement(\"svg:rect\"));\n s.setAttribute(\"x\", r / 2);\n s.setAttribute(\"y\", r / 2);\n s.setAttribute(\"width\", e - r);\n s.setAttribute(\"height\", n - r);\n s.setAttribute(\"stroke-width\", r || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _en);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _nn = /*#__PURE__*/new WeakMap();\n class CircleAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj5, _t$data$contentsObj5, _t$data$richText5;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj5 = t.data.titleObj) !== null && _t$data$titleObj5 !== void 0 && _t$data$titleObj5.str || (_t$data$contentsObj5 = t.data.contentsObj) !== null && _t$data$contentsObj5 !== void 0 && _t$data$contentsObj5.str || (_t$data$richText5 = t.data.richText) !== null && _t$data$richText5 !== void 0 && _t$data$richText5.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _nn, {\n writable: true,\n value: null\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0),\n r = t.borderStyle.width,\n s = _classPrivateFieldSet(this, _nn, this.svgFactory.createElement(\"svg:ellipse\"));\n s.setAttribute(\"cx\", e / 2);\n s.setAttribute(\"cy\", n / 2);\n s.setAttribute(\"rx\", e / 2 - r / 2);\n s.setAttribute(\"ry\", n / 2 - r / 2);\n s.setAttribute(\"stroke-width\", r || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup();\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _nn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n var _in = /*#__PURE__*/new WeakMap();\n class PolylineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj6, _t$data$contentsObj6, _t$data$richText6;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj6 = t.data.titleObj) !== null && _t$data$titleObj6 !== void 0 && _t$data$titleObj6.str || (_t$data$contentsObj6 = t.data.contentsObj) !== null && _t$data$contentsObj6 !== void 0 && _t$data$contentsObj6.str || (_t$data$richText6 = t.data.richText) !== null && _t$data$richText6 !== void 0 && _t$data$richText6.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _in, {\n writable: true,\n value: null\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0);\n let r = [];\n for (const e of t.vertices) {\n const n = e.x - t.rect[0],\n i = t.rect[3] - e.y;\n r.push(n + \",\" + i);\n }\n r = r.join(\" \");\n const s = _classPrivateFieldSet(this, _in, this.svgFactory.createElement(this.svgElementName));\n s.setAttribute(\"points\", r);\n s.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n s.setAttribute(\"stroke\", \"transparent\");\n s.setAttribute(\"fill\", \"transparent\");\n i.append(s);\n this.container.append(i);\n t.popupRef || this._createPopup(s, t);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _in);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n class PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(t) {\n super(t);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n }\n class CaretAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj7, _t$data$contentsObj7, _t$data$richText7;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj7 = t.data.titleObj) !== null && _t$data$titleObj7 !== void 0 && _t$data$titleObj7.str || (_t$data$contentsObj7 = t.data.contentsObj) !== null && _t$data$contentsObj7 !== void 0 && _t$data$contentsObj7.str || (_t$data$richText7 = t.data.richText) !== null && _t$data$richText7 !== void 0 && _t$data$richText7.str),\n ignoreBorder: !0\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n this.data.popupRef || this._createPopup();\n return this.container;\n }\n }\n var _rn = /*#__PURE__*/new WeakMap();\n class InkAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj8, _t$data$contentsObj8, _t$data$richText8;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj8 = t.data.titleObj) !== null && _t$data$titleObj8 !== void 0 && _t$data$titleObj8.str || (_t$data$contentsObj8 = t.data.contentsObj) !== null && _t$data$contentsObj8 !== void 0 && _t$data$contentsObj8.str || (_t$data$richText8 = t.data.richText) !== null && _t$data$richText8 !== void 0 && _t$data$richText8.str),\n ignoreBorder: !0\n });\n _classPrivateFieldInitSpec(this, _rn, {\n writable: true,\n value: []\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = i.AnnotationEditorType.INK;\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const t = this.data,\n {\n width: e,\n height: n\n } = getRectDims(t.rect),\n i = this.svgFactory.create(e, n, !0);\n for (const e of t.inkLists) {\n let n = [];\n for (const i of e) {\n const e = i.x - t.rect[0],\n r = t.rect[3] - i.y;\n n.push(\"\".concat(e, \",\").concat(r));\n }\n n = n.join(\" \");\n const r = this.svgFactory.createElement(this.svgElementName);\n _classPrivateFieldGet(this, _rn).push(r);\n r.setAttribute(\"points\", n);\n r.setAttribute(\"stroke-width\", t.borderStyle.width || 1);\n r.setAttribute(\"stroke\", \"transparent\");\n r.setAttribute(\"fill\", \"transparent\");\n t.popupRef || this._createPopup(r, t);\n i.append(r);\n }\n this.container.append(i);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _rn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n }\n e.InkAnnotationElement = InkAnnotationElement;\n class HighlightAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj9, _t$data$contentsObj9, _t$data$richText9;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj9 = t.data.titleObj) !== null && _t$data$titleObj9 !== void 0 && _t$data$titleObj9.str || (_t$data$contentsObj9 = t.data.contentsObj) !== null && _t$data$contentsObj9 !== void 0 && _t$data$contentsObj9.str || (_t$data$richText9 = t.data.richText) !== null && _t$data$richText9 !== void 0 && _t$data$richText9.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n }\n class UnderlineAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj10, _t$data$contentsObj10, _t$data$richText10;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj10 = t.data.titleObj) !== null && _t$data$titleObj10 !== void 0 && _t$data$titleObj10.str || (_t$data$contentsObj10 = t.data.contentsObj) !== null && _t$data$contentsObj10 !== void 0 && _t$data$contentsObj10.str || (_t$data$richText10 = t.data.richText) !== null && _t$data$richText10 !== void 0 && _t$data$richText10.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n }\n class SquigglyAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj11, _t$data$contentsObj11, _t$data$richText11;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj11 = t.data.titleObj) !== null && _t$data$titleObj11 !== void 0 && _t$data$titleObj11.str || (_t$data$contentsObj11 = t.data.contentsObj) !== null && _t$data$contentsObj11 !== void 0 && _t$data$contentsObj11.str || (_t$data$richText11 = t.data.richText) !== null && _t$data$richText11 !== void 0 && _t$data$richText11.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n }\n class StrikeOutAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj12, _t$data$contentsObj12, _t$data$richText12;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj12 = t.data.titleObj) !== null && _t$data$titleObj12 !== void 0 && _t$data$titleObj12.str || (_t$data$contentsObj12 = t.data.contentsObj) !== null && _t$data$contentsObj12 !== void 0 && _t$data$contentsObj12.str || (_t$data$richText12 = t.data.richText) !== null && _t$data$richText12 !== void 0 && _t$data$richText12.str),\n ignoreBorder: !0,\n createQuadrilaterals: !0\n });\n }\n render() {\n this.data.popupRef || this._createPopup();\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n }\n class StampAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _t$data$titleObj13, _t$data$contentsObj13, _t$data$richText13;\n super(t, {\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj13 = t.data.titleObj) !== null && _t$data$titleObj13 !== void 0 && _t$data$titleObj13.str || (_t$data$contentsObj13 = t.data.contentsObj) !== null && _t$data$contentsObj13 !== void 0 && _t$data$contentsObj13.str || (_t$data$richText13 = t.data.richText) !== null && _t$data$richText13 !== void 0 && _t$data$richText13.str),\n ignoreBorder: !0\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.data.popupRef || this._createPopup();\n return this.container;\n }\n }\n e.StampAnnotationElement = StampAnnotationElement;\n var _sn = /*#__PURE__*/new WeakMap();\n class FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(t) {\n var _this$linkService$eve11;\n super(t, {\n isRenderable: !0\n });\n _classPrivateFieldInitSpec(this, _sn, {\n writable: true,\n value: null\n });\n const {\n filename: e,\n content: n\n } = this.data.file;\n this.filename = (0, r.getFilenameFromUrl)(e, !0);\n this.content = n;\n (_this$linkService$eve11 = this.linkService.eventBus) === null || _this$linkService$eve11 === void 0 ? void 0 : _this$linkService$eve11.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename: e,\n content: n\n });\n }\n render() {\n var _this$data$titleObj, _this$data$contentsOb;\n this.container.classList.add(\"fileAttachmentAnnotation\");\n let t;\n if (this.data.hasAppearance) t = document.createElement(\"div\");else {\n t = document.createElement(\"img\");\n t.src = \"\".concat(this.imageResourcesPath, \"annotation-\").concat(/paperclip/i.test(this.data.name) ? \"paperclip\" : \"pushpin\", \".svg\");\n }\n t.classList.add(\"popupTriggerArea\");\n t.addEventListener(\"dblclick\", this._download.bind(this));\n _classPrivateFieldSet(this, _sn, t);\n !this.data.popupRef && (((_this$data$titleObj = this.data.titleObj) === null || _this$data$titleObj === void 0 ? void 0 : _this$data$titleObj.str) || ((_this$data$contentsOb = this.data.contentsObj) === null || _this$data$contentsOb === void 0 ? void 0 : _this$data$contentsOb.str) || this.data.richText) && this._createPopup();\n this.container.append(t);\n return this.container;\n }\n getElementsToTriggerPopup() {\n return _classPrivateFieldGet(this, _sn);\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n _download() {\n var _this$downloadManager2;\n (_this$downloadManager2 = this.downloadManager) === null || _this$downloadManager2 === void 0 ? void 0 : _this$downloadManager2.openOrDownloadData(this.container, this.content, this.filename);\n }\n }\n e.AnnotationLayer = (_re2 = /*#__PURE__*/new WeakMap(), _an = /*#__PURE__*/new WeakMap(), _on = /*#__PURE__*/new WeakMap(), _ln = /*#__PURE__*/new WeakSet(), _cn = /*#__PURE__*/new WeakSet(), class AnnotationLayer {\n constructor(_t16) {\n _classPrivateMethodInitSpec(this, _cn);\n _classPrivateMethodInitSpec(this, _ln);\n _classPrivateFieldInitSpec(this, _re2, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _an, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _on, {\n writable: true,\n value: new Map()\n });\n let {\n div: _e14,\n accessibilityManager: _n8,\n annotationCanvasMap: _i5,\n l10n: _r5,\n page: s,\n viewport: a\n } = _t16;\n this.div = _e14;\n _classPrivateFieldSet(this, _re2, _n8);\n _classPrivateFieldSet(this, _an, _i5);\n this.l10n = _r5;\n this.page = s;\n this.viewport = a;\n this.zIndex = 0;\n this.l10n || (this.l10n = o.NullL10n);\n }\n async render(t) {\n const {\n annotations: e\n } = t,\n n = this.div;\n (0, r.setLayerDimensions)(n, this.viewport);\n const a = new Map(),\n o = {\n data: null,\n layer: n,\n linkService: t.linkService,\n downloadManager: t.downloadManager,\n imageResourcesPath: t.imageResourcesPath || \"\",\n renderForms: !1 !== t.renderForms,\n svgFactory: new r.DOMSVGFactory(),\n annotationStorage: t.annotationStorage || new s.AnnotationStorage(),\n enableScripting: !0 === t.enableScripting,\n hasJSActions: t.hasJSActions,\n fieldObjects: t.fieldObjects,\n parent: this,\n elements: null\n };\n for (const t of e) {\n if (t.noHTML) continue;\n const e = t.annotationType === i.AnnotationType.POPUP;\n if (e) {\n const e = a.get(t.id);\n if (!e) continue;\n o.elements = e;\n } else {\n const {\n width: e,\n height: n\n } = getRectDims(t.rect);\n if (e <= 0 || n <= 0) continue;\n }\n o.data = t;\n const n = AnnotationElementFactory.create(o);\n if (!n.isRenderable) continue;\n if (!e && t.popupRef) {\n const e = a.get(t.popupRef);\n e ? e.push(n) : a.set(t.popupRef, [n]);\n }\n n.annotationEditorType > 0 && _classPrivateFieldGet(this, _on).set(n.data.id, n);\n const r = n.render();\n t.hidden && (r.style.visibility = \"hidden\");\n _classPrivateMethodGet(this, _ln, _ln2).call(this, r, t.id);\n }\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\n await this.l10n.translate(n);\n }\n update(t) {\n let {\n viewport: e\n } = t;\n const n = this.div;\n this.viewport = e;\n (0, r.setLayerDimensions)(n, {\n rotation: e.rotation\n });\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\n n.hidden = !1;\n }\n getEditableAnnotations() {\n return Array.from(_classPrivateFieldGet(this, _on).values());\n }\n getEditableAnnotation(t) {\n return _classPrivateFieldGet(this, _on).get(t);\n }\n });\n function _ln2(t, e) {\n var _classPrivateFieldGet14;\n const n = t.firstChild || t;\n n.id = \"\".concat(r.AnnotationPrefix).concat(e);\n this.div.append(t);\n (_classPrivateFieldGet14 = _classPrivateFieldGet(this, _re2)) === null || _classPrivateFieldGet14 === void 0 ? void 0 : _classPrivateFieldGet14.moveElementInDOM(this.div, t, n, !1);\n }\n function _cn2() {\n if (!_classPrivateFieldGet(this, _an)) return;\n const t = this.div;\n for (const [e, n] of _classPrivateFieldGet(this, _an)) {\n const i = t.querySelector(\"[data-annotation-id=\\\"\".concat(e, \"\\\"]\"));\n if (!i) continue;\n const {\n firstChild: r\n } = i;\n r ? \"CANVAS\" === r.nodeName ? r.replaceWith(n) : r.before(n) : i.append(n);\n }\n _classPrivateFieldGet(this, _an).clear();\n }\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.ColorConverters = void 0;\n function makeColorComp(t) {\n return Math.floor(255 * Math.max(0, Math.min(1, t))).toString(16).padStart(2, \"0\");\n }\n e.ColorConverters = class ColorConverters {\n static CMYK_G(t) {\n let [e, n, i, r] = t;\n return [\"G\", 1 - Math.min(1, .3 * e + .59 * i + .11 * n + r)];\n }\n static G_CMYK(t) {\n let [e] = t;\n return [\"CMYK\", 0, 0, 0, 1 - e];\n }\n static G_RGB(t) {\n let [e] = t;\n return [\"RGB\", e, e, e];\n }\n static G_HTML(t) {\n let [e] = t;\n const n = makeColorComp(e);\n return \"#\".concat(n).concat(n).concat(n);\n }\n static RGB_G(t) {\n let [e, n, i] = t;\n return [\"G\", .3 * e + .59 * n + .11 * i];\n }\n static RGB_HTML(t) {\n let [e, n, i] = t;\n return \"#\".concat(makeColorComp(e)).concat(makeColorComp(n)).concat(makeColorComp(i));\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static CMYK_RGB(t) {\n let [e, n, i, r] = t;\n return [\"RGB\", 1 - Math.min(1, e + r), 1 - Math.min(1, i + r), 1 - Math.min(1, n + r)];\n }\n static CMYK_HTML(t) {\n const e = this.CMYK_RGB(t).slice(1);\n return this.RGB_HTML(e);\n }\n static RGB_CMYK(t) {\n let [e, n, i] = t;\n const r = 1 - e,\n s = 1 - n,\n a = 1 - i;\n return [\"CMYK\", r, s, a, Math.min(r, s, a)];\n }\n };\n }, (t, e) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.NullL10n = void 0;\n e.getL10nFallback = getL10nFallback;\n const n = {\n of_pages: \"of {{pagesCount}}\",\n page_of_pages: \"({{pageNumber}} of {{pagesCount}})\",\n document_properties_kb: \"{{size_kb}} KB ({{size_b}} bytes)\",\n document_properties_mb: \"{{size_mb}} MB ({{size_b}} bytes)\",\n document_properties_date_string: \"{{date}}, {{time}}\",\n document_properties_page_size_unit_inches: \"in\",\n document_properties_page_size_unit_millimeters: \"mm\",\n document_properties_page_size_orientation_portrait: \"portrait\",\n document_properties_page_size_orientation_landscape: \"landscape\",\n document_properties_page_size_name_a3: \"A3\",\n document_properties_page_size_name_a4: \"A4\",\n document_properties_page_size_name_letter: \"Letter\",\n document_properties_page_size_name_legal: \"Legal\",\n document_properties_page_size_dimension_string: \"{{width}} × {{height}} {{unit}} ({{orientation}})\",\n document_properties_page_size_dimension_name_string: \"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\",\n document_properties_linearized_yes: \"Yes\",\n document_properties_linearized_no: \"No\",\n additional_layers: \"Additional Layers\",\n page_landmark: \"Page {{page}}\",\n thumb_page_title: \"Page {{page}}\",\n thumb_page_canvas: \"Thumbnail of Page {{page}}\",\n find_reached_top: \"Reached top of document, continued from bottom\",\n find_reached_bottom: \"Reached end of document, continued from top\",\n \"find_match_count[one]\": \"{{current}} of {{total}} match\",\n \"find_match_count[other]\": \"{{current}} of {{total}} matches\",\n \"find_match_count_limit[one]\": \"More than {{limit}} match\",\n \"find_match_count_limit[other]\": \"More than {{limit}} matches\",\n find_not_found: \"Phrase not found\",\n page_scale_width: \"Page Width\",\n page_scale_fit: \"Page Fit\",\n page_scale_auto: \"Automatic Zoom\",\n page_scale_actual: \"Actual Size\",\n page_scale_percent: \"{{scale}}%\",\n loading_error: \"An error occurred while loading the PDF.\",\n invalid_file_error: \"Invalid or corrupted PDF file.\",\n missing_file_error: \"Missing PDF file.\",\n unexpected_response_error: \"Unexpected server response.\",\n rendering_error: \"An error occurred while rendering the page.\",\n annotation_date_string: \"{{date}}, {{time}}\",\n printing_not_supported: \"Warning: Printing is not fully supported by this browser.\",\n printing_not_ready: \"Warning: The PDF is not fully loaded for printing.\",\n web_fonts_disabled: \"Web fonts are disabled: unable to use embedded PDF fonts.\",\n free_text2_default_content: \"Start typing…\",\n editor_free_text2_aria_label: \"Text Editor\",\n editor_ink2_aria_label: \"Draw Editor\",\n editor_ink_canvas_aria_label: \"User-created image\",\n print_progress_percent: \"{{progress}}%\"\n };\n function getL10nFallback(t, e) {\n switch (t) {\n case \"find_match_count\":\n t = \"find_match_count[\".concat(1 === e.total ? \"one\" : \"other\", \"]\");\n break;\n case \"find_match_count_limit\":\n t = \"find_match_count_limit[\".concat(1 === e.limit ? \"one\" : \"other\", \"]\");\n }\n return n[t] || \"\";\n }\n const i = {\n getLanguage: async () => \"en-us\",\n getDirection: async () => \"ltr\",\n async get(t) {\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n return function formatL10nValue(t, e) {\n return e ? t.replaceAll(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (t, n) => n in e ? e[n] : \"{{\" + n + \"}}\") : t;\n }(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : getL10nFallback(t, e), e);\n },\n async translate(t) {}\n };\n e.NullL10n = i;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.XfaLayer = void 0;\n n(89);\n var i = n(193);\n e.XfaLayer = class XfaLayer {\n static setupStorage(t, e, n, i, r) {\n const s = i.getValue(e, {\n value: null\n });\n switch (n.name) {\n case \"textarea\":\n null !== s.value && (t.textContent = s.value);\n if (\"print\" === r) break;\n t.addEventListener(\"input\", t => {\n i.setValue(e, {\n value: t.target.value\n });\n });\n break;\n case \"input\":\n if (\"radio\" === n.attributes.type || \"checkbox\" === n.attributes.type) {\n s.value === n.attributes.xfaOn ? t.setAttribute(\"checked\", !0) : s.value === n.attributes.xfaOff && t.removeAttribute(\"checked\");\n if (\"print\" === r) break;\n t.addEventListener(\"change\", t => {\n i.setValue(e, {\n value: t.target.checked ? t.target.getAttribute(\"xfaOn\") : t.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n null !== s.value && t.setAttribute(\"value\", s.value);\n if (\"print\" === r) break;\n t.addEventListener(\"input\", t => {\n i.setValue(e, {\n value: t.target.value\n });\n });\n }\n break;\n case \"select\":\n if (null !== s.value) {\n t.setAttribute(\"value\", s.value);\n for (const t of n.children) t.attributes.value === s.value ? t.attributes.selected = !0 : t.attributes.hasOwnProperty(\"selected\") && delete t.attributes.selected;\n }\n t.addEventListener(\"input\", t => {\n const n = t.target.options,\n r = -1 === n.selectedIndex ? \"\" : n[n.selectedIndex].value;\n i.setValue(e, {\n value: r\n });\n });\n }\n }\n static setAttributes(t) {\n let {\n html: e,\n element: n,\n storage: i = null,\n intent: r,\n linkService: s\n } = t;\n const {\n attributes: a\n } = n,\n o = e instanceof HTMLAnchorElement;\n \"radio\" === a.type && (a.name = \"\".concat(a.name, \"-\").concat(r));\n for (const [t, n] of Object.entries(a)) if (null != n) switch (t) {\n case \"class\":\n n.length && e.setAttribute(t, n.join(\" \"));\n break;\n case \"dataId\":\n break;\n case \"id\":\n e.setAttribute(\"data-element-id\", n);\n break;\n case \"style\":\n Object.assign(e.style, n);\n break;\n case \"textContent\":\n e.textContent = n;\n break;\n default:\n (!o || \"href\" !== t && \"newWindow\" !== t) && e.setAttribute(t, n);\n }\n o && s.addLinkAttributes(e, a.href, a.newWindow);\n i && a.dataId && this.setupStorage(e, a.dataId, n, i);\n }\n static render(t) {\n const e = t.annotationStorage,\n n = t.linkService,\n r = t.xfaHtml,\n s = t.intent || \"display\",\n a = document.createElement(r.name);\n r.attributes && this.setAttributes({\n html: a,\n element: r,\n intent: s,\n linkService: n\n });\n const o = [[r, -1, a]],\n l = t.div;\n l.append(a);\n if (t.viewport) {\n const e = \"matrix(\".concat(t.viewport.transform.join(\",\"), \")\");\n l.style.transform = e;\n }\n \"richText\" !== s && l.setAttribute(\"class\", \"xfaLayer xfaFont\");\n const c = [];\n for (; o.length > 0;) {\n var _l$attributes;\n const [t, r, a] = o.at(-1);\n if (r + 1 === t.children.length) {\n o.pop();\n continue;\n }\n const l = t.children[++o.at(-1)[1]];\n if (null === l) continue;\n const {\n name: h\n } = l;\n if (\"#text\" === h) {\n const t = document.createTextNode(l.value);\n c.push(t);\n a.append(t);\n continue;\n }\n const d = l !== null && l !== void 0 && (_l$attributes = l.attributes) !== null && _l$attributes !== void 0 && _l$attributes.xmlns ? document.createElementNS(l.attributes.xmlns, h) : document.createElement(h);\n a.append(d);\n l.attributes && this.setAttributes({\n html: d,\n element: l,\n storage: e,\n intent: s,\n linkService: n\n });\n if (l.children && l.children.length > 0) o.push([l, -1, d]);else if (l.value) {\n const t = document.createTextNode(l.value);\n i.XfaText.shouldBuildText(h) && c.push(t);\n d.append(t);\n }\n }\n for (const t of l.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) t.setAttribute(\"readOnly\", !0);\n return {\n textDivs: c\n };\n }\n static update(t) {\n const e = \"matrix(\".concat(t.viewport.transform.join(\",\"), \")\");\n t.div.style.transform = e;\n t.div.hidden = !1;\n }\n };\n }, (t, e, n) => {\n \"use strict\";\n\n var _class41;\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.InkEditor = void 0;\n n(89);\n n(2);\n var i = n(1),\n r = n(163),\n s = n(197),\n a = n(164);\n var _hn = /*#__PURE__*/new WeakMap();\n var _dn = /*#__PURE__*/new WeakMap();\n var _un = /*#__PURE__*/new WeakMap();\n var _pn = /*#__PURE__*/new WeakMap();\n var _fn = /*#__PURE__*/new WeakMap();\n var _gn = /*#__PURE__*/new WeakMap();\n var _mn = /*#__PURE__*/new WeakMap();\n var _bn = /*#__PURE__*/new WeakMap();\n var _vn = /*#__PURE__*/new WeakMap();\n var _yn = /*#__PURE__*/new WeakMap();\n var _An = /*#__PURE__*/new WeakMap();\n var _n9 = /*#__PURE__*/new WeakMap();\n var _Sn = /*#__PURE__*/new WeakMap();\n var _En = /*#__PURE__*/new WeakMap();\n var _xn = /*#__PURE__*/new WeakMap();\n var _wn = /*#__PURE__*/new WeakSet();\n var _Pe3 = /*#__PURE__*/new WeakSet();\n var _Cn = /*#__PURE__*/new WeakSet();\n var _Fn = /*#__PURE__*/new WeakSet();\n var _In = /*#__PURE__*/new WeakSet();\n var _Dn = /*#__PURE__*/new WeakSet();\n var _Ln = /*#__PURE__*/new WeakSet();\n var _Bn = /*#__PURE__*/new WeakSet();\n var _jn = /*#__PURE__*/new WeakSet();\n var _On = /*#__PURE__*/new WeakSet();\n var _Nn = /*#__PURE__*/new WeakSet();\n var _Un = /*#__PURE__*/new WeakSet();\n var _Pn = /*#__PURE__*/new WeakSet();\n var _Hn = /*#__PURE__*/new WeakSet();\n var _kn = /*#__PURE__*/new WeakSet();\n var _Mn = /*#__PURE__*/new WeakSet();\n var _Rn = /*#__PURE__*/new WeakSet();\n var _qn = /*#__PURE__*/new WeakSet();\n var _zn = /*#__PURE__*/new WeakSet();\n var _Xn = /*#__PURE__*/new WeakSet();\n var _Kn = /*#__PURE__*/new WeakSet();\n var _Wn = /*#__PURE__*/new WeakSet();\n var _Tn = /*#__PURE__*/new WeakSet();\n class InkEditor extends r.AnnotationEditor {\n constructor(_t17) {\n super(_objectSpread(_objectSpread({}, _t17), {}, {\n name: \"inkEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Tn);\n _classPrivateMethodInitSpec(this, _Wn);\n _classPrivateMethodInitSpec(this, _Kn);\n _classPrivateMethodInitSpec(this, _Xn);\n _classPrivateMethodInitSpec(this, _zn);\n _classPrivateMethodInitSpec(this, _qn);\n _classPrivateMethodInitSpec(this, _Rn);\n _classPrivateMethodInitSpec(this, _Mn);\n _classPrivateMethodInitSpec(this, _kn);\n _classPrivateMethodInitSpec(this, _Hn);\n _classPrivateMethodInitSpec(this, _Pn);\n _classPrivateMethodInitSpec(this, _Un);\n _classPrivateMethodInitSpec(this, _Nn);\n _classPrivateMethodInitSpec(this, _On);\n _classPrivateMethodInitSpec(this, _jn);\n _classPrivateMethodInitSpec(this, _Bn);\n _classPrivateMethodInitSpec(this, _Ln);\n _classPrivateMethodInitSpec(this, _Dn);\n _classPrivateMethodInitSpec(this, _In);\n _classPrivateMethodInitSpec(this, _Fn);\n _classPrivateMethodInitSpec(this, _Cn);\n _classPrivateMethodInitSpec(this, _Pe3);\n _classPrivateMethodInitSpec(this, _wn);\n _classPrivateFieldInitSpec(this, _hn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _dn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _un, {\n writable: true,\n value: this.canvasContextMenu.bind(this)\n });\n _classPrivateFieldInitSpec(this, _pn, {\n writable: true,\n value: this.canvasPointermove.bind(this)\n });\n _classPrivateFieldInitSpec(this, _fn, {\n writable: true,\n value: this.canvasPointerleave.bind(this)\n });\n _classPrivateFieldInitSpec(this, _gn, {\n writable: true,\n value: this.canvasPointerup.bind(this)\n });\n _classPrivateFieldInitSpec(this, _mn, {\n writable: true,\n value: this.canvasPointerdown.bind(this)\n });\n _classPrivateFieldInitSpec(this, _bn, {\n writable: true,\n value: new Path2D()\n });\n _classPrivateFieldInitSpec(this, _vn, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _yn, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _An, {\n writable: true,\n value: !1\n });\n _classPrivateFieldInitSpec(this, _n9, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Sn, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _En, {\n writable: true,\n value: 0\n });\n _classPrivateFieldInitSpec(this, _xn, {\n writable: true,\n value: null\n });\n this.color = _t17.color || null;\n this.thickness = _t17.thickness || null;\n this.opacity = _t17.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = !0;\n }\n static initialize(t) {\n this._l10nPromise = new Map([\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"].map(e => [e, t.get(e)]));\n }\n static updateDefaultParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = e;\n break;\n case i.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = e;\n break;\n case i.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = e / 100;\n }\n }\n updateParams(t, e) {\n switch (t) {\n case i.AnnotationEditorParamsType.INK_THICKNESS:\n _classPrivateMethodGet(this, _wn, _wn2).call(this, e);\n break;\n case i.AnnotationEditorParamsType.INK_COLOR:\n _classPrivateMethodGet(this, _Pe3, _Pe4).call(this, e);\n break;\n case i.AnnotationEditorParamsType.INK_OPACITY:\n _classPrivateMethodGet(this, _Cn, _Cn2).call(this, e);\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * InkEditor._defaultOpacity)]];\n }\n get propertiesToUpdate() {\n var _this$opacity;\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * ((_this$opacity = this.opacity) !== null && _this$opacity !== void 0 ? _this$opacity : InkEditor._defaultOpacity))]];\n }\n rebuild() {\n super.rebuild();\n if (null !== this.div) {\n if (!this.canvas) {\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n }\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n }\n }\n remove() {\n if (null !== this.canvas) {\n this.isEmpty() || this.commit();\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n _classPrivateFieldGet(this, _n9).disconnect();\n _classPrivateFieldSet(this, _n9, null);\n super.remove();\n }\n }\n setParent(t) {\n !this.parent && t ? this._uiManager.removeShouldRescale(this) : this.parent && null === t && this._uiManager.addShouldRescale(this);\n super.setParent(t);\n }\n onScaleChanging() {\n const [t, e] = this.parentDimensions,\n n = this.width * t,\n i = this.height * e;\n this.setDimensions(n, i);\n }\n enableEditMode() {\n if (!_classPrivateFieldGet(this, _vn) && null !== this.canvas) {\n super.enableEditMode();\n this.div.draggable = !1;\n this.canvas.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n }\n }\n disableEditMode() {\n if (this.isInEditMode() && null !== this.canvas) {\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n }\n }\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n isEmpty() {\n return 0 === this.paths.length || 1 === this.paths.length && 0 === this.paths[0].length;\n }\n commit() {\n if (!_classPrivateFieldGet(this, _vn)) {\n super.commit();\n this.isEditing = !1;\n this.disableEditMode();\n this.setInForeground();\n _classPrivateFieldSet(this, _vn, !0);\n this.div.classList.add(\"disabled\");\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this, !0);\n this.makeResizable();\n this.parent.addInkEditorIfNeeded(!0);\n this.parent.moveEditorInDOM(this);\n this.div.focus({\n preventScroll: !0\n });\n }\n }\n focusin(t) {\n super.focusin(t);\n this.enableEditMode();\n }\n canvasPointerdown(t) {\n if (0 === t.button && this.isInEditMode() && !_classPrivateFieldGet(this, _vn)) {\n this.setInForeground();\n t.preventDefault();\n \"mouse\" !== t.type && this.div.focus();\n _classPrivateMethodGet(this, _Dn, _Dn2).call(this, t.offsetX, t.offsetY);\n }\n }\n canvasContextMenu(t) {\n t.preventDefault();\n }\n canvasPointermove(t) {\n t.preventDefault();\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t.offsetX, t.offsetY);\n }\n canvasPointerup(t) {\n t.preventDefault();\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\n }\n canvasPointerleave(t) {\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\n }\n get isResizable() {\n return !this.isEmpty() && _classPrivateFieldGet(this, _vn);\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n InkEditor._l10nPromise.get(\"editor_ink2_aria_label\").then(t => {\n var _this$div6;\n return (_this$div6 = this.div) === null || _this$div6 === void 0 ? void 0 : _this$div6.setAttribute(\"aria-label\", t);\n });\n const [n, i, r, s] = _classPrivateMethodGet(this, _Fn, _Fn2).call(this);\n this.setAt(n, i, 0, 0);\n this.setDims(r, s);\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n if (this.width) {\n const [n, i] = this.parentDimensions;\n this.setAspectRatio(this.width * n, this.height * i);\n this.setAt(t * n, e * i, this.width * n, this.height * i);\n _classPrivateFieldSet(this, _An, !0);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n this.setDims(this.width * n, this.height * i);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n return this.div;\n }\n setDimensions(t, e) {\n const n = Math.round(t),\n i = Math.round(e);\n if (_classPrivateFieldGet(this, _Sn) === n && _classPrivateFieldGet(this, _En) === i) return;\n _classPrivateFieldSet(this, _Sn, n);\n _classPrivateFieldSet(this, _En, i);\n this.canvas.style.visibility = \"hidden\";\n const [r, s] = this.parentDimensions;\n this.width = t / r;\n this.height = e / s;\n this.fixAndSetPosition();\n _classPrivateFieldGet(this, _vn) && _classPrivateMethodGet(this, _qn, _qn2).call(this, t, e);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n static deserialize(t, e, n) {\n if (t instanceof s.InkAnnotationElement) return null;\n const a = super.deserialize(t, e, n);\n a.thickness = t.thickness;\n a.color = i.Util.makeHexColor(...t.color);\n a.opacity = t.opacity;\n const [o, l] = a.pageDimensions,\n c = a.width * o,\n h = a.height * l,\n d = a.parentScale,\n u = t.thickness / 2;\n _classPrivateFieldSet(a, _vn, !0);\n _classPrivateFieldSet(a, _Sn, Math.round(c));\n _classPrivateFieldSet(a, _En, Math.round(h));\n const {\n paths: p,\n rect: f,\n rotation: g\n } = t;\n for (let {\n bezier: t\n } of p) {\n t = _classStaticPrivateMethodGet(InkEditor, InkEditor, _$n).call(InkEditor, t, f, g);\n const e = [];\n a.paths.push(e);\n let n = d * (t[0] - u),\n i = d * (t[1] - u);\n for (let r = 2, s = t.length; r < s; r += 6) {\n const s = d * (t[r] - u),\n a = d * (t[r + 1] - u),\n o = d * (t[r + 2] - u),\n l = d * (t[r + 3] - u),\n c = d * (t[r + 4] - u),\n h = d * (t[r + 5] - u);\n e.push([[n, i], [s, a], [o, l], [c, h]]);\n n = c;\n i = h;\n }\n const r = _classStaticPrivateMethodGet(this, InkEditor, _Gn).call(this, e);\n a.bezierPath2D.push(r);\n }\n const m = _classPrivateMethodGet(a, _Kn, _Kn2).call(a);\n _classPrivateFieldSet(a, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, m[2] - m[0]));\n _classPrivateFieldSet(a, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, m[3] - m[1]));\n _classPrivateMethodGet(a, _qn, _qn2).call(a, c, h);\n return a;\n }\n serialize() {\n if (this.isEmpty()) return null;\n const t = this.getRect(0, 0),\n e = r.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: i.AnnotationEditorType.INK,\n color: e,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: _classPrivateMethodGet(this, _Xn, _Xn2).call(this, this.scaleFactor / this.parentScale, this.translationX, this.translationY, t),\n pageIndex: this.pageIndex,\n rect: t,\n rotation: this.rotation\n };\n }\n }\n _class41 = InkEditor;\n function _wn2(t) {\n const e = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = t;\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n },\n undo: () => {\n this.thickness = e;\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Pe4(t) {\n const e = this.color;\n this.addCommands({\n cmd: () => {\n this.color = t;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n undo: () => {\n this.color = e;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Cn2(t) {\n t /= 100;\n const e = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = t;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n undo: () => {\n this.opacity = e;\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n },\n mustExec: !0,\n type: i.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: !0,\n keepUndo: !0\n });\n }\n function _Fn2() {\n const {\n parentRotation: t,\n parentDimensions: [e, n]\n } = this;\n switch (t) {\n case 90:\n return [0, n, n, e];\n case 180:\n return [e, n, e, n];\n case 270:\n return [e, 0, n, e];\n default:\n return [0, 0, e, n];\n }\n }\n function _In2() {\n const {\n ctx: t,\n color: e,\n opacity: n,\n thickness: i,\n parentScale: r,\n scaleFactor: s\n } = this;\n t.lineWidth = i * r / s;\n t.lineCap = \"round\";\n t.lineJoin = \"round\";\n t.miterLimit = 10;\n t.strokeStyle = \"\".concat(e).concat((0, a.opacityToHex)(n));\n }\n function _Dn2(t, e) {\n this.canvas.addEventListener(\"contextmenu\", _classPrivateFieldGet(this, _un));\n this.canvas.addEventListener(\"pointerleave\", _classPrivateFieldGet(this, _fn));\n this.canvas.addEventListener(\"pointermove\", _classPrivateFieldGet(this, _pn));\n this.canvas.addEventListener(\"pointerup\", _classPrivateFieldGet(this, _gn));\n this.canvas.removeEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n this.isEditing = !0;\n if (!_classPrivateFieldGet(this, _An)) {\n var _this$opacity2;\n _classPrivateFieldSet(this, _An, !0);\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n this.thickness || (this.thickness = _class41._defaultThickness);\n this.color || (this.color = _class41._defaultColor || r.AnnotationEditor._defaultLineColor);\n (_this$opacity2 = this.opacity) !== null && _this$opacity2 !== void 0 ? _this$opacity2 : this.opacity = _class41._defaultOpacity;\n }\n this.currentPath.push([t, e]);\n _classPrivateFieldSet(this, _yn, !1);\n _classPrivateMethodGet(this, _In, _In2).call(this);\n _classPrivateFieldSet(this, _xn, () => {\n _classPrivateMethodGet(this, _On, _On2).call(this);\n _classPrivateFieldGet(this, _xn) && window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\n });\n window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\n }\n function _Ln2(t, e) {\n const [n, i] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && t === n && e === i) return;\n const r = this.currentPath;\n let s = _classPrivateFieldGet(this, _bn);\n r.push([t, e]);\n _classPrivateFieldSet(this, _yn, !0);\n if (r.length <= 2) {\n s.moveTo(...r[0]);\n s.lineTo(t, e);\n } else {\n if (3 === r.length) {\n _classPrivateFieldSet(this, _bn, s = new Path2D());\n s.moveTo(...r[0]);\n }\n _classPrivateMethodGet(this, _Nn, _Nn2).call(this, s, ...r.at(-3), ...r.at(-2), t, e);\n }\n }\n function _Bn2() {\n if (0 === this.currentPath.length) return;\n const t = this.currentPath.at(-1);\n _classPrivateFieldGet(this, _bn).lineTo(...t);\n }\n function _jn2(t, e) {\n _classPrivateFieldSet(this, _xn, null);\n t = Math.min(Math.max(t, 0), this.canvas.width);\n e = Math.min(Math.max(e, 0), this.canvas.height);\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t, e);\n _classPrivateMethodGet(this, _Bn, _Bn2).call(this);\n let n;\n if (1 !== this.currentPath.length) n = _classPrivateMethodGet(this, _Un, _Un2).call(this);else {\n const i = [t, e];\n n = [[i, i.slice(), i.slice(), i]];\n }\n const i = _classPrivateFieldGet(this, _bn),\n r = this.currentPath;\n this.currentPath = [];\n _classPrivateFieldSet(this, _bn, new Path2D());\n this.addCommands({\n cmd: () => {\n this.allRawPaths.push(r);\n this.paths.push(n);\n this.bezierPath2D.push(i);\n this.rebuild();\n },\n undo: () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (0 === this.paths.length) this.remove();else {\n if (!this.canvas) {\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\n }\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\n }\n },\n mustExec: !0\n });\n }\n function _On2() {\n if (!_classPrivateFieldGet(this, _yn)) return;\n _classPrivateFieldSet(this, _yn, !1);\n const t = Math.ceil(this.thickness * this.parentScale),\n e = this.currentPath.slice(-3),\n n = e.map(t => t[0]),\n i = e.map(t => t[1]),\n {\n ctx: r\n } = (Math.min(...n), Math.max(...n), Math.min(...i), Math.max(...i), this);\n r.save();\n r.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const t of this.bezierPath2D) r.stroke(t);\n r.stroke(_classPrivateFieldGet(this, _bn));\n r.restore();\n }\n function _Nn2(t, e, n, i, r, s, a) {\n const o = (e + i) / 2,\n l = (n + r) / 2,\n c = (i + s) / 2,\n h = (r + a) / 2;\n t.bezierCurveTo(o + 2 * (i - o) / 3, l + 2 * (r - l) / 3, c + 2 * (i - c) / 3, h + 2 * (r - h) / 3, c, h);\n }\n function _Un2() {\n const t = this.currentPath;\n if (t.length <= 2) return [[t[0], t[0], t.at(-1), t.at(-1)]];\n const e = [];\n let n,\n [i, r] = t[0];\n for (n = 1; n < t.length - 2; n++) {\n const [s, a] = t[n],\n [o, l] = t[n + 1],\n c = (s + o) / 2,\n h = (a + l) / 2,\n d = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\n u = [c + 2 * (s - c) / 3, h + 2 * (a - h) / 3];\n e.push([[i, r], d, u, [c, h]]);\n [i, r] = [c, h];\n }\n const [s, a] = t[n],\n [o, l] = t[n + 1],\n c = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\n h = [o + 2 * (s - o) / 3, l + 2 * (a - l) / 3];\n e.push([[i, r], c, h, [o, l]]);\n return e;\n }\n function _Pn2() {\n if (this.isEmpty()) {\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n return;\n }\n _classPrivateMethodGet(this, _In, _In2).call(this);\n const {\n canvas: t,\n ctx: e\n } = this;\n e.setTransform(1, 0, 0, 1, 0, 0);\n e.clearRect(0, 0, t.width, t.height);\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n for (const t of this.bezierPath2D) e.stroke(t);\n }\n function _Hn2(t) {\n this.canvas.removeEventListener(\"pointerleave\", _classPrivateFieldGet(this, _fn));\n this.canvas.removeEventListener(\"pointermove\", _classPrivateFieldGet(this, _pn));\n this.canvas.removeEventListener(\"pointerup\", _classPrivateFieldGet(this, _gn));\n this.canvas.addEventListener(\"pointerdown\", _classPrivateFieldGet(this, _mn));\n setTimeout(() => {\n this.canvas.removeEventListener(\"contextmenu\", _classPrivateFieldGet(this, _un));\n }, 10);\n _classPrivateMethodGet(this, _jn, _jn2).call(this, t.offsetX, t.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n function _kn2() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n _class41._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(t => {\n var _this$canvas;\n return (_this$canvas = this.canvas) === null || _this$canvas === void 0 ? void 0 : _this$canvas.setAttribute(\"aria-label\", t);\n });\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n function _Mn2() {\n _classPrivateFieldSet(this, _n9, new ResizeObserver(t => {\n const e = t[0].contentRect;\n e.width && e.height && this.setDimensions(e.width, e.height);\n }));\n _classPrivateFieldGet(this, _n9).observe(this.div);\n }\n function _Rn2() {\n if (!_classPrivateFieldGet(this, _An)) return;\n const [t, e] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * t);\n this.canvas.height = Math.ceil(this.height * e);\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\n }\n function _qn2(t, e) {\n const n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this),\n i = (t - n) / _classPrivateFieldGet(this, _dn),\n r = (e - n) / _classPrivateFieldGet(this, _hn);\n this.scaleFactor = Math.min(i, r);\n }\n function _zn2() {\n const t = _classPrivateMethodGet(this, _Wn, _Wn2).call(this) / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + t, this.translationY * this.scaleFactor + t);\n }\n function _Gn(t) {\n const e = new Path2D();\n for (let n = 0, i = t.length; n < i; n++) {\n const [i, r, s, a] = t[n];\n 0 === n && e.moveTo(...i);\n e.bezierCurveTo(r[0], r[1], s[0], s[1], a[0], a[1]);\n }\n return e;\n }\n function _Vn(t, e, n) {\n const [i, r, s, a] = e;\n switch (n) {\n case 0:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] += i;\n t[e + 1] = a - t[e + 1];\n }\n break;\n case 90:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = t[e + 1] + i;\n t[e + 1] = n + r;\n }\n break;\n case 180:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] = s - t[e];\n t[e + 1] += r;\n }\n break;\n case 270:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = s - t[e + 1];\n t[e + 1] = a - n;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return t;\n }\n function _$n(t, e, n) {\n const [i, r, s, a] = e;\n switch (n) {\n case 0:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] -= i;\n t[e + 1] = a - t[e + 1];\n }\n break;\n case 90:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = t[e + 1] - r;\n t[e + 1] = n - i;\n }\n break;\n case 180:\n for (let e = 0, n = t.length; e < n; e += 2) {\n t[e] = s - t[e];\n t[e + 1] -= r;\n }\n break;\n case 270:\n for (let e = 0, n = t.length; e < n; e += 2) {\n const n = t[e];\n t[e] = a - t[e + 1];\n t[e + 1] = s - n;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return t;\n }\n function _Xn2(t, e, n, i) {\n const r = [],\n s = this.thickness / 2,\n a = t * e + s,\n o = t * n + s;\n for (const e of this.paths) {\n const n = [],\n s = [];\n for (let i = 0, r = e.length; i < r; i++) {\n const [l, c, h, d] = e[i],\n u = t * l[0] + a,\n p = t * l[1] + o,\n f = t * c[0] + a,\n g = t * c[1] + o,\n m = t * h[0] + a,\n b = t * h[1] + o,\n v = t * d[0] + a,\n y = t * d[1] + o;\n if (0 === i) {\n n.push(u, p);\n s.push(u, p);\n }\n n.push(f, g, m, b, v, y);\n s.push(f, g);\n i === r - 1 && s.push(v, y);\n }\n r.push({\n bezier: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, n, i, this.rotation),\n points: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, s, i, this.rotation)\n });\n }\n return r;\n }\n function _Kn2() {\n let t = 1 / 0,\n e = -1 / 0,\n n = 1 / 0,\n r = -1 / 0;\n for (const s of this.paths) for (const [a, o, l, c] of s) {\n const s = i.Util.bezierBoundingBox(...a, ...o, ...l, ...c);\n t = Math.min(t, s[0]);\n n = Math.min(n, s[1]);\n e = Math.max(e, s[2]);\n r = Math.max(r, s[3]);\n }\n return [t, n, e, r];\n }\n function _Wn2() {\n return _classPrivateFieldGet(this, _vn) ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n function _Tn2() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n if (this.isEmpty()) return;\n if (!_classPrivateFieldGet(this, _vn)) {\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n return;\n }\n const e = _classPrivateMethodGet(this, _Kn, _Kn2).call(this),\n n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this);\n _classPrivateFieldSet(this, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, e[2] - e[0]));\n _classPrivateFieldSet(this, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, e[3] - e[1]));\n const i = Math.ceil(n + _classPrivateFieldGet(this, _dn) * this.scaleFactor),\n s = Math.ceil(n + _classPrivateFieldGet(this, _hn) * this.scaleFactor),\n [a, o] = this.parentDimensions;\n this.width = i / a;\n this.height = s / o;\n this.setAspectRatio(i, s);\n const l = this.translationX,\n c = this.translationY;\n this.translationX = -e[0];\n this.translationY = -e[1];\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\n _classPrivateFieldSet(this, _Sn, i);\n _classPrivateFieldSet(this, _En, s);\n this.setDims(i, s);\n const h = t ? n / this.scaleFactor / 2 : 0;\n this.translate(l - this.translationX - h, c - this.translationY - h);\n }\n _defineProperty(InkEditor, \"_defaultColor\", null);\n _defineProperty(InkEditor, \"_defaultOpacity\", 1);\n _defineProperty(InkEditor, \"_defaultThickness\", 1);\n _defineProperty(InkEditor, \"_l10nPromise\", void 0);\n _defineProperty(InkEditor, \"_type\", \"ink\");\n e.InkEditor = InkEditor;\n }, (t, e, n) => {\n \"use strict\";\n\n Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n e.StampEditor = void 0;\n n(148);\n n(151);\n var i = n(163),\n r = n(1),\n s = n(167),\n a = n(197);\n var _Yn = /*#__PURE__*/new WeakMap();\n var _Jn = /*#__PURE__*/new WeakMap();\n var _Qn = /*#__PURE__*/new WeakMap();\n var _Zn = /*#__PURE__*/new WeakMap();\n var _ti = /*#__PURE__*/new WeakMap();\n var _n10 = /*#__PURE__*/new WeakMap();\n var _ei = /*#__PURE__*/new WeakMap();\n var _ni = /*#__PURE__*/new WeakMap();\n var _ii = /*#__PURE__*/new WeakSet();\n var _kn3 = /*#__PURE__*/new WeakSet();\n var _si = /*#__PURE__*/new WeakSet();\n var _ai = /*#__PURE__*/new WeakSet();\n var _ri = /*#__PURE__*/new WeakSet();\n var _oi = /*#__PURE__*/new WeakSet();\n var _Mn3 = /*#__PURE__*/new WeakSet();\n class StampEditor extends i.AnnotationEditor {\n constructor(_t18) {\n super(_objectSpread(_objectSpread({}, _t18), {}, {\n name: \"stampEditor\"\n }));\n _classPrivateMethodInitSpec(this, _Mn3);\n _classPrivateMethodInitSpec(this, _oi);\n _classPrivateMethodInitSpec(this, _ri);\n _classPrivateMethodInitSpec(this, _ai);\n _classPrivateMethodInitSpec(this, _si);\n _classPrivateMethodInitSpec(this, _kn3);\n _classPrivateMethodInitSpec(this, _ii);\n _classPrivateFieldInitSpec(this, _Yn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Jn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Qn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _Zn, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ti, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _n10, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ei, {\n writable: true,\n value: null\n });\n _classPrivateFieldInitSpec(this, _ni, {\n writable: true,\n value: !1\n });\n _classPrivateFieldSet(this, _Zn, _t18.bitmapUrl);\n }\n remove() {\n if (_classPrivateFieldGet(this, _Jn)) {\n var _classPrivateFieldGet15, _classPrivateFieldGet16;\n _classPrivateFieldSet(this, _Yn, null);\n this._uiManager.imageManager.deleteId(_classPrivateFieldGet(this, _Jn));\n (_classPrivateFieldGet15 = _classPrivateFieldGet(this, _ti)) === null || _classPrivateFieldGet15 === void 0 ? void 0 : _classPrivateFieldGet15.remove();\n _classPrivateFieldSet(this, _ti, null);\n (_classPrivateFieldGet16 = _classPrivateFieldGet(this, _n10)) === null || _classPrivateFieldGet16 === void 0 ? void 0 : _classPrivateFieldGet16.disconnect();\n _classPrivateFieldSet(this, _n10, null);\n }\n super.remove();\n }\n rebuild() {\n super.rebuild();\n if (null !== this.div) {\n _classPrivateFieldGet(this, _Jn) && _classPrivateMethodGet(this, _ii, _ii2).call(this);\n this.isAttachedToDOM || this.parent.add(this);\n }\n }\n onceAdded() {\n this.div.draggable = !0;\n this.parent.addUndoableEditor(this);\n this.div.focus();\n }\n isEmpty() {\n return null === _classPrivateFieldGet(this, _Qn) && null === _classPrivateFieldGet(this, _Yn) && null === _classPrivateFieldGet(this, _Zn);\n }\n get isResizable() {\n return !0;\n }\n render() {\n if (this.div) return this.div;\n let t, e;\n if (this.width) {\n t = this.x;\n e = this.y;\n }\n super.render();\n if (_classPrivateFieldGet(this, _Yn)) _classPrivateMethodGet(this, _kn3, _kn4).call(this);else {\n this.div.classList.add(\"loading\");\n _classPrivateMethodGet(this, _ii, _ii2).call(this);\n }\n if (this.width) {\n const [n, i] = this.parentDimensions;\n this.setAt(t * n, e * i, this.width * n, this.height * i);\n }\n return this.div;\n }\n static deserialize(t, e, n) {\n if (t instanceof a.StampAnnotationElement) return null;\n const i = super.deserialize(t, e, n),\n {\n rect: r,\n bitmapUrl: s,\n bitmapId: o,\n isSvg: l\n } = t;\n o && n.imageManager.isValidId(o) ? _classPrivateFieldSet(i, _Jn, o) : _classPrivateFieldSet(i, _Zn, s);\n _classPrivateFieldSet(i, _ni, l);\n const [c, h] = i.pageDimensions;\n i.width = (r[2] - r[0]) / c;\n i.height = (r[3] - r[1]) / h;\n return i;\n }\n serialize() {\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\n if (this.isEmpty()) return null;\n const n = {\n annotationType: r.AnnotationEditorType.STAMP,\n bitmapId: _classPrivateFieldGet(this, _Jn),\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: _classPrivateFieldGet(this, _ni)\n };\n if (t) {\n n.bitmapUrl = _classPrivateMethodGet(this, _oi, _oi2).call(this, !0);\n return n;\n }\n if (null === e) return n;\n e.stamps || (e.stamps = new Map());\n const i = _classPrivateFieldGet(this, _ni) ? (n.rect[2] - n.rect[0]) * (n.rect[3] - n.rect[1]) : null;\n if (e.stamps.has(_classPrivateFieldGet(this, _Jn))) {\n if (_classPrivateFieldGet(this, _ni)) {\n const t = e.stamps.get(_classPrivateFieldGet(this, _Jn));\n if (i > t.area) {\n t.area = i;\n t.serialized.bitmap.close();\n t.serialized.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\n }\n }\n } else {\n e.stamps.set(_classPrivateFieldGet(this, _Jn), {\n area: i,\n serialized: n\n });\n n.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\n }\n return n;\n }\n }\n function _ii2() {\n if (_classPrivateFieldGet(this, _Jn)) {\n this._uiManager.imageManager.getFromId(_classPrivateFieldGet(this, _Jn)).then(t => {\n if (t) {\n _classPrivateFieldSet(this, _Yn, t.bitmap);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n });\n return;\n }\n if (_classPrivateFieldGet(this, _Zn)) {\n const t = _classPrivateFieldGet(this, _Zn);\n _classPrivateFieldSet(this, _Zn, null);\n _classPrivateFieldSet(this, _Qn, this._uiManager.imageManager.getFromUrl(t).then(t => {\n _classPrivateFieldSet(this, _Qn, null);\n if (t) {\n ({\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\n } = t);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n }));\n return;\n }\n const t = document.createElement(\"input\");\n t.type = \"file\";\n t.accept = \"image/*\";\n _classPrivateFieldSet(this, _Qn, new Promise(e => {\n t.addEventListener(\"change\", async () => {\n _classPrivateFieldSet(this, _Qn, null);\n if (t.files && 0 !== t.files.length) {\n const e = await this._uiManager.imageManager.getFromFile(t.files[0]);\n if (!e) {\n this.remove();\n return;\n }\n ({\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\n } = e);\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\n } else this.remove();\n e();\n });\n t.addEventListener(\"cancel\", () => {\n _classPrivateFieldSet(this, _Qn, null);\n this.remove();\n e();\n });\n }));\n t.click();\n }\n function _kn4() {\n const {\n div: t\n } = this;\n let {\n width: e,\n height: n\n } = _classPrivateFieldGet(this, _Yn);\n const [i, r] = this.pageDimensions,\n s = .75;\n if (this.width) {\n e = this.width * i;\n n = this.height * r;\n } else if (e > s * i || n > s * r) {\n const t = Math.min(s * i / e, s * r / n);\n e *= t;\n n *= t;\n }\n const [a, o] = this.parentDimensions;\n this.setDims(e * a / i, n * o / r);\n const l = _classPrivateFieldSet(this, _ti, document.createElement(\"canvas\"));\n t.append(l);\n _classPrivateMethodGet(this, _ri, _ri2).call(this, e, n);\n _classPrivateMethodGet(this, _Mn3, _Mn4).call(this);\n t.classList.remove(\"loading\");\n }\n function _si2(t, e) {\n const [n, i] = this.parentDimensions;\n this.width = t / n;\n this.height = e / i;\n this.setDims(t, e);\n this.fixAndSetPosition();\n null !== _classPrivateFieldGet(this, _ei) && clearTimeout(_classPrivateFieldGet(this, _ei));\n _classPrivateFieldSet(this, _ei, setTimeout(() => {\n _classPrivateFieldSet(this, _ei, null);\n _classPrivateMethodGet(this, _ri, _ri2).call(this, t, e);\n }, 200));\n }\n function _ai2(t, e) {\n const {\n width: n,\n height: i\n } = _classPrivateFieldGet(this, _Yn);\n let r = n,\n s = i,\n a = _classPrivateFieldGet(this, _Yn);\n for (; r > 2 * t || s > 2 * e;) {\n const n = r,\n i = s;\n r > 2 * t && (r = r >= 16384 ? Math.floor(r / 2) - 1 : Math.ceil(r / 2));\n s > 2 * e && (s = s >= 16384 ? Math.floor(s / 2) - 1 : Math.ceil(s / 2));\n const o = new OffscreenCanvas(r, s);\n o.getContext(\"2d\").drawImage(a, 0, 0, n, i, 0, 0, r, s);\n a = o.transferToImageBitmap();\n }\n return a;\n }\n function _ri2(t, e) {\n const n = _classPrivateFieldGet(this, _ti);\n if (!n || n.width === t && n.height === e) return;\n n.width = t;\n n.height = e;\n const i = _classPrivateFieldGet(this, _ni) ? _classPrivateFieldGet(this, _Yn) : _classPrivateMethodGet(this, _ai, _ai2).call(this, t, e),\n r = n.getContext(\"2d\");\n r.filter = this._uiManager.hcmFilter;\n r.drawImage(i, 0, 0, i.width, i.height, 0, 0, t, e);\n }\n function _oi2(t) {\n if (t) {\n if (_classPrivateFieldGet(this, _ni)) {\n const t = this._uiManager.imageManager.getSvgUrl(_classPrivateFieldGet(this, _Jn));\n if (t) return t;\n }\n const t = document.createElement(\"canvas\");\n ({\n width: t.width,\n height: t.height\n } = _classPrivateFieldGet(this, _Yn));\n t.getContext(\"2d\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0);\n return t.toDataURL();\n }\n if (_classPrivateFieldGet(this, _ni)) {\n const [t, e] = this.pageDimensions,\n n = Math.round(this.width * t * s.PixelsPerInch.PDF_TO_CSS_UNITS),\n i = Math.round(this.height * e * s.PixelsPerInch.PDF_TO_CSS_UNITS),\n r = new OffscreenCanvas(n, i);\n r.getContext(\"2d\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0, _classPrivateFieldGet(this, _Yn).width, _classPrivateFieldGet(this, _Yn).height, 0, 0, n, i);\n return r.transferToImageBitmap();\n }\n return structuredClone(_classPrivateFieldGet(this, _Yn));\n }\n function _Mn4() {\n _classPrivateFieldSet(this, _n10, new ResizeObserver(t => {\n const e = t[0].contentRect;\n e.width && e.height && _classPrivateMethodGet(this, _si, _si2).call(this, e.width, e.height);\n }));\n _classPrivateFieldGet(this, _n10).observe(this.div);\n }\n _defineProperty(StampEditor, \"_type\", \"stamp\");\n e.StampEditor = StampEditor;\n }],\n __webpack_module_cache__ = {};\n function __w_pdfjs_require__(t) {\n var e = __webpack_module_cache__[t];\n if (void 0 !== e) return e.exports;\n var n = __webpack_module_cache__[t] = {\n exports: {}\n };\n __webpack_modules__[t].call(n.exports, n, n.exports, __w_pdfjs_require__);\n return n.exports;\n }\n var __nested_webpack_exports__ = {};\n (() => {\n \"use strict\";\n\n var t = __nested_webpack_exports__;\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n Object.defineProperty(t, \"AbortException\", {\n enumerable: !0,\n get: function get() {\n return e.AbortException;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorLayer\", {\n enumerable: !0,\n get: function get() {\n return s.AnnotationEditorLayer;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorParamsType\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationEditorParamsType;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorType\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationEditorType;\n }\n });\n Object.defineProperty(t, \"AnnotationEditorUIManager\", {\n enumerable: !0,\n get: function get() {\n return a.AnnotationEditorUIManager;\n }\n });\n Object.defineProperty(t, \"AnnotationLayer\", {\n enumerable: !0,\n get: function get() {\n return o.AnnotationLayer;\n }\n });\n Object.defineProperty(t, \"AnnotationMode\", {\n enumerable: !0,\n get: function get() {\n return e.AnnotationMode;\n }\n });\n Object.defineProperty(t, \"CMapCompressionType\", {\n enumerable: !0,\n get: function get() {\n return e.CMapCompressionType;\n }\n });\n Object.defineProperty(t, \"FeatureTest\", {\n enumerable: !0,\n get: function get() {\n return e.FeatureTest;\n }\n });\n Object.defineProperty(t, \"GlobalWorkerOptions\", {\n enumerable: !0,\n get: function get() {\n return l.GlobalWorkerOptions;\n }\n });\n Object.defineProperty(t, \"ImageKind\", {\n enumerable: !0,\n get: function get() {\n return e.ImageKind;\n }\n });\n Object.defineProperty(t, \"InvalidPDFException\", {\n enumerable: !0,\n get: function get() {\n return e.InvalidPDFException;\n }\n });\n Object.defineProperty(t, \"MissingPDFException\", {\n enumerable: !0,\n get: function get() {\n return e.MissingPDFException;\n }\n });\n Object.defineProperty(t, \"OPS\", {\n enumerable: !0,\n get: function get() {\n return e.OPS;\n }\n });\n Object.defineProperty(t, \"PDFDataRangeTransport\", {\n enumerable: !0,\n get: function get() {\n return n.PDFDataRangeTransport;\n }\n });\n Object.defineProperty(t, \"PDFDateString\", {\n enumerable: !0,\n get: function get() {\n return i.PDFDateString;\n }\n });\n Object.defineProperty(t, \"PDFWorker\", {\n enumerable: !0,\n get: function get() {\n return n.PDFWorker;\n }\n });\n Object.defineProperty(t, \"PasswordResponses\", {\n enumerable: !0,\n get: function get() {\n return e.PasswordResponses;\n }\n });\n Object.defineProperty(t, \"PermissionFlag\", {\n enumerable: !0,\n get: function get() {\n return e.PermissionFlag;\n }\n });\n Object.defineProperty(t, \"PixelsPerInch\", {\n enumerable: !0,\n get: function get() {\n return i.PixelsPerInch;\n }\n });\n Object.defineProperty(t, \"PromiseCapability\", {\n enumerable: !0,\n get: function get() {\n return e.PromiseCapability;\n }\n });\n Object.defineProperty(t, \"RenderingCancelledException\", {\n enumerable: !0,\n get: function get() {\n return i.RenderingCancelledException;\n }\n });\n Object.defineProperty(t, \"SVGGraphics\", {\n enumerable: !0,\n get: function get() {\n return n.SVGGraphics;\n }\n });\n Object.defineProperty(t, \"UnexpectedResponseException\", {\n enumerable: !0,\n get: function get() {\n return e.UnexpectedResponseException;\n }\n });\n Object.defineProperty(t, \"Util\", {\n enumerable: !0,\n get: function get() {\n return e.Util;\n }\n });\n Object.defineProperty(t, \"VerbosityLevel\", {\n enumerable: !0,\n get: function get() {\n return e.VerbosityLevel;\n }\n });\n Object.defineProperty(t, \"XfaLayer\", {\n enumerable: !0,\n get: function get() {\n return c.XfaLayer;\n }\n });\n Object.defineProperty(t, \"build\", {\n enumerable: !0,\n get: function get() {\n return n.build;\n }\n });\n Object.defineProperty(t, \"createValidAbsoluteUrl\", {\n enumerable: !0,\n get: function get() {\n return e.createValidAbsoluteUrl;\n }\n });\n Object.defineProperty(t, \"getDocument\", {\n enumerable: !0,\n get: function get() {\n return n.getDocument;\n }\n });\n Object.defineProperty(t, \"getFilenameFromUrl\", {\n enumerable: !0,\n get: function get() {\n return i.getFilenameFromUrl;\n }\n });\n Object.defineProperty(t, \"getPdfFilenameFromUrl\", {\n enumerable: !0,\n get: function get() {\n return i.getPdfFilenameFromUrl;\n }\n });\n Object.defineProperty(t, \"getXfaPageViewport\", {\n enumerable: !0,\n get: function get() {\n return i.getXfaPageViewport;\n }\n });\n Object.defineProperty(t, \"isDataScheme\", {\n enumerable: !0,\n get: function get() {\n return i.isDataScheme;\n }\n });\n Object.defineProperty(t, \"isPdfFile\", {\n enumerable: !0,\n get: function get() {\n return i.isPdfFile;\n }\n });\n Object.defineProperty(t, \"loadScript\", {\n enumerable: !0,\n get: function get() {\n return i.loadScript;\n }\n });\n Object.defineProperty(t, \"normalizeUnicode\", {\n enumerable: !0,\n get: function get() {\n return e.normalizeUnicode;\n }\n });\n Object.defineProperty(t, \"renderTextLayer\", {\n enumerable: !0,\n get: function get() {\n return r.renderTextLayer;\n }\n });\n Object.defineProperty(t, \"setLayerDimensions\", {\n enumerable: !0,\n get: function get() {\n return i.setLayerDimensions;\n }\n });\n Object.defineProperty(t, \"shadow\", {\n enumerable: !0,\n get: function get() {\n return e.shadow;\n }\n });\n Object.defineProperty(t, \"updateTextLayer\", {\n enumerable: !0,\n get: function get() {\n return r.updateTextLayer;\n }\n });\n Object.defineProperty(t, \"version\", {\n enumerable: !0,\n get: function get() {\n return n.version;\n }\n });\n var e = __w_pdfjs_require__(1),\n n = __w_pdfjs_require__(124),\n i = __w_pdfjs_require__(167),\n r = __w_pdfjs_require__(194),\n s = __w_pdfjs_require__(195),\n a = __w_pdfjs_require__(164),\n o = __w_pdfjs_require__(197),\n l = __w_pdfjs_require__(175),\n c = __w_pdfjs_require__(200);\n })();\n return __nested_webpack_exports__;\n})());\n\n//# sourceURL=webpack://babel/./pdf.js?")}),"./node_modules/core-js/internals/a-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-callable.js?")}),"./node_modules/core-js/internals/a-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-constructor.js?")}),"./node_modules/core-js/internals/a-possible-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-possible-prototype.js?")}),"./node_modules/core-js/internals/add-to-unscopables.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/add-to-unscopables.js?")}),"./node_modules/core-js/internals/advance-string-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").charAt);\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/advance-string-index.js?")}),"./node_modules/core-js/internals/an-instance.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-instance.js?")}),"./node_modules/core-js/internals/an-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-object.js?")}),"./node_modules/core-js/internals/array-buffer-basic-detection.js":((module)=>{eval("\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-basic-detection.js?")}),"./node_modules/core-js/internals/array-buffer-non-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-non-extensible.js?")}),"./node_modules/core-js/internals/array-buffer-view-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \"./node_modules/core-js/internals/array-buffer-basic-detection.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-view-core.js?")}),"./node_modules/core-js/internals/array-buffer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \"./node_modules/core-js/internals/array-buffer-basic-detection.js\");\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \"./node_modules/core-js/internals/to-index.js\");\nvar IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ \"./node_modules/core-js/internals/ieee754.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar arrayFill = __webpack_require__(/*! ../internals/array-fill */ \"./node_modules/core-js/internals/array-fill.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\nvar setInternalState = InternalStateModule.set;\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\nvar $DataView = global[DATA_VIEW];\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar Array = global.Array;\nvar RangeError = global.RangeError;\nvar fill = uncurryThis(arrayFill);\nvar reverse = uncurryThis([].reverse);\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key, getInternalState) {\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n var pack = arraySlice(bytes, start, start + count);\n return boolIsLittleEndian ? pack : reverse(pack);\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var store = getInternalDataViewState(view);\n var intIndex = toIndex(index);\n var pack = conversion(+value);\n var boolIsLittleEndian = !!isLittleEndian;\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = store.bytes;\n var start = intIndex + store.byteOffset;\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n var byteLength = toIndex(length);\n setInternalState(this, {\n type: ARRAY_BUFFER,\n bytes: fill(Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) {\n this.byteLength = byteLength;\n this.detached = false;\n }\n };\n\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, DataViewPrototype);\n anInstance(buffer, ArrayBufferPrototype);\n var bufferState = getInternalArrayBufferState(buffer);\n var bufferLength = bufferState.byteLength;\n var offset = toIntegerOrInfinity(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n type: DATA_VIEW,\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset,\n bytes: bufferState.bytes\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n DataViewPrototype = $DataView[PROTOTYPE];\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\n addGetter($DataView, 'buffer', getInternalDataViewState);\n addGetter($DataView, 'byteLength', getInternalDataViewState);\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\n }\n\n defineBuiltIns(DataViewPrototype, {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\n }\n });\n} else {\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, ArrayBufferPrototype);\n return new NativeArrayBuffer(toIndex(length));\n };\n\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\n\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer.js?")}),"./node_modules/core-js/internals/array-fill.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-fill.js?")}),"./node_modules/core-js/internals/array-from-constructor-and-list.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\nmodule.exports = function (Constructor, list) {\n var index = 0;\n var length = lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from-constructor-and-list.js?")}),"./node_modules/core-js/internals/array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from.js?")}),"./node_modules/core-js/internals/array-includes.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-includes.js?")}),"./node_modules/core-js/internals/array-iteration-from-last.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE == 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var index = lengthOfArrayLike(self);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration-from-last.js?")}),"./node_modules/core-js/internals/array-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js/internals/array-species-create.js\");\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration.js?")}),"./node_modules/core-js/internals/array-method-is-strict.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-method-is-strict.js?")}),"./node_modules/core-js/internals/array-set-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-set-length.js?")}),"./node_modules/core-js/internals/array-slice-simple.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice-simple.js?")}),"./node_modules/core-js/internals/array-slice.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis([].slice);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice.js?")}),"./node_modules/core-js/internals/array-sort.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-sort.js?")}),"./node_modules/core-js/internals/array-species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-constructor.js?")}),"./node_modules/core-js/internals/array-species-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ \"./node_modules/core-js/internals/array-species-constructor.js\");\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-create.js?")}),"./node_modules/core-js/internals/array-to-reversed.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-to-reversed.js?")}),"./node_modules/core-js/internals/array-with.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-with.js?")}),"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \"./node_modules/core-js/internals/iterator-close.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/call-with-safe-iteration-closing.js?")}),"./node_modules/core-js/internals/check-correctness-of-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/check-correctness-of-iteration.js?")}),"./node_modules/core-js/internals/classof-raw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof-raw.js?")}),"./node_modules/core-js/internals/classof.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \"./node_modules/core-js/internals/to-string-tag-support.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof.js?")}),"./node_modules/core-js/internals/collection-weak.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar getWeakData = (__webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\").getWeakData);\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js/internals/array-iteration.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (state) {\n return state.frozen || (state.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\n};\n\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) splice(this.entries, index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n defineBuiltIns(Prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && hasOwn(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && hasOwn(data, state.id);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return Constructor;\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection-weak.js?")}),"./node_modules/core-js/internals/collection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection.js?")}),"./node_modules/core-js/internals/copy-constructor-properties.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/copy-constructor-properties.js?")}),"./node_modules/core-js/internals/correct-is-regexp-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-is-regexp-logic.js?")}),"./node_modules/core-js/internals/correct-prototype-getter.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-prototype-getter.js?")}),"./node_modules/core-js/internals/create-iter-result-object.js":((module)=>{eval("\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-iter-result-object.js?")}),"./node_modules/core-js/internals/create-non-enumerable-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-non-enumerable-property.js?")}),"./node_modules/core-js/internals/create-property-descriptor.js":((module)=>{eval("\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property-descriptor.js?")}),"./node_modules/core-js/internals/create-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property.js?")}),"./node_modules/core-js/internals/define-built-in-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/core-js/internals/make-built-in.js\");\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in-accessor.js?")}),"./node_modules/core-js/internals/define-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \"./node_modules/core-js/internals/make-built-in.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in.js?")}),"./node_modules/core-js/internals/define-built-ins.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-ins.js?")}),"./node_modules/core-js/internals/define-global-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-global-property.js?")}),"./node_modules/core-js/internals/delete-property-or-throw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/delete-property-or-throw.js?")}),"./node_modules/core-js/internals/descriptors.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/descriptors.js?")}),"./node_modules/core-js/internals/document-all.js":((module)=>{eval("\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-all.js?")}),"./node_modules/core-js/internals/document-create-element.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-create-element.js?")}),"./node_modules/core-js/internals/does-not-exceed-safe-integer.js":((module)=>{eval("\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/does-not-exceed-safe-integer.js?")}),"./node_modules/core-js/internals/dom-exception-constants.js":((module)=>{eval("\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-exception-constants.js?")}),"./node_modules/core-js/internals/dom-iterables.js":((module)=>{eval("\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-iterables.js?")}),"./node_modules/core-js/internals/dom-token-list-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-token-list-prototype.js?")}),"./node_modules/core-js/internals/engine-ff-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-ff-version.js?")}),"./node_modules/core-js/internals/engine-is-browser.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-browser.js?")}),"./node_modules/core-js/internals/engine-is-deno.js":((module)=>{eval("\n/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-deno.js?")}),"./node_modules/core-js/internals/engine-is-ie-or-edge.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar UA = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ie-or-edge.js?")}),"./node_modules/core-js/internals/engine-is-ios-pebble.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios-pebble.js?")}),"./node_modules/core-js/internals/engine-is-ios.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios.js?")}),"./node_modules/core-js/internals/engine-is-node.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-node.js?")}),"./node_modules/core-js/internals/engine-is-webos-webkit.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-webos-webkit.js?")}),"./node_modules/core-js/internals/engine-user-agent.js":((module)=>{eval("\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-user-agent.js?")}),"./node_modules/core-js/internals/engine-v8-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-v8-version.js?")}),"./node_modules/core-js/internals/engine-webkit-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \"./node_modules/core-js/internals/engine-user-agent.js\");\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-webkit-version.js?")}),"./node_modules/core-js/internals/enum-bug-keys.js":((module)=>{eval("\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/enum-bug-keys.js?")}),"./node_modules/core-js/internals/error-stack-clear.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-clear.js?")}),"./node_modules/core-js/internals/error-stack-install.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \"./node_modules/core-js/internals/error-stack-installable.js\");\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n if (ERROR_STACK_INSTALLABLE) {\n if (captureStackTrace) captureStackTrace(error, C);\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-install.js?")}),"./node_modules/core-js/internals/error-stack-installable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-installable.js?")}),"./node_modules/core-js/internals/error-to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n if (DESCRIPTORS) {\n // Chrome 32- incorrectly call accessor\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n var object = create(Object.defineProperty({}, 'name', { get: function () {\n return this === object;\n } }));\n if (nativeErrorToString.call(object) !== 'true') return true;\n }\n // FF10- does not properly handle non-strings\n return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n // IE8 does not properly handle defaults\n || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n var O = anObject(this);\n var name = normalizeStringArgument(O.name, 'Error');\n var message = normalizeStringArgument(O.message);\n return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-to-string.js?")}),"./node_modules/core-js/internals/export.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/export.js?")}),"./node_modules/core-js/internals/fails.js":((module)=>{eval("\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fails.js?")}),"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(/*! ../modules/es.regexp.exec */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js?")}),"./node_modules/core-js/internals/flatten-into-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/flatten-into-array.js?")}),"./node_modules/core-js/internals/freezing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/freezing.js?")}),"./node_modules/core-js/internals/function-apply.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-apply.js?")}),"./node_modules/core-js/internals/function-bind-context.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-context.js?")}),"./node_modules/core-js/internals/function-bind-native.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-native.js?")}),"./node_modules/core-js/internals/function-call.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-call.js?")}),"./node_modules/core-js/internals/function-name.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-name.js?")}),"./node_modules/core-js/internals/function-uncurry-this-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-accessor.js?")}),"./node_modules/core-js/internals/function-uncurry-this-clause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-clause.js?")}),"./node_modules/core-js/internals/function-uncurry-this.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \"./node_modules/core-js/internals/function-bind-native.js\");\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this.js?")}),"./node_modules/core-js/internals/get-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-built-in.js?")}),"./node_modules/core-js/internals/get-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator-method.js?")}),"./node_modules/core-js/internals/get-iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator.js?")}),"./node_modules/core-js/internals/get-json-replacer-function.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-json-replacer-function.js?")}),"./node_modules/core-js/internals/get-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-method.js?")}),"./node_modules/core-js/internals/get-substitution.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-substitution.js?")}),"./node_modules/core-js/internals/global.js":(function(module,__unused_webpack_exports,__webpack_require__){eval("\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/global.js?")}),"./node_modules/core-js/internals/has-own-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/has-own-property.js?")}),"./node_modules/core-js/internals/hidden-keys.js":((module)=>{eval("\nmodule.exports = {};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/hidden-keys.js?")}),"./node_modules/core-js/internals/host-report-errors.js":((module)=>{eval("\nmodule.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/host-report-errors.js?")}),"./node_modules/core-js/internals/html.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/html.js?")}),"./node_modules/core-js/internals/ie8-dom-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ie8-dom-define.js?")}),"./node_modules/core-js/internals/ieee754.js":((module)=>{eval("\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar $Array = Array;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = $Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n c = pow(2, -exponent);\n if (number * c < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n while (mantissaLength >= 8) {\n buffer[index++] = mantissa & 255;\n mantissa /= 256;\n mantissaLength -= 8;\n }\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n while (exponentLength > 0) {\n buffer[index++] = exponent & 255;\n exponent /= 256;\n exponentLength -= 8;\n }\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n while (nBits > 0) {\n exponent = exponent * 256 + buffer[index--];\n nBits -= 8;\n }\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n while (nBits > 0) {\n mantissa = mantissa * 256 + buffer[index--];\n nBits -= 8;\n }\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ieee754.js?")}),"./node_modules/core-js/internals/indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/indexed-object.js?")}),"./node_modules/core-js/internals/inherit-if-required.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inherit-if-required.js?")}),"./node_modules/core-js/internals/inspect-source.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inspect-source.js?")}),"./node_modules/core-js/internals/install-error-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/install-error-cause.js?")}),"./node_modules/core-js/internals/internal-metadata.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertyNamesExternalModule = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \"./node_modules/core-js/internals/object-get-own-property-names-external.js\");\nvar isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ \"./node_modules/core-js/internals/object-is-extensible.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-metadata.js?")}),"./node_modules/core-js/internals/internal-state.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \"./node_modules/core-js/internals/weak-map-basic-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar shared = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-state.js?")}),"./node_modules/core-js/internals/is-array-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array-iterator-method.js?")}),"./node_modules/core-js/internals/is-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array.js?")}),"./node_modules/core-js/internals/is-big-int-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass == 'BigInt64Array' || klass == 'BigUint64Array';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-big-int-array.js?")}),"./node_modules/core-js/internals/is-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-callable.js?")}),"./node_modules/core-js/internals/is-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-constructor.js?")}),"./node_modules/core-js/internals/is-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-forced.js?")}),"./node_modules/core-js/internals/is-integral-number.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-integral-number.js?")}),"./node_modules/core-js/internals/is-null-or-undefined.js":((module)=>{eval("\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-null-or-undefined.js?")}),"./node_modules/core-js/internals/is-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \"./node_modules/core-js/internals/document-all.js\");\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-object.js?")}),"./node_modules/core-js/internals/is-pure.js":((module)=>{eval("\nmodule.exports = false;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-pure.js?")}),"./node_modules/core-js/internals/is-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-regexp.js?")}),"./node_modules/core-js/internals/is-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js/internals/use-symbol-as-uid.js\");\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-symbol.js?")}),"./node_modules/core-js/internals/iterate.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \"./node_modules/core-js/internals/try-to-string.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \"./node_modules/core-js/internals/iterator-close.js\");\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterate.js?")}),"./node_modules/core-js/internals/iterator-close.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-close.js?")}),"./node_modules/core-js/internals/iterator-create-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype);\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-create-constructor.js?")}),"./node_modules/core-js/internals/iterator-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js/internals/iterator-create-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-define.js?")}),"./node_modules/core-js/internals/iterators-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators-core.js?")}),"./node_modules/core-js/internals/iterators.js":((module)=>{eval("\nmodule.exports = {};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators.js?")}),"./node_modules/core-js/internals/length-of-array-like.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/length-of-array-like.js?")}),"./node_modules/core-js/internals/make-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").CONFIGURABLE);\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/make-built-in.js?")}),"./node_modules/core-js/internals/map-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-map -- safe\n Map: Map,\n set: uncurryThis(MapPrototype.set),\n get: uncurryThis(MapPrototype.get),\n has: uncurryThis(MapPrototype.has),\n remove: uncurryThis(MapPrototype['delete']),\n proto: MapPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/map-helpers.js?")}),"./node_modules/core-js/internals/math-trunc.js":((module)=>{eval("\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/math-trunc.js?")}),"./node_modules/core-js/internals/microtask.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar macrotask = (__webpack_require__(/*! ../internals/task */ \"./node_modules/core-js/internals/task.js\").set);\nvar Queue = __webpack_require__(/*! ../internals/queue */ \"./node_modules/core-js/internals/queue.js\");\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js/internals/engine-is-ios.js\");\nvar IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/engine-is-ios-pebble */ \"./node_modules/core-js/internals/engine-is-ios-pebble.js\");\nvar IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ \"./node_modules/core-js/internals/engine-is-webos-webkit.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/microtask.js?")}),"./node_modules/core-js/internals/new-promise-capability.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/new-promise-capability.js?")}),"./node_modules/core-js/internals/normalize-string-argument.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/normalize-string-argument.js?")}),"./node_modules/core-js/internals/not-a-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/not-a-regexp.js?")}),"./node_modules/core-js/internals/number-parse-float.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : $parseFloat;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-float.js?")}),"./node_modules/core-js/internals/number-parse-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-int.js?")}),"./node_modules/core-js/internals/object-assign.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-assign.js?")}),"./node_modules/core-js/internals/object-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-create.js?")}),"./node_modules/core-js/internals/object-define-properties.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js/internals/v8-prototype-define-bug.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-properties.js?")}),"./node_modules/core-js/internals/object-define-property.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \"./node_modules/core-js/internals/v8-prototype-define-bug.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-property.js?")}),"./node_modules/core-js/internals/object-get-own-property-descriptor.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-descriptor.js?")}),"./node_modules/core-js/internals/object-get-own-property-names-external.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names-external.js?")}),"./node_modules/core-js/internals/object-get-own-property-names.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names.js?")}),"./node_modules/core-js/internals/object-get-own-property-symbols.js":((__unused_webpack_module,exports)=>{eval("\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-symbols.js?")}),"./node_modules/core-js/internals/object-get-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-prototype-of.js?")}),"./node_modules/core-js/internals/object-is-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(/*! ../internals/array-buffer-non-extensible */ \"./node_modules/core-js/internals/array-buffer-non-extensible.js\");\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-extensible.js?")}),"./node_modules/core-js/internals/object-is-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-prototype-of.js?")}),"./node_modules/core-js/internals/object-keys-internal.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar indexOf = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").indexOf);\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys-internal.js?")}),"./node_modules/core-js/internals/object-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys.js?")}),"./node_modules/core-js/internals/object-property-is-enumerable.js":((__unused_webpack_module,exports)=>{eval("\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-property-is-enumerable.js?")}),"./node_modules/core-js/internals/object-set-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ \"./node_modules/core-js/internals/function-uncurry-this-accessor.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \"./node_modules/core-js/internals/a-possible-prototype.js\");\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-set-prototype-of.js?")}),"./node_modules/core-js/internals/ordinary-to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ordinary-to-primitive.js?")}),"./node_modules/core-js/internals/own-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/own-keys.js?")}),"./node_modules/core-js/internals/perform.js":((module)=>{eval("\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/perform.js?")}),"./node_modules/core-js/internals/promise-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \"./node_modules/core-js/internals/inspect-source.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \"./node_modules/core-js/internals/engine-is-browser.js\");\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-constructor-detection.js?")}),"./node_modules/core-js/internals/promise-native-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nmodule.exports = global.Promise;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-native-constructor.js?")}),"./node_modules/core-js/internals/promise-resolve.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-resolve.js?")}),"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js?")}),"./node_modules/core-js/internals/proxy-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/proxy-accessor.js?")}),"./node_modules/core-js/internals/queue.js":((module)=>{eval("\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/queue.js?")}),"./node_modules/core-js/internals/regexp-exec-abstract.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec-abstract.js?")}),"./node_modules/core-js/internals/regexp-exec.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").get);\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \"./node_modules/core-js/internals/regexp-unsupported-ncg.js\");\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec.js?")}),"./node_modules/core-js/internals/regexp-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-flags.js?")}),"./node_modules/core-js/internals/regexp-get-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-get-flags.js?")}),"./node_modules/core-js/internals/regexp-sticky-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-sticky-helpers.js?")}),"./node_modules/core-js/internals/regexp-unsupported-dot-all.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-dot-all.js?")}),"./node_modules/core-js/internals/regexp-unsupported-ncg.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-ncg.js?")}),"./node_modules/core-js/internals/require-object-coercible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/require-object-coercible.js?")}),"./node_modules/core-js/internals/set-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-helpers.js?")}),"./node_modules/core-js/internals/set-species.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-species.js?")}),"./node_modules/core-js/internals/set-to-string-tag.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-to-string-tag.js?")}),"./node_modules/core-js/internals/shared-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-key.js?")}),"./node_modules/core-js/internals/shared-store.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \"./node_modules/core-js/internals/define-global-property.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-store.js?")}),"./node_modules/core-js/internals/shared.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar store = __webpack_require__(/*! ../internals/shared-store */ \"./node_modules/core-js/internals/shared-store.js\");\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.32.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared.js?")}),"./node_modules/core-js/internals/species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \"./node_modules/core-js/internals/a-constructor.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/species-constructor.js?")}),"./node_modules/core-js/internals/string-multibyte.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-multibyte.js?")}),"./node_modules/core-js/internals/string-punycode-to-ascii.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's state to , but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-punycode-to-ascii.js?")}),"./node_modules/core-js/internals/string-repeat.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-repeat.js?")}),"./node_modules/core-js/internals/string-trim-end.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $trimEnd = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").end);\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js/internals/string-trim-forced.js\");\n\n// `String.prototype.{ trimEnd, trimRight }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// https://tc39.es/ecma262/#String.prototype.trimright\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\n return $trimEnd(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimEnd;\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-end.js?")}),"./node_modules/core-js/internals/string-trim-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").PROPER);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-forced.js?")}),"./node_modules/core-js/internals/string-trim.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim.js?")}),"./node_modules/core-js/internals/structured-clone-proper-transfer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \"./node_modules/core-js/internals/engine-is-browser.js\");\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \"./node_modules/core-js/internals/engine-is-deno.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar structuredClone = global.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength != 0 || clone.byteLength != 8;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/structured-clone-proper-transfer.js?")}),"./node_modules/core-js/internals/symbol-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/symbol-constructor-detection.js?")}),"./node_modules/core-js/internals/task.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \"./node_modules/core-js/internals/engine-is-ios.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/task.js?")}),"./node_modules/core-js/internals/this-number-value.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/this-number-value.js?")}),"./node_modules/core-js/internals/to-absolute-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-absolute-index.js?")}),"./node_modules/core-js/internals/to-big-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-big-int.js?")}),"./node_modules/core-js/internals/to-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw $RangeError('Wrong length or index');\n return length;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-index.js?")}),"./node_modules/core-js/internals/to-indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-indexed-object.js?")}),"./node_modules/core-js/internals/to-integer-or-infinity.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar trunc = __webpack_require__(/*! ../internals/math-trunc */ \"./node_modules/core-js/internals/math-trunc.js\");\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-integer-or-infinity.js?")}),"./node_modules/core-js/internals/to-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-length.js?")}),"./node_modules/core-js/internals/to-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-object.js?")}),"./node_modules/core-js/internals/to-offset.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ \"./node_modules/core-js/internals/to-positive-integer.js\");\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-offset.js?")}),"./node_modules/core-js/internals/to-positive-integer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-positive-integer.js?")}),"./node_modules/core-js/internals/to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ \"./node_modules/core-js/internals/ordinary-to-primitive.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-primitive.js?")}),"./node_modules/core-js/internals/to-property-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-property-key.js?")}),"./node_modules/core-js/internals/to-string-tag-support.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string-tag-support.js?")}),"./node_modules/core-js/internals/to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string.js?")}),"./node_modules/core-js/internals/to-uint8-clamped.js":((module)=>{eval("\nvar round = Math.round;\n\nmodule.exports = function (it) {\n var value = round(it);\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-uint8-clamped.js?")}),"./node_modules/core-js/internals/try-node-require.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\n\nmodule.exports = function (name) {\n try {\n // eslint-disable-next-line no-new-func -- safe\n if (IS_NODE) return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-node-require.js?")}),"./node_modules/core-js/internals/try-to-string.js":((module)=>{eval("\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-to-string.js?")}),"./node_modules/core-js/internals/typed-array-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ \"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar isIntegralNumber = __webpack_require__(/*! ../internals/is-integral-number */ \"./node_modules/core-js/internals/is-integral-number.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \"./node_modules/core-js/internals/to-index.js\");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \"./node_modules/core-js/internals/to-offset.js\");\nvar toUint8Clamped = __webpack_require__(/*! ../internals/to-uint8-clamped */ \"./node_modules/core-js/internals/to-uint8-clamped.js\");\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \"./node_modules/core-js/internals/to-property-key.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ \"./node_modules/core-js/internals/typed-array-from.js\");\nvar forEach = (__webpack_require__(/*! ../internals/array-iteration */ \"./node_modules/core-js/internals/array-iteration.js\").forEach);\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n defineBuiltInAccessor(it, key, {\n configurable: true,\n get: function () {\n return getInternalState(this)[key];\n }\n });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructor.js?")}),"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\nvar NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\").NATIVE_ARRAY_BUFFER_VIEWS);\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js?")}),"./node_modules/core-js/internals/typed-array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \"./node_modules/core-js/internals/a-constructor.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \"./node_modules/core-js/internals/is-big-int-array.js\");\nvar aTypedArrayConstructor = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\").aTypedArrayConstructor);\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-from.js?")}),"./node_modules/core-js/internals/uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/uid.js?")}),"./node_modules/core-js/internals/url-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/url-constructor-detection.js?")}),"./node_modules/core-js/internals/use-symbol-as-uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/use-symbol-as-uid.js?")}),"./node_modules/core-js/internals/v8-prototype-define-bug.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/v8-prototype-define-bug.js?")}),"./node_modules/core-js/internals/validate-arguments-length.js":((module)=>{eval("\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/validate-arguments-length.js?")}),"./node_modules/core-js/internals/weak-map-basic-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/weak-map-basic-detection.js?")}),"./node_modules/core-js/internals/well-known-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \"./node_modules/core-js/internals/use-symbol-as-uid.js\");\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/well-known-symbol.js?")}),"./node_modules/core-js/internals/whitespaces.js":((module)=>{eval("\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/whitespaces.js?")}),"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \"./node_modules/core-js/internals/proxy-accessor.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ \"./node_modules/core-js/internals/install-error-cause.js\");\nvar installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ \"./node_modules/core-js/internals/error-stack-install.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n installErrorStack(result, WrappedError, result.stack, 2);\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js?")}),"./node_modules/core-js/modules/es.array-buffer.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.constructor.js?")}),"./node_modules/core-js/modules/es.array-buffer.slice.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \"./node_modules/core-js/internals/array-buffer.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\n\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar DataViewPrototype = DataView.prototype;\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\n\nvar INCORRECT_SLICE = fails(function () {\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\n});\n\n// `ArrayBuffer.prototype.slice` method\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\n slice: function slice(start, end) {\n if (nativeArrayBufferSlice && end === undefined) {\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\n }\n var length = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\n var viewSource = new DataView(this);\n var viewTarget = new DataView(result);\n var index = 0;\n while (first < fin) {\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\n } return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.slice.js?")}),"./node_modules/core-js/modules/es.array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.at` method\n// https://tc39.es/ecma262/#sec-array.prototype.at\n$({ target: 'Array', proto: true }, {\n at: function at(index) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n }\n});\n\naddToUnscopables('at');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.at.js?")}),"./node_modules/core-js/modules/es.array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLastIndex);\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\n$({ target: 'Array', proto: true }, {\n findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\n return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\naddToUnscopables('findLastIndex');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last-index.js?")}),"./node_modules/core-js/modules/es.array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLast);\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\n$({ target: 'Array', proto: true }, {\n findLast: function findLast(callbackfn /* , that = undefined */) {\n return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\naddToUnscopables('findLast');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last.js?")}),"./node_modules/core-js/modules/es.array.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar flattenIntoArray = __webpack_require__(/*! ../internals/flatten-into-array */ \"./node_modules/core-js/internals/flatten-into-array.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \"./node_modules/core-js/internals/array-species-create.js\");\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A;\n aCallable(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.flat-map.js?")}),"./node_modules/core-js/modules/es.array.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $includes = (__webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").includes);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.includes.js?")}),"./node_modules/core-js/modules/es.array.iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js/internals/create-iter-result-object.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n if (kind == 'keys') return createIterResultObject(index, false);\n if (kind == 'values') return createIterResultObject(target[index], false);\n return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.iterator.js?")}),"./node_modules/core-js/modules/es.array.push.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \"./node_modules/core-js/internals/array-set-length.js\");\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.push.js?")}),"./node_modules/core-js/modules/es.array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \"./node_modules/core-js/internals/delete-property-or-throw.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \"./node_modules/core-js/internals/array-method-is-strict.js\");\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \"./node_modules/core-js/internals/engine-ff-version.js\");\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \"./node_modules/core-js/internals/engine-is-ie-or-edge.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \"./node_modules/core-js/internals/engine-webkit-version.js\");\n\nvar test = [];\nvar nativeSort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = lengthOfArrayLike(items);\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.sort.js?")}),"./node_modules/core-js/modules/es.array.unscopables.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.unscopables.flat-map.js?")}),"./node_modules/core-js/modules/es.array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \"./node_modules/core-js/internals/array-with.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\n\nvar $Array = Array;\n\n// `Array.prototype.with` method\n// https://tc39.es/ecma262/#sec-array.prototype.with\n$({ target: 'Array', proto: true }, {\n 'with': function (index, value) {\n return arrayWith(toIndexedObject(this), $Array, index, value);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.with.js?")}),"./node_modules/core-js/modules/es.error.cause.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar wrapErrorConstructorWithCause = __webpack_require__(/*! ../internals/wrap-error-constructor-with-cause */ \"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js\");\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.error.cause.js?")}),"./node_modules/core-js/modules/es.global-this.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n globalThis: global\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.global-this.js?")}),"./node_modules/core-js/modules/es.json.stringify.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\nvar getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ \"./node_modules/core-js/internals/get-json-replacer-function.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \"./node_modules/core-js/internals/symbol-constructor-detection.js\");\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.json.stringify.js?")}),"./node_modules/core-js/modules/es.math.hypot.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\n\n// eslint-disable-next-line es/no-math-hypot -- required for testing\nvar $hypot = Math.hypot;\nvar abs = Math.abs;\nvar sqrt = Math.sqrt;\n\n// Chrome 77 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\n\n// `Math.hypot` method\n// https://tc39.es/ecma262/#sec-math.hypot\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n hypot: function hypot(value1, value2) {\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * sqrt(sum);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.math.hypot.js?")}),"./node_modules/core-js/modules/es.number.to-fixed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar thisNumberValue = __webpack_require__(/*! ../internals/this-number-value */ \"./node_modules/core-js/internals/this-number-value.js\");\nvar $repeat = __webpack_require__(/*! ../internals/string-repeat */ \"./node_modules/core-js/internals/string-repeat.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return nativeToFixed(0.00008, 3) !== '0.000' ||\n nativeToFixed(0.9, 0) !== '1' ||\n nativeToFixed(1.255, 2) !== '1.25' ||\n nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.number.to-fixed.js?")}),"./node_modules/core-js/modules/es.object.assign.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js/internals/object-assign.js\");\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.assign.js?")}),"./node_modules/core-js/modules/es.object.has-own.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\n\n// `Object.hasOwn` method\n// https://tc39.es/ecma262/#sec-object.hasown\n$({ target: 'Object', stat: true }, {\n hasOwn: hasOwn\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.has-own.js?")}),"./node_modules/core-js/modules/es.parse-float.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $parseFloat = __webpack_require__(/*! ../internals/number-parse-float */ \"./node_modules/core-js/internals/number-parse-float.js\");\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-float.js?")}),"./node_modules/core-js/modules/es.parse-int.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ \"./node_modules/core-js/internals/number-parse-int.js\");\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n parseInt: $parseInt\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-int.js?")}),"./node_modules/core-js/modules/es.promise.all-settled.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all-settled.js?")}),"./node_modules/core-js/modules/es.promise.all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all.js?")}),"./node_modules/core-js/modules/es.promise.catch.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.catch.js?")}),"./node_modules/core-js/modules/es.promise.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \"./node_modules/core-js/internals/engine-is-node.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar task = (__webpack_require__(/*! ../internals/task */ \"./node_modules/core-js/internals/task.js\").set);\nvar microtask = __webpack_require__(/*! ../internals/microtask */ \"./node_modules/core-js/internals/microtask.js\");\nvar hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ \"./node_modules/core-js/internals/host-report-errors.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar Queue = __webpack_require__(/*! ../internals/queue */ \"./node_modules/core-js/internals/queue.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.constructor.js?")}),"./node_modules/core-js/modules/es.promise.finally.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js/internals/promise-resolve.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.finally.js?")}),"./node_modules/core-js/modules/es.promise.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(/*! ../modules/es.promise.constructor */ \"./node_modules/core-js/modules/es.promise.constructor.js\");\n__webpack_require__(/*! ../modules/es.promise.all */ \"./node_modules/core-js/modules/es.promise.all.js\");\n__webpack_require__(/*! ../modules/es.promise.catch */ \"./node_modules/core-js/modules/es.promise.catch.js\");\n__webpack_require__(/*! ../modules/es.promise.race */ \"./node_modules/core-js/modules/es.promise.race.js\");\n__webpack_require__(/*! ../modules/es.promise.reject */ \"./node_modules/core-js/modules/es.promise.reject.js\");\n__webpack_require__(/*! ../modules/es.promise.resolve */ \"./node_modules/core-js/modules/es.promise.resolve.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.js?")}),"./node_modules/core-js/modules/es.promise.race.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar perform = __webpack_require__(/*! ../internals/perform */ \"./node_modules/core-js/internals/perform.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\");\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.race.js?")}),"./node_modules/core-js/modules/es.promise.reject.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \"./node_modules/core-js/internals/new-promise-capability.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.reject.js?")}),"./node_modules/core-js/modules/es.promise.resolve.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \"./node_modules/core-js/internals/promise-native-constructor.js\");\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \"./node_modules/core-js/internals/promise-constructor-detection.js\").CONSTRUCTOR);\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \"./node_modules/core-js/internals/promise-resolve.js\");\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.resolve.js?")}),"./node_modules/core-js/modules/es.reflect.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.reflect.to-string-tag.js?")}),"./node_modules/core-js/modules/es.regexp.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f);\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \"./node_modules/core-js/internals/proxy-accessor.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").enforce);\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \"./node_modules/core-js/internals/set-species.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \"./node_modules/core-js/internals/regexp-unsupported-ncg.js\");\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only proper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.constructor.js?")}),"./node_modules/core-js/modules/es.regexp.dot-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").get);\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.dot-all.js?")}),"./node_modules/core-js/modules/es.regexp.exec.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar exec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.exec.js?")}),"./node_modules/core-js/modules/es.regexp.flags.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.flags.js?")}),"./node_modules/core-js/modules/es.regexp.test.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(/*! ../modules/es.regexp.exec */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar nativeTest = /./.test;\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (S) {\n var R = anObject(this);\n var string = toString(S);\n var exec = R.exec;\n if (!isCallable(exec)) return call(nativeTest, R, string);\n var result = call(exec, R, string);\n if (result === null) return false;\n anObject(result);\n return true;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.test.js?")}),"./node_modules/core-js/modules/es.regexp.to-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \"./node_modules/core-js/internals/function-name.js\").PROPER);\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.to-string.js?")}),"./node_modules/core-js/modules/es.string.at-alternative.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar charAt = uncurryThis(''.charAt);\n\nvar FORCED = fails(function () {\n // eslint-disable-next-line es/no-array-string-prototype-at -- safe\n return '𠮷'.at(-2) !== '\\uD842';\n});\n\n// `String.prototype.at` method\n// https://tc39.es/ecma262/#sec-string.prototype.at\n$({ target: 'String', proto: true, forced: FORCED }, {\n at: function at(index) {\n var S = toString(requireObjectCoercible(this));\n var len = S.length;\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.at-alternative.js?")}),"./node_modules/core-js/modules/es.string.ends-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\nvar nativeEndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return nativeEndsWith\n ? nativeEndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.ends-with.js?")}),"./node_modules/core-js/modules/es.string.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.includes.js?")}),"./node_modules/core-js/modules/es.string.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").charAt);\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \"./node_modules/core-js/internals/iterator-define.js\");\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \"./node_modules/core-js/internals/create-iter-result-object.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.iterator.js?")}),"./node_modules/core-js/modules/es.string.match.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.match.js?")}),"./node_modules/core-js/modules/es.string.replace-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \"./node_modules/core-js/internals/get-substitution.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (!isNullOrUndefined(searchValue)) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace-all.js?")}),"./node_modules/core-js/modules/es.string.replace.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \"./node_modules/core-js/internals/get-substitution.js\");\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace.js?")}),"./node_modules/core-js/modules/es.string.split.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \"./node_modules/core-js/internals/get-method.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.split.js?")}),"./node_modules/core-js/modules/es.string.starts-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f);\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\nvar nativeStartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return nativeStartsWith\n ? nativeStartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.starts-with.js?")}),"./node_modules/core-js/modules/es.string.trim-end.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this line from `core-js@4`\n__webpack_require__(/*! ../modules/es.string.trim-right */ \"./node_modules/core-js/modules/es.string.trim-right.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \"./node_modules/core-js/internals/string-trim-end.js\");\n\n// `String.prototype.trimEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\n trimEnd: trimEnd\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-end.js?")}),"./node_modules/core-js/modules/es.string.trim-right.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \"./node_modules/core-js/internals/string-trim-end.js\");\n\n// `String.prototype.trimRight` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\n trimRight: trimEnd\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-right.js?")}),"./node_modules/core-js/modules/es.string.trim.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $trim = (__webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim);\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js/internals/string-trim-forced.js\");\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim.js?")}),"./node_modules/core-js/modules/es.symbol.description.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \"./node_modules/core-js/internals/object-is-prototype-of.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = thisSymbolValue(this);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var string = symbolDescriptiveString(symbol);\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.symbol.description.js?")}),"./node_modules/core-js/modules/es.typed-array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.at.js?")}),"./node_modules/core-js/modules/es.typed-array.fill.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $fill = __webpack_require__(/*! ../internals/array-fill */ \"./node_modules/core-js/internals/array-fill.js\");\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.fill.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLastIndex);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last-index.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \"./node_modules/core-js/internals/array-iteration-from-last.js\").findLast);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last.js?")}),"./node_modules/core-js/modules/es.typed-array.int32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Int32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int32', function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.int8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Int8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Int8', function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.set.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \"./node_modules/core-js/internals/to-offset.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.set.js?")}),"./node_modules/core-js/modules/es.typed-array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \"./node_modules/core-js/internals/function-uncurry-this-clause.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \"./node_modules/core-js/internals/engine-ff-version.js\");\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \"./node_modules/core-js/internals/engine-is-ie-or-edge.js\");\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \"./node_modules/core-js/internals/engine-v8-version.js\");\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \"./node_modules/core-js/internals/engine-webkit-version.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.sort.js?")}),"./node_modules/core-js/modules/es.typed-array.to-locale-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \"./node_modules/core-js/internals/function-apply.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \"./node_modules/core-js/internals/array-slice.js\");\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-locale-string.js?")}),"./node_modules/core-js/modules/es.typed-array.to-reversed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arrayToReversed = __webpack_require__(/*! ../internals/array-to-reversed */ \"./node_modules/core-js/internals/array-to-reversed.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-reversed.js?")}),"./node_modules/core-js/modules/es.typed-array.to-sorted.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \"./node_modules/core-js/internals/a-callable.js\");\nvar arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ \"./node_modules/core-js/internals/array-from-constructor-and-list.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-sorted.js?")}),"./node_modules/core-js/modules/es.typed-array.uint32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \"./node_modules/core-js/internals/typed-array-constructor.js\");\n\n// `Uint8ClampedArray` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js?")}),"./node_modules/core-js/modules/es.typed-array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \"./node_modules/core-js/internals/array-with.js\");\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \"./node_modules/core-js/internals/array-buffer-view-core.js\");\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \"./node_modules/core-js/internals/is-big-int-array.js\");\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \"./node_modules/core-js/internals/to-integer-or-infinity.js\");\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \"./node_modules/core-js/internals/to-big-int.js\");\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.with.js?")}),"./node_modules/core-js/modules/es.weak-map.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \"./node_modules/core-js/internals/internal-metadata.js\");\nvar collection = __webpack_require__(/*! ../internals/collection */ \"./node_modules/core-js/internals/collection.js\");\nvar collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ \"./node_modules/core-js/internals/collection-weak.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\").enforce);\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \"./node_modules/core-js/internals/weak-map-basic-detection.js\");\n\nvar $Object = Object;\n// eslint-disable-next-line es/no-array-isarray -- safe\nvar isArray = Array.isArray;\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = $Object.isExtensible;\n// eslint-disable-next-line es/no-object-isfrozen -- safe\nvar isFrozen = $Object.isFrozen;\n// eslint-disable-next-line es/no-object-issealed -- safe\nvar isSealed = $Object.isSealed;\n// eslint-disable-next-line es/no-object-freeze -- safe\nvar freeze = $Object.freeze;\n// eslint-disable-next-line es/no-object-seal -- safe\nvar seal = $Object.seal;\n\nvar FROZEN = {};\nvar SEALED = {};\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\nvar WeakMapPrototype = $WeakMap.prototype;\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\n\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\nvar hasMSEdgeFreezingBug = function () {\n return FREEZING && fails(function () {\n var frozenArray = freeze([]);\n nativeSet(new $WeakMap(), frozenArray, 1);\n return !isFrozen(frozenArray);\n });\n};\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.enable();\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n var nativeHas = uncurryThis(WeakMapPrototype.has);\n var nativeGet = uncurryThis(WeakMapPrototype.get);\n defineBuiltIns(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete(this, key) || state.frozen['delete'](key);\n } return nativeDelete(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) || state.frozen.has(key);\n } return nativeHas(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n } return nativeGet(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n } else nativeSet(this, key, value);\n return this;\n }\n });\n// Chakra Edge frozen keys fix\n} else if (hasMSEdgeFreezingBug()) {\n defineBuiltIns(WeakMapPrototype, {\n set: function set(key, value) {\n var arrayIntegrityLevel;\n if (isArray(key)) {\n if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\n else if (isSealed(key)) arrayIntegrityLevel = SEALED;\n }\n nativeSet(this, key, value);\n if (arrayIntegrityLevel == FROZEN) freeze(key);\n if (arrayIntegrityLevel == SEALED) seal(key);\n return this;\n }\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.constructor.js?")}),"./node_modules/core-js/modules/es.weak-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/es.weak-map.constructor */ \"./node_modules/core-js/modules/es.weak-map.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.js?")}),"./node_modules/core-js/modules/web.dom-collections.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \"./node_modules/core-js/internals/dom-iterables.js\");\nvar DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ \"./node_modules/core-js/internals/dom-token-list-prototype.js\");\nvar ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-collections.iterator.js?")}),"./node_modules/core-js/modules/web.dom-exception.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar tryNodeRequire = __webpack_require__(/*! ../internals/try-node-require */ \"./node_modules/core-js/internals/try-node-require.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar errorToString = __webpack_require__(/*! ../internals/error-to-string */ \"./node_modules/core-js/internals/error-to-string.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \"./node_modules/core-js/internals/dom-exception-constants.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\nvar Error = getBuiltIn('Error');\n// NodeJS < 17.0 does not expose `DOMException` to global\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\n try {\n // NodeJS < 15.0 does not expose `MessageChannel` to global\n var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\n // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\n new MessageChannel().port1.postMessage(new WeakMap());\n } catch (error) {\n if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;\n }\n})();\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\nvar ErrorPrototype = Error.prototype;\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\n\nvar codeFor = function (name) {\n return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\n};\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var code = codeFor(name);\n setInternalState(this, {\n type: DOM_EXCEPTION,\n name: name,\n message: message,\n code: code\n });\n if (!DESCRIPTORS) {\n this.name = name;\n this.message = message;\n this.code = code;\n }\n if (HAS_STACK) {\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n }\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\n\nvar createGetterDescriptor = function (get) {\n return { enumerable: true, configurable: true, get: get };\n};\n\nvar getterFor = function (key) {\n return createGetterDescriptor(function () {\n return getInternalState(this)[key];\n });\n};\n\nif (DESCRIPTORS) {\n // `DOMException.prototype.code` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\n // `DOMException.prototype.message` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\n // `DOMException.prototype.name` getter\n defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\n}\n\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\n\n// FF36- DOMException is a function, but can't be constructed\nvar INCORRECT_CONSTRUCTOR = fails(function () {\n return !(new NativeDOMException() instanceof Error);\n});\n\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\n return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\n});\n\n// Deno 1.6.3- DOMException.prototype.code just missed\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\n return new NativeDOMException(1, 'DataCloneError').code !== 25;\n});\n\n// Deno 1.6.3- DOMException constants just missed\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\n || NativeDOMException[DATA_CLONE_ERR] !== 25\n || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\n\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\n\n// `DOMException` constructor\n// https://webidl.spec.whatwg.org/#idl-DOMException\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\n defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\n}\n\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\n defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\n return codeFor(anObject(this).name);\n }));\n}\n\n// `DOMException` constants\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n var descriptor = createPropertyDescriptor(6, constant.c);\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, descriptor);\n }\n if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\n defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.constructor.js?")}),"./node_modules/core-js/modules/web.dom-exception.stack.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f);\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \"./node_modules/core-js/internals/inherit-if-required.js\");\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \"./node_modules/core-js/internals/normalize-string-argument.js\");\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \"./node_modules/core-js/internals/dom-exception-constants.js\");\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \"./node_modules/core-js/internals/error-stack-clear.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.stack.js?")}),"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\nvar DOM_EXCEPTION = 'DOMException';\n\n// `DOMException.prototype[@@toStringTag]` property\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.to-string-tag.js?")}),"./node_modules/core-js/modules/web.self.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar INCORRECT_VALUE = global.self !== global;\n\n// `self` getter\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\ntry {\n if (DESCRIPTORS) {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\n // some engines have `self`, but with incorrect descriptor\n // https://github.com/denoland/deno/issues/15765\n if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n defineBuiltInAccessor(global, 'self', {\n get: function self() {\n return global;\n },\n set: function self(value) {\n if (this !== global) throw $TypeError('Illegal invocation');\n defineProperty(global, 'self', {\n value: value,\n writable: true,\n configurable: true,\n enumerable: true\n });\n },\n configurable: true,\n enumerable: true\n });\n }\n } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n self: global\n });\n} catch (error) { /* empty */ }\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.self.js?")}),"./node_modules/core-js/modules/web.structured-clone.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getBuiltin = __webpack_require__(/*! ../internals/get-built-in */ \"./node_modules/core-js/internals/get-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \"./node_modules/core-js/internals/is-constructor.js\");\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \"./node_modules/core-js/internals/is-null-or-undefined.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \"./node_modules/core-js/internals/iterate.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \"./node_modules/core-js/internals/create-non-enumerable-property.js\");\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \"./node_modules/core-js/internals/length-of-array-like.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \"./node_modules/core-js/internals/regexp-get-flags.js\");\nvar MapHelpers = __webpack_require__(/*! ../internals/map-helpers */ \"./node_modules/core-js/internals/map-helpers.js\");\nvar SetHelpers = __webpack_require__(/*! ../internals/set-helpers */ \"./node_modules/core-js/internals/set-helpers.js\");\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \"./node_modules/core-js/internals/error-stack-installable.js\");\nvar PROPER_TRANSFER = __webpack_require__(/*! ../internals/structured-clone-proper-transfer */ \"./node_modules/core-js/internals/structured-clone-proper-transfer.js\");\n\nvar Object = global.Object;\nvar Array = global.Array;\nvar Date = global.Date;\nvar Error = global.Error;\nvar EvalError = global.EvalError;\nvar RangeError = global.RangeError;\nvar ReferenceError = global.ReferenceError;\nvar SyntaxError = global.SyntaxError;\nvar TypeError = global.TypeError;\nvar URIError = global.URIError;\nvar PerformanceMark = global.PerformanceMark;\nvar WebAssembly = global.WebAssembly;\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\nvar DOMException = getBuiltin('DOMException');\nvar Map = MapHelpers.Map;\nvar mapHas = MapHelpers.has;\nvar mapGet = MapHelpers.get;\nvar mapSet = MapHelpers.set;\nvar Set = SetHelpers.Set;\nvar setAdd = SetHelpers.add;\nvar objectKeys = getBuiltin('Object', 'keys');\nvar push = uncurryThis([].push);\nvar thisBooleanValue = uncurryThis(true.valueOf);\nvar thisNumberValue = uncurryThis(1.0.valueOf);\nvar thisStringValue = uncurryThis(''.valueOf);\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\nvar PERFORMANCE_MARK = uid('structuredClone');\nvar DATA_CLONE_ERROR = 'DataCloneError';\nvar TRANSFERRING = 'Transferring';\n\nvar checkBasicSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var set1 = new global.Set([7]);\n var set2 = structuredCloneImplementation(set1);\n var number = structuredCloneImplementation(Object(7));\n return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\n }) && structuredCloneImplementation;\n};\n\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\n return !fails(function () {\n var error = new $Error();\n var test = structuredCloneImplementation({ a: error, b: error });\n return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\n });\n};\n\n// https://github.com/whatwg/html/pull/5749\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\n return !fails(function () {\n var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\n return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\n });\n};\n\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\n// FF<103 and Safari implementations can't clone errors\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n// FF103 can clone errors, but `.stack` of clone is an empty string\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\n// FF104+ fixed it on usual errors, but not on DOMExceptions\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\n// Chrome <102 returns `null` if cloned object contains multiple references to one error\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\n// NodeJS implementation can't clone DOMExceptions\n// https://github.com/nodejs/node/issues/41038\n// only FF103+ supports new (html/5749) error cloning semantic\nvar nativeStructuredClone = global.structuredClone;\n\nvar FORCED_REPLACEMENT = IS_PURE\n || !checkErrorsCloning(nativeStructuredClone, Error)\n || !checkErrorsCloning(nativeStructuredClone, DOMException)\n || !checkNewErrorsCloningSemantic(nativeStructuredClone);\n\n// Chrome 82+, Safari 14.1+, Deno 1.11+\n// Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`\n// Chrome returns `null` if cloned object contains multiple references to one error\n// Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround\n// Safari implementation can't clone errors\n// Deno 1.2-1.10 implementations too naive\n// NodeJS 16.0+ does not have `PerformanceMark` constructor\n// NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive\n// and can't clone, for example, `RegExp` or some boxed primitives\n// https://github.com/nodejs/node/issues/40840\n// no one of those implementations supports new (html/5749) error cloning semantic\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\n return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\n});\n\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\n\nvar throwUncloneable = function (type) {\n throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\n};\n\nvar throwUnpolyfillable = function (type, action) {\n throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\n};\n\nvar tryNativeRestrictedStructuredClone = function (value, type) {\n if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\n return nativeRestrictedStructuredClone(value);\n};\n\nvar createDataTransfer = function () {\n var dataTransfer;\n try {\n dataTransfer = new global.DataTransfer();\n } catch (error) {\n try {\n dataTransfer = new global.ClipboardEvent('').clipboardData;\n } catch (error2) { /* empty */ }\n }\n return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\n};\n\nvar cloneBuffer = function (value, map, $type) {\n if (mapHas(map, value)) return mapGet(map, value);\n\n var type = $type || classof(value);\n var clone, length, options, source, target, i;\n\n if (type === 'SharedArrayBuffer') {\n if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\n // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\n else clone = value;\n } else {\n var DataView = global.DataView;\n\n // `ArrayBuffer#slice` is not available in IE10\n // `ArrayBuffer#slice` and `DataView` are not available in old FF\n if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\n // detached buffers throws in `DataView` and `.slice`\n try {\n if (typeof value.slice == 'function' && !value.resizable) {\n clone = value.slice(0);\n } else {\n length = value.byteLength;\n options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\n clone = new ArrayBuffer(length, options);\n source = new DataView(value);\n target = new DataView(clone);\n for (i = 0; i < length; i++) {\n target.setUint8(i, source.getUint8(i));\n }\n }\n } catch (error) {\n throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\n }\n }\n\n mapSet(map, value, clone);\n\n return clone;\n};\n\nvar cloneView = function (value, type, offset, length, map) {\n var C = global[type];\n // in some old engines like Safari 9, typeof C is 'object'\n // on Uint8ClampedArray or some other constructors\n if (!isObject(C)) throwUnpolyfillable(type);\n return new C(cloneBuffer(value.buffer, map), offset, length);\n};\n\nvar Placeholder = function (object, type, metadata) {\n this.object = object;\n this.type = type;\n this.metadata = metadata;\n};\n\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\n if (isSymbol(value)) throwUncloneable('Symbol');\n if (!isObject(value)) return value;\n // effectively preserves circular references\n if (map) {\n if (mapHas(map, value)) return mapGet(map, value);\n } else map = new Map();\n\n var type = classof(value);\n var C, name, cloned, dataTransfer, i, length, keys, key;\n\n switch (type) {\n case 'Array':\n cloned = Array(lengthOfArrayLike(value));\n break;\n case 'Object':\n cloned = {};\n break;\n case 'Map':\n cloned = new Map();\n break;\n case 'Set':\n cloned = new Set();\n break;\n case 'RegExp':\n // in this block because of a Safari 14.1 bug\n // old FF does not clone regexes passed to the constructor, so get the source and flags directly\n cloned = new RegExp(value.source, getRegExpFlags(value));\n break;\n case 'Error':\n name = value.name;\n switch (name) {\n case 'AggregateError':\n cloned = getBuiltin('AggregateError')([]);\n break;\n case 'EvalError':\n cloned = EvalError();\n break;\n case 'RangeError':\n cloned = RangeError();\n break;\n case 'ReferenceError':\n cloned = ReferenceError();\n break;\n case 'SyntaxError':\n cloned = SyntaxError();\n break;\n case 'TypeError':\n cloned = TypeError();\n break;\n case 'URIError':\n cloned = URIError();\n break;\n case 'CompileError':\n cloned = CompileError();\n break;\n case 'LinkError':\n cloned = LinkError();\n break;\n case 'RuntimeError':\n cloned = RuntimeError();\n break;\n default:\n cloned = Error();\n }\n break;\n case 'DOMException':\n cloned = new DOMException(value.message, value.name);\n break;\n case 'ArrayBuffer':\n case 'SharedArrayBuffer':\n cloned = transferredBuffers\n ? new Placeholder(value, type)\n : cloneBuffer(value, map, type);\n break;\n case 'DataView':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float16Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n length = type === 'DataView' ? value.byteLength : value.length;\n cloned = transferredBuffers\n ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\n : cloneView(value, type, value.byteOffset, length, map);\n break;\n case 'DOMQuad':\n try {\n cloned = new DOMQuad(\n structuredCloneInternal(value.p1, map, transferredBuffers),\n structuredCloneInternal(value.p2, map, transferredBuffers),\n structuredCloneInternal(value.p3, map, transferredBuffers),\n structuredCloneInternal(value.p4, map, transferredBuffers)\n );\n } catch (error) {\n cloned = tryNativeRestrictedStructuredClone(value, type);\n }\n break;\n case 'File':\n if (nativeRestrictedStructuredClone) try {\n cloned = nativeRestrictedStructuredClone(value);\n // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\n if (classof(cloned) !== type) cloned = undefined;\n } catch (error) { /* empty */ }\n if (!cloned) try {\n cloned = new File([value], value.name, value);\n } catch (error) { /* empty */ }\n if (!cloned) throwUnpolyfillable(type);\n break;\n case 'FileList':\n dataTransfer = createDataTransfer();\n if (dataTransfer) {\n for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\n dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\n }\n cloned = dataTransfer.files;\n } else cloned = tryNativeRestrictedStructuredClone(value, type);\n break;\n case 'ImageData':\n // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\n try {\n cloned = new ImageData(\n structuredCloneInternal(value.data, map, transferredBuffers),\n value.width,\n value.height,\n { colorSpace: value.colorSpace }\n );\n } catch (error) {\n cloned = tryNativeRestrictedStructuredClone(value, type);\n } break;\n default:\n if (nativeRestrictedStructuredClone) {\n cloned = nativeRestrictedStructuredClone(value);\n } else switch (type) {\n case 'BigInt':\n // can be a 3rd party polyfill\n cloned = Object(value.valueOf());\n break;\n case 'Boolean':\n cloned = Object(thisBooleanValue(value));\n break;\n case 'Number':\n cloned = Object(thisNumberValue(value));\n break;\n case 'String':\n cloned = Object(thisStringValue(value));\n break;\n case 'Date':\n cloned = new Date(thisTimeValue(value));\n break;\n case 'Blob':\n try {\n cloned = value.slice(0, value.size, value.type);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMPoint':\n case 'DOMPointReadOnly':\n C = global[type];\n try {\n cloned = C.fromPoint\n ? C.fromPoint(value)\n : new C(value.x, value.y, value.z, value.w);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMRect':\n case 'DOMRectReadOnly':\n C = global[type];\n try {\n cloned = C.fromRect\n ? C.fromRect(value)\n : new C(value.x, value.y, value.width, value.height);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'DOMMatrix':\n case 'DOMMatrixReadOnly':\n C = global[type];\n try {\n cloned = C.fromMatrix\n ? C.fromMatrix(value)\n : new C(value);\n } catch (error) {\n throwUnpolyfillable(type);\n } break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone)) throwUnpolyfillable(type);\n try {\n cloned = value.clone();\n } catch (error) {\n throwUncloneable(type);\n } break;\n case 'CropTarget':\n case 'CryptoKey':\n case 'FileSystemDirectoryHandle':\n case 'FileSystemFileHandle':\n case 'FileSystemHandle':\n case 'GPUCompilationInfo':\n case 'GPUCompilationMessage':\n case 'ImageBitmap':\n case 'RTCCertificate':\n case 'WebAssembly.Module':\n throwUnpolyfillable(type);\n // break omitted\n default:\n throwUncloneable(type);\n }\n }\n\n mapSet(map, value, cloned);\n\n switch (type) {\n case 'Array':\n case 'Object':\n keys = objectKeys(value);\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n key = keys[i];\n createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\n } break;\n case 'Map':\n value.forEach(function (v, k) {\n mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\n });\n break;\n case 'Set':\n value.forEach(function (v) {\n setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\n });\n break;\n case 'Error':\n createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\n if (hasOwn(value, 'cause')) {\n createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\n }\n if (name == 'AggregateError') {\n cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\n } // break omitted\n case 'DOMException':\n if (ERROR_STACK_INSTALLABLE) {\n createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\n }\n }\n\n return cloned;\n};\n\nvar replacePlaceholders = function (value, map) {\n if (!isObject(value)) return value;\n if (mapHas(map, value)) return mapGet(map, value);\n\n var type, object, metadata, i, length, keys, key, replacement;\n\n if (value instanceof Placeholder) {\n type = value.type;\n object = value.object;\n\n switch (type) {\n case 'ArrayBuffer':\n case 'SharedArrayBuffer':\n replacement = cloneBuffer(object, map, type);\n break;\n case 'DataView':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float16Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'BigInt64Array':\n case 'BigUint64Array':\n metadata = value.metadata;\n replacement = cloneView(object, type, metadata.offset, metadata.length, map);\n }\n } else switch (classof(value)) {\n case 'Array':\n case 'Object':\n keys = objectKeys(value);\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\n key = keys[i];\n value[key] = replacePlaceholders(value[key], map);\n } break;\n case 'Map':\n replacement = new Map();\n value.forEach(function (v, k) {\n mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\n });\n break;\n case 'Set':\n replacement = new Set();\n value.forEach(function (v) {\n setAdd(replacement, replacePlaceholders(v, map));\n });\n break;\n case 'Error':\n value.message = replacePlaceholders(value.message, map);\n if (hasOwn(value, 'cause')) {\n value.cause = replacePlaceholders(value.cause, map);\n }\n if (value.name == 'AggregateError') {\n value.errors = replacePlaceholders(value.errors, map);\n } // break omitted\n case 'DOMException':\n if (ERROR_STACK_INSTALLABLE) {\n value.stack = replacePlaceholders(value.stack, map);\n }\n }\n\n mapSet(map, value, replacement || value);\n\n return replacement || value;\n};\n\nvar tryToTransfer = function (rawTransfer, map) {\n if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\n\n var transfer = [];\n\n iterate(rawTransfer, function (value) {\n push(transfer, anObject(value));\n });\n\n var i = 0;\n var length = lengthOfArrayLike(transfer);\n var buffers = [];\n var value, type, C, transferred, canvas, context;\n\n while (i < length) {\n value = transfer[i++];\n\n type = classof(value);\n\n if (type === 'ArrayBuffer') {\n push(buffers, value);\n continue;\n }\n\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n if (PROPER_TRANSFER) {\n transferred = nativeStructuredClone(value, { transfer: [value] });\n } else switch (type) {\n case 'ImageBitmap':\n C = global.OffscreenCanvas;\n if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n canvas = new C(value.width, value.height);\n context = canvas.getContext('bitmaprenderer');\n context.transferFromImageBitmap(value);\n transferred = canvas.transferToImageBitmap();\n } catch (error) { /* empty */ }\n break;\n case 'AudioData':\n case 'VideoFrame':\n if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\n try {\n transferred = value.clone();\n value.close();\n } catch (error) { /* empty */ }\n break;\n case 'MediaSourceHandle':\n case 'MessagePort':\n case 'OffscreenCanvas':\n case 'ReadableStream':\n case 'TransformStream':\n case 'WritableStream':\n throwUnpolyfillable(type, TRANSFERRING);\n }\n\n if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\n\n mapSet(map, value, transferred);\n }\n\n return buffers;\n};\n\nvar tryToTransferBuffers = function (transfer, map) {\n var i = 0;\n var length = lengthOfArrayLike(transfer);\n var value, transferred;\n\n while (i < length) {\n value = transfer[i++];\n\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\n\n if (PROPER_TRANSFER) {\n transferred = nativeStructuredClone(value, { transfer: [value] });\n } else {\n if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\n transferred = value.transfer();\n }\n\n mapSet(map, value, transferred);\n }\n};\n\n// `structuredClone` method\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\n structuredClone: function structuredClone(value /* , { transfer } */) {\n var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\n var transfer = options ? options.transfer : undefined;\n var transferredBuffers = false;\n var map, buffers;\n\n if (transfer !== undefined) {\n map = new Map();\n buffers = tryToTransfer(transfer, map);\n transferredBuffers = !!lengthOfArrayLike(buffers);\n }\n\n var clone = structuredCloneInternal(value, map, transferredBuffers);\n\n // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\n // https://github.com/zloirock/core-js/issues/1265\n if (transferredBuffers) {\n map = new Map();\n tryToTransferBuffers(transfer, map);\n clone = replacePlaceholders(clone, map);\n }\n\n return clone;\n }\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.structured-clone.js?")}),"./node_modules/core-js/modules/web.url-search-params.constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.array.iterator */ \"./node_modules/core-js/modules/es.array.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar call = __webpack_require__(/*! ../internals/function-call */ \"./node_modules/core-js/internals/function-call.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js/internals/url-constructor-detection.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \"./node_modules/core-js/internals/define-built-ins.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \"./node_modules/core-js/internals/iterator-create-constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \"./node_modules/core-js/internals/is-callable.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \"./node_modules/core-js/internals/get-iterator.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar arraySort = __webpack_require__(/*! ../internals/array-sort */ \"./node_modules/core-js/internals/array-sort.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var state = setInternalState(this, new URLSearchParamsState(init));\n if (!DESCRIPTORS) this.size = state.entries.length;\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 2);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n if (!DESCRIPTORS) this.length++;\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name /* , value */) {\n var state = getInternalParamsState(this);\n var length = validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index];\n if (entry.key === key && (value === undefined || entry.value === value)) {\n splice(entries, index, 1);\n if (value !== undefined) break;\n } else index++;\n }\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n var entries = getInternalParamsState(this).entries;\n validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name /* , value */) {\n var entries = getInternalParamsState(this).entries;\n var length = validateArgumentsLength(arguments.length, 1);\n var key = $toString(name);\n var $value = length < 2 ? undefined : arguments[1];\n var value = $value === undefined ? $value : $toString($value);\n var index = 0;\n while (index < entries.length) {\n var entry = entries[index++];\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n var state = getInternalParamsState(this);\n validateArgumentsLength(arguments.length, 1);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n if (!DESCRIPTORS) this.size = entries.length;\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n return getInternalParamsState(this).entries.length;\n },\n configurable: true,\n enumerable: true\n});\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.constructor.js?")}),"./node_modules/core-js/modules/web.url-search-params.delete.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.delete.js?")}),"./node_modules/core-js/modules/web.url-search-params.has.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.has.js?")}),"./node_modules/core-js/modules/web.url-search-params.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js/modules/web.url-search-params.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.js?")}),"./node_modules/core-js/modules/web.url-search-params.size.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.size.js?")}),"./node_modules/core-js/modules/web.url.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(/*! ../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \"./node_modules/core-js/internals/url-constructor-detection.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \"./node_modules/core-js/internals/function-bind-context.js\");\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \"./node_modules/core-js/internals/function-uncurry-this.js\");\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \"./node_modules/core-js/internals/define-built-in.js\");\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \"./node_modules/core-js/internals/define-built-in-accessor.js\");\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \"./node_modules/core-js/internals/an-instance.js\");\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \"./node_modules/core-js/internals/has-own-property.js\");\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \"./node_modules/core-js/internals/object-assign.js\");\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \"./node_modules/core-js/internals/array-slice-simple.js\");\nvar codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ \"./node_modules/core-js/internals/string-multibyte.js\").codeAt);\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \"./node_modules/core-js/internals/string-punycode-to-ascii.js\");\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \"./node_modules/core-js/internals/validate-arguments-length.js\");\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ \"./node_modules/core-js/modules/web.url-search-params.constructor.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.constructor.js?")}),"./node_modules/core-js/modules/web.url.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(/*! ../modules/web.url.constructor */ \"./node_modules/core-js/modules/web.url.constructor.js\");\n\n\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.js?")})});var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:false,exports:{}};__webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}(()=>{__webpack_require__.amdO={}})();(()=>{__webpack_require__.n=(module)=>{var getter=module&&module.__esModule?()=>(module['default']):()=>(module);__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.g=(function(){if(typeof globalThis==='object')return globalThis;try{return this||new Function('return this')()}catch(e){if(typeof window==='object')return window}})()})();(()=>{__webpack_require__.hmd=(module)=>{module=Object.create(module);if(!module.children)module.children=[];Object.defineProperty(module,'exports',{enumerable:true,set:()=>{throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: '+module.id);}});return module}})();(()=>{__webpack_require__.o=(obj,prop)=>(Object.prototype.hasOwnProperty.call(obj,prop))})();(()=>{__webpack_require__.r=(exports)=>{if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'})}Object.defineProperty(exports,'__esModule',{value:true})}})();var __webpack_exports__=__webpack_require__("./pdf.js")})(); \ No newline at end of file diff --git a/examples/dist/assets/DocxDemo-243dd9ae.js b/examples/dist/assets/DocxDemo-243dd9ae.js new file mode 100644 index 0000000..8d41d53 --- /dev/null +++ b/examples/dist/assets/DocxDemo-243dd9ae.js @@ -0,0 +1 @@ +import{d as r}from"./docx-a5ce9266.js";import{d as x}from"./url-de9b02cf.js";import{d as m,_ as l,r as u,o as h,w as v,a as _,c as g,b as D,e as y,f as w,g as B,u as O}from"./index-b78d7be5.js";import{P as R,u as f}from"./PreviewWrapper-bc249492.js";import"./_commonjs-dynamic-modules-302442b1.js";const $=m({name:"VueOfficeDocx",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(e,{emit:o}){const t=u(null);let n=null;function a(){let c=t.value;r.getData(e.src,e.requestOptions).then(async d=>{n=await r.getBlob(d),r.render(n,c,e.options).then(()=>{o("rendered")}).catch(p=>{r.render("",c,e.options),o("error",p)})}).catch(d=>{r.render("",c,e.options),o("error",d)})}h(()=>{e.src&&a()}),v(()=>e.src,()=>{e.src?a():r.render("",t.value,e.options).then(()=>{o("rendered")})});function s(c){x(c||`vue-office-docx-${new Date().getTime()}.docx`,n)}return{rootRef:t,save:s}}}),b={class:"vue-office-docx"},k={class:"vue-office-docx-main",ref:"rootRef"};function V(e,o,t,n,a,s){return _(),g("div",b,[D("div",k,null,512)])}const i=l($,[["render",V]]);i.install=function(e){e.component(i.name,i)};const E={__name:"DocxDemo",setup(e){function o(){f.hideLoading()}function t(s){console.log("出差",s),f.hideLoading()}const n=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.docx",a=u();return(s,c)=>(_(),y(R,{accept:".docx",placeholder:"请输入docx文件地址","default-src":n},{default:w(d=>[B(O(i),{ref_key:"docxRef",ref:a,src:d.src,style:{flex:"1",height:"0"},onRendered:o,onError:t},null,8,["src"])]),_:1}))}},P=l(E,[["__scopeId","data-v-637d9a60"]]);export{P as default}; diff --git a/examples/dist/assets/ExcelDemo-fdc4c054.js b/examples/dist/assets/ExcelDemo-fdc4c054.js new file mode 100644 index 0000000..7df7471 --- /dev/null +++ b/examples/dist/assets/ExcelDemo-fdc4c054.js @@ -0,0 +1 @@ +import{l as R,r as B,S as T,a as m,g as D,b as $,t as L,c as k}from"./hack-b5948294.js";import{d as q}from"./url-de9b02cf.js";import{d as F,_ as V,r as p,o as W,n as j,h as I,w as M,a as y,c as N,b as P,i as A,e as H,f as U,j as z,g as G,u as J}from"./index-b78d7be5.js";import{P as K,u as O}from"./PreviewWrapper-bc249492.js";import"./_commonjs-dynamic-modules-302442b1.js";const E={minColLength:20},Q=F({name:"VueOfficeExcel",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},options:{type:Object,default:()=>({...E})}},emits:["rendered","error"],setup(t,{emit:f}){console.log(t.options.transformData);const c=p(null),s=p(null);let n={_worksheets:[]},r=[],o=0,d=null,e=null,l=null,w=null;function _(i){w=i,$(i).then(u=>{if(!u._worksheets||u._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");let{workbookData:h,medias:g,workbookSource:a}=L(u,{...E,...t.options});t.options.transformData&&typeof t.options.transformData=="function"&&(h=t.options.transformData(h)),r=g,n=a,l=null,o=0,k(),e.loadData(h),m(d,r,n._worksheets[o],l),f("rendered")}).catch(u=>{console.warn(u),r=[],n={_worksheets:[]},k(),e&&e.loadData({}),f("error",u)})}const v=R.debounce(B,200).bind(this,s.value),b=new MutationObserver(v),S={attributes:!0,childList:!0,subtree:!0};W(()=>{j(()=>{b.observe(s.value,S),v(s),e=new T(s.value,{mode:"read",showToolbar:!1,showContextmenu:t.options.showContextmenu||!1,view:{height:()=>c.value&&c.value.clientHeight||300,width:()=>c.value&&c.value.clientWidth||1200},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60},autoFocus:!1}).loadData({});let i=e.bottombar.swapFunc;e.bottombar.swapFunc=function(a){i.call(e.bottombar,a),o=a,setTimeout(()=>{e.reRender(),m(d,r,n._worksheets[o],l)})};let u=e.sheet.editor.clear;e.sheet.editor.clear=function(...a){u.apply(e.sheet.editor,a),setTimeout(()=>{m(d,r,n._worksheets[o],l)})};let h=e.sheet.editor.setOffset;e.sheet.editor.setOffset=function(...a){h.apply(e.sheet.editor,a),l=a[0],m(d,r,n._worksheets[o],l)},d=s.value.querySelector("canvas").getContext("2d"),t.src&&D(t.src,t.requestOptions).then(_).catch(a=>{e.loadData({}),f("error",a)})})}),I(()=>{b.disconnect(),e=null}),M(()=>t.src,()=>{t.src?D(t.src,t.requestOptions).then(_).catch(i=>{e.loadData({}),f("error",i)}):e.loadData({})});function C(i){q(i||`vue-office-excel-${new Date().getTime()}.xlsx`,w)}return{wrapperRef:c,rootRef:s,save:C}}}),X={class:"vue-office-excel",ref:"wrapperRef"},Y={class:"vue-office-excel-main",ref:"rootRef"};function Z(t,f,c,s,n,r){return y(),N("div",X,[P("div",Y,null,512)],512)}const x=V(Q,[["render",Z]]);x.install=function(t){t.component(x.name,x)};const ne={__name:"ExcelDemo",setup(t){function f(){O.hideLoading()}function c(o){console.log("出差",o),O.hideLoading()}function s(o){return console.log("transformData",o),o}const n=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.xlsx",r=p();return(o,d)=>{const e=A("loading");return y(),H(K,{accept:".xlsx",placeholder:"请输入xlsx文件地址","default-src":n},{default:U(l=>[z(G(J(x),{ref_key:"docxRef",ref:r,src:l.src,options:{transformData:s},style:{flex:"1",height:"0"},onRendered:f,onError:c},null,8,["src","options"]),[[e,!0]])]),_:1})}}};export{ne as default}; diff --git a/examples/dist/assets/JsDocxDemo-359d071d.js b/examples/dist/assets/JsDocxDemo-359d071d.js new file mode 100644 index 0000000..3e8aba8 --- /dev/null +++ b/examples/dist/assets/JsDocxDemo-359d071d.js @@ -0,0 +1 @@ +var p=Object.defineProperty;var c=(i,e,t)=>e in i?p(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var r=(i,e,t)=>(c(i,typeof e!="symbol"?e+"":e,t),t);import{d as n}from"./docx-a5ce9266.js";import{d as l}from"./url-de9b02cf.js";import{r as h,o as d,a as u,c as m}from"./index-b78d7be5.js";import"./_commonjs-dynamic-modules-302442b1.js";class w{constructor(e,t={},s={}){r(this,"container",null);r(this,"wrapper",null);r(this,"wrapperMain",null);r(this,"options",{});r(this,"requestOptions",{});r(this,"fileData",null);this.container=e,this.options=t,this.requestOptions=s,this.createWrapper()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-docx",this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-docx-main",this.wrapper.appendChild(this.wrapperMain),this.container.appendChild(this.wrapper)}setOptions(e){this.options=e}setRequestOptions(e){this.requestOptions=e}preview(e){return new Promise((t,s)=>{n.getData(e,this.requestOptions).then(async o=>{this.fileData=await n.getBlob(o),n.render(this.fileData,this.wrapperMain,this.options).then(()=>{t()}).catch(a=>{n.render("",this.wrapperMain,this.options),s(a)})}).catch(o=>{n.render("",this.wrapperMain,this.options),s(o)})})}save(e){l(e||`js-preview-docx-${new Date().getTime()}.docx`,this.fileData)}destroy(){this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.options=null,this.requestOptions=null}}function f(i,e,t){return new w(i,e,t)}const v={init:f};const q={__name:"JsDocxDemo",setup(i){const e=h(null);return d(()=>{let t=v.init(e.value);t.preview("/vue-office/examples/dist/static/test-files/test.docx").then(s=>{console.log("docx preview done"),setTimeout(()=>{t.preview("/vue-office/examples/dist/static/test-files/test2.docx")},3e3)}).catch(s=>{console.log("err",s)})}),(t,s)=>(u(),m("div",{ref_key:"dom",ref:e},null,512))}};export{q as default}; diff --git a/examples/dist/assets/JsExcelDemo-fd7dad6f.js b/examples/dist/assets/JsExcelDemo-fd7dad6f.js new file mode 100644 index 0000000..9441673 --- /dev/null +++ b/examples/dist/assets/JsExcelDemo-fd7dad6f.js @@ -0,0 +1 @@ +var c=Object.defineProperty;var p=(r,e,t)=>e in r?c(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var s=(r,e,t)=>(p(r,typeof e!="symbol"?e+"":e,t),t);import{S as u,a as n,b as d,t as w,c as l,l as x,r as m,g as f}from"./hack-b5948294.js";import{d as k}from"./url-de9b02cf.js";/* empty css */import{r as v,o as b,a as S,c as D}from"./index-b78d7be5.js";import"./_commonjs-dynamic-modules-302442b1.js";const _={minColLength:20};class E{constructor(e,t={},i={}){s(this,"container",null);s(this,"wrapper",null);s(this,"wrapperMain",null);s(this,"options",{});s(this,"requestOptions",{});s(this,"mediasSource",[]);s(this,"workbookDataSource",{_worksheets:[]});s(this,"sheetIndex",1);s(this,"ctx",null);s(this,"xs",null);s(this,"offset",null);s(this,"observer",null);s(this,"fileData",null);this.container=e,this.options={..._,...t},this.requestOptions=i,this.createWrapper(),this.initSpreadsheet(),this.hack()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-excel",this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-excel-main",this.wrapper.appendChild(this.wrapperMain),this.container.appendChild(this.wrapper)}initSpreadsheet(){this.xs=new u(this.wrapperMain,{mode:"read",showToolbar:!1,showContextmenu:this.options.showContextmenu||!1,view:{height:()=>this.wrapper&&this.wrapper.clientHeight||300,width:()=>this.wrapper&&this.wrapper.clientWidth||1200},row:{height:24,len:100},col:{len:26,width:80,indexWidth:60,minWidth:60},autoFocus:!1}).loadData({});let e=this,t=this.xs.bottombar.swapFunc;this.xs.bottombar.swapFunc=function(a){t.call(e.xs.bottombar,a),e.sheetIndex=a+1,setTimeout(()=>{e.xs.reRender(),n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let i=this.xs.sheet.editor.clear;this.xs.sheet.editor.clear=function(...a){i.apply(e.xs.sheet.editor,a),setTimeout(()=>{n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)})};let o=this.xs.sheet.editor.setOffset;this.xs.sheet.editor.setOffset=function(...a){o.apply(e.xs.sheet.editor,a),e.offset=a[0],n(e.ctx,e.mediasSource,e.workbookDataSource._worksheets[e.sheetIndex],e.offset)};const h=this.wrapperMain.querySelector("canvas");this.ctx=h.getContext("2d")}renderExcel(e){return this.fileData=e,d(e).then(t=>{if(!t._worksheets||t._worksheets.length===0)throw new Error("未获取到数据,可能文件格式不正确或文件已损坏");const{workbookData:i,medias:o,workbookSource:h}=w(t,this.options);this.mediasSource=o,this.workbookDataSource=h,this.offset=null,this.sheetIndex=1,l(),this.xs.loadData(i),n(this.ctx,this.mediasSource,this.workbookDataSource._worksheets[this.sheetIndex],this.offset)}).catch(t=>(this.mediasSource=[],this.workbookDataSource={_worksheets:[]},l(),this.xs.loadData({}),Promise.reject(t)))}hack(){const e=x.debounce(m,200).bind(this,this.wrapperMain);this.observer=new MutationObserver(e);const t={attributes:!0,childList:!0,subtree:!0};this.observer.observe(this.wrapperMain,t),e(this.wrapperMain)}setOptions(e){this.options=e}setRequestOptions(e){this.requestOptions=e}preview(e){return new Promise((t,i)=>{f(e,this.requestOptions).then(o=>{this.renderExcel(o).then(t)}).catch(o=>{this.xs.loadData({}),i(o)})})}save(e){k(e||`js-preview-excel-${new Date().getTime()}.xlsx`,this.fileData)}destroy(){this.observer.disconnect(),this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.ctx=null,this.xs=null,this.observer=null,this.options=null,this.requestOptions=null,this.mediasSource=null,this.workbookDataSource=null}}function g(r,e,t){return new E(r,e,t)}const O={init:g},T={__name:"JsExcelDemo",setup(r){const e=v(null);return b(()=>{window.myExcelPreview=O.init(e.value,{}),window.myExcelPreview.preview("/vue-office/examples/dist/static/test-files/test.xlsx").then(t=>{console.log("excel preview done",window.myExcelPreview)}).catch(t=>{console.log("err",t)})}),(t,i)=>(S(),D("div",{ref_key:"dom",ref:e,style:{height:"calc(100vh - 50px)"}},null,512))}};export{T as default}; diff --git a/examples/dist/assets/JsPdfDemo-7be7abb1.js b/examples/dist/assets/JsPdfDemo-7be7abb1.js new file mode 100644 index 0000000..99fd7a3 --- /dev/null +++ b/examples/dist/assets/JsPdfDemo-7be7abb1.js @@ -0,0 +1 @@ +var V=Object.defineProperty;var y=(Z,I,g)=>I in Z?V(Z,I,{enumerable:!0,configurable:!0,writable:!0,value:g}):Z[I]=g;var c=(Z,I,g)=>(y(Z,typeof I!="symbol"?I+"":I,g),g);import{l as Y,g as u,d as i}from"./url-de9b02cf.js";import{o as L}from"./omit-65aca3ae.js";/* empty css */import{r as N,o as h,a as R,c as x}from"./index-b78d7be5.js";const s="KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlPXs3NzU3OihlLHQscik9Pnt2YXIgbixhO2Z1bmN0aW9uIGkoZSx0LHIpe3JldHVybih0PWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUsdCl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsInN0cmluZyIpO2lmKCJvYmplY3QiIT10eXBlb2YgbilyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybiBTdHJpbmcoZSl9KGUpO3JldHVybiJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0odCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gcyhlLHQpe2woZSx0KSx0LmFkZChlKX1mdW5jdGlvbiBvKGUsdCxyKXtpZighdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiByfWZ1bmN0aW9uIGMoZSx0LHIpe2woZSx0KSx0LnNldChlLHIpfWZ1bmN0aW9uIGwoZSx0KXtpZih0LmhhcyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdCIpfWZ1bmN0aW9uIGgoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5nZXQ/dC5nZXQuY2FsbChlKTp0LnZhbHVlfShlLGQoZSx0LCJnZXQiKSl9ZnVuY3Rpb24gdShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtpZih0LnNldCl0LnNldC5jYWxsKGUscik7ZWxzZXtpZighdC53cml0YWJsZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkIik7dC52YWx1ZT1yfX0oZSxkKGUsdCwic2V0Iikscikscn1mdW5jdGlvbiBkKGUsdCxyKXtpZighdC5oYXMoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvICIrcisiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlIik7cmV0dXJuIHQuZ2V0KGUpfXIoNTgzNykscigxNzAzKSxyKDk1NzUpLHIoMjQ3Mikscig4Njc1KSxyKDMxMDUpLHIoMzQwOCkscigyOTU4KSxyKDM0NjIpLHIoMzgyNCkscigyOTc0KSxyKDE0MzkpLHIoNzU4NSkscig1MzE1KSxyKDM5NDgpLHIoNzY1OCkscig4Njc0KSxyKDc3MjcpLHIoNDk0NCkscigzNzkyKSxyKDk3MTQpLHIoMTU1MCkscig0OTE2KSxyKDMxMjMpLHIoMTgxNykscig0NzIzKSxyKDYzMTQpLHIoNTMwNikscig3NjAxKSxyKDEyOTkpLHIoNzYzNSkscig4MjY0KSxyKDcyODcpLHIoOTc0MykscigyNzA3KSxyKDU1ODEpLHIoNzE0NSkscig2Njk5KSxyKDIwMjMpLHIoNjc1NSkscigyODUpLHIoMTYzNykscig2MjI5KSxyKDczMzApLHIoMjA2Mikscig4NzU3KSxyKDkxMzUpLHIoNDEyOSkscig2OTc3KSxyKDEwNTgpLHIoNDYwMykscig4NDUwKSxyKDQ2NzgpLHIoOTYwMSkscigyMjYyKSxyKDIwODcpLHIoNTQxKSxyKDMyMTApLHIoNTgyNykscig1NDM4KSxyKDgyNTUpLHIoNDE5Nykscig1MTI1KSxyKDQ1MDYpLHIoNTEwOSkscig2NDk1KSxyKDg4NjIpLHIoNzg1Mikscig3NzE0KSxyKDI4MDEpLHIoMTE3NCkscig3OTIyKSxlPXIuaG1kKGUpLG49Z2xvYmFsVGhpcyxhPSgpPT4oKCk9Pnt2YXIgZT1bLChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Xb3JrZXJUYXNrPXQuV29ya2VyTWVzc2FnZUhhbmRsZXI9dm9pZCAwLHIoMikscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpLHIoMTE2KSxyKDEyNikscigxMjgpLHIoMTMxKSxyKDEzMykscigxMzUpLHIoMTM3KSxyKDEzOSkscigxNDMpO3ZhciBuPXIoMTQ0KSxhPXIoMTQ5KSxpPXIoMTUwKSxzPXIoMTUyKSxvPXIoMTU2KSxjPXIoMjIyKSxsPXIoMjE2KSxoPXIoMjU3KSx1PXIoMjU4KTtjbGFzcyBke2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lLHRoaXMudGVybWluYXRlZD0hMSx0aGlzLl9jYXBhYmlsaXR5PW5ldyBuLlByb21pc2VDYXBhYmlsaXR5fWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX10LldvcmtlclRhc2s9ZDtjbGFzcyBme3N0YXRpYyBzZXR1cChlLHQpe2xldCByPSExO2Uub24oInRlc3QiLChmdW5jdGlvbih0KXtyfHwocj0hMCxlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl9KSksZS5vbigiY29uZmlndXJlIiwoZnVuY3Rpb24oZSl7KDAsbi5zZXRWZXJib3NpdHlMZXZlbCkoZS52ZXJib3NpdHkpfSkpLGUub24oIkdldERvY1JlcXVlc3QiLChmdW5jdGlvbihlKXtyZXR1cm4gZi5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KX0pKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IHIsZj0hMSxnPW51bGw7Y29uc3QgcD1uZXcgU2V0LG09KDAsbi5nZXRWZXJib3NpdHlMZXZlbCkoKSx7ZG9jSWQ6YixhcGlWZXJzaW9uOnl9PWUsdz0iMy45LjE3OSI7aWYoeSE9PXcpdGhyb3cgbmV3IEVycm9yKCdUaGUgQVBJIHZlcnNpb24gIicuY29uY2F0KHksJyIgZG9lcyBub3QgbWF0Y2ggdGhlIFdvcmtlciB2ZXJzaW9uICInKS5jb25jYXQodywnIi4nKSk7Y29uc3Qgdj1bXTtmb3IoY29uc3QgZSBpbltdKXYucHVzaChlKTtpZih2Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIit2LmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IHg9YisiX3dvcmtlciI7bGV0IFM9bmV3IGguTWVzc2FnZUhhbmRsZXIoeCxiLHQpO2Z1bmN0aW9uIEEoKXtpZihmKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9ZnVuY3Rpb24gayhlKXtwLmFkZChlKX1mdW5jdGlvbiBDKGUpe2UuZmluaXNoKCkscC5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gTyhlKXthd2FpdCByLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKSxhd2FpdCByLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKSxhd2FpdCByLmVuc3VyZURvYygicGFyc2UiLFtlXSksYXdhaXQgci5lbnN1cmVEb2MoImNoZWNrRmlyc3RQYWdlIixbZV0pLGF3YWl0IHIuZW5zdXJlRG9jKCJjaGVja0xhc3RQYWdlIixbZV0pO2NvbnN0IHQ9YXdhaXQgci5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IGQoImxvYWRYZmFGb250cyIpO2soZSksYXdhaXQgUHJvbWlzZS5hbGwoW3IubG9hZFhmYUZvbnRzKFMsZSkuY2F0Y2goKGU9Pnt9KSkudGhlbigoKCk9PkMoZSkpKSxyLmxvYWRYZmFJbWFnZXMoKV0pfWNvbnN0W24sYV09YXdhaXQgUHJvbWlzZS5hbGwoW3IuZW5zdXJlRG9jKCJudW1QYWdlcyIpLHIuZW5zdXJlRG9jKCJmaW5nZXJwcmludHMiKV0pO3JldHVybntudW1QYWdlczpuLGZpbmdlcnByaW50czphLGh0bWxGb3JYZmE6dD9hd2FpdCByLmVuc3VyZURvYygiaHRtbEZvclhmYSIpOm51bGx9fXJldHVybiBTLm9uKCJHZXRQYWdlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZ2V0UGFnZShlLnBhZ2VJbmRleCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFtyLmVuc3VyZShlLCJyb3RhdGUiKSxyLmVuc3VyZShlLCJyZWYiKSxyLmVuc3VyZShlLCJ1c2VyVW5pdCIpLHIuZW5zdXJlKGUsInZpZXciKV0pLnRoZW4oKGZ1bmN0aW9uKGUpe2xldFt0LHIsbixhXT1lO3JldHVybntyb3RhdGU6dCxyZWY6cix1c2VyVW5pdDpuLHZpZXc6YX19KSl9KSl9KSksUy5vbigiR2V0UGFnZUluZGV4IiwoZnVuY3Rpb24oZSl7Y29uc3QgdD1pLlJlZi5nZXQoZS5udW0sZS5nZW4pO3JldHVybiByLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3RdKX0pKSxTLm9uKCJHZXREZXN0aW5hdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pKSxTLm9uKCJHZXREZXN0aW5hdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZS5pZF0pfSkpLFMub24oIkdldFBhZ2VMYWJlbHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KSksUy5vbigiR2V0UGFnZUxheW91dCIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coInBhZ2VMYXlvdXQiKX0pKSxTLm9uKCJHZXRQYWdlTW9kZSIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KSksUy5vbigiR2V0Vmlld2VyUHJlZmVyZW5jZXMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSkpLFMub24oIkdldE9wZW5BY3Rpb24iLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KSksUy5vbigiR2V0QXR0YWNobWVudHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSkpLFMub24oIkdldEphdmFTY3JpcHQiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJqYXZhU2NyaXB0Iil9KSksUy5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSksUy5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe2xldHtwYWdlSW5kZXg6dH09ZTtyZXR1cm4gci5nZXRQYWdlKHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZShlLCJqc0FjdGlvbnMiKX0pKX0pKSxTLm9uKCJHZXRPdXRsaW5lIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lIil9KSksUy5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KSksUy5vbigiR2V0UGVybWlzc2lvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJwZXJtaXNzaW9ucyIpfSkpLFMub24oIkdldE1ldGFkYXRhIiwoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFtyLmVuc3VyZURvYygiZG9jdW1lbnRJbmZvIiksci5lbnN1cmVDYXRhbG9nKCJtZXRhZGF0YSIpXSl9KSksUy5vbigiR2V0TWFya0luZm8iLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVDYXRhbG9nKCJtYXJrSW5mbyIpfSkpLFMub24oIkdldERhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gci5yZXF1ZXN0TG9hZGVkU3RyZWFtKCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYnl0ZXN9KSl9KSksUy5vbigiR2V0QW5ub3RhdGlvbnMiLChmdW5jdGlvbihlKXtsZXR7cGFnZUluZGV4OnQsaW50ZW50Om59PWU7cmV0dXJuIHIuZ2V0UGFnZSh0KS50aGVuKChmdW5jdGlvbihlKXtjb25zdCByPW5ldyBkKCJHZXRBbm5vdGF0aW9uczogcGFnZSAiLmNvbmNhdCh0KSk7cmV0dXJuIGsociksZS5nZXRBbm5vdGF0aW9uc0RhdGEoUyxyLG4pLnRoZW4oKGU9PihDKHIpLGUpKSwoZT0+e3Rocm93IEMociksZX0pKX0pKX0pKSxTLm9uKCJHZXRGaWVsZE9iamVjdHMiLChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpfSkpLFMub24oIkhhc0pTQWN0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KSksUy5vbigiR2V0Q2FsY3VsYXRpb25PcmRlcklkcyIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmVuc3VyZURvYygiY2FsY3VsYXRpb25PcmRlcklkcyIpfSkpLFMub24oIlNhdmVEb2N1bWVudCIsKGFzeW5jIGZ1bmN0aW9uKGUpe2xldHtpc1B1cmVYZmE6dCxudW1QYWdlczpzLGFubm90YXRpb25TdG9yYWdlOmMsZmlsZW5hbWU6aH09ZTtjb25zdCB1PVtyLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLHIuZW5zdXJlRG9jKCJzdGFydFhSZWYiKSxyLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpXSxmPXQ/bnVsbDooMCxhLmdldE5ld0Fubm90YXRpb25zTWFwKShjKSxnPWF3YWl0IHIuZW5zdXJlRG9jKCJ4cmVmIik7aWYoZil7Y29uc3QgZT1vLkFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGMudmFsdWVzKCksZyxyLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpO2Zvcihjb25zdFt0LG5db2YgZil1LnB1c2goci5nZXRQYWdlKHQpLnRoZW4oKHI9Pntjb25zdCBhPW5ldyBkKCJTYXZlIChlZGl0b3IpOiBwYWdlICIuY29uY2F0KHQpKTtyZXR1cm4gci5zYXZlTmV3QW5ub3RhdGlvbnMoUyxhLG4sZSkuZmluYWxseSgoZnVuY3Rpb24oKXtDKGEpfSkpfSkpKX1pZih0KXUucHVzaChyLnNlcmlhbGl6ZVhmYURhdGEoYykpO2Vsc2UgZm9yKGxldCBlPTA7ZTxzO2UrKyl1LnB1c2goci5nZXRQYWdlKGUpLnRoZW4oKGZ1bmN0aW9uKHQpe2NvbnN0IHI9bmV3IGQoIlNhdmU6IHBhZ2UgIi5jb25jYXQoZSkpO3JldHVybiB0LnNhdmUoUyxyLGMpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7QyhyKX0pKX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oKGZ1bmN0aW9uKGUpe2xldFtyLGEscyxvLGMsLi4udV09ZSxkPVtdLGY9bnVsbDtpZih0KXtpZihmPXVbMF0sIWYpcmV0dXJuIHIuYnl0ZXN9ZWxzZSBpZihkPXUuZmxhdCgyKSwwPT09ZC5sZW5ndGgpcmV0dXJuIHIuYnl0ZXM7Y29uc3QgcD1zJiZhIGluc3RhbmNlb2YgaS5EaWN0JiZkLnNvbWUoKGU9PmUubmVlZEFwcGVhcmFuY2VzKSksbT1hIGluc3RhbmNlb2YgaS5EaWN0JiZhLmdldCgiWEZBIil8fG51bGw7bGV0IGI9bnVsbCx5PSExO2lmKEFycmF5LmlzQXJyYXkobSkpe2ZvcihsZXQgZT0wLHQ9bS5sZW5ndGg7ZTx0O2UrPTIpImRhdGFzZXRzIj09PW1bZV0mJihiPW1bZSsxXSx5PSEwKTtudWxsPT09YiYmKGI9Zy5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBtJiYoMCxuLndhcm4pKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgdz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGcudHJhaWxlcil7dmFyIHY7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9Zy50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuZm9yRWFjaCgoKHQscik9Pnsic3RyaW5nIj09dHlwZW9mIHImJihlW3RdPSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIpKX0pKSx3PXtyb290UmVmOmcudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbCxlbmNyeXB0UmVmOmcudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6Zy5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOmcudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvOmUsZmlsZUlkczpnLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjpjP286bnVsbCE9PSh2PWcubGFzdFhSZWZTdHJlYW1Qb3MpJiZ2b2lkIDAhPT12P3Y6byxmaWxlbmFtZTpofX1yZXR1cm4oMCxsLmluY3JlbWVudGFsVXBkYXRlKSh7b3JpZ2luYWxEYXRhOnIuYnl0ZXMseHJlZkluZm86dyxuZXdSZWZzOmQseHJlZjpnLGhhc1hmYTohIW0seGZhRGF0YXNldHNSZWY6YixoYXNYZmFEYXRhc2V0c0VudHJ5OnksbmVlZEFwcGVhcmFuY2VzOnAsYWNyb0Zvcm1SZWY6cyxhY3JvRm9ybTphLHhmYURhdGE6Zn0pLmZpbmFsbHkoKCgpPT57Zy5yZXNldE5ld1RlbXBvcmFyeVJlZigpfSkpfSkpfSkpLFMub24oIkdldE9wZXJhdG9yTGlzdCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3QgYT1lLnBhZ2VJbmRleDtyLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24ocil7Y29uc3QgaT1uZXcgZCgiR2V0T3BlcmF0b3JMaXN0OiBwYWdlICIuY29uY2F0KGEpKTtrKGkpO2NvbnN0IHM9bT49bi5WZXJib3NpdHlMZXZlbC5JTkZPUz9EYXRlLm5vdygpOjA7ci5nZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6UyxzaW5rOnQsdGFzazppLGludGVudDplLmludGVudCxjYWNoZUtleTplLmNhY2hlS2V5LGFubm90YXRpb25TdG9yYWdlOmUuYW5ub3RhdGlvblN0b3JhZ2V9KS50aGVuKChmdW5jdGlvbihlKXtDKGkpLHMmJigwLG4uaW5mbykoInBhZ2U9Ii5jb25jYXQoYSsxLCIgLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9IikuY29uY2F0KERhdGUubm93KCktcywibXMsIGxlbj0iKS5jb25jYXQoZS5sZW5ndGgpKSx0LmNsb3NlKCl9KSwoZnVuY3Rpb24oZSl7QyhpKSxpLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KSl9KSl9KSksUy5vbigiR2V0VGV4dENvbnRlbnQiLChmdW5jdGlvbihlLHQpe2NvbnN0e3BhZ2VJbmRleDphLGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246c309ZTtyLmdldFBhZ2UoYSkudGhlbigoZnVuY3Rpb24oZSl7Y29uc3Qgcj1uZXcgZCgiR2V0VGV4dENvbnRlbnQ6IHBhZ2UgIithKTtrKHIpO2NvbnN0IG89bT49bi5WZXJib3NpdHlMZXZlbC5JTkZPUz9EYXRlLm5vdygpOjA7ZS5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6Uyx0YXNrOnIsc2luazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmksZGlzYWJsZU5vcm1hbGl6YXRpb246c30pLnRoZW4oKGZ1bmN0aW9uKCl7QyhyKSxvJiYoMCxuLmluZm8pKCJwYWdlPSIuY29uY2F0KGErMSwiIC0gZ2V0VGV4dENvbnRlbnQ6IHRpbWU9IikrKERhdGUubm93KCktbykrIm1zIiksdC5jbG9zZSgpfSksKGZ1bmN0aW9uKGUpe0Mociksci50ZXJtaW5hdGVkfHx0LmVycm9yKGUpfSkpfSkpfSkpLFMub24oIkdldFN0cnVjdFRyZWUiLChmdW5jdGlvbihlKXtyZXR1cm4gci5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gci5lbnN1cmUoZSwiZ2V0U3RydWN0VHJlZSIpfSkpfSkpLFMub24oIkZvbnRGYWxsYmFjayIsKGZ1bmN0aW9uKGUpe3JldHVybiByLmZvbnRGYWxsYmFjayhlLmlkLFMpfSkpLFMub24oIkNsZWFudXAiLChmdW5jdGlvbihlKXtyZXR1cm4gci5jbGVhbnVwKCEwKX0pKSxTLm9uKCJUZXJtaW5hdGUiLChmdW5jdGlvbihlKXtmPSEwO2NvbnN0IHQ9W107aWYocil7ci50ZXJtaW5hdGUobmV3IG4uQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1yLmNsZWFudXAoKTt0LnB1c2goZSkscj1udWxsfWVsc2UoMCxjLmNsZWFyR2xvYmFsQ2FjaGVzKSgpO2cmJmcobmV3IG4uQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Zm9yKGNvbnN0IGUgb2YgcCl0LnB1c2goZS5maW5pc2hlZCksZS50ZXJtaW5hdGUoKTtyZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXtTLmRlc3Ryb3koKSxTPW51bGx9KSl9KSksUy5vbigiUmVhZHkiLChmdW5jdGlvbih0KXshZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtBKCksUy5zZW5kKCJHZXREb2MiLHtwZGZJbmZvOmV9KX1mdW5jdGlvbiBpKGUpe2lmKEEoKSxlIGluc3RhbmNlb2Ygbi5QYXNzd29yZEV4Y2VwdGlvbil7Y29uc3QgdD1uZXcgZCgiUGFzc3dvcmRFeGNlcHRpb246IHJlc3BvbnNlICIuY29uY2F0KGUuY29kZSkpO2sodCksUy5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbigoZnVuY3Rpb24oZSl7bGV0e3Bhc3N3b3JkOm59PWU7Qyh0KSxyLnVwZGF0ZVBhc3N3b3JkKG4pLG8oKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtDKHQpLFMuc2VuZCgiRG9jRXhjZXB0aW9uIixlKX0pKX1lbHNlIGUgaW5zdGFuY2VvZiBuLkludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBuLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIG4uVW5rbm93bkVycm9yRXhjZXB0aW9uP1Muc2VuZCgiRG9jRXhjZXB0aW9uIixlKTpTLnNlbmQoIkRvY0V4Y2VwdGlvbiIsbmV3IG4uVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpKX1mdW5jdGlvbiBvKCl7QSgpLE8oITEpLnRoZW4odCwoZnVuY3Rpb24oZSl7QSgpLGUgaW5zdGFuY2VvZiBhLlhSZWZQYXJzZUV4Y2VwdGlvbj9yLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbigpe0EoKSxPKCEwKS50aGVuKHQsaSl9KSk6aShlKX0pKX1BKCksZnVuY3Rpb24oZSl7bGV0e2RhdGE6dCxwYXNzd29yZDpyLGRpc2FibGVBdXRvRmV0Y2g6aSxyYW5nZUNodW5rU2l6ZTpvLGxlbmd0aDpjLGRvY0Jhc2VVcmw6bCxlbmFibGVYZmE6aCxldmFsdWF0b3JPcHRpb25zOmR9PWU7Y29uc3QgZj17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bCxkb2NJZDpiLGVuYWJsZVhmYTpoLGV2YWx1YXRvck9wdGlvbnM6ZCxoYW5kbGVyOlMsbGVuZ3RoOmMscGFzc3dvcmQ6cixyYW5nZUNodW5rU2l6ZTpvfSxwPW5ldyBuLlByb21pc2VDYXBhYmlsaXR5O2xldCBtO2lmKHQpe3RyeXtmLnNvdXJjZT10LG09bmV3IHMuTG9jYWxQZGZNYW5hZ2VyKGYpLHAucmVzb2x2ZShtKX1jYXRjaChlKXtwLnJlamVjdChlKX1yZXR1cm4gcC5wcm9taXNlfWxldCB5LHc9W107dHJ5e3k9bmV3IHUuUERGV29ya2VyU3RyZWFtKFMpfWNhdGNoKGUpe3JldHVybiBwLnJlamVjdChlKSxwLnByb21pc2V9Y29uc3Qgdj15LmdldEZ1bGxSZWFkZXIoKTt2LmhlYWRlcnNSZWFkeS50aGVuKChmdW5jdGlvbigpe2lmKHYuaXNSYW5nZVN1cHBvcnRlZCl7Zi5zb3VyY2U9eSxmLmxlbmd0aD12LmNvbnRlbnRMZW5ndGgsZi5kaXNhYmxlQXV0b0ZldGNofHwoZi5kaXNhYmxlQXV0b0ZldGNoPXYuaXNTdHJlYW1pbmdTdXBwb3J0ZWQpLG09bmV3IHMuTmV0d29ya1BkZk1hbmFnZXIoZik7Zm9yKGNvbnN0IGUgb2YgdyltLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7dz1bXSxwLnJlc29sdmUobSksZz1udWxsfX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5yZWplY3QoZSksZz1udWxsfSkpO2xldCB4PTA7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe3YucmVhZCgpLnRoZW4oKGZ1bmN0aW9uIGUocil7bGV0e3ZhbHVlOmksZG9uZTpvfT1yO3RyeXtpZihBKCksbylyZXR1cm4gbXx8ZnVuY3Rpb24oKXtjb25zdCBlPSgwLGEuYXJyYXlCdWZmZXJzVG9CeXRlcykodyk7YyYmZS5sZW5ndGghPT1jJiYoMCxuLndhcm4pKCJyZXBvcnRlZCBIVFRQIGxlbmd0aCBpcyBkaWZmZXJlbnQgZnJvbSBhY3R1YWwiKTt0cnl7Zi5zb3VyY2U9ZSxtPW5ldyBzLkxvY2FsUGRmTWFuYWdlcihmKSxwLnJlc29sdmUobSl9Y2F0Y2goZSl7cC5yZWplY3QoZSl9dz1bXX0oKSx2b2lkKGc9bnVsbCk7eCs9aS5ieXRlTGVuZ3RoLHYuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fFMuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6eCx0b3RhbDpNYXRoLm1heCh4LHYuY29udGVudExlbmd0aHx8MCl9KSxtP20uc2VuZFByb2dyZXNzaXZlRGF0YShpKTp3LnB1c2goaSksdi5yZWFkKCkudGhlbihlLHQpfWNhdGNoKHIpe3Qocil9fSksdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucmVqZWN0KGUpLGc9bnVsbH0pKSxnPWZ1bmN0aW9uKGUpe3kuY2FuY2VsQWxsUmVxdWVzdHMoZSl9LHAucHJvbWlzZX0oZSkudGhlbigoZnVuY3Rpb24oZSl7aWYoZil0aHJvdyBlLnRlcm1pbmF0ZShuZXcgbi5BYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKSxuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpO3I9ZSxyLnJlcXVlc3RMb2FkZWRTdHJlYW0oITApLnRoZW4oKGU9PntTLnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9KSl9KSkudGhlbihvLGkpfShlKSxlPW51bGx9KSkseH1zdGF0aWMgaW5pdGlhbGl6ZUZyb21Qb3J0KGUpe2NvbnN0IHQ9bmV3IGguTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO2Yuc2V0dXAodCxlKSx0LnNlbmQoInJlYWR5IixudWxsKX19dC5Xb3JrZXJNZXNzYWdlSGFuZGxlcj1mLCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93JiYhbi5pc05vZGVKUyYmInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5wb3N0TWVzc2FnZSYmIm9ubWVzc2FnZSJpbiBlfShzZWxmKSYmZi5pbml0aWFsaXplRnJvbVBvcnQoc2VsZil9LChlLHQscik9Pnt2YXIgbj1yKDMpLGE9cig0KSxpPXIoNjkpLHM9cig3MCksbz0iV2ViQXNzZW1ibHkiLGM9YVtvXSxsPTchPT1FcnJvcigiZSIse2NhdXNlOjd9KS5jYXVzZSxoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cltlXT1zKGUsdCxsKSxuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6MSxmb3JjZWQ6bH0scil9LHU9ZnVuY3Rpb24oZSx0KXtpZihjJiZjW2VdKXt2YXIgcj17fTtyW2VdPXMobysiLiIrZSx0LGwpLG4oe3RhcmdldDpvLHN0YXQ6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6MSxmb3JjZWQ6bH0scil9fTtoKCJFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiRXZhbEVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxoKCJSYW5nZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxoKCJSZWZlcmVuY2VFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiU3ludGF4RXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLGgoIlR5cGVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiVVJJRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLHUoIkNvbXBpbGVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksdSgiTGlua0Vycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSx1KCJSdW50aW1lRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpfSwoZSx0LHIpPT57dmFyIG49cig0KSxhPXIoNSkuZixpPXIoNDQpLHM9cig0OCksbz1yKDM4KSxjPXIoNTYpLGw9cig2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsaCx1LGQsZixnPWUudGFyZ2V0LHA9ZS5nbG9iYWwsbT1lLnN0YXQ7aWYocj1wP246bT9uW2ddfHxvKGcse30pOihuW2ddfHx7fSkucHJvdG90eXBlKWZvcihoIGluIHQpe2lmKGQ9dFtoXSx1PWUuZG9udENhbGxHZXRTZXQ/KGY9YShyLGgpKSYmZi52YWx1ZTpyW2hdLCFsKHA/aDpnKyhtPyIuIjoiIyIpK2gsZS5mb3JjZWQpJiZ2b2lkIDAhPT11KXtpZih0eXBlb2YgZD09dHlwZW9mIHUpY29udGludWU7YyhkLHUpfShlLnNoYW18fHUmJnUuc2hhbSkmJmkoZCwic2hhbSIsITApLHMocixoLGQsZSl9fX0sZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09TWF0aCYmZX07ZS5leHBvcnRzPXQoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8dCgib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93KXx8dCgib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHx0KCJvYmplY3QiPT10eXBlb2Ygci5nJiZyLmcpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHx0aGlzfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSwoZSx0LHIpPT57dmFyIG49cig2KSxhPXIoOCksaT1yKDEwKSxzPXIoMTEpLG89cigxMiksYz1yKDE4KSxsPXIoMzkpLGg9cig0MiksdT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1uP3U6ZnVuY3Rpb24oZSx0KXtpZihlPW8oZSksdD1jKHQpLGgpdHJ5e3JldHVybiB1KGUsdCl9Y2F0Y2goZSl7fWlmKGwoZSx0KSlyZXR1cm4gcyghYShpLmYsZSx0KSxlW3RdKX19LChlLHQscik9Pnt2YXIgbj1yKDcpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSxlPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4hIWUoKX1jYXRjaChlKXtyZXR1cm4hMH19fSwoZSx0LHIpPT57dmFyIG49cig5KSxhPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO2UuZXhwb3J0cz1uP2EuYmluZChhKTpmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGEsYXJndW1lbnRzKX19LChlLHQscik9Pnt2YXIgbj1yKDcpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pKX0sKGUsdCk9Pnt2YXIgcj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsYT1uJiYhci5jYWxsKHsxOjJ9LDEpO3QuZj1hP2Z1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06cn0sZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZlKSxjb25maWd1cmFibGU6ISgyJmUpLHdyaXRhYmxlOiEoNCZlKSx2YWx1ZTp0fX19LChlLHQscik9Pnt2YXIgbj1yKDEzKSxhPXIoMTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihhKGUpKX19LChlLHQscik9Pnt2YXIgbj1yKDE0KSxhPXIoNyksaT1yKDE1KSxzPU9iamVjdCxvPW4oIiIuc3BsaXQpO2UuZXhwb3J0cz1hKChmdW5jdGlvbigpe3JldHVybiFzKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24oZSl7cmV0dXJuIlN0cmluZyI9PWkoZSk/byhlLCIiKTpzKGUpfTpzfSwoZSx0LHIpPT57dmFyIG49cig5KSxhPUZ1bmN0aW9uLnByb3RvdHlwZSxpPWEuY2FsbCxzPW4mJmEuYmluZC5iaW5kKGksaSk7ZS5leHBvcnRzPW4/czpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaS5hcHBseShlLGFyZ3VtZW50cyl9fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9bih7fS50b1N0cmluZyksaT1uKCIiLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoYShlKSw4LC0xKX19LChlLHQscik9Pnt2YXIgbj1yKDE3KSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSl0aHJvdyBhKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZX19LChlLHQscik9Pnt2YXIgbj1yKDE5KSxhPXIoMjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsInN0cmluZyIpO3JldHVybiBhKHQpP3Q6dCsiIn19LChlLHQscik9Pnt2YXIgbj1yKDgpLGE9cigyMCksaT1yKDIzKSxzPXIoMzApLG89cigzMyksYz1yKDM0KSxsPVR5cGVFcnJvcixoPWMoInRvUHJpbWl0aXZlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIWEoZSl8fGkoZSkpcmV0dXJuIGU7dmFyIHIsYz1zKGUsaCk7aWYoYyl7aWYodm9pZCAwPT09dCYmKHQ9ImRlZmF1bHQiKSxyPW4oYyxlLHQpLCFhKHIpfHxpKHIpKXJldHVybiByO3Rocm93IGwoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT10JiYodD0ibnVtYmVyIiksbyhlLHQpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMjEpLGE9cigyMiksaT1hLmFsbDtlLmV4cG9ydHM9YS5JU19IVE1MRERBP2Z1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTpuKGUpfHxlPT09aX06ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOm4oZSl9fSwoZSx0LHIpPT57dmFyIG49cigyMiksYT1uLmFsbDtlLmV4cG9ydHM9bi5JU19IVE1MRERBP2Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfHxlPT09YX06ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9fSxlPT57dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsLHI9dm9pZCAwPT09dCYmdm9pZCAwIT09dDtlLmV4cG9ydHM9e2FsbDp0LElTX0hUTUxEREE6cn19LChlLHQscik9Pnt2YXIgbj1yKDI0KSxhPXIoMjEpLGk9cigyNSkscz1yKDI2KSxvPU9iamVjdDtlLmV4cG9ydHM9cz9mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3ZhciB0PW4oIlN5bWJvbCIpO3JldHVybiBhKHQpJiZpKHQucHJvdG90eXBlLG8oZSkpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNCksYT1yKDIxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyPyhyPW5bZV0sYShyKT9yOnZvaWQgMCk6bltlXSYmbltlXVt0XTt2YXIgcn19LChlLHQscik9Pnt2YXIgbj1yKDE0KTtlLmV4cG9ydHM9bih7fS5pc1Byb3RvdHlwZU9mKX0sKGUsdCxyKT0+e3ZhciBuPXIoMjcpO2UuZXhwb3J0cz1uJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSwoZSx0LHIpPT57dmFyIG49cigyOCksYT1yKDcpLGk9cig0KS5TdHJpbmc7ZS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIWEoKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCk7cmV0dXJuIWkoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJm4mJm48NDF9KSl9LChlLHQscik9Pnt2YXIgbixhLGk9cig0KSxzPXIoMjkpLG89aS5wcm9jZXNzLGM9aS5EZW5vLGw9byYmby52ZXJzaW9uc3x8YyYmYy52ZXJzaW9uLGg9bCYmbC52ODtoJiYoYT0obj1oLnNwbGl0KCIuIikpWzBdPjAmJm5bMF08ND8xOisoblswXStuWzFdKSksIWEmJnMmJighKG49cy5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fG5bMV0+PTc0KSYmKG49cy5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKGE9K25bMV0pLGUuZXhwb3J0cz1hfSxlPT57ZS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCl8fCIifSwoZSx0LHIpPT57dmFyIG49cigzMSksYT1yKDE3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lW3RdO3JldHVybiBhKHIpP3ZvaWQgMDpuKHIpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMjEpLGE9cigzMiksaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgaShhKGUpKyIgaXMgbm90IGEgZnVuY3Rpb24iKX19LGU9Pnt2YXIgdD1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gdChlKX1jYXRjaChlKXtyZXR1cm4iT2JqZWN0In19fSwoZSx0LHIpPT57dmFyIG49cig4KSxhPXIoMjEpLGk9cigyMCkscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbztpZigic3RyaW5nIj09PXQmJmEocj1lLnRvU3RyaW5nKSYmIWkobz1uKHIsZSkpKXJldHVybiBvO2lmKGEocj1lLnZhbHVlT2YpJiYhaShvPW4ocixlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZhKHI9ZS50b1N0cmluZykmJiFpKG89bihyLGUpKSlyZXR1cm4gbzt0aHJvdyBzKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LChlLHQscik9Pnt2YXIgbj1yKDQpLGE9cigzNSksaT1yKDM5KSxzPXIoNDEpLG89cigyNyksYz1yKDI2KSxsPW4uU3ltYm9sLGg9YSgid2tzIiksdT1jP2wuZm9yfHxsOmwmJmwud2l0aG91dFNldHRlcnx8cztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoaCxlKXx8KGhbZV09byYmaShsLGUpP2xbZV06dSgiU3ltYm9sLiIrZSkpLGhbZV19fSwoZSx0LHIpPT57dmFyIG49cigzNiksYT1yKDM3KTsoZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFbZV18fChhW2VdPXZvaWQgMCE9PXQ/dDp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjMxLjEiLG1vZGU6bj8icHVyZSI6Imdsb2JhbCIsY29weXJpZ2h0OiLCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzEuMS9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSxlPT57ZS5leHBvcnRzPSExfSwoZSx0LHIpPT57dmFyIG49cig0KSxhPXIoMzgpLGk9Il9fY29yZS1qc19zaGFyZWRfXyIscz1uW2ldfHxhKGkse30pO2UuZXhwb3J0cz1zfSwoZSx0LHIpPT57dmFyIG49cig0KSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7YShuLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gocil7bltlXT10fXJldHVybiB0fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9cig0MCksaT1uKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShhKGUpLHQpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTYpLGE9T2JqZWN0O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShuKGUpKX19LChlLHQscik9Pnt2YXIgbj1yKDE0KSxhPTAsaT1NYXRoLnJhbmRvbSgpLHM9bigxLi50b1N0cmluZyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09ZT8iIjplKSsiKV8iK3MoKythK2ksMzYpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNiksYT1yKDcpLGk9cig0Myk7ZS5leHBvcnRzPSFuJiYhYSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoNCksYT1yKDIwKSxpPW4uZG9jdW1lbnQscz1hKGkpJiZhKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LChlLHQscik9Pnt2YXIgbj1yKDYpLGE9cig0NSksaT1yKDExKTtlLmV4cG9ydHM9bj9mdW5jdGlvbihlLHQscil7cmV0dXJuIGEuZihlLHQsaSgxLHIpKX06ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlW3RdPXIsZX19LChlLHQscik9Pnt2YXIgbj1yKDYpLGE9cig0MiksaT1yKDQ2KSxzPXIoNDcpLG89cigxOCksYz1UeXBlRXJyb3IsbD1PYmplY3QuZGVmaW5lUHJvcGVydHksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHU9ImVudW1lcmFibGUiLGQ9ImNvbmZpZ3VyYWJsZSIsZj0id3JpdGFibGUiO3QuZj1uP2k/ZnVuY3Rpb24oZSx0LHIpe2lmKHMoZSksdD1vKHQpLHMociksImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIHImJmYgaW4gciYmIXJbZl0pe3ZhciBuPWgoZSx0KTtuJiZuW2ZdJiYoZVt0XT1yLnZhbHVlLHI9e2NvbmZpZ3VyYWJsZTpkIGluIHI/cltkXTpuW2RdLGVudW1lcmFibGU6dSBpbiByP3JbdV06blt1XSx3cml0YWJsZTohMX0pfXJldHVybiBsKGUsdCxyKX06bDpmdW5jdGlvbihlLHQscil7aWYocyhlKSx0PW8odCkscyhyKSxhKXRyeXtyZXR1cm4gbChlLHQscil9Y2F0Y2goZSl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IGMoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIHImJihlW3RdPXIudmFsdWUpLGV9fSwoZSx0LHIpPT57dmFyIG49cig2KSxhPXIoNyk7ZS5leHBvcnRzPW4mJmEoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSwoZSx0LHIpPT57dmFyIG49cigyMCksYT1TdHJpbmcsaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgaShhKGUpKyIgaXMgbm90IGFuIG9iamVjdCIpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMjEpLGE9cig0NSksaT1yKDQ5KSxzPXIoMzgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixvKXtvfHwobz17fSk7dmFyIGM9by5lbnVtZXJhYmxlLGw9dm9pZCAwIT09by5uYW1lP28ubmFtZTp0O2lmKG4ocikmJmkocixsLG8pLG8uZ2xvYmFsKWM/ZVt0XT1yOnModCxyKTtlbHNle3RyeXtvLnVuc2FmZT9lW3RdJiYoYz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWM/ZVt0XT1yOmEuZihlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IW8ubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFvLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSwoZSx0LHIpPT57dmFyIG49cigxNCksYT1yKDcpLGk9cigyMSkscz1yKDM5KSxvPXIoNiksYz1yKDUwKS5DT05GSUdVUkFCTEUsbD1yKDUxKSxoPXIoNTIpLHU9aC5lbmZvcmNlLGQ9aC5nZXQsZj1TdHJpbmcsZz1PYmplY3QuZGVmaW5lUHJvcGVydHkscD1uKCIiLnNsaWNlKSxtPW4oIiIucmVwbGFjZSksYj1uKFtdLmpvaW4pLHk9byYmIWEoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1nKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLHc9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHY9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiU3ltYm9sKCI9PT1wKGYodCksMCw3KSYmKHQ9IlsiK20oZih0KSwvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLHImJnIuZ2V0dGVyJiYodD0iZ2V0ICIrdCksciYmci5zZXR0ZXImJih0PSJzZXQgIit0KSwoIXMoZSwibmFtZSIpfHxjJiZlLm5hbWUhPT10KSYmKG8/ZyhlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCkseSYmciYmcyhyLCJhcml0eSIpJiZlLmxlbmd0aCE9PXIuYXJpdHkmJmcoZSwibGVuZ3RoIix7dmFsdWU6ci5hcml0eX0pO3RyeXtyJiZzKHIsImNvbnN0cnVjdG9yIikmJnIuY29uc3RydWN0b3I/byYmZyhlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIG49dShlKTtyZXR1cm4gcyhuLCJzb3VyY2UiKXx8KG4uc291cmNlPWIodywic3RyaW5nIj09dHlwZW9mIHQ/dDoiIikpLGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz12KChmdW5jdGlvbigpe3JldHVybiBpKHRoaXMpJiZkKHRoaXMpLnNvdXJjZXx8bCh0aGlzKX0pLCJ0b1N0cmluZyIpfSwoZSx0LHIpPT57dmFyIG49cig2KSxhPXIoMzkpLGk9RnVuY3Rpb24ucHJvdG90eXBlLHM9biYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEoaSwibmFtZSIpLGM9byYmInNvbWV0aGluZyI9PT1mdW5jdGlvbigpe30ubmFtZSxsPW8mJighbnx8biYmcyhpLCJuYW1lIikuY29uZmlndXJhYmxlKTtlLmV4cG9ydHM9e0VYSVNUUzpvLFBST1BFUjpjLENPTkZJR1VSQUJMRTpsfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9cigyMSksaT1yKDM3KSxzPW4oRnVuY3Rpb24udG9TdHJpbmcpO2EoaS5pbnNwZWN0U291cmNlKXx8KGkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gcyhlKX0pLGUuZXhwb3J0cz1pLmluc3BlY3RTb3VyY2V9LChlLHQscik9Pnt2YXIgbixhLGkscz1yKDUzKSxvPXIoNCksYz1yKDIwKSxsPXIoNDQpLGg9cigzOSksdT1yKDM3KSxkPXIoNTQpLGY9cig1NSksZz0iT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQiLHA9by5UeXBlRXJyb3IsbT1vLldlYWtNYXA7aWYoc3x8dS5zdGF0ZSl7dmFyIGI9dS5zdGF0ZXx8KHUuc3RhdGU9bmV3IG0pO2IuZ2V0PWIuZ2V0LGIuaGFzPWIuaGFzLGIuc2V0PWIuc2V0LG49ZnVuY3Rpb24oZSx0KXtpZihiLmhhcyhlKSl0aHJvdyBwKGcpO3JldHVybiB0LmZhY2FkZT1lLGIuc2V0KGUsdCksdH0sYT1mdW5jdGlvbihlKXtyZXR1cm4gYi5nZXQoZSl8fHt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBiLmhhcyhlKX19ZWxzZXt2YXIgeT1kKCJzdGF0ZSIpO2ZbeV09ITAsbj1mdW5jdGlvbihlLHQpe2lmKGgoZSx5KSl0aHJvdyBwKGcpO3JldHVybiB0LmZhY2FkZT1lLGwoZSx5LHQpLHR9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSx5KT9lW3ldOnt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBoKGUseSl9fWUuZXhwb3J0cz17c2V0Om4sZ2V0OmEsaGFzOmksZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gaShlKT9hKGUpOm4oZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI7aWYoIWModCl8fChyPWEodCkpLnR5cGUhPT1lKXRocm93IHAoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIitlKyIgcmVxdWlyZWQiKTtyZXR1cm4gcn19fX0sKGUsdCxyKT0+e3ZhciBuPXIoNCksYT1yKDIxKSxpPW4uV2Vha01hcDtlLmV4cG9ydHM9YShpKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhpKSl9LChlLHQscik9Pnt2YXIgbj1yKDM1KSxhPXIoNDEpLGk9bigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09YShlKSl9fSxlPT57ZS5leHBvcnRzPXt9fSwoZSx0LHIpPT57dmFyIG49cigzOSksYT1yKDU3KSxpPXIoNSkscz1yKDQ1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgbz1hKHQpLGM9cy5mLGw9aS5mLGg9MDtoPG8ubGVuZ3RoO2grKyl7dmFyIHU9b1toXTtuKGUsdSl8fHImJm4ocix1KXx8YyhlLHUsbCh0LHUpKX19fSwoZSx0LHIpPT57dmFyIG49cigyNCksYT1yKDE0KSxpPXIoNTgpLHM9cig2Nyksbz1yKDQ3KSxjPWEoW10uY29uY2F0KTtlLmV4cG9ydHM9bigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9aS5mKG8oZSkpLHI9cy5mO3JldHVybiByP2ModCxyKGUpKTp0fX0sKGUsdCxyKT0+e3ZhciBuPXIoNTkpLGE9cig2NikuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiBuKGUsYSl9fSwoZSx0LHIpPT57dmFyIG49cigxNCksYT1yKDM5KSxpPXIoMTIpLHM9cig2MCkuaW5kZXhPZixvPXIoNTUpLGM9bihbXS5wdXNoKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPWkoZSksbD0wLGg9W107Zm9yKHIgaW4gbikhYShvLHIpJiZhKG4scikmJmMoaCxyKTtmb3IoO3QubGVuZ3RoPmw7KWEobixyPXRbbCsrXSkmJih+cyhoLHIpfHxjKGgscikpO3JldHVybiBofX0sKGUsdCxyKT0+e3ZhciBuPXIoMTIpLGE9cig2MSksaT1yKDY0KSxzPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIscyl7dmFyIG8sYz1uKHQpLGw9aShjKSxoPWEocyxsKTtpZihlJiZyIT1yKXtmb3IoO2w+aDspaWYoKG89Y1toKytdKSE9bylyZXR1cm4hMH1lbHNlIGZvcig7bD5oO2grKylpZigoZXx8aCBpbiBjKSYmY1toXT09PXIpcmV0dXJuIGV8fGh8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpzKCEwKSxpbmRleE9mOnMoITEpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjIpLGE9TWF0aC5tYXgsaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKGUpO3JldHVybiByPDA/YShyK3QsMCk6aShyLHQpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9dHx8MD09PXQ/MDpuKHQpfX0sZT0+e3ZhciB0PU1hdGguY2VpbCxyPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKGUpe3ZhciBuPStlO3JldHVybihuPjA/cjp0KShuKX19LChlLHQscik9Pnt2YXIgbj1yKDY1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS5sZW5ndGgpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjIpLGE9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlPjA/YShuKGUpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxlPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LChlLHQpPT57dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LChlLHQscik9Pnt2YXIgbj1yKDcpLGE9cigyMSksaT0vI3xcLnByb3RvdHlwZVwuLyxzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9Y1tvKGUpXTtyZXR1cm4gcj09aHx8ciE9bCYmKGEodCk/bih0KTohIXQpfSxvPXMubm9ybWFsaXplPWZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSkucmVwbGFjZShpLCIuIikudG9Mb3dlckNhc2UoKX0sYz1zLmRhdGE9e30sbD1zLk5BVElWRT0iTiIsaD1zLlBPTFlGSUxMPSJQIjtlLmV4cG9ydHM9c30sKGUsdCxyKT0+e3ZhciBuPXIoOSksYT1GdW5jdGlvbi5wcm90b3R5cGUsaT1hLmFwcGx5LHM9YS5jYWxsO2UuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuYXBwbHl8fChuP3MuYmluZChpKTpmdW5jdGlvbigpe3JldHVybiBzLmFwcGx5KGksYXJndW1lbnRzKX0pfSwoZSx0LHIpPT57dmFyIG49cigyNCksYT1yKDM5KSxpPXIoNDQpLHM9cigyNSksbz1yKDcxKSxjPXIoNTYpLGw9cig3NCksaD1yKDc1KSx1PXIoNzYpLGQ9cig4MCksZj1yKDgxKSxnPXIoNikscD1yKDM2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbSl7dmFyIGI9InN0YWNrVHJhY2VMaW1pdCIseT1tPzI6MSx3PWUuc3BsaXQoIi4iKSx2PXdbdy5sZW5ndGgtMV0seD1uLmFwcGx5KG51bGwsdyk7aWYoeCl7dmFyIFM9eC5wcm90b3R5cGU7aWYoIXAmJmEoUywiY2F1c2UiKSYmZGVsZXRlIFMuY2F1c2UsIXIpcmV0dXJuIHg7dmFyIEE9bigiRXJyb3IiKSxrPXQoKGZ1bmN0aW9uKGUsdCl7dmFyIHI9dShtP3Q6ZSx2b2lkIDApLG49bT9uZXcgeChlKTpuZXcgeDtyZXR1cm4gdm9pZCAwIT09ciYmaShuLCJtZXNzYWdlIixyKSxmKG4sayxuLnN0YWNrLDIpLHRoaXMmJnMoUyx0aGlzKSYmaChuLHRoaXMsayksYXJndW1lbnRzLmxlbmd0aD55JiZkKG4sYXJndW1lbnRzW3ldKSxufSkpO2lmKGsucHJvdG90eXBlPVMsIkVycm9yIiE9PXY/bz9vKGssQSk6YyhrLEEse25hbWU6ITB9KTpnJiZiIGluIHgmJihsKGsseCxiKSxsKGsseCwicHJlcGFyZVN0YWNrVHJhY2UiKSksYyhrLHgpLCFwKXRyeXtTLm5hbWUhPT12JiZpKFMsIm5hbWUiLHYpLFMuY29uc3RydWN0b3I9a31jYXRjaChlKXt9cmV0dXJuIGt9fX0sKGUsdCxyKT0+e3ZhciBuPXIoNzIpLGE9cig0NyksaT1yKDczKTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxyPXt9O3RyeXsoZT1uKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShyLFtdKSx0PXIgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIGEociksaShuKSx0P2UocixuKTpyLl9fcHJvdG9fXz1uLHJ9fSgpOnZvaWQgMCl9LChlLHQscik9Pnt2YXIgbj1yKDE0KSxhPXIoMzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dHJ5e3JldHVybiBuKGEoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpW3JdKSl9Y2F0Y2goZSl7fX19LChlLHQscik9Pnt2YXIgbj1yKDIxKSxhPVN0cmluZyxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBlfHxuKGUpKXJldHVybiBlO3Rocm93IGkoIkNhbid0IHNldCAiK2EoZSkrIiBhcyBhIHByb3RvdHlwZSIpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNDUpLmY7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyIGluIGV8fG4oZSxyLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19LHNldDpmdW5jdGlvbihlKXt0W3JdPWV9fSl9fSwoZSx0LHIpPT57dmFyIG49cigyMSksYT1yKDIwKSxpPXIoNzEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHMsbztyZXR1cm4gaSYmbihzPXQuY29uc3RydWN0b3IpJiZzIT09ciYmYShvPXMucHJvdG90eXBlKSYmbyE9PXIucHJvdG90eXBlJiZpKGUsbyksZX19LChlLHQscik9Pnt2YXIgbj1yKDc3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09ZT9hcmd1bWVudHMubGVuZ3RoPDI/IiI6dDpuKGUpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNzgpLGE9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiU3ltYm9sIj09PW4oZSkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBhKGUpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNzkpLGE9cigyMSksaT1yKDE1KSxzPXIoMzQpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGM9IkFyZ3VtZW50cyI9PWkoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTtlLmV4cG9ydHM9bj9pOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gdm9pZCAwPT09ZT8iVW5kZWZpbmVkIjpudWxsPT09ZT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihyPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBlW3RdfWNhdGNoKGUpe319KHQ9byhlKSxzKSk/cjpjP2kodCk6Ik9iamVjdCI9PShuPWkodCkpJiZhKHQuY2FsbGVlKT8iQXJndW1lbnRzIjpufX0sKGUsdCxyKT0+e3ZhciBuPXt9O25bcigzNCkoInRvU3RyaW5nVGFnIildPSJ6IixlLmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKG4pfSwoZSx0LHIpPT57dmFyIG49cigyMCksYT1yKDQ0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtuKHQpJiYiY2F1c2UiaW4gdCYmYShlLCJjYXVzZSIsdC5jYXVzZSl9fSwoZSx0LHIpPT57dmFyIG49cig0NCksYT1yKDgyKSxpPXIoODMpLHM9RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG8pe2kmJihzP3MoZSx0KTpuKGUsInN0YWNrIixhKHIsbykpKX19LChlLHQscik9Pnt2YXIgbj1yKDE0KSxhPUVycm9yLGk9bigiIi5yZXBsYWNlKSxzPVN0cmluZyhhKCJ6eGNhc2QiKS5zdGFjayksbz0vXG5ccyphdCBbXjpdKjpbXlxuXSovLGM9by50ZXN0KHMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGMmJiJzdHJpbmciPT10eXBlb2YgZSYmIWEucHJlcGFyZVN0YWNrVHJhY2UpZm9yKDt0LS07KWU9aShlLG8sIiIpO3JldHVybiBlfX0sKGUsdCxyKT0+e3ZhciBuPXIoNyksYT1yKDExKTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7dmFyIGU9RXJyb3IoImEiKTtyZXR1cm4hKCJzdGFjayJpbiBlKXx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdGFjayIsYSgxLDcpKSw3IT09ZS5zdGFjayl9KSl9LChlLHQscik9Pnt2YXIgbj1yKDg1KSxhPXIoOTApLmZpbmRMYXN0LGk9bi5hVHlwZWRBcnJheTsoMCxuLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kTGFzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBhKGkodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LChlLHQscik9Pnt2YXIgbixhLGkscz1yKDg2KSxvPXIoNiksYz1yKDQpLGw9cigyMSksaD1yKDIwKSx1PXIoMzkpLGQ9cig3OCksZj1yKDMyKSxnPXIoNDQpLHA9cig0OCksbT1yKDg3KSxiPXIoMjUpLHk9cig4OCksdz1yKDcxKSx2PXIoMzQpLHg9cig0MSksUz1yKDUyKSxBPVMuZW5mb3JjZSxrPVMuZ2V0LEM9Yy5JbnQ4QXJyYXksTz1DJiZDLnByb3RvdHlwZSxGPWMuVWludDhDbGFtcGVkQXJyYXksST1GJiZGLnByb3RvdHlwZSxUPUMmJnkoQyksTT1PJiZ5KE8pLEU9T2JqZWN0LnByb3RvdHlwZSxQPWMuVHlwZUVycm9yLFI9digidG9TdHJpbmdUYWciKSxOPXgoIlRZUEVEX0FSUkFZX1RBRyIpLEQ9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsQj1zJiYhIXcmJiJPcGVyYSIhPT1kKGMub3BlcmEpLEw9ITEsXz17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LGo9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxVPWZ1bmN0aW9uKGUpe2lmKCFoKGUpKXJldHVybiExO3ZhciB0PWQoZSk7cmV0dXJuIHUoXyx0KXx8dShqLHQpfTtmb3IobiBpbiBfKShpPShhPWNbbl0pJiZhLnByb3RvdHlwZSk/QShpKVtEXT1hOkI9ITE7Zm9yKG4gaW4gaikoaT0oYT1jW25dKSYmYS5wcm90b3R5cGUpJiYoQShpKVtEXT1hKTtpZigoIUJ8fCFsKFQpfHxUPT09RnVuY3Rpb24ucHJvdG90eXBlKSYmKFQ9ZnVuY3Rpb24oKXt0aHJvdyBQKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxCKSlmb3IobiBpbiBfKWNbbl0mJncoY1tuXSxUKTtpZigoIUJ8fCFNfHxNPT09RSkmJihNPVQucHJvdG90eXBlLEIpKWZvcihuIGluIF8pY1tuXSYmdyhjW25dLnByb3RvdHlwZSxNKTtpZihCJiZ5KEkpIT09TSYmdyhJLE0pLG8mJiF1KE0sUikpZm9yKG4gaW4gTD0hMCxtKE0sUix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoKHRoaXMpP3RoaXNbTl06dm9pZCAwfX0pLF8pY1tuXSYmZyhjW25dLE4sbik7ZS5leHBvcnRzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOkIsVFlQRURfQVJSQVlfVEFHOkwmJk4sYVR5cGVkQXJyYXk6ZnVuY3Rpb24oZSl7aWYoVShlKSlyZXR1cm4gZTt0aHJvdyBQKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbihlKXtpZihsKGUpJiYoIXd8fGIoVCxlKSkpcmV0dXJuIGU7dGhyb3cgUChmKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQscixuKXtpZihvKXtpZihyKWZvcih2YXIgYSBpbiBfKXt2YXIgaT1jW2FdO2lmKGkmJnUoaS5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBpLnByb3RvdHlwZVtlXX1jYXRjaChyKXt0cnl7aS5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1NW2VdJiYhcnx8cChNLGUscj90OkImJk9bZV18fHQsbil9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhO2lmKG8pe2lmKHcpe2lmKHIpZm9yKG4gaW4gXylpZigoYT1jW25dKSYmdShhLGUpKXRyeXtkZWxldGUgYVtlXX1jYXRjaChlKXt9aWYoVFtlXSYmIXIpcmV0dXJuO3RyeXtyZXR1cm4gcChULGUscj90OkImJlRbZV18fHQpfWNhdGNoKGUpe319Zm9yKG4gaW4gXykhKGE9Y1tuXSl8fGFbZV0mJiFyfHxwKGEsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbiBlKHQpe3ZhciByPXkodCk7aWYoaChyKSl7dmFyIG49ayhyKTtyZXR1cm4gbiYmdShuLEQpP25bRF06ZShyKX19LGlzVmlldzpmdW5jdGlvbihlKXtpZighaChlKSlyZXR1cm4hMTt2YXIgdD1kKGUpO3JldHVybiJEYXRhVmlldyI9PT10fHx1KF8sdCl8fHUoaix0KX0saXNUeXBlZEFycmF5OlUsVHlwZWRBcnJheTpULFR5cGVkQXJyYXlQcm90b3R5cGU6TX19LGU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sKGUsdCxyKT0+e3ZhciBuPXIoNDkpLGE9cig0NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gci5nZXQmJm4oci5nZXQsdCx7Z2V0dGVyOiEwfSksci5zZXQmJm4oci5zZXQsdCx7c2V0dGVyOiEwfSksYS5mKGUsdCxyKX19LChlLHQscik9Pnt2YXIgbj1yKDM5KSxhPXIoMjEpLGk9cig0MCkscz1yKDU0KSxvPXIoODkpLGM9cygiSUVfUFJPVE8iKSxsPU9iamVjdCxoPWwucHJvdG90eXBlO2UuZXhwb3J0cz1vP2wuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtpZihuKHQsYykpcmV0dXJuIHRbY107dmFyIHI9dC5jb25zdHJ1Y3RvcjtyZXR1cm4gYShyKSYmdCBpbnN0YW5jZW9mIHI/ci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIGw/aDpudWxsfX0sKGUsdCxyKT0+e3ZhciBuPXIoNyk7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBlKSE9PWUucHJvdG90eXBlfSkpfSwoZSx0LHIpPT57dmFyIG49cig5MSksYT1yKDEzKSxpPXIoNDApLHM9cig2NCksbz1mdW5jdGlvbihlKXt2YXIgdD0xPT1lO3JldHVybiBmdW5jdGlvbihyLG8sYyl7Zm9yKHZhciBsLGg9aShyKSx1PWEoaCksZD1uKG8sYyksZj1zKHUpO2YtLSA+MDspaWYoZChsPXVbZl0sZixoKSlzd2l0Y2goZSl7Y2FzZSAwOnJldHVybiBsO2Nhc2UgMTpyZXR1cm4gZn1yZXR1cm4gdD8tMTp2b2lkIDB9fTtlLmV4cG9ydHM9e2ZpbmRMYXN0Om8oMCksZmluZExhc3RJbmRleDpvKDEpfX0sKGUsdCxyKT0+e3ZhciBuPXIoOTIpLGE9cigzMSksaT1yKDkpLHM9bihuLmJpbmQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhKGUpLHZvaWQgMD09PXQ/ZTppP3MoZSx0KTpmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSwoZSx0LHIpPT57dmFyIG49cigxNSksYT1yKDE0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoIkZ1bmN0aW9uIj09PW4oZSkpcmV0dXJuIGEoZSl9fSwoZSx0LHIpPT57dmFyIG49cig4NSksYT1yKDkwKS5maW5kTGFzdEluZGV4LGk9bi5hVHlwZWRBcnJheTsoMCxuLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kTGFzdEluZGV4IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoaSh0aGlzKSxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoNCksYT1yKDgpLGk9cig4NSkscz1yKDY0KSxvPXIoOTUpLGM9cig0MCksbD1yKDcpLGg9bi5SYW5nZUVycm9yLHU9bi5JbnQ4QXJyYXksZD11JiZ1LnByb3RvdHlwZSxmPWQmJmQuc2V0LGc9aS5hVHlwZWRBcnJheSxwPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxtPSFsKChmdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OENsYW1wZWRBcnJheSgyKTtyZXR1cm4gYShmLGUse2xlbmd0aDoxLDA6M30sMSksMyE9PWVbMV19KSksYj1tJiZpLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MmJmwoKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHUoMik7cmV0dXJuIGUuc2V0KDEpLGUuc2V0KCIyIiwxKSwwIT09ZVswXXx8MiE9PWVbMV19KSk7cCgic2V0IiwoZnVuY3Rpb24oZSl7Zyh0aGlzKTt2YXIgdD1vKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLHI9YyhlKTtpZihtKXJldHVybiBhKGYsdGhpcyxyLHQpO3ZhciBuPXRoaXMubGVuZ3RoLGk9cyhyKSxsPTA7aWYoaSt0Pm4pdGhyb3cgaCgiV3JvbmcgbGVuZ3RoIik7Zm9yKDtsPGk7KXRoaXNbdCtsXT1yW2wrK119KSwhbXx8Yil9LChlLHQscik9Pnt2YXIgbj1yKDk2KSxhPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bihlKTtpZihyJXQpdGhyb3cgYSgiV3Jvbmcgb2Zmc2V0Iik7cmV0dXJuIHJ9fSwoZSx0LHIpPT57dmFyIG49cig2MiksYT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpO2lmKHQ8MCl0aHJvdyBhKCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDAiKTtyZXR1cm4gdH19LChlLHQscik9Pnt2YXIgbj1yKDk4KSxhPXIoODUpLGk9YS5hVHlwZWRBcnJheSxzPWEuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPWEuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO3MoInRvUmV2ZXJzZWQiLChmdW5jdGlvbigpe3JldHVybiBuKGkodGhpcyksbyh0aGlzKSl9KSl9LChlLHQscik9Pnt2YXIgbj1yKDY0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9bihlKSxhPW5ldyB0KHIpLGk9MDtpPHI7aSsrKWFbaV09ZVtyLWktMV07cmV0dXJuIGF9fSwoZSx0LHIpPT57dmFyIG49cig4NSksYT1yKDE0KSxpPXIoMzEpLHM9cigxMDApLG89bi5hVHlwZWRBcnJheSxjPW4uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGw9bi5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGg9YShuLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCk7bCgidG9Tb3J0ZWQiLChmdW5jdGlvbihlKXt2b2lkIDAhPT1lJiZpKGUpO3ZhciB0PW8odGhpcykscj1zKGModCksdCk7cmV0dXJuIGgocixlKX0pKX0sKGUsdCxyKT0+e3ZhciBuPXIoNjQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLGE9bih0KSxpPW5ldyBlKGEpO2E+cjspaVtyXT10W3IrK107cmV0dXJuIGl9fSwoZSx0LHIpPT57dmFyIG49cigxMDIpLGE9cig4NSksaT1yKDEwMykscz1yKDYyKSxvPXIoMTA0KSxjPWEuYVR5cGVkQXJyYXksbD1hLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixoPWEuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCx1PSEhZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCk7aCgid2l0aCIse3dpdGg6ZnVuY3Rpb24oZSx0KXt2YXIgcj1jKHRoaXMpLGE9cyhlKSxoPWkocik/byh0KTordDtyZXR1cm4gbihyLGwociksYSxoKX19LndpdGgsIXUpfSwoZSx0LHIpPT57dmFyIG49cig2NCksYT1yKDYyKSxpPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciBvPW4oZSksYz1hKHIpLGw9YzwwP28rYzpjO2lmKGw+PW98fGw8MCl0aHJvdyBpKCJJbmNvcnJlY3QgaW5kZXgiKTtmb3IodmFyIGg9bmV3IHQobyksdT0wO3U8bzt1KyspaFt1XT11PT09bD9zOmVbdV07cmV0dXJuIGh9fSwoZSx0LHIpPT57dmFyIG49cig3OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT10fHwiQmlnVWludDY0QXJyYXkiPT10fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTkpLGE9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsIm51bWJlciIpO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBhKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sKGUsdCxyKT0+e3ZhciBuPXIoNiksYT1yKDg3KSxpPXIoMTA2KSxzPUFycmF5QnVmZmVyLnByb3RvdHlwZTtuJiYhKCJkZXRhY2hlZCJpbiBzKSYmYShzLCJkZXRhY2hlZCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaSh0aGlzKX19KX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9cigxMDcpLGk9bihBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigwIT09YShlKSlyZXR1cm4hMTt0cnl7cmV0dXJuIGkoZSwwLDApLCExfWNhdGNoKGUpe3JldHVybiEwfX19LChlLHQscik9Pnt2YXIgbj1yKDcyKSxhPXIoMTUpLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1uKEFycmF5QnVmZmVyLnByb3RvdHlwZSwiYnl0ZUxlbmd0aCIsImdldCIpfHxmdW5jdGlvbihlKXtpZigiQXJyYXlCdWZmZXIiIT1hKGUpKXRocm93IGkoIkFycmF5QnVmZmVyIGV4cGVjdGVkIik7cmV0dXJuIGUuYnl0ZUxlbmd0aH19LChlLHQscik9Pnt2YXIgbj1yKDMpLGE9cigxMDkpO2EmJm4oe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCwhMCl9fSl9LChlLHQscik9Pnt2YXIgbj1yKDQpLGE9cigxNCksaT1yKDcyKSxzPXIoMTEwKSxvPXIoMTA2KSxjPXIoMTA3KSxsPXIoMTExKSxoPW4uVHlwZUVycm9yLHU9bi5zdHJ1Y3R1cmVkQ2xvbmUsZD1uLkFycmF5QnVmZmVyLGY9bi5EYXRhVmlldyxnPU1hdGgubWluLHA9ZC5wcm90b3R5cGUsbT1mLnByb3RvdHlwZSxiPWEocC5zbGljZSkseT1pKHAsInJlc2l6YWJsZSIsImdldCIpLHc9aShwLCJtYXhCeXRlTGVuZ3RoIiwiZ2V0Iiksdj1hKG0uZ2V0SW50OCkseD1hKG0uc2V0SW50OCk7ZS5leHBvcnRzPWwmJmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1jKGUpLGE9dm9pZCAwPT09dD9uOnModCksaT0heXx8IXkoZSk7aWYobyhlKSl0aHJvdyBoKCJBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCIpO3ZhciBsPXUoZSx7dHJhbnNmZXI6W2VdfSk7aWYobj09YSYmKHJ8fGkpKXJldHVybiBsO2lmKG4+PWEmJighcnx8aSkpcmV0dXJuIGIobCwwLGEpO2Zvcih2YXIgcD1yJiYhaSYmdz97bWF4Qnl0ZUxlbmd0aDp3KGwpfTp2b2lkIDAsbT1uZXcgZChhLHApLFM9bmV3IGYobCksQT1uZXcgZihtKSxrPWcoYSxuKSxDPTA7QzxrO0MrKyl4KEEsQyx2KFMsQykpO3JldHVybiBtfX0sKGUsdCxyKT0+e3ZhciBuPXIoNjIpLGE9cig2NSksaT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PW4oZSkscj1hKHQpO2lmKHQhPT1yKXRocm93IGkoIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiByfX0sKGUsdCxyKT0+e3ZhciBuPXIoNCksYT1yKDcpLGk9cigyOCkscz1yKDExMiksbz1yKDExMyksYz1yKDExNCksbD1uLnN0cnVjdHVyZWRDbG9uZTtlLmV4cG9ydHM9ISFsJiYhYSgoZnVuY3Rpb24oKXtpZihvJiZpPjkyfHxjJiZpPjk0fHxzJiZpPjk3KXJldHVybiExO3ZhciBlPW5ldyBBcnJheUJ1ZmZlcig4KSx0PWwoZSx7dHJhbnNmZXI6W2VdfSk7cmV0dXJuIDAhPWUuYnl0ZUxlbmd0aHx8OCE9dC5ieXRlTGVuZ3RofSkpfSwoZSx0LHIpPT57dmFyIG49cigxMTMpLGE9cigxMTQpO2UuZXhwb3J0cz0hbiYmIWEmJiJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50fSxlPT57ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LChlLHQscik9Pnt2YXIgbj1yKDE1KTtlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBwcm9jZXNzJiYicHJvY2VzcyI9PW4ocHJvY2Vzcyl9LChlLHQscik9Pnt2YXIgbj1yKDMpLGE9cigxMDkpO2EmJm4oe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDAsITEpfX0pfSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoMTE3KTtuKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IXIoMTI1KSgiZGlmZmVyZW5jZSIpfSx7ZGlmZmVyZW5jZTphfSl9LChlLHQscik9Pnt2YXIgbj1yKDExOCksYT1yKDExOSksaT1yKDEyMCkscz1yKDEyMyksbz1yKDEyNCksYz1yKDEyMSksbD1yKDEyMiksaD1hLmhhcyx1PWEucmVtb3ZlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKHRoaXMpLHI9byhlKSxhPWkodCk7cmV0dXJuIHModCk8PXIuc2l6ZT9jKHQsKGZ1bmN0aW9uKGUpe3IuaW5jbHVkZXMoZSkmJnUoYSxlKX0pKTpsKHIuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7aCh0LGUpJiZ1KGEsZSl9KSksYX19LChlLHQscik9Pnt2YXIgbj1yKDExOSkuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlKSxlfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6bihhLmFkZCksaGFzOm4oYS5oYXMpLHJlbW92ZTpuKGEuZGVsZXRlKSxwcm90bzphfX0sKGUsdCxyKT0+e3ZhciBuPXIoMTE5KSxhPXIoMTIxKSxpPW4uU2V0LHM9bi5hZGQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBpO3JldHVybiBhKGUsKGZ1bmN0aW9uKGUpe3ModCxlKX0pKSx0fX0sKGUsdCxyKT0+e3ZhciBuPXIoMTQpLGE9cigxMjIpLGk9cigxMTkpLHM9aS5TZXQsbz1pLnByb3RvLGM9bihvLmZvckVhY2gpLGw9bihvLmtleXMpLGg9bChuZXcgcykubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiByP2EobChlKSx0LGgpOmMoZSx0KX19LChlLHQscik9Pnt2YXIgbj1yKDgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBhLGkscz1yfHxlLm5leHQ7IShhPW4ocyxlKSkuZG9uZTspaWYodm9pZCAwIT09KGk9dChhLnZhbHVlKSkpcmV0dXJuIGl9fSwoZSx0LHIpPT57dmFyIG49cig3MiksYT1yKDExOSk7ZS5leHBvcnRzPW4oYS5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sKGUsdCxyKT0+e3ZhciBuPXIoMzEpLGE9cig0NyksaT1yKDgpLHM9cig2Miksbz1UeXBlRXJyb3IsYz1NYXRoLm1heCxsPWZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuc2V0PWUsdGhpcy5zaXplPXQsdGhpcy5oYXM9cix0aGlzLmtleXM9bn07bC5wcm90b3R5cGU9e2dldEl0ZXJhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGEoaSh0aGlzLmtleXMsdGhpcy5zZXQpKX0saW5jbHVkZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGkodGhpcy5oYXMsdGhpcy5zZXQsZSl9fSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7YShlKTt2YXIgdD0rZS5zaXplO2lmKHQhPXQpdGhyb3cgbygiSW52YWxpZCBzaXplIik7cmV0dXJuIG5ldyBsKGUsYyhzKHQpLDApLG4oZS5oYXMpLG4oZS5rZXlzKSl9fSwoZSx0LHIpPT57dmFyIG49cigyNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4obmV3KG4oIlNldCIpKSlbZV0oe3NpemU6MCxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fX0sKGUsdCxyKT0+e3ZhciBuPXIoMyksYT1yKDcpLGk9cigxMjcpO24oe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohcigxMjUpKCJpbnRlcnNlY3Rpb24iKXx8YSgoZnVuY3Rpb24oKXtyZXR1cm4iMywyIiE9QXJyYXkuZnJvbShuZXcgU2V0KFsxLDIsM10pLmludGVyc2VjdGlvbihuZXcgU2V0KFszLDJdKSkpfSkpfSx7aW50ZXJzZWN0aW9uOml9KX0sKGUsdCxyKT0+e3ZhciBuPXIoMTE4KSxhPXIoMTE5KSxpPXIoMTIzKSxzPXIoMTI0KSxvPXIoMTIxKSxjPXIoMTIyKSxsPWEuU2V0LGg9YS5hZGQsdT1hLmhhcztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bih0aGlzKSxyPXMoZSksYT1uZXcgbDtyZXR1cm4gaSh0KT5yLnNpemU/YyhyLmdldEl0ZXJhdG9yKCksKGZ1bmN0aW9uKGUpe3UodCxlKSYmaChhLGUpfSkpOm8odCwoZnVuY3Rpb24oZSl7ci5pbmNsdWRlcyhlKSYmaChhLGUpfSkpLGF9fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoMTI5KTtuKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IXIoMTI1KSgiaXNEaXNqb2ludEZyb20iKX0se2lzRGlzam9pbnRGcm9tOmF9KX0sKGUsdCxyKT0+e3ZhciBuPXIoMTE4KSxhPXIoMTE5KS5oYXMsaT1yKDEyMykscz1yKDEyNCksbz1yKDEyMSksYz1yKDEyMiksbD1yKDEzMCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcykscj1zKGUpO2lmKGkodCk8PXIuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoci5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgaD1yLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1jKGgsKGZ1bmN0aW9uKGUpe2lmKGEodCxlKSlyZXR1cm4gbChoLCJub3JtYWwiLCExKX0pKX19LChlLHQscik9Pnt2YXIgbj1yKDgpLGE9cig0NyksaT1yKDMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBzLG87YShlKTt0cnl7aWYoIShzPWkoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyByO3JldHVybiByfXM9bihzLGUpfWNhdGNoKGUpe289ITAscz1lfWlmKCJ0aHJvdyI9PT10KXRocm93IHI7aWYobyl0aHJvdyBzO3JldHVybiBhKHMpLHJ9fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoMTMyKTtuKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IXIoMTI1KSgiaXNTdWJzZXRPZiIpfSx7aXNTdWJzZXRPZjphfSl9LChlLHQscik9Pnt2YXIgbj1yKDExOCksYT1yKDEyMyksaT1yKDEyMSkscz1yKDEyNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcykscj1zKGUpO3JldHVybiEoYSh0KT5yLnNpemUpJiYhMSE9PWkodCwoZnVuY3Rpb24oZSl7aWYoIXIuaW5jbHVkZXMoZSkpcmV0dXJuITF9KSwhMCl9fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoMTM0KTtuKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IXIoMTI1KSgiaXNTdXBlcnNldE9mIil9LHtpc1N1cGVyc2V0T2Y6YX0pfSwoZSx0LHIpPT57dmFyIG49cigxMTgpLGE9cigxMTkpLmhhcyxpPXIoMTIzKSxzPXIoMTI0KSxvPXIoMTIyKSxjPXIoMTMwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bih0aGlzKSxyPXMoZSk7aWYoaSh0KTxyLnNpemUpcmV0dXJuITE7dmFyIGw9ci5nZXRJdGVyYXRvcigpO3JldHVybiExIT09byhsLChmdW5jdGlvbihlKXtpZighYSh0LGUpKXJldHVybiBjKGwsIm5vcm1hbCIsITEpfSkpfX0sKGUsdCxyKT0+e3ZhciBuPXIoMyksYT1yKDEzNik7bih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFyKDEyNSkoInN5bW1ldHJpY0RpZmZlcmVuY2UiKX0se3N5bW1ldHJpY0RpZmZlcmVuY2U6YX0pfSwoZSx0LHIpPT57dmFyIG49cigxMTgpLGE9cigxMTkpLGk9cigxMjApLHM9cigxMjQpLG89cigxMjIpLGM9YS5hZGQsbD1hLmhhcyxoPWEucmVtb3ZlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKHRoaXMpLHI9cyhlKS5nZXRJdGVyYXRvcigpLGE9aSh0KTtyZXR1cm4gbyhyLChmdW5jdGlvbihlKXtsKHQsZSk/aChhLGUpOmMoYSxlKX0pKSxhfX0sKGUsdCxyKT0+e3ZhciBuPXIoMyksYT1yKDEzOCk7bih7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFyKDEyNSkoInVuaW9uIil9LHt1bmlvbjphfSl9LChlLHQscik9Pnt2YXIgbj1yKDExOCksYT1yKDExOSkuYWRkLGk9cigxMjApLHM9cigxMjQpLG89cigxMjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKHRoaXMpLHI9cyhlKS5nZXRJdGVyYXRvcigpLGM9aSh0KTtyZXR1cm4gbyhyLChmdW5jdGlvbihlKXthKGMsZSl9KSksY319LChlLHQscik9Pnt2YXIgbj1yKDMpLGE9cig0MCksaT1yKDY0KSxzPXIoMTQwKSxvPXIoMTQyKTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpyKDcpKChmdW5jdGlvbigpe3JldHVybiA0Mjk0OTY3Mjk3IT09W10ucHVzaC5jYWxsKHtsZW5ndGg6NDI5NDk2NzI5Nn0sMSl9KSl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkucHVzaCgpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3B1c2g6ZnVuY3Rpb24oZSl7dmFyIHQ9YSh0aGlzKSxyPWkodCksbj1hcmd1bWVudHMubGVuZ3RoO28ocituKTtmb3IodmFyIGM9MDtjPG47YysrKXRbcl09YXJndW1lbnRzW2NdLHIrKztyZXR1cm4gcyh0LHIpLHJ9fSl9LChlLHQscik9Pnt2YXIgbj1yKDYpLGE9cigxNDEpLGk9VHlwZUVycm9yLHM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPW4mJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihhKGUpJiYhcyhlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBpKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIGUubGVuZ3RoPXR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoPXR9fSwoZSx0LHIpPT57dmFyIG49cigxNSk7ZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJBcnJheSI9PW4oZSl9fSxlPT57dmFyIHQ9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgdCgiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIGV9fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoNCksaT1yKDg3KSxzPXIoNiksbz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1hLnNlbGYhPT1hO3RyeXtpZihzKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsInNlbGYiKTshbCYmaCYmaC5nZXQmJmguZW51bWVyYWJsZXx8aShhLCJzZWxmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbihlKXtpZih0aGlzIT09YSl0aHJvdyBvKCJJbGxlZ2FsIGludm9jYXRpb24iKTtjKGEsInNlbGYiLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9ZWxzZSBuKHtnbG9iYWw6ITAsc2ltcGxlOiEwLGZvcmNlZDpsfSx7c2VsZjphfSl9Y2F0Y2goZSl7fX0sKGUsdCxyKT0+e3ZhciBuO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlZlcmJvc2l0eUxldmVsPXQuVXRpbD10LlVua25vd25FcnJvckV4Y2VwdGlvbj10LlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbj10LlRleHRSZW5kZXJpbmdNb2RlPXQuUmVuZGVyaW5nSW50ZW50RmxhZz10LlByb21pc2VDYXBhYmlsaXR5PXQuUGVybWlzc2lvbkZsYWc9dC5QYXNzd29yZFJlc3BvbnNlcz10LlBhc3N3b3JkRXhjZXB0aW9uPXQuUGFnZUFjdGlvbkV2ZW50VHlwZT10Lk9QUz10Lk1pc3NpbmdQREZFeGNlcHRpb249dC5NQVhfSU1BR0VfU0laRV9UT19DQUNIRT10LkxJTkVfRkFDVE9SPXQuTElORV9ERVNDRU5UX0ZBQ1RPUj10LkludmFsaWRQREZFeGNlcHRpb249dC5JbWFnZUtpbmQ9dC5JREVOVElUWV9NQVRSSVg9dC5Gb3JtYXRFcnJvcj10LkZlYXR1cmVUZXN0PXQuRk9OVF9JREVOVElUWV9NQVRSSVg9dC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT10LkNNYXBDb21wcmVzc2lvblR5cGU9dC5CYXNlRXhjZXB0aW9uPXQuQkFTRUxJTkVfRkFDVE9SPXQuQW5ub3RhdGlvblR5cGU9dC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXQuQW5ub3RhdGlvbk1vZGU9dC5Bbm5vdGF0aW9uRmxhZz10LkFubm90YXRpb25GaWVsZEZsYWc9dC5Bbm5vdGF0aW9uRWRpdG9yVHlwZT10LkFubm90YXRpb25FZGl0b3JQcmVmaXg9dC5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT10LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9dC5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlPXQuQWJvcnRFeGNlcHRpb249dm9pZCAwLHQuYXNzZXJ0PWZ1bmN0aW9uKGUsdCl7ZXx8bCh0KX0sdC5ieXRlc1RvU3RyaW5nPWcsdC5jcmVhdGVWYWxpZEFic29sdXRlVXJsPWZ1bmN0aW9uKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7aWYoIWUpcmV0dXJuIG51bGw7dHJ5e2lmKHImJiJzdHJpbmciPT10eXBlb2YgZSl7aWYoci5hZGREZWZhdWx0UHJvdG9jb2wmJmUuc3RhcnRzV2l0aCgid3d3LiIpKXtjb25zdCB0PWUubWF0Y2goL1wuL2cpOyhudWxsPT10P3ZvaWQgMDp0Lmxlbmd0aCk+PTImJihlPSJodHRwOi8vIi5jb25jYXQoZSkpfWlmKHIudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXkoZSl9Y2F0Y2goZSl7fX1jb25zdCBuPXQ/bmV3IFVSTChlLHQpOm5ldyBVUkwoZSk7aWYoZnVuY3Rpb24oZSl7c3dpdGNoKG51bGw9PWU/dm9pZCAwOmUucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0obikpcmV0dXJuIG59Y2F0Y2goZSl7fXJldHVybiBudWxsfSx0LmdldE1vZGlmaWNhdGlvbkRhdGU9ZnVuY3Rpb24oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bmV3IERhdGU7cmV0dXJuW2UuZ2V0VVRDRnVsbFllYXIoKS50b1N0cmluZygpLChlLmdldFVUQ01vbnRoKCkrMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpXS5qb2luKCIiKX0sdC5nZXRVdWlkPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mKG51bGw9PT0oZT1jcnlwdG8pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnJhbmRvbVVVSUQpKXJldHVybiBjcnlwdG8ucmFuZG9tVVVJRCgpO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMzIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2YobnVsbD09PSh0PWNyeXB0byl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0UmFuZG9tVmFsdWVzKSljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHIpO2Vsc2UgZm9yKGxldCBlPTA7ZTwzMjtlKyspcltlXT1NYXRoLmZsb29yKDI1NSpNYXRoLnJhbmRvbSgpKTtyZXR1cm4gZyhyKX0sdC5nZXRWZXJib3NpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBzfSx0LmluZm89ZnVuY3Rpb24oZSl7cz49aS5JTkZPUyYmY29uc29sZS5sb2coIkluZm86ICIuY29uY2F0KGUpKX0sdC5pc0FycmF5QnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuYnl0ZUxlbmd0aCl9LHQuaXNBcnJheUVxdWFsPWZ1bmN0aW9uKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspaWYoZVtyXSE9PXRbcl0pcmV0dXJuITE7cmV0dXJuITB9LHQuaXNOb2RlSlM9dm9pZCAwLHQubm9ybWFsaXplVW5pY29kZT1mdW5jdGlvbihlKXtyZXR1cm4gd3x8KHc9LyhbXHhBMFx4QjVcdTAzN0VcdTBFQjNcdTIwMDAtXHUyMDBBXHUyMDJGXHUyMTI2XHVGQjAwLVx1RkIwNFx1RkIwNlx1RkIyMC1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJBMVx1RkJBNC1cdUZCQTlcdUZCQUUtXHVGQkIxXHVGQkQzLVx1RkJEQ1x1RkJERS1cdUZCRTdcdUZCRUEtXHVGQkY4XHVGQkZDXHVGQkZEXHVGQzAwLVx1RkM1RFx1RkM2NC1cdUZDRjFcdUZDRjUtXHVGRDNEXHVGRDg4XHVGREY0XHVGREZBXHVGREZCXHVGRTcxXHVGRTc3XHVGRTc5XHVGRTdCXHVGRTdEXSspfChcdUZCMDUrKS9nLHY9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pKSxlLnJlcGxhY2VBbGwodywoKGUsdCxyKT0+dD90Lm5vcm1hbGl6ZSgiTkZLQyIpOnYuZ2V0KHIpKSl9LHQub2JqZWN0RnJvbU1hcD1mdW5jdGlvbihlKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3Isbl1vZiBlKXRbcl09bjtyZXR1cm4gdH0sdC5vYmplY3RTaXplPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGh9LHQuc2V0VmVyYm9zaXR5TGV2ZWw9ZnVuY3Rpb24oZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHM9ZSl9LHQuc2hhZG93PWQsdC5zdHJpbmczMj1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlKX0sdC5zdHJpbmdUb0J5dGVzPXAsdC5zdHJpbmdUb1BERlN0cmluZz1mdW5jdGlvbihlKXtpZihlWzBdPj0iw68iKXtsZXQgdDtpZigiw74iPT09ZVswXSYmIsO/Ij09PWVbMV0/dD0idXRmLTE2YmUiOiLDvyI9PT1lWzBdJiYiw74iPT09ZVsxXT90PSJ1dGYtMTZsZSI6IsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKHQ9InV0Zi04IiksdCl0cnl7Y29uc3Qgcj1uZXcgVGV4dERlY29kZXIodCx7ZmF0YWw6ITB9KSxuPXAoZSk7cmV0dXJuIHIuZGVjb2RlKG4pfWNhdGNoKGUpe28oJ3N0cmluZ1RvUERGU3RyaW5nOiAiJy5jb25jYXQoZSwnIi4nKSl9fWNvbnN0IHQ9W107Zm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47cisrKXtjb25zdCBuPWJbZS5jaGFyQ29kZUF0KHIpXTt0LnB1c2gobj9TdHJpbmcuZnJvbUNoYXJDb2RlKG4pOmUuY2hhckF0KHIpKX1yZXR1cm4gdC5qb2luKCIiKX0sdC5zdHJpbmdUb1VURjhTdHJpbmc9eSx0LnVucmVhY2hhYmxlPWwsdC51dGY4U3RyaW5nVG9TdHJpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9LHQud2Fybj1vLHIoMikscigxNDUpLHIoMTQ3KSxyKDE0OCkscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KTtjb25zdCBhPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKTt0LmlzTm9kZUpTPWEsdC5JREVOVElUWV9NQVRSSVg9WzEsMCwwLDEsMCwwXSx0LkZPTlRfSURFTlRJVFlfTUFUUklYPVsuMDAxLDAsMCwuMDAxLDAsMF0sdC5NQVhfSU1BR0VfU0laRV9UT19DQUNIRT0xZTcsdC5MSU5FX0ZBQ1RPUj0xLjM1LHQuTElORV9ERVNDRU5UX0ZBQ1RPUj0uMzUsdC5CQVNFTElORV9GQUNUT1I9LjI1OTI1OTI1OTI1OTI1OTI0LHQuUmVuZGVyaW5nSW50ZW50RmxhZz17QU5ZOjEsRElTUExBWToyLFBSSU5UOjQsU0FWRTo4LEFOTk9UQVRJT05TX0ZPUk1TOjE2LEFOTk9UQVRJT05TX1NUT1JBR0U6MzIsQU5OT1RBVElPTlNfRElTQUJMRTo2NCxPUExJU1Q6MjU2fSx0LkFubm90YXRpb25Nb2RlPXtESVNBQkxFOjAsRU5BQkxFOjEsRU5BQkxFX0ZPUk1TOjIsRU5BQkxFX1NUT1JBR0U6M30sdC5Bbm5vdGF0aW9uRWRpdG9yUHJlZml4PSJwZGZqc19pbnRlcm5hbF9lZGl0b3JfIix0LkFubm90YXRpb25FZGl0b3JUeXBlPXtESVNBQkxFOi0xLE5PTkU6MCxGUkVFVEVYVDozLFNUQU1QOjEzLElOSzoxNX0sdC5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZT17UkVTSVpFOjEsRlJFRVRFWFRfU0laRToxMSxGUkVFVEVYVF9DT0xPUjoxMixGUkVFVEVYVF9PUEFDSVRZOjEzLElOS19DT0xPUjoyMSxJTktfVEhJQ0tORVNTOjIyLElOS19PUEFDSVRZOjIzfSx0LlBlcm1pc3Npb25GbGFnPXtQUklOVDo0LE1PRElGWV9DT05URU5UUzo4LENPUFk6MTYsTU9ESUZZX0FOTk9UQVRJT05TOjMyLEZJTExfSU5URVJBQ1RJVkVfRk9STVM6MjU2LENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6NTEyLEFTU0VNQkxFOjEwMjQsUFJJTlRfSElHSF9RVUFMSVRZOjIwNDh9LHQuVGV4dFJlbmRlcmluZ01vZGU9e0ZJTEw6MCxTVFJPS0U6MSxGSUxMX1NUUk9LRToyLElOVklTSUJMRTozLEZJTExfQUREX1RPX1BBVEg6NCxTVFJPS0VfQUREX1RPX1BBVEg6NSxGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDo2LEFERF9UT19QQVRIOjcsRklMTF9TVFJPS0VfTUFTSzozLEFERF9UT19QQVRIX0ZMQUc6NH0sdC5JbWFnZUtpbmQ9e0dSQVlTQ0FMRV8xQlBQOjEsUkdCXzI0QlBQOjIsUkdCQV8zMkJQUDozfSx0LkFubm90YXRpb25UeXBlPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNn0sdC5Bbm5vdGF0aW9uUmVwbHlUeXBlPXtHUk9VUDoiR3JvdXAiLFJFUExZOiJSIn0sdC5Bbm5vdGF0aW9uRmxhZz17SU5WSVNJQkxFOjEsSElEREVOOjIsUFJJTlQ6NCxOT1pPT006OCxOT1JPVEFURToxNixOT1ZJRVc6MzIsUkVBRE9OTFk6NjQsTE9DS0VEOjEyOCxUT0dHTEVOT1ZJRVc6MjU2LExPQ0tFRENPTlRFTlRTOjUxMn0sdC5Bbm5vdGF0aW9uRmllbGRGbGFnPXtSRUFET05MWToxLFJFUVVJUkVEOjIsTk9FWFBPUlQ6NCxNVUxUSUxJTkU6NDA5NixQQVNTV09SRDo4MTkyLE5PVE9HR0xFVE9PRkY6MTYzODQsUkFESU86MzI3NjgsUFVTSEJVVFRPTjo2NTUzNixDT01CTzoxMzEwNzIsRURJVDoyNjIxNDQsU09SVDo1MjQyODgsRklMRVNFTEVDVDoxMDQ4NTc2LE1VTFRJU0VMRUNUOjIwOTcxNTIsRE9OT1RTUEVMTENIRUNLOjQxOTQzMDQsRE9OT1RTQ1JPTEw6ODM4ODYwOCxDT01COjE2Nzc3MjE2LFJJQ0hURVhUOjMzNTU0NDMyLFJBRElPU0lOVU5JU09OOjMzNTU0NDMyLENPTU1JVE9OU0VMQ0hBTkdFOjY3MTA4ODY0fSx0LkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGU9e1NPTElEOjEsREFTSEVEOjIsQkVWRUxFRDozLElOU0VUOjQsVU5ERVJMSU5FOjV9LHQuQW5ub3RhdGlvbkFjdGlvbkV2ZW50VHlwZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn0sdC5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZT17V0M6IldpbGxDbG9zZSIsV1M6IldpbGxTYXZlIixEUzoiRGlkU2F2ZSIsV1A6IldpbGxQcmludCIsRFA6IkRpZFByaW50In0sdC5QYWdlQWN0aW9uRXZlbnRUeXBlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn07Y29uc3QgaT17RVJST1JTOjAsV0FSTklOR1M6MSxJTkZPUzo1fTt0LlZlcmJvc2l0eUxldmVsPWksdC5DTWFwQ29tcHJlc3Npb25UeXBlPXtOT05FOjAsQklOQVJZOjF9LHQuT1BTPXtkZXBlbmRlbmN5OjEsc2V0TGluZVdpZHRoOjIsc2V0TGluZUNhcDozLHNldExpbmVKb2luOjQsc2V0TWl0ZXJMaW1pdDo1LHNldERhc2g6NixzZXRSZW5kZXJpbmdJbnRlbnQ6NyxzZXRGbGF0bmVzczo4LHNldEdTdGF0ZTo5LHNhdmU6MTAscmVzdG9yZToxMSx0cmFuc2Zvcm06MTIsbW92ZVRvOjEzLGxpbmVUbzoxNCxjdXJ2ZVRvOjE1LGN1cnZlVG8yOjE2LGN1cnZlVG8zOjE3LGNsb3NlUGF0aDoxOCxyZWN0YW5nbGU6MTksc3Ryb2tlOjIwLGNsb3NlU3Ryb2tlOjIxLGZpbGw6MjIsZW9GaWxsOjIzLGZpbGxTdHJva2U6MjQsZW9GaWxsU3Ryb2tlOjI1LGNsb3NlRmlsbFN0cm9rZToyNixjbG9zZUVPRmlsbFN0cm9rZToyNyxlbmRQYXRoOjI4LGNsaXA6MjksZW9DbGlwOjMwLGJlZ2luVGV4dDozMSxlbmRUZXh0OjMyLHNldENoYXJTcGFjaW5nOjMzLHNldFdvcmRTcGFjaW5nOjM0LHNldEhTY2FsZTozNSxzZXRMZWFkaW5nOjM2LHNldEZvbnQ6Mzcsc2V0VGV4dFJlbmRlcmluZ01vZGU6Mzgsc2V0VGV4dFJpc2U6MzksbW92ZVRleHQ6NDAsc2V0TGVhZGluZ01vdmVUZXh0OjQxLHNldFRleHRNYXRyaXg6NDIsbmV4dExpbmU6NDMsc2hvd1RleHQ6NDQsc2hvd1NwYWNlZFRleHQ6NDUsbmV4dExpbmVTaG93VGV4dDo0NixuZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDo0NyxzZXRDaGFyV2lkdGg6NDgsc2V0Q2hhcldpZHRoQW5kQm91bmRzOjQ5LHNldFN0cm9rZUNvbG9yU3BhY2U6NTAsc2V0RmlsbENvbG9yU3BhY2U6NTEsc2V0U3Ryb2tlQ29sb3I6NTIsc2V0U3Ryb2tlQ29sb3JOOjUzLHNldEZpbGxDb2xvcjo1NCxzZXRGaWxsQ29sb3JOOjU1LHNldFN0cm9rZUdyYXk6NTYsc2V0RmlsbEdyYXk6NTcsc2V0U3Ryb2tlUkdCQ29sb3I6NTgsc2V0RmlsbFJHQkNvbG9yOjU5LHNldFN0cm9rZUNNWUtDb2xvcjo2MCxzZXRGaWxsQ01ZS0NvbG9yOjYxLHNoYWRpbmdGaWxsOjYyLGJlZ2luSW5saW5lSW1hZ2U6NjMsYmVnaW5JbWFnZURhdGE6NjQsZW5kSW5saW5lSW1hZ2U6NjUscGFpbnRYT2JqZWN0OjY2LG1hcmtQb2ludDo2NyxtYXJrUG9pbnRQcm9wczo2OCxiZWdpbk1hcmtlZENvbnRlbnQ6NjksYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6NzAsZW5kTWFya2VkQ29udGVudDo3MSxiZWdpbkNvbXBhdDo3MixlbmRDb21wYXQ6NzMscGFpbnRGb3JtWE9iamVjdEJlZ2luOjc0LHBhaW50Rm9ybVhPYmplY3RFbmQ6NzUsYmVnaW5Hcm91cDo3NixlbmRHcm91cDo3NyxiZWdpbkFubm90YXRpb246ODAsZW5kQW5ub3RhdGlvbjo4MSxwYWludEltYWdlTWFza1hPYmplY3Q6ODMscGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXA6ODQscGFpbnRJbWFnZVhPYmplY3Q6ODUscGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6ODYscGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDo4NyxwYWludEltYWdlWE9iamVjdFJlcGVhdDo4OCxwYWludEltYWdlTWFza1hPYmplY3RSZXBlYXQ6ODkscGFpbnRTb2xpZENvbG9ySW1hZ2VNYXNrOjkwLGNvbnN0cnVjdFBhdGg6OTF9LHQuUGFzc3dvcmRSZXNwb25zZXM9e05FRURfUEFTU1dPUkQ6MSxJTkNPUlJFQ1RfUEFTU1dPUkQ6Mn07bGV0IHM9aS5XQVJOSU5HUztmdW5jdGlvbiBvKGUpe3M+PWkuV0FSTklOR1MmJmNvbnNvbGUubG9nKCJXYXJuaW5nOiAiLmNvbmNhdChlKSl9ZnVuY3Rpb24gbChlKXt0aHJvdyBuZXcgRXJyb3IoZSl9ZnVuY3Rpb24gZChlLHQscil7bGV0IG49YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiFuLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pLHJ9Y29uc3QgZj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt0aGlzLmNvbnN0cnVjdG9yPT09ZSYmbCgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUV4Y2VwdGlvbi4iKSx0aGlzLm1lc3NhZ2U9dCx0aGlzLm5hbWU9cn1yZXR1cm4gZS5wcm90b3R5cGU9bmV3IEVycm9yLGUuY29uc3RydWN0b3I9ZSxlfSgpO2Z1bmN0aW9uIGcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5sZW5ndGgpfHxsKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxyPTgxOTI7aWYodDxyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgbj1bXTtmb3IobGV0IGE9MDthPHQ7YSs9cil7Y29uc3QgaT1NYXRoLm1pbihhK3IsdCkscz1lLnN1YmFycmF5KGEsaSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIG4uam9pbigiIil9ZnVuY3Rpb24gcChlKXsic3RyaW5nIiE9dHlwZW9mIGUmJmwoIkludmFsaWQgYXJndW1lbnQgZm9yIHN0cmluZ1RvQnl0ZXMiKTtjb25zdCB0PWUubGVuZ3RoLHI9bmV3IFVpbnQ4QXJyYXkodCk7Zm9yKGxldCBuPTA7bjx0OysrbilyW25dPTI1NSZlLmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9dC5CYXNlRXhjZXB0aW9uPWYsdC5QYXNzd29yZEV4Y2VwdGlvbj1jbGFzcyBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpLHRoaXMuY29kZT10fX0sdC5Vbmtub3duRXJyb3JFeGNlcHRpb249Y2xhc3MgZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIiksdGhpcy5kZXRhaWxzPXR9fSx0LkludmFsaWRQREZFeGNlcHRpb249Y2xhc3MgZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkludmFsaWRQREZFeGNlcHRpb24iKX19LHQuTWlzc2luZ1BERkV4Y2VwdGlvbj1jbGFzcyBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiTWlzc2luZ1BERkV4Y2VwdGlvbiIpfX0sdC5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb249Y2xhc3MgZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIiksdGhpcy5zdGF0dXM9dH19LHQuRm9ybWF0RXJyb3I9Y2xhc3MgZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkZvcm1hdEVycm9yIil9fSx0LkFib3J0RXhjZXB0aW9uPWNsYXNzIGV4dGVuZHMgZntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX0sdC5GZWF0dXJlVGVzdD1jbGFzc3tzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIGQodGhpcywiaXNMaXR0bGVFbmRpYW4iLGZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtyZXR1cm4gZVswXT0xLDE9PT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsMCwxKVswXX0oKSl9c3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKXtyZXR1cm4gZCh0aGlzLCJpc0V2YWxTdXBwb3J0ZWQiLGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oIiIpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSl9c3RhdGljIGdldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCgpe3JldHVybiBkKHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yP2QodGhpcywicGxhdGZvcm0iLHtpc1dpbjohMSxpc01hYzohMX0pOmQodGhpcywicGxhdGZvcm0iLHtpc1dpbjpuYXZpZ2F0b3IucGxhdGZvcm0uaW5jbHVkZXMoIldpbiIpLGlzTWFjOm5hdmlnYXRvci5wbGF0Zm9ybS5pbmNsdWRlcygiTWFjIil9KX19O2NvbnN0IG09Wy4uLkFycmF5KDI1Nikua2V5cygpXS5tYXAoKGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpO3QuVXRpbD1jbGFzc3tzdGF0aWMgbWFrZUhleENvbG9yKGUsdCxyKXtyZXR1cm4iIyIuY29uY2F0KG1bZV0pLmNvbmNhdChtW3RdKS5jb25jYXQobVtyXSl9c3RhdGljIHNjYWxlTWluTWF4KGUsdCl7bGV0IHI7ZVswXT8oZVswXTwwJiYocj10WzBdLHRbMF09dFsxXSx0WzFdPXIpLHRbMF0qPWVbMF0sdFsxXSo9ZVswXSxlWzNdPDAmJihyPXRbMl0sdFsyXT10WzNdLHRbM109ciksdFsyXSo9ZVszXSx0WzNdKj1lWzNdKToocj10WzBdLHRbMF09dFsyXSx0WzJdPXIscj10WzFdLHRbMV09dFszXSx0WzNdPXIsZVsxXTwwJiYocj10WzJdLHRbMl09dFszXSx0WzNdPXIpLHRbMl0qPWVbMV0sdFszXSo9ZVsxXSxlWzJdPDAmJihyPXRbMF0sdFswXT10WzFdLHRbMV09ciksdFswXSo9ZVsyXSx0WzFdKj1lWzJdKSx0WzBdKz1lWzRdLHRbMV0rPWVbNF0sdFsyXSs9ZVs1XSx0WzNdKz1lWzVdfXN0YXRpYyB0cmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMV0qdFsyXSt0WzRdLGVbMF0qdFsxXStlWzFdKnRbM10rdFs1XV19c3RhdGljIGFwcGx5SW52ZXJzZVRyYW5zZm9ybShlLHQpe2NvbnN0IHI9dFswXSp0WzNdLXRbMV0qdFsyXTtyZXR1cm5bKGVbMF0qdFszXS1lWzFdKnRbMl0rdFsyXSp0WzVdLXRbNF0qdFszXSkvciwoLWVbMF0qdFsxXStlWzFdKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvcl19c3RhdGljIGdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCl7Y29uc3Qgcj10aGlzLmFwcGx5VHJhbnNmb3JtKGUsdCksbj10aGlzLmFwcGx5VHJhbnNmb3JtKGUuc2xpY2UoMiw0KSx0KSxhPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMF0sZVszXV0sdCksaT10aGlzLmFwcGx5VHJhbnNmb3JtKFtlWzJdLGVbMV1dLHQpO3JldHVybltNYXRoLm1pbihyWzBdLG5bMF0sYVswXSxpWzBdKSxNYXRoLm1pbihyWzFdLG5bMV0sYVsxXSxpWzFdKSxNYXRoLm1heChyWzBdLG5bMF0sYVswXSxpWzBdKSxNYXRoLm1heChyWzFdLG5bMV0sYVsxXSxpWzFdKV19c3RhdGljIGludmVyc2VUcmFuc2Zvcm0oZSl7Y29uc3QgdD1lWzBdKmVbM10tZVsxXSplWzJdO3JldHVybltlWzNdL3QsLWVbMV0vdCwtZVsyXS90LGVbMF0vdCwoZVsyXSplWzVdLWVbNF0qZVszXSkvdCwoZVs0XSplWzFdLWVbNV0qZVswXSkvdF19c3RhdGljIHNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpe2NvbnN0IHQ9W2VbMF0sZVsyXSxlWzFdLGVbM11dLHI9ZVswXSp0WzBdK2VbMV0qdFsyXSxuPWVbMF0qdFsxXStlWzFdKnRbM10sYT1lWzJdKnRbMF0rZVszXSp0WzJdLGk9ZVsyXSp0WzFdK2VbM10qdFszXSxzPShyK2kpLzIsbz1NYXRoLnNxcnQoKHIraSkqKjItNCoocippLWEqbikpLzIsYz1zK298fDEsbD1zLW98fDE7cmV0dXJuW01hdGguc3FydChjKSxNYXRoLnNxcnQobCldfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtyZXR1cm4gZVswXT5lWzJdJiYodFswXT1lWzJdLHRbMl09ZVswXSksZVsxXT5lWzNdJiYodFsxXT1lWzNdLHRbM109ZVsxXSksdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3Qgcj1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLG49TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihyPm4pcmV0dXJuIG51bGw7Y29uc3QgYT1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLGk9TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gYT5pP251bGw6W3IsYSxuLGldfXN0YXRpYyBiZXppZXJCb3VuZGluZ0JveChlLHQscixuLGEsaSxzLG8pe2NvbnN0IGM9W10sbD1bW10sW11dO2xldCBoLHUsZCxmLGcscCxtLGI7Zm9yKGxldCBsPTA7bDwyOysrbClpZigwPT09bD8odT02KmUtMTIqcis2KmEsaD0tMyplKzkqci05KmErMypzLGQ9MypyLTMqZSk6KHU9Nip0LTEyKm4rNippLGg9LTMqdCs5Km4tOSppKzMqbyxkPTMqbi0zKnQpLE1hdGguYWJzKGgpPDFlLTEyKXtpZihNYXRoLmFicyh1KTwxZS0xMiljb250aW51ZTtmPS1kL3UsMDxmJiZmPDEmJmMucHVzaChmKX1lbHNlIG09dSp1LTQqZCpoLGI9TWF0aC5zcXJ0KG0pLG08MHx8KGc9KC11K2IpLygyKmgpLDA8ZyYmZzwxJiZjLnB1c2goZykscD0oLXUtYikvKDIqaCksMDxwJiZwPDEmJmMucHVzaChwKSk7bGV0IHksdz1jLmxlbmd0aDtjb25zdCB2PXc7Zm9yKDt3LS07KWY9Y1t3XSx5PTEtZixsWzBdW3ddPXkqeSp5KmUrMyp5KnkqZipyKzMqeSpmKmYqYStmKmYqZipzLGxbMV1bd109eSp5KnkqdCszKnkqeSpmKm4rMyp5KmYqZippK2YqZipmKm87cmV0dXJuIGxbMF1bdl09ZSxsWzFdW3ZdPXQsbFswXVt2KzFdPXMsbFsxXVt2KzFdPW8sbFswXS5sZW5ndGg9bFsxXS5sZW5ndGg9disyLFtNYXRoLm1pbiguLi5sWzBdKSxNYXRoLm1pbiguLi5sWzFdKSxNYXRoLm1heCguLi5sWzBdKSxNYXRoLm1heCguLi5sWzFdKV19fTtjb25zdCBiPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiB5KGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX10LlByb21pc2VDYXBhYmlsaXR5PShuPW5ldyBXZWFrTWFwLGNsYXNze2NvbnN0cnVjdG9yKCl7Yyh0aGlzLG4se3dyaXRhYmxlOiEwLHZhbHVlOiExfSksdGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKCgoZSx0KT0+e3RoaXMucmVzb2x2ZT10PT57dSh0aGlzLG4sITApLGUodCl9LHRoaXMucmVqZWN0PWU9Pnt1KHRoaXMsbiwhMCksdChlKX19KSl9Z2V0IHNldHRsZWQoKXtyZXR1cm4gaCh0aGlzLG4pfX0pO2xldCB3PW51bGwsdj1udWxsfSwoZSx0LHIpPT57dmFyIG49cig0OCksYT1yKDE0KSxpPXIoNzcpLHM9cigxNDYpLG89VVJMU2VhcmNoUGFyYW1zLGM9by5wcm90b3R5cGUsbD1hKGMuYXBwZW5kKSxoPWEoYy5kZWxldGUpLHU9YShjLmZvckVhY2gpLGQ9YShbXS5wdXNoKSxmPW5ldyBvKCJhPTEmYT0yIik7Zi5kZWxldGUoImEiLDEpLGYrIiIhPSJhPTIiJiZuKGMsImRlbGV0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgscj10PDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZih0JiZ2b2lkIDA9PT1yKXJldHVybiBoKHRoaXMsZSk7dmFyIG49W107dSh0aGlzLChmdW5jdGlvbihlLHQpe2Qobix7a2V5OnQsdmFsdWU6ZX0pfSkpLHModCwxKTtmb3IodmFyIGEsbz1pKGUpLGM9aShyKSxmPTAsZz0wLHA9ITEsbT1uLmxlbmd0aDtmPG07KWE9bltmKytdLHB8fGEua2V5PT09bz8ocD0hMCxoKHRoaXMsYS5rZXkpKTpnKys7Zm9yKDtnPG07KShhPW5bZysrXSkua2V5PT09byYmYS52YWx1ZT09PWN8fGwodGhpcyxhLmtleSxhLnZhbHVlKX0pLHtlbnVtZXJhYmxlOiEwLHVuc2FmZTohMH0pfSxlPT57dmFyIHQ9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKGU8cil0aHJvdyB0KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiBlfX0sKGUsdCxyKT0+e3ZhciBuPXIoNDgpLGE9cigxNCksaT1yKDc3KSxzPXIoMTQ2KSxvPVVSTFNlYXJjaFBhcmFtcyxjPW8ucHJvdG90eXBlLGw9YShjLmdldEFsbCksaD1hKGMuaGFzKTtuZXcgbygiYT0xIikuaGFzKCJhIiwyKSYmbihjLCJoYXMiLChmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9dDwyP3ZvaWQgMDphcmd1bWVudHNbMV07aWYodCYmdm9pZCAwPT09cilyZXR1cm4gaCh0aGlzLGUpO3ZhciBuPWwodGhpcyxlKTtzKHQsMSk7Zm9yKHZhciBhPWkociksbz0wO288bi5sZW5ndGg7KWlmKG5bbysrXT09PWEpcmV0dXJuITA7cmV0dXJuITF9KSx7ZW51bWVyYWJsZTohMCx1bnNhZmU6ITB9KX0sKGUsdCxyKT0+e3ZhciBuPXIoNiksYT1yKDE0KSxpPXIoODcpLHM9VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSxvPWEocy5mb3JFYWNoKTtuJiYhKCJzaXplImluIHMpJiZpKHMsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgZT0wO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKCl7ZSsrfSkpLGV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5YUmVmUGFyc2VFeGNlcHRpb249dC5YUmVmRW50cnlFeGNlcHRpb249dC5QYXJzZXJFT0ZFeGNlcHRpb249dC5QREZfVkVSU0lPTl9SRUdFWFA9dC5NaXNzaW5nRGF0YUV4Y2VwdGlvbj12b2lkIDAsdC5hcnJheUJ1ZmZlcnNUb0J5dGVzPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgcj0wO2ZvcihsZXQgbj0wO248dDtuKyspcis9ZVtuXS5ieXRlTGVuZ3RoO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkocik7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbcl0pO24uc2V0KHQsYSksYSs9dC5ieXRlTGVuZ3RofXJldHVybiBufSx0LmNvbGxlY3RBY3Rpb25zPWZ1bmN0aW9uKGUsdCxyKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCkscz1oKHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHMpZm9yKGxldCB0PXMubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IG49c1t0XTtpZihuIGluc3RhbmNlb2YgYS5EaWN0KWZvcihjb25zdCB0IG9mIG4uZ2V0S2V5cygpKXtjb25zdCBzPXJbdF07aWYoIXMpY29udGludWU7Y29uc3Qgbz1bXTtkKG4uZ2V0UmF3KHQpLGUsbyxuZXcgYS5SZWZTZXQpLG8ubGVuZ3RoPjAmJihpW3NdPW8pfX1pZih0LmhhcygiQSIpKXtjb25zdCByPVtdO2QodC5nZXQoIkEiKSxlLHIsbmV3IGEuUmVmU2V0KSxyLmxlbmd0aD4wJiYoaS5BY3Rpb249cil9cmV0dXJuKDAsbi5vYmplY3RTaXplKShpKT4wP2k6bnVsbH0sdC5lbmNvZGVUb1htbFN0cmluZz1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2xldCByPTA7Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWUuY29kZVBvaW50QXQobik7aWYoMzI8PWEmJmE8PTEyNil7Y29uc3QgaT1mW2FdO2kmJihyPG4mJnQucHVzaChlLnN1YnN0cmluZyhyLG4pKSx0LnB1c2goaSkscj1uKzEpfWVsc2UgcjxuJiZ0LnB1c2goZS5zdWJzdHJpbmcocixuKSksdC5wdXNoKCImI3giLmNvbmNhdChhLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLCI7IikpLGE+NTUyOTUmJihhPDU3MzQ0fHxhPjY1NTMzKSYmbisrLHI9bisxfXJldHVybiAwPT09dC5sZW5ndGg/ZToocjxlLmxlbmd0aCYmdC5wdXNoKGUuc3Vic3RyaW5nKHIsZS5sZW5ndGgpKSx0LmpvaW4oIiIpKX0sdC5lc2NhcGVQREZOYW1lPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107bGV0IHI9MDtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KG4pOyhhPDMzfHxhPjEyNnx8MzU9PT1hfHw0MD09PWF8fDQxPT09YXx8NjA9PT1hfHw2Mj09PWF8fDkxPT09YXx8OTM9PT1hfHwxMjM9PT1hfHwxMjU9PT1hfHw0Nz09PWF8fDM3PT09YSkmJihyPG4mJnQucHVzaChlLnN1YnN0cmluZyhyLG4pKSx0LnB1c2goIiMiLmNvbmNhdChhLnRvU3RyaW5nKDE2KSkpLHI9bisxKX1yZXR1cm4gMD09PXQubGVuZ3RoP2U6KHI8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhyLGUubGVuZ3RoKSksdC5qb2luKCIiKSl9LHQuZXNjYXBlU3RyaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjoiXFwiLmNvbmNhdChlKSkpfSx0LmdldEluaGVyaXRhYmxlUHJvcGVydHk9aCx0LmdldExvb2t1cFRhYmxlRmFjdG9yeT1mdW5jdGlvbihlKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSYmKHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxlKHQpLGU9bnVsbCksdH19LHQuZ2V0TmV3QW5ub3RhdGlvbnNNYXA9ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtyLGFdb2YgZSl7aWYoIXIuc3RhcnRzV2l0aChuLkFubm90YXRpb25FZGl0b3JQcmVmaXgpKWNvbnRpbnVlO2xldCBlPXQuZ2V0KGEucGFnZUluZGV4KTtlfHwoZT1bXSx0LnNldChhLnBhZ2VJbmRleCxlKSksZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9LHQuZ2V0Um90YXRpb25NYXRyaXg9ZnVuY3Rpb24oZSx0LHIpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxyXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxyXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX0sdC5pc0FzY2lpPWZ1bmN0aW9uKGUpe3JldHVybi9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX0sdC5pc1doaXRlU3BhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfSx0LmxvZzI9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8PTA/MDpNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKX0sdC5udW1iZXJUb1N0cmluZz1mdW5jdGlvbihlKXtpZihOdW1iZXIuaXNJbnRlZ2VyKGUpKXJldHVybiBlLnRvU3RyaW5nKCk7Y29uc3QgdD1NYXRoLnJvdW5kKDEwMCplKTtyZXR1cm4gdCUxMDA9PTA/KHQvMTAwKS50b1N0cmluZygpOnQlMTA9PTA/ZS50b0ZpeGVkKDEpOmUudG9GaXhlZCgyKX0sdC5wYXJzZVhGQVBhdGg9ZnVuY3Rpb24oZSl7Y29uc3QgdD0vKC4rKVxbKFxkKylcXSQvO3JldHVybiBlLnNwbGl0KCIuIikubWFwKChlPT57Y29uc3Qgcj1lLm1hdGNoKHQpO3JldHVybiByP3tuYW1lOnJbMV0scG9zOnBhcnNlSW50KHJbMl0sMTApfTp7bmFtZTplLHBvczowfX0pKX0sdC5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPDwyND4+MjR9LHQucmVhZFVpbnQxNj1mdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX0sdC5yZWFkVWludDMyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXSk+Pj4wfSx0LnJlY292ZXJKc1VSTD1mdW5jdGlvbihlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYobnVsbCE9dCYmdFsyXSl7Y29uc3QgZT10WzJdO2xldCByPSExO3JldHVybiJ0cnVlIj09PXRbM10mJiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJihyPSEwKSx7dXJsOmUsbmV3V2luZG93OnJ9fXJldHVybiBudWxsfSx0LnN0cmluZ1RvVVRGMTZIZXhTdHJpbmc9ZnVuY3Rpb24oZSl7Y29uc3QgdD1bXTtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpO3QucHVzaCgobj4+OCYyNTUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIiksKDI1NSZuKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKX1yZXR1cm4gdC5qb2luKCIiKX0sdC5zdHJpbmdUb1VURjE2U3RyaW5nPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W107YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSYmdC5wdXNoKCLDvsO/Iik7Zm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47cisrKXtjb25zdCBuPWUuY2hhckNvZGVBdChyKTt0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShuPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmbikpfXJldHVybiB0LmpvaW4oIiIpfSx0LnRvUm9tYW5OdW1lcmFscz1mdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdOygwLG4uYXNzZXJ0KShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAsIlRoZSBudW1iZXIgc2hvdWxkIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4iKTtjb25zdCByPVtdO2xldCBhO2Zvcig7ZT49MWUzOyllLT0xZTMsci5wdXNoKCJNIik7YT1lLzEwMHwwLGUlPTEwMCxyLnB1c2godVthXSksYT1lLzEwfDAsZSU9MTAsci5wdXNoKHVbMTArYV0pLHIucHVzaCh1WzIwK2VdKTtjb25zdCBpPXIuam9pbigiIik7cmV0dXJuIHQ/aS50b0xvd2VyQ2FzZSgpOml9LHQudmFsaWRhdGVDU1NGb250PWZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTpyLGZvbnRXZWlnaHQ6bixpdGFsaWNBbmdsZTphfT1lO2lmKCFnKHIsITApKXJldHVybiExO2NvbnN0IGk9bj9uLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKGkpP2k6IjQwMCI7Y29uc3Qgcz1wYXJzZUZsb2F0KGEpO3JldHVybiBlLml0YWxpY0FuZ2xlPWlzTmFOKHMpfHxzPC05MHx8cz45MD8iMTQiOmEudG9TdHJpbmcoKSwhMH0sdC52YWxpZGF0ZUZvbnROYW1lPWcscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpLHIoMTM5KSxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNykscigyKTt2YXIgbj1yKDE0NCksYT1yKDE1MCksaT1yKDE1MSk7dC5QREZfVkVSU0lPTl9SRUdFWFA9L15bMS05XVwuXGQkLztjbGFzcyBzIGV4dGVuZHMgbi5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoIk1pc3NpbmcgZGF0YSBbIi5jb25jYXQoZSwiLCAiKS5jb25jYXQodCwiKSIpLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpLHRoaXMuYmVnaW49ZSx0aGlzLmVuZD10fX10Lk1pc3NpbmdEYXRhRXhjZXB0aW9uPXM7Y2xhc3MgbyBleHRlbmRzIG4uQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19dC5QYXJzZXJFT0ZFeGNlcHRpb249bztjbGFzcyBjIGV4dGVuZHMgbi5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX10LlhSZWZFbnRyeUV4Y2VwdGlvbj1jO2NsYXNzIGwgZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZlBhcnNlRXhjZXB0aW9uIil9fWZ1bmN0aW9uIGgoZSl7bGV0IHQse2RpY3Q6cixrZXk6bixnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6cz0hMH09ZTtjb25zdCBvPW5ldyBhLlJlZlNldDtmb3IoO3IgaW5zdGFuY2VvZiBhLkRpY3QmJighci5vYmpJZHx8IW8uaGFzKHIub2JqSWQpKTspe3Iub2JqSWQmJm8ucHV0KHIub2JqSWQpO2NvbnN0IGU9aT9yLmdldEFycmF5KG4pOnIuZ2V0KG4pO2lmKHZvaWQgMCE9PWUpe2lmKHMpcmV0dXJuIGU7KHR8fCh0PVtdKSkucHVzaChlKX1yPXIuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gdH10LlhSZWZQYXJzZUV4Y2VwdGlvbj1sO2NvbnN0IHU9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiBkKGUsdCxyLHMpe2lmKCFlKXJldHVybjtsZXQgbz1udWxsO2lmKGUgaW5zdGFuY2VvZiBhLlJlZil7aWYocy5oYXMoZSkpcmV0dXJuO289ZSxzLnB1dChvKSxlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgbiBvZiBlKWQobix0LHIscyk7ZWxzZSBpZihlIGluc3RhbmNlb2YgYS5EaWN0KXtpZigoMCxhLmlzTmFtZSkoZS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXtjb25zdCB0PWUuZ2V0KCJKUyIpO2xldCBhO3QgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0/YT10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKGE9dCksYSYmKGE9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSkucmVwbGFjZUFsbCgiXDAiLCIiKSksYSYmci5wdXNoKGEpfWQoZS5nZXRSYXcoIk5leHQiKSx0LHIscyl9byYmcy5yZW1vdmUobyl9Y29uc3QgZj17NjA6IiZsdDsiLDYyOiImZ3Q7IiwzODoiJmFtcDsiLDM0OiImcXVvdDsiLDM5OiImYXBvczsifTtmdW5jdGlvbiBnKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3Qgcj0vXigifCcpLiooInwnKSQvLmV4ZWMoZSk7aWYociYmclsxXT09PXJbMl0pe2lmKG5ldyBSZWdFeHAoIlteXFxcXF0iLmNvbmNhdChyWzFdKSkudGVzdChlLnNsaWNlKDEsLTEpKSlyZXR1cm4gdCYmKDAsbi53YXJuKSgiRm9udEZhbWlseSBjb250YWlucyB1bmVzY2FwZWQgIi5jb25jYXQoclsxXSwiOiAiKS5jb25jYXQoZSwiLiIpKSwhMX1lbHNlIGZvcihjb25zdCByIG9mIGUuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKFxkfCgtKFxkfC0pKSkvLnRlc3Qocil8fCEvXltcdy1cXF0rJC8udGVzdChyKSlyZXR1cm4gdCYmKDAsbi53YXJuKSgiRm9udEZhbWlseSBjb250YWlucyBpbnZhbGlkIDxjdXN0b20taWRlbnQ+OiAiLmNvbmNhdChlLCIuIikpLCExO3JldHVybiEwfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlJlZlNldENhY2hlPXQuUmVmU2V0PXQuUmVmPXQuTmFtZT10LkVPRj10LkRpY3Q9dC5DbWQ9dC5DSVJDVUxBUl9SRUY9dm9pZCAwLHQuY2xlYXJQcmltaXRpdmVDYWNoZXM9ZnVuY3Rpb24oKXtzPU9iamVjdC5jcmVhdGUobnVsbCksbz1PYmplY3QuY3JlYXRlKG51bGwpLGM9T2JqZWN0LmNyZWF0ZShudWxsKX0sdC5pc0NtZD1mdW5jdGlvbihlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgaCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9LHQuaXNEaWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBkJiYodm9pZCAwPT09dHx8bShlLmdldCgiVHlwZSIpLHQpKX0sdC5pc05hbWU9bSx0LmlzUmVmc0VxdWFsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59LHIoMTM5KSxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNyk7dmFyIG49cigxNDQpO2NvbnN0IGE9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKTt0LkNJUkNVTEFSX1JFRj1hO2NvbnN0IGk9U3ltYm9sKCJFT0YiKTt0LkVPRj1pO2xldCBzPU9iamVjdC5jcmVhdGUobnVsbCksbz1PYmplY3QuY3JlYXRlKG51bGwpLGM9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBse2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7dmFyIHQ7cmV0dXJuKHQ9bylbZV18fCh0W2VdPW5ldyBsKGUpKX19dC5OYW1lPWw7Y2xhc3MgaHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7dmFyIHQ7cmV0dXJuKHQ9cylbZV18fCh0W2VdPW5ldyBoKGUpKX19dC5DbWQ9aDtjb25zdCB1PWZ1bmN0aW9uKCl7cmV0dXJuIHV9O2NsYXNzIGR7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDt0aGlzLl9tYXA9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnhyZWY9ZSx0aGlzLm9iaklkPW51bGwsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb249ITEsdGhpcy5fX25vblNlcmlhbGl6YWJsZV9fPXV9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApLmxlbmd0aH1nZXQoZSx0LHIpe2xldCBuPXRoaXMuX21hcFtlXTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmKG49dGhpcy5fbWFwW3RdLHZvaWQgMD09PW4mJnZvaWQgMCE9PXImJihuPXRoaXMuX21hcFtyXSkpLG4gaW5zdGFuY2VvZiBmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKG4sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOm59YXN5bmMgZ2V0QXN5bmMoZSx0LHIpe2xldCBuPXRoaXMuX21hcFtlXTtyZXR1cm4gdm9pZCAwPT09biYmdm9pZCAwIT09dCYmKG49dGhpcy5fbWFwW3RdLHZvaWQgMD09PW4mJnZvaWQgMCE9PXImJihuPXRoaXMuX21hcFtyXSkpLG4gaW5zdGFuY2VvZiBmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMobix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6bn1nZXRBcnJheShlLHQscil7bGV0IG49dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PW4mJnZvaWQgMCE9PXQmJihuPXRoaXMuX21hcFt0XSx2b2lkIDA9PT1uJiZ2b2lkIDAhPT1yJiYobj10aGlzLl9tYXBbcl0pKSxuIGluc3RhbmNlb2YgZiYmdGhpcy54cmVmJiYobj10aGlzLnhyZWYuZmV0Y2gobix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpLEFycmF5LmlzQXJyYXkobikpe249bi5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdaW5zdGFuY2VvZiBmJiZ0aGlzLnhyZWYmJihuW2VdPXRoaXMueHJlZi5mZXRjaChuW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIG59Z2V0UmF3KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Z2V0S2V5cygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXApfWdldFJhd1ZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX21hcCl9c2V0KGUsdCl7dGhpcy5fbWFwW2VdPXR9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLl9tYXApZSh0LHRoaXMuZ2V0KHQpKX1zdGF0aWMgZ2V0IGVtcHR5KCl7Y29uc3QgZT1uZXcgZChudWxsKTtyZXR1cm4gZS5zZXQ9KGUsdCk9PnsoMCxuLnVucmVhY2hhYmxlKSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfSwoMCxuLnNoYWRvdykodGhpcywiZW1wdHkiLGUpfXN0YXRpYyBtZXJnZShlKXtsZXR7eHJlZjp0LGRpY3RBcnJheTpyLG1lcmdlU3ViRGljdHM6bj0hMX09ZTtjb25zdCBhPW5ldyBkKHQpLGk9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiByKWlmKGUgaW5zdGFuY2VvZiBkKWZvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVudHJpZXMoZS5fbWFwKSl7bGV0IGU9aS5nZXQodCk7aWYodm9pZCAwPT09ZSllPVtdLGkuc2V0KHQsZSk7ZWxzZSBpZighKG4mJnIgaW5zdGFuY2VvZiBkKSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W2Uscl1vZiBpKXtpZigxPT09ci5sZW5ndGh8fCEoclswXWluc3RhbmNlb2YgZCkpe2EuX21hcFtlXT1yWzBdO2NvbnRpbnVlfWNvbnN0IG49bmV3IGQodCk7Zm9yKGNvbnN0IGUgb2Ygcilmb3IoY29uc3RbdCxyXW9mIE9iamVjdC5lbnRyaWVzKGUuX21hcCkpdm9pZCAwPT09bi5fbWFwW3RdJiYobi5fbWFwW3RdPXIpO24uc2l6ZT4wJiYoYS5fbWFwW2VdPW4pfXJldHVybiBpLmNsZWFyKCksYS5zaXplPjA/YTpkLmVtcHR5fX10LkRpY3Q9ZDtjbGFzcyBme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZSx0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj8iIi5jb25jYXQodGhpcy5udW0sIlIiKToiIi5jb25jYXQodGhpcy5udW0sIlIiKS5jb25jYXQodGhpcy5nZW4pfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9Y1tlXTtpZih0KXJldHVybiB0O2NvbnN0IHI9L14oXGQrKVIoXGQqKSQvLmV4ZWMoZSk7cmV0dXJuIHImJiIwIiE9PXJbMV0/Y1tlXT1uZXcgZihwYXJzZUludChyWzFdKSxyWzJdP3BhcnNlSW50KHJbMl0pOjApOm51bGx9c3RhdGljIGdldChlLHQpe3ZhciByO2NvbnN0IG49MD09PXQ/IiIuY29uY2F0KGUsIlIiKToiIi5jb25jYXQoZSwiUiIpLmNvbmNhdCh0KTtyZXR1cm4ocj1jKVtuXXx8KHJbbl09bmV3IGYoZSx0KSl9fXQuUmVmPWY7Y2xhc3MgZ3tjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3RoaXMuX3NldD1uZXcgU2V0KG51bGw9PWU/dm9pZCAwOmUuX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX10LlJlZlNldD1nO2NsYXNzIHB7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZS50b1N0cmluZygpKX1oYXMoZSl7cmV0dXJuIHRoaXMuX21hcC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0KX1wdXRBbGlhcyhlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHRoaXMuZ2V0KHQpKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19ZnVuY3Rpb24gbShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgbCYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfXQuUmVmU2V0Q2FjaGU9cH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkJhc2VTdHJlYW09dm9pZCAwO3ZhciBuPXIoMTQ0KTtjbGFzcyBhe2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PWEmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU3RyZWFtLiIpfWdldCBsZW5ndGgoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9Z2V0IGlzRW1wdHkoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7cmV0dXJuLTEhPT1lJiZ0aGlzLnBvcy0tLGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTtyZXR1cm4gdGhpcy5wb3MtPXQubGVuZ3RoLHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4oMCxuLmJ5dGVzVG9TdHJpbmcpKHRoaXMuZ2V0Qnl0ZXMoZSkpfXNraXAoZSl7dGhpcy5wb3MrPWV8fDF9cmVzZXQoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXNldGAgY2FsbGVkIil9bW92ZVN0YXJ0KCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbW92ZVN0YXJ0YCBjYWxsZWQiKX1tYWtlU3ViU3RyZWFtKGUsdCl7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gbnVsbH19dC5CYXNlU3RyZWFtPWF9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5OZXR3b3JrUGRmTWFuYWdlcj10LkxvY2FsUGRmTWFuYWdlcj12b2lkIDA7dmFyIG49cigxNDQpLGE9cigxNTMpLGk9cigxNDkpLHM9cigxNTUpLG89cigxNTQpO2NsYXNzIGN7Y29uc3RydWN0b3IoZSl7dmFyIHQ7dGhpcy5jb25zdHJ1Y3Rvcj09PWMmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlUGRmTWFuYWdlci4iKSx0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uKGUpe2lmKGUpe2NvbnN0IHQ9KDAsbi5jcmVhdGVWYWxpZEFic29sdXRlVXJsKShlKTtpZih0KXJldHVybiB0LmhyZWY7KDAsbi53YXJuKSgnSW52YWxpZCBhYnNvbHV0ZSBkb2NCYXNlVXJsOiAiJy5jb25jYXQoZSwnIi4nKSl9cmV0dXJuIG51bGx9KGUuZG9jQmFzZVVybCksdGhpcy5fZG9jSWQ9ZS5kb2NJZCx0aGlzLl9wYXNzd29yZD1lLnBhc3N3b3JkLHRoaXMuZW5hYmxlWGZhPWUuZW5hYmxlWGZhLCh0PWUuZXZhbHVhdG9yT3B0aW9ucykuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJih0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPW4uRmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpLHRoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnN9Z2V0IGRvY0lkKCl7cmV0dXJuIHRoaXMuX2RvY0lkfWdldCBwYXNzd29yZCgpe3JldHVybiB0aGlzLl9wYXNzd29yZH1nZXQgZG9jQmFzZVVybCgpe2NvbnN0IGU9dGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2NCYXNlVXJsIixlLmJhc2VVcmx8fHRoaXMuX2RvY0Jhc2VVcmwpfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jbGVhbnVwKGUpfWFzeW5jIGVuc3VyZShlLHQscil7KDAsbi51bnJlYWNoYWJsZSkoIkFic3RyYWN0IG1ldGhvZCBgZW5zdXJlYCBjYWxsZWQiKX1yZXF1ZXN0UmFuZ2UoZSx0KXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0UmFuZ2VgIGNhbGxlZCIpfXJlcXVlc3RMb2FkZWRTdHJlYW0oKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpeygwLG4udW5yZWFjaGFibGUpKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fXQuTG9jYWxQZGZNYW5hZ2VyPWNsYXNzIGV4dGVuZHMgY3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdCB0PW5ldyBvLlN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgcy5QREZEb2N1bWVudCh0aGlzLHQpLHRoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKHQpfWFzeW5jIGVuc3VyZShlLHQscil7Y29uc3Qgbj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkoZSxyKTpufXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKCl7cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbVByb21pc2V9dGVybWluYXRlKGUpe319LHQuTmV0d29ya1BkZk1hbmFnZXI9Y2xhc3MgZXh0ZW5kcyBje2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuc3RyZWFtTWFuYWdlcj1uZXcgYS5DaHVua2VkU3RyZWFtTWFuYWdlcihlLnNvdXJjZSx7bXNnSGFuZGxlcjplLmhhbmRsZXIsbGVuZ3RoOmUubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6ZS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmUucmFuZ2VDaHVua1NpemV9KSx0aGlzLnBkZkRvY3VtZW50PW5ldyBzLlBERkRvY3VtZW50KHRoaXMsdGhpcy5zdHJlYW1NYW5hZ2VyLmdldFN0cmVhbSgpKX1hc3luYyBlbnN1cmUoZSx0LHIpe3RyeXtjb25zdCBuPWVbdF07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseShlLHIpOm59Y2F0Y2gobil7aWYoIShuIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgbjtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0UmFuZ2Uobi5iZWdpbixuLmVuZCksdGhpcy5lbnN1cmUoZSx0LHIpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdEFsbENodW5rcyhlKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5vblJlY2VpdmVEYXRhKHtjaHVuazplfSl9dGVybWluYXRlKGUpe3RoaXMuc3RyZWFtTWFuYWdlci5hYm9ydChlKX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ2h1bmtlZFN0cmVhbU1hbmFnZXI9dC5DaHVua2VkU3RyZWFtPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigxMTYpLHIoMTI2KSxyKDEyOCkscigxMzEpLHIoMTMzKSxyKDEzNSkscigxMzcpLHIoMTM5KSxyKDIpO3ZhciBuPXIoMTQ5KSxhPXIoMTQ0KSxpPXIoMTU0KTtjbGFzcyBzIGV4dGVuZHMgaS5TdHJlYW17Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKG5ldyBVaW50OEFycmF5KGUpLDAsZSxudWxsKSx0aGlzLmNodW5rU2l6ZT10LHRoaXMuX2xvYWRlZENodW5rcz1uZXcgU2V0LHRoaXMubnVtQ2h1bmtzPU1hdGguY2VpbChlL3QpLHRoaXMubWFuYWdlcj1yLHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPTAsdGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz0tMX1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxyPXRoaXMubnVtQ2h1bmtzO3Q8cjsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCByPXRoaXMuY2h1bmtTaXplO2lmKGUlciE9MCl0aHJvdyBuZXcgRXJyb3IoIkJhZCBiZWdpbiBvZmZzZXQ6ICIuY29uY2F0KGUpKTtjb25zdCBuPWUrdC5ieXRlTGVuZ3RoO2lmKG4lciE9MCYmbiE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQmFkIGVuZCBvZmZzZXQ6ICIuY29uY2F0KG4pKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBhPU1hdGguZmxvb3IoZS9yKSxpPU1hdGguZmxvb3IoKG4tMSkvcikrMTtmb3IobGV0IGU9YTtlPGk7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IHI9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KSx0Kz1lLmJ5dGVMZW5ndGgsdGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCBuPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPXI7ZTxuOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbihlLGUrMSk7dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuaz10fX1lbnN1cmVSYW5nZShlLHQpe2lmKGU+PXQpcmV0dXJuO2lmKHQ8PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCByPU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYocj50aGlzLm51bUNodW5rcylyZXR1cm47Y29uc3QgYT1NYXRoLm1pbihNYXRoLmZsb29yKCh0LTEpL3RoaXMuY2h1bmtTaXplKSsxLHRoaXMubnVtQ2h1bmtzKTtmb3IobGV0IGk9cjtpPGE7KytpKWlmKCF0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGkpKXRocm93IG5ldyBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IHI9MDtyPHQ7KytyKXtjb25zdCBuPShlK3IpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMobikpcmV0dXJuIG59cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7cmV0dXJuIGU+PXRoaXMuZW5kPy0xOihlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpLHRoaXMuYnl0ZXNbdGhpcy5wb3MrK10pfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxyPXRoaXMucG9zLG49dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIG4+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UocixuKSx0LnN1YmFycmF5KHIsbik7bGV0IGE9citlO3JldHVybiBhPm4mJihhPW4pLGE+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UocixhKSx0aGlzLnBvcz1hLHQuc3ViYXJyYXkocixhKX1nZXRCeXRlUmFuZ2UoZSx0KXtyZXR1cm4gZTwwJiYoZT0wKSx0PnRoaXMuZW5kJiYodD10aGlzLmVuZCksdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpLHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1tYWtlU3ViU3RyZWFtKGUsdCl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7ZnVuY3Rpb24gbigpe310P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpLG4ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLHI9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxuPVtdO2ZvcihsZXQgZT10O2U8cjsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8bi5wdXNoKGUpO3JldHVybiBufSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCBhPW5ldyBuO3JldHVybiBhLnBvcz1hLnN0YXJ0PWUsYS5lbmQ9ZSt0fHx0aGlzLmVuZCxhLmRpY3Q9cixhfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX10LkNodW5rZWRTdHJlYW09cyx0LkNodW5rZWRTdHJlYW1NYW5hZ2VyPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGgsdGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZSx0aGlzLnN0cmVhbT1uZXcgcyh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKSx0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZSx0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoLHRoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXIsdGhpcy5jdXJyUmVxdWVzdElkPTAsdGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXAsdGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXAsdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcCx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wLHRoaXMuYWJvcnRlZD0hMSx0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5PW5ldyBhLlByb21pc2VDYXBhYmlsaXR5fXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3Qgcj10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtyLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoci5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgYT1bXSxpPTA7cmV0dXJuIG5ldyBQcm9taXNlKCgoZSx0KT0+e2NvbnN0IHM9bz0+e2xldHt2YWx1ZTpjLGRvbmU6bH09bzt0cnl7aWYobCl7Y29uc3QgdD0oMCxuLmFycmF5QnVmZmVyc1RvQnl0ZXMpKGEpO3JldHVybiBhPW51bGwsdm9pZCBlKHQpfWkrPWMuYnl0ZUxlbmd0aCxyLmlzU3RyZWFtaW5nU3VwcG9ydGVkJiZ0aGlzLm9uUHJvZ3Jlc3Moe2xvYWRlZDppfSksYS5wdXNoKGMpLHIucmVhZCgpLnRoZW4ocyx0KX1jYXRjaChlKXt0KGUpfX07ci5yZWFkKCkudGhlbihzLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcygpe2lmKCEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSkpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLHI9bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQscik7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8ci5hZGQodCk7aWYoMD09PXIuc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3Qgbj1uZXcgYS5Qcm9taXNlQ2FwYWJpbGl0eTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxuKTtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIHIpe2xldCByPXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7cnx8KHI9W10sdGhpcy5fcmVxdWVzdHNCeUNodW5rLnNldChlLHIpLGkucHVzaChlKSksci5wdXNoKHQpfWlmKGkubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxyPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxyKS5jYXRjaChuLnJlamVjdCl9fXJldHVybiBuLnByb21pc2UuY2F0Y2goKGU9PntpZighdGhpcy5hYm9ydGVkKXRocm93IGV9KSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3Qgcj10aGlzLmdldEJlZ2luQ2h1bmsoZSksbj10aGlzLmdldEVuZENodW5rKHQpLGE9W107Zm9yKGxldCBlPXI7ZTxuOysrZSlhLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3MoYSl9cmVxdWVzdFJhbmdlcygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpbXTtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKHIuYmVnaW4pLG49dGhpcy5nZXRFbmRDaHVuayhyLmVuZCk7Zm9yKGxldCByPWU7cjxuOysrcil0LmluY2x1ZGVzKHIpfHx0LnB1c2gocil9cmV0dXJuIHQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpLHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgcj0tMSxuPS0xO2ZvcihsZXQgYT0wLGk9ZS5sZW5ndGg7YTxpOysrYSl7Y29uc3QgaT1lW2FdO3I8MCYmKHI9aSksbj49MCYmbisxIT09aSYmKHQucHVzaCh7YmVnaW5DaHVuazpyLGVuZENodW5rOm4rMX0pLHI9aSksYSsxPT09ZS5sZW5ndGgmJnQucHVzaCh7YmVnaW5DaHVuazpyLGVuZENodW5rOmkrMX0pLG49aX1yZXR1cm4gdH1vblByb2dyZXNzKGUpe3RoaXMubXNnSGFuZGxlci5zZW5kKCJEb2NQcm9ncmVzcyIse2xvYWRlZDp0aGlzLnN0cmVhbS5udW1DaHVua3NMb2FkZWQqdGhpcy5jaHVua1NpemUrZS5sb2FkZWQsdG90YWw6dGhpcy5sZW5ndGh9KX1vblJlY2VpdmVEYXRhKGUpe2NvbnN0IHQ9ZS5jaHVuayxyPXZvaWQgMD09PWUuYmVnaW4sbj1yP3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoOmUuYmVnaW4sYT1uK3QuYnl0ZUxlbmd0aCxpPU1hdGguZmxvb3Iobi90aGlzLmNodW5rU2l6ZSkscz1hPHRoaXMubGVuZ3RoP01hdGguZmxvb3IoYS90aGlzLmNodW5rU2l6ZSk6TWF0aC5jZWlsKGEvdGhpcy5jaHVua1NpemUpO3I/KHRoaXMuc3RyZWFtLm9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YSh0KSx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD1hKTp0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKG4sdCksdGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPWk7ZTxzOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KHIpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKSx0LnNpemU+MHx8by5wdXNoKHIpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsocyk7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKSx0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMCx0aGlzLnBkZk5ldHdvcmtTdHJlYW0mJnRoaXMucGRmTmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC52YWx1ZXMoKSl0LnJlamVjdChlKX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU3RyaW5nU3RyZWFtPXQuU3RyZWFtPXQuTnVsbFN0cmVhbT12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTUxKSxhPXIoMTQ0KTtjbGFzcyBpIGV4dGVuZHMgbi5CYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxyLG4pe3N1cGVyKCksdGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpLHRoaXMuc3RhcnQ9dHx8MCx0aGlzLnBvcz10aGlzLnN0YXJ0LHRoaXMuZW5kPXQrcnx8dGhpcy5ieXRlcy5sZW5ndGgsdGhpcy5kaWN0PW59Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxyPXRoaXMucG9zLG49dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIHQuc3ViYXJyYXkocixuKTtsZXQgYT1yK2U7cmV0dXJuIGE+biYmKGE9biksdGhpcy5wb3M9YSx0LnN1YmFycmF5KHIsYSl9Z2V0Qnl0ZVJhbmdlKGUsdCl7cmV0dXJuIGU8MCYmKGU9MCksdD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpLHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7cmV0dXJuIG5ldyBpKHRoaXMuYnl0ZXMuYnVmZmVyLGUsdCxyKX19dC5TdHJlYW09aSx0LlN0cmluZ1N0cmVhbT1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3IoZSl7c3VwZXIoKDAsYS5zdHJpbmdUb0J5dGVzKShlKSl9fSx0Lk51bGxTdHJlYW09Y2xhc3MgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5QYWdlPXQuUERGRG9jdW1lbnQ9dm9pZCAwLHIoMikscigxMzkpLHIoMTE2KSxyKDEyNikscigxMjgpLHIoMTMxKSxyKDEzMykscigxMzUpLHIoMTM3KSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpLGE9cigxNTYpLGk9cigxNDkpLGM9cigxNTApLGw9cigyMDEpLGg9cigxNTEpLHU9cigyMTgpLGQ9cigyMjApLGY9cigyMjIpLGc9cigyNTUpLHA9cigxNjYpLG09cigxNTQpLGI9cigyMjYpLHk9cigyMTQpLHc9cigxNjMpLHY9cigxNjgpLHg9cigyMjUpLFM9cigyMTYpLEE9cigyMjcpLGs9cigyNTYpO2NvbnN0IEM9WzAsMCw2MTIsNzkyXTt2YXIgTz1uZXcgV2Vha1NldDtjbGFzcyBGe2NvbnN0cnVjdG9yKGUpe3ModGhpcyxPKTtsZXR7cGRmTWFuYWdlcjp0LHhyZWY6cixwYWdlSW5kZXg6bixwYWdlRGljdDphLHJlZjppLGdsb2JhbElkRmFjdG9yeTpvLGZvbnRDYWNoZTpjLGJ1aWx0SW5DTWFwQ2FjaGU6bCxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6aCxnbG9iYWxJbWFnZUNhY2hlOnUsc3lzdGVtRm9udENhY2hlOmQsbm9uQmxlbmRNb2Rlc1NldDpmLHhmYUZhY3Rvcnk6Z309ZTt0aGlzLnBkZk1hbmFnZXI9dCx0aGlzLnBhZ2VJbmRleD1uLHRoaXMucGFnZURpY3Q9YSx0aGlzLnhyZWY9cix0aGlzLnJlZj1pLHRoaXMuZm9udENhY2hlPWMsdGhpcy5idWlsdEluQ01hcENhY2hlPWwsdGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9aCx0aGlzLmdsb2JhbEltYWdlQ2FjaGU9dSx0aGlzLnN5c3RlbUZvbnRDYWNoZT1kLHRoaXMubm9uQmxlbmRNb2Rlc1NldD1mLHRoaXMuZXZhbHVhdG9yT3B0aW9ucz10LmV2YWx1YXRvck9wdGlvbnMsdGhpcy5yZXNvdXJjZXNQcm9taXNlPW51bGwsdGhpcy54ZmFGYWN0b3J5PWc7Y29uc3QgcD17b2JqOjB9O3RoaXMuX2xvY2FsSWRGYWN0b3J5PWNsYXNzIGV4dGVuZHMgb3tzdGF0aWMgY3JlYXRlT2JqSWQoKXtyZXR1cm4icCIuY29uY2F0KG4sIl8iKS5jb25jYXQoKytwLm9iail9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3JldHVybiJwIi5jb25jYXQoaS50b1N0cmluZygpKX19fV9nZXRJbmhlcml0YWJsZVByb3BlcnR5KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV07Y29uc3Qgcj0oMCxpLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkocik/MSE9PXIubGVuZ3RoJiZyWzBdaW5zdGFuY2VvZiBjLkRpY3Q/Yy5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6cn0pOnJbMF06cn1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoIlJlc291cmNlcyIpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJyZXNvdXJjZXMiLGUgaW5zdGFuY2VvZiBjLkRpY3Q/ZTpjLkRpY3QuZW1wdHkpfV9nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2xldCB0PXRoaXMuX2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSwhMCk7aWYoQXJyYXkuaXNBcnJheSh0KSYmND09PXQubGVuZ3RoKXtpZih0PW4uVXRpbC5ub3JtYWxpemVSZWN0KHQpLHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDsoMCxuLndhcm4pKCJFbXB0eSwgb3IgaW52YWxpZCwgLyIuY29uY2F0KGUsIiBlbnRyeS4iKSl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIm1lZGlhQm94Iix0aGlzLl9nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8Qyl9Z2V0IGNyb3BCb3goKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY3JvcEJveCIsdGhpcy5fZ2V0Qm91bmRpbmdCb3goIkNyb3BCb3giKXx8dGhpcy5tZWRpYUJveCl9Z2V0IHVzZXJVbml0KCl7bGV0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuKCJudW1iZXIiIT10eXBlb2YgZXx8ZTw9MCkmJihlPTEpLCgwLG4uc2hhZG93KSh0aGlzLCJ1c2VyVW5pdCIsZSl9Z2V0IHZpZXcoKXtjb25zdHtjcm9wQm94OmUsbWVkaWFCb3g6dH09dGhpcztpZihlIT09dCYmISgwLG4uaXNBcnJheUVxdWFsKShlLHQpKXtjb25zdCByPW4uVXRpbC5pbnRlcnNlY3QoZSx0KTtpZihyJiZyWzJdLXJbMF0+MCYmclszXS1yWzFdPjApcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInZpZXciLHIpOygwLG4ud2FybikoIkVtcHR5IC9Dcm9wQm94IGFuZCAvTWVkaWFCb3ggaW50ZXJzZWN0aW9uLiIpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ2aWV3Iix0KX1nZXQgcm90YXRlKCl7bGV0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiUm90YXRlIil8fDA7cmV0dXJuIGUlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApLCgwLG4uc2hhZG93KSh0aGlzLCJyb3RhdGUiLGUpfV9vblN1YlN0cmVhbUVycm9yKGUsdCl7aWYoIXRoaXMuZXZhbHVhdG9yT3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxuLndhcm4pKCJnZXRDb250ZW50U3RyZWFtIC0gaWdub3Jpbmcgc3ViLXN0cmVhbSAoIi5jb25jYXQodCwnKTogIicpLmNvbmNhdChlLCciLicpKX1nZXRDb250ZW50U3RyZWFtKCl7cmV0dXJuIHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpLnRoZW4oKGU9PmUgaW5zdGFuY2VvZiBoLkJhc2VTdHJlYW0/ZTpBcnJheS5pc0FycmF5KGUpP25ldyB2LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuX29uU3ViU3RyZWFtRXJyb3IuYmluZCh0aGlzKSk6bmV3IG0uTnVsbFN0cmVhbSkpfWdldCB4ZmFEYXRhKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX1hc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LHIsbil7aWYodGhpcy54ZmFGYWN0b3J5KXRocm93IG5ldyBFcnJvcigiWEZBOiBDYW5ub3Qgc2F2ZSBuZXcgYW5ub3RhdGlvbnMuIik7Y29uc3QgaT1uZXcgdy5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHM9bmV3IGMuUmVmU2V0LGw9bmV3IGMuUmVmU2V0O28odGhpcyxPLEkpLmNhbGwodGhpcyxyLHMsbCk7Y29uc3QgaD10aGlzLnBhZ2VEaWN0LHU9dGhpcy5hbm5vdGF0aW9ucy5maWx0ZXIoKGU9PiEoZSBpbnN0YW5jZW9mIGMuUmVmJiZzLmhhcyhlKSkpKSxkPWF3YWl0IGEuQW5ub3RhdGlvbkZhY3Rvcnkuc2F2ZU5ld0Fubm90YXRpb25zKGksdCxyLG4pO2Zvcihjb25zdHtyZWY6ZX1vZiBkLmFubm90YXRpb25zKWUgaW5zdGFuY2VvZiBjLlJlZiYmIWwuaGFzKGUpJiZ1LnB1c2goZSk7Y29uc3QgZj1oLmdldCgiQW5ub3RzIik7aC5zZXQoIkFubm90cyIsdSk7Y29uc3QgZz1bXTtsZXQgcD1udWxsO3RoaXMueHJlZi5lbmNyeXB0JiYocD10aGlzLnhyZWYuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpLGF3YWl0KDAsUy53cml0ZU9iamVjdCkodGhpcy5yZWYsaCxnLHApLGYmJmguc2V0KCJBbm5vdHMiLGYpO2NvbnN0IG09ZC5kZXBlbmRlbmNpZXM7cmV0dXJuIG0ucHVzaCh7cmVmOnRoaXMucmVmLGRhdGE6Zy5qb2luKCIiKX0sLi4uZC5hbm5vdGF0aW9ucyksbX1zYXZlKGUsdCxyKXtjb25zdCBhPW5ldyB3LlBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7cmV0dXJuIHRoaXMuX3BhcnNlZEFubm90YXRpb25zLnRoZW4oKGZ1bmN0aW9uKGUpe2NvbnN0IGk9W107Zm9yKGNvbnN0IHMgb2YgZSlzLm11c3RCZVByaW50ZWQocikmJmkucHVzaChzLnNhdmUoYSx0LHIpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxuLndhcm4pKCdzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJy5jb25jYXQodC5uYW1lLCciIHRhc2s6ICInKS5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXtyZXR1cm4gdGhpcy5yZXNvdXJjZXNQcm9taXNlfHwodGhpcy5yZXNvdXJjZXNQcm9taXNlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywicmVzb3VyY2VzIikpLHRoaXMucmVzb3VyY2VzUHJvbWlzZS50aGVuKCgoKT0+bmV3IGIuT2JqZWN0TG9hZGVyKHRoaXMucmVzb3VyY2VzLGUsdGhpcy54cmVmKS5sb2FkKCkpKX1nZXRPcGVyYXRvckxpc3QoZSl7bGV0e2hhbmRsZXI6dCxzaW5rOnIsdGFzazpzLGludGVudDpsLGNhY2hlS2V5OmgsYW5ub3RhdGlvblN0b3JhZ2U6dT1udWxsfT1lO2NvbnN0IGQ9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksZj10aGlzLmxvYWRSZXNvdXJjZXMoWyJDb2xvclNwYWNlIiwiRXh0R1N0YXRlIiwiRm9udCIsIlBhdHRlcm4iLCJQcm9wZXJ0aWVzIiwiU2hhZGluZyIsIlhPYmplY3QiXSksZz1uZXcgdy5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOnQscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHA9dGhpcy54ZmFGYWN0b3J5P251bGw6KDAsaS5nZXROZXdBbm5vdGF0aW9uc01hcCkodSk7bGV0IG09bnVsbCxiPVByb21pc2UucmVzb2x2ZShudWxsKTtpZihwKXtsZXQgZTtjb25zdCB0PXAuZ2V0KHRoaXMucGFnZUluZGV4KTtpZih0KXtjb25zdCByPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOm59b2YgdCkhZXx8bnx8ci5oYXMoZSl8fHIuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOml9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihyLnNpemU+MCl7Y29uc3Qgcz10LnNsaWNlKCk7Zm9yKGNvbnN0W2UsdF1vZiB1KWUuc3RhcnRzV2l0aChuLkFubm90YXRpb25FZGl0b3JQcmVmaXgpJiZ0LmJpdG1hcCYmci5oYXModC5iaXRtYXBJZCkmJnMucHVzaCh0KTtlPWEuQW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMocyx0aGlzLnhyZWYsaSl9ZWxzZSBlPWEuQW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXModCx0aGlzLnhyZWYsaSk7bT1uZXcgYy5SZWZTZXQsbyh0aGlzLE8sSSkuY2FsbCh0aGlzLHQsbSxudWxsKSxiPWEuQW5ub3RhdGlvbkZhY3RvcnkucHJpbnROZXdBbm5vdGF0aW9ucyhnLHMsdCxlKX19Y29uc3Qgdj1Qcm9taXNlLmFsbChbZCxmXSkudGhlbigoZT0+e2xldFtuXT1lO2NvbnN0IGE9bmV3IHkuT3BlcmF0b3JMaXN0KGwscik7cmV0dXJuIHQuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OmcuaGFzQmxlbmRNb2Rlcyh0aGlzLnJlc291cmNlcyx0aGlzLm5vbkJsZW5kTW9kZXNTZXQpLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxjYWNoZUtleTpofSksZy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpuLHRhc2s6cyxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsb3BlcmF0b3JMaXN0OmF9KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBhfSkpfSkpO3JldHVybiBQcm9taXNlLmFsbChbdix0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxiXSkudGhlbigoZnVuY3Rpb24oZSl7bGV0W3QscixhXT1lO2lmKGEpe3I9ci5maWx0ZXIoKGU9PiEoZS5yZWYmJm0uaGFzKGUucmVmKSkpKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IG49YVtlXTtpZihuLnJlZlRvUmVwbGFjZSl7Y29uc3QgaT1yLmZpbmRJbmRleCgoZT0+ZS5yZWYmJigwLGMuaXNSZWZzRXF1YWwpKGUucmVmLG4ucmVmVG9SZXBsYWNlKSkpO2k+PTAmJihyLnNwbGljZShpLDEsbiksYS5zcGxpY2UoZS0tLDEpLHQtLSl9fXI9ci5jb25jYXQoYSl9aWYoMD09PXIubGVuZ3RofHxsJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19ESVNBQkxFKXJldHVybiB0LmZsdXNoKCEwKSx7bGVuZ3RoOnQudG90YWxMZW5ndGh9O2NvbnN0IGk9ISEobCZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfRk9STVMpLG89ISEobCZuLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZKSxoPSEhKGwmbi5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVkpLGQ9ISEobCZuLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpLGY9W107Zm9yKGNvbnN0IGUgb2Ygcikob3x8aCYmZS5tdXN0QmVWaWV3ZWQodSl8fGQmJmUubXVzdEJlUHJpbnRlZCh1KSkmJmYucHVzaChlLmdldE9wZXJhdG9yTGlzdChnLHMsbCxpLHUpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxuLndhcm4pKCdnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICInLmNvbmNhdChzLm5hbWUsJyIgdGFzazogIicpLmNvbmNhdChlLCciLicpKSx7b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGYpLnRoZW4oKGZ1bmN0aW9uKGUpe2xldCByPSExLG49ITE7Zm9yKGNvbnN0e29wTGlzdDphLHNlcGFyYXRlRm9ybTppLHNlcGFyYXRlQ2FudmFzOnN9b2YgZSl0LmFkZE9wTGlzdChhKSxyfHwocj1pKSxufHwobj1zKTtyZXR1cm4gdC5mbHVzaCghMCx7Zm9ybTpyLGNhbnZhczpufSkse2xlbmd0aDp0LnRvdGFsTGVuZ3RofX0pKX0pKX1leHRyYWN0VGV4dENvbnRlbnQoZSl7bGV0e2hhbmRsZXI6dCx0YXNrOnIsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6aX09ZTtjb25zdCBzPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG89dGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il0pO3JldHVybiBQcm9taXNlLmFsbChbcyxvXSkudGhlbigoZT0+e2xldFtzXT1lO3JldHVybiBuZXcgdy5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOnQscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLmdldFRleHRDb250ZW50KHtzdHJlYW06cyx0YXNrOnIscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLGluY2x1ZGVNYXJrZWRDb250ZW50Om4sZGlzYWJsZU5vcm1hbGl6YXRpb246YSxzaW5rOmksdmlld0JveDp0aGlzLnZpZXd9KX0pKX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtyZXR1cm4gZT8oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGU6bnVsbH1fcGFyc2VTdHJ1Y3RUcmVlKGUpe2NvbnN0IHQ9bmV3IHguU3RydWN0VHJlZVBhZ2UoZSx0aGlzLnBhZ2VEaWN0KTtyZXR1cm4gdC5wYXJzZSgpLHR9YXN5bmMgZ2V0QW5ub3RhdGlvbnNEYXRhKGUsdCxyKXtjb25zdCBhPWF3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO2lmKDA9PT1hLmxlbmd0aClyZXR1cm5bXTtjb25zdCBpPVtdLHM9W107bGV0IG87Y29uc3QgYz0hIShyJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5BTlkpLGw9ISEociZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD0hIShyJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCk7Zm9yKGNvbnN0IHIgb2YgYSl7Y29uc3QgYT1jfHxsJiZyLnZpZXdhYmxlOyhhfHxoJiZyLnByaW50YWJsZSkmJmkucHVzaChyLmRhdGEpLHIuaGFzVGV4dENvbnRlbnQmJmEmJihvfHwobz1uZXcgdy5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pKSxzLnB1c2goci5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKChmdW5jdGlvbihlKXsoMCxuLndhcm4pKCdnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIicuY29uY2F0KHQubmFtZSwnIiB0YXNrOiAiJykuY29uY2F0KGUsJyIuJykpfSkpKSl9cmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKHMpLGl9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJBbm5vdHMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiYW5ub3RhdGlvbnMiLEFycmF5LmlzQXJyYXkoZSk/ZTpbXSl9Z2V0IF9wYXJzZWRBbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJhbm5vdGF0aW9ucyIpLnRoZW4oKCgpPT57Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLmFubm90YXRpb25zKWUucHVzaChhLkFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsdCx0aGlzLnBkZk1hbmFnZXIsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4oMCxuLndhcm4pKCdfcGFyc2VkQW5ub3RhdGlvbnM6ICInLmNvbmNhdChlLCciLicpKSxudWxsfSkpKTtyZXR1cm4gUHJvbWlzZS5hbGwoZSkudGhlbigoZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9W107bGV0IHI7Zm9yKGNvbnN0IG4gb2YgZSluJiYobiBpbnN0YW5jZW9mIGEuUG9wdXBBbm5vdGF0aW9uPyhyfHwocj1bXSkpLnB1c2gobik6dC5wdXNoKG4pKTtyZXR1cm4gciYmdC5wdXNoKC4uLnIpLHR9KSl9KSk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIl9wYXJzZWRBbm5vdGF0aW9ucyIsZSl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9KDAsaS5jb2xsZWN0QWN0aW9ucykodGhpcy54cmVmLHRoaXMucGFnZURpY3Qsbi5QYWdlQWN0aW9uRXZlbnRUeXBlKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywianNBY3Rpb25zIixlKX19ZnVuY3Rpb24gSShlLHQscil7Zm9yKGNvbnN0IGEgb2YgZSlpZihhLmlkKXtjb25zdCBlPWMuUmVmLmZyb21TdHJpbmcoYS5pZCk7aWYoIWUpeygwLG4ud2FybikoIkEgbm9uLWxpbmtlZCBhbm5vdGF0aW9uIGNhbm5vdCBiZSBtb2RpZmllZDogIi5jb25jYXQoYS5pZCkpO2NvbnRpbnVlfWlmKGEuZGVsZXRlZCl7dC5wdXQoZSk7Y29udGludWV9bnVsbD09cnx8ci5wdXQoZSksYS5yZWY9ZSxkZWxldGUgYS5pZH19dC5QYWdlPUY7Y29uc3QgVD1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxNPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksRT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIFAoZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MTAyNCxuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107Y29uc3QgYT10Lmxlbmd0aCxpPWUucGVla0J5dGVzKHIpLHM9aS5sZW5ndGgtYTtpZihzPD0wKXJldHVybiExO2lmKG4pe2NvbnN0IHI9YS0xO2xldCBuPWkubGVuZ3RoLTE7Zm9yKDtuPj1yOyl7bGV0IHM9MDtmb3IoO3M8YSYmaVtuLXNdPT09dFtyLXNdOylzKys7aWYocz49YSlyZXR1cm4gZS5wb3MrPW4tciwhMDtuLS19fWVsc2V7bGV0IHI9MDtmb3IoO3I8PXM7KXtsZXQgbj0wO2Zvcig7bjxhJiZpW3Irbl09PT10W25dOyluKys7aWYobj49YSlyZXR1cm4gZS5wb3MrPXIsITA7cisrfX1yZXR1cm4hMX10LlBERkRvY3VtZW50PWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IG4uSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWUsdGhpcy5zdHJlYW09dCx0aGlzLnhyZWY9bmV3IGsuWFJlZih0LGUpLHRoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwLHRoaXMuX3ZlcnNpb249bnVsbDtjb25zdCByPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm4iZ18iLmNvbmNhdChlLmRvY0lkKX1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK3IuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKSx0aGlzLmNhdGFsb2c9bmV3IGQuQ2F0YWxvZyh0aGlzLnBkZk1hbmFnZXIsdGhpcy54cmVmKX1nZXQgbGluZWFyaXphdGlvbigpe2xldCBlPW51bGw7dHJ5e2U9cC5MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLmluZm8pKGUpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJsaW5lYXJpemF0aW9uIixlKX1nZXQgc3RhcnRYUmVmKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD0wO2lmKHRoaXMubGluZWFyaXphdGlvbillLnJlc2V0KCksUChlLEUpJiYodD1lLnBvcys2LWUuc3RhcnQpO2Vsc2V7Y29uc3Qgcj0xMDI0LG49TS5sZW5ndGg7bGV0IGE9ITEscz1lLmVuZDtmb3IoOyFhJiZzPjA7KXMtPXItbixzPDAmJihzPTApLGUucG9zPXMsYT1QKGUsTSxyLCEwKTtpZihhKXtsZXQgcjtlLnNraXAoOSk7ZG97cj1lLmdldEJ5dGUoKX13aGlsZSgoMCxpLmlzV2hpdGVTcGFjZSkocikpO2xldCBuPSIiO2Zvcig7cj49MzImJnI8PTU3OyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpLHI9ZS5nZXRCeXRlKCk7dD1wYXJzZUludChuLDEwKSxpc05hTih0KSYmKHQ9MCl9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtpZihlLnJlc2V0KCksIVAoZSxUKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKSxlLnNraXAoVC5sZW5ndGgpO2xldCB0LHI9IiI7Zm9yKDsodD1lLmdldEJ5dGUoKSk+MzImJnIubGVuZ3RoPDc7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aS5QREZfVkVSU0lPTl9SRUdFWFAudGVzdChyKT90aGlzLl92ZXJzaW9uPXI6KDAsbi53YXJuKSgiSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICIuY29uY2F0KHIpKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7cmV0dXJuIGU9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXMsKDAsbi5zaGFkb3cpKHRoaXMsIm51bVBhZ2VzIixlKX1faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4hIUFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoKGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgYy5EaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXJldHVybisrdD4xMD8oKDAsbi53YXJuKSgiX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKSwhMSk6dGhpcy5faGFzT25seURvY3VtZW50U2lnbmF0dXJlcyhlLmdldCgiS2lkcyIpLHQpO2NvbnN0IHI9KDAsYy5pc05hbWUpKGUuZ2V0KCJGVCIpLCJTaWciKSxhPWUuZ2V0KCJSZWN0IiksaT1BcnJheS5pc0FycmF5KGEpJiZhLmV2ZXJ5KChlPT4wPT09ZSkpO3JldHVybiByJiZpfSkpfWdldCBfeGZhU3RyZWFtcygpe2NvbnN0IGU9dGhpcy5jYXRhbG9nLmFjcm9Gb3JtO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5nZXQoIlhGQSIpLHI9eyJ4ZHA6eGRwIjoiIix0ZW1wbGF0ZToiIixkYXRhc2V0czoiIixjb25maWc6IiIsY29ubmVjdGlvblNldDoiIixsb2NhbGVTZXQ6IiIsc3R5bGVzaGVldDoiIiwiL3hkcDp4ZHAiOiIifTtpZih0IGluc3RhbmNlb2YgaC5CYXNlU3RyZWFtJiYhdC5pc0VtcHR5KXJldHVybiByWyJ4ZHA6eGRwIl09dCxyO2lmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9Mil7bGV0IGE7aWYoYT0wPT09ZT8ieGRwOnhkcCI6ZT09PW4tMj8iL3hkcDp4ZHAiOnRbZV0sIXIuaGFzT3duUHJvcGVydHkoYSkpY29udGludWU7Y29uc3QgaT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO2kgaW5zdGFuY2VvZiBoLkJhc2VTdHJlYW0mJiFpLmlzRW1wdHkmJihyW2FdPWkpfXJldHVybiByfWdldCB4ZmFEYXRhc2V0cygpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3Qgcj1lW3RdO2lmKHIpdHJ5e2NvbnN0IGU9e1t0XTooMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoci5nZXRTdHJpbmcoKSl9O3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IGcuRGF0YXNldFJlYWRlcihlKSl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtyLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpaWYoYSl0cnl7dFtyXT0oMCxuLnN0cmluZ1RvVVRGOFN0cmluZykoYS5nZXRTdHJpbmcoKSl9Y2F0Y2goZSl7cmV0dXJuKDAsbi53YXJuKSgiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIiksbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3JldHVybiB0aGlzLnBkZk1hbmFnZXIuZW5hYmxlWGZhJiZ0aGlzLmNhdGFsb2cubmVlZHNSZW5kZXJpbmcmJnRoaXMuZm9ybUluZm8uaGFzWGZhJiYhdGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSYmKGU9dGhpcy54ZmFEYXRhKSwoMCxuLnNoYWRvdykodGhpcywieGZhRmFjdG9yeSIsZT9uZXcgQS5YRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyBsb2FkWGZhSW1hZ2VzKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygieGZhSW1hZ2VzIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5nZXRLZXlzKCkscj1uZXcgYi5PYmplY3RMb2FkZXIoZSx0LHRoaXMueHJlZik7YXdhaXQgci5sb2FkKCk7Y29uc3Qgbj1uZXcgTWFwO2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IHQ9ZS5nZXQocik7dCBpbnN0YW5jZW9mIGguQmFzZVN0cmVhbSYmbi5zZXQocix0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMobil9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3Qgcj1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighcilyZXR1cm47Y29uc3QgYT1hd2FpdCByLmdldEFzeW5jKCJEUiIpO2lmKCEoYSBpbnN0YW5jZW9mIGMuRGljdCkpcmV0dXJuO2NvbnN0IHM9bmV3IGIuT2JqZWN0TG9hZGVyKGEsWyJGb250Il0sdGhpcy54cmVmKTthd2FpdCBzLmxvYWQoKTtjb25zdCBvPWEuZ2V0KCJGb250Iik7aWYoIShvIGluc3RhbmNlb2YgYy5EaWN0KSlyZXR1cm47Y29uc3QgaD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO2gudXNlU3lzdGVtRm9udHM9ITE7Y29uc3QgdT1uZXcgdy5QYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuY2F0YWxvZy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmNhdGFsb2cuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5jYXRhbG9nLnN0YW5kYXJkRm9udERhdGFDYWNoZSxvcHRpb25zOmh9KSxkPW5ldyB5Lk9wZXJhdG9yTGlzdCxmPVtdLGc9e2dldCBmb250KCl7cmV0dXJuIGYuYXQoLTEpfSxzZXQgZm9udChlKXtmLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxwPW5ldyBNYXA7by5mb3JFYWNoKCgoZSx0KT0+e3Auc2V0KGUsdCl9KSk7Y29uc3QgbT1bXTtmb3IoY29uc3RbZSxyXW9mIHApe2NvbnN0IHM9ci5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShzIGluc3RhbmNlb2YgYy5EaWN0KSljb250aW51ZTtsZXQgbz1zLmdldCgiRm9udEZhbWlseSIpO289by5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IGw9e2ZvbnRGYW1pbHk6byxmb250V2VpZ2h0OnMuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXMuZ2V0KCJJdGFsaWNBbmdsZSIpfTsoMCxpLnZhbGlkYXRlQ1NTRm9udCkobCkmJm0ucHVzaCh1LmhhbmRsZVNldEZvbnQoYSxbYy5OYW1lLmdldChlKSwxXSxudWxsLGQsdCxnLG51bGwsbCkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybigwLG4ud2FybikoJ2xvYWRYZmFGb250czogIicuY29uY2F0KGUsJyIuJykpLG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKG0pO2NvbnN0IHY9dGhpcy54ZmFGYWN0b3J5LnNldEZvbnRzKGYpO2lmKCF2KXJldHVybjtoLmlnbm9yZUVycm9ycz0hMCxtLmxlbmd0aD0wLGYubGVuZ3RoPTA7Y29uc3QgeD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHYpKDAsbC5nZXRYZmFGb250TmFtZSkoIiIuY29uY2F0KGUsIi1SZWd1bGFyIikpfHx4LmFkZChlKTt4LnNpemUmJnYucHVzaCgiUGRmSlMtRmFsbGJhY2siKTtmb3IoY29uc3QgZSBvZiB2KWlmKCF4LmhhcyhlKSlmb3IoY29uc3QgciBvZlt7bmFtZToiUmVndWxhciIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MH0se25hbWU6IkJvbGQiLGZvbnRXZWlnaHQ6NzAwLGl0YWxpY0FuZ2xlOjB9LHtuYW1lOiJJdGFsaWMiLGZvbnRXZWlnaHQ6NDAwLGl0YWxpY0FuZ2xlOjEyfSx7bmFtZToiQm9sZEl0YWxpYyIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MTJ9XSl7Y29uc3QgaT0iIi5jb25jYXQoZSwiLSIpLmNvbmNhdChyLm5hbWUpLHM9KDAsbC5nZXRYZmFGb250RGljdCkoaSk7bS5wdXNoKHUuaGFuZGxlU2V0Rm9udChhLFtjLk5hbWUuZ2V0KGkpLDFdLG51bGwsZCx0LGcscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6ci5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOnIuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsbi53YXJuKSgnbG9hZFhmYUZvbnRzOiAiJy5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwobSksdGhpcy54ZmFGYWN0b3J5LmFwcGVuZEZvbnRzKGYseCl9YXN5bmMgc2VyaWFsaXplWGZhRGF0YShlKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5zZXJpYWxpemVEYXRhKGUpOm51bGx9Z2V0IHZlcnNpb24oKXtyZXR1cm4gdGhpcy5jYXRhbG9nLnZlcnNpb258fHRoaXMuX3ZlcnNpb259Z2V0IGZvcm1JbmZvKCl7Y29uc3QgZT17aGFzRmllbGRzOiExLGhhc0Fjcm9Gb3JtOiExLGhhc1hmYTohMSxoYXNTaWduYXR1cmVzOiExfSx0PXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighdClyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZm9ybUluZm8iLGUpO3RyeXtjb25zdCByPXQuZ2V0KCJGaWVsZHMiKSxuPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjA7ZS5oYXNGaWVsZHM9bjtjb25zdCBhPXQuZ2V0KCJYRkEiKTtlLmhhc1hmYT1BcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aD4wfHxhIGluc3RhbmNlb2YgaC5CYXNlU3RyZWFtJiYhYS5pc0VtcHR5O2NvbnN0IGk9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSkscz1pJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKHIpO2UuaGFzQWNyb0Zvcm09biYmIXMsZS5oYXNTaWduYXR1cmVzPWl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCdDYW5ub3QgZmV0Y2ggZm9ybSBpbmZvcm1hdGlvbjogIicuY29uY2F0KGUsJyIuJykpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0IGU9e1BERkZvcm1hdFZlcnNpb246dGhpcy52ZXJzaW9uLExhbmd1YWdlOnRoaXMuY2F0YWxvZy5sYW5nLEVuY3J5cHRGaWx0ZXJOYW1lOnRoaXMueHJlZi5lbmNyeXB0P3RoaXMueHJlZi5lbmNyeXB0LmZpbHRlck5hbWU6bnVsbCxJc0xpbmVhcml6ZWQ6ISF0aGlzLmxpbmVhcml6YXRpb24sSXNBY3JvRm9ybVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNBY3JvRm9ybSxJc1hGQVByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNYZmEsSXNDb2xsZWN0aW9uUHJlc2VudDohIXRoaXMuY2F0YWxvZy5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dGhpcy5mb3JtSW5mby5oYXNTaWduYXR1cmVzfTtsZXQgdDt0cnl7dD10aGlzLnhyZWYudHJhaWxlci5nZXQoIkluZm8iKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLG4uaW5mbykoIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgYy5EaWN0KSlyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZG9jdW1lbnRJbmZvIixlKTtmb3IoY29uc3QgciBvZiB0LmdldEtleXMoKSl7Y29uc3QgYT10LmdldChyKTtzd2l0Y2gocil7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIGEpe2Vbcl09KDAsbi5zdHJpbmdUb1BERlN0cmluZykoYSk7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZihhIGluc3RhbmNlb2YgYy5OYW1lKXtlW3JdPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBjLk5hbWUmJih0PWEpfWlmKHZvaWQgMD09PXQpeygwLG4ud2FybikoJ0JhZCB2YWx1ZSwgZm9yIGN1c3RvbSBrZXkgIicuY29uY2F0KHIsJyIsIGluIEluZm86ICcpLmNvbmNhdChhLCIuIikpO2NvbnRpbnVlfWUuQ3VzdG9tfHwoZS5DdXN0b209T2JqZWN0LmNyZWF0ZShudWxsKSksZS5DdXN0b21bcl09dDtjb250aW51ZX0oMCxuLndhcm4pKCdCYWQgdmFsdWUsIGZvciBrZXkgIicuY29uY2F0KHIsJyIsIGluIEluZm86ICcpLmNvbmNhdChhLCIuIikpfXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJkb2N1bWVudEluZm8iLGUpfWdldCBmaW5nZXJwcmludHMoKXtmdW5jdGlvbiBlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gdChlKXtjb25zdCB0PVtdO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9ci50b1N0cmluZygxNik7dC5wdXNoKGUucGFkU3RhcnQoMiwiMCIpKX1yZXR1cm4gdC5qb2luKCIiKX1jb25zdCByPXRoaXMueHJlZi50cmFpbGVyLmdldCgiSUQiKTtsZXQgYSxpO3JldHVybiBBcnJheS5pc0FycmF5KHIpJiZlKHJbMF0pPyhhPSgwLG4uc3RyaW5nVG9CeXRlcykoclswXSksclsxXSE9PXJbMF0mJmUoclsxXSkmJihpPSgwLG4uc3RyaW5nVG9CeXRlcykoclsxXSkpKTphPSgwLHUuY2FsY3VsYXRlTUQ1KSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpLCgwLG4uc2hhZG93KSh0aGlzLCJmaW5nZXJwcmludHMiLFt0KGEpLGk/dChpKTpudWxsXSl9YXN5bmMgX2dldExpbmVhcml6YXRpb25QYWdlKGUpe2NvbnN0e2NhdGFsb2c6dCxsaW5lYXJpemF0aW9uOnIseHJlZjphfT10aGlzLGk9Yy5SZWYuZ2V0KHIub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgYS5mZXRjaEFzeW5jKGkpO2lmKGUgaW5zdGFuY2VvZiBjLkRpY3Qpe2xldCByPWUuZ2V0UmF3KCJUeXBlIik7aWYociBpbnN0YW5jZW9mIGMuUmVmJiYocj1hd2FpdCBhLmZldGNoQXN5bmMocikpLCgwLGMuaXNOYW1lKShyLCJQYWdlIil8fCFlLmhhcygiVHlwZSIpJiYhZS5oYXMoIktpZHMiKSlyZXR1cm4gdC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKGkpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQoaSwxKSx0LnBhZ2VJbmRleENhY2hlLmhhcyhpKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQoaSwwKSxbZSxpXX10aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVGhlIExpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2Vzbid0IHBvaW50IHRvIGEgdmFsaWQgUGFnZSBkaWN0aW9uYXJ5LiIpfWNhdGNoKHIpe3JldHVybigwLG4ud2FybikoJ19nZXRMaW5lYXJpemF0aW9uUGFnZTogIicuY29uY2F0KHIubWVzc2FnZSwnIi4nKSksdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuX3BhZ2VQcm9taXNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOnIsbGluZWFyaXphdGlvbjpuLHhmYUZhY3Rvcnk6YX09dGhpcztsZXQgaTtyZXR1cm4gaT1hP1Byb21pc2UucmVzb2x2ZShbYy5EaWN0LmVtcHR5LG51bGxdKToobnVsbD09bj92b2lkIDA6bi5wYWdlRmlyc3QpPT09ZT90aGlzLl9nZXRMaW5lYXJpemF0aW9uUGFnZShlKTpyLmdldFBhZ2VEaWN0KGUpLGk9aS50aGVuKCh0PT57bGV0W24saV09dDtyZXR1cm4gbmV3IEYoe3BkZk1hbmFnZXI6dGhpcy5wZGZNYW5hZ2VyLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0Om4scmVmOmksZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6ci5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTpyLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnIuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6ci5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTpyLnN5c3RlbUZvbnRDYWNoZSxub25CbGVuZE1vZGVzU2V0OnIubm9uQmxlbmRNb2Rlc1NldCx4ZmFGYWN0b3J5OmF9KX0pKSx0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUsaSksaX1hc3luYyBjaGVja0ZpcnN0UGFnZSgpe2lmKCEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSkpdHJ5e2F3YWl0IHRoaXMuZ2V0UGFnZSgwKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5YUmVmRW50cnlFeGNlcHRpb24pdGhyb3cgdGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZSgwKSxhd2FpdCB0aGlzLmNsZWFudXAoKSxuZXcgaS5YUmVmUGFyc2VFeGNlcHRpb259fWFzeW5jIGNoZWNrTGFzdFBhZ2UoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOnJ9PXRoaXM7bGV0IGE7dC5zZXRBY3R1YWxOdW1QYWdlcygpO3RyeXtpZihhd2FpdCBQcm9taXNlLmFsbChbci5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxyLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLHIuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pLHRoaXMueGZhRmFjdG9yeSlyZXR1cm47aWYoYT10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXMsIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaXMgbm90IGFuIGludGVnZXIuIik7aWYoYTw9MSlyZXR1cm47YXdhaXQgdGhpcy5nZXRQYWdlKGEtMSl9Y2F0Y2gocyl7aWYodGhpcy5fcGFnZVByb21pc2VzLmRlbGV0ZShhLTEpLGF3YWl0IHRoaXMuY2xlYW51cCgpLHMgaW5zdGFuY2VvZiBpLlhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbmV3IGkuWFJlZlBhcnNlRXhjZXB0aW9uO2xldCBvOygwLG4ud2FybikoImNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogIi5jb25jYXQoYSwiLiIpKTt0cnl7bz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChyKXtpZihyIGluc3RhbmNlb2YgaS5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IG5ldyBpLlhSZWZQYXJzZUV4Y2VwdGlvbjtyZXR1cm4gdm9pZCB0LnNldEFjdHVhbE51bVBhZ2VzKDEpfWZvcihjb25zdFtlLFtuLGFdXW9mIG8pe2xldCBpO24gaW5zdGFuY2VvZiBFcnJvcj8oaT1Qcm9taXNlLnJlamVjdChuKSxpLmNhdGNoKCgoKT0+e30pKSk6aT1Qcm9taXNlLnJlc29sdmUobmV3IEYoe3BkZk1hbmFnZXI6cix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDpuLHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOnQuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dC5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0LnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpLHRoaXMuX3BhZ2VQcm9taXNlcy5zZXQoZSxpKX10LnNldEFjdHVhbE51bVBhZ2VzKG8uc2l6ZSl9fWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLmNhdGFsb2cuZm9udEZhbGxiYWNrKGUsdCl9YXN5bmMgY2xlYW51cCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTooMCxmLmNsZWFyR2xvYmFsQ2FjaGVzKSgpfV9jb2xsZWN0RmllbGRPYmplY3RzKGUsdCxyKXtjb25zdCBpPXRoaXMueHJlZi5mZXRjaElmUmVmKHQpO2lmKGkuaGFzKCJUIikpe2NvbnN0IHQ9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoaS5nZXQoIlQiKSk7ZT0iIj09PWU/dDoiIi5jb25jYXQoZSwiLiIpLmNvbmNhdCh0KX1pZighaS5oYXMoIktpZHMiKSYmL1xbXGQrXF0kLy50ZXN0KGUpJiYoZT1lLnN1YnN0cmluZygwLGUubGFzdEluZGV4T2YoIlsiKSkpLHIuaGFzKGUpfHxyLnNldChlLFtdKSxyLmdldChlKS5wdXNoKGEuQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZix0LHRoaXMucGRmTWFuYWdlcix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMCkudGhlbigoZT0+bnVsbD09ZT92b2lkIDA6ZS5nZXRGaWVsZE9iamVjdCgpKSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybigwLG4ud2FybikoJ19jb2xsZWN0RmllbGRPYmplY3RzOiAiJy5jb25jYXQoZSwnIi4nKSksbnVsbH0pKSksaS5oYXMoIktpZHMiKSl7Y29uc3QgdD1pLmdldCgiS2lkcyIpO2Zvcihjb25zdCBuIG9mIHQpdGhpcy5fY29sbGVjdEZpZWxkT2JqZWN0cyhlLG4scil9fWdldCBmaWVsZE9iamVjdHMoKXtpZighdGhpcy5mb3JtSW5mby5oYXNGaWVsZHMpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIHRoaXMuY2F0YWxvZy5hY3JvRm9ybS5nZXQoIkZpZWxkcyIpKXRoaXMuX2NvbGxlY3RGaWVsZE9iamVjdHMoIiIsZSx0KTtjb25zdCByPVtdO2Zvcihjb25zdFtuLGFdb2YgdClyLnB1c2goUHJvbWlzZS5hbGwoYSkudGhlbigodD0+eyh0PXQuZmlsdGVyKChlPT4hIWUpKSkubGVuZ3RoPjAmJihlW25dPXQpfSkpKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiZmllbGRPYmplY3RzIixQcm9taXNlLmFsbChyKS50aGVuKCgoKT0+ZSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJfcGFyc2VIYXNKU0FjdGlvbnMiKTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiaGFzSlNBY3Rpb25zIixlKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0KS5zb21lKChlPT5lLnNvbWUoKGU9Pm51bGwhPT1lLmFjdGlvbnMpKSkpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYobnVsbD09ZXx8IWUuaGFzKCJDTyIpKXJldHVybigwLG4uc2hhZG93KSh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTtjb25zdCB0PWUuZ2V0KCJDTyIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgYy5SZWYmJnIucHVzaChlLnRvU3RyaW5nKCkpO3JldHVybiAwPT09ci5sZW5ndGg/KDAsbi5zaGFkb3cpKHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpOigwLG4uc2hhZG93KSh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixyKX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUG9wdXBBbm5vdGF0aW9uPXQuTWFya3VwQW5ub3RhdGlvbj10LkFubm90YXRpb25GYWN0b3J5PXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPXQuQW5ub3RhdGlvbj12b2lkIDAsdC5nZXRRdWFkUG9pbnRzPXYscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDE1NykscigxNTkpO3ZhciBuPXIoMTQ0KSxhPXIoMTQ5KSxpPXIoMTYxKSxzPXIoMTUwKSxvPXIoMTU0KSxjPXIoMjE2KSxsPXIoMTUxKSxoPXIoMjEwKSx1PXIoMjIwKSxkPXIoMTYyKSxmPXIoMjIzKSxnPXIoMTc2KSxwPXIoMjI2KSxtPXIoMjE0KSxiPXIoMjI3KTtmdW5jdGlvbiB5KGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7Y29uc3Qgcj10fHxuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAxOnJldHVybiBkLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oZSwwLHIsMCkscjtjYXNlIDM6cmV0dXJuIGQuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxyLDApLHI7Y2FzZSA0OnJldHVybiBkLkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYkl0ZW0oZSwwLHIsMCkscjtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiB3KGUpe3JldHVybiBBcnJheS5mcm9tKGUsKGU9PmUvMjU1KSl9ZnVuY3Rpb24gdihlLHQpe2NvbnN0IHI9ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFBcnJheS5pc0FycmF5KHIpfHwwPT09ci5sZW5ndGh8fHIubGVuZ3RoJTg+MClyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2ZvcihsZXQgZT0wLGE9ci5sZW5ndGgvODtlPGE7ZSsrKXtsZXQgYT0xLzAsaT0tMS8wLHM9MS8wLG89LTEvMDtmb3IobGV0IHQ9OCplLG49OCplKzg7dDxuO3QrPTIpe2NvbnN0IGU9clt0XSxuPXJbdCsxXTthPU1hdGgubWluKGUsYSksaT1NYXRoLm1heChlLGkpLHM9TWF0aC5taW4obixzKSxvPU1hdGgubWF4KG4sbyl9aWYobnVsbCE9PXQmJihhPHRbMF18fGk+dFsyXXx8czx0WzFdfHxvPnRbM10pKXJldHVybiBudWxsO24ucHVzaChbe3g6YSx5Om99LHt4OmkseTpvfSx7eDphLHk6c30se3g6aSx5OnN9XSl9cmV0dXJuIG59ZnVuY3Rpb24geChlLHQscil7Y29uc3RbYSxpLHMsb109bi5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KHQscik7aWYoYT09PXN8fGk9PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1hKSxsPShlWzNdLWVbMV0pLyhvLWkpO3JldHVybltjLDAsMCxsLGVbMF0tYSpjLGVbMV0taSpsXX10LkFubm90YXRpb25GYWN0b3J5PWNsYXNze3N0YXRpYyBjcmVhdGUoZSx0LHIsbixhKXtyZXR1cm4gUHJvbWlzZS5hbGwoW3IuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxyLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxyLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksci5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksYT90aGlzLl9nZXRQYWdlSW5kZXgoZSx0LHIpOi0xXSkudGhlbigoaT0+e2xldFtzLG8sYyxsLGhdPWk7cmV0dXJuIHIuZW5zdXJlKHRoaXMsIl9jcmVhdGUiLFtlLHQscixuLHMsYyxsLGEsaF0pfSkpfXN0YXRpYyBfY3JlYXRlKGUsdCxyLGksbyl7bGV0IGM9YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOm51bGwsbD1hcmd1bWVudHMubGVuZ3RoPjY/YXJndW1lbnRzWzZdOnZvaWQgMCxoPWFyZ3VtZW50cy5sZW5ndGg+Nz9hcmd1bWVudHNbN106dm9pZCAwLHU9YXJndW1lbnRzLmxlbmd0aD44JiZ2b2lkIDAhPT1hcmd1bWVudHNbOF0/YXJndW1lbnRzWzhdOi0xO2NvbnN0IGQ9ZS5mZXRjaElmUmVmKHQpO2lmKCEoZCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IGY9dCBpbnN0YW5jZW9mIHMuUmVmP3QudG9TdHJpbmcoKToiYW5ub3RfIi5jb25jYXQoaS5jcmVhdGVPYmpJZCgpKTtsZXQgZz1kLmdldCgiU3VidHlwZSIpO2c9ZyBpbnN0YW5jZW9mIHMuTmFtZT9nLm5hbWU6bnVsbDtjb25zdCBwPW8gaW5zdGFuY2VvZiBzLkRpY3Q/bzpzLkRpY3QuZW1wdHksbT17eHJlZjplLHJlZjp0LGRpY3Q6ZCxzdWJ0eXBlOmcsaWQ6ZixwZGZNYW5hZ2VyOnIsYWNyb0Zvcm06cCxhdHRhY2htZW50czpjLHhmYURhdGFzZXRzOmwsY29sbGVjdEZpZWxkczpoLG5lZWRBcHBlYXJhbmNlczohaCYmITA9PT1wLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4OnUsZXZhbHVhdG9yT3B0aW9uczpyLmV2YWx1YXRvck9wdGlvbnN9O3N3aXRjaChnKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgRShtKTtjYXNlIlRleHQiOnJldHVybiBuZXcgTShtKTtjYXNlIldpZGdldCI6bGV0IGU9KDAsYS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpkLGtleToiRlQifSk7c3dpdGNoKGU9ZSBpbnN0YW5jZW9mIHMuTmFtZT9lLm5hbWU6bnVsbCxlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IE8obSk7Y2FzZSJCdG4iOnJldHVybiBuZXcgRihtKTtjYXNlIkNoIjpyZXR1cm4gbmV3IEkobSk7Y2FzZSJTaWciOnJldHVybiBuZXcgVChtKX1yZXR1cm4oMCxuLndhcm4pKCdVbmltcGxlbWVudGVkIHdpZGdldCBmaWVsZCB0eXBlICInLmNvbmNhdChlLCciLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLicpKSxuZXcgQyhtKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFAobSk7Y2FzZSJGcmVlVGV4dCI6cmV0dXJuIG5ldyBSKG0pO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBOKG0pO2Nhc2UiU3F1YXJlIjpyZXR1cm4gbmV3IEQobSk7Y2FzZSJDaXJjbGUiOnJldHVybiBuZXcgQihtKTtjYXNlIlBvbHlMaW5lIjpyZXR1cm4gbmV3IEwobSk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IF8obSk7Y2FzZSJDYXJldCI6cmV0dXJuIG5ldyBqKG0pO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IFUobSk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgJChtKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBYKG0pO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgSChtKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBxKG0pO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgeihtKTtjYXNlIkZpbGVBdHRhY2htZW50IjpyZXR1cm4gbmV3IEcobSk7ZGVmYXVsdDpyZXR1cm4gaHx8KGc/KDAsbi53YXJuKSgnVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIicuY29uY2F0KGcsJyIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGFubm90YXRpb24uJykpOigwLG4ud2FybikoIkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIikpLG5ldyBTKG0pfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQscil7dHJ5e2NvbnN0IG49YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShuIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4tMTtjb25zdCBhPW4uZ2V0UmF3KCJQIik7cmV0dXJuIGEgaW5zdGFuY2VvZiBzLlJlZj9hd2FpdCByLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW2FdKTotMX1jYXRjaChlKXtyZXR1cm4oMCxuLndhcm4pKCdfZ2V0UGFnZUluZGV4OiAiJy5jb25jYXQoZSwnIi4nKSksLTF9fXN0YXRpYyBnZW5lcmF0ZUltYWdlcyhlLHQscil7aWYoIXIpcmV0dXJuKDAsbi53YXJuKSgiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpLG51bGw7bGV0IGE7Zm9yKGNvbnN0e2JpdG1hcElkOnIsYml0bWFwOm59b2YgZSluJiYoYXx8KGE9bmV3IE1hcCksYS5zZXQocix6LmNyZWF0ZUltYWdlKG4sdCkpKTtyZXR1cm4gYX1zdGF0aWMgYXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxyLGEpe2NvbnN0IGk9ZS54cmVmO2xldCBvO2NvbnN0IGw9W10saD1bXSx7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dX09ZS5vcHRpb25zO2Zvcihjb25zdCBkIG9mIHIpaWYoIWQuZGVsZXRlZClzd2l0Y2goZC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOmlmKCFvKXtjb25zdCBlPW5ldyBzLkRpY3QoaSk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSksZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSksZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpLGUuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2NvbnN0IHQ9W107bz1pLmdldE5ld1RlbXBvcmFyeVJlZigpLGF3YWl0KDAsYy53cml0ZU9iamVjdCkobyxlLHQsbnVsbCksbC5wdXNoKHtyZWY6byxkYXRhOnQuam9pbigiIil9KX1oLnB1c2goUi5jcmVhdGVOZXdBbm5vdGF0aW9uKGksZCxsLHtldmFsdWF0b3I6ZSx0YXNrOnQsYmFzZUZvbnRSZWY6b30pKTticmVhaztjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOmgucHVzaChVLmNyZWF0ZU5ld0Fubm90YXRpb24oaSxkLGwpKTticmVhaztjYXNlIG4uQW5ub3RhdGlvbkVkaXRvclR5cGUuU1RBTVA6aWYoIXUpYnJlYWs7Y29uc3Qgcj1hd2FpdCBhLmdldChkLmJpdG1hcElkKTtpZihyLmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PXIsbj1bXTtpZih0KXtjb25zdCByPWkuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQoMCxjLndyaXRlT2JqZWN0KShyLHQsbixudWxsKSxsLnB1c2goe3JlZjpyLGRhdGE6bi5qb2luKCIiKX0pLGUuZGljdC5zZXQoIlNNYXNrIixyKSxuLmxlbmd0aD0wfWNvbnN0IGE9ci5pbWFnZVJlZj1pLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0KDAsYy53cml0ZU9iamVjdCkoYSxlLG4sbnVsbCksbC5wdXNoKHtyZWY6YSxkYXRhOm4uam9pbigiIil9KSxyLmltYWdlU3RyZWFtPXIuc21hc2tTdHJlYW09bnVsbH1oLnB1c2goei5jcmVhdGVOZXdBbm5vdGF0aW9uKGksZCxsLHtpbWFnZTpyfSkpfXJldHVybnthbm5vdGF0aW9uczphd2FpdCBQcm9taXNlLmFsbChoKSxkZXBlbmRlbmNpZXM6bH19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LHIsYSl7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3R7b3B0aW9uczppLHhyZWY6c309ZSxvPVtdO2Zvcihjb25zdCBjIG9mIHIpaWYoIWMuZGVsZXRlZClzd2l0Y2goYy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOm8ucHVzaChSLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihzLGMse2V2YWx1YXRvcjplLHRhc2s6dCxldmFsdWF0b3JPcHRpb25zOml9KSk7YnJlYWs7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpvLnB1c2goVS5jcmVhdGVOZXdQcmludEFubm90YXRpb24ocyxjLHtldmFsdWF0b3JPcHRpb25zOml9KSk7YnJlYWs7Y2FzZSBuLkFubm90YXRpb25FZGl0b3JUeXBlLlNUQU1QOmlmKCFpLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKWJyZWFrO2NvbnN0IHI9YXdhaXQgYS5nZXQoYy5iaXRtYXBJZCk7aWYoci5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1yO3QmJmUuZGljdC5zZXQoIlNNYXNrIix0KSxyLmltYWdlUmVmPW5ldyBnLkpwZWdTdHJlYW0oZSxlLmxlbmd0aCksci5pbWFnZVN0cmVhbT1yLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKHouY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKHMsYyx7aW1hZ2U6cixldmFsdWF0b3JPcHRpb25zOml9KSl9cmV0dXJuIFByb21pc2UuYWxsKG8pfX07Y2xhc3MgU3tjb25zdHJ1Y3RvcihlKXtjb25zdHtkaWN0OnQseHJlZjpyfT1lO3RoaXMuc2V0VGl0bGUodC5nZXQoIlQiKSksdGhpcy5zZXRDb250ZW50cyh0LmdldCgiQ29udGVudHMiKSksdGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKHQuZ2V0KCJNIikpLHRoaXMuc2V0RmxhZ3ModC5nZXQoIkYiKSksdGhpcy5zZXRSZWN0YW5nbGUodC5nZXRBcnJheSgiUmVjdCIpKSx0aGlzLnNldENvbG9yKHQuZ2V0QXJyYXkoIkMiKSksdGhpcy5zZXRCb3JkZXJTdHlsZSh0KSx0aGlzLnNldEFwcGVhcmFuY2UodCksdGhpcy5zZXRPcHRpb25hbENvbnRlbnQodCk7Y29uc3QgaT10LmdldCgiTUsiKTt0aGlzLnNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoaSksdGhpcy5zZXRSb3RhdGlvbihpLHQpLHRoaXMucmVmPWUucmVmIGluc3RhbmNlb2Ygcy5SZWY/ZS5yZWY6bnVsbCx0aGlzLl9zdHJlYW1zPVtdLHRoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7Y29uc3Qgbz0hISh0aGlzLmZsYWdzJm4uQW5ub3RhdGlvbkZsYWcuTE9DS0VEKSxjPSEhKHRoaXMuZmxhZ3Mmbi5Bbm5vdGF0aW9uRmxhZy5MT0NLRURDT05URU5UUyk7aWYodGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZuLkFubm90YXRpb25GbGFnLk5PUk9UQVRFKSxub0hUTUw6byYmY30sZS5jb2xsZWN0RmllbGRzKXtjb25zdCBpPXQuZ2V0KCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBpKXQgaW5zdGFuY2VvZiBzLlJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz0oMCxhLmNvbGxlY3RBY3Rpb25zKShyLHQsbi5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlKSx0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSx0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCx0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGwsdGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLG4uQW5ub3RhdGlvbkZsYWcuSU5WSVNJQkxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxuLkFubm90YXRpb25GbGFnLk5PVklFVyl9X2lzUHJpbnRhYmxlKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUsbi5Bbm5vdGF0aW9uRmxhZy5QUklOVCkmJiF0aGlzLl9oYXNGbGFnKGUsbi5Bbm5vdGF0aW9uRmxhZy5JTlZJU0lCTEUpfW11c3RCZVZpZXdlZChlKXt2YXIgdDtjb25zdCByPW51bGw9PWV8fG51bGw9PT0odD1lLmdldCh0aGlzLmRhdGEuaWQpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5oaWRkZW47cmV0dXJuIHZvaWQgMCE9PXI/IXI6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxuLkFubm90YXRpb25GbGFnLkhJRERFTil9bXVzdEJlUHJpbnRlZChlKXt2YXIgdDtjb25zdCByPW51bGw9PWV8fG51bGw9PT0odD1lLmdldCh0aGlzLmRhdGEuaWQpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5wcmludDtyZXR1cm4gdm9pZCAwIT09cj9yOnRoaXMucHJpbnRhYmxlfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJjAhPT10aGlzLmZsYWdzJiZ0aGlzLl9pc1ByaW50YWJsZSh0aGlzLmZsYWdzKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PSgwLGguYmlkaSkodCkuZGlyPyJydGwiOiJsdHIifX1zZXREZWZhdWx0QXBwZWFyYW5jZShlKXtjb25zdCB0PSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6ZS5kaWN0LGtleToiREEifSl8fGUuYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgdD90OiIiLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9KDAsaS5wYXJzZURlZmF1bHRBcHBlYXJhbmNlKSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjB9aGFzRmxhZyhlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLGUpfXNldFJlY3RhbmdsZShlKXt0aGlzLnJlY3RhbmdsZT1BcnJheS5pc0FycmF5KGUpJiY0PT09ZS5sZW5ndGg/bi5VdGlsLm5vcm1hbGl6ZVJlY3QoZSk6WzAsMCwwLDBdfXNldENvbG9yKGUpe3RoaXMuY29sb3I9eShlKX1zZXRMaW5lRW5kaW5ncyhlKXtpZih0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXSxBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3Qgcj1lW3RdO2lmKHIgaW5zdGFuY2VvZiBzLk5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1yLm5hbWU7Y29udGludWV9KDAsbi53YXJuKSgiSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAiLmNvbmNhdChyKSl9fXNldFJvdGF0aW9uKGUsdCl7dGhpcy5yb3RhdGlvbj0wO2xldCByPWUgaW5zdGFuY2VvZiBzLkRpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7TnVtYmVyLmlzSW50ZWdlcihyKSYmMCE9PXImJihyJT0zNjAscjwwJiYocis9MzYwKSxyJTkwPT0wJiYodGhpcy5yb3RhdGlvbj1yKSl9c2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhlKXtlIGluc3RhbmNlb2Ygcy5EaWN0Pyh0aGlzLmJvcmRlckNvbG9yPXkoZS5nZXRBcnJheSgiQkMiKSxudWxsKSx0aGlzLmJhY2tncm91bmRDb2xvcj15KGUuZ2V0QXJyYXkoIkJHIiksbnVsbCkpOnRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXtpZih0aGlzLmJvcmRlclN0eWxlPW5ldyBBLGUgaW5zdGFuY2VvZiBzLkRpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIikscj10LmdldCgiVHlwZSIpO3ImJiEoMCxzLmlzTmFtZSkociwiQm9yZGVyIil8fCh0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpLHRoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSksdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKSl9ZWxzZSBpZihlLmhhcygiQm9yZGVyIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiQm9yZGVyIik7QXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+PTMmJih0aGlzLmJvcmRlclN0eWxlLnNldEhvcml6b250YWxDb3JuZXJSYWRpdXModFswXSksdGhpcy5ib3JkZXJTdHlsZS5zZXRWZXJ0aWNhbENvcm5lclJhZGl1cyh0WzFdKSx0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHRbMl0sdGhpcy5yZWN0YW5nbGUpLDQ9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodFszXSwhMCkpfWVsc2UgdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1zZXRBcHBlYXJhbmNlKGUpe3RoaXMuYXBwZWFyYW5jZT1udWxsO2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Y29uc3Qgcj10LmdldCgiTiIpO2lmKHIgaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0pcmV0dXJuIHZvaWQodGhpcy5hcHBlYXJhbmNlPXIpO2lmKCEociBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IG49ZS5nZXQoIkFTIik7aWYoIShuIGluc3RhbmNlb2Ygcy5OYW1lJiZyLmhhcyhuLm5hbWUpKSlyZXR1cm47Y29uc3QgYT1yLmdldChuLm5hbWUpO2EgaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0mJih0aGlzLmFwcGVhcmFuY2U9YSl9c2V0T3B0aW9uYWxDb250ZW50KGUpe3RoaXMub2M9bnVsbDtjb25zdCB0PWUuZ2V0KCJPQyIpO3QgaW5zdGFuY2VvZiBzLk5hbWU/KDAsbi53YXJuKSgic2V0T3B0aW9uYWxDb250ZW50OiBTdXBwb3J0IGZvciAvTmFtZS1lbnRyeSBpcyBub3QgaW1wbGVtZW50ZWQuIik6dCBpbnN0YW5jZW9mIHMuRGljdCYmKHRoaXMub2M9dCl9bG9hZFJlc291cmNlcyhlLHQpe3JldHVybiB0LmRpY3QuZ2V0QXN5bmMoIlJlc291cmNlcyIpLnRoZW4oKHQ9PntpZih0KXJldHVybiBuZXcgcC5PYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxyLGEsaSl7Y29uc3QgYz10aGlzLmRhdGE7bGV0IGw9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGg9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmciZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSk7aWYoIWwpe2lmKCFoKXJldHVybntvcExpc3Q6bmV3IG0uT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07bD1uZXcgby5TdHJpbmdTdHJlYW0oIiIpLGwuZGljdD1uZXcgcy5EaWN0fWNvbnN0IHU9bC5kaWN0LGQ9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKFsiRXh0R1N0YXRlIiwiQ29sb3JTcGFjZSIsIlBhdHRlcm4iLCJTaGFkaW5nIiwiWE9iamVjdCIsIkZvbnQiXSxsKSxmPXUuZ2V0QXJyYXkoIkJCb3giKXx8WzAsMCwxLDFdLGc9dS5nZXRBcnJheSgiTWF0cml4Iil8fFsxLDAsMCwxLDAsMF0scD14KGMucmVjdCxmLGcpLGI9bmV3IG0uT3BlcmF0b3JMaXN0O2xldCB5O3JldHVybiB0aGlzLm9jJiYoeT1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpLHZvaWQgMCE9PXkmJmIuYWRkT3Aobi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIseV0pLGIuYWRkT3Aobi5PUFMuYmVnaW5Bbm5vdGF0aW9uLFtjLmlkLGMucmVjdCxwLGcsaF0pLGF3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06bCx0YXNrOnQscmVzb3VyY2VzOmQsb3BlcmF0b3JMaXN0OmIsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSksYi5hZGRPcChuLk9QUy5lbmRBbm5vdGF0aW9uLFtdKSx2b2lkIDAhPT15JiZiLmFkZE9wKG4uT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pLHRoaXMucmVzZXQoKSx7b3BMaXN0OmIsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmh9fWFzeW5jIHNhdmUoZSx0LHIpe3JldHVybiBudWxsfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQscil7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3QgYT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSx0aGlzLmFwcGVhcmFuY2UpLGk9W10scz1bXTtsZXQgbz1udWxsO2NvbnN0IGM9e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpdm9pZCAwIT09dC5zdHImJihvfHwobz10LnRyYW5zZm9ybS5zbGljZSgtMikpLHMucHVzaCh0LnN0ciksdC5oYXNFT0wmJihpLnB1c2gocy5qb2luKCIiKSkscy5sZW5ndGg9MCkpfX07aWYoYXdhaXQgZS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnRoaXMuYXBwZWFyYW5jZSx0YXNrOnQscmVzb3VyY2VzOmEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITAsc2luazpjLHZpZXdCb3g6cn0pLHRoaXMucmVzZXQoKSxzLmxlbmd0aCYmaS5wdXNoKHMuam9pbigiIikpLGkubGVuZ3RoPjF8fGlbMF0pe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlLmRpY3QsdD1lLmdldEFycmF5KCJCQm94Iil8fFswLDAsMSwxXSxyPWUuZ2V0QXJyYXkoIk1hdHJpeCIpfHxbMSwwLDAsMSwwLDBdLGE9dGhpcy5kYXRhLnJlY3Qscz14KGEsdCxyKTtzWzRdLT1hWzBdLHNbNV0tPWFbMV0sbz1uLlV0aWwuYXBwbHlUcmFuc2Zvcm0obyxzKSxvPW4uVXRpbC5hcHBseVRyYW5zZm9ybShvLHIpLHRoaXMuZGF0YS50ZXh0UG9zaXRpb249byx0aGlzLmRhdGEudGV4dENvbnRlbnQ9aX19Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSlyZXR1cm4oMCxuLndhcm4pKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpLCIiO2lmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIlQiKSk7Y29uc3QgdD1bXTtlLmhhcygiVCIpJiZ0LnVuc2hpZnQoKDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIlQiKSkpO2xldCByPWU7Y29uc3QgYT1uZXcgcy5SZWZTZXQ7Zm9yKGUub2JqSWQmJmEucHV0KGUub2JqSWQpO3IuaGFzKCJQYXJlbnQiKSYmKHI9ci5nZXQoIlBhcmVudCIpLHIgaW5zdGFuY2VvZiBzLkRpY3QmJighci5vYmpJZHx8IWEuaGFzKHIub2JqSWQpKSk7KWlmKHIub2JqSWQmJmEucHV0KHIub2JqSWQpLHIuaGFzKCJUIikpe2NvbnN0IGU9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoci5nZXQoIlQiKSk7ZS5zdGFydHNXaXRoKCIjIil8fHQudW5zaGlmdChlKX1yZXR1cm4gdC5qb2luKCIuIil9fXQuQW5ub3RhdGlvbj1TO2NsYXNzIEF7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTEsdGhpcy5zdHlsZT1uLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQsdGhpcy5kYXNoQXJyYXk9WzNdLHRoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wLHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06WzAsMCwwLDBdO2lmKGUgaW5zdGFuY2VvZiBzLk5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe2NvbnN0IHI9KHRbMl0tdFswXSkvMixhPSh0WzNdLXRbMV0pLzI7cj4wJiZhPjAmJihlPnJ8fGU+YSkmJigoMCxuLndhcm4pKCJBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogIi5jb25jYXQoZSkpLGU9MSl9dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2Ygcy5OYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiUyI6dGhpcy5zdHlsZT1uLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuU09MSUQ7YnJlYWs7Y2FzZSJEIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5EQVNIRUQ7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5CRVZFTEVEO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1uLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuSU5TRVQ7YnJlYWs7Y2FzZSJVIjp0aGlzLnN0eWxlPW4uQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5VTkRFUkxJTkV9fXNldERhc2hBcnJheShlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe2xldCByPSEwLG49ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe3I9ITE7YnJlYWt9dD4wJiYobj0hMSl9ciYmIW4/KHRoaXMuZGFzaEFycmF5PWUsdCYmdGhpcy5zZXRTdHlsZShzLk5hbWUuZ2V0KCJEIikpKTp0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fXQuQW5ub3RhdGlvbkJvcmRlclN0eWxlPUE7Y2xhc3MgayBleHRlbmRzIFN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJJUlQiKSl7Y29uc3QgZT10LmdldFJhdygiSVJUIik7dGhpcy5kYXRhLmluUmVwbHlUbz1lIGluc3RhbmNlb2Ygcy5SZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3Qgcj10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPXIgaW5zdGFuY2VvZiBzLk5hbWU/ci5uYW1lOm4uQW5ub3RhdGlvblJlcGx5VHlwZS5SRVBMWX1sZXQgcj1udWxsO2lmKHRoaXMuZGF0YS5yZXBseVR5cGU9PT1uLkFubm90YXRpb25SZXBseVR5cGUuR1JPVVApe2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSksdGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlLHRoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpLHRoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cyxlLmhhcygiQ3JlYXRpb25EYXRlIik/KHRoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSksdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZSk6dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsLGUuaGFzKCJNIik/KHRoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKSx0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGUpOnRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGwscj1lLmdldFJhdygiUG9wdXAiKSxlLmhhcygiQyIpPyh0aGlzLnNldENvbG9yKGUuZ2V0QXJyYXkoIkMiKSksdGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3IpOnRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2UgdGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlLHRoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSksdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZSxyPXQuZ2V0UmF3KCJQb3B1cCIpLHQuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCk7dGhpcy5kYXRhLnBvcHVwUmVmPXIgaW5zdGFuY2VvZiBzLlJlZj9yLnRvU3RyaW5nKCk6bnVsbCx0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1iLlhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwodC5nZXQoIlJDIikpKX1zZXRDcmVhdGlvbkRhdGUoZSl7dGhpcy5jcmVhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1fc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSl7bGV0e3hyZWY6dCxleHRyYTpyLHN0cm9rZUNvbG9yOm4sZmlsbENvbG9yOmEsYmxlbmRNb2RlOmksc3Ryb2tlQWxwaGE6YyxmaWxsQWxwaGE6bCxwb2ludHNDYWxsYmFjazpofT1lLHU9TnVtYmVyLk1BWF9WQUxVRSxkPU51bWJlci5NQVhfVkFMVUUsZj1OdW1iZXIuTUlOX1ZBTFVFLGc9TnVtYmVyLk1JTl9WQUxVRTtjb25zdCBwPVsicSJdO3ImJnAucHVzaChyKSxuJiZwLnB1c2goIiIuY29uY2F0KG5bMF0sIiAiKS5jb25jYXQoblsxXSwiICIpLmNvbmNhdChuWzJdLCIgUkciKSksYSYmcC5wdXNoKCIiLmNvbmNhdChhWzBdLCIgIikuY29uY2F0KGFbMV0sIiAiKS5jb25jYXQoYVsyXSwiIHJnIikpO2xldCBtPXRoaXMuZGF0YS5xdWFkUG9pbnRzO218fChtPVtbe3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVszXX0se3g6dGhpcy5yZWN0YW5nbGVbMF0seTp0aGlzLnJlY3RhbmdsZVsxXX0se3g6dGhpcy5yZWN0YW5nbGVbMl0seTp0aGlzLnJlY3RhbmdsZVsxXX1dXSk7Zm9yKGNvbnN0IGUgb2YgbSl7Y29uc3RbdCxyLG4sYV09aChwLGUpO3U9TWF0aC5taW4odSx0KSxmPU1hdGgubWF4KGYsciksZD1NYXRoLm1pbihkLG4pLGc9TWF0aC5tYXgoZyxhKX1wLnB1c2goIlEiKTtjb25zdCBiPW5ldyBzLkRpY3QodCkseT1uZXcgcy5EaWN0KHQpO3kuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpO2NvbnN0IHc9bmV3IG8uU3RyaW5nU3RyZWFtKHAuam9pbigiICIpKTt3LmRpY3Q9eSxiLnNldCgiRm0wIix3KTtjb25zdCB2PW5ldyBzLkRpY3QodCk7aSYmdi5zZXQoIkJNIixzLk5hbWUuZ2V0KGkpKSwibnVtYmVyIj09dHlwZW9mIGMmJnYuc2V0KCJDQSIsYyksIm51bWJlciI9PXR5cGVvZiBsJiZ2LnNldCgiY2EiLGwpO2NvbnN0IHg9bmV3IHMuRGljdCh0KTt4LnNldCgiR1MwIix2KTtjb25zdCBTPW5ldyBzLkRpY3QodCk7Uy5zZXQoIkV4dEdTdGF0ZSIseCksUy5zZXQoIlhPYmplY3QiLGIpO2NvbnN0IEE9bmV3IHMuRGljdCh0KTtBLnNldCgiUmVzb3VyY2VzIixTKTtjb25zdCBrPXRoaXMuZGF0YS5yZWN0PVt1LGQsZixnXTtBLnNldCgiQkJveCIsayksdGhpcy5hcHBlYXJhbmNlPW5ldyBvLlN0cmluZ1N0cmVhbSgiL0dTMCBncyAvRm0wIERvIiksdGhpcy5hcHBlYXJhbmNlLmRpY3Q9QSx0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlLHcpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBbm5vdGF0aW9uKGUsdCxyLG4pe2NvbnN0IGE9dC5yZWZ8fGUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaT1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLG4pLHM9W107bGV0IG87aWYoaSl7Y29uc3Qgbj1lLmdldE5ld1RlbXBvcmFyeVJlZigpO289dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6bn0pO2NvbnN0IGE9ZS5lbmNyeXB0P2UuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0obi5udW0sbi5nZW4pOm51bGw7YXdhaXQoMCxjLndyaXRlT2JqZWN0KShuLGkscyxhKSxyLnB1c2goe3JlZjpuLGRhdGE6cy5qb2luKCIiKX0pfWVsc2Ugbz10aGlzLmNyZWF0ZU5ld0RpY3QodCxlLHt9KTtzLmxlbmd0aD0wO2NvbnN0IGw9ZS5lbmNyeXB0P2UuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oYS5udW0sYS5nZW4pOm51bGw7cmV0dXJuIGF3YWl0KDAsYy53cml0ZU9iamVjdCkoYSxvLHMsbCkse3JlZjphLGRhdGE6cy5qb2luKCIiKX19c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQscil7Y29uc3Qgbj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLHIpLGE9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXA6bn0pLGk9bmV3IHRoaXMucHJvdG90eXBlLmNvbnN0cnVjdG9yKHtkaWN0OmEseHJlZjplLGV2YWx1YXRvck9wdGlvbnM6ci5ldmFsdWF0b3JPcHRpb25zfSk7cmV0dXJuIHQucmVmJiYoaS5yZWY9aS5yZWZUb1JlcGxhY2U9dC5yZWYpLGl9fXQuTWFya3VwQW5ub3RhdGlvbj1rO2NsYXNzIEMgZXh0ZW5kcyBTe2NvbnN0cnVjdG9yKGUpe3ZhciB0O3N1cGVyKGUpO2NvbnN0e2RpY3Q6cix4cmVmOml9PWUsbz10aGlzLmRhdGE7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPWUubmVlZEFwcGVhcmFuY2VzLG8uYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5XSURHRVQsdm9pZCAwPT09by5maWVsZE5hbWUmJihvLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUocikpLG8uZmllbGROYW1lJiYvXFtcZCtcXSQvLnRlc3Qoby5maWVsZE5hbWUpJiYhci5oYXMoIktpZHMiKSYmKG8uYmFzZUZpZWxkTmFtZT1vLmZpZWxkTmFtZS5zdWJzdHJpbmcoMCxvLmZpZWxkTmFtZS5sYXN0SW5kZXhPZigiWyIpKSksdm9pZCAwPT09by5hY3Rpb25zJiYoby5hY3Rpb25zPSgwLGEuY29sbGVjdEFjdGlvbnMpKGkscixuLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUpKTtsZXQgYz0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnIsa2V5OiJWIixnZXRBcnJheTohMH0pO28uZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoYyk7Y29uc3QgbD0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnIsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtpZihvLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShsKSx2b2lkIDA9PT1jJiZlLnhmYURhdGFzZXRzKXtjb25zdCB0PXRoaXMuX3RpdGxlLnN0cjt0JiYodGhpcy5faGFzVmFsdWVGcm9tWEZBPSEwLG8uZmllbGRWYWx1ZT1jPWUueGZhRGF0YXNldHMuZ2V0VmFsdWUodCkpfXZvaWQgMD09PWMmJm51bGwhPT1vLmRlZmF1bHRGaWVsZFZhbHVlJiYoby5maWVsZFZhbHVlPW8uZGVmYXVsdEZpZWxkVmFsdWUpLG8uYWx0ZXJuYXRpdmVUZXh0PSgwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHIuZ2V0KCJUVSIpfHwiIiksdGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKSxvLmhhc0FwcGVhcmFuY2V8fChvLmhhc0FwcGVhcmFuY2U9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1vLmZpZWxkVmFsdWUmJm51bGwhPT1vLmZpZWxkVmFsdWUpO2NvbnN0IGg9KDAsYS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDpyLGtleToiRlQifSk7by5maWVsZFR5cGU9aCBpbnN0YW5jZW9mIHMuTmFtZT9oLm5hbWU6bnVsbDtjb25zdCB1PSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6cixrZXk6IkRSIn0pLGQ9ZS5hY3JvRm9ybS5nZXQoIkRSIiksZj1udWxsPT09KHQ9dGhpcy5hcHBlYXJhbmNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5kaWN0LmdldCgiUmVzb3VyY2VzIik7dGhpcy5fZmllbGRSZXNvdXJjZXM9e2xvY2FsUmVzb3VyY2VzOnUsYWNyb0Zvcm1SZXNvdXJjZXM6ZCxhcHBlYXJhbmNlUmVzb3VyY2VzOmYsbWVyZ2VkUmVzb3VyY2VzOnMuRGljdC5tZXJnZSh7eHJlZjppLGRpY3RBcnJheTpbdSxmLGRdLG1lcmdlU3ViRGljdHM6ITB9KX0sby5maWVsZEZsYWdzPSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6cixrZXk6IkZmIn0pLCghTnVtYmVyLmlzSW50ZWdlcihvLmZpZWxkRmxhZ3MpfHxvLmZpZWxkRmxhZ3M8MCkmJihvLmZpZWxkRmxhZ3M9MCksby5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUkVBRE9OTFkpLG8ucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlJFUVVJUkVEKSxvLmhpZGRlbj10aGlzLl9oYXNGbGFnKG8uYW5ub3RhdGlvbkZsYWdzLG4uQW5ub3RhdGlvbkZsYWcuSElEREVOKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKChlPT4ic3RyaW5nIj09dHlwZW9mIGUpKS5tYXAoKGU9PigwLG4uc3RyaW5nVG9QREZTdHJpbmcpKGUpKSk6ZSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1nZXRSb3RhdGlvbk1hdHJpeChlKXt2YXIgdDtsZXQgcj1udWxsPT1lfHxudWxsPT09KHQ9ZS5nZXQodGhpcy5kYXRhLmlkKSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQucm90YXRpb247aWYodm9pZCAwPT09ciYmKHI9dGhpcy5yb3RhdGlvbiksMD09PXIpcmV0dXJuIG4uSURFTlRJVFlfTUFUUklYO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0scz10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXTtyZXR1cm4oMCxhLmdldFJvdGF0aW9uTWF0cml4KShyLGkscyl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe3ZhciB0O2xldCByPW51bGw9PWV8fG51bGw9PT0odD1lLmdldCh0aGlzLmRhdGEuaWQpKXx8dm9pZCAwPT09dD92b2lkIDA6dC5yb3RhdGlvbjtpZih2b2lkIDA9PT1yJiYocj10aGlzLnJvdGF0aW9uKSwhdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IG49dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxzPTA9PT1yfHwxODA9PT1yPyIwIDAgIi5jb25jYXQobiwiICIpLmNvbmNhdChhLCIgcmUiKToiMCAwICIuY29uY2F0KGEsIiAiKS5jb25jYXQobiwiIHJlIik7bGV0IG89IiI7cmV0dXJuIHRoaXMuYmFja2dyb3VuZENvbG9yJiYobz0iIi5jb25jYXQoKDAsaS5nZXRQZGZDb2xvcikodGhpcy5iYWNrZ3JvdW5kQ29sb3IsITApLCIgIikuY29uY2F0KHMsIiBmICIpKSx0aGlzLmJvcmRlckNvbG9yJiYobys9IiIuY29uY2F0KHRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsIiB3ICIpLmNvbmNhdCgoMCxpLmdldFBkZkNvbG9yKSh0aGlzLmJvcmRlckNvbG9yLCExKSwiICIpLmNvbmNhdChzLCIgUyAiKSksb31hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LHIsYSxpKXtpZihhJiYhKHRoaXMgaW5zdGFuY2VvZiBUKSYmIXRoaXMuZGF0YS5ub0hUTUwmJiF0aGlzLmRhdGEuaGFzT3duQ2FudmFzKXJldHVybntvcExpc3Q6bmV3IG0uT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMCxzZXBhcmF0ZUNhbnZhczohMX07aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQscixhLGkpO2NvbnN0IHM9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQscixpKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1zKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LHIsYSxpKTtjb25zdCBjPW5ldyBtLk9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6YyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGw9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmciZuLlJlbmRlcmluZ0ludGVudEZsYWcuRElTUExBWSksaD1bMCwwLHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdXSx1PXgodGhpcy5kYXRhLnJlY3QsaCxbMSwwLDAsMSwwLDBdKTtsZXQgZDt0aGlzLm9jJiYoZD1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpLHZvaWQgMCE9PWQmJmMuYWRkT3Aobi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsZF0pLGMuYWRkT3Aobi5PUFMuYmVnaW5Bbm5vdGF0aW9uLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsdSx0aGlzLmdldFJvdGF0aW9uTWF0cml4KGkpLGxdKTtjb25zdCBmPW5ldyBvLlN0cmluZ1N0cmVhbShzKTtyZXR1cm4gYXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpmLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpjfSksYy5hZGRPcChuLk9QUy5lbmRBbm5vdGF0aW9uLFtdKSx2b2lkIDAhPT1kJiZjLmFkZE9wKG4uT1BTLmVuZE1hcmtlZENvbnRlbnQsW10pLHtvcExpc3Q6YyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6bH19X2dldE1LRGljdChlKXtjb25zdCB0PW5ldyBzLkRpY3QobnVsbCk7cmV0dXJuIGUmJnQuc2V0KCJSIixlKSx0aGlzLmJvcmRlckNvbG9yJiZ0LnNldCgiQkMiLHcodGhpcy5ib3JkZXJDb2xvcikpLHRoaXMuYmFja2dyb3VuZENvbG9yJiZ0LnNldCgiQkciLHcodGhpcy5iYWNrZ3JvdW5kQ29sb3IpKSx0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9YXN5bmMgc2F2ZShlLHQscil7dmFyIGk7Y29uc3QgbD1udWxsPT1yP3ZvaWQgMDpyLmdldCh0aGlzLmRhdGEuaWQpO2xldCBoPW51bGw9PWw/dm9pZCAwOmwudmFsdWUsdT1udWxsPT1sP3ZvaWQgMDpsLnJvdGF0aW9uO2lmKGg9PT10aGlzLmRhdGEuZmllbGRWYWx1ZXx8dm9pZCAwPT09aCl7aWYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmdm9pZCAwPT09dSlyZXR1cm4gbnVsbDtofHwoaD10aGlzLmRhdGEuZmllbGRWYWx1ZSl9aWYodm9pZCAwPT09dSYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShoKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmgubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZoLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09dSYmKHU9dGhpcy5yb3RhdGlvbik7bGV0IGQ9bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzJiYoZD1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxuLlJlbmRlcmluZ0ludGVudEZsYWcuU0FWRSxyKSxudWxsPT09ZCkpcmV0dXJuIG51bGw7bGV0IGY9ITE7bnVsbCE9PShpPWQpJiZ2b2lkIDAhPT1pJiZpLm5lZWRBcHBlYXJhbmNlcyYmKGY9ITAsZD1udWxsKTtjb25zdHt4cmVmOmd9PWUscD1nLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEocCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgbT1uZXcgcy5EaWN0KGcpO2Zvcihjb25zdCBlIG9mIHAuZ2V0S2V5cygpKSJBUCIhPT1lJiZtLnNldChlLHAuZ2V0UmF3KGUpKTtjb25zdCBiPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6aH0seT1lPT4oMCxhLmlzQXNjaWkpKGUpP2U6KDAsYS5zdHJpbmdUb1VURjE2U3RyaW5nKShlLCEwKTttLnNldCgiViIsQXJyYXkuaXNBcnJheShoKT9oLm1hcCh5KTp5KGgpKSx0aGlzLmFtZW5kU2F2ZWREaWN0KHIsbSk7Y29uc3Qgdz10aGlzLl9nZXRNS0RpY3QodSk7dyYmbS5zZXQoIk1LIix3KTtjb25zdCB2PWcuZW5jcnlwdCx4PXY/di5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbik6bnVsbCxTPVtdLEE9W3tyZWY6dGhpcy5yZWYsZGF0YToiIix4ZmE6YixuZWVkQXBwZWFyYW5jZXM6Zn1dO2lmKG51bGwhPT1kKXtjb25zdCBlPWcuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksdD1uZXcgcy5EaWN0KGcpO20uc2V0KCJBUCIsdCksdC5zZXQoIk4iLGUpO2xldCBhPW51bGw7diYmKGE9di5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZS5udW0sZS5nZW4pKTtjb25zdCBpPXRoaXMuX2dldFNhdmVGaWVsZFJlc291cmNlcyhnKSxsPW5ldyBvLlN0cmluZ1N0cmVhbShkKSxoPWwuZGljdD1uZXcgcy5EaWN0KGcpO2guc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpLGguc2V0KCJSZXNvdXJjZXMiLGkpLGguc2V0KCJCQm94IixbMCwwLHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLHRoaXMuZGF0YS5yZWN0WzNdLXRoaXMuZGF0YS5yZWN0WzFdXSk7Y29uc3QgdT10aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpO3UhPT1uLklERU5USVRZX01BVFJJWCYmaC5zZXQoIk1hdHJpeCIsdSksYXdhaXQoMCxjLndyaXRlT2JqZWN0KShlLGwsUyxhKSxBLnB1c2goe3JlZjplLGRhdGE6Uy5qb2luKCIiKSx4ZmE6bnVsbCxuZWVkQXBwZWFyYW5jZXM6ITF9KSxTLmxlbmd0aD0wfXJldHVybiBtLnNldCgiTSIsIkQ6Ii5jb25jYXQoKDAsbi5nZXRNb2RpZmljYXRpb25EYXRlKSgpKSksYXdhaXQoMCxjLndyaXRlT2JqZWN0KSh0aGlzLnJlZixtLFMseCksQVswXS5kYXRhPVMuam9pbigiIiksQX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQscixzKXtpZih0aGlzLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUEFTU1dPUkQpKXJldHVybiBudWxsO2NvbnN0IG89bnVsbD09cz92b2lkIDA6cy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgYyxsO2lmKG8mJihjPW8uZm9ybWF0dGVkVmFsdWV8fG8udmFsdWUsbD1vLnJvdGF0aW9uKSx2b2lkIDA9PT1sJiZ2b2lkIDA9PT1jJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzJiYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQXx8dGhpcy5hcHBlYXJhbmNlKSlyZXR1cm4gbnVsbDtjb25zdCBoPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKHMpO2lmKHZvaWQgMD09PWMmJihjPXRoaXMuZGF0YS5maWVsZFZhbHVlLCFjKSlyZXR1cm4iL1R4IEJNQyBxICIuY29uY2F0KGgsIlEgRU1DIik7aWYoQXJyYXkuaXNBcnJheShjKSYmMT09PWMubGVuZ3RoJiYoYz1jWzBdKSwoMCxuLmFzc2VydCkoInN0cmluZyI9PXR5cGVvZiBjLCJFeHBlY3RlZCBgdmFsdWVgIHRvIGJlIGEgc3RyaW5nLiIpLGM9Yy50cmltKCksdGhpcy5kYXRhLmNvbWJvKXtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmZpbmQoKGU9PntsZXR7ZXhwb3J0VmFsdWU6dH09ZTtyZXR1cm4gYz09PXR9KSk7Yz0obnVsbD09ZT92b2lkIDA6ZS5kaXNwbGF5VmFsdWUpfHxjfWlmKCIiPT09YylyZXR1cm4iL1R4IEJNQyBxICIuY29uY2F0KGgsIlEgRU1DIik7dm9pZCAwPT09bCYmKGw9dGhpcy5yb3RhdGlvbik7bGV0IHUsZD0tMTt0aGlzLmRhdGEubXVsdGlMaW5lPyh1PWMuc3BsaXQoL1xyXG4/fFxuLykubWFwKChlPT5lLm5vcm1hbGl6ZSgiTkZDIikpKSxkPXUubGVuZ3RoKTp1PVtjLnJlcGxhY2UoL1xyXG4/fFxuLywiIikubm9ybWFsaXplKCJORkMiKV07bGV0IGY9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sZz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PWwmJjI3MCE9PWx8fChbZyxmXT1bZixnXSksdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLGkucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IHAsbSxiLHk9YXdhaXQgQy5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB3PVtdO2xldCB2PSExO2Zvcihjb25zdCBlIG9mIHUpe2NvbnN0IHQ9eS5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKHY9ITApLHcucHVzaCh0LmpvaW4oIiIpKX1pZih2JiZyJm4uUmVuZGVyaW5nSW50ZW50RmxhZy5TQVZFKXJldHVybntuZWVkQXBwZWFyYW5jZXM6ITB9O2lmKHYmJnRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCByPXRoaXMuZGF0YS5jb21iPyJtb25vc3BhY2UiOiJzYW5zLXNlcmlmIixuPW5ldyBpLkZha2VVbmljb2RlRm9udChlLnhyZWYscikscz1uLmNyZWF0ZUZvbnRSZXNvdXJjZXModS5qb2luKCIiKSksbz1zLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygby5nZXRLZXlzKCkpZS5zZXQodCxvLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixvKTtjb25zdCBsPW4uZm9udE5hbWUubmFtZTt5PWF3YWl0IEMuX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6bCxmb250U2l6ZTowfSxzKTtmb3IobGV0IGU9MCx0PXcubGVuZ3RoO2U8dDtlKyspd1tlXT0oMCxhLnN0cmluZ1RvVVRGMTZTdHJpbmcpKHVbZV0pO2NvbnN0IGg9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPWwsW3AsbSxiXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGctNCxjLHksZCksdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1ofWVsc2UgdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fCgwLG4ud2FybikoIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIiksW3AsbSxiXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGctNCxjLHksZCk7bGV0IHg9eS5kZXNjZW50O3g9aXNOYU4oeCk/bi5CQVNFTElORV9GQUNUT1IqYjpNYXRoLm1heChuLkJBU0VMSU5FX0ZBQ1RPUipiLE1hdGguYWJzKHgpKm0pO2NvbnN0IFM9TWF0aC5taW4oTWF0aC5mbG9vcigoZi1tKS8yKSwxKSxBPXRoaXMuZGF0YS50ZXh0QWxpZ25tZW50O2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpcmV0dXJuIHRoaXMuX2dldE11bHRpbGluZUFwcGVhcmFuY2UocCx3LHksbSxnLGYsQSwyLFMseCxiLHMpO2lmKHRoaXMuZGF0YS5jb21iKXJldHVybiB0aGlzLl9nZXRDb21iQXBwZWFyYW5jZShwLHksd1swXSxtLGcsZiwyLFMseCxiLHMpO2NvbnN0IGs9Uyt4O3JldHVybiAwPT09QXx8QT4yPyIvVHggQk1DIHEgIi5jb25jYXQoaCwiQlQgIikrcCsiIDEgMCAwIDEgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoMiksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoayksIiBUbSAoIikuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKSh3WzBdKSwiKSBUaiBFVCBRIEVNQyIpOiIvVHggQk1DIHEgIi5jb25jYXQoaCwiQlQgIikrcCsiIDEgMCAwIDEgMCAwIFRtICIuY29uY2F0KHRoaXMuX3JlbmRlclRleHQod1swXSx5LG0sZyxBLHtzaGlmdDowfSwyLGspLCIgRVQgUSBFTUMiKX1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxyLG4pe2NvbnN0IGE9bmV3IG0uT3BlcmF0b3JMaXN0LGk9e2ZvbnQ6bnVsbCxjbG9uZSgpe3JldHVybiB0aGlzfX0se2ZvbnROYW1lOm8sZm9udFNpemU6Y309cjtyZXR1cm4gYXdhaXQgZS5oYW5kbGVTZXRGb250KG4sW28mJnMuTmFtZS5nZXQobyksY10sbnVsbCxhLHQsaSxudWxsKSxpLmZvbnR9X2dldFRleHRXaWR0aChlLHQpe3JldHVybiB0LmNoYXJzVG9HbHlwaHMoZSkucmVkdWNlKCgoZSx0KT0+ZSt0LndpZHRoKSwwKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQscixhLHMpe2xldHtmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLGM9KG98fDEyKSpuLkxJTkVfRkFDVE9SLGw9TWF0aC5yb3VuZChlL2MpO2lmKCFvKXtjb25zdCBoPWU9Pk1hdGguZmxvb3IoMTAwKmUpLzEwMDtpZigtMT09PXMpe2NvbnN0IGk9dGhpcy5fZ2V0VGV4dFdpZHRoKHIsYSk7bz1oKE1hdGgubWluKGUvbi5MSU5FX0ZBQ1RPUixpPnQ/dC9pOjEvMCkpLGw9MX1lbHNle2NvbnN0IGk9ci5zcGxpdCgvXHJcbj98XG4vKSx1PVtdO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9YS5lbmNvZGVTdHJpbmcoZSkuam9pbigiIikscj1hLmNoYXJzVG9HbHlwaHModCksbj1hLmdldENoYXJQb3NpdGlvbnModCk7dS5wdXNoKHtsaW5lOnQsZ2x5cGhzOnIscG9zaXRpb25zOm59KX1jb25zdCBkPXI9PntsZXQgbj0wO2Zvcihjb25zdCBpIG9mIHUpaWYobis9dGhpcy5fc3BsaXRMaW5lKG51bGwsYSxyLHQsaSkubGVuZ3RoKnIsbj5lKXJldHVybiEwO3JldHVybiExfTtmb3IobD1NYXRoLm1heChsLHMpO2M9ZS9sLG89aChjL24uTElORV9GQUNUT1IpLGQobyk7KWwrK31jb25zdHtmb250TmFtZTp1LGZvbnRDb2xvcjpkfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSgwLGkuY3JlYXRlRGVmYXVsdEFwcGVhcmFuY2UpKHtmb250U2l6ZTpvLGZvbnROYW1lOnUsZm9udENvbG9yOmR9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UsbyxlL2xdfV9yZW5kZXJUZXh0KGUsdCxyLG4saSxzLG8sYyl7bGV0IGw7bD0xPT09aT8obi10aGlzLl9nZXRUZXh0V2lkdGgoZSx0KSpyKS8yOjI9PT1pP24tdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqci1vOm87Y29uc3QgaD0oMCxhLm51bWJlclRvU3RyaW5nKShsLXMuc2hpZnQpO3JldHVybiBzLnNoaWZ0PWwsIiIuY29uY2F0KGgsIiAiKS5jb25jYXQoYz0oMCxhLm51bWJlclRvU3RyaW5nKShjKSwiIFRkICgiKS5jb25jYXQoKDAsYS5lc2NhcGVTdHJpbmcpKGUpLCIpIFRqIil9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXt2YXIgdDtjb25zdHtsb2NhbFJlc291cmNlczpyLGFwcGVhcmFuY2VSZXNvdXJjZXM6bixhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxpPW51bGw9PT0odD10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKXx8dm9pZCAwPT09dD92b2lkIDA6dC5mb250TmFtZTtpZighaSlyZXR1cm4gcnx8cy5EaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3Isbl0paWYoZSBpbnN0YW5jZW9mIHMuRGljdCl7Y29uc3QgdD1lLmdldCgiRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBzLkRpY3QmJnQuaGFzKGkpKXJldHVybiBlfWlmKGEgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IHQ9YS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5EaWN0JiZ0LmhhcyhpKSl7Y29uc3Qgbj1uZXcgcy5EaWN0KGUpO24uc2V0KGksdC5nZXRSYXcoaSkpO2NvbnN0IGE9bmV3IHMuRGljdChlKTtyZXR1cm4gYS5zZXQoIkZvbnQiLG4pLHMuRGljdC5tZXJnZSh7eHJlZjplLGRpY3RBcnJheTpbYSxyXSxtZXJnZVN1YkRpY3RzOiEwfSl9fXJldHVybiByfHxzLkRpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgTyBleHRlbmRzIEN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MLHRoaXMuX2hhc1RleHQ9ITA7Y29uc3QgdD1lLmRpY3Q7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgcj0oMCxhLmdldEluaGVyaXRhYmxlUHJvcGVydHkpKHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihyKXx8cjwwfHxyPjIpJiYocj1udWxsKSx0aGlzLmRhdGEudGV4dEFsaWdubWVudD1yO2xldCBpPSgwLGEuZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MCkmJihpPTApLHRoaXMuZGF0YS5tYXhMZW49aSx0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpLHRoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CKSYmIXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSUxJTkUpJiYhdGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSYmIXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5GSUxFU0VMRUNUKSYmMCE9PXRoaXMuZGF0YS5tYXhMZW4sdGhpcy5kYXRhLmRvTm90U2Nyb2xsPXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5ET05PVFNDUk9MTCl9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxyLG4saSxzLG8sYyxsLGgsdSl7Y29uc3QgZD1pL3RoaXMuZGF0YS5tYXhMZW4sZj10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyh1KSxnPVtdLHA9dC5nZXRDaGFyUG9zaXRpb25zKHIpO2Zvcihjb25zdFtlLHRdb2YgcClnLnB1c2goIigiLmNvbmNhdCgoMCxhLmVzY2FwZVN0cmluZykoci5zdWJzdHJpbmcoZSx0KSksIikgVGoiKSk7Y29uc3QgbT1nLmpvaW4oIiAiLmNvbmNhdCgoMCxhLm51bWJlclRvU3RyaW5nKShkKSwiIDAgVGQgIikpO3JldHVybiIvVHggQk1DIHEgIi5jb25jYXQoZiwiQlQgIikrZSsiIDEgMCAwIDEgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykobyksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoYytsKSwiIFRtICIpLmNvbmNhdChtLCIgRVQgUSBFTUMiKX1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQscixuLGkscyxvLGMsbCxoLHUsZCl7Y29uc3QgZj1bXSxnPWktMipjLHA9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT10W2VdLHM9dGhpcy5fc3BsaXRMaW5lKGEscixuLGcpO2ZvcihsZXQgdD0wLGE9cy5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1zW3RdLGQ9MD09PWUmJjA9PT10Py1sLSh1LWgpOi11O2YucHVzaCh0aGlzLl9yZW5kZXJUZXh0KGEscixuLGksbyxwLGMsZCkpfX1jb25zdCBtPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGQpLGI9Zi5qb2luKCJcbiIpO3JldHVybiIvVHggQk1DIHEgIi5jb25jYXQobSwiQlQgIikrZSsiIDEgMCAwIDEgMCAiLmNvbmNhdCgoMCxhLm51bWJlclRvU3RyaW5nKShzKSwiIFRtICIpLmNvbmNhdChiLCIgRVQgUSBFTUMiKX1fc3BsaXRMaW5lKGUsdCxyLG4pe2xldCBhPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTp7fTtlPWEubGluZXx8ZTtjb25zdCBpPWEuZ2x5cGhzfHx0LmNoYXJzVG9HbHlwaHMoZSk7aWYoaS5sZW5ndGg8PTEpcmV0dXJuW2VdO2NvbnN0IHM9YS5wb3NpdGlvbnN8fHQuZ2V0Q2hhclBvc2l0aW9ucyhlKSxvPXIvMWUzLGM9W107bGV0IGw9LTEsaD0tMSx1PS0xLGQ9MCxmPTA7Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKXtjb25zdFtyLGFdPXNbdF0sZz1pW3RdLHA9Zy53aWR0aCpvOyIgIj09PWcudW5pY29kZT9mK3A+bj8oYy5wdXNoKGUuc3Vic3RyaW5nKGQscikpLGQ9cixmPXAsbD0tMSx1PS0xKTooZis9cCxsPXIsaD1hLHU9dCk6ZitwPm4/LTEhPT1sPyhjLnB1c2goZS5zdWJzdHJpbmcoZCxoKSksZD1oLHQ9dSsxLGw9LTEsZj0wKTooYy5wdXNoKGUuc3Vic3RyaW5nKGQscikpLGQ9cixmPXApOmYrPXB9cmV0dXJuIGQ8ZS5sZW5ndGgmJmMucHVzaChlLnN1YnN0cmluZyhkLGUubGVuZ3RoKSksY31nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlBBU1NXT1JEKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBGIGV4dGVuZHMgQ3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGwsdGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGwsdGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pLHRoaXMuZGF0YS5yYWRpb0J1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhuLkFubm90YXRpb25GaWVsZEZsYWcuUkFESU8pJiYhdGhpcy5oYXNGaWVsZEZsYWcobi5Bbm5vdGF0aW9uRmllbGRGbGFnLlBVU0hCVVRUT04pLHRoaXMuZGF0YS5wdXNoQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5QVVNIQlVUVE9OKSx0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMSx0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk6dGhpcy5kYXRhLnB1c2hCdXR0b24/KHRoaXMuZGF0YS5oYXNPd25DYW52YXM9ITAsdGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSkpOigwLG4ud2FybikoIkludmFsaWQgZmllbGQgZmxhZ3MgZm9yIGJ1dHRvbiB3aWRnZXQgYW5ub3RhdGlvbiIpfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQscixhLGkpe2lmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LHIsITEsaSk7bGV0IHM9bnVsbCxvPW51bGw7aWYoaSl7Y29uc3QgZT1pLmdldCh0aGlzLmRhdGEuaWQpO3M9ZT9lLnZhbHVlOm51bGwsbz1lP2Uucm90YXRpb246bnVsbH1pZihudWxsPT09cyYmdGhpcy5hcHBlYXJhbmNlKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LHIsYSxpKTtudWxsPT1zJiYocz10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO2NvbnN0IGM9cz90aGlzLmNoZWNrZWRBcHBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZTtpZihjKXtjb25zdCBzPXRoaXMuYXBwZWFyYW5jZSxsPWMuZGljdC5nZXRBcnJheSgiTWF0cml4Iil8fG4uSURFTlRJVFlfTUFUUklYO28mJmMuZGljdC5zZXQoIk1hdHJpeCIsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChpKSksdGhpcy5hcHBlYXJhbmNlPWM7Y29uc3QgaD1zdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LHIsYSxpKTtyZXR1cm4gdGhpcy5hcHBlYXJhbmNlPXMsYy5kaWN0LnNldCgiTWF0cml4IixsKSxofXJldHVybntvcExpc3Q6bmV3IG0uT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQscil7cmV0dXJuIHRoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LHIpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LHIpOm51bGx9YXN5bmMgX3NhdmVDaGVja2JveChlLHQscil7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgYT1yLmdldCh0aGlzLmRhdGEuaWQpO2xldCBpPW51bGw9PWE/dm9pZCAwOmEucm90YXRpb24sbz1udWxsPT1hP3ZvaWQgMDphLnZhbHVlO2lmKHZvaWQgMD09PWkpe2lmKHZvaWQgMD09PW8pcmV0dXJuIG51bGw7aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU9PT1vKXJldHVybiBudWxsfWNvbnN0IGw9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuIG51bGw7dm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbiksdm9pZCAwPT09byYmKG89dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpO2NvbnN0IGg9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpvP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sdT1zLk5hbWUuZ2V0KG8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiJPZmYiKTtsLnNldCgiViIsdSksbC5zZXQoIkFTIix1KSxsLnNldCgiTSIsIkQ6Ii5jb25jYXQoKDAsbi5nZXRNb2RpZmljYXRpb25EYXRlKSgpKSk7Y29uc3QgZD10aGlzLl9nZXRNS0RpY3QoaSk7ZCYmbC5zZXQoIk1LIixkKTtjb25zdCBmPWUueHJlZi5lbmNyeXB0O2xldCBnPW51bGw7ZiYmKGc9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IHA9WyIiLmNvbmNhdCh0aGlzLnJlZi5udW0sIiAiKS5jb25jYXQodGhpcy5yZWYuZ2VuLCIgb2JqXG4iKV07cmV0dXJuIGF3YWl0KDAsYy53cml0ZURpY3QpKGwscCxnKSxwLnB1c2goIlxuZW5kb2JqXG4iKSxbe3JlZjp0aGlzLnJlZixkYXRhOnAuam9pbigiIikseGZhOmh9XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxyKXtpZighcilyZXR1cm4gbnVsbDtjb25zdCBhPXIuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IGk9bnVsbD09YT92b2lkIDA6YS5yb3RhdGlvbixvPW51bGw9PWE/dm9pZCAwOmEudmFsdWU7aWYodm9pZCAwPT09aSl7aWYodm9pZCAwPT09bylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZT09PW8pcmV0dXJuIG51bGx9Y29uc3QgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSksdm9pZCAwPT09aSYmKGk9dGhpcy5yb3RhdGlvbik7Y29uc3QgaD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSx1PXMuTmFtZS5nZXQobz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpO2xldCBkPW51bGw7Y29uc3QgZj1lLnhyZWYuZW5jcnlwdDtpZihvKWlmKHRoaXMucGFyZW50IGluc3RhbmNlb2Ygcy5SZWYpe2NvbnN0IHQ9ZS54cmVmLmZldGNoKHRoaXMucGFyZW50KTtsZXQgcj1udWxsO2YmJihyPWYuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKHRoaXMucGFyZW50Lm51bSx0aGlzLnBhcmVudC5nZW4pKSx0LnNldCgiViIsdSksZD1bIiIuY29uY2F0KHRoaXMucGFyZW50Lm51bSwiICIpLmNvbmNhdCh0aGlzLnBhcmVudC5nZW4sIiBvYmpcbiIpXSxhd2FpdCgwLGMud3JpdGVEaWN0KSh0LGQsciksZC5wdXNoKCJcbmVuZG9ialxuIil9ZWxzZSB0aGlzLnBhcmVudCBpbnN0YW5jZW9mIHMuRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIix1KTtsLnNldCgiQVMiLHUpLGwuc2V0KCJNIiwiRDoiLmNvbmNhdCgoMCxuLmdldE1vZGlmaWNhdGlvbkRhdGUpKCkpKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChpKTtnJiZsLnNldCgiTUsiLGcpO2xldCBwPW51bGw7ZiYmKHA9Zi5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0odGhpcy5yZWYubnVtLHRoaXMucmVmLmdlbikpO2NvbnN0IG09WyIiLmNvbmNhdCh0aGlzLnJlZi5udW0sIiAiKS5jb25jYXQodGhpcy5yZWYuZ2VuLCIgb2JqXG4iKV07YXdhaXQoMCxjLndyaXRlRGljdCkobCxtLHApLG0ucHVzaCgiXG5lbmRvYmpcbiIpO2NvbnN0IGI9W3tyZWY6dGhpcy5yZWYsZGF0YTptLmpvaW4oIiIpLHhmYTpofV07cmV0dXJuIG51bGwhPT1kJiZiLnB1c2goe3JlZjp0aGlzLnBhcmVudCxkYXRhOmQuam9pbigiIikseGZhOm51bGx9KSxifV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdCByPXRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdLGk9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz1bMCwwLHIsaV0sbD0uOCpNYXRoLm1pbihyLGkpO2xldCBoLHU7ImNoZWNrIj09PXQ/KGg9e3dpZHRoOi43NTUqbCxoZWlnaHQ6LjcwNSpsfSx1PSIzIik6ImRpc2MiPT09dD8oaD17d2lkdGg6Ljc5MSpsLGhlaWdodDouNzA1Kmx9LHU9ImwiKTooMCxuLnVucmVhY2hhYmxlKSgiX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICIuY29uY2F0KHQpKTtjb25zdCBkPSJxIEJUIC9QZGZKc1phRGIgIi5jb25jYXQobCwiIFRmIDAgZyAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoKHItaC53aWR0aCkvMiksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoKGktaC5oZWlnaHQpLzIpLCIgVGQgKCIpLmNvbmNhdCh1LCIpIFRqIEVUIFEiKSxmPW5ldyBzLkRpY3QoZS54cmVmKTtmLnNldCgiRm9ybVR5cGUiLDEpLGYuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpLGYuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpLGYuc2V0KCJCQm94IixjKSxmLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKSxmLnNldCgiTGVuZ3RoIixkLmxlbmd0aCk7Y29uc3QgZz1uZXcgcy5EaWN0KGUueHJlZikscD1uZXcgcy5EaWN0KGUueHJlZik7cC5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KSxnLnNldCgiRm9udCIscCksZi5zZXQoIlJlc291cmNlcyIsZyksdGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgby5TdHJpbmdTdHJlYW0oZCksdGhpcy5jaGVja2VkQXBwZWFyYW5jZS5kaWN0PWYsdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuO2NvbnN0IHI9dC5nZXQoIk4iKTtpZighKHIgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBuPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIG4mJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1uKTtjb25zdCBhPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixpPXIuZ2V0S2V5cygpO2lmKDA9PT1pLmxlbmd0aClpLnB1c2goIk9mZiIsYSk7ZWxzZSBpZigxPT09aS5sZW5ndGgpIk9mZiI9PT1pWzBdP2kucHVzaChhKTppLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYoaS5pbmNsdWRlcyhhKSlpLmxlbmd0aD0wLGkucHVzaCgiT2ZmIixhKTtlbHNle2NvbnN0IGU9aS5maW5kKChlPT4iT2ZmIiE9PWUpKTtpLmxlbmd0aD0wLGkucHVzaCgiT2ZmIixlKX1pLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPSJPZmYiKSx0aGlzLmRhdGEuZXhwb3J0VmFsdWU9aVsxXTtjb25zdCBvPXIuZ2V0KHRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgbC5CYXNlU3RyZWFtP286bnVsbDtjb25zdCBjPXIuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9YyBpbnN0YW5jZW9mIGwuQmFzZVN0cmVhbT9jOm51bGwsdGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIiksdGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKSx0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdH1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIHMuRGljdCl7dGhpcy5wYXJlbnQ9ZS5kaWN0LmdldFJhdygiUGFyZW50Iik7Y29uc3Qgcj10LmdldCgiViIpO3IgaW5zdGFuY2VvZiBzLk5hbWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocikpfWNvbnN0IHI9ZS5kaWN0LmdldCgiQVAiKTtpZighKHIgaW5zdGFuY2VvZiBzLkRpY3QpKXJldHVybjtjb25zdCBuPXIuZ2V0KCJOIik7aWYoIShuIGluc3RhbmNlb2Ygcy5EaWN0KSlyZXR1cm47Zm9yKGNvbnN0IGUgb2Ygbi5nZXRLZXlzKCkpaWYoIk9mZiIhPT1lKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKGUpO2JyZWFrfWNvbnN0IGE9bi5nZXQodGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPWEgaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0/YTpudWxsO2NvbnN0IGk9bi5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1pIGluc3RhbmNlb2YgbC5CYXNlU3RyZWFtP2k6bnVsbCx0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiZGlzYyIpLHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSksdGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3R9X3Byb2Nlc3NQdXNoQnV0dG9uKGUpe2UuZGljdC5oYXMoIkEiKXx8ZS5kaWN0LmhhcygiQUEiKXx8dGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dD8odGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9IWUuZGljdC5oYXMoIkEiKSYmIWUuZGljdC5oYXMoIkFBIiksdS5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pKTooMCxuLndhcm4pKCJQdXNoIGJ1dHRvbnMgd2l0aG91dCBhY3Rpb24gZGljdGlvbmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkIil9Z2V0RmllbGRPYmplY3QoKXtsZXQgZSx0PSJidXR0b24iO3JldHVybiB0aGlzLmRhdGEuY2hlY2tCb3g/KHQ9ImNoZWNrYm94IixlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk6dGhpcy5kYXRhLnJhZGlvQnV0dG9uJiYodD0icmFkaW9idXR0b24iLGU9dGhpcy5kYXRhLmJ1dHRvblZhbHVlKSx7aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IHMuRGljdDtyZXR1cm4gZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJaYXBmRGluZ2JhdHMiKSksZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZhbGxiYWNrVHlwZSIpKSxlLnNldCgiU3VidHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpLGUuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiWmFwZkRpbmdiYXRzRW5jb2RpbmciKSksKDAsbi5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBJIGV4dGVuZHMgQ3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpyfT1lO3RoaXMuaW5kaWNlcz10LmdldEFycmF5KCJJIiksdGhpcy5oYXNJbmRpY2VzPUFycmF5LmlzQXJyYXkodGhpcy5pbmRpY2VzKSYmdGhpcy5pbmRpY2VzLmxlbmd0aD4wLHRoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IGk9KDAsYS5nZXRJbmhlcml0YWJsZVByb3BlcnR5KSh7ZGljdDp0LGtleToiT3B0In0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXIuZmV0Y2hJZlJlZihpW2VdKSxuPUFycmF5LmlzQXJyYXkodCk7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShuP3IuZmV0Y2hJZlJlZih0WzBdKTp0KSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKG4/ci5mZXRjaElmUmVmKHRbMV0pOnQpfX1pZih0aGlzLmhhc0luZGljZXMpe3RoaXMuZGF0YS5maWVsZFZhbHVlPVtdO2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO2Zvcihjb25zdCB0IG9mIHRoaXMuaW5kaWNlcylOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wJiZ0PGUmJnRoaXMuZGF0YS5maWVsZFZhbHVlLnB1c2godGhpcy5kYXRhLm9wdGlvbnNbdF0uZXhwb3J0VmFsdWUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIHRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlPVt0aGlzLmRhdGEuZmllbGRWYWx1ZV06dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXSk7dGhpcy5kYXRhLmNvbWJvPXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5DT01CTyksdGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKG4uQW5ub3RhdGlvbkZpZWxkRmxhZy5NVUxUSVNFTEVDVCksdGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe3ZhciByO2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBuPW51bGw9PWV8fG51bGw9PT0ocj1lLmdldCh0aGlzLmRhdGEuaWQpKXx8dm9pZCAwPT09cj92b2lkIDA6ci52YWx1ZTtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2NvbnN0IGE9W10se29wdGlvbnM6aX09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxyPWkubGVuZ3RoO2U8cjtlKyspaVtlXS5leHBvcnRWYWx1ZT09PW5bdF0mJihhLnB1c2goZSksdCs9MSk7dC5zZXQoIkkiLGEpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxyLGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LHIsYSk7bGV0IHMsbztjb25zdCBjPW51bGw9PWE/dm9pZCAwOmEuZ2V0KHRoaXMuZGF0YS5pZCk7aWYoYyYmKG89Yy5yb3RhdGlvbixzPWMudmFsdWUpLHZvaWQgMD09PW8mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cz9zPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7bGV0IGw9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0saD10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW8mJjI3MCE9PW98fChbaCxsXT1bbCxoXSk7Y29uc3QgdT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsZD1bXTtmb3IobGV0IGU9MDtlPHU7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtzLmluY2x1ZGVzKHQpJiZkLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPSgwLGkucGFyc2VEZWZhdWx0QXBwZWFyYW5jZSkodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgZj1hd2FpdCBDLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBnLHtmb250U2l6ZTpwfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHApZz10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGwtMSkvdTtsZXQgdCxyPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3Qgbj10aGlzLl9nZXRUZXh0V2lkdGgoZSxmKTtuPnImJihyPW4sdD1lKX1bZyxwXT10aGlzLl9jb21wdXRlRm9udFNpemUoZSxoLTQsdCxmLC0xKX1jb25zdCBtPXAqbi5MSU5FX0ZBQ1RPUixiPShtLXApLzIseT1NYXRoLmZsb29yKGwvbSk7bGV0IHc9MDtpZihkLmxlbmd0aD4wKXtjb25zdCBlPU1hdGgubWluKC4uLmQpLHQ9TWF0aC5tYXgoLi4uZCk7dz1NYXRoLm1heCgwLHQteSsxKSx3PmUmJih3PWUpfWNvbnN0IHY9TWF0aC5taW4odyt5KzEsdSkseD1bIi9UeCBCTUMgcSIsIjEgMSAiLmNvbmNhdChoLCIgIikuY29uY2F0KGwsIiByZSBXIG4iKV07aWYoZC5sZW5ndGgpe3gucHVzaCgiMC42MDAwMDYgMC43NTY4NjYgMC44NTQ5MDQgcmciKTtmb3IoY29uc3QgZSBvZiBkKXc8PWUmJmU8diYmeC5wdXNoKCIxICIuY29uY2F0KGwtKGUtdysxKSptLCIgIikuY29uY2F0KGgsIiAiKS5jb25jYXQobSwiIHJlIGYiKSl9eC5wdXNoKCJCVCIsZywiMSAwIDAgMSAwICIuY29uY2F0KGwsIiBUbSIpKTtjb25zdCBTPXtzaGlmdDowfTtmb3IobGV0IGU9dztlPHY7ZSsrKXtjb25zdHtkaXNwbGF5VmFsdWU6dH09dGhpcy5kYXRhLm9wdGlvbnNbZV0scj1lPT09dz9iOjA7eC5wdXNoKHRoaXMuX3JlbmRlclRleHQodCxmLHAsaCwwLFMsMiwtbStyKSl9cmV0dXJuIHgucHVzaCgiRVQgUSBFTUMiKSx4LmpvaW4oIlxuIil9fWNsYXNzIFQgZXh0ZW5kcyBDe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuZGF0YS5maWVsZFZhbHVlPW51bGwsdGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGV9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBNIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmRhdGEubm9Sb3RhdGU9ITAsdGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlRFWFQsdGhpcy5kYXRhLmhhc0FwcGVhcmFuY2U/dGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI6KHRoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyLHRoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyLHRoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIiksdC5oYXMoIlN0YXRlIik/KHRoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbCx0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsKToodGhpcy5kYXRhLnN0YXRlPW51bGwsdGhpcy5kYXRhLnN0YXRlTW9kZWw9bnVsbCl9fWNsYXNzIEUgZXh0ZW5kcyBTe2NvbnN0cnVjdG9yKGUpe3ZhciB0O3N1cGVyKGUpLHRoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkxJTks7Y29uc3Qgcj12KGUuZGljdCx0aGlzLnJlY3RhbmdsZSk7ciYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPXIpLCh0PXRoaXMuZGF0YSkuYm9yZGVyQ29sb3J8fCh0LmJvcmRlckNvbG9yPXRoaXMuZGF0YS5jb2xvciksdS5DYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmUuZGljdCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6ZS5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwsZG9jQXR0YWNobWVudHM6ZS5hdHRhY2htZW50c30pfX1jbGFzcyBQIGV4dGVuZHMgU3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuUE9QVVAsdGhpcy5kYXRhLnJlY3RbMF0hPT10aGlzLmRhdGEucmVjdFsyXSYmdGhpcy5kYXRhLnJlY3RbMV0hPT10aGlzLmRhdGEucmVjdFszXXx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCByPXQuZ2V0KCJQYXJlbnQiKTtpZighcilyZXR1cm4gdm9pZCgwLG4ud2FybikoIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO2NvbnN0IGE9ci5nZXRBcnJheSgiUmVjdCIpO3RoaXMuZGF0YS5wYXJlbnRSZWN0PUFycmF5LmlzQXJyYXkoYSkmJjQ9PT1hLmxlbmd0aD9uLlV0aWwubm9ybWFsaXplUmVjdChhKTpudWxsO2NvbnN0IGk9ci5nZXQoIlJUIik7aWYoKDAscy5pc05hbWUpKGksbi5Bbm5vdGF0aW9uUmVwbHlUeXBlLkdST1VQKSYmKHI9ci5nZXQoIklSVCIpKSxyLmhhcygiTSIpPyh0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoci5nZXQoIk0iKSksdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlKTp0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsLHIuaGFzKCJDIik/KHRoaXMuc2V0Q29sb3Ioci5nZXRBcnJheSgiQyIpKSx0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcik6dGhpcy5kYXRhLmNvbG9yPW51bGwsIXRoaXMudmlld2FibGUpe2NvbnN0IGU9ci5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoci5nZXQoIlQiKSksdGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlLHRoaXMuc2V0Q29udGVudHMoci5nZXQoIkNvbnRlbnRzIikpLHRoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cyxyLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1iLlhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwoci5nZXQoIlJDIikpKSx0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9fXQuUG9wdXBBbm5vdGF0aW9uPVA7Y2xhc3MgUiBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDtjb25zdHtldmFsdWF0b3JPcHRpb25zOnQseHJlZjpyfT1lO2lmKHRoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkZSRUVURVhULHRoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSksdGhpcy5hcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTpufT0oMCxpLnBhcnNlQXBwZWFyYW5jZVN0cmVhbSkodGhpcy5hcHBlYXJhbmNlLHQscik7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPW58fDEwfWVsc2UgaWYodGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe3ZhciBhO2NvbnN0IHQ9ZS5kaWN0LmdldCgiQ0EiKSxuPW5ldyBpLkZha2VVbmljb2RlRm9udChyLCJzYW5zLXNlcmlmIik7KGE9dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSkuZm9udFNpemV8fChhLmZvbnRTaXplPTEwKTtjb25zdHtmb250Q29sb3I6cyxmb250U2l6ZTpvfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuYXBwZWFyYW5jZT1uLmNyZWF0ZUFwcGVhcmFuY2UodGhpcy5fY29udGVudHMuc3RyLHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24sbyxzLHQpLHRoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsaS5GYWtlVW5pY29kZUZvbnQudG9Vbmljb2RlU3RyZWFtKX1lbHNlKDAsbi53YXJuKSgiRnJlZVRleHRBbm5vdGF0aW9uOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIil9Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHIpe2xldHthcFJlZjpvLGFwOmN9PXI7Y29uc3R7Y29sb3I6bCxmb250U2l6ZTpoLHJlY3Q6dSxyb3RhdGlvbjpkLHVzZXI6Zix2YWx1ZTpnfT1lLHA9bmV3IHMuRGljdCh0KTtwLnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSkscC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZyZWVUZXh0IikpLHAuc2V0KCJDcmVhdGlvbkRhdGUiLCJEOiIuY29uY2F0KCgwLG4uZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKSkpLHAuc2V0KCJSZWN0Iix1KTtjb25zdCBtPSIvSGVsdiAiLmNvbmNhdChoLCIgVGYgIikuY29uY2F0KCgwLGkuZ2V0UGRmQ29sb3IpKGwsITApKTtpZihwLnNldCgiREEiLG0pLHAuc2V0KCJDb250ZW50cyIsKDAsYS5pc0FzY2lpKShnKT9nOigwLGEuc3RyaW5nVG9VVEYxNlN0cmluZykoZywhMCkpLHAuc2V0KCJGIiw0KSxwLnNldCgiQm9yZGVyIixbMCwwLDBdKSxwLnNldCgiUm90YXRlIixkKSxmJiZwLnNldCgiVCIsKDAsYS5pc0FzY2lpKShmKT9mOigwLGEuc3RyaW5nVG9VVEYxNlN0cmluZykoZiwhMCkpLG98fGMpe2NvbnN0IGU9bmV3IHMuRGljdCh0KTtwLnNldCgiQVAiLGUpLG8/ZS5zZXQoIk4iLG8pOmUuc2V0KCJOIixjKX1yZXR1cm4gcH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQscil7Y29uc3R7YmFzZUZvbnRSZWY6YyxldmFsdWF0b3I6bCx0YXNrOmh9PXIse2NvbG9yOnUsZm9udFNpemU6ZCxyZWN0OmYscm90YXRpb246Zyx2YWx1ZTpwfT1lLG09bmV3IHMuRGljdCh0KSxiPW5ldyBzLkRpY3QodCk7aWYoYyliLnNldCgiSGVsdiIsYyk7ZWxzZXtjb25zdCBlPW5ldyBzLkRpY3QodCk7ZS5zZXQoIkJhc2VGb250IixzLk5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSksZS5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkZvbnQiKSksZS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlR5cGUxIikpLGUuc2V0KCJFbmNvZGluZyIscy5OYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpLGIuc2V0KCJIZWx2IixlKX1tLnNldCgiRm9udCIsYik7Y29uc3QgeT1hd2FpdCBDLl9nZXRGb250RGF0YShsLGgse2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpkfSxtKSxbdyx2LHgsU109ZjtsZXQgQT14LXcsaz1TLXY7ZyUxODAhPTAmJihbQSxrXT1bayxBXSk7Y29uc3QgTz1wLnNwbGl0KCJcbiIpLEY9ZC8xZTM7bGV0IEk9LTEvMDtjb25zdCBUPVtdO2ZvcihsZXQgZSBvZiBPKXtjb25zdCB0PXkuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpLFQucHVzaChlKTtsZXQgcj0wO2NvbnN0IG49eS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIG4pcis9ZS53aWR0aCpGO0k9TWF0aC5tYXgoSSxyKX1sZXQgTT0xO0k+QSYmKE09QS9JKTtsZXQgRT0xO2NvbnN0IFA9bi5MSU5FX0ZBQ1RPUipkLFI9KG4uTElORV9GQUNUT1Itbi5MSU5FX0RFU0NFTlRfRkFDVE9SKSpkLE49UCpPLmxlbmd0aDtOPmsmJihFPWsvTik7Y29uc3QgRD1kKk1hdGgubWluKE0sRSk7bGV0IEIsTCxfO3N3aXRjaChnKXtjYXNlIDA6Xz1bMSwwLDAsMV0sTD1bZlswXSxmWzFdLEEsa10sQj1bZlswXSxmWzNdLVJdO2JyZWFrO2Nhc2UgOTA6Xz1bMCwxLC0xLDBdLEw9W2ZbMV0sLWZbMl0sQSxrXSxCPVtmWzFdLC1mWzBdLVJdO2JyZWFrO2Nhc2UgMTgwOl89Wy0xLDAsMCwtMV0sTD1bLWZbMl0sLWZbM10sQSxrXSxCPVstZlsyXSwtZlsxXS1SXTticmVhaztjYXNlIDI3MDpfPVswLC0xLDEsMF0sTD1bLWZbM10sZlswXSxBLGtdLEI9Wy1mWzNdLGZbMl0tUl19Y29uc3Qgaj1bInEiLCIiLmNvbmNhdChfLmpvaW4oIiAiKSwiIDAgMCBjbSIpLCIiLmNvbmNhdChMLmpvaW4oIiAiKSwiIHJlIFcgbiIpLCJCVCIsIiIuY29uY2F0KCgwLGkuZ2V0UGRmQ29sb3IpKHUsITApKSwiMCBUYyAvSGVsdiAiLmNvbmNhdCgoMCxhLm51bWJlclRvU3RyaW5nKShEKSwiIFRmIildO2oucHVzaCgiIi5jb25jYXQoQi5qb2luKCIgIiksIiBUZCAoIikuY29uY2F0KCgwLGEuZXNjYXBlU3RyaW5nKShUWzBdKSwiKSBUaiIpKTtjb25zdCBVPSgwLGEubnVtYmVyVG9TdHJpbmcpKFApO2ZvcihsZXQgZT0xLHQ9VC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1UW2VdO2oucHVzaCgiMCAtIi5jb25jYXQoVSwiIFRkICgiKS5jb25jYXQoKDAsYS5lc2NhcGVTdHJpbmcpKHQpLCIpIFRqIikpfWoucHVzaCgiRVQiLCJRIik7Y29uc3QgJD1qLmpvaW4oIlxuIiksWD1uZXcgcy5EaWN0KHQpO1guc2V0KCJGb3JtVHlwZSIsMSksWC5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSksWC5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSksWC5zZXQoIkJCb3giLGYpLFguc2V0KCJSZXNvdXJjZXMiLG0pLFguc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1mWzBdLC1mWzFdXSk7Y29uc3QgSD1uZXcgby5TdHJpbmdTdHJlYW0oJCk7cmV0dXJuIEguZGljdD1YLEh9fWNsYXNzIE4gZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuTElORSx0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTtjb25zdCBhPXQuZ2V0QXJyYXkoIkwiKTtpZih0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPW4uVXRpbC5ub3JtYWxpemVSZWN0KGEpLHRoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSksdGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3MsIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP3codGhpcy5jb2xvcik6WzAsMCwwXSxpPXQuZ2V0KCJDQSIpLHM9eSh0LmdldEFycmF5KCJJQyIpLG51bGwpLG89cz93KHMpOm51bGwsYz1vP2k6bnVsbCxsPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaD0yKmwsdT1bdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1swXS1oLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMV0taCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzJdK2gsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1szXStoXTtuLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLHUpfHwodGhpcy5yZWN0YW5nbGU9dSksdGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6cixleHRyYToiIi5jb25jYXQobCwiIHciKSxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpvLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOmMscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PihlLnB1c2goIiIuY29uY2F0KGFbMF0sIiAiKS5jb25jYXQoYVsxXSwiIG0iKSwiIi5jb25jYXQoYVsyXSwiICIpLmNvbmNhdChhWzNdLCIgbCIpLCJTIiksW3RbMF0ueC1sLHRbMV0ueCtsLHRbM10ueS1sLHRbMV0ueStsXSl9KX19fWNsYXNzIEQgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWU7aWYodGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuU1FVQVJFLHRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlLCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj93KHRoaXMuY29sb3IpOlswLDAsMF0sbj10LmdldCgiQ0EiKSxhPXkodC5nZXRBcnJheSgiSUMiKSxudWxsKSxpPWE/dyhhKTpudWxsLHM9aT9uOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFpKXJldHVybjt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpyLGV4dHJhOiIiLmNvbmNhdCh0aGlzLmJvcmRlclN0eWxlLndpZHRoLCIgdyIpLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOmksc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IHI9dFsyXS54K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixuPXRbMl0ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzNdLngtdFsyXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgscz10WzFdLnktdFszXS55LXRoaXMuYm9yZGVyU3R5bGUud2lkdGg7cmV0dXJuIGUucHVzaCgiIi5jb25jYXQociwiICIpLmNvbmNhdChuLCIgIikuY29uY2F0KGEsIiAiKS5jb25jYXQocywiIHJlIikpLGk/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBCIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpyfT1lO2lmKHRoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkNJUkNMRSwhdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/dyh0aGlzLmNvbG9yKTpbMCwwLDBdLG49dC5nZXQoIkNBIiksYT15KHQuZ2V0QXJyYXkoIklDIiksbnVsbCksaT1hP3coYSk6bnVsbCxzPWk/bjpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhaSlyZXR1cm47Y29uc3Qgbz00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpyLGV4dHJhOiIiLmNvbmNhdCh0aGlzLmJvcmRlclN0eWxlLndpZHRoLCIgdyIpLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOmksc3Ryb2tlQWxwaGE6bixmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IHI9dFswXS54K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixuPXRbMF0ueS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzNdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHM9dFszXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixjPXIrKGEtcikvMixsPW4rKHMtbikvMixoPShhLXIpLzIqbyx1PShzLW4pLzIqbztyZXR1cm4gZS5wdXNoKCIiLmNvbmNhdChjLCIgIikuY29uY2F0KHMsIiBtIiksIiIuY29uY2F0KGMraCwiICIpLmNvbmNhdChzLCIgIikuY29uY2F0KGEsIiAiKS5jb25jYXQobCt1LCIgIikuY29uY2F0KGEsIiAiKS5jb25jYXQobCwiIGMiKSwiIi5jb25jYXQoYSwiICIpLmNvbmNhdChsLXUsIiAiKS5jb25jYXQoYytoLCIgIikuY29uY2F0KG4sIiAiKS5jb25jYXQoYywiICIpLmNvbmNhdChuLCIgYyIpLCIiLmNvbmNhdChjLWgsIiAiKS5jb25jYXQobiwiICIpLmNvbmNhdChyLCIgIikuY29uY2F0KGwtdSwiICIpLmNvbmNhdChyLCIgIikuY29uY2F0KGwsIiBjIiksIiIuY29uY2F0KHIsIiAiKS5jb25jYXQobCt1LCIgIikuY29uY2F0KGMtaCwiICIpLmNvbmNhdChzLCIgIikuY29uY2F0KGMsIiAiKS5jb25jYXQocywiIGMiKSwiaCIpLGk/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBMIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpyfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlBPTFlMSU5FLHRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlLHRoaXMuZGF0YS52ZXJ0aWNlcz1bXSx0aGlzIGluc3RhbmNlb2YgX3x8KHRoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSksdGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3MpO2NvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKz0yKXRoaXMuZGF0YS52ZXJ0aWNlcy5wdXNoKHt4OmFbZV0seTphW2UrMV19KTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/dyh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIiksaT10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLHM9MippLG89WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEudmVydGljZXMpb1swXT1NYXRoLm1pbihvWzBdLGUueC1zKSxvWzFdPU1hdGgubWluKG9bMV0sZS55LXMpLG9bMl09TWF0aC5tYXgob1syXSxlLngrcyksb1szXT1NYXRoLm1heChvWzNdLGUueStzKTtuLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byksdGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6cixleHRyYToiIi5jb25jYXQoaSwiIHciKSxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCByPXRoaXMuZGF0YS52ZXJ0aWNlcztmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjt0KyspZS5wdXNoKCIiLmNvbmNhdChyW3RdLngsIiAiKS5jb25jYXQoclt0XS55LCIgIikuY29uY2F0KDA9PT10PyJtIjoibCIpKTtyZXR1cm4gZS5wdXNoKCJTIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX19Y2xhc3MgXyBleHRlbmRzIEx7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuUE9MWUdPTn19Y2xhc3MgaiBleHRlbmRzIGt7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuQ0FSRVR9fWNsYXNzIFUgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuSU5LLHRoaXMuZGF0YS5pbmtMaXN0cz1bXTtjb25zdCBhPXQuZ2V0QXJyYXkoIklua0xpc3QiKTtpZihBcnJheS5pc0FycmF5KGEpKXtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upe3RoaXMuZGF0YS5pbmtMaXN0cy5wdXNoKFtdKTtmb3IobGV0IHQ9MCxuPWFbZV0ubGVuZ3RoO3Q8bjt0Kz0yKXRoaXMuZGF0YS5pbmtMaXN0c1tlXS5wdXNoKHt4OnIuZmV0Y2hJZlJlZihhW2VdW3RdKSx5OnIuZmV0Y2hJZlJlZihhW2VdW3QrMV0pfSl9aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP3codGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpLGk9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxzPTIqaSxvPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihjb25zdCB0IG9mIGUpb1swXT1NYXRoLm1pbihvWzBdLHQueC1zKSxvWzFdPU1hdGgubWluKG9bMV0sdC55LXMpLG9bMl09TWF0aC5tYXgob1syXSx0Lngrcyksb1szXT1NYXRoLm1heChvWzNdLHQueStzKTtuLlV0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLG8pfHwodGhpcy5yZWN0YW5nbGU9byksdGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6cixleHRyYToiIi5jb25jYXQoaSwiIHciKSxzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IoY29uc3QgdCBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpe2ZvcihsZXQgcj0wLG49dC5sZW5ndGg7cjxuO3IrKyllLnB1c2goIiIuY29uY2F0KHRbcl0ueCwiICIpLmNvbmNhdCh0W3JdLnksIiAiKS5jb25jYXQoMD09PXI/Im0iOiJsIikpO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHIpe2xldHthcFJlZjphLGFwOml9PXI7Y29uc3R7Y29sb3I6byxvcGFjaXR5OmMscGF0aHM6bCxyZWN0Omgscm90YXRpb246dSx0aGlja25lc3M6ZH09ZSxmPW5ldyBzLkRpY3QodCk7Zi5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkFubm90IikpLGYuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJJbmsiKSksZi5zZXQoIkNyZWF0aW9uRGF0ZSIsIkQ6Ii5jb25jYXQoKDAsbi5nZXRNb2RpZmljYXRpb25EYXRlKSgpKSksZi5zZXQoIlJlY3QiLGgpLGYuc2V0KCJJbmtMaXN0IixsLm1hcCgoZT0+ZS5wb2ludHMpKSksZi5zZXQoIkYiLDQpLGYuc2V0KCJSb3RhdGUiLHUpO2NvbnN0IGc9bmV3IHMuRGljdCh0KTtmLnNldCgiQlMiLGcpLGcuc2V0KCJXIixkKSxmLnNldCgiQyIsQXJyYXkuZnJvbShvLChlPT5lLzI1NSkpKSxmLnNldCgiQ0EiLGMpO2NvbnN0IHA9bmV3IHMuRGljdCh0KTtyZXR1cm4gZi5zZXQoIkFQIixwKSxhP3Auc2V0KCJOIixhKTpwLnNldCgiTiIsaSksZn1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQscil7Y29uc3R7Y29sb3I6bixyZWN0OmMscGF0aHM6bCx0aGlja25lc3M6aCxvcGFjaXR5OnV9PWUsZD1bIiIuY29uY2F0KGgsIiB3IDEgSiAxIGoiKSwiIi5jb25jYXQoKDAsaS5nZXRQZGZDb2xvcikobiwhMSkpXTsxIT09dSYmZC5wdXNoKCIvUjAgZ3MiKTtjb25zdCBmPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBsKXtmLmxlbmd0aD0wLGYucHVzaCgiIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoZVswXSksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoZVsxXSksIiBtIikpO2ZvcihsZXQgdD0yLHI9ZS5sZW5ndGg7dDxyO3QrPTYpe2NvbnN0IHI9ZS5zbGljZSh0LHQrNikubWFwKGEubnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtmLnB1c2goIiIuY29uY2F0KHIsIiBjIikpfWYucHVzaCgiUyIpLGQucHVzaChmLmpvaW4oIlxuIikpfWNvbnN0IGc9ZC5qb2luKCJcbiIpLHA9bmV3IHMuRGljdCh0KTtpZihwLnNldCgiRm9ybVR5cGUiLDEpLHAuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGb3JtIikpLHAuc2V0KCJUeXBlIixzLk5hbWUuZ2V0KCJYT2JqZWN0IikpLHAuc2V0KCJCQm94IixjKSxwLnNldCgiTGVuZ3RoIixnLmxlbmd0aCksMSE9PXUpe2NvbnN0IGU9bmV3IHMuRGljdCh0KSxyPW5ldyBzLkRpY3QodCksbj1uZXcgcy5EaWN0KHQpO24uc2V0KCJDQSIsdSksbi5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKSxyLnNldCgiUjAiLG4pLGUuc2V0KCJFeHRHU3RhdGUiLHIpLHAuc2V0KCJSZXNvdXJjZXMiLGUpfWNvbnN0IG09bmV3IG8uU3RyaW5nU3RyZWFtKGcpO3JldHVybiBtLmRpY3Q9cCxtfX1jbGFzcyAkIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpyfT1lO2lmKHRoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLkhJR0hMSUdIVCx0aGlzLmRhdGEucXVhZFBvaW50cz12KHQsbnVsbCkpe3ZhciBhO2NvbnN0IGU9bnVsbD09PShhPXRoaXMuYXBwZWFyYW5jZSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuZGljdC5nZXQoIlJlc291cmNlcyIpO2lmKCF0aGlzLmFwcGVhcmFuY2V8fG51bGw9PWV8fCFlLmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmKDAsbi53YXJuKSgiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9dGhpcy5jb2xvcj93KHRoaXMuY29sb3IpOlsxLDEsMF0sYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpyLGZpbGxDb2xvcjplLGJsZW5kTW9kZToiTXVsdGlwbHkiLGZpbGxBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT4oZS5wdXNoKCIiLmNvbmNhdCh0WzBdLngsIiAiKS5jb25jYXQodFswXS55LCIgbSIpLCIiLmNvbmNhdCh0WzFdLngsIiAiKS5jb25jYXQodFsxXS55LCIgbCIpLCIiLmNvbmNhdCh0WzNdLngsIiAiKS5jb25jYXQodFszXS55LCIgbCIpLCIiLmNvbmNhdCh0WzJdLngsIiAiKS5jb25jYXQodFsyXS55LCIgbCIpLCJmIiksW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV0pfSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIFggZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWU7aWYodGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FLHRoaXMuZGF0YS5xdWFkUG9pbnRzPXYodCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP3codGhpcy5jb2xvcik6WzAsMCwwXSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOnIsZXh0cmE6IltdIDAgZCAwLjU3MSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PihlLnB1c2goIiIuY29uY2F0KHRbMl0ueCwiICIpLmNvbmNhdCh0WzJdLnkrMS4zLCIgbSIpLCIiLmNvbmNhdCh0WzNdLngsIiAiKS5jb25jYXQodFszXS55KzEuMywiIGwiKSwiUyIpLFt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldKX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBIIGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpyfT1lO2lmKHRoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1uLkFubm90YXRpb25UeXBlLlNRVUlHR0xZLHRoaXMuZGF0YS5xdWFkUG9pbnRzPXYodCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP3codGhpcy5jb2xvcik6WzAsMCwwXSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOnIsZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IHI9KHRbMF0ueS10WzJdLnkpLzY7bGV0IG49cixhPXRbMl0ueDtjb25zdCBpPXRbMl0ueSxzPXRbM10ueDtlLnB1c2goIiIuY29uY2F0KGEsIiAiKS5jb25jYXQoaStuLCIgbSIpKTtkb3thKz0yLG49MD09PW4/cjowLGUucHVzaCgiIi5jb25jYXQoYSwiICIpLmNvbmNhdChpK24sIiBsIikpfXdoaWxlKGE8cyk7cmV0dXJuIGUucHVzaCgiUyIpLFt0WzJdLngscyxpLTIqcixpKzIqcl19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9fWNsYXNzIHEgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWU7aWYodGhpcy5kYXRhLmFubm90YXRpb25UeXBlPW4uQW5ub3RhdGlvblR5cGUuU1RSSUtFT1VULHRoaXMuZGF0YS5xdWFkUG9pbnRzPXYodCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP3codGhpcy5jb2xvcik6WzAsMCwwXSxuPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOnIsZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6bixwb2ludHNDYWxsYmFjazooZSx0KT0+KGUucHVzaCgodFswXS54K3RbMl0ueCkvMisiICIrKHRbMF0ueSt0WzJdLnkpLzIrIiBtIiwodFsxXS54K3RbM10ueCkvMisiICIrKHRbMV0ueSt0WzNdLnkpLzIrIiBsIiwiUyIpLFt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldKX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyB6IGV4dGVuZHMga3tjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5TVEFNUCx0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZX1zdGF0aWMgYXN5bmMgY3JlYXRlSW1hZ2UoZSx0KXtjb25zdHt3aWR0aDpyLGhlaWdodDphfT1lLGk9bmV3IE9mZnNjcmVlbkNhbnZhcyhyLGEpLGM9aS5nZXRDb250ZXh0KCIyZCIse2FscGhhOiEwfSk7Yy5kcmF3SW1hZ2UoZSwwLDApO2NvbnN0IGw9Yy5nZXRJbWFnZURhdGEoMCwwLHIsYSkuZGF0YSxoPW5ldyBVaW50MzJBcnJheShsLmJ1ZmZlciksdT1oLnNvbWUobi5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj9lPT5lPj4+MjQhPTI1NTplPT4yNTUhPSgyNTUmZSkpO3UmJihjLmZpbGxTdHlsZT0id2hpdGUiLGMuZmlsbFJlY3QoMCwwLHIsYSksYy5kcmF3SW1hZ2UoZSwwLDApKTtjb25zdCBkPWkuY29udmVydFRvQmxvYih7dHlwZToiaW1hZ2UvanBlZyIscXVhbGl0eToxfSkudGhlbigoZT0+ZS5hcnJheUJ1ZmZlcigpKSksZj1zLk5hbWUuZ2V0KCJYT2JqZWN0IiksZz1zLk5hbWUuZ2V0KCJJbWFnZSIpLHA9bmV3IHMuRGljdCh0KTtwLnNldCgiVHlwZSIsZikscC5zZXQoIlN1YnR5cGUiLGcpLHAuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KSxwLnNldCgiQ29sb3JTcGFjZSIscy5OYW1lLmdldCgiRGV2aWNlUkdCIikpLHAuc2V0KCJGaWx0ZXIiLHMuTmFtZS5nZXQoIkRDVERlY29kZSIpKSxwLnNldCgiQkJveCIsWzAsMCxyLGFdKSxwLnNldCgiV2lkdGgiLHIpLHAuc2V0KCJIZWlnaHQiLGEpO2xldCBtPW51bGw7aWYodSl7Y29uc3QgZT1uZXcgVWludDhBcnJheShoLmxlbmd0aCk7aWYobi5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IHQ9MCxyPWgubGVuZ3RoO3Q8cjt0KyspZVt0XT1oW3RdPj4+MjQ7ZWxzZSBmb3IobGV0IHQ9MCxyPWgubGVuZ3RoO3Q8cjt0KyspZVt0XT0yNTUmaFt0XTtjb25zdCBpPW5ldyBzLkRpY3QodCk7aS5zZXQoIlR5cGUiLGYpLGkuc2V0KCJTdWJ0eXBlIixnKSxpLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCksaS5zZXQoIkNvbG9yU3BhY2UiLHMuTmFtZS5nZXQoIkRldmljZUdyYXkiKSksaS5zZXQoIldpZHRoIixyKSxpLnNldCgiSGVpZ2h0IixhKSxtPW5ldyBvLlN0cmVhbShlLDAsMCxpKX1yZXR1cm57aW1hZ2VTdHJlYW06bmV3IG8uU3RyZWFtKGF3YWl0IGQsMCwwLHApLHNtYXNrU3RyZWFtOm0sd2lkdGg6cixoZWlnaHQ6YX19c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHIpe2xldHthcFJlZjppLGFwOm99PXI7Y29uc3R7cmVjdDpjLHJvdGF0aW9uOmwsdXNlcjpofT1lLHU9bmV3IHMuRGljdCh0KTtpZih1LnNldCgiVHlwZSIscy5OYW1lLmdldCgiQW5ub3QiKSksdS5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIlN0YW1wIikpLHUuc2V0KCJDcmVhdGlvbkRhdGUiLCJEOiIuY29uY2F0KCgwLG4uZ2V0TW9kaWZpY2F0aW9uRGF0ZSkoKSkpLHUuc2V0KCJSZWN0IixjKSx1LnNldCgiRiIsNCksdS5zZXQoIkJvcmRlciIsWzAsMCwwXSksdS5zZXQoIlJvdGF0ZSIsbCksaCYmdS5zZXQoIlQiLCgwLGEuaXNBc2NpaSkoaCk/aDooMCxhLnN0cmluZ1RvVVRGMTZTdHJpbmcpKGgsITApKSxpfHxvKXtjb25zdCBlPW5ldyBzLkRpY3QodCk7dS5zZXQoIkFQIixlKSxpP2Uuc2V0KCJOIixpKTplLnNldCgiTiIsbyl9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LHIpe2NvbnN0e3JvdGF0aW9uOm59PWUse2ltYWdlUmVmOmksd2lkdGg6YyxoZWlnaHQ6bH09ci5pbWFnZSxoPW5ldyBzLkRpY3QodCksdT1uZXcgcy5EaWN0KHQpO2guc2V0KCJYT2JqZWN0Iix1KSx1LnNldCgiSW0wIixpKTtjb25zdCBkPSJxICIuY29uY2F0KGMsIiAwIDAgIikuY29uY2F0KGwsIiAwIDAgY20gL0ltMCBEbyBRIiksZj1uZXcgcy5EaWN0KHQpO2lmKGYuc2V0KCJGb3JtVHlwZSIsMSksZi5zZXQoIlN1YnR5cGUiLHMuTmFtZS5nZXQoIkZvcm0iKSksZi5zZXQoIlR5cGUiLHMuTmFtZS5nZXQoIlhPYmplY3QiKSksZi5zZXQoIkJCb3giLFswLDAsYyxsXSksZi5zZXQoIlJlc291cmNlcyIsaCksbil7Y29uc3QgZT0oMCxhLmdldFJvdGF0aW9uTWF0cml4KShuLGMsbCk7Zi5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgZz1uZXcgby5TdHJpbmdTdHJlYW0oZCk7cmV0dXJuIGcuZGljdD1mLGd9fWNsYXNzIEcgZXh0ZW5kcyBre2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOnJ9PWUsYT1uZXcgZi5GaWxlU3BlYyh0LmdldCgiRlMiKSxyKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9bi5Bbm5vdGF0aW9uVHlwZS5GSUxFQVRUQUNITUVOVCx0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZSx0aGlzLmRhdGEuZmlsZT1hLnNlcmlhbGl6YWJsZTtjb25zdCBpPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9aSBpbnN0YW5jZW9mIHMuTmFtZT8oMCxuLnN0cmluZ1RvUERGU3RyaW5nKShpLm5hbWUpOiJQdXNoUGluIn19fSwoZSx0LHIpPT57dmFyIG49cig0KSxhPXIoNiksaT1yKDg3KSxzPXIoMTU4KSxvPXIoNyksYz1uLlJlZ0V4cCxsPWMucHJvdG90eXBlO2EmJm8oKGZ1bmN0aW9uKCl7dmFyIGU9ITA7dHJ5e2MoIi4iLCJkIil9Y2F0Y2godCl7ZT0hMX12YXIgdD17fSxyPSIiLG49ZT8iZGdpbXN5IjoiZ2ltc3kiLGE9ZnVuY3Rpb24oZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcis9biwhMH19KX0saT17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07Zm9yKHZhciBzIGluIGUmJihpLmhhc0luZGljZXM9ImQiKSxpKWEocyxpW3NdKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLCJmbGFncyIpLmdldC5jYWxsKHQpIT09bnx8ciE9PW59KSkmJmkobCwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OnN9KX0sKGUsdCxyKT0+e3ZhciBuPXIoNDcpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPW4odGhpcyksdD0iIjtyZXR1cm4gZS5oYXNJbmRpY2VzJiYodCs9ImQiKSxlLmdsb2JhbCYmKHQrPSJnIiksZS5pZ25vcmVDYXNlJiYodCs9ImkiKSxlLm11bHRpbGluZSYmKHQrPSJtIiksZS5kb3RBbGwmJih0Kz0icyIpLGUudW5pY29kZSYmKHQrPSJ1IiksZS51bmljb2RlU2V0cyYmKHQrPSJ2IiksZS5zdGlja3kmJih0Kz0ieSIpLHR9fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoNDApLGk9cig2NCkscz1yKDE0MCksbz1yKDE2MCksYz1yKDE0Mik7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6MSE9PVtdLnVuc2hpZnQoMCl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkudW5zaGlmdCgpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3Vuc2hpZnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YSh0aGlzKSxyPWkodCksbj1hcmd1bWVudHMubGVuZ3RoO2lmKG4pe2MocituKTtmb3IodmFyIGw9cjtsLS07KXt2YXIgaD1sK247bCBpbiB0P3RbaF09dFtsXTpvKHQsaCl9Zm9yKHZhciB1PTA7dTxuO3UrKyl0W3VdPWFyZ3VtZW50c1t1XX1yZXR1cm4gcyh0LHIrbil9fSl9LChlLHQscik9Pnt2YXIgbj1yKDMyKSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighZGVsZXRlIGVbdF0pdGhyb3cgYSgiQ2Fubm90IGRlbGV0ZSBwcm9wZXJ0eSAiK24odCkrIiBvZiAiK24oZSkpfX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZha2VVbmljb2RlRm9udD12b2lkIDAsdC5jcmVhdGVEZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbihlKXtsZXR7Zm9udFNpemU6dCxmb250TmFtZTpyLGZvbnRDb2xvcjpufT1lO3JldHVybiIvIi5jb25jYXQoKDAsYS5lc2NhcGVQREZOYW1lKShyKSwiICIpLmNvbmNhdCh0LCIgVGYgIikuY29uY2F0KGYobiwhMCkpfSx0LmdldFBkZkNvbG9yPWYsdC5wYXJzZUFwcGVhcmFuY2VTdHJlYW09ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuZXcgZChlLHQscikucGFyc2UoKX0sdC5wYXJzZURlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdShlKS5wYXJzZSgpfSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigxMzkpO3ZhciBuPXIoMTUwKSxhPXIoMTQ5KSxpPXIoMTQ0KSxzPXIoMTYyKSxvPXIoMTYzKSxjPXIoMjA5KSxsPXIoMjA3KSxoPXIoMTU0KTtjbGFzcyB1IGV4dGVuZHMgby5FdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIobmV3IGguU3RyaW5nU3RyZWFtKGUpKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX0sdD17Zm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpfTt0cnl7Zm9yKDtlLmFyZ3MubGVuZ3RoPTAsdGhpcy5yZWFkKGUpOyl7aWYoMCE9PXRoaXMuc2F2ZWRTdGF0ZXNEZXB0aCljb250aW51ZTtjb25zdHtmbjpyLGFyZ3M6YX09ZTtzd2l0Y2goMHxyKXtjYXNlIGkuT1BTLnNldEZvbnQ6Y29uc3RbZSxyXT1hO2UgaW5zdGFuY2VvZiBuLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSksIm51bWJlciI9PXR5cGVvZiByJiZyPjAmJih0LmZvbnRTaXplPXIpO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbFJHQkNvbG9yOnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNldEZpbGxHcmF5OnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsQ01ZS0NvbG9yOnMuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXsoMCxpLndhcm4pKCdwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJy5jb25jYXQoZSwnIi4nKSl9cmV0dXJuIHR9fWNsYXNzIGQgZXh0ZW5kcyBvLkV2YWx1YXRvclByZXByb2Nlc3Nvcntjb25zdHJ1Y3RvcihlLHQscil7dmFyIG47c3VwZXIoZSksdGhpcy5zdHJlYW09ZSx0aGlzLmV2YWx1YXRvck9wdGlvbnM9dCx0aGlzLnhyZWY9cix0aGlzLnJlc291cmNlcz1udWxsPT09KG49ZS5kaWN0KXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXQoIlJlc291cmNlcyIpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfTtsZXQgdD17c2NhbGVGYWN0b3I6MSxmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyksZmlsbENvbG9yU3BhY2U6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX0scj0hMTtjb25zdCBhPVtdO3RyeXtmb3IoO2UuYXJncy5sZW5ndGg9MCwhciYmdGhpcy5yZWFkKGUpOyl7Y29uc3R7Zm46byxhcmdzOmN9PWU7c3dpdGNoKDB8byl7Y2FzZSBpLk9QUy5zYXZlOmEucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2UgaS5PUFMucmVzdG9yZTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBpLk9QUy5zZXRUZXh0TWF0cml4OnQuc2NhbGVGYWN0b3IqPU1hdGguaHlwb3QoY1swXSxjWzFdKTticmVhaztjYXNlIGkuT1BTLnNldEZvbnQ6Y29uc3RbZSxvXT1jO2UgaW5zdGFuY2VvZiBuLk5hbWUmJih0LmZvbnROYW1lPWUubmFtZSksIm51bWJlciI9PXR5cGVvZiBvJiZvPjAmJih0LmZvbnRTaXplPW8qdC5zY2FsZUZhY3Rvcik7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlPXMuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6Y1swXSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTp0aGlzLl9sb2NhbENvbG9yU3BhY2VDYWNoZX0pO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbENvbG9yOnQuZmlsbENvbG9yU3BhY2UuZ2V0UmdiSXRlbShjLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBpLk9QUy5zZXRGaWxsUkdCQ29sb3I6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYkl0ZW0oYywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgaS5PUFMuc2V0RmlsbEdyYXk6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2JJdGVtKGMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNldEZpbGxDTVlLQ29sb3I6cy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGkuT1BTLnNob3dUZXh0OmNhc2UgaS5PUFMuc2hvd1NwYWNlZFRleHQ6Y2FzZSBpLk9QUy5uZXh0TGluZVNob3dUZXh0OmNhc2UgaS5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQ6cj0hMH19fWNhdGNoKGUpeygwLGkud2FybikoJ3BhcnNlQXBwZWFyYW5jZVN0cmVhbSAtIGlnbm9yaW5nIGVycm9yczogIicuY29uY2F0KGUsJyIuJykpfXJldHVybiB0aGlzLnN0cmVhbS5yZXNldCgpLGRlbGV0ZSB0LnNjYWxlRmFjdG9yLGRlbGV0ZSB0LmZpbGxDb2xvclNwYWNlLHR9Z2V0IF9sb2NhbENvbG9yU3BhY2VDYWNoZSgpe3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBjLkxvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe2NvbnN0IGU9bmV3IGwuUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5ldmFsdWF0b3JPcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pO3JldHVybigwLGkuc2hhZG93KSh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixlKX19ZnVuY3Rpb24gZihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7Y29uc3Qgcj1lWzBdLzI1NTtyZXR1cm4iIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykociksIiAiKS5jb25jYXQodD8iZyI6IkciKX1yZXR1cm4gQXJyYXkuZnJvbShlLChlPT4oMCxhLm51bWJlclRvU3RyaW5nKShlLzI1NSkpKS5qb2luKCIgIikrIiAiKyh0PyJyZyI6IlJHIil9Y2xhc3MgZ3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lLHRoaXMud2lkdGhzPW51bGwsdGhpcy5maXJzdENoYXI9MS8wLHRoaXMubGFzdENoYXI9LTEvMCx0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9ci5nZXRDb250ZXh0KCIyZCIpLGcuX2ZvbnROYW1lSWR8fChnLl9mb250TmFtZUlkPTEpLHRoaXMuZm9udE5hbWU9bi5OYW1lLmdldCgiSW52YWxpZFBERmpzRm9udF8iLmNvbmNhdCh0LCJfIikuY29uY2F0KGcuX2ZvbnROYW1lSWQrKykpfWdldCB0b1VuaWNvZGVSZWYoKXtpZighZy5fdG9Vbmljb2RlUmVmKXtjb25zdCBlPSIvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW5cbjEyIGRpY3QgYmVnaW5cbmJlZ2luY21hcFxuL0NJRFN5c3RlbUluZm9cbjw8IC9SZWdpc3RyeSAoQWRvYmUpXG4vT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWZcbi9DTWFwTmFtZSAvQWRvYmUtSWRlbnRpdHktVUNTIGRlZlxuL0NNYXBUeXBlIDIgZGVmXG4xIGJlZ2luY29kZXNwYWNlcmFuZ2VcbjwwMDAwPiA8RkZGRj5cbmVuZGNvZGVzcGFjZXJhbmdlXG4xIGJlZ2luYmZyYW5nZVxuPDAwMDA+IDxGRkZGPiA8MDAwMD5cbmVuZGJmcmFuZ2VcbmVuZGNtYXAgQ01hcE5hbWUgY3VycmVudGRpY3QgL0NNYXAgZGVmaW5lcmVzb3VyY2UgcG9wIGVuZCBlbmQiLHQ9Zy50b1VuaWNvZGVTdHJlYW09bmV3IGguU3RyaW5nU3RyZWFtKGUpLHI9bmV3IG4uRGljdCh0aGlzLnhyZWYpO3QuZGljdD1yLHIuc2V0KCJMZW5ndGgiLGUubGVuZ3RoKSxnLl90b1VuaWNvZGVSZWY9dGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYodCl9cmV0dXJuIGcuX3RvVW5pY29kZVJlZn1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighZy5fZm9udERlc2NyaXB0b3JSZWYpe2NvbnN0IGU9bmV3IG4uRGljdCh0aGlzLnhyZWYpO2Uuc2V0KCJUeXBlIixuLk5hbWUuZ2V0KCJGb250RGVzY3JpcHRvciIpKSxlLnNldCgiRm9udE5hbWUiLHRoaXMuZm9udE5hbWUpLGUuc2V0KCJGb250RmFtaWx5IiwiTXlyaWFkUHJvIFJlZ3VsYXIiKSxlLnNldCgiRm9udEJCb3giLFswLDAsMCwwXSksZS5zZXQoIkZvbnRTdHJldGNoIixuLk5hbWUuZ2V0KCJOb3JtYWwiKSksZS5zZXQoIkZvbnRXZWlnaHQiLDQwMCksZS5zZXQoIkl0YWxpY0FuZ2xlIiwwKSxnLl9mb250RGVzY3JpcHRvclJlZj10aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1yZXR1cm4gZy5fZm9udERlc2NyaXB0b3JSZWZ9Z2V0IGRlc2NlbmRhbnRGb250UmVmKCl7Y29uc3QgZT1uZXcgbi5EaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKSxlLnNldCgiVHlwZSIsbi5OYW1lLmdldCgiRm9udCIpKSxlLnNldCgiU3VidHlwZSIsbi5OYW1lLmdldCgiQ0lERm9udFR5cGUwIikpLGUuc2V0KCJDSURUb0dJRE1hcCIsbi5OYW1lLmdldCgiSWRlbnRpdHkiKSksZS5zZXQoIkZpcnN0Q2hhciIsdGhpcy5maXJzdENoYXIpLGUuc2V0KCJMYXN0Q2hhciIsdGhpcy5sYXN0Q2hhciksZS5zZXQoIkZvbnREZXNjcmlwdG9yIix0aGlzLmZvbnREZXNjcmlwdG9yUmVmKSxlLnNldCgiRFciLDFlMyk7Y29uc3QgdD1bXSxyPVsuLi50aGlzLndpZHRocy5lbnRyaWVzKCldLnNvcnQoKTtsZXQgYT1udWxsLGk9bnVsbDtmb3IoY29uc3RbZSxuXW9mIHIpYT9lPT09YStpLmxlbmd0aD9pLnB1c2gobik6KHQucHVzaChhLGkpLGE9ZSxpPVtuXSk6KGE9ZSxpPVtuXSk7YSYmdC5wdXNoKGEsaSksZS5zZXQoIlciLHQpO2NvbnN0IHM9bmV3IG4uRGljdCh0aGlzLnhyZWYpO3JldHVybiBzLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpLHMuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIikscy5zZXQoIlN1cHBsZW1lbnQiLDApLGUuc2V0KCJDSURTeXN0ZW1JbmZvIixzKSx0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyBuLkRpY3QodGhpcy54cmVmKTtyZXR1cm4gZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKSxlLnNldCgiVHlwZSIsbi5OYW1lLmdldCgiRm9udCIpKSxlLnNldCgiU3VidHlwZSIsbi5OYW1lLmdldCgiVHlwZTAiKSksZS5zZXQoIkVuY29kaW5nIixuLk5hbWUuZ2V0KCJJZGVudGl0eS1IIikpLGUuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSksZS5zZXQoIlRvVW5pY29kZSIsdGhpcy50b1VuaWNvZGVSZWYpLHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPW5ldyBuLkRpY3QodGhpcy54cmVmKSx0PW5ldyBuLkRpY3QodGhpcy54cmVmKTtyZXR1cm4gdC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpLGUuc2V0KCJGb250Iix0KSxlfV9jcmVhdGVDb250ZXh0KCl7cmV0dXJuIHRoaXMud2lkdGhzPW5ldyBNYXAsdGhpcy5jdHhNZWFzdXJlLmZvbnQ9IjEwMDBweCAiLmNvbmNhdCh0aGlzLmZvbnRGYW1pbHkpLHRoaXMuY3R4TWVhc3VyZX1jcmVhdGVGb250UmVzb3VyY2VzKGUpe2NvbnN0IHQ9dGhpcy5fY3JlYXRlQ29udGV4dCgpO2Zvcihjb25zdCByIG9mIGUuc3BsaXQoL1xyXG4/fFxuLykpZm9yKGNvbnN0IGUgb2Ygci5zcGxpdCgiIikpe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KDApO2lmKHRoaXMud2lkdGhzLmhhcyhyKSljb250aW51ZTtjb25zdCBuPXQubWVhc3VyZVRleHQoZSksYT1NYXRoLmNlaWwobi53aWR0aCk7dGhpcy53aWR0aHMuc2V0KHIsYSksdGhpcy5maXJzdENoYXI9TWF0aC5taW4ocix0aGlzLmZpcnN0Q2hhciksdGhpcy5sYXN0Q2hhcj1NYXRoLm1heChyLHRoaXMubGFzdENoYXIpfXJldHVybiB0aGlzLnJlc291cmNlc31jcmVhdGVBcHBlYXJhbmNlKGUsdCxyLHMsbyxjKXtjb25zdCBsPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSx1PVtdO2xldCBkPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7dS5wdXNoKHQpO2NvbnN0IGU9bC5tZWFzdXJlVGV4dCh0KS53aWR0aDtkPU1hdGgubWF4KGQsZSk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpe2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KDApO2xldCByPXRoaXMud2lkdGhzLmdldCh0KTtpZih2b2lkIDA9PT1yKXtjb25zdCBuPWwubWVhc3VyZVRleHQoZSk7cj1NYXRoLmNlaWwobi53aWR0aCksdGhpcy53aWR0aHMuc2V0KHQsciksdGhpcy5maXJzdENoYXI9TWF0aC5taW4odCx0aGlzLmZpcnN0Q2hhciksdGhpcy5sYXN0Q2hhcj1NYXRoLm1heCh0LHRoaXMubGFzdENoYXIpfX19ZCo9cy8xZTM7Y29uc3RbZyxwLG0sYl09dDtsZXQgeT1tLWcsdz1iLXA7ciUxODAhPTAmJihbeSx3XT1bdyx5XSk7bGV0IHY9MTtkPnkmJih2PXkvZCk7bGV0IHg9MTtjb25zdCBTPWkuTElORV9GQUNUT1IqcyxBPWkuTElORV9ERVNDRU5UX0ZBQ1RPUipzLGs9Uyp1Lmxlbmd0aDtrPncmJih4PXcvayk7Y29uc3QgQz1zKk1hdGgubWluKHYseCksTz1bInEiLCIwIDAgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykoeSksIiAiKS5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykodyksIiByZSBXIG4iKSwiQlQiLCIxIDAgMCAxIDAgIi5jb25jYXQoKDAsYS5udW1iZXJUb1N0cmluZykodytBKSwiIFRtIDAgVGMgIikuY29uY2F0KGYobywhMCkpLCIvIi5jb25jYXQodGhpcy5mb250TmFtZS5uYW1lLCIgIikuY29uY2F0KCgwLGEubnVtYmVyVG9TdHJpbmcpKEMpLCIgVGYiKV0se3Jlc291cmNlczpGfT10aGlzO2lmKDEhPT0oYz0ibnVtYmVyIj09dHlwZW9mIGMmJmM+PTAmJmM8PTE/YzoxKSl7Ty5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBuLkRpY3QodGhpcy54cmVmKSx0PW5ldyBuLkRpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLGMpLHQuc2V0KCJDQSIsYyksdC5zZXQoIlR5cGUiLG4uTmFtZS5nZXQoIkV4dEdTdGF0ZSIpKSxlLnNldCgiUjAiLHQpLEYuc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IEk9KDAsYS5udW1iZXJUb1N0cmluZykoUyk7Zm9yKGNvbnN0IGUgb2YgdSlPLnB1c2goIjAgLSIuY29uY2F0KEksIiBUZCA8IikuY29uY2F0KCgwLGEuc3RyaW5nVG9VVEYxNkhleFN0cmluZykoZSksIj4gVGoiKSk7Ty5wdXNoKCJFVCIsIlEiKTtjb25zdCBUPU8uam9pbigiXG4iKSxNPW5ldyBuLkRpY3QodGhpcy54cmVmKTtpZihNLnNldCgiU3VidHlwZSIsbi5OYW1lLmdldCgiRm9ybSIpKSxNLnNldCgiVHlwZSIsbi5OYW1lLmdldCgiWE9iamVjdCIpKSxNLnNldCgiQkJveCIsWzAsMCx5LHddKSxNLnNldCgiTGVuZ3RoIixULmxlbmd0aCksTS5zZXQoIlJlc291cmNlcyIsRikscil7Y29uc3QgZT0oMCxhLmdldFJvdGF0aW9uTWF0cml4KShyLHksdyk7TS5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRT1uZXcgaC5TdHJpbmdTdHJlYW0oVCk7cmV0dXJuIEUuZGljdD1NLEV9fXQuRmFrZVVuaWNvZGVGb250PWd9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Db2xvclNwYWNlPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigyKTt2YXIgbj1yKDE0NCksYT1yKDE1MCksaT1yKDE1MSkscz1yKDE0OSk7Y2xhc3Mgb3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY29uc3RydWN0b3I9PT1vJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQ29sb3JTcGFjZS4iKSx0aGlzLm5hbWU9ZSx0aGlzLm51bUNvbXBzPXR9Z2V0UmdiKGUsdCl7Y29uc3Qgcj1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7cmV0dXJuIHRoaXMuZ2V0UmdiSXRlbShlLHQsciwwKSxyfWdldFJnYkl0ZW0oZSx0LHIsYSl7KDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkl0ZW0iKX1nZXRSZ2JCdWZmZXIoZSx0LHIsYSxpLHMsbyl7KDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkJ1ZmZlciIpfWdldE91dHB1dExlbmd0aChlLHQpeygwLG4udW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBvLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LHIsbixhLGkscyxvLGMpe2NvbnN0IGw9dCpyO2xldCBoPW51bGw7Y29uc3QgdT0xPDxzLGQ9ciE9PWF8fHQhPT1uO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChzKSloPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmbD51JiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PXM8PTg/bmV3IFVpbnQ4QXJyYXkodSk6bmV3IFVpbnQxNkFycmF5KHUpO2ZvcihsZXQgZT0wO2U8dTtlKyspdFtlXT1lO2NvbnN0IHI9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqdSk7aWYodGhpcy5nZXRSZ2JCdWZmZXIodCwwLHUsciwwLHMsMCksZCl7aD1uZXcgVWludDhBcnJheSgzKmwpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7Y29uc3Qgbj0zKm9bdF07aFtlKytdPXJbbl0saFtlKytdPXJbbisxXSxoW2UrK109cltuKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCBuPTA7bjxsOysrbil7Y29uc3QgYT0zKm9bbl07ZVt0KytdPXJbYV0sZVt0KytdPXJbYSsxXSxlW3QrK109clthKzJdLHQrPWN9fX1lbHNlIGQ/KGg9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbCksdGhpcy5nZXRSZ2JCdWZmZXIobywwLGwsaCwwLHMsMCkpOnRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxuKmksZSwwLHMsYyk7aWYoaClpZihkKSFmdW5jdGlvbihlLHQscixuLGEsaSxzKXtzPTEhPT1zPzA6cztjb25zdCBvPXIvYSxjPW4vaTtsZXQgbCxoPTA7Y29uc3QgdT1uZXcgVWludDE2QXJyYXkoYSksZD0zKnI7Zm9yKGxldCBlPTA7ZTxhO2UrKyl1W2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgcj0wO3I8aTtyKyspe2NvbnN0IG49TWF0aC5mbG9vcihyKmMpKmQ7Zm9yKGxldCByPTA7cjxhO3IrKylsPW4rdVtyXSx0W2grK109ZVtsKytdLHRbaCsrXT1lW2wrK10sdFtoKytdPWVbbCsrXSxoKz1zfX0oaCxlLHQscixuLGEsYyk7ZWxzZXtsZXQgdD0wLHI9MDtmb3IobGV0IGE9MCxzPW4qaTthPHM7YSsrKWVbdCsrXT1oW3IrK10sZVt0KytdPWhbcisrXSxlW3QrK109aFtyKytdLHQrPWN9fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIF9jYWNoZShlLHQscixuKXtpZighcil0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZighbil0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuX2NhY2hlIC0gZXhwZWN0ZWQgInBhcnNlZENvbG9yU3BhY2UiIGFyZ3VtZW50LicpO2xldCBpLHM7ZSBpbnN0YW5jZW9mIGEuUmVmJiYocz1lLGU9dC5mZXRjaChlKSksZSBpbnN0YW5jZW9mIGEuTmFtZSYmKGk9ZS5uYW1lKSwoaXx8cykmJnIuc2V0KGkscyxuKX1zdGF0aWMgZ2V0Q2FjaGVkKGUsdCxyKXtpZighcil0aHJvdyBuZXcgRXJyb3IoJ0NvbG9yU3BhY2UuZ2V0Q2FjaGVkIC0gZXhwZWN0ZWQgImxvY2FsQ29sb3JTcGFjZUNhY2hlIiBhcmd1bWVudC4nKTtpZihlIGluc3RhbmNlb2YgYS5SZWYpe2NvbnN0IG49ci5nZXRCeVJlZihlKTtpZihuKXJldHVybiBuO3RyeXtlPXQuZmV0Y2goZSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZX19aWYoZSBpbnN0YW5jZW9mIGEuTmFtZSl7Y29uc3QgdD1yLmdldEJ5TmFtZShlLm5hbWUpO2lmKHQpcmV0dXJuIHR9cmV0dXJuIG51bGx9c3RhdGljIGFzeW5jIHBhcnNlQXN5bmMoZSl7bGV0e2NzOnQseHJlZjpyLHJlc291cmNlczpuPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX09ZTtjb25zdCBzPXRoaXMuX3BhcnNlKHQscixuLGEpO3JldHVybiB0aGlzLl9jYWNoZSh0LHIsaSxzKSxzfXN0YXRpYyBwYXJzZShlKXtsZXR7Y3M6dCx4cmVmOnIscmVzb3VyY2VzOm49bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfT1lO2NvbnN0IHM9dGhpcy5nZXRDYWNoZWQodCxyLGkpO2lmKHMpcmV0dXJuIHM7Y29uc3Qgbz10aGlzLl9wYXJzZSh0LHIsbixhKTtyZXR1cm4gdGhpcy5fY2FjaGUodCxyLGksbyksb31zdGF0aWMgX3BhcnNlKGUsdCl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGwsaT1hcmd1bWVudHMubGVuZ3RoPjM/YXJndW1lbnRzWzNdOnZvaWQgMDtpZigoZT10LmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBhLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IGwobnVsbCk7ZGVmYXVsdDppZihyIGluc3RhbmNlb2YgYS5EaWN0KXtjb25zdCBuPXIuZ2V0KCJDb2xvclNwYWNlIik7aWYobiBpbnN0YW5jZW9mIGEuRGljdCl7Y29uc3Qgcz1uLmdldChlLm5hbWUpO2lmKHMpe2lmKHMgaW5zdGFuY2VvZiBhLk5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxyLGkpO2U9czticmVha319fXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogIi5jb25jYXQoZS5uYW1lKSl9aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgYT10LmZldGNoSWZSZWYoZVswXSkubmFtZTtsZXQgcyxvLHUsZCxmLGI7c3dpdGNoKGEpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiQ2FsR3JheSI6cmV0dXJuIHM9dC5mZXRjaElmUmVmKGVbMV0pLGQ9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpLGY9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpLGI9cy5nZXQoIkdhbW1hIiksbmV3IGcoZCxmLGIpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKSxkPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKSxmPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKSxiPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgeT1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IHAoZCxmLGIseSk7Y2FzZSJJQ0NCYXNlZCI6Y29uc3Qgdz10LmZldGNoSWZSZWYoZVsxXSkuZGljdDtvPXcuZ2V0KCJOIik7Y29uc3Qgdj13LmdldCgiQWx0ZXJuYXRlIik7aWYodil7Y29uc3QgZT10aGlzLl9wYXJzZSh2LHQscixpKTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTsoMCxuLndhcm4pKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2lmKDM9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215azticmVhaztjYXNlIlBhdHRlcm4iOnJldHVybiB1PWVbMV18fG51bGwsdSYmKHU9dGhpcy5fcGFyc2UodSx0LHIsaSkpLG5ldyBsKHUpO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjp1PXRoaXMuX3BhcnNlKGVbMV0sdCxyLGkpO2NvbnN0IHg9dC5mZXRjaElmUmVmKGVbMl0pKzEsUz10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBoKHUseCxTKTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3QgQT10LmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KEEpP0EubGVuZ3RoOjEsdT10aGlzLl9wYXJzZShlWzJdLHQscixpKTtjb25zdCBrPWkuY3JlYXRlKGVbM10pO3JldHVybiBuZXcgYyhvLHUsayk7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pLGQ9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpLGY9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IEM9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IG0oZCxmLEMpO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICIuY29uY2F0KGEpKX19dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogIi5jb25jYXQoZSkpfXN0YXRpYyBpc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyKnQhPT1lLmxlbmd0aClyZXR1cm4oMCxuLndhcm4pKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIiksITA7Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH1zdGF0aWMgZ2V0IHNpbmdsZXRvbnMoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywic2luZ2xldG9ucyIse2dldCBncmF5KCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImdyYXkiLG5ldyB1KX0sZ2V0IHJnYigpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJyZ2IiLG5ldyBkKX0sZ2V0IGNteWsoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiY215ayIsbmV3IGYpfX0pfX10LkNvbG9yU3BhY2U9bztjbGFzcyBjIGV4dGVuZHMgb3tjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoIkFsdGVybmF0ZSIsZSksdGhpcy5iYXNlPXQsdGhpcy50aW50Rm49cix0aGlzLnRtcEJ1Zj1uZXcgRmxvYXQzMkFycmF5KHQubnVtQ29tcHMpfWdldFJnYkl0ZW0oZSx0LHIsbil7Y29uc3QgYT10aGlzLnRtcEJ1Zjt0aGlzLnRpbnRGbihlLHQsYSwwKSx0aGlzLmJhc2UuZ2V0UmdiSXRlbShhLDAscixuKX1nZXRSZ2JCdWZmZXIoZSx0LHIsbixhLGkscyl7Y29uc3Qgbz10aGlzLnRpbnRGbixjPXRoaXMuYmFzZSxsPTEvKCgxPDxpKS0xKSxoPWMubnVtQ29tcHMsdT1jLnVzZXNaZXJvVG9PbmVSYW5nZSxkPShjLmlzUGFzc3Rocm91Z2goOCl8fCF1KSYmMD09PXM7bGV0IGY9ZD9hOjA7Y29uc3QgZz1kP246bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGgqcikscD10aGlzLm51bUNvbXBzLG09bmV3IEZsb2F0MzJBcnJheShwKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCk7bGV0IHksdztmb3IoeT0wO3k8cjt5Kyspe2Zvcih3PTA7dzxwO3crKyltW3ddPWVbdCsrXSpsO2lmKG8obSwwLGIsMCksdSlmb3Iodz0wO3c8aDt3KyspZ1tmKytdPTI1NSpiW3ddO2Vsc2UgYy5nZXRSZ2JJdGVtKGIsMCxnLGYpLGYrPWh9ZHx8Yy5nZXRSZ2JCdWZmZXIoZywwLHIsbixhLDgscyl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgbCBleHRlbmRzIG97Y29uc3RydWN0b3IoZSl7c3VwZXIoIlBhdHRlcm4iLG51bGwpLHRoaXMuYmFzZT1lfWlzRGVmYXVsdERlY29kZShlLHQpeygwLG4udW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgUGF0dGVybkNTLmlzRGVmYXVsdERlY29kZSIpfX1jbGFzcyBoIGV4dGVuZHMgb3tjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoIkluZGV4ZWQiLDEpLHRoaXMuYmFzZT1lLHRoaXMuaGlnaFZhbD10O2NvbnN0IGE9ZS5udW1Db21wcyp0O2lmKHRoaXMubG9va3VwPW5ldyBVaW50OEFycmF5KGEpLHIgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0pe2NvbnN0IGU9ci5nZXRCeXRlcyhhKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIHIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICIuY29uY2F0KHIpKTtmb3IobGV0IGU9MDtlPGE7KytlKXRoaXMubG9va3VwW2VdPTI1NSZyLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LHIsbil7Y29uc3QgYT10aGlzLmJhc2UubnVtQ29tcHMsaT1lW3RdKmE7dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxpLDEscixuLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxyLG4sYSxpLHMpe2NvbnN0IG89dGhpcy5iYXNlLGM9by5udW1Db21wcyxsPW8uZ2V0T3V0cHV0TGVuZ3RoKGMscyksaD10aGlzLmxvb2t1cDtmb3IobGV0IGk9MDtpPHI7KytpKXtjb25zdCByPWVbdCsrXSpjO28uZ2V0UmdiQnVmZmVyKGgsciwxLG4sYSw4LHMpLGErPWx9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiFBcnJheS5pc0FycmF5KGUpfHwoMiE9PWUubGVuZ3RoPygoMCxuLndhcm4pKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpLCEwKTohTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxPygoMCxuLndhcm4pKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKSwhMCk6MD09PWVbMF0mJmVbMV09PT0oMTw8dCktMSl9fWNsYXNzIHUgZXh0ZW5kcyBve2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUdyYXkiLDEpfWdldFJnYkl0ZW0oZSx0LHIsbil7Y29uc3QgYT0yNTUqZVt0XTtyW25dPXJbbisxXT1yW24rMl09YX1nZXRSZ2JCdWZmZXIoZSx0LHIsbixhLGkscyl7Y29uc3Qgbz0yNTUvKCgxPDxpKS0xKTtsZXQgYz10LGw9YTtmb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PW8qZVtjKytdO25bbCsrXT10LG5bbCsrXT10LG5bbCsrXT10LGwrPXN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBkIGV4dGVuZHMgb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VSR0IiLDMpfWdldFJnYkl0ZW0oZSx0LHIsbil7cltuXT0yNTUqZVt0XSxyW24rMV09MjU1KmVbdCsxXSxyW24rMl09MjU1KmVbdCsyXX1nZXRSZ2JCdWZmZXIoZSx0LHIsbixhLGkscyl7aWYoOD09PWkmJjA9PT1zKXJldHVybiB2b2lkIG4uc2V0KGUuc3ViYXJyYXkodCx0KzMqciksYSk7Y29uc3Qgbz0yNTUvKCgxPDxpKS0xKTtsZXQgYz10LGw9YTtmb3IobGV0IHQ9MDt0PHI7Kyt0KW5bbCsrXT1vKmVbYysrXSxuW2wrK109byplW2MrK10sbltsKytdPW8qZVtjKytdLGwrPXN9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jb25zdCBmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQscixuLGEpe2NvbnN0IGk9ZVt0XSpyLHM9ZVt0KzFdKnIsbz1lW3QrMl0qcixjPWVbdCszXSpyO25bYV09MjU1K2kqKC00LjM4NzMzMjM4NDYwOTk4OCppKzU0LjQ4NjE1MTk0MTg5MTc2KnMrMTguODIyOTA1MDIxNjUzMDIqbysyMTIuMjU2NjI0NTE2Mzk1ODUqYy0yODUuMjMzMTAyNjEzNzAwNCkrcyooMS43MTQ5NzYzNDc3MzYyMTM0KnMtNS42MDk2NzM2OTA0MDQ3MzE1Km8rLTE3Ljg3Mzg3MDg2MTQxNTQ0NCpjLTUuNDk3MDA2NDI3MTk2MzY2KStvKigtMi41MjE3MzQwMTMxNjgzMDMzKm8tMjEuMjQ4OTIzMzM3MzUzMDczKmMrMTcuNTExOTI3MDg0MTgxMykrYyooLTIxLjg2MTIyMTQ3NDYzNjA1KmMtMTg5LjQ4MTgwODM1OTIyNzQ3KSxuW2ErMV09MjU1K2kqKDguODQxMDQxNDIyMDM2MTQ5KmkrNjAuMTE4MDI3MDQ1NTk3MzY2KnMrNi44NzE0MjU1OTIwNDkwMDcqbyszMS4xNTkxMDAxMzAwNTU5MjIqYy03OS4yOTcwODQ0ODE2NTQ4KStzKigtMTUuMzEwMzYxMzA2OTY3ODE3KnMrMTcuNTc1MjUxMjYxMTA5NDgyKm8rMTMxLjM1MjUwOTEyNDkzOTc2KmMtMTkwLjk0NTMzMDI1ODg5NTEpK28qKDQuNDQ0MzM5MTAyODUyNzM5Km8rOS44NjMyODYxNDkzNDA1KmMtMjQuODY3NDE1ODI1NTU4NzgpK2MqKC0yMC43MzczMjU0NzExODEwMzQqYy0xODcuODA0NTM3MDk3MTk1NzgpLG5bYSsyXT0yNTUraSooLjg4NDI1MjI0MzAwMDMyOTYqaSs4LjA3ODY3NzUwMzExMjkyOCpzKzMwLjg5OTc4MzA5NzAzNzI5Km8tLjIzODgzMjM4Njg5MTc4OTM0KmMtMTQuMTgzNTc2Nzk5NjczMjg2KStzKigxMC40OTU5MzI3MzQzMjA3MipzKzYzLjAyMzc4NDk0NzU0MDUyKm8rNTAuNjA2OTU3NjU2MzYwNzM0KmMtMTEyLjIzODg0MjUzNzE5MjQ4KStvKiguMDMyOTYwNDExMTQ4NzMyMTcqbysxMTUuNjAzODQ0NDk2NDY2NDEqYy0xOTMuNTgyMDkzNTY4NjE1MDUpK2MqKC0yMi4zMzgxNjgwNzMwOTg4NipjLTE4MC4xMjYxMzk3NDcwODM2Nyl9cmV0dXJuIGNsYXNzIGV4dGVuZHMgb3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VDTVlLIiw0KX1nZXRSZ2JJdGVtKHQscixuLGEpe2UodCxyLDEsbixhKX1nZXRSZ2JCdWZmZXIodCxyLG4sYSxpLHMsbyl7Y29uc3QgYz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxuO3MrKyllKHQscixjLGEsaSkscis9NCxpKz0zK299Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUvNCooMyt0KXwwfX19KCksZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsbixhLGkpe2NvbnN0IHM9KHRbcl0qaSkqKmUuRyxvPWUuWVcqcyxjPU1hdGgubWF4KDI5NS44Km8qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7blthXT1jLG5bYSsxXT1jLG5bYSsyXT1jfXJldHVybiBjbGFzcyBleHRlbmRzIG97Y29uc3RydWN0b3IoZSx0LHIpe2lmKHN1cGVyKCJDYWxHcmF5IiwxKSwhZSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTtpZih0fHwodD1bMCwwLDBdKSxyfHwocj0xKSx0aGlzLlhXPWVbMF0sdGhpcy5ZVz1lWzFdLHRoaXMuWlc9ZVsyXSx0aGlzLlhCPXRbMF0sdGhpcy5ZQj10WzFdLHRoaXMuWkI9dFsyXSx0aGlzLkc9cix0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAiLmNvbmNhdCh0aGlzLm5hbWUsIiwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIikpOyh0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKSYmKCgwLG4uaW5mbykoIkludmFsaWQgQmxhY2tQb2ludCBmb3IgIi5jb25jYXQodGhpcy5uYW1lLCIsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LiIpKSx0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wKSwwPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHwoMCxuLndhcm4pKCIiLmNvbmNhdCh0aGlzLm5hbWUsIiwgQmxhY2tQb2ludDogWEI6ICIpLmNvbmNhdCh0aGlzLlhCLCIsIFlCOiAiKS5jb25jYXQodGhpcy5ZQiwiLCBaQjogIikuY29uY2F0KHRoaXMuWkIsIiwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLiIpKSx0aGlzLkc8MSYmKCgwLG4uaW5mbykoIkludmFsaWQgR2FtbWE6ICIuY29uY2F0KHRoaXMuRywiIGZvciAiKS5jb25jYXQodGhpcy5uYW1lLCIsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LiIpKSx0aGlzLkc9MSl9Z2V0UmdiSXRlbSh0LHIsbixhKXtlKHRoaXMsdCxyLG4sYSwxKX1nZXRSZ2JCdWZmZXIodCxyLG4sYSxpLHMsbyl7Y29uc3QgYz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxuOysrcyllKHRoaXMsdCxyLGEsaSxjKSxyKz0xLGkrPTMrb31nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19fSgpLHA9ZnVuY3Rpb24oKXtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoWy44OTUxLC4yNjY0LC0uMTYxNCwtLjc1MDIsMS43MTM1LC4wMzY3LC4wMzg5LC0uMDY4NSwxLjAyOTZdKSx0PW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKSxyPW5ldyBGbG9hdDMyQXJyYXkoWzMuMjQwNDU0MiwtMS41MzcxMzg1LC0uNDk4NTMxNCwtLjk2OTI2NiwxLjg3NjAxMDgsLjA0MTU1NiwuMDU1NjQzNCwtLjIwNDAyNTksMS4wNTcyMjUyXSksYT1uZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pLGk9bmV3IEZsb2F0MzJBcnJheSgzKSxzPW5ldyBGbG9hdDMyQXJyYXkoMyksYz1uZXcgRmxvYXQzMkFycmF5KDMpLGw9KDI0LzExNikqKjMvODtmdW5jdGlvbiBoKGUsdCxyKXtyWzBdPWVbMF0qdFswXStlWzFdKnRbMV0rZVsyXSp0WzJdLHJbMV09ZVszXSp0WzBdK2VbNF0qdFsxXStlWzVdKnRbMl0sclsyXT1lWzZdKnRbMF0rZVs3XSp0WzFdK2VbOF0qdFsyXX1mdW5jdGlvbiB1KGUpe3JldHVybiBlPD0uMDAzMTMwOD9kKDAsMSwxMi45MiplKTplPj0uOTk1NTQ1MjU/MTpkKDAsMSwxLjA1NSplKiooMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQscikpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGU8MD8tZigtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKmx9ZnVuY3Rpb24gZyhuLG8sbCxnLHAsbSl7Y29uc3QgYj1kKDAsMSxvW2xdKm0pLHk9ZCgwLDEsb1tsKzFdKm0pLHc9ZCgwLDEsb1tsKzJdKm0pLHY9MT09PWI/MTpiKipuLkdSLHg9MT09PXk/MTp5KipuLkdHLFM9MT09PXc/MTp3KipuLkdCLEE9bi5NWEEqdituLk1YQip4K24uTVhDKlMsaz1uLk1ZQSp2K24uTVlCKngrbi5NWUMqUyxDPW4uTVpBKnYrbi5NWkIqeCtuLk1aQypTLE89cztPWzBdPUEsT1sxXT1rLE9bMl09Qztjb25zdCBGPWM7IWZ1bmN0aW9uKHIsbixhKXtpZigxPT09clswXSYmMT09PXJbMl0pcmV0dXJuIGFbMF09blswXSxhWzFdPW5bMV0sdm9pZChhWzJdPW5bMl0pO2NvbnN0IHM9YTtoKGUsbixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uKGUsdCxyKXtyWzBdPTEqdFswXS9lWzBdLHJbMV09MSp0WzFdL2VbMV0sclsyXT0xKnRbMl0vZVsyXX0ocixzLG8pLGgodCxvLGEpfShuLndoaXRlUG9pbnQsTyxGKTtjb25zdCBJPXM7IWZ1bmN0aW9uKGUsdCxyKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXJldHVybiByWzBdPXRbMF0sclsxXT10WzFdLHZvaWQoclsyXT10WzJdKTtjb25zdCBuPWYoMCksYT0oMS1uKS8oMS1mKGVbMF0pKSxpPTEtYSxzPSgxLW4pLygxLWYoZVsxXSkpLG89MS1zLGM9KDEtbikvKDEtZihlWzJdKSksbD0xLWM7clswXT10WzBdKmEraSxyWzFdPXRbMV0qcytvLHJbMl09dFsyXSpjK2x9KG4uYmxhY2tQb2ludCxGLEkpO2NvbnN0IFQ9YzshZnVuY3Rpb24ocixuLGEpe2NvbnN0IHM9YTtoKGUsbixzKTtjb25zdCBvPWk7IWZ1bmN0aW9uKGUsdCxyKXtyWzBdPS45NTA0Nyp0WzBdL2VbMF0sclsxXT0xKnRbMV0vZVsxXSxyWzJdPTEuMDg4ODMqdFsyXS9lWzJdfShyLHMsbyksaCh0LG8sYSl9KGEsSSxUKTtjb25zdCBNPXM7aChyLFQsTSksZ1twXT0yNTUqdShNWzBdKSxnW3ArMV09MjU1KnUoTVsxXSksZ1twKzJdPTI1NSp1KE1bMl0pfXJldHVybiBjbGFzcyBleHRlbmRzIG97Y29uc3RydWN0b3IoZSx0LHIsYSl7aWYoc3VwZXIoIkNhbFJHQiIsMyksIWUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTt0fHwodD1uZXcgRmxvYXQzMkFycmF5KDMpKSxyfHwocj1uZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pKSxhfHwoYT1uZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pKTtjb25zdCBpPWVbMF0scz1lWzFdLG89ZVsyXTt0aGlzLndoaXRlUG9pbnQ9ZTtjb25zdCBjPXRbMF0sbD10WzFdLGg9dFsyXTtpZih0aGlzLmJsYWNrUG9pbnQ9dCx0aGlzLkdSPXJbMF0sdGhpcy5HRz1yWzFdLHRoaXMuR0I9clsyXSx0aGlzLk1YQT1hWzBdLHRoaXMuTVlBPWFbMV0sdGhpcy5NWkE9YVsyXSx0aGlzLk1YQj1hWzNdLHRoaXMuTVlCPWFbNF0sdGhpcy5NWkI9YVs1XSx0aGlzLk1YQz1hWzZdLHRoaXMuTVlDPWFbN10sdGhpcy5NWkM9YVs4XSxpPDB8fG88MHx8MSE9PXMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAiLmNvbmNhdCh0aGlzLm5hbWUsIiwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIikpOyhjPDB8fGw8MHx8aDwwKSYmKCgwLG4uaW5mbykoIkludmFsaWQgQmxhY2tQb2ludCBmb3IgIi5jb25jYXQodGhpcy5uYW1lLCIgWyIpLmNvbmNhdChjLCIsICIpLmNvbmNhdChsLCIsICIpLmNvbmNhdChoLCJdLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC4iKSksdGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMykpLCh0aGlzLkdSPDB8fHRoaXMuR0c8MHx8dGhpcy5HQjwwKSYmKCgwLG4uaW5mbykoIkludmFsaWQgR2FtbWEgWyIuY29uY2F0KHRoaXMuR1IsIiwgIikuY29uY2F0KHRoaXMuR0csIiwgIikuY29uY2F0KHRoaXMuR0IsIl0gZm9yICIpLmNvbmNhdCh0aGlzLm5hbWUsIiwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuIikpLHRoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTEpfWdldFJnYkl0ZW0oZSx0LHIsbil7Zyh0aGlzLGUsdCxyLG4sMSl9Z2V0UmdiQnVmZmVyKGUsdCxyLG4sYSxpLHMpe2NvbnN0IG89MS8oKDE8PGkpLTEpO2ZvcihsZXQgaT0wO2k8cjsrK2kpZyh0aGlzLGUsdCxuLGEsbyksdCs9MyxhKz0zK3N9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX19KCksbT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIGU+PTYvMjk/ZSoqMzoxMDgvODQxKihlLTQvMjkpfWZ1bmN0aW9uIHQoZSx0LHIsbil7cmV0dXJuIHIrZSoobi1yKS90fWZ1bmN0aW9uIHIocixuLGEsaSxzLG8pe2xldCBjPW5bYV0sbD1uW2ErMV0saD1uW2ErMl07ITEhPT1pJiYoYz10KGMsaSwwLDEwMCksbD10KGwsaSxyLmFtaW4sci5hbWF4KSxoPXQoaCxpLHIuYm1pbixyLmJtYXgpKSxsPnIuYW1heD9sPXIuYW1heDpsPHIuYW1pbiYmKGw9ci5hbWluKSxoPnIuYm1heD9oPXIuYm1heDpoPHIuYm1pbiYmKGg9ci5ibWluKTtjb25zdCB1PShjKzE2KS8xMTYsZD11K2wvNTAwLGY9dS1oLzIwMCxnPXIuWFcqZShkKSxwPXIuWVcqZSh1KSxtPXIuWlcqZShmKTtsZXQgYix5LHc7ci5aVzwxPyhiPTMuMTMzOSpnKy0xLjYxNypwKy0uNDkwNiptLHk9LS45Nzg1KmcrMS45MTYqcCsuMDMzMyptLHc9LjA3MipnKy0uMjI5KnArMS40MDU3Km0pOihiPTMuMjQwNipnKy0xLjUzNzIqcCstLjQ5ODYqbSx5PS0uOTY4OSpnKzEuODc1OCpwKy4wNDE1Km0sdz0uMDU1NypnKy0uMjA0KnArMS4wNTcqbSksc1tvXT0yNTUqTWF0aC5zcXJ0KGIpLHNbbysxXT0yNTUqTWF0aC5zcXJ0KHkpLHNbbysyXT0yNTUqTWF0aC5zcXJ0KHcpfXJldHVybiBjbGFzcyBleHRlbmRzIG97Y29uc3RydWN0b3IoZSx0LHIpe2lmKHN1cGVyKCJMYWIiLDMpLCFlKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7aWYodHx8KHQ9WzAsMCwwXSkscnx8KHI9Wy0xMDAsMTAwLC0xMDAsMTAwXSksdGhpcy5YVz1lWzBdLHRoaXMuWVc9ZVsxXSx0aGlzLlpXPWVbMl0sdGhpcy5hbWluPXJbMF0sdGhpcy5hbWF4PXJbMV0sdGhpcy5ibWluPXJbMl0sdGhpcy5ibWF4PXJbM10sdGhpcy5YQj10WzBdLHRoaXMuWUI9dFsxXSx0aGlzLlpCPXRbMl0sdGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7KHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApJiYoKDAsbi5pbmZvKSgiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpLHRoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTApLCh0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KSYmKCgwLG4uaW5mbykoIkludmFsaWQgUmFuZ2UsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0cyIpLHRoaXMuYW1pbj0tMTAwLHRoaXMuYW1heD0xMDAsdGhpcy5ibWluPS0xMDAsdGhpcy5ibWF4PTEwMCl9Z2V0UmdiSXRlbShlLHQsbixhKXtyKHRoaXMsZSx0LCExLG4sYSl9Z2V0UmdiQnVmZmVyKGUsdCxuLGEsaSxzLG8pe2NvbnN0IGM9KDE8PHMpLTE7Zm9yKGxldCBzPTA7czxuO3MrKylyKHRoaXMsZSx0LGMsYSxpKSx0Kz0zLGkrPTMrb31nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCExKX19fSgpfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUGFydGlhbEV2YWx1YXRvcj10LkV2YWx1YXRvclByZXByb2Nlc3Nvcj12b2lkIDAscigxMzkpLHIoMikscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpLHIoMTE2KSxyKDEyNikscigxMjgpLHIoMTMxKSxyKDEzMykscigxMzUpLHIoMTM3KSxyKDE1NykscigxNTkpO3ZhciBuPXIoMTQ0KSxhPXIoMTY0KSxzPXIoMTUwKSxvPXIoMTg0KSxjPXIoMTg3KSxsPXIoMTkxKSxoPXIoMjAwKSx1PXIoMjAxKSxkPXIoMTkyKSxmPXIoMjA3KSxnPXIoMTY2KSxwPXIoMjA5KSxtPXIoMTU0KSxiPXIoMTUxKSx5PXIoMjEwKSx3PXIoMTYyKSx2PXIoMTY4KSx4PXIoMTg4KSxTPXIoMjExKSxBPXIoMTg5KSxrPXIoMTQ5KSxDPXIoMTk1KSxPPXIoMTkwKSxGPXIoMjEyKSxJPXIoMjEzKSxUPXIoMjE0KSxNPXIoMjE1KTtjb25zdCBFPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLGNNYXBVcmw6bnVsbCxzdGFuZGFyZEZvbnREYXRhVXJsOm51bGx9KSxQPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIFIoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPVIodCwhMCk7aWYoZSlyZXR1cm4gZX1yZXR1cm4oMCxuLndhcm4pKCJVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAiLmNvbmNhdChlKSksInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBzLk5hbWUpKXJldHVybiB0P251bGw6InNvdXJjZS1vdmVyIjtzd2l0Y2goZS5uYW1lKXtjYXNlIk5vcm1hbCI6Y2FzZSJDb21wYXRpYmxlIjpyZXR1cm4ic291cmNlLW92ZXIiO2Nhc2UiTXVsdGlwbHkiOnJldHVybiJtdWx0aXBseSI7Y2FzZSJTY3JlZW4iOnJldHVybiJzY3JlZW4iO2Nhc2UiT3ZlcmxheSI6cmV0dXJuIm92ZXJsYXkiO2Nhc2UiRGFya2VuIjpyZXR1cm4iZGFya2VuIjtjYXNlIkxpZ2h0ZW4iOnJldHVybiJsaWdodGVuIjtjYXNlIkNvbG9yRG9kZ2UiOnJldHVybiJjb2xvci1kb2RnZSI7Y2FzZSJDb2xvckJ1cm4iOnJldHVybiJjb2xvci1idXJuIjtjYXNlIkhhcmRMaWdodCI6cmV0dXJuImhhcmQtbGlnaHQiO2Nhc2UiU29mdExpZ2h0IjpyZXR1cm4ic29mdC1saWdodCI7Y2FzZSJEaWZmZXJlbmNlIjpyZXR1cm4iZGlmZmVyZW5jZSI7Y2FzZSJFeGNsdXNpb24iOnJldHVybiJleGNsdXNpb24iO2Nhc2UiSHVlIjpyZXR1cm4iaHVlIjtjYXNlIlNhdHVyYXRpb24iOnJldHVybiJzYXR1cmF0aW9uIjtjYXNlIkNvbG9yIjpyZXR1cm4iY29sb3IiO2Nhc2UiTHVtaW5vc2l0eSI6cmV0dXJuImx1bWlub3NpdHkifXJldHVybiB0P251bGw6KCgwLG4ud2FybikoIlVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICIuY29uY2F0KGUubmFtZSkpLCJzb3VyY2Utb3ZlciIpfWZ1bmN0aW9uIE4oZSl7dmFyIHQ7ZS5mbj09PW4uT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdCYmKG51bGw9PT0odD1lLmFyZ3NbMF0pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNvdW50KT4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBEe2NvbnN0cnVjdG9yKCl7dGhpcy5yZXNldCgpfWNoZWNrKCl7cmV0dXJuISgrK3RoaXMuY2hlY2tlZDxELkNIRUNLX1RJTUVfRVZFUlkpJiYodGhpcy5jaGVja2VkPTAsdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpKX1yZXNldCgpe3RoaXMuZW5kVGltZT1EYXRlLm5vdygpK0QuVElNRV9TTE9UX0RVUkFUSU9OX01TLHRoaXMuY2hlY2tlZD0wfX1pKEQsIlRJTUVfU0xPVF9EVVJBVElPTl9NUyIsMjApLGkoRCwiQ0hFQ0tfVElNRV9FVkVSWSIsMTAwKTtjbGFzcyBCe2NvbnN0cnVjdG9yKGUpe2xldHt4cmVmOnQsaGFuZGxlcjpyLHBhZ2VJbmRleDpuLGlkRmFjdG9yeTphLGZvbnRDYWNoZTppLGJ1aWx0SW5DTWFwQ2FjaGU6cyxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6byxnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOmwsb3B0aW9uczpoPW51bGx9PWU7dGhpcy54cmVmPXQsdGhpcy5oYW5kbGVyPXIsdGhpcy5wYWdlSW5kZXg9bix0aGlzLmlkRmFjdG9yeT1hLHRoaXMuZm9udENhY2hlPWksdGhpcy5idWlsdEluQ01hcENhY2hlPXMsdGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9byx0aGlzLmdsb2JhbEltYWdlQ2FjaGU9Yyx0aGlzLnN5c3RlbUZvbnRDYWNoZT1sLHRoaXMub3B0aW9ucz1ofHxFLHRoaXMucGFyc2luZ1R5cGUzRm9udD0hMSx0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IHAuUmVnaW9uYWxJbWFnZUNhY2hlLHRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZD10aGlzLmZldGNoQnVpbHRJbkNNYXAuYmluZCh0aGlzKSxGLkltYWdlUmVzaXplci5zZXRNYXhBcmVhKHRoaXMub3B0aW9ucy5jYW52YXNNYXhBcmVhSW5CeXRlcyl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtjb25zdCBlPW5ldyBmLlBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KTtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsZSl9Y2xvbmUoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUodGhpcyk7cmV0dXJuIHQub3B0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5vcHRpb25zLGUpLHR9aGFzQmxlbmRNb2RlcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHMuRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3Qgcj1uZXcgcy5SZWZTZXQodCk7ZS5vYmpJZCYmci5wdXQoZS5vYmpJZCk7Y29uc3QgYT1bZV0saT10aGlzLnhyZWY7Zm9yKDthLmxlbmd0aDspe2NvbnN0IGU9YS5zaGlmdCgpLG89ZS5nZXQoIkV4dEdTdGF0ZSIpO2lmKG8gaW5zdGFuY2VvZiBzLkRpY3QpZm9yKGxldCBlIG9mIG8uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBzLlJlZil7aWYoci5oYXMoZSkpY29udGludWU7dHJ5e2U9aS5mZXRjaChlKX1jYXRjaCh0KXtyLnB1dChlKSwoMCxuLmluZm8pKCdoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJy5jb25jYXQodCwnIi4nKSk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIHMuRGljdCkpY29udGludWU7ZS5vYmpJZCYmci5wdXQoZS5vYmpJZCk7Y29uc3QgYT1lLmdldCgiQk0iKTtpZihhIGluc3RhbmNlb2Ygcy5OYW1lKXtpZigiTm9ybWFsIiE9PWEubmFtZSlyZXR1cm4hMH1lbHNlIGlmKHZvaWQgMCE9PWEmJkFycmF5LmlzQXJyYXkoYSkpZm9yKGNvbnN0IGUgb2YgYSlpZihlIGluc3RhbmNlb2Ygcy5OYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCBjPWUuZ2V0KCJYT2JqZWN0Iik7aWYoYyBpbnN0YW5jZW9mIHMuRGljdClmb3IobGV0IGUgb2YgYy5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIHMuUmVmKXtpZihyLmhhcyhlKSljb250aW51ZTt0cnl7ZT1pLmZldGNoKGUpfWNhdGNoKHQpe3IucHV0KGUpLCgwLG4uaW5mbykoJ2hhc0JsZW5kTW9kZXMgLSBpZ25vcmluZyBYT2JqZWN0OiAiJy5jb25jYXQodCwnIi4nKSk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIGIuQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZyLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IG89ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7IShvIGluc3RhbmNlb2Ygcy5EaWN0KXx8by5vYmpJZCYmci5oYXMoby5vYmpJZCl8fChhLnB1c2gobyksby5vYmpJZCYmci5wdXQoby5vYmpJZCkpfX1mb3IoY29uc3QgZSBvZiByKXQucHV0KGUpO3JldHVybiExfWFzeW5jIGZldGNoQnVpbHRJbkNNYXAoZSl7Y29uc3QgdD10aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7bGV0IHI7aWYobnVsbCE9PXRoaXMub3B0aW9ucy5jTWFwVXJsKXtjb25zdCB0PSIiLmNvbmNhdCh0aGlzLm9wdGlvbnMuY01hcFVybCkuY29uY2F0KGUsIi5iY21hcCIpLGE9YXdhaXQgZmV0Y2godCk7aWYoIWEub2spdGhyb3cgbmV3IEVycm9yKCdmZXRjaEJ1aWx0SW5DTWFwOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJy5jb25jYXQodCwnIiB3aXRoICInKS5jb25jYXQoYS5zdGF0dXNUZXh0LCciLicpKTtyPXtjTWFwRGF0YTpuZXcgVWludDhBcnJheShhd2FpdCBhLmFycmF5QnVmZmVyKCkpLGNvbXByZXNzaW9uVHlwZTpuLkNNYXBDb21wcmVzc2lvblR5cGUuQklOQVJZfX1lbHNlIHI9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCdWlsdEluQ01hcCIse25hbWU6ZX0pO3JldHVybiByLmNvbXByZXNzaW9uVHlwZSE9PW4uQ01hcENvbXByZXNzaW9uVHlwZS5OT05FJiZ0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUscikscn1hc3luYyBmZXRjaFN0YW5kYXJkRm9udERhdGEoZSl7Y29uc3QgdD10aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gbmV3IG0uU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3Qgcj0oMCxsLmdldEZvbnROYW1lVG9GaWxlTWFwKSgpW2VdO2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCl7Y29uc3QgZT0iIi5jb25jYXQodGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwpLmNvbmNhdChyKSx0PWF3YWl0IGZldGNoKGUpO3Qub2s/YT1hd2FpdCB0LmFycmF5QnVmZmVyKCk6KDAsbi53YXJuKSgnZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJy5jb25jYXQoZSwnIiB3aXRoICInKS5jb25jYXQodC5zdGF0dXNUZXh0LCciLicpKX1lbHNlIHRyeXthPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoU3RhbmRhcmRGb250RGF0YSIse2ZpbGVuYW1lOnJ9KX1jYXRjaChlKXsoMCxuLndhcm4pKCdmZXRjaFN0YW5kYXJkRm9udERhdGE6IGZhaWxlZCB0byBmZXRjaCBmaWxlICInLmNvbmNhdChyLCciIHdpdGggIicpLmNvbmNhdChlLCciLicpKX1yZXR1cm4gYT8odGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSksbmV3IG0uU3RyZWFtKGEpKTpudWxsfWFzeW5jIGJ1aWxkRm9ybVhPYmplY3QoZSx0LHIsYSxpLG8sYyl7Y29uc3QgbD10LmRpY3QsaD1sLmdldEFycmF5KCJNYXRyaXgiKTtsZXQgdSxkLGY9bC5nZXRBcnJheSgiQkJveCIpO2Y9QXJyYXkuaXNBcnJheShmKSYmND09PWYubGVuZ3RoP24uVXRpbC5ub3JtYWxpemVSZWN0KGYpOm51bGwsbC5oYXMoIk9DIikmJih1PWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMobC5nZXQoIk9DIiksZSkpLHZvaWQgMCE9PXUmJmEuYWRkT3Aobi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsWyJPQyIsdV0pO2NvbnN0IGc9bC5nZXQoIkdyb3VwIik7aWYoZyl7ZD17bWF0cml4OmgsYmJveDpmLHNtYXNrOnIsaXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9O2NvbnN0IHQ9Zy5nZXQoIlMiKTtsZXQgaT1udWxsO2lmKCgwLHMuaXNOYW1lKSh0LCJUcmFuc3BhcmVuY3kiKSYmKGQuaXNvbGF0ZWQ9Zy5nZXQoIkkiKXx8ITEsZC5rbm9ja291dD1nLmdldCgiSyIpfHwhMSxnLmhhcygiQ1MiKSkpe2NvbnN0IHQ9Zy5nZXRSYXcoIkNTIik7aT13LkNvbG9yU3BhY2UuZ2V0Q2FjaGVkKHQsdGhpcy54cmVmLGMpfHxhd2FpdCB0aGlzLnBhcnNlQ29sb3JTcGFjZSh7Y3M6dCxyZXNvdXJjZXM6ZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpjfSl9bnVsbCE9ciYmci5iYWNrZHJvcCYmKGl8fChpPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYiksci5iYWNrZHJvcD1pLmdldFJnYihyLmJhY2tkcm9wLDApKSxhLmFkZE9wKG4uT1BTLmJlZ2luR3JvdXAsW2RdKX1jb25zdCBwPWc/W2gsbnVsbF06W2gsZl07cmV0dXJuIGEuYWRkT3Aobi5PUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luLHApLHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmkscmVzb3VyY2VzOmwuZ2V0KCJSZXNvdXJjZXMiKXx8ZSxvcGVyYXRvckxpc3Q6YSxpbml0aWFsU3RhdGU6b30pLnRoZW4oKGZ1bmN0aW9uKCl7YS5hZGRPcChuLk9QUy5wYWludEZvcm1YT2JqZWN0RW5kLFtdKSxnJiZhLmFkZE9wKG4uT1BTLmVuZEdyb3VwLFtkXSksdm9pZCAwIT09dSYmYS5hZGRPcChuLk9QUy5lbmRNYXJrZWRDb250ZW50LFtdKX0pKX1fc2VuZEltZ0RhdGEoZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO2NvbnN0IG49dD9bdC5iaXRtYXB8fHQuZGF0YS5idWZmZXJdOm51bGw7cmV0dXJuIHRoaXMucGFyc2luZ1R5cGUzRm9udHx8cj90aGlzLmhhbmRsZXIuc2VuZCgiY29tbW9ub2JqIixbZSwiSW1hZ2UiLHRdLG4pOnRoaXMuaGFuZGxlci5zZW5kKCJvYmoiLFtlLHRoaXMucGFnZUluZGV4LCJJbWFnZSIsdF0sbil9YXN5bmMgYnVpbGRQYWludEltYWdlWE9iamVjdChlKXtsZXR7cmVzb3VyY2VzOnQsaW1hZ2U6cixpc0lubGluZTphPSExLG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OnMsbG9jYWxJbWFnZUNhY2hlOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Y309ZTtjb25zdCBsPXIuZGljdCxoPWwub2JqSWQsdT1sLmdldCgiVyIsIldpZHRoIiksZD1sLmdldCgiSCIsIkhlaWdodCIpO2lmKCF1fHwibnVtYmVyIiE9dHlwZW9mIHV8fCFkfHwibnVtYmVyIiE9dHlwZW9mIGQpcmV0dXJuIHZvaWQoMCxuLndhcm4pKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtjb25zdCBmPXRoaXMub3B0aW9ucy5tYXhJbWFnZVNpemU7aWYoLTEhPT1mJiZ1KmQ+Zil7Y29uc3QgZT0iSW1hZ2UgZXhjZWVkZWQgbWF4aW11bSBhbGxvd2VkIHNpemUgYW5kIHdhcyByZW1vdmVkLiI7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycylyZXR1cm4gdm9pZCgwLG4ud2FybikoZSk7dGhyb3cgbmV3IEVycm9yKGUpfWxldCBnLHAsbTtpZihsLmhhcygiT0MiKSYmKGc9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhsLmdldCgiT0MiKSx0KSksbC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe2NvbnN0IGU9bC5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLHQ9dSs3Pj4zLGE9ci5nZXRCeXRlcyh0KmQpLGM9bC5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7aWYocD1NLlBERkltYWdlLmNyZWF0ZVJhd01hc2soe2ltZ0FycmF5OmEsd2lkdGg6dSxoZWlnaHQ6ZCxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTpyIGluc3RhbmNlb2Ygdi5EZWNvZGVTdHJlYW0saW52ZXJzZURlY29kZToobnVsbD09Yz92b2lkIDA6Y1swXSk+MCxpbnRlcnBvbGF0ZTplfSkscC5jYWNoZWQ9ISFzLG09W3BdLGkuYWRkSW1hZ2VPcHMobi5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LG0sZykscyl7Y29uc3QgZT17Zm46bi5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0LGFyZ3M6bSxvcHRpb25hbENvbnRlbnQ6Z307by5zZXQocyxoLGUpLGgmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpfXJldHVybn1pZihwPWF3YWl0IE0uUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1nQXJyYXk6YSx3aWR0aDp1LGhlaWdodDpkLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnIgaW5zdGFuY2VvZiB2LkRlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOihudWxsPT1jP3ZvaWQgMDpjWzBdKT4wLGludGVycG9sYXRlOmUsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6dGhpcy5vcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfSkscC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtpZihpLmFkZEltYWdlT3BzKG4uT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzayxbXSxnKSxzKXtjb25zdCBlPXtmbjpuLk9QUy5wYWludFNvbGlkQ29sb3JJbWFnZU1hc2ssYXJnczpbXSxvcHRpb25hbENvbnRlbnQ6Z307by5zZXQocyxoLGUpLGgmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLGUpfXJldHVybn1jb25zdCBmPSJtYXNrXyIuY29uY2F0KHRoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCkpO2lmKGkuYWRkRGVwZW5kZW5jeShmKSx0aGlzLl9zZW5kSW1nRGF0YShmLHApLG09W3tkYXRhOmYsd2lkdGg6cC53aWR0aCxoZWlnaHQ6cC5oZWlnaHQsaW50ZXJwb2xhdGU6cC5pbnRlcnBvbGF0ZSxjb3VudDoxfV0saS5hZGRJbWFnZU9wcyhuLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsbSxnKSxzKXtjb25zdCBlPXtmbjpuLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsYXJnczptLG9wdGlvbmFsQ29udGVudDpnfTtvLnNldChzLGgsZSksaCYmdGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGgsZSl9cmV0dXJufWlmKGEmJiFsLmhhcygiU01hc2siKSYmIWwuaGFzKCJNYXNrIikmJnUrZDwyMDApe2NvbnN0IGU9bmV3IE0uUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9KTtyZXR1cm4gcD1hd2FpdCBlLmNyZWF0ZUltYWdlRGF0YSghMCwhMSksaS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQsdm9pZCBpLmFkZEltYWdlT3BzKG4uT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0LFtwXSxnKX1sZXQgYj0iaW1nXyIuY29uY2F0KHRoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCkpLHk9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250P2I9IiIuY29uY2F0KHRoaXMuaWRGYWN0b3J5LmdldERvY0lkKCksIl90eXBlM18iKS5jb25jYXQoYik6aCYmKHk9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKGgsdGhpcy5wYWdlSW5kZXgpLHkmJihiPSIiLmNvbmNhdCh0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpLCJfIikuY29uY2F0KGIpKSksaS5hZGREZXBlbmRlbmN5KGIpLG09W2IsdSxkXSxNLlBERkltYWdlLmJ1aWxkSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczp0LGltYWdlOnIsaXNJbmxpbmU6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9KS50aGVuKChhc3luYyBlPT57aWYocD1hd2FpdCBlLmNyZWF0ZUltYWdlRGF0YSghMSx0aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpLHMmJmgmJnkpe2NvbnN0IGU9cC5iaXRtYXA/cC53aWR0aCpwLmhlaWdodCo0OnAuZGF0YS5sZW5ndGg7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGgsZSl9cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKGIscCx5KX0pKS5jYXRjaCgoZT0+KCgwLG4ud2FybikoJ1VuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIicuY29uY2F0KGIsJyI6ICInKS5jb25jYXQoZSwnIi4nKSksdGhpcy5fc2VuZEltZ0RhdGEoYixudWxsLHkpKSkpLGkuYWRkSW1hZ2VPcHMobi5PUFMucGFpbnRJbWFnZVhPYmplY3QsbSxnKSxzKXtjb25zdCBlPXtmbjpuLk9QUy5wYWludEltYWdlWE9iamVjdCxhcmdzOm0sb3B0aW9uYWxDb250ZW50Omd9O28uc2V0KHMsaCxlKSxoJiYodGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGgsZSkseSYmKCgwLG4uYXNzZXJ0KSghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKSx0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShoLHtvYmpJZDpiLGZuOm4uT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGFyZ3M6bSxvcHRpb25hbENvbnRlbnQ6ZyxieXRlU2l6ZTowfSkpKX19aGFuZGxlU01hc2soZSx0LHIsbixhLGkpe2NvbnN0IHM9ZS5nZXQoIkciKSxvPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sYz1lLmdldCgiVFIiKTtpZigoMCxmLmlzUERGRnVuY3Rpb24pKGMpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUoYyksdD1uZXcgVWludDhBcnJheSgyNTYpLHI9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IG49MDtuPDI1NjtuKyspclswXT1uLzI1NSxlKHIsMCxyLDApLHRbbl09MjU1KnJbMF18MDtvLnRyYW5zZmVyTWFwPXR9cmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdCh0LHMsbyxyLG4sYS5zdGF0ZS5jbG9uZSgpLGkpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWU7ZWxzZXtpZighKDAsZi5pc1BERkZ1bmN0aW9uKShlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCByPVtdO2xldCBuPTAsYT0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYobisrLCgwLHMuaXNOYW1lKSh0LCJJZGVudGl0eSIpKXtyLnB1c2gobnVsbCk7Y29udGludWV9aWYoISgwLGYuaXNQREZGdW5jdGlvbikodCkpcmV0dXJuIG51bGw7Y29uc3QgaT10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLG89bmV3IFVpbnQ4QXJyYXkoMjU2KSxjPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKWNbMF09ZS8yNTUsaShjLDAsYywwKSxvW2VdPTI1NSpjWzBdfDA7ci5wdXNoKG8pLGErK31yZXR1cm4gMSE9PW4mJjQhPT1ufHwwPT09YT9udWxsOnJ9aGFuZGxlVGlsaW5nVHlwZShlLHQscixhLGksbyxjLGwpe2NvbnN0IHU9bmV3IFQuT3BlcmF0b3JMaXN0LGQ9cy5EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W2kuZ2V0KCJSZXNvdXJjZXMiKSxyXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmEsdGFzazpjLHJlc291cmNlczpkLG9wZXJhdG9yTGlzdDp1fSkudGhlbigoZnVuY3Rpb24oKXtjb25zdCByPXUuZ2V0SVIoKSxuPSgwLGguZ2V0VGlsaW5nUGF0dGVybklSKShyLGksdCk7by5hZGREZXBlbmRlbmNpZXModS5kZXBlbmRlbmNpZXMpLG8uYWRkT3AoZSxuKSxpLm9iaklkJiZsLnNldChudWxsLGkub2JqSWQse29wZXJhdG9yTGlzdElSOnIsZGljdDppfSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBuLkFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxuLndhcm4pKCdoYW5kbGVUaWxpbmdUeXBlIC0gaWdub3JpbmcgcGF0dGVybjogIicuY29uY2F0KGUsJyIuJykpfX0pKX1oYW5kbGVTZXRGb250KGUsdCxyLG4sYSxpKXtsZXQgYz1hcmd1bWVudHMubGVuZ3RoPjYmJnZvaWQgMCE9PWFyZ3VtZW50c1s2XT9hcmd1bWVudHNbNl06bnVsbCxsPWFyZ3VtZW50cy5sZW5ndGg+NyYmdm9pZCAwIT09YXJndW1lbnRzWzddP2FyZ3VtZW50c1s3XTpudWxsO2NvbnN0IGg9KG51bGw9PXQ/dm9pZCAwOnRbMF0paW5zdGFuY2VvZiBzLk5hbWU/dFswXS5uYW1lOm51bGw7cmV0dXJuIHRoaXMubG9hZEZvbnQoaCxyLGUsYyxsKS50aGVuKCh0PT50LmZvbnQuaXNUeXBlM0ZvbnQ/dC5sb2FkVHlwZTNEYXRhKHRoaXMsZSxhKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBuLmFkZERlcGVuZGVuY2llcyh0LnR5cGUzRGVwZW5kZW5jaWVzKSx0fSkpLmNhdGNoKChlPT5uZXcgTCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBvLkVycm9yRm9udCgiVHlwZTMgZm9udCBsb2FkIGVycm9yOiAiLmNvbmNhdChlKSksZGljdDp0LmZvbnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSkpOnQpKS50aGVuKChlPT4oaS5mb250PWUuZm9udCxlLnNlbmQodGhpcy5oYW5kbGVyKSxlLmxvYWRlZE5hbWUpKSl9aGFuZGxlVGV4dChlLHQpe2NvbnN0IHI9dC5mb250LGE9ci5jaGFyc1RvR2x5cGhzKGUpO3JldHVybiByLmRhdGEmJih0LnRleHRSZW5kZXJpbmdNb2RlJm4uVGV4dFJlbmRlcmluZ01vZGUuQUREX1RPX1BBVEhfRkxBR3x8IlBhdHRlcm4iPT09dC5maWxsQ29sb3JTcGFjZS5uYW1lfHxyLmRpc2FibGVGb250RmFjZXx8dGhpcy5vcHRpb25zLmRpc2FibGVGb250RmFjZSkmJkIuYnVpbGRGb250UGF0aHMocixhLHRoaXMuaGFuZGxlcix0aGlzLm9wdGlvbnMpLGF9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgbi5Gb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7KDAsbi53YXJuKSgnZW5zdXJlU3RhdGVGb250OiAiJy5jb25jYXQodCwnIi4nKSl9YXN5bmMgc2V0R1N0YXRlKGUpe2xldHtyZXNvdXJjZXM6dCxnU3RhdGU6cixvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTppLHRhc2s6byxzdGF0ZU1hbmFnZXI6Yyxsb2NhbEdTdGF0ZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aH09ZTtjb25zdCB1PXIub2JqSWQ7bGV0IGQ9ITA7Y29uc3QgZj1bXTtsZXQgZz1Qcm9taXNlLnJlc29sdmUoKTtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSl7Y29uc3QgaT1yLmdldChlKTtzd2l0Y2goZSl7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjpjYXNlIkxDIjpjYXNlIkxKIjpjYXNlIk1MIjpjYXNlIkQiOmNhc2UiUkkiOmNhc2UiRkwiOmNhc2UiQ0EiOmNhc2UiY2EiOmYucHVzaChbZSxpXSk7YnJlYWs7Y2FzZSJGb250IjpkPSExLGc9Zy50aGVuKCgoKT0+dGhpcy5oYW5kbGVTZXRGb250KHQsbnVsbCxpWzBdLGEsbyxjLnN0YXRlKS50aGVuKChmdW5jdGlvbih0KXthLmFkZERlcGVuZGVuY3kodCksZi5wdXNoKFtlLFt0LGlbMV1dXSl9KSkpKTticmVhaztjYXNlIkJNIjpmLnB1c2goW2UsUihpKV0pO2JyZWFrO2Nhc2UiU01hc2siOmlmKCgwLHMuaXNOYW1lKShpLCJOb25lIikpe2YucHVzaChbZSwhMV0pO2JyZWFrfWkgaW5zdGFuY2VvZiBzLkRpY3Q/KGQ9ITEsZz1nLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNNYXNrKGksdCxhLG8sYyxoKSkpLGYucHVzaChbZSwhMF0pKTooMCxuLndhcm4pKCJVbnN1cHBvcnRlZCBTTWFzayB0eXBlIik7YnJlYWs7Y2FzZSJUUiI6Y29uc3Qgcj10aGlzLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oaSk7Zi5wdXNoKFtlLHJdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6KDAsbi5pbmZvKSgiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2UpO2JyZWFrO2RlZmF1bHQ6KDAsbi5pbmZvKSgiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrZSl9fXJldHVybiBnLnRoZW4oKGZ1bmN0aW9uKCl7Zi5sZW5ndGg+MCYmYS5hZGRPcChuLk9QUy5zZXRHU3RhdGUsW2ZdKSxkJiZsLnNldChpLHUsZil9KSl9bG9hZEZvbnQoZSx0LHIpe3ZhciBhO2xldCBpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsLGM9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0/YXJndW1lbnRzWzRdOm51bGw7Y29uc3QgbD1hc3luYygpPT5uZXcgTCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBvLkVycm9yRm9udCgnRm9udCAiJy5jb25jYXQoZSwnIiBpcyBub3QgYXZhaWxhYmxlLicpKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KTtsZXQgaDtpZih0KXQgaW5zdGFuY2VvZiBzLlJlZiYmKGg9dCk7ZWxzZXtjb25zdCB0PXIuZ2V0KCJGb250Iik7dCYmKGg9dC5nZXRSYXcoZSkpfWlmKGgpe2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCYmdGhpcy50eXBlM0ZvbnRSZWZzLmhhcyhoKSlyZXR1cm4gbCgpO2lmKHRoaXMuZm9udENhY2hlLmhhcyhoKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KGgpO3Q9dGhpcy54cmVmLmZldGNoSWZSZWYoaCl9aWYoISh0IGluc3RhbmNlb2Ygcy5EaWN0KSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpcmV0dXJuKDAsbi53YXJuKSgnRm9udCAiJy5jb25jYXQoZSwnIiBpcyBub3QgYXZhaWxhYmxlLicpKSxsKCk7KDAsbi53YXJuKSgnRm9udCAiJy5jb25jYXQoZSwnIiBpcyBub3QgYXZhaWxhYmxlIC0tIGF0dGVtcHRpbmcgdG8gZmFsbGJhY2sgdG8gYSBkZWZhdWx0IGZvbnQuJykpLHQ9aXx8Qi5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0IHU9bmV3IG4uUHJvbWlzZUNhcGFiaWxpdHk7bGV0IGQ7dHJ5e2Q9dGhpcy5wcmVFdmFsdWF0ZUZvbnQodCksZC5jc3NGb250SW5mbz1jfWNhdGNoKGUpe3JldHVybigwLG4ud2FybikoJ2xvYWRGb250IC0gcHJlRXZhbHVhdGVGb250IGZhaWxlZDogIicuY29uY2F0KGUsJyIuJykpLGwoKX1jb25zdHtkZXNjcmlwdG9yOmYsaGFzaDpnfT1kLHA9aCBpbnN0YW5jZW9mIHMuUmVmO2xldCBtO2lmKGcmJmYgaW5zdGFuY2VvZiBzLkRpY3Qpe2NvbnN0IGU9Zi5mb250QWxpYXNlc3x8KGYuZm9udEFsaWFzZXM9T2JqZWN0LmNyZWF0ZShudWxsKSk7aWYoZVtnXSl7Y29uc3QgdD1lW2ddLmFsaWFzUmVmO2lmKHAmJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUucHV0QWxpYXMoaCx0KSx0aGlzLmZvbnRDYWNoZS5nZXQoaCl9ZWxzZSBlW2ddPXtmb250SUQ6dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCl9O3AmJihlW2ddLmFsaWFzUmVmPWgpLG09ZVtnXS5mb250SUR9ZWxzZSBtPXRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpO3JldHVybigwLG4uYXNzZXJ0KShudWxsPT09KGE9bSl8fHZvaWQgMD09PWE/dm9pZCAwOmEuc3RhcnRzV2l0aCgiZiIpLCdUaGUgImZvbnRJRCIgbXVzdCBiZSAoY29ycmVjdGx5KSBkZWZpbmVkLicpLHA/dGhpcy5mb250Q2FjaGUucHV0KGgsdS5wcm9taXNlKToodC5jYWNoZUtleT0iY2FjaGVLZXlfIi5jb25jYXQobSksdGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksdS5wcm9taXNlKSksdC5sb2FkZWROYW1lPSIiLmNvbmNhdCh0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpLCJfIikuY29uY2F0KG0pLHRoaXMudHJhbnNsYXRlRm9udChkKS50aGVuKChlPT57dS5yZXNvbHZlKG5ldyBMKHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57KDAsbi53YXJuKSgnbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIicuY29uY2F0KGUsJyIuJykpLHUucmVzb2x2ZShuZXcgTCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDpuZXcgby5FcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSksdS5wcm9taXNlfWJ1aWxkUGF0aChlLHQscil7bGV0IGE9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTtjb25zdCBpPWUubGVuZ3RoLTE7aWYocnx8KHI9W10pLGk8MHx8ZS5mbkFycmF5W2ldIT09bi5PUFMuY29uc3RydWN0UGF0aCl7bGV0IGk7c3dpdGNoKGEmJigoMCxuLndhcm4pKCdFbmNvdW50ZXJlZCBwYXRoIG9wZXJhdG9yICInLmNvbmNhdCh0LCciIGluc2lkZSBvZiBhIHRleHQgb2JqZWN0LicpKSxlLmFkZE9wKG4uT1BTLnNhdmUsbnVsbCkpLHQpe2Nhc2Ugbi5PUFMucmVjdGFuZ2xlOmNvbnN0IGU9clswXStyWzJdLHQ9clsxXStyWzNdO2k9W01hdGgubWluKHJbMF0sZSksTWF0aC5tYXgoclswXSxlKSxNYXRoLm1pbihyWzFdLHQpLE1hdGgubWF4KHJbMV0sdCldO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmNhc2Ugbi5PUFMubGluZVRvOmk9W3JbMF0sclswXSxyWzFdLHJbMV1dO2JyZWFrO2RlZmF1bHQ6aT1bMS8wLC0xLzAsMS8wLC0xLzBdfWUuYWRkT3Aobi5PUFMuY29uc3RydWN0UGF0aCxbW3RdLHIsaV0pLGEmJmUuYWRkT3Aobi5PUFMucmVzdG9yZSxudWxsKX1lbHNle2NvbnN0IGE9ZS5hcmdzQXJyYXlbaV07YVswXS5wdXNoKHQpLGFbMV0ucHVzaCguLi5yKTtjb25zdCBzPWFbMl07c3dpdGNoKHQpe2Nhc2Ugbi5PUFMucmVjdGFuZ2xlOmNvbnN0IGU9clswXStyWzJdLHQ9clsxXStyWzNdO3NbMF09TWF0aC5taW4oc1swXSxyWzBdLGUpLHNbMV09TWF0aC5tYXgoc1sxXSxyWzBdLGUpLHNbMl09TWF0aC5taW4oc1syXSxyWzFdLHQpLHNbM109TWF0aC5tYXgoc1szXSxyWzFdLHQpO2JyZWFrO2Nhc2Ugbi5PUFMubW92ZVRvOmNhc2Ugbi5PUFMubGluZVRvOnNbMF09TWF0aC5taW4oc1swXSxyWzBdKSxzWzFdPU1hdGgubWF4KHNbMV0sclswXSksc1syXT1NYXRoLm1pbihzWzJdLHJbMV0pLHNbM109TWF0aC5tYXgoc1szXSxyWzFdKX19fXBhcnNlQ29sb3JTcGFjZShlKXtsZXR7Y3M6dCxyZXNvdXJjZXM6cixsb2NhbENvbG9yU3BhY2VDYWNoZTphfT1lO3JldHVybiB3LkNvbG9yU3BhY2UucGFyc2VBc3luYyh7Y3M6dCx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6cixwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmF9KS5jYXRjaCgoZT0+e2lmKGUgaW5zdGFuY2VvZiBuLkFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpcmV0dXJuKDAsbi53YXJuKSgncGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIicuY29uY2F0KGUsJyIuJykpLG51bGw7dGhyb3cgZX0pKX1wYXJzZVNoYWRpbmcoZSl7bGV0e3NoYWRpbmc6dCxyZXNvdXJjZXM6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTphfT1lLGk9YS5nZXQodCk7aWYoIWkpe2NvbnN0IGU9aC5QYXR0ZXJuLnBhcnNlU2hhZGluZyh0LHRoaXMueHJlZixyLHRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxuKS5nZXRJUigpO2k9InBhdHRlcm5fIi5jb25jYXQodGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKSksdGhpcy5wYXJzaW5nVHlwZTNGb250JiYoaT0iIi5jb25jYXQodGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKSwiX3R5cGUzXyIpLmNvbmNhdChpKSksYS5zZXQodCxpKSx0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2ksIlBhdHRlcm4iLGVdKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbaSx0aGlzLnBhZ2VJbmRleCwiUGF0dGVybiIsZV0pfXJldHVybiBpfWhhbmRsZUNvbG9yTihlLHQscixhLGksbyxjLGwsdSxkKXtjb25zdCBmPXIucG9wKCk7aWYoZiBpbnN0YW5jZW9mIHMuTmFtZSl7Y29uc3QgZz1pLmdldFJhdyhmLm5hbWUpLHA9ZyBpbnN0YW5jZW9mIHMuUmVmJiZ1LmdldEJ5UmVmKGcpO2lmKHApdHJ5e2NvbnN0IG49YS5iYXNlP2EuYmFzZS5nZXRSZ2IociwwKTpudWxsLGk9KDAsaC5nZXRUaWxpbmdQYXR0ZXJuSVIpKHAub3BlcmF0b3JMaXN0SVIscC5kaWN0LG4pO3JldHVybiB2b2lkIGUuYWRkT3AodCxpKX1jYXRjaChlKXt9Y29uc3QgbT10aGlzLnhyZWYuZmV0Y2hJZlJlZihnKTtpZihtKXtjb25zdCBpPW0gaW5zdGFuY2VvZiBiLkJhc2VTdHJlYW0/bS5kaWN0Om0scz1pLmdldCgiUGF0dGVyblR5cGUiKTtpZigxPT09cyl7Y29uc3Qgbj1hLmJhc2U/YS5iYXNlLmdldFJnYihyLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG4sbyxtLGksZSxjLHUpfWlmKDI9PT1zKXtjb25zdCByPWkuZ2V0KCJTaGFkaW5nIiksbj1pLmdldEFycmF5KCJNYXRyaXgiKSxhPXRoaXMucGFyc2VTaGFkaW5nKHtzaGFkaW5nOnIscmVzb3VyY2VzOm8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6ZH0pO3JldHVybiB2b2lkIGUuYWRkT3AodCxbIlNoYWRpbmciLGEsbl0pfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIFBhdHRlcm5UeXBlOiAiLmNvbmNhdChzKSl9fXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIFBhdHRlcm5OYW1lOiAiLmNvbmNhdChmKSl9X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSx0LHIpe2lmKCsrdD4xMClyZXR1cm4gdm9pZCgwLG4ud2FybikoIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO2NvbnN0IGE9ZS5sZW5ndGgsaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlWzBdKTtpZighKGE8MikmJmkgaW5zdGFuY2VvZiBzLk5hbWUpe3N3aXRjaChpLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6ci5wdXNoKGkubmFtZSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCgwLG4ud2FybikoIkludmFsaWQgb3BlcmF0b3IgIi5jb25jYXQoaS5uYW1lLCIgaW4gdmlzaWJpbGl0eSBleHByZXNzaW9uIikpfWZvcihsZXQgbj0xO248YTtuKyspe2NvbnN0IGE9ZVtuXSxpPXRoaXMueHJlZi5mZXRjaElmUmVmKGEpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGU9W107ci5wdXNoKGUpLHRoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oaSx0LGUpfWVsc2UgYSBpbnN0YW5jZW9mIHMuUmVmJiZyLnB1c2goYS50b1N0cmluZygpKX19ZWxzZSgwLG4ud2FybikoIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgcjtpZihlIGluc3RhbmNlb2Ygcy5OYW1lKXI9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIHMuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk9wdGlvbmFsIGNvbnRlbnQgcHJvcGVydGllcyBtYWxmb3JtZWQuIik7cj1lfWNvbnN0IGE9ci5nZXQoIlR5cGUiKS5uYW1lO2lmKCJPQ0ciPT09YSlyZXR1cm57dHlwZTphLGlkOnIub2JqSWR9O2lmKCJPQ01EIj09PWEpe2NvbnN0IGU9ci5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTtpZih0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KSx0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9ci5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2Ygcy5EaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IHIgb2YgdCllLnB1c2goci50b1N0cmluZygpKTtlbHNlIGUucHVzaCh0Lm9iaklkKTtyZXR1cm57dHlwZTphLGlkczplLHBvbGljeTpyLmdldCgiUCIpaW5zdGFuY2VvZiBzLk5hbWU/ci5nZXQoIlAiKS5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZih0IGluc3RhbmNlb2Ygcy5SZWYpcmV0dXJue3R5cGU6YSxpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdChlKXtsZXR7c3RyZWFtOnQsdGFzazpyLHJlc291cmNlczphLG9wZXJhdG9yTGlzdDppLGluaXRpYWxTdGF0ZTpvPW51bGwsZmFsbGJhY2tGb250RGljdDpjPW51bGx9PWU7aWYoYXx8KGE9cy5EaWN0LmVtcHR5KSxvfHwobz1uZXcgVSksIWkpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgbD10aGlzLGg9dGhpcy54cmVmO2xldCB1PSExO2NvbnN0IGQ9bmV3IHAuTG9jYWxJbWFnZUNhY2hlLGY9bmV3IHAuTG9jYWxDb2xvclNwYWNlQ2FjaGUsZz1uZXcgcC5Mb2NhbEdTdGF0ZUNhY2hlLG09bmV3IHAuTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUseT1uZXcgTWFwLHY9YS5nZXQoIlhPYmplY3QiKXx8cy5EaWN0LmVtcHR5LHg9YS5nZXQoIlBhdHRlcm4iKXx8cy5EaWN0LmVtcHR5LFM9bmV3IF8obyksQT1uZXcgJCh0LGgsUyksaz1uZXcgRDtmdW5jdGlvbiBDKGUpe2ZvcihsZXQgZT0wLHQ9QS5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspaS5hZGRPcChuLk9QUy5yZXN0b3JlLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIGUodCxvKXtjb25zdCBwPWZ1bmN0aW9uKHIpe1Byb21pc2UuYWxsKFtyLGkucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtlKHQsbyl9Y2F0Y2goZSl7byhlKX19KSxvKX07ci5lbnN1cmVOb3RUZXJtaW5hdGVkKCksay5yZXNldCgpO2NvbnN0IE89e307bGV0IEYsSSxULE0sRSxSO2Zvcig7IShGPWsuY2hlY2soKSkmJihPLmFyZ3M9bnVsbCxBLnJlYWQoTykpOyl7bGV0IGU9Ty5hcmdzLHQ9Ty5mbjtzd2l0Y2goMHx0KXtjYXNlIG4uT1BTLnBhaW50WE9iamVjdDppZihSPWVbMF1pbnN0YW5jZW9mIHMuTmFtZSxFPWVbMF0ubmFtZSxSKXtjb25zdCB0PWQuZ2V0QnlOYW1lKEUpO2lmKHQpe2kuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpLE4odCksZT1udWxsO2NvbnRpbnVlfX1yZXR1cm4gdm9pZCBwKG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCFSKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgbz12LmdldFJhdyhFKTtpZihvIGluc3RhbmNlb2Ygcy5SZWYpe2NvbnN0IHQ9ZC5nZXRCeVJlZihvKXx8bC5fcmVnaW9uYWxJbWFnZUNhY2hlLmdldEJ5UmVmKG8pO2lmKHQpcmV0dXJuIGkuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpLE4odCksdm9pZCBlKCk7Y29uc3Qgcj1sLmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShvLGwucGFnZUluZGV4KTtpZihyKXJldHVybiBpLmFkZERlcGVuZGVuY3koci5vYmpJZCksaS5hZGRJbWFnZU9wcyhyLmZuLHIuYXJncyxyLm9wdGlvbmFsQ29udGVudCksdm9pZCBlKCk7bz1oLmZldGNoKG8pfWlmKCEobyBpbnN0YW5jZW9mIGIuQmFzZVN0cmVhbSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgYz1vLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShjIGluc3RhbmNlb2Ygcy5OYW1lKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWMubmFtZSlpZigiSW1hZ2UiIT09Yy5uYW1lKXtpZigiUFMiIT09Yy5uYW1lKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICIuY29uY2F0KGMubmFtZSkpOygwLG4uaW5mbykoIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIiksZSgpfWVsc2UgbC5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6YSxpbWFnZTpvLG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OkUsbG9jYWxJbWFnZUNhY2hlOmQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pLnRoZW4oZSx0KTtlbHNlIFMuc2F2ZSgpLGwuYnVpbGRGb3JtWE9iamVjdChhLG8sbnVsbCxpLHIsUy5zdGF0ZS5jbG9uZSgpLGYpLnRoZW4oKGZ1bmN0aW9uKCl7Uy5yZXN0b3JlKCksZSgpfSksdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIG4uQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLG4ud2FybikoJ2dldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICInLmNvbmNhdChlLCciLicpKX19KSkpO2Nhc2Ugbi5PUFMuc2V0Rm9udDp2YXIgRD1lWzFdO3JldHVybiB2b2lkIHAobC5oYW5kbGVTZXRGb250KGEsZSxudWxsLGkscixTLnN0YXRlLGMpLnRoZW4oKGZ1bmN0aW9uKGUpe2kuYWRkRGVwZW5kZW5jeShlKSxpLmFkZE9wKG4uT1BTLnNldEZvbnQsW2UsRF0pfSkpKTtjYXNlIG4uT1BTLmJlZ2luVGV4dDp1PSEwO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kVGV4dDp1PSExO2JyZWFrO2Nhc2Ugbi5PUFMuZW5kSW5saW5lSW1hZ2U6dmFyIEI9ZVswXS5jYWNoZUtleTtpZihCKXtjb25zdCB0PWQuZ2V0QnlOYW1lKEIpO2lmKHQpe2kuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpLE4odCksZT1udWxsO2NvbnRpbnVlfX1yZXR1cm4gdm9pZCBwKGwuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmEsaW1hZ2U6ZVswXSxpc0lubGluZTohMCxvcGVyYXRvckxpc3Q6aSxjYWNoZUtleTpCLGxvY2FsSW1hZ2VDYWNoZTpkLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KSk7Y2FzZSBuLk9QUy5zaG93VGV4dDppZighUy5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udChTLnN0YXRlKTtjb250aW51ZX1lWzBdPWwuaGFuZGxlVGV4dChlWzBdLFMuc3RhdGUpO2JyZWFrO2Nhc2Ugbi5PUFMuc2hvd1NwYWNlZFRleHQ6aWYoIVMuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoUy5zdGF0ZSk7Y29udGludWV9dmFyIEw9W10sXz1TLnN0YXRlO2Zvcihjb25zdCB0IG9mIGVbMF0pInN0cmluZyI9PXR5cGVvZiB0P0wucHVzaCguLi5sLmhhbmRsZVRleHQodCxfKSk6Im51bWJlciI9PXR5cGVvZiB0JiZMLnB1c2godCk7ZVswXT1MLHQ9bi5PUFMuc2hvd1RleHQ7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZVNob3dUZXh0OmlmKCFTLnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KFMuc3RhdGUpO2NvbnRpbnVlfWkuYWRkT3Aobi5PUFMubmV4dExpbmUpLGVbMF09bC5oYW5kbGVUZXh0KGVbMF0sUy5zdGF0ZSksdD1uLk9QUy5zaG93VGV4dDticmVhaztjYXNlIG4uT1BTLm5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OmlmKCFTLnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KFMuc3RhdGUpO2NvbnRpbnVlfWkuYWRkT3Aobi5PUFMubmV4dExpbmUpLGkuYWRkT3Aobi5PUFMuc2V0V29yZFNwYWNpbmcsW2Uuc2hpZnQoKV0pLGkuYWRkT3Aobi5PUFMuc2V0Q2hhclNwYWNpbmcsW2Uuc2hpZnQoKV0pLGVbMF09bC5oYW5kbGVUZXh0KGVbMF0sUy5zdGF0ZSksdD1uLk9QUy5zaG93VGV4dDticmVhaztjYXNlIG4uT1BTLnNldFRleHRSZW5kZXJpbmdNb2RlOlMuc3RhdGUudGV4dFJlbmRlcmluZ01vZGU9ZVswXTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvclNwYWNlOntjb25zdCB0PXcuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxoLGYpO2lmKHQpe1Muc3RhdGUuZmlsbENvbG9yU3BhY2U9dDtjb250aW51ZX1yZXR1cm4gdm9pZCBwKGwucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KS50aGVuKChmdW5jdGlvbihlKXtlJiYoUy5zdGF0ZS5maWxsQ29sb3JTcGFjZT1lKX0pKSl9Y2FzZSBuLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlOntjb25zdCB0PXcuQ29sb3JTcGFjZS5nZXRDYWNoZWQoZVswXSxoLGYpO2lmKHQpe1Muc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfXJldHVybiB2b2lkIHAobC5wYXJzZUNvbG9yU3BhY2Uoe2NzOmVbMF0scmVzb3VyY2VzOmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pLnRoZW4oKGZ1bmN0aW9uKGUpe2UmJihTLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZSl9KSkpfWNhc2Ugbi5PUFMuc2V0RmlsbENvbG9yOk09Uy5zdGF0ZS5maWxsQ29sb3JTcGFjZSxlPU0uZ2V0UmdiKGUsMCksdD1uLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VDb2xvcjpNPVMuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSxlPU0uZ2V0UmdiKGUsMCksdD1uLk9QUy5zZXRTdHJva2VSR0JDb2xvcjticmVhaztjYXNlIG4uT1BTLnNldEZpbGxHcmF5OlMuc3RhdGUuZmlsbENvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheSxlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCksdD1uLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VHcmF5OlMuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LGU9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKSx0PW4uT1BTLnNldFN0cm9rZVJHQkNvbG9yO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbENNWUtDb2xvcjpTLnN0YXRlLmZpbGxDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWssZT13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLmdldFJnYihlLDApLHQ9bi5PUFMuc2V0RmlsbFJHQkNvbG9yO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yOlMuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT13LkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrLGU9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKSx0PW4uT1BTLnNldFN0cm9rZVJHQkNvbG9yO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOlMuc3RhdGUuZmlsbENvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLGU9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiLmdldFJnYihlLDApO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I6Uy5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYixlPXcuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZSwwKTticmVhaztjYXNlIG4uT1BTLnNldEZpbGxDb2xvck46aWYoTT1TLnN0YXRlLmZpbGxDb2xvclNwYWNlLCJQYXR0ZXJuIj09PU0ubmFtZSlyZXR1cm4gdm9pZCBwKGwuaGFuZGxlQ29sb3JOKGksbi5PUFMuc2V0RmlsbENvbG9yTixlLE0seCxhLHIsZixtLHkpKTtlPU0uZ2V0UmdiKGUsMCksdD1uLk9QUy5zZXRGaWxsUkdCQ29sb3I7YnJlYWs7Y2FzZSBuLk9QUy5zZXRTdHJva2VDb2xvck46aWYoTT1TLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UsIlBhdHRlcm4iPT09TS5uYW1lKXJldHVybiB2b2lkIHAobC5oYW5kbGVDb2xvck4oaSxuLk9QUy5zZXRTdHJva2VDb2xvck4sZSxNLHgsYSxyLGYsbSx5KSk7ZT1NLmdldFJnYihlLDApLHQ9bi5PUFMuc2V0U3Ryb2tlUkdCQ29sb3I7YnJlYWs7Y2FzZSBuLk9QUy5zaGFkaW5nRmlsbDp2YXIgaj1hLmdldCgiU2hhZGluZyIpO2lmKCFqKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJObyBzaGFkaW5nIHJlc291cmNlIGZvdW5kIik7dmFyIFU9ai5nZXQoZVswXS5uYW1lKTtpZighVSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiTm8gc2hhZGluZyBvYmplY3QgZm91bmQiKTtlPVtsLnBhcnNlU2hhZGluZyh7c2hhZGluZzpVLHJlc291cmNlczphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmYsbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOnl9KV0sdD1uLk9QUy5zaGFkaW5nRmlsbDticmVhaztjYXNlIG4uT1BTLnNldEdTdGF0ZTppZihSPWVbMF1pbnN0YW5jZW9mIHMuTmFtZSxFPWVbMF0ubmFtZSxSKXtjb25zdCB0PWcuZ2V0QnlOYW1lKEUpO2lmKHQpe3QubGVuZ3RoPjAmJmkuYWRkT3Aobi5PUFMuc2V0R1N0YXRlLFt0XSksZT1udWxsO2NvbnRpbnVlfX1yZXR1cm4gdm9pZCBwKG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCFSKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IG89YS5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEobyBpbnN0YW5jZW9mIHMuRGljdCkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGM9by5nZXQoRSk7aWYoIShjIGluc3RhbmNlb2Ygcy5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7bC5zZXRHU3RhdGUoe3Jlc291cmNlczphLGdTdGF0ZTpjLG9wZXJhdG9yTGlzdDppLGNhY2hlS2V5OkUsdGFzazpyLHN0YXRlTWFuYWdlcjpTLGxvY2FsR1N0YXRlQ2FjaGU6Zyxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSkudGhlbihlLHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBuLkFib3J0RXhjZXB0aW9uKSl7aWYoIWwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxuLndhcm4pKCdnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICInLmNvbmNhdChlLCciLicpKX19KSkpO2Nhc2Ugbi5PUFMubW92ZVRvOmNhc2Ugbi5PUFMubGluZVRvOmNhc2Ugbi5PUFMuY3VydmVUbzpjYXNlIG4uT1BTLmN1cnZlVG8yOmNhc2Ugbi5PUFMuY3VydmVUbzM6Y2FzZSBuLk9QUy5jbG9zZVBhdGg6Y2FzZSBuLk9QUy5yZWN0YW5nbGU6bC5idWlsZFBhdGgoaSx0LGUsdSk7Y29udGludWU7Y2FzZSBuLk9QUy5tYXJrUG9pbnQ6Y2FzZSBuLk9QUy5tYXJrUG9pbnRQcm9wczpjYXNlIG4uT1BTLmJlZ2luQ29tcGF0OmNhc2Ugbi5PUFMuZW5kQ29tcGF0OmNvbnRpbnVlO2Nhc2Ugbi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoIShlWzBdaW5zdGFuY2VvZiBzLk5hbWUpKXsoMCxuLndhcm4pKCJFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSIuY29uY2F0KGVbMF0pKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXJldHVybiB2b2lkIHAobC5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlWzFdLGEpLnRoZW4oKGU9PntpLmFkZE9wKG4uT1BTLmJlZ2luTWFya2VkQ29udGVudFByb3BzLFsiT0MiLGVdKX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIG4uQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLG4ud2FybikoJ2dldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJy5jb25jYXQoZSwnIi4nKSl9fSkpKTtlPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2Ygcy5EaWN0P2VbMV0uZ2V0KCJNQ0lEIik6bnVsbF07YnJlYWs7Y2FzZSBuLk9QUy5iZWdpbk1hcmtlZENvbnRlbnQ6Y2FzZSBuLk9QUy5lbmRNYXJrZWRDb250ZW50OmRlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihJPTAsVD1lLmxlbmd0aDtJPFQmJiEoZVtJXWluc3RhbmNlb2Ygcy5EaWN0KTtJKyspO2lmKEk8VCl7KDAsbi53YXJuKSgiZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3Jpbmcgb3BlcmF0b3I6ICIrdCk7Y29udGludWV9fX1pLmFkZE9wKHQsZSl9Rj9wKFApOihDKCksdCgpKX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIG4uQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLG4ud2FybikoJ2dldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIicuY29uY2F0KHIubmFtZSwnIiB0YXNrOiAiJykuY29uY2F0KGUsJyIuJykpLEMoKX19KSl9Z2V0VGV4dENvbnRlbnQoZSl7bGV0e3N0cmVhbTp0LHRhc2s6cixyZXNvdXJjZXM6YSxzdGF0ZU1hbmFnZXI6aT1udWxsLGluY2x1ZGVNYXJrZWRDb250ZW50Om89ITEsc2luazpjLHNlZW5TdHlsZXM6bD1uZXcgU2V0LHZpZXdCb3g6aCxtYXJrZWRDb250ZW50RGF0YTp1PW51bGwsZGlzYWJsZU5vcm1hbGl6YXRpb246ZD0hMX09ZTthfHwoYT1zLkRpY3QuZW1wdHkpLGl8fChpPW5ldyBfKG5ldyBqKSksbyYmKHV8fCh1PXtsZXZlbDowfSkpO2NvbnN0IGY9e2l0ZW1zOltdLHN0eWxlczpPYmplY3QuY3JlYXRlKG51bGwpfSxnPXtpbml0aWFsaXplZDohMSxzdHI6W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCx2ZXJ0aWNhbDohMSxwcmV2VHJhbnNmb3JtOm51bGwsdGV4dEFkdmFuY2VTY2FsZTowLHNwYWNlSW5GbG93TWluOjAsc3BhY2VJbkZsb3dNYXg6MCx0cmFja2luZ1NwYWNlTWluOjEvMCxuZWdhdGl2ZVNwYWNlTWF4Oi0xLzAsbm90QVNwYWNlOi0xLzAsdHJhbnNmb3JtOm51bGwsZm9udE5hbWU6bnVsbCxoYXNFT0w6ITF9LG09WyIgIiwiICJdO2xldCB3PTA7ZnVuY3Rpb24gdihlKXtjb25zdCB0PSh3KzEpJTIscj0iICIhPT1tW3ddJiYiICI9PT1tW3RdO3JldHVybiBtW3ddPWUsdz10LHJ9ZnVuY3Rpb24geCgpe3JldHVybiIgIiE9PW1bd10mJiIgIj09PW1bKHcrMSklMl19ZnVuY3Rpb24gUygpe21bMF09bVsxXT0iICIsdz0wfWNvbnN0IEE9dGhpcyxrPXRoaXMueHJlZixDPVtdO2xldCBPPW51bGw7Y29uc3QgRj1uZXcgcC5Mb2NhbEltYWdlQ2FjaGUsST1uZXcgcC5Mb2NhbEdTdGF0ZUNhY2hlLFQ9bmV3ICQodCxrLGkpO2xldCBNO2Z1bmN0aW9uIEUoZSl7bGV0e3dpZHRoOnQ9MCxoZWlnaHQ6cj0wLHRyYW5zZm9ybTpuPWcucHJldlRyYW5zZm9ybSxmb250TmFtZTphPWcuZm9udE5hbWV9PWU7Zi5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDp0LGhlaWdodDpyLHRyYW5zZm9ybTpuLGZvbnROYW1lOmEsaGFzRU9MOiExfSl9ZnVuY3Rpb24gUigpe2NvbnN0IGU9TS5mb250LHQ9W00uZm9udFNpemUqTS50ZXh0SFNjYWxlLDAsMCxNLmZvbnRTaXplLDAsTS50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKE0uZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiEoMCxuLmlzQXJyYXlFcXVhbCkoTS5mb250TWF0cml4LG4uRk9OVF9JREVOVElUWV9NQVRSSVgpKXtjb25zdCByPWUuYmJveFszXS1lLmJib3hbMV07cj4wJiYodFszXSo9cipNLmZvbnRNYXRyaXhbM10pfXJldHVybiBuLlV0aWwudHJhbnNmb3JtKE0uY3RtLG4uVXRpbC50cmFuc2Zvcm0oTS50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBOKCl7aWYoZy5pbml0aWFsaXplZClyZXR1cm4gZztjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1NO2wuaGFzKHQpfHwobC5hZGQodCksZi5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9KSxnLmZvbnROYW1lPXQ7Y29uc3Qgcj1nLnRyYW5zZm9ybT1SKCk7ZS52ZXJ0aWNhbD8oZy53aWR0aD1nLnRvdGFsV2lkdGg9TWF0aC5oeXBvdChyWzBdLHJbMV0pLGcuaGVpZ2h0PWcudG90YWxIZWlnaHQ9MCxnLnZlcnRpY2FsPSEwKTooZy53aWR0aD1nLnRvdGFsV2lkdGg9MCxnLmhlaWdodD1nLnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoclsyXSxyWzNdKSxnLnZlcnRpY2FsPSExKTtjb25zdCBuPU1hdGguaHlwb3QoTS50ZXh0TGluZU1hdHJpeFswXSxNLnRleHRMaW5lTWF0cml4WzFdKSxhPU1hdGguaHlwb3QoTS5jdG1bMF0sTS5jdG1bMV0pO2cudGV4dEFkdmFuY2VTY2FsZT1hKm47Y29uc3R7Zm9udFNpemU6aX09TTtyZXR1cm4gZy50cmFja2luZ1NwYWNlTWluPS4xMDIqaSxnLm5vdEFTcGFjZT0uMDMqaSxnLm5lZ2F0aXZlU3BhY2VNYXg9LS4yKmksZy5zcGFjZUluRmxvd01pbj0uMTAyKmksZy5zcGFjZUluRmxvd01heD0uNippLGcuaGFzRU9MPSExLGcuaW5pdGlhbGl6ZWQ9ITAsZ31mdW5jdGlvbiBCKCl7aWYoIWcuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChNLnRleHRMaW5lTWF0cml4WzBdLE0udGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChNLmN0bVswXSxNLmN0bVsxXSkqZTt0IT09Zy50ZXh0QWR2YW5jZVNjYWxlJiYoZy52ZXJ0aWNhbD8oZy50b3RhbEhlaWdodCs9Zy5oZWlnaHQqZy50ZXh0QWR2YW5jZVNjYWxlLGcuaGVpZ2h0PTApOihnLnRvdGFsV2lkdGgrPWcud2lkdGgqZy50ZXh0QWR2YW5jZVNjYWxlLGcud2lkdGg9MCksZy50ZXh0QWR2YW5jZVNjYWxlPXQpfWZ1bmN0aW9uIEwoZSx0KXtyZXR1cm4gQS5sb2FkRm9udChlLHQsYSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm9udC5pc1R5cGUzRm9udD9lLmxvYWRUeXBlM0RhdGEoQSxhLHIpLmNhdGNoKChmdW5jdGlvbigpe30pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlfSkpOmV9KSkudGhlbigoZnVuY3Rpb24oZSl7TS5sb2FkZWROYW1lPWUubG9hZGVkTmFtZSxNLmZvbnQ9ZS5mb250LE0uZm9udE1hdHJpeD1lLmZvbnQuZm9udE1hdHJpeHx8bi5GT05UX0lERU5USVRZX01BVFJJWH0pKX1mdW5jdGlvbiBVKGUsdCxyKXtjb25zdCBuPU1hdGguaHlwb3QoclswXSxyWzFdKTtyZXR1cm5bKHJbMF0qZStyWzFdKnQpL24sKHJbMl0qZStyWzNdKnQpL25dfWZ1bmN0aW9uIFgoZSl7dmFyIHQ7Y29uc3Qgcj1SKCk7bGV0IG49cls0XSxhPXJbNV07aWYobnVsbCE9PSh0PU0uZm9udCkmJnZvaWQgMCE9PXQmJnQudmVydGljYWwpe2lmKG48aFswXXx8bj5oWzJdfHxhK2U8aFsxXXx8YT5oWzNdKXJldHVybiExfWVsc2UgaWYobitlPGhbMF18fG4+aFsyXXx8YTxoWzFdfHxhPmhbM10pcmV0dXJuITE7aWYoIU0uZm9udHx8IWcucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgaT1nLnByZXZUcmFuc2Zvcm1bNF0scz1nLnByZXZUcmFuc2Zvcm1bNV07aWYoaT09PW4mJnM9PT1hKXJldHVybiEwO2xldCBvPS0xO3N3aXRjaChyWzBdJiYwPT09clsxXSYmMD09PXJbMl0/bz1yWzBdPjA/MDoxODA6clsxXSYmMD09PXJbMF0mJjA9PT1yWzNdJiYobz1yWzFdPjA/OTA6MjcwKSxvKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbbixhXT1bYSxuXSxbaSxzXT1bcyxpXTticmVhaztjYXNlIDE4MDpbbixhLGksc109Wy1uLC1hLC1pLC1zXTticmVhaztjYXNlIDI3MDpbbixhXT1bLWEsLW5dLFtpLHNdPVstcywtaV07YnJlYWs7ZGVmYXVsdDpbbixhXT1VKG4sYSxyKSxbaSxzXT1VKGkscyxnLnByZXZUcmFuc2Zvcm0pfWlmKE0uZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS9nLnRleHRBZHZhbmNlU2NhbGUsdD1uLWkscj1NYXRoLnNpZ24oZy5oZWlnaHQpO3JldHVybiBlPHIqZy5uZWdhdGl2ZVNwYWNlTWF4P01hdGguYWJzKHQpPi41Kmcud2lkdGg/KHEoKSwhMCk6KFMoKSxHKCksITApOk1hdGguYWJzKHQpPmcud2lkdGg/KHEoKSwhMCk6KGU8PXIqZy5ub3RBU3BhY2UmJlMoKSxlPD1yKmcudHJhY2tpbmdTcGFjZU1pbj94KCk/KFMoKSxHKCksRSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSkpOmcuaGVpZ2h0Kz1lOnooZSxnLnByZXZUcmFuc2Zvcm0scil8fCgwPT09Zy5zdHIubGVuZ3RoPyhTKCksRSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSkpOmcuaGVpZ2h0Kz1lKSxNYXRoLmFicyh0KT4uMjUqZy53aWR0aCYmRygpLCEwKX1jb25zdCBjPShuLWkpL2cudGV4dEFkdmFuY2VTY2FsZSxsPWEtcyx1PU1hdGguc2lnbihnLndpZHRoKTtyZXR1cm4gYzx1KmcubmVnYXRpdmVTcGFjZU1heD9NYXRoLmFicyhsKT4uNSpnLmhlaWdodD8ocSgpLCEwKTooUygpLEcoKSwhMCk6TWF0aC5hYnMobCk+Zy5oZWlnaHQ/KHEoKSwhMCk6KGM8PXUqZy5ub3RBU3BhY2UmJlMoKSxjPD11KmcudHJhY2tpbmdTcGFjZU1pbj94KCk/KFMoKSxHKCksRSh7d2lkdGg6TWF0aC5hYnMoYyl9KSk6Zy53aWR0aCs9Yzp6KGMsZy5wcmV2VHJhbnNmb3JtLHUpfHwoMD09PWcuc3RyLmxlbmd0aD8oUygpLEUoe3dpZHRoOk1hdGguYWJzKGMpfSkpOmcud2lkdGgrPWMpLE1hdGguYWJzKGwpPi4yNSpnLmhlaWdodCYmRygpLCEwKX1mdW5jdGlvbiBIKGUpe2xldHtjaGFyczp0LGV4dHJhU3BhY2luZzpyfT1lO2NvbnN0IG49TS5mb250O2lmKCF0KXtjb25zdCBlPU0uY2hhclNwYWNpbmcrcjtyZXR1cm4gdm9pZChlJiYobi52ZXJ0aWNhbD9NLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6TS50cmFuc2xhdGVUZXh0TWF0cml4KGUqTS50ZXh0SFNjYWxlLDApKSl9Y29uc3QgYT1uLmNoYXJzVG9HbHlwaHModCksaT1NLmZvbnRNYXRyaXhbMF0qTS5mb250U2l6ZTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHM9YVtlXSx7Y2F0ZWdvcnk6b309cztpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgYz1NLmNoYXJTcGFjaW5nKyhlKzE9PT10P3I6MCksbD1zLndpZHRoO24udmVydGljYWwmJihsPXMudm1ldHJpYz9zLnZtZXRyaWNbMF06LWwpO2xldCBoPWwqaTtpZihvLmlzV2hpdGVzcGFjZSl7bi52ZXJ0aWNhbD8oYys9LWgrTS53b3JkU3BhY2luZyxNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYykpOihjKz1oK00ud29yZFNwYWNpbmcsTS50cmFuc2xhdGVUZXh0TWF0cml4KGMqTS50ZXh0SFNjYWxlLDApKSx2KCIgIik7Y29udGludWV9aWYoIW8uaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFYKGgpKXtuLnZlcnRpY2FsP00udHJhbnNsYXRlVGV4dE1hdHJpeCgwLGgpOk0udHJhbnNsYXRlVGV4dE1hdHJpeChoKk0udGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCB1PU4oKTtvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYoaD0wKSxuLnZlcnRpY2FsPyhNLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxoKSxoPU1hdGguYWJzKGgpLHUuaGVpZ2h0Kz1oKTooaCo9TS50ZXh0SFNjYWxlLE0udHJhbnNsYXRlVGV4dE1hdHJpeChoLDApLHUud2lkdGgrPWgpLGgmJih1LnByZXZUcmFuc2Zvcm09UigpKTtjb25zdCBkPXMudW5pY29kZTt2KGQpJiZ1LnN0ci5wdXNoKCIgIiksdS5zdHIucHVzaChkKSxjJiYobi52ZXJ0aWNhbD9NLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6TS50cmFuc2xhdGVUZXh0TWF0cml4KGMqTS50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gcSgpe1MoKSxnLmluaXRpYWxpemVkPyhnLmhhc0VPTD0hMCxHKCkpOmYuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpSKCksZm9udE5hbWU6TS5sb2FkZWROYW1lLGhhc0VPTDohMH0pfWZ1bmN0aW9uIHooZSx0LHIpe2lmKHIqZy5zcGFjZUluRmxvd01pbjw9ZSYmZTw9cipnLnNwYWNlSW5GbG93TWF4KXJldHVybiBnLmluaXRpYWxpemVkJiYoUygpLGcuc3RyLnB1c2goIiAiKSksITE7Y29uc3Qgbj1nLmZvbnROYW1lO2xldCBhPTA7cmV0dXJuIGcudmVydGljYWwmJihhPWUsZT0wKSxHKCksUygpLEUoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhhKSx0cmFuc2Zvcm06dHx8UigpLGZvbnROYW1lOm59KSwhMH1mdW5jdGlvbiBHKCl7Zy5pbml0aWFsaXplZCYmZy5zdHImJihnLnZlcnRpY2FsP2cudG90YWxIZWlnaHQrPWcuaGVpZ2h0KmcudGV4dEFkdmFuY2VTY2FsZTpnLnRvdGFsV2lkdGgrPWcud2lkdGgqZy50ZXh0QWR2YW5jZVNjYWxlLGYuaXRlbXMucHVzaChmdW5jdGlvbihlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTtkfHwodD0oMCxuLm5vcm1hbGl6ZVVuaWNvZGUpKHQpKTtjb25zdCByPSgwLHkuYmlkaSkodCwtMSxlLnZlcnRpY2FsKTtyZXR1cm57c3RyOnIuc3RyLGRpcjpyLmRpcix3aWR0aDpNYXRoLmFicyhlLnRvdGFsV2lkdGgpLGhlaWdodDpNYXRoLmFicyhlLnRvdGFsSGVpZ2h0KSx0cmFuc2Zvcm06ZS50cmFuc2Zvcm0sZm9udE5hbWU6ZS5mb250TmFtZSxoYXNFT0w6ZS5oYXNFT0x9fShnKSksZy5pbml0aWFsaXplZD0hMSxnLnN0ci5sZW5ndGg9MCl9ZnVuY3Rpb24gVygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Y29uc3QgdD1mLml0ZW1zLmxlbmd0aDswPT09dHx8ZSYmdDwxMHx8KGMuZW5xdWV1ZShmLHQpLGYuaXRlbXM9W10sZi5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKSl9Y29uc3QgVj1uZXcgRDtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uIGUodCxnKXtjb25zdCBwPWZ1bmN0aW9uKHIpe1coITApLFByb21pc2UuYWxsKFtyLGMucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtlKHQsZyl9Y2F0Y2goZSl7ZyhlKX19KSxnKX07ci5lbnN1cmVOb3RUZXJtaW5hdGVkKCksVi5yZXNldCgpO2NvbnN0IG09e307bGV0IHksdz1bXTtmb3IoOyEoeT1WLmNoZWNrKCkpJiYody5sZW5ndGg9MCxtLmFyZ3M9dyxULnJlYWQobSkpOyl7Y29uc3QgZT1NO009aS5zdGF0ZTtjb25zdCB0PW0uZm47c3dpdGNoKHc9bS5hcmdzLDB8dCl7Y2FzZSBuLk9QUy5zZXRGb250OnZhciB2PXdbMF0ubmFtZSx4PXdbMV07aWYoTS5mb250JiZ2PT09TS5mb250TmFtZSYmeD09PU0uZm9udFNpemUpYnJlYWs7cmV0dXJuIEcoKSxNLmZvbnROYW1lPXYsTS5mb250U2l6ZT14LHZvaWQgcChMKHYsbnVsbCkpO2Nhc2Ugbi5PUFMuc2V0VGV4dFJpc2U6TS50ZXh0UmlzZT13WzBdO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0SFNjYWxlOk0udGV4dEhTY2FsZT13WzBdLzEwMDticmVhaztjYXNlIG4uT1BTLnNldExlYWRpbmc6TS5sZWFkaW5nPXdbMF07YnJlYWs7Y2FzZSBuLk9QUy5tb3ZlVGV4dDpNLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KHdbMF0sd1sxXSksTS50ZXh0TWF0cml4PU0udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIG4uT1BTLnNldExlYWRpbmdNb3ZlVGV4dDpNLmxlYWRpbmc9LXdbMV0sTS50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCh3WzBdLHdbMV0pLE0udGV4dE1hdHJpeD1NLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZTpNLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBuLk9QUy5zZXRUZXh0TWF0cml4Ok0uc2V0VGV4dE1hdHJpeCh3WzBdLHdbMV0sd1syXSx3WzNdLHdbNF0sd1s1XSksTS5zZXRUZXh0TGluZU1hdHJpeCh3WzBdLHdbMV0sd1syXSx3WzNdLHdbNF0sd1s1XSksQigpO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0Q2hhclNwYWNpbmc6TS5jaGFyU3BhY2luZz13WzBdO2JyZWFrO2Nhc2Ugbi5PUFMuc2V0V29yZFNwYWNpbmc6TS53b3JkU3BhY2luZz13WzBdO2JyZWFrO2Nhc2Ugbi5PUFMuYmVnaW5UZXh0Ok0udGV4dE1hdHJpeD1uLklERU5USVRZX01BVFJJWC5zbGljZSgpLE0udGV4dExpbmVNYXRyaXg9bi5JREVOVElUWV9NQVRSSVguc2xpY2UoKTticmVhaztjYXNlIG4uT1BTLnNob3dTcGFjZWRUZXh0OmlmKCFpLnN0YXRlLmZvbnQpe0EuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IHQ9KE0uZm9udC52ZXJ0aWNhbD8xOi0xKSpNLmZvbnRTaXplLzFlMyxnPXdbMF07Zm9yKGxldCBlPTAscj1nLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWdbZV07aWYoInN0cmluZyI9PXR5cGVvZiByKUMucHVzaChyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgciYmMCE9PXIpe2NvbnN0IGU9Qy5qb2luKCIiKTtDLmxlbmd0aD0wLEgoe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnIqdH0pfX1pZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MCxIKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSBuLk9QUy5zaG93VGV4dDppZighaS5zdGF0ZS5mb250KXtBLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1IKHtjaGFyczp3WzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZVNob3dUZXh0OmlmKCFpLnN0YXRlLmZvbnQpe0EuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2NvbnRpbnVlfU0uY2FycmlhZ2VSZXR1cm4oKSxIKHtjaGFyczp3WzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBuLk9QUy5uZXh0TGluZVNldFNwYWNpbmdTaG93VGV4dDppZighaS5zdGF0ZS5mb250KXtBLmVuc3VyZVN0YXRlRm9udChpLnN0YXRlKTtjb250aW51ZX1NLndvcmRTcGFjaW5nPXdbMF0sTS5jaGFyU3BhY2luZz13WzFdLE0uY2FycmlhZ2VSZXR1cm4oKSxIKHtjaGFyczp3WzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBuLk9QUy5wYWludFhPYmplY3Q6RygpLE98fChPPWEuZ2V0KCJYT2JqZWN0Iil8fHMuRGljdC5lbXB0eSk7dmFyIFM9d1swXWluc3RhbmNlb2Ygcy5OYW1lLEU9d1swXS5uYW1lO2lmKFMmJkYuZ2V0QnlOYW1lKEUpKWJyZWFrO3JldHVybiB2b2lkIHAobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBmPU8uZ2V0UmF3KEUpO2lmKGYgaW5zdGFuY2VvZiBzLlJlZil7aWYoRi5nZXRCeVJlZihmKSlyZXR1cm4gdm9pZCBlKCk7aWYoQS5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEoZixBLnBhZ2VJbmRleCkpcmV0dXJuIHZvaWQgZSgpO2Y9ay5mZXRjaChmKX1pZighKGYgaW5zdGFuY2VvZiBiLkJhc2VTdHJlYW0pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGc9Zi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoZyBpbnN0YW5jZW9mIHMuTmFtZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1nLm5hbWUpcmV0dXJuIEYuc2V0KEUsZi5kaWN0Lm9iaklkLCEwKSx2b2lkIGUoKTtjb25zdCBwPWkuc3RhdGUuY2xvbmUoKSxtPW5ldyBfKHApLHk9Zi5kaWN0LmdldEFycmF5KCJNYXRyaXgiKTtBcnJheS5pc0FycmF5KHkpJiY2PT09eS5sZW5ndGgmJm0udHJhbnNmb3JtKHkpLFcoKTtjb25zdCB3PXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMCxjLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGMuZGVzaXJlZFNpemV9LGdldCByZWFkeSgpe3JldHVybiBjLnJlYWR5fX07QS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazpyLHJlc291cmNlczpmLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8YSxzdGF0ZU1hbmFnZXI6bSxpbmNsdWRlTWFya2VkQ29udGVudDpvLHNpbms6dyxzZWVuU3R5bGVzOmwsdmlld0JveDpoLG1hcmtlZENvbnRlbnREYXRhOnUsZGlzYWJsZU5vcm1hbGl6YXRpb246ZH0pLnRoZW4oKGZ1bmN0aW9uKCl7dy5lbnF1ZXVlSW52b2tlZHx8Ri5zZXQoRSxmLmRpY3Qub2JqSWQsITApLGUoKX0pLHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBuLkFib3J0RXhjZXB0aW9uKSl7aWYoIUEub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTsoMCxuLndhcm4pKCdnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIFhPYmplY3Q6ICInLmNvbmNhdChlLCciLicpKX19KSkpO2Nhc2Ugbi5PUFMuc2V0R1N0YXRlOmlmKFM9d1swXWluc3RhbmNlb2Ygcy5OYW1lLEU9d1swXS5uYW1lLFMmJkkuZ2V0QnlOYW1lKEUpKWJyZWFrO3JldHVybiB2b2lkIHAobmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7aWYoIVMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgcj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShyIGluc3RhbmNlb2Ygcy5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1yLmdldChFKTtpZighKGkgaW5zdGFuY2VvZiBzLkRpY3QpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBvPWkuZ2V0KCJGb250Iik7bz8oRygpLE0uZm9udE5hbWU9bnVsbCxNLmZvbnRTaXplPW9bMV0sTChudWxsLG9bMF0pLnRoZW4oZSx0KSk6KEkuc2V0KEUsaS5vYmpJZCwhMCksZSgpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2Ygbi5BYm9ydEV4Y2VwdGlvbikpe2lmKCFBLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsbi53YXJuKSgnZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICInLmNvbmNhdChlLCciLicpKX19KSkpO2Nhc2Ugbi5PUFMuYmVnaW5NYXJrZWRDb250ZW50OkcoKSxvJiYodS5sZXZlbCsrLGYuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50Iix0YWc6d1swXWluc3RhbmNlb2Ygcy5OYW1lP3dbMF0ubmFtZTpudWxsfSkpO2JyZWFrO2Nhc2Ugbi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6aWYoRygpLG8pe3UubGV2ZWwrKztsZXQgZT1udWxsO3dbMV1pbnN0YW5jZW9mIHMuRGljdCYmKGU9d1sxXS5nZXQoIk1DSUQiKSksZi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT8iIi5jb25jYXQoQS5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCksIl9tYyIpLmNvbmNhdChlKTpudWxsLHRhZzp3WzBdaW5zdGFuY2VvZiBzLk5hbWU/d1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIG4uT1BTLmVuZE1hcmtlZENvbnRlbnQ6aWYoRygpLG8pe2lmKDA9PT11LmxldmVsKWJyZWFrO3UubGV2ZWwtLSxmLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSBuLk9QUy5yZXN0b3JlOiFlfHxlLmZvbnQ9PT1NLmZvbnQmJmUuZm9udFNpemU9PT1NLmZvbnRTaXplJiZlLmZvbnROYW1lPT09TS5mb250TmFtZXx8RygpfWlmKGYuaXRlbXMubGVuZ3RoPj1jLmRlc2lyZWRTaXplKXt5PSEwO2JyZWFrfX15P3AoUCk6KEcoKSxXKCksdCgpKX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIG4uQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLG4ud2FybikoJ2dldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJy5jb25jYXQoci5uYW1lLCciIHRhc2s6ICInKS5jb25jYXQoZSwnIi4nKSksRygpLFcoKX19KSl9ZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCxyKXtjb25zdCBhPXRoaXMueHJlZjtsZXQgaTtjb25zdCBvPXRoaXMucmVhZFRvVW5pY29kZShyLnRvVW5pY29kZXx8ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIikpO2lmKHIuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7dCBpbnN0YW5jZW9mIHMuRGljdCYmKHIuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6KDAsbi5zdHJpbmdUb1BERlN0cmluZykodC5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOigwLG4uc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OnQuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgYi5CYXNlU3RyZWFtJiYoaT10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7KDAsbi53YXJuKSgnZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIicuY29uY2F0KGUsJyIuJykpfX1jb25zdCBoPVtdO2xldCB1LGQ9bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7aWYodT1lLmdldCgiRW5jb2RpbmciKSx1IGluc3RhbmNlb2Ygcy5EaWN0KXtpZihkPXUuZ2V0KCJCYXNlRW5jb2RpbmciKSxkPWQgaW5zdGFuY2VvZiBzLk5hbWU/ZC5uYW1lOm51bGwsdS5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9dS5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPWEuZmV0Y2hJZlJlZihyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2Ygcy5OYW1lKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAiLmNvbmNhdChlKSk7aFt0KytdPWUubmFtZX19fX1lbHNlIGlmKHUgaW5zdGFuY2VvZiBzLk5hbWUpZD11Lm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKGUpOygwLG4ud2FybikoZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09ZCYmIk1hY0V4cGVydEVuY29kaW5nIiE9PWQmJiJXaW5BbnNpRW5jb2RpbmciIT09ZCYmKGQ9bnVsbCl9Y29uc3QgZj0hci5maWxlfHxyLmlzSW50ZXJuYWxGb250LGc9KDAsbC5nZXRTeW1ib2xzRm9udHMpKClbci5uYW1lXTtpZihkJiZmJiZnJiYoZD1udWxsKSxkKXIuZGVmYXVsdEVuY29kaW5nPSgwLGMuZ2V0RW5jb2RpbmcpKGQpO2Vsc2V7Y29uc3QgZT0hIShyLmZsYWdzJnguRm9udEZsYWdzLlN5bWJvbGljKSx0PSEhKHIuZmxhZ3MmeC5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO3U9Yy5TdGFuZGFyZEVuY29kaW5nLCJUcnVlVHlwZSIhPT1yLnR5cGV8fHR8fCh1PWMuV2luQW5zaUVuY29kaW5nKSwoZXx8ZykmJih1PWMuTWFjUm9tYW5FbmNvZGluZyxmJiYoL1N5bWJvbC9pLnRlc3Qoci5uYW1lKT91PWMuU3ltYm9sU2V0RW5jb2Rpbmc6L0RpbmdiYXRzL2kudGVzdChyLm5hbWUpP3U9Yy5aYXBmRGluZ2JhdHNFbmNvZGluZzovV2luZ2RpbmdzL2kudGVzdChyLm5hbWUpJiYodT1jLldpbkFuc2lFbmNvZGluZykpKSxyLmRlZmF1bHRFbmNvZGluZz11fXJldHVybiByLmRpZmZlcmVuY2VzPWgsci5iYXNlRW5jb2RpbmdOYW1lPWQsci5oYXNFbmNvZGluZz0hIWR8fGgubGVuZ3RoPjAsci5kaWN0PWUsby50aGVuKChlPT4oci50b1VuaWNvZGU9ZSx0aGlzLmJ1aWxkVG9Vbmljb2RlKHIpKSkpLnRoZW4oKGU9PihyLnRvVW5pY29kZT1lLGkmJihyLmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKGksZSkpLHIpKSl9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTsoMCxuLmFzc2VydCkoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3Qgcj1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCksaT1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBvPSgwLEEuZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgbiBpbiBhKXtsZXQgcz1hW25dO2lmKCIiPT09cyljb250aW51ZTtsZXQgbD1vW3NdO2lmKHZvaWQgMCE9PWwpe3Jbbl09U3RyaW5nLmZyb21DaGFyQ29kZShsKTtjb250aW51ZX1sZXQgaD0wO3N3aXRjaChzWzBdKXtjYXNlIkciOjM9PT1zLmxlbmd0aCYmKGg9cGFyc2VJbnQocy5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlImciOjU9PT1zLmxlbmd0aCYmKGg9cGFyc2VJbnQocy5zdWJzdHJpbmcoMSksMTYpKTticmVhaztjYXNlIkMiOmNhc2UiYyI6aWYocy5sZW5ndGg+PTMmJnMubGVuZ3RoPD00KXtjb25zdCByPXMuc3Vic3RyaW5nKDEpO2lmKHQpe2g9cGFyc2VJbnQociwxNik7YnJlYWt9aWYoaD0rcixOdW1iZXIuaXNOYU4oaCkmJk51bWJlci5pc0ludGVnZXIocGFyc2VJbnQociwxNikpKXJldHVybiB0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUsITApfWJyZWFrO2Nhc2UidSI6bD0oMCxPLmdldFVuaWNvZGVGb3JHbHlwaCkocyxvKSwtMSE9PWwmJihoPWwpO2JyZWFrO2RlZmF1bHQ6c3dpdGNoKHMpe2Nhc2UiZl9oIjpjYXNlImZfdCI6Y2FzZSJUX2giOnJbbl09cy5yZXBsYWNlQWxsKCJfIiwiIik7Y29udGludWV9fWlmKGg+MCYmaDw9MTExNDExMSYmTnVtYmVyLmlzSW50ZWdlcihoKSl7aWYoaSYmaD09PStuKXtjb25zdCBlPSgwLGMuZ2V0RW5jb2RpbmcpKGkpO2lmKGUmJihzPWVbbl0pKXtyW25dPVN0cmluZy5mcm9tQ2hhckNvZGUob1tzXSk7Y29udGludWV9fXJbbl09U3RyaW5nLmZyb21Db2RlUG9pbnQoaCl9fXJldHVybiByfWFzeW5jIGJ1aWxkVG9Vbmljb2RlKGUpe3ZhciB0O2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXA9KG51bGw9PT0odD1lLnRvVW5pY29kZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQubGVuZ3RoKT4wLGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApcmV0dXJuIWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKSxlLnRvVW5pY29kZTtpZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBkLlRvVW5pY29kZU1hcCh0aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtpZihlLmNvbXBvc2l0ZSYmKGUuY01hcC5idWlsdEluQ01hcCYmIShlLmNNYXAgaW5zdGFuY2VvZiBhLklkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzpyfT1lLmNpZFN5c3RlbUluZm8saT1zLk5hbWUuZ2V0KCIiLmNvbmNhdCh0LCItIikuY29uY2F0KHIsIi1VQ1MyIikpLG89YXdhaXQgYS5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmksZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksYz1bXSxsPVtdO3JldHVybiBlLmNNYXAuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3Qgcj1vLmxvb2t1cCh0KTtpZihyKXtsLmxlbmd0aD0wO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrPTIpbC5wdXNoKChyLmNoYXJDb2RlQXQoZSk8PDgpK3IuY2hhckNvZGVBdChlKzEpKTtjW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubCl9fSkpLG5ldyBkLlRvVW5pY29kZU1hcChjKX1yZXR1cm4gbmV3IGQuSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9cmVhZFRvVW5pY29kZShlKXtyZXR1cm4gZT9lIGluc3RhbmNlb2Ygcy5OYW1lP2EuQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgYS5JZGVudGl0eUNNYXA/bmV3IGQuSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk6bmV3IGQuVG9Vbmljb2RlTWFwKGUuZ2V0TWFwKCkpfSkpOmUgaW5zdGFuY2VvZiBiLkJhc2VTdHJlYW0/YS5DTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkudGhlbigoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGEuSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgZC5JZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCB0PW5ldyBBcnJheShlLmxlbmd0aCk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtpZigibnVtYmVyIj09dHlwZW9mIHIpcmV0dXJuIHZvaWQodFtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChyKSk7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrPTIpe2NvbnN0IHQ9ci5jaGFyQ29kZUF0KGUpPDw4fHIuY2hhckNvZGVBdChlKzEpO2lmKDU1Mjk2IT0oNjM0ODgmdCkpe24ucHVzaCh0KTtjb250aW51ZX1lKz0yO2NvbnN0IGE9ci5jaGFyQ29kZUF0KGUpPDw4fHIuY2hhckNvZGVBdChlKzEpO24ucHVzaCgoKDEwMjMmdCk8PDEwKSsoMTAyMyZhKSs2NTUzNil9dFtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCguLi5uKX0pKSxuZXcgZC5Ub1VuaWNvZGVNYXAodCl9KSwoZT0+e2lmKGUgaW5zdGFuY2VvZiBuLkFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpcmV0dXJuKDAsbi53YXJuKSgncmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJy5jb25jYXQoZSwnIi4nKSksbnVsbDt0aHJvdyBlfSkpOlByb21pc2UucmVzb2x2ZShudWxsKTpQcm9taXNlLnJlc29sdmUobnVsbCl9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3Qgcj1bXTtmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9ZVtuKytdPDw4fGVbbl0saT1uPj4xOygwIT09YXx8dC5oYXMoaSkpJiYocltpXT1hKX1yZXR1cm4gcn1leHRyYWN0V2lkdGhzKGUsdCxyKXtjb25zdCBuPXRoaXMueHJlZjtsZXQgYT1bXSxpPTA7Y29uc3Qgbz1bXTtsZXQgYyxsLGgsdSxkLGYsZyxwO2lmKHIuY29tcG9zaXRlKXtpZihpPWUuaGFzKCJEVyIpP2UuZ2V0KCJEVyIpOjFlMyxwPWUuZ2V0KCJXIikscClmb3IobD0wLGg9cC5sZW5ndGg7bDxoO2wrKylpZihmPW4uZmV0Y2hJZlJlZihwW2wrK10pLGc9bi5mZXRjaElmUmVmKHBbbF0pLEFycmF5LmlzQXJyYXkoZykpZm9yKHU9MCxkPWcubGVuZ3RoO3U8ZDt1KyspYVtmKytdPW4uZmV0Y2hJZlJlZihnW3VdKTtlbHNle2NvbnN0IGU9bi5mZXRjaElmUmVmKHBbKytsXSk7Zm9yKHU9Zjt1PD1nO3UrKylhW3VdPWV9aWYoci52ZXJ0aWNhbCl7bGV0IHQ9ZS5nZXRBcnJheSgiRFcyIil8fFs4ODAsLTFlM107aWYoYz1bdFsxXSwuNSppLHRbMF1dLHQ9ZS5nZXQoIlcyIiksdClmb3IobD0wLGg9dC5sZW5ndGg7bDxoO2wrKylpZihmPW4uZmV0Y2hJZlJlZih0W2wrK10pLGc9bi5mZXRjaElmUmVmKHRbbF0pLEFycmF5LmlzQXJyYXkoZykpZm9yKHU9MCxkPWcubGVuZ3RoO3U8ZDt1Kyspb1tmKytdPVtuLmZldGNoSWZSZWYoZ1t1KytdKSxuLmZldGNoSWZSZWYoZ1t1KytdKSxuLmZldGNoSWZSZWYoZ1t1XSldO2Vsc2V7Y29uc3QgZT1bbi5mZXRjaElmUmVmKHRbKytsXSksbi5mZXRjaElmUmVmKHRbKytsXSksbi5mZXRjaElmUmVmKHRbKytsXSldO2Zvcih1PWY7dTw9Zzt1Kyspb1t1XT1lfX19ZWxzZXtjb25zdCBvPXIuZmlyc3RDaGFyO2lmKHA9ZS5nZXQoIldpZHRocyIpLHApe2Zvcih1PW8sbD0wLGg9cC5sZW5ndGg7bDxoO2wrKylhW3UrK109bi5mZXRjaElmUmVmKHBbbF0pO2k9cGFyc2VGbG9hdCh0LmdldCgiTWlzc2luZ1dpZHRoIikpfHwwfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2Ygcy5OYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7YT10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLHIpLGk9ZS5kZWZhdWx0V2lkdGh9fX1sZXQgbT0hMCxiPWk7Zm9yKGNvbnN0IGUgaW4gYSl7Y29uc3QgdD1hW2VdO2lmKHQpaWYoYil7aWYoYiE9PXQpe209ITE7YnJlYWt9fWVsc2UgYj10fW0/ci5mbGFnc3w9eC5Gb250RmxhZ3MuRml4ZWRQaXRjaDpyLmZsYWdzJj1+eC5Gb250RmxhZ3MuRml4ZWRQaXRjaCxyLmRlZmF1bHRXaWR0aD1pLHIud2lkdGhzPWEsci5kZWZhdWx0Vk1ldHJpY3M9YyxyLnZtZXRyaWNzPW99aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIilbMF07cmV0dXJuIHQgaW4oMCxsLmdldFNlcmlmRm9udHMpKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPSExLGE9KDAsbC5nZXRTdGRGb250TWFwKSgpW2VdfHxlO2NvbnN0IGk9KDAsQy5nZXRNZXRyaWNzKSgpO2EgaW4gaXx8KGE9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBzPWlbYV07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBzPyh0PXMsbj0hMCk6cj1zKCkse2RlZmF1bHRXaWR0aDp0LG1vbm9zcGFjZTpuLHdpZHRoczpyfX1idWlsZENoYXJDb2RlVG9XaWR0aChlLHQpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuPXQuZGlmZmVyZW5jZXMsYT10LmRlZmF1bHRFbmNvZGluZztmb3IobGV0IHQ9MDt0PDI1Njt0KyspdCBpbiBuJiZlW25bdF1dP3JbdF09ZVtuW3RdXTp0IGluIGEmJmVbYVt0XV0mJihyW3RdPWVbYVt0XV0pO3JldHVybiByfXByZUV2YWx1YXRlRm9udChlKXtjb25zdCB0PWU7bGV0IHI9ZS5nZXQoIlN1YnR5cGUiKTtpZighKHIgaW5zdGFuY2VvZiBzLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLGksbz0hMTtpZigiVHlwZTAiPT09ci5uYW1lKXtjb25zdCB0PWUuZ2V0KCJEZXNjZW5kYW50Rm9udHMiKTtpZighdCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250cyBhcmUgbm90IHNwZWNpZmllZCIpO2lmKCEoKGU9QXJyYXkuaXNBcnJheSh0KT90aGlzLnhyZWYuZmV0Y2hJZlJlZih0WzBdKTp0KWluc3RhbmNlb2Ygcy5EaWN0KSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYocj1lLmdldCgiU3VidHlwZSIpLCEociBpbnN0YW5jZW9mIHMuTmFtZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7bz0hMH1jb25zdCBjPWUuZ2V0KCJGaXJzdENoYXIiKXx8MCxsPWUuZ2V0KCJMYXN0Q2hhciIpfHwobz82NTUzNToyNTUpLGg9ZS5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoaCl7YT1uZXcgSS5NdXJtdXJIYXNoM182NDtjb25zdCByPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKHIgaW5zdGFuY2VvZiBzLk5hbWUpYS51cGRhdGUoci5uYW1lKTtlbHNlIGlmKHIgaW5zdGFuY2VvZiBzLlJlZilhLnVwZGF0ZShyLnRvU3RyaW5nKCkpO2Vsc2UgaWYociBpbnN0YW5jZW9mIHMuRGljdClmb3IoY29uc3QgZSBvZiByLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBzLk5hbWUpYS51cGRhdGUoZS5uYW1lKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBzLlJlZilhLnVwZGF0ZShlLnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLmxlbmd0aCxyPW5ldyBBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCB0PWVbbl07dCBpbnN0YW5jZW9mIHMuTmFtZT9yW25dPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2Ygcy5SZWYpJiYocltuXT10LnRvU3RyaW5nKCkpfWEudXBkYXRlKHIuam9pbigpKX1pZihhLnVwZGF0ZSgiIi5jb25jYXQoYywiLSIpLmNvbmNhdChsKSksaT1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKSxpIGluc3RhbmNlb2YgYi5CYXNlU3RyZWFtKXtjb25zdCBlPWkuc3RyfHxpLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBpIGluc3RhbmNlb2Ygcy5OYW1lJiZhLnVwZGF0ZShpLm5hbWUpO2NvbnN0IG49ZS5nZXQoIldpZHRocyIpfHx0LmdldCgiV2lkdGhzIik7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBuKSgibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBzLlJlZikmJmUucHVzaCh0LnRvU3RyaW5nKCkpO2EudXBkYXRlKGUuam9pbigpKX1pZihvKXthLnVwZGF0ZSgiY29tcG9zaXRlRm9udCIpO2NvbnN0IHI9ZS5nZXQoIlciKXx8dC5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpaWYoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2Ygcy5SZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCByPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIHMuUmVmKSYmci5wdXNoKGUudG9TdHJpbmcoKSk7ZS5wdXNoKCJbIi5jb25jYXQoci5qb2luKCksIl0iKSl9YS51cGRhdGUoZS5qb2luKCkpfWNvbnN0IG49ZS5nZXRSYXcoIkNJRFRvR0lETWFwIil8fHQuZ2V0UmF3KCJDSURUb0dJRE1hcCIpO24gaW5zdGFuY2VvZiBzLk5hbWU/YS51cGRhdGUobi5uYW1lKTpuIGluc3RhbmNlb2Ygcy5SZWY/YS51cGRhdGUobi50b1N0cmluZygpKTpuIGluc3RhbmNlb2YgYi5CYXNlU3RyZWFtJiZhLnVwZGF0ZShuLnBlZWtCeXRlcygpKX19cmV0dXJue2Rlc2NyaXB0b3I6aCxkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6byx0eXBlOnIubmFtZSxmaXJzdENoYXI6YyxsYXN0Q2hhcjpsLHRvVW5pY29kZTppLGhhc2g6YT9hLmhleGRpZ2VzdCgpOiIifX1hc3luYyB0cmFuc2xhdGVGb250KGUpe3ZhciB0LHI7bGV0e2Rlc2NyaXB0b3I6aSxkaWN0OmMsYmFzZURpY3Q6aCxjb21wb3NpdGU6ZCx0eXBlOmYsZmlyc3RDaGFyOmcsbGFzdENoYXI6cCx0b1VuaWNvZGU6Yixjc3NGb250SW5mbzp5fT1lO2NvbnN0IHc9IlR5cGUzIj09PWY7bGV0IHY7aWYoIWkpe2lmKCF3KXtsZXQgZT1jLmdldCgiQmFzZUZvbnQiKTtpZighKGUgaW5zdGFuY2VvZiBzLk5hbWUpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2NvbnN0IHQ9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSkscj1lLnNwbGl0KCItIilbMF0sYT0odGhpcy5pc1NlcmlmRm9udChyKT94LkZvbnRGbGFncy5TZXJpZjowKXwodC5tb25vc3BhY2U/eC5Gb250RmxhZ3MuRml4ZWRQaXRjaDowKXwoKDAsbC5nZXRTeW1ib2xzRm9udHMpKClbcl0/eC5Gb250RmxhZ3MuU3ltYm9saWM6eC5Gb250RmxhZ3MuTm9uc3ltYm9saWMpO3Y9e3R5cGU6ZixuYW1lOmUsbG9hZGVkTmFtZTpoLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6dC53aWR0aHMsZGVmYXVsdFdpZHRoOnQuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6YSxmaXJzdENoYXI6ZyxsYXN0Q2hhcjpwLHRvVW5pY29kZTpiLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Ond9O2NvbnN0IGk9Yy5nZXQoIldpZHRocyIpLHU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShlKTtsZXQgZD1udWxsO3JldHVybiB1JiYoZD1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YSh1KSx2LmlzSW50ZXJuYWxGb250PSEhZCksIXYuaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKHYuc3lzdGVtRm9udEluZm89KDAsUy5nZXRGb250U3Vic3RpdHV0aW9uKSh0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLHUpKSx0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhjLGMsdikudGhlbigocj0+e2lmKGkpe2NvbnN0IGU9W107bGV0IHQ9Zztmb3IoY29uc3QgciBvZiBpKWVbdCsrXT10aGlzLnhyZWYuZmV0Y2hJZlJlZihyKTtyLndpZHRocz1lfWVsc2Ugci53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aCh0LndpZHRocyxyKTtyZXR1cm4gbmV3IG8uRm9udChlLGQscil9KSl9aT1uZXcgcy5EaWN0KG51bGwpLGkuc2V0KCJGb250TmFtZSIscy5OYW1lLmdldChmKSksaS5zZXQoIkZvbnRCQm94IixjLmdldEFycmF5KCJGb250QkJveCIpfHxbMCwwLDAsMF0pfWxldCBBPWkuZ2V0KCJGb250TmFtZSIpLGs9Yy5nZXQoIkJhc2VGb250Iik7InN0cmluZyI9PXR5cGVvZiBBJiYoQT1zLk5hbWUuZ2V0KEEpKSwic3RyaW5nIj09dHlwZW9mIGsmJihrPXMuTmFtZS5nZXQoaykpO2NvbnN0IEM9bnVsbD09PSh0PUEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lm5hbWUsTz1udWxsPT09KHI9ayl8fHZvaWQgMD09PXI/dm9pZCAwOnIubmFtZTtpZih3fHxDPT09T3x8KCgwLG4uaW5mbykoIlRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzIFwiIi5jb25jYXQoQywnIiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250XCdzIEJhc2VGb250ICInKS5jb25jYXQoTywnIi4nKSksQyYmTyYmKE8uc3RhcnRzV2l0aChDKXx8ISgwLGwuaXNLbm93bkZvbnROYW1lKShDKSYmKDAsbC5pc0tub3duRm9udE5hbWUpKE8pKSYmKEE9bnVsbCkpLEF8fChBPWspLCEoQSBpbnN0YW5jZW9mIHMuTmFtZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBuYW1lIik7bGV0IEYsSSxULE0sRTt0cnl7Rj1pLmdldCgiRm9udEZpbGUiLCJGb250RmlsZTIiLCJGb250RmlsZTMiKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlOygwLG4ud2FybikoJ3RyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJy5jb25jYXQoQS5uYW1lLCciIGZvbnQgZmlsZTogIicpLmNvbmNhdChlLCciLicpKSxGPW5ldyBtLk51bGxTdHJlYW19bGV0IFA9ITEsUj1udWxsLE49bnVsbDtpZihGKXtpZihGLmRpY3Qpe2NvbnN0IGU9Ri5kaWN0LmdldCgiU3VidHlwZSIpO2UgaW5zdGFuY2VvZiBzLk5hbWUmJihJPWUubmFtZSksVD1GLmRpY3QuZ2V0KCJMZW5ndGgxIiksTT1GLmRpY3QuZ2V0KCJMZW5ndGgyIiksRT1GLmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoeSl7Y29uc3QgZT0oMCx1LmdldFhmYUZvbnROYW1lKShBLm5hbWUpO2UmJih5LmZvbnRGYW1pbHk9IiIuY29uY2F0KHkuZm9udEZhbWlseSwiLVBkZkpTLVhGQSIpLHkubWV0cmljcz1lLm1ldHJpY3N8fG51bGwsUj1lLmZhY3RvcnN8fG51bGwsRj1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpLFA9ISFGLGg9Yz0oMCx1LmdldFhmYUZvbnREaWN0KShBLm5hbWUpLGQ9ITApfWVsc2UgaWYoIXcpe2NvbnN0IGU9KDAsbC5nZXRTdGFuZGFyZEZvbnROYW1lKShBLm5hbWUpO2UmJihGPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpLFA9ISFGKSwhUCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoTj0oMCxTLmdldEZvbnRTdWJzdGl0dXRpb24pKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLEEubmFtZSxlKSl9aWYodj17dHlwZTpmLG5hbWU6QS5uYW1lLHN1YnR5cGU6SSxmaWxlOkYsbGVuZ3RoMTpULGxlbmd0aDI6TSxsZW5ndGgzOkUsaXNJbnRlcm5hbEZvbnQ6UCxsb2FkZWROYW1lOmgubG9hZGVkTmFtZSxjb21wb3NpdGU6ZCxmaXhlZFBpdGNoOiExLGZvbnRNYXRyaXg6Yy5nZXRBcnJheSgiRm9udE1hdHJpeCIpfHxuLkZPTlRfSURFTlRJVFlfTUFUUklYLGZpcnN0Q2hhcjpnLGxhc3RDaGFyOnAsdG9Vbmljb2RlOmIsYmJveDppLmdldEFycmF5KCJGb250QkJveCIpfHxjLmdldEFycmF5KCJGb250QkJveCIpLGFzY2VudDppLmdldCgiQXNjZW50IiksZGVzY2VudDppLmdldCgiRGVzY2VudCIpLHhIZWlnaHQ6aS5nZXQoIlhIZWlnaHQiKXx8MCxjYXBIZWlnaHQ6aS5nZXQoIkNhcEhlaWdodCIpfHwwLGZsYWdzOmkuZ2V0KCJGbGFncyIpLGl0YWxpY0FuZ2xlOmkuZ2V0KCJJdGFsaWNBbmdsZSIpfHwwLGlzVHlwZTNGb250OncsY3NzRm9udEluZm86eSxzY2FsZUZhY3RvcnM6UixzeXN0ZW1Gb250SW5mbzpOfSxkKXtjb25zdCBlPWguZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBzLk5hbWUmJih2LmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBhLkNNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt2LmNNYXA9dCx2LnZlcnRpY2FsPXYuY01hcC52ZXJ0aWNhbH1yZXR1cm4gdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMoYyxoLHYpLnRoZW4oKGU9Pih0aGlzLmV4dHJhY3RXaWR0aHMoYyxpLGUpLG5ldyBvLkZvbnQoQS5uYW1lLEYsZSkpKSl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxyLGEpe2Z1bmN0aW9uIGkodCl7Y29uc3QgaT0iIi5jb25jYXQoZS5sb2FkZWROYW1lLCJfcGF0aF8iKS5jb25jYXQodCk7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtyLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXJldHVybiB2b2lkKDAsbi53YXJuKSgiYnVpbGRGb250UGF0aHMgLSBpZ25vcmluZyAiLmNvbmNhdChpLCcgZ2x5cGg6ICInKS5jb25jYXQoZSwnIi4nKSk7dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7aShlLmZvbnRDaGFyKTtjb25zdCB0PWUuYWNjZW50OyhudWxsPT10P3ZvaWQgMDp0LmZvbnRDaGFyKSYmaSh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgcy5EaWN0O3JldHVybiBlLnNldCgiQmFzZUZvbnQiLHMuTmFtZS5nZXQoIkhlbHZldGljYSIpKSxlLnNldCgiVHlwZSIscy5OYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpLGUuc2V0KCJTdWJ0eXBlIixzLk5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSksZS5zZXQoIkVuY29kaW5nIixzLk5hbWUuZ2V0KCJXaW5BbnNpRW5jb2RpbmciKSksKDAsbi5zaGFkb3cpKHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX10LlBhcnRpYWxFdmFsdWF0b3I9QjtjbGFzcyBMe2NvbnN0cnVjdG9yKGUpe2xldHtsb2FkZWROYW1lOnQsZm9udDpyLGRpY3Q6bixldmFsdWF0b3JPcHRpb25zOmF9PWU7dGhpcy5sb2FkZWROYW1lPXQsdGhpcy5mb250PXIsdGhpcy5kaWN0PW4sdGhpcy5fZXZhbHVhdG9yT3B0aW9ucz1hfHxFLHRoaXMudHlwZTNMb2FkZWQ9bnVsbCx0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXIuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsLHRoaXMuc2VudD0hMX1zZW5kKGUpe3RoaXMuc2VudHx8KHRoaXMuc2VudD0hMCxlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pKX1mYWxsYmFjayhlKXt0aGlzLmZvbnQuZGF0YSYmKHRoaXMuZm9udC5kaXNhYmxlRm9udEZhY2U9ITAsQi5idWlsZEZvbnRQYXRocyh0aGlzLmZvbnQsdGhpcy5mb250LmdseXBoQ2FjaGVWYWx1ZXMsZSx0aGlzLl9ldmFsdWF0b3JPcHRpb25zKSl9bG9hZFR5cGUzRGF0YShlLHQscil7aWYodGhpcy50eXBlM0xvYWRlZClyZXR1cm4gdGhpcy50eXBlM0xvYWRlZDtpZighdGhpcy5mb250LmlzVHlwZTNGb250KXRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7Y29uc3QgYT1lLmNsb25lKHtpZ25vcmVFcnJvcnM6ITF9KTthLnBhcnNpbmdUeXBlM0ZvbnQ9ITA7Y29uc3QgaT1uZXcgcy5SZWZTZXQoZS50eXBlM0ZvbnRSZWZzKTt0aGlzLmRpY3Qub2JqSWQmJiFpLmhhcyh0aGlzLmRpY3Qub2JqSWQpJiZpLnB1dCh0aGlzLmRpY3Qub2JqSWQpLGEudHlwZTNGb250UmVmcz1pO2NvbnN0IG89dGhpcy5mb250LGM9dGhpcy50eXBlM0RlcGVuZGVuY2llcztsZXQgbD1Qcm9taXNlLnJlc29sdmUoKTtjb25zdCBoPXRoaXMuZGljdC5nZXQoIkNoYXJQcm9jcyIpLHU9dGhpcy5kaWN0LmdldCgiUmVzb3VyY2VzIil8fHQsZD1PYmplY3QuY3JlYXRlKG51bGwpLGY9bi5VdGlsLm5vcm1hbGl6ZVJlY3Qoby5iYm94fHxbMCwwLDAsMF0pLGc9ZlsyXS1mWzBdLHA9ZlszXS1mWzFdLG09TWF0aC5oeXBvdChnLHApO2Zvcihjb25zdCBlIG9mIGguZ2V0S2V5cygpKWw9bC50aGVuKCgoKT0+e2NvbnN0IHQ9aC5nZXQoZSksaT1uZXcgVC5PcGVyYXRvckxpc3Q7cmV0dXJuIGEuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOnUsb3BlcmF0b3JMaXN0Oml9KS50aGVuKCgoKT0+e2kuZm5BcnJheVswXT09PW4uT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhpLG0pLGRbZV09aS5nZXRJUigpO2Zvcihjb25zdCBlIG9mIGkuZGVwZW5kZW5jaWVzKWMuYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXsoMCxuLndhcm4pKCdUeXBlMyBmb250IHJlc291cmNlICInLmNvbmNhdChlLCciIGlzIG5vdCBhdmFpbGFibGUuJykpO2NvbnN0IHI9bmV3IFQuT3BlcmF0b3JMaXN0O2RbZV09ci5nZXRJUigpfSkpfSkpO3JldHVybiB0aGlzLnR5cGUzTG9hZGVkPWwudGhlbigoKCk9PntvLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWQsdGhpcy5fYmJveCYmKG8uaXNDaGFyQkJveD0hMCxvLmJib3g9dGhpcy5fYmJveCl9KSksdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06TmFOO2NvbnN0IHI9bi5VdGlsLm5vcm1hbGl6ZVJlY3QoZS5hcmdzQXJyYXlbMF0uc2xpY2UoMikpLGE9clsyXS1yWzBdLGk9clszXS1yWzFdLHM9TWF0aC5oeXBvdChhLGkpOzA9PT1hfHwwPT09aT8oZS5mbkFycmF5LnNwbGljZSgwLDEpLGUuYXJnc0FycmF5LnNwbGljZSgwLDEpKTooMD09PXR8fE1hdGgucm91bmQocy90KT49MTApJiYodGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSksdGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLHJbMF0pLHRoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxyWzFdKSx0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0sclsyXSksdGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLHJbM10pKTtsZXQgbz0wLGM9ZS5sZW5ndGg7Zm9yKDtvPGM7KXtzd2l0Y2goZS5mbkFycmF5W29dKXtjYXNlIG4uT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kczpicmVhaztjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yU3BhY2U6Y2FzZSBuLk9QUy5zZXRGaWxsQ29sb3JTcGFjZTpjYXNlIG4uT1BTLnNldFN0cm9rZUNvbG9yOmNhc2Ugbi5PUFMuc2V0U3Ryb2tlQ29sb3JOOmNhc2Ugbi5PUFMuc2V0RmlsbENvbG9yOmNhc2Ugbi5PUFMuc2V0RmlsbENvbG9yTjpjYXNlIG4uT1BTLnNldFN0cm9rZUdyYXk6Y2FzZSBuLk9QUy5zZXRGaWxsR3JheTpjYXNlIG4uT1BTLnNldFN0cm9rZVJHQkNvbG9yOmNhc2Ugbi5PUFMuc2V0RmlsbFJHQkNvbG9yOmNhc2Ugbi5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yOmNhc2Ugbi5PUFMuc2V0RmlsbENNWUtDb2xvcjpjYXNlIG4uT1BTLnNoYWRpbmdGaWxsOmNhc2Ugbi5PUFMuc2V0UmVuZGVyaW5nSW50ZW50OmUuZm5BcnJheS5zcGxpY2UobywxKSxlLmFyZ3NBcnJheS5zcGxpY2UobywxKSxjLS07Y29udGludWU7Y2FzZSBuLk9QUy5zZXRHU3RhdGU6Y29uc3RbdF09ZS5hcmdzQXJyYXlbb107bGV0IHI9MCxhPXQubGVuZ3RoO2Zvcig7cjxhOyl7Y29uc3RbZV09dFtyXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShyLDEpLGEtLTtjb250aW51ZX1yKyt9fW8rK319fWNsYXNzIF97Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bmV3IFU7dGhpcy5zdGF0ZT1lLHRoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpLHRoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09bi5VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3Mgantjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkobi5JREVOVElUWV9NQVRSSVgpLHRoaXMuZm9udE5hbWU9bnVsbCx0aGlzLmZvbnRTaXplPTAsdGhpcy5sb2FkZWROYW1lPW51bGwsdGhpcy5mb250PW51bGwsdGhpcy5mb250TWF0cml4PW4uRk9OVF9JREVOVElUWV9NQVRSSVgsdGhpcy50ZXh0TWF0cml4PW4uSURFTlRJVFlfTUFUUklYLnNsaWNlKCksdGhpcy50ZXh0TGluZU1hdHJpeD1uLklERU5USVRZX01BVFJJWC5zbGljZSgpLHRoaXMuY2hhclNwYWNpbmc9MCx0aGlzLndvcmRTcGFjaW5nPTAsdGhpcy5sZWFkaW5nPTAsdGhpcy50ZXh0SFNjYWxlPTEsdGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LHIsbixhLGkpe2NvbnN0IHM9dGhpcy50ZXh0TWF0cml4O3NbMF09ZSxzWzFdPXQsc1syXT1yLHNbM109bixzWzRdPWEsc1s1XT1pfXNldFRleHRMaW5lTWF0cml4KGUsdCxyLG4sYSxpKXtjb25zdCBzPXRoaXMudGV4dExpbmVNYXRyaXg7c1swXT1lLHNbMV09dCxzWzJdPXIsc1szXT1uLHNbNF09YSxzWzVdPWl9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IHI9dGhpcy50ZXh0TWF0cml4O3JbNF09clswXSplK3JbMl0qdCtyWzRdLHJbNV09clsxXSplK3JbM10qdCtyWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3Qgcj10aGlzLnRleHRMaW5lTWF0cml4O3JbNF09clswXSplK3JbMl0qdCtyWzRdLHJbNV09clsxXSplK3JbM10qdCtyWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpLHRoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7cmV0dXJuIGUudGV4dE1hdHJpeD10aGlzLnRleHRNYXRyaXguc2xpY2UoKSxlLnRleHRMaW5lTWF0cml4PXRoaXMudGV4dExpbmVNYXRyaXguc2xpY2UoKSxlLmZvbnRNYXRyaXg9dGhpcy5mb250TWF0cml4LnNsaWNlKCksZX19Y2xhc3MgVXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkobi5JREVOVElUWV9NQVRSSVgpLHRoaXMuZm9udD1udWxsLHRoaXMudGV4dFJlbmRlcmluZ01vZGU9bi5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMLHRoaXMuZmlsbENvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheSx0aGlzLnN0cm9rZUNvbG9yU3BhY2U9dy5Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheX1jbG9uZSgpe3JldHVybiBPYmplY3QuY3JlYXRlKHRoaXMpfX1jbGFzcyAke3N0YXRpYyBnZXQgb3BNYXAoKXtjb25zdCBlPSgwLGsuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS53PXtpZDpuLk9QUy5zZXRMaW5lV2lkdGgsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5KPXtpZDpuLk9QUy5zZXRMaW5lQ2FwLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuaj17aWQ6bi5PUFMuc2V0TGluZUpvaW4sbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5NPXtpZDpuLk9QUy5zZXRNaXRlckxpbWl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuZD17aWQ6bi5PUFMuc2V0RGFzaCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxlLnJpPXtpZDpuLk9QUy5zZXRSZW5kZXJpbmdJbnRlbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5pPXtpZDpuLk9QUy5zZXRGbGF0bmVzcyxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLmdzPXtpZDpuLk9QUy5zZXRHU3RhdGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5xPXtpZDpuLk9QUy5zYXZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuUT17aWQ6bi5PUFMucmVzdG9yZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLmNtPXtpZDpuLk9QUy50cmFuc2Zvcm0sbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sZS5tPXtpZDpuLk9QUy5tb3ZlVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5sPXtpZDpuLk9QUy5saW5lVG8sbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5jPXtpZDpuLk9QUy5jdXJ2ZVRvLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LGUudj17aWQ6bi5PUFMuY3VydmVUbzIsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sZS55PXtpZDpuLk9QUy5jdXJ2ZVRvMyxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxlLmg9e2lkOm4uT1BTLmNsb3NlUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLnJlPXtpZDpuLk9QUy5yZWN0YW5nbGUsbnVtQXJnczo0LHZhcmlhYmxlQXJnczohMX0sZS5TPXtpZDpuLk9QUy5zdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5zPXtpZDpuLk9QUy5jbG9zZVN0cm9rZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLmY9e2lkOm4uT1BTLmZpbGwsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5GPXtpZDpuLk9QUy5maWxsLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGVbImYqIl09e2lkOm4uT1BTLmVvRmlsbCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLkI9e2lkOm4uT1BTLmZpbGxTdHJva2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZVsiQioiXT17aWQ6bi5PUFMuZW9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuYj17aWQ6bi5PUFMuY2xvc2VGaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGVbImIqIl09e2lkOm4uT1BTLmNsb3NlRU9GaWxsU3Ryb2tlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUubj17aWQ6bi5PUFMuZW5kUGF0aCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLlc9e2lkOm4uT1BTLmNsaXAsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZVsiVyoiXT17aWQ6bi5PUFMuZW9DbGlwLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuQlQ9e2lkOm4uT1BTLmJlZ2luVGV4dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxlLkVUPXtpZDpuLk9QUy5lbmRUZXh0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuVGM9e2lkOm4uT1BTLnNldENoYXJTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVHc9e2lkOm4uT1BTLnNldFdvcmRTcGFjaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVHo9e2lkOm4uT1BTLnNldEhTY2FsZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLlRMPXtpZDpuLk9QUy5zZXRMZWFkaW5nLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuVGY9e2lkOm4uT1BTLnNldEZvbnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5Ucj17aWQ6bi5PUFMuc2V0VGV4dFJlbmRlcmluZ01vZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5Ucz17aWQ6bi5PUFMuc2V0VGV4dFJpc2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5UZD17aWQ6bi5PUFMubW92ZVRleHQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5URD17aWQ6bi5PUFMuc2V0TGVhZGluZ01vdmVUZXh0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuVG09e2lkOm4uT1BTLnNldFRleHRNYXRyaXgsbnVtQXJnczo2LHZhcmlhYmxlQXJnczohMX0sZVsiVCoiXT17aWQ6bi5PUFMubmV4dExpbmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5Uaj17aWQ6bi5PUFMuc2hvd1RleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5USj17aWQ6bi5PUFMuc2hvd1NwYWNlZFRleHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZVsiJyJdPXtpZDpuLk9QUy5uZXh0TGluZVNob3dUZXh0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGVbJyInXT17aWQ6bi5PUFMubmV4dExpbmVTZXRTcGFjaW5nU2hvd1RleHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sZS5kMD17aWQ6bi5PUFMuc2V0Q2hhcldpZHRoLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGUuZDE9e2lkOm4uT1BTLnNldENoYXJXaWR0aEFuZEJvdW5kcyxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSxlLkNTPXtpZDpuLk9QUy5zZXRTdHJva2VDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuY3M9e2lkOm4uT1BTLnNldEZpbGxDb2xvclNwYWNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuU0M9e2lkOm4uT1BTLnNldFN0cm9rZUNvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LGUuU0NOPXtpZDpuLk9QUy5zZXRTdHJva2VDb2xvck4sbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LGUuc2M9e2lkOm4uT1BTLnNldEZpbGxDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxlLnNjbj17aWQ6bi5PUFMuc2V0RmlsbENvbG9yTixudW1BcmdzOjMzLHZhcmlhYmxlQXJnczohMH0sZS5HPXtpZDpuLk9QUy5zZXRTdHJva2VHcmF5LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuZz17aWQ6bi5PUFMuc2V0RmlsbEdyYXksbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5SRz17aWQ6bi5PUFMuc2V0U3Ryb2tlUkdCQ29sb3IsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0sZS5yZz17aWQ6bi5PUFMuc2V0RmlsbFJHQkNvbG9yLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LGUuSz17aWQ6bi5PUFMuc2V0U3Ryb2tlQ01ZS0NvbG9yLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGUuaz17aWQ6bi5PUFMuc2V0RmlsbENNWUtDb2xvcixudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxlLnNoPXtpZDpuLk9QUy5zaGFkaW5nRmlsbCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLkJJPXtpZDpuLk9QUy5iZWdpbklubGluZUltYWdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuSUQ9e2lkOm4uT1BTLmJlZ2luSW1hZ2VEYXRhLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuRUk9e2lkOm4uT1BTLmVuZElubGluZUltYWdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGUuRG89e2lkOm4uT1BTLnBhaW50WE9iamVjdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLk1QPXtpZDpuLk9QUy5tYXJrUG9pbnQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sZS5EUD17aWQ6bi5PUFMubWFya1BvaW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5CTUM9e2lkOm4uT1BTLmJlZ2luTWFya2VkQ29udGVudCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxlLkJEQz17aWQ6bi5PUFMuYmVnaW5NYXJrZWRDb250ZW50UHJvcHMsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZS5FTUM9e2lkOm4uT1BTLmVuZE1hcmtlZENvbnRlbnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5CWD17aWQ6bi5PUFMuYmVnaW5Db21wYXQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sZS5FWD17aWQ6bi5PUFMuZW5kQ29tcGF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LGUuQk09bnVsbCxlLkJEPW51bGwsZS50cnVlPW51bGwsZS5mYT1udWxsLGUuZmFsPW51bGwsZS5mYWxzPW51bGwsZS5mYWxzZT1udWxsLGUubnU9bnVsbCxlLm51bD1udWxsLGUubnVsbD1udWxsfSkpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJvcE1hcCIsZSgpKX1jb25zdHJ1Y3RvcihlLHQpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpuZXcgXzt0aGlzLnBhcnNlcj1uZXcgZy5QYXJzZXIoe2xleGVyOm5ldyBnLkxleGVyKGUsJC5vcE1hcCkseHJlZjp0fSksdGhpcy5zdGF0ZU1hbmFnZXI9cix0aGlzLm5vblByb2Nlc3NlZEFyZ3M9W10sdGhpcy5faXNQYXRoT3A9ITEsdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MH1nZXQgc2F2ZWRTdGF0ZXNEZXB0aCgpe3JldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZVN0YWNrLmxlbmd0aH1yZWFkKGUpe2xldCB0PWUuYXJncztmb3IoOzspe2NvbnN0IHI9dGhpcy5wYXJzZXIuZ2V0T2JqKCk7aWYociBpbnN0YW5jZW9mIHMuQ21kKXtjb25zdCBhPXIuY21kLGk9JC5vcE1hcFthXTtpZighaSl7KDAsbi53YXJuKSgnVW5rbm93biBjb21tYW5kICInLmNvbmNhdChhLCciLicpKTtjb250aW51ZX1jb25zdCBzPWkuaWQsbz1pLm51bUFyZ3M7bGV0IGM9bnVsbCE9PXQ/dC5sZW5ndGg6MDtpZih0aGlzLl9pc1BhdGhPcHx8KHRoaXMuX251bUludmFsaWRQYXRoT1BTPTApLHRoaXMuX2lzUGF0aE9wPXM+PW4uT1BTLm1vdmVUbyYmczw9bi5PUFMuZW5kUGF0aCxpLnZhcmlhYmxlQXJncyljPm8mJigwLG4uaW5mbykoIkNvbW1hbmQgIi5jb25jYXQoYSwiOiBleHBlY3RlZCBbMCwgIikuY29uY2F0KG8sIl0gYXJncywgYnV0IHJlY2VpdmVkICIpLmNvbmNhdChjLCIgYXJncy4iKSk7ZWxzZXtpZihjIT09byl7Y29uc3QgZT10aGlzLm5vblByb2Nlc3NlZEFyZ3M7Zm9yKDtjPm87KWUucHVzaCh0LnNoaWZ0KCkpLGMtLTtmb3IoO2M8byYmMCE9PWUubGVuZ3RoOyludWxsPT09dCYmKHQ9W10pLHQudW5zaGlmdChlLnBvcCgpKSxjKyt9aWYoYzxvKXtjb25zdCBlPSJjb21tYW5kICIuY29uY2F0KGEsIjogZXhwZWN0ZWQgIikuY29uY2F0KG8sIiBhcmdzLCBidXQgcmVjZWl2ZWQgIikuY29uY2F0KGMsIiBhcmdzLiIpO2lmKHRoaXMuX2lzUGF0aE9wJiYrK3RoaXMuX251bUludmFsaWRQYXRoT1BTPiQuTUFYX0lOVkFMSURfUEFUSF9PUFMpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgIi5jb25jYXQoZSkpOygwLG4ud2FybikoIlNraXBwaW5nICIuY29uY2F0KGUpKSxudWxsIT09dCYmKHQubGVuZ3RoPTApO2NvbnRpbnVlfX1yZXR1cm4gdGhpcy5wcmVwcm9jZXNzQ29tbWFuZChzLHQpLGUuZm49cyxlLmFyZ3M9dCwhMH1pZihyPT09cy5FT0YpcmV0dXJuITE7aWYobnVsbCE9PXImJihudWxsPT09dCYmKHQ9W10pLHQucHVzaChyKSx0Lmxlbmd0aD4zMykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpfX1wcmVwcm9jZXNzQ29tbWFuZChlLHQpe3N3aXRjaCgwfGUpe2Nhc2Ugbi5PUFMuc2F2ZTp0aGlzLnN0YXRlTWFuYWdlci5zYXZlKCk7YnJlYWs7Y2FzZSBuLk9QUy5yZXN0b3JlOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIG4uT1BTLnRyYW5zZm9ybTp0aGlzLnN0YXRlTWFuYWdlci50cmFuc2Zvcm0odCl9fX1pKCQsIk1BWF9JTlZBTElEX1BBVEhfT1BTIiwxMCksdC5FdmFsdWF0b3JQcmVwcm9jZXNzb3I9JH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LklkZW50aXR5Q01hcD10LkNNYXBGYWN0b3J5PXQuQ01hcD12b2lkIDAscigxMzkpLHIoMik7dmFyIG49cigxNDQpLGE9cigxNTApLGk9cigxNTEpLHM9cigxNjUpLG89cigxNjYpLGM9cigxNDkpLGw9cigxNTQpO2NvbnN0IGg9WyJBZG9iZS1HQjEtVUNTMiIsIkFkb2JlLUNOUzEtVUNTMiIsIkFkb2JlLUphcGFuMS1VQ1MyIiwiQWRvYmUtS29yZWExLVVDUzIiLCI3OC1FVUMtSCIsIjc4LUVVQy1WIiwiNzgtSCIsIjc4LVJLU0otSCIsIjc4LVJLU0otViIsIjc4LVYiLCI3OG1zLVJLU0otSCIsIjc4bXMtUktTSi1WIiwiODNwdi1SS1NKLUgiLCI5MG1zLVJLU0otSCIsIjkwbXMtUktTSi1WIiwiOTBtc3AtUktTSi1IIiwiOTBtc3AtUktTSi1WIiwiOTBwdi1SS1NKLUgiLCI5MHB2LVJLU0otViIsIkFkZC1IIiwiQWRkLVJLU0otSCIsIkFkZC1SS1NKLVYiLCJBZGQtViIsIkFkb2JlLUNOUzEtMCIsIkFkb2JlLUNOUzEtMSIsIkFkb2JlLUNOUzEtMiIsIkFkb2JlLUNOUzEtMyIsIkFkb2JlLUNOUzEtNCIsIkFkb2JlLUNOUzEtNSIsIkFkb2JlLUNOUzEtNiIsIkFkb2JlLUdCMS0wIiwiQWRvYmUtR0IxLTEiLCJBZG9iZS1HQjEtMiIsIkFkb2JlLUdCMS0zIiwiQWRvYmUtR0IxLTQiLCJBZG9iZS1HQjEtNSIsIkFkb2JlLUphcGFuMS0wIiwiQWRvYmUtSmFwYW4xLTEiLCJBZG9iZS1KYXBhbjEtMiIsIkFkb2JlLUphcGFuMS0zIiwiQWRvYmUtSmFwYW4xLTQiLCJBZG9iZS1KYXBhbjEtNSIsIkFkb2JlLUphcGFuMS02IiwiQWRvYmUtS29yZWExLTAiLCJBZG9iZS1Lb3JlYTEtMSIsIkFkb2JlLUtvcmVhMS0yIiwiQjUtSCIsIkI1LVYiLCJCNXBjLUgiLCJCNXBjLVYiLCJDTlMtRVVDLUgiLCJDTlMtRVVDLVYiLCJDTlMxLUgiLCJDTlMxLVYiLCJDTlMyLUgiLCJDTlMyLVYiLCJFVEhLLUI1LUgiLCJFVEhLLUI1LVYiLCJFVGVuLUI1LUgiLCJFVGVuLUI1LVYiLCJFVGVubXMtQjUtSCIsIkVUZW5tcy1CNS1WIiwiRVVDLUgiLCJFVUMtViIsIkV4dC1IIiwiRXh0LVJLU0otSCIsIkV4dC1SS1NKLVYiLCJFeHQtViIsIkdCLUVVQy1IIiwiR0ItRVVDLVYiLCJHQi1IIiwiR0ItViIsIkdCSy1FVUMtSCIsIkdCSy1FVUMtViIsIkdCSzJLLUgiLCJHQksySy1WIiwiR0JLcC1FVUMtSCIsIkdCS3AtRVVDLVYiLCJHQlQtRVVDLUgiLCJHQlQtRVVDLVYiLCJHQlQtSCIsIkdCVC1WIiwiR0JUcGMtRVVDLUgiLCJHQlRwYy1FVUMtViIsIkdCcGMtRVVDLUgiLCJHQnBjLUVVQy1WIiwiSCIsIkhLZGxhLUI1LUgiLCJIS2RsYS1CNS1WIiwiSEtkbGItQjUtSCIsIkhLZGxiLUI1LVYiLCJIS2djY3MtQjUtSCIsIkhLZ2Njcy1CNS1WIiwiSEttMzE0LUI1LUgiLCJIS20zMTQtQjUtViIsIkhLbTQ3MS1CNS1IIiwiSEttNDcxLUI1LVYiLCJIS3Njcy1CNS1IIiwiSEtzY3MtQjUtViIsIkhhbmtha3UiLCJIaXJhZ2FuYSIsIktTQy1FVUMtSCIsIktTQy1FVUMtViIsIktTQy1IIiwiS1NDLUpvaGFiLUgiLCJLU0MtSm9oYWItViIsIktTQy1WIiwiS1NDbXMtVUhDLUgiLCJLU0Ntcy1VSEMtSFctSCIsIktTQ21zLVVIQy1IVy1WIiwiS1NDbXMtVUhDLVYiLCJLU0NwYy1FVUMtSCIsIktTQ3BjLUVVQy1WIiwiS2F0YWthbmEiLCJOV1AtSCIsIk5XUC1WIiwiUktTSi1IIiwiUktTSi1WIiwiUm9tYW4iLCJVbmlDTlMtVUNTMi1IIiwiVW5pQ05TLVVDUzItViIsIlVuaUNOUy1VVEYxNi1IIiwiVW5pQ05TLVVURjE2LVYiLCJVbmlDTlMtVVRGMzItSCIsIlVuaUNOUy1VVEYzMi1WIiwiVW5pQ05TLVVURjgtSCIsIlVuaUNOUy1VVEY4LVYiLCJVbmlHQi1VQ1MyLUgiLCJVbmlHQi1VQ1MyLVYiLCJVbmlHQi1VVEYxNi1IIiwiVW5pR0ItVVRGMTYtViIsIlVuaUdCLVVURjMyLUgiLCJVbmlHQi1VVEYzMi1WIiwiVW5pR0ItVVRGOC1IIiwiVW5pR0ItVVRGOC1WIiwiVW5pSklTLVVDUzItSCIsIlVuaUpJUy1VQ1MyLUhXLUgiLCJVbmlKSVMtVUNTMi1IVy1WIiwiVW5pSklTLVVDUzItViIsIlVuaUpJUy1VVEYxNi1IIiwiVW5pSklTLVVURjE2LVYiLCJVbmlKSVMtVVRGMzItSCIsIlVuaUpJUy1VVEYzMi1WIiwiVW5pSklTLVVURjgtSCIsIlVuaUpJUy1VVEY4LVYiLCJVbmlKSVMyMDA0LVVURjE2LUgiLCJVbmlKSVMyMDA0LVVURjE2LVYiLCJVbmlKSVMyMDA0LVVURjMyLUgiLCJVbmlKSVMyMDA0LVVURjMyLVYiLCJVbmlKSVMyMDA0LVVURjgtSCIsIlVuaUpJUzIwMDQtVVRGOC1WIiwiVW5pSklTUHJvLVVDUzItSFctViIsIlVuaUpJU1Byby1VQ1MyLVYiLCJVbmlKSVNQcm8tVVRGOC1WIiwiVW5pSklTWDAyMTMtVVRGMzItSCIsIlVuaUpJU1gwMjEzLVVURjMyLVYiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1WIiwiVW5pS1MtVUNTMi1IIiwiVW5pS1MtVUNTMi1WIiwiVW5pS1MtVVRGMTYtSCIsIlVuaUtTLVVURjE2LVYiLCJVbmlLUy1VVEYzMi1IIiwiVW5pS1MtVVRGMzItViIsIlVuaUtTLVVURjgtSCIsIlVuaUtTLVVURjgtViIsIlYiLCJXUC1TeW1ib2wiXSx1PTIqKjI0LTE7Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXSx0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wLHRoaXMuX21hcD1bXSx0aGlzLm5hbWU9IiIsdGhpcy52ZXJ0aWNhbD0hMSx0aGlzLnVzZUNNYXA9bnVsbCx0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LHIpe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LHIpLHRoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LHIpe2lmKHQtZT51KXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1yKyt9bWFwQmZSYW5nZShlLHQscil7aWYodC1lPnUpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IG49ci5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1yO2NvbnN0IHQ9ci5jaGFyQ29kZUF0KG4pKzE7cj10PjI1NT9yLnN1YnN0cmluZygwLG4tMSkrU3RyaW5nLmZyb21DaGFyQ29kZShyLmNoYXJDb2RlQXQobi0xKSsxKSsiXDAiOnIuc3Vic3RyaW5nKDAsbikrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LHIpe2lmKHQtZT51KXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3Qgbj1yLmxlbmd0aDtsZXQgYT0wO2Zvcig7ZTw9dCYmYTxuOyl0aGlzLl9tYXBbZV09clthKytdLCsrZX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAscj10Lmxlbmd0aDtpZihyPD02NTUzNilmb3IobGV0IG49MDtuPHI7bisrKXZvaWQgMCE9PXRbbl0mJmUobix0W25dKTtlbHNlIGZvcihjb25zdCByIGluIHQpZShyLHRbcl0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IHIgaW4gdClpZih0W3JdPT09ZSlyZXR1cm4gMHxyO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxyKXtsZXQgbj0wO2NvbnN0IGE9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAscz1hLmxlbmd0aDtpPHM7aSsrKXtuPShuPDw4fGUuY2hhckNvZGVBdCh0K2kpKT4+PjA7Y29uc3Qgcz1hW2ldO2ZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1zW2UrK10sYT1zW2UrK107aWYobj49dCYmbjw9YSlyZXR1cm4gci5jaGFyY29kZT1uLHZvaWQoci5sZW5ndGg9aSsxKX19ci5jaGFyY29kZT0wLHIubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49dFtyXTtmb3IobGV0IHQ9MCxhPW4ubGVuZ3RoO3Q8YTspe2NvbnN0IGE9blt0KytdLGk9blt0KytdO2lmKGU+PWEmJmU8PWkpcmV0dXJuIHIrMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX10LkNNYXA9ZDtjbGFzcyBmIGV4dGVuZHMgZHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCksdGhpcy52ZXJ0aWNhbD1lLHRoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQscil7KDAsbi51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LHIpeygwLG4udW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxyKXsoMCxuLnVucmVhY2hhYmxlKSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7KDAsbi51bnJlYWNoYWJsZSkoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpeygwLG4udW5yZWFjaGFibGUpKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gZyhlKXtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXQ9dDw8OHxlLmNoYXJDb2RlQXQocik7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIHAoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIG0oZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gYihlLHQpe2Zvcig7Oyl7bGV0IHI9dC5nZXRPYmooKTtpZihyPT09YS5FT0YpYnJlYWs7aWYoKDAsYS5pc0NtZCkociwiZW5kYmZjaGFyIikpcmV0dXJuO3Aocik7Y29uc3Qgbj1nKHIpO3I9dC5nZXRPYmooKSxwKHIpO2NvbnN0IGk9cjtlLm1hcE9uZShuLGkpfX1mdW5jdGlvbiB5KGUsdCl7Zm9yKDs7KXtsZXQgcj10LmdldE9iaigpO2lmKHI9PT1hLkVPRilicmVhaztpZigoMCxhLmlzQ21kKShyLCJlbmRiZnJhbmdlIikpcmV0dXJuO3Aocik7Y29uc3Qgbj1nKHIpO3I9dC5nZXRPYmooKSxwKHIpO2NvbnN0IGk9ZyhyKTtpZihyPXQuZ2V0T2JqKCksTnVtYmVyLmlzSW50ZWdlcihyKXx8InN0cmluZyI9PXR5cGVvZiByKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIocik/U3RyaW5nLmZyb21DaGFyQ29kZShyKTpyO2UubWFwQmZSYW5nZShuLGksdCl9ZWxzZXtpZighKDAsYS5pc0NtZCkociwiWyIpKWJyZWFrO3tyPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyEoMCxhLmlzQ21kKShyLCJdIikmJnIhPT1hLkVPRjspcy5wdXNoKHIpLHI9dC5nZXRPYmooKTtlLm1hcEJmUmFuZ2VUb0FycmF5KG4saSxzKX19fXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHcoZSx0KXtmb3IoOzspe2xldCByPXQuZ2V0T2JqKCk7aWYocj09PWEuRU9GKWJyZWFrO2lmKCgwLGEuaXNDbWQpKHIsImVuZGNpZGNoYXIiKSlyZXR1cm47cChyKTtjb25zdCBuPWcocik7cj10LmdldE9iaigpLG0ocik7Y29uc3QgaT1yO2UubWFwT25lKG4saSl9fWZ1bmN0aW9uIHYoZSx0KXtmb3IoOzspe2xldCByPXQuZ2V0T2JqKCk7aWYocj09PWEuRU9GKWJyZWFrO2lmKCgwLGEuaXNDbWQpKHIsImVuZGNpZHJhbmdlIikpcmV0dXJuO3Aocik7Y29uc3Qgbj1nKHIpO3I9dC5nZXRPYmooKSxwKHIpO2NvbnN0IGk9ZyhyKTtyPXQuZ2V0T2JqKCksbShyKTtjb25zdCBzPXI7ZS5tYXBDaWRSYW5nZShuLGkscyl9fWZ1bmN0aW9uIHgoZSx0KXtmb3IoOzspe2xldCByPXQuZ2V0T2JqKCk7aWYocj09PWEuRU9GKWJyZWFrO2lmKCgwLGEuaXNDbWQpKHIsImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgcilicmVhaztjb25zdCBuPWcocik7aWYocj10LmdldE9iaigpLCJzdHJpbmciIT10eXBlb2YgcilicmVhaztjb25zdCBpPWcocik7ZS5hZGRDb2Rlc3BhY2VSYW5nZShyLmxlbmd0aCxuLGkpfXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBTKGUsdCl7Y29uc3Qgcj10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIocikmJihlLnZlcnRpY2FsPSEhcil9ZnVuY3Rpb24gQShlLHQpe2NvbnN0IHI9dC5nZXRPYmooKTtyIGluc3RhbmNlb2YgYS5OYW1lJiYoZS5uYW1lPXIubmFtZSl9YXN5bmMgZnVuY3Rpb24gayhlLHQscixpKXtsZXQgcyxvO2U6Zm9yKDs7KXRyeXtjb25zdCByPXQuZ2V0T2JqKCk7aWYocj09PWEuRU9GKWJyZWFrO2lmKHIgaW5zdGFuY2VvZiBhLk5hbWUpIldNb2RlIj09PXIubmFtZT9TKGUsdCk6IkNNYXBOYW1lIj09PXIubmFtZSYmQShlLHQpLHM9cjtlbHNlIGlmKHIgaW5zdGFuY2VvZiBhLkNtZClzd2l0Y2goci5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOnMgaW5zdGFuY2VvZiBhLk5hbWUmJihvPXMubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjp4KGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6YihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjp3KGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnkoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnYoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGMuTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxuLndhcm4pKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX1yZXR1cm4haSYmbyYmKGk9byksaT9DKGUscixpKTplfWFzeW5jIGZ1bmN0aW9uIEMoZSx0LHIpe2lmKGUudXNlQ01hcD1hd2FpdCBPKHIsdCksMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspZS5jb2Rlc3BhY2VSYW5nZXNbcl09dFtyXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9cmV0dXJuIGUudXNlQ01hcC5mb3JFYWNoKChmdW5jdGlvbih0LHIpe2UuY29udGFpbnModCl8fGUubWFwT25lKHQsZS51c2VDTWFwLmxvb2t1cCh0KSl9KSksZX1hc3luYyBmdW5jdGlvbiBPKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IGYoITEsMik7aWYoIklkZW50aXR5LVYiPT09ZSlyZXR1cm4gbmV3IGYoITAsMik7aWYoIWguaW5jbHVkZXMoZSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIENNYXAgbmFtZTogIitlKTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIkJ1aWx0LWluIENNYXAgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkLiIpO2NvbnN0e2NNYXBEYXRhOnIsY29tcHJlc3Npb25UeXBlOmF9PWF3YWl0IHQoZSksaT1uZXcgZCghMCk7aWYoYT09PW4uQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkpcmV0dXJuKG5ldyBzLkJpbmFyeUNNYXBSZWFkZXIpLnByb2Nlc3MocixpLChlPT5DKGksdCxlKSkpO2lmKGE9PT1uLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORSl7Y29uc3QgZT1uZXcgby5MZXhlcihuZXcgbC5TdHJlYW0ocikpO3JldHVybiBrKGksZSx0LG51bGwpfXRocm93IG5ldyBFcnJvcignSW52YWxpZCBDTWFwICJjb21wcmVzc2lvblR5cGUiIHZhbHVlOiAnLmNvbmNhdChhKSl9dC5JZGVudGl0eUNNYXA9Zix0LkNNYXBGYWN0b3J5PWNsYXNze3N0YXRpYyBhc3luYyBjcmVhdGUoZSl7bGV0e2VuY29kaW5nOnQsZmV0Y2hCdWlsdEluQ01hcDpyLHVzZUNNYXA6bn09ZTtpZih0IGluc3RhbmNlb2YgYS5OYW1lKXJldHVybiBPKHQubmFtZSxyKTtpZih0IGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtKXtjb25zdCBlPWF3YWl0IGsobmV3IGQsbmV3IG8uTGV4ZXIodCkscixuKTtyZXR1cm4gZS5pc0lkZW50aXR5Q01hcD9PKGUubmFtZSxyKTplfXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkJpbmFyeUNNYXBSZWFkZXI9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDIpO3ZhciBuPXIoMTQ0KTtmdW5jdGlvbiBhKGUsdCl7bGV0IHI9MDtmb3IobGV0IG49MDtuPD10O24rKylyPXI8PDh8ZVtuXTtyZXR1cm4gcj4+PjB9ZnVuY3Rpb24gaShlLHQpe3JldHVybiAxPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSk6Mz09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0sZVsyXSxlWzNdKTpTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBzKGUsdCxyKXtsZXQgbj0wO2ZvcihsZXQgYT1yO2E+PTA7YS0tKW4rPWVbYV0rdFthXSxlW2FdPTI1NSZuLG4+Pj04fWZ1bmN0aW9uIG8oZSx0KXtsZXQgcj0xO2ZvcihsZXQgbj10O24+PTAmJnI+MDtuLS0pcis9ZVtuXSxlW25dPTI1NSZyLHI+Pj04fWNvbnN0IGM9MTY7Y2xhc3MgbHtjb25zdHJ1Y3RvcihlKXt0aGlzLmJ1ZmZlcj1lLHRoaXMucG9zPTAsdGhpcy5lbmQ9ZS5sZW5ndGgsdGhpcy50bXBCdWY9bmV3IFVpbnQ4QXJyYXkoMTkpfXJlYWRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1yZWFkTnVtYmVyKCl7bGV0IGUsdD0wO2Rve2NvbnN0IHI9dGhpcy5yZWFkQnl0ZSgpO2lmKHI8MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JnIpLHQ9dDw8N3wxMjcmcn13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSksdGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IHI7Y29uc3QgYT10aGlzLnRtcEJ1ZjtsZXQgaT0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtyPSEoMTI4JmUpLGFbaSsrXT0xMjcmZX13aGlsZSghcik7bGV0IHM9dCxvPTAsYz0wO2Zvcig7cz49MDspe2Zvcig7Yzw4JiZhLmxlbmd0aD4wOylvfD1hWy0taV08PGMsYys9NztlW3NdPTI1NSZvLHMtLSxvPj49OCxjLT04fX1yZWFkSGV4U2lnbmVkKGUsdCl7dGhpcy5yZWFkSGV4TnVtYmVyKGUsdCk7Y29uc3Qgcj0xJmVbdF0/MjU1OjA7bGV0IG49MDtmb3IobGV0IGE9MDthPD10O2ErKyluPSgxJm4pPDw4fGVbYV0sZVthXT1uPj4xXnJ9cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCByPTA7cjxlO3IrKyl0W3JdPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX10LkJpbmFyeUNNYXBSZWFkZXI9Y2xhc3N7YXN5bmMgcHJvY2VzcyhlLHQscil7Y29uc3Qgbj1uZXcgbChlKSxoPW4ucmVhZEJ5dGUoKTt0LnZlcnRpY2FsPSEhKDEmaCk7bGV0IHU9bnVsbDtjb25zdCBkPW5ldyBVaW50OEFycmF5KGMpLGY9bmV3IFVpbnQ4QXJyYXkoYyksZz1uZXcgVWludDhBcnJheShjKSxwPW5ldyBVaW50OEFycmF5KGMpLG09bmV3IFVpbnQ4QXJyYXkoYyk7bGV0IGIseTtmb3IoOyh5PW4ucmVhZEJ5dGUoKSk+PTA7KXtjb25zdCBlPXk+PjU7aWYoNz09PWUpe3N3aXRjaCgzMSZ5KXtjYXNlIDA6bi5yZWFkU3RyaW5nKCk7YnJlYWs7Y2FzZSAxOnU9bi5yZWFkU3RyaW5nKCl9Y29udGludWV9Y29uc3Qgcj0hISgxNiZ5KSxsPTE1Jnk7aWYobCsxPmMpdGhyb3cgbmV3IEVycm9yKCJCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3M6IEludmFsaWQgZGF0YVNpemUuIik7Y29uc3QgaD0xLHc9bi5yZWFkTnVtYmVyKCk7c3dpdGNoKGUpe2Nhc2UgMDpuLnJlYWRIZXgoZCxsKSxuLnJlYWRIZXhOdW1iZXIoZixsKSxzKGYsZCxsKSx0LmFkZENvZGVzcGFjZVJhbmdlKGwrMSxhKGQsbCksYShmLGwpKTtmb3IobGV0IGU9MTtlPHc7ZSsrKW8oZixsKSxuLnJlYWRIZXhOdW1iZXIoZCxsKSxzKGQsZixsKSxuLnJlYWRIZXhOdW1iZXIoZixsKSxzKGYsZCxsKSx0LmFkZENvZGVzcGFjZVJhbmdlKGwrMSxhKGQsbCksYShmLGwpKTticmVhaztjYXNlIDE6bi5yZWFkSGV4KGQsbCksbi5yZWFkSGV4TnVtYmVyKGYsbCkscyhmLGQsbCksbi5yZWFkTnVtYmVyKCk7Zm9yKGxldCBlPTE7ZTx3O2UrKylvKGYsbCksbi5yZWFkSGV4TnVtYmVyKGQsbCkscyhkLGYsbCksbi5yZWFkSGV4TnVtYmVyKGYsbCkscyhmLGQsbCksbi5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSAyOm4ucmVhZEhleChnLGwpLGI9bi5yZWFkTnVtYmVyKCksdC5tYXBPbmUoYShnLGwpLGIpO2ZvcihsZXQgZT0xO2U8dztlKyspbyhnLGwpLHJ8fChuLnJlYWRIZXhOdW1iZXIobSxsKSxzKGcsbSxsKSksYj1uLnJlYWRTaWduZWQoKSsoYisxKSx0Lm1hcE9uZShhKGcsbCksYik7YnJlYWs7Y2FzZSAzOm4ucmVhZEhleChkLGwpLG4ucmVhZEhleE51bWJlcihmLGwpLHMoZixkLGwpLGI9bi5yZWFkTnVtYmVyKCksdC5tYXBDaWRSYW5nZShhKGQsbCksYShmLGwpLGIpO2ZvcihsZXQgZT0xO2U8dztlKyspbyhmLGwpLHI/ZC5zZXQoZik6KG4ucmVhZEhleE51bWJlcihkLGwpLHMoZCxmLGwpKSxuLnJlYWRIZXhOdW1iZXIoZixsKSxzKGYsZCxsKSxiPW4ucmVhZE51bWJlcigpLHQubWFwQ2lkUmFuZ2UoYShkLGwpLGEoZixsKSxiKTticmVhaztjYXNlIDQ6bi5yZWFkSGV4KGcsaCksbi5yZWFkSGV4KHAsbCksdC5tYXBPbmUoYShnLGgpLGkocCxsKSk7Zm9yKGxldCBlPTE7ZTx3O2UrKylvKGcsaCkscnx8KG4ucmVhZEhleE51bWJlcihtLGgpLHMoZyxtLGgpKSxvKHAsbCksbi5yZWFkSGV4U2lnbmVkKG0sbCkscyhwLG0sbCksdC5tYXBPbmUoYShnLGgpLGkocCxsKSk7YnJlYWs7Y2FzZSA1Om4ucmVhZEhleChkLGgpLG4ucmVhZEhleE51bWJlcihmLGgpLHMoZixkLGgpLG4ucmVhZEhleChwLGwpLHQubWFwQmZSYW5nZShhKGQsaCksYShmLGgpLGkocCxsKSk7Zm9yKGxldCBlPTE7ZTx3O2UrKylvKGYsaCkscj9kLnNldChmKToobi5yZWFkSGV4TnVtYmVyKGQsaCkscyhkLGYsaCkpLG4ucmVhZEhleE51bWJlcihmLGgpLHMoZixkLGgpLG4ucmVhZEhleChwLGwpLHQubWFwQmZSYW5nZShhKGQsaCksYShmLGgpLGkocCxsKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzcyAtIHVua25vd24gdHlwZTogIi5jb25jYXQoZSkpfX1yZXR1cm4gdT9yKHUpOnR9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlBhcnNlcj10LkxpbmVhcml6YXRpb249dC5MZXhlcj12b2lkIDAscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDIpO3ZhciBuPXIoMTQ0KSxhPXIoMTUwKSxpPXIoMTQ5KSxzPXIoMTU0KSxvPXIoMTY3KSxjPXIoMTY5KSxsPXIoMTcwKSxoPXIoMTcyKSx1PXIoMTczKSxkPXIoMTc2KSxmPXIoMTc5KSxnPXIoMTgxKSxwPXIoMTgyKSxtPXIoMTgzKTtjbGFzcyBie2NvbnN0cnVjdG9yKGUpe2xldHtsZXhlcjp0LHhyZWY6cixhbGxvd1N0cmVhbXM6bj0hMSxyZWNvdmVyeU1vZGU6YT0hMX09ZTt0aGlzLmxleGVyPXQsdGhpcy54cmVmPXIsdGhpcy5hbGxvd1N0cmVhbXM9bix0aGlzLnJlY292ZXJ5TW9kZT1hLHRoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ltYWdlSWQ9MCx0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpLHRoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7dGhpcy5idWYyIGluc3RhbmNlb2YgYS5DbWQmJiJJRCI9PT10aGlzLmJ1ZjIuY21kPyh0aGlzLmJ1ZjE9dGhpcy5idWYyLHRoaXMuYnVmMj1udWxsKToodGhpcy5idWYxPXRoaXMuYnVmMix0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKSl9dHJ5U2hpZnQoKXt0cnl7cmV0dXJuIHRoaXMuc2hpZnQoKSwhMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaS5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybiExfX1nZXRPYmooKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDtjb25zdCB0PXRoaXMuYnVmMTtpZih0aGlzLnNoaWZ0KCksdCBpbnN0YW5jZW9mIGEuQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3Qgcj1bXTtmb3IoOyEoMCxhLmlzQ21kKSh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09YS5FT0Y7KXIucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09YS5FT0Ype2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiByO3Rocm93IG5ldyBpLlBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXJldHVybiB0aGlzLnNoaWZ0KCkscjtjYXNlIjw8Ijpjb25zdCBzPW5ldyBhLkRpY3QodGhpcy54cmVmKTtmb3IoOyEoMCxhLmlzQ21kKSh0aGlzLmJ1ZjEsIj4+IikmJnRoaXMuYnVmMSE9PWEuRU9GOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBhLk5hbWUpKXsoMCxuLmluZm8pKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpLHRoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO2lmKHRoaXMuc2hpZnQoKSx0aGlzLmJ1ZjE9PT1hLkVPRilicmVhaztzLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT1hLkVPRil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIHM7dGhyb3cgbmV3IGkuUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1yZXR1cm4oMCxhLmlzQ21kKSh0aGlzLmJ1ZjIsInN0cmVhbSIpP3RoaXMuYWxsb3dTdHJlYW1zP3RoaXMubWFrZVN0cmVhbShzLGUpOnM6KHRoaXMuc2hpZnQoKSxzKTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmKDAsYS5pc0NtZCkodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9YS5SZWYuZ2V0KHQsdGhpcy5idWYxKTtyZXR1cm4gdGhpcy5zaGlmdCgpLHRoaXMuc2hpZnQoKSxlfXJldHVybiB0fXJldHVybiJzdHJpbmciPT10eXBlb2YgdCYmZT9lLmRlY3J5cHRTdHJpbmcodCk6dH1maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKXtjb25zdHtrbm93bkNvbW1hbmRzOnR9PXRoaXMubGV4ZXIscj1lLnBvcztsZXQgbyxjLGw9MDtmb3IoOy0xIT09KG89ZS5nZXRCeXRlKCkpOylpZigwPT09bClsPTY5PT09bz8xOjA7ZWxzZSBpZigxPT09bClsPTczPT09bz8yOjA7ZWxzZSBpZigzMj09PW98fDEwPT09b3x8MTM9PT1vKXtjPWUucG9zO2NvbnN0IHI9ZS5wZWVrQnl0ZXMoMTUpLGk9ci5sZW5ndGg7aWYoMD09PWkpYnJlYWs7Zm9yKGxldCBlPTA7ZTxpO2UrKylpZihvPXJbZV0sKDAhPT1vfHwwPT09cltlKzFdKSYmMTAhPT1vJiYxMyE9PW8mJihvPDMyfHxvPjEyNykpe2w9MDticmVha31pZigyIT09bCljb250aW51ZTtpZighdCl7KDAsbi53YXJuKSgiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IGg9bmV3IHYobmV3IHMuU3RyZWFtKHIuc2xpY2UoKSksdCk7aC5faGV4U3RyaW5nV2Fybj0oKT0+e307bGV0IHU9MDtmb3IoOzspe2NvbnN0IGU9aC5nZXRPYmooKTtpZihlPT09YS5FT0Ype2w9MDticmVha31pZihlIGluc3RhbmNlb2YgYS5DbWQpe2NvbnN0IHI9dFtlLmNtZF07aWYoIXIpe2w9MDticmVha31pZihyLnZhcmlhYmxlQXJncz91PD1yLm51bUFyZ3M6dT09PXIubnVtQXJncylicmVhazt1PTB9ZWxzZSB1Kyt9aWYoMj09PWwpYnJlYWt9ZWxzZSBsPTA7LTE9PT1vJiYoKDAsbi53YXJuKSgiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQ6IFJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhvdXQgZmluZGluZyBhIHZhbGlkIEVJIG1hcmtlciIpLGMmJigoMCxuLndhcm4pKCcuLi4gdHJ5aW5nIHRvIHJlY292ZXIgYnkgdXNpbmcgdGhlIGxhc3QgIkVJIiBvY2N1cnJlbmNlLicpLGUuc2tpcCgtKGUucG9zLWMpKSkpO2xldCBoPTQ7cmV0dXJuIGUuc2tpcCgtaCksbz1lLnBlZWtCeXRlKCksZS5za2lwKGgpLCgwLGkuaXNXaGl0ZVNwYWNlKShvKXx8aC0tLGUucG9zLWgtcn1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IHIsYSxpPSExO2Zvcig7LTEhPT0ocj1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PXIpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6aT0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDphPWUuZ2V0VWludDE2KCksYT4yP2Uuc2tpcChhLTIpOmUuc2tpcCgtMil9aWYoaSlicmVha31jb25zdCBzPWUucG9zLXQ7cmV0dXJuLTE9PT1yPygoMCxuLndhcm4pKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpLGUuc2tpcCgtcyksdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKSk6KHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpLHMpfWZpbmRBU0NJSTg1RGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IHI7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMTI2PT09cil7Y29uc3QgdD1lLnBvcztmb3Iocj1lLnBlZWtCeXRlKCk7KDAsaS5pc1doaXRlU3BhY2UpKHIpOyllLnNraXAoKSxyPWUucGVla0J5dGUoKTtpZig2Mj09PXIpe2Uuc2tpcCgpO2JyZWFrfWlmKGUucG9zPnQpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMik7aWYoNjk9PT10WzBdJiY3Mz09PXRbMV0pYnJlYWt9fWNvbnN0IGE9ZS5wb3MtdDtyZXR1cm4tMT09PXI/KCgwLG4ud2FybikoIklubGluZSBBU0NJSTg1RGVjb2RlIGltYWdlIHN0cmVhbTogRU9EIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpLGUuc2tpcCgtYSksdGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChlKSk6KHRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpLGEpfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCByO2Zvcig7LTEhPT0ocj1lLmdldEJ5dGUoKSkmJjYyIT09cjspO2NvbnN0IGE9ZS5wb3MtdDtyZXR1cm4tMT09PXI/KCgwLG4ud2FybikoIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKSxlLnNraXAoLWEpLHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSkpOih0aGlzLmlubGluZVN0cmVhbVNraXBFSShlKSxhKX1pbmxpbmVTdHJlYW1Ta2lwRUkoZSl7bGV0IHQscj0wO2Zvcig7LTEhPT0odD1lLmdldEJ5dGUoKSk7KWlmKDA9PT1yKXI9Njk9PT10PzE6MDtlbHNlIGlmKDE9PT1yKXI9NzM9PT10PzI6MDtlbHNlIGlmKDI9PT1yKWJyZWFrfW1ha2VJbmxpbmVJbWFnZShlKXtjb25zdCB0PXRoaXMubGV4ZXIscj10LnN0cmVhbSxpPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHM7Zm9yKDshKDAsYS5pc0NtZCkodGhpcy5idWYxLCJJRCIpJiZ0aGlzLmJ1ZjEhPT1hLkVPRjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgYS5OYW1lKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRGljdGlvbmFyeSBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7Y29uc3QgdD10aGlzLmJ1ZjEubmFtZTtpZih0aGlzLnNoaWZ0KCksdGhpcy5idWYxPT09YS5FT0YpYnJlYWs7aVt0XT10aGlzLmdldE9iaihlKX0tMSE9PXQuYmVnaW5JbmxpbmVJbWFnZVBvcyYmKHM9ci5wb3MtdC5iZWdpbklubGluZUltYWdlUG9zKTtjb25zdCBvPXRoaXMueHJlZi5mZXRjaElmUmVmKGkuRnx8aS5GaWx0ZXIpO2xldCBjO2lmKG8gaW5zdGFuY2VvZiBhLk5hbWUpYz1vLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPXRoaXMueHJlZi5mZXRjaElmUmVmKG9bMF0pO2UgaW5zdGFuY2VvZiBhLk5hbWUmJihjPWUubmFtZSl9Y29uc3QgbD1yLnBvcztsZXQgaCx1O3N3aXRjaChjKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmg9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKHIpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmg9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChyKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6aD10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChyKTticmVhaztkZWZhdWx0Omg9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChyKX1pZihoPDFlMyYmcz4wKXtjb25zdCBlPXIucG9zO3IucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcyx1PWZ1bmN0aW9uKGUpe2NvbnN0IHQ9W10scj1lLmxlbmd0aDtsZXQgbj0wO2Zvcig7bjxyLTE7KXQucHVzaChlW24rK108PDh8ZVtuKytdKTtyZXR1cm4gbjxyJiZ0LnB1c2goZVtuXSkscisiXyIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfShyLmdldEJ5dGVzKHMraCkpLHIucG9zPWU7Y29uc3Qgbj10aGlzLmltYWdlQ2FjaGVbdV07aWYodm9pZCAwIT09bilyZXR1cm4gdGhpcy5idWYyPWEuQ21kLmdldCgiRUkiKSx0aGlzLnNoaWZ0KCksbi5yZXNldCgpLG59Y29uc3QgZD1uZXcgYS5EaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gaSlkLnNldChlLGlbZV0pO2xldCBmPXIubWFrZVN1YlN0cmVhbShsLGgsZCk7cmV0dXJuIGUmJihmPWUuY3JlYXRlU3RyZWFtKGYsaCkpLGY9dGhpcy5maWx0ZXIoZixkLGgpLGYuZGljdD1kLHZvaWQgMCE9PXUmJihmLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZCx0aGlzLmltYWdlQ2FjaGVbdV09ZiksdGhpcy5idWYyPWEuQ21kLmdldCgiRUkiKSx0aGlzLnNoaWZ0KCksZn1fZmluZFN0cmVhbUxlbmd0aChlLHQpe2NvbnN0e3N0cmVhbTpyfT10aGlzLmxleGVyO3IucG9zPWU7Y29uc3Qgbj10Lmxlbmd0aDtmb3IoO3IucG9zPHIuZW5kOyl7Y29uc3QgYT1yLnBlZWtCeXRlcygyMDQ4KSxpPWEubGVuZ3RoLW47aWYoaTw9MClicmVhaztsZXQgcz0wO2Zvcig7czxpOyl7bGV0IGk9MDtmb3IoO2k8biYmYVtzK2ldPT09dFtpXTspaSsrO2lmKGk+PW4pcmV0dXJuIHIucG9zKz1zLHIucG9zLWU7cysrfXIucG9zKz1pfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCByPXRoaXMubGV4ZXI7bGV0IHM9ci5zdHJlYW07ci5za2lwVG9OZXh0TGluZSgpO2NvbnN0IG89cy5wb3MtMTtsZXQgYz1lLmdldCgiTGVuZ3RoIik7aWYoTnVtYmVyLmlzSW50ZWdlcihjKXx8KCgwLG4uaW5mbykoJ0JhZCBsZW5ndGggIicuY29uY2F0KGMmJmMudG9TdHJpbmcoKSwnIiBpbiBzdHJlYW0uJykpLGM9MCkscy5wb3M9bytjLHIubmV4dENoYXIoKSx0aGlzLnRyeVNoaWZ0KCkmJigwLGEuaXNDbWQpKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7Y29uc3QgZT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTE1LDExNiwxMTQsMTAxLDk3LDEwOV0pO2xldCB0PXRoaXMuX2ZpbmRTdHJlYW1MZW5ndGgobyxlKTtpZih0PDApe2NvbnN0IHI9MTtmb3IobGV0IGE9MTthPD1yO2ErKyl7Y29uc3Qgcj1lLmxlbmd0aC1hLGM9ZS5zbGljZSgwLHIpLGw9dGhpcy5fZmluZFN0cmVhbUxlbmd0aChvLGMpO2lmKGw+PTApe2NvbnN0IGU9cy5wZWVrQnl0ZXMocisxKVtyXTtpZighKDAsaS5pc1doaXRlU3BhY2UpKGUpKWJyZWFrOygwLG4uaW5mbykoJ0ZvdW5kICInLmNvbmNhdCgoMCxuLmJ5dGVzVG9TdHJpbmcpKGMpLCciIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC4nKSksdD1sO2JyZWFrfX1pZih0PDApdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIil9Yz10LHIubmV4dENoYXIoKSx0aGlzLnNoaWZ0KCksdGhpcy5zaGlmdCgpfXJldHVybiB0aGlzLnNoaWZ0KCkscz1zLm1ha2VTdWJTdHJlYW0obyxjLGUpLHQmJihzPXQuY3JlYXRlU3RyZWFtKHMsYykpLHM9dGhpcy5maWx0ZXIocyxlLGMpLHMuZGljdD1lLHN9ZmlsdGVyKGUsdCxyKXtsZXQgaT10LmdldCgiRiIsIkZpbHRlciIpLHM9dC5nZXQoIkRQIiwiRGVjb2RlUGFybXMiKTtpZihpIGluc3RhbmNlb2YgYS5OYW1lKXJldHVybiBBcnJheS5pc0FycmF5KHMpJiYoMCxuLndhcm4pKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKSx0aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUscixzKTtsZXQgbz1yO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IHQ9aSxyPXM7Zm9yKGxldCBjPTAsbD10Lmxlbmd0aDtjPGw7KytjKXtpZihpPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbY10pLCEoaSBpbnN0YW5jZW9mIGEuTmFtZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoJ0JhZCBmaWx0ZXIgbmFtZSAiJy5jb25jYXQoaSwnIicpKTtzPW51bGwsQXJyYXkuaXNBcnJheShyKSYmYyBpbiByJiYocz10aGlzLnhyZWYuZmV0Y2hJZlJlZihyW2NdKSksZT10aGlzLm1ha2VGaWx0ZXIoZSxpLm5hbWUsbyxzKSxvPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LHIsYSl7aWYoMD09PXIpcmV0dXJuKDAsbi53YXJuKSgnRW1wdHkgIicuY29uY2F0KHQsJyIgc3RyZWFtLicpKSxuZXcgcy5OdWxsU3RyZWFtO3RyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIGE/bmV3IHAuUHJlZGljdG9yU3RyZWFtKG5ldyBoLkZsYXRlU3RyZWFtKGUscikscixhKTpuZXcgaC5GbGF0ZVN0cmVhbShlLHIpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtyZXR1cm4gYT8oYS5oYXMoIkVhcmx5Q2hhbmdlIikmJih0PWEuZ2V0KCJFYXJseUNoYW5nZSIpKSxuZXcgcC5QcmVkaWN0b3JTdHJlYW0obmV3IGcuTFpXU3RyZWFtKGUscix0KSxyLGEpKTpuZXcgZy5MWldTdHJlYW0oZSxyLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBkLkpwZWdTdHJlYW0oZSxyLGEpO2Nhc2UiSlBYIjpjYXNlIkpQWERlY29kZSI6cmV0dXJuIG5ldyBmLkpweFN0cmVhbShlLHIsYSk7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6cmV0dXJuIG5ldyBvLkFzY2lpODVTdHJlYW0oZSxyKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBjLkFzY2lpSGV4U3RyZWFtKGUscik7Y2FzZSJDQ0YiOmNhc2UiQ0NJVFRGYXhEZWNvZGUiOnJldHVybiBuZXcgbC5DQ0lUVEZheFN0cmVhbShlLHIsYSk7Y2FzZSJSTCI6Y2FzZSJSdW5MZW5ndGhEZWNvZGUiOnJldHVybiBuZXcgbS5SdW5MZW5ndGhTdHJlYW0oZSxyKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IHUuSmJpZzJTdHJlYW0oZSxyLGEpfXJldHVybigwLG4ud2FybikoJ0ZpbHRlciAiJy5jb25jYXQodCwnIiBpcyBub3Qgc3VwcG9ydGVkLicpKSxlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBpLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuKDAsbi53YXJuKSgnSW52YWxpZCBzdHJlYW06ICInLmNvbmNhdChlLCciJykpLG5ldyBzLk51bGxTdHJlYW19fX10LlBhcnNlcj1iO2NvbnN0IHk9WzEsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMiwwLDAsMiwyLDAsMCwwLDAsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdO2Z1bmN0aW9uIHcoZSl7cmV0dXJuIGU+PTQ4JiZlPD01Nz8xNSZlOmU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMj85KygxNSZlKTotMX1jbGFzcyB2e2NvbnN0cnVjdG9yKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO3RoaXMuc3RyZWFtPWUsdGhpcy5uZXh0Q2hhcigpLHRoaXMuc3RyQnVmPVtdLHRoaXMua25vd25Db21tYW5kcz10LHRoaXMuX2hleFN0cmluZ051bVdhcm49MCx0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEscj0wLGE9MTtpZig0NT09PWU/KGE9LTEsZT10aGlzLm5leHRDaGFyKCksNDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpKTo0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSksMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSYmKHI9MTAsZT10aGlzLm5leHRDaGFyKCkpLGU8NDh8fGU+NTcpe2NvbnN0IHQ9IkludmFsaWQgbnVtYmVyOiAiLmNvbmNhdChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpLCIgKGNoYXJDb2RlICIpLmNvbmNhdChlLCIpIik7aWYoKDAsaS5pc1doaXRlU3BhY2UpKGUpfHwtMT09PWUpcmV0dXJuKDAsbi5pbmZvKSgnTGV4ZXIuZ2V0TnVtYmVyIC0gIicuY29uY2F0KHQsJyIuJykpLDA7dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IodCl9bGV0IHM9ZS00OCxvPTAsYz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCBuPWUtNDg7dD9vPTEwKm8rbjooMCE9PXImJihyKj0xMCkscz0xMCpzK24pfWVsc2UgaWYoNDY9PT1lKXtpZigwIT09cilicmVhaztyPTF9ZWxzZSBpZig0NT09PWUpKDAsbi53YXJuKSgiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIik7ZWxzZXtpZig2OSE9PWUmJjEwMSE9PWUpYnJlYWs7aWYoZT10aGlzLnBlZWtDaGFyKCksNDM9PT1lfHw0NT09PWUpYz00NT09PWU/LTE6MSx0aGlzLm5leHRDaGFyKCk7ZWxzZSBpZihlPDQ4fHxlPjU3KWJyZWFrO3Q9ITB9cmV0dXJuIDAhPT1yJiYocy89ciksdCYmKHMqPTEwKiooYypvKSksYSpzfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCByPXRoaXMuc3RyQnVmO3IubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IGk9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOigwLG4ud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKSx0PSEwO2JyZWFrO2Nhc2UgNDA6KytlLHIucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6MD09LS1lPyh0aGlzLm5leHRDaGFyKCksdD0hMCk6ci5wdXNoKCIpIik7YnJlYWs7Y2FzZSA5Mjpzd2l0Y2goYT10aGlzLm5leHRDaGFyKCksYSl7Y2FzZS0xOigwLG4ud2FybikoIlVudGVybWluYXRlZCBzdHJpbmciKSx0PSEwO2JyZWFrO2Nhc2UgMTEwOnIucHVzaCgiXG4iKTticmVhaztjYXNlIDExNDpyLnB1c2goIlxyIik7YnJlYWs7Y2FzZSAxMTY6ci5wdXNoKCJcdCIpO2JyZWFrO2Nhc2UgOTg6ci5wdXNoKCJcYiIpO2JyZWFrO2Nhc2UgMTAyOnIucHVzaCgiXGYiKTticmVhaztjYXNlIDkyOmNhc2UgNDA6Y2FzZSA0MTpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSk7YnJlYWs7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmxldCBlPTE1JmE7YT10aGlzLm5leHRDaGFyKCksaT0hMCxhPj00OCYmYTw9NTUmJihlPShlPDwzKSsoMTUmYSksYT10aGlzLm5leHRDaGFyKCksYT49NDgmJmE8PTU1JiYoaT0hMSxlPShlPDwzKSsoMTUmYSkpKSxyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YnJlYWs7Y2FzZSAxMzoxMD09PXRoaXMucGVla0NoYXIoKSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrO2Nhc2UgMTA6YnJlYWs7ZGVmYXVsdDpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9YnJlYWs7ZGVmYXVsdDpyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhKSl9aWYodClicmVhaztpfHwoYT10aGlzLm5leHRDaGFyKCkpfXJldHVybiByLmpvaW4oIiIpfWdldE5hbWUoKXtsZXQgZSx0O2NvbnN0IHI9dGhpcy5zdHJCdWY7Zm9yKHIubGVuZ3RoPTA7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIXlbZV07KWlmKDM1PT09ZSl7aWYoZT10aGlzLm5leHRDaGFyKCkseVtlXSl7KDAsbi53YXJuKSgiTGV4ZXJfZ2V0TmFtZTogTlVNQkVSIFNJR04gKCMpIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhIGhleGFkZWNpbWFsIG51bWJlci4iKSxyLnB1c2goIiMiKTticmVha31jb25zdCBhPXcoZSk7aWYoLTEhPT1hKXt0PWUsZT10aGlzLm5leHRDaGFyKCk7Y29uc3QgaT13KGUpO2lmKC0xPT09aSl7aWYoKDAsbi53YXJuKSgiTGV4ZXJfZ2V0TmFtZTogSWxsZWdhbCBkaWdpdCAoIi5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZShlKSwiKSBpbiBoZXhhZGVjaW1hbCBudW1iZXIuIikpLHIucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZSh0KSkseVtlXSlicmVhaztyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxpKSl9ZWxzZSByLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2Ugci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO3JldHVybiByLmxlbmd0aD4xMjcmJigwLG4ud2FybikoIk5hbWUgdG9rZW4gaXMgbG9uZ2VyIHRoYW4gYWxsb3dlZCBieSB0aGUgc3BlYzogIi5jb25jYXQoci5sZW5ndGgpKSxhLk5hbWUuZ2V0KHIuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPXRoaXMuX2hleFN0cmluZ051bVdhcm4rKz90aGlzLl9oZXhTdHJpbmdOdW1XYXJuPjV8fCgwLG4ud2FybikoImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGludmFsaWQgY2hhcmFjdGVyOiAiLmNvbmNhdChlKSk6KDAsbi53YXJuKSgiZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgYWRkaXRpb25hbCBpbnZhbGlkIGNoYXJhY3RlcnMuIil9Z2V0SGV4U3RyaW5nKCl7Y29uc3QgZT10aGlzLnN0ckJ1ZjtlLmxlbmd0aD0wO2xldCB0LHIsYT10aGlzLmN1cnJlbnRDaGFyLGk9ITA7Zm9yKHRoaXMuX2hleFN0cmluZ051bVdhcm49MDs7KXtpZihhPDApeygwLG4ud2FybikoIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT1hKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PXlbYV0pe2lmKGkpe2lmKHQ9dyhhKSwtMT09PXQpe3RoaXMuX2hleFN0cmluZ1dhcm4oYSksYT10aGlzLm5leHRDaGFyKCk7Y29udGludWV9fWVsc2V7aWYocj13KGEpLC0xPT09cil7dGhpcy5faGV4U3RyaW5nV2FybihhKSxhPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX1lLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0PDw0fHIpKX1pPSFpLGE9dGhpcy5uZXh0Q2hhcigpfWVsc2UgYT10aGlzLm5leHRDaGFyKCl9cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBhLkVPRjtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT15W3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnJldHVybiB0aGlzLm5leHRDaGFyKCksYS5DbWQuZ2V0KCJbIik7Y2FzZSA5MzpyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLGEuQ21kLmdldCgiXSIpO2Nhc2UgNjA6cmV0dXJuIHQ9dGhpcy5uZXh0Q2hhcigpLDYwPT09dD8odGhpcy5uZXh0Q2hhcigpLGEuQ21kLmdldCgiPDwiKSk6dGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnJldHVybiB0PXRoaXMubmV4dENoYXIoKSw2Mj09PXQ/KHRoaXMubmV4dENoYXIoKSxhLkNtZC5nZXQoIj4+IikpOmEuQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnJldHVybiB0aGlzLm5leHRDaGFyKCksYS5DbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6cmV0dXJuIHRoaXMubmV4dENoYXIoKSxhLkNtZC5nZXQoIn0iKTtjYXNlIDQxOnRocm93IHRoaXMubmV4dENoYXIoKSxuZXcgbi5Gb3JtYXRFcnJvcigiSWxsZWdhbCBjaGFyYWN0ZXI6ICIuY29uY2F0KHQpKX1sZXQgcj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXJldHVybiB0aGlzLm5leHRDaGFyKCksYS5DbWQuZ2V0KHIpfWNvbnN0IGk9dGhpcy5rbm93bkNvbW1hbmRzO2xldCBzPXZvaWQgMCE9PShudWxsPT1pP3ZvaWQgMDppW3JdKTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiF5W3RdOyl7Y29uc3QgZT1yK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYocyYmdm9pZCAwPT09aVtlXSlicmVhaztpZigxMjg9PT1yLmxlbmd0aCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogIi5jb25jYXQoci5sZW5ndGgpKTtyPWUscz12b2lkIDAhPT0obnVsbD09aT92b2lkIDA6aVtyXSl9cmV0dXJuInRydWUiPT09cnx8ImZhbHNlIiE9PXImJigibnVsbCI9PT1yP251bGw6KCJCSSI9PT1yJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyksYS5DbWQuZ2V0KHIpKSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCksMTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX10LkxleGVyPXYsdC5MaW5lYXJpemF0aW9uPWNsYXNze3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gdChlLHQpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3Qgbj1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKG4pJiYocj9uPj0wOm4+MCkpcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKCdUaGUgIicuY29uY2F0KHQsJyIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4nKSl9Y29uc3Qgcj1uZXcgYih7bGV4ZXI6bmV3IHYoZSkseHJlZjpudWxsfSksbj1yLmdldE9iaigpLGk9ci5nZXRPYmooKSxzPXIuZ2V0T2JqKCksbz1yLmdldE9iaigpO2xldCBjLGw7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKG4pJiZOdW1iZXIuaXNJbnRlZ2VyKGkpJiYoMCxhLmlzQ21kKShzLCJvYmoiKSYmbyBpbnN0YW5jZW9mIGEuRGljdCYmIm51bWJlciI9PXR5cGVvZihjPW8uZ2V0KCJMaW5lYXJpemVkIikpJiZjPjApKXJldHVybiBudWxsO2lmKChsPXQobywiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOmwsaGludHM6ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCByO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KHI9dC5sZW5ndGgpfHw0PT09cikpe2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHI9dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIocikmJnI+MCkpdGhyb3cgbmV3IEVycm9yKCJIaW50ICgiLmNvbmNhdChlLCIpIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKSl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0obyksb2JqZWN0TnVtYmVyRmlyc3Q6dChvLCJPIiksZW5kRmlyc3Q6dChvLCJFIiksbnVtUGFnZXM6dChvLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OnQobywiVCIpLHBhZ2VGaXJzdDpvLmhhcygiUCIpP3QobywiUCIsITApOjB9fX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Bc2NpaTg1U3RyZWFtPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNjgpLGE9cigxNDkpO2NsYXNzIGkgZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uOCksc3VwZXIodCksdGhpcy5zdHI9ZSx0aGlzLmRpY3Q9ZS5kaWN0LHRoaXMuaW5wdXQ9bmV3IFVpbnQ4QXJyYXkoNSl9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cjtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoOygwLGEuaXNXaGl0ZVNwYWNlKSh0KTspdD1lLmdldEJ5dGUoKTtpZigtMT09PXR8fDEyNj09PXQpcmV0dXJuIHZvaWQodGhpcy5lb2Y9ITApO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGg7bGV0IG4saTtpZigxMjI9PT10KXtmb3Iobj10aGlzLmVuc3VyZUJ1ZmZlcihyKzQpLGk9MDtpPDQ7KytpKW5bcitpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O2ZvcihzWzBdPXQsaT0xO2k8NTsrK2kpe2Zvcih0PWUuZ2V0Qnl0ZSgpOygwLGEuaXNXaGl0ZVNwYWNlKSh0KTspdD1lLmdldEJ5dGUoKTtpZihzW2ldPXQsLTE9PT10fHwxMjY9PT10KWJyZWFrfWlmKG49dGhpcy5lbnN1cmVCdWZmZXIocitpLTEpLHRoaXMuYnVmZmVyTGVuZ3RoKz1pLTEsaTw1KXtmb3IoO2k8NTsrK2kpc1tpXT0xMTc7dGhpcy5lb2Y9ITB9bGV0IG89MDtmb3IoaT0wO2k8NTsrK2kpbz04NSpvKyhzW2ldLTMzKTtmb3IoaT0zO2k+PTA7LS1pKW5bcitpXT0yNTUmbyxvPj49OH19fXQuQXNjaWk4NVN0cmVhbT1pfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU3RyZWFtc1NlcXVlbmNlU3RyZWFtPXQuRGVjb2RlU3RyZWFtPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigxMzkpO3ZhciBuPXIoMTUxKSxhPXIoMTU0KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KDApO2NsYXNzIHMgZXh0ZW5kcyBuLkJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSl7aWYoc3VwZXIoKSx0aGlzLl9yYXdNaW5CdWZmZXJMZW5ndGg9ZXx8MCx0aGlzLnBvcz0wLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5lb2Y9ITEsdGhpcy5idWZmZXI9aSx0aGlzLm1pbkJ1ZmZlckxlbmd0aD01MTIsZSlmb3IoO3RoaXMubWluQnVmZmVyTGVuZ3RoPGU7KXRoaXMubWluQnVmZmVyTGVuZ3RoKj0yfWdldCBpc0VtcHR5KCl7Zm9yKDshdGhpcy5lb2YmJjA9PT10aGlzLmJ1ZmZlckxlbmd0aDspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gMD09PXRoaXMuYnVmZmVyTGVuZ3RofWVuc3VyZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnVmZmVyO2lmKGU8PXQuYnl0ZUxlbmd0aClyZXR1cm4gdDtsZXQgcj10aGlzLm1pbkJ1ZmZlckxlbmd0aDtmb3IoO3I8ZTspcio9Mjtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO3JldHVybiBuLnNldCh0KSx0aGlzLmJ1ZmZlcj1ufWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWU7KXtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLnJlYWRCbG9jaygpfXJldHVybiB0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMucG9zO2xldCByO2lmKGUpe2Zvcih0aGlzLmVuc3VyZUJ1ZmZlcih0K2UpLHI9dCtlOyF0aGlzLmVvZiYmdGhpcy5idWZmZXJMZW5ndGg8cjspdGhpcy5yZWFkQmxvY2soKTtjb25zdCBuPXRoaXMuYnVmZmVyTGVuZ3RoO3I+biYmKHI9bil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtyPXRoaXMuYnVmZmVyTGVuZ3RofXJldHVybiB0aGlzLnBvcz1yLHRoaXMuYnVmZmVyLnN1YmFycmF5KHQscil9cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZih2b2lkIDA9PT10KWZvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO2Vsc2V7Y29uc3Qgcj1lK3Q7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ciYmIXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpfXJldHVybiBuZXcgYS5TdHJlYW0odGhpcy5idWZmZXIsZSx0LHIpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyP3RoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19dC5EZWNvZGVTdHJlYW09cyx0LlN0cmVhbXNTZXF1ZW5jZVN0cmVhbT1jbGFzcyBleHRlbmRzIHN7Y29uc3RydWN0b3IoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGwscj0wO2Zvcihjb25zdCB0IG9mIGUpcis9dCBpbnN0YW5jZW9mIHM/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKHIpLHRoaXMuc3RyZWFtcz1lLHRoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpcmV0dXJuIHZvaWQodGhpcy5lb2Y9ITApO2NvbnN0IHQ9ZS5zaGlmdCgpO2xldCByO3RyeXtyPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXt2YXIgbjtpZih0aGlzLl9vbkVycm9yKXJldHVybiB2b2lkIHRoaXMuX29uRXJyb3IoZSxudWxsPT09KG49dC5kaWN0KXx8dm9pZCAwPT09bj92b2lkIDA6bi5vYmpJZCk7dGhyb3cgZX1jb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLGk9YStyLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihpKS5zZXQocixhKSx0aGlzLmJ1ZmZlckxlbmd0aD1pfWdldEJhc2VTdHJlYW1zKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN0cmVhbXMpe2NvbnN0IHI9dC5nZXRCYXNlU3RyZWFtcygpO3ImJmUucHVzaCguLi5yKX1yZXR1cm4gZS5sZW5ndGg+MD9lOm51bGx9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkFzY2lpSGV4U3RyZWFtPXZvaWQgMDt2YXIgbj1yKDE2OCk7Y2xhc3MgYSBleHRlbmRzIG4uRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KSxzdXBlcih0KSx0aGlzLnN0cj1lLHRoaXMuZGljdD1lLmRpY3QsdGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpcmV0dXJuIHZvaWQodGhpcy5lb2Y9ITApO2NvbnN0IHQ9ZS5sZW5ndGgrMT4+MSxyPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK3QpO2xldCBuPXRoaXMuYnVmZmVyTGVuZ3RoLGE9dGhpcy5maXJzdERpZ2l0O2Zvcihjb25zdCB0IG9mIGUpe2xldCBlO2lmKHQ+PTQ4JiZ0PD01NyllPTE1JnQ7ZWxzZXtpZighKHQ+PTY1JiZ0PD03MHx8dD49OTcmJnQ8PTEwMikpe2lmKDYyPT09dCl7dGhpcy5lb2Y9ITA7YnJlYWt9Y29udGludWV9ZT05KygxNSZ0KX1hPDA/YT1lOihyW24rK109YTw8NHxlLGE9LTEpfWE+PTAmJnRoaXMuZW9mJiYocltuKytdPWE8PDQsYT0tMSksdGhpcy5maXJzdERpZ2l0PWEsdGhpcy5idWZmZXJMZW5ndGg9bn19dC5Bc2NpaUhleFN0cmVhbT1hfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ0NJVFRGYXhTdHJlYW09dm9pZCAwO3ZhciBuPXIoMTcxKSxhPXIoMTY4KSxpPXIoMTUwKTtjbGFzcyBzIGV4dGVuZHMgYS5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKHQpLHRoaXMuc3RyPWUsdGhpcy5kaWN0PWUuZGljdCxyIGluc3RhbmNlb2YgaS5EaWN0fHwocj1pLkRpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgbi5DQ0lUVEZheERlY29kZXIoYSx7SzpyLmdldCgiSyIpLEVuZE9mTGluZTpyLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjpyLmdldCgiRW5jb2RlZEJ5dGVBbGlnbiIpLENvbHVtbnM6ci5nZXQoIkNvbHVtbnMiKSxSb3dzOnIuZ2V0KCJSb3dzIiksRW5kT2ZCbG9jazpyLmdldCgiRW5kT2ZCbG9jayIpLEJsYWNrSXMxOnIuZ2V0KCJCbGFja0lzMSIpfSl9cmVhZEJsb2NrKCl7Zm9yKDshdGhpcy5lb2Y7KXtjb25zdCBlPXRoaXMuY2NpdHRGYXhEZWNvZGVyLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09ZSlyZXR1cm4gdm9pZCh0aGlzLmVvZj0hMCk7dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrMSksdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZX19fXQuQ0NJVFRGYXhTdHJlYW09c30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkNDSVRURmF4RGVjb2Rlcj12b2lkIDAscigyKSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpO2NvbnN0IGE9LTEsaT1bWy0xLC0xXSxbLTEsLTFdLFs3LDhdLFs3LDddLFs2LDZdLFs2LDZdLFs2LDVdLFs2LDVdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFs0LDBdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDFdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDRdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFszLDNdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdLFsxLDJdXSxzPVtbLTEsLTFdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNTYwXV0sbz1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sYz1bWy0xLC0xXSxbLTEsLTFdLFsxMiwtMl0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDE5ODRdLFsxMiwyMDQ4XSxbMTIsMjA0OF0sWzEyLDIxMTJdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIxNzZdLFsxMiwyMjQwXSxbMTIsMjI0MF0sWzEyLDIzMDRdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMiwyMzY4XSxbMTIsMjM2OF0sWzEyLDI0MzJdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI0OTZdLFsxMiwyNTYwXSxbMTIsMjU2MF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMiw1Ml0sWzEyLDUyXSxbMTMsNjQwXSxbMTMsNzA0XSxbMTMsNzY4XSxbMTMsODMyXSxbMTIsNTVdLFsxMiw1NV0sWzEyLDU2XSxbMTIsNTZdLFsxMywxMjgwXSxbMTMsMTM0NF0sWzEzLDE0MDhdLFsxMywxNDcyXSxbMTIsNTldLFsxMiw1OV0sWzEyLDYwXSxbMTIsNjBdLFsxMywxNTM2XSxbMTMsMTYwMF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTEsMjVdLFsxMywxNjY0XSxbMTMsMTcyOF0sWzEyLDMyMF0sWzEyLDMyMF0sWzEyLDM4NF0sWzEyLDM4NF0sWzEyLDQ0OF0sWzEyLDQ0OF0sWzEzLDUxMl0sWzEzLDU3Nl0sWzEyLDUzXSxbMTIsNTNdLFsxMiw1NF0sWzEyLDU0XSxbMTMsODk2XSxbMTMsOTYwXSxbMTMsMTAyNF0sWzEzLDEwODhdLFsxMywxMTUyXSxbMTMsMTIxNl0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdXSxsPVtbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzExLDIzXSxbMTEsMjNdLFsxMiw1MF0sWzEyLDUxXSxbMTIsNDRdLFsxMiw0NV0sWzEyLDQ2XSxbMTIsNDddLFsxMiw1N10sWzEyLDU4XSxbMTIsNjFdLFsxMiwyNTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE3XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTIsNDhdLFsxMiw0OV0sWzEyLDYyXSxbMTIsNjNdLFsxMiwzMF0sWzEyLDMxXSxbMTIsMzJdLFsxMiwzM10sWzEyLDQwXSxbMTIsNDFdLFsxMSwyMl0sWzExLDIyXSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzEyLDEyOF0sWzEyLDE5Ml0sWzEyLDI2XSxbMTIsMjddLFsxMiwyOF0sWzEyLDI5XSxbMTEsMTldLFsxMSwxOV0sWzExLDIwXSxbMTEsMjBdLFsxMiwzNF0sWzEyLDM1XSxbMTIsMzZdLFsxMiwzN10sWzEyLDM4XSxbMTIsMzldLFsxMSwyMV0sWzExLDIxXSxbMTIsNDJdLFsxMiw0M10sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzEwLDBdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl1dLGg9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO3QuQ0NJVFRGYXhEZWNvZGVyPWNsYXNze2NvbnN0cnVjdG9yKGUpe3ZhciB0O2xldCByLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7Zm9yKHRoaXMuc291cmNlPWUsdGhpcy5lb2Y9ITEsdGhpcy5lbmNvZGluZz1uLkt8fDAsdGhpcy5lb2xpbmU9bi5FbmRPZkxpbmV8fCExLHRoaXMuYnl0ZUFsaWduPW4uRW5jb2RlZEJ5dGVBbGlnbnx8ITEsdGhpcy5jb2x1bW5zPW4uQ29sdW1uc3x8MTcyOCx0aGlzLnJvd3M9bi5Sb3dzfHwwLHRoaXMuZW9ibG9jaz1udWxsPT09KHQ9bi5FbmRPZkJsb2NrKXx8dm9pZCAwPT09dHx8dCx0aGlzLmJsYWNrPW4uQmxhY2tJczF8fCExLHRoaXMuY29kaW5nTGluZT1uZXcgVWludDMyQXJyYXkodGhpcy5jb2x1bW5zKzEpLHRoaXMucmVmTGluZT1uZXcgVWludDMyQXJyYXkodGhpcy5jb2x1bW5zKzIpLHRoaXMuY29kaW5nTGluZVswXT10aGlzLmNvbHVtbnMsdGhpcy5jb2RpbmdQb3M9MCx0aGlzLnJvdz0wLHRoaXMubmV4dExpbmUyRD10aGlzLmVuY29kaW5nPDAsdGhpcy5pbnB1dEJpdHM9MCx0aGlzLmlucHV0QnVmPTAsdGhpcy5vdXRwdXRCaXRzPTAsdGhpcy5yb3dzRG9uZT0hMTswPT09KHI9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09ciYmdGhpcy5fZWF0Qml0cygxMiksdGhpcy5lbmNvZGluZz4wJiYodGhpcy5uZXh0TGluZTJEPSF0aGlzLl9sb29rQml0cygxKSx0aGlzLl9lYXRCaXRzKDEpKX1yZWFkTmV4dENoYXIoKXtpZih0aGlzLmVvZilyZXR1cm4tMTtjb25zdCBlPXRoaXMucmVmTGluZSx0PXRoaXMuY29kaW5nTGluZSxyPXRoaXMuY29sdW1ucztsZXQgaSxzLG8sYyxsO2lmKDA9PT10aGlzLm91dHB1dEJpdHMpe2lmKHRoaXMucm93c0RvbmUmJih0aGlzLmVvZj0hMCksdGhpcy5lb2YpcmV0dXJuLTE7bGV0IG8sbCxoO2lmKHRoaXMuZXJyPSExLHRoaXMubmV4dExpbmUyRCl7Zm9yKGM9MDt0W2NdPHI7KytjKWVbY109dFtjXTtmb3IoZVtjKytdPXIsZVtjXT1yLHRbMF09MCx0aGlzLmNvZGluZ1Bvcz0wLGk9MCxzPTA7dFt0aGlzLmNvZGluZ1Bvc108cjspc3dpdGNoKG89dGhpcy5fZ2V0VHdvRGltQ29kZSgpLG8pe2Nhc2UgMDp0aGlzLl9hZGRQaXhlbHMoZVtpKzFdLHMpLGVbaSsxXTxyJiYoaSs9Mik7YnJlYWs7Y2FzZSAxOmlmKG89bD0wLHMpe2Rve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Rve2wrPWg9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoaD49NjQpfWVsc2V7ZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7ZG97bCs9aD10aGlzLl9nZXRCbGFja0NvZGUoKX13aGlsZShoPj02NCl9Zm9yKHRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLHMpLHRbdGhpcy5jb2RpbmdQb3NdPHImJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStsLDFecyk7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08cjspaSs9MjticmVhaztjYXNlIDc6aWYodGhpcy5fYWRkUGl4ZWxzKGVbaV0rMyxzKSxzXj0xLHRbdGhpcy5jb2RpbmdQb3NdPHIpZm9yKCsraTtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxyOylpKz0yO2JyZWFrO2Nhc2UgNTppZih0aGlzLl9hZGRQaXhlbHMoZVtpXSsyLHMpLHNePTEsdFt0aGlzLmNvZGluZ1Bvc108cilmb3IoKytpO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPHI7KWkrPTI7YnJlYWs7Y2FzZSAzOmlmKHRoaXMuX2FkZFBpeGVscyhlW2ldKzEscyksc149MSx0W3RoaXMuY29kaW5nUG9zXTxyKWZvcigrK2k7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08cjspaSs9MjticmVhaztjYXNlIDI6aWYodGhpcy5fYWRkUGl4ZWxzKGVbaV0scyksc149MSx0W3RoaXMuY29kaW5nUG9zXTxyKWZvcigrK2k7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08cjspaSs9MjticmVhaztjYXNlIDg6aWYodGhpcy5fYWRkUGl4ZWxzTmVnKGVbaV0tMyxzKSxzXj0xLHRbdGhpcy5jb2RpbmdQb3NdPHIpZm9yKGk+MD8tLWk6KytpO2VbaV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2ldPHI7KWkrPTI7YnJlYWs7Y2FzZSA2OmlmKHRoaXMuX2FkZFBpeGVsc05lZyhlW2ldLTIscyksc149MSx0W3RoaXMuY29kaW5nUG9zXTxyKWZvcihpPjA/LS1pOisraTtlW2ldPD10W3RoaXMuY29kaW5nUG9zXSYmZVtpXTxyOylpKz0yO2JyZWFrO2Nhc2UgNDppZih0aGlzLl9hZGRQaXhlbHNOZWcoZVtpXS0xLHMpLHNePTEsdFt0aGlzLmNvZGluZ1Bvc108cilmb3IoaT4wPy0taTorK2k7ZVtpXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbaV08cjspaSs9MjticmVhaztjYXNlIGE6dGhpcy5fYWRkUGl4ZWxzKHIsMCksdGhpcy5lb2Y9ITA7YnJlYWs7ZGVmYXVsdDooMCxuLmluZm8pKCJiYWQgMmQgY29kZSIpLHRoaXMuX2FkZFBpeGVscyhyLDApLHRoaXMuZXJyPSEwfX1lbHNlIGZvcih0WzBdPTAsdGhpcy5jb2RpbmdQb3M9MCxzPTA7dFt0aGlzLmNvZGluZ1Bvc108cjspe2lmKG89MCxzKWRve28rPWg9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoaD49NjQpO2Vsc2UgZG97bys9aD10aGlzLl9nZXRXaGl0ZUNvZGUoKX13aGlsZShoPj02NCk7dGhpcy5fYWRkUGl4ZWxzKHRbdGhpcy5jb2RpbmdQb3NdK28scyksc149MX1sZXQgdT0hMTtpZih0aGlzLmJ5dGVBbGlnbiYmKHRoaXMuaW5wdXRCaXRzJj0tOCksdGhpcy5lb2Jsb2NrfHx0aGlzLnJvdyE9PXRoaXMucm93cy0xKXtpZihvPXRoaXMuX2xvb2tCaXRzKDEyKSx0aGlzLmVvbGluZSlmb3IoO28hPT1hJiYxIT09bzspdGhpcy5fZWF0Qml0cygxKSxvPXRoaXMuX2xvb2tCaXRzKDEyKTtlbHNlIGZvcig7MD09PW87KXRoaXMuX2VhdEJpdHMoMSksbz10aGlzLl9sb29rQml0cygxMik7MT09PW8/KHRoaXMuX2VhdEJpdHMoMTIpLHU9ITApOm89PT1hJiYodGhpcy5lb2Y9ITApfWVsc2UgdGhpcy5yb3dzRG9uZT0hMDtpZighdGhpcy5lb2YmJnRoaXMuZW5jb2Rpbmc+MCYmIXRoaXMucm93c0RvbmUmJih0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpLHRoaXMuX2VhdEJpdHMoMSkpLHRoaXMuZW9ibG9jayYmdSYmdGhpcy5ieXRlQWxpZ24pe2lmKG89dGhpcy5fbG9va0JpdHMoMTIpLDE9PT1vKXtpZih0aGlzLl9lYXRCaXRzKDEyKSx0aGlzLmVuY29kaW5nPjAmJih0aGlzLl9sb29rQml0cygxKSx0aGlzLl9lYXRCaXRzKDEpKSx0aGlzLmVuY29kaW5nPj0wKWZvcihjPTA7Yzw0OysrYylvPXRoaXMuX2xvb2tCaXRzKDEyKSwxIT09byYmKDAsbi5pbmZvKSgiYmFkIHJ0YyBjb2RlOiAiK28pLHRoaXMuX2VhdEJpdHMoMTIpLHRoaXMuZW5jb2Rpbmc+MCYmKHRoaXMuX2xvb2tCaXRzKDEpLHRoaXMuX2VhdEJpdHMoMSkpO3RoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtpZihvPXRoaXMuX2xvb2tCaXRzKDEzKSxvPT09YSlyZXR1cm4gdGhpcy5lb2Y9ITAsLTE7aWYobz4+MT09MSlicmVhazt0aGlzLl9lYXRCaXRzKDEpfXRoaXMuX2VhdEJpdHMoMTIpLHRoaXMuZW5jb2Rpbmc+MCYmKHRoaXMuX2VhdEJpdHMoMSksdGhpcy5uZXh0TGluZTJEPSEoMSZvKSl9dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV0sdGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpbD0xJnRoaXMuY29kaW5nUG9zPzA6MjU1LHRoaXMub3V0cHV0Qml0cy09OCwwPT09dGhpcy5vdXRwdXRCaXRzJiZ0W3RoaXMuY29kaW5nUG9zXTxyJiYodGhpcy5jb2RpbmdQb3MrKyx0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXSk7ZWxzZXtvPTgsbD0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdJbnZhbGlkIC9DQ0lUVEZheERlY29kZSBkYXRhLCAib3V0cHV0Qml0cyIgbXVzdCBiZSBhIG51bWJlci4nKTt0aGlzLm91dHB1dEJpdHM+bz8obDw8PW8sMSZ0aGlzLmNvZGluZ1Bvc3x8KGx8PTI1NT4+OC1vKSx0aGlzLm91dHB1dEJpdHMtPW8sbz0wKToobDw8PXRoaXMub3V0cHV0Qml0cywxJnRoaXMuY29kaW5nUG9zfHwobHw9MjU1Pj44LXRoaXMub3V0cHV0Qml0cyksby09dGhpcy5vdXRwdXRCaXRzLHRoaXMub3V0cHV0Qml0cz0wLHRbdGhpcy5jb2RpbmdQb3NdPHI/KHRoaXMuY29kaW5nUG9zKyssdGhpcy5vdXRwdXRCaXRzPXRbdGhpcy5jb2RpbmdQb3NdLXRbdGhpcy5jb2RpbmdQb3MtMV0pOm8+MCYmKGw8PD1vLG89MCkpfXdoaWxlKG8pfXJldHVybiB0aGlzLmJsYWNrJiYobF49MjU1KSxsfV9hZGRQaXhlbHMoZSx0KXtjb25zdCByPXRoaXMuY29kaW5nTGluZTtsZXQgYT10aGlzLmNvZGluZ1BvcztlPnJbYV0mJihlPnRoaXMuY29sdW1ucyYmKCgwLG4uaW5mbykoInJvdyBpcyB3cm9uZyBsZW5ndGgiKSx0aGlzLmVycj0hMCxlPXRoaXMuY29sdW1ucyksMSZhXnQmJisrYSxyW2FdPWUpLHRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IHI9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+clthXSllPnRoaXMuY29sdW1ucyYmKCgwLG4uaW5mbykoInJvdyBpcyB3cm9uZyBsZW5ndGgiKSx0aGlzLmVycj0hMCxlPXRoaXMuY29sdW1ucyksMSZhXnQmJisrYSxyW2FdPWU7ZWxzZSBpZihlPHJbYV0pe2ZvcihlPDAmJigoMCxuLmluZm8pKCJpbnZhbGlkIGNvZGUiKSx0aGlzLmVycj0hMCxlPTApO2E+MCYmZTxyW2EtMV07KS0tYTtyW2FdPWV9dGhpcy5jb2RpbmdQb3M9YX1fZmluZFRhYmxlQ29kZShlLHQscixuKXtjb25zdCBpPW58fDA7Zm9yKGxldCBuPWU7bjw9dDsrK24pe2xldCBlPXRoaXMuX2xvb2tCaXRzKG4pO2lmKGU9PT1hKXJldHVyblshMCwxLCExXTtpZihuPHQmJihlPDw9dC1uKSwhaXx8ZT49aSl7Y29uc3QgdD1yW2UtaV07aWYodFswXT09PW4pcmV0dXJuIHRoaXMuX2VhdEJpdHMobiksWyEwLHRbMV0sITBdfX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt2YXIgcjtpZih0PXRoaXMuX2xvb2tCaXRzKDcpLGU9aVt0XSwobnVsbD09PShyPWUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyWzBdKT4wKXJldHVybiB0aGlzLl9lYXRCaXRzKGVbMF0pLGVbMV19ZWxzZXtjb25zdCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMSw3LGkpO2lmKGVbMF0mJmVbMl0pcmV0dXJuIGVbMV19cmV0dXJuKDAsbi5pbmZvKSgiQmFkIHR3byBkaW0gY29kZSIpLGF9X2dldFdoaXRlQ29kZSgpe2xldCBlLHQ9MDtpZih0aGlzLmVvYmxvY2spe2lmKHQ9dGhpcy5fbG9va0JpdHMoMTIpLHQ9PT1hKXJldHVybiAxO2lmKGU9dD4+NT09MD9zW3RdOm9bdD4+M10sZVswXT4wKXJldHVybiB0aGlzLl9lYXRCaXRzKGVbMF0pLGVbMV19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxvKTtpZihlWzBdKXJldHVybiBlWzFdO2lmKGU9dGhpcy5fZmluZFRhYmxlQ29kZSgxMSwxMixzKSxlWzBdKXJldHVybiBlWzFdfXJldHVybigwLG4uaW5mbykoImJhZCB3aGl0ZSBjb2RlIiksdGhpcy5fZWF0Qml0cygxKSwxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7aWYoZT10aGlzLl9sb29rQml0cygxMyksZT09PWEpcmV0dXJuIDE7aWYodD1lPj43PT0wP2NbZV06ZT4+OT09MCYmZT4+NyE9MD9sWyhlPj4xKS02NF06aFtlPj43XSx0WzBdPjApcmV0dXJuIHRoaXMuX2VhdEJpdHModFswXSksdFsxXX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LGgpO2lmKGVbMF0pcmV0dXJuIGVbMV07aWYoZT10aGlzLl9maW5kVGFibGVDb2RlKDcsMTIsbCw2NCksZVswXSlyZXR1cm4gZVsxXTtpZihlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTAsMTMsYyksZVswXSlyZXR1cm4gZVsxXX1yZXR1cm4oMCxuLmluZm8pKCJiYWQgYmxhY2sgY29kZSIpLHRoaXMuX2VhdEJpdHMoMSksMX1fbG9va0JpdHMoZSl7bGV0IHQ7Zm9yKDt0aGlzLmlucHV0Qml0czxlOyl7aWYoLTE9PT0odD10aGlzLnNvdXJjZS5uZXh0KCkpKXJldHVybiAwPT09dGhpcy5pbnB1dEJpdHM/YTp0aGlzLmlucHV0QnVmPDxlLXRoaXMuaW5wdXRCaXRzJjY1NTM1Pj4xNi1lO3RoaXMuaW5wdXRCdWY9dGhpcy5pbnB1dEJ1Zjw8OHx0LHRoaXMuaW5wdXRCaXRzKz04fXJldHVybiB0aGlzLmlucHV0QnVmPj50aGlzLmlucHV0Qml0cy1lJjY1NTM1Pj4xNi1lfV9lYXRCaXRzKGUpeyh0aGlzLmlucHV0Qml0cy09ZSk8MCYmKHRoaXMuaW5wdXRCaXRzPTApfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5GbGF0ZVN0cmVhbT12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTY4KSxhPXIoMTQ0KTtjb25zdCBpPW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSkscz1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxvPW5ldyBJbnQzMkFycmF5KFsxLDIsMyw0LDY1NTQxLDY1NTQzLDEzMTA4MSwxMzEwODUsMTk2NjI1LDE5NjYzMywyNjIxNzcsMjYyMTkzLDMyNzc0NSwzMjc3NzcsMzkzMzQ1LDM5MzQwOSw0NTkwMDksNDU5MTM3LDUyNDgwMSw1MjUwNTcsNTkwODQ5LDU5MTM2MSw2NTc0MDksNjU4NDMzLDcyNDk5Myw3MjcwNDEsNzk0NjI1LDc5ODcyMSw4NjgzNTMsODc2NTQ1XSksYz1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0sbD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIGggZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpLHRoaXMuc3RyPWUsdGhpcy5kaWN0PWUuZGljdDtjb25zdCByPWUuZ2V0Qnl0ZSgpLG49ZS5nZXRCeXRlKCk7aWYoLTE9PT1yfHwtMT09PW4pdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogIi5jb25jYXQociwiLCAiKS5jb25jYXQobikpO2lmKDghPSgxNSZyKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QgaW4gZmxhdGUgc3RyZWFtOiAiLmNvbmNhdChyLCIsICIpLmNvbmNhdChuKSk7aWYoKChyPDw4KStuKSUzMSE9MCl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICIuY29uY2F0KHIsIiwgIikuY29uY2F0KG4pKTtpZigzMiZuKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogIi5jb25jYXQociwiLCAiKS5jb25jYXQobikpO3RoaXMuY29kZVNpemU9MCx0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IHIsbj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7bjxlOyl7aWYoLTE9PT0ocj10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtpfD1yPDxuLG4rPTh9cmV0dXJuIHI9aSYoMTw8ZSktMSx0aGlzLmNvZGVCdWY9aT4+ZSx0aGlzLmNvZGVTaXplPW4tPWUscn1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHIscj1lWzBdLG49ZVsxXTtsZXQgaSxzPXRoaXMuY29kZVNpemUsbz10aGlzLmNvZGVCdWY7Zm9yKDtzPG4mJi0xIT09KGk9dC5nZXRCeXRlKCkpOylvfD1pPDxzLHMrPTg7Y29uc3QgYz1yW28mKDE8PG4pLTFdLGw9Yz4+MTYsaD02NTUzNSZjO2lmKGw8MXx8czxsKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7cmV0dXJuIHRoaXMuY29kZUJ1Zj1vPj5sLHRoaXMuY29kZVNpemU9cy1sLGh9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgcixuPTA7Zm9yKHI9MDtyPHQ7KytyKWVbcl0+biYmKG49ZVtyXSk7Y29uc3QgYT0xPDxuLGk9bmV3IEludDMyQXJyYXkoYSk7Zm9yKGxldCBzPTEsbz0wLGM9MjtzPD1uOysrcyxvPDw9MSxjPDw9MSlmb3IobGV0IG49MDtuPHQ7KytuKWlmKGVbbl09PT1zKXtsZXQgZT0wLHQ9bztmb3Iocj0wO3I8czsrK3IpZT1lPDwxfDEmdCx0Pj49MTtmb3Iocj1lO3I8YTtyKz1jKWlbcl09czw8MTZ8bjsrK299cmV0dXJuW2ksbl19cmVhZEJsb2NrKCl7bGV0IGUsdDtjb25zdCByPXRoaXMuc3RyO2xldCBuLGgsdT10aGlzLmdldEJpdHMoMyk7aWYoMSZ1JiYodGhpcy5lb2Y9ITApLHU+Pj0xLDA9PT11KXtsZXQgdDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtsZXQgbj10O2lmKC0xPT09KHQ9ci5nZXRCeXRlKCkpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO2lmKG58PXQ8PDgsLTE9PT0odD1yLmdldEJ5dGUoKSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkJhZCBibG9jayBoZWFkZXIgaW4gZmxhdGUgc3RyZWFtIik7bGV0IGk9dDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtpZihpfD10PDw4LGkhPT0oNjU1MzUmfm4pJiYoMCE9PW58fDAhPT1pKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiQmFkIHVuY29tcHJlc3NlZCBibG9jayBsZW5ndGggaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPTAsdGhpcy5jb2RlU2l6ZT0wO2NvbnN0IHM9dGhpcy5idWZmZXJMZW5ndGgsbz1zK247aWYoZT10aGlzLmVuc3VyZUJ1ZmZlcihvKSx0aGlzLmJ1ZmZlckxlbmd0aD1vLDA9PT1uKS0xPT09ci5wZWVrQnl0ZSgpJiYodGhpcy5lb2Y9ITApO2Vsc2V7Y29uc3QgdD1yLmdldEJ5dGVzKG4pO2Uuc2V0KHQscyksdC5sZW5ndGg8biYmKHRoaXMuZW9mPSEwKX1yZXR1cm59aWYoMT09PXUpbj1jLGg9bDtlbHNle2lmKDIhPT11KXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxyPXRoaXMuZ2V0Qml0cyg1KSsxLGE9dGhpcy5nZXRCaXRzKDQpKzQscz1uZXcgVWludDhBcnJheShpLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPGE7KytvKXNbaVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGM9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShzKTt0PTAsbz0wO2NvbnN0IGw9ZStyLHU9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IGQsZixnO2Zvcig7bzxsOyl7Y29uc3QgZT10aGlzLmdldENvZGUoYyk7aWYoMTY9PT1lKWQ9MixmPTMsZz10O2Vsc2UgaWYoMTc9PT1lKWQ9MyxmPTMsZz10PTA7ZWxzZXtpZigxOCE9PWUpe3VbbysrXT10PWU7Y29udGludWV9ZD03LGY9MTEsZz10PTB9bGV0IHI9dGhpcy5nZXRCaXRzKGQpK2Y7Zm9yKDtyLS0gPjA7KXVbbysrXT1nfW49dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZSh1LnN1YmFycmF5KDAsZSkpLGg9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZSh1LnN1YmFycmF5KGUsbCkpfX1lPXRoaXMuYnVmZmVyO2xldCBkPWU/ZS5sZW5ndGg6MCxmPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IHI9dGhpcy5nZXRDb2RlKG4pO2lmKHI8MjU2KXtmKzE+PWQmJihlPXRoaXMuZW5zdXJlQnVmZmVyKGYrMSksZD1lLmxlbmd0aCksZVtmKytdPXI7Y29udGludWV9aWYoMjU2PT09cilyZXR1cm4gdm9pZCh0aGlzLmJ1ZmZlckxlbmd0aD1mKTtyLT0yNTcscj1zW3JdO2xldCBhPXI+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKSx0PSg2NTUzNSZyKSthLHI9dGhpcy5nZXRDb2RlKGgpLHI9b1tyXSxhPXI+PjE2LGE+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBpPSg2NTUzNSZyKSthO2YrdD49ZCYmKGU9dGhpcy5lbnN1cmVCdWZmZXIoZit0KSxkPWUubGVuZ3RoKTtmb3IobGV0IHI9MDtyPHQ7KytyLCsrZillW2ZdPWVbZi1pXX19fXQuRmxhdGVTdHJlYW09aH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpiaWcyU3RyZWFtPXZvaWQgMCxyKDEzOSk7dmFyIG49cigxNTEpLGE9cigxNjgpLGk9cigxNTApLHM9cigxNzQpLG89cigxNDQpO2NsYXNzIGMgZXh0ZW5kcyBhLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIodCksdGhpcy5zdHJlYW09ZSx0aGlzLmRpY3Q9ZS5kaWN0LHRoaXMubWF5YmVMZW5ndGg9dCx0aGlzLnBhcmFtcz1yfWdldCBieXRlcygpe3JldHVybigwLG8uc2hhZG93KSh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9bmV3IHMuSmJpZzJJbWFnZSx0PVtdO2lmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPXRoaXMucGFyYW1zLmdldCgiSkJJRzJHbG9iYWxzIik7aWYoZSBpbnN0YW5jZW9mIG4uQmFzZVN0cmVhbSl7Y29uc3Qgcj1lLmdldEJ5dGVzKCk7dC5wdXNoKHtkYXRhOnIsc3RhcnQ6MCxlbmQ6ci5sZW5ndGh9KX19dC5wdXNoKHtkYXRhOnRoaXMuYnl0ZXMsc3RhcnQ6MCxlbmQ6dGhpcy5ieXRlcy5sZW5ndGh9KTtjb25zdCByPWUucGFyc2VDaHVua3ModCksYT1yLmxlbmd0aDtmb3IobGV0IGU9MDtlPGE7ZSsrKXJbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1yLHRoaXMuYnVmZmVyTGVuZ3RoPWEsdGhpcy5lb2Y9ITB9fXQuSmJpZzJTdHJlYW09Y30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpiaWcySW1hZ2U9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDEzOSkscigyKTt2YXIgbj1yKDE0NCksYT1yKDE0OSksaT1yKDE3NSkscz1yKDE3MSk7Y2xhc3MgbyBleHRlbmRzIG4uQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcigiSkJJRzIgZXJyb3I6ICIuY29uY2F0KGUpLCJKYmlnMkVycm9yIil9fWNsYXNzIGN7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIGx7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuZGF0YT1lLHRoaXMuc3RhcnQ9dCx0aGlzLmVuZD1yfWdldCBkZWNvZGVyKCl7Y29uc3QgZT1uZXcgaS5Bcml0aG1ldGljRGVjb2Rlcih0aGlzLmRhdGEsdGhpcy5zdGFydCx0aGlzLmVuZCk7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImRlY29kZXIiLGUpfWdldCBjb250ZXh0Q2FjaGUoKXtjb25zdCBlPW5ldyBjO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJjb250ZXh0Q2FjaGUiLGUpfX1jb25zdCBoPTIqKjMxLTEsdT0tKDIqKjMxKTtmdW5jdGlvbiBkKGUsdCxyKXtjb25zdCBuPWUuZ2V0Q29udGV4dHModCk7bGV0IGE9MTtmdW5jdGlvbiBpKGUpe2xldCB0PTA7Zm9yKGxldCBpPTA7aTxlO2krKyl7Y29uc3QgZT1yLnJlYWRCaXQobixhKTthPWE8MjU2P2E8PDF8ZTo1MTEmKGE8PDF8ZSl8MjU2LHQ9dDw8MXxlfXJldHVybiB0Pj4+MH1jb25zdCBzPWkoMSksbz1pKDEpP2koMSk/aSgxKT9pKDEpP2koMSk/aSgzMikrNDQzNjppKDEyKSszNDA6aSg4KSs4NDppKDYpKzIwOmkoNCkrNDppKDIpO2xldCBjO3JldHVybiAwPT09cz9jPW86bz4wJiYoYz0tbyksYz49dSYmYzw9aD9jOm51bGx9ZnVuY3Rpb24gZihlLHQscil7Y29uc3Qgbj1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IGE9MTtmb3IobGV0IGU9MDtlPHI7ZSsrKWE9YTw8MXx0LnJlYWRCaXQobixhKTtyZXR1cm4gcjwzMT9hJigxPDxyKS0xOjIxNDc0ODM2NDcmYX1jb25zdCBnPVsiU3ltYm9sRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZVRleHRSZWdpb24iLG51bGwsIkltbWVkaWF0ZVRleHRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiUGF0dGVybkRpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZ2lvbiIsIkludGVybWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsIlBhZ2VJbmZvcm1hdGlvbiIsIkVuZE9mUGFnZSIsIkVuZE9mU3RyaXBlIiwiRW5kT2ZGaWxlIiwiUHJvZmlsZXMiLCJUYWJsZXMiLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiRXh0ZW5zaW9uIl0scD1bW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4OjIseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0zLHk6LTF9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XV0sbT1be2NvZGluZzpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDotMSx5OjF9LHt4OjAseToxfSx7eDoxLHk6MX1dfSx7Y29kaW5nOlt7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDowLHk6MX0se3g6MSx5OjF9XX1dLGI9WzM5NzE3LDE5NDEsMjI5LDQwNV0seT1bMzIsOF07ZnVuY3Rpb24gdyhlLHQscixuLGEsaSxzLG8pe2lmKGUpcmV0dXJuIEwobmV3IE4oby5kYXRhLG8uc3RhcnQsby5lbmQpLHQsciwhMSk7aWYoMD09PW4mJiFpJiYhYSYmND09PXMubGVuZ3RoJiYzPT09c1swXS54JiYtMT09PXNbMF0ueSYmLTM9PT1zWzFdLngmJi0xPT09c1sxXS55JiYyPT09c1syXS54JiYtMj09PXNbMl0ueSYmLTI9PT1zWzNdLngmJi0yPT09c1szXS55KXJldHVybiBmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yLmRlY29kZXIsYT1yLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKSxpPVtdO2xldCBzLG8sYyxsLGgsdSxkO2ZvcihvPTA7bzx0O28rKylmb3IoaD1pW29dPW5ldyBVaW50OEFycmF5KGUpLHU9bzwxP2g6aVtvLTFdLGQ9bzwyP2g6aVtvLTJdLHM9ZFswXTw8MTN8ZFsxXTw8MTJ8ZFsyXTw8MTF8dVswXTw8N3x1WzFdPDw2fHVbMl08PDV8dVszXTw8NCxjPTA7YzxlO2MrKyloW2NdPWw9bi5yZWFkQml0KGEscykscz0oMzE3MzUmcyk8PDF8KGMrMzxlP2RbYyszXTw8MTE6MCl8KGMrNDxlP3VbYys0XTw8NDowKXxsO3JldHVybiBpfSh0LHIsbyk7Y29uc3QgYz0hIWksbD1wW25dLmNvbmNhdChzKTtsLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgaD1sLmxlbmd0aCx1PW5ldyBJbnQ4QXJyYXkoaCksZD1uZXcgSW50OEFycmF5KGgpLGY9W107bGV0IGcsbSx5PTAsdz0wLHY9MCx4PTA7Zm9yKG09MDttPGg7bSsrKXVbbV09bFttXS54LGRbbV09bFttXS55LHc9TWF0aC5taW4odyxsW21dLngpLHY9TWF0aC5tYXgodixsW21dLngpLHg9TWF0aC5taW4oeCxsW21dLnkpLG08aC0xJiZsW21dLnk9PT1sW20rMV0ueSYmbFttXS54PT09bFttKzFdLngtMT95fD0xPDxoLTEtbTpmLnB1c2gobSk7Y29uc3QgUz1mLmxlbmd0aCxBPW5ldyBJbnQ4QXJyYXkoUyksaz1uZXcgSW50OEFycmF5KFMpLEM9bmV3IFVpbnQxNkFycmF5KFMpO2ZvcihnPTA7ZzxTO2crKyltPWZbZ10sQVtnXT1sW21dLngsa1tnXT1sW21dLnksQ1tnXT0xPDxoLTEtbTtjb25zdCBPPS13LEY9LXgsST10LXYsVD1iW25dO2xldCBNPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IEU9W10sUD1vLmRlY29kZXIsUj1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgRCxCLF8saixVLCQ9MCxYPTA7Zm9yKGxldCBlPTA7ZTxyO2UrKylpZihhJiYoJF49UC5yZWFkQml0KFIsVCksJCkpRS5wdXNoKE0pO2Vsc2UgZm9yKE09bmV3IFVpbnQ4QXJyYXkoTSksRS5wdXNoKE0pLEQ9MDtEPHQ7RCsrKXtpZihjJiZpW2VdW0RdKXtNW0RdPTA7Y29udGludWV9aWYoRD49TyYmRDxJJiZlPj1GKWZvcihYPVg8PDEmeSxtPTA7bTxTO20rKylCPWUra1ttXSxfPUQrQVttXSxqPUVbQl1bX10saiYmKGo9Q1ttXSxYfD1qKTtlbHNlIGZvcihYPTAsVT1oLTEsbT0wO208aDttKyssVS0tKV89RCt1W21dLF8+PTAmJl88dCYmKEI9ZStkW21dLEI+PTAmJihqPUVbQl1bX10saiYmKFh8PWo8PFUpKSk7Y29uc3Qgcj1QLnJlYWRCaXQoUixYKTtNW0RdPXJ9cmV0dXJuIEV9ZnVuY3Rpb24gdihlLHQscixuLGEsaSxzLGMsbCl7bGV0IGg9bVtyXS5jb2Rpbmc7MD09PXImJihoPWguY29uY2F0KFtjWzBdXSkpO2NvbnN0IHU9aC5sZW5ndGgsZD1uZXcgSW50MzJBcnJheSh1KSxmPW5ldyBJbnQzMkFycmF5KHUpO2xldCBnO2ZvcihnPTA7Zzx1O2crKylkW2ddPWhbZ10ueCxmW2ddPWhbZ10ueTtsZXQgcD1tW3JdLnJlZmVyZW5jZTswPT09ciYmKHA9cC5jb25jYXQoW2NbMV1dKSk7Y29uc3QgYj1wLmxlbmd0aCx3PW5ldyBJbnQzMkFycmF5KGIpLHY9bmV3IEludDMyQXJyYXkoYik7Zm9yKGc9MDtnPGI7ZysrKXdbZ109cFtnXS54LHZbZ109cFtnXS55O2NvbnN0IHg9blswXS5sZW5ndGgsUz1uLmxlbmd0aCxBPXlbcl0saz1bXSxDPWwuZGVjb2RlcixPPWwuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHUiIpO2xldCBGPTA7Zm9yKGxldCByPTA7cjx0O3IrKyl7aWYocyYmKEZePUMucmVhZEJpdChPLEEpLEYpKXRocm93IG5ldyBvKCJwcmVkaWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCB0PW5ldyBVaW50OEFycmF5KGUpO2sucHVzaCh0KTtmb3IobGV0IHM9MDtzPGU7cysrKXtsZXQgbyxjLGw9MDtmb3IoZz0wO2c8dTtnKyspbz1yK2ZbZ10sYz1zK2RbZ10sbzwwfHxjPDB8fGM+PWU/bDw8PTE6bD1sPDwxfGtbb11bY107Zm9yKGc9MDtnPGI7ZysrKW89cit2W2ddLWksYz1zK3dbZ10tYSxvPDB8fG8+PVN8fGM8MHx8Yz49eD9sPDw9MTpsPWw8PDF8bltvXVtjXTtjb25zdCBoPUMucmVhZEJpdChPLGwpO3Rbc109aH19cmV0dXJuIGt9ZnVuY3Rpb24geChlLHQscixuLGEsaSxzLGMsbCxoLHUsZyxwLG0sYix5LHcseCxTKXtpZihlJiZ0KXRocm93IG5ldyBvKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgQT1bXTtsZXQgayxDO2ZvcihrPTA7azxuO2srKyl7aWYoQz1uZXcgVWludDhBcnJheShyKSxhKWZvcihsZXQgZT0wO2U8cjtlKyspQ1tlXT1hO0EucHVzaChDKX1jb25zdCBPPXcuZGVjb2RlcixGPXcuY29udGV4dENhY2hlO2xldCBJPWU/LW0udGFibGVEZWx0YVQuZGVjb2RlKFMpOi1kKEYsIklBRFQiLE8pLFQ9MDtmb3Ioaz0wO2s8aTspe0krPWU/bS50YWJsZURlbHRhVC5kZWNvZGUoUyk6ZChGLCJJQURUIixPKSxUKz1lP20udGFibGVGaXJzdFMuZGVjb2RlKFMpOmQoRiwiSUFGUyIsTyk7bGV0IG49VDtmb3IoOzspe2xldCBhPTA7cz4xJiYoYT1lP1MucmVhZEJpdHMoeCk6ZChGLCJJQUlUIixPKSk7Y29uc3QgaT1zKkkrYSxUPWU/bS5zeW1ib2xJRFRhYmxlLmRlY29kZShTKTpmKEYsTyxsKSxNPXQmJihlP1MucmVhZEJpdCgpOmQoRiwiSUFSSSIsTykpO2xldCBFPWNbVF0sUD1FWzBdLmxlbmd0aCxSPUUubGVuZ3RoO2lmKE0pe2NvbnN0IGU9ZChGLCJJQVJEVyIsTyksdD1kKEYsIklBUkRIIixPKTtQKz1lLFIrPXQsRT12KFAsUixiLEUsKGU+PjEpK2QoRiwiSUFSRFgiLE8pLCh0Pj4xKStkKEYsIklBUkRZIixPKSwhMSx5LHcpfWNvbnN0IE49aS0oMSZnPzA6Ui0xKSxEPW4tKDImZz9QLTE6MCk7bGV0IEIsTCxfO2lmKGgpe2ZvcihCPTA7QjxSO0IrKyl7aWYoQz1BW0QrQl0sIUMpY29udGludWU7Xz1FW0JdO2NvbnN0IGU9TWF0aC5taW4oci1OLFApO3N3aXRjaChwKXtjYXNlIDA6Zm9yKEw9MDtMPGU7TCsrKUNbTitMXXw9X1tMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPGU7TCsrKUNbTitMXV49X1tMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBvKCJvcGVyYXRvciAiLmNvbmNhdChwLCIgaXMgbm90IHN1cHBvcnRlZCIpKX19bis9Ui0xfWVsc2V7Zm9yKEw9MDtMPFI7TCsrKWlmKEM9QVtOK0xdLEMpc3dpdGNoKF89RVtMXSxwKXtjYXNlIDA6Zm9yKEI9MDtCPFA7QisrKUNbRCtCXXw9X1tCXTticmVhaztjYXNlIDI6Zm9yKEI9MDtCPFA7QisrKUNbRCtCXV49X1tCXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBvKCJvcGVyYXRvciAiLmNvbmNhdChwLCIgaXMgbm90IHN1cHBvcnRlZCIpKX1uKz1QLTF9aysrO2NvbnN0IGo9ZT9tLnRhYmxlRGVsdGFTLmRlY29kZShTKTpkKEYsIklBRFMiLE8pO2lmKG51bGw9PT1qKWJyZWFrO24rPWordX19cmV0dXJuIEF9ZnVuY3Rpb24gUyhlLHQpe2NvbnN0IHI9e307ci5udW1iZXI9KDAsYS5yZWFkVWludDMyKShlLHQpO2NvbnN0IG49ZVt0KzRdLGk9NjMmbjtpZighZ1tpXSl0aHJvdyBuZXcgbygiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIraSk7ci50eXBlPWksci50eXBlTmFtZT1nW2ldLHIuZGVmZXJyZWROb25SZXRhaW49ISEoMTI4Jm4pO2NvbnN0IHM9ISEoNjQmbiksYz1lW3QrNV07bGV0IGw9Yz4+NSY3O2NvbnN0IGg9WzMxJmNdO2xldCB1PXQrNjtpZig3PT09Yyl7bD01MzY4NzA5MTEmKDAsYS5yZWFkVWludDMyKShlLHUtMSksdSs9MztsZXQgdD1sKzc+PjM7Zm9yKGhbMF09ZVt1KytdOy0tdD4wOyloLnB1c2goZVt1KytdKX1lbHNlIGlmKDU9PT1jfHw2PT09Yyl0aHJvdyBuZXcgbygiaW52YWxpZCByZWZlcnJlZC10byBmbGFncyIpO3IucmV0YWluQml0cz1oO2xldCBkPTQ7ci5udW1iZXI8PTI1Nj9kPTE6ci5udW1iZXI8PTY1NTM2JiYoZD0yKTtjb25zdCBmPVtdO2xldCBwLG07Zm9yKHA9MDtwPGw7cCsrKXtsZXQgdDt0PTE9PT1kP2VbdV06Mj09PWQ/KDAsYS5yZWFkVWludDE2KShlLHUpOigwLGEucmVhZFVpbnQzMikoZSx1KSxmLnB1c2godCksdSs9ZH1pZihyLnJlZmVycmVkVG89ZixzPyhyLnBhZ2VBc3NvY2lhdGlvbj0oMCxhLnJlYWRVaW50MzIpKGUsdSksdSs9NCk6ci5wYWdlQXNzb2NpYXRpb249ZVt1KytdLHIubGVuZ3RoPSgwLGEucmVhZFVpbnQzMikoZSx1KSx1Kz00LDQyOTQ5NjcyOTU9PT1yLmxlbmd0aCl7aWYoMzghPT1pKXRocm93IG5ldyBvKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1rKGUsdSksbj0hISgxJmVbdStDXSksYT02LGk9bmV3IFVpbnQ4QXJyYXkoYSk7Zm9yKG58fChpWzBdPTI1NSxpWzFdPTE3MiksaVsyXT10LmhlaWdodD4+PjI0JjI1NSxpWzNdPXQuaGVpZ2h0Pj4xNiYyNTUsaVs0XT10LmhlaWdodD4+OCYyNTUsaVs1XT0yNTUmdC5oZWlnaHQscD11LG09ZS5sZW5ndGg7cDxtO3ArKyl7bGV0IHQ9MDtmb3IoO3Q8YSYmaVt0XT09PWVbcCt0XTspdCsrO2lmKHQ9PT1hKXtyLmxlbmd0aD1wK2E7YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1yLmxlbmd0aCl0aHJvdyBuZXcgbygic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1yZXR1cm4gci5oZWFkZXJFbmQ9dSxyfWZ1bmN0aW9uIEEoZSx0LHIsbil7Y29uc3QgYT1bXTtsZXQgaT1yO2Zvcig7aTxuOyl7Y29uc3Qgcj1TKHQsaSk7aT1yLmhlYWRlckVuZDtjb25zdCBuPXtoZWFkZXI6cixkYXRhOnR9O2lmKGUucmFuZG9tQWNjZXNzfHwobi5zdGFydD1pLGkrPXIubGVuZ3RoLG4uZW5kPWkpLGEucHVzaChuKSw1MT09PXIudHlwZSlicmVha31pZihlLnJhbmRvbUFjY2Vzcylmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXS5zdGFydD1pLGkrPWFbZV0uaGVhZGVyLmxlbmd0aCxhW2VdLmVuZD1pO3JldHVybiBhfWZ1bmN0aW9uIGsoZSx0KXtyZXR1cm57d2lkdGg6KDAsYS5yZWFkVWludDMyKShlLHQpLGhlaWdodDooMCxhLnJlYWRVaW50MzIpKGUsdCs0KSx4OigwLGEucmVhZFVpbnQzMikoZSx0KzgpLHk6KDAsYS5yZWFkVWludDMyKShlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBDPTE3O2Z1bmN0aW9uIE8oZSx0KXtjb25zdCByPWUuaGVhZGVyLG49ZS5kYXRhLGk9ZS5lbmQ7bGV0IHMsYyxsLGgsdT1lLnN0YXJ0O3N3aXRjaChyLnR5cGUpe2Nhc2UgMDpjb25zdCBlPXt9LHQ9KDAsYS5yZWFkVWludDE2KShuLHUpO2lmKGUuaHVmZm1hbj0hISgxJnQpLGUucmVmaW5lbWVudD0hISgyJnQpLGUuaHVmZm1hbkRIU2VsZWN0b3I9dD4+MiYzLGUuaHVmZm1hbkRXU2VsZWN0b3I9dD4+NCYzLGUuYml0bWFwU2l6ZVNlbGVjdG9yPXQ+PjYmMSxlLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I9dD4+NyYxLGUuYml0bWFwQ29kaW5nQ29udGV4dFVzZWQ9ISEoMjU2JnQpLGUuYml0bWFwQ29kaW5nQ29udGV4dFJldGFpbmVkPSEhKDUxMiZ0KSxlLnRlbXBsYXRlPXQ+PjEwJjMsZS5yZWZpbmVtZW50VGVtcGxhdGU9dD4+MTImMSx1Kz0yLCFlLmh1ZmZtYW4pe2ZvcihoPTA9PT1lLnRlbXBsYXRlPzQ6MSxjPVtdLGw9MDtsPGg7bCsrKWMucHVzaCh7eDooMCxhLnJlYWRJbnQ4KShuLHUpLHk6KDAsYS5yZWFkSW50OCkobix1KzEpfSksdSs9MjtlLmF0PWN9aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe2ZvcihjPVtdLGw9MDtsPDI7bCsrKWMucHVzaCh7eDooMCxhLnJlYWRJbnQ4KShuLHUpLHk6KDAsYS5yZWFkSW50OCkobix1KzEpfSksdSs9MjtlLnJlZmluZW1lbnRBdD1jfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9KDAsYS5yZWFkVWludDMyKShuLHUpLHUrPTQsZS5udW1iZXJPZk5ld1N5bWJvbHM9KDAsYS5yZWFkVWludDMyKShuLHUpLHUrPTQscz1bZSxyLm51bWJlcixyLnJlZmVycmVkVG8sbix1LGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgZD17fTtkLmluZm89ayhuLHUpLHUrPUM7Y29uc3QgZj0oMCxhLnJlYWRVaW50MTYpKG4sdSk7aWYodSs9MixkLmh1ZmZtYW49ISEoMSZmKSxkLnJlZmluZW1lbnQ9ISEoMiZmKSxkLmxvZ1N0cmlwU2l6ZT1mPj4yJjMsZC5zdHJpcFNpemU9MTw8ZC5sb2dTdHJpcFNpemUsZC5yZWZlcmVuY2VDb3JuZXI9Zj4+NCYzLGQudHJhbnNwb3NlZD0hISg2NCZmKSxkLmNvbWJpbmF0aW9uT3BlcmF0b3I9Zj4+NyYzLGQuZGVmYXVsdFBpeGVsVmFsdWU9Zj4+OSYxLGQuZHNPZmZzZXQ9Zjw8MTc+PjI3LGQucmVmaW5lbWVudFRlbXBsYXRlPWY+PjE1JjEsZC5odWZmbWFuKXtjb25zdCBlPSgwLGEucmVhZFVpbnQxNikobix1KTt1Kz0yLGQuaHVmZm1hbkZTPTMmZSxkLmh1ZmZtYW5EUz1lPj4yJjMsZC5odWZmbWFuRFQ9ZT4+NCYzLGQuaHVmZm1hblJlZmluZW1lbnREVz1lPj42JjMsZC5odWZmbWFuUmVmaW5lbWVudERIPWU+PjgmMyxkLmh1ZmZtYW5SZWZpbmVtZW50RFg9ZT4+MTAmMyxkLmh1ZmZtYW5SZWZpbmVtZW50RFk9ZT4+MTImMyxkLmh1ZmZtYW5SZWZpbmVtZW50U2l6ZVNlbGVjdG9yPSEhKDE2Mzg0JmUpfWlmKGQucmVmaW5lbWVudCYmIWQucmVmaW5lbWVudFRlbXBsYXRlKXtmb3IoYz1bXSxsPTA7bDwyO2wrKyljLnB1c2goe3g6KDAsYS5yZWFkSW50OCkobix1KSx5OigwLGEucmVhZEludDgpKG4sdSsxKX0pLHUrPTI7ZC5yZWZpbmVtZW50QXQ9Y31kLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPSgwLGEucmVhZFVpbnQzMikobix1KSx1Kz00LHM9W2Qsci5yZWZlcnJlZFRvLG4sdSxpXTticmVhaztjYXNlIDE2OmNvbnN0IGc9e30scD1uW3UrK107Zy5tbXI9ISEoMSZwKSxnLnRlbXBsYXRlPXA+PjEmMyxnLnBhdHRlcm5XaWR0aD1uW3UrK10sZy5wYXR0ZXJuSGVpZ2h0PW5bdSsrXSxnLm1heFBhdHRlcm5JbmRleD0oMCxhLnJlYWRVaW50MzIpKG4sdSksdSs9NCxzPVtnLHIubnVtYmVyLG4sdSxpXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgbT17fTttLmluZm89ayhuLHUpLHUrPUM7Y29uc3QgYj1uW3UrK107bS5tbXI9ISEoMSZiKSxtLnRlbXBsYXRlPWI+PjEmMyxtLmVuYWJsZVNraXA9ISEoOCZiKSxtLmNvbWJpbmF0aW9uT3BlcmF0b3I9Yj4+NCY3LG0uZGVmYXVsdFBpeGVsVmFsdWU9Yj4+NyYxLG0uZ3JpZFdpZHRoPSgwLGEucmVhZFVpbnQzMikobix1KSx1Kz00LG0uZ3JpZEhlaWdodD0oMCxhLnJlYWRVaW50MzIpKG4sdSksdSs9NCxtLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmKDAsYS5yZWFkVWludDMyKShuLHUpLHUrPTQsbS5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JigwLGEucmVhZFVpbnQzMikobix1KSx1Kz00LG0uZ3JpZFZlY3Rvclg9KDAsYS5yZWFkVWludDE2KShuLHUpLHUrPTIsbS5ncmlkVmVjdG9yWT0oMCxhLnJlYWRVaW50MTYpKG4sdSksdSs9MixzPVttLHIucmVmZXJyZWRUbyxuLHUsaV07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNvbnN0IHk9e307eS5pbmZvPWsobix1KSx1Kz1DO2NvbnN0IHc9blt1KytdO2lmKHkubW1yPSEhKDEmdykseS50ZW1wbGF0ZT13Pj4xJjMseS5wcmVkaWN0aW9uPSEhKDgmdyksIXkubW1yKXtmb3IoaD0wPT09eS50ZW1wbGF0ZT80OjEsYz1bXSxsPTA7bDxoO2wrKyljLnB1c2goe3g6KDAsYS5yZWFkSW50OCkobix1KSx5OigwLGEucmVhZEludDgpKG4sdSsxKX0pLHUrPTI7eS5hdD1jfXM9W3ksbix1LGldO2JyZWFrO2Nhc2UgNDg6Y29uc3Qgdj17d2lkdGg6KDAsYS5yZWFkVWludDMyKShuLHUpLGhlaWdodDooMCxhLnJlYWRVaW50MzIpKG4sdSs0KSxyZXNvbHV0aW9uWDooMCxhLnJlYWRVaW50MzIpKG4sdSs4KSxyZXNvbHV0aW9uWTooMCxhLnJlYWRVaW50MzIpKG4sdSsxMil9OzQyOTQ5NjcyOTU9PT12LmhlaWdodCYmZGVsZXRlIHYuaGVpZ2h0O2NvbnN0IHg9blt1KzE2XTsoMCxhLnJlYWRVaW50MTYpKG4sdSsxNyksdi5sb3NzbGVzcz0hISgxJngpLHYucmVmaW5lbWVudD0hISgyJngpLHYuZGVmYXVsdFBpeGVsVmFsdWU9eD4+MiYxLHYuY29tYmluYXRpb25PcGVyYXRvcj14Pj4zJjMsdi5yZXF1aXJlc0J1ZmZlcj0hISgzMiZ4KSx2LmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZ4KSxzPVt2XTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6cz1bci5udW1iZXIsbix1LGldO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG8oInNlZ21lbnQgdHlwZSAiLmNvbmNhdChyLnR5cGVOYW1lLCIoIikuY29uY2F0KHIudHlwZSwiKSBpcyBub3QgaW1wbGVtZW50ZWQiKSl9Y29uc3QgZD0ib24iK3IudHlwZU5hbWU7ZCBpbiB0JiZ0W2RdLmFwcGx5KHQscyl9ZnVuY3Rpb24gRihlLHQpe2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylPKGVbcl0sdCl9Y2xhc3MgSXtvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLHI9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJnIuZmlsbCgyNTUpLHRoaXMuYnVmZmVyPXJ9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IHI9dGhpcy5jdXJyZW50UGFnZUluZm8sbj1lLndpZHRoLGE9ZS5oZWlnaHQsaT1yLndpZHRoKzc+PjMscz1yLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6ci5jb21iaW5hdGlvbk9wZXJhdG9yLGM9dGhpcy5idWZmZXIsbD0xMjg+Pig3JmUueCk7bGV0IGgsdSxkLGYsZz1lLnkqaSsoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihoPTA7aDxhO2grKyl7Zm9yKGQ9bCxmPWcsdT0wO3U8bjt1KyspdFtoXVt1XSYmKGNbZl18PWQpLGQ+Pj0xLGR8fChkPTEyOCxmKyspO2crPWl9YnJlYWs7Y2FzZSAyOmZvcihoPTA7aDxhO2grKyl7Zm9yKGQ9bCxmPWcsdT0wO3U8bjt1KyspdFtoXVt1XSYmKGNbZl1ePWQpLGQ+Pj0xLGR8fChkPTEyOCxmKyspO2crPWl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbygib3BlcmF0b3IgIi5jb25jYXQocywiIGlzIG5vdCBzdXBwb3J0ZWQiKSl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQscixuKXtjb25zdCBhPWUuaW5mbyxpPW5ldyBsKHQscixuKSxzPXcoZS5tbXIsYS53aWR0aCxhLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsaSk7dGhpcy5kcmF3Qml0bWFwKGEscyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQscixuLGkscyl7bGV0IGMsaDtlLmh1ZmZtYW4mJihjPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbixhLGkscyxjPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6bj1SKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOm49RChjLHQsciksYysrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG8oImludmFsaWQgSHVmZm1hbiBESCBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EV1NlbGVjdG9yKXtjYXNlIDA6Y2FzZSAxOmE9UihlLmh1ZmZtYW5EV1NlbGVjdG9yKzIpO2JyZWFrO2Nhc2UgMzphPUQoYyx0LHIpLGMrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBvKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1yZXR1cm4gZS5iaXRtYXBTaXplU2VsZWN0b3I/KGk9RChjLHQsciksYysrKTppPVIoMSkscz1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/RChjLHQscik6UigxKSx7dGFibGVEZWx0YUhlaWdodDpuLHRhYmxlRGVsdGFXaWR0aDphLHRhYmxlQml0bWFwU2l6ZTppLHRhYmxlQWdncmVnYXRlSW5zdGFuY2VzOnN9fShlLHIsdGhpcy5jdXN0b21UYWJsZXMpLGg9bmV3IE4obixpLHMpKTtsZXQgdT10aGlzLnN5bWJvbHM7dXx8KHRoaXMuc3ltYm9scz11PXt9KTtjb25zdCBnPVtdO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9dVtlXTt0JiZnLnB1c2goLi4udCl9Y29uc3QgcD1uZXcgbChuLGkscyk7dVt0XT1mdW5jdGlvbihlLHQscixuLGkscyxjLGwsaCx1LGcscCl7aWYoZSYmdCl0aHJvdyBuZXcgbygic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBtPVtdO2xldCBiPTAseT0oMCxhLmxvZzIpKHIubGVuZ3RoK24pO2NvbnN0IFM9Zy5kZWNvZGVyLEE9Zy5jb250ZXh0Q2FjaGU7bGV0IGssQztmb3IoZSYmKGs9UigxKSxDPVtdLHk9TWF0aC5tYXgoeSwxKSk7bS5sZW5ndGg8bjspe2IrPWU/cy50YWJsZURlbHRhSGVpZ2h0LmRlY29kZShwKTpkKEEsIklBREgiLFMpO2xldCBuPTAsYT0wO2NvbnN0IGk9ZT9DLmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgaT1lP3MudGFibGVEZWx0YVdpZHRoLmRlY29kZShwKTpkKEEsIklBRFciLFMpO2lmKG51bGw9PT1pKWJyZWFrO2xldCBvO2lmKG4rPWksYSs9bix0KXtjb25zdCBhPWQoQSwiSUFBSSIsUyk7aWYoYT4xKW89eChlLHQsbixiLDAsYSwxLHIuY29uY2F0KG0pLHksMCwwLDEsMCxzLGgsdSxnLDAscCk7ZWxzZXtjb25zdCBlPWYoQSxTLHkpLHQ9ZChBLCJJQVJEWCIsUyksYT1kKEEsIklBUkRZIixTKTtvPXYobixiLGgsZTxyLmxlbmd0aD9yW2VdOm1bZS1yLmxlbmd0aF0sdCxhLCExLHUsZyl9bS5wdXNoKG8pfWVsc2UgZT9DLnB1c2gobik6KG89dyghMSxuLGIsYywhMSxudWxsLGwsZyksbS5wdXNoKG8pKX1pZihlJiYhdCl7Y29uc3QgZT1zLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUocCk7bGV0IHQ7aWYocC5ieXRlQWxpZ24oKSwwPT09ZSl0PUIocCxhLGIpO2Vsc2V7Y29uc3Qgcj1wLmVuZCxuPXAucG9zaXRpb24rZTtwLmVuZD1uLHQ9TChwLGEsYiwhMSkscC5lbmQ9cixwLnBvc2l0aW9uPW59Y29uc3Qgcj1DLmxlbmd0aDtpZihpPT09ci0xKW0ucHVzaCh0KTtlbHNle2xldCBlLG4sYSxzLG8sYz0wO2ZvcihlPWk7ZTxyO2UrKyl7Zm9yKHM9Q1tlXSxhPWMrcyxvPVtdLG49MDtuPGI7bisrKW8ucHVzaCh0W25dLnN1YmFycmF5KGMsYSkpO20ucHVzaChvKSxjPWF9fX19Y29uc3QgTz1bXSxGPVtdO2xldCBJLFQsTT0hMTtjb25zdCBFPXIubGVuZ3RoK247Zm9yKDtGLmxlbmd0aDxFOyl7bGV0IHQ9ZT9rLmRlY29kZShwKTpkKEEsIklBRVgiLFMpO2Zvcig7dC0tOylGLnB1c2goTSk7TT0hTX1mb3IoST0wLFQ9ci5sZW5ndGg7STxUO0krKylGW0ldJiZPLnB1c2gocltJXSk7Zm9yKGxldCBlPTA7ZTxuO0krKyxlKyspRltJXSYmTy5wdXNoKG1bZV0pO3JldHVybiBPfShlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LGcsZS5udW1iZXJPZk5ld1N5bWJvbHMsZS5udW1iZXJPZkV4cG9ydGVkU3ltYm9scyxjLGUudGVtcGxhdGUsZS5hdCxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCxwLGgpfW9uSW1tZWRpYXRlVGV4dFJlZ2lvbihlLHQscixuLGkpe2NvbnN0IHM9ZS5pbmZvO2xldCBjLGg7Y29uc3QgdT10aGlzLnN5bWJvbHMsZD1bXTtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXVbZV07dCYmZC5wdXNoKC4uLnQpfWNvbnN0IGY9KDAsYS5sb2cyKShkLmxlbmd0aCk7ZS5odWZmbWFuJiYoaD1uZXcgTihyLG4saSksYz1mdW5jdGlvbihlLHQscixuLGEpe2NvbnN0IGk9W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PWEucmVhZEJpdHMoNCk7aS5wdXNoKG5ldyBUKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEUoaSwhMSk7aS5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPG47KXtjb25zdCB0PXMuZGVjb2RlKGEpO2lmKHQ+PTMyKXtsZXQgcixuLHM7c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IG8oIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO249YS5yZWFkQml0cygyKSszLHI9aVtlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOm49YS5yZWFkQml0cygzKSszLHI9MDticmVhaztjYXNlIDM0Om49YS5yZWFkQml0cyg3KSsxMSxyPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbygiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iocz0wO3M8bjtzKyspaS5wdXNoKG5ldyBUKFtlLHIsMCwwXSkpLGUrK31lbHNlIGkucHVzaChuZXcgVChbZSx0LDAsMF0pKSxlKyt9YS5ieXRlQWxpZ24oKTtjb25zdCBjPW5ldyBFKGksITEpO2xldCBsLGgsdSxkPTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmw9UihlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6bD1EKGQsdCxyKSxkKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbygiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpoPVIoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmg9RChkLHQsciksZCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG8oImludmFsaWQgSHVmZm1hbiBEUyBzZWxlY3RvciIpfXN3aXRjaChlLmh1ZmZtYW5EVCl7Y2FzZSAwOmNhc2UgMTpjYXNlIDI6dT1SKGUuaHVmZm1hbkRUKzExKTticmVhaztjYXNlIDM6dT1EKGQsdCxyKSxkKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbygiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBvKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6Yyx0YWJsZUZpcnN0UzpsLHRhYmxlRGVsdGFTOmgsdGFibGVEZWx0YVQ6dX19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxkLmxlbmd0aCxoKSk7Y29uc3QgZz1uZXcgbChyLG4saSkscD14KGUuaHVmZm1hbixlLnJlZmluZW1lbnQscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXMsZS5zdHJpcFNpemUsZCxmLGUudHJhbnNwb3NlZCxlLmRzT2Zmc2V0LGUucmVmZXJlbmNlQ29ybmVyLGUuY29tYmluYXRpb25PcGVyYXRvcixjLGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGcsZS5sb2dTdHJpcFNpemUsaCk7dGhpcy5kcmF3Qml0bWFwKHMscCl9b25JbW1lZGlhdGVMb3NzbGVzc1RleHRSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlVGV4dFJlZ2lvbiguLi5hcmd1bWVudHMpfW9uUGF0dGVybkRpY3Rpb25hcnkoZSx0LHIsbixhKXtsZXQgaT10aGlzLnBhdHRlcm5zO2l8fCh0aGlzLnBhdHRlcm5zPWk9e30pO2NvbnN0IHM9bmV3IGwocixuLGEpO2lbdF09ZnVuY3Rpb24oZSx0LHIsbixhLGkpe2NvbnN0IHM9W107ZXx8KHMucHVzaCh7eDotdCx5OjB9KSwwPT09YSYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pKTtjb25zdCBvPXcoZSwobisxKSp0LHIsYSwhMSxudWxsLHMsaSksYz1bXTtmb3IobGV0IGU9MDtlPD1uO2UrKyl7Y29uc3Qgbj1bXSxhPXQqZSxpPWErdDtmb3IobGV0IGU9MDtlPHI7ZSsrKW4ucHVzaChvW2VdLnN1YmFycmF5KGEsaSkpO2MucHVzaChuKX1yZXR1cm4gY30oZS5tbXIsZS5wYXR0ZXJuV2lkdGgsZS5wYXR0ZXJuSGVpZ2h0LGUubWF4UGF0dGVybkluZGV4LGUudGVtcGxhdGUscyl9b25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbihlLHQscixuLGkpe2NvbnN0IHM9dGhpcy5wYXR0ZXJuc1t0WzBdXSxjPWUuaW5mbyxoPW5ldyBsKHIsbixpKSx1PWZ1bmN0aW9uKGUsdCxyLG4saSxzLGMsbCxoLHUsZCxmLGcscCxtKXtpZihjKXRocm93IG5ldyBvKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09bCl0aHJvdyBuZXcgbygnb3BlcmF0b3IgIicuY29uY2F0KGwsJyIgaXMgbm90IHN1cHBvcnRlZCBpbiBoYWxmdG9uZSByZWdpb24nKSk7Y29uc3QgYj1bXTtsZXQgeSx2LHg7Zm9yKHk9MDt5PGk7eSsrKXtpZih4PW5ldyBVaW50OEFycmF5KG4pLHMpZm9yKHY9MDt2PG47disrKXhbdl09cztiLnB1c2goeCl9Y29uc3QgUz10Lmxlbmd0aCxBPXRbMF0saz1BWzBdLmxlbmd0aCxDPUEubGVuZ3RoLE89KDAsYS5sb2cyKShTKSxGPVtdO2V8fChGLnB1c2goe3g6cjw9MT8zOjIseTotMX0pLDA9PT1yJiZGLnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSkpO2NvbnN0IEk9W107bGV0IFQsTSxFLFAsUixELEIsXyxqLFUsJDtmb3IoZSYmKFQ9bmV3IE4obS5kYXRhLG0uc3RhcnQsbS5lbmQpKSx5PU8tMTt5Pj0wO3ktLSlNPWU/TChULGgsdSwhMCk6dyghMSxoLHUsciwhMSxudWxsLEYsbSksSVt5XT1NO2ZvcihFPTA7RTx1O0UrKylmb3IoUD0wO1A8aDtQKyspe2ZvcihSPTAsRD0wLHY9Ty0xO3Y+PTA7di0tKVJePUlbdl1bRV1bUF0sRHw9Ujw8djtpZihCPXRbRF0sXz1kK0UqcCtQKmc+Pjgsaj1mK0UqZy1QKnA+PjgsXz49MCYmXytrPD1uJiZqPj0wJiZqK0M8PWkpZm9yKHk9MDt5PEM7eSsrKWZvcigkPWJbait5XSxVPUJbeV0sdj0wO3Y8azt2KyspJFtfK3ZdfD1VW3ZdO2Vsc2V7bGV0IGUsdDtmb3IoeT0wO3k8Qzt5KyspaWYodD1qK3ksISh0PDB8fHQ+PWkpKWZvcigkPWJbdF0sVT1CW3ldLHY9MDt2PGs7disrKWU9Xyt2LGU+PTAmJmU8biYmKCRbZV18PVVbdl0pfX1yZXR1cm4gYn0oZS5tbXIscyxlLnRlbXBsYXRlLGMud2lkdGgsYy5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLGgpO3RoaXMuZHJhd0JpdG1hcChjLHUpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxyLG4pe2xldCBpPXRoaXMuY3VzdG9tVGFibGVzO2l8fCh0aGlzLmN1c3RvbVRhYmxlcz1pPXt9KSxpW2VdPWZ1bmN0aW9uKGUsdCxyKXtjb25zdCBuPWVbdF0saT00Mjk0OTY3Mjk1JigwLGEucmVhZFVpbnQzMikoZSx0KzEpLHM9NDI5NDk2NzI5NSYoMCxhLnJlYWRVaW50MzIpKGUsdCs1KSxvPW5ldyBOKGUsdCs5LHIpLGM9MSsobj4+MSY3KSxsPTErKG4+PjQmNyksaD1bXTtsZXQgdSxkLGY9aTtkb3t1PW8ucmVhZEJpdHMoYyksZD1vLnJlYWRCaXRzKGwpLGgucHVzaChuZXcgVChbZix1LGQsMF0pKSxmKz0xPDxkfXdoaWxlKGY8cyk7cmV0dXJuIHU9by5yZWFkQml0cyhjKSxoLnB1c2gobmV3IFQoW2ktMSx1LDMyLDAsImxvd2VyIl0pKSx1PW8ucmVhZEJpdHMoYyksaC5wdXNoKG5ldyBUKFtzLHUsMzIsMF0pKSwxJm4mJih1PW8ucmVhZEJpdHMoYyksaC5wdXNoKG5ldyBUKFt1LDBdKSkpLG5ldyBFKGgsITEpfSh0LHIsbil9fWNsYXNzIFR7Y29uc3RydWN0b3IoZSl7Mj09PWUubGVuZ3RoPyh0aGlzLmlzT09CPSEwLHRoaXMucmFuZ2VMb3c9MCx0aGlzLnByZWZpeExlbmd0aD1lWzBdLHRoaXMucmFuZ2VMZW5ndGg9MCx0aGlzLnByZWZpeENvZGU9ZVsxXSx0aGlzLmlzTG93ZXJSYW5nZT0hMSk6KHRoaXMuaXNPT0I9ITEsdGhpcy5yYW5nZUxvdz1lWzBdLHRoaXMucHJlZml4TGVuZ3RoPWVbMV0sdGhpcy5yYW5nZUxlbmd0aD1lWzJdLHRoaXMucHJlZml4Q29kZT1lWzNdLHRoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdKX19Y2xhc3MgTXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNoaWxkcmVuPVtdLGU/KHRoaXMuaXNMZWFmPSEwLHRoaXMucmFuZ2VMZW5ndGg9ZS5yYW5nZUxlbmd0aCx0aGlzLnJhbmdlTG93PWUucmFuZ2VMb3csdGhpcy5pc0xvd2VyUmFuZ2U9ZS5pc0xvd2VyUmFuZ2UsdGhpcy5pc09PQj1lLmlzT09CKTp0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCByPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlbltyXT1uZXcgTShlKTtlbHNle2xldCBuPXRoaXMuY2hpbGRyZW5bcl07bnx8KHRoaXMuY2hpbGRyZW5bcl09bj1uZXcgTShudWxsKSksbi5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybiBudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgbygiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBFe2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKSx0aGlzLnJvb3ROb2RlPW5ldyBNKG51bGwpO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1lW3RdO3IucHJlZml4TGVuZ3RoPjAmJnRoaXMucm9vdE5vZGUuYnVpbGRUcmVlKHIsci5wcmVmaXhMZW5ndGgtMSl9fWRlY29kZShlKXtyZXR1cm4gdGhpcy5yb290Tm9kZS5kZWNvZGVOb2RlKGUpfWFzc2lnblByZWZpeENvZGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IobGV0IG49MDtuPHQ7bisrKXI9TWF0aC5tYXgocixlW25dLnByZWZpeExlbmd0aCk7Y29uc3Qgbj1uZXcgVWludDMyQXJyYXkocisxKTtmb3IobGV0IHI9MDtyPHQ7cisrKW5bZVtyXS5wcmVmaXhMZW5ndGhdKys7bGV0IGEsaSxzLG89MSxjPTA7Zm9yKG5bMF09MDtvPD1yOyl7Zm9yKGM9YytuW28tMV08PDEsYT1jLGk9MDtpPHQ7KXM9ZVtpXSxzLnByZWZpeExlbmd0aD09PW8mJihzLnByZWZpeENvZGU9YSxhKyspLGkrKztvKyt9fX1jb25zdCBQPXt9O2Z1bmN0aW9uIFIoZSl7bGV0IHQscj1QW2VdO2lmKHIpcmV0dXJuIHI7c3dpdGNoKGUpe2Nhc2UgMTp0PVtbMCwxLDQsMF0sWzE2LDIsOCwyXSxbMjcyLDMsMTYsNl0sWzY1ODA4LDMsMzIsN11dO2JyZWFrO2Nhc2UgMjp0PVtbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFs3NSw2LDMyLDYyXSxbNiw2M11dO2JyZWFrO2Nhc2UgMzp0PVtbLTI1Niw4LDgsMjU0XSxbMCwxLDAsMF0sWzEsMiwwLDJdLFsyLDMsMCw2XSxbMyw0LDMsMTRdLFsxMSw1LDYsMzBdLFstMjU3LDgsMzIsMjU1LCJsb3dlciJdLFs3NSw3LDMyLDEyNl0sWzYsNjJdXTticmVhaztjYXNlIDQ6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbNzYsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgNTp0PVtbLTI1NSw3LDgsMTI2XSxbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFstMjU2LDcsMzIsMTI3LCJsb3dlciJdLFs3Niw2LDMyLDYyXV07YnJlYWs7Y2FzZSA2OnQ9W1stMjA0OCw1LDEwLDI4XSxbLTEwMjQsNCw5LDhdLFstNTEyLDQsOCw5XSxbLTI1Niw0LDcsMTBdLFstMTI4LDUsNiwyOV0sWy02NCw1LDUsMzBdLFstMzIsNCw1LDExXSxbMCwyLDcsMF0sWzEyOCwzLDcsMl0sWzI1NiwzLDgsM10sWzUxMiw0LDksMTJdLFsxMDI0LDQsMTAsMTNdLFstMjA0OSw2LDMyLDYyLCJsb3dlciJdLFsyMDQ4LDYsMzIsNjNdXTticmVhaztjYXNlIDc6dD1bWy0xMDI0LDQsOSw4XSxbLTUxMiwzLDgsMF0sWy0yNTYsNCw3LDldLFstMTI4LDUsNiwyNl0sWy02NCw1LDUsMjddLFstMzIsNCw1LDEwXSxbMCw0LDUsMTFdLFszMiw1LDUsMjhdLFs2NCw1LDYsMjldLFsxMjgsNCw3LDEyXSxbMjU2LDMsOCwxXSxbNTEyLDMsOSwyXSxbMTAyNCwzLDEwLDNdLFstMTAyNSw1LDMyLDMwLCJsb3dlciJdLFsyMDQ4LDUsMzIsMzFdXTticmVhaztjYXNlIDg6dD1bWy0xNSw4LDMsMjUyXSxbLTcsOSwxLDUwOF0sWy01LDgsMSwyNTNdLFstMyw5LDAsNTA5XSxbLTIsNywwLDEyNF0sWy0xLDQsMCwxMF0sWzAsMiwxLDBdLFsyLDUsMCwyNl0sWzMsNiwwLDU4XSxbNCwzLDQsNF0sWzIwLDYsMSw1OV0sWzIyLDQsNCwxMV0sWzM4LDQsNSwxMl0sWzcwLDUsNiwyN10sWzEzNCw1LDcsMjhdLFsyNjIsNiw3LDYwXSxbMzkwLDcsOCwxMjVdLFs2NDYsNiwxMCw2MV0sWy0xNiw5LDMyLDUxMCwibG93ZXIiXSxbMTY3MCw5LDMyLDUxMV0sWzIsMV1dO2JyZWFrO2Nhc2UgOTp0PVtbLTMxLDgsNCwyNTJdLFstMTUsOSwyLDUwOF0sWy0xMSw4LDIsMjUzXSxbLTcsOSwxLDUwOV0sWy01LDcsMSwxMjRdLFstMyw0LDEsMTBdLFstMSwzLDEsMl0sWzEsMywxLDNdLFszLDUsMSwyNl0sWzUsNiwxLDU4XSxbNywzLDUsNF0sWzM5LDYsMiw1OV0sWzQzLDQsNSwxMV0sWzc1LDQsNiwxMl0sWzEzOSw1LDcsMjddLFsyNjcsNSw4LDI4XSxbNTIzLDYsOCw2MF0sWzc3OSw3LDksMTI1XSxbMTI5MSw2LDExLDYxXSxbLTMyLDksMzIsNTEwLCJsb3dlciJdLFszMzM5LDksMzIsNTExXSxbMiwwXV07YnJlYWs7Y2FzZSAxMDp0PVtbLTIxLDcsNCwxMjJdLFstNSw4LDAsMjUyXSxbLTQsNywwLDEyM10sWy0zLDUsMCwyNF0sWy0yLDIsMiwwXSxbMiw1LDAsMjVdLFszLDYsMCw1NF0sWzQsNywwLDEyNF0sWzUsOCwwLDI1M10sWzYsMiw2LDFdLFs3MCw1LDUsMjZdLFsxMDIsNiw1LDU1XSxbMTM0LDYsNiw1Nl0sWzE5OCw2LDcsNTddLFszMjYsNiw4LDU4XSxbNTgyLDYsOSw1OV0sWzEwOTQsNiwxMCw2MF0sWzIxMTgsNywxMSwxMjVdLFstMjIsOCwzMiwyNTQsImxvd2VyIl0sWzQxNjYsOCwzMiwyNTVdLFsyLDJdXTticmVhaztjYXNlIDExOnQ9W1sxLDEsMCwwXSxbMiwyLDEsMl0sWzQsNCwwLDEyXSxbNSw0LDEsMTNdLFs3LDUsMSwyOF0sWzksNSwyLDI5XSxbMTMsNiwyLDYwXSxbMTcsNywyLDEyMl0sWzIxLDcsMywxMjNdLFsyOSw3LDQsMTI0XSxbNDUsNyw1LDEyNV0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDEyOnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywxLDZdLFs1LDUsMCwyOF0sWzYsNSwxLDI5XSxbOCw2LDEsNjBdLFsxMCw3LDAsMTIyXSxbMTEsNywxLDEyM10sWzEzLDcsMiwxMjRdLFsxNyw3LDMsMTI1XSxbMjUsNyw0LDEyNl0sWzQxLDgsNSwyNTRdLFs3Myw4LDMyLDI1NV1dO2JyZWFrO2Nhc2UgMTM6dD1bWzEsMSwwLDBdLFsyLDMsMCw0XSxbMyw0LDAsMTJdLFs0LDUsMCwyOF0sWzUsNCwxLDEzXSxbNywzLDMsNV0sWzE1LDYsMSw1OF0sWzE3LDYsMiw1OV0sWzIxLDYsMyw2MF0sWzI5LDYsNCw2MV0sWzQ1LDYsNSw2Ml0sWzc3LDcsNiwxMjZdLFsxNDEsNywzMiwxMjddXTticmVhaztjYXNlIDE0OnQ9W1stMiwzLDAsNF0sWy0xLDMsMCw1XSxbMCwxLDAsMF0sWzEsMywwLDZdLFsyLDMsMCw3XV07YnJlYWs7Y2FzZSAxNTp0PVtbLTI0LDcsNCwxMjRdLFstOCw2LDIsNjBdLFstNCw1LDEsMjhdLFstMiw0LDAsMTJdLFstMSwzLDAsNF0sWzAsMSwwLDBdLFsxLDMsMCw1XSxbMiw0LDAsMTNdLFszLDUsMSwyOV0sWzUsNiwyLDYxXSxbOSw3LDQsMTI1XSxbLTI1LDcsMzIsMTI2LCJsb3dlciJdLFsyNSw3LDMyLDEyN11dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG8oInN0YW5kYXJkIHRhYmxlIEIuIi5jb25jYXQoZSwiIGRvZXMgbm90IGV4aXN0IikpfWZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl0W2VdPW5ldyBUKHRbZV0pO3JldHVybiByPW5ldyBFKHQsITApLFBbZV09cixyfWNsYXNzIE57Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuZGF0YT1lLHRoaXMuc3RhcnQ9dCx0aGlzLmVuZD1yLHRoaXMucG9zaXRpb249dCx0aGlzLnNoaWZ0PS0xLHRoaXMuY3VycmVudEJ5dGU9MH1yZWFkQml0KCl7aWYodGhpcy5zaGlmdDwwKXtpZih0aGlzLnBvc2l0aW9uPj10aGlzLmVuZCl0aHJvdyBuZXcgbygiZW5kIG9mIGRhdGEgd2hpbGUgcmVhZGluZyBiaXQiKTt0aGlzLmN1cnJlbnRCeXRlPXRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdLHRoaXMuc2hpZnQ9N31jb25zdCBlPXRoaXMuY3VycmVudEJ5dGU+PnRoaXMuc2hpZnQmMTtyZXR1cm4gdGhpcy5zaGlmdC0tLGV9cmVhZEJpdHMoZSl7bGV0IHQscj0wO2Zvcih0PWUtMTt0Pj0wO3QtLSlyfD10aGlzLnJlYWRCaXQoKTw8dDtyZXR1cm4gcn1ieXRlQWxpZ24oKXt0aGlzLnNoaWZ0PS0xfW5leHQoKXtyZXR1cm4gdGhpcy5wb3NpdGlvbj49dGhpcy5lbmQ/LTE6dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK119fWZ1bmN0aW9uIEQoZSx0LHIpe2xldCBuPTA7Zm9yKGxldCBhPTAsaT10Lmxlbmd0aDthPGk7YSsrKXtjb25zdCBpPXJbdFthXV07aWYoaSl7aWYoZT09PW4pcmV0dXJuIGk7bisrfX10aHJvdyBuZXcgbygiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIEIoZSx0LHIpe2NvbnN0IG49W107Zm9yKGxldCBhPTA7YTxyO2ErKyl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtuLnB1c2gocik7Zm9yKGxldCBuPTA7bjx0O24rKylyW25dPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIG59ZnVuY3Rpb24gTChlLHQscixuKXtjb25zdCBhPXtLOi0xLENvbHVtbnM6dCxSb3dzOnIsQmxhY2tJczE6ITAsRW5kT2ZCbG9jazpufSxpPW5ldyBzLkNDSVRURmF4RGVjb2RlcihlLGEpLG89W107bGV0IGMsbD0hMTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO28ucHVzaChlKTtsZXQgcj0tMTtmb3IobGV0IG49MDtuPHQ7bisrKXI8MCYmKGM9aS5yZWFkTmV4dENoYXIoKSwtMT09PWMmJihjPTAsbD0hMCkscj03KSxlW25dPWM+PnImMSxyLS19aWYobiYmIWwpe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gb310LkpiaWcySW1hZ2U9Y2xhc3N7cGFyc2VDaHVua3MoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IEk7Zm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47cisrKXtjb25zdCBuPWVbcl07RihBKHt9LG4uZGF0YSxuLnN0YXJ0LG4uZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Bcml0aG1ldGljRGVjb2Rlcj12b2lkIDA7Y29uc3Qgcj1be3FlOjIyMDE3LG5tcHM6MSxubHBzOjEsc3dpdGNoRmxhZzoxfSx7cWU6MTMzMTMsbm1wczoyLG5scHM6Nixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MyxubHBzOjksc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjQsbmxwczoxMixzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6NSxubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM4LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo3LG5scHM6Nixzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjgsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjksbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjEwLG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoxMSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoxMixubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoxMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyOSxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6MTUsbmxwczoxNCxzd2l0Y2hGbGFnOjF9LHtxZToyMTUwNSxubXBzOjE2LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MjA3Mzcsbm1wczoxNyxubHBzOjE1LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6MTgsbmxwczoxNixzd2l0Y2hGbGFnOjB9LHtxZToxNDMzNyxubXBzOjE5LG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6MTMzMTMsbm1wczoyMCxubHBzOjE4LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MjEsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZToxMDI0MSxubXBzOjIyLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjIzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6ODcwNSxubXBzOjI0LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjI1LG5scHM6MjIsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjI2LG5scHM6MjMsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI3LG5scHM6MjQsc3dpdGNoRmxhZzowfSx7cWU6NTEyMSxubXBzOjI4LG5scHM6MjUsc3dpdGNoRmxhZzowfSx7cWU6NDYwOSxubXBzOjI5LG5scHM6MjYsc3dpdGNoRmxhZzowfSx7cWU6NDM1MyxubXBzOjMwLG5scHM6Mjcsc3dpdGNoRmxhZzowfSx7cWU6Mjc1MyxubXBzOjMxLG5scHM6Mjgsc3dpdGNoRmxhZzowfSx7cWU6MjQ5NyxubXBzOjMyLG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6MjIwOSxubXBzOjMzLG5scHM6MzAsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjM0LG5scHM6MzEsc3dpdGNoRmxhZzowfSx7cWU6MTA4OSxubXBzOjM1LG5scHM6MzIsc3dpdGNoRmxhZzowfSx7cWU6NjczLG5tcHM6MzYsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozNyxubHBzOjM0LHN3aXRjaEZsYWc6MH0se3FlOjMyMSxubXBzOjM4LG5scHM6MzUsc3dpdGNoRmxhZzowfSx7cWU6MjczLG5tcHM6MzksbmxwczozNixzd2l0Y2hGbGFnOjB9LHtxZToxMzMsbm1wczo0MCxubHBzOjM3LHN3aXRjaEZsYWc6MH0se3FlOjczLG5tcHM6NDEsbmxwczozOCxzd2l0Y2hGbGFnOjB9LHtxZTozNyxubXBzOjQyLG5scHM6Mzksc3dpdGNoRmxhZzowfSx7cWU6MjEsbm1wczo0MyxubHBzOjQwLHN3aXRjaEZsYWc6MH0se3FlOjksbm1wczo0NCxubHBzOjQxLHN3aXRjaEZsYWc6MH0se3FlOjUsbm1wczo0NSxubHBzOjQyLHN3aXRjaEZsYWc6MH0se3FlOjEsbm1wczo0NSxubHBzOjQzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NDYsbmxwczo0Nixzd2l0Y2hGbGFnOjB9XTt0LkFyaXRobWV0aWNEZWNvZGVyPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyKXt0aGlzLmRhdGE9ZSx0aGlzLmJwPXQsdGhpcy5kYXRhRW5kPXIsdGhpcy5jaGlnaD1lW3RdLHRoaXMuY2xvdz0wLHRoaXMuYnl0ZUluKCksdGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjcsdGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNSx0aGlzLmN0LT03LHRoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwOzI1NT09PWVbdF0/ZVt0KzFdPjE0Mz8odGhpcy5jbG93Kz02NTI4MCx0aGlzLmN0PTgpOih0KyssdGhpcy5jbG93Kz1lW3RdPDw5LHRoaXMuY3Q9Nyx0aGlzLmJwPXQpOih0KyssdGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwLHRoaXMuY3Q9OCx0aGlzLmJwPXQpLHRoaXMuY2xvdz42NTUzNSYmKHRoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTYsdGhpcy5jbG93Jj02NTUzNSl9cmVhZEJpdChlLHQpe2xldCBuPWVbdF0+PjEsYT0xJmVbdF07Y29uc3QgaT1yW25dLHM9aS5xZTtsZXQgbyxjPXRoaXMuYS1zO2lmKHRoaXMuY2hpZ2g8cyljPHM/KGM9cyxvPWEsbj1pLm5tcHMpOihjPXMsbz0xXmEsMT09PWkuc3dpdGNoRmxhZyYmKGE9byksbj1pLm5scHMpO2Vsc2V7aWYodGhpcy5jaGlnaC09cywwIT0oMzI3NjgmYykpcmV0dXJuIHRoaXMuYT1jLGE7YzxzPyhvPTFeYSwxPT09aS5zd2l0Y2hGbGFnJiYoYT1vKSxuPWkubmxwcyk6KG89YSxuPWkubm1wcyl9ZG97MD09PXRoaXMuY3QmJnRoaXMuYnl0ZUluKCksYzw8PTEsdGhpcy5jaGlnaD10aGlzLmNoaWdoPDwxJjY1NTM1fHRoaXMuY2xvdz4+MTUmMSx0aGlzLmNsb3c9dGhpcy5jbG93PDwxJjY1NTM1LHRoaXMuY3QtLX13aGlsZSgwPT0oMzI3NjgmYykpO3JldHVybiB0aGlzLmE9YyxlW3RdPW48PDF8YSxvfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5KcGVnU3RyZWFtPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNjgpLGE9cigxNTApLGk9cigxNzcpLHM9cigxNDQpO2NsYXNzIG8gZXh0ZW5kcyBuLkRlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQscil7bGV0IG47Zm9yKDstMSE9PShuPWUuZ2V0Qnl0ZSgpKTspaWYoMjU1PT09bil7ZS5za2lwKC0xKTticmVha31zdXBlcih0KSx0aGlzLnN0cmVhbT1lLHRoaXMuZGljdD1lLmRpY3QsdGhpcy5tYXliZUxlbmd0aD10LHRoaXMucGFyYW1zPXJ9Z2V0IGJ5dGVzKCl7cmV0dXJuKDAscy5zaGFkb3cpKHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsbj10Lmxlbmd0aCxhPW5ldyBJbnQzMkFycmF5KG4pO2xldCBpPSExO2NvbnN0IHM9KDE8PHIpLTE7Zm9yKGxldCBlPTA7ZTxuO2UrPTIpYVtlXT0yNTYqKHRbZSsxXS10W2VdKXwwLGFbZSsxXT10W2VdKnN8MCwyNTY9PT1hW2VdJiYwPT09YVtlKzFdfHwoaT0hMCk7aSYmKGUuZGVjb2RlVHJhbnNmb3JtPWEpfWlmKHRoaXMucGFyYW1zIGluc3RhbmNlb2YgYS5EaWN0KXtjb25zdCB0PXRoaXMucGFyYW1zLmdldCgiQ29sb3JUcmFuc2Zvcm0iKTtOdW1iZXIuaXNJbnRlZ2VyKHQpJiYoZS5jb2xvclRyYW5zZm9ybT10KX1jb25zdCByPW5ldyBpLkpwZWdJbWFnZShlKTtyLnBhcnNlKHRoaXMuYnl0ZXMpO2NvbnN0IG49ci5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9bix0aGlzLmJ1ZmZlckxlbmd0aD1uLmxlbmd0aCx0aGlzLmVvZj0hMH19dC5KcGVnU3RyZWFtPW99LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5KcGVnSW1hZ2U9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDEzOSk7dmFyIG49cigxNDQpLGE9cigxNzgpLGk9cigxNDkpO2NsYXNzIHMgZXh0ZW5kcyBuLkJhc2VFeGNlcHRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoIkpQRUcgZXJyb3I6ICIuY29uY2F0KGUpLCJKcGVnRXJyb3IiKX19Y2xhc3MgbyBleHRlbmRzIG4uQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIiksdGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgYyBleHRlbmRzIG4uQmFzZUV4Y2VwdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJFT0lNYXJrZXJFcnJvciIpfX1jb25zdCBsPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksaD00MDE3LHU9Nzk5LGQ9MzQwNixmPTIyNzYsZz0xNTY3LHA9Mzc4NCxtPTU3OTMsYj0yODk2O2Z1bmN0aW9uIHkoZSx0KXtsZXQgcixuLGE9MCxpPTE2O2Zvcig7aT4wJiYhZVtpLTFdOylpLS07Y29uc3Qgcz1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxjPXNbMF07Zm9yKHI9MDtyPGk7cisrKXtmb3Iobj0wO248ZVtyXTtuKyspe2ZvcihjPXMucG9wKCksYy5jaGlsZHJlbltjLmluZGV4XT10W2FdO2MuaW5kZXg+MDspYz1zLnBvcCgpO2ZvcihjLmluZGV4Kysscy5wdXNoKGMpO3MubGVuZ3RoPD1yOylzLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pLGMuY2hpbGRyZW5bYy5pbmRleF09by5jaGlsZHJlbixjPW87YSsrfXIrMTxpJiYocy5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KSxjLmNoaWxkcmVuW2MuaW5kZXhdPW8uY2hpbGRyZW4sYz1vKX1yZXR1cm4gc1swXS5jaGlsZHJlbn1mdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtyKX1mdW5jdGlvbiB2KGUsdCxyLGEsaCx1LGQsZixnKXtsZXQgcD1hcmd1bWVudHMubGVuZ3RoPjkmJnZvaWQgMCE9PWFyZ3VtZW50c1s5XSYmYXJndW1lbnRzWzldO2NvbnN0IG09ci5tY3VzUGVyTGluZSxiPXIucHJvZ3Jlc3NpdmUseT10O2xldCB2PTAseD0wO2Z1bmN0aW9uIFMoKXtpZih4PjApcmV0dXJuIHgtLSx2Pj54JjE7aWYodj1lW3QrK10sMjU1PT09dil7Y29uc3Qgbj1lW3QrK107aWYobil7aWYoMjIwPT09biYmcCl7dCs9Mjtjb25zdCBuPSgwLGkucmVhZFVpbnQxNikoZSx0KTtpZih0Kz0yLG4+MCYmbiE9PXIuc2NhbkxpbmVzKXRocm93IG5ldyBvKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixuKX1lbHNlIGlmKDIxNz09PW4pe2lmKHApe2NvbnN0IGU9TSooOD09PXIucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKHIuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBvKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhLCBwb3NzaWJseSBjYXVzZWQgYnkgaW5jb3JyZWN0IGBzY2FuTGluZXNgIHBhcmFtZXRlciIsZSl9dGhyb3cgbmV3IGMoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgcygidW5leHBlY3RlZCBtYXJrZXIgIi5jb25jYXQoKHY8PDh8bikudG9TdHJpbmcoMTYpKSl9fXJldHVybiB4PTcsdj4+Pjd9ZnVuY3Rpb24gayhlKXtsZXQgdD1lO2Zvcig7Oyl7c3dpdGNoKHQ9dFtTKCldLHR5cGVvZiB0KXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBzKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gQyhlKXtsZXQgdD0wO2Zvcig7ZT4wOyl0PXQ8PDF8UygpLGUtLTtyZXR1cm4gdH1mdW5jdGlvbiBPKGUpe2lmKDE9PT1lKXJldHVybiAxPT09UygpPzE6LTE7Y29uc3QgdD1DKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX1sZXQgRixJPTAsVD0wLE09MDtmdW5jdGlvbiBFKGUsdCxyLG4sYSl7Y29uc3QgaT1yJW07TT0oci9tfDApKmUudituO2NvbnN0IHM9aSplLmgrYTt0KGUsdyhlLE0scykpfWZ1bmN0aW9uIFAoZSx0LHIpe009ci9lLmJsb2Nrc1BlckxpbmV8MDtjb25zdCBuPXIlZS5ibG9ja3NQZXJMaW5lO3QoZSx3KGUsTSxuKSl9Y29uc3QgUj1hLmxlbmd0aDtsZXQgTixELEIsTCxfLGo7aj1iPzA9PT11PzA9PT1mP2Z1bmN0aW9uKGUsdCl7Y29uc3Qgcj1rKGUuaHVmZm1hblRhYmxlREMpLG49MD09PXI/MDpPKHIpPDxnO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9bn06ZnVuY3Rpb24oZSx0KXtlLmJsb2NrRGF0YVt0XXw9UygpPDxnfTowPT09Zj9mdW5jdGlvbihlLHQpe2lmKEk+MClyZXR1cm4gdm9pZCBJLS07bGV0IHI9dTtjb25zdCBuPWQ7Zm9yKDtyPD1uOyl7Y29uc3Qgbj1rKGUuaHVmZm1hblRhYmxlQUMpLGE9MTUmbixpPW4+PjQ7aWYoMD09PWEpe2lmKGk8MTUpe0k9QyhpKSsoMTw8aSktMTticmVha31yKz0xNjtjb250aW51ZX1yKz1pO2NvbnN0IHM9bFtyXTtlLmJsb2NrRGF0YVt0K3NdPU8oYSkqKDE8PGcpLHIrK319OmZ1bmN0aW9uKGUsdCl7bGV0IHI9dTtjb25zdCBuPWQ7bGV0IGEsaSxvPTA7Zm9yKDtyPD1uOyl7Y29uc3Qgbj10K2xbcl0sYz1lLmJsb2NrRGF0YVtuXTwwPy0xOjE7c3dpdGNoKFQpe2Nhc2UgMDppZihpPWsoZS5odWZmbWFuVGFibGVBQyksYT0xNSZpLG89aT4+NCwwPT09YSlvPDE1PyhJPUMobykrKDE8PG8pLFQ9NCk6KG89MTYsVD0xKTtlbHNle2lmKDEhPT1hKXRocm93IG5ldyBzKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO0Y9TyhhKSxUPW8/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6ZS5ibG9ja0RhdGFbbl0/ZS5ibG9ja0RhdGFbbl0rPWMqKFMoKTw8Zyk6KG8tLSwwPT09byYmKFQ9Mj09PVQ/MzowKSk7YnJlYWs7Y2FzZSAzOmUuYmxvY2tEYXRhW25dP2UuYmxvY2tEYXRhW25dKz1jKihTKCk8PGcpOihlLmJsb2NrRGF0YVtuXT1GPDxnLFQ9MCk7YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW25dJiYoZS5ibG9ja0RhdGFbbl0rPWMqKFMoKTw8ZykpfXIrK300PT09VCYmKEktLSwwPT09SSYmKFQ9MCkpfTpmdW5jdGlvbihlLHQpe2NvbnN0IHI9ayhlLmh1ZmZtYW5UYWJsZURDKSxuPTA9PT1yPzA6TyhyKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPW47bGV0IGE9MTtmb3IoO2E8NjQ7KXtjb25zdCByPWsoZS5odWZmbWFuVGFibGVBQyksbj0xNSZyLGk9cj4+NDtpZigwPT09bil7aWYoaTwxNSlicmVhazthKz0xNjtjb250aW51ZX1hKz1pO2NvbnN0IHM9bFthXTtlLmJsb2NrRGF0YVt0K3NdPU8obiksYSsrfX07bGV0IFUsJD0wO2NvbnN0IFg9MT09PVI/YVswXS5ibG9ja3NQZXJMaW5lKmFbMF0uYmxvY2tzUGVyQ29sdW1uOm0qci5tY3VzUGVyQ29sdW1uO2xldCBILHE7Zm9yKDskPD1YOyl7Y29uc3Qgcj1oP01hdGgubWluKFgtJCxoKTpYO2lmKHI+MCl7Zm9yKEQ9MDtEPFI7RCsrKWFbRF0ucHJlZD0wO2lmKEk9MCwxPT09Uilmb3IoTj1hWzBdLF89MDtfPHI7XysrKVAoTixqLCQpLCQrKztlbHNlIGZvcihfPTA7XzxyO18rKyl7Zm9yKEQ9MDtEPFI7RCsrKWZvcihOPWFbRF0sSD1OLmgscT1OLnYsQj0wO0I8cTtCKyspZm9yKEw9MDtMPEg7TCsrKUUoTixqLCQsQixMKTskKyt9fWlmKHg9MCxVPUEoZSx0KSwhVSlicmVhaztpZihVLmludmFsaWQpe2NvbnN0IGU9cj4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIjsoMCxuLndhcm4pKCJkZWNvZGVTY2FuIC0gIi5jb25jYXQoZSwiIE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogIikuY29uY2F0KFUuaW52YWxpZCkpLHQ9VS5vZmZzZXR9aWYoIShVLm1hcmtlcj49NjU0ODgmJlUubWFya2VyPD02NTQ5NSkpYnJlYWs7dCs9Mn1yZXR1cm4gdC15fWZ1bmN0aW9uIHgoZSx0LHIpe2NvbnN0IG49ZS5xdWFudGl6YXRpb25UYWJsZSxhPWUuYmxvY2tEYXRhO2xldCBpLG8sYyxsLHksdyx2LHgsUyxBLGssQyxPLEYsSSxULE07aWYoIW4pdGhyb3cgbmV3IHMoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OClTPWFbdCtlXSxBPWFbdCtlKzFdLGs9YVt0K2UrMl0sQz1hW3QrZSszXSxPPWFbdCtlKzRdLEY9YVt0K2UrNV0sST1hW3QrZSs2XSxUPWFbdCtlKzddLFMqPW5bZV0sMCE9KEF8a3xDfE98RnxJfFQpPyhBKj1uW2UrMV0sayo9bltlKzJdLEMqPW5bZSszXSxPKj1uW2UrNF0sRio9bltlKzVdLEkqPW5bZSs2XSxUKj1uW2UrN10saT1tKlMrMTI4Pj44LG89bSpPKzEyOD4+OCxjPWssbD1JLHk9YiooQS1UKSsxMjg+PjgseD1iKihBK1QpKzEyOD4+OCx3PUM8PDQsdj1GPDw0LGk9aStvKzE+PjEsbz1pLW8sTT1jKnArbCpnKzEyOD4+OCxjPWMqZy1sKnArMTI4Pj44LGw9TSx5PXkrdisxPj4xLHY9eS12LHg9eCt3KzE+PjEsdz14LXcsaT1pK2wrMT4+MSxsPWktbCxvPW8rYysxPj4xLGM9by1jLE09eSpmK3gqZCsyMDQ4Pj4xMix5PXkqZC14KmYrMjA0OD4+MTIseD1NLE09dyp1K3YqaCsyMDQ4Pj4xMix3PXcqaC12KnUrMjA0OD4+MTIsdj1NLHJbZV09aSt4LHJbZSs3XT1pLXgscltlKzFdPW8rdixyW2UrNl09by12LHJbZSsyXT1jK3cscltlKzVdPWMtdyxyW2UrM109bCt5LHJbZSs0XT1sLXkpOihNPW0qUys1MTI+PjEwLHJbZV09TSxyW2UrMV09TSxyW2UrMl09TSxyW2UrM109TSxyW2UrNF09TSxyW2UrNV09TSxyW2UrNl09TSxyW2UrN109TSk7Zm9yKGxldCBlPTA7ZTw4OysrZSlTPXJbZV0sQT1yW2UrOF0saz1yW2UrMTZdLEM9cltlKzI0XSxPPXJbZSszMl0sRj1yW2UrNDBdLEk9cltlKzQ4XSxUPXJbZSs1Nl0sMCE9KEF8a3xDfE98RnxJfFQpPyhpPW0qUysyMDQ4Pj4xMixvPW0qTysyMDQ4Pj4xMixjPWssbD1JLHk9YiooQS1UKSsyMDQ4Pj4xMix4PWIqKEErVCkrMjA0OD4+MTIsdz1DLHY9RixpPTQxMTIrKGkrbysxPj4xKSxvPWktbyxNPWMqcCtsKmcrMjA0OD4+MTIsYz1jKmctbCpwKzIwNDg+PjEyLGw9TSx5PXkrdisxPj4xLHY9eS12LHg9eCt3KzE+PjEsdz14LXcsaT1pK2wrMT4+MSxsPWktbCxvPW8rYysxPj4xLGM9by1jLE09eSpmK3gqZCsyMDQ4Pj4xMix5PXkqZC14KmYrMjA0OD4+MTIseD1NLE09dyp1K3YqaCsyMDQ4Pj4xMix3PXcqaC12KnUrMjA0OD4+MTIsdj1NLFM9aSt4LFQ9aS14LEE9byt2LEk9by12LGs9Yyt3LEY9Yy13LEM9bCt5LE89bC15LFM8MTY/Uz0wOlM+PTQwODA/Uz0yNTU6Uz4+PTQsQTwxNj9BPTA6QT49NDA4MD9BPTI1NTpBPj49NCxrPDE2P2s9MDprPj00MDgwP2s9MjU1Oms+Pj00LEM8MTY/Qz0wOkM+PTQwODA/Qz0yNTU6Qz4+PTQsTzwxNj9PPTA6Tz49NDA4MD9PPTI1NTpPPj49NCxGPDE2P0Y9MDpGPj00MDgwP0Y9MjU1OkY+Pj00LEk8MTY/ST0wOkk+PTQwODA/ST0yNTU6ST4+PTQsVDwxNj9UPTA6VD49NDA4MD9UPTI1NTpUPj49NCxhW3QrZV09UyxhW3QrZSs4XT1BLGFbdCtlKzE2XT1rLGFbdCtlKzI0XT1DLGFbdCtlKzMyXT1PLGFbdCtlKzQwXT1GLGFbdCtlKzQ4XT1JLGFbdCtlKzU2XT1UKTooTT1tKlMrODE5Mj4+MTQsTT1NPC0yMDQwPzA6TT49MjAyND8yNTU6TSsyMDU2Pj40LGFbdCtlXT1NLGFbdCtlKzhdPU0sYVt0K2UrMTZdPU0sYVt0K2UrMjRdPU0sYVt0K2UrMzJdPU0sYVt0K2UrNDBdPU0sYVt0K2UrNDhdPU0sYVt0K2UrNTZdPU0pfWZ1bmN0aW9uIFMoZSx0KXtjb25zdCByPXQuYmxvY2tzUGVyTGluZSxuPXQuYmxvY2tzUGVyQ29sdW1uLGE9bmV3IEludDE2QXJyYXkoNjQpO2ZvcihsZXQgZT0wO2U8bjtlKyspZm9yKGxldCBuPTA7bjxyO24rKyl4KHQsdyh0LGUsbiksYSk7cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIEEoZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06dDtjb25zdCBuPWUubGVuZ3RoLTE7bGV0IGE9cjx0P3I6dDtpZih0Pj1uKXJldHVybiBudWxsO2NvbnN0IHM9KDAsaS5yZWFkVWludDE2KShlLHQpO2lmKHM+PTY1NDcyJiZzPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpzLG9mZnNldDp0fTtsZXQgbz0oMCxpLnJlYWRVaW50MTYpKGUsYSk7Zm9yKDshKG8+PTY1NDcyJiZvPD02NTUzNCk7KXtpZigrK2E+PW4pcmV0dXJuIG51bGw7bz0oMCxpLnJlYWRVaW50MTYpKGUsYSl9cmV0dXJue2ludmFsaWQ6cy50b1N0cmluZygxNiksbWFya2VyOm8sb2Zmc2V0OmF9fXQuSnBlZ0ltYWdlPWNsYXNze2NvbnN0cnVjdG9yKCl7bGV0e2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lLHRoaXMuX2NvbG9yVHJhbnNmb3JtPXR9cGFyc2UoZSl7bGV0e2RubFNjYW5MaW5lczp0PW51bGx9PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtmdW5jdGlvbiByKCl7Y29uc3QgdD0oMCxpLnJlYWRVaW50MTYpKGUsZCk7ZCs9MjtsZXQgcj1kK3QtMjtjb25zdCBhPUEoZSxyLGQpO251bGwhPWEmJmEuaW52YWxpZCYmKCgwLG4ud2FybikoInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIithLmludmFsaWQpLHI9YS5vZmZzZXQpO2NvbnN0IHM9ZS5zdWJhcnJheShkLHIpO3JldHVybiBkKz1zLmxlbmd0aCxzfWZ1bmN0aW9uIGEoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCkscj1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBuIG9mIGUuY29tcG9uZW50cyl7Y29uc3QgYT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqbi5oL2UubWF4SCksaT1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKm4udi9lLm1heFYpLHM9dCpuLmgsbz1yKm4udio2NCoocysxKTtuLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKSxuLmJsb2Nrc1BlckxpbmU9YSxuLmJsb2Nrc1BlckNvbHVtbj1pfWUubWN1c1BlckxpbmU9dCxlLm1jdXNQZXJDb2x1bW49cn1sZXQgaCx1LGQ9MCxmPW51bGwsZz1udWxsLHA9MDtjb25zdCBtPVtdLGI9W10sdz1bXTtsZXQgeD0oMCxpLnJlYWRVaW50MTYpKGUsZCk7aWYoZCs9Miw2NTQ5NiE9PXgpdGhyb3cgbmV3IHMoIlNPSSBub3QgZm91bmQiKTt4PSgwLGkucmVhZFVpbnQxNikoZSxkKSxkKz0yO2U6Zm9yKDs2NTQ5NyE9PXg7KXtsZXQgUyxrLEM7c3dpdGNoKHgpe2Nhc2UgNjU1MDQ6Y2FzZSA2NTUwNTpjYXNlIDY1NTA2OmNhc2UgNjU1MDc6Y2FzZSA2NTUwODpjYXNlIDY1NTA5OmNhc2UgNjU1MTA6Y2FzZSA2NTUxMTpjYXNlIDY1NTEyOmNhc2UgNjU1MTM6Y2FzZSA2NTUxNDpjYXNlIDY1NTE1OmNhc2UgNjU1MTY6Y2FzZSA2NTUxNzpjYXNlIDY1NTE4OmNhc2UgNjU1MTk6Y2FzZSA2NTUzNDpjb25zdCBPPXIoKTs2NTUwND09PXgmJjc0PT09T1swXSYmNzA9PT1PWzFdJiY3Mz09PU9bMl0mJjcwPT09T1szXSYmMD09PU9bNF0mJihmPXt2ZXJzaW9uOnttYWpvcjpPWzVdLG1pbm9yOk9bNl19LGRlbnNpdHlVbml0czpPWzddLHhEZW5zaXR5Ok9bOF08PDh8T1s5XSx5RGVuc2l0eTpPWzEwXTw8OHxPWzExXSx0aHVtYldpZHRoOk9bMTJdLHRodW1iSGVpZ2h0Ok9bMTNdLHRodW1iRGF0YTpPLnN1YmFycmF5KDE0LDE0KzMqT1sxMl0qT1sxM10pfSksNjU1MTg9PT14JiY2NT09PU9bMF0mJjEwMD09PU9bMV0mJjExMT09PU9bMl0mJjk4PT09T1szXSYmMTAxPT09T1s0XSYmKGc9e3ZlcnNpb246T1s1XTw8OHxPWzZdLGZsYWdzMDpPWzddPDw4fE9bOF0sZmxhZ3MxOk9bOV08PDh8T1sxMF0sdHJhbnNmb3JtQ29kZTpPWzExXX0pO2JyZWFrO2Nhc2UgNjU0OTk6Y29uc3QgRj0oMCxpLnJlYWRVaW50MTYpKGUsZCk7ZCs9Mjtjb25zdCBJPUYrZC0yO2xldCBUO2Zvcig7ZDxJOyl7Y29uc3QgdD1lW2QrK10scj1uZXcgVWludDE2QXJyYXkoNjQpO2lmKHQ+PjQ9PTApZm9yKGs9MDtrPDY0O2srKylUPWxba10scltUXT1lW2QrK107ZWxzZXtpZih0Pj40IT0xKXRocm93IG5ldyBzKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3Ioaz0wO2s8NjQ7aysrKVQ9bFtrXSxyW1RdPSgwLGkucmVhZFVpbnQxNikoZSxkKSxkKz0yfW1bMTUmdF09cn1icmVhaztjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppZihoKXRocm93IG5ldyBzKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtkKz0yLGg9e30saC5leHRlbmRlZD02NTQ3Mz09PXgsaC5wcm9ncmVzc2l2ZT02NTQ3ND09PXgsaC5wcmVjaXNpb249ZVtkKytdO2NvbnN0IE09KDAsaS5yZWFkVWludDE2KShlLGQpO2QrPTIsaC5zY2FuTGluZXM9dHx8TSxoLnNhbXBsZXNQZXJMaW5lPSgwLGkucmVhZFVpbnQxNikoZSxkKSxkKz0yLGguY29tcG9uZW50cz1bXSxoLmNvbXBvbmVudElkcz17fTtjb25zdCBFPWVbZCsrXTtsZXQgUD0wLFI9MDtmb3IoUz0wO1M8RTtTKyspe2NvbnN0IHQ9ZVtkXSxyPWVbZCsxXT4+NCxuPTE1JmVbZCsxXTtQPHImJihQPXIpLFI8biYmKFI9bik7Y29uc3QgYT1lW2QrMl07Qz1oLmNvbXBvbmVudHMucHVzaCh7aDpyLHY6bixxdWFudGl6YXRpb25JZDphLHF1YW50aXphdGlvblRhYmxlOm51bGx9KSxoLmNvbXBvbmVudElkc1t0XT1DLTEsZCs9M31oLm1heEg9UCxoLm1heFY9UixhKGgpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgTj0oMCxpLnJlYWRVaW50MTYpKGUsZCk7Zm9yKGQrPTIsUz0yO1M8Tjspe2NvbnN0IHQ9ZVtkKytdLHI9bmV3IFVpbnQ4QXJyYXkoMTYpO2xldCBuPTA7Zm9yKGs9MDtrPDE2O2srKyxkKyspbis9cltrXT1lW2RdO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkobik7Zm9yKGs9MDtrPG47aysrLGQrKylhW2tdPWVbZF07Uys9MTcrbiwodD4+ND09MD93OmIpWzE1JnRdPXkocixhKX1icmVhaztjYXNlIDY1NTAxOmQrPTIsdT0oMCxpLnJlYWRVaW50MTYpKGUsZCksZCs9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IEQ9MT09KytwJiYhdDtkKz0yO2NvbnN0IEI9ZVtkKytdLEw9W107Zm9yKFM9MDtTPEI7UysrKXtjb25zdCB0PWVbZCsrXSxyPWguY29tcG9uZW50SWRzW3RdLG49aC5jb21wb25lbnRzW3JdO24uaW5kZXg9dDtjb25zdCBhPWVbZCsrXTtuLmh1ZmZtYW5UYWJsZURDPXdbYT4+NF0sbi5odWZmbWFuVGFibGVBQz1iWzE1JmFdLEwucHVzaChuKX1jb25zdCBfPWVbZCsrXSxqPWVbZCsrXSxVPWVbZCsrXTt0cnl7Y29uc3QgdD12KGUsZCxoLEwsdSxfLGosVT4+NCwxNSZVLEQpO2QrPXR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIG8pcmV0dXJuKDAsbi53YXJuKSgiIi5jb25jYXQodC5tZXNzYWdlLCIgLS0gYXR0ZW1wdGluZyB0byByZS1wYXJzZSB0aGUgSlBFRyBpbWFnZS4iKSksdGhpcy5wYXJzZShlLHtkbmxTY2FuTGluZXM6dC5zY2FuTGluZXN9KTtpZih0IGluc3RhbmNlb2YgYyl7KDAsbi53YXJuKSgiIi5jb25jYXQodC5tZXNzYWdlLCIgLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuIikpO2JyZWFrIGV9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOmQrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW2RdJiZkLS07YnJlYWs7ZGVmYXVsdDpjb25zdCAkPUEoZSxkLTIsZC0zKTtpZihudWxsIT0kJiYkLmludmFsaWQpeygwLG4ud2FybikoIkpwZWdJbWFnZS5wYXJzZSAtIHVuZXhwZWN0ZWQgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIrJC5pbnZhbGlkKSxkPSQub2Zmc2V0O2JyZWFrfWlmKCEkfHxkPj1lLmxlbmd0aC0xKXsoMCxuLndhcm4pKCJKcGVnSW1hZ2UucGFyc2UgLSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGltYWdlIGRhdGEgd2l0aG91dCBmaW5kaW5nIGFuIEVPSSBtYXJrZXIgKDB4RkZEOSkuIik7YnJlYWsgZX10aHJvdyBuZXcgcygiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIreC50b1N0cmluZygxNikpfXg9KDAsaS5yZWFkVWludDE2KShlLGQpLGQrPTJ9dGhpcy53aWR0aD1oLnNhbXBsZXNQZXJMaW5lLHRoaXMuaGVpZ2h0PWguc2NhbkxpbmVzLHRoaXMuamZpZj1mLHRoaXMuYWRvYmU9Zyx0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2YgaC5jb21wb25lbnRzKXtjb25zdCB0PW1bZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCksdGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OlMoMCxlKSxzY2FsZVg6ZS5oL2gubWF4SCxzY2FsZVk6ZS52L2gubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH1fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3Qgbj10aGlzLndpZHRoL2UsYT10aGlzLmhlaWdodC90O2xldCBpLHMsbyxjLGwsaCx1LGQsZixnLHAsbT0wO2NvbnN0IGI9dGhpcy5jb21wb25lbnRzLmxlbmd0aCx5PWUqdCpiLHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHkpLHY9bmV3IFVpbnQzMkFycmF5KGUpLHg9NDI5NDk2NzI4ODtsZXQgUztmb3IodT0wO3U8Yjt1Kyspe2lmKGk9dGhpcy5jb21wb25lbnRzW3VdLHM9aS5zY2FsZVgqbixvPWkuc2NhbGVZKmEsbT11LHA9aS5vdXRwdXQsYz1pLmJsb2Nrc1BlckxpbmUrMTw8MyxzIT09Uyl7Zm9yKGw9MDtsPGU7bCsrKWQ9MHxsKnMsdltsXT0oZCZ4KTw8M3w3JmQ7Uz1zfWZvcihoPTA7aDx0O2grKylmb3IoZD0wfGgqbyxnPWMqKGQmeCl8KDcmZCk8PDMsbD0wO2w8ZTtsKyspd1ttXT1wW2crdltsXV0sbSs9Yn1sZXQgQT10aGlzLl9kZWNvZGVUcmFuc2Zvcm07aWYocnx8NCE9PWJ8fEF8fChBPW5ldyBJbnQzMkFycmF5KFstMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NV0pKSxBKWZvcih1PTA7dTx5Oylmb3IoZD0wLGY9MDtkPGI7ZCsrLHUrKyxmKz0yKXdbdV09KHdbdV0qQVtmXT4+OCkrQVtmKzFdO3JldHVybiB3fWdldCBfaXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX1fY29udmVydFljY1RvUmdiKGUpe2xldCB0LHIsbjtmb3IobGV0IGE9MCxpPWUubGVuZ3RoO2E8aTthKz0zKXQ9ZVthXSxyPWVbYSsxXSxuPWVbYSsyXSxlW2FdPXQtMTc5LjQ1NisxLjQwMipuLGVbYSsxXT10KzEzNS40NTktLjM0NCpyLS43MTQqbixlW2ErMl09dC0yMjYuODE2KzEuNzcyKnI7cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IHI9MCxuPTAsYT1lLmxlbmd0aDtyPGE7cis9MyxuKz00KXtjb25zdCBhPWVbcl0saT1lW3IrMV0scz1lW3IrMl07dFtuXT1hLTE3OS40NTYrMS40MDIqcyx0W24rMV09YSsxMzUuNDU5LS4zNDQqaS0uNzE0KnMsdFtuKzJdPWEtMjI2LjgxNisxLjc3MippLHRbbiszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7bGV0IHQscixuLGEsaT0wO2ZvcihsZXQgcz0wLG89ZS5sZW5ndGg7czxvO3MrPTQpdD1lW3NdLHI9ZVtzKzFdLG49ZVtzKzJdLGE9ZVtzKzNdLGVbaSsrXT1yKigtNjYwNjM1NjY5NDIwMzY0ZS0xOSpyKy4wMDA0MzcxMzA0NzU5MjYyMzIqbi01NDA4MDYxMDA2NDU5OWUtMTgqdCsuMDAwNDg0NDk3OTcxMjAyODEqYS0uMTU0MzYyMTUxODcxMTI2KS0xMjIuNjcxOTU0MDY4OTQrbiooLS4wMDA5NTc5NjQzNzg0NDU3NzMqbisuMDAwODE3MDc2OTExMzQ2NjI1KnQtLjAwNDc3MjcxNDA1NDA4NzQ3KmErMS41MzM4MDI1MzIyMTczNCkrdCooLjAwMDk2MTI1MDE4NDEzMDY4OCp0LS4wMDI2NjI1NzMzMjI4MzkzMyphKy40ODM1NzA4ODQ1MTI2NSkrYSooLS4wMDAzMzYxOTcxNzc2MTgzOTQqYSsuNDg0NzkxNTYxNDkwNzc2KSxlW2krK109MTA3LjI2ODAzOTM5NzcyNCtyKigyMTk5MjcxMDQ1MjU3NDFlLTE5KnItLjAwMDY0MDk5MjAxODI5Nzk0NSpuKy4wMDA2NTkzOTcwMDEyNDU1NzcqdCsuMDAwNDI2MTA1NjUyOTM4ODM3KmEtLjE3NjQ5MTc5MjQ2Mjg3NSkrbiooLS4wMDA3NzgyNjk5NDE1MTM2ODMqbisuMDAxMzA4NzIyNjE0MDgyNzUqdCsuMDAwNzcwNDgyNjMxODAxMTMyKmEtLjE1MTA1MTQ5Mjc3NTU2MikrdCooLjAwMTI2OTM1MzY4MTE0ODQzKnQtLjAwMjY1MDkwMTg5MDEwODk4KmErLjI1ODAyOTEwMjA2ODQ1KSthKigtLjAwMDMxODkxMzExNzU4ODMyOCphLS4yMTM3NDI0MDAzMjM2NjUpLGVbaSsrXT1yKigtLjAwMDU3MDExNTE5Njk3MzY3NypyLTI2MzQwOTA1MTAwNDU4OWUtMTkqbisuMDAyMDc0MTA4ODExNTAxMip0LS4wMDI4ODI2MDIzNjg1MzQ0MiphKy44MTQyNzI5NjgzNTkyOTUpLTIwLjgxMDAxMjU0Njk0NytuKigtMTUzNDk2MDU3NDQwOTc1ZS0xOSpuLS4wMDAxMzI2ODkwNDM5NjE0NDYqdCsuMDAwNTYwODMzNjkxMjQyODEyKmEtLjE5NTE1MjAyNzUzNDA0OSkrdCooLjAwMTc0NDE4MTMyOTI3NTgyKnQtLjAwMjU1MjQzMzIxNDM5MzQ3KmErLjExNjkzNTAyMDQ2NTE0NSkrYSooLS4wMDAzNDM1MzE5OTY1MTA1NTUqYSsuMjQxNjUyNjAyMzI0MDcpO3JldHVybiBlLnN1YmFycmF5KDAsaSl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrPTQpe2NvbnN0IHI9ZVt0XSxuPWVbdCsxXSxhPWVbdCsyXSxpPWVbdCszXTtlW3RdPW4qKC02NjA2MzU2Njk0MjAzNjRlLTE5Km4rLjAwMDQzNzEzMDQ3NTkyNjIzMiphLTU0MDgwNjEwMDY0NTk5ZS0xOCpyKy4wMDA0ODQ0OTc5NzEyMDI4MSppLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCthKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MyphKy4wMDA4MTcwNzY5MTEzNDY2MjUqci0uMDA0NzcyNzE0MDU0MDg3NDcqaSsxLjUzMzgwMjUzMjIxNzM0KStyKiguMDAwOTYxMjUwMTg0MTMwNjg4KnItLjAwMjY2MjU3MzMyMjgzOTMzKmkrLjQ4MzU3MDg4NDUxMjY1KStpKigtLjAwMDMzNjE5NzE3NzYxODM5NCppKy40ODQ3OTE1NjE0OTA3NzYpLGVbdCsxXT0xMDcuMjY4MDM5Mzk3NzI0K24qKDIxOTkyNzEwNDUyNTc0MWUtMTkqbi0uMDAwNjQwOTkyMDE4Mjk3OTQ1KmErLjAwMDY1OTM5NzAwMTI0NTU3NypyKy4wMDA0MjYxMDU2NTI5Mzg4MzcqaS0uMTc2NDkxNzkyNDYyODc1KSthKigtLjAwMDc3ODI2OTk0MTUxMzY4MyphKy4wMDEzMDg3MjI2MTQwODI3NSpyKy4wMDA3NzA0ODI2MzE4MDExMzIqaS0uMTUxMDUxNDkyNzc1NTYyKStyKiguMDAxMjY5MzUzNjgxMTQ4NDMqci0uMDAyNjUwOTAxODkwMTA4OTgqaSsuMjU4MDI5MTAyMDY4NDUpK2kqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KmktLjIxMzc0MjQwMDMyMzY2NSksZVt0KzJdPW4qKC0uMDAwNTcwMTE1MTk2OTczNjc3Km4tMjYzNDA5MDUxMDA0NTg5ZS0xOSphKy4wMDIwNzQxMDg4MTE1MDEyKnItLjAwMjg4MjYwMjM2ODUzNDQyKmkrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K2EqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KmEtLjAwMDEzMjY4OTA0Mzk2MTQ0NipyKy4wMDA1NjA4MzM2OTEyNDI4MTIqaS0uMTk1MTUyMDI3NTM0MDQ5KStyKiguMDAxNzQ0MTgxMzI5Mjc1ODIqci0uMDAyNTUyNDMzMjE0MzkzNDcqaSsuMTE2OTM1MDIwNDY1MTQ1KStpKigtLjAwMDM0MzUzMTk5NjUxMDU1NSppKy4yNDE2NTI2MDIzMjQwNyksZVt0KzNdPTI1NX1yZXR1cm4gZX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQscixuO2ZvcihsZXQgYT0wLGk9ZS5sZW5ndGg7YTxpO2ErPTQpdD1lW2FdLHI9ZVthKzFdLG49ZVthKzJdLGVbYV09NDM0LjQ1Ni10LTEuNDAyKm4sZVthKzFdPTExOS41NDEtdCsuMzQ0KnIrLjcxNCpuLGVbYSsyXT00ODEuODE2LXQtMS43NzIqcjtyZXR1cm4gZX1fY29udmVydENteWtUb1JnYihlKXtsZXQgdCxyLG4sYSxpPTA7Zm9yKGxldCBzPTAsbz1lLmxlbmd0aDtzPG87cys9NCl0PWVbc10scj1lW3MrMV0sbj1lW3MrMl0sYT1lW3MrM10sZVtpKytdPTI1NSt0KigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqdCsuMDAwODM3OTI2MjEyMTAxMzcyNypyKy4wMDAyODk0NzE4MTg4NjQzMjk0Km4rLjAwMzI2NDIzMTA1NzUzNzgwNiphLTEuMTE4NTYxMTg2NzIwMzkzNykrciooMjYzNzQxMDc2MTYwODk0MDVlLTIxKnItODYyNjk0OTE1ODYzODU3MmUtMjAqbi0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSphLS4wMjE1NTY4ODc5NDk3ODk2NykrbiooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKm4tLjAwMDMyNjc4MDgyNzk0ODUyODYqYSsuMDY4Njc0MjIzODU5NTM0NSktYSooLjAwMDMzNjE5NzE3NzYxODM5MzcqYSsuNzQzMDY1OTE1MTM0MjI1NCksZVtpKytdPTI1NSt0KiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqdCsuMDAwOTI0NTM3MTMyNTczNTg1KnIrLjAwMDEwNTY3MzU5NjE4NjgzNTkzKm4rLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqYS0uMzEwOTY4OTU4NzUxNTg3NSkrciooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCpyKy4wMDAyNzAyODQ1MjUzNTM0NzE0Km4rLjAwMjAyMDAzMDg5NzczMDcxNTYqYS0uNzQ4ODA1MjE2NzAxNTQ5NCkrbiooNjgzNDgxNTk5ODIzNTY2MmUtMjAqbisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqYS0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLWEqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKmErLjczNjQ4ODM4MDc3MzMxNjgpLGVbaSsrXT0yNTUrdCooMTM1OTg2NTA0MTEzODUzMDdlLTIxKnQrLjAwMDEyNDIzOTU2MTc1NDkwODUxKnIrLjAwMDQ3NTE5ODUwOTc1ODM1ODkqbi0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqYS0uMDU1NjIxODY5ODAyNjQwMzQpK3IqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NipyKy4wMDA5NjkyMjM5MTMwNzI1MTg2Km4rLjAwMDc3ODI2OTI0NTAwMzYyNTMqYS0uNDQwMTUyMzIzNjc1MjY0NjMpK24qKDUuMDY4ODgyOTE0MDY4NzY5ZS03Km4rLjAwMTc3NzgzNjkwMTEzNzUwNzEqYS0uNzU5MTQ1NDY0OTc0OTYwOSktYSooLjAwMDM0MzUzMTk5NjUxMDU1NTMqYSsuNzA2Mzc3MDE4NjE2MDE0NCk7cmV0dXJuIGUuc3ViYXJyYXkoMCxpKX1fY29udmVydENteWtUb1JnYmEoZSl7Zm9yKGxldCB0PTAscj1lLmxlbmd0aDt0PHI7dCs9NCl7Y29uc3Qgcj1lW3RdLG49ZVt0KzFdLGE9ZVt0KzJdLGk9ZVt0KzNdO2VbdF09MjU1K3IqKC02NzQ3MTQ3MDczNjAyNDQxZS0yMCpyKy4wMDA4Mzc5MjYyMTIxMDEzNzI3Km4rLjAwMDI4OTQ3MTgxODg2NDMyOTQqYSsuMDAzMjY0MjMxMDU3NTM3ODA2KmktMS4xMTg1NjExODY3MjAzOTM3KStuKigyNjM3NDEwNzYxNjA4OTQwNWUtMjEqbi04NjI2OTQ5MTU4NjM4NTcyZS0yMCphLS4wMDAyNzQ4NzY5MDY3NDk5NDkxKmktLjAyMTU1Njg4Nzk0OTc4OTY3KSthKigtMzg3ODA5OTIxMjg2OTM2M2UtMjAqYS0uMDAwMzI2NzgwODI3OTQ4NTI4NippKy4wNjg2NzQyMjM4NTk1MzQ1KS1pKiguMDAwMzM2MTk3MTc3NjE4MzkzNyppKy43NDMwNjU5MTUxMzQyMjU0KSxlW3QrMV09MjU1K3IqKC4wMDAxMzU5NjM3MjgxMzU4ODg0OCpyKy4wMDA5MjQ1MzcxMzI1NzM1ODUqbisuMDAwMTA1NjczNTk2MTg2ODM1OTMqYSsuMDAwNDc5MTg2NDY4NzQzNjUxMippLS4zMTA5Njg5NTg3NTE1ODc1KStuKigtLjAwMDIzNTQ1MzQ2MTA4MzcwMzQ0Km4rLjAwMDI3MDI4NDUyNTM1MzQ3MTQqYSsuMDAyMDIwMDMwODk3NzMwNzE1NippLS43NDg4MDUyMTY3MDE1NDk0KSthKig2ODM0ODE1OTk4MjM1NjYyZS0yMCphKy4wMDAxNTE2ODQ1MjM2MzQ2MDk3MyppLS4wOTc1MTkyNzc3NDcyODkzMyktaSooLjAwMDMxODkxMzExNzU4ODMyODEqaSsuNzM2NDg4MzgwNzczMzE2OCksZVt0KzJdPTI1NStyKigxMzU5ODY1MDQxMTM4NTMwN2UtMjEqcisuMDAwMTI0MjM5NTYxNzU0OTA4NTEqbisuMDAwNDc1MTk4NTA5NzU4MzU4OSphLTM2NzI5MzE3NDc2NjMwNDIyZS0yMippLS4wNTU2MjE4Njk4MDI2NDAzNCkrbiooLjAwMDE2MTQxMzgwNTk4NzI0Njc2Km4rLjAwMDk2OTIyMzkxMzA3MjUxODYqYSsuMDAwNzc4MjY5MjQ1MDAzNjI1MyppLS40NDAxNTIzMjM2NzUyNjQ2MykrYSooNS4wNjg4ODI5MTQwNjg3NjllLTcqYSsuMDAxNzc3ODM2OTAxMTM3NTA3MSppLS43NTkxNDU0NjQ5NzQ5NjA5KS1pKiguMDAwMzQzNTMxOTk2NTEwNTU1MyppKy43MDYzNzcwMTg2MTYwMTQ0KSxlW3QrM109MjU1fXJldHVybiBlfWdldERhdGEoZSl7bGV0e3dpZHRoOnQsaGVpZ2h0OnIsZm9yY2VSR0JBOm49ITEsZm9yY2VSR0I6aT0hMSxpc1NvdXJjZVBERjpvPSExfT1lO2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBzKCJVbnN1cHBvcnRlZCBjb2xvciBtb2RlIik7Y29uc3QgYz10aGlzLl9nZXRMaW5lYXJpemVkQmxvY2tEYXRhKHQscixvKTtpZigxPT09dGhpcy5udW1Db21wb25lbnRzJiYobnx8aSkpe2NvbnN0IGU9Yy5sZW5ndGgqKG4/NDozKSx0PW5ldyBVaW50OENsYW1wZWRBcnJheShlKTtsZXQgcj0wO2lmKG4pKDAsYS5ncmF5VG9SR0JBKShjLG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikpO2Vsc2UgZm9yKGNvbnN0IGUgb2YgYyl0W3IrK109ZSx0W3IrK109ZSx0W3IrK109ZTtyZXR1cm4gdH1pZigzPT09dGhpcy5udW1Db21wb25lbnRzJiZ0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCl7aWYobil7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYy5sZW5ndGgvMyo0KTtyZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiYShjLGUpfXJldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2IoYyl9aWYoND09PXRoaXMubnVtQ29tcG9uZW50cyl7aWYodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIG4/dGhpcy5fY29udmVydFljY2tUb1JnYmEoYyk6aT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKGMpOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGMpO2lmKG4pcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKGMpO2lmKGkpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2IoYyl9cmV0dXJuIGN9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBPWEsdC5jb252ZXJ0VG9SR0JBPWZ1bmN0aW9uKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2Ugbi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFA6cmV0dXJuIGEoZSk7Y2FzZSBuLkltYWdlS2luZC5SR0JfMjRCUFA6cmV0dXJuIGZ1bmN0aW9uKGUpe2xldHtzcmM6dCxzcmNQb3M6cj0wLGRlc3Q6YSxkZXN0UG9zOmk9MCx3aWR0aDpzLGhlaWdodDpvfT1lLGM9MDtjb25zdCBsPXQubGVuZ3RoPj4yLGg9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyLHIsbCk7aWYobi5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7Zm9yKDtjPGwtMjtjKz0zLGkrPTQpe2NvbnN0IGU9aFtjXSx0PWhbYysxXSxyPWhbYysyXTthW2ldPTQyNzgxOTAwODB8ZSxhW2krMV09ZT4+PjI0fHQ8PDh8NDI3ODE5MDA4MCxhW2krMl09dD4+PjE2fHI8PDE2fDQyNzgxOTAwODAsYVtpKzNdPXI+Pj44fDQyNzgxOTAwODB9Zm9yKGxldCBlPTQqYyxyPXQubGVuZ3RoO2U8cjtlKz0zKWFbaSsrXT10W2VdfHRbZSsxXTw8OHx0W2UrMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO2M8bC0yO2MrPTMsaSs9NCl7Y29uc3QgZT1oW2NdLHQ9aFtjKzFdLHI9aFtjKzJdO2FbaV09MjU1fGUsYVtpKzFdPWU8PDI0fHQ+Pj44fDI1NSxhW2krMl09dDw8MTZ8cj4+PjE2fDI1NSxhW2krM109cjw8OHwyNTV9Zm9yKGxldCBlPTQqYyxyPXQubGVuZ3RoO2U8cjtlKz0zKWFbaSsrXT10W2VdPDwyNHx0W2UrMV08PDE2fHRbZSsyXTw8OHwyNTV9cmV0dXJue3NyY1BvczpyLGRlc3RQb3M6aX19KGUpfXJldHVybiBudWxsfSx0LmdyYXlUb1JHQkE9ZnVuY3Rpb24oZSx0KXtpZihuLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0W3JdPTY1NzkzKmVbcl18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKyl0W3JdPTE2ODQzMDA4KmVbcl18MjU1fSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpO2Z1bmN0aW9uIGEoZSl7bGV0e3NyYzp0LHNyY1BvczpyPTAsZGVzdDphLHdpZHRoOmksaGVpZ2h0OnMsbm9uQmxhY2tDb2xvcjpvPTQyOTQ5NjcyOTUsaW52ZXJzZURlY29kZTpjPSExfT1lO2NvbnN0IGw9bi5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSxbaCx1XT1jP1tvLGxdOltsLG9dLGQ9aT4+MyxmPTcmaSxnPXQubGVuZ3RoO2E9bmV3IFVpbnQzMkFycmF5KGEuYnVmZmVyKTtsZXQgcD0wO2ZvcihsZXQgZT0wO2U8cztlKyspe2Zvcihjb25zdCBlPXIrZDtyPGU7cisrKXtjb25zdCBlPXI8Zz90W3JdOjI1NTthW3ArK109MTI4JmU/dTpoLGFbcCsrXT02NCZlP3U6aCxhW3ArK109MzImZT91OmgsYVtwKytdPTE2JmU/dTpoLGFbcCsrXT04JmU/dTpoLGFbcCsrXT00JmU/dTpoLGFbcCsrXT0yJmU/dTpoLGFbcCsrXT0xJmU/dTpofWlmKDA9PT1mKWNvbnRpbnVlO2NvbnN0IGU9cjxnP3RbcisrXToyNTU7Zm9yKGxldCB0PTA7dDxmO3QrKylhW3ArK109ZSYxPDw3LXQ/dTpofXJldHVybntzcmNQb3M6cixkZXN0UG9zOnB9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkpweFN0cmVhbT12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTY4KSxhPXIoMTgwKSxpPXIoMTQ0KTtjbGFzcyBzIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKHQpLHRoaXMuc3RyZWFtPWUsdGhpcy5kaWN0PWUuZGljdCx0aGlzLm1heWJlTGVuZ3RoPXQsdGhpcy5wYXJhbXM9cn1nZXQgYnl0ZXMoKXtyZXR1cm4oMCxpLnNoYWRvdykodGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fXJlYWRCbG9jaygpe2lmKHRoaXMuZW9mKXJldHVybjtjb25zdCBlPW5ldyBhLkpweEltYWdlO2UucGFyc2UodGhpcy5ieXRlcyk7Y29uc3QgdD1lLndpZHRoLHI9ZS5oZWlnaHQsbj1lLmNvbXBvbmVudHNDb3VudCxpPWUudGlsZXMubGVuZ3RoO2lmKDE9PT1pKXRoaXMuYnVmZmVyPWUudGlsZXNbMF0uaXRlbXM7ZWxzZXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KnIqbik7Zm9yKGxldCByPTA7cjxpO3IrKyl7Y29uc3QgaT1lLnRpbGVzW3JdLHM9aS53aWR0aCxvPWkuaGVpZ2h0LGM9aS5sZWZ0LGw9aS50b3AsaD1pLml0ZW1zO2xldCB1PTAsZD0odCpsK2MpKm47Y29uc3QgZj10Km4sZz1zKm47Zm9yKGxldCBlPTA7ZTxvO2UrKyl7Y29uc3QgZT1oLnN1YmFycmF5KHUsdStnKTthLnNldChlLGQpLHUrPWcsZCs9Zn19dGhpcy5idWZmZXI9YX10aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGgsdGhpcy5lb2Y9ITB9fXQuSnB4U3RyZWFtPXN9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5KcHhJbWFnZT12b2lkIDAscigxMzkpLHIoMikscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTQ0KSxhPXIoMTQ5KSxzPXIoMTc1KTtjbGFzcyBvIGV4dGVuZHMgbi5CYXNlRXhjZXB0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJKUFggZXJyb3I6ICIuY29uY2F0KGUpLCJKcHhFcnJvciIpfX1jb25zdCBjPXtMTDowLExIOjEsSEw6MSxISDoyfTtmdW5jdGlvbiBsKGUsdCl7ZS54MD1NYXRoLmNlaWwodC5YT3Npei9lLlhSc2l6KSxlLngxPU1hdGguY2VpbCh0LlhzaXovZS5YUnNpeiksZS55MD1NYXRoLmNlaWwodC5ZT3Npei9lLllSc2l6KSxlLnkxPU1hdGguY2VpbCh0LllzaXovZS5ZUnNpeiksZS53aWR0aD1lLngxLWUueDAsZS5oZWlnaHQ9ZS55MS1lLnkwfWZ1bmN0aW9uIGgoZSx0KXtjb25zdCByPWUuU0laLG49W107bGV0IGE7Y29uc3QgaT1NYXRoLmNlaWwoKHIuWHNpei1yLlhUT3Npeikvci5YVHNpeikscz1NYXRoLmNlaWwoKHIuWXNpei1yLllUT3Npeikvci5ZVHNpeik7Zm9yKGxldCBlPTA7ZTxzO2UrKylmb3IobGV0IHQ9MDt0PGk7dCsrKWE9e30sYS50eDA9TWF0aC5tYXgoci5YVE9zaXordCpyLlhUc2l6LHIuWE9zaXopLGEudHkwPU1hdGgubWF4KHIuWVRPc2l6K2Uqci5ZVHNpeixyLllPc2l6KSxhLnR4MT1NYXRoLm1pbihyLlhUT3NpeisodCsxKSpyLlhUc2l6LHIuWHNpeiksYS50eTE9TWF0aC5taW4oci5ZVE9zaXorKGUrMSkqci5ZVHNpeixyLllzaXopLGEud2lkdGg9YS50eDEtYS50eDAsYS5oZWlnaHQ9YS50eTEtYS50eTAsYS5jb21wb25lbnRzPVtdLG4ucHVzaChhKTtlLnRpbGVzPW47Zm9yKGxldCBlPTAsaT1yLkNzaXo7ZTxpO2UrKyl7Y29uc3Qgcj10W2VdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT17fTthPW5bdF0saS50Y3gwPU1hdGguY2VpbChhLnR4MC9yLlhSc2l6KSxpLnRjeTA9TWF0aC5jZWlsKGEudHkwL3IuWVJzaXopLGkudGN4MT1NYXRoLmNlaWwoYS50eDEvci5YUnNpeiksaS50Y3kxPU1hdGguY2VpbChhLnR5MS9yLllSc2l6KSxpLndpZHRoPWkudGN4MS1pLnRjeDAsaS5oZWlnaHQ9aS50Y3kxLWkudGN5MCxhLmNvbXBvbmVudHNbZV09aX19fWZ1bmN0aW9uIHUoZSx0LHIpe2NvbnN0IG49dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMsYT17fTtyZXR1cm4gbi5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPyhhLlBQeD1uLnByZWNpbmN0c1NpemVzW3JdLlBQeCxhLlBQeT1uLnByZWNpbmN0c1NpemVzW3JdLlBQeSk6KGEuUFB4PTE1LGEuUFB5PTE1KSxhLnhjYl89cj4wP01hdGgubWluKG4ueGNiLGEuUFB4LTEpOk1hdGgubWluKG4ueGNiLGEuUFB4KSxhLnljYl89cj4wP01hdGgubWluKG4ueWNiLGEuUFB5LTEpOk1hdGgubWluKG4ueWNiLGEuUFB5KSxhfWZ1bmN0aW9uIGQoZSx0LHIpe2NvbnN0IG49MTw8ci5QUHgsYT0xPDxyLlBQeSxpPTA9PT10LnJlc0xldmVsLHM9MTw8ci5QUHgrKGk/MDotMSksbz0xPDxyLlBQeSsoaT8wOi0xKSxjPXQudHJ4MT50LnRyeDA/TWF0aC5jZWlsKHQudHJ4MS9uKS1NYXRoLmZsb29yKHQudHJ4MC9uKTowLGw9dC50cnkxPnQudHJ5MD9NYXRoLmNlaWwodC50cnkxL2EpLU1hdGguZmxvb3IodC50cnkwL2EpOjAsaD1jKmw7dC5wcmVjaW5jdFBhcmFtZXRlcnM9e3ByZWNpbmN0V2lkdGg6bixwcmVjaW5jdEhlaWdodDphLG51bXByZWNpbmN0c3dpZGU6YyxudW1wcmVjaW5jdHNoaWdoOmwsbnVtcHJlY2luY3RzOmgscHJlY2luY3RXaWR0aEluU3ViYmFuZDpzLHByZWNpbmN0SGVpZ2h0SW5TdWJiYW5kOm99fWZ1bmN0aW9uIGYoZSx0LHIpe2NvbnN0IG49ci54Y2JfLGE9ci55Y2JfLGk9MTw8bixzPTE8PGEsbz10LnRieDA+Pm4sYz10LnRieTA+PmEsbD10LnRieDEraS0xPj5uLGg9dC50YnkxK3MtMT4+YSx1PXQucmVzb2x1dGlvbi5wcmVjaW5jdFBhcmFtZXRlcnMsZD1bXSxmPVtdO2xldCBnLHAsbSxiO2ZvcihwPWM7cDxoO3ArKylmb3IoZz1vO2c8bDtnKyspe2lmKG09e2NieDpnLGNieTpwLHRieDA6aSpnLHRieTA6cypwLHRieDE6aSooZysxKSx0YnkxOnMqKHArMSl9LG0udGJ4MF89TWF0aC5tYXgodC50YngwLG0udGJ4MCksbS50YnkwXz1NYXRoLm1heCh0LnRieTAsbS50YnkwKSxtLnRieDFfPU1hdGgubWluKHQudGJ4MSxtLnRieDEpLG0udGJ5MV89TWF0aC5taW4odC50YnkxLG0udGJ5MSksYj1NYXRoLmZsb29yKChtLnRieDBfLXQudGJ4MCkvdS5wcmVjaW5jdFdpZHRoSW5TdWJiYW5kKStNYXRoLmZsb29yKChtLnRieTBfLXQudGJ5MCkvdS5wcmVjaW5jdEhlaWdodEluU3ViYmFuZCkqdS5udW1wcmVjaW5jdHN3aWRlLG0ucHJlY2luY3ROdW1iZXI9YixtLnN1YmJhbmRUeXBlPXQudHlwZSxtLkxibG9jaz0zLG0udGJ4MV88PW0udGJ4MF98fG0udGJ5MV88PW0udGJ5MF8pY29udGludWU7ZC5wdXNoKG0pO2xldCBlPWZbYl07dm9pZCAwIT09ZT8oZzxlLmNieE1pbj9lLmNieE1pbj1nOmc+ZS5jYnhNYXgmJihlLmNieE1heD1nKSxwPGUuY2J5TWluP2UuY2J4TWluPXA6cD5lLmNieU1heCYmKGUuY2J5TWF4PXApKTpmW2JdPWU9e2NieE1pbjpnLGNieU1pbjpwLGNieE1heDpnLGNieU1heDpwfSxtLnByZWNpbmN0PWV9dC5jb2RlYmxvY2tQYXJhbWV0ZXJzPXtjb2RlYmxvY2tXaWR0aDpuLGNvZGVibG9ja0hlaWdodDphLG51bWNvZGVibG9ja3dpZGU6bC1vKzEsbnVtY29kZWJsb2NraGlnaDpoLWMrMX0sdC5jb2RlYmxvY2tzPWQsdC5wcmVjaW5jdHM9Zn1mdW5jdGlvbiBnKGUsdCxyKXtjb25zdCBuPVtdLGE9ZS5zdWJiYW5kcztmb3IobGV0IGU9MCxyPWEubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9YVtlXS5jb2RlYmxvY2tzO2ZvcihsZXQgZT0wLGE9ci5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT1yW2VdO2EucHJlY2luY3ROdW1iZXI9PT10JiZuLnB1c2goYSl9fXJldHVybntsYXllck51bWJlcjpyLGNvZGVibG9ja3M6bn19ZnVuY3Rpb24gcChlKXtjb25zdCB0PWUuU0laLHI9ZS5jdXJyZW50VGlsZS5pbmRleCxuPWUudGlsZXNbcl0sYT1uLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXo7bGV0IHM9MDtmb3IobGV0IGU9MDtlPGk7ZSsrKXM9TWF0aC5tYXgocyxuLmNvbXBvbmVudHNbZV0uY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudCk7bGV0IGM9MCxsPTAsaD0wLHU9MDt0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24oKXtmb3IoO2M8YTtjKyspe2Zvcig7bDw9cztsKyspe2Zvcig7aDxpO2grKyl7Y29uc3QgZT1uLmNvbXBvbmVudHNbaF07aWYobD5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2xdLHI9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2Zvcig7dTxyOyl7Y29uc3QgZT1nKHQsdSxjKTtyZXR1cm4gdSsrLGV9dT0wfWg9MH1sPTB9dGhyb3cgbmV3IG8oIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIG0oZSl7Y29uc3QgdD1lLlNJWixyPWUuY3VycmVudFRpbGUuaW5kZXgsbj1lLnRpbGVzW3JdLGE9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLmxheWVyc0NvdW50LGk9dC5Dc2l6O2xldCBzPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKylzPU1hdGgubWF4KHMsbi5jb21wb25lbnRzW2VdLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpO2xldCBjPTAsbD0wLGg9MCx1PTA7dGhpcy5uZXh0UGFja2V0PWZ1bmN0aW9uKCl7Zm9yKDtjPD1zO2MrKyl7Zm9yKDtsPGE7bCsrKXtmb3IoO2g8aTtoKyspe2NvbnN0IGU9bi5jb21wb25lbnRzW2hdO2lmKGM+ZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KWNvbnRpbnVlO2NvbnN0IHQ9ZS5yZXNvbHV0aW9uc1tjXSxyPXQucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0cztmb3IoO3U8cjspe2NvbnN0IGU9Zyh0LHUsbCk7cmV0dXJuIHUrKyxlfXU9MH1oPTB9bD0wfXRocm93IG5ldyBvKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiBiKGUpe2NvbnN0IHQ9ZS5TSVoscj1lLmN1cnJlbnRUaWxlLmluZGV4LG49ZS50aWxlc1tyXSxhPW4uY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpejtsZXQgcyxjLGwsaCx1PTA7Zm9yKGw9MDtsPGk7bCsrKXtjb25zdCBlPW4uY29tcG9uZW50c1tsXTt1PU1hdGgubWF4KHUsZS5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50KX1jb25zdCBkPW5ldyBJbnQzMkFycmF5KHUrMSk7Zm9yKGM9MDtjPD11OysrYyl7bGV0IGU9MDtmb3IobD0wO2w8aTsrK2wpe2NvbnN0IHQ9bi5jb21wb25lbnRzW2xdLnJlc29sdXRpb25zO2M8dC5sZW5ndGgmJihlPU1hdGgubWF4KGUsdFtjXS5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzKSl9ZFtjXT1lfXM9MCxjPTAsbD0wLGg9MCx0aGlzLm5leHRQYWNrZXQ9ZnVuY3Rpb24oKXtmb3IoO2M8PXU7YysrKXtmb3IoO2g8ZFtjXTtoKyspe2Zvcig7bDxpO2wrKyl7Y29uc3QgZT1uLmNvbXBvbmVudHNbbF07aWYoYz5lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQpY29udGludWU7Y29uc3QgdD1lLnJlc29sdXRpb25zW2NdLHI9dC5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3RzO2lmKCEoaD49cikpe2Zvcig7czxhOyl7Y29uc3QgZT1nKHQsaCxzKTtyZXR1cm4gcysrLGV9cz0wfX1sPTB9aD0wfXRocm93IG5ldyBvKCJPdXQgb2YgcGFja2V0cyIpfX1mdW5jdGlvbiB5KGUpe2NvbnN0IHQ9ZS5TSVoscj1lLmN1cnJlbnRUaWxlLmluZGV4LG49ZS50aWxlc1tyXSxhPW4uY29kaW5nU3R5bGVEZWZhdWx0UGFyYW1ldGVycy5sYXllcnNDb3VudCxpPXQuQ3NpeixzPXgobiksYz1zO2xldCBsPTAsaD0wLHU9MCxkPTAsZj0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbigpe2Zvcig7ZjxjLm1heE51bUhpZ2g7ZisrKXtmb3IoO2Q8Yy5tYXhOdW1XaWRlO2QrKyl7Zm9yKDt1PGk7dSsrKXtjb25zdCBlPW4uY29tcG9uZW50c1t1XSx0PWUuY29kaW5nU3R5bGVQYXJhbWV0ZXJzLmRlY29tcG9zaXRpb25MZXZlbHNDb3VudDtmb3IoO2g8PXQ7aCsrKXtjb25zdCB0PWUucmVzb2x1dGlvbnNbaF0scj1zLmNvbXBvbmVudHNbdV0ucmVzb2x1dGlvbnNbaF0sbj12KGQsZixyLGMsdCk7aWYobnVsbCE9PW4pe2Zvcig7bDxhOyl7Y29uc3QgZT1nKHQsbixsKTtyZXR1cm4gbCsrLGV9bD0wfX1oPTB9dT0wfWQ9MH10aHJvdyBuZXcgbygiT3V0IG9mIHBhY2tldHMiKX19ZnVuY3Rpb24gdyhlKXtjb25zdCB0PWUuU0laLHI9ZS5jdXJyZW50VGlsZS5pbmRleCxuPWUudGlsZXNbcl0sYT1uLmNvZGluZ1N0eWxlRGVmYXVsdFBhcmFtZXRlcnMubGF5ZXJzQ291bnQsaT10LkNzaXoscz14KG4pO2xldCBjPTAsbD0wLGg9MCx1PTAsZD0wO3RoaXMubmV4dFBhY2tldD1mdW5jdGlvbigpe2Zvcig7aDxpOysraCl7Y29uc3QgZT1uLmNvbXBvbmVudHNbaF0sdD1zLmNvbXBvbmVudHNbaF0scj1lLmNvZGluZ1N0eWxlUGFyYW1ldGVycy5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQ7Zm9yKDtkPHQubWF4TnVtSGlnaDtkKyspe2Zvcig7dTx0Lm1heE51bVdpZGU7dSsrKXtmb3IoO2w8PXI7bCsrKXtjb25zdCByPWUucmVzb2x1dGlvbnNbbF0sbj10LnJlc29sdXRpb25zW2xdLGk9dih1LGQsbix0LHIpO2lmKG51bGwhPT1pKXtmb3IoO2M8YTspe2NvbnN0IGU9ZyhyLGksYyk7cmV0dXJuIGMrKyxlfWM9MH19bD0wfXU9MH1kPTB9dGhyb3cgbmV3IG8oIk91dCBvZiBwYWNrZXRzIil9fWZ1bmN0aW9uIHYoZSx0LHIsbixhKXtjb25zdCBpPWUqbi5taW5XaWR0aCxzPXQqbi5taW5IZWlnaHQ7aWYoaSVyLndpZHRoIT0wfHxzJXIuaGVpZ2h0IT0wKXJldHVybiBudWxsO2NvbnN0IG89cy9yLndpZHRoKmEucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c3dpZGU7cmV0dXJuIGkvci5oZWlnaHQrb31mdW5jdGlvbiB4KGUpe2NvbnN0IHQ9ZS5jb21wb25lbnRzLmxlbmd0aDtsZXQgcj1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1BWF9WQUxVRSxhPTAsaT0wO2NvbnN0IHM9bmV3IEFycmF5KHQpO2ZvcihsZXQgbz0wO288dDtvKyspe2NvbnN0IHQ9ZS5jb21wb25lbnRzW29dLGM9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LGw9bmV3IEFycmF5KGMrMSk7bGV0IGg9TnVtYmVyLk1BWF9WQUxVRSx1PU51bWJlci5NQVhfVkFMVUUsZD0wLGY9MCxnPTE7Zm9yKGxldCBlPWM7ZT49MDstLWUpe2NvbnN0IHI9dC5yZXNvbHV0aW9uc1tlXSxuPWcqci5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RXaWR0aCxhPWcqci5wcmVjaW5jdFBhcmFtZXRlcnMucHJlY2luY3RIZWlnaHQ7aD1NYXRoLm1pbihoLG4pLHU9TWF0aC5taW4odSxhKSxkPU1hdGgubWF4KGQsci5wcmVjaW5jdFBhcmFtZXRlcnMubnVtcHJlY2luY3Rzd2lkZSksZj1NYXRoLm1heChmLHIucHJlY2luY3RQYXJhbWV0ZXJzLm51bXByZWNpbmN0c2hpZ2gpLGxbZV09e3dpZHRoOm4saGVpZ2h0OmF9LGc8PD0xfXI9TWF0aC5taW4ocixoKSxuPU1hdGgubWluKG4sdSksYT1NYXRoLm1heChhLGQpLGk9TWF0aC5tYXgoaSxmKSxzW29dPXtyZXNvbHV0aW9uczpsLG1pbldpZHRoOmgsbWluSGVpZ2h0OnUsbWF4TnVtV2lkZTpkLG1heE51bUhpZ2g6Zn19cmV0dXJue2NvbXBvbmVudHM6cyxtaW5XaWR0aDpyLG1pbkhlaWdodDpuLG1heE51bVdpZGU6YSxtYXhOdW1IaWdoOml9fWZ1bmN0aW9uIFMoZSl7Y29uc3QgdD1lLlNJWixyPWUuY3VycmVudFRpbGUuaW5kZXgsbj1lLnRpbGVzW3JdLGE9dC5Dc2l6O2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IHQ9bi5jb21wb25lbnRzW2VdLHI9dC5jb2RpbmdTdHlsZVBhcmFtZXRlcnMuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50LGE9W10saT1bXTtmb3IobGV0IGU9MDtlPD1yO2UrKyl7Y29uc3Qgbj11KDAsdCxlKSxzPXt9LG89MTw8ci1lO2xldCBjO2lmKHMudHJ4MD1NYXRoLmNlaWwodC50Y3gwL28pLHMudHJ5MD1NYXRoLmNlaWwodC50Y3kwL28pLHMudHJ4MT1NYXRoLmNlaWwodC50Y3gxL28pLHMudHJ5MT1NYXRoLmNlaWwodC50Y3kxL28pLHMucmVzTGV2ZWw9ZSxkKDAscyxuKSxhLnB1c2gocyksMD09PWUpYz17fSxjLnR5cGU9IkxMIixjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9vKSxjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9vKSxjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9vKSxjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9vKSxjLnJlc29sdXRpb249cyxmKDAsYyxuKSxpLnB1c2goYykscy5zdWJiYW5kcz1bY107ZWxzZXtjb25zdCBhPTE8PHItZSsxLG89W107Yz17fSxjLnR5cGU9IkhMIixjLnRieDA9TWF0aC5jZWlsKHQudGN4MC9hLS41KSxjLnRieTA9TWF0aC5jZWlsKHQudGN5MC9hKSxjLnRieDE9TWF0aC5jZWlsKHQudGN4MS9hLS41KSxjLnRieTE9TWF0aC5jZWlsKHQudGN5MS9hKSxjLnJlc29sdXRpb249cyxmKDAsYyxuKSxpLnB1c2goYyksby5wdXNoKGMpLGM9e30sYy50eXBlPSJMSCIsYy50YngwPU1hdGguY2VpbCh0LnRjeDAvYSksYy50YnkwPU1hdGguY2VpbCh0LnRjeTAvYS0uNSksYy50YngxPU1hdGguY2VpbCh0LnRjeDEvYSksYy50YnkxPU1hdGguY2VpbCh0LnRjeTEvYS0uNSksYy5yZXNvbHV0aW9uPXMsZigwLGMsbiksaS5wdXNoKGMpLG8ucHVzaChjKSxjPXt9LGMudHlwZT0iSEgiLGMudGJ4MD1NYXRoLmNlaWwodC50Y3gwL2EtLjUpLGMudGJ5MD1NYXRoLmNlaWwodC50Y3kwL2EtLjUpLGMudGJ4MT1NYXRoLmNlaWwodC50Y3gxL2EtLjUpLGMudGJ5MT1NYXRoLmNlaWwodC50Y3kxL2EtLjUpLGMucmVzb2x1dGlvbj1zLGYoMCxjLG4pLGkucHVzaChjKSxvLnB1c2goYykscy5zdWJiYW5kcz1vfX10LnJlc29sdXRpb25zPWEsdC5zdWJiYW5kcz1pfWNvbnN0IGk9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLnByb2dyZXNzaW9uT3JkZXI7c3dpdGNoKGkpe2Nhc2UgMDpuLnBhY2tldHNJdGVyYXRvcj1uZXcgcChlKTticmVhaztjYXNlIDE6bi5wYWNrZXRzSXRlcmF0b3I9bmV3IG0oZSk7YnJlYWs7Y2FzZSAyOm4ucGFja2V0c0l0ZXJhdG9yPW5ldyBiKGUpO2JyZWFrO2Nhc2UgMzpuLnBhY2tldHNJdGVyYXRvcj1uZXcgeShlKTticmVhaztjYXNlIDQ6bi5wYWNrZXRzSXRlcmF0b3I9bmV3IHcoZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbygiVW5zdXBwb3J0ZWQgcHJvZ3Jlc3Npb24gb3JkZXIgIi5jb25jYXQoaSkpfX1mdW5jdGlvbiBBKGUsdCxyLG4pe2xldCBpLHM9MCxjPTAsbD0hMTtmdW5jdGlvbiBoKGUpe2Zvcig7YzxlOyl7Y29uc3QgZT10W3Irc107cysrLGw/KGk9aTw8N3xlLGMrPTcsbD0hMSk6KGk9aTw8OHxlLGMrPTgpLDI1NT09PWUmJihsPSEwKX1yZXR1cm4gYy09ZSxpPj4+YyYoMTw8ZSktMX1mdW5jdGlvbiB1KGUpe3JldHVybiAyNTU9PT10W3Ircy0xXSYmdFtyK3NdPT09ZT8oZCgxKSwhMCk6MjU1PT09dFtyK3NdJiZ0W3IrcysxXT09PWUmJihkKDIpLCEwKX1mdW5jdGlvbiBkKGUpe3MrPWV9ZnVuY3Rpb24gZigpe2M9MCxsJiYocysrLGw9ITEpfWZ1bmN0aW9uIGcoKXtpZigwPT09aCgxKSlyZXR1cm4gMTtpZigwPT09aCgxKSlyZXR1cm4gMjtsZXQgZT1oKDIpO3JldHVybiBlPDM/ZSszOihlPWgoNSksZTwzMT9lKzY6KGU9aCg3KSxlKzM3KSl9Y29uc3QgcD1lLmN1cnJlbnRUaWxlLmluZGV4LG09ZS50aWxlc1twXSxiPWUuQ09ELnNvcE1hcmtlclVzZWQseT1lLkNPRC5lcGhNYXJrZXJVc2VkLHc9bS5wYWNrZXRzSXRlcmF0b3I7Zm9yKDtzPG47KXtmKCksYiYmdSgxNDUpJiZkKDQpO2NvbnN0IGU9dy5uZXh0UGFja2V0KCk7aWYoIWgoMSkpY29udGludWU7Y29uc3Qgbj1lLmxheWVyTnVtYmVyLGk9W107bGV0IGM7Zm9yKGxldCB0PTAscj1lLmNvZGVibG9ja3MubGVuZ3RoO3Q8cjt0Kyspe2M9ZS5jb2RlYmxvY2tzW3RdO2xldCByPWMucHJlY2luY3Q7Y29uc3Qgcz1jLmNieC1yLmNieE1pbixsPWMuY2J5LXIuY2J5TWluO2xldCB1LGQsZj0hMSxwPSExO2lmKHZvaWQgMCE9PWMuaW5jbHVkZWQpZj0hIWgoMSk7ZWxzZXtsZXQgZTtpZihyPWMucHJlY2luY3Qsdm9pZCAwIT09ci5pbmNsdXNpb25UcmVlKWU9ci5pbmNsdXNpb25UcmVlO2Vsc2V7Y29uc3QgdD1yLmNieE1heC1yLmNieE1pbisxLGE9ci5jYnlNYXgtci5jYnlNaW4rMTtlPW5ldyBJKHQsYSxuKSxkPW5ldyBGKHQsYSksci5pbmNsdXNpb25UcmVlPWUsci56ZXJvQml0UGxhbmVzVHJlZT1kO2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMCE9PWgoMSkpdGhyb3cgbmV3IG8oIkludmFsaWQgdGFnIHRyZWUiKX1pZihlLnJlc2V0KHMsbCxuKSlmb3IoOzspe2lmKCFoKDEpKXtlLmluY3JlbWVudFZhbHVlKG4pO2JyZWFrfWlmKHU9IWUubmV4dExldmVsKCksdSl7Yy5pbmNsdWRlZD0hMCxmPXA9ITA7YnJlYWt9fX1pZighZiljb250aW51ZTtpZihwKXtmb3IoZD1yLnplcm9CaXRQbGFuZXNUcmVlLGQucmVzZXQocyxsKTs7KWlmKGgoMSkpe2lmKHU9IWQubmV4dExldmVsKCksdSlicmVha31lbHNlIGQuaW5jcmVtZW50VmFsdWUoKTtjLnplcm9CaXRQbGFuZXM9ZC52YWx1ZX1jb25zdCBtPWcoKTtmb3IoO2goMSk7KWMuTGJsb2NrKys7Y29uc3QgYj0oMCxhLmxvZzIpKG0pLHk9aCgobTwxPDxiP2ItMTpiKStjLkxibG9jayk7aS5wdXNoKHtjb2RlYmxvY2s6Yyxjb2RpbmdwYXNzZXM6bSxkYXRhTGVuZ3RoOnl9KX1mb3IoZigpLHkmJnUoMTQ2KTtpLmxlbmd0aD4wOyl7Y29uc3QgZT1pLnNoaWZ0KCk7Yz1lLmNvZGVibG9jayx2b2lkIDA9PT1jLmRhdGEmJihjLmRhdGE9W10pLGMuZGF0YS5wdXNoKHtkYXRhOnQsc3RhcnQ6citzLGVuZDpyK3MrZS5kYXRhTGVuZ3RoLGNvZGluZ3Bhc3NlczplLmNvZGluZ3Bhc3Nlc30pLHMrPWUuZGF0YUxlbmd0aH19cmV0dXJuIHN9ZnVuY3Rpb24gayhlLHQscixuLGEsaSxvLGMsbCl7Y29uc3QgaD1uLnRieDAsdT1uLnRieTAsZD1uLnRieDEtbi50YngwLGY9bi5jb2RlYmxvY2tzLGc9IkgiPT09bi50eXBlLmNoYXJBdCgwKT8xOjAscD0iSCI9PT1uLnR5cGUuY2hhckF0KDEpP3Q6MDtmb3IobGV0IHI9MCxtPWYubGVuZ3RoO3I8bTsrK3Ipe2NvbnN0IG09ZltyXSxiPW0udGJ4MV8tbS50YngwXyx5PW0udGJ5MV8tbS50YnkwXztpZigwPT09Ynx8MD09PXkpY29udGludWU7aWYodm9pZCAwPT09bS5kYXRhKWNvbnRpbnVlO2NvbnN0IHc9bmV3IFQoYix5LG0uc3ViYmFuZFR5cGUsbS56ZXJvQml0UGxhbmVzLGkpO2xldCB2PTI7Y29uc3QgeD1tLmRhdGE7bGV0IFMsQSxrLEM9MCxPPTA7Zm9yKFM9MCxBPXgubGVuZ3RoO1M8QTtTKyspaz14W1NdLEMrPWsuZW5kLWsuc3RhcnQsTys9ay5jb2RpbmdwYXNzZXM7Y29uc3QgRj1uZXcgVWludDhBcnJheShDKTtsZXQgST0wO2ZvcihTPTAsQT14Lmxlbmd0aDtTPEE7UysrKXtrPXhbU107Y29uc3QgZT1rLmRhdGEuc3ViYXJyYXkoay5zdGFydCxrLmVuZCk7Ri5zZXQoZSxJKSxJKz1lLmxlbmd0aH1jb25zdCBNPW5ldyBzLkFyaXRobWV0aWNEZWNvZGVyKEYsMCxDKTtmb3Iody5zZXREZWNvZGVyKE0pLFM9MDtTPE87UysrKXtzd2l0Y2godil7Y2FzZSAwOncucnVuU2lnbmlmaWNhbmNlUHJvcGFnYXRpb25QYXNzKCk7YnJlYWs7Y2FzZSAxOncucnVuTWFnbml0dWRlUmVmaW5lbWVudFBhc3MoKTticmVhaztjYXNlIDI6dy5ydW5DbGVhbnVwUGFzcygpLGMmJncuY2hlY2tTZWdtZW50YXRpb25TeW1ib2woKX1sJiZ3LnJlc2V0KCksdj0odisxKSUzfWxldCBFPW0udGJ4MF8taCsobS50YnkwXy11KSpkO2NvbnN0IFA9dy5jb2VmZmljZW50c1NpZ24sUj13LmNvZWZmaWNlbnRzTWFnbml0dWRlLE49dy5iaXRzRGVjb2RlZCxEPW8/MDouNTtsZXQgQixMLF87ST0wO2NvbnN0IGo9IkxMIiE9PW4udHlwZTtmb3IoUz0wO1M8eTtTKyspe2NvbnN0IHI9MiooRS9kfDApKih0LWQpK2crcDtmb3IoQj0wO0I8YjtCKyspTD1SW0ldLDAhPT1MJiYoTD0oTCtEKSphLDAhPT1QW0ldJiYoTD0tTCksXz1OW0ldLGVbaj9yKyhFPDwxKTpFXT1vJiZfPj1pP0w6TCooMTw8aS1fKSksRSsrLEkrKztFKz1kLWJ9fX1mdW5jdGlvbiBDKGUsdCxyKXtjb25zdCBuPXQuY29tcG9uZW50c1tyXSxhPW4uY29kaW5nU3R5bGVQYXJhbWV0ZXJzLGk9bi5xdWFudGl6YXRpb25QYXJhbWV0ZXJzLHM9YS5kZWNvbXBvc2l0aW9uTGV2ZWxzQ291bnQsbz1pLlNQcWNkcyxsPWkuc2NhbGFyRXhwb3VuZGVkLGg9aS5ndWFyZEJpdHMsdT1hLnNlZ21lbnRhdGlvblN5bWJvbFVzZWQsZD1hLnJlc2V0Q29udGV4dFByb2JhYmlsaXRpZXMsZj1lLmNvbXBvbmVudHNbcl0ucHJlY2lzaW9uLGc9YS5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24scD1nP25ldyBQOm5ldyBFLG09W107bGV0IGI9MDtmb3IobGV0IGU9MDtlPD1zO2UrKyl7Y29uc3QgdD1uLnJlc29sdXRpb25zW2VdLHI9dC50cngxLXQudHJ4MCxhPXQudHJ5MS10LnRyeTAsaT1uZXcgRmxvYXQzMkFycmF5KHIqYSk7Zm9yKGxldCBuPTAsYT10LnN1YmJhbmRzLmxlbmd0aDtuPGE7bisrKXtsZXQgYSxzO2w/KGE9b1tiXS5tdSxzPW9bYl0uZXBzaWxvbixiKyspOihhPW9bMF0ubXUscz1vWzBdLmVwc2lsb24rKGU+MD8xLWU6MCkpO2NvbnN0IHA9dC5zdWJiYW5kc1tuXSxtPWNbcC50eXBlXTtrKGksciwwLHAsZz8xOjIqKihmK20tcykqKDErYS8yMDQ4KSxoK3MtMSxnLHUsZCl9bS5wdXNoKHt3aWR0aDpyLGhlaWdodDphLGl0ZW1zOml9KX1jb25zdCB5PXAuY2FsY3VsYXRlKG0sbi50Y3gwLG4udGN5MCk7cmV0dXJue2xlZnQ6bi50Y3gwLHRvcDpuLnRjeTAsd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHQsaXRlbXM6eS5pdGVtc319ZnVuY3Rpb24gTyhlLHQpe2NvbnN0IHI9ZS5TSVouQ3NpeixuPWUudGlsZXNbdF07Zm9yKGxldCB0PTA7dDxyO3QrKyl7Y29uc3Qgcj1uLmNvbXBvbmVudHNbdF0sYT12b2lkIDAhPT1lLmN1cnJlbnRUaWxlLlFDQ1t0XT9lLmN1cnJlbnRUaWxlLlFDQ1t0XTplLmN1cnJlbnRUaWxlLlFDRDtyLnF1YW50aXphdGlvblBhcmFtZXRlcnM9YTtjb25zdCBpPXZvaWQgMCE9PWUuY3VycmVudFRpbGUuQ09DW3RdP2UuY3VycmVudFRpbGUuQ09DW3RdOmUuY3VycmVudFRpbGUuQ09EO3IuY29kaW5nU3R5bGVQYXJhbWV0ZXJzPWl9bi5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzPWUuY3VycmVudFRpbGUuQ09EfXQuSnB4SW1hZ2U9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmZhaWxPbkNvcnJ1cHRlZEltYWdlPSExfXBhcnNlKGUpe2lmKDY1MzU5PT09KDAsYS5yZWFkVWludDE2KShlLDApKXJldHVybiB2b2lkIHRoaXMucGFyc2VDb2Rlc3RyZWFtKGUsMCxlLmxlbmd0aCk7Y29uc3QgdD1lLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjx0Oyl7bGV0IGk9OCxzPSgwLGEucmVhZFVpbnQzMikoZSxyKTtjb25zdCBjPSgwLGEucmVhZFVpbnQzMikoZSxyKzQpO2lmKHIrPWksMT09PXMmJihzPTQyOTQ5NjcyOTYqKDAsYS5yZWFkVWludDMyKShlLHIpKygwLGEucmVhZFVpbnQzMikoZSxyKzQpLHIrPTgsaSs9OCksMD09PXMmJihzPXQtcitpKSxzPGkpdGhyb3cgbmV3IG8oIkludmFsaWQgYm94IGZpZWxkIHNpemUiKTtjb25zdCBsPXMtaTtsZXQgaD0hMDtzd2l0Y2goYyl7Y2FzZSAxNzg1NzM3ODMyOmg9ITE7YnJlYWs7Y2FzZSAxNjY4MjQ2NjQyOmNvbnN0IHQ9ZVtyXTtpZigxPT09dCl7Y29uc3QgdD0oMCxhLnJlYWRVaW50MzIpKGUsciszKTtzd2l0Y2godCl7Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6YnJlYWs7ZGVmYXVsdDooMCxuLndhcm4pKCJVbmtub3duIGNvbG9yc3BhY2UgIit0KX19ZWxzZSAyPT09dCYmKDAsbi5pbmZvKSgiSUNDIHByb2ZpbGUgbm90IHN1cHBvcnRlZCIpO2JyZWFrO2Nhc2UgMTc4NTczNzgyNzp0aGlzLnBhcnNlQ29kZXN0cmVhbShlLHIscitsKTticmVhaztjYXNlIDE3ODM2MzZlMzoyMTg3OTM3MzghPT0oMCxhLnJlYWRVaW50MzIpKGUscikmJigwLG4ud2FybikoIkludmFsaWQgSlAyIHNpZ25hdHVyZSIpO2JyZWFrO2Nhc2UgMTc4MzYzNDQ1ODpjYXNlIDE3MTg5MDkyOTY6Y2FzZSAxOTIwMDk5Njk3OmNhc2UgMTkxOTI1MTIzMjpjYXNlIDE3Njg0NDkxMzg6YnJlYWs7ZGVmYXVsdDpjb25zdCBpPVN0cmluZy5mcm9tQ2hhckNvZGUoYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYyk7KDAsbi53YXJuKSgiVW5zdXBwb3J0ZWQgaGVhZGVyIHR5cGUgIi5jb25jYXQoYywiICgiKS5jb25jYXQoaSwiKS4iKSl9aCYmKHIrPWwpfX1wYXJzZUltYWdlUHJvcGVydGllcyhlKXtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO3Q+PTA7KXtjb25zdCByPXQ7aWYodD1lLmdldEJ5dGUoKSw2NTM2MT09KHI8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtjb25zdCBpPWUuZ2V0VWludDE2KCk7cmV0dXJuIHRoaXMud2lkdGg9dC1uLHRoaXMuaGVpZ2h0PXItYSx0aGlzLmNvbXBvbmVudHNDb3VudD1pLHZvaWQodGhpcy5iaXRzUGVyQ29tcG9uZW50PTgpfX10aHJvdyBuZXcgbygiTm8gc2l6ZSBtYXJrZXIgZm91bmQgaW4gSlBYIHN0cmVhbSIpfXBhcnNlQ29kZXN0cmVhbShlLHQscil7Y29uc3QgaT17fTtsZXQgcz0hMTt0cnl7bGV0IG89dDtmb3IoO28rMTxyOyl7Y29uc3QgdD0oMCxhLnJlYWRVaW50MTYpKGUsbyk7bys9MjtsZXQgcixjLHUsZCxmLGcscD0wO3N3aXRjaCh0KXtjYXNlIDY1MzU5OmkubWFpbkhlYWRlcj0hMDticmVhaztjYXNlIDY1NDk3OmJyZWFrO2Nhc2UgNjUzNjE6cD0oMCxhLnJlYWRVaW50MTYpKGUsbyk7Y29uc3QgbT17fTttLlhzaXo9KDAsYS5yZWFkVWludDMyKShlLG8rNCksbS5Zc2l6PSgwLGEucmVhZFVpbnQzMikoZSxvKzgpLG0uWE9zaXo9KDAsYS5yZWFkVWludDMyKShlLG8rMTIpLG0uWU9zaXo9KDAsYS5yZWFkVWludDMyKShlLG8rMTYpLG0uWFRzaXo9KDAsYS5yZWFkVWludDMyKShlLG8rMjApLG0uWVRzaXo9KDAsYS5yZWFkVWludDMyKShlLG8rMjQpLG0uWFRPc2l6PSgwLGEucmVhZFVpbnQzMikoZSxvKzI4KSxtLllUT3Npej0oMCxhLnJlYWRVaW50MzIpKGUsbyszMik7Y29uc3QgYj0oMCxhLnJlYWRVaW50MTYpKGUsbyszNik7bS5Dc2l6PWI7Y29uc3QgeT1bXTtyPW8rMzg7Zm9yKGxldCB0PTA7dDxiO3QrKyl7Y29uc3QgdD17cHJlY2lzaW9uOjErKDEyNyZlW3JdKSxpc1NpZ25lZDohISgxMjgmZVtyXSksWFJzaXo6ZVtyKzFdLFlSc2l6OmVbcisyXX07cis9MyxsKHQsbSkseS5wdXNoKHQpfWkuU0laPW0saS5jb21wb25lbnRzPXksaChpLHkpLGkuUUNDPVtdLGkuQ09DPVtdO2JyZWFrO2Nhc2UgNjUzNzI6cD0oMCxhLnJlYWRVaW50MTYpKGUsbyk7Y29uc3Qgdz17fTtzd2l0Y2gocj1vKzIsYz1lW3IrK10sMzEmYyl7Y2FzZSAwOmQ9OCxmPSEwO2JyZWFrO2Nhc2UgMTpkPTE2LGY9ITE7YnJlYWs7Y2FzZSAyOmQ9MTYsZj0hMDticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBTUWNkIHZhbHVlICIrYyl9Zm9yKHcubm9RdWFudGl6YXRpb249OD09PWQsdy5zY2FsYXJFeHBvdW5kZWQ9Zix3Lmd1YXJkQml0cz1jPj41LHU9W107cjxwK287KXtjb25zdCB0PXt9Ozg9PT1kPyh0LmVwc2lsb249ZVtyKytdPj4zLHQubXU9MCk6KHQuZXBzaWxvbj1lW3JdPj4zLHQubXU9KDcmZVtyXSk8PDh8ZVtyKzFdLHIrPTIpLHUucHVzaCh0KX13LlNQcWNkcz11LGkubWFpbkhlYWRlcj9pLlFDRD13OihpLmN1cnJlbnRUaWxlLlFDRD13LGkuY3VycmVudFRpbGUuUUNDPVtdKTticmVhaztjYXNlIDY1MzczOnA9KDAsYS5yZWFkVWludDE2KShlLG8pO2NvbnN0IHY9e307bGV0IHg7c3dpdGNoKHI9bysyLGkuU0laLkNzaXo8MjU3P3g9ZVtyKytdOih4PSgwLGEucmVhZFVpbnQxNikoZSxyKSxyKz0yKSxjPWVbcisrXSwzMSZjKXtjYXNlIDA6ZD04LGY9ITA7YnJlYWs7Y2FzZSAxOmQ9MTYsZj0hMTticmVhaztjYXNlIDI6ZD0xNixmPSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFNRY2QgdmFsdWUgIitjKX1mb3Iodi5ub1F1YW50aXphdGlvbj04PT09ZCx2LnNjYWxhckV4cG91bmRlZD1mLHYuZ3VhcmRCaXRzPWM+PjUsdT1bXTtyPHArbzspe2NvbnN0IHQ9e307OD09PWQ/KHQuZXBzaWxvbj1lW3IrK10+PjMsdC5tdT0wKToodC5lcHNpbG9uPWVbcl0+PjMsdC5tdT0oNyZlW3JdKTw8OHxlW3IrMV0scis9MiksdS5wdXNoKHQpfXYuU1BxY2RzPXUsaS5tYWluSGVhZGVyP2kuUUNDW3hdPXY6aS5jdXJyZW50VGlsZS5RQ0NbeF09djticmVhaztjYXNlIDY1MzYyOnA9KDAsYS5yZWFkVWludDE2KShlLG8pO2NvbnN0IGs9e307cj1vKzI7Y29uc3QgQz1lW3IrK107ay5lbnRyb3B5Q29kZXJXaXRoQ3VzdG9tUHJlY2luY3RzPSEhKDEmQyksay5zb3BNYXJrZXJVc2VkPSEhKDImQyksay5lcGhNYXJrZXJVc2VkPSEhKDQmQyksay5wcm9ncmVzc2lvbk9yZGVyPWVbcisrXSxrLmxheWVyc0NvdW50PSgwLGEucmVhZFVpbnQxNikoZSxyKSxyKz0yLGsubXVsdGlwbGVDb21wb25lbnRUcmFuc2Zvcm09ZVtyKytdLGsuZGVjb21wb3NpdGlvbkxldmVsc0NvdW50PWVbcisrXSxrLnhjYj0yKygxNSZlW3IrK10pLGsueWNiPTIrKDE1JmVbcisrXSk7Y29uc3QgRj1lW3IrK107aWYoay5zZWxlY3RpdmVBcml0aG1ldGljQ29kaW5nQnlwYXNzPSEhKDEmRiksay5yZXNldENvbnRleHRQcm9iYWJpbGl0aWVzPSEhKDImRiksay50ZXJtaW5hdGlvbk9uRWFjaENvZGluZ1Bhc3M9ISEoNCZGKSxrLnZlcnRpY2FsbHlTdHJpcGU9ISEoOCZGKSxrLnByZWRpY3RhYmxlVGVybWluYXRpb249ISEoMTYmRiksay5zZWdtZW50YXRpb25TeW1ib2xVc2VkPSEhKDMyJkYpLGsucmV2ZXJzaWJsZVRyYW5zZm9ybWF0aW9uPWVbcisrXSxrLmVudHJvcHlDb2RlcldpdGhDdXN0b21QcmVjaW5jdHMpe2NvbnN0IHQ9W107Zm9yKDtyPHArbzspe2NvbnN0IG49ZVtyKytdO3QucHVzaCh7UFB4OjE1Jm4sUFB5Om4+PjR9KX1rLnByZWNpbmN0c1NpemVzPXR9Y29uc3QgST1bXTtrLnNlbGVjdGl2ZUFyaXRobWV0aWNDb2RpbmdCeXBhc3MmJkkucHVzaCgic2VsZWN0aXZlQXJpdGhtZXRpY0NvZGluZ0J5cGFzcyIpLGsudGVybWluYXRpb25PbkVhY2hDb2RpbmdQYXNzJiZJLnB1c2goInRlcm1pbmF0aW9uT25FYWNoQ29kaW5nUGFzcyIpLGsudmVydGljYWxseVN0cmlwZSYmSS5wdXNoKCJ2ZXJ0aWNhbGx5U3RyaXBlIiksay5wcmVkaWN0YWJsZVRlcm1pbmF0aW9uJiZJLnB1c2goInByZWRpY3RhYmxlVGVybWluYXRpb24iKSxJLmxlbmd0aD4wJiYocz0hMCwoMCxuLndhcm4pKCJKUFg6IFVuc3VwcG9ydGVkIENPRCBvcHRpb25zICgiLmNvbmNhdChJLmpvaW4oIiwgIiksIikuIikpKSxpLm1haW5IZWFkZXI/aS5DT0Q9azooaS5jdXJyZW50VGlsZS5DT0Q9ayxpLmN1cnJlbnRUaWxlLkNPQz1bXSk7YnJlYWs7Y2FzZSA2NTQyNDpwPSgwLGEucmVhZFVpbnQxNikoZSxvKSxnPXt9LGcuaW5kZXg9KDAsYS5yZWFkVWludDE2KShlLG8rMiksZy5sZW5ndGg9KDAsYS5yZWFkVWludDMyKShlLG8rNCksZy5kYXRhRW5kPWcubGVuZ3RoK28tMixnLnBhcnRJbmRleD1lW28rOF0sZy5wYXJ0c0NvdW50PWVbbys5XSxpLm1haW5IZWFkZXI9ITEsMD09PWcucGFydEluZGV4JiYoZy5DT0Q9aS5DT0QsZy5DT0M9aS5DT0Muc2xpY2UoMCksZy5RQ0Q9aS5RQ0QsZy5RQ0M9aS5RQ0Muc2xpY2UoMCkpLGkuY3VycmVudFRpbGU9ZzticmVhaztjYXNlIDY1NDI3Omc9aS5jdXJyZW50VGlsZSwwPT09Zy5wYXJ0SW5kZXgmJihPKGksZy5pbmRleCksUyhpKSkscD1nLmRhdGFFbmQtbyxBKGksZSxvLHApO2JyZWFrO2Nhc2UgNjUzNjM6KDAsbi53YXJuKSgiSlBYOiBDb2Rlc3RyZWFtIGNvZGUgMHhGRjUzIChDT0MpIGlzIG5vdCBpbXBsZW1lbnRlZC4iKTtjYXNlIDY1MzY1OmNhc2UgNjUzNjc6Y2FzZSA2NTM2ODpjYXNlIDY1MzgwOnA9KDAsYS5yZWFkVWludDE2KShlLG8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNvZGVzdHJlYW0gY29kZTogIit0LnRvU3RyaW5nKDE2KSl9bys9cH19Y2F0Y2goZSl7aWYoc3x8dGhpcy5mYWlsT25Db3JydXB0ZWRJbWFnZSl0aHJvdyBuZXcgbyhlLm1lc3NhZ2UpOygwLG4ud2FybikoJ0pQWDogVHJ5aW5nIHRvIHJlY292ZXIgZnJvbTogIicuY29uY2F0KGUubWVzc2FnZSwnIi4nKSl9dGhpcy50aWxlcz1mdW5jdGlvbihlKXtjb25zdCB0PWUuU0laLHI9ZS5jb21wb25lbnRzLG49dC5Dc2l6LGE9W107Zm9yKGxldCB0PTAsaT1lLnRpbGVzLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUudGlsZXNbdF0scz1bXTtmb3IobGV0IHQ9MDt0PG47dCsrKXNbdF09QyhlLGksdCk7Y29uc3Qgbz1zWzBdLGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uaXRlbXMubGVuZ3RoKm4pLGw9e2xlZnQ6by5sZWZ0LHRvcDpvLnRvcCx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodCxpdGVtczpjfTtsZXQgaCx1LGQsZixnLHAsbSxiPTA7aWYoaS5jb2RpbmdTdHlsZURlZmF1bHRQYXJhbWV0ZXJzLm11bHRpcGxlQ29tcG9uZW50VHJhbnNmb3JtKXtjb25zdCBlPTQ9PT1uLHQ9c1swXS5pdGVtcyxhPXNbMV0uaXRlbXMsbz1zWzJdLml0ZW1zLGw9ZT9zWzNdLml0ZW1zOm51bGw7aD1yWzBdLnByZWNpc2lvbi04LHU9LjUrKDEyODw8aCk7Y29uc3QgeT1pLmNvbXBvbmVudHNbMF0sdz1uLTM7aWYoZj10Lmxlbmd0aCx5LmNvZGluZ1N0eWxlUGFyYW1ldGVycy5yZXZlcnNpYmxlVHJhbnNmb3JtYXRpb24pZm9yKGQ9MDtkPGY7ZCsrLGIrPXcpe2c9dFtkXSt1LHA9YVtkXSxtPW9bZF07Y29uc3QgZT1nLShtK3A+PjIpO2NbYisrXT1lK20+PmgsY1tiKytdPWU+PmgsY1tiKytdPWUrcD4+aH1lbHNlIGZvcihkPTA7ZDxmO2QrKyxiKz13KWc9dFtkXSt1LHA9YVtkXSxtPW9bZF0sY1tiKytdPWcrMS40MDIqbT4+aCxjW2IrK109Zy0uMzQ0MTMqcC0uNzE0MTQqbT4+aCxjW2IrK109ZysxLjc3MipwPj5oO2lmKGUpZm9yKGQ9MCxiPTM7ZDxmO2QrKyxiKz00KWNbYl09bFtkXSt1Pj5ofWVsc2UgZm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgdD1zW2VdLml0ZW1zO2ZvcihoPXJbZV0ucHJlY2lzaW9uLTgsdT0uNSsoMTI4PDxoKSxiPWUsZD0wLGY9dC5sZW5ndGg7ZDxmO2QrKyljW2JdPXRbZF0rdT4+aCxiKz1ufWEucHVzaChsKX1yZXR1cm4gYX0oaSksdGhpcy53aWR0aD1pLlNJWi5Yc2l6LWkuU0laLlhPc2l6LHRoaXMuaGVpZ2h0PWkuU0laLllzaXotaS5TSVouWU9zaXosdGhpcy5jb21wb25lbnRzQ291bnQ9aS5TSVouQ3Npen19O2NsYXNzIEZ7Y29uc3RydWN0b3IoZSx0KXtjb25zdCByPSgwLGEubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOltdfTt0aGlzLmxldmVscy5wdXNoKHIpLGU9TWF0aC5jZWlsKGUvMiksdD1NYXRoLmNlaWwodC8yKX19cmVzZXQoZSx0KXtsZXQgcixuPTAsYT0wO2Zvcig7bjx0aGlzLmxldmVscy5sZW5ndGg7KXtyPXRoaXMubGV2ZWxzW25dO2NvbnN0IGk9ZSt0KnIud2lkdGg7aWYodm9pZCAwIT09ci5pdGVtc1tpXSl7YT1yLml0ZW1zW2ldO2JyZWFrfXIuaW5kZXg9aSxlPj49MSx0Pj49MSxuKyt9bi0tLHI9dGhpcy5sZXZlbHNbbl0sci5pdGVtc1tyLmluZGV4XT1hLHRoaXMuY3VycmVudExldmVsPW4sZGVsZXRlIHRoaXMudmFsdWV9aW5jcmVtZW50VmFsdWUoKXtjb25zdCBlPXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTtlLml0ZW1zW2UuaW5kZXhdKyt9bmV4dExldmVsKCl7bGV0IGU9dGhpcy5jdXJyZW50TGV2ZWwsdD10aGlzLmxldmVsc1tlXTtjb25zdCByPXQuaXRlbXNbdC5pbmRleF07cmV0dXJuIGUtLSxlPDA/KHRoaXMudmFsdWU9ciwhMSk6KHRoaXMuY3VycmVudExldmVsPWUsdD10aGlzLmxldmVsc1tlXSx0Lml0ZW1zW3QuaW5kZXhdPXIsITApfX1jbGFzcyBJe2NvbnN0cnVjdG9yKGUsdCxyKXtjb25zdCBuPSgwLGEubG9nMikoTWF0aC5tYXgoZSx0KSkrMTt0aGlzLmxldmVscz1bXTtmb3IobGV0IGE9MDthPG47YSsrKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUqdCk7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKW5bZV09cjtjb25zdCBhPXt3aWR0aDplLGhlaWdodDp0LGl0ZW1zOm59O3RoaXMubGV2ZWxzLnB1c2goYSksZT1NYXRoLmNlaWwoZS8yKSx0PU1hdGguY2VpbCh0LzIpfX1yZXNldChlLHQscil7bGV0IG49MDtmb3IoO248dGhpcy5sZXZlbHMubGVuZ3RoOyl7Y29uc3QgYT10aGlzLmxldmVsc1tuXSxpPWUrdCphLndpZHRoO2EuaW5kZXg9aTtjb25zdCBzPWEuaXRlbXNbaV07aWYoMjU1PT09cylicmVhaztpZihzPnIpcmV0dXJuIHRoaXMuY3VycmVudExldmVsPW4sdGhpcy5wcm9wYWdhdGVWYWx1ZXMoKSwhMTtlPj49MSx0Pj49MSxuKyt9cmV0dXJuIHRoaXMuY3VycmVudExldmVsPW4tMSwhMH1pbmNyZW1lbnRWYWx1ZShlKXtjb25zdCB0PXRoaXMubGV2ZWxzW3RoaXMuY3VycmVudExldmVsXTt0Lml0ZW1zW3QuaW5kZXhdPWUrMSx0aGlzLnByb3BhZ2F0ZVZhbHVlcygpfXByb3BhZ2F0ZVZhbHVlcygpe2xldCBlPXRoaXMuY3VycmVudExldmVsLHQ9dGhpcy5sZXZlbHNbZV07Y29uc3Qgcj10Lml0ZW1zW3QuaW5kZXhdO2Zvcig7LS1lPj0wOyl0PXRoaXMubGV2ZWxzW2VdLHQuaXRlbXNbdC5pbmRleF09cn1uZXh0TGV2ZWwoKXtsZXQgZT10aGlzLmN1cnJlbnRMZXZlbCx0PXRoaXMubGV2ZWxzW2VdO2NvbnN0IHI9dC5pdGVtc1t0LmluZGV4XTtyZXR1cm4gdC5pdGVtc1t0LmluZGV4XT0yNTUsZS0tLCEoZTwwfHwodGhpcy5jdXJyZW50TGV2ZWw9ZSx0PXRoaXMubGV2ZWxzW2VdLHQuaXRlbXNbdC5pbmRleF09ciwwKSl9fWNsYXNzIFR7Y29uc3RydWN0b3IoZSx0LHIsbixhKXtsZXQgaTt0aGlzLndpZHRoPWUsdGhpcy5oZWlnaHQ9dCxpPSJISCI9PT1yP1QuSEhDb250ZXh0TGFiZWw6IkhMIj09PXI/VC5ITENvbnRleHRMYWJlbDpULkxMQW5kTEhDb250ZXh0c0xhYmVsLHRoaXMuY29udGV4dExhYmVsVGFibGU9aTtjb25zdCBzPWUqdDtsZXQgbzt0aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZT1uZXcgVWludDhBcnJheShzKSx0aGlzLmNvZWZmaWNlbnRzU2lnbj1uZXcgVWludDhBcnJheShzKSxvPWE+MTQ/bmV3IFVpbnQzMkFycmF5KHMpOmE+Nj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQ4QXJyYXkocyksdGhpcy5jb2VmZmljZW50c01hZ25pdHVkZT1vLHRoaXMucHJvY2Vzc2luZ0ZsYWdzPW5ldyBVaW50OEFycmF5KHMpO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkocyk7aWYoMCE9PW4pZm9yKGxldCBlPTA7ZTxzO2UrKyljW2VdPW47dGhpcy5iaXRzRGVjb2RlZD1jLHRoaXMucmVzZXQoKX1zZXREZWNvZGVyKGUpe3RoaXMuZGVjb2Rlcj1lfXJlc2V0KCl7dGhpcy5jb250ZXh0cz1uZXcgSW50OEFycmF5KDE5KSx0aGlzLmNvbnRleHRzWzBdPTgsdGhpcy5jb250ZXh0c1tULlVOSUZPUk1fQ09OVEVYVF09OTIsdGhpcy5jb250ZXh0c1tULlJVTkxFTkdUSF9DT05URVhUXT02fXNldE5laWdoYm9yc1NpZ25pZmljYW5jZShlLHQscil7Y29uc3Qgbj10aGlzLm5laWdoYm9yc1NpZ25pZmljYW5jZSxhPXRoaXMud2lkdGgsaT10aGlzLmhlaWdodCxzPXQ+MCxvPXQrMTxhO2xldCBjO2U+MCYmKGM9ci1hLHMmJihuW2MtMV0rPTE2KSxvJiYobltjKzFdKz0xNiksbltjXSs9NCksZSsxPGkmJihjPXIrYSxzJiYobltjLTFdKz0xNiksbyYmKG5bYysxXSs9MTYpLG5bY10rPTQpLHMmJihuW3ItMV0rPTEpLG8mJihuW3IrMV0rPTEpLG5bcl18PTEyOH1ydW5TaWduaWZpY2FuY2VQcm9wYWdhdGlvblBhc3MoKXtjb25zdCBlPXRoaXMuZGVjb2Rlcix0PXRoaXMud2lkdGgscj10aGlzLmhlaWdodCxuPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUsYT10aGlzLmNvZWZmaWNlbnRzU2lnbixpPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLHM9dGhpcy5wcm9jZXNzaW5nRmxhZ3Msbz10aGlzLmNvbnRleHRzLGM9dGhpcy5jb250ZXh0TGFiZWxUYWJsZSxsPXRoaXMuYml0c0RlY29kZWQ7Zm9yKGxldCBoPTA7aDxyO2grPTQpZm9yKGxldCB1PTA7dTx0O3UrKyl7bGV0IGQ9aCp0K3U7Zm9yKGxldCBmPTA7Zjw0O2YrKyxkKz10KXtjb25zdCB0PWgrZjtpZih0Pj1yKWJyZWFrO2lmKHNbZF0mPS0yLG5bZF18fCFpW2RdKWNvbnRpbnVlO2NvbnN0IGc9Y1tpW2RdXTtpZihlLnJlYWRCaXQobyxnKSl7Y29uc3QgZT10aGlzLmRlY29kZVNpZ25CaXQodCx1LGQpO2FbZF09ZSxuW2RdPTEsdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UodCx1LGQpLHNbZF18PTJ9bFtkXSsrLHNbZF18PTF9fX1kZWNvZGVTaWduQml0KGUsdCxyKXtjb25zdCBuPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxpPXRoaXMuY29lZmZpY2VudHNNYWduaXR1ZGUscz10aGlzLmNvZWZmaWNlbnRzU2lnbjtsZXQgbyxjLGwsaCx1LGQ7aD10PjAmJjAhPT1pW3ItMV0sdCsxPG4mJjAhPT1pW3IrMV0/KGw9c1tyKzFdLGg/KGM9c1tyLTFdLG89MS1sLWMpOm89MS1sLWwpOmg/KGM9c1tyLTFdLG89MS1jLWMpOm89MDtjb25zdCBmPTMqbztyZXR1cm4gaD1lPjAmJjAhPT1pW3Itbl0sZSsxPGEmJjAhPT1pW3Irbl0/KGw9c1tyK25dLGg/KGM9c1tyLW5dLG89MS1sLWMrZik6bz0xLWwtbCtmKTpoPyhjPXNbci1uXSxvPTEtYy1jK2YpOm89ZixvPj0wPyh1PTkrbyxkPXRoaXMuZGVjb2Rlci5yZWFkQml0KHRoaXMuY29udGV4dHMsdSkpOih1PTktbyxkPTFedGhpcy5kZWNvZGVyLnJlYWRCaXQodGhpcy5jb250ZXh0cyx1KSksZH1ydW5NYWduaXR1ZGVSZWZpbmVtZW50UGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5jb2VmZmljZW50c01hZ25pdHVkZSxhPXRoaXMubmVpZ2hib3JzU2lnbmlmaWNhbmNlLGk9dGhpcy5jb250ZXh0cyxzPXRoaXMuYml0c0RlY29kZWQsbz10aGlzLnByb2Nlc3NpbmdGbGFncyxjPXQqcixsPTQqdDtmb3IobGV0IHIsaD0wO2g8YztoPXIpe3I9TWF0aC5taW4oYyxoK2wpO2ZvcihsZXQgYz0wO2M8dDtjKyspZm9yKGxldCBsPWgrYztsPHI7bCs9dCl7aWYoIW5bbF18fDAhPSgxJm9bbF0pKWNvbnRpbnVlO2xldCB0PTE2OzAhPSgyJm9bbF0pJiYob1tsXV49Mix0PTA9PSgxMjcmYVtsXSk/MTU6MTQpO2NvbnN0IHI9ZS5yZWFkQml0KGksdCk7bltsXT1uW2xdPDwxfHIsc1tsXSsrLG9bbF18PTF9fX1ydW5DbGVhbnVwUGFzcygpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LG49dGhpcy5uZWlnaGJvcnNTaWduaWZpY2FuY2UsYT10aGlzLmNvZWZmaWNlbnRzTWFnbml0dWRlLGk9dGhpcy5jb2VmZmljZW50c1NpZ24scz10aGlzLmNvbnRleHRzLG89dGhpcy5jb250ZXh0TGFiZWxUYWJsZSxjPXRoaXMuYml0c0RlY29kZWQsbD10aGlzLnByb2Nlc3NpbmdGbGFncyxoPXQsdT0yKnQsZD0zKnQ7bGV0IGY7Zm9yKGxldCBnPTA7ZzxyO2c9Zil7Zj1NYXRoLm1pbihnKzQscik7Y29uc3QgcD1nKnQsbT1nKzM8cjtmb3IobGV0IHI9MDtyPHQ7cisrKXtjb25zdCBiPXArcjtsZXQgeSx3PTAsdj1iLHg9ZztpZihtJiYwPT09bFtiXSYmMD09PWxbYitoXSYmMD09PWxbYit1XSYmMD09PWxbYitkXSYmMD09PW5bYl0mJjA9PT1uW2IraF0mJjA9PT1uW2IrdV0mJjA9PT1uW2IrZF0pe2lmKCFlLnJlYWRCaXQocyxULlJVTkxFTkdUSF9DT05URVhUKSl7Y1tiXSsrLGNbYitoXSsrLGNbYit1XSsrLGNbYitkXSsrO2NvbnRpbnVlfXc9ZS5yZWFkQml0KHMsVC5VTklGT1JNX0NPTlRFWFQpPDwxfGUucmVhZEJpdChzLFQuVU5JRk9STV9DT05URVhUKSwwIT09dyYmKHg9Zyt3LHYrPXcqdCkseT10aGlzLmRlY29kZVNpZ25CaXQoeCxyLHYpLGlbdl09eSxhW3ZdPTEsdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UoeCxyLHYpLGxbdl18PTIsdj1iO2ZvcihsZXQgZT1nO2U8PXg7ZSsrLHYrPXQpY1t2XSsrO3crK31mb3IoeD1nK3c7eDxmO3grKyx2Kz10KXtpZihhW3ZdfHwwIT0oMSZsW3ZdKSljb250aW51ZTtjb25zdCB0PW9bblt2XV07MT09PWUucmVhZEJpdChzLHQpJiYoeT10aGlzLmRlY29kZVNpZ25CaXQoeCxyLHYpLGlbdl09eSxhW3ZdPTEsdGhpcy5zZXROZWlnaGJvcnNTaWduaWZpY2FuY2UoeCxyLHYpLGxbdl18PTIpLGNbdl0rK319fX1jaGVja1NlZ21lbnRhdGlvblN5bWJvbCgpe2NvbnN0IGU9dGhpcy5kZWNvZGVyLHQ9dGhpcy5jb250ZXh0cztpZigxMCE9KGUucmVhZEJpdCh0LFQuVU5JRk9STV9DT05URVhUKTw8M3xlLnJlYWRCaXQodCxULlVOSUZPUk1fQ09OVEVYVCk8PDJ8ZS5yZWFkQml0KHQsVC5VTklGT1JNX0NPTlRFWFQpPDwxfGUucmVhZEJpdCh0LFQuVU5JRk9STV9DT05URVhUKSkpdGhyb3cgbmV3IG8oIkludmFsaWQgc2VnbWVudGF0aW9uIHN5bWJvbCIpfX1pKFQsIlVOSUZPUk1fQ09OVEVYVCIsMTcpLGkoVCwiUlVOTEVOR1RIX0NPTlRFWFQiLDE4KSxpKFQsIkxMQW5kTEhDb250ZXh0c0xhYmVsIixuZXcgVWludDhBcnJheShbMCw1LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwxLDYsOCwwLDMsNyw4LDAsNCw3LDgsMCwwLDAsMCwwLDIsNiw4LDAsMyw3LDgsMCw0LDcsOCwwLDAsMCwwLDAsMiw2LDgsMCwzLDcsOCwwLDQsNyw4LDAsMCwwLDAsMCwyLDYsOCwwLDMsNyw4LDAsNCw3LDhdKSksaShULCJITENvbnRleHRMYWJlbCIsbmV3IFVpbnQ4QXJyYXkoWzAsMyw0LDAsNSw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMSwzLDQsMCw2LDcsNywwLDgsOCw4LDAsMCwwLDAsMCwyLDMsNCwwLDYsNyw3LDAsOCw4LDgsMCwwLDAsMCwwLDIsMyw0LDAsNiw3LDcsMCw4LDgsOCwwLDAsMCwwLDAsMiwzLDQsMCw2LDcsNywwLDgsOCw4XSkpLGkoVCwiSEhDb250ZXh0TGFiZWwiLG5ldyBVaW50OEFycmF5KFswLDEsMiwwLDEsMiwyLDAsMiwyLDIsMCwwLDAsMCwwLDMsNCw1LDAsNCw1LDUsMCw1LDUsNSwwLDAsMCwwLDAsNiw3LDcsMCw3LDcsNywwLDcsNyw3LDAsMCwwLDAsMCw4LDgsOCwwLDgsOCw4LDAsOCw4LDgsMCwwLDAsMCwwLDgsOCw4LDAsOCw4LDgsMCw4LDgsOF0pKTtjbGFzcyBNe2NvbnN0cnVjdG9yKCl7dGhpcy5jb25zdHJ1Y3Rvcj09PU0mJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBUcmFuc2Zvcm0uIil9Y2FsY3VsYXRlKGUsdCxyKXtsZXQgbj1lWzBdO2ZvcihsZXQgYT0xLGk9ZS5sZW5ndGg7YTxpO2ErKyluPXRoaXMuaXRlcmF0ZShuLGVbYV0sdCxyKTtyZXR1cm4gbn1leHRlbmQoZSx0LHIpe2xldCBuPXQtMSxhPXQrMSxpPXQrci0yLHM9dCtyO2Vbbi0tXT1lW2ErK10sZVtzKytdPWVbaS0tXSxlW24tLV09ZVthKytdLGVbcysrXT1lW2ktLV0sZVtuLS1dPWVbYSsrXSxlW3MrK109ZVtpLS1dLGVbbl09ZVthXSxlW3NdPWVbaV19ZmlsdGVyKGUsdCxyKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBmaWx0ZXJgIGNhbGxlZCIpfWl0ZXJhdGUoZSx0LHIsbil7Y29uc3QgYT1lLndpZHRoLGk9ZS5oZWlnaHQ7bGV0IHM9ZS5pdGVtcztjb25zdCBvPXQud2lkdGgsYz10LmhlaWdodCxsPXQuaXRlbXM7bGV0IGgsdSxkLGYsZyxwO2ZvcihkPTAsaD0wO2g8aTtoKyspZm9yKGY9MipoKm8sdT0wO3U8YTt1KyssZCsrLGYrPTIpbFtmXT1zW2RdO3M9ZS5pdGVtcz1udWxsO2NvbnN0IG09bmV3IEZsb2F0MzJBcnJheShvKzgpO2lmKDE9PT1vKXtpZigwIT0oMSZyKSlmb3IocD0wLGQ9MDtwPGM7cCsrLGQrPW8pbFtkXSo9LjV9ZWxzZSBmb3IocD0wLGQ9MDtwPGM7cCsrLGQrPW8pbS5zZXQobC5zdWJhcnJheShkLGQrbyksNCksdGhpcy5leHRlbmQobSw0LG8pLHRoaXMuZmlsdGVyKG0sNCxvKSxsLnNldChtLnN1YmFycmF5KDQsNCtvKSxkKTtsZXQgYj0xNjtjb25zdCB5PVtdO2ZvcihoPTA7aDxiO2grKyl5LnB1c2gobmV3IEZsb2F0MzJBcnJheShjKzgpKTtsZXQgdyx2PTA7aWYoZT00K2MsMT09PWMpe2lmKDAhPSgxJm4pKWZvcihnPTA7ZzxvO2crKylsW2ddKj0uNX1lbHNlIGZvcihnPTA7ZzxvO2crKyl7aWYoMD09PXYpe2ZvcihiPU1hdGgubWluKG8tZyxiKSxkPWcsZj00O2Y8ZTtkKz1vLGYrKylmb3Iodz0wO3c8Yjt3KyspeVt3XVtmXT1sW2Qrd107dj1ifXYtLTtjb25zdCB0PXlbdl07aWYodGhpcy5leHRlbmQodCw0LGMpLHRoaXMuZmlsdGVyKHQsNCxjKSwwPT09dilmb3IoZD1nLWIrMSxmPTQ7ZjxlO2QrPW8sZisrKWZvcih3PTA7dzxiO3crKylsW2Qrd109eVt3XVtmXX1yZXR1cm57d2lkdGg6byxoZWlnaHQ6YyxpdGVtczpsfX19Y2xhc3MgRSBleHRlbmRzIE17ZmlsdGVyKGUsdCxyKXtjb25zdCBuPXI+PjE7bGV0IGEsaSxzLG87Y29uc3QgYz0tMS41ODYxMzQzNDIwNTk5MjQsbD0tLjA1Mjk4MDExODU3Mjk2MSxoPS44ODI5MTEwNzU1MzA5MzQsdT0uNDQzNTA2ODUyMDQzOTcxLGQ9MS4yMzAxNzQxMDQ5MTQwMDE7Zm9yKGE9KHR8PTApLTMsaT1uKzQ7aS0tO2ErPTIpZVthXSo9LjgxMjg5MzA2NjExNTk2MDk7Zm9yKGE9dC0yLHM9dSplW2EtMV0saT1uKzM7aS0tJiYobz11KmVbYSsxXSxlW2FdPWQqZVthXS1zLW8saS0tKTthKz0yKWErPTIscz11KmVbYSsxXSxlW2FdPWQqZVthXS1zLW87Zm9yKGE9dC0xLHM9aCplW2EtMV0saT1uKzI7aS0tJiYobz1oKmVbYSsxXSxlW2FdLT1zK28saS0tKTthKz0yKWErPTIscz1oKmVbYSsxXSxlW2FdLT1zK287Zm9yKGE9dCxzPWwqZVthLTFdLGk9bisxO2ktLSYmKG89bCplW2ErMV0sZVthXS09cytvLGktLSk7YSs9MilhKz0yLHM9bCplW2ErMV0sZVthXS09cytvO2lmKDAhPT1uKWZvcihhPXQrMSxzPWMqZVthLTFdLGk9bjtpLS0mJihvPWMqZVthKzFdLGVbYV0tPXMrbyxpLS0pO2ErPTIpYSs9MixzPWMqZVthKzFdLGVbYV0tPXMrb319Y2xhc3MgUCBleHRlbmRzIE17ZmlsdGVyKGUsdCxyKXtjb25zdCBuPXI+PjE7bGV0IGEsaTtmb3IoYT10fD0wLGk9bisxO2ktLTthKz0yKWVbYV0tPWVbYS0xXStlW2ErMV0rMj4+Mjtmb3IoYT10KzEsaT1uO2ktLTthKz0yKWVbYV0rPWVbYS0xXStlW2ErMV0+PjF9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkxaV1N0cmVhbT12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTY4KTtjbGFzcyBhIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKHQpLHRoaXMuc3RyPWUsdGhpcy5kaWN0PWUuZGljdCx0aGlzLmNhY2hlZERhdGE9MCx0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCBuPTQwOTYsYT17ZWFybHlDaGFuZ2U6cixjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkobiksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF5KG4pLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KG4pLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShuKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKWEuZGljdGlvbmFyeVZhbHVlc1tlXT1lLGEuZGljdGlvbmFyeUxlbmd0aHNbZV09MTt0aGlzLmx6d1N0YXRlPWF9cmVhZEJpdHMoZSl7bGV0IHQ9dGhpcy5iaXRzQ2FjaGVkLHI9dGhpcy5jYWNoZWREYXRhO2Zvcig7dDxlOyl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlKCk7aWYoLTE9PT1lKXJldHVybiB0aGlzLmVvZj0hMCxudWxsO3I9cjw8OHxlLHQrPTh9cmV0dXJuIHRoaXMuYml0c0NhY2hlZD10LT1lLHRoaXMuY2FjaGVkRGF0YT1yLHRoaXMubGFzdENvZGU9bnVsbCxyPj4+dCYoMTw8ZSktMX1yZWFkQmxvY2soKXtsZXQgZSx0LHIsbj0xMDI0O2NvbnN0IGE9dGhpcy5sendTdGF0ZTtpZighYSlyZXR1cm47Y29uc3QgaT1hLmVhcmx5Q2hhbmdlO2xldCBzPWEubmV4dENvZGU7Y29uc3Qgbz1hLmRpY3Rpb25hcnlWYWx1ZXMsYz1hLmRpY3Rpb25hcnlMZW5ndGhzLGw9YS5kaWN0aW9uYXJ5UHJldkNvZGVzO2xldCBoPWEuY29kZUxlbmd0aCx1PWEucHJldkNvZGU7Y29uc3QgZD1hLmN1cnJlbnRTZXF1ZW5jZTtsZXQgZj1hLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aCxnPTAscD10aGlzLmJ1ZmZlckxlbmd0aCxtPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK24pO2ZvcihlPTA7ZTw1MTI7ZSsrKXtjb25zdCBlPXRoaXMucmVhZEJpdHMoaCksYT1mPjA7aWYoZTwyNTYpZFswXT1lLGY9MTtlbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05LHM9MjU4LGY9MDtjb250aW51ZX10aGlzLmVvZj0hMCxkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpZm9yKGY9Y1tlXSx0PWYtMSxyPWU7dD49MDt0LS0pZFt0XT1vW3JdLHI9bFtyXTtlbHNlIGRbZisrXT1kWzBdfWlmKGEmJihsW3NdPXUsY1tzXT1jW3VdKzEsb1tzXT1kWzBdLHMrKyxoPXMraSZzK2ktMT9oOjB8TWF0aC5taW4oTWF0aC5sb2cocytpKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKSksdT1lLGcrPWYsbjxnKXtkb3tuKz01MTJ9d2hpbGUobjxnKTttPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK24pfWZvcih0PTA7dDxmO3QrKyltW3ArK109ZFt0XX1hLm5leHRDb2RlPXMsYS5jb2RlTGVuZ3RoPWgsYS5wcmV2Q29kZT11LGEuY3VycmVudFNlcXVlbmNlTGVuZ3RoPWYsdGhpcy5idWZmZXJMZW5ndGg9cH19dC5MWldTdHJlYW09YX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlByZWRpY3RvclN0cmVhbT12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTY4KSxhPXIoMTUwKSxpPXIoMTQ0KTtjbGFzcyBzIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LHIpe2lmKHN1cGVyKHQpLCEociBpbnN0YW5jZW9mIGEuRGljdCkpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLnByZWRpY3Rvcj1yLmdldCgiUHJlZGljdG9yIil8fDE7aWYobjw9MSlyZXR1cm4gZTtpZigyIT09biYmKG48MTB8fG4+MTUpKXRocm93IG5ldyBpLkZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICIuY29uY2F0KG4pKTt0aGlzLnJlYWRCbG9jaz0yPT09bj90aGlzLnJlYWRCbG9ja1RpZmY6dGhpcy5yZWFkQmxvY2tQbmcsdGhpcy5zdHI9ZSx0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IHM9dGhpcy5jb2xvcnM9ci5nZXQoIkNvbG9ycyIpfHwxLG89dGhpcy5iaXRzPXIuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsYz10aGlzLmNvbHVtbnM9ci5nZXQoIkNvbHVtbnMiKXx8MTtyZXR1cm4gdGhpcy5waXhCeXRlcz1zKm8rNz4+Myx0aGlzLnJvd0J5dGVzPWMqcypvKzc+PjMsdGhpc31yZWFkQmxvY2tUaWZmKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5idWZmZXJMZW5ndGgscj10aGlzLmVuc3VyZUJ1ZmZlcih0K2UpLG49dGhpcy5iaXRzLGE9dGhpcy5jb2xvcnMsaT10aGlzLnN0ci5nZXRCeXRlcyhlKTtpZih0aGlzLmVvZj0haS5sZW5ndGgsdGhpcy5lb2YpcmV0dXJuO2xldCBzLG89MCxjPTAsbD0wLGg9MCx1PXQ7aWYoMT09PW4mJjE9PT1hKWZvcihzPTA7czxlOysrcyl7bGV0IGU9aVtzXV5vO2VePWU+PjEsZV49ZT4+MixlXj1lPj40LG89KDEmZSk8PDcsclt1KytdPWV9ZWxzZSBpZig4PT09bil7Zm9yKHM9MDtzPGE7KytzKXJbdSsrXT1pW3NdO2Zvcig7czxlOysrcylyW3VdPXJbdS1hXStpW3NdLHUrK31lbHNlIGlmKDE2PT09bil7Y29uc3QgdD0yKmE7Zm9yKHM9MDtzPHQ7KytzKXJbdSsrXT1pW3NdO2Zvcig7czxlO3MrPTIpe2NvbnN0IGU9KCgyNTUmaVtzXSk8PDgpKygyNTUmaVtzKzFdKSsoKDI1NSZyW3UtdF0pPDw4KSsoMjU1JnJbdS10KzFdKTtyW3UrK109ZT4+OCYyNTUsclt1KytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYSsxKSx1PSgxPDxuKS0xO2xldCBkPTAsZj10O2NvbnN0IGc9dGhpcy5jb2x1bW5zO2ZvcihzPTA7czxnOysrcylmb3IobGV0IHQ9MDt0PGE7Kyt0KWw8biYmKG89bzw8OHwyNTUmaVtkKytdLGwrPTgpLGVbdF09ZVt0XSsobz4+bC1uKSZ1LGwtPW4sYz1jPDxufGVbdF0saCs9bixoPj04JiYocltmKytdPWM+PmgtOCYyNTUsaC09OCk7aD4wJiYocltmKytdPShjPDw4LWgpKyhvJigxPDw4LWgpLTEpKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX1yZWFkQmxvY2tQbmcoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLnBpeEJ5dGVzLHI9dGhpcy5zdHIuZ2V0Qnl0ZSgpLG49dGhpcy5zdHIuZ2V0Qnl0ZXMoZSk7aWYodGhpcy5lb2Y9IW4ubGVuZ3RoLHRoaXMuZW9mKXJldHVybjtjb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHM9dGhpcy5lbnN1cmVCdWZmZXIoYStlKTtsZXQgbz1zLnN1YmFycmF5KGEtZSxhKTswPT09by5sZW5ndGgmJihvPW5ldyBVaW50OEFycmF5KGUpKTtsZXQgYyxsLGgsdT1hO3N3aXRjaChyKXtjYXNlIDA6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1uW2NdO2JyZWFrO2Nhc2UgMTpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPW5bY107Zm9yKDtjPGU7KytjKXNbdV09c1t1LXRdK25bY10mMjU1LHUrKzticmVhaztjYXNlIDI6Zm9yKGM9MDtjPGU7KytjKXNbdSsrXT1vW2NdK25bY10mMjU1O2JyZWFrO2Nhc2UgMzpmb3IoYz0wO2M8dDsrK2Mpc1t1KytdPShvW2NdPj4xKStuW2NdO2Zvcig7YzxlOysrYylzW3VdPShvW2NdK3NbdS10XT4+MSkrbltjXSYyNTUsdSsrO2JyZWFrO2Nhc2UgNDpmb3IoYz0wO2M8dDsrK2MpbD1vW2NdLGg9bltjXSxzW3UrK109bCtoO2Zvcig7YzxlOysrYyl7bD1vW2NdO2NvbnN0IGU9b1tjLXRdLHI9c1t1LXRdLGE9citsLWU7bGV0IGk9YS1yO2k8MCYmKGk9LWkpO2xldCBkPWEtbDtkPDAmJihkPS1kKTtsZXQgZj1hLWU7ZjwwJiYoZj0tZiksaD1uW2NdLHNbdSsrXT1pPD1kJiZpPD1mP3IraDpkPD1mP2wraDplK2h9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAiLmNvbmNhdChyKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fXQuUHJlZGljdG9yU3RyZWFtPXN9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5SdW5MZW5ndGhTdHJlYW09dm9pZCAwO3ZhciBuPXIoMTY4KTtjbGFzcyBhIGV4dGVuZHMgbi5EZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KSx0aGlzLnN0cj1lLHRoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcygyKTtpZighZXx8ZS5sZW5ndGg8Mnx8MTI4PT09ZVswXSlyZXR1cm4gdm9pZCh0aGlzLmVvZj0hMCk7bGV0IHQscj10aGlzLmJ1ZmZlckxlbmd0aCxuPWVbMF07aWYobjwxMjgpe2lmKHQ9dGhpcy5lbnN1cmVCdWZmZXIocituKzEpLHRbcisrXT1lWzFdLG4+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhuKTt0LnNldChlLHIpLHIrPW59fWVsc2V7bj0yNTctbjtjb25zdCBhPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihyK24rMSk7Zm9yKGxldCBlPTA7ZTxuO2UrKyl0W3IrK109YX10aGlzLmJ1ZmZlckxlbmd0aD1yfX10LlJ1bkxlbmd0aFN0cmVhbT1hfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRm9udD10LkVycm9yRm9udD12b2lkIDAscigxMTYpLHIoMTI2KSxyKDEyOCkscigxMzEpLHIoMTMzKSxyKDEzNSkscigxMzcpLHIoMTM5KSxyKDE1Nykscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpO3ZhciBuPXIoMTQ0KSxhPXIoMTg1KSxpPXIoMTg4KSxzPXIoMTkwKSxvPXIoMTg5KSxjPXIoMTg3KSxsPXIoMTkxKSxoPXIoMTkyKSx1PXIoMTkzKSxkPXIoMTk0KSxmPXIoMTk1KSxnPXIoMTk2KSxwPXIoMTY0KSxtPXIoMTk3KSxiPXIoMTQ5KSx5PXIoMTU0KSx3PXIoMTk4KTtjb25zdCB2PVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSx4PTFlMyxTPVsiYXNjZW50IiwiYmJveCIsImJsYWNrIiwiYm9sZCIsImNoYXJQcm9jT3BlcmF0b3JMaXN0IiwiY29tcG9zaXRlIiwiY3NzRm9udEluZm8iLCJkYXRhIiwiZGVmYXVsdFZNZXRyaWNzIiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCIsImZhbGxiYWNrTmFtZSIsImZvbnRNYXRyaXgiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm1pc3NpbmdGaWxlIiwibmFtZSIsInJlbWVhc3VyZSIsInN1YnR5cGUiLCJzeXN0ZW1Gb250SW5mbyIsInR5cGUiLCJ2ZXJ0aWNhbCJdLEE9WyJjTWFwIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInZtZXRyaWNzIiwid2lkdGhzIl07ZnVuY3Rpb24gayhlKXtpZighZS5mb250TWF0cml4KXJldHVybjtpZihlLmZvbnRNYXRyaXhbMF09PT1uLkZPTlRfSURFTlRJVFlfTUFUUklYWzBdKXJldHVybjtjb25zdCB0PS4wMDEvZS5mb250TWF0cml4WzBdLHI9ZS53aWR0aHM7Zm9yKGNvbnN0IGUgaW4gcilyW2VdKj10O2UuZGVmYXVsdFdpZHRoKj10fWZ1bmN0aW9uIEMoZSl7aWYoIWUuZmFsbGJhY2tUb1VuaWNvZGUpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgdD1bXTtmb3IoY29uc3QgciBpbiBlLmZhbGxiYWNrVG9Vbmljb2RlKWUudG9Vbmljb2RlLmhhcyhyKXx8KHRbcl09ZS5mYWxsYmFja1RvVW5pY29kZVtyXSk7dC5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQodCl9Y2xhc3MgT3tjb25zdHJ1Y3RvcihlLHQscixuLGEsaSxzLG8sYyl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWUsdGhpcy5mb250Q2hhcj10LHRoaXMudW5pY29kZT1yLHRoaXMuYWNjZW50PW4sdGhpcy53aWR0aD1hLHRoaXMudm1ldHJpYz1pLHRoaXMub3BlcmF0b3JMaXN0SWQ9cyx0aGlzLmlzU3BhY2U9byx0aGlzLmlzSW5Gb250PWN9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsImNhdGVnb3J5IiwoMCxzLmdldENoYXJVbmljb2RlQ2F0ZWdvcnkpKHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gSShlLHQscil7ZVt0KzFdPXIsZVt0XT1yPj4+OH1mdW5jdGlvbiBUKGUsdCl7Y29uc3Qgcj0oZTw8OCkrdDtyZXR1cm4gMzI3Njgmcj9yLTY1NTM2OnJ9ZnVuY3Rpb24gTShlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlPj44JjI1NSwyNTUmZSl9ZnVuY3Rpb24gRShlKXtyZXR1cm4gZT4zMjc2Nz9lPTMyNzY3OmU8LTMyNzY4JiYoZT0tMzI3NjgpLFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIFAoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4idHRjZiI9PT0oMCxuLmJ5dGVzVG9TdHJpbmcpKHQpfWZ1bmN0aW9uIFIoZSx0KXtmb3IoY29uc3QgciBpbiB0KWVbK3JdPXRbcl19ZnVuY3Rpb24gTihlLHQscil7Y29uc3Qgbj1bXTtsZXQgYTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspYT0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkoZVtyXSx0KSwtMSE9PWEmJihuW3JdPWEpO2Zvcihjb25zdCBlIGluIHIpYT0oMCxzLmdldFVuaWNvZGVGb3JHbHlwaCkocltlXSx0KSwtMSE9PWEmJihuWytlXT1hKTtyZXR1cm4gbn1mdW5jdGlvbiBEKGUpe3JldHVybiAxPT09ZS5wbGF0Zm9ybSYmMD09PWUuZW5jb2RpbmcmJjA9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIDM9PT1lLnBsYXRmb3JtJiYxPT09ZS5lbmNvZGluZyYmMTAzMz09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gTChlLHQpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTtjYXNlIDI6cmV0dXJuIHQuY2hhckNvZGVBdCgwKTw8OHx0LmNoYXJDb2RlQXQoMSl9Y29uc3QgYT0iVW5zdXBwb3J0ZWQgQ0lEIHN0cmluZyAoY2hhckNvZGUgIi5jb25jYXQoZSwnKTogIicpLmNvbmNhdCh0LCciLicpO2lmKHIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoYSk7cmV0dXJuKDAsbi53YXJuKShhKSx0fWZ1bmN0aW9uIF8oZSx0LHIsYSl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxvPVtdLGM9bmV3IFNldDtsZXQgbD0wLGg9dltsXVswXSx1PXZbbF1bMV07Zm9yKGxldCBmIGluIGUpe2Z8PTA7bGV0IGc9ZVtmXTtpZighdChnKSljb250aW51ZTtpZihoPnUpe2lmKGwrKyxsPj12Lmxlbmd0aCl7KDAsbi53YXJuKSgiUmFuIG91dCBvZiBzcGFjZSBpbiBmb250IHByaXZhdGUgdXNlIGFyZWEuIik7YnJlYWt9aD12W2xdWzBdLHU9dltsXVsxXX1jb25zdCBwPWgrKzswPT09ZyYmKGc9cik7bGV0IG09YS5nZXQoZik7InN0cmluZyI9PXR5cGVvZiBtJiYobT1tLmNvZGVQb2ludEF0KDApKSwhbXx8KGQ9bSx2WzBdWzBdPD1kJiZkPD12WzBdWzFdfHx2WzFdWzBdPD1kJiZkPD12WzFdWzFdKXx8Yy5oYXMoZyl8fChzLnNldChtLGcpLGMuYWRkKGcpKSxpW3BdPWcsb1tmXT1wfXZhciBkO3JldHVybnt0b0ZvbnRDaGFyOm8sY2hhckNvZGVUb0dseXBoSWQ6aSx0b1VuaWNvZGVFeHRyYU1hcDpzLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6aH19ZnVuY3Rpb24gaihlLHQscil7Y29uc3QgYT1mdW5jdGlvbihlLHQscil7Y29uc3Qgbj1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PXJ8fG4ucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLGFdb2YgdClhPj1yfHxuLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6YX0pOzA9PT1uLmxlbmd0aCYmbi5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KSxuLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlfSkpO2NvbnN0IGE9W10saT1uLmxlbmd0aDtmb3IobGV0IGU9MDtlPGk7KXtjb25zdCB0PW5bZV0uZm9udENoYXJDb2RlLHI9W25bZV0uZ2x5cGhJZF07KytlO2xldCBzPXQ7Zm9yKDtlPGkmJnMrMT09PW5bZV0uZm9udENoYXJDb2RlJiYoci5wdXNoKG5bZV0uZ2x5cGhJZCksKytzLCsrZSw2NTUzNSE9PXMpOyk7YS5wdXNoKFt0LHMscl0pfXJldHVybiBhfShlLHQsciksaT1hLmF0KC0xKVsxXT42NTUzNT8yOjE7bGV0IHMsbyxjLGwsaD0iXDBcMCIrTShpKSsiXDADXDABIisoMCxuLnN0cmluZzMyKSg0KzgqaSk7Zm9yKHM9YS5sZW5ndGgtMTtzPj0wJiYhKGFbc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IHU9cysxO2Fbc11bMF08NjU1MzUmJjY1NTM1PT09YVtzXVsxXSYmKGFbc11bMV09NjU1MzQpO2NvbnN0IGQ9YVtzXVsxXTw2NTUzNT8xOjAsZj11K2QsZz1tLk9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGYsMik7bGV0IHAsYix5LHcsdj0iIix4PSIiLFM9IiIsQT0iIixrPSIiLEM9MDtmb3Iocz0wLG89dTtzPG87cysrKXtwPWFbc10sYj1wWzBdLHk9cFsxXSx2Kz1NKGIpLHgrPU0oeSksdz1wWzJdO2xldCBlPSEwO2ZvcihjPTEsbD13Lmxlbmd0aDtjPGw7KytjKWlmKHdbY10hPT13W2MtMV0rMSl7ZT0hMTticmVha31pZihlKVMrPU0od1swXS1iJjY1NTM1KSxBKz1NKDApO2Vsc2V7Y29uc3QgZT0yKihmLXMpKzIqQztmb3IoQys9eS1iKzEsUys9TSgwKSxBKz1NKGUpLGM9MCxsPXcubGVuZ3RoO2M8bDsrK2Mpays9TSh3W2NdKX19ZD4wJiYoeCs9IsO/w78iLHYrPSLDv8O/IixTKz0iXDABIixBKz0iXDBcMCIpO2NvbnN0IE89IlwwXDAiK00oMipmKStNKGcucmFuZ2UpK00oZy5lbnRyeSkrTShnLnJhbmdlU2hpZnQpK3grIlwwXDAiK3YrUytBK2s7bGV0IEY9IiIsST0iIjtpZihpPjEpe2ZvcihoKz0iXDADXDBcbiIrKDAsbi5zdHJpbmczMikoNCs4KmkrNCtPLmxlbmd0aCksRj0iIixzPTAsbz1hLmxlbmd0aDtzPG87cysrKXtwPWFbc10sYj1wWzBdLHc9cFsyXTtsZXQgZT13WzBdO2ZvcihjPTEsbD13Lmxlbmd0aDtjPGw7KytjKXdbY10hPT13W2MtMV0rMSYmKHk9cFswXStjLTEsRis9KDAsbi5zdHJpbmczMikoYikrKDAsbi5zdHJpbmczMikoeSkrKDAsbi5zdHJpbmczMikoZSksYj15KzEsZT13W2NdKTtGKz0oMCxuLnN0cmluZzMyKShiKSsoMCxuLnN0cmluZzMyKShwWzFdKSsoMCxuLnN0cmluZzMyKShlKX1JPSJcMFxmXDBcMCIrKDAsbi5zdHJpbmczMikoRi5sZW5ndGgrMTYpKyJcMFwwXDBcMCIrKDAsbi5zdHJpbmczMikoRi5sZW5ndGgvMTIpfXJldHVybiBoKyJcMAQiK00oTy5sZW5ndGgrNCkrTytJK0Z9ZnVuY3Rpb24gVShlLHQscil7cnx8KHI9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH0pO2xldCBhPTAsaT0wLG89MCxjPTAsbD1udWxsLGg9MCx1PS0xO2lmKHQpe2ZvcihsZXQgZSBpbiB0KWlmKGV8PTAsKGw+ZXx8IWwpJiYobD1lKSxoPGUmJihoPWUpLHU9KDAscy5nZXRVbmljb2RlUmFuZ2VGb3IpKGUsdSksdTwzMilhfD0xPDx1O2Vsc2UgaWYodTw2NClpfD0xPDx1LTMyO2Vsc2UgaWYodTw5NilvfD0xPDx1LTY0O2Vsc2V7aWYoISh1PDEyMykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO2N8PTE8PHUtOTZ9aD42NTUzNSYmKGg9NjU1MzUpfWVsc2UgbD0wLGg9MjU1O2NvbnN0IGQ9ZS5iYm94fHxbMCwwLDAsMF0sZj1yLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8bi5GT05UX0lERU5USVRZX01BVFJJWClbMF0sZz1lLmFzY2VudFNjYWxlZD8xOmYveCxwPXIuYXNjZW50fHxNYXRoLnJvdW5kKGcqKGUuYXNjZW50fHxkWzNdKSk7bGV0IG09ci5kZXNjZW50fHxNYXRoLnJvdW5kKGcqKGUuZGVzY2VudHx8ZFsxXSkpO20+MCYmZS5kZXNjZW50PjAmJmRbMV08MCYmKG09LW0pO2NvbnN0IGI9ci55TWF4fHxwLHk9LXIueU1pbnx8LW07cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrKDAsbi5zdHJpbmczMikoYSkrKDAsbi5zdHJpbmczMikoaSkrKDAsbi5zdHJpbmczMikobykrKDAsbi5zdHJpbmczMikoYykrIioyMSoiK00oZS5pdGFsaWNBbmdsZT8xOjApK00obHx8ZS5maXJzdENoYXIpK00oaHx8ZS5sYXN0Q2hhcikrTShwKStNKG0pKyJcMGQiK00oYikrTSh5KSsiXDBcMFwwXDBcMFwwXDBcMCIrTShlLnhIZWlnaHQpK00oZS5jYXBIZWlnaHQpK00oMCkrTShsfHxlLmZpcnN0Q2hhcikrIlwwAyJ9ZnVuY3Rpb24gJChlKXtjb25zdCB0PU1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSk7cmV0dXJuIlwwA1wwXDAiKygwLG4uc3RyaW5nMzIpKHQpKyJcMFwwXDBcMCIrKDAsbi5zdHJpbmczMikoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoL1teXHgyMS1ceDdFXXxbW1xdKCl7fTw+LyVdL2csIiIpLnNsaWNlKDAsNjMpfWZ1bmN0aW9uIEgoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCByPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fFgoZSksdFswXVs3XXx8IlVua25vd24iLHRbMF1bOF18fCJVbmtub3duIix0WzBdWzldfHwiVW5rbm93biJdLG49W107bGV0IGEsaSxzLG8sYztmb3IoYT0wLGk9ci5sZW5ndGg7YTxpO2ErKyl7Yz10WzFdW2FdfHxyW2FdO2NvbnN0IGU9W107Zm9yKHM9MCxvPWMubGVuZ3RoO3M8bztzKyspZS5wdXNoKE0oYy5jaGFyQ29kZUF0KHMpKSk7bi5wdXNoKGUuam9pbigiIikpfWNvbnN0IGw9W3Isbl0saD1bIlwwASIsIlwwAyJdLHU9WyJcMFwwIiwiXDABIl0sZD1bIlwwXDAiLCIEXHQiXSxmPXIubGVuZ3RoKmgubGVuZ3RoO2xldCBnPSJcMFwwIitNKGYpK00oMTIqZis2KSxwPTA7Zm9yKGE9MCxpPWgubGVuZ3RoO2E8aTthKyspe2NvbnN0IGU9bFthXTtmb3Iocz0wLG89ZS5sZW5ndGg7czxvO3MrKyljPWVbc10sZys9aFthXSt1W2FdK2RbYV0rTShzKStNKGMubGVuZ3RoKStNKHApLHArPWMubGVuZ3RofXJldHVybiBnKz1yLmpvaW4oIiIpK24uam9pbigiIiksZ310LkZvbnQ9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe3ZhciBhO3RoaXMubmFtZT1lLHRoaXMucHNOYW1lPW51bGwsdGhpcy5taW1ldHlwZT1udWxsLHRoaXMuZGlzYWJsZUZvbnRGYWNlPSExLHRoaXMubG9hZGVkTmFtZT1yLmxvYWRlZE5hbWUsdGhpcy5pc1R5cGUzRm9udD1yLmlzVHlwZTNGb250LHRoaXMubWlzc2luZ0ZpbGU9ITEsdGhpcy5jc3NGb250SW5mbz1yLmNzc0ZvbnRJbmZvLHRoaXMuX2NoYXJzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9nbHlwaENhY2hlPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHM9ISEoci5mbGFncyZpLkZvbnRGbGFncy5TZXJpZik7aWYoIXMmJiFyLmlzU2ltdWxhdGVkRmxhZ3Mpe2NvbnN0IHQ9ZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5zcGxpdCgiLSIpWzBdLHI9KDAsbC5nZXRTZXJpZkZvbnRzKSgpO2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIisiKSlpZihyW2VdKXtzPSEwO2JyZWFrfX10aGlzLmlzU2VyaWZGb250PXMsdGhpcy5pc1N5bWJvbGljRm9udD0hIShyLmZsYWdzJmkuRm9udEZsYWdzLlN5bWJvbGljKSx0aGlzLmlzTW9ub3NwYWNlPSEhKHIuZmxhZ3MmaS5Gb250RmxhZ3MuRml4ZWRQaXRjaCk7bGV0e3R5cGU6byxzdWJ0eXBlOmN9PXI7dGhpcy50eXBlPW8sdGhpcy5zdWJ0eXBlPWMsdGhpcy5zeXN0ZW1Gb250SW5mbz1yLnN5c3RlbUZvbnRJbmZvO2NvbnN0IGg9ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7aWYodGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFoLHRoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPWhbMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiLG51bGwhPT0oYT10aGlzLnN5c3RlbUZvbnRJbmZvKSYmdm9pZCAwIT09YSYmYS5ndWVzc0ZhbGxiYWNrJiYodGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExLHRoaXMuc3lzdGVtRm9udEluZm8uY3NzKz0iLCIuY29uY2F0KHRoaXMuZmFsbGJhY2tOYW1lKSksdGhpcy5kaWZmZXJlbmNlcz1yLmRpZmZlcmVuY2VzLHRoaXMud2lkdGhzPXIud2lkdGhzLHRoaXMuZGVmYXVsdFdpZHRoPXIuZGVmYXVsdFdpZHRoLHRoaXMuY29tcG9zaXRlPXIuY29tcG9zaXRlLHRoaXMuY01hcD1yLmNNYXAsdGhpcy5jYXBIZWlnaHQ9ci5jYXBIZWlnaHQveCx0aGlzLmFzY2VudD1yLmFzY2VudC94LHRoaXMuZGVzY2VudD1yLmRlc2NlbnQveCx0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50LHRoaXMuZm9udE1hdHJpeD1yLmZvbnRNYXRyaXgsdGhpcy5iYm94PXIuYmJveCx0aGlzLmRlZmF1bHRFbmNvZGluZz1yLmRlZmF1bHRFbmNvZGluZyx0aGlzLnRvVW5pY29kZT1yLnRvVW5pY29kZSx0aGlzLnRvRm9udENoYXI9W10sIlR5cGUzIj09PXIudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxyLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59aWYodGhpcy5jaWRFbmNvZGluZz1yLmNpZEVuY29kaW5nfHwiIix0aGlzLnZlcnRpY2FsPSEhci52ZXJ0aWNhbCx0aGlzLnZlcnRpY2FsJiYodGhpcy52bWV0cmljcz1yLnZtZXRyaWNzLHRoaXMuZGVmYXVsdFZNZXRyaWNzPXIuZGVmYXVsdFZNZXRyaWNzKSwhdHx8dC5pc0VtcHR5KXJldHVybiB0JiYoMCxuLndhcm4pKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKSx2b2lkIHRoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQocik7bGV0IGQ7W28sY109ZnVuY3Rpb24oZSx0KXtsZXQgcixhLHt0eXBlOmksc3VidHlwZTpzLGNvbXBvc2l0ZTpvfT10O3JldHVybiBmdW5jdGlvbihlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiA2NTUzNj09PSgwLGIucmVhZFVpbnQzMikodCwwKXx8InRydWUiPT09KDAsbi5ieXRlc1RvU3RyaW5nKSh0KX0oZSl8fFAoZSk/cj1vPyJDSURGb250VHlwZTIiOiJUcnVlVHlwZSI6ZnVuY3Rpb24oZSl7Y29uc3QgdD1lLnBlZWtCeXRlcyg0KTtyZXR1cm4iT1RUTyI9PT0oMCxuLmJ5dGVzVG9TdHJpbmcpKHQpfShlKT9yPW8/IkNJREZvbnRUeXBlMiI6Ik9wZW5UeXBlIjpmdW5jdGlvbihlKXtjb25zdCB0PWUucGVla0J5dGVzKDIpO3JldHVybiAzNz09PXRbMF0mJjMzPT09dFsxXXx8MTI4PT09dFswXSYmMT09PXRbMV19KGUpP3I9bz8iQ0lERm9udFR5cGUwIjoiTU1UeXBlMSI9PT1pPyJNTVR5cGUxIjoiVHlwZTEiOmZ1bmN0aW9uKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIHRbMF0+PTEmJnRbM10+PTEmJnRbM108PTR9KGUpP28/KHI9IkNJREZvbnRUeXBlMCIsYT0iQ0lERm9udFR5cGUwQyIpOihyPSJNTVR5cGUxIj09PWk/Ik1NVHlwZTEiOiJUeXBlMSIsYT0iVHlwZTFDIik6KCgwLG4ud2FybikoImdldEZvbnRGaWxlVHlwZTogVW5hYmxlIHRvIGRldGVjdCBjb3JyZWN0IGZvbnQgZmlsZSBUeXBlL1N1YnR5cGUuIikscj1pLGE9cyksW3IsYV19KHQsciksbz09PXRoaXMudHlwZSYmYz09PXRoaXMuc3VidHlwZXx8KDAsbi5pbmZvKSgiSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAiLmNvbmNhdCh0aGlzLnR5cGUsIi8iKS5jb25jYXQodGhpcy5zdWJ0eXBlLCIgYnV0IGZvdW5kOiAiKS5jb25jYXQobywiLyIpLmNvbmNhdChjLCIuIikpO3RyeXtzd2l0Y2gobyl7Y2FzZSJNTVR5cGUxIjooMCxuLmluZm8pKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBhPSJUeXBlMUMiPT09Y3x8IkNJREZvbnRUeXBlMEMiPT09Yz9uZXcgdS5DRkZGb250KHQscik6bmV3IHcuVHlwZTFGb250KGUsdCxyKTtrKHIpLGQ9dGhpcy5jb252ZXJ0KGUsYSxyKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSIsZD10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxyKSx0aGlzLmlzT3BlblR5cGUmJihrKHIpLG89Ik9wZW5UeXBlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiRm9udCAiLmNvbmNhdChvLCIgaXMgbm90IHN1cHBvcnRlZCIpKX19Y2F0Y2goZSl7cmV0dXJuKDAsbi53YXJuKShlKSx2b2lkIHRoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQocil9QyhyKSx0aGlzLmRhdGE9ZCx0aGlzLnR5cGU9byx0aGlzLnN1YnR5cGU9Yyx0aGlzLmZvbnRNYXRyaXg9ci5mb250TWF0cml4LHRoaXMud2lkdGhzPXIud2lkdGhzLHRoaXMuZGVmYXVsdFdpZHRoPXIuZGVmYXVsdFdpZHRoLHRoaXMudG9Vbmljb2RlPXIudG9Vbmljb2RlLHRoaXMuc2VhY01hcD1yLnNlYWNNYXB9Z2V0IHJlbmRlcmVyKCl7Y29uc3QgZT1kLkZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQpO3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJyZW5kZXJlciIsZSl9ZXhwb3J0RGF0YSgpe2NvbnN0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXT9bLi4uUywuLi5BXTpTLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixuO2ZvcihyIG9mIGUpbj10aGlzW3JdLHZvaWQgMCE9PW4mJih0W3JdPW4pO3JldHVybiB0fWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6cn09dGhpcztsZXQgbj0oMCxpLm5vcm1hbGl6ZUZvbnROYW1lKSh0KTtjb25zdCBhPSgwLGwuZ2V0U3RkRm9udE1hcCkoKSx1PSgwLGwuZ2V0Tm9uU3RkRm9udE1hcCkoKSxkPSEhYVtuXSxnPSEoIXVbbl18fCFhW3Vbbl1dKTtuPWFbbl18fHVbbl18fG47Y29uc3QgcD0oMCxmLmdldEZvbnRCYXNpY01ldHJpY3MpKClbbl07cCYmKGlzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PXAuYXNjZW50L3gpLGlzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9cC5kZXNjZW50L3gpLGlzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PXAuY2FwSGVpZ2h0L3gpKSx0aGlzLmJvbGQ9L2JvbGQvZ2kudGVzdChuKSx0aGlzLml0YWxpYz0vb2JsaXF1ZXxpdGFsaWMvZ2kudGVzdChuKSx0aGlzLmJsYWNrPS9CbGFjay9nLnRlc3QodCk7Y29uc3QgbT0vTmFycm93L2cudGVzdCh0KTtpZih0aGlzLnJlbWVhc3VyZT0oIWR8fG0pJiZPYmplY3Qua2V5cyh0aGlzLndpZHRocykubGVuZ3RoPjAsKGR8fGcpJiYiQ0lERm9udFR5cGUyIj09PXImJnRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIikpe2NvbnN0IHI9ZS5jaWRUb0dpZE1hcCxuPVtdO2lmKFIobiwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSksL0FyaWFsLT9CbGFjay9pLnRlc3QodCk/UihuLCgwLGwuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrKSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJlIobiwoMCxsLmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaSkoKSkscil7Zm9yKGNvbnN0IGUgaW4gbil7Y29uc3QgdD1uW2VdO3ZvaWQgMCE9PXJbdF0mJihuWytlXT1yW3RdKX1yLmxlbmd0aCE9PXRoaXMudG9Vbmljb2RlLmxlbmd0aCYmZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IGE9bltlXTt2b2lkIDA9PT1yW2FdJiYoblsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe25bK2VdPXR9KSksdGhpcy50b0ZvbnRDaGFyPW4sdGhpcy50b1VuaWNvZGU9bmV3IGguVG9Vbmljb2RlTWFwKG4pfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QobikpdGhpcy50b0ZvbnRDaGFyPU4oYy5TeW1ib2xTZXRFbmNvZGluZywoMCxvLmdldEdseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KG4pKXRoaXMudG9Gb250Q2hhcj1OKGMuWmFwZkRpbmdiYXRzRW5jb2RpbmcsKDAsby5nZXREaW5nYmF0c0dseXBoc1VuaWNvZGUpKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZihkKXtjb25zdCBlPU4odGhpcy5kZWZhdWx0RW5jb2RpbmcsKDAsby5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09cnx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBoLklkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LHIpe2VbK3RdPXJ9KSksdGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKSxyPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKCh0LG4pPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCByPXRoaXMuZGlmZmVyZW5jZXNbdF18fHRoaXMuZGVmYXVsdEVuY29kaW5nW3RdLGE9KDAscy5nZXRVbmljb2RlRm9yR2x5cGgpKHIsZSk7LTEhPT1hJiYobj1hKX1yWyt0XT1ufSkpLHRoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXAmJi9UYWhvbWF8VmVyZGFuYS9pLnRlc3QodCkmJlIociwoMCxsLmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cykoKSksdGhpcy50b0ZvbnRDaGFyPXJ9QyhlKSx0aGlzLmxvYWRlZE5hbWU9bi5zcGxpdCgiLSIpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxyKXt2YXIgcyxsO2NvbnN0IGQ9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIGYoZSx0KXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7clsiT1MvMiJdPW51bGwsci5jbWFwPW51bGwsci5oZWFkPW51bGwsci5oaGVhPW51bGwsci5obXR4PW51bGwsci5tYXhwPW51bGwsci5uYW1lPW51bGwsci5wb3N0PW51bGw7Zm9yKGxldCBuPTA7bjx0O24rKyl7Y29uc3QgdD1iKGUpO2QuaW5jbHVkZXModC50YWcpJiYwIT09dC5sZW5ndGgmJihyW3QudGFnXT10KX1yZXR1cm4gcn1mdW5jdGlvbiBiKGUpe2NvbnN0IHQ9ZS5nZXRTdHJpbmcoNCkscj1lLmdldEludDMyKCk+Pj4wLG49ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAsaT1lLnBvcztlLnBvcz1lLnN0YXJ0fHwwLGUuc2tpcChuKTtjb25zdCBzPWUuZ2V0Qnl0ZXMoYSk7cmV0dXJuIGUucG9zPWksImhlYWQiPT09dCYmKHNbOF09c1s5XT1zWzEwXT1zWzExXT0wLHNbMTddfD0zMikse3RhZzp0LGNoZWNrc3VtOnIsbGVuZ3RoOmEsb2Zmc2V0Om4sZGF0YTpzfX1mdW5jdGlvbiB3KGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gdihlLHQscixuLGEsaSl7Y29uc3Qgcz17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fHI+ZS5sZW5ndGh8fHItdDw9MTIpcmV0dXJuIHM7Y29uc3Qgbz1lLnN1YmFycmF5KHQsciksYz1UKG9bMl0sb1szXSksbD1UKG9bNF0sb1s1XSksaD1UKG9bNl0sb1s3XSksdT1UKG9bOF0sb1s5XSk7Yz5oJiYoSShvLDIsaCksSShvLDYsYykpLGw+dSYmKEkobyw0LHUpLEkobyw4LGwpKTtjb25zdCBkPVQob1swXSxvWzFdKTtpZihkPDApcmV0dXJuIGQ8LTF8fChuLnNldChvLGEpLHMubGVuZ3RoPW8ubGVuZ3RoKSxzO2xldCBmLGc9MTAscD0wO2ZvcihmPTA7ZjxkO2YrKylwPTErKG9bZ108PDh8b1tnKzFdKSxnKz0yO2NvbnN0IG09ZyxiPW9bZ108PDh8b1tnKzFdO3Muc2l6ZU9mSW5zdHJ1Y3Rpb25zPWIsZys9MitiO2NvbnN0IHk9ZztsZXQgdz0wO2ZvcihmPTA7ZjxwO2YrKyl7Y29uc3QgZT1vW2crK107MTkyJmUmJihvW2ctMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCByPTI7NCZlP3I9MTozMiZlJiYocj0wKTtjb25zdCBuPXQrcjtpZih3Kz1uLDgmZSl7Y29uc3QgZT1vW2crK107MD09PWUmJihvW2ctMV1ePTgpLGYrPWUsdys9ZSpufX1pZigwPT09dylyZXR1cm4gcztsZXQgdj1nK3c7cmV0dXJuIHY+by5sZW5ndGg/czohaSYmYj4wPyhuLnNldChvLnN1YmFycmF5KDAsbSksYSksbi5zZXQoWzAsMF0sYSttKSxuLnNldChvLnN1YmFycmF5KHksdiksYSttKzIpLHYtPWIsby5sZW5ndGgtdj4zJiYodj12KzMmLTQpLHMubGVuZ3RoPXYscyk6by5sZW5ndGgtdj4zPyh2PXYrMyYtNCxuLnNldChvLnN1YmFycmF5KDAsdiksYSkscy5sZW5ndGg9dixzKToobi5zZXQobyxhKSxzLmxlbmd0aD1vLmxlbmd0aCxzKX1mdW5jdGlvbiB4KGUpe2NvbnN0IHI9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O3QucG9zPXI7Y29uc3Qgbj1bW10sW11dLGE9W10saT1lLmxlbmd0aCxzPXIraTtpZigwIT09dC5nZXRVaW50MTYoKXx8aTw2KXJldHVybltuLGFdO2NvbnN0IG89dC5nZXRVaW50MTYoKSxjPXQuZ2V0VWludDE2KCk7bGV0IGwsaDtmb3IobD0wO2w8byYmdC5wb3MrMTI8PXM7bCsrKXtjb25zdCBlPXtwbGF0Zm9ybTp0LmdldFVpbnQxNigpLGVuY29kaW5nOnQuZ2V0VWludDE2KCksbGFuZ3VhZ2U6dC5nZXRVaW50MTYoKSxuYW1lOnQuZ2V0VWludDE2KCksbGVuZ3RoOnQuZ2V0VWludDE2KCksb2Zmc2V0OnQuZ2V0VWludDE2KCl9OyhEKGUpfHxCKGUpKSYmYS5wdXNoKGUpfWZvcihsPTAsaD1hLmxlbmd0aDtsPGg7bCsrKXtjb25zdCBlPWFbbF07aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3QgaT1yK2MrZS5vZmZzZXQ7aWYoaStlLmxlbmd0aD5zKWNvbnRpbnVlO3QucG9zPWk7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IHI9IiI7Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bis9MilyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO25bMV1bb109cn1lbHNlIG5bMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVybltuLGFdfWNvbnN0IFM9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBBKGUsdCl7bGV0IHIsYSxpLHMsbyxjPWUuZGF0YSxsPTAsaD0wLHU9MDtjb25zdCBkPVtdLGY9W10sZz1bXTtsZXQgcD10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxtPSExLGI9MCx5PTA7Zm9yKGxldCBlPWMubGVuZ3RoO2w8ZTspe2NvbnN0IGU9Y1tsKytdO2lmKDY0PT09ZSlpZihhPWNbbCsrXSxtfHx5KWwrPWE7ZWxzZSBmb3Iocj0wO3I8YTtyKyspZC5wdXNoKGNbbCsrXSk7ZWxzZSBpZig2NT09PWUpaWYoYT1jW2wrK10sbXx8eSlsKz0yKmE7ZWxzZSBmb3Iocj0wO3I8YTtyKyspaT1jW2wrK10sZC5wdXNoKGk8PDh8Y1tsKytdKTtlbHNlIGlmKDE3Nj09KDI0OCZlKSlpZihhPWUtMTc2KzEsbXx8eSlsKz1hO2Vsc2UgZm9yKHI9MDtyPGE7cisrKWQucHVzaChjW2wrK10pO2Vsc2UgaWYoMTg0PT0oMjQ4JmUpKWlmKGE9ZS0xODQrMSxtfHx5KWwrPTIqYTtlbHNlIGZvcihyPTA7cjxhO3IrKylpPWNbbCsrXSxkLnB1c2goaTw8OHxjW2wrK10pO2Vsc2UgaWYoNDMhPT1lfHxwKWlmKDQ0IT09ZXx8cCl7aWYoNDU9PT1lKWlmKG0pbT0hMSxoPWw7ZWxzZXtpZihvPWYucG9wKCksIW8pcmV0dXJuKDAsbi53YXJuKSgiVFQ6IEVOREYgYmFkIHN0YWNrIiksdm9pZCh0LmhpbnRzVmFsaWQ9ITEpO3M9Zy5wb3AoKSxjPW8uZGF0YSxsPW8uaSx0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdPWQubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKShtfHx5KSYmKCgwLG4ud2FybikoIlRUOiBuZXN0ZWQgSURFRnMgbm90IGFsbG93ZWQiKSxwPSEwKSxtPSEwLHU9bDtlbHNlIGlmKDg4PT09ZSkrK2I7ZWxzZSBpZigyNz09PWUpeT1iO2Vsc2UgaWYoODk9PT1lKXk9PT1iJiYoeT0wKSwtLWI7ZWxzZSBpZigyOD09PWUmJiFtJiYheSl7Y29uc3QgZT1kLmF0KC0xKTtlPjAmJihsKz1lLTEpfX1lbHNlKG18fHkpJiYoKDAsbi53YXJuKSgiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpLHA9ITApLG09ITAsdT1sLHM9ZC5wb3AoKSx0LmZ1bmN0aW9uc0RlZmluZWRbc109e2RhdGE6YyxpOmx9O2Vsc2UgaWYoIW0mJiF5KWlmKHM9ZC5hdCgtMSksaXNOYU4ocykpKDAsbi5pbmZvKSgiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2UgaWYodC5mdW5jdGlvbnNVc2VkW3NdPSEwLHMgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1kLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdO2lmKGU8MClyZXR1cm4oMCxuLndhcm4pKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKSx2b2lkKHQuaGludHNWYWxpZD0hMSk7ZC5sZW5ndGg9ZX1lbHNlIGlmKHMgaW4gdC5mdW5jdGlvbnNEZWZpbmVkJiYhZy5pbmNsdWRlcyhzKSl7aWYoZi5wdXNoKHtkYXRhOmMsaTpsLHN0YWNrVG9wOmQubGVuZ3RoLTF9KSxnLnB1c2gocyksbz10LmZ1bmN0aW9uc0RlZmluZWRbc10sIW8pcmV0dXJuKDAsbi53YXJuKSgiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIiksdm9pZCh0LmhpbnRzVmFsaWQ9ITEpO2M9by5kYXRhLGw9by5pfWlmKCFtJiYheSl7bGV0IHQ9MDtmb3IoZTw9MTQyP3Q9U1tlXTplPj0xOTImJmU8PTIyMz90PS0xOmU+PTIyNCYmKHQ9LTIpLGU+PTExMyYmZTw9MTE3JiYoYT1kLnBvcCgpLGlzTmFOKGEpfHwodD0yKi1hKSk7dDwwJiZkLmxlbmd0aD4wOylkLnBvcCgpLHQrKztmb3IoO3Q+MDspZC5wdXNoKE5hTiksdC0tfX10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucz1wO2NvbnN0IHc9W2NdO2w+Yy5sZW5ndGgmJncucHVzaChuZXcgVWludDhBcnJheShsLWMubGVuZ3RoKSksdT5oJiYoKDAsbi53YXJuKSgiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKSx3LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpKSxmdW5jdGlvbihlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCByLG4sYT0wO2ZvcihyPTAsbj10Lmxlbmd0aDtyPG47cisrKWErPXRbcl0ubGVuZ3RoO2E9YSszJi00O2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoYSk7bGV0IHM9MDtmb3Iocj0wLG49dC5sZW5ndGg7cjxuO3IrKylpLnNldCh0W3JdLHMpLHMrPXRbcl0ubGVuZ3RoO2UuZGF0YT1pLGUubGVuZ3RoPWF9fShlLHcpfWxldCBDLE8sTSxFO2lmKFAodD1uZXcgeS5TdHJlYW0obmV3IFVpbnQ4QXJyYXkodC5nZXRCeXRlcygpKSkpKXtjb25zdCBlPWZ1bmN0aW9uKGUsdCl7Y29uc3R7bnVtRm9udHM6cixvZmZzZXRUYWJsZTphfT1mdW5jdGlvbihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpOygwLG4uYXNzZXJ0KSgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IHI9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCksaT1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxpO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbz17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOnIsbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6aSxvZmZzZXRUYWJsZTpzfTtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBvO2Nhc2UgMjpyZXR1cm4gby5kc2lnVGFnPWUuZ2V0SW50MzIoKT4+PjAsby5kc2lnTGVuZ3RoPWUuZ2V0SW50MzIoKT4+PjAsby5kc2lnT2Zmc2V0PWUuZ2V0SW50MzIoKT4+PjAsb310aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBUcnVlVHlwZSBDb2xsZWN0aW9uIG1ham9yVmVyc2lvbjogIi5jb25jYXQociwiLiIpKX0oZSksaT10LnNwbGl0KCIrIik7bGV0IHM7Zm9yKGxldCBjPTA7YzxyO2MrKyl7ZS5wb3M9KGUuc3RhcnR8fDApK2FbY107Y29uc3Qgcj13KGUpLGw9ZihlLHIubnVtVGFibGVzKTtpZighbC5uYW1lKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGZvbnQgbXVzdCBjb250YWluIGEgIm5hbWUiIHRhYmxlLicpO2NvbnN0W2hdPXgobC5uYW1lKTtmb3IobGV0IGU9MCxuPWgubGVuZ3RoO2U8bjtlKyspZm9yKGxldCBuPTAsYT1oW2VdLmxlbmd0aDtuPGE7bisrKXt2YXIgbztjb25zdCBhPW51bGw9PT0obz1oW2VdW25dKXx8dm9pZCAwPT09bz92b2lkIDA6by5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihhKXtpZihhPT09dClyZXR1cm57aGVhZGVyOnIsdGFibGVzOmx9O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSlhPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6cix0YWJsZXM6bH0pfX19aWYocylyZXR1cm4oMCxuLndhcm4pKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIicuY29uY2F0KHQsJyIgZm9udCwgZmFsbGluZyBiYWNrIHRvICInKS5jb25jYXQocy5uYW1lLCciIGZvbnQgaW5zdGVhZC4nKSkse2hlYWRlcjpzLmhlYWRlcix0YWJsZXM6cy50YWJsZXN9O3Rocm93IG5ldyBuLkZvcm1hdEVycm9yKCdUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIicuY29uY2F0KHQsJyIgZm9udC4nKSl9KHQsdGhpcy5uYW1lKTtDPWUuaGVhZGVyLE89ZS50YWJsZXN9ZWxzZSBDPXcodCksTz1mKHQsQy5udW1UYWJsZXMpO2NvbnN0IFI9IU9bIkNGRiAiXTtpZihSKXtpZighTy5sb2NhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibG9jYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7Ty5nbHlmfHwoKDAsbi53YXJuKSgnUmVxdWlyZWQgImdseWYiIHRhYmxlIGlzIG5vdCBmb3VuZCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKSxPLmdseWY9e3RhZzoiZ2x5ZiIsZGF0YTpuZXcgVWludDhBcnJheSgwKX0pLHRoaXMuaXNPcGVuVHlwZT0hMX1lbHNle3ZhciBOO2NvbnN0IHQ9ci5jb21wb3NpdGUmJigobnVsbD09PShOPXIuY2lkVG9HaWRNYXApfHx2b2lkIDA9PT1OP3ZvaWQgMDpOLmxlbmd0aCk+MHx8IShyLmNNYXAgaW5zdGFuY2VvZiBwLklkZW50aXR5Q01hcCkpO2lmKCJPVFRPIj09PUMudmVyc2lvbiYmIXR8fCFPLmhlYWR8fCFPLmhoZWF8fCFPLm1heHB8fCFPLnBvc3QpcmV0dXJuIEU9bmV3IHkuU3RyZWFtKE9bIkNGRiAiXS5kYXRhKSxNPW5ldyB1LkNGRkZvbnQoRSxyKSxrKHIpLHRoaXMuY29udmVydChlLE0scik7ZGVsZXRlIE8uZ2x5ZixkZWxldGUgTy5sb2NhLGRlbGV0ZSBPLmZwZ20sZGVsZXRlIE8ucHJlcCxkZWxldGUgT1siY3Z0ICJdLHRoaXMuaXNPcGVuVHlwZT0hMH1pZighTy5tYXhwKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAibWF4cCIgdGFibGUgaXMgbm90IGZvdW5kJyk7dC5wb3M9KHQuc3RhcnR8fDApK08ubWF4cC5vZmZzZXQ7Y29uc3QgWD10LmdldEludDMyKCkscT10LmdldFVpbnQxNigpO2lmKChudWxsPT09KHM9ci5zY2FsZUZhY3RvcnMpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmxlbmd0aCk9PT1xJiZSKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09cix0PUYoTy5oZWFkLmRhdGFbNTBdLE8uaGVhZC5kYXRhWzUxXSksbj1uZXcgZy5HbHlmVGFibGUoe2dseWZUYWJsZTpPLmdseWYuZGF0YSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTpPLmxvY2EuZGF0YSxudW1HbHlwaHM6cX0pO24uc2NhbGUoZSk7Y29uc3R7Z2x5ZjphLGxvY2E6aSxpc0xvY2F0aW9uTG9uZzpzfT1uLndyaXRlKCk7Ty5nbHlmLmRhdGE9YSxPLmxvY2EuZGF0YT1pLHMhPT0hIXQmJihPLmhlYWQuZGF0YVs1MF09MCxPLmhlYWQuZGF0YVs1MV09cz8xOjApO2NvbnN0IG89Ty5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxxO3QrKyl7Y29uc3Qgcj00KnQsbj1NYXRoLnJvdW5kKGVbdF0qRihvW3JdLG9bcisxXSkpO29bcl09bj4+OCYyNTUsb1tyKzFdPTI1NSZuLEkobyxyKzIsTWF0aC5yb3VuZChlW3RdKlQob1tyKzJdLG9bciszXSkpKX19bGV0IHo9cSsxLEc9ITA7ej42NTUzNSYmKEc9ITEsej1xLCgwLG4ud2FybikoIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpKTtsZXQgVz0wLFY9MDtYPj02NTUzNiYmTy5tYXhwLmxlbmd0aD49MjImJih0LnBvcys9OCx0LmdldFVpbnQxNigpPjImJihPLm1heHAuZGF0YVsxNF09MCxPLm1heHAuZGF0YVsxNV09MiksdC5wb3MrPTQsVz10LmdldFVpbnQxNigpLHQucG9zKz00LFY9dC5nZXRVaW50MTYoKSksTy5tYXhwLmRhdGFbNF09ej4+OCxPLm1heHAuZGF0YVs1XT0yNTUmejtjb25zdCBLPWZ1bmN0aW9uKGUsdCxyLGEpe2NvbnN0IGk9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07aWYoZSYmQShlLGkpLHQmJkEodCxpKSxlJiZmdW5jdGlvbihlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpKDAsbi53YXJuKSgiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpLGUuaGludHNWYWxpZD0hMTtlbHNlIGZvcihsZXQgcj0wLGE9ZS5mdW5jdGlvbnNVc2VkLmxlbmd0aDtyPGE7cisrKXtpZihyPnQpcmV0dXJuKDAsbi53YXJuKSgiVFQ6IGludmFsaWQgZnVuY3Rpb24gaWQ6ICIrciksdm9pZChlLmhpbnRzVmFsaWQ9ITEpO2lmKGUuZnVuY3Rpb25zVXNlZFtyXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtyXSlyZXR1cm4oMCxuLndhcm4pKCJUVDogdW5kZWZpbmVkIGZ1bmN0aW9uOiAiK3IpLHZvaWQoZS5oaW50c1ZhbGlkPSExKX19KGksYSksciYmMSZyLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShyLmxlbmd0aCsxKTtlLnNldChyLmRhdGEpLHIuZGF0YT1lfXJldHVybiBpLmhpbnRzVmFsaWR9KE8uZnBnbSxPLnByZXAsT1siY3Z0ICJdLFcpO2lmKEt8fChkZWxldGUgTy5mcGdtLGRlbGV0ZSBPLnByZXAsZGVsZXRlIE9bImN2dCAiXSksZnVuY3Rpb24oZSx0LHIsYSxpLHMpe2lmKCF0KXJldHVybiB2b2lkKHImJihyLmRhdGE9bnVsbCkpO2UucG9zPShlLnN0YXJ0fHwwKSt0Lm9mZnNldCxlLnBvcys9NCxlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9MixlLnBvcys9Mjtjb25zdCBvPWUuZ2V0VWludDE2KCk7ZS5wb3MrPTgsZS5wb3MrPTI7bGV0IGM9ZS5nZXRVaW50MTYoKTswIT09byYmKDImRihhLmRhdGFbNDRdLGEuZGF0YVs0NV0pfHwodC5kYXRhWzIyXT0wLHQuZGF0YVsyM109MCkpLGM+aSYmKCgwLG4uaW5mbykoIlRoZSBudW1PZk1ldHJpY3MgKCIuY29uY2F0KGMsIikgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoIikuY29uY2F0KGksIikuIikpLGM9aSx0LmRhdGFbMzRdPSg2NTI4MCZjKT4+OCx0LmRhdGFbMzVdPTI1NSZjKTtjb25zdCBsPWktYy0oci5sZW5ndGgtNCpjPj4xKTtpZihsPjApe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoci5sZW5ndGgrMipsKTtlLnNldChyLmRhdGEpLHMmJihlW3IubGVuZ3RoXT1yLmRhdGFbMl0sZVtyLmxlbmd0aCsxXT1yLmRhdGFbM10pLHIuZGF0YT1lfX0odCxPLmhoZWEsTy5obXR4LE8uaGVhZCx6LEcpLCFPLmhlYWQpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24oZSx0LHIpe2NvbnN0IGE9ZS5kYXRhLGk9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhyPDw4KStufShhWzBdLGFbMV0sYVsyXSxhWzNdKTtpPj4xNiE9MSYmKCgwLG4uaW5mbykoIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK2kpLGFbMF09MCxhWzFdPTEsYVsyXT0wLGFbM109MCk7Y29uc3Qgcz1GKGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7KDAsbi5pbmZvKSgiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYocj09PWU8PDEpYVs1MF09MCxhWzUxXT0wO2Vsc2V7aWYociE9PWU8PDIpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkNvdWxkIG5vdCBmaXggaW5kZXhUb0xvY0Zvcm1hdDogIitzKTthWzUwXT0wLGFbNTFdPTF9fX0oTy5oZWFkLHEsUj9PLmxvY2EubGVuZ3RoOjApO2xldCBZPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUil7Y29uc3QgZT1GKE8uaGVhZC5kYXRhWzUwXSxPLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24oZSx0LHIsbixhLGkscyl7bGV0IG8sYyxsO24/KG89NCxjPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX0sbD1mdW5jdGlvbihlLHQscil7ZVt0XT1yPj4+MjQmMjU1LGVbdCsxXT1yPj4xNiYyNTUsZVt0KzJdPXI+PjgmMjU1LGVbdCszXT0yNTUmcn0pOihvPTIsYz1mdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPDw5fGVbdCsxXTw8MX0sbD1mdW5jdGlvbihlLHQscil7ZVt0XT1yPj45JjI1NSxlW3QrMV09cj4+MSYyNTV9KTtjb25zdCBoPWk/cisxOnIsdT1vKigxK2gpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7ZC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsdSkpLGUuZGF0YT1kO2NvbnN0IGY9dC5kYXRhLGc9Zi5sZW5ndGgscD1uZXcgVWludDhBcnJheShnKTtsZXQgbSxiO2NvbnN0IHk9W107Zm9yKG09MCxiPTA7bTxyKzE7bSsrLGIrPW8pe2xldCBlPWMoZCxiKTtlPmcmJihlPWcpLHkucHVzaCh7aW5kZXg6bSxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfWZvcih5LnNvcnQoKChlLHQpPT5lLm9mZnNldC10Lm9mZnNldCkpLG09MDttPHI7bSsrKXlbbV0uZW5kT2Zmc2V0PXlbbSsxXS5vZmZzZXQ7Zm9yKHkuc29ydCgoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCkpLG09MDttPHI7bSsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09eVttXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3Qgcj15W20rMV0ub2Zmc2V0O2lmKDAhPT1yKXt5W21dLmVuZE9mZnNldD1yO2JyZWFrfX1jb25zdCB3PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHg9MDtmb3IobChkLDAseCksbT0wLGI9bzttPHI7bSsrLGIrPW8pe2NvbnN0IGU9dihmLHlbbV0ub2Zmc2V0LHlbbV0uZW5kT2Zmc2V0LHAseCxhKSx0PWUubGVuZ3RoOzA9PT10JiYod1ttXT0hMCksZS5zaXplT2ZJbnN0cnVjdGlvbnM+cyYmKHM9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpLHgrPXQsbChkLGIseCl9aWYoMD09PXgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKG09MCxiPW87bTxoO20rKyxiKz1vKWwoZCxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKGkpe2NvbnN0IHI9YyhkLG8pO3AubGVuZ3RoPnIreD90LmRhdGE9cC5zdWJhcnJheSgwLHIreCk6KHQuZGF0YT1uZXcgVWludDhBcnJheShyK3gpLHQuZGF0YS5zZXQocC5zdWJhcnJheSgwLHgpKSksdC5kYXRhLnNldChwLnN1YmFycmF5KDAscikseCksbChlLmRhdGEsZC5sZW5ndGgtbyx4K3IpfWVsc2UgdC5kYXRhPXAuc3ViYXJyYXkoMCx4KTtyZXR1cm57bWlzc2luZ0dseXBoczp3LG1heFNpemVPZkluc3RydWN0aW9uczpzfX0oTy5sb2NhLE8uZ2x5ZixxLGUsSyxHLFYpO1k9dC5taXNzaW5nR2x5cGhzLFg+PTY1NTM2JiZPLm1heHAubGVuZ3RoPj0yMiYmKE8ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+OCxPLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zKX1pZighTy5oaGVhKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7MD09PU8uaGhlYS5kYXRhWzEwXSYmMD09PU8uaGhlYS5kYXRhWzExXSYmKE8uaGhlYS5kYXRhWzEwXT0yNTUsTy5oaGVhLmRhdGFbMTFdPTI1NSk7Y29uc3QgSj17dW5pdHNQZXJFbTpGKE8uaGVhZC5kYXRhWzE4XSxPLmhlYWQuZGF0YVsxOV0pLHlNYXg6VChPLmhlYWQuZGF0YVs0Ml0sTy5oZWFkLmRhdGFbNDNdKSx5TWluOlQoTy5oZWFkLmRhdGFbMzhdLE8uaGVhZC5kYXRhWzM5XSksYXNjZW50OlQoTy5oaGVhLmRhdGFbNF0sTy5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6VChPLmhoZWEuZGF0YVs2XSxPLmhoZWEuZGF0YVs3XSksbGluZUdhcDpUKE8uaGhlYS5kYXRhWzhdLE8uaGhlYS5kYXRhWzldKX07dGhpcy5hc2NlbnQ9Si5hc2NlbnQvSi51bml0c1BlckVtLHRoaXMuZGVzY2VudD1KLmRlc2NlbnQvSi51bml0c1BlckVtLHRoaXMubGluZUdhcD1KLmxpbmVHYXAvSi51bml0c1BlckVtLG51bGwhPT0obD10aGlzLmNzc0ZvbnRJbmZvKSYmdm9pZCAwIT09bCYmbC5saW5lSGVpZ2h0Pyh0aGlzLmxpbmVIZWlnaHQ9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVIZWlnaHQsdGhpcy5saW5lR2FwPXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lR2FwKTp0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50K3RoaXMubGluZUdhcCxPLnBvc3QmJmZ1bmN0aW9uKGUscixhKXtjb25zdCBzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO2NvbnN0IG89cytlLmxlbmd0aCxjPXQuZ2V0SW50MzIoKTt0LnNraXAoMjgpO2xldCBsLGgsdT0hMDtzd2l0Y2goYyl7Y2FzZSA2NTUzNjpsPWkuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nO2JyZWFrO2Nhc2UgMTMxMDcyOmNvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlIT09YSl7dT0hMTticmVha31jb25zdCBzPVtdO2ZvcihoPTA7aDxlOysraCl7Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGU+PTMyNzY4KXt1PSExO2JyZWFrfXMucHVzaChlKX1pZighdSlicmVhaztjb25zdCBkPVtdLGY9W107Zm9yKDt0LnBvczxvOyl7Y29uc3QgZT10LmdldEJ5dGUoKTtmb3IoZi5sZW5ndGg9ZSxoPTA7aDxlOysraClmW2hdPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRCeXRlKCkpO2QucHVzaChmLmpvaW4oIiIpKX1mb3IobD1bXSxoPTA7aDxlOysraCl7Y29uc3QgZT1zW2hdO2U8MjU4P2wucHVzaChpLk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZ1tlXSk6bC5wdXNoKGRbZS0yNThdKX1icmVhaztjYXNlIDE5NjYwODpicmVhaztkZWZhdWx0OigwLG4ud2FybikoIlVua25vd24vdW5zdXBwb3J0ZWQgcG9zdCB0YWJsZSB2ZXJzaW9uICIrYyksdT0hMSxyLmRlZmF1bHRFbmNvZGluZyYmKGw9ci5kZWZhdWx0RW5jb2RpbmcpfXIuZ2x5cGhOYW1lcz1sfShPLnBvc3QscixxKSxPLnBvc3Q9e3RhZzoicG9zdCIsZGF0YTokKHIpfTtjb25zdCBaPVtdO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIVlbZV19aWYoci5jb21wb3NpdGUpe2NvbnN0IGU9ci5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7ci5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKHIsYSl7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYoYT1MKHIsYSwhMCkpLGE+NjU1MzUpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtsZXQgaT0tMTt0P2k9YTp2b2lkIDAhPT1lW2FdJiYoaT1lW2FdKSxpPj0wJiZpPHEmJlEoaSkmJihaW3JdPWkpfSkpfWVsc2V7Y29uc3QgZT1mdW5jdGlvbihlLHQscixhKXtpZighZSlyZXR1cm4oMCxuLndhcm4pKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKSx7cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX07bGV0IGkscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cyx0LnNraXAoMik7Y29uc3Qgbz10LmdldFVpbnQxNigpO2xldCBjLGw9ITE7Zm9yKGxldCBlPTA7ZTxvO2UrKyl7dmFyIGgsdTtjb25zdCBuPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpLHM9dC5nZXRJbnQzMigpPj4+MDtsZXQgZD0hMTtpZigobnVsbD09PShoPWMpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnBsYXRmb3JtSWQpIT09bnx8KG51bGw9PT0odT1jKXx8dm9pZCAwPT09dT92b2lkIDA6dS5lbmNvZGluZ0lkKSE9PWkpe2lmKDAhPT1ufHwwIT09aSYmMSE9PWkmJjMhPT1pKWlmKDE9PT1uJiYwPT09aSlkPSEwO2Vsc2UgaWYoMyE9PW58fDEhPT1pfHwhYSYmYyl7aWYociYmMz09PW4mJjA9PT1pKXtkPSEwO2xldCByPSEwO2lmKGU8by0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO0YoZVswXSxlWzFdKTxuJiYocj0hMSl9ciYmKGw9ITApfX1lbHNlIGQ9ITAscnx8KGw9ITApO2Vsc2UgZD0hMDtpZihkJiYoYz17cGxhdGZvcm1JZDpuLGVuY29kaW5nSWQ6aSxvZmZzZXQ6c30pLGwpYnJlYWt9fWlmKGMmJih0LnBvcz1zK2Mub2Zmc2V0KSwhY3x8LTE9PT10LnBlZWtCeXRlKCkpcmV0dXJuKDAsbi53YXJuKSgiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKSx7cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX07Y29uc3QgZD10LmdldFVpbnQxNigpO2xldCBmPSExO2NvbnN0IGc9W107bGV0IHAsbTtpZigwPT09ZCl7Zm9yKHQuc2tpcCg0KSxwPTA7cDwyNTY7cCsrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmcucHVzaCh7Y2hhckNvZGU6cCxnbHlwaElkOmV9KX1mPSEwfWVsc2UgaWYoMj09PWQpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCByPTA7Zm9yKGxldCBuPTA7bjwyNTY7bisrKXtjb25zdCBuPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKG4pLHI9TWF0aC5tYXgobixyKX1jb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8PXI7ZSsrKW4ucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6VCh0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCByPTA7cjwyNTY7cisrKWlmKDA9PT1lW3JdKXQucG9zPW5bMF0uaWRSYW5nZVBvcysyKnIsbT10LmdldFVpbnQxNigpLGcucHVzaCh7Y2hhckNvZGU6cixnbHlwaElkOm19KTtlbHNle2NvbnN0IGE9bltlW3JdXTtmb3IocD0wO3A8YS5lbnRyeUNvdW50O3ArKyl7Y29uc3QgZT0ocjw8OCkrcCthLmZpcnN0Q29kZTt0LnBvcz1hLmlkUmFuZ2VQb3MrMipwLG09dC5nZXRVaW50MTYoKSwwIT09bSYmKG09KG0rYS5pZERlbHRhKSU2NTUzNiksZy5wdXNoKHtjaGFyQ29kZTplLGdseXBoSWQ6bX0pfX19ZWxzZSBpZig0PT09ZCl7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKT4+MTt0LnNraXAoNik7Y29uc3Qgcj1bXTtsZXQgbjtmb3Iobj0wO248ZTtuKyspci5wdXNoKHtlbmQ6dC5nZXRVaW50MTYoKX0pO2Zvcih0LnNraXAoMiksbj0wO248ZTtuKyspcltuXS5zdGFydD10LmdldFVpbnQxNigpO2ZvcihuPTA7bjxlO24rKylyW25dLmRlbHRhPXQuZ2V0VWludDE2KCk7bGV0IGEsbz0wO2ZvcihuPTA7bjxlO24rKyl7aT1yW25dO2NvbnN0IHM9dC5nZXRVaW50MTYoKTtzPyhhPShzPj4xKS0oZS1uKSxpLm9mZnNldEluZGV4PWEsbz1NYXRoLm1heChvLGEraS5lbmQtaS5zdGFydCsxKSk6aS5vZmZzZXRJbmRleD0tMX1jb25zdCBjPVtdO2ZvcihwPTA7cDxvO3ArKyljLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKG49MDtuPGU7bisrKXtpPXJbbl0scz1pLnN0YXJ0O2NvbnN0IGU9aS5lbmQsdD1pLmRlbHRhO2ZvcihhPWkub2Zmc2V0SW5kZXgscD1zO3A8PWU7cCsrKTY1NTM1IT09cCYmKG09YTwwP3A6Y1thK3Atc10sbT1tK3QmNjU1MzUsZy5wdXNoKHtjaGFyQ29kZTpwLGdseXBoSWQ6bX0pKX19ZWxzZSBpZig2PT09ZCl7dC5za2lwKDQpO2NvbnN0IGU9dC5nZXRVaW50MTYoKSxyPXQuZ2V0VWludDE2KCk7Zm9yKHA9MDtwPHI7cCsrKXttPXQuZ2V0VWludDE2KCk7Y29uc3Qgcj1lK3A7Zy5wdXNoKHtjaGFyQ29kZTpyLGdseXBoSWQ6bX0pfX1lbHNle2lmKDEyIT09ZClyZXR1cm4oMCxuLndhcm4pKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIrZCkse3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9O3t0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IocD0wO3A8ZTtwKyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxyPXQuZ2V0SW50MzIoKT4+PjA7bGV0IG49dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1yO3QrKylnLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDpuKyt9KX19fWcuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jaGFyQ29kZS10LmNoYXJDb2RlfSkpO2ZvcihsZXQgZT0xO2U8Zy5sZW5ndGg7ZSsrKWdbZS0xXS5jaGFyQ29kZT09PWdbZV0uY2hhckNvZGUmJihnLnNwbGljZShlLDEpLGUtLSk7cmV0dXJue3BsYXRmb3JtSWQ6Yy5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6Yy5lbmNvZGluZ0lkLG1hcHBpbmdzOmcsaGFzU2hvcnRDbWFwOmZ9fShPLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LHIuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHM9ZS5lbmNvZGluZ0lkLGw9ZS5tYXBwaW5ncztsZXQgdT1bXSxkPSExO2lmKCFyLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1yLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09ci5iYXNlRW5jb2RpbmdOYW1lfHwodT0oMCxjLmdldEVuY29kaW5nKShyLmJhc2VFbmNvZGluZ05hbWUpKSxyLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09c3x8MT09PWEmJjA9PT1zKSl7Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXtsZXQgbjtpZihuPXZvaWQgMCE9PXRoaXMuZGlmZmVyZW5jZXNbdF0/dGhpcy5kaWZmZXJlbmNlc1t0XTp1Lmxlbmd0aCYmIiIhPT11W3RdP3VbdF06Yy5TdGFuZGFyZEVuY29kaW5nW3RdLCFuKWNvbnRpbnVlO2NvbnN0IG89KDAsaS5yZWNvdmVyR2x5cGhOYW1lKShuLGUpO2xldCBkO2lmKDM9PT1hJiYxPT09cz9kPWVbb106MT09PWEmJjA9PT1zJiYoZD1jLk1hY1JvbWFuRW5jb2RpbmcuaW5kZXhPZihvKSksdm9pZCAwPT09ZCl7aWYoIXIuZ2x5cGhOYW1lcyYmci5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZD1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1kKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIGwpaWYoZS5jaGFyQ29kZT09PWQpe1pbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgbClaW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtkPSEwfWVsc2UgZm9yKGNvbnN0IGUgb2YgbCl7bGV0IHQ9ZS5jaGFyQ29kZTszPT09YSYmdD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KSxaW3RdPWUuZ2x5cGhJZH1pZihyLmdseXBoTmFtZXMmJih1Lmxlbmd0aHx8dGhpcy5kaWZmZXJlbmNlcy5sZW5ndGgpKWZvcihsZXQgZT0wO2U8MjU2OysrZSl7aWYoIWQmJnZvaWQgMCE9PVpbZV0pY29udGludWU7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx1W2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG49ci5nbHlwaE5hbWVzLmluZGV4T2YodCk7bj4wJiZRKG4pJiYoWltlXT1uKX19MD09PVoubGVuZ3RoJiYoWlswXT0wKTtsZXQgZWU9ei0xO2lmKEd8fChlZT0wKSwhci5jc3NGb250SW5mbyl7Y29uc3QgZT1fKFosUSxlZSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcixPLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpqKGUuY2hhckNvZGVUb0dseXBoSWQsZS50b1VuaWNvZGVFeHRyYU1hcCx6KX0sT1siT1MvMiJdJiZmdW5jdGlvbihlLHQpe3QucG9zPSh0LnN0YXJ0fHwwKStlLm9mZnNldDtjb25zdCByPXQuZ2V0VWludDE2KCk7dC5za2lwKDYwKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7cmV0dXJuIShyPDQmJjc2OCZufHx0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCl8fCh0LnNraXAoNiksMD09PXQuZ2V0VWludDE2KCl8fChlLmRhdGFbOF09ZS5kYXRhWzldPTAsMCkpKX0oT1siT1MvMiJdLHQpfHwoT1siT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6VShyLGUuY2hhckNvZGVUb0dseXBoSWQsSil9KX1pZighUil0cnl7RT1uZXcgeS5TdHJlYW0oT1siQ0ZGICJdLmRhdGEpLE09bmV3IGEuQ0ZGUGFyc2VyKEUscixpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkucGFyc2UoKSxNLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCBlPW5ldyBhLkNGRkNvbXBpbGVyKE0pO09bIkNGRiAiXS5kYXRhPWUuY29tcGlsZSgpfWNhdGNoKGUpeygwLG4ud2FybikoIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIityLmxvYWRlZE5hbWUpfWlmKE8ubmFtZSl7Y29uc3RbdCxuXT14KE8ubmFtZSk7Ty5uYW1lLmRhdGE9SChlLHQpLHRoaXMucHNOYW1lPXRbMF1bNl18fG51bGwsci5jb21wb3NpdGV8fGZ1bmN0aW9uKGUsdCxyKXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZihlLmhhc0VuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2lmKCF0KXJldHVybjtpZigwPT09ci5sZW5ndGgpcmV0dXJuO2lmKGUuZGVmYXVsdEVuY29kaW5nPT09Yy5XaW5BbnNpRW5jb2RpbmcpcmV0dXJuO2Zvcihjb25zdCBlIG9mIHIpaWYoIUIoZSkpcmV0dXJuO2NvbnN0IG49Yy5XaW5BbnNpRW5jb2RpbmcsYT1bXSxpPSgwLG8uZ2V0R2x5cGhzVW5pY29kZSkoKTtmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07aWYoIiI9PT10KWNvbnRpbnVlO2NvbnN0IHI9aVt0XTt2b2lkIDAhPT1yJiYoYVtlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpKX1hLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChhKX0ocix0aGlzLmlzU3ltYm9saWNGb250LG4pfWVsc2UgTy5uYW1lPXt0YWc6Im5hbWUiLGRhdGE6SCh0aGlzLm5hbWUpfTtjb25zdCB0ZT1uZXcgbS5PcGVuVHlwZUZpbGVCdWlsZGVyKEMudmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gTyl0ZS5hZGRUYWJsZShlLE9bZV0uZGF0YSk7cmV0dXJuIHRlLnRvQXJyYXkoKX1jb252ZXJ0KGUsdCxyKXtyLmZpeGVkUGl0Y2g9ITEsci5idWlsdEluRW5jb2RpbmcmJmZ1bmN0aW9uKGUsdCl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYodD09PWUuZGVmYXVsdEVuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIGguSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHI9W10sbj0oMCxvLmdldEdseXBoc1VuaWNvZGUpKCk7Zm9yKGNvbnN0IGEgaW4gdCl7aWYoZS5oYXNFbmNvZGluZyYmKGUuYmFzZUVuY29kaW5nTmFtZXx8dm9pZCAwIT09ZS5kaWZmZXJlbmNlc1thXSkpY29udGludWU7Y29uc3QgaT10W2FdLG89KDAscy5nZXRVbmljb2RlRm9yR2x5cGgpKGksbik7LTEhPT1vJiYoclthXT1TdHJpbmcuZnJvbUNoYXJDb2RlKG8pKX1yLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChyKX0ocixyLmJ1aWx0SW5FbmNvZGluZyk7bGV0IGE9MTt0IGluc3RhbmNlb2YgdS5DRkZGb250JiYoYT10Lm51bUdseXBocy0xKTtjb25zdCBsPXQuZ2V0R2x5cGhNYXBwaW5nKHIpO2xldCBkPW51bGwsZj1sLGc9bnVsbDtyLmNzc0ZvbnRJbmZvfHwoZD1fKGwsdC5oYXNHbHlwaElkLmJpbmQodCksYSx0aGlzLnRvVW5pY29kZSksdGhpcy50b0ZvbnRDaGFyPWQudG9Gb250Q2hhcixmPWQuY2hhckNvZGVUb0dseXBoSWQsZz1kLnRvVW5pY29kZUV4dHJhTWFwKTtjb25zdCBwPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGIoZSx0KXtsZXQgcj1udWxsO2Zvcihjb25zdCBuIGluIGUpdD09PWVbbl0mJihyfHwocj1bXSkpLnB1c2goMHxuKTtyZXR1cm4gcn1mdW5jdGlvbiB5KGUsdCl7Zm9yKGNvbnN0IHIgaW4gZSlpZih0PT09ZVtyXSlyZXR1cm4gMHxyO3JldHVybiBkLmNoYXJDb2RlVG9HbHlwaElkW2QubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZV09dCxkLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCB3PXQuc2VhY3M7aWYoZCYmaS5TRUFDX0FOQUxZU0lTX0VOQUJMRUQmJm51bGwhPXcmJncubGVuZ3RoKXtjb25zdCBlPXIuZm9udE1hdHJpeHx8bi5GT05UX0lERU5USVRZX01BVFJJWCxhPXQuZ2V0Q2hhcnNldCgpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gdyl7dHw9MDtjb25zdCByPXdbdF0sbj1jLlN0YW5kYXJkRW5jb2RpbmdbclsyXV0scz1jLlN0YW5kYXJkRW5jb2RpbmdbclszXV0sbz1hLmluZGV4T2YobiksaD1hLmluZGV4T2Yocyk7aWYobzwwfHxoPDApY29udGludWU7Y29uc3QgdT17eDpyWzBdKmVbMF0rclsxXSplWzJdK2VbNF0seTpyWzBdKmVbMV0rclsxXSplWzNdK2VbNV19LGY9YihsLHQpO2lmKGYpZm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1kLmNoYXJDb2RlVG9HbHlwaElkLHI9eSh0LG8pLG49eSh0LGgpO2lbZV09e2Jhc2VGb250Q2hhckNvZGU6cixhY2NlbnRGb250Q2hhckNvZGU6bixhY2NlbnRPZmZzZXQ6dX19fXIuc2VhY01hcD1pfWNvbnN0IHY9MS8oci5mb250TWF0cml4fHxuLkZPTlRfSURFTlRJVFlfTUFUUklYKVswXSx4PW5ldyBtLk9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTtyZXR1cm4geC5hZGRUYWJsZSgiQ0ZGICIsdC5kYXRhKSx4LmFkZFRhYmxlKCJPUy8yIixVKHIsZikpLHguYWRkVGFibGUoImNtYXAiLGooZixnLHApKSx4LmFkZFRhYmxlKCJoZWFkIiwiXDABXDBcMFwwXDAQXDBcMFwwXDBcMF8PPMO1XDBcMCIrRSh2KSsiXDBcMFwwXDDCnlx2fidcMFwwXDBcMMKeXHZ+J1wwXDAiK0Uoci5kZXNjZW50KSsiD8O/IitFKHIuYXNjZW50KStNKHIuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIikseC5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK0Uoci5hc2NlbnQpK0Uoci5kZXNjZW50KSsiXDBcMMO/w79cMFwwXDBcMFwwXDAiK0Uoci5jYXBIZWlnaHQpK0UoTWF0aC50YW4oci5pdGFsaWNBbmdsZSkqci54SGVpZ2h0KSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIitNKHApKSx4LmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbigpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxyPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCBuPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEsYT1wO3Q8YTt0Kyspe2xldCBhPTA7aWYoZSl7Y29uc3Qgcj1lW3QtMV07YT0id2lkdGgiaW4gcj9yLndpZHRoOjB9ZWxzZSByJiYoYT1NYXRoLmNlaWwoclt0XXx8MCkpO24rPU0oYSkrTSgwKX1yZXR1cm4gbn0oKSkseC5hZGRUYWJsZSgibWF4cCIsIlwwXDBQXDAiK00ocCkpLHguYWRkVGFibGUoIm5hbWUiLEgoZSkpLHguYWRkVGFibGUoInBvc3QiLCQocikpLHgudG9BcnJheSgpfWdldCBzcGFjZVdpZHRoKCl7Y29uc3QgZT1bInNwYWNlIiwibWludXMiLCJvbmUiLCJpIiwiSSJdO2xldCB0O2Zvcihjb25zdCByIG9mIGUpe2lmKHIgaW4gdGhpcy53aWR0aHMpe3Q9dGhpcy53aWR0aHNbcl07YnJlYWt9Y29uc3QgZT0oMCxvLmdldEdseXBoc1VuaWNvZGUpKClbcl07bGV0IG49MDtpZih0aGlzLmNvbXBvc2l0ZSYmdGhpcy5jTWFwLmNvbnRhaW5zKGUpJiYobj10aGlzLmNNYXAubG9va3VwKGUpLCJzdHJpbmciPT10eXBlb2YgbiYmKG49TChlLG4pKSksIW4mJnRoaXMudG9Vbmljb2RlJiYobj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKSxuPD0wJiYobj1lKSx0PXRoaXMud2lkdGhzW25dLHQpYnJlYWt9cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsInNwYWNlV2lkdGgiLHR8fHRoaXMuZGVmYXVsdFdpZHRoKX1fY2hhclRvR2x5cGgoZSl7dmFyIHQscixhLGk7bGV0IG8sYyxsLGg9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSx1PXRoaXMuX2dseXBoQ2FjaGVbZV07aWYoKG51bGw9PT0odD11KXx8dm9pZCAwPT09dD92b2lkIDA6dC5pc1NwYWNlKT09PWgpcmV0dXJuIHU7bGV0IGQ9ZTtudWxsIT09KHI9dGhpcy5jTWFwKSYmdm9pZCAwIT09ciYmci5jb250YWlucyhlKSYmKGQ9dGhpcy5jTWFwLmxvb2t1cChlKSwic3RyaW5nIj09dHlwZW9mIGQmJihkPUwoZSxkKSkpLGM9dGhpcy53aWR0aHNbZF0sIm51bWJlciIhPXR5cGVvZiBjJiYoYz10aGlzLmRlZmF1bHRXaWR0aCk7Y29uc3QgZj1udWxsPT09KGE9dGhpcy52bWV0cmljcyl8fHZvaWQgMD09PWE/dm9pZCAwOmFbZF07bGV0IGc9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgZyYmKGc9U3RyaW5nLmZyb21DaGFyQ29kZShnKSk7bGV0IHA9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO2lmKG89dGhpcy50b0ZvbnRDaGFyW2VdfHxlLHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07Ii5ub3RkZWYiIT09dCYmIiIhPT10fHwiVHlwZTEiIT09dGhpcy50eXBlfHwobz0zMiksbz0oMCxzLm1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKShvKX10aGlzLmlzVHlwZTNGb250JiYobD1vKTtsZXQgbT1udWxsO2lmKG51bGwhPT0oaT10aGlzLnNlYWNNYXApJiZ2b2lkIDAhPT1pJiZpW2VdKXtwPSEwO2NvbnN0IHQ9dGhpcy5zZWFjTWFwW2VdO289dC5iYXNlRm9udENoYXJDb2RlLG09e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHQuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6dC5hY2NlbnRPZmZzZXR9fWxldCBiPSIiO3JldHVybiJudW1iZXIiPT10eXBlb2YgbyYmKG88PTExMTQxMTE/Yj1TdHJpbmcuZnJvbUNvZGVQb2ludChvKTooMCxuLndhcm4pKCJjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAiLmNvbmNhdChvKSkpLHU9bmV3IE8oZSxiLGcsbSxjLGYsbCxoLHApLHRoaXMuX2dseXBoQ2FjaGVbZV09dX1jaGFyc1RvR2x5cGhzKGUpe2xldCB0PXRoaXMuX2NoYXJzQ2FjaGVbZV07aWYodClyZXR1cm4gdDtpZih0PVtdLHRoaXMuY01hcCl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLG49ZS5sZW5ndGg7bGV0IGE9MDtmb3IoO2E8bjspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxhLHIpO2NvbnN0e2NoYXJjb2RlOm4sbGVuZ3RoOml9PXI7YSs9aTtjb25zdCBzPXRoaXMuX2NoYXJUb0dseXBoKG4sMT09PWkmJjMyPT09ZS5jaGFyQ29kZUF0KGEtMSkpO3QucHVzaChzKX19ZWxzZSBmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjsrK3Ipe2NvbnN0IG49ZS5jaGFyQ29kZUF0KHIpLGE9dGhpcy5fY2hhclRvR2x5cGgobiwzMj09PW4pO3QucHVzaChhKX1yZXR1cm4gdGhpcy5fY2hhcnNDYWNoZVtlXT10fWdldENoYXJQb3NpdGlvbnMoZSl7Y29uc3QgdD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgbj0wO2Zvcig7bjxlLmxlbmd0aDspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxuLHIpO2NvbnN0IGE9ci5sZW5ndGg7dC5wdXNoKFtuLG4rYV0pLG4rPWF9fWVsc2UgZm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47KytyKXQucHVzaChbcixyKzFdKTtyZXR1cm4gdH1nZXQgZ2x5cGhDYWNoZVZhbHVlcygpe3JldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2dseXBoQ2FjaGUpfWVuY29kZVN0cmluZyhlKXtjb25zdCB0PVtdLHI9W10sbj0oKT0+dC5sZW5ndGglMj09MSxhPXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgaC5JZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgaT0wLHM9ZS5sZW5ndGg7aTxzO2krKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KGkpO2lmKHM+NTUyOTUmJihzPDU3MzQ0fHxzPjY1NTMzKSYmaSsrLHRoaXMudG9Vbmljb2RlKXtjb25zdCBlPWEocyk7aWYoLTEhPT1lKXtuKCkmJih0LnB1c2goci5qb2luKCIiKSksci5sZW5ndGg9MCk7Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0pci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1uKCl8fCh0LnB1c2goci5qb2luKCIiKSksci5sZW5ndGg9MCksci5wdXNoKFN0cmluZy5mcm9tQ29kZVBvaW50KHMpKX1yZXR1cm4gdC5wdXNoKHIuam9pbigiIikpLHR9fSx0LkVycm9yRm9udD1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmVycm9yPWUsdGhpcy5sb2FkZWROYW1lPSJnX2ZvbnRfZXJyb3IiLHRoaXMubWlzc2luZ0ZpbGU9ITB9Y2hhcnNUb0dseXBocygpe3JldHVybltdfWVuY29kZVN0cmluZyhlKXtyZXR1cm5bZV19ZXhwb3J0RGF0YSgpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ0ZGVG9wRGljdD10LkNGRlN0cmluZ3M9dC5DRkZTdGFuZGFyZFN0cmluZ3M9dC5DRkZQcml2YXRlRGljdD10LkNGRlBhcnNlcj10LkNGRkluZGV4PXQuQ0ZGSGVhZGVyPXQuQ0ZGRkRTZWxlY3Q9dC5DRkZDb21waWxlcj10LkNGRkNoYXJzZXQ9dC5DRkY9dm9pZCAwLHIoMTM5KSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpLGE9cigxODYpLGk9cigxODcpO2NvbnN0IHM9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIiwiMDAxLjAwMCIsIjAwMS4wMDEiLCIwMDEuMDAyIiwiMDAxLjAwMyIsIkJsYWNrIiwiQm9sZCIsIkJvb2siLCJMaWdodCIsIk1lZGl1bSIsIlJlZ3VsYXIiLCJSb21hbiIsIlNlbWlib2xkIl07dC5DRkZTdGFuZGFyZFN0cmluZ3M9cztjb25zdCBvPVtudWxsLHtpZDoiaHN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0sbnVsbCx7aWQ6InZzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoidm1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybGluZXRvIixtaW46MixyZXNldFN0YWNrOiEwfSx7aWQ6ImhsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoidmxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJycmN1cnZldG8iLG1pbjo2LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsc3ViciIsbWluOjEsdW5kZWZTdGFjazohMH0se2lkOiJyZXR1cm4iLG1pbjowLHVuZGVmU3RhY2s6ITB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoidmhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSx7aWQ6Imh2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH1dLGM9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07dC5DRkZQYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpLHRoaXMucHJvcGVydGllcz10LHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIXJ9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBsO3RoaXMuY2ZmPXQ7Y29uc3Qgcj10aGlzLnBhcnNlSGVhZGVyKCksbj10aGlzLnBhcnNlSW5kZXgoci5lbmRQb3MpLGE9dGhpcy5wYXJzZUluZGV4KG4uZW5kUG9zKSxpPXRoaXMucGFyc2VJbmRleChhLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgoaS5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3QoYS5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChwLG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1yLm9iaix0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgobi5vYmopLHQuc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgoaS5vYmopLHQudG9wRGljdD1jLHQuZ2xvYmFsU3VickluZGV4PXMub2JqLHRoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpLHQuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgaD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSx1PXRoaXMucGFyc2VJbmRleChoKS5vYmosZD1jLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpO2QmJihlLmZvbnRNYXRyaXg9ZCk7Y29uc3QgZj1jLmdldEJ5TmFtZSgiRm9udEJCb3giKTtsZXQgZyxtO2lmKGYmJihlLmFzY2VudD1NYXRoLm1heChmWzNdLGZbMV0pLGUuZGVzY2VudD1NYXRoLm1pbihmWzFdLGZbM10pLGUuYXNjZW50U2NhbGVkPSEwKSx0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoYy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgcj0wLG49ZS5jb3VudDtyPG47KytyKXtjb25zdCBuPWUuZ2V0KHIpLGE9dGhpcy5jcmVhdGVEaWN0KHAsdGhpcy5wYXJzZURpY3QobiksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3QoYSksdC5mZEFycmF5LnB1c2goYSl9bT1udWxsLGc9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksdS5jb3VudCx0LnN0cmluZ3MsITApLHQuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGMuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLHUuY291bnQpfWVsc2UgZz10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSx1LmNvdW50LHQuc3RyaW5ncywhMSksbT10aGlzLnBhcnNlRW5jb2RpbmcoYy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsZy5jaGFyc2V0KTt0LmNoYXJzZXQ9Zyx0LmVuY29kaW5nPW07Y29uc3QgYj10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOnUsbG9jYWxTdWJySW5kZXg6Yy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpzLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmMucHJpdmF0ZURpY3R9KTtyZXR1cm4gdC5jaGFyU3RyaW5ncz1iLmNoYXJTdHJpbmdzLHQuc2VhY3M9Yi5zZWFjcyx0LndpZHRocz1iLndpZHRocyx0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPHQmJjEhPT1lW3JdOykrK3I7aWYocj49dCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiSW52YWxpZCBDRkYgaGVhZGVyIik7MCE9PXImJigoMCxuLmluZm8pKCJjZmYgZGF0YSBpcyBzaGlmdGVkIiksZT1lLnN1YmFycmF5KHIpLHRoaXMuYnl0ZXM9ZSk7Y29uc3QgYT1lWzBdLGk9ZVsxXSxzPWVbMl0sbz1lWzNdO3JldHVybntvYmo6bmV3IGgoYSxpLHMsbyksZW5kUG9zOnN9fXBhcnNlRGljdChlKXtsZXQgdD0wO2Z1bmN0aW9uIHIoKXtsZXQgcj1lW3QrK107cmV0dXJuIDMwPT09cj9mdW5jdGlvbigpe2xldCByPSIiO2NvbnN0IG49WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLGE9ZS5sZW5ndGg7Zm9yKDt0PGE7KXtjb25zdCBhPWVbdCsrXSxpPWE+PjQscz0xNSZhO2lmKDE1PT09aSlicmVhaztpZihyKz1uW2ldLDE1PT09cylicmVhaztyKz1uW3NdfXJldHVybiBwYXJzZUZsb2F0KHIpfSgpOjI4PT09cj8ocj1lW3QrK10scj0ocjw8MjR8ZVt0KytdPDwxNik+PjE2LHIpOjI5PT09cj8ocj1lW3QrK10scj1yPDw4fGVbdCsrXSxyPXI8PDh8ZVt0KytdLHI9cjw8OHxlW3QrK10scik6cj49MzImJnI8PTI0Nj9yLTEzOTpyPj0yNDcmJnI8PTI1MD8yNTYqKHItMjQ3KStlW3QrK10rMTA4OnI+PTI1MSYmcjw9MjU0Py0yNTYqKHItMjUxKS1lW3QrK10tMTA4OigoMCxuLndhcm4pKCdDRkZQYXJzZXJfcGFyc2VEaWN0OiAiJytyKyciIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC4nKSxOYU4pfWxldCBhPVtdO2NvbnN0IGk9W107dD0wO2NvbnN0IHM9ZS5sZW5ndGg7Zm9yKDt0PHM7KXtsZXQgbj1lW3RdO248PTIxPygxMj09PW4mJihuPW48PDh8ZVsrK3RdKSxpLnB1c2goW24sYV0pLGE9W10sKyt0KTphLnB1c2gocigpKX1yZXR1cm4gaX1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IGQscj10aGlzLmJ5dGVzLG49cltlKytdPDw4fHJbZSsrXSxhPVtdO2xldCBpLHMsbz1lO2lmKDAhPT1uKXtjb25zdCB0PXJbZSsrXSxjPWUrKG4rMSkqdC0xO2ZvcihpPTAscz1uKzE7aTxzOysraSl7bGV0IG49MDtmb3IobGV0IGE9MDthPHQ7KythKW48PD04LG4rPXJbZSsrXTthLnB1c2goYytuKX1vPWFbbl19Zm9yKGk9MCxzPWEubGVuZ3RoLTE7aTxzOysraSl7Y29uc3QgZT1hW2ldLG49YVtpKzFdO3QuYWRkKHIuc3ViYXJyYXkoZSxuKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgcj0wLGE9ZS5jb3VudDtyPGE7KytyKXtjb25zdCBhPWUuZ2V0KHIpO3QucHVzaCgoMCxuLmJ5dGVzVG9TdHJpbmcpKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IHU7Zm9yKGxldCByPTAsYT1lLmNvdW50O3I8YTsrK3Ipe2NvbnN0IGE9ZS5nZXQocik7dC5hZGQoKDAsbi5ieXRlc1RvU3RyaW5nKShhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQscil7Y29uc3Qgbj1uZXcgZShyKTtmb3IoY29uc3RbZSxyXW9mIHQpbi5zZXRCeUtleShlLHIpO3JldHVybiBufXBhcnNlQ2hhclN0cmluZyhlLHQscixhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBsPXQubGVuZ3RoO2ZvcihsZXQgaD0wO2g8bDspe2NvbnN0IHU9dFtoKytdO2xldCBkPW51bGw7aWYoMTI9PT11KXtjb25zdCBlPXRbaCsrXTswPT09ZT8odFtoLTJdPTEzOSx0W2gtMV09MjIsaT0wKTpkPWNbZV19ZWxzZSBpZigyOD09PXUpc1tpXT0odFtoXTw8MjR8dFtoKzFdPDwxNik+PjE2LGgrPTIsaSsrO2Vsc2UgaWYoMTQ9PT11KXtpZihpPj00JiYoaS09NCx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpKXJldHVybiBlLnNlYWM9cy5zbGljZShpLGkrNCksITE7ZD1vW3VdfWVsc2UgaWYodT49MzImJnU8PTI0NilzW2ldPXUtMTM5LGkrKztlbHNlIGlmKHU+PTI0NyYmdTw9MjU0KXNbaV09dTwyNTE/KHUtMjQ3PDw4KSt0W2hdKzEwODotKHUtMjUxPDw4KS10W2hdLTEwOCxoKyssaSsrO2Vsc2UgaWYoMjU1PT09dSlzW2ldPSh0W2hdPDwyNHx0W2grMV08PDE2fHRbaCsyXTw8OHx0W2grM10pLzY1NTM2LGgrPTQsaSsrO2Vsc2UgaWYoMTk9PT11fHwyMD09PXUpe2lmKGUuaGludHMrPWk+PjEsMD09PWUuaGludHMpe3QuY29weVdpdGhpbihoLTEsaCwtMSksaC09MSxsLT0xO2NvbnRpbnVlfWgrPWUuaGludHMrNz4+MyxpJT0yLGQ9b1t1XX1lbHNle2lmKDEwPT09dXx8Mjk9PT11KXtjb25zdCB0PTEwPT09dT9yOmE7aWYoIXQpcmV0dXJuIGQ9b1t1XSwoMCxuLndhcm4pKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrZC5pZCksITE7bGV0IGM9MzI3Njg7dC5jb3VudDwxMjQwP2M9MTA3OnQuY291bnQ8MzM5MDAmJihjPTExMzEpO2NvbnN0IGw9c1stLWldK2M7aWYobDwwfHxsPj10LmNvdW50fHxpc05hTihsKSlyZXR1cm4gZD1vW3VdLCgwLG4ud2FybikoIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2QuaWQpLCExO2lmKGUuc3RhY2tTaXplPWksZS5jYWxsRGVwdGgrKywhdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChsKSxyLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS0saT1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PXUpcmV0dXJuIGUuc3RhY2tTaXplPWksITA7aWYoMD09PXUmJmg9PT10Lmxlbmd0aCl0W2gtMV09MTQsZD1vWzE0XTtlbHNle2lmKDk9PT11KXt0LmNvcHlXaXRoaW4oaC0xLGgsLTEpLGgtPTEsbC09MTtjb250aW51ZX1kPW9bdV19fWlmKGQpe2lmKGQuc3RlbSYmKGUuaGludHMrPWk+PjEsMz09PXV8fDIzPT09dT9lLmhhc1ZTdGVtcz0hMDohZS5oYXNWU3RlbXN8fDEhPT11JiYxOCE9PXV8fCgoMCxuLndhcm4pKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKSx0W2gtMV09MT09PXU/MzoyMykpLCJtaW4iaW4gZCYmIWUudW5kZWZTdGFjayYmaTxkLm1pbilyZXR1cm4oMCxuLndhcm4pKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrZC5pZCsiOyBhY3R1YWw6ICIraSsiLCBleHBlY3RlZDogIitkLm1pbiksMD09PWkmJih0W2gtMV09MTQsITApO2UuZmlyc3RTdGFja0NsZWFyaW5nJiZkLnN0YWNrQ2xlYXJpbmcmJihlLmZpcnN0U3RhY2tDbGVhcmluZz0hMSxpLT1kLm1pbixpPj0yJiZkLnN0ZW0/aSU9MjppPjEmJigwLG4ud2FybikoIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKSxpPjAmJihlLndpZHRoPXNbaS0xXSkpLCJzdGFja0RlbHRhImluIGQ/KCJzdGFja0ZuImluIGQmJmQuc3RhY2tGbihzLGkpLGkrPWQuc3RhY2tEZWx0YSk6ZC5zdGFja0NsZWFyaW5nP2k9MDpkLnJlc2V0U3RhY2s/KGk9MCxlLnVuZGVmU3RhY2s9ITEpOmQudW5kZWZTdGFjayYmKGk9MCxlLnVuZGVmU3RhY2s9ITAsZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITEpfX1yZXR1cm4gbDx0Lmxlbmd0aCYmdC5maWxsKDE0LGwpLGUuc3RhY2tTaXplPWksITB9cGFyc2VDaGFyU3RyaW5ncyhlKXtsZXR7Y2hhclN0cmluZ3M6dCxsb2NhbFN1YnJJbmRleDpyLGdsb2JhbFN1YnJJbmRleDphLGZkU2VsZWN0OmksZmRBcnJheTpzLHByaXZhdGVEaWN0Om99PWU7Y29uc3QgYz1bXSxsPVtdLGg9dC5jb3VudDtmb3IobGV0IGU9MDtlPGg7ZSsrKXtjb25zdCBoPXQuZ2V0KGUpLHU9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLHVuZGVmU3RhY2s6ITAsaGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgZD0hMCxmPW51bGwsZz1vO2lmKGkmJnMubGVuZ3RoKXtjb25zdCB0PWkuZ2V0RkRJbmRleChlKTstMT09PXQmJigoMCxuLndhcm4pKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpLGQ9ITEpLHQ+PXMubGVuZ3RoJiYoKDAsbi53YXJuKSgiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIiksZD0hMSksZCYmKGc9c1t0XS5wcml2YXRlRGljdCxmPWcuc3VicnNJbmRleCl9ZWxzZSByJiYoZj1yKTtpZihkJiYoZD10aGlzLnBhcnNlQ2hhclN0cmluZyh1LGgsZixhKSksbnVsbCE9PXUud2lkdGgpe2NvbnN0IHQ9Zy5nZXRCeU5hbWUoIm5vbWluYWxXaWR0aFgiKTtsW2VdPXQrdS53aWR0aH1lbHNle2NvbnN0IHQ9Zy5nZXRCeU5hbWUoImRlZmF1bHRXaWR0aFgiKTtsW2VdPXR9bnVsbCE9PXUuc2VhYyYmKGNbZV09dS5zZWFjKSxkfHx0LnNldChlLG5ldyBVaW50OEFycmF5KFsxNF0pKX1yZXR1cm57Y2hhclN0cmluZ3M6dCxzZWFjczpjLHdpZHRoczpsfX1lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpe2NvbnN0IHQ9dGhpcy5jcmVhdGVEaWN0KGIsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKSxlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpcmV0dXJuIHZvaWQgdGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO2NvbnN0IHQ9ZS5nZXRCeU5hbWUoIlByaXZhdGUiKTtpZighQXJyYXkuaXNBcnJheSh0KXx8MiE9PXQubGVuZ3RoKXJldHVybiB2b2lkIGUucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7Y29uc3Qgcj10WzBdLG49dFsxXTtpZigwPT09cnx8bj49dGhpcy5ieXRlcy5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO2NvbnN0IGE9bityLGk9dGhpcy5ieXRlcy5zdWJhcnJheShuLGEpLHM9dGhpcy5wYXJzZURpY3QoaSksbz10aGlzLmNyZWF0ZURpY3QoYixzLGUuc3RyaW5ncyk7aWYoZS5wcml2YXRlRGljdD1vLDA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNiksIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBjPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGw9bitjO2lmKDA9PT1jfHxsPj10aGlzLmJ5dGVzLmxlbmd0aClyZXR1cm4gdm9pZCB0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7Y29uc3QgaD10aGlzLnBhcnNlSW5kZXgobCk7by5zdWJyc0luZGV4PWgub2JqfXBhcnNlQ2hhcnNldHMoZSx0LHIsaSl7aWYoMD09PWUpcmV0dXJuIG5ldyB3KCEwLHkuSVNPX0FET0JFLGEuSVNPQWRvYmVDaGFyc2V0KTtpZigxPT09ZSlyZXR1cm4gbmV3IHcoITAseS5FWFBFUlQsYS5FeHBlcnRDaGFyc2V0KTtpZigyPT09ZSlyZXR1cm4gbmV3IHcoITAseS5FWFBFUlRfU1VCU0VULGEuRXhwZXJ0U3Vic2V0Q2hhcnNldCk7Y29uc3Qgcz10aGlzLmJ5dGVzLG89ZSxjPXNbZSsrXSxsPVtpPzA6Ii5ub3RkZWYiXTtsZXQgaCx1LGQ7c3dpdGNoKHQtPTEsYyl7Y2FzZSAwOmZvcihkPTA7ZDx0O2QrKyloPXNbZSsrXTw8OHxzW2UrK10sbC5wdXNoKGk/aDpyLmdldChoKSk7YnJlYWs7Y2FzZSAxOmZvcig7bC5sZW5ndGg8PXQ7KWZvcihoPXNbZSsrXTw8OHxzW2UrK10sdT1zW2UrK10sZD0wO2Q8PXU7ZCsrKWwucHVzaChpP2grKzpyLmdldChoKyspKTticmVhaztjYXNlIDI6Zm9yKDtsLmxlbmd0aDw9dDspZm9yKGg9c1tlKytdPDw4fHNbZSsrXSx1PXNbZSsrXTw8OHxzW2UrK10sZD0wO2Q8PXU7ZCsrKWwucHVzaChpP2grKzpyLmdldChoKyspKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIGNoYXJzZXQgZm9ybWF0Iil9Y29uc3QgZj1lLGc9cy5zdWJhcnJheShvLGYpO3JldHVybiBuZXcgdyghMSxjLGwsZyl9cGFyc2VFbmNvZGluZyhlLHQscixhKXtjb25zdCBzPU9iamVjdC5jcmVhdGUobnVsbCksbz10aGlzLmJ5dGVzO2xldCBjLGwsaCx1PSExLGQ9bnVsbDtpZigwPT09ZXx8MT09PWUpe3U9ITAsYz1lO2NvbnN0IHQ9ZT9pLkV4cGVydEVuY29kaW5nOmkuU3RhbmRhcmRFbmNvZGluZztmb3IobD0wLGg9YS5sZW5ndGg7bDxoO2wrKyl7Y29uc3QgZT10LmluZGV4T2YoYVtsXSk7LTEhPT1lJiYoc1tlXT1sKX19ZWxzZXtjb25zdCB0PWU7c3dpdGNoKGM9b1tlKytdLDEyNyZjKXtjYXNlIDA6Y29uc3QgdD1vW2UrK107Zm9yKGw9MTtsPD10O2wrKylzW29bZSsrXV09bDticmVhaztjYXNlIDE6Y29uc3Qgcj1vW2UrK107bGV0IGE9MTtmb3IobD0wO2w8cjtsKyspe2NvbnN0IHQ9b1tlKytdLHI9b1tlKytdO2ZvcihsZXQgZT10O2U8PXQrcjtlKyspc1tlXT1hKyt9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICIuY29uY2F0KGMsIiBpbiBDRkYiKSl9Y29uc3QgaT1lOzEyOCZjJiYob1t0XSY9MTI3LGZ1bmN0aW9uKCl7Y29uc3QgdD1vW2UrK107Zm9yKGw9MDtsPHQ7bCsrKXtjb25zdCB0PW9bZSsrXSxuPShvW2UrK108PDgpKygyNTUmb1tlKytdKTtzW3RdPWEuaW5kZXhPZihyLmdldChuKSl9fSgpKSxkPW8uc3ViYXJyYXkodCxpKX1yZXR1cm4gYyY9MTI3LG5ldyB2KHUsYyxzLGQpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCByPXRoaXMuYnl0ZXMsYT1yW2UrK10saT1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1yW2UrK107aS5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBvPXJbZSsrXTw8OHxyW2UrK107Zm9yKHM9MDtzPG87KytzKXtsZXQgdD1yW2UrK108PDh8cltlKytdOzA9PT1zJiYwIT09dCYmKCgwLG4ud2FybikoInBhcnNlRkRTZWxlY3Q6IFRoZSBmaXJzdCByYW5nZSBtdXN0IGhhdmUgYSBmaXJzdCBHSUQgb2YgMCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4iKSx0PTApO2NvbnN0IGE9cltlKytdLG89cltlXTw8OHxyW2UrMV07Zm9yKGxldCBlPXQ7ZTxvOysrZSlpLnB1c2goYSl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdwYXJzZUZEU2VsZWN0OiBVbmtub3duIGZvcm1hdCAiJy5jb25jYXQoYSwnIi4nKSl9aWYoaS5sZW5ndGghPT10KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IHgoYSxpKX19O2NsYXNzIGx7Y29uc3RydWN0b3IoKXt0aGlzLmhlYWRlcj1udWxsLHRoaXMubmFtZXM9W10sdGhpcy50b3BEaWN0PW51bGwsdGhpcy5zdHJpbmdzPW5ldyB1LHRoaXMuZ2xvYmFsU3VickluZGV4PW51bGwsdGhpcy5lbmNvZGluZz1udWxsLHRoaXMuY2hhcnNldD1udWxsLHRoaXMuY2hhclN0cmluZ3M9bnVsbCx0aGlzLmZkQXJyYXk9W10sdGhpcy5mZFNlbGVjdD1udWxsLHRoaXMuaXNDSURGb250PSExfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSlyZXR1cm4gdm9pZCgwLG4ud2FybikoIk5vdCBlbm91Z2ggc3BhY2UgaW4gY2hhcnN0cmluZ3MgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpO2NvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSksdGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe3JldHVybiEoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KSYmdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fXQuQ0ZGPWw7Y2xhc3MgaHtjb25zdHJ1Y3RvcihlLHQscixuKXt0aGlzLm1ham9yPWUsdGhpcy5taW5vcj10LHRoaXMuaGRyU2l6ZT1yLHRoaXMub2ZmU2l6ZT1ufX10LkNGRkhlYWRlcj1oO2NsYXNzIHV7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/c1tlXTplLTM5MTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS0zOTFdOnNbMF19Z2V0U0lEKGUpe2xldCB0PXMuaW5kZXhPZihlKTtyZXR1cm4tMSE9PXQ/dDoodD10aGlzLnN0cmluZ3MuaW5kZXhPZihlKSwtMSE9PXQ/dCszOTE6LTEpfWFkZChlKXt0aGlzLnN0cmluZ3MucHVzaChlKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5zdHJpbmdzLmxlbmd0aH19dC5DRkZTdHJpbmdzPXU7Y2xhc3MgZHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXSx0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGgsdGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGgsdGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fXQuQ0ZGSW5kZXg9ZDtjbGFzcyBme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXAsdGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXAsdGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzLHRoaXMudHlwZXM9ZS50eXBlcyx0aGlzLm9wY29kZXM9ZS5vcGNvZGVzLHRoaXMub3JkZXI9ZS5vcmRlcix0aGlzLnN0cmluZ3M9dCx0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IHIgb2YgdClpZihpc05hTihyKSlyZXR1cm4oMCxuLndhcm4pKCdJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICInLmNvbmNhdCh0LCciIGZvciBrZXkgIicpLmNvbmNhdChlLCciLicpKSwhMDtjb25zdCByPXRoaXMudHlwZXNbZV07cmV0dXJuIm51bSIhPT1yJiYic2lkIiE9PXImJiJvZmZzZXQiIT09cnx8KHQ9dFswXSksdGhpcy52YWx1ZXNbZV09dCwhMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiJy5jb25jYXQoZSwnIicpKTt0aGlzLnZhbHVlc1t0aGlzLm5hbWVUb0tleU1hcFtlXV09dH1oYXNOYW1lKGUpe3JldHVybiB0aGlzLm5hbWVUb0tleU1hcFtlXWluIHRoaXMudmFsdWVzfWdldEJ5TmFtZShlKXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAiLmNvbmNhdChlLCciJykpO2NvbnN0IHQ9dGhpcy5uYW1lVG9LZXlNYXBbZV07cmV0dXJuIHQgaW4gdGhpcy52YWx1ZXM/dGhpcy52YWx1ZXNbdF06dGhpcy5kZWZhdWx0c1t0XX1yZW1vdmVCeU5hbWUoZSl7ZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW2VdXX1zdGF0aWMgY3JlYXRlVGFibGVzKGUpe2NvbnN0IHQ9e2tleVRvTmFtZU1hcDp7fSxuYW1lVG9LZXlNYXA6e30sZGVmYXVsdHM6e30sdHlwZXM6e30sb3Bjb2Rlczp7fSxvcmRlcjpbXX07Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1BcnJheS5pc0FycmF5KHJbMF0pPyhyWzBdWzBdPDw4KStyWzBdWzFdOnJbMF07dC5rZXlUb05hbWVNYXBbZV09clsxXSx0Lm5hbWVUb0tleU1hcFtyWzFdXT1lLHQudHlwZXNbZV09clsyXSx0LmRlZmF1bHRzW2VdPXJbM10sdC5vcGNvZGVzW2VdPUFycmF5LmlzQXJyYXkoclswXSk/clswXTpbclswXV0sdC5vcmRlci5wdXNoKGUpfXJldHVybiB0fX1jb25zdCBnPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgcCBleHRlbmRzIGZ7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhnKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIocC50YWJsZXMsZSksdGhpcy5wcml2YXRlRGljdD1udWxsfX10LkNGRlRvcERpY3Q9cDtjb25zdCBtPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgYiBleHRlbmRzIGZ7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhtKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoYi50YWJsZXMsZSksdGhpcy5zdWJyc0luZGV4PW51bGx9fXQuQ0ZGUHJpdmF0ZURpY3Q9Yjtjb25zdCB5PXtJU09fQURPQkU6MCxFWFBFUlQ6MSxFWFBFUlRfU1VCU0VUOjJ9O2NsYXNzIHd7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5wcmVkZWZpbmVkPWUsdGhpcy5mb3JtYXQ9dCx0aGlzLmNoYXJzZXQ9cix0aGlzLnJhdz1ufX10LkNGRkNoYXJzZXQ9dztjbGFzcyB2e2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMucHJlZGVmaW5lZD1lLHRoaXMuZm9ybWF0PXQsdGhpcy5lbmNvZGluZz1yLHRoaXMucmF3PW59fWNsYXNzIHh7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lLHRoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fXQuQ0ZGRkRTZWxlY3Q9eDtjbGFzcyBTe2NvbnN0cnVjdG9yKCl7dGhpcy5vZmZzZXRzPU9iamVjdC5jcmVhdGUobnVsbCl9aXNUcmFja2luZyhlKXtyZXR1cm4gZSBpbiB0aGlzLm9mZnNldHN9dHJhY2soZSx0KXtpZihlIGluIHRoaXMub2Zmc2V0cyl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAiLmNvbmNhdChlKSk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQscil7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIk5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAiLmNvbmNhdChlKSk7Y29uc3QgYT1yLmRhdGEsaT10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXtjb25zdCByPTUqZStpLHM9cisxLG89cisyLGM9ciszLGw9cis0O2lmKDI5IT09YVtyXXx8MCE9PWFbc118fDAhPT1hW29dfHwwIT09YVtjXXx8MCE9PWFbbF0pdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIndyaXRpbmcgdG8gYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGVtcHR5Iik7Y29uc3QgaD10W2VdO2Fbcl09MjksYVtzXT1oPj4yNCYyNTUsYVtvXT1oPj4xNiYyNTUsYVtjXT1oPj44JjI1NSxhW2xdPTI1NSZofX19Y2xhc3MgQXtjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaCh0KXt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0scj10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKHIpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO2lmKHQuYWRkKGEpLGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IHIgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO3IuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1uLlV0aWwudHJhbnNmb3JtKGUsci5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKSkpLHIuc2V0QnlOYW1lKCJGb250TWF0cml4IixlKX19Y29uc3QgaT1lLnRvcERpY3QuZ2V0QnlOYW1lKCJYVUlEIik7KG51bGw9PWk/dm9pZCAwOmkubGVuZ3RoKT4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpLGUudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbz1zLnRyYWNrZXJzWzBdLGM9dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKGMpO2NvbnN0IGw9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO2lmKHQuYWRkKGwpLGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClvLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3Qgcj10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtvLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpLHQuYWRkKHIpfWNvbnN0IGg9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO28uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KSx0LmFkZChoKTtjb25zdCB1PXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO2lmKG8uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCksdC5hZGQodSksZS5pc0NJREZvbnQpe28uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3Qgcj10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChyKSxzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCksby5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpLHQuYWRkKHMub3V0cHV0KTtjb25zdCBuPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxuLHQpfXJldHVybiB0aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW29dLHQpLHQuYWRkKFswXSksdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIkVuY29kZUZsb2F0UmVnRXhwIiwvXC4oXGQqPykoPzo5ezUsMjB9fDB7NSwyMH0pXGR7MCwyfSg/OmUoLispfCQpLyl9ZW5jb2RlRmxvYXQoZSl7bGV0IHQ9ZS50b1N0cmluZygpO2NvbnN0IHI9QS5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKHIpe2NvbnN0IG49cGFyc2VGbG9hdCgiMWUiKygoclsyXT8rclsyXTowKStyWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpuKS9uKS50b1N0cmluZygpfWxldCBuLGEsaT0iIjtmb3Iobj0wLGE9dC5sZW5ndGg7bjxhOysrbil7Y29uc3QgZT10W25dO2krPSJlIj09PWU/Ii0iPT09dFsrK25dPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1pKz0xJmkubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iobj0wLGE9aS5sZW5ndGg7bjxhO24rPTIpcy5wdXNoKHBhcnNlSW50KGkuc3Vic3RyaW5nKG4sbisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7cmV0dXJuIHQ9ZT49LTEwNyYmZTw9MTA3P1tlKzEzOV06ZT49MTA4JiZlPD0xMTMxP1syNDcrKChlLT0xMDgpPj44KSwyNTUmZV06ZT49LTExMzEmJmU8PS0xMDg/WzI1MSsoKGU9LWUtMTA4KT4+OCksMjU1JmVdOmU+PS0zMjc2OCYmZTw9MzI3Njc/WzI4LGU+PjgmMjU1LDI1NSZlXTpbMjksZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0sdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgZDtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPU1hdGgubWluKHIubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPXJbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIiksYVt0XT1lfWE9YS5qb2luKCIiKSwiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIiksdC5hZGQoKDAsbi5zdHJpbmdUb0J5dGVzKShhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQscil7Y29uc3Qgbj1bXTtsZXQgYT1uZXcgZDtmb3IoY29uc3QgaSBvZiBlKXtyJiYoaS5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIiksaS5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpLGkucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpLGkucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpLGkucmVtb3ZlQnlOYW1lKCJVSURCYXNlIikpO2NvbnN0IGU9bmV3IFMscz10aGlzLmNvbXBpbGVEaWN0KGksZSk7bi5wdXNoKGUpLGEuYWRkKHMpLGUub2Zmc2V0KHQpfXJldHVybiBhPXRoaXMuY29tcGlsZUluZGV4KGEsbikse3RyYWNrZXJzOm4sb3V0cHV0OmF9fWNvbXBpbGVQcml2YXRlRGljdHMoZSx0LHIpe2ZvcihsZXQgYT0wLGk9ZS5sZW5ndGg7YTxpOysrYSl7Y29uc3QgaT1lW2FdLHM9aS5wcml2YXRlRGljdDtpZighc3x8IWkuaGFzTmFtZSgiUHJpdmF0ZSIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJUaGVyZSBtdXN0IGJlIGEgcHJpdmF0ZSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89bmV3IFMsYz10aGlzLmNvbXBpbGVEaWN0KHMsbyk7bGV0IGw9ci5sZW5ndGg7aWYoby5vZmZzZXQobCksYy5sZW5ndGh8fChsPTApLHRbYV0uc2V0RW50cnlMb2NhdGlvbigiUHJpdmF0ZSIsW2MubGVuZ3RoLGxdLHIpLHIuYWRkKGMpLHMuc3VicnNJbmRleCYmcy5oYXNOYW1lKCJTdWJycyIpKXtjb25zdCBlPXRoaXMuY29tcGlsZUluZGV4KHMuc3VicnNJbmRleCk7by5zZXRFbnRyeUxvY2F0aW9uKCJTdWJycyIsW2MubGVuZ3RoXSxyKSxyLmFkZChlKX19fWNvbXBpbGVEaWN0KGUsdCl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgYSBvZiBlLm9yZGVyKXtpZighKGEgaW4gZS52YWx1ZXMpKWNvbnRpbnVlO2xldCBpPWUudmFsdWVzW2FdLHM9ZS50eXBlc1thXTtpZihBcnJheS5pc0FycmF5KHMpfHwocz1bc10pLEFycmF5LmlzQXJyYXkoaSl8fChpPVtpXSksMCE9PWkubGVuZ3RoKXtmb3IobGV0IG89MCxjPXMubGVuZ3RoO288YzsrK28pe2NvbnN0IGM9c1tvXSxsPWlbb107c3dpdGNoKGMpe2Nhc2UibnVtIjpjYXNlInNpZCI6ci5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTticmVhaztjYXNlIm9mZnNldCI6Y29uc3Qgcz1lLmtleVRvTmFtZU1hcFthXTt0LmlzVHJhY2tpbmcocyl8fHQudHJhY2socyxyLmxlbmd0aCksci5wdXNoKDI5LDAsMCwwLDApO2JyZWFrO2Nhc2UiYXJyYXkiOmNhc2UiZGVsdGEiOnIucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7Zm9yKGxldCBlPTEsdD1pLmxlbmd0aDtlPHQ7KytlKXIucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihpW2VdKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biBkYXRhIHR5cGUgb2YgIi5jb25jYXQoYykpfX1yLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIHJ9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IGQ7Zm9yKGNvbnN0IHIgb2YgZSl0LmFkZCgoMCxuLnN0cmluZ1RvQnl0ZXMpKHIpKTtyZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJTdHJpbmdzKGUpe2NvbnN0IHQ9bmV3IGQ7Zm9yKGxldCByPTA7cjxlLmNvdW50O3IrKyl7Y29uc3Qgbj1lLmdldChyKTswIT09bi5sZW5ndGg/dC5hZGQobik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LHIsYSl7bGV0IGk7Y29uc3Qgcz10LTE7aWYoYSlpPW5ldyBVaW50OEFycmF5KFsyLDAsMCxzPj44JjI1NSwyNTUmc10pO2Vsc2V7aT1uZXcgVWludDhBcnJheSgxKzIqcyksaVswXT0wO2xldCB0PTA7Y29uc3QgYT1lLmNoYXJzZXQubGVuZ3RoO2xldCBvPSExO2ZvcihsZXQgcz0xO3M8aS5sZW5ndGg7cys9Mil7bGV0IGM9MDtpZih0PGEpe2NvbnN0IGE9ZS5jaGFyc2V0W3QrK107Yz1yLmdldFNJRChhKSwtMT09PWMmJihjPTAsb3x8KG89ITAsKDAsbi53YXJuKSgiQ291bGRuJ3QgZmluZCAiLmNvbmNhdChhLCIgaW4gQ0ZGIHN0cmluZ3MiKSkpKX1pW3NdPWM+PjgmMjU1LGlbcysxXT0yNTUmY319cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoaSl9Y29tcGlsZUVuY29kaW5nKGUpe3JldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGUucmF3KX1jb21waWxlRkRTZWxlY3QoZSl7Y29uc3QgdD1lLmZvcm1hdDtsZXQgcixuO3N3aXRjaCh0KXtjYXNlIDA6Zm9yKHI9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCksclswXT10LG49MDtuPGUuZmRTZWxlY3QubGVuZ3RoO24rKylyW24rMV09ZS5mZFNlbGVjdFtuXTticmVhaztjYXNlIDM6Y29uc3QgYT0wO2xldCBpPWUuZmRTZWxlY3RbMF07Y29uc3Qgcz1bdCwwLDAsYT4+OCYyNTUsMjU1JmEsaV07Zm9yKG49MTtuPGUuZmRTZWxlY3QubGVuZ3RoO24rKyl7Y29uc3QgdD1lLmZkU2VsZWN0W25dO3QhPT1pJiYocy5wdXNoKG4+PjgmMjU1LDI1NSZuLHQpLGk9dCl9Y29uc3Qgbz0ocy5sZW5ndGgtMykvMztzWzFdPW8+PjgmMjU1LHNbMl09MjU1Jm8scy5wdXNoKG4+PjgmMjU1LDI1NSZuKSxyPW5ldyBVaW50OEFycmF5KHMpfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W107Y29uc3Qgcj1lLm9iamVjdHMsbj1yLmxlbmd0aDtpZigwPT09bilyZXR1cm5bMCwwXTtjb25zdCBhPVtuPj44JjI1NSwyNTUmbl07bGV0IGkscyxvPTE7Zm9yKGk9MDtpPG47KytpKW8rPXJbaV0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQsYS5wdXNoKHMpO2xldCBjPTE7Zm9yKGk9MDtpPG4rMTtpKyspMT09PXM/YS5wdXNoKDI1NSZjKToyPT09cz9hLnB1c2goYz4+OCYyNTUsMjU1JmMpOjM9PT1zP2EucHVzaChjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpOmEucHVzaChjPj4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmYykscltpXSYmKGMrPXJbaV0ubGVuZ3RoKTtmb3IoaT0wO2k8bjtpKyspdFtpXSYmdFtpXS5vZmZzZXQoYS5sZW5ndGgpLGEucHVzaCguLi5yW2ldKTtyZXR1cm4gYX19dC5DRkZDb21waWxlcj1BfSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LklTT0Fkb2JlQ2hhcnNldD10LkV4cGVydFN1YnNldENoYXJzZXQ9dC5FeHBlcnRDaGFyc2V0PXZvaWQgMCx0LklTT0Fkb2JlQ2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiJdLHQuRXhwZXJ0Q2hhcnNldD1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSx0LkV4cGVydFN1YnNldENoYXJzZXQ9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9dC5XaW5BbnNpRW5jb2Rpbmc9dC5TeW1ib2xTZXRFbmNvZGluZz10LlN0YW5kYXJkRW5jb2Rpbmc9dC5NYWNSb21hbkVuY29kaW5nPXQuRXhwZXJ0RW5jb2Rpbmc9dm9pZCAwLHQuZ2V0RW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcztjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBpO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIGE7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG87Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGM7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHI7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gbnVsbH19O2NvbnN0IHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXTt0LkV4cGVydEVuY29kaW5nPXI7Y29uc3Qgbj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXTt0Lk1hY1JvbWFuRW5jb2Rpbmc9YTtjb25zdCBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXTt0LlN0YW5kYXJkRW5jb2Rpbmc9aTtjb25zdCBzPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXTt0LldpbkFuc2lFbmNvZGluZz1zO2NvbnN0IG89WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXTt0LlN5bWJvbFNldEVuY29kaW5nPW87Y29uc3QgYz1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO3QuWmFwZkRpbmdiYXRzRW5jb2Rpbmc9Y30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlNFQUNfQU5BTFlTSVNfRU5BQkxFRD10Lk1hY1N0YW5kYXJkR2x5cGhPcmRlcmluZz10LkZvbnRGbGFncz12b2lkIDAsdC5ub3JtYWxpemVGb250TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX0sdC5yZWNvdmVyR2x5cGhOYW1lPWMsdC50eXBlMUZvbnRHbHlwaE1hcHBpbmc9ZnVuY3Rpb24oZSx0LHIpe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcyxsLGg7Y29uc3QgdT0hIShlLmZsYWdzJm8uU3ltYm9saWMpO2lmKGUuaXNJbnRlcm5hbEZvbnQpZm9yKGg9dCxsPTA7bDxoLmxlbmd0aDtsKyspcz1yLmluZGV4T2YoaFtsXSksaVtsXT1zPj0wP3M6MDtlbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSlmb3IoaD0oMCxuLmdldEVuY29kaW5nKShlLmJhc2VFbmNvZGluZ05hbWUpLGw9MDtsPGgubGVuZ3RoO2wrKylzPXIuaW5kZXhPZihoW2xdKSxpW2xdPXM+PTA/czowO2Vsc2UgaWYodSlmb3IobCBpbiB0KWlbbF09dFtsXTtlbHNlIGZvcihoPW4uU3RhbmRhcmRFbmNvZGluZyxsPTA7bDxoLmxlbmd0aDtsKyspcz1yLmluZGV4T2YoaFtsXSksaVtsXT1zPj0wP3M6MDtjb25zdCBkPWUuZGlmZmVyZW5jZXM7bGV0IGY7aWYoZClmb3IobCBpbiBkKXtjb25zdCBlPWRbbF07aWYocz1yLmluZGV4T2YoZSksLTE9PT1zKXtmfHwoZj0oMCxhLmdldEdseXBoc1VuaWNvZGUpKCkpO2NvbnN0IHQ9YyhlLGYpO3QhPT1lJiYocz1yLmluZGV4T2YodCkpfWlbbF09cz49MD9zOjB9cmV0dXJuIGl9LHIoMTU3KTt2YXIgbj1yKDE4NyksYT1yKDE4OSksaT1yKDE5MCkscz1yKDE0NCk7dC5TRUFDX0FOQUxZU0lTX0VOQUJMRUQ9ITA7Y29uc3Qgbz17Rml4ZWRQaXRjaDoxLFNlcmlmOjIsU3ltYm9saWM6NCxTY3JpcHQ6OCxOb25zeW1ib2xpYzozMixJdGFsaWM6NjQsQWxsQ2FwOjY1NTM2LFNtYWxsQ2FwOjEzMTA3MixGb3JjZUJvbGQ6MjYyMTQ0fTtmdW5jdGlvbiBjKGUsdCl7aWYodm9pZCAwIT09dFtlXSlyZXR1cm4gZTtjb25zdCByPSgwLGkuZ2V0VW5pY29kZUZvckdseXBoKShlLHQpO2lmKC0xIT09cilmb3IoY29uc3QgZSBpbiB0KWlmKHRbZV09PT1yKXJldHVybiBlO3JldHVybigwLHMuaW5mbykoIlVuYWJsZSB0byByZWNvdmVyIGEgc3RhbmRhcmQgZ2x5cGggbmFtZSBmb3I6ICIrZSksZX10LkZvbnRGbGFncz1vLHQuTWFjU3RhbmRhcmRHbHlwaE9yZGVyaW5nPVsiLm5vdGRlZiIsIi5udWxsIiwibm9ubWFya2luZ3JldHVybiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwibm9uYnJlYWtpbmdzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiTHNsYXNoIiwibHNsYXNoIiwiU2Nhcm9uIiwic2Nhcm9uIiwiWmNhcm9uIiwiemNhcm9uIiwiYnJva2VuYmFyIiwiRXRoIiwiZXRoIiwiWWFjdXRlIiwieWFjdXRlIiwiVGhvcm4iLCJ0aG9ybiIsIm1pbnVzIiwibXVsdGlwbHkiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsIm9uZWhhbGYiLCJvbmVxdWFydGVyIiwidGhyZWVxdWFydGVycyIsImZyYW5jIiwiR2JyZXZlIiwiZ2JyZXZlIiwiSWRvdGFjY2VudCIsIlNjZWRpbGxhIiwic2NlZGlsbGEiLCJDYWN1dGUiLCJjYWN1dGUiLCJDY2Fyb24iLCJjY2Fyb24iLCJkY3JvYXQiXX0sKGUsdCxyKT0+e3Iucih0KSxyLmQodCx7Z2V0RGluZ2JhdHNHbHlwaHNVbmljb2RlOigpPT5pLGdldEdseXBoc1VuaWNvZGU6KCk9PmF9KTt2YXIgbj1yKDE0OSk7Y29uc3QgYT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2UuQT02NSxlLkFFPTE5OCxlLkFFYWN1dGU9NTA4LGUuQUVtYWNyb249NDgyLGUuQUVzbWFsbD02MzQ2MixlLkFhY3V0ZT0xOTMsZS5BYWN1dGVzbWFsbD02MzQ1NyxlLkFicmV2ZT0yNTgsZS5BYnJldmVhY3V0ZT03ODU0LGUuQWJyZXZlY3lyaWxsaWM9MTIzMixlLkFicmV2ZWRvdGJlbG93PTc4NjIsZS5BYnJldmVncmF2ZT03ODU2LGUuQWJyZXZlaG9va2Fib3ZlPTc4NTgsZS5BYnJldmV0aWxkZT03ODYwLGUuQWNhcm9uPTQ2MSxlLkFjaXJjbGU9OTM5OCxlLkFjaXJjdW1mbGV4PTE5NCxlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NCxlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MixlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NixlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDgsZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4LGUuQWNpcmN1bWZsZXh0aWxkZT03ODUwLGUuQWN1dGU9NjMxNzcsZS5BY3V0ZXNtYWxsPTYzNDEyLGUuQWN5cmlsbGljPTEwNDAsZS5BZGJsZ3JhdmU9NTEyLGUuQWRpZXJlc2lzPTE5NixlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQsZS5BZGllcmVzaXNtYWNyb249NDc4LGUuQWRpZXJlc2lzc21hbGw9NjM0NjAsZS5BZG90YmVsb3c9Nzg0MCxlLkFkb3RtYWNyb249NDgwLGUuQWdyYXZlPTE5MixlLkFncmF2ZXNtYWxsPTYzNDU2LGUuQWhvb2thYm92ZT03ODQyLGUuQWllY3lyaWxsaWM9MTIzNixlLkFpbnZlcnRlZGJyZXZlPTUxNCxlLkFscGhhPTkxMyxlLkFscGhhdG9ub3M9OTAyLGUuQW1hY3Jvbj0yNTYsZS5BbW9ub3NwYWNlPTY1MzEzLGUuQW9nb25laz0yNjAsZS5BcmluZz0xOTcsZS5BcmluZ2FjdXRlPTUwNixlLkFyaW5nYmVsb3c9NzY4MCxlLkFyaW5nc21hbGw9NjM0NjEsZS5Bc21hbGw9NjMzMjksZS5BdGlsZGU9MTk1LGUuQXRpbGRlc21hbGw9NjM0NTksZS5BeWJhcm1lbmlhbj0xMzI5LGUuQj02NixlLkJjaXJjbGU9OTM5OSxlLkJkb3RhY2NlbnQ9NzY4MixlLkJkb3RiZWxvdz03Njg0LGUuQmVjeXJpbGxpYz0xMDQxLGUuQmVuYXJtZW5pYW49MTMzMCxlLkJldGE9OTE0LGUuQmhvb2s9Mzg1LGUuQmxpbmViZWxvdz03Njg2LGUuQm1vbm9zcGFjZT02NTMxNCxlLkJyZXZlc21hbGw9NjMyMjAsZS5Cc21hbGw9NjMzMzAsZS5CdG9wYmFyPTM4NixlLkM9NjcsZS5DYWFybWVuaWFuPTEzNDIsZS5DYWN1dGU9MjYyLGUuQ2Fyb249NjMxNzgsZS5DYXJvbnNtYWxsPTYzMjIxLGUuQ2Nhcm9uPTI2OCxlLkNjZWRpbGxhPTE5OSxlLkNjZWRpbGxhYWN1dGU9NzY4OCxlLkNjZWRpbGxhc21hbGw9NjM0NjMsZS5DY2lyY2xlPTk0MDAsZS5DY2lyY3VtZmxleD0yNjQsZS5DZG90PTI2NixlLkNkb3RhY2NlbnQ9MjY2LGUuQ2VkaWxsYXNtYWxsPTYzNDE2LGUuQ2hhYXJtZW5pYW49MTM1MyxlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTIsZS5DaGVjeXJpbGxpYz0xMDYzLGUuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNCxlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDYsZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjgsZS5DaGVoYXJtZW5pYW49MTM0NyxlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3LGUuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4LGUuQ2hpPTkzNSxlLkNob29rPTM5MSxlLkNpcmN1bWZsZXhzbWFsbD02MzIyMixlLkNtb25vc3BhY2U9NjUzMTUsZS5Db2FybWVuaWFuPTEzNjEsZS5Dc21hbGw9NjMzMzEsZS5EPTY4LGUuRFo9NDk3LGUuRFpjYXJvbj00NTIsZS5EYWFybWVuaWFuPTEzMzIsZS5EYWZyaWNhbj0zOTMsZS5EY2Fyb249MjcwLGUuRGNlZGlsbGE9NzY5NixlLkRjaXJjbGU9OTQwMSxlLkRjaXJjdW1mbGV4YmVsb3c9NzY5OCxlLkRjcm9hdD0yNzIsZS5EZG90YWNjZW50PTc2OTAsZS5EZG90YmVsb3c9NzY5MixlLkRlY3lyaWxsaWM9MTA0NCxlLkRlaWNvcHRpYz0xMDA2LGUuRGVsdGE9ODcxMCxlLkRlbHRhZ3JlZWs9OTE2LGUuRGhvb2s9Mzk0LGUuRGllcmVzaXM9NjMxNzksZS5EaWVyZXNpc0FjdXRlPTYzMTgwLGUuRGllcmVzaXNHcmF2ZT02MzE4MSxlLkRpZXJlc2lzc21hbGw9NjM0MDAsZS5EaWdhbW1hZ3JlZWs9OTg4LGUuRGplY3lyaWxsaWM9MTAyNixlLkRsaW5lYmVsb3c9NzY5NCxlLkRtb25vc3BhY2U9NjUzMTYsZS5Eb3RhY2NlbnRzbWFsbD02MzIyMyxlLkRzbGFzaD0yNzIsZS5Ec21hbGw9NjMzMzIsZS5EdG9wYmFyPTM5NSxlLkR6PTQ5OCxlLkR6Y2Fyb249NDUzLGUuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0OCxlLkR6ZWN5cmlsbGljPTEwMjksZS5EemhlY3lyaWxsaWM9MTAzOSxlLkU9NjksZS5FYWN1dGU9MjAxLGUuRWFjdXRlc21hbGw9NjM0NjUsZS5FYnJldmU9Mjc2LGUuRWNhcm9uPTI4MixlLkVjZWRpbGxhYnJldmU9NzcwOCxlLkVjaGFybWVuaWFuPTEzMzMsZS5FY2lyY2xlPTk0MDIsZS5FY2lyY3VtZmxleD0yMDIsZS5FY2lyY3VtZmxleGFjdXRlPTc4NzAsZS5FY2lyY3VtZmxleGJlbG93PTc3MDQsZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4NzgsZS5FY2lyY3VtZmxleGdyYXZlPTc4NzIsZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0LGUuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NixlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NixlLkVjeXJpbGxpYz0xMDI4LGUuRWRibGdyYXZlPTUxNixlLkVkaWVyZXNpcz0yMDMsZS5FZGllcmVzaXNzbWFsbD02MzQ2NyxlLkVkb3Q9Mjc4LGUuRWRvdGFjY2VudD0yNzgsZS5FZG90YmVsb3c9Nzg2NCxlLkVmY3lyaWxsaWM9MTA2MCxlLkVncmF2ZT0yMDAsZS5FZ3JhdmVzbWFsbD02MzQ2NCxlLkVoYXJtZW5pYW49MTMzNSxlLkVob29rYWJvdmU9Nzg2NixlLkVpZ2h0cm9tYW49ODU1MSxlLkVpbnZlcnRlZGJyZXZlPTUxOCxlLkVpb3RpZmllZGN5cmlsbGljPTExMjQsZS5FbGN5cmlsbGljPTEwNTEsZS5FbGV2ZW5yb21hbj04NTU0LGUuRW1hY3Jvbj0yNzQsZS5FbWFjcm9uYWN1dGU9NzcwMixlLkVtYWNyb25ncmF2ZT03NzAwLGUuRW1jeXJpbGxpYz0xMDUyLGUuRW1vbm9zcGFjZT02NTMxNyxlLkVuY3lyaWxsaWM9MTA1MyxlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NixlLkVuZz0zMzAsZS5FbmdoZWN5cmlsbGljPTExODgsZS5Fbmhvb2tjeXJpbGxpYz0xMjIzLGUuRW9nb25laz0yODAsZS5Fb3Blbj00MDAsZS5FcHNpbG9uPTkxNyxlLkVwc2lsb250b25vcz05MDQsZS5FcmN5cmlsbGljPTEwNTYsZS5FcmV2ZXJzZWQ9Mzk4LGUuRXJldmVyc2VkY3lyaWxsaWM9MTA2OSxlLkVzY3lyaWxsaWM9MTA1NyxlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NCxlLkVzaD00MjUsZS5Fc21hbGw9NjMzMzMsZS5FdGE9OTE5LGUuRXRhcm1lbmlhbj0xMzM2LGUuRXRhdG9ub3M9OTA1LGUuRXRoPTIwOCxlLkV0aHNtYWxsPTYzNDcyLGUuRXRpbGRlPTc4NjgsZS5FdGlsZGViZWxvdz03NzA2LGUuRXVybz04MzY0LGUuRXpoPTQzOSxlLkV6aGNhcm9uPTQ5NCxlLkV6aHJldmVyc2VkPTQ0MCxlLkY9NzAsZS5GY2lyY2xlPTk0MDMsZS5GZG90YWNjZW50PTc3MTAsZS5GZWhhcm1lbmlhbj0xMzY2LGUuRmVpY29wdGljPTk5NixlLkZob29rPTQwMSxlLkZpdGFjeXJpbGxpYz0xMTM4LGUuRml2ZXJvbWFuPTg1NDgsZS5GbW9ub3NwYWNlPTY1MzE4LGUuRm91cnJvbWFuPTg1NDcsZS5Gc21hbGw9NjMzMzQsZS5HPTcxLGUuR0JzcXVhcmU9MTMxOTEsZS5HYWN1dGU9NTAwLGUuR2FtbWE9OTE1LGUuR2FtbWFhZnJpY2FuPTQwNCxlLkdhbmdpYWNvcHRpYz0xMDAyLGUuR2JyZXZlPTI4NixlLkdjYXJvbj00ODYsZS5HY2VkaWxsYT0yOTAsZS5HY2lyY2xlPTk0MDQsZS5HY2lyY3VtZmxleD0yODQsZS5HY29tbWFhY2NlbnQ9MjkwLGUuR2RvdD0yODgsZS5HZG90YWNjZW50PTI4OCxlLkdlY3lyaWxsaWM9MTA0MyxlLkdoYWRhcm1lbmlhbj0xMzQ2LGUuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzIsZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwLGUuR2hldXB0dXJuY3lyaWxsaWM9MTE2OCxlLkdob29rPTQwMyxlLkdpbWFybWVuaWFuPTEzMzEsZS5HamVjeXJpbGxpYz0xMDI3LGUuR21hY3Jvbj03NzEyLGUuR21vbm9zcGFjZT02NTMxOSxlLkdyYXZlPTYzMTgyLGUuR3JhdmVzbWFsbD02MzMyOCxlLkdzbWFsbD02MzMzNSxlLkdzbWFsbGhvb2s9NjY3LGUuR3N0cm9rZT00ODQsZS5IPTcyLGUuSDE4NTMzPTk2NzksZS5IMTg1NDM9OTY0MixlLkgxODU1MT05NjQzLGUuSDIyMDczPTk2MzMsZS5IUHNxdWFyZT0xMzI1OSxlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MixlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMixlLkhhcmRzaWduY3lyaWxsaWM9MTA2NixlLkhiYXI9Mjk0LGUuSGJyZXZlYmVsb3c9NzcyMixlLkhjZWRpbGxhPTc3MjAsZS5IY2lyY2xlPTk0MDUsZS5IY2lyY3VtZmxleD0yOTIsZS5IZGllcmVzaXM9NzcxOCxlLkhkb3RhY2NlbnQ9NzcxNCxlLkhkb3RiZWxvdz03NzE2LGUuSG1vbm9zcGFjZT02NTMyMCxlLkhvYXJtZW5pYW49MTM0NCxlLkhvcmljb3B0aWM9MWUzLGUuSHNtYWxsPTYzMzM2LGUuSHVuZ2FydW1sYXV0PTYzMTgzLGUuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQsZS5IenNxdWFyZT0xMzIwMCxlLkk9NzMsZS5JQWN5cmlsbGljPTEwNzEsZS5JSj0zMDYsZS5JVWN5cmlsbGljPTEwNzAsZS5JYWN1dGU9MjA1LGUuSWFjdXRlc21hbGw9NjM0NjksZS5JYnJldmU9MzAwLGUuSWNhcm9uPTQ2MyxlLkljaXJjbGU9OTQwNixlLkljaXJjdW1mbGV4PTIwNixlLkljaXJjdW1mbGV4c21hbGw9NjM0NzAsZS5JY3lyaWxsaWM9MTAzMCxlLklkYmxncmF2ZT01MjAsZS5JZGllcmVzaXM9MjA3LGUuSWRpZXJlc2lzYWN1dGU9NzcyNixlLklkaWVyZXNpc2N5cmlsbGljPTEyNTIsZS5JZGllcmVzaXNzbWFsbD02MzQ3MSxlLklkb3Q9MzA0LGUuSWRvdGFjY2VudD0zMDQsZS5JZG90YmVsb3c9Nzg4MixlLkllYnJldmVjeXJpbGxpYz0xMjM4LGUuSWVjeXJpbGxpYz0xMDQ1LGUuSWZyYWt0dXI9ODQ2NSxlLklncmF2ZT0yMDQsZS5JZ3JhdmVzbWFsbD02MzQ2OCxlLklob29rYWJvdmU9Nzg4MCxlLklpY3lyaWxsaWM9MTA0OCxlLklpbnZlcnRlZGJyZXZlPTUyMixlLklpc2hvcnRjeXJpbGxpYz0xMDQ5LGUuSW1hY3Jvbj0yOTgsZS5JbWFjcm9uY3lyaWxsaWM9MTI1MCxlLkltb25vc3BhY2U9NjUzMjEsZS5Jbmlhcm1lbmlhbj0xMzM5LGUuSW9jeXJpbGxpYz0xMDI1LGUuSW9nb25laz0zMDIsZS5Jb3RhPTkyMSxlLklvdGFhZnJpY2FuPTQwNixlLklvdGFkaWVyZXNpcz05MzgsZS5Jb3RhdG9ub3M9OTA2LGUuSXNtYWxsPTYzMzM3LGUuSXN0cm9rZT00MDcsZS5JdGlsZGU9Mjk2LGUuSXRpbGRlYmVsb3c9NzcyNCxlLkl6aGl0c2FjeXJpbGxpYz0xMTQwLGUuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MixlLko9NzQsZS5KYWFybWVuaWFuPTEzNDUsZS5KY2lyY2xlPTk0MDcsZS5KY2lyY3VtZmxleD0zMDgsZS5KZWN5cmlsbGljPTEwMzIsZS5KaGVoYXJtZW5pYW49MTM1NSxlLkptb25vc3BhY2U9NjUzMjIsZS5Kc21hbGw9NjMzMzgsZS5LPTc1LGUuS0JzcXVhcmU9MTMxODksZS5LS3NxdWFyZT0xMzI2MSxlLkthYmFzaGtpcmN5cmlsbGljPTExODQsZS5LYWN1dGU9NzcyOCxlLkthY3lyaWxsaWM9MTA1MCxlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OCxlLkthaG9va2N5cmlsbGljPTEyMTksZS5LYXBwYT05MjIsZS5LYXN0cm9rZWN5cmlsbGljPTExODIsZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MCxlLktjYXJvbj00ODgsZS5LY2VkaWxsYT0zMTAsZS5LY2lyY2xlPTk0MDgsZS5LY29tbWFhY2NlbnQ9MzEwLGUuS2RvdGJlbG93PTc3MzAsZS5LZWhhcm1lbmlhbj0xMzY0LGUuS2VuYXJtZW5pYW49MTM0MyxlLktoYWN5cmlsbGljPTEwNjEsZS5LaGVpY29wdGljPTk5OCxlLktob29rPTQwOCxlLktqZWN5cmlsbGljPTEwMzYsZS5LbGluZWJlbG93PTc3MzIsZS5LbW9ub3NwYWNlPTY1MzIzLGUuS29wcGFjeXJpbGxpYz0xMTUyLGUuS29wcGFncmVlaz05OTAsZS5Lc2ljeXJpbGxpYz0xMTM0LGUuS3NtYWxsPTYzMzM5LGUuTD03NixlLkxKPTQ1NSxlLkxMPTYzMTY3LGUuTGFjdXRlPTMxMyxlLkxhbWJkYT05MjMsZS5MY2Fyb249MzE3LGUuTGNlZGlsbGE9MzE1LGUuTGNpcmNsZT05NDA5LGUuTGNpcmN1bWZsZXhiZWxvdz03NzQwLGUuTGNvbW1hYWNjZW50PTMxNSxlLkxkb3Q9MzE5LGUuTGRvdGFjY2VudD0zMTksZS5MZG90YmVsb3c9NzczNCxlLkxkb3RiZWxvd21hY3Jvbj03NzM2LGUuTGl3bmFybWVuaWFuPTEzNDAsZS5Maj00NTYsZS5MamVjeXJpbGxpYz0xMDMzLGUuTGxpbmViZWxvdz03NzM4LGUuTG1vbm9zcGFjZT02NTMyNCxlLkxzbGFzaD0zMjEsZS5Mc2xhc2hzbWFsbD02MzIyNSxlLkxzbWFsbD02MzM0MCxlLk09NzcsZS5NQnNxdWFyZT0xMzE5MCxlLk1hY3Jvbj02MzE4NCxlLk1hY3JvbnNtYWxsPTYzNDA3LGUuTWFjdXRlPTc3NDIsZS5NY2lyY2xlPTk0MTAsZS5NZG90YWNjZW50PTc3NDQsZS5NZG90YmVsb3c9Nzc0NixlLk1lbmFybWVuaWFuPTEzNDgsZS5NbW9ub3NwYWNlPTY1MzI1LGUuTXNtYWxsPTYzMzQxLGUuTXR1cm5lZD00MTIsZS5NdT05MjQsZS5OPTc4LGUuTko9NDU4LGUuTmFjdXRlPTMyMyxlLk5jYXJvbj0zMjcsZS5OY2VkaWxsYT0zMjUsZS5OY2lyY2xlPTk0MTEsZS5OY2lyY3VtZmxleGJlbG93PTc3NTQsZS5OY29tbWFhY2NlbnQ9MzI1LGUuTmRvdGFjY2VudD03NzQ4LGUuTmRvdGJlbG93PTc3NTAsZS5OaG9va2xlZnQ9NDEzLGUuTmluZXJvbWFuPTg1NTIsZS5Oaj00NTksZS5OamVjeXJpbGxpYz0xMDM0LGUuTmxpbmViZWxvdz03NzUyLGUuTm1vbm9zcGFjZT02NTMyNixlLk5vd2FybWVuaWFuPTEzNTAsZS5Oc21hbGw9NjMzNDIsZS5OdGlsZGU9MjA5LGUuTnRpbGRlc21hbGw9NjM0NzMsZS5OdT05MjUsZS5PPTc5LGUuT0U9MzM4LGUuT0VzbWFsbD02MzIyNixlLk9hY3V0ZT0yMTEsZS5PYWN1dGVzbWFsbD02MzQ3NSxlLk9iYXJyZWRjeXJpbGxpYz0xMjU2LGUuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1OCxlLk9icmV2ZT0zMzQsZS5PY2Fyb249NDY1LGUuT2NlbnRlcmVkdGlsZGU9NDE1LGUuT2NpcmNsZT05NDEyLGUuT2NpcmN1bWZsZXg9MjEyLGUuT2NpcmN1bWZsZXhhY3V0ZT03ODg4LGUuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2LGUuT2NpcmN1bWZsZXhncmF2ZT03ODkwLGUuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MixlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzYsZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQsZS5PY3lyaWxsaWM9MTA1NCxlLk9kYmxhY3V0ZT0zMzYsZS5PZGJsZ3JhdmU9NTI0LGUuT2RpZXJlc2lzPTIxNCxlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQsZS5PZGllcmVzaXNzbWFsbD02MzQ3OCxlLk9kb3RiZWxvdz03ODg0LGUuT2dvbmVrc21hbGw9NjMyMjcsZS5PZ3JhdmU9MjEwLGUuT2dyYXZlc21hbGw9NjM0NzQsZS5PaGFybWVuaWFuPTEzNjUsZS5PaG09ODQ4NixlLk9ob29rYWJvdmU9Nzg4NixlLk9ob3JuPTQxNixlLk9ob3JuYWN1dGU9Nzg5OCxlLk9ob3JuZG90YmVsb3c9NzkwNixlLk9ob3JuZ3JhdmU9NzkwMCxlLk9ob3JuaG9va2Fib3ZlPTc5MDIsZS5PaG9ybnRpbGRlPTc5MDQsZS5PaHVuZ2FydW1sYXV0PTMzNixlLk9pPTQxOCxlLk9pbnZlcnRlZGJyZXZlPTUyNixlLk9tYWNyb249MzMyLGUuT21hY3JvbmFjdXRlPTc3NjIsZS5PbWFjcm9uZ3JhdmU9Nzc2MCxlLk9tZWdhPTg0ODYsZS5PbWVnYWN5cmlsbGljPTExMjAsZS5PbWVnYWdyZWVrPTkzNyxlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2LGUuT21lZ2F0aXRsb2N5cmlsbGljPTExNDgsZS5PbWVnYXRvbm9zPTkxMSxlLk9taWNyb249OTI3LGUuT21pY3JvbnRvbm9zPTkwOCxlLk9tb25vc3BhY2U9NjUzMjcsZS5PbmVyb21hbj04NTQ0LGUuT29nb25laz00OTAsZS5Pb2dvbmVrbWFjcm9uPTQ5MixlLk9vcGVuPTM5MCxlLk9zbGFzaD0yMTYsZS5Pc2xhc2hhY3V0ZT01MTAsZS5Pc2xhc2hzbWFsbD02MzQ4MCxlLk9zbWFsbD02MzM0MyxlLk9zdHJva2VhY3V0ZT01MTAsZS5PdGN5cmlsbGljPTExNTAsZS5PdGlsZGU9MjEzLGUuT3RpbGRlYWN1dGU9Nzc1NixlLk90aWxkZWRpZXJlc2lzPTc3NTgsZS5PdGlsZGVzbWFsbD02MzQ3NyxlLlA9ODAsZS5QYWN1dGU9Nzc2NCxlLlBjaXJjbGU9OTQxMyxlLlBkb3RhY2NlbnQ9Nzc2NixlLlBlY3lyaWxsaWM9MTA1NSxlLlBlaGFybWVuaWFuPTEzNTQsZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwLGUuUGhpPTkzNCxlLlBob29rPTQyMCxlLlBpPTkyOCxlLlBpd3Jhcm1lbmlhbj0xMzYzLGUuUG1vbm9zcGFjZT02NTMyOCxlLlBzaT05MzYsZS5Qc2ljeXJpbGxpYz0xMTM2LGUuUHNtYWxsPTYzMzQ0LGUuUT04MSxlLlFjaXJjbGU9OTQxNCxlLlFtb25vc3BhY2U9NjUzMjksZS5Rc21hbGw9NjMzNDUsZS5SPTgyLGUuUmFhcm1lbmlhbj0xMzU2LGUuUmFjdXRlPTM0MCxlLlJjYXJvbj0zNDQsZS5SY2VkaWxsYT0zNDIsZS5SY2lyY2xlPTk0MTUsZS5SY29tbWFhY2NlbnQ9MzQyLGUuUmRibGdyYXZlPTUyOCxlLlJkb3RhY2NlbnQ9Nzc2OCxlLlJkb3RiZWxvdz03NzcwLGUuUmRvdGJlbG93bWFjcm9uPTc3NzIsZS5SZWhhcm1lbmlhbj0xMzYwLGUuUmZyYWt0dXI9ODQ3NixlLlJobz05MjksZS5SaW5nc21hbGw9NjMyMjgsZS5SaW52ZXJ0ZWRicmV2ZT01MzAsZS5SbGluZWJlbG93PTc3NzQsZS5SbW9ub3NwYWNlPTY1MzMwLGUuUnNtYWxsPTYzMzQ2LGUuUnNtYWxsaW52ZXJ0ZWQ9NjQxLGUuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQsZS5TPTgzLGUuU0YwMTAwMDA9OTQ4NCxlLlNGMDIwMDAwPTk0OTIsZS5TRjAzMDAwMD05NDg4LGUuU0YwNDAwMDA9OTQ5NixlLlNGMDUwMDAwPTk1MzIsZS5TRjA2MDAwMD05NTE2LGUuU0YwNzAwMDA9OTUyNCxlLlNGMDgwMDAwPTk1MDAsZS5TRjA5MDAwMD05NTA4LGUuU0YxMDAwMDA9OTQ3MixlLlNGMTEwMDAwPTk0NzQsZS5TRjE5MDAwMD05NTY5LGUuU0YyMDAwMDA9OTU3MCxlLlNGMjEwMDAwPTk1NTgsZS5TRjIyMDAwMD05NTU3LGUuU0YyMzAwMDA9OTU3MSxlLlNGMjQwMDAwPTk1NTMsZS5TRjI1MDAwMD05NTU5LGUuU0YyNjAwMDA9OTU2NSxlLlNGMjcwMDAwPTk1NjQsZS5TRjI4MDAwMD05NTYzLGUuU0YzNjAwMDA9OTU2NixlLlNGMzcwMDAwPTk1NjcsZS5TRjM4MDAwMD05NTYyLGUuU0YzOTAwMDA9OTU1NixlLlNGNDAwMDAwPTk1NzcsZS5TRjQxMDAwMD05NTc0LGUuU0Y0MjAwMDA9OTU2OCxlLlNGNDMwMDAwPTk1NTIsZS5TRjQ0MDAwMD05NTgwLGUuU0Y0NTAwMDA9OTU3NSxlLlNGNDYwMDAwPTk1NzYsZS5TRjQ3MDAwMD05NTcyLGUuU0Y0ODAwMDA9OTU3MyxlLlNGNDkwMDAwPTk1NjEsZS5TRjUwMDAwMD05NTYwLGUuU0Y1MTAwMDA9OTU1NCxlLlNGNTIwMDAwPTk1NTUsZS5TRjUzMDAwMD05NTc5LGUuU0Y1NDAwMDA9OTU3OCxlLlNhY3V0ZT0zNDYsZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MCxlLlNhbXBpZ3JlZWs9OTkyLGUuU2Nhcm9uPTM1MixlLlNjYXJvbmRvdGFjY2VudD03NzgyLGUuU2Nhcm9uc21hbGw9NjMyMjksZS5TY2VkaWxsYT0zNTAsZS5TY2h3YT0zOTksZS5TY2h3YWN5cmlsbGljPTEyNDAsZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MixlLlNjaXJjbGU9OTQxNixlLlNjaXJjdW1mbGV4PTM0OCxlLlNjb21tYWFjY2VudD01MzYsZS5TZG90YWNjZW50PTc3NzYsZS5TZG90YmVsb3c9Nzc3OCxlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0LGUuU2VoYXJtZW5pYW49MTM1NyxlLlNldmVucm9tYW49ODU1MCxlLlNoYWFybWVuaWFuPTEzNTEsZS5TaGFjeXJpbGxpYz0xMDY0LGUuU2hjaGFjeXJpbGxpYz0xMDY1LGUuU2hlaWNvcHRpYz05OTQsZS5TaGhhY3lyaWxsaWM9MTIxMCxlLlNoaW1hY29wdGljPTEwMDQsZS5TaWdtYT05MzEsZS5TaXhyb21hbj04NTQ5LGUuU21vbm9zcGFjZT02NTMzMSxlLlNvZnRzaWduY3lyaWxsaWM9MTA2OCxlLlNzbWFsbD02MzM0NyxlLlN0aWdtYWdyZWVrPTk4NixlLlQ9ODQsZS5UYXU9OTMyLGUuVGJhcj0zNTgsZS5UY2Fyb249MzU2LGUuVGNlZGlsbGE9MzU0LGUuVGNpcmNsZT05NDE3LGUuVGNpcmN1bWZsZXhiZWxvdz03NzkyLGUuVGNvbW1hYWNjZW50PTM1NCxlLlRkb3RhY2NlbnQ9Nzc4NixlLlRkb3RiZWxvdz03Nzg4LGUuVGVjeXJpbGxpYz0xMDU4LGUuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2LGUuVGVucm9tYW49ODU1MyxlLlRldHNlY3lyaWxsaWM9MTIwNCxlLlRoZXRhPTkyMCxlLlRob29rPTQyOCxlLlRob3JuPTIyMixlLlRob3Juc21hbGw9NjM0ODYsZS5UaHJlZXJvbWFuPTg1NDYsZS5UaWxkZXNtYWxsPTYzMjMwLGUuVGl3bmFybWVuaWFuPTEzNTksZS5UbGluZWJlbG93PTc3OTAsZS5UbW9ub3NwYWNlPTY1MzMyLGUuVG9hcm1lbmlhbj0xMzM3LGUuVG9uZWZpdmU9NDQ0LGUuVG9uZXNpeD0zODgsZS5Ub25ldHdvPTQyMyxlLlRyZXRyb2ZsZXhob29rPTQzMCxlLlRzZWN5cmlsbGljPTEwNjIsZS5Uc2hlY3lyaWxsaWM9MTAzNSxlLlRzbWFsbD02MzM0OCxlLlR3ZWx2ZXJvbWFuPTg1NTUsZS5Ud29yb21hbj04NTQ1LGUuVT04NSxlLlVhY3V0ZT0yMTgsZS5VYWN1dGVzbWFsbD02MzQ4MixlLlVicmV2ZT0zNjQsZS5VY2Fyb249NDY3LGUuVWNpcmNsZT05NDE4LGUuVWNpcmN1bWZsZXg9MjE5LGUuVWNpcmN1bWZsZXhiZWxvdz03Nzk4LGUuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MyxlLlVjeXJpbGxpYz0xMDU5LGUuVWRibGFjdXRlPTM2OCxlLlVkYmxncmF2ZT01MzIsZS5VZGllcmVzaXM9MjIwLGUuVWRpZXJlc2lzYWN1dGU9NDcxLGUuVWRpZXJlc2lzYmVsb3c9Nzc5NCxlLlVkaWVyZXNpc2Nhcm9uPTQ3MyxlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQsZS5VZGllcmVzaXNncmF2ZT00NzUsZS5VZGllcmVzaXNtYWNyb249NDY5LGUuVWRpZXJlc2lzc21hbGw9NjM0ODQsZS5VZG90YmVsb3c9NzkwOCxlLlVncmF2ZT0yMTcsZS5VZ3JhdmVzbWFsbD02MzQ4MSxlLlVob29rYWJvdmU9NzkxMCxlLlVob3JuPTQzMSxlLlVob3JuYWN1dGU9NzkxMixlLlVob3JuZG90YmVsb3c9NzkyMCxlLlVob3JuZ3JhdmU9NzkxNCxlLlVob3JuaG9va2Fib3ZlPTc5MTYsZS5VaG9ybnRpbGRlPTc5MTgsZS5VaHVuZ2FydW1sYXV0PTM2OCxlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2LGUuVWludmVydGVkYnJldmU9NTM0LGUuVWtjeXJpbGxpYz0xMTQ0LGUuVW1hY3Jvbj0zNjIsZS5VbWFjcm9uY3lyaWxsaWM9MTI2MixlLlVtYWNyb25kaWVyZXNpcz03ODAyLGUuVW1vbm9zcGFjZT02NTMzMyxlLlVvZ29uZWs9MzcwLGUuVXBzaWxvbj05MzMsZS5VcHNpbG9uMT05NzgsZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5LGUuVXBzaWxvbmFmcmljYW49NDMzLGUuVXBzaWxvbmRpZXJlc2lzPTkzOSxlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODAsZS5VcHNpbG9uaG9va3N5bWJvbD05NzgsZS5VcHNpbG9udG9ub3M9OTEwLGUuVXJpbmc9MzY2LGUuVXNob3J0Y3lyaWxsaWM9MTAzOCxlLlVzbWFsbD02MzM0OSxlLlVzdHJhaWdodGN5cmlsbGljPTExOTgsZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwLGUuVXRpbGRlPTM2MCxlLlV0aWxkZWFjdXRlPTc4MDAsZS5VdGlsZGViZWxvdz03Nzk2LGUuVj04NixlLlZjaXJjbGU9OTQxOSxlLlZkb3RiZWxvdz03ODA2LGUuVmVjeXJpbGxpYz0xMDQyLGUuVmV3YXJtZW5pYW49MTM1OCxlLlZob29rPTQzNCxlLlZtb25vc3BhY2U9NjUzMzQsZS5Wb2FybWVuaWFuPTEzNTIsZS5Wc21hbGw9NjMzNTAsZS5WdGlsZGU9NzgwNCxlLlc9ODcsZS5XYWN1dGU9NzgxMCxlLldjaXJjbGU9OTQyMCxlLldjaXJjdW1mbGV4PTM3MixlLldkaWVyZXNpcz03ODEyLGUuV2RvdGFjY2VudD03ODE0LGUuV2RvdGJlbG93PTc4MTYsZS5XZ3JhdmU9NzgwOCxlLldtb25vc3BhY2U9NjUzMzUsZS5Xc21hbGw9NjMzNTEsZS5YPTg4LGUuWGNpcmNsZT05NDIxLGUuWGRpZXJlc2lzPTc4MjAsZS5YZG90YWNjZW50PTc4MTgsZS5YZWhhcm1lbmlhbj0xMzQxLGUuWGk9OTI2LGUuWG1vbm9zcGFjZT02NTMzNixlLlhzbWFsbD02MzM1MixlLlk9ODksZS5ZYWN1dGU9MjIxLGUuWWFjdXRlc21hbGw9NjM0ODUsZS5ZYXRjeXJpbGxpYz0xMTIyLGUuWWNpcmNsZT05NDIyLGUuWWNpcmN1bWZsZXg9Mzc0LGUuWWRpZXJlc2lzPTM3NixlLllkaWVyZXNpc3NtYWxsPTYzNDg3LGUuWWRvdGFjY2VudD03ODIyLGUuWWRvdGJlbG93PTc5MjQsZS5ZZXJpY3lyaWxsaWM9MTA2NyxlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzIsZS5ZZ3JhdmU9NzkyMixlLllob29rPTQzNSxlLllob29rYWJvdmU9NzkyNixlLllpYXJtZW5pYW49MTM0OSxlLllpY3lyaWxsaWM9MTAzMSxlLllpd25hcm1lbmlhbj0xMzYyLGUuWW1vbm9zcGFjZT02NTMzNyxlLllzbWFsbD02MzM1MyxlLll0aWxkZT03OTI4LGUuWXVzYmlnY3lyaWxsaWM9MTEzMCxlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMixlLll1c2xpdHRsZWN5cmlsbGljPTExMjYsZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjgsZS5aPTkwLGUuWmFhcm1lbmlhbj0xMzM0LGUuWmFjdXRlPTM3NyxlLlpjYXJvbj0zODEsZS5aY2Fyb25zbWFsbD02MzIzMSxlLlpjaXJjbGU9OTQyMyxlLlpjaXJjdW1mbGV4PTc4MjQsZS5aZG90PTM3OSxlLlpkb3RhY2NlbnQ9Mzc5LGUuWmRvdGJlbG93PTc4MjYsZS5aZWN5cmlsbGljPTEwNDcsZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzYsZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NixlLlpldGE9OTE4LGUuWmhlYXJtZW5pYW49MTMzOCxlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNyxlLlpoZWN5cmlsbGljPTEwNDYsZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0LGUuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0LGUuWmxpbmViZWxvdz03ODI4LGUuWm1vbm9zcGFjZT02NTMzOCxlLlpzbWFsbD02MzM1NCxlLlpzdHJva2U9NDM3LGUuYT05NyxlLmFhYmVuZ2FsaT0yNDM4LGUuYWFjdXRlPTIyNSxlLmFhZGV2YT0yMzEwLGUuYWFndWphcmF0aT0yNjk0LGUuYWFndXJtdWtoaT0yNTY2LGUuYWFtYXRyYWd1cm11a2hpPTI2MjIsZS5hYXJ1c3F1YXJlPTEzMDU5LGUuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQsZS5hYXZvd2Vsc2lnbmRldmE9MjM2NixlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MCxlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1LGUuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNixlLmFiZW5nYWxpPTI0MzcsZS5hYm9wb21vZm89MTI1NzAsZS5hYnJldmU9MjU5LGUuYWJyZXZlYWN1dGU9Nzg1NSxlLmFicmV2ZWN5cmlsbGljPTEyMzMsZS5hYnJldmVkb3RiZWxvdz03ODYzLGUuYWJyZXZlZ3JhdmU9Nzg1NyxlLmFicmV2ZWhvb2thYm92ZT03ODU5LGUuYWJyZXZldGlsZGU9Nzg2MSxlLmFjYXJvbj00NjIsZS5hY2lyY2xlPTk0MjQsZS5hY2lyY3VtZmxleD0yMjYsZS5hY2lyY3VtZmxleGFjdXRlPTc4NDUsZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTMsZS5hY2lyY3VtZmxleGdyYXZlPTc4NDcsZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5LGUuYWNpcmN1bWZsZXh0aWxkZT03ODUxLGUuYWN1dGU9MTgwLGUuYWN1dGViZWxvd2NtYj03OTEsZS5hY3V0ZWNtYj03NjksZS5hY3V0ZWNvbWI9NzY5LGUuYWN1dGVkZXZhPTIzODgsZS5hY3V0ZWxvd21vZD03MTksZS5hY3V0ZXRvbmVjbWI9ODMzLGUuYWN5cmlsbGljPTEwNzIsZS5hZGJsZ3JhdmU9NTEzLGUuYWRkYWtndXJtdWtoaT0yNjczLGUuYWRldmE9MjMwOSxlLmFkaWVyZXNpcz0yMjgsZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1LGUuYWRpZXJlc2lzbWFjcm9uPTQ3OSxlLmFkb3RiZWxvdz03ODQxLGUuYWRvdG1hY3Jvbj00ODEsZS5hZT0yMzAsZS5hZWFjdXRlPTUwOSxlLmFla29yZWFuPTEyNjI0LGUuYWVtYWNyb249NDgzLGUuYWZpaTAwMjA4PTgyMTMsZS5hZmlpMDg5NDE9ODM1NixlLmFmaWkxMDAxNz0xMDQwLGUuYWZpaTEwMDE4PTEwNDEsZS5hZmlpMTAwMTk9MTA0MixlLmFmaWkxMDAyMD0xMDQzLGUuYWZpaTEwMDIxPTEwNDQsZS5hZmlpMTAwMjI9MTA0NSxlLmFmaWkxMDAyMz0xMDI1LGUuYWZpaTEwMDI0PTEwNDYsZS5hZmlpMTAwMjU9MTA0NyxlLmFmaWkxMDAyNj0xMDQ4LGUuYWZpaTEwMDI3PTEwNDksZS5hZmlpMTAwMjg9MTA1MCxlLmFmaWkxMDAyOT0xMDUxLGUuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MyxlLmFmaWkxMDAzMj0xMDU0LGUuYWZpaTEwMDMzPTEwNTUsZS5hZmlpMTAwMzQ9MTA1NixlLmFmaWkxMDAzNT0xMDU3LGUuYWZpaTEwMDM2PTEwNTgsZS5hZmlpMTAwMzc9MTA1OSxlLmFmaWkxMDAzOD0xMDYwLGUuYWZpaTEwMDM5PTEwNjEsZS5hZmlpMTAwNDA9MTA2MixlLmFmaWkxMDA0MT0xMDYzLGUuYWZpaTEwMDQyPTEwNjQsZS5hZmlpMTAwNDM9MTA2NSxlLmFmaWkxMDA0ND0xMDY2LGUuYWZpaTEwMDQ1PTEwNjcsZS5hZmlpMTAwNDY9MTA2OCxlLmFmaWkxMDA0Nz0xMDY5LGUuYWZpaTEwMDQ4PTEwNzAsZS5hZmlpMTAwNDk9MTA3MSxlLmFmaWkxMDA1MD0xMTY4LGUuYWZpaTEwMDUxPTEwMjYsZS5hZmlpMTAwNTI9MTAyNyxlLmFmaWkxMDA1Mz0xMDI4LGUuYWZpaTEwMDU0PTEwMjksZS5hZmlpMTAwNTU9MTAzMCxlLmFmaWkxMDA1Nj0xMDMxLGUuYWZpaTEwMDU3PTEwMzIsZS5hZmlpMTAwNTg9MTAzMyxlLmFmaWkxMDA1OT0xMDM0LGUuYWZpaTEwMDYwPTEwMzUsZS5hZmlpMTAwNjE9MTAzNixlLmFmaWkxMDA2Mj0xMDM4LGUuYWZpaTEwMDYzPTYzMTcyLGUuYWZpaTEwMDY0PTYzMTczLGUuYWZpaTEwMDY1PTEwNzIsZS5hZmlpMTAwNjY9MTA3MyxlLmFmaWkxMDA2Nz0xMDc0LGUuYWZpaTEwMDY4PTEwNzUsZS5hZmlpMTAwNjk9MTA3NixlLmFmaWkxMDA3MD0xMDc3LGUuYWZpaTEwMDcxPTExMDUsZS5hZmlpMTAwNzI9MTA3OCxlLmFmaWkxMDA3Mz0xMDc5LGUuYWZpaTEwMDc0PTEwODAsZS5hZmlpMTAwNzU9MTA4MSxlLmFmaWkxMDA3Nj0xMDgyLGUuYWZpaTEwMDc3PTEwODMsZS5hZmlpMTAwNzg9MTA4NCxlLmFmaWkxMDA3OT0xMDg1LGUuYWZpaTEwMDgwPTEwODYsZS5hZmlpMTAwODE9MTA4NyxlLmFmaWkxMDA4Mj0xMDg4LGUuYWZpaTEwMDgzPTEwODksZS5hZmlpMTAwODQ9MTA5MCxlLmFmaWkxMDA4NT0xMDkxLGUuYWZpaTEwMDg2PTEwOTIsZS5hZmlpMTAwODc9MTA5MyxlLmFmaWkxMDA4OD0xMDk0LGUuYWZpaTEwMDg5PTEwOTUsZS5hZmlpMTAwOTA9MTA5NixlLmFmaWkxMDA5MT0xMDk3LGUuYWZpaTEwMDkyPTEwOTgsZS5hZmlpMTAwOTM9MTA5OSxlLmFmaWkxMDA5ND0xMTAwLGUuYWZpaTEwMDk1PTExMDEsZS5hZmlpMTAwOTY9MTEwMixlLmFmaWkxMDA5Nz0xMTAzLGUuYWZpaTEwMDk4PTExNjksZS5hZmlpMTAwOTk9MTEwNixlLmFmaWkxMDEwMD0xMTA3LGUuYWZpaTEwMTAxPTExMDgsZS5hZmlpMTAxMDI9MTEwOSxlLmFmaWkxMDEwMz0xMTEwLGUuYWZpaTEwMTA0PTExMTEsZS5hZmlpMTAxMDU9MTExMixlLmFmaWkxMDEwNj0xMTEzLGUuYWZpaTEwMTA3PTExMTQsZS5hZmlpMTAxMDg9MTExNSxlLmFmaWkxMDEwOT0xMTE2LGUuYWZpaTEwMTEwPTExMTgsZS5hZmlpMTAxNDU9MTAzOSxlLmFmaWkxMDE0Nj0xMTIyLGUuYWZpaTEwMTQ3PTExMzgsZS5hZmlpMTAxNDg9MTE0MCxlLmFmaWkxMDE5Mj02MzE3NCxlLmFmaWkxMDE5Mz0xMTE5LGUuYWZpaTEwMTk0PTExMjMsZS5hZmlpMTAxOTU9MTEzOSxlLmFmaWkxMDE5Nj0xMTQxLGUuYWZpaTEwODMxPTYzMTc1LGUuYWZpaTEwODMyPTYzMTc2LGUuYWZpaTEwODQ2PTEyNDEsZS5hZmlpMjk5PTgyMDYsZS5hZmlpMzAwPTgyMDcsZS5hZmlpMzAxPTgyMDUsZS5hZmlpNTczODE9MTY0MixlLmFmaWk1NzM4OD0xNTQ4LGUuYWZpaTU3MzkyPTE2MzIsZS5hZmlpNTczOTM9MTYzMyxlLmFmaWk1NzM5ND0xNjM0LGUuYWZpaTU3Mzk1PTE2MzUsZS5hZmlpNTczOTY9MTYzNixlLmFmaWk1NzM5Nz0xNjM3LGUuYWZpaTU3Mzk4PTE2MzgsZS5hZmlpNTczOTk9MTYzOSxlLmFmaWk1NzQwMD0xNjQwLGUuYWZpaTU3NDAxPTE2NDEsZS5hZmlpNTc0MDM9MTU2MyxlLmFmaWk1NzQwNz0xNTY3LGUuYWZpaTU3NDA5PTE1NjksZS5hZmlpNTc0MTA9MTU3MCxlLmFmaWk1NzQxMT0xNTcxLGUuYWZpaTU3NDEyPTE1NzIsZS5hZmlpNTc0MTM9MTU3MyxlLmFmaWk1NzQxND0xNTc0LGUuYWZpaTU3NDE1PTE1NzUsZS5hZmlpNTc0MTY9MTU3NixlLmFmaWk1NzQxNz0xNTc3LGUuYWZpaTU3NDE4PTE1NzgsZS5hZmlpNTc0MTk9MTU3OSxlLmFmaWk1NzQyMD0xNTgwLGUuYWZpaTU3NDIxPTE1ODEsZS5hZmlpNTc0MjI9MTU4MixlLmFmaWk1NzQyMz0xNTgzLGUuYWZpaTU3NDI0PTE1ODQsZS5hZmlpNTc0MjU9MTU4NSxlLmFmaWk1NzQyNj0xNTg2LGUuYWZpaTU3NDI3PTE1ODcsZS5hZmlpNTc0Mjg9MTU4OCxlLmFmaWk1NzQyOT0xNTg5LGUuYWZpaTU3NDMwPTE1OTAsZS5hZmlpNTc0MzE9MTU5MSxlLmFmaWk1NzQzMj0xNTkyLGUuYWZpaTU3NDMzPTE1OTMsZS5hZmlpNTc0MzQ9MTU5NCxlLmFmaWk1NzQ0MD0xNjAwLGUuYWZpaTU3NDQxPTE2MDEsZS5hZmlpNTc0NDI9MTYwMixlLmFmaWk1NzQ0Mz0xNjAzLGUuYWZpaTU3NDQ0PTE2MDQsZS5hZmlpNTc0NDU9MTYwNSxlLmFmaWk1NzQ0Nj0xNjA2LGUuYWZpaTU3NDQ4PTE2MDgsZS5hZmlpNTc0NDk9MTYwOSxlLmFmaWk1NzQ1MD0xNjEwLGUuYWZpaTU3NDUxPTE2MTEsZS5hZmlpNTc0NTI9MTYxMixlLmFmaWk1NzQ1Mz0xNjEzLGUuYWZpaTU3NDU0PTE2MTQsZS5hZmlpNTc0NTU9MTYxNSxlLmFmaWk1NzQ1Nj0xNjE2LGUuYWZpaTU3NDU3PTE2MTcsZS5hZmlpNTc0NTg9MTYxOCxlLmFmaWk1NzQ3MD0xNjA3LGUuYWZpaTU3NTA1PTE3MDAsZS5hZmlpNTc1MDY9MTY2MixlLmFmaWk1NzUwNz0xNjcwLGUuYWZpaTU3NTA4PTE2ODgsZS5hZmlpNTc1MDk9MTcxMSxlLmFmaWk1NzUxMT0xNjU3LGUuYWZpaTU3NTEyPTE2NzIsZS5hZmlpNTc1MTM9MTY4MSxlLmFmaWk1NzUxND0xNzIyLGUuYWZpaTU3NTE5PTE3NDYsZS5hZmlpNTc1MzQ9MTc0OSxlLmFmaWk1NzYzNj04MzYyLGUuYWZpaTU3NjQ1PTE0NzAsZS5hZmlpNTc2NTg9MTQ3NSxlLmFmaWk1NzY2ND0xNDg4LGUuYWZpaTU3NjY1PTE0ODksZS5hZmlpNTc2NjY9MTQ5MCxlLmFmaWk1NzY2Nz0xNDkxLGUuYWZpaTU3NjY4PTE0OTIsZS5hZmlpNTc2Njk9MTQ5MyxlLmFmaWk1NzY3MD0xNDk0LGUuYWZpaTU3NjcxPTE0OTUsZS5hZmlpNTc2NzI9MTQ5NixlLmFmaWk1NzY3Mz0xNDk3LGUuYWZpaTU3Njc0PTE0OTgsZS5hZmlpNTc2NzU9MTQ5OSxlLmFmaWk1NzY3Nj0xNTAwLGUuYWZpaTU3Njc3PTE1MDEsZS5hZmlpNTc2Nzg9MTUwMixlLmFmaWk1NzY3OT0xNTAzLGUuYWZpaTU3NjgwPTE1MDQsZS5hZmlpNTc2ODE9MTUwNSxlLmFmaWk1NzY4Mj0xNTA2LGUuYWZpaTU3NjgzPTE1MDcsZS5hZmlpNTc2ODQ9MTUwOCxlLmFmaWk1NzY4NT0xNTA5LGUuYWZpaTU3Njg2PTE1MTAsZS5hZmlpNTc2ODc9MTUxMSxlLmFmaWk1NzY4OD0xNTEyLGUuYWZpaTU3Njg5PTE1MTMsZS5hZmlpNTc2OTA9MTUxNCxlLmFmaWk1NzY5ND02NDI5OCxlLmFmaWk1NzY5NT02NDI5OSxlLmFmaWk1NzcwMD02NDMzMSxlLmFmaWk1NzcwNT02NDI4NyxlLmFmaWk1NzcxNj0xNTIwLGUuYWZpaTU3NzE3PTE1MjEsZS5hZmlpNTc3MTg9MTUyMixlLmFmaWk1NzcyMz02NDMwOSxlLmFmaWk1Nzc5Mz0xNDYwLGUuYWZpaTU3Nzk0PTE0NjEsZS5hZmlpNTc3OTU9MTQ2MixlLmFmaWk1Nzc5Nj0xNDY3LGUuYWZpaTU3Nzk3PTE0NjQsZS5hZmlpNTc3OTg9MTQ2MyxlLmFmaWk1Nzc5OT0xNDU2LGUuYWZpaTU3ODAwPTE0NTgsZS5hZmlpNTc4MDE9MTQ1NyxlLmFmaWk1NzgwMj0xNDU5LGUuYWZpaTU3ODAzPTE0NzQsZS5hZmlpNTc4MDQ9MTQ3MyxlLmFmaWk1NzgwNj0xNDY1LGUuYWZpaTU3ODA3PTE0NjgsZS5hZmlpNTc4Mzk9MTQ2OSxlLmFmaWk1Nzg0MT0xNDcxLGUuYWZpaTU3ODQyPTE0NzIsZS5hZmlpNTc5Mjk9NzAwLGUuYWZpaTYxMjQ4PTg0NTMsZS5hZmlpNjEyODk9ODQ2NyxlLmFmaWk2MTM1Mj04NDcwLGUuYWZpaTYxNTczPTgyMzYsZS5hZmlpNjE1NzQ9ODIzNyxlLmFmaWk2MTU3NT04MjM4LGUuYWZpaTYxNjY0PTgyMDQsZS5hZmlpNjMxNjc9MTY0NSxlLmFmaWk2NDkzNz03MDEsZS5hZ3JhdmU9MjI0LGUuYWd1amFyYXRpPTI2OTMsZS5hZ3VybXVraGk9MjU2NSxlLmFoaXJhZ2FuYT0xMjM1NCxlLmFob29rYWJvdmU9Nzg0MyxlLmFpYmVuZ2FsaT0yNDQ4LGUuYWlib3BvbW9mbz0xMjU3NCxlLmFpZGV2YT0yMzIwLGUuYWllY3lyaWxsaWM9MTIzNyxlLmFpZ3VqYXJhdGk9MjcwNCxlLmFpZ3VybXVraGk9MjU3NixlLmFpbWF0cmFndXJtdWtoaT0yNjMyLGUuYWluYXJhYmljPTE1OTMsZS5haW5maW5hbGFyYWJpYz02NTIyNixlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjcsZS5haW5tZWRpYWxhcmFiaWM9NjUyMjgsZS5haW52ZXJ0ZWRicmV2ZT01MTUsZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNCxlLmFpdm93ZWxzaWduZGV2YT0yMzc2LGUuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwLGUuYWthdGFrYW5hPTEyNDUwLGUuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzLGUuYWtvcmVhbj0xMjYyMyxlLmFsZWY9MTQ4OCxlLmFsZWZhcmFiaWM9MTU3NSxlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQsZS5hbGVmZmluYWxhcmFiaWM9NjUxNjYsZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxLGUuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NixlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzMsZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwLGUuYWxlZmhlYnJldz0xNDg4LGUuYWxlZmxhbWVkaGVicmV3PTY0MzM1LGUuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MCxlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQsZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5LGUuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NCxlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NyxlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4LGUuYWxlZnBhdGFoaGVicmV3PTY0MzAyLGUuYWxlZnFhbWF0c2hlYnJldz02NDMwMyxlLmFsZXBoPTg1MDEsZS5hbGxlcXVhbD04NzgwLGUuYWxwaGE9OTQ1LGUuYWxwaGF0b25vcz05NDAsZS5hbWFjcm9uPTI1NyxlLmFtb25vc3BhY2U9NjUzNDUsZS5hbXBlcnNhbmQ9MzgsZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODYsZS5hbXBlcnNhbmRzbWFsbD02MzI3MCxlLmFtc3F1YXJlPTEzMjUwLGUuYW5ib3BvbW9mbz0xMjU3OCxlLmFuZ2JvcG9tb2ZvPTEyNTgwLGUuYW5nYnJhY2tldGxlZnQ9MTIyOTYsZS5hbmdicmFja2V0cmlnaHQ9MTIyOTcsZS5hbmdraGFua2h1dGhhaT0zNjc0LGUuYW5nbGU9ODczNixlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTYsZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODcsZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NyxlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODgsZS5hbmdsZWxlZnQ9OTAwMSxlLmFuZ2xlcmlnaHQ9OTAwMixlLmFuZ3N0cm9tPTg0OTEsZS5hbm90ZWxlaWE9OTAzLGUuYW51ZGF0dGFkZXZhPTIzODYsZS5hbnVzdmFyYWJlbmdhbGk9MjQzNCxlLmFudXN2YXJhZGV2YT0yMzA2LGUuYW51c3ZhcmFndWphcmF0aT0yNjkwLGUuYW9nb25laz0yNjEsZS5hcGFhdG9zcXVhcmU9MTMwNTYsZS5hcGFyZW49OTM3MixlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwLGUuYXBvc3Ryb3BoZW1vZD03MDAsZS5hcHBsZT02Mzc0MyxlLmFwcHJvYWNoZXM9ODc4NCxlLmFwcHJveGVxdWFsPTg3NzYsZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NixlLmFwcHJveGltYXRlbHllcXVhbD04NzczLGUuYXJhZWFla29yZWFuPTEyNjg2LGUuYXJhZWFrb3JlYW49MTI2ODUsZS5hcmM9ODk3OCxlLmFyaWdodGhhbGZyaW5nPTc4MzQsZS5hcmluZz0yMjksZS5hcmluZ2FjdXRlPTUwNyxlLmFyaW5nYmVsb3c9NzY4MSxlLmFycm93Ym90aD04NTk2LGUuYXJyb3dkYXNoZG93bj04Njc1LGUuYXJyb3dkYXNobGVmdD04NjcyLGUuYXJyb3dkYXNocmlnaHQ9ODY3NCxlLmFycm93ZGFzaHVwPTg2NzMsZS5hcnJvd2RibGJvdGg9ODY2MCxlLmFycm93ZGJsZG93bj04NjU5LGUuYXJyb3dkYmxsZWZ0PTg2NTYsZS5hcnJvd2RibHJpZ2h0PTg2NTgsZS5hcnJvd2RibHVwPTg2NTcsZS5hcnJvd2Rvd249ODU5NSxlLmFycm93ZG93bmxlZnQ9ODYwMSxlLmFycm93ZG93bnJpZ2h0PTg2MDAsZS5hcnJvd2Rvd253aGl0ZT04NjgxLGUuYXJyb3doZWFkZG93bm1vZD03MDksZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNixlLmFycm93aGVhZHJpZ2h0bW9kPTcwNyxlLmFycm93aGVhZHVwbW9kPTcwOCxlLmFycm93aG9yaXpleD02MzcxOSxlLmFycm93bGVmdD04NTkyLGUuYXJyb3dsZWZ0ZGJsPTg2NTYsZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MyxlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2LGUuYXJyb3dsZWZ0d2hpdGU9ODY3OCxlLmFycm93cmlnaHQ9ODU5NCxlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NSxlLmFycm93cmlnaHRoZWF2eT0xMDE0MixlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0LGUuYXJyb3dyaWdodHdoaXRlPTg2ODAsZS5hcnJvd3RhYmxlZnQ9ODY3NixlLmFycm93dGFicmlnaHQ9ODY3NyxlLmFycm93dXA9ODU5MyxlLmFycm93dXBkbj04NTk3LGUuYXJyb3d1cGRuYnNlPTg2MTYsZS5hcnJvd3VwZG93bmJhc2U9ODYxNixlLmFycm93dXBsZWZ0PTg1OTgsZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1LGUuYXJyb3d1cHJpZ2h0PTg1OTksZS5hcnJvd3Vwd2hpdGU9ODY3OSxlLmFycm93dmVydGV4PTYzNzE4LGUuYXNjaWljaXJjdW09OTQsZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MixlLmFzY2lpdGlsZGU9MTI2LGUuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NCxlLmFzY3JpcHQ9NTkzLGUuYXNjcmlwdHR1cm5lZD01OTQsZS5hc21hbGxoaXJhZ2FuYT0xMjM1MyxlLmFzbWFsbGthdGFrYW5hPTEyNDQ5LGUuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODMsZS5hc3Rlcmlzaz00MixlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDUsZS5hc3Rlcmlza2FyYWJpYz0xNjQ1LGUuYXN0ZXJpc2ttYXRoPTg3MjcsZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MCxlLmFzdGVyaXNrc21hbGw9NjUxMjEsZS5hc3RlcmlzbT04MjU4LGUuYXN1cGVyaW9yPTYzMjA5LGUuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxLGUuYXQ9NjQsZS5hdGlsZGU9MjI3LGUuYXRtb25vc3BhY2U9NjUzMTIsZS5hdHNtYWxsPTY1MTMxLGUuYXR1cm5lZD01OTIsZS5hdWJlbmdhbGk9MjQ1MixlLmF1Ym9wb21vZm89MTI1NzYsZS5hdWRldmE9MjMyNCxlLmF1Z3VqYXJhdGk9MjcwOCxlLmF1Z3VybXVraGk9MjU4MCxlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOSxlLmF1bWF0cmFndXJtdWtoaT0yNjM2LGUuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDgsZS5hdXZvd2Vsc2lnbmRldmE9MjM4MCxlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NCxlLmF2YWdyYWhhZGV2YT0yMzY1LGUuYXliYXJtZW5pYW49MTM3NyxlLmF5aW49MTUwNixlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODgsZS5heWluaGVicmV3PTE1MDYsZS5iPTk4LGUuYmFiZW5nYWxpPTI0NzYsZS5iYWNrc2xhc2g9OTIsZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDAsZS5iYWRldmE9MjM0OCxlLmJhZ3VqYXJhdGk9MjczMixlLmJhZ3VybXVraGk9MjYwNCxlLmJhaGlyYWdhbmE9MTI0MDAsZS5iYWh0dGhhaT0zNjQ3LGUuYmFrYXRha2FuYT0xMjQ5NixlLmJhcj0xMjQsZS5iYXJtb25vc3BhY2U9NjUzNzIsZS5iYm9wb21vZm89MTI1NDksZS5iY2lyY2xlPTk0MjUsZS5iZG90YWNjZW50PTc2ODMsZS5iZG90YmVsb3c9NzY4NSxlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzYsZS5iZWNhdXNlPTg3NTcsZS5iZWN5cmlsbGljPTEwNzMsZS5iZWhhcmFiaWM9MTU3NixlLmJlaGZpbmFsYXJhYmljPTY1MTY4LGUuYmVoaW5pdGlhbGFyYWJpYz02NTE2OSxlLmJlaGlyYWdhbmE9MTI0MDksZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzAsZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MSxlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMCxlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMSxlLmJla2F0YWthbmE9MTI1MDUsZS5iZW5hcm1lbmlhbj0xMzc4LGUuYmV0PTE0ODksZS5iZXRhPTk0NixlLmJldGFzeW1ib2xncmVlaz05NzYsZS5iZXRkYWdlc2g9NjQzMDUsZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDUsZS5iZXRoZWJyZXc9MTQ4OSxlLmJldHJhZmVoZWJyZXc9NjQzMzIsZS5iaGFiZW5nYWxpPTI0NzcsZS5iaGFkZXZhPTIzNDksZS5iaGFndWphcmF0aT0yNzMzLGUuYmhhZ3VybXVraGk9MjYwNSxlLmJob29rPTU5NSxlLmJpaGlyYWdhbmE9MTI0MDMsZS5iaWthdGFrYW5hPTEyNDk5LGUuYmlsYWJpYWxjbGljaz02NjQsZS5iaW5kaWd1cm11a2hpPTI1NjIsZS5iaXJ1c3F1YXJlPTEzMTA1LGUuYmxhY2tjaXJjbGU9OTY3OSxlLmJsYWNrZGlhbW9uZD05NjcwLGUuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwLGUuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2NjgsZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQsZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNCxlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODMsZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDUsZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NCxlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OSxlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTgsZS5ibGFja3JlY3RhbmdsZT05NjQ0LGUuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4LGUuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NCxlLmJsYWNrc21hbGxzcXVhcmU9OTY0MixlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NyxlLmJsYWNrc3F1YXJlPTk2MzIsZS5ibGFja3N0YXI9OTczMyxlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMCxlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDEsZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTIsZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwLGUuYmxhbms9OTI1MSxlLmJsaW5lYmVsb3c9NzY4NyxlLmJsb2NrPTk2MDgsZS5ibW9ub3NwYWNlPTY1MzQ2LGUuYm9iYWltYWl0aGFpPTM2MTAsZS5ib2hpcmFnYW5hPTEyNDEyLGUuYm9rYXRha2FuYT0xMjUwOCxlLmJwYXJlbj05MzczLGUuYnFzcXVhcmU9MTMyNTEsZS5icmFjZWV4PTYzNzMyLGUuYnJhY2VsZWZ0PTEyMyxlLmJyYWNlbGVmdGJ0PTYzNzMxLGUuYnJhY2VsZWZ0bWlkPTYzNzMwLGUuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxLGUuYnJhY2VsZWZ0c21hbGw9NjUxMTUsZS5icmFjZWxlZnR0cD02MzcyOSxlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5LGUuYnJhY2VyaWdodD0xMjUsZS5icmFjZXJpZ2h0YnQ9NjM3NDIsZS5icmFjZXJpZ2h0bWlkPTYzNzQxLGUuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MyxlLmJyYWNlcmlnaHRzbWFsbD02NTExNixlLmJyYWNlcmlnaHR0cD02Mzc0MCxlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MCxlLmJyYWNrZXRsZWZ0PTkxLGUuYnJhY2tldGxlZnRidD02MzcyOCxlLmJyYWNrZXRsZWZ0ZXg9NjM3MjcsZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOSxlLmJyYWNrZXRsZWZ0dHA9NjM3MjYsZS5icmFja2V0cmlnaHQ9OTMsZS5icmFja2V0cmlnaHRidD02MzczOSxlLmJyYWNrZXRyaWdodGV4PTYzNzM4LGUuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxLGUuYnJhY2tldHJpZ2h0dHA9NjM3MzcsZS5icmV2ZT03MjgsZS5icmV2ZWJlbG93Y21iPTgxNCxlLmJyZXZlY21iPTc3NCxlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTUsZS5icmV2ZWludmVydGVkY21iPTc4NSxlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1LGUuYnJpZGdlYmVsb3djbWI9ODEwLGUuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjYsZS5icm9rZW5iYXI9MTY2LGUuYnN0cm9rZT0zODQsZS5ic3VwZXJpb3I9NjMyMTAsZS5idG9wYmFyPTM4NyxlLmJ1aGlyYWdhbmE9MTI0MDYsZS5idWthdGFrYW5hPTEyNTAyLGUuYnVsbGV0PTgyMjYsZS5idWxsZXRpbnZlcnNlPTk2ODgsZS5idWxsZXRvcGVyYXRvcj04NzI5LGUuYnVsbHNleWU9OTY3OCxlLmM9OTksZS5jYWFybWVuaWFuPTEzOTAsZS5jYWJlbmdhbGk9MjQ1OCxlLmNhY3V0ZT0yNjMsZS5jYWRldmE9MjMzMCxlLmNhZ3VqYXJhdGk9MjcxNCxlLmNhZ3VybXVraGk9MjU4NixlLmNhbHNxdWFyZT0xMzE5MixlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzLGUuY2FuZHJhYmluZHVjbWI9Nzg0LGUuY2FuZHJhYmluZHVkZXZhPTIzMDUsZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODksZS5jYXBzbG9jaz04NjgyLGUuY2FyZW9mPTg0NTMsZS5jYXJvbj03MTEsZS5jYXJvbmJlbG93Y21iPTgxMixlLmNhcm9uY21iPTc4MCxlLmNhcnJpYWdlcmV0dXJuPTg2MjksZS5jYm9wb21vZm89MTI1NjgsZS5jY2Fyb249MjY5LGUuY2NlZGlsbGE9MjMxLGUuY2NlZGlsbGFhY3V0ZT03Njg5LGUuY2NpcmNsZT05NDI2LGUuY2NpcmN1bWZsZXg9MjY1LGUuY2N1cmw9NTk3LGUuY2RvdD0yNjcsZS5jZG90YWNjZW50PTI2NyxlLmNkc3F1YXJlPTEzMjUzLGUuY2VkaWxsYT0xODQsZS5jZWRpbGxhY21iPTgwNyxlLmNlbnQ9MTYyLGUuY2VudGlncmFkZT04NDUxLGUuY2VudGluZmVyaW9yPTYzMTk5LGUuY2VudG1vbm9zcGFjZT02NTUwNCxlLmNlbnRvbGRzdHlsZT02MzM5NCxlLmNlbnRzdXBlcmlvcj02MzIwMCxlLmNoYWFybWVuaWFuPTE0MDEsZS5jaGFiZW5nYWxpPTI0NTksZS5jaGFkZXZhPTIzMzEsZS5jaGFndWphcmF0aT0yNzE1LGUuY2hhZ3VybXVraGk9MjU4NyxlLmNoYm9wb21vZm89MTI1NjQsZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzLGUuY2hlY2ttYXJrPTEwMDAzLGUuY2hlY3lyaWxsaWM9MTA5NSxlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTUsZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3LGUuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5LGUuY2hlaGFybWVuaWFuPTEzOTUsZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyOCxlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOSxlLmNoaT05NjcsZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOSxlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjMsZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1LGUuY2hpZXVjaGtvcmVhbj0xMjYxOCxlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOSxlLmNob2NoYW5ndGhhaT0zNTk0LGUuY2hvY2hhbnRoYWk9MzU5MixlLmNob2NoaW5ndGhhaT0zNTkzLGUuY2hvY2hvZXRoYWk9MzU5NixlLmNob29rPTM5MixlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxOCxlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyLGUuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQsZS5jaWV1Y2tvcmVhbj0xMjYxNixlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDgsZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyOCxlLmNpcmNsZT05Njc1LGUuY2lyY2xlY29weXJ0PTE2OSxlLmNpcmNsZW11bHRpcGx5PTg4NTUsZS5jaXJjbGVvdD04ODU3LGUuY2lyY2xlcGx1cz04ODUzLGUuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MixlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODAsZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MSxlLmNpcmN1bWZsZXg9NzEwLGUuY2lyY3VtZmxleGJlbG93Y21iPTgxMyxlLmNpcmN1bWZsZXhjbWI9NzcwLGUuY2xlYXI9ODk5OSxlLmNsaWNrYWx2ZW9sYXI9NDUwLGUuY2xpY2tkZW50YWw9NDQ4LGUuY2xpY2tsYXRlcmFsPTQ0OSxlLmNsaWNrcmV0cm9mbGV4PTQ1MSxlLmNsdWI9OTgyNyxlLmNsdWJzdWl0YmxhY2s9OTgyNyxlLmNsdWJzdWl0d2hpdGU9OTgzMSxlLmNtY3ViZWRzcXVhcmU9MTMyMjAsZS5jbW9ub3NwYWNlPTY1MzQ3LGUuY21zcXVhcmVkc3F1YXJlPTEzMjE2LGUuY29hcm1lbmlhbj0xNDA5LGUuY29sb249NTgsZS5jb2xvbm1vbmV0YXJ5PTgzNTMsZS5jb2xvbm1vbm9zcGFjZT02NTMwNixlLmNvbG9uc2lnbj04MzUzLGUuY29sb25zbWFsbD02NTEwOSxlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxLGUuY29sb250cmlhbmd1bGFybW9kPTcyMCxlLmNvbW1hPTQ0LGUuY29tbWFhYm92ZWNtYj03ODcsZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5LGUuY29tbWFhY2NlbnQ9NjMxNzEsZS5jb21tYWFyYWJpYz0xNTQ4LGUuY29tbWFhcm1lbmlhbj0xMzczLGUuY29tbWFpbmZlcmlvcj02MzIwMSxlLmNvbW1hbW9ub3NwYWNlPTY1MjkyLGUuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4OCxlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxLGUuY29tbWFzbWFsbD02NTEwNCxlLmNvbW1hc3VwZXJpb3I9NjMyMDIsZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NixlLmNvbW1hdHVybmVkbW9kPTY5OSxlLmNvbXBhc3M9OTc4OCxlLmNvbmdydWVudD04NzczLGUuY29udG91cmludGVncmFsPTg3NTAsZS5jb250cm9sPTg5NjMsZS5jb250cm9sQUNLPTYsZS5jb250cm9sQkVMPTcsZS5jb250cm9sQlM9OCxlLmNvbnRyb2xDQU49MjQsZS5jb250cm9sQ1I9MTMsZS5jb250cm9sREMxPTE3LGUuY29udHJvbERDMj0xOCxlLmNvbnRyb2xEQzM9MTksZS5jb250cm9sREM0PTIwLGUuY29udHJvbERFTD0xMjcsZS5jb250cm9sRExFPTE2LGUuY29udHJvbEVNPTI1LGUuY29udHJvbEVOUT01LGUuY29udHJvbEVPVD00LGUuY29udHJvbEVTQz0yNyxlLmNvbnRyb2xFVEI9MjMsZS5jb250cm9sRVRYPTMsZS5jb250cm9sRkY9MTIsZS5jb250cm9sRlM9MjgsZS5jb250cm9sR1M9MjksZS5jb250cm9sSFQ9OSxlLmNvbnRyb2xMRj0xMCxlLmNvbnRyb2xOQUs9MjEsZS5jb250cm9sTlVMTD0wLGUuY29udHJvbFJTPTMwLGUuY29udHJvbFNJPTE1LGUuY29udHJvbFNPPTE0LGUuY29udHJvbFNPVD0yLGUuY29udHJvbFNUWD0xLGUuY29udHJvbFNVQj0yNixlLmNvbnRyb2xTWU49MjIsZS5jb250cm9sVVM9MzEsZS5jb250cm9sVlQ9MTEsZS5jb3B5cmlnaHQ9MTY5LGUuY29weXJpZ2h0c2Fucz02MzcyMSxlLmNvcHlyaWdodHNlcmlmPTYzMTkzLGUuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDAsZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3OCxlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODksZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDEsZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzksZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MCxlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzLGUuY29zcXVhcmU9MTMyNTUsZS5jb3Zlcmtnc3F1YXJlPTEzMjU0LGUuY3BhcmVuPTkzNzQsZS5jcnV6ZWlybz04MzU0LGUuY3N0cmV0Y2hlZD02NjMsZS5jdXJseWFuZD04OTExLGUuY3VybHlvcj04OTEwLGUuY3VycmVuY3k9MTY0LGUuY3lyQnJldmU9NjMxODUsZS5jeXJGbGV4PTYzMTg2LGUuY3lyYnJldmU9NjMxODgsZS5jeXJmbGV4PTYzMTg5LGUuZD0xMDAsZS5kYWFybWVuaWFuPTEzODAsZS5kYWJlbmdhbGk9MjQ3MCxlLmRhZGFyYWJpYz0xNTkwLGUuZGFkZXZhPTIzNDIsZS5kYWRmaW5hbGFyYWJpYz02NTIxNCxlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTUsZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTYsZS5kYWdlc2g9MTQ2OCxlLmRhZ2VzaGhlYnJldz0xNDY4LGUuZGFnZ2VyPTgyMjQsZS5kYWdnZXJkYmw9ODIyNSxlLmRhZ3VqYXJhdGk9MjcyNixlLmRhZ3VybXVraGk9MjU5OCxlLmRhaGlyYWdhbmE9MTIzODQsZS5kYWthdGFrYW5hPTEyNDgwLGUuZGFsYXJhYmljPTE1ODMsZS5kYWxldD0xNDkxLGUuZGFsZXRkYWdlc2g9NjQzMDcsZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNyxlLmRhbGV0aGVicmV3PTE0OTEsZS5kYWxmaW5hbGFyYWJpYz02NTE5NCxlLmRhbW1hYXJhYmljPTE2MTUsZS5kYW1tYWxvd2FyYWJpYz0xNjE1LGUuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMixlLmRhbW1hdGFuYXJhYmljPTE2MTIsZS5kYW5kYT0yNDA0LGUuZGFyZ2FoZWJyZXc9MTQ0NyxlLmRhcmdhbGVmdGhlYnJldz0xNDQ3LGUuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTcsZS5kYmxHcmF2ZT02MzE4NyxlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTgsZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODUsZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OSxlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODYsZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTEsZS5kYmxhcnJvd2xlZnQ9ODY2MCxlLmRibGFycm93cmlnaHQ9ODY1OCxlLmRibGRhbmRhPTI0MDUsZS5kYmxncmF2ZT02MzE5MCxlLmRibGdyYXZlY21iPTc4MyxlLmRibGludGVncmFsPTg3NDgsZS5kYmxsb3dsaW5lPTgyMTUsZS5kYmxsb3dsaW5lY21iPTgxOSxlLmRibG92ZXJsaW5lY21iPTgzMSxlLmRibHByaW1lbW9kPTY5OCxlLmRibHZlcnRpY2FsYmFyPTgyMTQsZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODIsZS5kYm9wb21vZm89MTI1NTMsZS5kYnNxdWFyZT0xMzI1NixlLmRjYXJvbj0yNzEsZS5kY2VkaWxsYT03Njk3LGUuZGNpcmNsZT05NDI3LGUuZGNpcmN1bWZsZXhiZWxvdz03Njk5LGUuZGNyb2F0PTI3MyxlLmRkYWJlbmdhbGk9MjQ2NSxlLmRkYWRldmE9MjMzNyxlLmRkYWd1amFyYXRpPTI3MjEsZS5kZGFndXJtdWtoaT0yNTkzLGUuZGRhbGFyYWJpYz0xNjcyLGUuZGRhbGZpbmFsYXJhYmljPTY0MzkzLGUuZGRkaGFkZXZhPTIzOTYsZS5kZGhhYmVuZ2FsaT0yNDY2LGUuZGRoYWRldmE9MjMzOCxlLmRkaGFndWphcmF0aT0yNzIyLGUuZGRoYWd1cm11a2hpPTI1OTQsZS5kZG90YWNjZW50PTc2OTEsZS5kZG90YmVsb3c9NzY5MyxlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MyxlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDMsZS5kZWN5cmlsbGljPTEwNzYsZS5kZWdyZWU9MTc2LGUuZGVoaWhlYnJldz0xNDUzLGUuZGVoaXJhZ2FuYT0xMjM5MSxlLmRlaWNvcHRpYz0xMDA3LGUuZGVrYXRha2FuYT0xMjQ4NyxlLmRlbGV0ZWxlZnQ9OTAwMyxlLmRlbGV0ZXJpZ2h0PTg5OTgsZS5kZWx0YT05NDgsZS5kZWx0YXR1cm5lZD0zOTcsZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyLGUuZGV6aD02NzYsZS5kaGFiZW5nYWxpPTI0NzEsZS5kaGFkZXZhPTIzNDMsZS5kaGFndWphcmF0aT0yNzI3LGUuZGhhZ3VybXVraGk9MjU5OSxlLmRob29rPTU5OSxlLmRpYWx5dGlrYXRvbm9zPTkwMSxlLmRpYWx5dGlrYXRvbm9zY21iPTgzNixlLmRpYW1vbmQ9OTgzMCxlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNixlLmRpZXJlc2lzPTE2OCxlLmRpZXJlc2lzYWN1dGU9NjMxOTEsZS5kaWVyZXNpc2JlbG93Y21iPTgwNCxlLmRpZXJlc2lzY21iPTc3NixlLmRpZXJlc2lzZ3JhdmU9NjMxOTIsZS5kaWVyZXNpc3Rvbm9zPTkwMSxlLmRpaGlyYWdhbmE9MTIzODYsZS5kaWthdGFrYW5hPTEyNDgyLGUuZGl0dG9tYXJrPTEyMjkxLGUuZGl2aWRlPTI0NyxlLmRpdmlkZXM9ODczOSxlLmRpdmlzaW9uc2xhc2g9ODcyNSxlLmRqZWN5cmlsbGljPTExMDYsZS5ka3NoYWRlPTk2MTksZS5kbGluZWJlbG93PTc2OTUsZS5kbHNxdWFyZT0xMzIwNyxlLmRtYWNyb249MjczLGUuZG1vbm9zcGFjZT02NTM0OCxlLmRuYmxvY2s9OTYwNCxlLmRvY2hhZGF0aGFpPTM1OTgsZS5kb2Rla3RoYWk9MzYwNCxlLmRvaGlyYWdhbmE9MTIzOTMsZS5kb2thdGFrYW5hPTEyNDg5LGUuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDMsZS5kb2xsYXJtb25vc3BhY2U9NjUyODQsZS5kb2xsYXJvbGRzdHlsZT02MzI2OCxlLmRvbGxhcnNtYWxsPTY1MTI5LGUuZG9sbGFyc3VwZXJpb3I9NjMyMDQsZS5kb25nPTgzNjMsZS5kb3J1c3F1YXJlPTEzMDk0LGUuZG90YWNjZW50PTcyOSxlLmRvdGFjY2VudGNtYj03NzUsZS5kb3RiZWxvd2NtYj04MDMsZS5kb3RiZWxvd2NvbWI9ODAzLGUuZG90a2F0YWthbmE9MTI1MzksZS5kb3RsZXNzaT0zMDUsZS5kb3RsZXNzaj02MzE2NixlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQsZS5kb3RtYXRoPTg5MDEsZS5kb3R0ZWRjaXJjbGU9OTY3NixlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3LGUuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODcsZS5kb3dudGFja2JlbG93Y21iPTc5OCxlLmRvd250YWNrbW9kPTcyNSxlLmRwYXJlbj05Mzc1LGUuZHN1cGVyaW9yPTYzMjExLGUuZHRhaWw9NTk4LGUuZHRvcGJhcj0zOTYsZS5kdWhpcmFnYW5hPTEyMzg5LGUuZHVrYXRha2FuYT0xMjQ4NSxlLmR6PTQ5OSxlLmR6YWx0b25lPTY3NSxlLmR6Y2Fyb249NDU0LGUuZHpjdXJsPTY3NyxlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDksZS5kemVjeXJpbGxpYz0xMTA5LGUuZHpoZWN5cmlsbGljPTExMTksZS5lPTEwMSxlLmVhY3V0ZT0yMzMsZS5lYXJ0aD05NzkzLGUuZWJlbmdhbGk9MjQ0NyxlLmVib3BvbW9mbz0xMjU3MixlLmVicmV2ZT0yNzcsZS5lY2FuZHJhZGV2YT0yMzE3LGUuZWNhbmRyYWd1amFyYXRpPTI3MDEsZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczLGUuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTcsZS5lY2Fyb249MjgzLGUuZWNlZGlsbGFicmV2ZT03NzA5LGUuZWNoYXJtZW5pYW49MTM4MSxlLmVjaHlpd25hcm1lbmlhbj0xNDE1LGUuZWNpcmNsZT05NDI4LGUuZWNpcmN1bWZsZXg9MjM0LGUuZWNpcmN1bWZsZXhhY3V0ZT03ODcxLGUuZWNpcmN1bWZsZXhiZWxvdz03NzA1LGUuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5LGUuZWNpcmN1bWZsZXhncmF2ZT03ODczLGUuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NSxlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NyxlLmVjeXJpbGxpYz0xMTA4LGUuZWRibGdyYXZlPTUxNyxlLmVkZXZhPTIzMTksZS5lZGllcmVzaXM9MjM1LGUuZWRvdD0yNzksZS5lZG90YWNjZW50PTI3OSxlLmVkb3RiZWxvdz03ODY1LGUuZWVndXJtdWtoaT0yNTc1LGUuZWVtYXRyYWd1cm11a2hpPTI2MzEsZS5lZmN5cmlsbGljPTEwOTIsZS5lZ3JhdmU9MjMyLGUuZWd1amFyYXRpPTI3MDMsZS5laGFybWVuaWFuPTEzODMsZS5laGJvcG9tb2ZvPTEyNTczLGUuZWhpcmFnYW5hPTEyMzYwLGUuZWhvb2thYm92ZT03ODY3LGUuZWlib3BvbW9mbz0xMjU3NSxlLmVpZ2h0PTU2LGUuZWlnaHRhcmFiaWM9MTY0MCxlLmVpZ2h0YmVuZ2FsaT0yNTQyLGUuZWlnaHRjaXJjbGU9OTMxOSxlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOSxlLmVpZ2h0ZGV2YT0yNDE0LGUuZWlnaHRlZW5jaXJjbGU9OTMyOSxlLmVpZ2h0ZWVucGFyZW49OTM0OSxlLmVpZ2h0ZWVucGVyaW9kPTkzNjksZS5laWdodGd1amFyYXRpPTI3OTgsZS5laWdodGd1cm11a2hpPTI2NzAsZS5laWdodGhhY2thcmFiaWM9MTY0MCxlLmVpZ2h0aGFuZ3pob3U9MTIzMjgsZS5laWdodGhub3RlYmVhbWVkPTk4MzUsZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4MzksZS5laWdodGluZmVyaW9yPTgzMjgsZS5laWdodG1vbm9zcGFjZT02NTMwNCxlLmVpZ2h0b2xkc3R5bGU9NjMyODgsZS5laWdodHBhcmVuPTkzMzksZS5laWdodHBlcmlvZD05MzU5LGUuZWlnaHRwZXJzaWFuPTE3ODQsZS5laWdodHJvbWFuPTg1NjcsZS5laWdodHN1cGVyaW9yPTgzMTIsZS5laWdodHRoYWk9MzY3MixlLmVpbnZlcnRlZGJyZXZlPTUxOSxlLmVpb3RpZmllZGN5cmlsbGljPTExMjUsZS5la2F0YWthbmE9MTI0NTYsZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTYsZS5la29ua2FyZ3VybXVraGk9MjY3NixlLmVrb3JlYW49MTI2MjgsZS5lbGN5cmlsbGljPTEwODMsZS5lbGVtZW50PTg3MTIsZS5lbGV2ZW5jaXJjbGU9OTMyMixlLmVsZXZlbnBhcmVuPTkzNDIsZS5lbGV2ZW5wZXJpb2Q9OTM2MixlLmVsZXZlbnJvbWFuPTg1NzAsZS5lbGxpcHNpcz04MjMwLGUuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyLGUuZW1hY3Jvbj0yNzUsZS5lbWFjcm9uYWN1dGU9NzcwMyxlLmVtYWNyb25ncmF2ZT03NzAxLGUuZW1jeXJpbGxpYz0xMDg0LGUuZW1kYXNoPTgyMTIsZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MyxlLmVtb25vc3BhY2U9NjUzNDksZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxLGUuZW1wdHlzZXQ9ODcwOSxlLmVuYm9wb21vZm89MTI1NzksZS5lbmN5cmlsbGljPTEwODUsZS5lbmRhc2g9ODIxMSxlLmVuZGFzaHZlcnRpY2FsPTY1MDc0LGUuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3LGUuZW5nPTMzMSxlLmVuZ2JvcG9tb2ZvPTEyNTgxLGUuZW5naGVjeXJpbGxpYz0xMTg5LGUuZW5ob29rY3lyaWxsaWM9MTIyNCxlLmVuc3BhY2U9ODE5NCxlLmVvZ29uZWs9MjgxLGUuZW9rb3JlYW49MTI2MjcsZS5lb3Blbj02MDMsZS5lb3BlbmNsb3NlZD02NjYsZS5lb3BlbnJldmVyc2VkPTYwNCxlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2LGUuZW9wZW5yZXZlcnNlZGhvb2s9NjA1LGUuZXBhcmVuPTkzNzYsZS5lcHNpbG9uPTk0OSxlLmVwc2lsb250b25vcz05NDEsZS5lcXVhbD02MSxlLmVxdWFsbW9ub3NwYWNlPTY1MzA5LGUuZXF1YWxzbWFsbD02NTEyNixlLmVxdWFsc3VwZXJpb3I9ODMxNixlLmVxdWl2YWxlbmNlPTg4MDEsZS5lcmJvcG9tb2ZvPTEyNTgyLGUuZXJjeXJpbGxpYz0xMDg4LGUuZXJldmVyc2VkPTYwMCxlLmVyZXZlcnNlZGN5cmlsbGljPTExMDEsZS5lc2N5cmlsbGljPTEwODksZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTUsZS5lc2g9NjQzLGUuZXNoY3VybD02NDYsZS5lc2hvcnRkZXZhPTIzMTgsZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQsZS5lc2hyZXZlcnNlZGxvb3A9NDI2LGUuZXNoc3F1YXRyZXZlcnNlZD02NDUsZS5lc21hbGxoaXJhZ2FuYT0xMjM1OSxlLmVzbWFsbGthdGFrYW5hPTEyNDU1LGUuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODYsZS5lc3RpbWF0ZWQ9ODQ5NCxlLmVzdXBlcmlvcj02MzIxMixlLmV0YT05NTEsZS5ldGFybWVuaWFuPTEzODQsZS5ldGF0b25vcz05NDIsZS5ldGg9MjQwLGUuZXRpbGRlPTc4NjksZS5ldGlsZGViZWxvdz03NzA3LGUuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjUsZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjUsZS5ldG5haHRhaGVicmV3PTE0MjUsZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1LGUuZXR1cm5lZD00NzcsZS5ldWtvcmVhbj0xMjY0MSxlLmV1cm89ODM2NCxlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDMsZS5ldm93ZWxzaWduZGV2YT0yMzc1LGUuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTksZS5leGNsYW09MzMsZS5leGNsYW1hcm1lbmlhbj0xMzcyLGUuZXhjbGFtZGJsPTgyNTIsZS5leGNsYW1kb3duPTE2MSxlLmV4Y2xhbWRvd25zbWFsbD02MzM5MyxlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MSxlLmV4Y2xhbXNtYWxsPTYzMjY1LGUuZXhpc3RlbnRpYWw9ODcwNyxlLmV6aD02NTgsZS5lemhjYXJvbj00OTUsZS5lemhjdXJsPTY1OSxlLmV6aHJldmVyc2VkPTQ0MSxlLmV6aHRhaWw9NDQyLGUuZj0xMDIsZS5mYWRldmE9MjM5OCxlLmZhZ3VybXVraGk9MjY1NCxlLmZhaHJlbmhlaXQ9ODQ1NyxlLmZhdGhhYXJhYmljPTE2MTQsZS5mYXRoYWxvd2FyYWJpYz0xNjE0LGUuZmF0aGF0YW5hcmFiaWM9MTYxMSxlLmZib3BvbW9mbz0xMjU1MixlLmZjaXJjbGU9OTQyOSxlLmZkb3RhY2NlbnQ9NzcxMSxlLmZlaGFyYWJpYz0xNjAxLGUuZmVoYXJtZW5pYW49MTQxNCxlLmZlaGZpbmFsYXJhYmljPTY1MjM0LGUuZmVoaW5pdGlhbGFyYWJpYz02NTIzNSxlLmZlaG1lZGlhbGFyYWJpYz02NTIzNixlLmZlaWNvcHRpYz05OTcsZS5mZW1hbGU9OTc5MixlLmZmPTY0MjU2LGUuZl9mPTY0MjU2LGUuZmZpPTY0MjU5LGUuZl9mX2k9NjQyNTksZS5mZmw9NjQyNjAsZS5mX2ZfbD02NDI2MCxlLmZpPTY0MjU3LGUuZl9pPTY0MjU3LGUuZmlmdGVlbmNpcmNsZT05MzI2LGUuZmlmdGVlbnBhcmVuPTkzNDYsZS5maWZ0ZWVucGVyaW9kPTkzNjYsZS5maWd1cmVkYXNoPTgyMTAsZS5maWxsZWRib3g9OTYzMixlLmZpbGxlZHJlY3Q9OTY0NCxlLmZpbmFsa2FmPTE0OTgsZS5maW5hbGthZmRhZ2VzaD02NDMxNCxlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0LGUuZmluYWxrYWZoZWJyZXc9MTQ5OCxlLmZpbmFsbWVtPTE1MDEsZS5maW5hbG1lbWhlYnJldz0xNTAxLGUuZmluYWxudW49MTUwMyxlLmZpbmFsbnVuaGVicmV3PTE1MDMsZS5maW5hbHBlPTE1MDcsZS5maW5hbHBlaGVicmV3PTE1MDcsZS5maW5hbHRzYWRpPTE1MDksZS5maW5hbHRzYWRpaGVicmV3PTE1MDksZS5maXJzdHRvbmVjaGluZXNlPTcxMyxlLmZpc2hleWU9OTY3MyxlLmZpdGFjeXJpbGxpYz0xMTM5LGUuZml2ZT01MyxlLmZpdmVhcmFiaWM9MTYzNyxlLmZpdmViZW5nYWxpPTI1MzksZS5maXZlY2lyY2xlPTkzMTYsZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNixlLmZpdmVkZXZhPTI0MTEsZS5maXZlZWlnaHRocz04NTQxLGUuZml2ZWd1amFyYXRpPTI3OTUsZS5maXZlZ3VybXVraGk9MjY2NyxlLmZpdmVoYWNrYXJhYmljPTE2MzcsZS5maXZlaGFuZ3pob3U9MTIzMjUsZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNixlLmZpdmVpbmZlcmlvcj04MzI1LGUuZml2ZW1vbm9zcGFjZT02NTMwMSxlLmZpdmVvbGRzdHlsZT02MzI4NSxlLmZpdmVwYXJlbj05MzM2LGUuZml2ZXBlcmlvZD05MzU2LGUuZml2ZXBlcnNpYW49MTc4MSxlLmZpdmVyb21hbj04NTY0LGUuZml2ZXN1cGVyaW9yPTgzMDksZS5maXZldGhhaT0zNjY5LGUuZmw9NjQyNTgsZS5mX2w9NjQyNTgsZS5mbG9yaW49NDAyLGUuZm1vbm9zcGFjZT02NTM1MCxlLmZtc3F1YXJlPTEzMjA5LGUuZm9mYW50aGFpPTM2MTUsZS5mb2ZhdGhhaT0zNjEzLGUuZm9uZ21hbnRoYWk9MzY2MyxlLmZvcmFsbD04NzA0LGUuZm91cj01MixlLmZvdXJhcmFiaWM9MTYzNixlLmZvdXJiZW5nYWxpPTI1MzgsZS5mb3VyY2lyY2xlPTkzMTUsZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNSxlLmZvdXJkZXZhPTI0MTAsZS5mb3VyZ3VqYXJhdGk9Mjc5NCxlLmZvdXJndXJtdWtoaT0yNjY2LGUuZm91cmhhY2thcmFiaWM9MTYzNixlLmZvdXJoYW5nemhvdT0xMjMyNCxlLmZvdXJpZGVvZ3JhcGhpY3BhcmVuPTEyODM1LGUuZm91cmluZmVyaW9yPTgzMjQsZS5mb3VybW9ub3NwYWNlPTY1MzAwLGUuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MSxlLmZvdXJvbGRzdHlsZT02MzI4NCxlLmZvdXJwYXJlbj05MzM1LGUuZm91cnBlcmlvZD05MzU1LGUuZm91cnBlcnNpYW49MTc4MCxlLmZvdXJyb21hbj04NTYzLGUuZm91cnN1cGVyaW9yPTgzMDgsZS5mb3VydGVlbmNpcmNsZT05MzI1LGUuZm91cnRlZW5wYXJlbj05MzQ1LGUuZm91cnRlZW5wZXJpb2Q9OTM2NSxlLmZvdXJ0aGFpPTM2NjgsZS5mb3VydGh0b25lY2hpbmVzZT03MTUsZS5mcGFyZW49OTM3NyxlLmZyYWN0aW9uPTgyNjAsZS5mcmFuYz04MzU1LGUuZz0xMDMsZS5nYWJlbmdhbGk9MjQ1NSxlLmdhY3V0ZT01MDEsZS5nYWRldmE9MjMyNyxlLmdhZmFyYWJpYz0xNzExLGUuZ2FmZmluYWxhcmFiaWM9NjQ0MDMsZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0LGUuZ2FmbWVkaWFsYXJhYmljPTY0NDA1LGUuZ2FndWphcmF0aT0yNzExLGUuZ2FndXJtdWtoaT0yNTgzLGUuZ2FoaXJhZ2FuYT0xMjM2NCxlLmdha2F0YWthbmE9MTI0NjAsZS5nYW1tYT05NDcsZS5nYW1tYWxhdGluc21hbGw9NjExLGUuZ2FtbWFzdXBlcmlvcj03MzYsZS5nYW5naWFjb3B0aWM9MTAwMyxlLmdib3BvbW9mbz0xMjU1NyxlLmdicmV2ZT0yODcsZS5nY2Fyb249NDg3LGUuZ2NlZGlsbGE9MjkxLGUuZ2NpcmNsZT05NDMwLGUuZ2NpcmN1bWZsZXg9Mjg1LGUuZ2NvbW1hYWNjZW50PTI5MSxlLmdkb3Q9Mjg5LGUuZ2RvdGFjY2VudD0yODksZS5nZWN5cmlsbGljPTEwNzUsZS5nZWhpcmFnYW5hPTEyMzcwLGUuZ2VrYXRha2FuYT0xMjQ2NixlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1LGUuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzYsZS5nZXJlc2hoZWJyZXc9MTUyMyxlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3LGUuZ2VybWFuZGJscz0yMjMsZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzOCxlLmdlcnNoYXlpbWhlYnJldz0xNTI0LGUuZ2V0YW1hcms9MTIzMDcsZS5naGFiZW5nYWxpPTI0NTYsZS5naGFkYXJtZW5pYW49MTM5NCxlLmdoYWRldmE9MjMyOCxlLmdoYWd1amFyYXRpPTI3MTIsZS5naGFndXJtdWtoaT0yNTg0LGUuZ2hhaW5hcmFiaWM9MTU5NCxlLmdoYWluZmluYWxhcmFiaWM9NjUyMzAsZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzEsZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMixlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczLGUuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MSxlLmdoZXVwdHVybmN5cmlsbGljPTExNjksZS5naGhhZGV2YT0yMzk0LGUuZ2hoYWd1cm11a2hpPTI2NTAsZS5naG9vaz02MDgsZS5naHpzcXVhcmU9MTMyMDMsZS5naWhpcmFnYW5hPTEyMzY2LGUuZ2lrYXRha2FuYT0xMjQ2MixlLmdpbWFybWVuaWFuPTEzNzksZS5naW1lbD0xNDkwLGUuZ2ltZWxkYWdlc2g9NjQzMDYsZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNixlLmdpbWVsaGVicmV3PTE0OTAsZS5namVjeXJpbGxpYz0xMTA3LGUuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NixlLmdsb3R0YWxzdG9wPTY2MCxlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyLGUuZ2xvdHRhbHN0b3Btb2Q9NzA0LGUuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjEsZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNSxlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDAsZS5nbG90dGFsc3RvcHN0cm9rZT02NzMsZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NCxlLmdtYWNyb249NzcxMyxlLmdtb25vc3BhY2U9NjUzNTEsZS5nb2hpcmFnYW5hPTEyMzcyLGUuZ29rYXRha2FuYT0xMjQ2OCxlLmdwYXJlbj05Mzc4LGUuZ3Bhc3F1YXJlPTEzMjI4LGUuZ3JhZGllbnQ9ODcxMSxlLmdyYXZlPTk2LGUuZ3JhdmViZWxvd2NtYj03OTAsZS5ncmF2ZWNtYj03NjgsZS5ncmF2ZWNvbWI9NzY4LGUuZ3JhdmVkZXZhPTIzODcsZS5ncmF2ZWxvd21vZD03MTgsZS5ncmF2ZW1vbm9zcGFjZT02NTM0NCxlLmdyYXZldG9uZWNtYj04MzIsZS5ncmVhdGVyPTYyLGUuZ3JlYXRlcmVxdWFsPTg4MDUsZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMyxlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTAsZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTksZS5ncmVhdGVyb3JsZXNzPTg4MjMsZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDcsZS5ncmVhdGVyc21hbGw9NjUxMjUsZS5nc2NyaXB0PTYwOSxlLmdzdHJva2U9NDg1LGUuZ3VoaXJhZ2FuYT0xMjM2OCxlLmd1aWxsZW1vdGxlZnQ9MTcxLGUuZ3VpbGxlbW90cmlnaHQ9MTg3LGUuZ3VpbHNpbmdsbGVmdD04MjQ5LGUuZ3VpbHNpbmdscmlnaHQ9ODI1MCxlLmd1a2F0YWthbmE9MTI0NjQsZS5ndXJhbXVzcXVhcmU9MTMwODAsZS5neXNxdWFyZT0xMzI1NyxlLmg9MTA0LGUuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzLGUuaGFhbHRvbmVhcmFiaWM9MTcyOSxlLmhhYmVuZ2FsaT0yNDg5LGUuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzLGUuaGFkZXZhPTIzNjEsZS5oYWd1amFyYXRpPTI3NDUsZS5oYWd1cm11a2hpPTI2MTcsZS5oYWhhcmFiaWM9MTU4MSxlLmhhaGZpbmFsYXJhYmljPTY1MTg2LGUuaGFoaW5pdGlhbGFyYWJpYz02NTE4NyxlLmhhaGlyYWdhbmE9MTIzOTksZS5oYWhtZWRpYWxhcmFiaWM9NjUxODgsZS5oYWl0dXNxdWFyZT0xMzA5OCxlLmhha2F0YWthbmE9MTI0OTUsZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4LGUuaGFsYW50Z3VybXVraGk9MjYzNyxlLmhhbXphYXJhYmljPTE1NjksZS5oYW16YWxvd2FyYWJpYz0xNTY5LGUuaGFuZ3VsZmlsbGVyPTEyNjQ0LGUuaGFyZHNpZ25jeXJpbGxpYz0xMDk4LGUuaGFycG9vbmxlZnRiYXJidXA9ODYzNixlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwLGUuaGFzcXVhcmU9MTMyNTgsZS5oYXRhZnBhdGFoPTE0NTgsZS5oYXRhZnBhdGFoMTY9MTQ1OCxlLmhhdGFmcGF0YWgyMz0xNDU4LGUuaGF0YWZwYXRhaDJmPTE0NTgsZS5oYXRhZnBhdGFoaGVicmV3PTE0NTgsZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTgsZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4LGUuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1OCxlLmhhdGFmcWFtYXRzPTE0NTksZS5oYXRhZnFhbWF0czFiPTE0NTksZS5oYXRhZnFhbWF0czI4PTE0NTksZS5oYXRhZnFhbWF0czM0PTE0NTksZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5LGUuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OSxlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5LGUuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTksZS5oYXRhZnNlZ29sPTE0NTcsZS5oYXRhZnNlZ29sMTc9MTQ1NyxlLmhhdGFmc2Vnb2wyND0xNDU3LGUuaGF0YWZzZWdvbDMwPTE0NTcsZS5oYXRhZnNlZ29saGVicmV3PTE0NTcsZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTcsZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3LGUuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NyxlLmhiYXI9Mjk1LGUuaGJvcG9tb2ZvPTEyNTU5LGUuaGJyZXZlYmVsb3c9NzcyMyxlLmhjZWRpbGxhPTc3MjEsZS5oY2lyY2xlPTk0MzEsZS5oY2lyY3VtZmxleD0yOTMsZS5oZGllcmVzaXM9NzcxOSxlLmhkb3RhY2NlbnQ9NzcxNSxlLmhkb3RiZWxvdz03NzE3LGUuaGU9MTQ5MixlLmhlYXJ0PTk4MjksZS5oZWFydHN1aXRibGFjaz05ODI5LGUuaGVhcnRzdWl0d2hpdGU9OTgyNSxlLmhlZGFnZXNoPTY0MzA4LGUuaGVkYWdlc2hoZWJyZXc9NjQzMDgsZS5oZWhhbHRvbmVhcmFiaWM9MTcyOSxlLmhlaGFyYWJpYz0xNjA3LGUuaGVoZWJyZXc9MTQ5MixlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzLGUuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTgsZS5oZWhmaW5hbGFyYWJpYz02NTI1OCxlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMSxlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMCxlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQsZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5LGUuaGVoaXJhZ2FuYT0xMjQwOCxlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNSxlLmhlaG1lZGlhbGFyYWJpYz02NTI2MCxlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OSxlLmhla2F0YWthbmE9MTI1MDQsZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxLGUuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwLGUuaGVuZ2hvb2s9NjE1LGUuaGVydXR1c3F1YXJlPTEzMTEzLGUuaGV0PTE0OTUsZS5oZXRoZWJyZXc9MTQ5NSxlLmhob29rPTYxNCxlLmhob29rc3VwZXJpb3I9Njg5LGUuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzLGUuaGlldWhhcGFyZW5rb3JlYW49MTI4MjcsZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOSxlLmhpZXVoa29yZWFuPTEyNjIyLGUuaGlldWhwYXJlbmtvcmVhbj0xMjgxMyxlLmhpaGlyYWdhbmE9MTI0MDIsZS5oaWthdGFrYW5hPTEyNDk4LGUuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOSxlLmhpcmlxPTE0NjAsZS5oaXJpcTE0PTE0NjAsZS5oaXJpcTIxPTE0NjAsZS5oaXJpcTJkPTE0NjAsZS5oaXJpcWhlYnJldz0xNDYwLGUuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MCxlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwLGUuaGlyaXF3aWRlaGVicmV3PTE0NjAsZS5obGluZWJlbG93PTc4MzAsZS5obW9ub3NwYWNlPTY1MzUyLGUuaG9hcm1lbmlhbj0xMzkyLGUuaG9oaXB0aGFpPTM2MjcsZS5ob2hpcmFnYW5hPTEyNDExLGUuaG9rYXRha2FuYT0xMjUwNyxlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjIsZS5ob2xhbT0xNDY1LGUuaG9sYW0xOT0xNDY1LGUuaG9sYW0yNj0xNDY1LGUuaG9sYW0zMj0xNDY1LGUuaG9sYW1oZWJyZXc9MTQ2NSxlLmhvbGFtbmFycm93aGVicmV3PTE0NjUsZS5ob2xhbXF1YXJ0ZXJoZWJyZXc9MTQ2NSxlLmhvbGFtd2lkZWhlYnJldz0xNDY1LGUuaG9ub2todWt0aGFpPTM2MzAsZS5ob29rYWJvdmVjb21iPTc3NyxlLmhvb2tjbWI9Nzc3LGUuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxLGUuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMixlLmhvb25zcXVhcmU9MTMxMjIsZS5ob3JpY29wdGljPTEwMDEsZS5ob3Jpem9udGFsYmFyPTgyMTMsZS5ob3JuY21iPTc5NSxlLmhvdHNwcmluZ3M9OTgzMixlLmhvdXNlPTg5NjIsZS5ocGFyZW49OTM3OSxlLmhzdXBlcmlvcj02ODgsZS5odHVybmVkPTYxMyxlLmh1aGlyYWdhbmE9MTI0MDUsZS5odWlpdG9zcXVhcmU9MTMxMDcsZS5odWthdGFrYW5hPTEyNTAxLGUuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMCxlLmh1bmdhcnVtbGF1dD03MzMsZS5odW5nYXJ1bWxhdXRjbWI9Nzc5LGUuaHY9NDA1LGUuaHlwaGVuPTQ1LGUuaHlwaGVuaW5mZXJpb3I9NjMyMDUsZS5oeXBoZW5tb25vc3BhY2U9NjUyOTMsZS5oeXBoZW5zbWFsbD02NTEyMyxlLmh5cGhlbnN1cGVyaW9yPTYzMjA2LGUuaHlwaGVudHdvPTgyMDgsZS5pPTEwNSxlLmlhY3V0ZT0yMzcsZS5pYWN5cmlsbGljPTExMDMsZS5pYmVuZ2FsaT0yNDM5LGUuaWJvcG9tb2ZvPTEyNTgzLGUuaWJyZXZlPTMwMSxlLmljYXJvbj00NjQsZS5pY2lyY2xlPTk0MzIsZS5pY2lyY3VtZmxleD0yMzgsZS5pY3lyaWxsaWM9MTExMCxlLmlkYmxncmF2ZT01MjEsZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MyxlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5MzksZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjMsZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1OCxlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1LGUuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NCxlLmlkZW9ncmFwaGljY29tbWE9MTIyODksZS5pZGVvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MCxlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NSxlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MyxlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NyxlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxLGUuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTcsZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQsZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MCxlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQsZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MyxlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwLGUuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0LGUuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzLGUuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MixlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NixlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NyxlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2LGUuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OSxlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NixlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyLGUuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTIsZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MCxlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTgsZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4NjcsZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3LGUuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyLGUuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2OCxlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzLGUuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjYsZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MSxlLmlkZW9ncmFwaGljc3BhY2U9MTIyODgsZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MyxlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OSxlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OSxlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDgsZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwLGUuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0LGUuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDUsZS5pZGVvZ3JhcGhpY3plcm89MTIyOTUsZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MixlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5MzgsZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4LGUuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0LGUuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDAsZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxLGUuaWRldmE9MjMxMSxlLmlkaWVyZXNpcz0yMzksZS5pZGllcmVzaXNhY3V0ZT03NzI3LGUuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MyxlLmlkb3RiZWxvdz03ODgzLGUuaWVicmV2ZWN5cmlsbGljPTEyMzksZS5pZWN5cmlsbGljPTEwNzcsZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTcsZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMSxlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzLGUuaWV1bmdrb3JlYW49MTI2MTUsZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3LGUuaWdyYXZlPTIzNixlLmlndWphcmF0aT0yNjk1LGUuaWd1cm11a2hpPTI1NjcsZS5paGlyYWdhbmE9MTIzNTYsZS5paG9va2Fib3ZlPTc4ODEsZS5paWJlbmdhbGk9MjQ0MCxlLmlpY3lyaWxsaWM9MTA4MCxlLmlpZGV2YT0yMzEyLGUuaWlndWphcmF0aT0yNjk2LGUuaWlndXJtdWtoaT0yNTY4LGUuaWltYXRyYWd1cm11a2hpPTI2MjQsZS5paW52ZXJ0ZWRicmV2ZT01MjMsZS5paXNob3J0Y3lyaWxsaWM9MTA4MSxlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2LGUuaWl2b3dlbHNpZ25kZXZhPTIzNjgsZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTIsZS5paj0zMDcsZS5pa2F0YWthbmE9MTI0NTIsZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQsZS5pa29yZWFuPTEyNjQzLGUuaWxkZT03MzIsZS5pbHV5aGVicmV3PTE0NTIsZS5pbWFjcm9uPTI5OSxlLmltYWNyb25jeXJpbGxpYz0xMjUxLGUuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3LGUuaW1hdHJhZ3VybXVraGk9MjYyMyxlLmltb25vc3BhY2U9NjUzNTMsZS5pbmNyZW1lbnQ9ODcxMCxlLmluZmluaXR5PTg3MzQsZS5pbmlhcm1lbmlhbj0xMzg3LGUuaW50ZWdyYWw9ODc0NyxlLmludGVncmFsYm90dG9tPTg5OTMsZS5pbnRlZ3JhbGJ0PTg5OTMsZS5pbnRlZ3JhbGV4PTYzNzMzLGUuaW50ZWdyYWx0b3A9ODk5MixlLmludGVncmFsdHA9ODk5MixlLmludGVyc2VjdGlvbj04NzQ1LGUuaW50aXNxdWFyZT0xMzA2MSxlLmludmJ1bGxldD05Njg4LGUuaW52Y2lyY2xlPTk2ODksZS5pbnZzbWlsZWZhY2U9OTc4NyxlLmlvY3lyaWxsaWM9MTEwNSxlLmlvZ29uZWs9MzAzLGUuaW90YT05NTMsZS5pb3RhZGllcmVzaXM9OTcwLGUuaW90YWRpZXJlc2lzdG9ub3M9OTEyLGUuaW90YWxhdGluPTYxNyxlLmlvdGF0b25vcz05NDMsZS5pcGFyZW49OTM4MCxlLmlyaWd1cm11a2hpPTI2NzQsZS5pc21hbGxoaXJhZ2FuYT0xMjM1NSxlLmlzbWFsbGthdGFrYW5hPTEyNDUxLGUuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQsZS5pc3NoYXJiZW5nYWxpPTI1NTQsZS5pc3Ryb2tlPTYxNixlLmlzdXBlcmlvcj02MzIxMyxlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1LGUuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDEsZS5pdGlsZGU9Mjk3LGUuaXRpbGRlYmVsb3c9NzcyNSxlLml1Ym9wb21vZm89MTI1ODUsZS5pdWN5cmlsbGljPTExMDIsZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1LGUuaXZvd2Vsc2lnbmRldmE9MjM2NyxlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxLGUuaXpoaXRzYWN5cmlsbGljPTExNDEsZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzLGUuaj0xMDYsZS5qYWFybWVuaWFuPTEzOTMsZS5qYWJlbmdhbGk9MjQ2MCxlLmphZGV2YT0yMzMyLGUuamFndWphcmF0aT0yNzE2LGUuamFndXJtdWtoaT0yNTg4LGUuamJvcG9tb2ZvPTEyNTYwLGUuamNhcm9uPTQ5NixlLmpjaXJjbGU9OTQzMyxlLmpjaXJjdW1mbGV4PTMwOSxlLmpjcm9zc2VkdGFpbD02NjksZS5qZG90bGVzc3N0cm9rZT02MDcsZS5qZWN5cmlsbGljPTExMTIsZS5qZWVtYXJhYmljPTE1ODAsZS5qZWVtZmluYWxhcmFiaWM9NjUxODIsZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MyxlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQsZS5qZWhhcmFiaWM9MTY4OCxlLmplaGZpbmFsYXJhYmljPTY0Mzk1LGUuamhhYmVuZ2FsaT0yNDYxLGUuamhhZGV2YT0yMzMzLGUuamhhZ3VqYXJhdGk9MjcxNyxlLmpoYWd1cm11a2hpPTI1ODksZS5qaGVoYXJtZW5pYW49MTQwMyxlLmppcz0xMjI5MixlLmptb25vc3BhY2U9NjUzNTQsZS5qcGFyZW49OTM4MSxlLmpzdXBlcmlvcj02OTAsZS5rPTEwNyxlLmthYmFzaGtpcmN5cmlsbGljPTExODUsZS5rYWJlbmdhbGk9MjQ1MyxlLmthY3V0ZT03NzI5LGUua2FjeXJpbGxpYz0xMDgyLGUua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5LGUua2FkZXZhPTIzMjUsZS5rYWY9MTQ5OSxlLmthZmFyYWJpYz0xNjAzLGUua2FmZGFnZXNoPTY0MzE1LGUua2FmZGFnZXNoaGVicmV3PTY0MzE1LGUua2FmZmluYWxhcmFiaWM9NjUyNDIsZS5rYWZoZWJyZXc9MTQ5OSxlLmthZmluaXRpYWxhcmFiaWM9NjUyNDMsZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQsZS5rYWZyYWZlaGVicmV3PTY0MzMzLGUua2FndWphcmF0aT0yNzA5LGUua2FndXJtdWtoaT0yNTgxLGUua2FoaXJhZ2FuYT0xMjM2MyxlLmthaG9va2N5cmlsbGljPTEyMjAsZS5rYWthdGFrYW5hPTEyNDU5LGUua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5OCxlLmthcHBhPTk1NCxlLmthcHBhc3ltYm9sZ3JlZWs9MTAwOCxlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTcsZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzYsZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0LGUua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1LGUua2Fyb3JpaXNxdWFyZT0xMzA2OSxlLmthc2hpZGFhdXRvYXJhYmljPTE2MDAsZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMCxlLmthc21hbGxrYXRha2FuYT0xMjUzMyxlLmthc3F1YXJlPTEzMTg4LGUua2FzcmFhcmFiaWM9MTYxNixlLmthc3JhdGFuYXJhYmljPTE2MTMsZS5rYXN0cm9rZWN5cmlsbGljPTExODMsZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyLGUua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODEsZS5rYm9wb21vZm89MTI1NTgsZS5rY2Fsc3F1YXJlPTEzMTkzLGUua2Nhcm9uPTQ4OSxlLmtjZWRpbGxhPTMxMSxlLmtjaXJjbGU9OTQzNCxlLmtjb21tYWFjY2VudD0zMTEsZS5rZG90YmVsb3c9NzczMSxlLmtlaGFybWVuaWFuPTE0MTIsZS5rZWhpcmFnYW5hPTEyMzY5LGUua2VrYXRha2FuYT0xMjQ2NSxlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDEsZS5rZW5hcm1lbmlhbj0xMzkxLGUua2VzbWFsbGthdGFrYW5hPTEyNTM0LGUua2dyZWVubGFuZGljPTMxMixlLmtoYWJlbmdhbGk9MjQ1NCxlLmtoYWN5cmlsbGljPTEwOTMsZS5raGFkZXZhPTIzMjYsZS5raGFndWphcmF0aT0yNzEwLGUua2hhZ3VybXVraGk9MjU4MixlLmtoYWhhcmFiaWM9MTU4MixlLmtoYWhmaW5hbGFyYWJpYz02NTE5MCxlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxLGUua2hhaG1lZGlhbGFyYWJpYz02NTE5MixlLmtoZWljb3B0aWM9OTk5LGUua2hoYWRldmE9MjM5MyxlLmtoaGFndXJtdWtoaT0yNjQ5LGUua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjAsZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0LGUua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNixlLmtoaWV1a2hrb3JlYW49MTI2MTksZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTAsZS5raG9raGFpdGhhaT0zNTg2LGUua2hva2hvbnRoYWk9MzU4OSxlLmtob2todWF0dGhhaT0zNTg3LGUua2hva2h3YWl0aGFpPTM1ODgsZS5raG9tdXR0aGFpPTM2NzUsZS5raG9vaz00MDksZS5raG9yYWtoYW5ndGhhaT0zNTkwLGUua2h6c3F1YXJlPTEzMjAxLGUua2loaXJhZ2FuYT0xMjM2NSxlLmtpa2F0YWthbmE9MTI0NjEsZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5LGUua2lyb2d1cmFtdXNxdWFyZT0xMzA3NyxlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4LGUua2lyb3NxdWFyZT0xMzA3NixlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTAsZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQsZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTYsZS5raXllb2trb3JlYW49MTI1OTMsZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMCxlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2LGUua2xpbmViZWxvdz03NzMzLGUua2xzcXVhcmU9MTMyMDgsZS5rbWN1YmVkc3F1YXJlPTEzMjIyLGUua21vbm9zcGFjZT02NTM1NSxlLmttc3F1YXJlZHNxdWFyZT0xMzIxOCxlLmtvaGlyYWdhbmE9MTIzNzEsZS5rb2htc3F1YXJlPTEzMjQ4LGUua29rYWl0aGFpPTM1ODUsZS5rb2thdGFrYW5hPTEyNDY3LGUua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMixlLmtvb3Bvc3F1YXJlPTEzMDg2LGUua29wcGFjeXJpbGxpYz0xMTUzLGUua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5MjcsZS5rb3JvbmlzY21iPTgzNSxlLmtwYXJlbj05MzgyLGUua3Bhc3F1YXJlPTEzMjI2LGUua3NpY3lyaWxsaWM9MTEzNSxlLmt0c3F1YXJlPTEzMjYzLGUua3R1cm5lZD02NzAsZS5rdWhpcmFnYW5hPTEyMzY3LGUua3VrYXRha2FuYT0xMjQ2MyxlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDAsZS5rdnNxdWFyZT0xMzI0MCxlLmt3c3F1YXJlPTEzMjQ2LGUubD0xMDgsZS5sYWJlbmdhbGk9MjQ4MixlLmxhY3V0ZT0zMTQsZS5sYWRldmE9MjM1NCxlLmxhZ3VqYXJhdGk9MjczOCxlLmxhZ3VybXVraGk9MjYxMCxlLmxha2toYW5neWFvdGhhaT0zNjUzLGUubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2LGUubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MixlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzEsZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0LGUubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MyxlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NSxlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzAsZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5LGUubGFtYXJhYmljPTE2MDQsZS5sYW1iZGE9OTU1LGUubGFtYmRhc3Ryb2tlPTQxMSxlLmxhbWVkPTE1MDAsZS5sYW1lZGRhZ2VzaD02NDMxNixlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2LGUubGFtZWRoZWJyZXc9MTUwMCxlLmxhbWZpbmFsYXJhYmljPTY1MjQ2LGUubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNCxlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDcsZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMyxlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1LGUubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTAsZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDgsZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNCxlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2LGUubGFyZ2VjaXJjbGU9OTcxMSxlLmxiYXI9NDEwLGUubGJlbHQ9NjIwLGUubGJvcG9tb2ZvPTEyNTU2LGUubGNhcm9uPTMxOCxlLmxjZWRpbGxhPTMxNixlLmxjaXJjbGU9OTQzNSxlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MSxlLmxjb21tYWFjY2VudD0zMTYsZS5sZG90PTMyMCxlLmxkb3RhY2NlbnQ9MzIwLGUubGRvdGJlbG93PTc3MzUsZS5sZG90YmVsb3dtYWNyb249NzczNyxlLmxlZnRhbmdsZWFib3ZlY21iPTc5NCxlLmxlZnR0YWNrYmVsb3djbWI9NzkyLGUubGVzcz02MCxlLmxlc3NlcXVhbD04ODA0LGUubGVzc2VxdWFsb3JncmVhdGVyPTg5MjIsZS5sZXNzbW9ub3NwYWNlPTY1MzA4LGUubGVzc29yZXF1aXZhbGVudD04ODE4LGUubGVzc29yZ3JlYXRlcj04ODIyLGUubGVzc292ZXJlcXVhbD04ODA2LGUubGVzc3NtYWxsPTY1MTI0LGUubGV6aD02MjIsZS5sZmJsb2NrPTk2MTIsZS5saG9va3JldHJvZmxleD02MjEsZS5saXJhPTgzNTYsZS5saXduYXJtZW5pYW49MTM4OCxlLmxqPTQ1NyxlLmxqZWN5cmlsbGljPTExMTMsZS5sbD02MzE2OCxlLmxsYWRldmE9MjM1NSxlLmxsYWd1amFyYXRpPTI3MzksZS5sbGluZWJlbG93PTc3MzksZS5sbGxhZGV2YT0yMzU2LGUubGx2b2NhbGljYmVuZ2FsaT0yNTI5LGUubGx2b2NhbGljZGV2YT0yNDAxLGUubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxLGUubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzLGUubG1pZGRsZXRpbGRlPTYxOSxlLmxtb25vc3BhY2U9NjUzNTYsZS5sbXNxdWFyZT0xMzI2NCxlLmxvY2h1bGF0aGFpPTM2MjgsZS5sb2dpY2FsYW5kPTg3NDMsZS5sb2dpY2Fsbm90PTE3MixlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2LGUubG9naWNhbG9yPTg3NDQsZS5sb2xpbmd0aGFpPTM2MjEsZS5sb25ncz0zODMsZS5sb3dsaW5lY2VudGVybGluZT02NTEwMixlLmxvd2xpbmVjbWI9ODE4LGUubG93bGluZWRhc2hlZD02NTEwMSxlLmxvemVuZ2U9OTY3NCxlLmxwYXJlbj05MzgzLGUubHNsYXNoPTMyMixlLmxzcXVhcmU9ODQ2NyxlLmxzdXBlcmlvcj02MzIxNCxlLmx0c2hhZGU9OTYxNyxlLmx1dGhhaT0zNjIyLGUubHZvY2FsaWNiZW5nYWxpPTI0NDQsZS5sdm9jYWxpY2RldmE9MjMxNixlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwLGUubHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDIsZS5seHNxdWFyZT0xMzI2NyxlLm09MTA5LGUubWFiZW5nYWxpPTI0NzgsZS5tYWNyb249MTc1LGUubWFjcm9uYmVsb3djbWI9ODE3LGUubWFjcm9uY21iPTc3MixlLm1hY3Jvbmxvd21vZD03MTcsZS5tYWNyb25tb25vc3BhY2U9NjU1MDcsZS5tYWN1dGU9Nzc0MyxlLm1hZGV2YT0yMzUwLGUubWFndWphcmF0aT0yNzM0LGUubWFndXJtdWtoaT0yNjA2LGUubWFoYXBha2hoZWJyZXc9MTQ0NCxlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0LGUubWFoaXJhZ2FuYT0xMjQxNCxlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2MzcsZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNixlLm1haWNoYXR0YXdhdGhhaT0zNjU5LGUubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1LGUubWFpZWtsb3dsZWZ0dGhhaT02MzYyOCxlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3LGUubWFpZWt0aGFpPTM2NTYsZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjYsZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjAsZS5tYWloYW5ha2F0dGhhaT0zNjMzLGUubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjUsZS5tYWl0YWlraHV0aGFpPTM2NTUsZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMSxlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMCxlLm1haXRob3RoYWk9MzY1NyxlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2MjksZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNCxlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMyxlLm1haXRyaXRoYWk9MzY1OCxlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzIsZS5tYWl5YW1va3RoYWk9MzY1NCxlLm1ha2F0YWthbmE9MTI1MTAsZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzLGUubWFsZT05Nzk0LGUubWFuc3lvbnNxdWFyZT0xMzEyNyxlLm1hcWFmaGVicmV3PTE0NzAsZS5tYXJzPTk3OTQsZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NSxlLm1hc3F1YXJlPTEzMTg3LGUubWJvcG9tb2ZvPTEyNTUxLGUubWJzcXVhcmU9MTMyNjgsZS5tY2lyY2xlPTk0MzYsZS5tY3ViZWRzcXVhcmU9MTMyMjEsZS5tZG90YWNjZW50PTc3NDUsZS5tZG90YmVsb3c9Nzc0NyxlLm1lZW1hcmFiaWM9MTYwNSxlLm1lZW1maW5hbGFyYWJpYz02NTI1MCxlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxLGUubWVlbW1lZGlhbGFyYWJpYz02NTI1MixlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMSxlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQsZS5tZWV0b3J1c3F1YXJlPTEzMTMzLGUubWVoaXJhZ2FuYT0xMjQxNyxlLm1laXppZXJhc3F1YXJlPTEzMTgyLGUubWVrYXRha2FuYT0xMjUxMyxlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjYsZS5tZW09MTUwMixlLm1lbWRhZ2VzaD02NDMxOCxlLm1lbWRhZ2VzaGhlYnJldz02NDMxOCxlLm1lbWhlYnJldz0xNTAyLGUubWVuYXJtZW5pYW49MTM5NixlLm1lcmtoYWhlYnJldz0xNDQ1LGUubWVya2hha2VmdWxhaGVicmV3PTE0NDYsZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDYsZS5tZXJraGFsZWZ0aGVicmV3PTE0NDUsZS5taG9vaz02MjUsZS5taHpzcXVhcmU9MTMyMDIsZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MSxlLm1pZGRvdD0xODMsZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQsZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxOCxlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwLGUubWlldW1rb3JlYW49MTI2MDksZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTYsZS5taWV1bXBhcmVua29yZWFuPTEyODA0LGUubWlldW1waWV1cGtvcmVhbj0xMjY1NCxlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NSxlLm1paGlyYWdhbmE9MTI0MTUsZS5taWthdGFrYW5hPTEyNTExLGUubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNCxlLm1pbnVzPTg3MjIsZS5taW51c2JlbG93Y21iPTgwMCxlLm1pbnVzY2lyY2xlPTg4NTQsZS5taW51c21vZD03MjcsZS5taW51c3BsdXM9ODcyMyxlLm1pbnV0ZT04MjQyLGUubWlyaWJhYXJ1c3F1YXJlPTEzMTMwLGUubWlyaXNxdWFyZT0xMzEyOSxlLm1sb25nbGVndHVybmVkPTYyNCxlLm1sc3F1YXJlPTEzMjA2LGUubW1jdWJlZHNxdWFyZT0xMzIxOSxlLm1tb25vc3BhY2U9NjUzNTcsZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTUsZS5tb2hpcmFnYW5hPTEyNDE4LGUubW9obXNxdWFyZT0xMzI0OSxlLm1va2F0YWthbmE9MTI1MTQsZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3LGUubW9sc3F1YXJlPTEzMjcwLGUubW9tYXRoYWk9MzYxNyxlLm1vdmVyc3NxdWFyZT0xMzIyMyxlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQsZS5tcGFyZW49OTM4NCxlLm1wYXNxdWFyZT0xMzIyNyxlLm1zc3F1YXJlPTEzMjM1LGUubXN1cGVyaW9yPTYzMjE1LGUubXR1cm5lZD02MjMsZS5tdT0xODEsZS5tdTE9MTgxLGUubXVhc3F1YXJlPTEzMTg2LGUubXVjaGdyZWF0ZXI9ODgxMSxlLm11Y2hsZXNzPTg4MTAsZS5tdWZzcXVhcmU9MTMxOTYsZS5tdWdyZWVrPTk1NixlLm11Z3NxdWFyZT0xMzE5NyxlLm11aGlyYWdhbmE9MTI0MTYsZS5tdWthdGFrYW5hPTEyNTEyLGUubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNSxlLm11bHNxdWFyZT0xMzIwNSxlLm11bHRpcGx5PTIxNSxlLm11bXNxdWFyZT0xMzIxMSxlLm11bmFoaGVicmV3PTE0NDMsZS5tdW5haGxlZnRoZWJyZXc9MTQ0MyxlLm11c2ljYWxub3RlPTk4MzQsZS5tdXNpY2Fsbm90ZWRibD05ODM1LGUubXVzaWNmbGF0c2lnbj05ODM3LGUubXVzaWNzaGFycHNpZ249OTgzOSxlLm11c3NxdWFyZT0xMzIzNCxlLm11dnNxdWFyZT0xMzIzOCxlLm11d3NxdWFyZT0xMzI0NCxlLm12bWVnYXNxdWFyZT0xMzI0MSxlLm12c3F1YXJlPTEzMjM5LGUubXdtZWdhc3F1YXJlPTEzMjQ3LGUubXdzcXVhcmU9MTMyNDUsZS5uPTExMCxlLm5hYmVuZ2FsaT0yNDcyLGUubmFibGE9ODcxMSxlLm5hY3V0ZT0zMjQsZS5uYWRldmE9MjM0NCxlLm5hZ3VqYXJhdGk9MjcyOCxlLm5hZ3VybXVraGk9MjYwMCxlLm5haGlyYWdhbmE9MTIzOTQsZS5uYWthdGFrYW5hPTEyNDkwLGUubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMyxlLm5hcG9zdHJvcGhlPTMyOSxlLm5hc3F1YXJlPTEzMTg1LGUubmJvcG9tb2ZvPTEyNTU1LGUubmJzcGFjZT0xNjAsZS5uY2Fyb249MzI4LGUubmNlZGlsbGE9MzI2LGUubmNpcmNsZT05NDM3LGUubmNpcmN1bWZsZXhiZWxvdz03NzU1LGUubmNvbW1hYWNjZW50PTMyNixlLm5kb3RhY2NlbnQ9Nzc0OSxlLm5kb3RiZWxvdz03NzUxLGUubmVoaXJhZ2FuYT0xMjM5NyxlLm5la2F0YWthbmE9MTI0OTMsZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2LGUubmV3c2hlcWVsc2lnbj04MzYyLGUubmZzcXVhcmU9MTMxOTUsZS5uZ2FiZW5nYWxpPTI0NTcsZS5uZ2FkZXZhPTIzMjksZS5uZ2FndWphcmF0aT0yNzEzLGUubmdhZ3VybXVraGk9MjU4NSxlLm5nb25ndXRoYWk9MzU5MSxlLm5oaXJhZ2FuYT0xMjQzNSxlLm5ob29rbGVmdD02MjYsZS5uaG9va3JldHJvZmxleD02MjcsZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTEsZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNSxlLm5pZXVuY2lldWNrb3JlYW49MTI1OTcsZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NyxlLm5pZXVuaGlldWhrb3JlYW49MTI1OTgsZS5uaWV1bmtvcmVhbj0xMjU5NixlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0OCxlLm5pZXVucGFyZW5rb3JlYW49MTI4MDEsZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDcsZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NixlLm5paGlyYWdhbmE9MTIzOTUsZS5uaWthdGFrYW5hPTEyNDkxLGUubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNCxlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDEsZS5uaWtoYWhpdHRoYWk9MzY2MSxlLm5pbmU9NTcsZS5uaW5lYXJhYmljPTE2NDEsZS5uaW5lYmVuZ2FsaT0yNTQzLGUubmluZWNpcmNsZT05MzIwLGUubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzAsZS5uaW5lZGV2YT0yNDE1LGUubmluZWd1amFyYXRpPTI3OTksZS5uaW5lZ3VybXVraGk9MjY3MSxlLm5pbmVoYWNrYXJhYmljPTE2NDEsZS5uaW5laGFuZ3pob3U9MTIzMjksZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MCxlLm5pbmVpbmZlcmlvcj04MzI5LGUubmluZW1vbm9zcGFjZT02NTMwNSxlLm5pbmVvbGRzdHlsZT02MzI4OSxlLm5pbmVwYXJlbj05MzQwLGUubmluZXBlcmlvZD05MzYwLGUubmluZXBlcnNpYW49MTc4NSxlLm5pbmVyb21hbj04NTY4LGUubmluZXN1cGVyaW9yPTgzMTMsZS5uaW5ldGVlbmNpcmNsZT05MzMwLGUubmluZXRlZW5wYXJlbj05MzUwLGUubmluZXRlZW5wZXJpb2Q9OTM3MCxlLm5pbmV0aGFpPTM2NzMsZS5uaj00NjAsZS5uamVjeXJpbGxpYz0xMTE0LGUubmthdGFrYW5hPTEyNTMxLGUubmthdGFrYW5haGFsZndpZHRoPTY1NDM3LGUubmxlZ3JpZ2h0bG9uZz00MTQsZS5ubGluZWJlbG93PTc3NTMsZS5ubW9ub3NwYWNlPTY1MzU4LGUubm1zcXVhcmU9MTMyMTAsZS5ubmFiZW5nYWxpPTI0NjcsZS5ubmFkZXZhPTIzMzksZS5ubmFndWphcmF0aT0yNzIzLGUubm5hZ3VybXVraGk9MjU5NSxlLm5ubmFkZXZhPTIzNDUsZS5ub2hpcmFnYW5hPTEyMzk4LGUubm9rYXRha2FuYT0xMjQ5NCxlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTcsZS5ub25icmVha2luZ3NwYWNlPTE2MCxlLm5vbmVudGhhaT0zNjAzLGUubm9udXRoYWk9MzYwOSxlLm5vb25hcmFiaWM9MTYwNixlLm5vb25maW5hbGFyYWJpYz02NTI1NCxlLm5vb25naHVubmFhcmFiaWM9MTcyMixlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNSxlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1LGUubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyLGUubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NyxlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTYsZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjUsZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwLGUubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MyxlLm5vdGNvbnRhaW5zPTg3MTYsZS5ub3RlbGVtZW50PTg3MTMsZS5ub3RlbGVtZW50b2Y9ODcxMyxlLm5vdGVxdWFsPTg4MDAsZS5ub3RncmVhdGVyPTg4MTUsZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNyxlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjUsZS5ub3RpZGVudGljYWw9ODgwMixlLm5vdGxlc3M9ODgxNCxlLm5vdGxlc3Nub3JlcXVhbD04ODE2LGUubm90cGFyYWxsZWw9ODc0MixlLm5vdHByZWNlZGVzPTg4MzIsZS5ub3RzdWJzZXQ9ODgzNixlLm5vdHN1Y2NlZWRzPTg4MzMsZS5ub3RzdXBlcnNldD04ODM3LGUubm93YXJtZW5pYW49MTM5OCxlLm5wYXJlbj05Mzg1LGUubnNzcXVhcmU9MTMyMzMsZS5uc3VwZXJpb3I9ODMxOSxlLm50aWxkZT0yNDEsZS5udT05NTcsZS5udWhpcmFnYW5hPTEyMzk2LGUubnVrYXRha2FuYT0xMjQ5MixlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTUsZS5udWt0YWJlbmdhbGk9MjQ5MixlLm51a3RhZGV2YT0yMzY0LGUubnVrdGFndWphcmF0aT0yNzQ4LGUubnVrdGFndXJtdWtoaT0yNjIwLGUubnVtYmVyc2lnbj0zNSxlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODMsZS5udW1iZXJzaWduc21hbGw9NjUxMTksZS5udW1lcmFsc2lnbmdyZWVrPTg4NCxlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODUsZS5udW1lcm89ODQ3MCxlLm51bj0xNTA0LGUubnVuZGFnZXNoPTY0MzIwLGUubnVuZGFnZXNoaGVicmV3PTY0MzIwLGUubnVuaGVicmV3PTE1MDQsZS5udnNxdWFyZT0xMzIzNyxlLm53c3F1YXJlPTEzMjQzLGUubnlhYmVuZ2FsaT0yNDYyLGUubnlhZGV2YT0yMzM0LGUubnlhZ3VqYXJhdGk9MjcxOCxlLm55YWd1cm11a2hpPTI1OTAsZS5vPTExMSxlLm9hY3V0ZT0yNDMsZS5vYW5ndGhhaT0zNjI5LGUub2JhcnJlZD02MjksZS5vYmFycmVkY3lyaWxsaWM9MTI1NyxlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTksZS5vYmVuZ2FsaT0yNDUxLGUub2JvcG9tb2ZvPTEyNTcxLGUub2JyZXZlPTMzNSxlLm9jYW5kcmFkZXZhPTIzMjEsZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNSxlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzcsZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MSxlLm9jYXJvbj00NjYsZS5vY2lyY2xlPTk0MzgsZS5vY2lyY3VtZmxleD0yNDQsZS5vY2lyY3VtZmxleGFjdXRlPTc4ODksZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTcsZS5vY2lyY3VtZmxleGdyYXZlPTc4OTEsZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzLGUub2NpcmN1bWZsZXh0aWxkZT03ODk1LGUub2N5cmlsbGljPTEwODYsZS5vZGJsYWN1dGU9MzM3LGUub2RibGdyYXZlPTUyNSxlLm9kZXZhPTIzMjMsZS5vZGllcmVzaXM9MjQ2LGUub2RpZXJlc2lzY3lyaWxsaWM9MTI1NSxlLm9kb3RiZWxvdz03ODg1LGUub2U9MzM5LGUub2Vrb3JlYW49MTI2MzQsZS5vZ29uZWs9NzMxLGUub2dvbmVrY21iPTgwOCxlLm9ncmF2ZT0yNDIsZS5vZ3VqYXJhdGk9MjcwNyxlLm9oYXJtZW5pYW49MTQxMyxlLm9oaXJhZ2FuYT0xMjM2MixlLm9ob29rYWJvdmU9Nzg4NyxlLm9ob3JuPTQxNyxlLm9ob3JuYWN1dGU9Nzg5OSxlLm9ob3JuZG90YmVsb3c9NzkwNyxlLm9ob3JuZ3JhdmU9NzkwMSxlLm9ob3JuaG9va2Fib3ZlPTc5MDMsZS5vaG9ybnRpbGRlPTc5MDUsZS5vaHVuZ2FydW1sYXV0PTMzNyxlLm9pPTQxOSxlLm9pbnZlcnRlZGJyZXZlPTUyNyxlLm9rYXRha2FuYT0xMjQ1OCxlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NyxlLm9rb3JlYW49MTI2MzEsZS5vbGVoZWJyZXc9MTQ1MSxlLm9tYWNyb249MzMzLGUub21hY3JvbmFjdXRlPTc3NjMsZS5vbWFjcm9uZ3JhdmU9Nzc2MSxlLm9tZGV2YT0yMzg0LGUub21lZ2E9OTY5LGUub21lZ2ExPTk4MixlLm9tZWdhY3lyaWxsaWM9MTEyMSxlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxLGUub21lZ2Fyb3VuZGN5cmlsbGljPTExNDcsZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OSxlLm9tZWdhdG9ub3M9OTc0LGUub21ndWphcmF0aT0yNzY4LGUub21pY3Jvbj05NTksZS5vbWljcm9udG9ub3M9OTcyLGUub21vbm9zcGFjZT02NTM1OSxlLm9uZT00OSxlLm9uZWFyYWJpYz0xNjMzLGUub25lYmVuZ2FsaT0yNTM1LGUub25lY2lyY2xlPTkzMTIsZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyLGUub25lZGV2YT0yNDA3LGUub25lZG90ZW5sZWFkZXI9ODIyOCxlLm9uZWVpZ2h0aD04NTM5LGUub25lZml0dGVkPTYzMTk2LGUub25lZ3VqYXJhdGk9Mjc5MSxlLm9uZWd1cm11a2hpPTI2NjMsZS5vbmVoYWNrYXJhYmljPTE2MzMsZS5vbmVoYWxmPTE4OSxlLm9uZWhhbmd6aG91PTEyMzIxLGUub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMixlLm9uZWluZmVyaW9yPTgzMjEsZS5vbmVtb25vc3BhY2U9NjUyOTcsZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDgsZS5vbmVvbGRzdHlsZT02MzI4MSxlLm9uZXBhcmVuPTkzMzIsZS5vbmVwZXJpb2Q9OTM1MixlLm9uZXBlcnNpYW49MTc3NyxlLm9uZXF1YXJ0ZXI9MTg4LGUub25lcm9tYW49ODU2MCxlLm9uZXN1cGVyaW9yPTE4NSxlLm9uZXRoYWk9MzY2NSxlLm9uZXRoaXJkPTg1MzEsZS5vb2dvbmVrPTQ5MSxlLm9vZ29uZWttYWNyb249NDkzLGUub29ndXJtdWtoaT0yNTc5LGUub29tYXRyYWd1cm11a2hpPTI2MzUsZS5vb3Blbj01OTYsZS5vcGFyZW49OTM4NixlLm9wZW5idWxsZXQ9OTcwMixlLm9wdGlvbj04OTk3LGUub3JkZmVtaW5pbmU9MTcwLGUub3JkbWFzY3VsaW5lPTE4NixlLm9ydGhvZ29uYWw9ODczNSxlLm9zaG9ydGRldmE9MjMyMixlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3OCxlLm9zbGFzaD0yNDgsZS5vc2xhc2hhY3V0ZT01MTEsZS5vc21hbGxoaXJhZ2FuYT0xMjM2MSxlLm9zbWFsbGthdGFrYW5hPTEyNDU3LGUub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODcsZS5vc3Ryb2tlYWN1dGU9NTExLGUub3N1cGVyaW9yPTYzMjE2LGUub3RjeXJpbGxpYz0xMTUxLGUub3RpbGRlPTI0NSxlLm90aWxkZWFjdXRlPTc3NTcsZS5vdGlsZGVkaWVyZXNpcz03NzU5LGUub3Vib3BvbW9mbz0xMjU3NyxlLm92ZXJsaW5lPTgyNTQsZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTgsZS5vdmVybGluZWNtYj03NzMsZS5vdmVybGluZWRhc2hlZD02NTA5NyxlLm92ZXJsaW5lZGJsd2F2eT02NTEwMCxlLm92ZXJsaW5ld2F2eT02NTA5OSxlLm92ZXJzY29yZT0xNzUsZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3LGUub3Zvd2Vsc2lnbmRldmE9MjM3OSxlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzLGUucD0xMTIsZS5wYWFtcHNzcXVhcmU9MTMxODQsZS5wYWFzZW50b3NxdWFyZT0xMzA5OSxlLnBhYmVuZ2FsaT0yNDc0LGUucGFjdXRlPTc3NjUsZS5wYWRldmE9MjM0NixlLnBhZ2Vkb3duPTg2NzEsZS5wYWdldXA9ODY3MCxlLnBhZ3VqYXJhdGk9MjczMCxlLnBhZ3VybXVraGk9MjYwMixlLnBhaGlyYWdhbmE9MTI0MDEsZS5wYWl5YW5ub2l0aGFpPTM2MzEsZS5wYWthdGFrYW5hPTEyNDk3LGUucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2LGUucGFsb2Noa2FjeXJpbGxpYz0xMjE2LGUucGFuc2lvc2tvcmVhbj0xMjY3MSxlLnBhcmFncmFwaD0xODIsZS5wYXJhbGxlbD04NzQxLGUucGFyZW5sZWZ0PTQwLGUucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwLGUucGFyZW5sZWZ0YnQ9NjM3MjUsZS5wYXJlbmxlZnRleD02MzcyNCxlLnBhcmVubGVmdGluZmVyaW9yPTgzMzMsZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODgsZS5wYXJlbmxlZnRzbWFsbD02NTExMyxlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTcsZS5wYXJlbmxlZnR0cD02MzcyMyxlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3LGUucGFyZW5yaWdodD00MSxlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzEsZS5wYXJlbnJpZ2h0YnQ9NjM3MzYsZS5wYXJlbnJpZ2h0ZXg9NjM3MzUsZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNCxlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODksZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQsZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxOCxlLnBhcmVucmlnaHR0cD02MzczNCxlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3OCxlLnBhcnRpYWxkaWZmPTg3MDYsZS5wYXNlcWhlYnJldz0xNDcyLGUucGFzaHRhaGVicmV3PTE0MzMsZS5wYXNxdWFyZT0xMzIyNSxlLnBhdGFoPTE0NjMsZS5wYXRhaDExPTE0NjMsZS5wYXRhaDFkPTE0NjMsZS5wYXRhaDJhPTE0NjMsZS5wYXRhaGhlYnJldz0xNDYzLGUucGF0YWhuYXJyb3doZWJyZXc9MTQ2MyxlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzLGUucGF0YWh3aWRlaGVicmV3PTE0NjMsZS5wYXplcmhlYnJldz0xNDQxLGUucGJvcG9tb2ZvPTEyNTUwLGUucGNpcmNsZT05NDM5LGUucGRvdGFjY2VudD03NzY3LGUucGU9MTUwOCxlLnBlY3lyaWxsaWM9MTA4NyxlLnBlZGFnZXNoPTY0MzI0LGUucGVkYWdlc2hoZWJyZXc9NjQzMjQsZS5wZWV6aXNxdWFyZT0xMzExNSxlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjMsZS5wZWhhcmFiaWM9MTY2MixlLnBlaGFybWVuaWFuPTE0MDIsZS5wZWhlYnJldz0xNTA4LGUucGVoZmluYWxhcmFiaWM9NjQzNDMsZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0LGUucGVoaXJhZ2FuYT0xMjQxMCxlLnBlaG1lZGlhbGFyYWJpYz02NDM0NSxlLnBla2F0YWthbmE9MTI1MDYsZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxLGUucGVyYWZlaGVicmV3PTY0MzM0LGUucGVyY2VudD0zNyxlLnBlcmNlbnRhcmFiaWM9MTY0MixlLnBlcmNlbnRtb25vc3BhY2U9NjUyODUsZS5wZXJjZW50c21hbGw9NjUxMzAsZS5wZXJpb2Q9NDYsZS5wZXJpb2Rhcm1lbmlhbj0xNDE3LGUucGVyaW9kY2VudGVyZWQ9MTgzLGUucGVyaW9kaGFsZndpZHRoPTY1Mzc3LGUucGVyaW9kaW5mZXJpb3I9NjMyMDcsZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQsZS5wZXJpb2RzbWFsbD02NTEwNixlLnBlcmlvZHN1cGVyaW9yPTYzMjA4LGUucGVyaXNwb21lbmlncmVla2NtYj04MzQsZS5wZXJwZW5kaWN1bGFyPTg4NjksZS5wZXJ0aG91c2FuZD04MjQwLGUucGVzZXRhPTgzNTksZS5wZnNxdWFyZT0xMzE5NCxlLnBoYWJlbmdhbGk9MjQ3NSxlLnBoYWRldmE9MjM0NyxlLnBoYWd1amFyYXRpPTI3MzEsZS5waGFndXJtdWtoaT0yNjAzLGUucGhpPTk2NixlLnBoaTE9OTgxLGUucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjIsZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2LGUucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwOCxlLnBoaWV1cGhrb3JlYW49MTI2MjEsZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTIsZS5waGlsYXRpbj02MzIsZS5waGludGh1dGhhaT0zNjQyLGUucGhpc3ltYm9sZ3JlZWs9OTgxLGUucGhvb2s9NDIxLGUucGhvcGhhbnRoYWk9MzYxNCxlLnBob3BodW5ndGhhaT0zNjEyLGUucGhvc2FtcGhhb3RoYWk9MzYxNixlLnBpPTk2MCxlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNSxlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5LGUucGlldXBjaWV1Y2tvcmVhbj0xMjY2MixlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxLGUucGlldXBraXllb2trb3JlYW49MTI2NTgsZS5waWV1cGtvcmVhbj0xMjYxMCxlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDUsZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjAsZS5waWV1cHNpb3Nrb3JlYW49MTI2MTIsZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjEsZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjMsZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OSxlLnBpaGlyYWdhbmE9MTI0MDQsZS5waWthdGFrYW5hPTEyNTAwLGUucGlzeW1ib2xncmVlaz05ODIsZS5waXdyYXJtZW5pYW49MTQxMSxlLnBsYW5ja292ZXIycGk9ODQ2MyxlLnBsYW5ja292ZXIycGkxPTg0NjMsZS5wbHVzPTQzLGUucGx1c2JlbG93Y21iPTc5OSxlLnBsdXNjaXJjbGU9ODg1MyxlLnBsdXNtaW51cz0xNzcsZS5wbHVzbW9kPTcyNixlLnBsdXNtb25vc3BhY2U9NjUyOTEsZS5wbHVzc21hbGw9NjUxMjIsZS5wbHVzc3VwZXJpb3I9ODMxNCxlLnBtb25vc3BhY2U9NjUzNjAsZS5wbXNxdWFyZT0xMzI3MixlLnBvaGlyYWdhbmE9MTI0MTMsZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTksZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTYsZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4LGUucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NyxlLnBva2F0YWthbmE9MTI1MDksZS5wb3BsYXRoYWk9MzYxMSxlLnBvc3RhbG1hcms9MTIzMDYsZS5wb3N0YWxtYXJrZmFjZT0xMjMyMCxlLnBwYXJlbj05Mzg3LGUucHJlY2VkZXM9ODgyNixlLnByZXNjcmlwdGlvbj04NDc4LGUucHJpbWVtb2Q9Njk3LGUucHJpbWVyZXZlcnNlZD04MjQ1LGUucHJvZHVjdD04NzE5LGUucHJvamVjdGl2ZT04OTY1LGUucHJvbG9uZ2Vka2FuYT0xMjU0MCxlLnByb3BlbGxvcj04OTg0LGUucHJvcGVyc3Vic2V0PTg4MzQsZS5wcm9wZXJzdXBlcnNldD04ODM1LGUucHJvcG9ydGlvbj04NzU5LGUucHJvcG9ydGlvbmFsPTg3MzMsZS5wc2k9OTY4LGUucHNpY3lyaWxsaWM9MTEzNyxlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4LGUucHNzcXVhcmU9MTMyMzIsZS5wdWhpcmFnYW5hPTEyNDA3LGUucHVrYXRha2FuYT0xMjUwMyxlLnB2c3F1YXJlPTEzMjM2LGUucHdzcXVhcmU9MTMyNDIsZS5xPTExMyxlLnFhZGV2YT0yMzkyLGUucWFkbWFoZWJyZXc9MTQ0OCxlLnFhZmFyYWJpYz0xNjAyLGUucWFmZmluYWxhcmFiaWM9NjUyMzgsZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5LGUucWFmbWVkaWFsYXJhYmljPTY1MjQwLGUucWFtYXRzPTE0NjQsZS5xYW1hdHMxMD0xNDY0LGUucWFtYXRzMWE9MTQ2NCxlLnFhbWF0czFjPTE0NjQsZS5xYW1hdHMyNz0xNDY0LGUucWFtYXRzMjk9MTQ2NCxlLnFhbWF0czMzPTE0NjQsZS5xYW1hdHNkZT0xNDY0LGUucWFtYXRzaGVicmV3PTE0NjQsZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NCxlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQsZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0LGUucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQsZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NCxlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NCxlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NCxlLnFhcm5leXBhcmFoZWJyZXc9MTQzOSxlLnFib3BvbW9mbz0xMjU2MSxlLnFjaXJjbGU9OTQ0MCxlLnFob29rPTY3MixlLnFtb25vc3BhY2U9NjUzNjEsZS5xb2Y9MTUxMSxlLnFvZmRhZ2VzaD02NDMyNyxlLnFvZmRhZ2VzaGhlYnJldz02NDMyNyxlLnFvZmhlYnJldz0xNTExLGUucXBhcmVuPTkzODgsZS5xdWFydGVybm90ZT05ODMzLGUucXVidXRzPTE0NjcsZS5xdWJ1dHMxOD0xNDY3LGUucXVidXRzMjU9MTQ2NyxlLnF1YnV0czMxPTE0NjcsZS5xdWJ1dHNoZWJyZXc9MTQ2NyxlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3LGUucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3LGUucXVidXRzd2lkZWhlYnJldz0xNDY3LGUucXVlc3Rpb249NjMsZS5xdWVzdGlvbmFyYWJpYz0xNTY3LGUucXVlc3Rpb25hcm1lbmlhbj0xMzc0LGUucXVlc3Rpb25kb3duPTE5MSxlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzLGUucXVlc3Rpb25ncmVlaz04OTQsZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMSxlLnF1ZXN0aW9uc21hbGw9NjMyOTUsZS5xdW90ZWRibD0zNCxlLnF1b3RlZGJsYmFzZT04MjIyLGUucXVvdGVkYmxsZWZ0PTgyMjAsZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MixlLnF1b3RlZGJscHJpbWU9MTIzMTgsZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTcsZS5xdW90ZWRibHJpZ2h0PTgyMjEsZS5xdW90ZWxlZnQ9ODIxNixlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTksZS5xdW90ZXJldmVyc2VkPTgyMTksZS5xdW90ZXJpZ2h0PTgyMTcsZS5xdW90ZXJpZ2h0bj0zMjksZS5xdW90ZXNpbmdsYmFzZT04MjE4LGUucXVvdGVzaW5nbGU9MzksZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NyxlLnI9MTE0LGUucmFhcm1lbmlhbj0xNDA0LGUucmFiZW5nYWxpPTI0ODAsZS5yYWN1dGU9MzQxLGUucmFkZXZhPTIzNTIsZS5yYWRpY2FsPTg3MzAsZS5yYWRpY2FsZXg9NjM3MTcsZS5yYWRvdmVyc3NxdWFyZT0xMzIzMCxlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMSxlLnJhZHNxdWFyZT0xMzIyOSxlLnJhZmU9MTQ3MSxlLnJhZmVoZWJyZXc9MTQ3MSxlLnJhZ3VqYXJhdGk9MjczNixlLnJhZ3VybXVraGk9MjYwOCxlLnJhaGlyYWdhbmE9MTI0MjUsZS5yYWthdGFrYW5hPTEyNTIxLGUucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMSxlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NSxlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQsZS5yYW1zaG9ybj02MTIsZS5yYXRpbz04NzU4LGUucmJvcG9tb2ZvPTEyNTY2LGUucmNhcm9uPTM0NSxlLnJjZWRpbGxhPTM0MyxlLnJjaXJjbGU9OTQ0MSxlLnJjb21tYWFjY2VudD0zNDMsZS5yZGJsZ3JhdmU9NTI5LGUucmRvdGFjY2VudD03NzY5LGUucmRvdGJlbG93PTc3NzEsZS5yZG90YmVsb3dtYWNyb249Nzc3MyxlLnJlZmVyZW5jZW1hcms9ODI1MSxlLnJlZmxleHN1YnNldD04ODM4LGUucmVmbGV4c3VwZXJzZXQ9ODgzOSxlLnJlZ2lzdGVyZWQ9MTc0LGUucmVnaXN0ZXJzYW5zPTYzNzIwLGUucmVnaXN0ZXJzZXJpZj02MzE5NCxlLnJlaGFyYWJpYz0xNTg1LGUucmVoYXJtZW5pYW49MTQwOCxlLnJlaGZpbmFsYXJhYmljPTY1MTk4LGUucmVoaXJhZ2FuYT0xMjQyOCxlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0LGUucmVzaD0xNTEyLGUucmVzaGRhZ2VzaGhlYnJldz02NDMyOCxlLnJlc2hoZWJyZXc9MTUxMixlLnJldmVyc2VkdGlsZGU9ODc2NSxlLnJldmlhaGVicmV3PTE0MzEsZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMSxlLnJldmxvZ2ljYWxub3Q9ODk3NixlLnJmaXNoaG9vaz02MzgsZS5yZmlzaGhvb2tyZXZlcnNlZD02MzksZS5yaGFiZW5nYWxpPTI1MjUsZS5yaGFkZXZhPTIzOTcsZS5yaG89OTYxLGUucmhvb2s9NjM3LGUucmhvb2t0dXJuZWQ9NjM1LGUucmhvb2t0dXJuZWRzdXBlcmlvcj02OTMsZS5yaG9zeW1ib2xncmVlaz0xMDA5LGUucmhvdGljaG9va21vZD03MzQsZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTMsZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNyxlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5LGUucmlldWxoaWV1aGtvcmVhbj0xMjYwOCxlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyLGUucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5LGUucmlldWxrb3JlYW49MTI2MDEsZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzLGUucmlldWxwYW5zaW9za29yZWFuPTEyNjUyLGUucmlldWxwYXJlbmtvcmVhbj0xMjgwMyxlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNyxlLnJpZXVscGlldXBrb3JlYW49MTI2MDQsZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MSxlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNSxlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNixlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwLGUucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MyxlLnJpZ2h0YW5nbGU9ODczNSxlLnJpZ2h0dGFja2JlbG93Y21iPTc5MyxlLnJpZ2h0dHJpYW5nbGU9ODg5NSxlLnJpaGlyYWdhbmE9MTI0MjYsZS5yaWthdGFrYW5hPTEyNTIyLGUucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMixlLnJpbmc9NzMwLGUucmluZ2JlbG93Y21iPTgwNSxlLnJpbmdjbWI9Nzc4LGUucmluZ2hhbGZsZWZ0PTcwMyxlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjksZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTYsZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjMsZS5yaW5naGFsZnJpZ2h0PTcwMixlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjUsZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyLGUucmludmVydGVkYnJldmU9NTMxLGUucml0dG9ydXNxdWFyZT0xMzEzNyxlLnJsaW5lYmVsb3c9Nzc3NSxlLnJsb25nbGVnPTYzNixlLnJsb25nbGVndHVybmVkPTYzNCxlLnJtb25vc3BhY2U9NjUzNjIsZS5yb2hpcmFnYW5hPTEyNDI5LGUucm9rYXRha2FuYT0xMjUyNSxlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzUsZS5yb3J1YXRoYWk9MzYxOSxlLnJwYXJlbj05Mzg5LGUucnJhYmVuZ2FsaT0yNTI0LGUucnJhZGV2YT0yMzUzLGUucnJhZ3VybXVraGk9MjY1MixlLnJyZWhhcmFiaWM9MTY4MSxlLnJyZWhmaW5hbGFyYWJpYz02NDM5NyxlLnJydm9jYWxpY2JlbmdhbGk9MjUyOCxlLnJydm9jYWxpY2RldmE9MjQwMCxlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQsZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDAsZS5ycnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzIsZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2LGUucnN1cGVyaW9yPTYzMjE3LGUucnRibG9jaz05NjE2LGUucnR1cm5lZD02MzMsZS5ydHVybmVkc3VwZXJpb3I9NjkyLGUucnVoaXJhZ2FuYT0xMjQyNyxlLnJ1a2F0YWthbmE9MTI1MjMsZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzLGUucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2LGUucnVwZWVzaWduYmVuZ2FsaT0yNTQ3LGUucnVwaWFoPTYzMTk3LGUucnV0aGFpPTM2MjAsZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MyxlLnJ2b2NhbGljZGV2YT0yMzE1LGUucnZvY2FsaWNndWphcmF0aT0yNjk5LGUucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTksZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MSxlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NSxlLnM9MTE1LGUuc2FiZW5nYWxpPTI0ODgsZS5zYWN1dGU9MzQ3LGUuc2FjdXRlZG90YWNjZW50PTc3ODEsZS5zYWRhcmFiaWM9MTU4OSxlLnNhZGV2YT0yMzYwLGUuc2FkZmluYWxhcmFiaWM9NjUyMTAsZS5zYWRpbml0aWFsYXJhYmljPTY1MjExLGUuc2FkbWVkaWFsYXJhYmljPTY1MjEyLGUuc2FndWphcmF0aT0yNzQ0LGUuc2FndXJtdWtoaT0yNjE2LGUuc2FoaXJhZ2FuYT0xMjM3MyxlLnNha2F0YWthbmE9MTI0NjksZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzLGUuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxOCxlLnNhbWVraD0xNTA1LGUuc2FtZWtoZGFnZXNoPTY0MzIxLGUuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxLGUuc2FtZWtoaGVicmV3PTE1MDUsZS5zYXJhYWF0aGFpPTM2MzQsZS5zYXJhYWV0aGFpPTM2NDksZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MixlLnNhcmFhaW1haW11YW50aGFpPTM2NTEsZS5zYXJhYW10aGFpPTM2MzUsZS5zYXJhYXRoYWk9MzYzMixlLnNhcmFldGhhaT0zNjQ4LGUuc2FyYWlpbGVmdHRoYWk9NjM2MjIsZS5zYXJhaWl0aGFpPTM2MzcsZS5zYXJhaWxlZnR0aGFpPTYzNjIxLGUuc2FyYWl0aGFpPTM2MzYsZS5zYXJhb3RoYWk9MzY1MCxlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNCxlLnNhcmF1ZWV0aGFpPTM2MzksZS5zYXJhdWVsZWZ0dGhhaT02MzYyMyxlLnNhcmF1ZXRoYWk9MzYzOCxlLnNhcmF1dGhhaT0zNjQwLGUuc2FyYXV1dGhhaT0zNjQxLGUuc2JvcG9tb2ZvPTEyNTY5LGUuc2Nhcm9uPTM1MyxlLnNjYXJvbmRvdGFjY2VudD03NzgzLGUuc2NlZGlsbGE9MzUxLGUuc2Nod2E9NjAxLGUuc2Nod2FjeXJpbGxpYz0xMjQxLGUuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDMsZS5zY2h3YWhvb2s9NjAyLGUuc2NpcmNsZT05NDQyLGUuc2NpcmN1bWZsZXg9MzQ5LGUuc2NvbW1hYWNjZW50PTUzNyxlLnNkb3RhY2NlbnQ9Nzc3NyxlLnNkb3RiZWxvdz03Nzc5LGUuc2RvdGJlbG93ZG90YWNjZW50PTc3ODUsZS5zZWFndWxsYmVsb3djbWI9ODI4LGUuc2Vjb25kPTgyNDMsZS5zZWNvbmR0b25lY2hpbmVzZT03MTQsZS5zZWN0aW9uPTE2NyxlLnNlZW5hcmFiaWM9MTU4NyxlLnNlZW5maW5hbGFyYWJpYz02NTIwMixlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzLGUuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNCxlLnNlZ29sPTE0NjIsZS5zZWdvbDEzPTE0NjIsZS5zZWdvbDFmPTE0NjIsZS5zZWdvbDJjPTE0NjIsZS5zZWdvbGhlYnJldz0xNDYyLGUuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MixlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyLGUuc2Vnb2x0YWhlYnJldz0xNDI2LGUuc2Vnb2x3aWRlaGVicmV3PTE0NjIsZS5zZWhhcm1lbmlhbj0xNDA1LGUuc2VoaXJhZ2FuYT0xMjM3OSxlLnNla2F0YWthbmE9MTI0NzUsZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2LGUuc2VtaWNvbG9uPTU5LGUuc2VtaWNvbG9uYXJhYmljPTE1NjMsZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDcsZS5zZW1pY29sb25zbWFsbD02NTEwOCxlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NCxlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOSxlLnNlbnRpc3F1YXJlPTEzMDkwLGUuc2VudG9zcXVhcmU9MTMwOTEsZS5zZXZlbj01NSxlLnNldmVuYXJhYmljPTE2MzksZS5zZXZlbmJlbmdhbGk9MjU0MSxlLnNldmVuY2lyY2xlPTkzMTgsZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjgsZS5zZXZlbmRldmE9MjQxMyxlLnNldmVuZWlnaHRocz04NTQyLGUuc2V2ZW5ndWphcmF0aT0yNzk3LGUuc2V2ZW5ndXJtdWtoaT0yNjY5LGUuc2V2ZW5oYWNrYXJhYmljPTE2MzksZS5zZXZlbmhhbmd6aG91PTEyMzI3LGUuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4LGUuc2V2ZW5pbmZlcmlvcj04MzI3LGUuc2V2ZW5tb25vc3BhY2U9NjUzMDMsZS5zZXZlbm9sZHN0eWxlPTYzMjg3LGUuc2V2ZW5wYXJlbj05MzM4LGUuc2V2ZW5wZXJpb2Q9OTM1OCxlLnNldmVucGVyc2lhbj0xNzgzLGUuc2V2ZW5yb21hbj04NTY2LGUuc2V2ZW5zdXBlcmlvcj04MzExLGUuc2V2ZW50ZWVuY2lyY2xlPTkzMjgsZS5zZXZlbnRlZW5wYXJlbj05MzQ4LGUuc2V2ZW50ZWVucGVyaW9kPTkzNjgsZS5zZXZlbnRoYWk9MzY3MSxlLnNmdGh5cGhlbj0xNzMsZS5zaGFhcm1lbmlhbj0xMzk5LGUuc2hhYmVuZ2FsaT0yNDg2LGUuc2hhY3lyaWxsaWM9MTA5NixlLnNoYWRkYWFyYWJpYz0xNjE3LGUuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDksZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNixlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4LGUuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTAsZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNyxlLnNoYWRlPTk2MTgsZS5zaGFkZWRhcms9OTYxOSxlLnNoYWRlbGlnaHQ9OTYxNyxlLnNoYWRlbWVkaXVtPTk2MTgsZS5zaGFkZXZhPTIzNTgsZS5zaGFndWphcmF0aT0yNzQyLGUuc2hhZ3VybXVraGk9MjYxNCxlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNyxlLnNoYm9wb21vZm89MTI1NjUsZS5zaGNoYWN5cmlsbGljPTEwOTcsZS5zaGVlbmFyYWJpYz0xNTg4LGUuc2hlZW5maW5hbGFyYWJpYz02NTIwNixlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNyxlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4LGUuc2hlaWNvcHRpYz05OTUsZS5zaGVxZWw9ODM2MixlLnNoZXFlbGhlYnJldz04MzYyLGUuc2hldmE9MTQ1NixlLnNoZXZhMTE1PTE0NTYsZS5zaGV2YTE1PTE0NTYsZS5zaGV2YTIyPTE0NTYsZS5zaGV2YTJlPTE0NTYsZS5zaGV2YWhlYnJldz0xNDU2LGUuc2hldmFuYXJyb3doZWJyZXc9MTQ1NixlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2LGUuc2hldmF3aWRlaGVicmV3PTE0NTYsZS5zaGhhY3lyaWxsaWM9MTIxMSxlLnNoaW1hY29wdGljPTEwMDUsZS5zaGluPTE1MTMsZS5zaGluZGFnZXNoPTY0MzI5LGUuc2hpbmRhZ2VzaGhlYnJldz02NDMyOSxlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwLGUuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDAsZS5zaGluZGFnZXNoc2luZG90PTY0MzAxLGUuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMSxlLnNoaW5kb3RoZWJyZXc9MTQ3MyxlLnNoaW5oZWJyZXc9MTUxMyxlLnNoaW5zaGluZG90PTY0Mjk4LGUuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTgsZS5zaGluc2luZG90PTY0Mjk5LGUuc2hpbnNpbmRvdGhlYnJldz02NDI5OSxlLnNob29rPTY0MixlLnNpZ21hPTk2MyxlLnNpZ21hMT05NjIsZS5zaWdtYWZpbmFsPTk2MixlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMCxlLnNpaGlyYWdhbmE9MTIzNzUsZS5zaWthdGFrYW5hPTEyNDcxLGUuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNCxlLnNpbHVxaGVicmV3PTE0NjksZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OSxlLnNpbWlsYXI9ODc2NCxlLnNpbmRvdGhlYnJldz0xNDc0LGUuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTYsZS5zaW9zYXBhcmVua29yZWFuPTEyODIwLGUuc2lvc2NpZXVja29yZWFuPTEyNjcwLGUuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMixlLnNpb3NraXllb2trb3JlYW49MTI2NjYsZS5zaW9za29yZWFuPTEyNjEzLGUuc2lvc25pZXVua29yZWFuPTEyNjY3LGUuc2lvc3BhcmVua29yZWFuPTEyODA2LGUuc2lvc3BpZXVwa29yZWFuPTEyNjY5LGUuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2OCxlLnNpeD01NCxlLnNpeGFyYWJpYz0xNjM4LGUuc2l4YmVuZ2FsaT0yNTQwLGUuc2l4Y2lyY2xlPTkzMTcsZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3LGUuc2l4ZGV2YT0yNDEyLGUuc2l4Z3VqYXJhdGk9Mjc5NixlLnNpeGd1cm11a2hpPTI2NjgsZS5zaXhoYWNrYXJhYmljPTE2MzgsZS5zaXhoYW5nemhvdT0xMjMyNixlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4MzcsZS5zaXhpbmZlcmlvcj04MzI2LGUuc2l4bW9ub3NwYWNlPTY1MzAyLGUuc2l4b2xkc3R5bGU9NjMyODYsZS5zaXhwYXJlbj05MzM3LGUuc2l4cGVyaW9kPTkzNTcsZS5zaXhwZXJzaWFuPTE3ODIsZS5zaXhyb21hbj04NTY1LGUuc2l4c3VwZXJpb3I9ODMxMCxlLnNpeHRlZW5jaXJjbGU9OTMyNyxlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzLGUuc2l4dGVlbnBhcmVuPTkzNDcsZS5zaXh0ZWVucGVyaW9kPTkzNjcsZS5zaXh0aGFpPTM2NzAsZS5zbGFzaD00NyxlLnNsYXNobW9ub3NwYWNlPTY1Mjk1LGUuc2xvbmc9MzgzLGUuc2xvbmdkb3RhY2NlbnQ9NzgzNSxlLnNtaWxlZmFjZT05Nzg2LGUuc21vbm9zcGFjZT02NTM2MyxlLnNvZnBhc3VxaGVicmV3PTE0NzUsZS5zb2Z0aHlwaGVuPTE3MyxlLnNvZnRzaWduY3lyaWxsaWM9MTEwMCxlLnNvaGlyYWdhbmE9MTIzODEsZS5zb2thdGFrYW5hPTEyNDc3LGUuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNyxlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQsZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMyxlLnNvcnVzaXRoYWk9MzYyNSxlLnNvc2FsYXRoYWk9MzYyNCxlLnNvc290aGFpPTM1OTUsZS5zb3N1YXRoYWk9MzYyNixlLnNwYWNlPTMyLGUuc3BhY2VoYWNrYXJhYmljPTMyLGUuc3BhZGU9OTgyNCxlLnNwYWRlc3VpdGJsYWNrPTk4MjQsZS5zcGFkZXN1aXR3aGl0ZT05ODI4LGUuc3BhcmVuPTkzOTAsZS5zcXVhcmViZWxvd2NtYj04MjcsZS5zcXVhcmVjYz0xMzI1MixlLnNxdWFyZWNtPTEzMjEzLGUuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxLGUuc3F1YXJlaG9yaXpvbnRhbGZpbGw9OTYzNixlLnNxdWFyZWtnPTEzMTk5LGUuc3F1YXJla209MTMyMTQsZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjIsZS5zcXVhcmVsbj0xMzI2NSxlLnNxdWFyZWxvZz0xMzI2NixlLnNxdWFyZW1nPTEzMTk4LGUuc3F1YXJlbWlsPTEzMjY5LGUuc3F1YXJlbW09MTMyMTIsZS5zcXVhcmVtc3F1YXJlZD0xMzIxNyxlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4LGUuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5LGUuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwLGUuc3F1YXJldmVydGljYWxmaWxsPTk2MzcsZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzUsZS5zcnNxdWFyZT0xMzI3NSxlLnNzYWJlbmdhbGk9MjQ4NyxlLnNzYWRldmE9MjM1OSxlLnNzYWd1amFyYXRpPTI3NDMsZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3LGUuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NyxlLnNzYW5naWV1bmdrb3JlYW49MTI2NzIsZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NCxlLnNzYW5nbmlldW5rb3JlYW49MTI2NDUsZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExLGUuc3NhbmdzaW9za29yZWFuPTEyNjE0LGUuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDAsZS5zc3VwZXJpb3I9NjMyMTgsZS5zdGVybGluZz0xNjMsZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNSxlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMixlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjEsZS5zdWJzZXQ9ODgzNCxlLnN1YnNldG5vdGVxdWFsPTg4NDIsZS5zdWJzZXRvcmVxdWFsPTg4MzgsZS5zdWNjZWVkcz04ODI3LGUuc3VjaHRoYXQ9ODcxNSxlLnN1aGlyYWdhbmE9MTIzNzcsZS5zdWthdGFrYW5hPTEyNDczLGUuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNSxlLnN1a3VuYXJhYmljPTE2MTgsZS5zdW1tYXRpb249ODcyMSxlLnN1bj05Nzg4LGUuc3VwZXJzZXQ9ODgzNSxlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MyxlLnN1cGVyc2V0b3JlcXVhbD04ODM5LGUuc3ZzcXVhcmU9MTMyNzYsZS5zeW91d2FlcmFzcXVhcmU9MTMxODAsZS50PTExNixlLnRhYmVuZ2FsaT0yNDY4LGUudGFja2Rvd249ODg2OCxlLnRhY2tsZWZ0PTg4NjcsZS50YWRldmE9MjM0MCxlLnRhZ3VqYXJhdGk9MjcyNCxlLnRhZ3VybXVraGk9MjU5NixlLnRhaGFyYWJpYz0xNTkxLGUudGFoZmluYWxhcmFiaWM9NjUyMTgsZS50YWhpbml0aWFsYXJhYmljPTY1MjE5LGUudGFoaXJhZ2FuYT0xMjM4MyxlLnRhaG1lZGlhbGFyYWJpYz02NTIyMCxlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODEsZS50YWthdGFrYW5hPTEyNDc5LGUudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwOCxlLnRhdHdlZWxhcmFiaWM9MTYwMCxlLnRhdT05NjQsZS50YXY9MTUxNCxlLnRhdmRhZ2VzPTY0MzMwLGUudGF2ZGFnZXNoPTY0MzMwLGUudGF2ZGFnZXNoaGVicmV3PTY0MzMwLGUudGF2aGVicmV3PTE1MTQsZS50YmFyPTM1OSxlLnRib3BvbW9mbz0xMjU1NCxlLnRjYXJvbj0zNTcsZS50Y2N1cmw9NjgwLGUudGNlZGlsbGE9MzU1LGUudGNoZWhhcmFiaWM9MTY3MCxlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzksZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODAsZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MSxlLnRjaXJjbGU9OTQ0MyxlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MyxlLnRjb21tYWFjY2VudD0zNTUsZS50ZGllcmVzaXM9NzgzMSxlLnRkb3RhY2NlbnQ9Nzc4NyxlLnRkb3RiZWxvdz03Nzg5LGUudGVjeXJpbGxpYz0xMDkwLGUudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3LGUudGVoYXJhYmljPTE1NzgsZS50ZWhmaW5hbGFyYWJpYz02NTE3NCxlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQsZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNCxlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzUsZS50ZWhpcmFnYW5hPTEyMzkwLGUudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzMsZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjMsZS50ZWhtYXJidXRhYXJhYmljPTE1NzcsZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzIsZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzYsZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NixlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNixlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNyxlLnRla2F0YWthbmE9MTI0ODYsZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExLGUudGVsZXBob25lPTg0ODEsZS50ZWxlcGhvbmVibGFjaz05NzQyLGUudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwLGUudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5LGUudGVuY2lyY2xlPTkzMjEsZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxLGUudGVucGFyZW49OTM0MSxlLnRlbnBlcmlvZD05MzYxLGUudGVucm9tYW49ODU2OSxlLnRlc2g9Njc5LGUudGV0PTE0OTYsZS50ZXRkYWdlc2g9NjQzMTIsZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTIsZS50ZXRoZWJyZXc9MTQ5NixlLnRldHNlY3lyaWxsaWM9MTIwNSxlLnRldmlyaGVicmV3PTE0MzUsZS50ZXZpcmxlZnRoZWJyZXc9MTQzNSxlLnRoYWJlbmdhbGk9MjQ2OSxlLnRoYWRldmE9MjM0MSxlLnRoYWd1amFyYXRpPTI3MjUsZS50aGFndXJtdWtoaT0yNTk3LGUudGhhbGFyYWJpYz0xNTg0LGUudGhhbGZpbmFsYXJhYmljPTY1MTk2LGUudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MCxlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5LGUudGhhbnRoYWtoYXR0aGFpPTM2NjAsZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2MzgsZS50aGVoYXJhYmljPTE1NzksZS50aGVoZmluYWxhcmFiaWM9NjUxNzgsZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OSxlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODAsZS50aGVyZWV4aXN0cz04NzA3LGUudGhlcmVmb3JlPTg3NTYsZS50aGV0YT05NTIsZS50aGV0YTE9OTc3LGUudGhldGFzeW1ib2xncmVlaz05NzcsZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMSxlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjUsZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3LGUudGhpZXV0aGtvcmVhbj0xMjYyMCxlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMSxlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQsZS50aGlydGVlbnBhcmVuPTkzNDQsZS50aGlydGVlbnBlcmlvZD05MzY0LGUudGhvbmFuZ21vbnRob3RoYWk9MzYwMSxlLnRob29rPTQyOSxlLnRob3BodXRoYW90aGFpPTM2MDIsZS50aG9ybj0yNTQsZS50aG90aGFoYW50aGFpPTM2MDcsZS50aG90aGFudGhhaT0zNjAwLGUudGhvdGhvbmd0aGFpPTM2MDgsZS50aG90aHVuZ3RoYWk9MzYwNixlLnRob3VzYW5kY3lyaWxsaWM9MTE1NCxlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0LGUudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0LGUudGhyZWU9NTEsZS50aHJlZWFyYWJpYz0xNjM1LGUudGhyZWViZW5nYWxpPTI1MzcsZS50aHJlZWNpcmNsZT05MzE0LGUudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0LGUudGhyZWVkZXZhPTI0MDksZS50aHJlZWVpZ2h0aHM9ODU0MCxlLnRocmVlZ3VqYXJhdGk9Mjc5MyxlLnRocmVlZ3VybXVraGk9MjY2NSxlLnRocmVlaGFja2FyYWJpYz0xNjM1LGUudGhyZWVoYW5nemhvdT0xMjMyMyxlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNCxlLnRocmVlaW5mZXJpb3I9ODMyMyxlLnRocmVlbW9ub3NwYWNlPTY1Mjk5LGUudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTAsZS50aHJlZW9sZHN0eWxlPTYzMjgzLGUudGhyZWVwYXJlbj05MzM0LGUudGhyZWVwZXJpb2Q9OTM1NCxlLnRocmVlcGVyc2lhbj0xNzc5LGUudGhyZWVxdWFydGVycz0xOTAsZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4LGUudGhyZWVyb21hbj04NTYyLGUudGhyZWVzdXBlcmlvcj0xNzksZS50aHJlZXRoYWk9MzY2NyxlLnRoenNxdWFyZT0xMzIwNCxlLnRpaGlyYWdhbmE9MTIzODUsZS50aWthdGFrYW5hPTEyNDgxLGUudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOSxlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTIsZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTYsZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTgsZS50aWtldXRrb3JlYW49MTI1OTksZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMixlLnRpbGRlPTczMixlLnRpbGRlYmVsb3djbWI9ODE2LGUudGlsZGVjbWI9NzcxLGUudGlsZGVjb21iPTc3MSxlLnRpbGRlZG91YmxlY21iPTg2NCxlLnRpbGRlb3BlcmF0b3I9ODc2NCxlLnRpbGRlb3ZlcmxheWNtYj04MjAsZS50aWxkZXZlcnRpY2FsY21iPTgzMCxlLnRpbWVzY2lyY2xlPTg4NTUsZS50aXBlaGFoZWJyZXc9MTQzMCxlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMCxlLnRpcHBpZ3VybXVraGk9MjY3MixlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NSxlLnRpd25hcm1lbmlhbj0xNDA3LGUudGxpbmViZWxvdz03NzkxLGUudG1vbm9zcGFjZT02NTM2NCxlLnRvYXJtZW5pYW49MTM4NSxlLnRvaGlyYWdhbmE9MTIzOTIsZS50b2thdGFrYW5hPTEyNDg4LGUudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMixlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxLGUudG9uZWJhcmV4dHJhbG93bW9kPTc0NSxlLnRvbmViYXJoaWdobW9kPTc0MixlLnRvbmViYXJsb3dtb2Q9NzQ0LGUudG9uZWJhcm1pZG1vZD03NDMsZS50b25lZml2ZT00NDUsZS50b25lc2l4PTM4OSxlLnRvbmV0d289NDI0LGUudG9ub3M9OTAwLGUudG9uc3F1YXJlPTEzMDk1LGUudG9wYXRha3RoYWk9MzU5OSxlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwOCxlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3LGUudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODEsZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5LGUudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4LGUudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyLGUudG90YW90aGFpPTM2MDUsZS50cGFsYXRhbGhvb2s9NDI3LGUudHBhcmVuPTkzOTEsZS50cmFkZW1hcms9ODQ4MixlLnRyYWRlbWFya3NhbnM9NjM3MjIsZS50cmFkZW1hcmtzZXJpZj02MzE5NSxlLnRyZXRyb2ZsZXhob29rPTY0OCxlLnRyaWFnZG49OTY2MCxlLnRyaWFnbGY9OTY2OCxlLnRyaWFncnQ9OTY1OCxlLnRyaWFndXA9OTY1MCxlLnRzPTY3OCxlLnRzYWRpPTE1MTAsZS50c2FkaWRhZ2VzaD02NDMyNixlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2LGUudHNhZGloZWJyZXc9MTUxMCxlLnRzZWN5cmlsbGljPTEwOTQsZS50c2VyZT0xNDYxLGUudHNlcmUxMj0xNDYxLGUudHNlcmUxZT0xNDYxLGUudHNlcmUyYj0xNDYxLGUudHNlcmVoZWJyZXc9MTQ2MSxlLnRzZXJlbmFycm93aGVicmV3PTE0NjEsZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MSxlLnRzZXJld2lkZWhlYnJldz0xNDYxLGUudHNoZWN5cmlsbGljPTExMTUsZS50c3VwZXJpb3I9NjMyMTksZS50dGFiZW5nYWxpPTI0NjMsZS50dGFkZXZhPTIzMzUsZS50dGFndWphcmF0aT0yNzE5LGUudHRhZ3VybXVraGk9MjU5MSxlLnR0ZWhhcmFiaWM9MTY1NyxlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OSxlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwLGUudHRlaG1lZGlhbGFyYWJpYz02NDM2MSxlLnR0aGFiZW5nYWxpPTI0NjQsZS50dGhhZGV2YT0yMzM2LGUudHRoYWd1amFyYXRpPTI3MjAsZS50dGhhZ3VybXVraGk9MjU5MixlLnR0dXJuZWQ9NjQ3LGUudHVoaXJhZ2FuYT0xMjM4OCxlLnR1a2F0YWthbmE9MTI0ODQsZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwLGUudHVzbWFsbGhpcmFnYW5hPTEyMzg3LGUudHVzbWFsbGthdGFrYW5hPTEyNDgzLGUudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxLGUudHdlbHZlY2lyY2xlPTkzMjMsZS50d2VsdmVwYXJlbj05MzQzLGUudHdlbHZlcGVyaW9kPTkzNjMsZS50d2VsdmVyb21hbj04NTcxLGUudHdlbnR5Y2lyY2xlPTkzMzEsZS50d2VudHloYW5nemhvdT0yMTMxNixlLnR3ZW50eXBhcmVuPTkzNTEsZS50d2VudHlwZXJpb2Q9OTM3MSxlLnR3bz01MCxlLnR3b2FyYWJpYz0xNjM0LGUudHdvYmVuZ2FsaT0yNTM2LGUudHdvY2lyY2xlPTkzMTMsZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzLGUudHdvZGV2YT0yNDA4LGUudHdvZG90ZW5sZWFkZXI9ODIyOSxlLnR3b2RvdGxlYWRlcj04MjI5LGUudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzIsZS50d29ndWphcmF0aT0yNzkyLGUudHdvZ3VybXVraGk9MjY2NCxlLnR3b2hhY2thcmFiaWM9MTYzNCxlLnR3b2hhbmd6aG91PTEyMzIyLGUudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMyxlLnR3b2luZmVyaW9yPTgzMjIsZS50d29tb25vc3BhY2U9NjUyOTgsZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDksZS50d29vbGRzdHlsZT02MzI4MixlLnR3b3BhcmVuPTkzMzMsZS50d29wZXJpb2Q9OTM1MyxlLnR3b3BlcnNpYW49MTc3OCxlLnR3b3JvbWFuPTg1NjEsZS50d29zdHJva2U9NDQzLGUudHdvc3VwZXJpb3I9MTc4LGUudHdvdGhhaT0zNjY2LGUudHdvdGhpcmRzPTg1MzIsZS51PTExNyxlLnVhY3V0ZT0yNTAsZS51YmFyPTY0OSxlLnViZW5nYWxpPTI0NDEsZS51Ym9wb21vZm89MTI1ODQsZS51YnJldmU9MzY1LGUudWNhcm9uPTQ2OCxlLnVjaXJjbGU9OTQ0NCxlLnVjaXJjdW1mbGV4PTI1MSxlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OSxlLnVjeXJpbGxpYz0xMDkxLGUudWRhdHRhZGV2YT0yMzg1LGUudWRibGFjdXRlPTM2OSxlLnVkYmxncmF2ZT01MzMsZS51ZGV2YT0yMzEzLGUudWRpZXJlc2lzPTI1MixlLnVkaWVyZXNpc2FjdXRlPTQ3MixlLnVkaWVyZXNpc2JlbG93PTc3OTUsZS51ZGllcmVzaXNjYXJvbj00NzQsZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1LGUudWRpZXJlc2lzZ3JhdmU9NDc2LGUudWRpZXJlc2lzbWFjcm9uPTQ3MCxlLnVkb3RiZWxvdz03OTA5LGUudWdyYXZlPTI0OSxlLnVndWphcmF0aT0yNjk3LGUudWd1cm11a2hpPTI1NjksZS51aGlyYWdhbmE9MTIzNTgsZS51aG9va2Fib3ZlPTc5MTEsZS51aG9ybj00MzIsZS51aG9ybmFjdXRlPTc5MTMsZS51aG9ybmRvdGJlbG93PTc5MjEsZS51aG9ybmdyYXZlPTc5MTUsZS51aG9ybmhvb2thYm92ZT03OTE3LGUudWhvcm50aWxkZT03OTE5LGUudWh1bmdhcnVtbGF1dD0zNjksZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NyxlLnVpbnZlcnRlZGJyZXZlPTUzNSxlLnVrYXRha2FuYT0xMjQ1NCxlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NSxlLnVrY3lyaWxsaWM9MTE0NSxlLnVrb3JlYW49MTI2MzYsZS51bWFjcm9uPTM2MyxlLnVtYWNyb25jeXJpbGxpYz0xMjYzLGUudW1hY3JvbmRpZXJlc2lzPTc4MDMsZS51bWF0cmFndXJtdWtoaT0yNjI1LGUudW1vbm9zcGFjZT02NTM2NSxlLnVuZGVyc2NvcmU9OTUsZS51bmRlcnNjb3JlZGJsPTgyMTUsZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzLGUudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1LGUudW5kZXJzY29yZXdhdnk9NjUxMDMsZS51bmlvbj04NzQ2LGUudW5pdmVyc2FsPTg3MDQsZS51b2dvbmVrPTM3MSxlLnVwYXJlbj05MzkyLGUudXBibG9jaz05NjAwLGUudXBwZXJkb3RoZWJyZXc9MTQ3NixlLnVwc2lsb249OTY1LGUudXBzaWxvbmRpZXJlc2lzPTk3MSxlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NCxlLnVwc2lsb25sYXRpbj02NTAsZS51cHNpbG9udG9ub3M9OTczLGUudXB0YWNrYmVsb3djbWI9Nzk3LGUudXB0YWNrbW9kPTcyNCxlLnVyYWd1cm11a2hpPTI2NzUsZS51cmluZz0zNjcsZS51c2hvcnRjeXJpbGxpYz0xMTE4LGUudXNtYWxsaGlyYWdhbmE9MTIzNTcsZS51c21hbGxrYXRha2FuYT0xMjQ1MyxlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1LGUudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OSxlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDEsZS51dGlsZGU9MzYxLGUudXRpbGRlYWN1dGU9NzgwMSxlLnV0aWxkZWJlbG93PTc3OTcsZS51dWJlbmdhbGk9MjQ0MixlLnV1ZGV2YT0yMzE0LGUudXVndWphcmF0aT0yNjk4LGUudXVndXJtdWtoaT0yNTcwLGUudXVtYXRyYWd1cm11a2hpPTI2MjYsZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5OCxlLnV1dm93ZWxzaWduZGV2YT0yMzcwLGUudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0LGUudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NyxlLnV2b3dlbHNpZ25kZXZhPTIzNjksZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MyxlLnY9MTE4LGUudmFkZXZhPTIzNTcsZS52YWd1amFyYXRpPTI3NDEsZS52YWd1cm11a2hpPTI2MTMsZS52YWthdGFrYW5hPTEyNTM1LGUudmF2PTE0OTMsZS52YXZkYWdlc2g9NjQzMDksZS52YXZkYWdlc2g2NT02NDMwOSxlLnZhdmRhZ2VzaGhlYnJldz02NDMwOSxlLnZhdmhlYnJldz0xNDkzLGUudmF2aG9sYW09NjQzMzEsZS52YXZob2xhbWhlYnJldz02NDMzMSxlLnZhdnZhdmhlYnJldz0xNTIwLGUudmF2eW9kaGVicmV3PTE1MjEsZS52Y2lyY2xlPTk0NDUsZS52ZG90YmVsb3c9NzgwNyxlLnZlY3lyaWxsaWM9MTA3NCxlLnZlaGFyYWJpYz0xNzAwLGUudmVoZmluYWxhcmFiaWM9NjQzNjMsZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0LGUudmVobWVkaWFsYXJhYmljPTY0MzY1LGUudmVrYXRha2FuYT0xMjUzNyxlLnZlbnVzPTk3OTIsZS52ZXJ0aWNhbGJhcj0xMjQsZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODEsZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDksZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2LGUudmVydGljYWxsaW5lbW9kPTcxMixlLnZld2FybWVuaWFuPTE0MDYsZS52aG9vaz02NTEsZS52aWthdGFrYW5hPTEyNTM2LGUudmlyYW1hYmVuZ2FsaT0yNTA5LGUudmlyYW1hZGV2YT0yMzgxLGUudmlyYW1hZ3VqYXJhdGk9Mjc2NSxlLnZpc2FyZ2FiZW5nYWxpPTI0MzUsZS52aXNhcmdhZGV2YT0yMzA3LGUudmlzYXJnYWd1amFyYXRpPTI2OTEsZS52bW9ub3NwYWNlPTY1MzY2LGUudm9hcm1lbmlhbj0xNDAwLGUudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDYsZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MixlLnZvaWNlZG1hcmtrYW5hPTEyNDQzLGUudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0MzgsZS52b2thdGFrYW5hPTEyNTM4LGUudnBhcmVuPTkzOTMsZS52dGlsZGU9NzgwNSxlLnZ0dXJuZWQ9NjUyLGUudnVoaXJhZ2FuYT0xMjQzNixlLnZ1a2F0YWthbmE9MTI1MzIsZS53PTExOSxlLndhY3V0ZT03ODExLGUud2Fla29yZWFuPTEyNjMzLGUud2FoaXJhZ2FuYT0xMjQzMSxlLndha2F0YWthbmE9MTI1MjcsZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2LGUud2Frb3JlYW49MTI2MzIsZS53YXNtYWxsaGlyYWdhbmE9MTI0MzAsZS53YXNtYWxsa2F0YWthbmE9MTI1MjYsZS53YXR0b3NxdWFyZT0xMzE0MyxlLndhdmVkYXNoPTEyMzE2LGUud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NixlLndhd2FyYWJpYz0xNjA4LGUud2F3ZmluYWxhcmFiaWM9NjUyNjIsZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzIsZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTgsZS53YnNxdWFyZT0xMzI3NyxlLndjaXJjbGU9OTQ0NixlLndjaXJjdW1mbGV4PTM3MyxlLndkaWVyZXNpcz03ODEzLGUud2RvdGFjY2VudD03ODE1LGUud2RvdGJlbG93PTc4MTcsZS53ZWhpcmFnYW5hPTEyNDMzLGUud2VpZXJzdHJhc3M9ODQ3MixlLndla2F0YWthbmE9MTI1MjksZS53ZWtvcmVhbj0xMjYzOCxlLndlb2tvcmVhbj0xMjYzNyxlLndncmF2ZT03ODA5LGUud2hpdGVidWxsZXQ9OTcwMixlLndoaXRlY2lyY2xlPTk2NzUsZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OSxlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDIsZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTEsZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMyxlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTIsZS53aGl0ZWRpYW1vbmQ9OTY3MSxlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyLGUud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjEsZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NyxlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NSxlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwLGUud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExLGUud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3LGUud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NSxlLndoaXRlc21hbGxzcXVhcmU9OTY0MyxlLndoaXRlc21pbGluZ2ZhY2U9OTc4NixlLndoaXRlc3F1YXJlPTk2MzMsZS53aGl0ZXN0YXI9OTczNCxlLndoaXRldGVsZXBob25lPTk3NDMsZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMixlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMyxlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MyxlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTEsZS53aWhpcmFnYW5hPTEyNDMyLGUud2lrYXRha2FuYT0xMjUyOCxlLndpa29yZWFuPTEyNjM5LGUud21vbm9zcGFjZT02NTM2NyxlLndvaGlyYWdhbmE9MTI0MzQsZS53b2thdGFrYW5hPTEyNTMwLGUud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MixlLndvbj04MzYxLGUud29ubW9ub3NwYWNlPTY1NTEwLGUud293YWVudGhhaT0zNjIzLGUud3BhcmVuPTkzOTQsZS53cmluZz03ODMyLGUud3N1cGVyaW9yPTY5NSxlLnd0dXJuZWQ9NjUzLGUud3lubj00NDcsZS54PTEyMCxlLnhhYm92ZWNtYj04MjksZS54Ym9wb21vZm89MTI1NjIsZS54Y2lyY2xlPTk0NDcsZS54ZGllcmVzaXM9NzgyMSxlLnhkb3RhY2NlbnQ9NzgxOSxlLnhlaGFybWVuaWFuPTEzODksZS54aT05NTgsZS54bW9ub3NwYWNlPTY1MzY4LGUueHBhcmVuPTkzOTUsZS54c3VwZXJpb3I9NzM5LGUueT0xMjEsZS55YWFkb3NxdWFyZT0xMzEzNCxlLnlhYmVuZ2FsaT0yNDc5LGUueWFjdXRlPTI1MyxlLnlhZGV2YT0yMzUxLGUueWFla29yZWFuPTEyNjI2LGUueWFndWphcmF0aT0yNzM1LGUueWFndXJtdWtoaT0yNjA3LGUueWFoaXJhZ2FuYT0xMjQyMCxlLnlha2F0YWthbmE9MTI1MTYsZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4LGUueWFrb3JlYW49MTI2MjUsZS55YW1ha2thbnRoYWk9MzY2MixlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOSxlLnlhc21hbGxrYXRha2FuYT0xMjUxNSxlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4OCxlLnlhdGN5cmlsbGljPTExMjMsZS55Y2lyY2xlPTk0NDgsZS55Y2lyY3VtZmxleD0zNzUsZS55ZGllcmVzaXM9MjU1LGUueWRvdGFjY2VudD03ODIzLGUueWRvdGJlbG93PTc5MjUsZS55ZWhhcmFiaWM9MTYxMCxlLnllaGJhcnJlZWFyYWJpYz0xNzQ2LGUueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzEsZS55ZWhmaW5hbGFyYWJpYz02NTI2NixlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NCxlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MixlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzLGUueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NCxlLnllaGluaXRpYWxhcmFiaWM9NjUyNjcsZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjgsZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMyxlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMCxlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MCxlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDUsZS55ZWtvcmVhbj0xMjYzMCxlLnllbj0xNjUsZS55ZW5tb25vc3BhY2U9NjU1MDksZS55ZW9rb3JlYW49MTI2MjksZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3OCxlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwLGUueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwLGUueWVyaWN5cmlsbGljPTEwOTksZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczLGUueWVzaWV1bmdrb3JlYW49MTI2NzMsZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzUsZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQsZS55ZXRpdmhlYnJldz0xNDM0LGUueWdyYXZlPTc5MjMsZS55aG9vaz00MzYsZS55aG9va2Fib3ZlPTc5MjcsZS55aWFybWVuaWFuPTEzOTcsZS55aWN5cmlsbGljPTExMTEsZS55aWtvcmVhbj0xMjY0MixlLnlpbnlhbmc9OTc3NSxlLnlpd25hcm1lbmlhbj0xNDEwLGUueW1vbm9zcGFjZT02NTM2OSxlLnlvZD0xNDk3LGUueW9kZGFnZXNoPTY0MzEzLGUueW9kZGFnZXNoaGVicmV3PTY0MzEzLGUueW9kaGVicmV3PTE0OTcsZS55b2R5b2RoZWJyZXc9MTUyMixlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3LGUueW9oaXJhZ2FuYT0xMjQyNCxlLnlvaWtvcmVhbj0xMjY4MSxlLnlva2F0YWthbmE9MTI1MjAsZS55b2thdGFrYW5haGFsZndpZHRoPTY1NDMwLGUueW9rb3JlYW49MTI2MzUsZS55b3NtYWxsaGlyYWdhbmE9MTI0MjMsZS55b3NtYWxsa2F0YWthbmE9MTI1MTksZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTAsZS55b3RncmVlaz0xMDExLGUueW95YWVrb3JlYW49MTI2ODAsZS55b3lha29yZWFuPTEyNjc5LGUueW95YWt0aGFpPTM2MTgsZS55b3lpbmd0aGFpPTM1OTcsZS55cGFyZW49OTM5NixlLnlwb2dlZ3JhbW1lbmk9ODkwLGUueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNyxlLnlyPTQyMixlLnlyaW5nPTc4MzMsZS55c3VwZXJpb3I9Njk2LGUueXRpbGRlPTc5MjksZS55dHVybmVkPTY1NCxlLnl1aGlyYWdhbmE9MTI0MjIsZS55dWlrb3JlYW49MTI2ODQsZS55dWthdGFrYW5hPTEyNTE4LGUueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOSxlLnl1a29yZWFuPTEyNjQwLGUueXVzYmlnY3lyaWxsaWM9MTEzMSxlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMyxlLnl1c2xpdHRsZWN5cmlsbGljPTExMjcsZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjksZS55dXNtYWxsaGlyYWdhbmE9MTI0MjEsZS55dXNtYWxsa2F0YWthbmE9MTI1MTcsZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODksZS55dXlla29yZWFuPTEyNjgzLGUueXV5ZW9rb3JlYW49MTI2ODIsZS55eWFiZW5nYWxpPTI1MjcsZS55eWFkZXZhPTIzOTksZS56PTEyMixlLnphYXJtZW5pYW49MTM4MixlLnphY3V0ZT0zNzgsZS56YWRldmE9MjM5NSxlLnphZ3VybXVraGk9MjY1MSxlLnphaGFyYWJpYz0xNTkyLGUuemFoZmluYWxhcmFiaWM9NjUyMjIsZS56YWhpbml0aWFsYXJhYmljPTY1MjIzLGUuemFoaXJhZ2FuYT0xMjM3NCxlLnphaG1lZGlhbGFyYWJpYz02NTIyNCxlLnphaW5hcmFiaWM9MTU4NixlLnphaW5maW5hbGFyYWJpYz02NTIwMCxlLnpha2F0YWthbmE9MTI0NzAsZS56YXFlZmdhZG9saGVicmV3PTE0MjksZS56YXFlZnFhdGFuaGVicmV3PTE0MjgsZS56YXJxYWhlYnJldz0xNDMyLGUuemF5aW49MTQ5NCxlLnpheWluZGFnZXNoPTY0MzEwLGUuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTAsZS56YXlpbmhlYnJldz0xNDk0LGUuemJvcG9tb2ZvPTEyNTY3LGUuemNhcm9uPTM4MixlLnpjaXJjbGU9OTQ0OSxlLnpjaXJjdW1mbGV4PTc4MjUsZS56Y3VybD02NTcsZS56ZG90PTM4MCxlLnpkb3RhY2NlbnQ9MzgwLGUuemRvdGJlbG93PTc4MjcsZS56ZWN5cmlsbGljPTEwNzksZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzcsZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NyxlLnplaGlyYWdhbmE9MTIzODAsZS56ZWthdGFrYW5hPTEyNDc2LGUuemVybz00OCxlLnplcm9hcmFiaWM9MTYzMixlLnplcm9iZW5nYWxpPTI1MzQsZS56ZXJvZGV2YT0yNDA2LGUuemVyb2d1amFyYXRpPTI3OTAsZS56ZXJvZ3VybXVraGk9MjY2MixlLnplcm9oYWNrYXJhYmljPTE2MzIsZS56ZXJvaW5mZXJpb3I9ODMyMCxlLnplcm9tb25vc3BhY2U9NjUyOTYsZS56ZXJvb2xkc3R5bGU9NjMyODAsZS56ZXJvcGVyc2lhbj0xNzc2LGUuemVyb3N1cGVyaW9yPTgzMDQsZS56ZXJvdGhhaT0zNjY0LGUuemVyb3dpZHRoam9pbmVyPTY1Mjc5LGUuemVyb3dpZHRobm9uam9pbmVyPTgyMDQsZS56ZXJvd2lkdGhzcGFjZT04MjAzLGUuemV0YT05NTAsZS56aGJvcG9tb2ZvPTEyNTYzLGUuemhlYXJtZW5pYW49MTM4NixlLnpoZWJyZXZlY3lyaWxsaWM9MTIxOCxlLnpoZWN5cmlsbGljPTEwNzgsZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1LGUuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1LGUuemloaXJhZ2FuYT0xMjM3NixlLnppa2F0YWthbmE9MTI0NzIsZS56aW5vcmhlYnJldz0xNDU0LGUuemxpbmViZWxvdz03ODI5LGUuem1vbm9zcGFjZT02NTM3MCxlLnpvaGlyYWdhbmE9MTIzODIsZS56b2thdGFrYW5hPTEyNDc4LGUuenBhcmVuPTkzOTcsZS56cmV0cm9mbGV4aG9vaz02NTYsZS56c3Ryb2tlPTQzOCxlLnp1aGlyYWdhbmE9MTIzNzgsZS56dWthdGFrYW5hPTEyNDc0LGVbIi5ub3RkZWYiXT0wLGUuYW5nYnJhY2tldGxlZnRiaWc9OTAwMSxlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDEsZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMSxlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxLGUuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDIsZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMixlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMixlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMixlLmFycm93aG9va2xlZnQ9ODYxOCxlLmFycm93aG9va3JpZ2h0PTg2MTcsZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzYsZS5hcnJvd2xlZnRib3RoYWxmPTg2MzcsZS5hcnJvd25vcnRoZWFzdD04NTk5LGUuYXJyb3dub3J0aHdlc3Q9ODU5OCxlLmFycm93cmlnaHR0b3BoYWxmPTg2NDAsZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxLGUuYXJyb3dzb3V0aGVhc3Q9ODYwMCxlLmFycm93c291dGh3ZXN0PTg2MDEsZS5iYWNrc2xhc2hiaWc9ODcyNixlLmJhY2tzbGFzaEJpZz04NzI2LGUuYmFja3NsYXNoQmlnZz04NzI2LGUuYmFja3NsYXNoYmlnZz04NzI2LGUuYmFyZGJsPTgyMTQsZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OSxlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OSxlLmJyYWNlaHRpcHVwbGVmdD02NTA4MCxlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODAsZS5icmFjZWxlZnRCaWc9MTIzLGUuYnJhY2VsZWZ0YmlnPTEyMyxlLmJyYWNlbGVmdGJpZ2c9MTIzLGUuYnJhY2VsZWZ0QmlnZz0xMjMsZS5icmFjZXJpZ2h0QmlnPTEyNSxlLmJyYWNlcmlnaHRiaWc9MTI1LGUuYnJhY2VyaWdodGJpZ2c9MTI1LGUuYnJhY2VyaWdodEJpZ2c9MTI1LGUuYnJhY2tldGxlZnRiaWc9OTEsZS5icmFja2V0bGVmdEJpZz05MSxlLmJyYWNrZXRsZWZ0YmlnZz05MSxlLmJyYWNrZXRsZWZ0QmlnZz05MSxlLmJyYWNrZXRyaWdodEJpZz05MyxlLmJyYWNrZXRyaWdodGJpZz05MyxlLmJyYWNrZXRyaWdodGJpZ2c9OTMsZS5icmFja2V0cmlnaHRCaWdnPTkzLGUuY2VpbGluZ2xlZnRiaWc9ODk2OCxlLmNlaWxpbmdsZWZ0QmlnPTg5NjgsZS5jZWlsaW5nbGVmdEJpZ2c9ODk2OCxlLmNlaWxpbmdsZWZ0YmlnZz04OTY4LGUuY2VpbGluZ3JpZ2h0YmlnPTg5NjksZS5jZWlsaW5ncmlnaHRCaWc9ODk2OSxlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OSxlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OSxlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NyxlLmNpcmNsZWRvdHRleHQ9ODg1NyxlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1LGUuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTUsZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzLGUuY2lyY2xlcGx1c3RleHQ9ODg1MyxlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MCxlLmNvbnRpbnRlZ3JhbHRleHQ9ODc1MCxlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMCxlLmNvcHJvZHVjdHRleHQ9ODcyMCxlLmZsb29ybGVmdEJpZz04OTcwLGUuZmxvb3JsZWZ0YmlnPTg5NzAsZS5mbG9vcmxlZnRiaWdnPTg5NzAsZS5mbG9vcmxlZnRCaWdnPTg5NzAsZS5mbG9vcnJpZ2h0YmlnPTg5NzEsZS5mbG9vcnJpZ2h0QmlnPTg5NzEsZS5mbG9vcnJpZ2h0QmlnZz04OTcxLGUuZmxvb3JyaWdodGJpZ2c9ODk3MSxlLmhhdHdpZGU9NzcwLGUuaGF0d2lkZXI9NzcwLGUuaGF0d2lkZXN0PTc3MCxlLmludGVyY2FsPTc0ODgsZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NyxlLmludGVncmFsdGV4dD04NzQ3LGUuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4LGUuaW50ZXJzZWN0aW9udGV4dD04ODk4LGUubG9naWNhbGFuZGRpc3BsYXk9ODc0MyxlLmxvZ2ljYWxhbmR0ZXh0PTg3NDMsZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQsZS5sb2dpY2Fsb3J0ZXh0PTg3NDQsZS5wYXJlbmxlZnRCaWc9NDAsZS5wYXJlbmxlZnRiaWc9NDAsZS5wYXJlbmxlZnRCaWdnPTQwLGUucGFyZW5sZWZ0YmlnZz00MCxlLnBhcmVucmlnaHRCaWc9NDEsZS5wYXJlbnJpZ2h0YmlnPTQxLGUucGFyZW5yaWdodEJpZ2c9NDEsZS5wYXJlbnJpZ2h0YmlnZz00MSxlLnByaW1lPTgyNDIsZS5wcm9kdWN0ZGlzcGxheT04NzE5LGUucHJvZHVjdHRleHQ9ODcxOSxlLnJhZGljYWxiaWc9ODczMCxlLnJhZGljYWxCaWc9ODczMCxlLnJhZGljYWxCaWdnPTg3MzAsZS5yYWRpY2FsYmlnZz04NzMwLGUucmFkaWNhbGJ0PTg3MzAsZS5yYWRpY2FsdHA9ODczMCxlLnJhZGljYWx2ZXJ0ZXg9ODczMCxlLnNsYXNoYmlnPTQ3LGUuc2xhc2hCaWc9NDcsZS5zbGFzaEJpZ2c9NDcsZS5zbGFzaGJpZ2c9NDcsZS5zdW1tYXRpb25kaXNwbGF5PTg3MjEsZS5zdW1tYXRpb250ZXh0PTg3MjEsZS50aWxkZXdpZGU9NzMyLGUudGlsZGV3aWRlcj03MzIsZS50aWxkZXdpZGVzdD03MzIsZS51bmlvbmRpc3BsYXk9ODg5OSxlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDYsZS51bmlvbm11bHRpdGV4dD04ODQ2LGUudW5pb25zcWRpc3BsYXk9ODg1MixlLnVuaW9uc3F0ZXh0PTg4NTIsZS51bmlvbnRleHQ9ODg5OSxlLnZleHRlbmRkb3VibGU9ODc0MSxlLnZleHRlbmRzaW5nbGU9ODczOX0pKSxpPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0zMixlLmExPTk5ODUsZS5hMj05OTg2LGUuYTIwMj05OTg3LGUuYTM9OTk4OCxlLmE0PTk3NDIsZS5hNT05OTkwLGUuYTExOT05OTkxLGUuYTExOD05OTkyLGUuYTExNz05OTkzLGUuYTExPTk3NTUsZS5hMTI9OTc1OCxlLmExMz05OTk2LGUuYTE0PTk5OTcsZS5hMTU9OTk5OCxlLmExNj05OTk5LGUuYTEwNT0xZTQsZS5hMTc9MTAwMDEsZS5hMTg9MTAwMDIsZS5hMTk9MTAwMDMsZS5hMjA9MTAwMDQsZS5hMjE9MTAwMDUsZS5hMjI9MTAwMDYsZS5hMjM9MTAwMDcsZS5hMjQ9MTAwMDgsZS5hMjU9MTAwMDksZS5hMjY9MTAwMTAsZS5hMjc9MTAwMTEsZS5hMjg9MTAwMTIsZS5hNj0xMDAxMyxlLmE3PTEwMDE0LGUuYTg9MTAwMTUsZS5hOT0xMDAxNixlLmExMD0xMDAxNyxlLmEyOT0xMDAxOCxlLmEzMD0xMDAxOSxlLmEzMT0xMDAyMCxlLmEzMj0xMDAyMSxlLmEzMz0xMDAyMixlLmEzND0xMDAyMyxlLmEzNT05NzMzLGUuYTM2PTEwMDI1LGUuYTM3PTEwMDI2LGUuYTM4PTEwMDI3LGUuYTM5PTEwMDI4LGUuYTQwPTEwMDI5LGUuYTQxPTEwMDMwLGUuYTQyPTEwMDMxLGUuYTQzPTEwMDMyLGUuYTQ0PTEwMDMzLGUuYTQ1PTEwMDM0LGUuYTQ2PTEwMDM1LGUuYTQ3PTEwMDM2LGUuYTQ4PTEwMDM3LGUuYTQ5PTEwMDM4LGUuYTUwPTEwMDM5LGUuYTUxPTEwMDQwLGUuYTUyPTEwMDQxLGUuYTUzPTEwMDQyLGUuYTU0PTEwMDQzLGUuYTU1PTEwMDQ0LGUuYTU2PTEwMDQ1LGUuYTU3PTEwMDQ2LGUuYTU4PTEwMDQ3LGUuYTU5PTEwMDQ4LGUuYTYwPTEwMDQ5LGUuYTYxPTEwMDUwLGUuYTYyPTEwMDUxLGUuYTYzPTEwMDUyLGUuYTY0PTEwMDUzLGUuYTY1PTEwMDU0LGUuYTY2PTEwMDU1LGUuYTY3PTEwMDU2LGUuYTY4PTEwMDU3LGUuYTY5PTEwMDU4LGUuYTcwPTEwMDU5LGUuYTcxPTk2NzksZS5hNzI9MTAwNjEsZS5hNzM9OTYzMixlLmE3ND0xMDA2MyxlLmEyMDM9MTAwNjQsZS5hNzU9MTAwNjUsZS5hMjA0PTEwMDY2LGUuYTc2PTk2NTAsZS5hNzc9OTY2MCxlLmE3OD05NjcwLGUuYTc5PTEwMDcwLGUuYTgxPTk2ODcsZS5hODI9MTAwNzIsZS5hODM9MTAwNzMsZS5hODQ9MTAwNzQsZS5hOTc9MTAwNzUsZS5hOTg9MTAwNzYsZS5hOTk9MTAwNzcsZS5hMTAwPTEwMDc4LGUuYTEwMT0xMDA4MSxlLmExMDI9MTAwODIsZS5hMTAzPTEwMDgzLGUuYTEwND0xMDA4NCxlLmExMDY9MTAwODUsZS5hMTA3PTEwMDg2LGUuYTEwOD0xMDA4NyxlLmExMTI9OTgyNyxlLmExMTE9OTgzMCxlLmExMTA9OTgyOSxlLmExMDk9OTgyNCxlLmExMjA9OTMxMixlLmExMjE9OTMxMyxlLmExMjI9OTMxNCxlLmExMjM9OTMxNSxlLmExMjQ9OTMxNixlLmExMjU9OTMxNyxlLmExMjY9OTMxOCxlLmExMjc9OTMxOSxlLmExMjg9OTMyMCxlLmExMjk9OTMyMSxlLmExMzA9MTAxMDIsZS5hMTMxPTEwMTAzLGUuYTEzMj0xMDEwNCxlLmExMzM9MTAxMDUsZS5hMTM0PTEwMTA2LGUuYTEzNT0xMDEwNyxlLmExMzY9MTAxMDgsZS5hMTM3PTEwMTA5LGUuYTEzOD0xMDExMCxlLmExMzk9MTAxMTEsZS5hMTQwPTEwMTEyLGUuYTE0MT0xMDExMyxlLmExNDI9MTAxMTQsZS5hMTQzPTEwMTE1LGUuYTE0ND0xMDExNixlLmExNDU9MTAxMTcsZS5hMTQ2PTEwMTE4LGUuYTE0Nz0xMDExOSxlLmExNDg9MTAxMjAsZS5hMTQ5PTEwMTIxLGUuYTE1MD0xMDEyMixlLmExNTE9MTAxMjMsZS5hMTUyPTEwMTI0LGUuYTE1Mz0xMDEyNSxlLmExNTQ9MTAxMjYsZS5hMTU1PTEwMTI3LGUuYTE1Nj0xMDEyOCxlLmExNTc9MTAxMjksZS5hMTU4PTEwMTMwLGUuYTE1OT0xMDEzMSxlLmExNjA9MTAxMzIsZS5hMTYxPTg1OTQsZS5hMTYzPTg1OTYsZS5hMTY0PTg1OTcsZS5hMTk2PTEwMTM2LGUuYTE2NT0xMDEzNyxlLmExOTI9MTAxMzgsZS5hMTY2PTEwMTM5LGUuYTE2Nz0xMDE0MCxlLmExNjg9MTAxNDEsZS5hMTY5PTEwMTQyLGUuYTE3MD0xMDE0MyxlLmExNzE9MTAxNDQsZS5hMTcyPTEwMTQ1LGUuYTE3Mz0xMDE0NixlLmExNjI9MTAxNDcsZS5hMTc0PTEwMTQ4LGUuYTE3NT0xMDE0OSxlLmExNzY9MTAxNTAsZS5hMTc3PTEwMTUxLGUuYTE3OD0xMDE1MixlLmExNzk9MTAxNTMsZS5hMTkzPTEwMTU0LGUuYTE4MD0xMDE1NSxlLmExOTk9MTAxNTYsZS5hMTgxPTEwMTU3LGUuYTIwMD0xMDE1OCxlLmExODI9MTAxNTksZS5hMjAxPTEwMTYxLGUuYTE4Mz0xMDE2MixlLmExODQ9MTAxNjMsZS5hMTk3PTEwMTY0LGUuYTE4NT0xMDE2NSxlLmExOTQ9MTAxNjYsZS5hMTk4PTEwMTY3LGUuYTE4Nj0xMDE2OCxlLmExOTU9MTAxNjksZS5hMTg3PTEwMTcwLGUuYTE4OD0xMDE3MSxlLmExODk9MTAxNzIsZS5hMTkwPTEwMTczLGUuYTE5MT0xMDE3NCxlLmE4OT0xMDA4OCxlLmE5MD0xMDA4OSxlLmE5Mz0xMDA5MCxlLmE5ND0xMDA5MSxlLmE5MT0xMDA5MixlLmE5Mj0xMDA5MyxlLmEyMDU9MTAwOTQsZS5hODU9MTAwOTUsZS5hMjA2PTEwMDk2LGUuYTg2PTEwMDk3LGUuYTg3PTEwMDk4LGUuYTg4PTEwMDk5LGUuYTk1PTEwMTAwLGUuYTk2PTEwMTAxLGVbIi5ub3RkZWYiXT0wfSkpfSwoZSx0LHIpPT57ci5yKHQpLHIuZCh0LHtjbGVhclVuaWNvZGVDYWNoZXM6KCk9PnUsZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeTooKT0+aCxnZXRVbmljb2RlRm9yR2x5cGg6KCk9PmksZ2V0VW5pY29kZVJhbmdlRm9yOigpPT5vLG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzOigpPT5hfSk7Y29uc3Qgbj0oMCxyKDE0OSkuZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5LGVbNjMxOTNdPTE2OSxlWzYzNzIwXT0xNzQsZVs2MzE5NF09MTc0LGVbNjM3MjJdPTg0ODIsZVs2MzE5NV09ODQ4MixlWzYzNzI5XT05MTI3LGVbNjM3MzBdPTkxMjgsZVs2MzczMV09OTEyOSxlWzYzNzQwXT05MTMxLGVbNjM3NDFdPTkxMzIsZVs2Mzc0Ml09OTEzMyxlWzYzNzI2XT05MTIxLGVbNjM3MjddPTkxMjIsZVs2MzcyOF09OTEyMyxlWzYzNzM3XT05MTI0LGVbNjM3MzhdPTkxMjUsZVs2MzczOV09OTEyNixlWzYzNzIzXT05MTE1LGVbNjM3MjRdPTkxMTYsZVs2MzcyNV09OTExNyxlWzYzNzM0XT05MTE4LGVbNjM3MzVdPTkxMTksZVs2MzczNl09OTEyMH0pKTtmdW5jdGlvbiBhKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/bigpW2VdfHxlOjE3Mz09PWU/NDU6ZX1mdW5jdGlvbiBpKGUsdCl7bGV0IHI9dFtlXTtpZih2b2lkIDAhPT1yKXJldHVybiByO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IG47aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pbj1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7bj1lLnN1YnN0cmluZygxKX1pZihuPT09bi50b1VwcGVyQ2FzZSgpJiYocj1wYXJzZUludChuLDE2KSxyPj0wKSlyZXR1cm4gcn1yZXR1cm4tMX1jb25zdCBzPVtbMCwxMjddLFsxMjgsMjU1XSxbMjU2LDM4M10sWzM4NCw1OTFdLFs1OTIsNjg3LDc0MjQsNzU1MSw3NTUyLDc2MTVdLFs2ODgsNzY3LDQyNzUyLDQyNzgzXSxbNzY4LDg3OSw3NjE2LDc2NzldLFs4ODAsMTAyM10sWzExMzkyLDExNTE5XSxbMTAyNCwxMjc5LDEyODAsMTMyNywxMTc0NCwxMTc3NSw0MjU2MCw0MjY1NV0sWzEzMjgsMTQyM10sWzE0MjQsMTUzNV0sWzQyMjQwLDQyNTU5XSxbMTUzNiwxNzkxLDE4NzIsMTkxOV0sWzE5ODQsMjA0N10sWzIzMDQsMjQzMV0sWzI0MzIsMjU1OV0sWzI1NjAsMjY4N10sWzI2ODgsMjgxNV0sWzI4MTYsMjk0M10sWzI5NDQsMzA3MV0sWzMwNzIsMzE5OV0sWzMyMDAsMzMyN10sWzMzMjgsMzQ1NV0sWzM1ODQsMzcxMV0sWzM3MTIsMzgzOV0sWzQyNTYsNDM1MSwxMTUyMCwxMTU2N10sWzY5MTIsNzAzOV0sWzQzNTIsNDYwN10sWzc2ODAsNzkzNSwxMTM2MCwxMTM5MSw0Mjc4NCw0MzAwN10sWzc5MzYsODE5MV0sWzgxOTIsODMwMywxMTc3NiwxMTkwM10sWzgzMDQsODM1MV0sWzgzNTIsODM5OV0sWzg0MDAsODQ0N10sWzg0NDgsODUyN10sWzg1MjgsODU5MV0sWzg1OTIsODcwMywxMDIyNCwxMDIzOSwxMDQ5NiwxMDYyMywxMTAwOCwxMTI2M10sWzg3MDQsODk1OSwxMDc1MiwxMTAwNywxMDE3NiwxMDIyMywxMDYyNCwxMDc1MV0sWzg5NjAsOTIxNV0sWzkyMTYsOTI3OV0sWzkyODAsOTMxMV0sWzkzMTIsOTQ3MV0sWzk0NzIsOTU5OV0sWzk2MDAsOTYzMV0sWzk2MzIsOTcyN10sWzk3MjgsOTk4M10sWzk5ODQsMTAxNzVdLFsxMjI4OCwxMjM1MV0sWzEyMzUyLDEyNDQ3XSxbMTI0NDgsMTI1NDMsMTI3ODQsMTI3OTldLFsxMjU0NCwxMjU5MSwxMjcwNCwxMjczNV0sWzEyNTkyLDEyNjg3XSxbNDMwNzIsNDMxMzVdLFsxMjgwMCwxMzA1NV0sWzEzMDU2LDEzMzExXSxbNDQwMzIsNTUyMTVdLFs1NTI5Niw1NzM0M10sWzY3ODQwLDY3ODcxXSxbMTk5NjgsNDA5NTksMTE5MDQsMTIwMzEsMTIwMzIsMTIyNTUsMTIyNzIsMTIyODcsMTMzMTIsMTk5MDMsMTMxMDcyLDE3Mzc5MSwxMjY4OCwxMjcwM10sWzU3MzQ0LDYzNzQzXSxbMTI3MzYsMTI3ODMsNjM3NDQsNjQyNTUsMTk0NTYwLDE5NTEwM10sWzY0MjU2LDY0MzM1XSxbNjQzMzYsNjUwMjNdLFs2NTA1Niw2NTA3MV0sWzY1MDQwLDY1MDU1XSxbNjUxMDQsNjUxMzVdLFs2NTEzNiw2NTI3OV0sWzY1MjgwLDY1NTE5XSxbNjU1MjAsNjU1MzVdLFszODQwLDQwOTVdLFsxNzkyLDE4NzFdLFsxOTIwLDE5ODNdLFszNDU2LDM1ODNdLFs0MDk2LDQyNTVdLFs0NjA4LDQ5OTEsNDk5Miw1MDIzLDExNjQ4LDExNzQzXSxbNTAyNCw1MTE5XSxbNTEyMCw1NzU5XSxbNTc2MCw1NzkxXSxbNTc5Miw1ODg3XSxbNjAxNiw2MTQzXSxbNjE0NCw2MzE5XSxbMTAyNDAsMTA0OTVdLFs0MDk2MCw0MjEyN10sWzU4ODgsNTkxOSw1OTIwLDU5NTEsNTk1Miw1OTgzLDU5ODQsNjAxNV0sWzY2MzA0LDY2MzUxXSxbNjYzNTIsNjYzODNdLFs2NjU2MCw2NjYzOV0sWzExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTkyOTYsMTE5Mzc1XSxbMTE5ODA4LDEyMDgzMV0sWzEwNDQ0ODAsMTA0ODU3M10sWzY1MDI0LDY1MDM5LDkxNzc2MCw5MTc5OTldLFs5MTc1MDQsOTE3NjMxXSxbNjQwMCw2NDc5XSxbNjQ4MCw2NTI3XSxbNjUyOCw2NjIzXSxbNjY1Niw2Njg3XSxbMTEyNjQsMTEzNTldLFsxMTU2OCwxMTY0N10sWzE5OTA0LDE5OTY3XSxbNDMwMDgsNDMwNTVdLFs2NTUzNiw2NTY2Myw2NTY2NCw2NTc5MSw2NTc5Miw2NTg1NV0sWzY1ODU2LDY1OTM1XSxbNjY0MzIsNjY0NjNdLFs2NjQ2NCw2NjUyN10sWzY2NjQwLDY2Njg3XSxbNjY2ODgsNjY3MzVdLFs2NzU4NCw2NzY0N10sWzY4MDk2LDY4MTkxXSxbMTE5NTUyLDExOTY0N10sWzczNzI4LDc0NzUxLDc0NzUyLDc0ODc5XSxbMTE5NjQ4LDExOTY3OV0sWzcwNDAsNzEwM10sWzcxNjgsNzI0N10sWzcyNDgsNzI5NV0sWzQzMTM2LDQzMjMxXSxbNDMyNjQsNDMzMTFdLFs0MzMxMiw0MzM1OV0sWzQzNTIwLDQzNjE1XSxbNjU5MzYsNjU5OTldLFs2NmUzLDY2MDQ3XSxbNjYyMDgsNjYyNzEsNjYxNzYsNjYyMDcsNjc4NzIsNjc5MDNdLFsxMjcwMjQsMTI3MTM1LDEyNjk3NiwxMjcwMjNdXTtmdW5jdGlvbiBvKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTotMTtpZigtMSE9PXQpe2NvbnN0IHI9c1t0XTtmb3IobGV0IG49MCxhPXIubGVuZ3RoO248YTtuKz0yKWlmKGU+PXJbbl0mJmU8PXJbbisxXSlyZXR1cm4gdH1mb3IobGV0IHQ9MCxyPXMubGVuZ3RoO3Q8cjt0Kyspe2NvbnN0IHI9c1t0XTtmb3IobGV0IG49MCxhPXIubGVuZ3RoO248YTtuKz0yKWlmKGU+PXJbbl0mJmU8PXJbbisxXSlyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBjPW5ldyBSZWdFeHAoIl4oXFxzKXwoXFxwe01ufSl8KFxccHtDZn0pJCIsInUiKSxsPW5ldyBNYXA7ZnVuY3Rpb24gaChlKXtjb25zdCB0PWwuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgcj1lLm1hdGNoKGMpLG49e2lzV2hpdGVzcGFjZTohKG51bGw9PXJ8fCFyWzFdKSxpc1plcm9XaWR0aERpYWNyaXRpYzohKG51bGw9PXJ8fCFyWzJdKSxpc0ludmlzaWJsZUZvcm1hdE1hcms6IShudWxsPT1yfHwhclszXSl9O3JldHVybiBsLnNldChlLG4pLG59ZnVuY3Rpb24gdSgpe2wuY2xlYXIoKX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5nZXRTZXJpZkZvbnRzPXQuZ2V0Tm9uU3RkRm9udE1hcD10LmdldEdseXBoTWFwRm9yU3RhbmRhcmRGb250cz10LmdldEZvbnROYW1lVG9GaWxlTWFwPXZvaWQgMCx0LmdldFN0YW5kYXJkRm9udE5hbWU9ZnVuY3Rpb24oZSl7Y29uc3QgdD0oMCxhLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gaSgpW3RdfSx0LmdldFN5bWJvbHNGb250cz10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQ2FsaWJyaT10LmdldFN1cHBsZW1lbnRhbEdseXBoTWFwRm9yQXJpYWxCbGFjaz10LmdldFN0ZEZvbnRNYXA9dm9pZCAwLHQuaXNLbm93bkZvbnROYW1lPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9KDAsYS5ub3JtYWxpemVGb250TmFtZSkoZSk7cmV0dXJuISEoaSgpW3RdfHxvKClbdF18fGMoKVt0XXx8bCgpW3RdKX07dmFyIG49cigxNDkpLGE9cigxODgpO2NvbnN0IGk9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJUaW1lcy1Sb21hbiJdPSJUaW1lcy1Sb21hbiIsZS5IZWx2ZXRpY2E9IkhlbHZldGljYSIsZS5Db3VyaWVyPSJDb3VyaWVyIixlLlN5bWJvbD0iU3ltYm9sIixlWyJUaW1lcy1Cb2xkIl09IlRpbWVzLUJvbGQiLGVbIkhlbHZldGljYS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIixlWyJDb3VyaWVyLUJvbGQiXT0iQ291cmllci1Cb2xkIixlLlphcGZEaW5nYmF0cz0iWmFwZkRpbmdiYXRzIixlWyJUaW1lcy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIixlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZVsiQ291cmllci1PYmxpcXVlIl09IkNvdXJpZXItT2JsaXF1ZSIsZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIixlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGUuQXJpYWxOYXJyb3c9IkhlbHZldGljYSIsZVsiQXJpYWxOYXJyb3ctQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsTmFycm93LUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZS5BcmlhbEJsYWNrPSJIZWx2ZXRpY2EiLGVbIkFyaWFsQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQXJpYWxCbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGVbIkFyaWFsLUJsYWNrIl09IkhlbHZldGljYSIsZVsiQXJpYWwtQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWwtQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkFyaWFsLUJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZS5BcmlhbD0iSGVsdmV0aWNhIixlWyJBcmlhbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIixlWyJBcmlhbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQXJpYWwtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlLkFyaWFsTVQ9IkhlbHZldGljYSIsZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQXJpYWwtQm9sZE1UIl09IkhlbHZldGljYS1Cb2xkIixlWyJBcmlhbC1JdGFsaWNNVCJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZVsiQXJpYWwtQm9sZEl0YWxpY01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJBcmlhbC1Cb2xkTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQXJpYWwtSXRhbGljTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlLkFyaWFsVW5pY29kZU1TPSJIZWx2ZXRpY2EiLGVbIkFyaWFsVW5pY29kZU1TLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkFyaWFsVW5pY29kZU1TLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJBcmlhbFVuaWNvZGVNUy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGVbIkNvdXJpZXItQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIixlWyJDb3VyaWVyLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiLGUuQ291cmllck5ldz0iQ291cmllciIsZVsiQ291cmllck5ldy1Cb2xkIl09IkNvdXJpZXItQm9sZCIsZVsiQ291cmllck5ldy1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGVbIkNvdXJpZXJOZXctSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSIsZVsiQ291cmllck5ld1BTLUJvbGRJdGFsaWNNVCJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIixlWyJDb3VyaWVyTmV3UFMtQm9sZE1UIl09IkNvdXJpZXItQm9sZCIsZVsiQ291cmllck5ld1BTLUl0YWxpY01UIl09IkNvdXJpZXItT2JsaXF1ZSIsZS5Db3VyaWVyTmV3UFNNVD0iQ291cmllciIsZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIixlWyJIZWx2ZXRpY2EtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlWyJTeW1ib2wtQm9sZCJdPSJTeW1ib2wiLGVbIlN5bWJvbC1Cb2xkSXRhbGljIl09IlN5bWJvbCIsZVsiU3ltYm9sLUl0YWxpYyJdPSJTeW1ib2wiLGUuVGltZXNOZXdSb21hbj0iVGltZXMtUm9tYW4iLGVbIlRpbWVzTmV3Um9tYW4tQm9sZCJdPSJUaW1lcy1Cb2xkIixlWyJUaW1lc05ld1JvbWFuLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyIsZVsiVGltZXNOZXdSb21hbi1JdGFsaWMiXT0iVGltZXMtSXRhbGljIixlLlRpbWVzTmV3Um9tYW5QUz0iVGltZXMtUm9tYW4iLGVbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkIl09IlRpbWVzLUJvbGQiLGVbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiLGVbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljTVQiXT0iVGltZXMtQm9sZEl0YWxpYyIsZVsiVGltZXNOZXdSb21hblBTLUJvbGRNVCJdPSJUaW1lcy1Cb2xkIixlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyIsZVsiVGltZXNOZXdSb21hblBTLUl0YWxpY01UIl09IlRpbWVzLUl0YWxpYyIsZS5UaW1lc05ld1JvbWFuUFNNVD0iVGltZXMtUm9tYW4iLGVbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGQiXT0iVGltZXMtQm9sZCIsZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIixlWyJUaW1lc05ld1JvbWFuUFNNVC1JdGFsaWMiXT0iVGltZXMtSXRhbGljIn0pKTt0LmdldFN0ZEZvbnRNYXA9aTtjb25zdCBzPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiIsZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiIsZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiLGVbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiIsZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIixlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIixlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIixlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiIsZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiLGVbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIixlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiLGUuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiLGUuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiIsZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLGVbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSkpO3QuZ2V0Rm9udE5hbWVUb0ZpbGVNYXA9cztjb25zdCBvPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5DYWxpYnJpPSJIZWx2ZXRpY2EiLGVbIkNhbGlicmktQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCIsZVsiQ2FsaWJyaS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiQ2FsaWJyaS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuQ2VudHVyeUdvdGhpYz0iSGVsdmV0aWNhIixlWyJDZW50dXJ5R290aGljLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkNlbnR1cnlHb3RoaWMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLGVbIkNlbnR1cnlHb3RoaWMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIixlLkNvbWljU2Fuc01TPSJDb21pYyBTYW5zIE1TIixlWyJDb21pY1NhbnNNUy1Cb2xkIl09IkNvbWljIFNhbnMgTVMtQm9sZCIsZVsiQ29taWNTYW5zTVMtQm9sZEl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUJvbGRJdGFsaWMiLGVbIkNvbWljU2Fuc01TLUl0YWxpYyJdPSJDb21pYyBTYW5zIE1TLUl0YWxpYyIsZS5JbXBhY3Q9IkhlbHZldGljYSIsZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiLGVbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSIsZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIixlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSIsZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiLGVbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiLGUuTHVjaWRhQ29uc29sZT0iQ291cmllciIsZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCIsZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiLGVbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSIsZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIixlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIixlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCIsZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiLGVbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyIsZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyIsZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiLGVbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIixlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiLGVbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyIsZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCIsZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyIsZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiLGVbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyIsZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCIsZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyIsZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiLGUuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIixlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSJ9KSk7dC5nZXROb25TdGRGb250TWFwPW87Y29uc3QgYz0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbIkFkb2JlIEplbnNvbiJdPSEwLGVbIkFkb2JlIFRleHQiXT0hMCxlLkFsYmVydHVzPSEwLGUuQWxkdXM9ITAsZS5BbGV4YW5kcmlhPSEwLGUuQWxnZXJpYW49ITAsZVsiQW1lcmljYW4gVHlwZXdyaXRlciJdPSEwLGUuQW50aXF1YT0hMCxlLkFwZXg9ITAsZS5Bcm5vPSEwLGUuQXN0ZXI9ITAsZS5BdXJvcmE9ITAsZS5CYXNrZXJ2aWxsZT0hMCxlLkJlbGw9ITAsZS5CZW1ibz0hMCxlWyJCZW1ibyBTY2hvb2xib29rIl09ITAsZS5CZW5ndWlhdD0hMCxlWyJCZXJrZWxleSBPbGQgU3R5bGUiXT0hMCxlWyJCZXJuaGFyZCBNb2Rlcm4iXT0hMCxlWyJCZXJ0aG9sZCBDaXR5Il09ITAsZS5Cb2Rvbmk9ITAsZVsiQmF1ZXIgQm9kb25pIl09ITAsZVsiQm9vayBBbnRpcXVhIl09ITAsZS5Cb29rbWFuPSEwLGVbIkJvcmRlYXV4IFJvbWFuIl09ITAsZVsiQ2FsaWZvcm5pYW4gRkIiXT0hMCxlLkNhbGlzdG89ITAsZS5DYWx2ZXJ0PSEwLGUuQ2FwaXRhbHM9ITAsZS5DYW1icmlhPSEwLGUuQ2FydGllcj0hMCxlLkNhc2xvbj0hMCxlLkNhdHVsbD0hMCxlLkNlbnRhdXI9ITAsZVsiQ2VudHVyeSBPbGQgU3R5bGUiXT0hMCxlWyJDZW50dXJ5IFNjaG9vbGJvb2siXT0hMCxlLkNoYXBhcnJhbD0hMCxlWyJDaGFyaXMgU0lMIl09ITAsZS5DaGVsdGVuaGFtPSEwLGVbIkNob2xsYSBTbGFiIl09ITAsZS5DbGFyZW5kb249ITAsZS5DbGVhcmZhY2U9ITAsZS5Db2NoaW49ITAsZS5Db2xvbm5hPSEwLGVbIkNvbXB1dGVyIE1vZGVybiJdPSEwLGVbIkNvbmNyZXRlIFJvbWFuIl09ITAsZS5Db25zdGFudGlhPSEwLGVbIkNvb3BlciBCbGFjayJdPSEwLGUuQ29yb25hPSEwLGUuRWNvdHlwZT0hMCxlLkVneXB0aWVubmU9ITAsZS5FbGVwaGFudD0hMCxlLkV4Y2Vsc2lvcj0hMCxlLkZhaXJmaWVsZD0hMCxlWyJGRiBTY2FsYSJdPSEwLGUuRm9sa2FyZD0hMCxlLkZvb3RsaWdodD0hMCxlLkZyZWVTZXJpZj0hMCxlWyJGcml6IFF1YWRyYXRhIl09ITAsZS5HYXJhbW9uZD0hMCxlLkdlbnRpdW09ITAsZS5HZW9yZ2lhPSEwLGUuR2xvdWNlc3Rlcj0hMCxlWyJHb3VkeSBPbGQgU3R5bGUiXT0hMCxlWyJHb3VkeSBTY2hvb2xib29rIl09ITAsZVsiR291ZHkgUHJvIEZvbnQiXT0hMCxlLkdyYW5qb249ITAsZVsiR3VhcmRpYW4gRWd5cHRpYW4iXT0hMCxlLkhlYXRoZXI9ITAsZS5IZXJjdWxlcz0hMCxlWyJIaWdoIFRvd2VyIFRleHQiXT0hMCxlLkhpcm9zaGlnZT0hMCxlWyJIb2VmbGVyIFRleHQiXT0hMCxlWyJIdW1hbmEgU2VyaWYiXT0hMCxlLkltcHJpbnQ9ITAsZVsiSW9uaWMgTm8uIDUiXT0hMCxlLkphbnNvbj0hMCxlLkpvYW5uYT0hMCxlLktvcmlubmE9ITAsZS5MZXhpY29uPSEwLGUuTGliZXJhdGlvblNlcmlmPSEwLGVbIkxpYmVyYXRpb24gU2VyaWYiXT0hMCxlWyJMaW51eCBMaWJlcnRpbmUiXT0hMCxlLkxpdGVyYXR1cm5heWE9ITAsZS5MdWNpZGE9ITAsZVsiTHVjaWRhIEJyaWdodCJdPSEwLGUuTWVsaW9yPSEwLGUuTWVtcGhpcz0hMCxlLk1pbGxlcj0hMCxlLk1pbmlvbj0hMCxlLk1vZGVybj0hMCxlWyJNb25hIExpc2EiXT0hMCxlWyJNcnMgRWF2ZXMiXT0hMCxlWyJNUyBTZXJpZiJdPSEwLGVbIk11c2VvIFNsYWIiXT0hMCxlWyJOZXcgWW9yayJdPSEwLGVbIk5pbWJ1cyBSb21hbiJdPSEwLGVbIk5QUyBSYXdsaW5zb24gUm9hZHdheSJdPSEwLGUuTnVwdGlhbFNjcmlwdD0hMCxlLlBhbGF0aW5vPSEwLGUuUGVycGV0dWE9ITAsZS5QbGFudGluPSEwLGVbIlBsYW50aW4gU2Nob29sYm9vayJdPSEwLGUuUGxheWJpbGw9ITAsZVsiUG9vciBSaWNoYXJkIl09ITAsZVsiUmF3bGluc29uIFJvYWR3YXkiXT0hMCxlLlJlbmF1bHQ9ITAsZS5SZXF1aWVtPSEwLGUuUm9ja3dlbGw9ITAsZS5Sb21hbj0hMCxlWyJSb3RpcyBTZXJpZiJdPSEwLGUuU2Fib249ITAsZS5TY2FsYT0hMCxlLlNlYWd1bGw9ITAsZS5TaXN0aW5hPSEwLGUuU291dmVuaXI9ITAsZS5TVElYPSEwLGVbIlN0b25lIEluZm9ybWFsIl09ITAsZVsiU3RvbmUgU2VyaWYiXT0hMCxlLlN5bGZhZW49ITAsZS5UaW1lcz0hMCxlLlRyYWphbj0hMCxlWyJUcmluaXTDqSJdPSEwLGVbIlRydW1wIE1lZGlhZXZhbCJdPSEwLGUuVXRvcGlhPSEwLGVbIlZhbGUgVHlwZSJdPSEwLGVbIkJpdHN0cmVhbSBWZXJhIl09ITAsZVsiVmVyYSBTZXJpZiJdPSEwLGUuVmVyc2FpbGxlcz0hMCxlLldhbnRlZD0hMCxlLldlaXNzPSEwLGVbIldpZGUgTGF0aW4iXT0hMCxlLldpbmRzb3I9ITAsZS5YSVRTPSEwfSkpO3QuZ2V0U2VyaWZGb250cz1jO2NvbnN0IGw9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwLGUuU3ltYm9sPSEwLGUuWmFwZkRpbmdiYXRzPSEwLGUuV2luZ2RpbmdzPSEwLGVbIldpbmdkaW5ncy1Cb2xkIl09ITAsZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKTt0LmdldFN5bWJvbHNGb250cz1sO2NvbnN0IGg9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWzJdPTEwLGVbM109MzIsZVs0XT0zMyxlWzVdPTM0LGVbNl09MzUsZVs3XT0zNixlWzhdPTM3LGVbOV09MzgsZVsxMF09MzksZVsxMV09NDAsZVsxMl09NDEsZVsxM109NDIsZVsxNF09NDMsZVsxNV09NDQsZVsxNl09NDUsZVsxN109NDYsZVsxOF09NDcsZVsxOV09NDgsZVsyMF09NDksZVsyMV09NTAsZVsyMl09NTEsZVsyM109NTIsZVsyNF09NTMsZVsyNV09NTQsZVsyNl09NTUsZVsyN109NTYsZVsyOF09NTcsZVsyOV09NTgsZVszMF09ODk0LGVbMzFdPTYwLGVbMzJdPTYxLGVbMzNdPTYyLGVbMzRdPTYzLGVbMzVdPTY0LGVbMzZdPTY1LGVbMzddPTY2LGVbMzhdPTY3LGVbMzldPTY4LGVbNDBdPTY5LGVbNDFdPTcwLGVbNDJdPTcxLGVbNDNdPTcyLGVbNDRdPTczLGVbNDVdPTc0LGVbNDZdPTc1LGVbNDddPTc2LGVbNDhdPTc3LGVbNDldPTc4LGVbNTBdPTc5LGVbNTFdPTgwLGVbNTJdPTgxLGVbNTNdPTgyLGVbNTRdPTgzLGVbNTVdPTg0LGVbNTZdPTg1LGVbNTddPTg2LGVbNThdPTg3LGVbNTldPTg4LGVbNjBdPTg5LGVbNjFdPTkwLGVbNjJdPTkxLGVbNjNdPTkyLGVbNjRdPTkzLGVbNjVdPTk0LGVbNjZdPTk1LGVbNjddPTk2LGVbNjhdPTk3LGVbNjldPTk4LGVbNzBdPTk5LGVbNzFdPTEwMCxlWzcyXT0xMDEsZVs3M109MTAyLGVbNzRdPTEwMyxlWzc1XT0xMDQsZVs3Nl09MTA1LGVbNzddPTEwNixlWzc4XT0xMDcsZVs3OV09MTA4LGVbODBdPTEwOSxlWzgxXT0xMTAsZVs4Ml09MTExLGVbODNdPTExMixlWzg0XT0xMTMsZVs4NV09MTE0LGVbODZdPTExNSxlWzg3XT0xMTYsZVs4OF09MTE3LGVbODldPTExOCxlWzkwXT0xMTksZVs5MV09MTIwLGVbOTJdPTEyMSxlWzkzXT0xMjIsZVs5NF09MTIzLGVbOTVdPTEyNCxlWzk2XT0xMjUsZVs5N109MTI2LGVbOThdPTE5NixlWzk5XT0xOTcsZVsxMDBdPTE5OSxlWzEwMV09MjAxLGVbMTAyXT0yMDksZVsxMDNdPTIxNCxlWzEwNF09MjIwLGVbMTA1XT0yMjUsZVsxMDZdPTIyNCxlWzEwN109MjI2LGVbMTA4XT0yMjgsZVsxMDldPTIyNyxlWzExMF09MjI5LGVbMTExXT0yMzEsZVsxMTJdPTIzMyxlWzExM109MjMyLGVbMTE0XT0yMzQsZVsxMTVdPTIzNSxlWzExNl09MjM3LGVbMTE3XT0yMzYsZVsxMThdPTIzOCxlWzExOV09MjM5LGVbMTIwXT0yNDEsZVsxMjFdPTI0MyxlWzEyMl09MjQyLGVbMTIzXT0yNDQsZVsxMjRdPTI0NixlWzEyNV09MjQ1LGVbMTI2XT0yNTAsZVsxMjddPTI0OSxlWzEyOF09MjUxLGVbMTI5XT0yNTIsZVsxMzBdPTgyMjQsZVsxMzFdPTE3NixlWzEzMl09MTYyLGVbMTMzXT0xNjMsZVsxMzRdPTE2NyxlWzEzNV09ODIyNixlWzEzNl09MTgyLGVbMTM3XT0yMjMsZVsxMzhdPTE3NCxlWzEzOV09MTY5LGVbMTQwXT04NDgyLGVbMTQxXT0xODAsZVsxNDJdPTE2OCxlWzE0M109ODgwMCxlWzE0NF09MTk4LGVbMTQ1XT0yMTYsZVsxNDZdPTg3MzQsZVsxNDddPTE3NyxlWzE0OF09ODgwNCxlWzE0OV09ODgwNSxlWzE1MF09MTY1LGVbMTUxXT0xODEsZVsxNTJdPTg3MDYsZVsxNTNdPTg3MjEsZVsxNTRdPTg3MTksZVsxNTZdPTg3NDcsZVsxNTddPTE3MCxlWzE1OF09MTg2LGVbMTU5XT04NDg2LGVbMTYwXT0yMzAsZVsxNjFdPTI0OCxlWzE2Ml09MTkxLGVbMTYzXT0xNjEsZVsxNjRdPTE3MixlWzE2NV09ODczMCxlWzE2Nl09NDAyLGVbMTY3XT04Nzc2LGVbMTY4XT04NzEwLGVbMTY5XT0xNzEsZVsxNzBdPTE4NyxlWzE3MV09ODIzMCxlWzE3OV09ODIyMCxlWzE4MF09ODIyMSxlWzE4MV09ODIxNixlWzE4Ml09ODIxNyxlWzIwMF09MTkzLGVbMjAzXT0yMDUsZVsyMDddPTIxMSxlWzIxMF09MjE4LGVbMjIzXT03MTEsZVsyMjRdPTMyMSxlWzIyNV09MzIyLGVbMjI2XT0zNTIsZVsyMjddPTM1MyxlWzIyOF09MzgxLGVbMjI5XT0zODIsZVsyMzNdPTIyMSxlWzIzNF09MjUzLGVbMjUyXT0yNjMsZVsyNTNdPTI2OCxlWzI1NF09MjY5LGVbMjU4XT0yNTgsZVsyNjBdPTI2MCxlWzI2MV09MjYxLGVbMjY1XT0yODAsZVsyNjZdPTI4MSxlWzI2N109MjgyLGVbMjY4XT0yODMsZVsyNjldPTMxMyxlWzI3NV09MzIzLGVbMjc2XT0zMjQsZVsyNzhdPTMyOCxlWzI4M109MzQ0LGVbMjg0XT0zNDUsZVsyODVdPTM0NixlWzI4Nl09MzQ3LGVbMjkyXT0zNjcsZVsyOTVdPTM3NyxlWzI5Nl09Mzc4LGVbMjk4XT0zODAsZVszMDVdPTk2MyxlWzMwNl09OTY0LGVbMzA3XT05NjYsZVszMDhdPTgyMTUsZVszMDldPTgyNTIsZVszMTBdPTgzMTksZVszMTFdPTgzNTksZVszMTJdPTg1OTIsZVszMTNdPTg1OTMsZVszMzddPTk1NTIsZVs0OTNdPTEwMzksZVs0OTRdPTEwNDAsZVs2NzJdPTE0ODgsZVs2NzNdPTE0ODksZVs2NzRdPTE0OTAsZVs2NzVdPTE0OTEsZVs2NzZdPTE0OTIsZVs2NzddPTE0OTMsZVs2NzhdPTE0OTQsZVs2NzldPTE0OTUsZVs2ODBdPTE0OTYsZVs2ODFdPTE0OTcsZVs2ODJdPTE0OTgsZVs2ODNdPTE0OTksZVs2ODRdPTE1MDAsZVs2ODVdPTE1MDEsZVs2ODZdPTE1MDIsZVs2ODddPTE1MDMsZVs2ODhdPTE1MDQsZVs2ODldPTE1MDUsZVs2OTBdPTE1MDYsZVs2OTFdPTE1MDcsZVs2OTJdPTE1MDgsZVs2OTNdPTE1MDksZVs2OTRdPTE1MTAsZVs2OTVdPTE1MTEsZVs2OTZdPTE1MTIsZVs2OTddPTE1MTMsZVs2OThdPTE1MTQsZVs3MDVdPTE1MjQsZVs3MDZdPTgzNjIsZVs3MTBdPTY0Mjg4LGVbNzExXT02NDI5OCxlWzc1OV09MTYxNyxlWzc2MV09MTc3NixlWzc2M109MTc3OCxlWzc3NV09MTY1MixlWzc3N109MTc2NCxlWzc3OF09MTc4MCxlWzc3OV09MTc4MSxlWzc4MF09MTc4MixlWzc4Ml09NzcxLGVbNzgzXT02NDcyNixlWzc4Nl09ODM2MyxlWzc4OF09ODUzMixlWzc5MF09NzY4LGVbNzkxXT03NjksZVs3OTJdPTc2OCxlWzc5NV09ODAzLGVbNzk3XT02NDMzNixlWzc5OF09NjQzMzcsZVs3OTldPTY0MzQyLGVbODAwXT02NDM0MyxlWzgwMV09NjQzNDQsZVs4MDJdPTY0MzQ1LGVbODAzXT02NDM2MixlWzgwNF09NjQzNjMsZVs4MDVdPTY0MzY0LGVbMjQyNF09NzgyMSxlWzI0MjVdPTc4MjIsZVsyNDI2XT03ODIzLGVbMjQyN109NzgyNCxlWzI0MjhdPTc4MjUsZVsyNDI5XT03ODI2LGVbMjQzMF09NzgyNyxlWzI0MzNdPTc2ODIsZVsyNjc4XT04MDQ1LGVbMjY3OV09ODA0NixlWzI4MzBdPTE1NTIsZVsyODM4XT02ODYsZVsyODQwXT03NTEsZVsyODQyXT03NTMsZVsyODQzXT03NTQsZVsyODQ0XT03NTUsZVsyODQ2XT03NTcsZVsyODU2XT03NjcsZVsyODU3XT04NDgsZVsyODU4XT04NDksZVsyODYyXT04NTMsZVsyODYzXT04NTQsZVsyODY0XT04NTUsZVsyODY1XT04NjEsZVsyODY2XT04NjIsZVsyOTA2XT03NDYwLGVbMjkwOF09NzQ2MixlWzI5MDldPTc0NjMsZVsyOTEwXT03NDY0LGVbMjkxMl09NzQ2NixlWzI5MTNdPTc0NjcsZVsyOTE0XT03NDY4LGVbMjkxNl09NzQ3MCxlWzI5MTddPTc0NzEsZVsyOTE4XT03NDcyLGVbMjkyMF09NzQ3NCxlWzI5MjFdPTc0NzUsZVsyOTIyXT03NDc2LGVbMjkyNF09NzQ3OCxlWzI5MjVdPTc0NzksZVsyOTI2XT03NDgwLGVbMjkyOF09NzQ4MixlWzI5MjldPTc0ODMsZVsyOTMwXT03NDg0LGVbMjkzMl09NzQ4NixlWzI5MzNdPTc0ODcsZVsyOTM0XT03NDg4LGVbMjkzNl09NzQ5MCxlWzI5MzddPTc0OTEsZVsyOTM4XT03NDkyLGVbMjk0MF09NzQ5NCxlWzI5NDFdPTc0OTUsZVsyOTQyXT03NDk2LGVbMjk0NF09NzQ5OCxlWzI5NDZdPTc1MDAsZVsyOTQ4XT03NTAyLGVbMjk1MF09NzUwNCxlWzI5NTFdPTc1MDUsZVsyOTUyXT03NTA2LGVbMjk1NF09NzUwOCxlWzI5NTVdPTc1MDksZVsyOTU2XT03NTEwLGVbMjk1OF09NzUxMixlWzI5NTldPTc1MTMsZVsyOTYwXT03NTE0LGVbMjk2Ml09NzUxNixlWzI5NjNdPTc1MTcsZVsyOTY0XT03NTE4LGVbMjk2Nl09NzUyMCxlWzI5NjddPTc1MjEsZVsyOTY4XT03NTIyLGVbMjk3MF09NzUyNCxlWzI5NzFdPTc1MjUsZVsyOTcyXT03NTI2LGVbMjk3NF09NzUyOCxlWzI5NzVdPTc1MjksZVsyOTc2XT03NTMwLGVbMjk3OF09MTUzNyxlWzI5NzldPTE1MzgsZVsyOTgwXT0xNTM5LGVbMjk4Ml09MTU0OSxlWzI5ODNdPTE1NTEsZVsyOTg0XT0xNTUyLGVbMjk4Nl09MTU1NCxlWzI5ODddPTE1NTUsZVsyOTg4XT0xNTU2LGVbMjk5MF09MTYyMyxlWzI5OTFdPTE2MjQsZVsyOTk1XT0xNzc1LGVbMjk5OV09MTc5MSxlWzMwMDJdPTY0MjkwLGVbMzAwM109NjQyOTEsZVszMDA0XT02NDI5MixlWzMwMDZdPTY0Mjk0LGVbMzAwN109NjQyOTUsZVszMDA4XT02NDI5NixlWzMwMTFdPTE5MDAsZVszMDE0XT04MjIzLGVbMzAxNV09ODI0NCxlWzMwMTddPTc1MzIsZVszMDE4XT03NTMzLGVbMzAxOV09NzUzNCxlWzMwNzVdPTc1OTAsZVszMDc2XT03NTkxLGVbMzA3OV09NzU5NCxlWzMwODBdPTc1OTUsZVszMDgzXT03NTk4LGVbMzA4NF09NzU5OSxlWzMwODddPTc2MDIsZVszMDg4XT03NjAzLGVbMzA5MV09NzYwNixlWzMwOTJdPTc2MDcsZVszMDk1XT03NjEwLGVbMzA5Nl09NzYxMSxlWzMwOTldPTc2MTQsZVszMTAwXT03NjE1LGVbMzEwM109NzYxOCxlWzMxMDRdPTc2MTksZVszMTA3XT04MzM3LGVbMzEwOF09ODMzOCxlWzMxMTZdPTE4ODQsZVszMTE5XT0xODg1LGVbMzEyMF09MTg4NSxlWzMxMjNdPTE4ODYsZVszMTI0XT0xODg2LGVbMzEyN109MTg4NyxlWzMxMjhdPTE4ODcsZVszMTMxXT0xODg4LGVbMzEzMl09MTg4OCxlWzMxMzVdPTE4ODksZVszMTM2XT0xODg5LGVbMzEzOV09MTg5MCxlWzMxNDBdPTE4OTAsZVszMTQzXT0xODkxLGVbMzE0NF09MTg5MSxlWzMxNDddPTE4OTIsZVszMTQ4XT0xODkyLGVbMzE1M109NTgwLGVbMzE1NF09NTgxLGVbMzE1N109NTg0LGVbMzE1OF09NTg1LGVbMzE2MV09NTg4LGVbMzE2Ml09NTg5LGVbMzE2NV09ODkxLGVbMzE2Nl09ODkyLGVbMzE2OV09MTI3NCxlWzMxNzBdPTEyNzUsZVszMTczXT0xMjc4LGVbMzE3NF09MTI3OSxlWzMxODFdPTc2MjIsZVszMTgyXT03NjIzLGVbMzI4Ml09MTE3OTksZVszMzE2XT01NzgsZVszMzc5XT00Mjc4NSxlWzMzOTNdPTExNTksZVszNDE2XT04Mzc3fSkpO3QuZ2V0R2x5cGhNYXBGb3JTdGFuZGFyZEZvbnRzPWg7Y29uc3QgdT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjIsZVsyNjRdPTI2MSxlWzI5MV09MzQ2fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JBcmlhbEJsYWNrPXU7Y29uc3QgZD0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2VbMV09MzIsZVs0XT02NSxlWzVdPTE5MixlWzZdPTE5MyxlWzldPTE5NixlWzE3XT02NixlWzE4XT02NyxlWzIxXT0yNjgsZVsyNF09NjgsZVsyOF09NjksZVsyOV09MjAwLGVbMzBdPTIwMSxlWzMyXT0yODIsZVszOF09NzAsZVszOV09NzEsZVs0NF09NzIsZVs0N109NzMsZVs0OF09MjA0LGVbNDldPTIwNSxlWzU4XT03NCxlWzYwXT03NSxlWzYyXT03NixlWzY4XT03NyxlWzY5XT03OCxlWzc1XT03OSxlWzc2XT0yMTAsZVs4MF09MjE0LGVbODddPTgwLGVbODldPTgxLGVbOTBdPTgyLGVbOTJdPTM0NCxlWzk0XT04MyxlWzk3XT0zNTIsZVsxMDBdPTg0LGVbMTA0XT04NSxlWzEwOV09MjIwLGVbMTE1XT04NixlWzExNl09ODcsZVsxMjFdPTg4LGVbMTIyXT04OSxlWzEyNF09MjIxLGVbMTI3XT05MCxlWzEyOV09MzgxLGVbMjU4XT05NyxlWzI1OV09MjI0LGVbMjYwXT0yMjUsZVsyNjNdPTIyOCxlWzI2OF09MjYxLGVbMjcxXT05OCxlWzI3Ml09OTksZVsyNzNdPTI2MyxlWzI3NV09MjY5LGVbMjgyXT0xMDAsZVsyODZdPTEwMSxlWzI4N109MjMyLGVbMjg4XT0yMzMsZVsyOTBdPTI4MyxlWzI5NV09MjgxLGVbMjk2XT0xMDIsZVszMzZdPTEwMyxlWzM0Nl09MTA0LGVbMzQ5XT0xMDUsZVszNTBdPTIzNixlWzM1MV09MjM3LGVbMzYxXT0xMDYsZVszNjRdPTEwNyxlWzM2N109MTA4LGVbMzcxXT0zMjIsZVszNzNdPTEwOSxlWzM3NF09MTEwLGVbMzgxXT0xMTEsZVszODJdPTI0MixlWzM4M109MjQzLGVbMzg2XT0yNDYsZVszOTNdPTExMixlWzM5NV09MTEzLGVbMzk2XT0xMTQsZVszOThdPTM0NSxlWzQwMF09MTE1LGVbNDAxXT0zNDcsZVs0MDNdPTM1MyxlWzQxMF09MTE2LGVbNDM3XT0xMTcsZVs0NDJdPTI1MixlWzQ0OF09MTE4LGVbNDQ5XT0xMTksZVs0NTRdPTEyMCxlWzQ1NV09MTIxLGVbNDU3XT0yNTMsZVs0NjBdPTEyMixlWzQ2Ml09MzgyLGVbNDYzXT0zODAsZVs4NTNdPTQ0LGVbODU1XT01OCxlWzg1Nl09NDYsZVs4NzZdPTQ3LGVbODc4XT00NSxlWzg4Ml09NDUsZVs4OTRdPTQwLGVbODk1XT00MSxlWzg5Nl09OTEsZVs4OTddPTkzLGVbOTIzXT02NCxlWzEwMDRdPTQ4LGVbMTAwNV09NDksZVsxMDA2XT01MCxlWzEwMDddPTUxLGVbMTAwOF09NTIsZVsxMDA5XT01MyxlWzEwMTBdPTU0LGVbMTAxMV09NTUsZVsxMDEyXT01NixlWzEwMTNdPTU3LGVbMTA4MV09MzcsZVsxMDg1XT00MyxlWzEwODZdPTQ1fSkpO3QuZ2V0U3VwcGxlbWVudGFsR2x5cGhNYXBGb3JDYWxpYnJpPWR9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Ub1VuaWNvZGVNYXA9dC5JZGVudGl0eVRvVW5pY29kZU1hcD12b2lkIDA7dmFyIG49cigxNDQpO3QuVG9Vbmljb2RlTWFwPWNsYXNze2NvbnN0cnVjdG9yKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOltdO3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNoYXJDb2RlQXQoMCkpfWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IHIgaW4gdClpZih0W3JdPT09ZSlyZXR1cm4gMHxyO3JldHVybi0xfWFtZW5kKGUpe2Zvcihjb25zdCB0IGluIGUpdGhpcy5fbWFwW3RdPWVbdF19fSx0LklkZW50aXR5VG9Vbmljb2RlTWFwPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5maXJzdENoYXI9ZSx0aGlzLmxhc3RDaGFyPXR9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmxhc3RDaGFyKzEtdGhpcy5maXJzdENoYXJ9Zm9yRWFjaChlKXtmb3IobGV0IHQ9dGhpcy5maXJzdENoYXIscj10aGlzLmxhc3RDaGFyO3Q8PXI7dCsrKWUodCx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyfWdldChlKXtpZih0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj10aGlzLmZpcnN0Q2hhciYmZTw9dGhpcy5sYXN0Q2hhcj9lOi0xfWFtZW5kKGUpeygwLG4udW5yZWFjaGFibGUpKCJTaG91bGQgbm90IGNhbGwgYW1lbmQoKSIpfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5DRkZGb250PXZvaWQgMDt2YXIgbj1yKDE4NSksYT1yKDE4OCksaT1yKDE0NCk7dC5DRkZGb250PWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wcm9wZXJ0aWVzPXQ7Y29uc3Qgcj1uZXcgbi5DRkZQYXJzZXIoZSx0LGEuU0VBQ19BTkFMWVNJU19FTkFCTEVEKTt0aGlzLmNmZj1yLnBhcnNlKCksdGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IHM9bmV3IG4uQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1zLmNvbXBpbGUoKX1jYXRjaChyKXsoMCxpLndhcm4pKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKSx0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOnIsY01hcDpufT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IHMsbztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsYTtpZigobnVsbD09cj92b2lkIDA6ci5sZW5ndGgpPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxuPXIubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49cltlXTt2b2lkIDAhPT1uJiYodFtuXT1lKX19aWYocz1PYmplY3QuY3JlYXRlKG51bGwpLGUuaXNDSURGb250KWZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBjO2NvbnN0IGU9aVtvXTthPW4uY2hhckNvZGVPZihlKSx2b2lkIDAhPT0obnVsbD09PShjPXQpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjW2FdKSYmKGE9dFthXSksc1thXT1vfWVsc2UgZm9yKG89MDtvPGUuY2hhclN0cmluZ3MuY291bnQ7bysrKWE9bi5jaGFyQ29kZU9mKG8pLHNbYV09bztyZXR1cm4gc31sZXQgbD1lLmVuY29kaW5nP2UuZW5jb2RpbmcuZW5jb2Rpbmc6bnVsbDtyZXR1cm4gdC5pc0ludGVybmFsRm9udCYmKGw9dC5kZWZhdWx0RW5jb2RpbmcpLHM9KDAsYS50eXBlMUZvbnRHbHlwaE1hcHBpbmcpKHQsbCxpKSxzfWhhc0dseXBoSWQoZSl7cmV0dXJuIHRoaXMuY2ZmLmhhc0dseXBoSWQoZSl9X2NyZWF0ZUJ1aWx0SW5FbmNvZGluZygpe2NvbnN0e2NoYXJzZXQ6ZSxlbmNvZGluZzp0fT10aGlzLmNmZjtpZighZXx8IXQpcmV0dXJuO2NvbnN0IHI9ZS5jaGFyc2V0LG49dC5lbmNvZGluZyxhPVtdO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IHQ9bltlXTtpZih0Pj0wKXtjb25zdCBuPXJbdF07biYmKGFbZV09bil9fWEubGVuZ3RoPjAmJih0aGlzLnByb3BlcnRpZXMuYnVpbHRJbkVuY29kaW5nPWEpfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Gb250UmVuZGVyZXJGYWN0b3J5PXZvaWQgMCxyKDEzOSkscigxNTcpLHIoMTU5KSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpLGE9cigxODUpLGk9cigxODkpLHM9cigxODcpLG89cigxNTQpO2Z1bmN0aW9uIGMoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNnxlW3QrMl08PDh8ZVt0KzNdKT4+PjB9ZnVuY3Rpb24gbChlLHQpe3JldHVybiBlW3RdPDw4fGVbdCsxXX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuKGVbdF08PDI0fGVbdCsxXTw8MTYpPj4xNn1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGgoZSx0KS8xNjM4NH1mdW5jdGlvbiBmKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MzI3Njg7cmV0dXJuIHQ8MTI0MD9yPTEwNzp0PDMzOTAwJiYocj0xMTMxKSxyfWZ1bmN0aW9uIGcoZSx0LHIpe2NvbnN0IGE9MT09PWwoZSx0KzIpP2MoZSx0KzgpOmMoZSx0KzE2KSxpPWwoZSx0K2EpO2xldCBzLG8saDtpZig0PT09aSl7bChlLHQrYSsyKTtjb25zdCByPWwoZSx0K2ErNik+PjE7Zm9yKG89dCthKzE0LHM9W10saD0wO2g8cjtoKyssbys9MilzW2hdPXtlbmQ6bChlLG8pfTtmb3Iobys9MixoPTA7aDxyO2grKyxvKz0yKXNbaF0uc3RhcnQ9bChlLG8pO2ZvcihoPTA7aDxyO2grKyxvKz0yKXNbaF0uaWREZWx0YT1sKGUsbyk7Zm9yKGg9MDtoPHI7aCsrLG8rPTIpe2xldCB0PWwoZSxvKTtpZigwIT09dCl7c1toXS5pZHM9W107Zm9yKGxldCByPTAsbj1zW2hdLmVuZC1zW2hdLnN0YXJ0KzE7cjxuO3IrKylzW2hdLmlkc1tyXT1sKGUsbyt0KSx0Kz0yfX1yZXR1cm4gc31pZigxMj09PWkpe2NvbnN0IHI9YyhlLHQrYSsxMik7Zm9yKG89dCthKzE2LHM9W10saD0wO2g8cjtoKyspdD1jKGUsbykscy5wdXNoKHtzdGFydDp0LGVuZDpjKGUsbys0KSxpZERlbHRhOmMoZSxvKzgpLXR9KSxvKz0xMjtyZXR1cm4gc310aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigidW5zdXBwb3J0ZWQgY21hcDogIi5jb25jYXQoaSkpfWZ1bmN0aW9uIHAoZSx0LHIsbil7dmFyIGkscztjb25zdCBjPW5ldyBhLkNGRlBhcnNlcihuZXcgby5TdHJlYW0oZSx0LHItdCkse30sbikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOmMuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczpudWxsPT09KGk9Yy50b3BEaWN0LnByaXZhdGVEaWN0KXx8dm9pZCAwPT09aXx8bnVsbD09PShpPWkuc3VicnNJbmRleCl8fHZvaWQgMD09PWk/dm9pZCAwOmkub2JqZWN0cyxnc3VicnM6bnVsbD09PShzPWMuZ2xvYmFsU3VickluZGV4KXx8dm9pZCAwPT09cz92b2lkIDA6cy5vYmplY3RzLGlzQ0ZGQ0lERm9udDpjLmlzQ0lERm9udCxmZFNlbGVjdDpjLmZkU2VsZWN0LGZkQXJyYXk6Yy5mZEFycmF5fX1mdW5jdGlvbiBtKGUsdCl7Y29uc3Qgcj10LmNvZGVQb2ludEF0KDApO2xldCBuPTAsYT0wLGk9ZS5sZW5ndGgtMTtmb3IoO2E8aTspe2NvbnN0IHQ9YStpKzE+PjE7cjxlW3RdLnN0YXJ0P2k9dC0xOmE9dH1yZXR1cm4gZVthXS5zdGFydDw9ciYmcjw9ZVthXS5lbmQmJihuPWVbYV0uaWREZWx0YSsoZVthXS5pZHM/ZVthXS5pZHNbci1lW2FdLnN0YXJ0XTpyKSY2NTUzNSkse2NoYXJDb2RlOnIsZ2x5cGhJZDpufX1mdW5jdGlvbiBiKGUsdCxyKXtmdW5jdGlvbiBuKGUscil7dC5wdXNoKHtjbWQ6Im1vdmVUbyIsYXJnczpbZSxyXX0pfWZ1bmN0aW9uIGEoZSxyKXt0LnB1c2goe2NtZDoibGluZVRvIixhcmdzOltlLHJdfSl9ZnVuY3Rpb24gaShlLHIsbixhKXt0LnB1c2goe2NtZDoicXVhZHJhdGljQ3VydmVUbyIsYXJnczpbZSxyLG4sYV19KX1sZXQgcz0wO2NvbnN0IG89aChlLHMpO2xldCBjLGY9MCxnPTA7aWYocys9MTAsbzwwKWRve2M9bChlLHMpO2NvbnN0IG49bChlLHMrMik7bGV0IGEsaTtzKz00LDEmYz8oMiZjPyhhPWgoZSxzKSxpPWgoZSxzKzIpKTooYT1sKGUscyksaT1sKGUscysyKSkscys9NCk6MiZjPyhhPXUoZSxzKyspLGk9dShlLHMrKykpOihhPWVbcysrXSxpPWVbcysrXSksMiZjPyhmPWEsZz1pKTooZj0wLGc9MCk7bGV0IG89MSxwPTEsbT0wLHk9MDs4JmM/KG89cD1kKGUscykscys9Mik6NjQmYz8obz1kKGUscykscD1kKGUscysyKSxzKz00KToxMjgmYyYmKG89ZChlLHMpLG09ZChlLHMrMikseT1kKGUscys0KSxwPWQoZSxzKzYpLHMrPTgpO2NvbnN0IHc9ci5nbHlwaHNbbl07dyYmKHQucHVzaCh7Y21kOiJzYXZlIn0se2NtZDoidHJhbnNmb3JtIixhcmdzOltvLG0seSxwLGYsZ119KSxiKHcsdCxyKSx0LnB1c2goe2NtZDoicmVzdG9yZSJ9KSl9d2hpbGUoMzImYyk7ZWxzZXtjb25zdCB0PVtdO2xldCByLHU7Zm9yKHI9MDtyPG87cisrKXQucHVzaChsKGUscykpLHMrPTI7cys9MitsKGUscyk7Y29uc3QgZD10LmF0KC0xKSsxLHA9W107Zm9yKDtwLmxlbmd0aDxkOyl7Yz1lW3MrK107bGV0IHQ9MTtmb3IoOCZjJiYodCs9ZVtzKytdKTt0LS0gPjA7KXAucHVzaCh7ZmxhZ3M6Y30pfWZvcihyPTA7cjxkO3IrKyl7c3dpdGNoKDE4JnBbcl0uZmxhZ3Mpe2Nhc2UgMDpmKz1oKGUscykscys9MjticmVhaztjYXNlIDI6Zi09ZVtzKytdO2JyZWFrO2Nhc2UgMTg6Zis9ZVtzKytdfXBbcl0ueD1mfWZvcihyPTA7cjxkO3IrKyl7c3dpdGNoKDM2JnBbcl0uZmxhZ3Mpe2Nhc2UgMDpnKz1oKGUscykscys9MjticmVhaztjYXNlIDQ6Zy09ZVtzKytdO2JyZWFrO2Nhc2UgMzY6Zys9ZVtzKytdfXBbcl0ueT1nfWxldCBtPTA7Zm9yKHM9MDtzPG87cysrKXtjb25zdCBlPXRbc10sbz1wLnNsaWNlKG0sZSsxKTtpZigxJm9bMF0uZmxhZ3Mpby5wdXNoKG9bMF0pO2Vsc2UgaWYoMSZvLmF0KC0xKS5mbGFncylvLnVuc2hpZnQoby5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihvWzBdLngrby5hdCgtMSkueCkvMix5OihvWzBdLnkrby5hdCgtMSkueSkvMn07by51bnNoaWZ0KGUpLG8ucHVzaChlKX1mb3IobihvWzBdLngsb1swXS55KSxyPTEsdT1vLmxlbmd0aDtyPHU7cisrKTEmb1tyXS5mbGFncz9hKG9bcl0ueCxvW3JdLnkpOjEmb1tyKzFdLmZsYWdzPyhpKG9bcl0ueCxvW3JdLnksb1tyKzFdLngsb1tyKzFdLnkpLHIrKyk6aShvW3JdLngsb1tyXS55LChvW3JdLngrb1tyKzFdLngpLzIsKG9bcl0ueStvW3IrMV0ueSkvMik7bT1lKzF9fX1mdW5jdGlvbiB5KGUsdCxyLGEpe2Z1bmN0aW9uIGkoZSxyKXt0LnB1c2goe2NtZDoibW92ZVRvIixhcmdzOltlLHJdfSl9ZnVuY3Rpb24gbyhlLHIpe3QucHVzaCh7Y21kOiJsaW5lVG8iLGFyZ3M6W2Uscl19KX1mdW5jdGlvbiBjKGUscixuLGEsaSxzKXt0LnB1c2goe2NtZDoiYmV6aWVyQ3VydmVUbyIsYXJnczpbZSxyLG4sYSxpLHNdfSl9Y29uc3QgbD1bXTtsZXQgaD0wLHU9MCxkPTA7IWZ1bmN0aW9uIGUoZyl7bGV0IHA9MDtmb3IoO3A8Zy5sZW5ndGg7KXtsZXQgdyx2LHgsUyxBLGssQyxPLEYsST0hMSxUPWdbcCsrXTtzd2l0Y2goVCl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6ZCs9bC5sZW5ndGg+PjEsST0hMDticmVhaztjYXNlIDQ6dSs9bC5wb3AoKSxpKGgsdSksST0hMDticmVhaztjYXNlIDU6Zm9yKDtsLmxlbmd0aD4wOyloKz1sLnNoaWZ0KCksdSs9bC5zaGlmdCgpLG8oaCx1KTticmVhaztjYXNlIDY6Zm9yKDtsLmxlbmd0aD4wJiYoaCs9bC5zaGlmdCgpLG8oaCx1KSwwIT09bC5sZW5ndGgpOyl1Kz1sLnNoaWZ0KCksbyhoLHUpO2JyZWFrO2Nhc2UgNzpmb3IoO2wubGVuZ3RoPjAmJih1Kz1sLnNoaWZ0KCksbyhoLHUpLDAhPT1sLmxlbmd0aCk7KWgrPWwuc2hpZnQoKSxvKGgsdSk7YnJlYWs7Y2FzZSA4OmZvcig7bC5sZW5ndGg+MDspdz1oK2wuc2hpZnQoKSx4PXUrbC5zaGlmdCgpLHY9dytsLnNoaWZ0KCksUz14K2wuc2hpZnQoKSxoPXYrbC5zaGlmdCgpLHU9UytsLnNoaWZ0KCksYyh3LHgsdixTLGgsdSk7YnJlYWs7Y2FzZSAxMDppZihPPWwucG9wKCksRj1udWxsLHIuaXNDRkZDSURGb250KXtjb25zdCBlPXIuZmRTZWxlY3QuZ2V0RkRJbmRleChhKTtpZihlPj0wJiZlPHIuZmRBcnJheS5sZW5ndGgpe3ZhciBiO2NvbnN0IHQ9ci5mZEFycmF5W2VdO2xldCBuOyhudWxsPT09KGI9dC5wcml2YXRlRGljdCl8fHZvaWQgMD09PWI/dm9pZCAwOmIuc3VicnNJbmRleCkmJihuPXQucHJpdmF0ZURpY3Quc3VicnNJbmRleC5vYmplY3RzKSxuJiYoTys9ZihuKSxGPW5bT10pfWVsc2UoMCxuLndhcm4pKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIEY9ci5zdWJyc1tPK3Iuc3VicnNCaWFzXTtGJiZlKEYpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6c3dpdGNoKFQ9Z1twKytdLFQpe2Nhc2UgMzQ6dz1oK2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLEE9dStsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSxjKHcsdSx2LEEsaCxBKSx3PWgrbC5zaGlmdCgpLHY9dytsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSxjKHcsQSx2LHUsaCx1KTticmVhaztjYXNlIDM1Onc9aCtsLnNoaWZ0KCkseD11K2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSx1PVMrbC5zaGlmdCgpLGModyx4LHYsUyxoLHUpLHc9aCtsLnNoaWZ0KCkseD11K2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSx1PVMrbC5zaGlmdCgpLGModyx4LHYsUyxoLHUpLGwucG9wKCk7YnJlYWs7Y2FzZSAzNjp3PWgrbC5zaGlmdCgpLEE9dStsLnNoaWZ0KCksdj13K2wuc2hpZnQoKSxrPUErbC5zaGlmdCgpLGg9ditsLnNoaWZ0KCksYyh3LEEsdixrLGgsayksdz1oK2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLEM9aytsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSxjKHcsayx2LEMsaCx1KTticmVhaztjYXNlIDM3OmNvbnN0IGU9aCx0PXU7dz1oK2wuc2hpZnQoKSx4PXUrbC5zaGlmdCgpLHY9dytsLnNoaWZ0KCksUz14K2wuc2hpZnQoKSxoPXYrbC5zaGlmdCgpLHU9UytsLnNoaWZ0KCksYyh3LHgsdixTLGgsdSksdz1oK2wuc2hpZnQoKSx4PXUrbC5zaGlmdCgpLHY9dytsLnNoaWZ0KCksUz14K2wuc2hpZnQoKSxoPXYsdT1TLE1hdGguYWJzKGgtZSk+TWF0aC5hYnModS10KT9oKz1sLnNoaWZ0KCk6dSs9bC5zaGlmdCgpLGModyx4LHYsUyxoLHUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoInVua25vd24gb3BlcmF0b3I6IDEyICIuY29uY2F0KFQpKX1icmVhaztjYXNlIDE0OmlmKGwubGVuZ3RoPj00KXtjb25zdCBlPWwucG9wKCksbj1sLnBvcCgpO3U9bC5wb3AoKSxoPWwucG9wKCksdC5wdXNoKHtjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2xhdGUiLGFyZ3M6W2gsdV19KTtsZXQgYT1tKHIuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKHIuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tlXV0pKTt5KHIuZ2x5cGhzW2EuZ2x5cGhJZF0sdCxyLGEuZ2x5cGhJZCksdC5wdXNoKHtjbWQ6InJlc3RvcmUifSksYT1tKHIuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKHIuZ2x5cGhOYW1lTWFwW3MuU3RhbmRhcmRFbmNvZGluZ1tuXV0pKSx5KHIuZ2x5cGhzW2EuZ2x5cGhJZF0sdCxyLGEuZ2x5cGhJZCl9cmV0dXJuO2Nhc2UgMTk6Y2FzZSAyMDpkKz1sLmxlbmd0aD4+MSxwKz1kKzc+PjMsST0hMDticmVhaztjYXNlIDIxOnUrPWwucG9wKCksaCs9bC5wb3AoKSxpKGgsdSksST0hMDticmVhaztjYXNlIDIyOmgrPWwucG9wKCksaShoLHUpLEk9ITA7YnJlYWs7Y2FzZSAyNDpmb3IoO2wubGVuZ3RoPjI7KXc9aCtsLnNoaWZ0KCkseD11K2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksaD12K2wuc2hpZnQoKSx1PVMrbC5zaGlmdCgpLGModyx4LHYsUyxoLHUpO2grPWwuc2hpZnQoKSx1Kz1sLnNoaWZ0KCksbyhoLHUpO2JyZWFrO2Nhc2UgMjU6Zm9yKDtsLmxlbmd0aD42OyloKz1sLnNoaWZ0KCksdSs9bC5zaGlmdCgpLG8oaCx1KTt3PWgrbC5zaGlmdCgpLHg9dStsLnNoaWZ0KCksdj13K2wuc2hpZnQoKSxTPXgrbC5zaGlmdCgpLGg9ditsLnNoaWZ0KCksdT1TK2wuc2hpZnQoKSxjKHcseCx2LFMsaCx1KTticmVhaztjYXNlIDI2OmZvcihsLmxlbmd0aCUyJiYoaCs9bC5zaGlmdCgpKTtsLmxlbmd0aD4wOyl3PWgseD11K2wuc2hpZnQoKSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksaD12LHU9UytsLnNoaWZ0KCksYyh3LHgsdixTLGgsdSk7YnJlYWs7Y2FzZSAyNzpmb3IobC5sZW5ndGglMiYmKHUrPWwuc2hpZnQoKSk7bC5sZW5ndGg+MDspdz1oK2wuc2hpZnQoKSx4PXUsdj13K2wuc2hpZnQoKSxTPXgrbC5zaGlmdCgpLGg9ditsLnNoaWZ0KCksdT1TLGModyx4LHYsUyxoLHUpO2JyZWFrO2Nhc2UgMjg6bC5wdXNoKChnW3BdPDwyNHxnW3ArMV08PDE2KT4+MTYpLHArPTI7YnJlYWs7Y2FzZSAyOTpPPWwucG9wKCkrci5nc3VicnNCaWFzLEY9ci5nc3VicnNbT10sRiYmZShGKTticmVhaztjYXNlIDMwOmZvcig7bC5sZW5ndGg+MCYmKHc9aCx4PXUrbC5zaGlmdCgpLHY9dytsLnNoaWZ0KCksUz14K2wuc2hpZnQoKSxoPXYrbC5zaGlmdCgpLHU9UysoMT09PWwubGVuZ3RoP2wuc2hpZnQoKTowKSxjKHcseCx2LFMsaCx1KSwwIT09bC5sZW5ndGgpOyl3PWgrbC5zaGlmdCgpLHg9dSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksdT1TK2wuc2hpZnQoKSxoPXYrKDE9PT1sLmxlbmd0aD9sLnNoaWZ0KCk6MCksYyh3LHgsdixTLGgsdSk7YnJlYWs7Y2FzZSAzMTpmb3IoO2wubGVuZ3RoPjAmJih3PWgrbC5zaGlmdCgpLHg9dSx2PXcrbC5zaGlmdCgpLFM9eCtsLnNoaWZ0KCksdT1TK2wuc2hpZnQoKSxoPXYrKDE9PT1sLmxlbmd0aD9sLnNoaWZ0KCk6MCksYyh3LHgsdixTLGgsdSksMCE9PWwubGVuZ3RoKTspdz1oLHg9dStsLnNoaWZ0KCksdj13K2wuc2hpZnQoKSxTPXgrbC5zaGlmdCgpLGg9ditsLnNoaWZ0KCksdT1TKygxPT09bC5sZW5ndGg/bC5zaGlmdCgpOjApLGModyx4LHYsUyxoLHUpO2JyZWFrO2RlZmF1bHQ6aWYoVDwzMil0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigidW5rbm93biBvcGVyYXRvcjogIi5jb25jYXQoVCkpO1Q8MjQ3P2wucHVzaChULTEzOSk6VDwyNTE/bC5wdXNoKDI1NiooVC0yNDcpK2dbcCsrXSsxMDgpOlQ8MjU1P2wucHVzaCgyNTYqLShULTI1MSktZ1twKytdLTEwOCk6KGwucHVzaCgoZ1twXTw8MjR8Z1twKzFdPDwxNnxnW3ArMl08PDh8Z1twKzNdKS82NTUzNikscCs9NCl9SSYmKGwubGVuZ3RoPTApfX0oZSl9Y29uc3Qgdz1bXTtjbGFzcyB2e2NvbnN0cnVjdG9yKGUpe3RoaXMuY29uc3RydWN0b3I9PT12JiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQ29tcGlsZWRGb250LiIpLHRoaXMuZm9udE1hdHJpeD1lLHRoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOnJ9PW0odGhpcy5jbWFwLGUpO2xldCBuPXRoaXMuY29tcGlsZWRHbHlwaHNbcl07aWYoIW4pdHJ5e249dGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbcl0sciksdGhpcy5jb21waWxlZEdseXBoc1tyXT1ufWNhdGNoKGUpe3Rocm93IHRoaXMuY29tcGlsZWRHbHlwaHNbcl09dyx2b2lkIDA9PT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF0mJih0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF09ciksZX1yZXR1cm4gdm9pZCAwPT09dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdJiYodGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPXIpLG59Y29tcGlsZUdseXBoKGUsdCl7aWYoIWV8fDA9PT1lLmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiB3O2xldCByPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7ZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoP3I9dGhpcy5mZEFycmF5W2VdLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpfHxuLkZPTlRfSURFTlRJVFlfTUFUUklYOigwLG4ud2FybikoIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWNvbnN0IGE9W3tjbWQ6InNhdmUifSx7Y21kOiJ0cmFuc2Zvcm0iLGFyZ3M6ci5zbGljZSgpfSx7Y21kOiJzY2FsZSIsYXJnczpbInNpemUiLCItc2l6ZSJdfV07cmV0dXJuIHRoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCksYS5wdXNoKHtjbWQ6InJlc3RvcmUifSksYX1jb21waWxlR2x5cGhJbXBsKCl7KDAsbi51bnJlYWNoYWJsZSkoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6cn09bSh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbcl0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgeCBleHRlbmRzIHZ7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKHJ8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKSx0aGlzLmdseXBocz1lLHRoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtiKGUsdCx0aGlzKX19Y2xhc3MgUyBleHRlbmRzIHZ7Y29uc3RydWN0b3IoZSx0LHIsbil7c3VwZXIocnx8Wy4wMDEsMCwwLC4wMDEsMCwwXSksdGhpcy5nbHlwaHM9ZS5nbHlwaHMsdGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdLHRoaXMuc3VicnM9ZS5zdWJyc3x8W10sdGhpcy5jbWFwPXQsdGhpcy5nbHlwaE5hbWVNYXA9bnx8KDAsaS5nZXRHbHlwaHNVbmljb2RlKSgpLHRoaXMuZ3N1YnJzQmlhcz1mKHRoaXMuZ3N1YnJzKSx0aGlzLnN1YnJzQmlhcz1mKHRoaXMuc3VicnMpLHRoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250LHRoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdCx0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LHIpe3koZSx0LHRoaXMscil9fXQuRm9udFJlbmRlcmVyRmFjdG9yeT1jbGFzc3tzdGF0aWMgY3JlYXRlKGUsdCl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmRhdGEpO2xldCBhLGkscyxvLGgsdTtjb25zdCBkPWwociw0KTtmb3IobGV0IGU9MCxmPTEyO2U8ZDtlKyssZis9MTYpe2NvbnN0IGU9KDAsbi5ieXRlc1RvU3RyaW5nKShyLnN1YmFycmF5KGYsZis0KSksZD1jKHIsZis4KSxtPWMocixmKzEyKTtzd2l0Y2goZSl7Y2FzZSJjbWFwIjphPWcocixkKTticmVhaztjYXNlImdseWYiOmk9ci5zdWJhcnJheShkLGQrbSk7YnJlYWs7Y2FzZSJsb2NhIjpzPXIuc3ViYXJyYXkoZCxkK20pO2JyZWFrO2Nhc2UiaGVhZCI6dT1sKHIsZCsxOCksaD1sKHIsZCs1MCk7YnJlYWs7Y2FzZSJDRkYgIjpvPXAocixkLGQrbSx0KX19aWYoaSl7Y29uc3QgdD11P1sxL3UsMCwwLDEvdSwwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IHgoZnVuY3Rpb24oZSx0LHIpe2xldCBuLGE7cj8obj00LGE9Yyk6KG49MixhPShlLHQpPT4yKmwoZSx0KSk7Y29uc3QgaT1bXTtsZXQgcz1hKHQsMCk7Zm9yKGxldCByPW47cjx0Lmxlbmd0aDtyKz1uKXtjb25zdCBuPWEodCxyKTtpLnB1c2goZS5zdWJhcnJheShzLG4pKSxzPW59cmV0dXJuIGl9KGkscyxoKSxhLHQpfXJldHVybiBuZXcgUyhvLGEsZS5mb250TWF0cml4LGUuZ2x5cGhOYW1lTWFwKX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0TWV0cmljcz10LmdldEZvbnRCYXNpY01ldHJpY3M9dm9pZCAwO3ZhciBuPXIoMTQ5KTtjb25zdCBhPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPTYwMCxlWyJDb3VyaWVyLUJvbGQiXT02MDAsZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPTYwMCxlWyJDb3VyaWVyLU9ibGlxdWUiXT02MDAsZS5IZWx2ZXRpY2E9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3OCxlLmV4Y2xhbT0yNzgsZS5xdW90ZWRibD0zNTUsZS5udW1iZXJzaWduPTU1NixlLmRvbGxhcj01NTYsZS5wZXJjZW50PTg4OSxlLmFtcGVyc2FuZD02NjcsZS5xdW90ZXJpZ2h0PTIyMixlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrPTM4OSxlLnBsdXM9NTg0LGUuY29tbWE9Mjc4LGUuaHlwaGVuPTMzMyxlLnBlcmlvZD0yNzgsZS5zbGFzaD0yNzgsZS56ZXJvPTU1NixlLm9uZT01NTYsZS50d289NTU2LGUudGhyZWU9NTU2LGUuZm91cj01NTYsZS5maXZlPTU1NixlLnNpeD01NTYsZS5zZXZlbj01NTYsZS5laWdodD01NTYsZS5uaW5lPTU1NixlLmNvbG9uPTI3OCxlLnNlbWljb2xvbj0yNzgsZS5sZXNzPTU4NCxlLmVxdWFsPTU4NCxlLmdyZWF0ZXI9NTg0LGUucXVlc3Rpb249NTU2LGUuYXQ9MTAxNSxlLkE9NjY3LGUuQj02NjcsZS5DPTcyMixlLkQ9NzIyLGUuRT02NjcsZS5GPTYxMSxlLkc9Nzc4LGUuSD03MjIsZS5JPTI3OCxlLko9NTAwLGUuSz02NjcsZS5MPTU1NixlLk09ODMzLGUuTj03MjIsZS5PPTc3OCxlLlA9NjY3LGUuUT03NzgsZS5SPTcyMixlLlM9NjY3LGUuVD02MTEsZS5VPTcyMixlLlY9NjY3LGUuVz05NDQsZS5YPTY2NyxlLlk9NjY3LGUuWj02MTEsZS5icmFja2V0bGVmdD0yNzgsZS5iYWNrc2xhc2g9Mjc4LGUuYnJhY2tldHJpZ2h0PTI3OCxlLmFzY2lpY2lyY3VtPTQ2OSxlLnVuZGVyc2NvcmU9NTU2LGUucXVvdGVsZWZ0PTIyMixlLmE9NTU2LGUuYj01NTYsZS5jPTUwMCxlLmQ9NTU2LGUuZT01NTYsZS5mPTI3OCxlLmc9NTU2LGUuaD01NTYsZS5pPTIyMixlLmo9MjIyLGUuaz01MDAsZS5sPTIyMixlLm09ODMzLGUubj01NTYsZS5vPTU1NixlLnA9NTU2LGUucT01NTYsZS5yPTMzMyxlLnM9NTAwLGUudD0yNzgsZS51PTU1NixlLnY9NTAwLGUudz03MjIsZS54PTUwMCxlLnk9NTAwLGUuej01MDAsZS5icmFjZWxlZnQ9MzM0LGUuYmFyPTI2MCxlLmJyYWNlcmlnaHQ9MzM0LGUuYXNjaWl0aWxkZT01ODQsZS5leGNsYW1kb3duPTMzMyxlLmNlbnQ9NTU2LGUuc3Rlcmxpbmc9NTU2LGUuZnJhY3Rpb249MTY3LGUueWVuPTU1NixlLmZsb3Jpbj01NTYsZS5zZWN0aW9uPTU1NixlLmN1cnJlbmN5PTU1NixlLnF1b3Rlc2luZ2xlPTE5MSxlLnF1b3RlZGJsbGVmdD0zMzMsZS5ndWlsbGVtb3RsZWZ0PTU1NixlLmd1aWxzaW5nbGxlZnQ9MzMzLGUuZ3VpbHNpbmdscmlnaHQ9MzMzLGUuZmk9NTAwLGUuZmw9NTAwLGUuZW5kYXNoPTU1NixlLmRhZ2dlcj01NTYsZS5kYWdnZXJkYmw9NTU2LGUucGVyaW9kY2VudGVyZWQ9Mjc4LGUucGFyYWdyYXBoPTUzNyxlLmJ1bGxldD0zNTAsZS5xdW90ZXNpbmdsYmFzZT0yMjIsZS5xdW90ZWRibGJhc2U9MzMzLGUucXVvdGVkYmxyaWdodD0zMzMsZS5ndWlsbGVtb3RyaWdodD01NTYsZS5lbGxpcHNpcz0xZTMsZS5wZXJ0aG91c2FuZD0xZTMsZS5xdWVzdGlvbmRvd249NjExLGUuZ3JhdmU9MzMzLGUuYWN1dGU9MzMzLGUuY2lyY3VtZmxleD0zMzMsZS50aWxkZT0zMzMsZS5tYWNyb249MzMzLGUuYnJldmU9MzMzLGUuZG90YWNjZW50PTMzMyxlLmRpZXJlc2lzPTMzMyxlLnJpbmc9MzMzLGUuY2VkaWxsYT0zMzMsZS5odW5nYXJ1bWxhdXQ9MzMzLGUub2dvbmVrPTMzMyxlLmNhcm9uPTMzMyxlLmVtZGFzaD0xZTMsZS5BRT0xZTMsZS5vcmRmZW1pbmluZT0zNzAsZS5Mc2xhc2g9NTU2LGUuT3NsYXNoPTc3OCxlLk9FPTFlMyxlLm9yZG1hc2N1bGluZT0zNjUsZS5hZT04ODksZS5kb3RsZXNzaT0yNzgsZS5sc2xhc2g9MjIyLGUub3NsYXNoPTYxMSxlLm9lPTk0NCxlLmdlcm1hbmRibHM9NjExLGUuSWRpZXJlc2lzPTI3OCxlLmVhY3V0ZT01NTYsZS5hYnJldmU9NTU2LGUudWh1bmdhcnVtbGF1dD01NTYsZS5lY2Fyb249NTU2LGUuWWRpZXJlc2lzPTY2NyxlLmRpdmlkZT01ODQsZS5ZYWN1dGU9NjY3LGUuQWNpcmN1bWZsZXg9NjY3LGUuYWFjdXRlPTU1NixlLlVjaXJjdW1mbGV4PTcyMixlLnlhY3V0ZT01MDAsZS5zY29tbWFhY2NlbnQ9NTAwLGUuZWNpcmN1bWZsZXg9NTU2LGUuVXJpbmc9NzIyLGUuVWRpZXJlc2lzPTcyMixlLmFvZ29uZWs9NTU2LGUuVWFjdXRlPTcyMixlLnVvZ29uZWs9NTU2LGUuRWRpZXJlc2lzPTY2NyxlLkRjcm9hdD03MjIsZS5jb21tYWFjY2VudD0yNTAsZS5jb3B5cmlnaHQ9NzM3LGUuRW1hY3Jvbj02NjcsZS5jY2Fyb249NTAwLGUuYXJpbmc9NTU2LGUuTmNvbW1hYWNjZW50PTcyMixlLmxhY3V0ZT0yMjIsZS5hZ3JhdmU9NTU2LGUuVGNvbW1hYWNjZW50PTYxMSxlLkNhY3V0ZT03MjIsZS5hdGlsZGU9NTU2LGUuRWRvdGFjY2VudD02NjcsZS5zY2Fyb249NTAwLGUuc2NlZGlsbGE9NTAwLGUuaWFjdXRlPTI3OCxlLmxvemVuZ2U9NDcxLGUuUmNhcm9uPTcyMixlLkdjb21tYWFjY2VudD03NzgsZS51Y2lyY3VtZmxleD01NTYsZS5hY2lyY3VtZmxleD01NTYsZS5BbWFjcm9uPTY2NyxlLnJjYXJvbj0zMzMsZS5jY2VkaWxsYT01MDAsZS5aZG90YWNjZW50PTYxMSxlLlRob3JuPTY2NyxlLk9tYWNyb249Nzc4LGUuUmFjdXRlPTcyMixlLlNhY3V0ZT02NjcsZS5kY2Fyb249NjQzLGUuVW1hY3Jvbj03MjIsZS51cmluZz01NTYsZS50aHJlZXN1cGVyaW9yPTMzMyxlLk9ncmF2ZT03NzgsZS5BZ3JhdmU9NjY3LGUuQWJyZXZlPTY2NyxlLm11bHRpcGx5PTU4NCxlLnVhY3V0ZT01NTYsZS5UY2Fyb249NjExLGUucGFydGlhbGRpZmY9NDc2LGUueWRpZXJlc2lzPTUwMCxlLk5hY3V0ZT03MjIsZS5pY2lyY3VtZmxleD0yNzgsZS5FY2lyY3VtZmxleD02NjcsZS5hZGllcmVzaXM9NTU2LGUuZWRpZXJlc2lzPTU1NixlLmNhY3V0ZT01MDAsZS5uYWN1dGU9NTU2LGUudW1hY3Jvbj01NTYsZS5OY2Fyb249NzIyLGUuSWFjdXRlPTI3OCxlLnBsdXNtaW51cz01ODQsZS5icm9rZW5iYXI9MjYwLGUucmVnaXN0ZXJlZD03MzcsZS5HYnJldmU9Nzc4LGUuSWRvdGFjY2VudD0yNzgsZS5zdW1tYXRpb249NjAwLGUuRWdyYXZlPTY2NyxlLnJhY3V0ZT0zMzMsZS5vbWFjcm9uPTU1NixlLlphY3V0ZT02MTEsZS5aY2Fyb249NjExLGUuZ3JlYXRlcmVxdWFsPTU0OSxlLkV0aD03MjIsZS5DY2VkaWxsYT03MjIsZS5sY29tbWFhY2NlbnQ9MjIyLGUudGNhcm9uPTMxNyxlLmVvZ29uZWs9NTU2LGUuVW9nb25laz03MjIsZS5BYWN1dGU9NjY3LGUuQWRpZXJlc2lzPTY2NyxlLmVncmF2ZT01NTYsZS56YWN1dGU9NTAwLGUuaW9nb25laz0yMjIsZS5PYWN1dGU9Nzc4LGUub2FjdXRlPTU1NixlLmFtYWNyb249NTU2LGUuc2FjdXRlPTUwMCxlLmlkaWVyZXNpcz0yNzgsZS5PY2lyY3VtZmxleD03NzgsZS5VZ3JhdmU9NzIyLGUuRGVsdGE9NjEyLGUudGhvcm49NTU2LGUudHdvc3VwZXJpb3I9MzMzLGUuT2RpZXJlc2lzPTc3OCxlLm11PTU1NixlLmlncmF2ZT0yNzgsZS5vaHVuZ2FydW1sYXV0PTU1NixlLkVvZ29uZWs9NjY3LGUuZGNyb2F0PTU1NixlLnRocmVlcXVhcnRlcnM9ODM0LGUuU2NlZGlsbGE9NjY3LGUubGNhcm9uPTI5OSxlLktjb21tYWFjY2VudD02NjcsZS5MYWN1dGU9NTU2LGUudHJhZGVtYXJrPTFlMyxlLmVkb3RhY2NlbnQ9NTU2LGUuSWdyYXZlPTI3OCxlLkltYWNyb249Mjc4LGUuTGNhcm9uPTU1NixlLm9uZWhhbGY9ODM0LGUubGVzc2VxdWFsPTU0OSxlLm9jaXJjdW1mbGV4PTU1NixlLm50aWxkZT01NTYsZS5VaHVuZ2FydW1sYXV0PTcyMixlLkVhY3V0ZT02NjcsZS5lbWFjcm9uPTU1NixlLmdicmV2ZT01NTYsZS5vbmVxdWFydGVyPTgzNCxlLlNjYXJvbj02NjcsZS5TY29tbWFhY2NlbnQ9NjY3LGUuT2h1bmdhcnVtbGF1dD03NzgsZS5kZWdyZWU9NDAwLGUub2dyYXZlPTU1NixlLkNjYXJvbj03MjIsZS51Z3JhdmU9NTU2LGUucmFkaWNhbD00NTMsZS5EY2Fyb249NzIyLGUucmNvbW1hYWNjZW50PTMzMyxlLk50aWxkZT03MjIsZS5vdGlsZGU9NTU2LGUuUmNvbW1hYWNjZW50PTcyMixlLkxjb21tYWFjY2VudD01NTYsZS5BdGlsZGU9NjY3LGUuQW9nb25laz02NjcsZS5BcmluZz02NjcsZS5PdGlsZGU9Nzc4LGUuemRvdGFjY2VudD01MDAsZS5FY2Fyb249NjY3LGUuSW9nb25laz0yNzgsZS5rY29tbWFhY2NlbnQ9NTAwLGUubWludXM9NTg0LGUuSWNpcmN1bWZsZXg9Mjc4LGUubmNhcm9uPTU1NixlLnRjb21tYWFjY2VudD0yNzgsZS5sb2dpY2Fsbm90PTU4NCxlLm9kaWVyZXNpcz01NTYsZS51ZGllcmVzaXM9NTU2LGUubm90ZXF1YWw9NTQ5LGUuZ2NvbW1hYWNjZW50PTU1NixlLmV0aD01NTYsZS56Y2Fyb249NTAwLGUubmNvbW1hYWNjZW50PTU1NixlLm9uZXN1cGVyaW9yPTMzMyxlLmltYWNyb249Mjc4LGUuRXVybz01NTZ9KSksZVsiSGVsdmV0aWNhLUJvbGQiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4LGUuZXhjbGFtPTMzMyxlLnF1b3RlZGJsPTQ3NCxlLm51bWJlcnNpZ249NTU2LGUuZG9sbGFyPTU1NixlLnBlcmNlbnQ9ODg5LGUuYW1wZXJzYW5kPTcyMixlLnF1b3RlcmlnaHQ9Mjc4LGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9Mzg5LGUucGx1cz01ODQsZS5jb21tYT0yNzgsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI3OCxlLnNsYXNoPTI3OCxlLnplcm89NTU2LGUub25lPTU1NixlLnR3bz01NTYsZS50aHJlZT01NTYsZS5mb3VyPTU1NixlLmZpdmU9NTU2LGUuc2l4PTU1NixlLnNldmVuPTU1NixlLmVpZ2h0PTU1NixlLm5pbmU9NTU2LGUuY29sb249MzMzLGUuc2VtaWNvbG9uPTMzMyxlLmxlc3M9NTg0LGUuZXF1YWw9NTg0LGUuZ3JlYXRlcj01ODQsZS5xdWVzdGlvbj02MTEsZS5hdD05NzUsZS5BPTcyMixlLkI9NzIyLGUuQz03MjIsZS5EPTcyMixlLkU9NjY3LGUuRj02MTEsZS5HPTc3OCxlLkg9NzIyLGUuST0yNzgsZS5KPTU1NixlLks9NzIyLGUuTD02MTEsZS5NPTgzMyxlLk49NzIyLGUuTz03NzgsZS5QPTY2NyxlLlE9Nzc4LGUuUj03MjIsZS5TPTY2NyxlLlQ9NjExLGUuVT03MjIsZS5WPTY2NyxlLlc9OTQ0LGUuWD02NjcsZS5ZPTY2NyxlLlo9NjExLGUuYnJhY2tldGxlZnQ9MzMzLGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zMzMsZS5hc2NpaWNpcmN1bT01ODQsZS51bmRlcnNjb3JlPTU1NixlLnF1b3RlbGVmdD0yNzgsZS5hPTU1NixlLmI9NjExLGUuYz01NTYsZS5kPTYxMSxlLmU9NTU2LGUuZj0zMzMsZS5nPTYxMSxlLmg9NjExLGUuaT0yNzgsZS5qPTI3OCxlLms9NTU2LGUubD0yNzgsZS5tPTg4OSxlLm49NjExLGUubz02MTEsZS5wPTYxMSxlLnE9NjExLGUucj0zODksZS5zPTU1NixlLnQ9MzMzLGUudT02MTEsZS52PTU1NixlLnc9Nzc4LGUueD01NTYsZS55PTU1NixlLno9NTAwLGUuYnJhY2VsZWZ0PTM4OSxlLmJhcj0yODAsZS5icmFjZXJpZ2h0PTM4OSxlLmFzY2lpdGlsZGU9NTg0LGUuZXhjbGFtZG93bj0zMzMsZS5jZW50PTU1NixlLnN0ZXJsaW5nPTU1NixlLmZyYWN0aW9uPTE2NyxlLnllbj01NTYsZS5mbG9yaW49NTU2LGUuc2VjdGlvbj01NTYsZS5jdXJyZW5jeT01NTYsZS5xdW90ZXNpbmdsZT0yMzgsZS5xdW90ZWRibGxlZnQ9NTAwLGUuZ3VpbGxlbW90bGVmdD01NTYsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTYxMSxlLmZsPTYxMSxlLmVuZGFzaD01NTYsZS5kYWdnZXI9NTU2LGUuZGFnZ2VyZGJsPTU1NixlLnBlcmlvZGNlbnRlcmVkPTI3OCxlLnBhcmFncmFwaD01NTYsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9Mjc4LGUucXVvdGVkYmxiYXNlPTUwMCxlLnF1b3RlZGJscmlnaHQ9NTAwLGUuZ3VpbGxlbW90cmlnaHQ9NTU2LGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTYxMSxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9MWUzLGUub3JkZmVtaW5pbmU9MzcwLGUuTHNsYXNoPTYxMSxlLk9zbGFzaD03NzgsZS5PRT0xZTMsZS5vcmRtYXNjdWxpbmU9MzY1LGUuYWU9ODg5LGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD02MTEsZS5vZT05NDQsZS5nZXJtYW5kYmxzPTYxMSxlLklkaWVyZXNpcz0yNzgsZS5lYWN1dGU9NTU2LGUuYWJyZXZlPTU1NixlLnVodW5nYXJ1bWxhdXQ9NjExLGUuZWNhcm9uPTU1NixlLllkaWVyZXNpcz02NjcsZS5kaXZpZGU9NTg0LGUuWWFjdXRlPTY2NyxlLkFjaXJjdW1mbGV4PTcyMixlLmFhY3V0ZT01NTYsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NTU2LGUuc2NvbW1hYWNjZW50PTU1NixlLmVjaXJjdW1mbGV4PTU1NixlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTU1NixlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTYxMSxlLkVkaWVyZXNpcz02NjcsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTczNyxlLkVtYWNyb249NjY3LGUuY2Nhcm9uPTU1NixlLmFyaW5nPTU1NixlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTU1NixlLlRjb21tYWFjY2VudD02MTEsZS5DYWN1dGU9NzIyLGUuYXRpbGRlPTU1NixlLkVkb3RhY2NlbnQ9NjY3LGUuc2Nhcm9uPTU1NixlLnNjZWRpbGxhPTU1NixlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ5NCxlLlJjYXJvbj03MjIsZS5HY29tbWFhY2NlbnQ9Nzc4LGUudWNpcmN1bWZsZXg9NjExLGUuYWNpcmN1bWZsZXg9NTU2LGUuQW1hY3Jvbj03MjIsZS5yY2Fyb249Mzg5LGUuY2NlZGlsbGE9NTU2LGUuWmRvdGFjY2VudD02MTEsZS5UaG9ybj02NjcsZS5PbWFjcm9uPTc3OCxlLlJhY3V0ZT03MjIsZS5TYWN1dGU9NjY3LGUuZGNhcm9uPTc0MyxlLlVtYWNyb249NzIyLGUudXJpbmc9NjExLGUudGhyZWVzdXBlcmlvcj0zMzMsZS5PZ3JhdmU9Nzc4LGUuQWdyYXZlPTcyMixlLkFicmV2ZT03MjIsZS5tdWx0aXBseT01ODQsZS51YWN1dGU9NjExLGUuVGNhcm9uPTYxMSxlLnBhcnRpYWxkaWZmPTQ5NCxlLnlkaWVyZXNpcz01NTYsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjY3LGUuYWRpZXJlc2lzPTU1NixlLmVkaWVyZXNpcz01NTYsZS5jYWN1dGU9NTU2LGUubmFjdXRlPTYxMSxlLnVtYWNyb249NjExLGUuTmNhcm9uPTcyMixlLklhY3V0ZT0yNzgsZS5wbHVzbWludXM9NTg0LGUuYnJva2VuYmFyPTI4MCxlLnJlZ2lzdGVyZWQ9NzM3LGUuR2JyZXZlPTc3OCxlLklkb3RhY2NlbnQ9Mjc4LGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02NjcsZS5yYWN1dGU9Mzg5LGUub21hY3Jvbj02MTEsZS5aYWN1dGU9NjExLGUuWmNhcm9uPTYxMSxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NzIyLGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj0zODksZS5lb2dvbmVrPTU1NixlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTcyMixlLkFkaWVyZXNpcz03MjIsZS5lZ3JhdmU9NTU2LGUuemFjdXRlPTUwMCxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTc3OCxlLm9hY3V0ZT02MTEsZS5hbWFjcm9uPTU1NixlLnNhY3V0ZT01NTYsZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9Nzc4LGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTYxMSxlLnR3b3N1cGVyaW9yPTMzMyxlLk9kaWVyZXNpcz03NzgsZS5tdT02MTEsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD02MTEsZS5Fb2dvbmVrPTY2NyxlLmRjcm9hdD02MTEsZS50aHJlZXF1YXJ0ZXJzPTgzNCxlLlNjZWRpbGxhPTY2NyxlLmxjYXJvbj00MDAsZS5LY29tbWFhY2NlbnQ9NzIyLGUuTGFjdXRlPTYxMSxlLnRyYWRlbWFyaz0xZTMsZS5lZG90YWNjZW50PTU1NixlLklncmF2ZT0yNzgsZS5JbWFjcm9uPTI3OCxlLkxjYXJvbj02MTEsZS5vbmVoYWxmPTgzNCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD02MTEsZS5udGlsZGU9NjExLGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjY3LGUuZW1hY3Jvbj01NTYsZS5nYnJldmU9NjExLGUub25lcXVhcnRlcj04MzQsZS5TY2Fyb249NjY3LGUuU2NvbW1hYWNjZW50PTY2NyxlLk9odW5nYXJ1bWxhdXQ9Nzc4LGUuZGVncmVlPTQwMCxlLm9ncmF2ZT02MTEsZS5DY2Fyb249NzIyLGUudWdyYXZlPTYxMSxlLnJhZGljYWw9NTQ5LGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zODksZS5OdGlsZGU9NzIyLGUub3RpbGRlPTYxMSxlLlJjb21tYWFjY2VudD03MjIsZS5MY29tbWFhY2NlbnQ9NjExLGUuQXRpbGRlPTcyMixlLkFvZ29uZWs9NzIyLGUuQXJpbmc9NzIyLGUuT3RpbGRlPTc3OCxlLnpkb3RhY2NlbnQ9NTAwLGUuRWNhcm9uPTY2NyxlLklvZ29uZWs9Mjc4LGUua2NvbW1hYWNjZW50PTU1NixlLm1pbnVzPTU4NCxlLkljaXJjdW1mbGV4PTI3OCxlLm5jYXJvbj02MTEsZS50Y29tbWFhY2NlbnQ9MzMzLGUubG9naWNhbG5vdD01ODQsZS5vZGllcmVzaXM9NjExLGUudWRpZXJlc2lzPTYxMSxlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD02MTEsZS5ldGg9NjExLGUuemNhcm9uPTUwMCxlLm5jb21tYWFjY2VudD02MTEsZS5vbmVzdXBlcmlvcj0zMzMsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTU2fSkpLGVbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzgsZS5leGNsYW09MzMzLGUucXVvdGVkYmw9NDc0LGUubnVtYmVyc2lnbj01NTYsZS5kb2xsYXI9NTU2LGUucGVyY2VudD04ODksZS5hbXBlcnNhbmQ9NzIyLGUucXVvdGVyaWdodD0yNzgsZS5wYXJlbmxlZnQ9MzMzLGUucGFyZW5yaWdodD0zMzMsZS5hc3Rlcmlzaz0zODksZS5wbHVzPTU4NCxlLmNvbW1hPTI3OCxlLmh5cGhlbj0zMzMsZS5wZXJpb2Q9Mjc4LGUuc2xhc2g9Mjc4LGUuemVybz01NTYsZS5vbmU9NTU2LGUudHdvPTU1NixlLnRocmVlPTU1NixlLmZvdXI9NTU2LGUuZml2ZT01NTYsZS5zaXg9NTU2LGUuc2V2ZW49NTU2LGUuZWlnaHQ9NTU2LGUubmluZT01NTYsZS5jb2xvbj0zMzMsZS5zZW1pY29sb249MzMzLGUubGVzcz01ODQsZS5lcXVhbD01ODQsZS5ncmVhdGVyPTU4NCxlLnF1ZXN0aW9uPTYxMSxlLmF0PTk3NSxlLkE9NzIyLGUuQj03MjIsZS5DPTcyMixlLkQ9NzIyLGUuRT02NjcsZS5GPTYxMSxlLkc9Nzc4LGUuSD03MjIsZS5JPTI3OCxlLko9NTU2LGUuSz03MjIsZS5MPTYxMSxlLk09ODMzLGUuTj03MjIsZS5PPTc3OCxlLlA9NjY3LGUuUT03NzgsZS5SPTcyMixlLlM9NjY3LGUuVD02MTEsZS5VPTcyMixlLlY9NjY3LGUuVz05NDQsZS5YPTY2NyxlLlk9NjY3LGUuWj02MTEsZS5icmFja2V0bGVmdD0zMzMsZS5iYWNrc2xhc2g9Mjc4LGUuYnJhY2tldHJpZ2h0PTMzMyxlLmFzY2lpY2lyY3VtPTU4NCxlLnVuZGVyc2NvcmU9NTU2LGUucXVvdGVsZWZ0PTI3OCxlLmE9NTU2LGUuYj02MTEsZS5jPTU1NixlLmQ9NjExLGUuZT01NTYsZS5mPTMzMyxlLmc9NjExLGUuaD02MTEsZS5pPTI3OCxlLmo9Mjc4LGUuaz01NTYsZS5sPTI3OCxlLm09ODg5LGUubj02MTEsZS5vPTYxMSxlLnA9NjExLGUucT02MTEsZS5yPTM4OSxlLnM9NTU2LGUudD0zMzMsZS51PTYxMSxlLnY9NTU2LGUudz03NzgsZS54PTU1NixlLnk9NTU2LGUuej01MDAsZS5icmFjZWxlZnQ9Mzg5LGUuYmFyPTI4MCxlLmJyYWNlcmlnaHQ9Mzg5LGUuYXNjaWl0aWxkZT01ODQsZS5leGNsYW1kb3duPTMzMyxlLmNlbnQ9NTU2LGUuc3Rlcmxpbmc9NTU2LGUuZnJhY3Rpb249MTY3LGUueWVuPTU1NixlLmZsb3Jpbj01NTYsZS5zZWN0aW9uPTU1NixlLmN1cnJlbmN5PTU1NixlLnF1b3Rlc2luZ2xlPTIzOCxlLnF1b3RlZGJsbGVmdD01MDAsZS5ndWlsbGVtb3RsZWZ0PTU1NixlLmd1aWxzaW5nbGxlZnQ9MzMzLGUuZ3VpbHNpbmdscmlnaHQ9MzMzLGUuZmk9NjExLGUuZmw9NjExLGUuZW5kYXNoPTU1NixlLmRhZ2dlcj01NTYsZS5kYWdnZXJkYmw9NTU2LGUucGVyaW9kY2VudGVyZWQ9Mjc4LGUucGFyYWdyYXBoPTU1NixlLmJ1bGxldD0zNTAsZS5xdW90ZXNpbmdsYmFzZT0yNzgsZS5xdW90ZWRibGJhc2U9NTAwLGUucXVvdGVkYmxyaWdodD01MDAsZS5ndWlsbGVtb3RyaWdodD01NTYsZS5lbGxpcHNpcz0xZTMsZS5wZXJ0aG91c2FuZD0xZTMsZS5xdWVzdGlvbmRvd249NjExLGUuZ3JhdmU9MzMzLGUuYWN1dGU9MzMzLGUuY2lyY3VtZmxleD0zMzMsZS50aWxkZT0zMzMsZS5tYWNyb249MzMzLGUuYnJldmU9MzMzLGUuZG90YWNjZW50PTMzMyxlLmRpZXJlc2lzPTMzMyxlLnJpbmc9MzMzLGUuY2VkaWxsYT0zMzMsZS5odW5nYXJ1bWxhdXQ9MzMzLGUub2dvbmVrPTMzMyxlLmNhcm9uPTMzMyxlLmVtZGFzaD0xZTMsZS5BRT0xZTMsZS5vcmRmZW1pbmluZT0zNzAsZS5Mc2xhc2g9NjExLGUuT3NsYXNoPTc3OCxlLk9FPTFlMyxlLm9yZG1hc2N1bGluZT0zNjUsZS5hZT04ODksZS5kb3RsZXNzaT0yNzgsZS5sc2xhc2g9Mjc4LGUub3NsYXNoPTYxMSxlLm9lPTk0NCxlLmdlcm1hbmRibHM9NjExLGUuSWRpZXJlc2lzPTI3OCxlLmVhY3V0ZT01NTYsZS5hYnJldmU9NTU2LGUudWh1bmdhcnVtbGF1dD02MTEsZS5lY2Fyb249NTU2LGUuWWRpZXJlc2lzPTY2NyxlLmRpdmlkZT01ODQsZS5ZYWN1dGU9NjY3LGUuQWNpcmN1bWZsZXg9NzIyLGUuYWFjdXRlPTU1NixlLlVjaXJjdW1mbGV4PTcyMixlLnlhY3V0ZT01NTYsZS5zY29tbWFhY2NlbnQ9NTU2LGUuZWNpcmN1bWZsZXg9NTU2LGUuVXJpbmc9NzIyLGUuVWRpZXJlc2lzPTcyMixlLmFvZ29uZWs9NTU2LGUuVWFjdXRlPTcyMixlLnVvZ29uZWs9NjExLGUuRWRpZXJlc2lzPTY2NyxlLkRjcm9hdD03MjIsZS5jb21tYWFjY2VudD0yNTAsZS5jb3B5cmlnaHQ9NzM3LGUuRW1hY3Jvbj02NjcsZS5jY2Fyb249NTU2LGUuYXJpbmc9NTU2LGUuTmNvbW1hYWNjZW50PTcyMixlLmxhY3V0ZT0yNzgsZS5hZ3JhdmU9NTU2LGUuVGNvbW1hYWNjZW50PTYxMSxlLkNhY3V0ZT03MjIsZS5hdGlsZGU9NTU2LGUuRWRvdGFjY2VudD02NjcsZS5zY2Fyb249NTU2LGUuc2NlZGlsbGE9NTU2LGUuaWFjdXRlPTI3OCxlLmxvemVuZ2U9NDk0LGUuUmNhcm9uPTcyMixlLkdjb21tYWFjY2VudD03NzgsZS51Y2lyY3VtZmxleD02MTEsZS5hY2lyY3VtZmxleD01NTYsZS5BbWFjcm9uPTcyMixlLnJjYXJvbj0zODksZS5jY2VkaWxsYT01NTYsZS5aZG90YWNjZW50PTYxMSxlLlRob3JuPTY2NyxlLk9tYWNyb249Nzc4LGUuUmFjdXRlPTcyMixlLlNhY3V0ZT02NjcsZS5kY2Fyb249NzQzLGUuVW1hY3Jvbj03MjIsZS51cmluZz02MTEsZS50aHJlZXN1cGVyaW9yPTMzMyxlLk9ncmF2ZT03NzgsZS5BZ3JhdmU9NzIyLGUuQWJyZXZlPTcyMixlLm11bHRpcGx5PTU4NCxlLnVhY3V0ZT02MTEsZS5UY2Fyb249NjExLGUucGFydGlhbGRpZmY9NDk0LGUueWRpZXJlc2lzPTU1NixlLk5hY3V0ZT03MjIsZS5pY2lyY3VtZmxleD0yNzgsZS5FY2lyY3VtZmxleD02NjcsZS5hZGllcmVzaXM9NTU2LGUuZWRpZXJlc2lzPTU1NixlLmNhY3V0ZT01NTYsZS5uYWN1dGU9NjExLGUudW1hY3Jvbj02MTEsZS5OY2Fyb249NzIyLGUuSWFjdXRlPTI3OCxlLnBsdXNtaW51cz01ODQsZS5icm9rZW5iYXI9MjgwLGUucmVnaXN0ZXJlZD03MzcsZS5HYnJldmU9Nzc4LGUuSWRvdGFjY2VudD0yNzgsZS5zdW1tYXRpb249NjAwLGUuRWdyYXZlPTY2NyxlLnJhY3V0ZT0zODksZS5vbWFjcm9uPTYxMSxlLlphY3V0ZT02MTEsZS5aY2Fyb249NjExLGUuZ3JlYXRlcmVxdWFsPTU0OSxlLkV0aD03MjIsZS5DY2VkaWxsYT03MjIsZS5sY29tbWFhY2NlbnQ9Mjc4LGUudGNhcm9uPTM4OSxlLmVvZ29uZWs9NTU2LGUuVW9nb25laz03MjIsZS5BYWN1dGU9NzIyLGUuQWRpZXJlc2lzPTcyMixlLmVncmF2ZT01NTYsZS56YWN1dGU9NTAwLGUuaW9nb25laz0yNzgsZS5PYWN1dGU9Nzc4LGUub2FjdXRlPTYxMSxlLmFtYWNyb249NTU2LGUuc2FjdXRlPTU1NixlLmlkaWVyZXNpcz0yNzgsZS5PY2lyY3VtZmxleD03NzgsZS5VZ3JhdmU9NzIyLGUuRGVsdGE9NjEyLGUudGhvcm49NjExLGUudHdvc3VwZXJpb3I9MzMzLGUuT2RpZXJlc2lzPTc3OCxlLm11PTYxMSxlLmlncmF2ZT0yNzgsZS5vaHVuZ2FydW1sYXV0PTYxMSxlLkVvZ29uZWs9NjY3LGUuZGNyb2F0PTYxMSxlLnRocmVlcXVhcnRlcnM9ODM0LGUuU2NlZGlsbGE9NjY3LGUubGNhcm9uPTQwMCxlLktjb21tYWFjY2VudD03MjIsZS5MYWN1dGU9NjExLGUudHJhZGVtYXJrPTFlMyxlLmVkb3RhY2NlbnQ9NTU2LGUuSWdyYXZlPTI3OCxlLkltYWNyb249Mjc4LGUuTGNhcm9uPTYxMSxlLm9uZWhhbGY9ODM0LGUubGVzc2VxdWFsPTU0OSxlLm9jaXJjdW1mbGV4PTYxMSxlLm50aWxkZT02MTEsZS5VaHVuZ2FydW1sYXV0PTcyMixlLkVhY3V0ZT02NjcsZS5lbWFjcm9uPTU1NixlLmdicmV2ZT02MTEsZS5vbmVxdWFydGVyPTgzNCxlLlNjYXJvbj02NjcsZS5TY29tbWFhY2NlbnQ9NjY3LGUuT2h1bmdhcnVtbGF1dD03NzgsZS5kZWdyZWU9NDAwLGUub2dyYXZlPTYxMSxlLkNjYXJvbj03MjIsZS51Z3JhdmU9NjExLGUucmFkaWNhbD01NDksZS5EY2Fyb249NzIyLGUucmNvbW1hYWNjZW50PTM4OSxlLk50aWxkZT03MjIsZS5vdGlsZGU9NjExLGUuUmNvbW1hYWNjZW50PTcyMixlLkxjb21tYWFjY2VudD02MTEsZS5BdGlsZGU9NzIyLGUuQW9nb25laz03MjIsZS5BcmluZz03MjIsZS5PdGlsZGU9Nzc4LGUuemRvdGFjY2VudD01MDAsZS5FY2Fyb249NjY3LGUuSW9nb25laz0yNzgsZS5rY29tbWFhY2NlbnQ9NTU2LGUubWludXM9NTg0LGUuSWNpcmN1bWZsZXg9Mjc4LGUubmNhcm9uPTYxMSxlLnRjb21tYWFjY2VudD0zMzMsZS5sb2dpY2Fsbm90PTU4NCxlLm9kaWVyZXNpcz02MTEsZS51ZGllcmVzaXM9NjExLGUubm90ZXF1YWw9NTQ5LGUuZ2NvbW1hYWNjZW50PTYxMSxlLmV0aD02MTEsZS56Y2Fyb249NTAwLGUubmNvbW1hYWNjZW50PTYxMSxlLm9uZXN1cGVyaW9yPTMzMyxlLmltYWNyb249Mjc4LGUuRXVybz01NTZ9KSksZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4LGUuZXhjbGFtPTI3OCxlLnF1b3RlZGJsPTM1NSxlLm51bWJlcnNpZ249NTU2LGUuZG9sbGFyPTU1NixlLnBlcmNlbnQ9ODg5LGUuYW1wZXJzYW5kPTY2NyxlLnF1b3RlcmlnaHQ9MjIyLGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9Mzg5LGUucGx1cz01ODQsZS5jb21tYT0yNzgsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI3OCxlLnNsYXNoPTI3OCxlLnplcm89NTU2LGUub25lPTU1NixlLnR3bz01NTYsZS50aHJlZT01NTYsZS5mb3VyPTU1NixlLmZpdmU9NTU2LGUuc2l4PTU1NixlLnNldmVuPTU1NixlLmVpZ2h0PTU1NixlLm5pbmU9NTU2LGUuY29sb249Mjc4LGUuc2VtaWNvbG9uPTI3OCxlLmxlc3M9NTg0LGUuZXF1YWw9NTg0LGUuZ3JlYXRlcj01ODQsZS5xdWVzdGlvbj01NTYsZS5hdD0xMDE1LGUuQT02NjcsZS5CPTY2NyxlLkM9NzIyLGUuRD03MjIsZS5FPTY2NyxlLkY9NjExLGUuRz03NzgsZS5IPTcyMixlLkk9Mjc4LGUuSj01MDAsZS5LPTY2NyxlLkw9NTU2LGUuTT04MzMsZS5OPTcyMixlLk89Nzc4LGUuUD02NjcsZS5RPTc3OCxlLlI9NzIyLGUuUz02NjcsZS5UPTYxMSxlLlU9NzIyLGUuVj02NjcsZS5XPTk0NCxlLlg9NjY3LGUuWT02NjcsZS5aPTYxMSxlLmJyYWNrZXRsZWZ0PTI3OCxlLmJhY2tzbGFzaD0yNzgsZS5icmFja2V0cmlnaHQ9Mjc4LGUuYXNjaWljaXJjdW09NDY5LGUudW5kZXJzY29yZT01NTYsZS5xdW90ZWxlZnQ9MjIyLGUuYT01NTYsZS5iPTU1NixlLmM9NTAwLGUuZD01NTYsZS5lPTU1NixlLmY9Mjc4LGUuZz01NTYsZS5oPTU1NixlLmk9MjIyLGUuaj0yMjIsZS5rPTUwMCxlLmw9MjIyLGUubT04MzMsZS5uPTU1NixlLm89NTU2LGUucD01NTYsZS5xPTU1NixlLnI9MzMzLGUucz01MDAsZS50PTI3OCxlLnU9NTU2LGUudj01MDAsZS53PTcyMixlLng9NTAwLGUueT01MDAsZS56PTUwMCxlLmJyYWNlbGVmdD0zMzQsZS5iYXI9MjYwLGUuYnJhY2VyaWdodD0zMzQsZS5hc2NpaXRpbGRlPTU4NCxlLmV4Y2xhbWRvd249MzMzLGUuY2VudD01NTYsZS5zdGVybGluZz01NTYsZS5mcmFjdGlvbj0xNjcsZS55ZW49NTU2LGUuZmxvcmluPTU1NixlLnNlY3Rpb249NTU2LGUuY3VycmVuY3k9NTU2LGUucXVvdGVzaW5nbGU9MTkxLGUucXVvdGVkYmxsZWZ0PTMzMyxlLmd1aWxsZW1vdGxlZnQ9NTU2LGUuZ3VpbHNpbmdsbGVmdD0zMzMsZS5ndWlsc2luZ2xyaWdodD0zMzMsZS5maT01MDAsZS5mbD01MDAsZS5lbmRhc2g9NTU2LGUuZGFnZ2VyPTU1NixlLmRhZ2dlcmRibD01NTYsZS5wZXJpb2RjZW50ZXJlZD0yNzgsZS5wYXJhZ3JhcGg9NTM3LGUuYnVsbGV0PTM1MCxlLnF1b3Rlc2luZ2xiYXNlPTIyMixlLnF1b3RlZGJsYmFzZT0zMzMsZS5xdW90ZWRibHJpZ2h0PTMzMyxlLmd1aWxsZW1vdHJpZ2h0PTU1NixlLmVsbGlwc2lzPTFlMyxlLnBlcnRob3VzYW5kPTFlMyxlLnF1ZXN0aW9uZG93bj02MTEsZS5ncmF2ZT0zMzMsZS5hY3V0ZT0zMzMsZS5jaXJjdW1mbGV4PTMzMyxlLnRpbGRlPTMzMyxlLm1hY3Jvbj0zMzMsZS5icmV2ZT0zMzMsZS5kb3RhY2NlbnQ9MzMzLGUuZGllcmVzaXM9MzMzLGUucmluZz0zMzMsZS5jZWRpbGxhPTMzMyxlLmh1bmdhcnVtbGF1dD0zMzMsZS5vZ29uZWs9MzMzLGUuY2Fyb249MzMzLGUuZW1kYXNoPTFlMyxlLkFFPTFlMyxlLm9yZGZlbWluaW5lPTM3MCxlLkxzbGFzaD01NTYsZS5Pc2xhc2g9Nzc4LGUuT0U9MWUzLGUub3JkbWFzY3VsaW5lPTM2NSxlLmFlPTg4OSxlLmRvdGxlc3NpPTI3OCxlLmxzbGFzaD0yMjIsZS5vc2xhc2g9NjExLGUub2U9OTQ0LGUuZ2VybWFuZGJscz02MTEsZS5JZGllcmVzaXM9Mjc4LGUuZWFjdXRlPTU1NixlLmFicmV2ZT01NTYsZS51aHVuZ2FydW1sYXV0PTU1NixlLmVjYXJvbj01NTYsZS5ZZGllcmVzaXM9NjY3LGUuZGl2aWRlPTU4NCxlLllhY3V0ZT02NjcsZS5BY2lyY3VtZmxleD02NjcsZS5hYWN1dGU9NTU2LGUuVWNpcmN1bWZsZXg9NzIyLGUueWFjdXRlPTUwMCxlLnNjb21tYWFjY2VudD01MDAsZS5lY2lyY3VtZmxleD01NTYsZS5VcmluZz03MjIsZS5VZGllcmVzaXM9NzIyLGUuYW9nb25laz01NTYsZS5VYWN1dGU9NzIyLGUudW9nb25laz01NTYsZS5FZGllcmVzaXM9NjY3LGUuRGNyb2F0PTcyMixlLmNvbW1hYWNjZW50PTI1MCxlLmNvcHlyaWdodD03MzcsZS5FbWFjcm9uPTY2NyxlLmNjYXJvbj01MDAsZS5hcmluZz01NTYsZS5OY29tbWFhY2NlbnQ9NzIyLGUubGFjdXRlPTIyMixlLmFncmF2ZT01NTYsZS5UY29tbWFhY2NlbnQ9NjExLGUuQ2FjdXRlPTcyMixlLmF0aWxkZT01NTYsZS5FZG90YWNjZW50PTY2NyxlLnNjYXJvbj01MDAsZS5zY2VkaWxsYT01MDAsZS5pYWN1dGU9Mjc4LGUubG96ZW5nZT00NzEsZS5SY2Fyb249NzIyLGUuR2NvbW1hYWNjZW50PTc3OCxlLnVjaXJjdW1mbGV4PTU1NixlLmFjaXJjdW1mbGV4PTU1NixlLkFtYWNyb249NjY3LGUucmNhcm9uPTMzMyxlLmNjZWRpbGxhPTUwMCxlLlpkb3RhY2NlbnQ9NjExLGUuVGhvcm49NjY3LGUuT21hY3Jvbj03NzgsZS5SYWN1dGU9NzIyLGUuU2FjdXRlPTY2NyxlLmRjYXJvbj02NDMsZS5VbWFjcm9uPTcyMixlLnVyaW5nPTU1NixlLnRocmVlc3VwZXJpb3I9MzMzLGUuT2dyYXZlPTc3OCxlLkFncmF2ZT02NjcsZS5BYnJldmU9NjY3LGUubXVsdGlwbHk9NTg0LGUudWFjdXRlPTU1NixlLlRjYXJvbj02MTEsZS5wYXJ0aWFsZGlmZj00NzYsZS55ZGllcmVzaXM9NTAwLGUuTmFjdXRlPTcyMixlLmljaXJjdW1mbGV4PTI3OCxlLkVjaXJjdW1mbGV4PTY2NyxlLmFkaWVyZXNpcz01NTYsZS5lZGllcmVzaXM9NTU2LGUuY2FjdXRlPTUwMCxlLm5hY3V0ZT01NTYsZS51bWFjcm9uPTU1NixlLk5jYXJvbj03MjIsZS5JYWN1dGU9Mjc4LGUucGx1c21pbnVzPTU4NCxlLmJyb2tlbmJhcj0yNjAsZS5yZWdpc3RlcmVkPTczNyxlLkdicmV2ZT03NzgsZS5JZG90YWNjZW50PTI3OCxlLnN1bW1hdGlvbj02MDAsZS5FZ3JhdmU9NjY3LGUucmFjdXRlPTMzMyxlLm9tYWNyb249NTU2LGUuWmFjdXRlPTYxMSxlLlpjYXJvbj02MTEsZS5ncmVhdGVyZXF1YWw9NTQ5LGUuRXRoPTcyMixlLkNjZWRpbGxhPTcyMixlLmxjb21tYWFjY2VudD0yMjIsZS50Y2Fyb249MzE3LGUuZW9nb25laz01NTYsZS5Vb2dvbmVrPTcyMixlLkFhY3V0ZT02NjcsZS5BZGllcmVzaXM9NjY3LGUuZWdyYXZlPTU1NixlLnphY3V0ZT01MDAsZS5pb2dvbmVrPTIyMixlLk9hY3V0ZT03NzgsZS5vYWN1dGU9NTU2LGUuYW1hY3Jvbj01NTYsZS5zYWN1dGU9NTAwLGUuaWRpZXJlc2lzPTI3OCxlLk9jaXJjdW1mbGV4PTc3OCxlLlVncmF2ZT03MjIsZS5EZWx0YT02MTIsZS50aG9ybj01NTYsZS50d29zdXBlcmlvcj0zMzMsZS5PZGllcmVzaXM9Nzc4LGUubXU9NTU2LGUuaWdyYXZlPTI3OCxlLm9odW5nYXJ1bWxhdXQ9NTU2LGUuRW9nb25laz02NjcsZS5kY3JvYXQ9NTU2LGUudGhyZWVxdWFydGVycz04MzQsZS5TY2VkaWxsYT02NjcsZS5sY2Fyb249Mjk5LGUuS2NvbW1hYWNjZW50PTY2NyxlLkxhY3V0ZT01NTYsZS50cmFkZW1hcms9MWUzLGUuZWRvdGFjY2VudD01NTYsZS5JZ3JhdmU9Mjc4LGUuSW1hY3Jvbj0yNzgsZS5MY2Fyb249NTU2LGUub25laGFsZj04MzQsZS5sZXNzZXF1YWw9NTQ5LGUub2NpcmN1bWZsZXg9NTU2LGUubnRpbGRlPTU1NixlLlVodW5nYXJ1bWxhdXQ9NzIyLGUuRWFjdXRlPTY2NyxlLmVtYWNyb249NTU2LGUuZ2JyZXZlPTU1NixlLm9uZXF1YXJ0ZXI9ODM0LGUuU2Nhcm9uPTY2NyxlLlNjb21tYWFjY2VudD02NjcsZS5PaHVuZ2FydW1sYXV0PTc3OCxlLmRlZ3JlZT00MDAsZS5vZ3JhdmU9NTU2LGUuQ2Nhcm9uPTcyMixlLnVncmF2ZT01NTYsZS5yYWRpY2FsPTQ1MyxlLkRjYXJvbj03MjIsZS5yY29tbWFhY2NlbnQ9MzMzLGUuTnRpbGRlPTcyMixlLm90aWxkZT01NTYsZS5SY29tbWFhY2NlbnQ9NzIyLGUuTGNvbW1hYWNjZW50PTU1NixlLkF0aWxkZT02NjcsZS5Bb2dvbmVrPTY2NyxlLkFyaW5nPTY2NyxlLk90aWxkZT03NzgsZS56ZG90YWNjZW50PTUwMCxlLkVjYXJvbj02NjcsZS5Jb2dvbmVrPTI3OCxlLmtjb21tYWFjY2VudD01MDAsZS5taW51cz01ODQsZS5JY2lyY3VtZmxleD0yNzgsZS5uY2Fyb249NTU2LGUudGNvbW1hYWNjZW50PTI3OCxlLmxvZ2ljYWxub3Q9NTg0LGUub2RpZXJlc2lzPTU1NixlLnVkaWVyZXNpcz01NTYsZS5ub3RlcXVhbD01NDksZS5nY29tbWFhY2NlbnQ9NTU2LGUuZXRoPTU1NixlLnpjYXJvbj01MDAsZS5uY29tbWFhY2NlbnQ9NTU2LGUub25lc3VwZXJpb3I9MzMzLGUuaW1hY3Jvbj0yNzgsZS5FdXJvPTU1Nn0pKSxlLlN5bWJvbD0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwLGUuZXhjbGFtPTMzMyxlLnVuaXZlcnNhbD03MTMsZS5udW1iZXJzaWduPTUwMCxlLmV4aXN0ZW50aWFsPTU0OSxlLnBlcmNlbnQ9ODMzLGUuYW1wZXJzYW5kPTc3OCxlLnN1Y2h0aGF0PTQzOSxlLnBhcmVubGVmdD0zMzMsZS5wYXJlbnJpZ2h0PTMzMyxlLmFzdGVyaXNrbWF0aD01MDAsZS5wbHVzPTU0OSxlLmNvbW1hPTI1MCxlLm1pbnVzPTU0OSxlLnBlcmlvZD0yNTAsZS5zbGFzaD0yNzgsZS56ZXJvPTUwMCxlLm9uZT01MDAsZS50d289NTAwLGUudGhyZWU9NTAwLGUuZm91cj01MDAsZS5maXZlPTUwMCxlLnNpeD01MDAsZS5zZXZlbj01MDAsZS5laWdodD01MDAsZS5uaW5lPTUwMCxlLmNvbG9uPTI3OCxlLnNlbWljb2xvbj0yNzgsZS5sZXNzPTU0OSxlLmVxdWFsPTU0OSxlLmdyZWF0ZXI9NTQ5LGUucXVlc3Rpb249NDQ0LGUuY29uZ3J1ZW50PTU0OSxlLkFscGhhPTcyMixlLkJldGE9NjY3LGUuQ2hpPTcyMixlLkRlbHRhPTYxMixlLkVwc2lsb249NjExLGUuUGhpPTc2MyxlLkdhbW1hPTYwMyxlLkV0YT03MjIsZS5Jb3RhPTMzMyxlLnRoZXRhMT02MzEsZS5LYXBwYT03MjIsZS5MYW1iZGE9Njg2LGUuTXU9ODg5LGUuTnU9NzIyLGUuT21pY3Jvbj03MjIsZS5QaT03NjgsZS5UaGV0YT03NDEsZS5SaG89NTU2LGUuU2lnbWE9NTkyLGUuVGF1PTYxMSxlLlVwc2lsb249NjkwLGUuc2lnbWExPTQzOSxlLk9tZWdhPTc2OCxlLlhpPTY0NSxlLlBzaT03OTUsZS5aZXRhPTYxMSxlLmJyYWNrZXRsZWZ0PTMzMyxlLnRoZXJlZm9yZT04NjMsZS5icmFja2V0cmlnaHQ9MzMzLGUucGVycGVuZGljdWxhcj02NTgsZS51bmRlcnNjb3JlPTUwMCxlLnJhZGljYWxleD01MDAsZS5hbHBoYT02MzEsZS5iZXRhPTU0OSxlLmNoaT01NDksZS5kZWx0YT00OTQsZS5lcHNpbG9uPTQzOSxlLnBoaT01MjEsZS5nYW1tYT00MTEsZS5ldGE9NjAzLGUuaW90YT0zMjksZS5waGkxPTYwMyxlLmthcHBhPTU0OSxlLmxhbWJkYT01NDksZS5tdT01NzYsZS5udT01MjEsZS5vbWljcm9uPTU0OSxlLnBpPTU0OSxlLnRoZXRhPTUyMSxlLnJobz01NDksZS5zaWdtYT02MDMsZS50YXU9NDM5LGUudXBzaWxvbj01NzYsZS5vbWVnYTE9NzEzLGUub21lZ2E9Njg2LGUueGk9NDkzLGUucHNpPTY4NixlLnpldGE9NDk0LGUuYnJhY2VsZWZ0PTQ4MCxlLmJhcj0yMDAsZS5icmFjZXJpZ2h0PTQ4MCxlLnNpbWlsYXI9NTQ5LGUuRXVybz03NTAsZS5VcHNpbG9uMT02MjAsZS5taW51dGU9MjQ3LGUubGVzc2VxdWFsPTU0OSxlLmZyYWN0aW9uPTE2NyxlLmluZmluaXR5PTcxMyxlLmZsb3Jpbj01MDAsZS5jbHViPTc1MyxlLmRpYW1vbmQ9NzUzLGUuaGVhcnQ9NzUzLGUuc3BhZGU9NzUzLGUuYXJyb3dib3RoPTEwNDIsZS5hcnJvd2xlZnQ9OTg3LGUuYXJyb3d1cD02MDMsZS5hcnJvd3JpZ2h0PTk4NyxlLmFycm93ZG93bj02MDMsZS5kZWdyZWU9NDAwLGUucGx1c21pbnVzPTU0OSxlLnNlY29uZD00MTEsZS5ncmVhdGVyZXF1YWw9NTQ5LGUubXVsdGlwbHk9NTQ5LGUucHJvcG9ydGlvbmFsPTcxMyxlLnBhcnRpYWxkaWZmPTQ5NCxlLmJ1bGxldD00NjAsZS5kaXZpZGU9NTQ5LGUubm90ZXF1YWw9NTQ5LGUuZXF1aXZhbGVuY2U9NTQ5LGUuYXBwcm94ZXF1YWw9NTQ5LGUuZWxsaXBzaXM9MWUzLGUuYXJyb3d2ZXJ0ZXg9NjAzLGUuYXJyb3dob3JpemV4PTFlMyxlLmNhcnJpYWdlcmV0dXJuPTY1OCxlLmFsZXBoPTgyMyxlLklmcmFrdHVyPTY4NixlLlJmcmFrdHVyPTc5NSxlLndlaWVyc3RyYXNzPTk4NyxlLmNpcmNsZW11bHRpcGx5PTc2OCxlLmNpcmNsZXBsdXM9NzY4LGUuZW1wdHlzZXQ9ODIzLGUuaW50ZXJzZWN0aW9uPTc2OCxlLnVuaW9uPTc2OCxlLnByb3BlcnN1cGVyc2V0PTcxMyxlLnJlZmxleHN1cGVyc2V0PTcxMyxlLm5vdHN1YnNldD03MTMsZS5wcm9wZXJzdWJzZXQ9NzEzLGUucmVmbGV4c3Vic2V0PTcxMyxlLmVsZW1lbnQ9NzEzLGUubm90ZWxlbWVudD03MTMsZS5hbmdsZT03NjgsZS5ncmFkaWVudD03MTMsZS5yZWdpc3RlcnNlcmlmPTc5MCxlLmNvcHlyaWdodHNlcmlmPTc5MCxlLnRyYWRlbWFya3NlcmlmPTg5MCxlLnByb2R1Y3Q9ODIzLGUucmFkaWNhbD01NDksZS5kb3RtYXRoPTI1MCxlLmxvZ2ljYWxub3Q9NzEzLGUubG9naWNhbGFuZD02MDMsZS5sb2dpY2Fsb3I9NjAzLGUuYXJyb3dkYmxib3RoPTEwNDIsZS5hcnJvd2RibGxlZnQ9OTg3LGUuYXJyb3dkYmx1cD02MDMsZS5hcnJvd2RibHJpZ2h0PTk4NyxlLmFycm93ZGJsZG93bj02MDMsZS5sb3plbmdlPTQ5NCxlLmFuZ2xlbGVmdD0zMjksZS5yZWdpc3RlcnNhbnM9NzkwLGUuY29weXJpZ2h0c2Fucz03OTAsZS50cmFkZW1hcmtzYW5zPTc4NixlLnN1bW1hdGlvbj03MTMsZS5wYXJlbmxlZnR0cD0zODQsZS5wYXJlbmxlZnRleD0zODQsZS5wYXJlbmxlZnRidD0zODQsZS5icmFja2V0bGVmdHRwPTM4NCxlLmJyYWNrZXRsZWZ0ZXg9Mzg0LGUuYnJhY2tldGxlZnRidD0zODQsZS5icmFjZWxlZnR0cD00OTQsZS5icmFjZWxlZnRtaWQ9NDk0LGUuYnJhY2VsZWZ0YnQ9NDk0LGUuYnJhY2VleD00OTQsZS5hbmdsZXJpZ2h0PTMyOSxlLmludGVncmFsPTI3NCxlLmludGVncmFsdHA9Njg2LGUuaW50ZWdyYWxleD02ODYsZS5pbnRlZ3JhbGJ0PTY4NixlLnBhcmVucmlnaHR0cD0zODQsZS5wYXJlbnJpZ2h0ZXg9Mzg0LGUucGFyZW5yaWdodGJ0PTM4NCxlLmJyYWNrZXRyaWdodHRwPTM4NCxlLmJyYWNrZXRyaWdodGV4PTM4NCxlLmJyYWNrZXRyaWdodGJ0PTM4NCxlLmJyYWNlcmlnaHR0cD00OTQsZS5icmFjZXJpZ2h0bWlkPTQ5NCxlLmJyYWNlcmlnaHRidD00OTQsZS5hcHBsZT03OTB9KSksZVsiVGltZXMtUm9tYW4iXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwLGUuZXhjbGFtPTMzMyxlLnF1b3RlZGJsPTQwOCxlLm51bWJlcnNpZ249NTAwLGUuZG9sbGFyPTUwMCxlLnBlcmNlbnQ9ODMzLGUuYW1wZXJzYW5kPTc3OCxlLnF1b3RlcmlnaHQ9MzMzLGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9NTAwLGUucGx1cz01NjQsZS5jb21tYT0yNTAsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI1MCxlLnNsYXNoPTI3OCxlLnplcm89NTAwLGUub25lPTUwMCxlLnR3bz01MDAsZS50aHJlZT01MDAsZS5mb3VyPTUwMCxlLmZpdmU9NTAwLGUuc2l4PTUwMCxlLnNldmVuPTUwMCxlLmVpZ2h0PTUwMCxlLm5pbmU9NTAwLGUuY29sb249Mjc4LGUuc2VtaWNvbG9uPTI3OCxlLmxlc3M9NTY0LGUuZXF1YWw9NTY0LGUuZ3JlYXRlcj01NjQsZS5xdWVzdGlvbj00NDQsZS5hdD05MjEsZS5BPTcyMixlLkI9NjY3LGUuQz02NjcsZS5EPTcyMixlLkU9NjExLGUuRj01NTYsZS5HPTcyMixlLkg9NzIyLGUuST0zMzMsZS5KPTM4OSxlLks9NzIyLGUuTD02MTEsZS5NPTg4OSxlLk49NzIyLGUuTz03MjIsZS5QPTU1NixlLlE9NzIyLGUuUj02NjcsZS5TPTU1NixlLlQ9NjExLGUuVT03MjIsZS5WPTcyMixlLlc9OTQ0LGUuWD03MjIsZS5ZPTcyMixlLlo9NjExLGUuYnJhY2tldGxlZnQ9MzMzLGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zMzMsZS5hc2NpaWNpcmN1bT00NjksZS51bmRlcnNjb3JlPTUwMCxlLnF1b3RlbGVmdD0zMzMsZS5hPTQ0NCxlLmI9NTAwLGUuYz00NDQsZS5kPTUwMCxlLmU9NDQ0LGUuZj0zMzMsZS5nPTUwMCxlLmg9NTAwLGUuaT0yNzgsZS5qPTI3OCxlLms9NTAwLGUubD0yNzgsZS5tPTc3OCxlLm49NTAwLGUubz01MDAsZS5wPTUwMCxlLnE9NTAwLGUucj0zMzMsZS5zPTM4OSxlLnQ9Mjc4LGUudT01MDAsZS52PTUwMCxlLnc9NzIyLGUueD01MDAsZS55PTUwMCxlLno9NDQ0LGUuYnJhY2VsZWZ0PTQ4MCxlLmJhcj0yMDAsZS5icmFjZXJpZ2h0PTQ4MCxlLmFzY2lpdGlsZGU9NTQxLGUuZXhjbGFtZG93bj0zMzMsZS5jZW50PTUwMCxlLnN0ZXJsaW5nPTUwMCxlLmZyYWN0aW9uPTE2NyxlLnllbj01MDAsZS5mbG9yaW49NTAwLGUuc2VjdGlvbj01MDAsZS5jdXJyZW5jeT01MDAsZS5xdW90ZXNpbmdsZT0xODAsZS5xdW90ZWRibGxlZnQ9NDQ0LGUuZ3VpbGxlbW90bGVmdD01MDAsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTU1NixlLmZsPTU1NixlLmVuZGFzaD01MDAsZS5kYWdnZXI9NTAwLGUuZGFnZ2VyZGJsPTUwMCxlLnBlcmlvZGNlbnRlcmVkPTI1MCxlLnBhcmFncmFwaD00NTMsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9MzMzLGUucXVvdGVkYmxiYXNlPTQ0NCxlLnF1b3RlZGJscmlnaHQ9NDQ0LGUuZ3VpbGxlbW90cmlnaHQ9NTAwLGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTQ0NCxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9ODg5LGUub3JkZmVtaW5pbmU9Mjc2LGUuTHNsYXNoPTYxMSxlLk9zbGFzaD03MjIsZS5PRT04ODksZS5vcmRtYXNjdWxpbmU9MzEwLGUuYWU9NjY3LGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD01MDAsZS5vZT03MjIsZS5nZXJtYW5kYmxzPTUwMCxlLklkaWVyZXNpcz0zMzMsZS5lYWN1dGU9NDQ0LGUuYWJyZXZlPTQ0NCxlLnVodW5nYXJ1bWxhdXQ9NTAwLGUuZWNhcm9uPTQ0NCxlLllkaWVyZXNpcz03MjIsZS5kaXZpZGU9NTY0LGUuWWFjdXRlPTcyMixlLkFjaXJjdW1mbGV4PTcyMixlLmFhY3V0ZT00NDQsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NTAwLGUuc2NvbW1hYWNjZW50PTM4OSxlLmVjaXJjdW1mbGV4PTQ0NCxlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTQ0NCxlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTUwMCxlLkVkaWVyZXNpcz02MTEsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTc2MCxlLkVtYWNyb249NjExLGUuY2Nhcm9uPTQ0NCxlLmFyaW5nPTQ0NCxlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTQ0NCxlLlRjb21tYWFjY2VudD02MTEsZS5DYWN1dGU9NjY3LGUuYXRpbGRlPTQ0NCxlLkVkb3RhY2NlbnQ9NjExLGUuc2Nhcm9uPTM4OSxlLnNjZWRpbGxhPTM4OSxlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ3MSxlLlJjYXJvbj02NjcsZS5HY29tbWFhY2NlbnQ9NzIyLGUudWNpcmN1bWZsZXg9NTAwLGUuYWNpcmN1bWZsZXg9NDQ0LGUuQW1hY3Jvbj03MjIsZS5yY2Fyb249MzMzLGUuY2NlZGlsbGE9NDQ0LGUuWmRvdGFjY2VudD02MTEsZS5UaG9ybj01NTYsZS5PbWFjcm9uPTcyMixlLlJhY3V0ZT02NjcsZS5TYWN1dGU9NTU2LGUuZGNhcm9uPTU4OCxlLlVtYWNyb249NzIyLGUudXJpbmc9NTAwLGUudGhyZWVzdXBlcmlvcj0zMDAsZS5PZ3JhdmU9NzIyLGUuQWdyYXZlPTcyMixlLkFicmV2ZT03MjIsZS5tdWx0aXBseT01NjQsZS51YWN1dGU9NTAwLGUuVGNhcm9uPTYxMSxlLnBhcnRpYWxkaWZmPTQ3NixlLnlkaWVyZXNpcz01MDAsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjExLGUuYWRpZXJlc2lzPTQ0NCxlLmVkaWVyZXNpcz00NDQsZS5jYWN1dGU9NDQ0LGUubmFjdXRlPTUwMCxlLnVtYWNyb249NTAwLGUuTmNhcm9uPTcyMixlLklhY3V0ZT0zMzMsZS5wbHVzbWludXM9NTY0LGUuYnJva2VuYmFyPTIwMCxlLnJlZ2lzdGVyZWQ9NzYwLGUuR2JyZXZlPTcyMixlLklkb3RhY2NlbnQ9MzMzLGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02MTEsZS5yYWN1dGU9MzMzLGUub21hY3Jvbj01MDAsZS5aYWN1dGU9NjExLGUuWmNhcm9uPTYxMSxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NjY3LGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj0zMjYsZS5lb2dvbmVrPTQ0NCxlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTcyMixlLkFkaWVyZXNpcz03MjIsZS5lZ3JhdmU9NDQ0LGUuemFjdXRlPTQ0NCxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTcyMixlLm9hY3V0ZT01MDAsZS5hbWFjcm9uPTQ0NCxlLnNhY3V0ZT0zODksZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9NzIyLGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTUwMCxlLnR3b3N1cGVyaW9yPTMwMCxlLk9kaWVyZXNpcz03MjIsZS5tdT01MDAsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD01MDAsZS5Fb2dvbmVrPTYxMSxlLmRjcm9hdD01MDAsZS50aHJlZXF1YXJ0ZXJzPTc1MCxlLlNjZWRpbGxhPTU1NixlLmxjYXJvbj0zNDQsZS5LY29tbWFhY2NlbnQ9NzIyLGUuTGFjdXRlPTYxMSxlLnRyYWRlbWFyaz05ODAsZS5lZG90YWNjZW50PTQ0NCxlLklncmF2ZT0zMzMsZS5JbWFjcm9uPTMzMyxlLkxjYXJvbj02MTEsZS5vbmVoYWxmPTc1MCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD01MDAsZS5udGlsZGU9NTAwLGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjExLGUuZW1hY3Jvbj00NDQsZS5nYnJldmU9NTAwLGUub25lcXVhcnRlcj03NTAsZS5TY2Fyb249NTU2LGUuU2NvbW1hYWNjZW50PTU1NixlLk9odW5nYXJ1bWxhdXQ9NzIyLGUuZGVncmVlPTQwMCxlLm9ncmF2ZT01MDAsZS5DY2Fyb249NjY3LGUudWdyYXZlPTUwMCxlLnJhZGljYWw9NDUzLGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zMzMsZS5OdGlsZGU9NzIyLGUub3RpbGRlPTUwMCxlLlJjb21tYWFjY2VudD02NjcsZS5MY29tbWFhY2NlbnQ9NjExLGUuQXRpbGRlPTcyMixlLkFvZ29uZWs9NzIyLGUuQXJpbmc9NzIyLGUuT3RpbGRlPTcyMixlLnpkb3RhY2NlbnQ9NDQ0LGUuRWNhcm9uPTYxMSxlLklvZ29uZWs9MzMzLGUua2NvbW1hYWNjZW50PTUwMCxlLm1pbnVzPTU2NCxlLkljaXJjdW1mbGV4PTMzMyxlLm5jYXJvbj01MDAsZS50Y29tbWFhY2NlbnQ9Mjc4LGUubG9naWNhbG5vdD01NjQsZS5vZGllcmVzaXM9NTAwLGUudWRpZXJlc2lzPTUwMCxlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD01MDAsZS5ldGg9NTAwLGUuemNhcm9uPTQ0NCxlLm5jb21tYWFjY2VudD01MDAsZS5vbmVzdXBlcmlvcj0zMDAsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTAwfSkpLGVbIlRpbWVzLUJvbGQiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwLGUuZXhjbGFtPTMzMyxlLnF1b3RlZGJsPTU1NSxlLm51bWJlcnNpZ249NTAwLGUuZG9sbGFyPTUwMCxlLnBlcmNlbnQ9MWUzLGUuYW1wZXJzYW5kPTgzMyxlLnF1b3RlcmlnaHQ9MzMzLGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9NTAwLGUucGx1cz01NzAsZS5jb21tYT0yNTAsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI1MCxlLnNsYXNoPTI3OCxlLnplcm89NTAwLGUub25lPTUwMCxlLnR3bz01MDAsZS50aHJlZT01MDAsZS5mb3VyPTUwMCxlLmZpdmU9NTAwLGUuc2l4PTUwMCxlLnNldmVuPTUwMCxlLmVpZ2h0PTUwMCxlLm5pbmU9NTAwLGUuY29sb249MzMzLGUuc2VtaWNvbG9uPTMzMyxlLmxlc3M9NTcwLGUuZXF1YWw9NTcwLGUuZ3JlYXRlcj01NzAsZS5xdWVzdGlvbj01MDAsZS5hdD05MzAsZS5BPTcyMixlLkI9NjY3LGUuQz03MjIsZS5EPTcyMixlLkU9NjY3LGUuRj02MTEsZS5HPTc3OCxlLkg9Nzc4LGUuST0zODksZS5KPTUwMCxlLks9Nzc4LGUuTD02NjcsZS5NPTk0NCxlLk49NzIyLGUuTz03NzgsZS5QPTYxMSxlLlE9Nzc4LGUuUj03MjIsZS5TPTU1NixlLlQ9NjY3LGUuVT03MjIsZS5WPTcyMixlLlc9MWUzLGUuWD03MjIsZS5ZPTcyMixlLlo9NjY3LGUuYnJhY2tldGxlZnQ9MzMzLGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zMzMsZS5hc2NpaWNpcmN1bT01ODEsZS51bmRlcnNjb3JlPTUwMCxlLnF1b3RlbGVmdD0zMzMsZS5hPTUwMCxlLmI9NTU2LGUuYz00NDQsZS5kPTU1NixlLmU9NDQ0LGUuZj0zMzMsZS5nPTUwMCxlLmg9NTU2LGUuaT0yNzgsZS5qPTMzMyxlLms9NTU2LGUubD0yNzgsZS5tPTgzMyxlLm49NTU2LGUubz01MDAsZS5wPTU1NixlLnE9NTU2LGUucj00NDQsZS5zPTM4OSxlLnQ9MzMzLGUudT01NTYsZS52PTUwMCxlLnc9NzIyLGUueD01MDAsZS55PTUwMCxlLno9NDQ0LGUuYnJhY2VsZWZ0PTM5NCxlLmJhcj0yMjAsZS5icmFjZXJpZ2h0PTM5NCxlLmFzY2lpdGlsZGU9NTIwLGUuZXhjbGFtZG93bj0zMzMsZS5jZW50PTUwMCxlLnN0ZXJsaW5nPTUwMCxlLmZyYWN0aW9uPTE2NyxlLnllbj01MDAsZS5mbG9yaW49NTAwLGUuc2VjdGlvbj01MDAsZS5jdXJyZW5jeT01MDAsZS5xdW90ZXNpbmdsZT0yNzgsZS5xdW90ZWRibGxlZnQ9NTAwLGUuZ3VpbGxlbW90bGVmdD01MDAsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTU1NixlLmZsPTU1NixlLmVuZGFzaD01MDAsZS5kYWdnZXI9NTAwLGUuZGFnZ2VyZGJsPTUwMCxlLnBlcmlvZGNlbnRlcmVkPTI1MCxlLnBhcmFncmFwaD01NDAsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9MzMzLGUucXVvdGVkYmxiYXNlPTUwMCxlLnF1b3RlZGJscmlnaHQ9NTAwLGUuZ3VpbGxlbW90cmlnaHQ9NTAwLGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTUwMCxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9MWUzLGUub3JkZmVtaW5pbmU9MzAwLGUuTHNsYXNoPTY2NyxlLk9zbGFzaD03NzgsZS5PRT0xZTMsZS5vcmRtYXNjdWxpbmU9MzMwLGUuYWU9NzIyLGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD01MDAsZS5vZT03MjIsZS5nZXJtYW5kYmxzPTU1NixlLklkaWVyZXNpcz0zODksZS5lYWN1dGU9NDQ0LGUuYWJyZXZlPTUwMCxlLnVodW5nYXJ1bWxhdXQ9NTU2LGUuZWNhcm9uPTQ0NCxlLllkaWVyZXNpcz03MjIsZS5kaXZpZGU9NTcwLGUuWWFjdXRlPTcyMixlLkFjaXJjdW1mbGV4PTcyMixlLmFhY3V0ZT01MDAsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NTAwLGUuc2NvbW1hYWNjZW50PTM4OSxlLmVjaXJjdW1mbGV4PTQ0NCxlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTUwMCxlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTU1NixlLkVkaWVyZXNpcz02NjcsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTc0NyxlLkVtYWNyb249NjY3LGUuY2Nhcm9uPTQ0NCxlLmFyaW5nPTUwMCxlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTUwMCxlLlRjb21tYWFjY2VudD02NjcsZS5DYWN1dGU9NzIyLGUuYXRpbGRlPTUwMCxlLkVkb3RhY2NlbnQ9NjY3LGUuc2Nhcm9uPTM4OSxlLnNjZWRpbGxhPTM4OSxlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ5NCxlLlJjYXJvbj03MjIsZS5HY29tbWFhY2NlbnQ9Nzc4LGUudWNpcmN1bWZsZXg9NTU2LGUuYWNpcmN1bWZsZXg9NTAwLGUuQW1hY3Jvbj03MjIsZS5yY2Fyb249NDQ0LGUuY2NlZGlsbGE9NDQ0LGUuWmRvdGFjY2VudD02NjcsZS5UaG9ybj02MTEsZS5PbWFjcm9uPTc3OCxlLlJhY3V0ZT03MjIsZS5TYWN1dGU9NTU2LGUuZGNhcm9uPTY3MixlLlVtYWNyb249NzIyLGUudXJpbmc9NTU2LGUudGhyZWVzdXBlcmlvcj0zMDAsZS5PZ3JhdmU9Nzc4LGUuQWdyYXZlPTcyMixlLkFicmV2ZT03MjIsZS5tdWx0aXBseT01NzAsZS51YWN1dGU9NTU2LGUuVGNhcm9uPTY2NyxlLnBhcnRpYWxkaWZmPTQ5NCxlLnlkaWVyZXNpcz01MDAsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjY3LGUuYWRpZXJlc2lzPTUwMCxlLmVkaWVyZXNpcz00NDQsZS5jYWN1dGU9NDQ0LGUubmFjdXRlPTU1NixlLnVtYWNyb249NTU2LGUuTmNhcm9uPTcyMixlLklhY3V0ZT0zODksZS5wbHVzbWludXM9NTcwLGUuYnJva2VuYmFyPTIyMCxlLnJlZ2lzdGVyZWQ9NzQ3LGUuR2JyZXZlPTc3OCxlLklkb3RhY2NlbnQ9Mzg5LGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02NjcsZS5yYWN1dGU9NDQ0LGUub21hY3Jvbj01MDAsZS5aYWN1dGU9NjY3LGUuWmNhcm9uPTY2NyxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NzIyLGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj00MTYsZS5lb2dvbmVrPTQ0NCxlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTcyMixlLkFkaWVyZXNpcz03MjIsZS5lZ3JhdmU9NDQ0LGUuemFjdXRlPTQ0NCxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTc3OCxlLm9hY3V0ZT01MDAsZS5hbWFjcm9uPTUwMCxlLnNhY3V0ZT0zODksZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9Nzc4LGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTU1NixlLnR3b3N1cGVyaW9yPTMwMCxlLk9kaWVyZXNpcz03NzgsZS5tdT01NTYsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD01MDAsZS5Fb2dvbmVrPTY2NyxlLmRjcm9hdD01NTYsZS50aHJlZXF1YXJ0ZXJzPTc1MCxlLlNjZWRpbGxhPTU1NixlLmxjYXJvbj0zOTQsZS5LY29tbWFhY2NlbnQ9Nzc4LGUuTGFjdXRlPTY2NyxlLnRyYWRlbWFyaz0xZTMsZS5lZG90YWNjZW50PTQ0NCxlLklncmF2ZT0zODksZS5JbWFjcm9uPTM4OSxlLkxjYXJvbj02NjcsZS5vbmVoYWxmPTc1MCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD01MDAsZS5udGlsZGU9NTU2LGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjY3LGUuZW1hY3Jvbj00NDQsZS5nYnJldmU9NTAwLGUub25lcXVhcnRlcj03NTAsZS5TY2Fyb249NTU2LGUuU2NvbW1hYWNjZW50PTU1NixlLk9odW5nYXJ1bWxhdXQ9Nzc4LGUuZGVncmVlPTQwMCxlLm9ncmF2ZT01MDAsZS5DY2Fyb249NzIyLGUudWdyYXZlPTU1NixlLnJhZGljYWw9NTQ5LGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD00NDQsZS5OdGlsZGU9NzIyLGUub3RpbGRlPTUwMCxlLlJjb21tYWFjY2VudD03MjIsZS5MY29tbWFhY2NlbnQ9NjY3LGUuQXRpbGRlPTcyMixlLkFvZ29uZWs9NzIyLGUuQXJpbmc9NzIyLGUuT3RpbGRlPTc3OCxlLnpkb3RhY2NlbnQ9NDQ0LGUuRWNhcm9uPTY2NyxlLklvZ29uZWs9Mzg5LGUua2NvbW1hYWNjZW50PTU1NixlLm1pbnVzPTU3MCxlLkljaXJjdW1mbGV4PTM4OSxlLm5jYXJvbj01NTYsZS50Y29tbWFhY2NlbnQ9MzMzLGUubG9naWNhbG5vdD01NzAsZS5vZGllcmVzaXM9NTAwLGUudWRpZXJlc2lzPTU1NixlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD01MDAsZS5ldGg9NTAwLGUuemNhcm9uPTQ0NCxlLm5jb21tYWFjY2VudD01NTYsZS5vbmVzdXBlcmlvcj0zMDAsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTAwfSkpLGVbIlRpbWVzLUJvbGRJdGFsaWMiXT0oMCxuLmdldExvb2t1cFRhYmxlRmFjdG9yeSkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwLGUuZXhjbGFtPTM4OSxlLnF1b3RlZGJsPTU1NSxlLm51bWJlcnNpZ249NTAwLGUuZG9sbGFyPTUwMCxlLnBlcmNlbnQ9ODMzLGUuYW1wZXJzYW5kPTc3OCxlLnF1b3RlcmlnaHQ9MzMzLGUucGFyZW5sZWZ0PTMzMyxlLnBhcmVucmlnaHQ9MzMzLGUuYXN0ZXJpc2s9NTAwLGUucGx1cz01NzAsZS5jb21tYT0yNTAsZS5oeXBoZW49MzMzLGUucGVyaW9kPTI1MCxlLnNsYXNoPTI3OCxlLnplcm89NTAwLGUub25lPTUwMCxlLnR3bz01MDAsZS50aHJlZT01MDAsZS5mb3VyPTUwMCxlLmZpdmU9NTAwLGUuc2l4PTUwMCxlLnNldmVuPTUwMCxlLmVpZ2h0PTUwMCxlLm5pbmU9NTAwLGUuY29sb249MzMzLGUuc2VtaWNvbG9uPTMzMyxlLmxlc3M9NTcwLGUuZXF1YWw9NTcwLGUuZ3JlYXRlcj01NzAsZS5xdWVzdGlvbj01MDAsZS5hdD04MzIsZS5BPTY2NyxlLkI9NjY3LGUuQz02NjcsZS5EPTcyMixlLkU9NjY3LGUuRj02NjcsZS5HPTcyMixlLkg9Nzc4LGUuST0zODksZS5KPTUwMCxlLks9NjY3LGUuTD02MTEsZS5NPTg4OSxlLk49NzIyLGUuTz03MjIsZS5QPTYxMSxlLlE9NzIyLGUuUj02NjcsZS5TPTU1NixlLlQ9NjExLGUuVT03MjIsZS5WPTY2NyxlLlc9ODg5LGUuWD02NjcsZS5ZPTYxMSxlLlo9NjExLGUuYnJhY2tldGxlZnQ9MzMzLGUuYmFja3NsYXNoPTI3OCxlLmJyYWNrZXRyaWdodD0zMzMsZS5hc2NpaWNpcmN1bT01NzAsZS51bmRlcnNjb3JlPTUwMCxlLnF1b3RlbGVmdD0zMzMsZS5hPTUwMCxlLmI9NTAwLGUuYz00NDQsZS5kPTUwMCxlLmU9NDQ0LGUuZj0zMzMsZS5nPTUwMCxlLmg9NTU2LGUuaT0yNzgsZS5qPTI3OCxlLms9NTAwLGUubD0yNzgsZS5tPTc3OCxlLm49NTU2LGUubz01MDAsZS5wPTUwMCxlLnE9NTAwLGUucj0zODksZS5zPTM4OSxlLnQ9Mjc4LGUudT01NTYsZS52PTQ0NCxlLnc9NjY3LGUueD01MDAsZS55PTQ0NCxlLno9Mzg5LGUuYnJhY2VsZWZ0PTM0OCxlLmJhcj0yMjAsZS5icmFjZXJpZ2h0PTM0OCxlLmFzY2lpdGlsZGU9NTcwLGUuZXhjbGFtZG93bj0zODksZS5jZW50PTUwMCxlLnN0ZXJsaW5nPTUwMCxlLmZyYWN0aW9uPTE2NyxlLnllbj01MDAsZS5mbG9yaW49NTAwLGUuc2VjdGlvbj01MDAsZS5jdXJyZW5jeT01MDAsZS5xdW90ZXNpbmdsZT0yNzgsZS5xdW90ZWRibGxlZnQ9NTAwLGUuZ3VpbGxlbW90bGVmdD01MDAsZS5ndWlsc2luZ2xsZWZ0PTMzMyxlLmd1aWxzaW5nbHJpZ2h0PTMzMyxlLmZpPTU1NixlLmZsPTU1NixlLmVuZGFzaD01MDAsZS5kYWdnZXI9NTAwLGUuZGFnZ2VyZGJsPTUwMCxlLnBlcmlvZGNlbnRlcmVkPTI1MCxlLnBhcmFncmFwaD01MDAsZS5idWxsZXQ9MzUwLGUucXVvdGVzaW5nbGJhc2U9MzMzLGUucXVvdGVkYmxiYXNlPTUwMCxlLnF1b3RlZGJscmlnaHQ9NTAwLGUuZ3VpbGxlbW90cmlnaHQ9NTAwLGUuZWxsaXBzaXM9MWUzLGUucGVydGhvdXNhbmQ9MWUzLGUucXVlc3Rpb25kb3duPTUwMCxlLmdyYXZlPTMzMyxlLmFjdXRlPTMzMyxlLmNpcmN1bWZsZXg9MzMzLGUudGlsZGU9MzMzLGUubWFjcm9uPTMzMyxlLmJyZXZlPTMzMyxlLmRvdGFjY2VudD0zMzMsZS5kaWVyZXNpcz0zMzMsZS5yaW5nPTMzMyxlLmNlZGlsbGE9MzMzLGUuaHVuZ2FydW1sYXV0PTMzMyxlLm9nb25laz0zMzMsZS5jYXJvbj0zMzMsZS5lbWRhc2g9MWUzLGUuQUU9OTQ0LGUub3JkZmVtaW5pbmU9MjY2LGUuTHNsYXNoPTYxMSxlLk9zbGFzaD03MjIsZS5PRT05NDQsZS5vcmRtYXNjdWxpbmU9MzAwLGUuYWU9NzIyLGUuZG90bGVzc2k9Mjc4LGUubHNsYXNoPTI3OCxlLm9zbGFzaD01MDAsZS5vZT03MjIsZS5nZXJtYW5kYmxzPTUwMCxlLklkaWVyZXNpcz0zODksZS5lYWN1dGU9NDQ0LGUuYWJyZXZlPTUwMCxlLnVodW5nYXJ1bWxhdXQ9NTU2LGUuZWNhcm9uPTQ0NCxlLllkaWVyZXNpcz02MTEsZS5kaXZpZGU9NTcwLGUuWWFjdXRlPTYxMSxlLkFjaXJjdW1mbGV4PTY2NyxlLmFhY3V0ZT01MDAsZS5VY2lyY3VtZmxleD03MjIsZS55YWN1dGU9NDQ0LGUuc2NvbW1hYWNjZW50PTM4OSxlLmVjaXJjdW1mbGV4PTQ0NCxlLlVyaW5nPTcyMixlLlVkaWVyZXNpcz03MjIsZS5hb2dvbmVrPTUwMCxlLlVhY3V0ZT03MjIsZS51b2dvbmVrPTU1NixlLkVkaWVyZXNpcz02NjcsZS5EY3JvYXQ9NzIyLGUuY29tbWFhY2NlbnQ9MjUwLGUuY29weXJpZ2h0PTc0NyxlLkVtYWNyb249NjY3LGUuY2Nhcm9uPTQ0NCxlLmFyaW5nPTUwMCxlLk5jb21tYWFjY2VudD03MjIsZS5sYWN1dGU9Mjc4LGUuYWdyYXZlPTUwMCxlLlRjb21tYWFjY2VudD02MTEsZS5DYWN1dGU9NjY3LGUuYXRpbGRlPTUwMCxlLkVkb3RhY2NlbnQ9NjY3LGUuc2Nhcm9uPTM4OSxlLnNjZWRpbGxhPTM4OSxlLmlhY3V0ZT0yNzgsZS5sb3plbmdlPTQ5NCxlLlJjYXJvbj02NjcsZS5HY29tbWFhY2NlbnQ9NzIyLGUudWNpcmN1bWZsZXg9NTU2LGUuYWNpcmN1bWZsZXg9NTAwLGUuQW1hY3Jvbj02NjcsZS5yY2Fyb249Mzg5LGUuY2NlZGlsbGE9NDQ0LGUuWmRvdGFjY2VudD02MTEsZS5UaG9ybj02MTEsZS5PbWFjcm9uPTcyMixlLlJhY3V0ZT02NjcsZS5TYWN1dGU9NTU2LGUuZGNhcm9uPTYwOCxlLlVtYWNyb249NzIyLGUudXJpbmc9NTU2LGUudGhyZWVzdXBlcmlvcj0zMDAsZS5PZ3JhdmU9NzIyLGUuQWdyYXZlPTY2NyxlLkFicmV2ZT02NjcsZS5tdWx0aXBseT01NzAsZS51YWN1dGU9NTU2LGUuVGNhcm9uPTYxMSxlLnBhcnRpYWxkaWZmPTQ5NCxlLnlkaWVyZXNpcz00NDQsZS5OYWN1dGU9NzIyLGUuaWNpcmN1bWZsZXg9Mjc4LGUuRWNpcmN1bWZsZXg9NjY3LGUuYWRpZXJlc2lzPTUwMCxlLmVkaWVyZXNpcz00NDQsZS5jYWN1dGU9NDQ0LGUubmFjdXRlPTU1NixlLnVtYWNyb249NTU2LGUuTmNhcm9uPTcyMixlLklhY3V0ZT0zODksZS5wbHVzbWludXM9NTcwLGUuYnJva2VuYmFyPTIyMCxlLnJlZ2lzdGVyZWQ9NzQ3LGUuR2JyZXZlPTcyMixlLklkb3RhY2NlbnQ9Mzg5LGUuc3VtbWF0aW9uPTYwMCxlLkVncmF2ZT02NjcsZS5yYWN1dGU9Mzg5LGUub21hY3Jvbj01MDAsZS5aYWN1dGU9NjExLGUuWmNhcm9uPTYxMSxlLmdyZWF0ZXJlcXVhbD01NDksZS5FdGg9NzIyLGUuQ2NlZGlsbGE9NjY3LGUubGNvbW1hYWNjZW50PTI3OCxlLnRjYXJvbj0zNjYsZS5lb2dvbmVrPTQ0NCxlLlVvZ29uZWs9NzIyLGUuQWFjdXRlPTY2NyxlLkFkaWVyZXNpcz02NjcsZS5lZ3JhdmU9NDQ0LGUuemFjdXRlPTM4OSxlLmlvZ29uZWs9Mjc4LGUuT2FjdXRlPTcyMixlLm9hY3V0ZT01MDAsZS5hbWFjcm9uPTUwMCxlLnNhY3V0ZT0zODksZS5pZGllcmVzaXM9Mjc4LGUuT2NpcmN1bWZsZXg9NzIyLGUuVWdyYXZlPTcyMixlLkRlbHRhPTYxMixlLnRob3JuPTUwMCxlLnR3b3N1cGVyaW9yPTMwMCxlLk9kaWVyZXNpcz03MjIsZS5tdT01NzYsZS5pZ3JhdmU9Mjc4LGUub2h1bmdhcnVtbGF1dD01MDAsZS5Fb2dvbmVrPTY2NyxlLmRjcm9hdD01MDAsZS50aHJlZXF1YXJ0ZXJzPTc1MCxlLlNjZWRpbGxhPTU1NixlLmxjYXJvbj0zODIsZS5LY29tbWFhY2NlbnQ9NjY3LGUuTGFjdXRlPTYxMSxlLnRyYWRlbWFyaz0xZTMsZS5lZG90YWNjZW50PTQ0NCxlLklncmF2ZT0zODksZS5JbWFjcm9uPTM4OSxlLkxjYXJvbj02MTEsZS5vbmVoYWxmPTc1MCxlLmxlc3NlcXVhbD01NDksZS5vY2lyY3VtZmxleD01MDAsZS5udGlsZGU9NTU2LGUuVWh1bmdhcnVtbGF1dD03MjIsZS5FYWN1dGU9NjY3LGUuZW1hY3Jvbj00NDQsZS5nYnJldmU9NTAwLGUub25lcXVhcnRlcj03NTAsZS5TY2Fyb249NTU2LGUuU2NvbW1hYWNjZW50PTU1NixlLk9odW5nYXJ1bWxhdXQ9NzIyLGUuZGVncmVlPTQwMCxlLm9ncmF2ZT01MDAsZS5DY2Fyb249NjY3LGUudWdyYXZlPTU1NixlLnJhZGljYWw9NTQ5LGUuRGNhcm9uPTcyMixlLnJjb21tYWFjY2VudD0zODksZS5OdGlsZGU9NzIyLGUub3RpbGRlPTUwMCxlLlJjb21tYWFjY2VudD02NjcsZS5MY29tbWFhY2NlbnQ9NjExLGUuQXRpbGRlPTY2NyxlLkFvZ29uZWs9NjY3LGUuQXJpbmc9NjY3LGUuT3RpbGRlPTcyMixlLnpkb3RhY2NlbnQ9Mzg5LGUuRWNhcm9uPTY2NyxlLklvZ29uZWs9Mzg5LGUua2NvbW1hYWNjZW50PTUwMCxlLm1pbnVzPTYwNixlLkljaXJjdW1mbGV4PTM4OSxlLm5jYXJvbj01NTYsZS50Y29tbWFhY2NlbnQ9Mjc4LGUubG9naWNhbG5vdD02MDYsZS5vZGllcmVzaXM9NTAwLGUudWRpZXJlc2lzPTU1NixlLm5vdGVxdWFsPTU0OSxlLmdjb21tYWFjY2VudD01MDAsZS5ldGg9NTAwLGUuemNhcm9uPTM4OSxlLm5jb21tYWFjY2VudD01NTYsZS5vbmVzdXBlcmlvcj0zMDAsZS5pbWFjcm9uPTI3OCxlLkV1cm89NTAwfSkpLGVbIlRpbWVzLUl0YWxpYyJdPSgwLG4uZ2V0TG9va3VwVGFibGVGYWN0b3J5KSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTAsZS5leGNsYW09MzMzLGUucXVvdGVkYmw9NDIwLGUubnVtYmVyc2lnbj01MDAsZS5kb2xsYXI9NTAwLGUucGVyY2VudD04MzMsZS5hbXBlcnNhbmQ9Nzc4LGUucXVvdGVyaWdodD0zMzMsZS5wYXJlbmxlZnQ9MzMzLGUucGFyZW5yaWdodD0zMzMsZS5hc3Rlcmlzaz01MDAsZS5wbHVzPTY3NSxlLmNvbW1hPTI1MCxlLmh5cGhlbj0zMzMsZS5wZXJpb2Q9MjUwLGUuc2xhc2g9Mjc4LGUuemVybz01MDAsZS5vbmU9NTAwLGUudHdvPTUwMCxlLnRocmVlPTUwMCxlLmZvdXI9NTAwLGUuZml2ZT01MDAsZS5zaXg9NTAwLGUuc2V2ZW49NTAwLGUuZWlnaHQ9NTAwLGUubmluZT01MDAsZS5jb2xvbj0zMzMsZS5zZW1pY29sb249MzMzLGUubGVzcz02NzUsZS5lcXVhbD02NzUsZS5ncmVhdGVyPTY3NSxlLnF1ZXN0aW9uPTUwMCxlLmF0PTkyMCxlLkE9NjExLGUuQj02MTEsZS5DPTY2NyxlLkQ9NzIyLGUuRT02MTEsZS5GPTYxMSxlLkc9NzIyLGUuSD03MjIsZS5JPTMzMyxlLko9NDQ0LGUuSz02NjcsZS5MPTU1NixlLk09ODMzLGUuTj02NjcsZS5PPTcyMixlLlA9NjExLGUuUT03MjIsZS5SPTYxMSxlLlM9NTAwLGUuVD01NTYsZS5VPTcyMixlLlY9NjExLGUuVz04MzMsZS5YPTYxMSxlLlk9NTU2LGUuWj01NTYsZS5icmFja2V0bGVmdD0zODksZS5iYWNrc2xhc2g9Mjc4LGUuYnJhY2tldHJpZ2h0PTM4OSxlLmFzY2lpY2lyY3VtPTQyMixlLnVuZGVyc2NvcmU9NTAwLGUucXVvdGVsZWZ0PTMzMyxlLmE9NTAwLGUuYj01MDAsZS5jPTQ0NCxlLmQ9NTAwLGUuZT00NDQsZS5mPTI3OCxlLmc9NTAwLGUuaD01MDAsZS5pPTI3OCxlLmo9Mjc4LGUuaz00NDQsZS5sPTI3OCxlLm09NzIyLGUubj01MDAsZS5vPTUwMCxlLnA9NTAwLGUucT01MDAsZS5yPTM4OSxlLnM9Mzg5LGUudD0yNzgsZS51PTUwMCxlLnY9NDQ0LGUudz02NjcsZS54PTQ0NCxlLnk9NDQ0LGUuej0zODksZS5icmFjZWxlZnQ9NDAwLGUuYmFyPTI3NSxlLmJyYWNlcmlnaHQ9NDAwLGUuYXNjaWl0aWxkZT01NDEsZS5leGNsYW1kb3duPTM4OSxlLmNlbnQ9NTAwLGUuc3Rlcmxpbmc9NTAwLGUuZnJhY3Rpb249MTY3LGUueWVuPTUwMCxlLmZsb3Jpbj01MDAsZS5zZWN0aW9uPTUwMCxlLmN1cnJlbmN5PTUwMCxlLnF1b3Rlc2luZ2xlPTIxNCxlLnF1b3RlZGJsbGVmdD01NTYsZS5ndWlsbGVtb3RsZWZ0PTUwMCxlLmd1aWxzaW5nbGxlZnQ9MzMzLGUuZ3VpbHNpbmdscmlnaHQ9MzMzLGUuZmk9NTAwLGUuZmw9NTAwLGUuZW5kYXNoPTUwMCxlLmRhZ2dlcj01MDAsZS5kYWdnZXJkYmw9NTAwLGUucGVyaW9kY2VudGVyZWQ9MjUwLGUucGFyYWdyYXBoPTUyMyxlLmJ1bGxldD0zNTAsZS5xdW90ZXNpbmdsYmFzZT0zMzMsZS5xdW90ZWRibGJhc2U9NTU2LGUucXVvdGVkYmxyaWdodD01NTYsZS5ndWlsbGVtb3RyaWdodD01MDAsZS5lbGxpcHNpcz04ODksZS5wZXJ0aG91c2FuZD0xZTMsZS5xdWVzdGlvbmRvd249NTAwLGUuZ3JhdmU9MzMzLGUuYWN1dGU9MzMzLGUuY2lyY3VtZmxleD0zMzMsZS50aWxkZT0zMzMsZS5tYWNyb249MzMzLGUuYnJldmU9MzMzLGUuZG90YWNjZW50PTMzMyxlLmRpZXJlc2lzPTMzMyxlLnJpbmc9MzMzLGUuY2VkaWxsYT0zMzMsZS5odW5nYXJ1bWxhdXQ9MzMzLGUub2dvbmVrPTMzMyxlLmNhcm9uPTMzMyxlLmVtZGFzaD04ODksZS5BRT04ODksZS5vcmRmZW1pbmluZT0yNzYsZS5Mc2xhc2g9NTU2LGUuT3NsYXNoPTcyMixlLk9FPTk0NCxlLm9yZG1hc2N1bGluZT0zMTAsZS5hZT02NjcsZS5kb3RsZXNzaT0yNzgsZS5sc2xhc2g9Mjc4LGUub3NsYXNoPTUwMCxlLm9lPTY2NyxlLmdlcm1hbmRibHM9NTAwLGUuSWRpZXJlc2lzPTMzMyxlLmVhY3V0ZT00NDQsZS5hYnJldmU9NTAwLGUudWh1bmdhcnVtbGF1dD01MDAsZS5lY2Fyb249NDQ0LGUuWWRpZXJlc2lzPTU1NixlLmRpdmlkZT02NzUsZS5ZYWN1dGU9NTU2LGUuQWNpcmN1bWZsZXg9NjExLGUuYWFjdXRlPTUwMCxlLlVjaXJjdW1mbGV4PTcyMixlLnlhY3V0ZT00NDQsZS5zY29tbWFhY2NlbnQ9Mzg5LGUuZWNpcmN1bWZsZXg9NDQ0LGUuVXJpbmc9NzIyLGUuVWRpZXJlc2lzPTcyMixlLmFvZ29uZWs9NTAwLGUuVWFjdXRlPTcyMixlLnVvZ29uZWs9NTAwLGUuRWRpZXJlc2lzPTYxMSxlLkRjcm9hdD03MjIsZS5jb21tYWFjY2VudD0yNTAsZS5jb3B5cmlnaHQ9NzYwLGUuRW1hY3Jvbj02MTEsZS5jY2Fyb249NDQ0LGUuYXJpbmc9NTAwLGUuTmNvbW1hYWNjZW50PTY2NyxlLmxhY3V0ZT0yNzgsZS5hZ3JhdmU9NTAwLGUuVGNvbW1hYWNjZW50PTU1NixlLkNhY3V0ZT02NjcsZS5hdGlsZGU9NTAwLGUuRWRvdGFjY2VudD02MTEsZS5zY2Fyb249Mzg5LGUuc2NlZGlsbGE9Mzg5LGUuaWFjdXRlPTI3OCxlLmxvemVuZ2U9NDcxLGUuUmNhcm9uPTYxMSxlLkdjb21tYWFjY2VudD03MjIsZS51Y2lyY3VtZmxleD01MDAsZS5hY2lyY3VtZmxleD01MDAsZS5BbWFjcm9uPTYxMSxlLnJjYXJvbj0zODksZS5jY2VkaWxsYT00NDQsZS5aZG90YWNjZW50PTU1NixlLlRob3JuPTYxMSxlLk9tYWNyb249NzIyLGUuUmFjdXRlPTYxMSxlLlNhY3V0ZT01MDAsZS5kY2Fyb249NTQ0LGUuVW1hY3Jvbj03MjIsZS51cmluZz01MDAsZS50aHJlZXN1cGVyaW9yPTMwMCxlLk9ncmF2ZT03MjIsZS5BZ3JhdmU9NjExLGUuQWJyZXZlPTYxMSxlLm11bHRpcGx5PTY3NSxlLnVhY3V0ZT01MDAsZS5UY2Fyb249NTU2LGUucGFydGlhbGRpZmY9NDc2LGUueWRpZXJlc2lzPTQ0NCxlLk5hY3V0ZT02NjcsZS5pY2lyY3VtZmxleD0yNzgsZS5FY2lyY3VtZmxleD02MTEsZS5hZGllcmVzaXM9NTAwLGUuZWRpZXJlc2lzPTQ0NCxlLmNhY3V0ZT00NDQsZS5uYWN1dGU9NTAwLGUudW1hY3Jvbj01MDAsZS5OY2Fyb249NjY3LGUuSWFjdXRlPTMzMyxlLnBsdXNtaW51cz02NzUsZS5icm9rZW5iYXI9Mjc1LGUucmVnaXN0ZXJlZD03NjAsZS5HYnJldmU9NzIyLGUuSWRvdGFjY2VudD0zMzMsZS5zdW1tYXRpb249NjAwLGUuRWdyYXZlPTYxMSxlLnJhY3V0ZT0zODksZS5vbWFjcm9uPTUwMCxlLlphY3V0ZT01NTYsZS5aY2Fyb249NTU2LGUuZ3JlYXRlcmVxdWFsPTU0OSxlLkV0aD03MjIsZS5DY2VkaWxsYT02NjcsZS5sY29tbWFhY2NlbnQ9Mjc4LGUudGNhcm9uPTMwMCxlLmVvZ29uZWs9NDQ0LGUuVW9nb25laz03MjIsZS5BYWN1dGU9NjExLGUuQWRpZXJlc2lzPTYxMSxlLmVncmF2ZT00NDQsZS56YWN1dGU9Mzg5LGUuaW9nb25laz0yNzgsZS5PYWN1dGU9NzIyLGUub2FjdXRlPTUwMCxlLmFtYWNyb249NTAwLGUuc2FjdXRlPTM4OSxlLmlkaWVyZXNpcz0yNzgsZS5PY2lyY3VtZmxleD03MjIsZS5VZ3JhdmU9NzIyLGUuRGVsdGE9NjEyLGUudGhvcm49NTAwLGUudHdvc3VwZXJpb3I9MzAwLGUuT2RpZXJlc2lzPTcyMixlLm11PTUwMCxlLmlncmF2ZT0yNzgsZS5vaHVuZ2FydW1sYXV0PTUwMCxlLkVvZ29uZWs9NjExLGUuZGNyb2F0PTUwMCxlLnRocmVlcXVhcnRlcnM9NzUwLGUuU2NlZGlsbGE9NTAwLGUubGNhcm9uPTMwMCxlLktjb21tYWFjY2VudD02NjcsZS5MYWN1dGU9NTU2LGUudHJhZGVtYXJrPTk4MCxlLmVkb3RhY2NlbnQ9NDQ0LGUuSWdyYXZlPTMzMyxlLkltYWNyb249MzMzLGUuTGNhcm9uPTYxMSxlLm9uZWhhbGY9NzUwLGUubGVzc2VxdWFsPTU0OSxlLm9jaXJjdW1mbGV4PTUwMCxlLm50aWxkZT01MDAsZS5VaHVuZ2FydW1sYXV0PTcyMixlLkVhY3V0ZT02MTEsZS5lbWFjcm9uPTQ0NCxlLmdicmV2ZT01MDAsZS5vbmVxdWFydGVyPTc1MCxlLlNjYXJvbj01MDAsZS5TY29tbWFhY2NlbnQ9NTAwLGUuT2h1bmdhcnVtbGF1dD03MjIsZS5kZWdyZWU9NDAwLGUub2dyYXZlPTUwMCxlLkNjYXJvbj02NjcsZS51Z3JhdmU9NTAwLGUucmFkaWNhbD00NTMsZS5EY2Fyb249NzIyLGUucmNvbW1hYWNjZW50PTM4OSxlLk50aWxkZT02NjcsZS5vdGlsZGU9NTAwLGUuUmNvbW1hYWNjZW50PTYxMSxlLkxjb21tYWFjY2VudD01NTYsZS5BdGlsZGU9NjExLGUuQW9nb25laz02MTEsZS5BcmluZz02MTEsZS5PdGlsZGU9NzIyLGUuemRvdGFjY2VudD0zODksZS5FY2Fyb249NjExLGUuSW9nb25laz0zMzMsZS5rY29tbWFhY2NlbnQ9NDQ0LGUubWludXM9Njc1LGUuSWNpcmN1bWZsZXg9MzMzLGUubmNhcm9uPTUwMCxlLnRjb21tYWFjY2VudD0yNzgsZS5sb2dpY2Fsbm90PTY3NSxlLm9kaWVyZXNpcz01MDAsZS51ZGllcmVzaXM9NTAwLGUubm90ZXF1YWw9NTQ5LGUuZ2NvbW1hYWNjZW50PTUwMCxlLmV0aD01MDAsZS56Y2Fyb249Mzg5LGUubmNvbW1hYWNjZW50PTUwMCxlLm9uZXN1cGVyaW9yPTMwMCxlLmltYWNyb249Mjc4LGUuRXVybz01MDB9KSksZS5aYXBmRGluZ2JhdHM9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLnNwYWNlPTI3OCxlLmExPTk3NCxlLmEyPTk2MSxlLmEyMDI9OTc0LGUuYTM9OTgwLGUuYTQ9NzE5LGUuYTU9Nzg5LGUuYTExOT03OTAsZS5hMTE4PTc5MSxlLmExMTc9NjkwLGUuYTExPTk2MCxlLmExMj05MzksZS5hMTM9NTQ5LGUuYTE0PTg1NSxlLmExNT05MTEsZS5hMTY9OTMzLGUuYTEwNT05MTEsZS5hMTc9OTQ1LGUuYTE4PTk3NCxlLmExOT03NTUsZS5hMjA9ODQ2LGUuYTIxPTc2MixlLmEyMj03NjEsZS5hMjM9NTcxLGUuYTI0PTY3NyxlLmEyNT03NjMsZS5hMjY9NzYwLGUuYTI3PTc1OSxlLmEyOD03NTQsZS5hNj00OTQsZS5hNz01NTIsZS5hOD01MzcsZS5hOT01NzcsZS5hMTA9NjkyLGUuYTI5PTc4NixlLmEzMD03ODgsZS5hMzE9Nzg4LGUuYTMyPTc5MCxlLmEzMz03OTMsZS5hMzQ9Nzk0LGUuYTM1PTgxNixlLmEzNj04MjMsZS5hMzc9Nzg5LGUuYTM4PTg0MSxlLmEzOT04MjMsZS5hNDA9ODMzLGUuYTQxPTgxNixlLmE0Mj04MzEsZS5hNDM9OTIzLGUuYTQ0PTc0NCxlLmE0NT03MjMsZS5hNDY9NzQ5LGUuYTQ3PTc5MCxlLmE0OD03OTIsZS5hNDk9Njk1LGUuYTUwPTc3NixlLmE1MT03NjgsZS5hNTI9NzkyLGUuYTUzPTc1OSxlLmE1ND03MDcsZS5hNTU9NzA4LGUuYTU2PTY4MixlLmE1Nz03MDEsZS5hNTg9ODI2LGUuYTU5PTgxNSxlLmE2MD03ODksZS5hNjE9Nzg5LGUuYTYyPTcwNyxlLmE2Mz02ODcsZS5hNjQ9Njk2LGUuYTY1PTY4OSxlLmE2Nj03ODYsZS5hNjc9Nzg3LGUuYTY4PTcxMyxlLmE2OT03OTEsZS5hNzA9Nzg1LGUuYTcxPTc5MSxlLmE3Mj04NzMsZS5hNzM9NzYxLGUuYTc0PTc2MixlLmEyMDM9NzYyLGUuYTc1PTc1OSxlLmEyMDQ9NzU5LGUuYTc2PTg5MixlLmE3Nz04OTIsZS5hNzg9Nzg4LGUuYTc5PTc4NCxlLmE4MT00MzgsZS5hODI9MTM4LGUuYTgzPTI3NyxlLmE4ND00MTUsZS5hOTc9MzkyLGUuYTk4PTM5MixlLmE5OT02NjgsZS5hMTAwPTY2OCxlLmE4OT0zOTAsZS5hOTA9MzkwLGUuYTkzPTMxNyxlLmE5ND0zMTcsZS5hOTE9Mjc2LGUuYTkyPTI3NixlLmEyMDU9NTA5LGUuYTg1PTUwOSxlLmEyMDY9NDEwLGUuYTg2PTQxMCxlLmE4Nz0yMzQsZS5hODg9MjM0LGUuYTk1PTMzNCxlLmE5Nj0zMzQsZS5hMTAxPTczMixlLmExMDI9NTQ0LGUuYTEwMz01NDQsZS5hMTA0PTkxMCxlLmExMDY9NjY3LGUuYTEwNz03NjAsZS5hMTA4PTc2MCxlLmExMTI9Nzc2LGUuYTExMT01OTUsZS5hMTEwPTY5NCxlLmExMDk9NjI2LGUuYTEyMD03ODgsZS5hMTIxPTc4OCxlLmExMjI9Nzg4LGUuYTEyMz03ODgsZS5hMTI0PTc4OCxlLmExMjU9Nzg4LGUuYTEyNj03ODgsZS5hMTI3PTc4OCxlLmExMjg9Nzg4LGUuYTEyOT03ODgsZS5hMTMwPTc4OCxlLmExMzE9Nzg4LGUuYTEzMj03ODgsZS5hMTMzPTc4OCxlLmExMzQ9Nzg4LGUuYTEzNT03ODgsZS5hMTM2PTc4OCxlLmExMzc9Nzg4LGUuYTEzOD03ODgsZS5hMTM5PTc4OCxlLmExNDA9Nzg4LGUuYTE0MT03ODgsZS5hMTQyPTc4OCxlLmExNDM9Nzg4LGUuYTE0ND03ODgsZS5hMTQ1PTc4OCxlLmExNDY9Nzg4LGUuYTE0Nz03ODgsZS5hMTQ4PTc4OCxlLmExNDk9Nzg4LGUuYTE1MD03ODgsZS5hMTUxPTc4OCxlLmExNTI9Nzg4LGUuYTE1Mz03ODgsZS5hMTU0PTc4OCxlLmExNTU9Nzg4LGUuYTE1Nj03ODgsZS5hMTU3PTc4OCxlLmExNTg9Nzg4LGUuYTE1OT03ODgsZS5hMTYwPTg5NCxlLmExNjE9ODM4LGUuYTE2Mz0xMDE2LGUuYTE2ND00NTgsZS5hMTk2PTc0OCxlLmExNjU9OTI0LGUuYTE5Mj03NDgsZS5hMTY2PTkxOCxlLmExNjc9OTI3LGUuYTE2OD05MjgsZS5hMTY5PTkyOCxlLmExNzA9ODM0LGUuYTE3MT04NzMsZS5hMTcyPTgyOCxlLmExNzM9OTI0LGUuYTE2Mj05MjQsZS5hMTc0PTkxNyxlLmExNzU9OTMwLGUuYTE3Nj05MzEsZS5hMTc3PTQ2MyxlLmExNzg9ODgzLGUuYTE3OT04MzYsZS5hMTkzPTgzNixlLmExODA9ODY3LGUuYTE5OT04NjcsZS5hMTgxPTY5NixlLmEyMDA9Njk2LGUuYTE4Mj04NzQsZS5hMjAxPTg3NCxlLmExODM9NzYwLGUuYTE4ND05NDYsZS5hMTk3PTc3MSxlLmExODU9ODY1LGUuYTE5ND03NzEsZS5hMTk4PTg4OCxlLmExODY9OTY3LGUuYTE5NT04ODgsZS5hMTg3PTgzMSxlLmExODg9ODczLGUuYTE4OT05MjcsZS5hMTkwPTk3MCxlLmExOTE9OTE4fSkpfSkpO3QuZ2V0TWV0cmljcz1hO2NvbnN0IGk9KDAsbi5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fSxlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX0sZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9LGVbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn0sZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9LGVbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9LGVbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9LGVbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfSxlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfSxlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9LGVbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfSxlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9LGUuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn0sZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTt0LmdldEZvbnRCYXNpY01ldHJpY3M9aX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkdseWZUYWJsZT12b2lkIDAscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDE1NyksdC5HbHlmVGFibGU9Y2xhc3N7Y29uc3RydWN0b3IoZSl7bGV0e2dseWZUYWJsZTp0LGlzR2x5cGhMb2NhdGlvbnNMb25nOnIsbG9jYVRhYmxlOmEsbnVtR2x5cGhzOml9PWU7dGhpcy5nbHlwaHM9W107Y29uc3Qgcz1uZXcgRGF0YVZpZXcoYS5idWZmZXIsYS5ieXRlT2Zmc2V0LGEuYnl0ZUxlbmd0aCksbz1uZXcgRGF0YVZpZXcodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCksYz1yPzQ6MjtsZXQgbD1yP3MuZ2V0VWludDMyKDApOjIqcy5nZXRVaW50MTYoMCksaD0wO2ZvcihsZXQgZT0wO2U8aTtlKyspe2grPWM7Y29uc3QgZT1yP3MuZ2V0VWludDMyKGgpOjIqcy5nZXRVaW50MTYoaCk7aWYoZT09PWwpe3RoaXMuZ2x5cGhzLnB1c2gobmV3IG4oe30pKTtjb250aW51ZX1jb25zdCB0PW4ucGFyc2UobCxvKTt0aGlzLmdseXBocy5wdXNoKHQpLGw9ZX19Z2V0U2l6ZSgpe3JldHVybiB0aGlzLmdseXBocy5yZWR1Y2UoKChlLHQpPT5lKyh0LmdldFNpemUoKSszJi00KSksMCl9d3JpdGUoKXtjb25zdCBlPXRoaXMuZ2V0U2l6ZSgpLHQ9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcihlKSkscj1lPjEzMTA3MCxuPXI/NDoyLGE9bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigodGhpcy5nbHlwaHMubGVuZ3RoKzEpKm4pKTtyP2Euc2V0VWludDMyKDAsMCk6YS5zZXRVaW50MTYoMCwwKTtsZXQgaT0wLHM9MDtmb3IoY29uc3QgZSBvZiB0aGlzLmdseXBocylpKz1lLndyaXRlKGksdCksaT1pKzMmLTQscys9bixyP2Euc2V0VWludDMyKHMsaSk6YS5zZXRVaW50MTYocyxpPj4xKTtyZXR1cm57aXNMb2NhdGlvbkxvbmc6cixsb2NhOm5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSxnbHlmOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyKX19c2NhbGUoZSl7Zm9yKGxldCB0PTAscj10aGlzLmdseXBocy5sZW5ndGg7dDxyO3QrKyl0aGlzLmdseXBoc1t0XS5zY2FsZShlW3RdKX19O2NsYXNzIG57Y29uc3RydWN0b3IoZSl7bGV0e2hlYWRlcjp0PW51bGwsc2ltcGxlOnI9bnVsbCxjb21wb3NpdGVzOm49bnVsbH09ZTt0aGlzLmhlYWRlcj10LHRoaXMuc2ltcGxlPXIsdGhpcy5jb21wb3NpdGVzPW59c3RhdGljIHBhcnNlKGUsdCl7Y29uc3RbcixpXT1hLnBhcnNlKGUsdCk7aWYoZSs9cixpLm51bWJlck9mQ29udG91cnM8MCl7Y29uc3Qgcj1bXTtmb3IoOzspe2NvbnN0W24sYV09by5wYXJzZShlLHQpO2lmKGUrPW4sci5wdXNoKGEpLCEoMzImYS5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBuKHtoZWFkZXI6aSxjb21wb3NpdGVzOnJ9KX1jb25zdCBjPXMucGFyc2UoZSx0LGkubnVtYmVyT2ZDb250b3Vycyk7cmV0dXJuIG5ldyBuKHtoZWFkZXI6aSxzaW1wbGU6Y30pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCByPWU7aWYoZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KSx0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IHIgb2YgdGhpcy5jb21wb3NpdGVzKWUrPXIud3JpdGUoZSx0KTtyZXR1cm4gZS1yfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO2lmKHRoaXMuaGVhZGVyLnNjYWxlKHQsZSksdGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCByIG9mIHRoaXMuY29tcG9zaXRlcylyLnNjYWxlKHQsZSl9fWNsYXNzIGF7Y29uc3RydWN0b3IoZSl7bGV0e251bWJlck9mQ29udG91cnM6dCx4TWluOnIseU1pbjpuLHhNYXg6YSx5TWF4Oml9PWU7dGhpcy5udW1iZXJPZkNvbnRvdXJzPXQsdGhpcy54TWluPXIsdGhpcy55TWluPW4sdGhpcy54TWF4PWEsdGhpcy55TWF4PWl9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBhKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiAxMH13cml0ZShlLHQpe3JldHVybiB0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKSx0LnNldEludDE2KGUrMix0aGlzLnhNaW4pLHQuc2V0SW50MTYoZSs0LHRoaXMueU1pbiksdC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KSx0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpLDEwfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpLHRoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgaXtjb25zdHJ1Y3RvcihlKXtsZXR7ZmxhZ3M6dCx4Q29vcmRpbmF0ZXM6cix5Q29vcmRpbmF0ZXM6bn09ZTt0aGlzLnhDb29yZGluYXRlcz1yLHRoaXMueUNvb3JkaW5hdGVzPW4sdGhpcy5mbGFncz10fX1jbGFzcyBze2NvbnN0cnVjdG9yKGUpe2xldHtjb250b3Vyczp0LGluc3RydWN0aW9uczpyfT1lO3RoaXMuY29udG91cnM9dCx0aGlzLmluc3RydWN0aW9ucz1yfXN0YXRpYyBwYXJzZShlLHQscil7Y29uc3Qgbj1bXTtmb3IobGV0IGE9MDthPHI7YSsrKXtjb25zdCByPXQuZ2V0VWludDE2KGUpO2UrPTIsbi5wdXNoKHIpfWNvbnN0IGE9bltyLTFdKzEsbz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK28pO2UrPW87Y29uc3QgbD1bXTtmb3IobGV0IHI9MDtyPGE7ZSsrLHIrKyl7bGV0IG49dC5nZXRVaW50OChlKTtpZihsLnB1c2gobiksOCZuKXtjb25zdCBhPXQuZ2V0VWludDgoKytlKTtuXj04O2ZvcihsZXQgZT0wO2U8YTtlKyspbC5wdXNoKG4pO3IrPWF9fWNvbnN0IGg9W107bGV0IHU9W10sZD1bXSxmPVtdO2NvbnN0IGc9W107bGV0IHA9MCxtPTA7Zm9yKGxldCByPTA7cjxhO3IrKyl7Y29uc3QgYT1sW3JdO2lmKDImYSl7Y29uc3Qgcj10LmdldFVpbnQ4KGUrKyk7bSs9MTYmYT9yOi1yLHUucHVzaChtKX1lbHNlIDE2JmF8fChtKz10LmdldEludDE2KGUpLGUrPTIpLHUucHVzaChtKTtuW3BdPT09ciYmKHArKyxoLnB1c2godSksdT1bXSl9bT0wLHA9MDtmb3IobGV0IHI9MDtyPGE7cisrKXtjb25zdCBhPWxbcl07aWYoNCZhKXtjb25zdCByPXQuZ2V0VWludDgoZSsrKTttKz0zMiZhP3I6LXIsZC5wdXNoKG0pfWVsc2UgMzImYXx8KG0rPXQuZ2V0SW50MTYoZSksZSs9MiksZC5wdXNoKG0pO2YucHVzaCgxJmF8NjQmYSksbltwXT09PXImJih1PWhbcF0scCsrLGcucHVzaChuZXcgaSh7ZmxhZ3M6Zix4Q29vcmRpbmF0ZXM6dSx5Q29vcmRpbmF0ZXM6ZH0pKSxkPVtdLGY9W10pfXJldHVybiBuZXcgcyh7Y29udG91cnM6ZyxpbnN0cnVjdGlvbnM6Y30pfWdldFNpemUoKXtsZXQgZT0yKnRoaXMuY29udG91cnMubGVuZ3RoKzIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoLHQ9MCxyPTA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5jb250b3Vycyl7ZSs9bi5mbGFncy5sZW5ndGg7Zm9yKGxldCBhPTAsaT1uLnhDb29yZGluYXRlcy5sZW5ndGg7YTxpO2ErKyl7Y29uc3QgaT1uLnhDb29yZGluYXRlc1thXSxzPW4ueUNvb3JkaW5hdGVzW2FdO2xldCBvPU1hdGguYWJzKGktdCk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKSx0PWksbz1NYXRoLmFicyhzLXIpLG8+MjU1P2UrPTI6bz4wJiYoZSs9MSkscj1zfX1yZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IHI9ZSxuPVtdLGE9W10saT1bXTtsZXQgcz0wLG89MDtmb3IoY29uc3QgciBvZiB0aGlzLmNvbnRvdXJzKXtmb3IobGV0IGU9MCx0PXIueENvb3JkaW5hdGVzLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1yLmZsYWdzW2VdO2NvbnN0IGM9ci54Q29vcmRpbmF0ZXNbZV07bGV0IGw9Yy1zO2lmKDA9PT1sKXR8PTE2LG4ucHVzaCgwKTtlbHNle2NvbnN0IGU9TWF0aC5hYnMobCk7ZTw9MjU1Pyh0fD1sPj0wPzE4OjIsbi5wdXNoKGUpKTpuLnB1c2gobCl9cz1jO2NvbnN0IGg9ci55Q29vcmRpbmF0ZXNbZV07aWYobD1oLW8sMD09PWwpdHw9MzIsYS5wdXNoKDApO2Vsc2V7Y29uc3QgZT1NYXRoLmFicyhsKTtlPD0yNTU/KHR8PWw+PTA/MzY6NCxhLnB1c2goZSkpOmEucHVzaChsKX1vPWgsaS5wdXNoKHQpfXQuc2V0VWludDE2KGUsbi5sZW5ndGgtMSksZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCksZSs9Mix0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgmJihuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKSxlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2Zvcihjb25zdCByIG9mIGkpdC5zZXRVaW50OChlKysscik7Zm9yKGxldCByPTAsYT1uLmxlbmd0aDtyPGE7cisrKXtjb25zdCBhPW5bcl0scz1pW3JdOzImcz90LnNldFVpbnQ4KGUrKyxhKToxNiZzfHwodC5zZXRJbnQxNihlLGEpLGUrPTIpfWZvcihsZXQgcj0wLG49YS5sZW5ndGg7cjxuO3IrKyl7Y29uc3Qgbj1hW3JdLHM9aVtyXTs0JnM/dC5zZXRVaW50OChlKyssbik6MzImc3x8KHQuc2V0SW50MTYoZSxuKSxlKz0yKX1yZXR1cm4gZS1yfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5jb250b3VycylpZigwIT09ci54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgbj0wLGE9ci54Q29vcmRpbmF0ZXMubGVuZ3RoO248YTtuKyspci54Q29vcmRpbmF0ZXNbbl09TWF0aC5yb3VuZChlKyhyLnhDb29yZGluYXRlc1tuXS1lKSp0KX19Y2xhc3Mgb3tjb25zdHJ1Y3RvcihlKXtsZXR7ZmxhZ3M6dCxnbHlwaEluZGV4OnIsYXJndW1lbnQxOm4sYXJndW1lbnQyOmEsdHJhbnNmOmksaW5zdHJ1Y3Rpb25zOnN9PWU7dGhpcy5mbGFncz10LHRoaXMuZ2x5cGhJbmRleD1yLHRoaXMuYXJndW1lbnQxPW4sdGhpcy5hcmd1bWVudDI9YSx0aGlzLnRyYW5zZj1pLHRoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3Qgcj1lLG49W107bGV0IGE9dC5nZXRVaW50MTYoZSk7Y29uc3QgaT10LmdldFVpbnQxNihlKzIpO2xldCBzLGM7ZSs9NCwxJmE/KDImYT8ocz10LmdldEludDE2KGUpLGM9dC5nZXRJbnQxNihlKzIpKToocz10LmdldFVpbnQxNihlKSxjPXQuZ2V0VWludDE2KGUrMikpLGUrPTQsYV49MSk6KDImYT8ocz10LmdldEludDgoZSksYz10LmdldEludDgoZSsxKSk6KHM9dC5nZXRVaW50OChlKSxjPXQuZ2V0VWludDgoZSsxKSksZSs9MiksOCZhPyhuLnB1c2godC5nZXRVaW50MTYoZSkpLGUrPTIpOjY0JmE/KG4ucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKSxlKz00KToxMjgmYSYmKG4ucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSksZSs9OCk7bGV0IGw9bnVsbDtpZigyNTYmYSl7Y29uc3Qgcj10LmdldFVpbnQxNihlKTtlKz0yLGw9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3IpLGUrPXJ9cmV0dXJuW2UtcixuZXcgbyh7ZmxhZ3M6YSxnbHlwaEluZGV4OmksYXJndW1lbnQxOnMsYXJndW1lbnQyOmMsdHJhbnNmOm4saW5zdHJ1Y3Rpb25zOmx9KV19Z2V0U2l6ZSgpe2xldCBlPTQrMip0aGlzLnRyYW5zZi5sZW5ndGg7cmV0dXJuIDI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpLGUrPTIsMiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpLGV9d3JpdGUoZSx0KXtjb25zdCByPWU7cmV0dXJuIDImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKSx0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpLHQuc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpLGUrPTQsMSZ0aGlzLmZsYWdzPygyJnRoaXMuZmxhZ3M/KHQuc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSksdC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpKToodC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSksdC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKSksZSs9NCk6KHQuc2V0VWludDgoZSx0aGlzLmFyZ3VtZW50MSksdC5zZXRVaW50OChlKzEsdGhpcy5hcmd1bWVudDIpLGUrPTIpLDI1NiZ0aGlzLmZsYWdzJiYodC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpLGUrPTIsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoJiYobmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSksZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKSksZS1yfXNjYWxlKGUsdCl7fX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5PcGVuVHlwZUZpbGVCdWlsZGVyPXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigxMzkpLHIoMik7dmFyIG49cigxNDkpLGE9cigxNDQpO2Z1bmN0aW9uIGkoZSx0LHIpe2VbdF09cj4+OCYyNTUsZVt0KzFdPTI1NSZyfWZ1bmN0aW9uIHMoZSx0LHIpe2VbdF09cj4+MjQmMjU1LGVbdCsxXT1yPj4xNiYyNTUsZVt0KzJdPXI+PjgmMjU1LGVbdCszXT0yNTUmcn1mdW5jdGlvbiBvKGUsdCxyKXtpZihyIGluc3RhbmNlb2YgVWludDhBcnJheSllLnNldChyLHQpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiByKWZvcihsZXQgbj0wLGE9ci5sZW5ndGg7bjxhO24rKyllW3QrK109MjU1JnIuY2hhckNvZGVBdChuKTtlbHNlIGZvcihjb25zdCBuIG9mIHIpZVt0KytdPTI1NSZufWNsYXNzIGN7Y29uc3RydWN0b3IoZSl7dGhpcy5zZm50PWUsdGhpcy50YWJsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zdGF0aWMgZ2V0U2VhcmNoUGFyYW1zKGUsdCl7bGV0IHI9MSxuPTA7Zm9yKDsocl5lKT5yOylyPDw9MSxuKys7Y29uc3QgYT1yKnQ7cmV0dXJue3JhbmdlOmEsZW50cnk6bixyYW5nZVNoaWZ0OnQqZS1hfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMscj1PYmplY3Qua2V5cyh0KTtyLnNvcnQoKTtjb25zdCBsPXIubGVuZ3RoO2xldCBoLHUsZCxmLGcscD0xMisxNipsO2NvbnN0IG09W3BdO2ZvcihoPTA7aDxsO2grKylmPXRbcltoXV0scCs9KGYubGVuZ3RoKzMmLTQpPj4+MCxtLnB1c2gocCk7Y29uc3QgYj1uZXcgVWludDhBcnJheShwKTtmb3IoaD0wO2g8bDtoKyspZj10W3JbaF1dLG8oYixtW2hdLGYpOyJ0cnVlIj09PWUmJihlPSgwLGEuc3RyaW5nMzIpKDY1NTM2KSksYlswXT0yNTUmZS5jaGFyQ29kZUF0KDApLGJbMV09MjU1JmUuY2hhckNvZGVBdCgxKSxiWzJdPTI1NSZlLmNoYXJDb2RlQXQoMiksYlszXT0yNTUmZS5jaGFyQ29kZUF0KDMpLGkoYiw0LGwpO2NvbnN0IHk9Yy5nZXRTZWFyY2hQYXJhbXMobCwxNik7Zm9yKGkoYiw2LHkucmFuZ2UpLGkoYiw4LHkuZW50cnkpLGkoYiwxMCx5LnJhbmdlU2hpZnQpLHA9MTIsaD0wO2g8bDtoKyspe2c9cltoXSxiW3BdPTI1NSZnLmNoYXJDb2RlQXQoMCksYltwKzFdPTI1NSZnLmNoYXJDb2RlQXQoMSksYltwKzJdPTI1NSZnLmNoYXJDb2RlQXQoMiksYltwKzNdPTI1NSZnLmNoYXJDb2RlQXQoMyk7bGV0IGU9MDtmb3IodT1tW2hdLGQ9bVtoKzFdO3U8ZDt1Kz00KWU9ZSsoMCxuLnJlYWRVaW50MzIpKGIsdSk+Pj4wO3MoYixwKzQsZSkscyhiLHArOCxtW2hdKSxzKGIscCsxMix0W2ddLmxlbmd0aCkscCs9MTZ9cmV0dXJuIGJ9YWRkVGFibGUoZSx0KXtpZihlIGluIHRoaXMudGFibGVzKXRocm93IG5ldyBFcnJvcigiVGFibGUgIitlKyIgYWxyZWFkeSBleGlzdHMiKTt0aGlzLnRhYmxlc1tlXT10fX10Lk9wZW5UeXBlRmlsZUJ1aWxkZXI9Y30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlR5cGUxRm9udD12b2lkIDAscigxMzkpO3ZhciBuPXIoMTg1KSxhPXIoMTQ0KSxpPXIoMTg4KSxzPXIoMTQ5KSxvPXIoMTU0KSxjPXIoMTk5KTtmdW5jdGlvbiBsKGUsdCxyKXtjb25zdCBuPWUubGVuZ3RoLGE9dC5sZW5ndGgsaT1uLWE7bGV0IG89cixjPSExO2Zvcig7bzxpOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVtvK3JdPT09dFtyXTspcisrO2lmKHI+PWEpe2ZvcihvKz1yO288biYmKDAscy5pc1doaXRlU3BhY2UpKGVbb10pOylvKys7Yz0hMDticmVha31vKyt9cmV0dXJue2ZvdW5kOmMsbGVuZ3RoOm99fXQuVHlwZTFGb250PWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyKXtsZXQgbj1yLmxlbmd0aDEscz1yLmxlbmd0aDIsaD10LnBlZWtCeXRlcyg2KTtjb25zdCB1PTEyOD09PWhbMF0mJjE9PT1oWzFdO3UmJih0LnNraXAoNiksbj1oWzVdPDwyNHxoWzRdPDwxNnxoWzNdPDw4fGhbMl0pO2NvbnN0IGQ9ZnVuY3Rpb24oZSx0KXtjb25zdCByPVsxMDEsMTAxLDEyMCwxMDEsOTldLG49ZS5wb3M7bGV0IGkscyxjLGg7dHJ5e2k9ZS5nZXRCeXRlcyh0KSxzPWkubGVuZ3RofWNhdGNoKGUpe31pZihzPT09dCYmKGM9bChpLHIsdC0yKnIubGVuZ3RoKSxjLmZvdW5kJiZjLmxlbmd0aD09PXQpKXJldHVybntzdHJlYW06bmV3IG8uU3RyZWFtKGkpLGxlbmd0aDp0fTtmb3IoKDAsYS53YXJuKSgnSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKSxlLnBvcz1uO2M9bChlLnBlZWtCeXRlcygyMDQ4KSxyLDApLDAhPT1jLmxlbmd0aDspaWYoZS5wb3MrPWMubGVuZ3RoLGMuZm91bmQpe2g9ZS5wb3MtbjticmVha31yZXR1cm4gZS5wb3M9bixoP3tzdHJlYW06bmV3IG8uU3RyZWFtKGUuZ2V0Qnl0ZXMoaCkpLGxlbmd0aDpofTooKDAsYS53YXJuKSgnVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJykse3N0cmVhbTpuZXcgby5TdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9KX0odCxuKTtuZXcgYy5UeXBlMVBhcnNlcihkLnN0cmVhbSwhMSxpLlNFQUNfQU5BTFlTSVNfRU5BQkxFRCkuZXh0cmFjdEZvbnRIZWFkZXIociksdSYmKGg9dC5nZXRCeXRlcyg2KSxzPWhbNV08PDI0fGhbNF08PDE2fGhbM108PDh8aFsyXSk7Y29uc3QgZj1mdW5jdGlvbihlLHQpe2NvbnN0IHI9ZS5nZXRCeXRlcygpO2lmKDA9PT1yLmxlbmd0aCl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBvLlN0cmVhbShyKSxsZW5ndGg6ci5sZW5ndGh9fSh0KSxnPW5ldyBjLlR5cGUxUGFyc2VyKGYuc3RyZWFtLCEwLGkuU0VBQ19BTkFMWVNJU19FTkFCTEVEKS5leHRyYWN0Rm9udFByb2dyYW0ocik7Zm9yKGNvbnN0IGUgaW4gZy5wcm9wZXJ0aWVzKXJbZV09Zy5wcm9wZXJ0aWVzW2VdO2NvbnN0IHA9Zy5jaGFyc3RyaW5ncyxtPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhwKSxiPXRoaXMuZ2V0VHlwZTJTdWJycyhnLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPXAsdGhpcy5kYXRhPXRoaXMud3JhcChlLG0sdGhpcy5jaGFyc3RyaW5ncyxiLHIpLHRoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhnLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IG49MCxhPXQubGVuZ3RoO248YTtuKyspcltlLmNNYXAuY2hhckNvZGVPZihuKV09bisxO3JldHVybiByfWNvbnN0IHI9WyIubm90ZGVmIl07bGV0IG4sYTtmb3IoYT0wO2E8dC5sZW5ndGg7YSsrKXIucHVzaCh0W2FdLmdseXBoTmFtZSk7Y29uc3Qgcz1lLmJ1aWx0SW5FbmNvZGluZztpZihzKXtuPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgaW4gcylhPXIuaW5kZXhPZihzW2VdKSxhPj0wJiYobltlXT1hKX1yZXR1cm4oMCxpLnR5cGUxRm9udEdseXBoTWFwcGluZykoZSxuLHIpfWhhc0dseXBoSWQoZSl7cmV0dXJuIShlPDB8fGU+PXRoaXMubnVtR2x5cGhzKSYmKDA9PT1lfHx0aGlzLmNoYXJzdHJpbmdzW2UtMV0uY2hhcnN0cmluZy5sZW5ndGg+MCl9Z2V0U2VhY3MoZSl7Y29uc3QgdD1bXTtmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2NvbnN0IG49ZVtyXTtuLnNlYWMmJih0W3IrMV09bi5zZWFjKX1yZXR1cm4gdH1nZXRUeXBlMkNoYXJzdHJpbmdzKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IHIgb2YgZSl0LnB1c2goci5jaGFyc3RyaW5nKTtyZXR1cm4gdH1nZXRUeXBlMlN1YnJzKGUpe2xldCB0PTA7Y29uc3Qgcj1lLmxlbmd0aDt0PXI8MTEzMz8xMDc6cjwzMzc2OT8xMTMxOjMyNzY4O2NvbnN0IG49W107bGV0IGE7Zm9yKGE9MDthPHQ7YSsrKW4ucHVzaChbMTFdKTtmb3IoYT0wO2E8cjthKyspbi5wdXNoKGVbYV0pO3JldHVybiBufXdyYXAoZSx0LHIsYSxpKXtjb25zdCBzPW5ldyBuLkNGRjtzLmhlYWRlcj1uZXcgbi5DRkZIZWFkZXIoMSwwLDQsNCkscy5uYW1lcz1bZV07Y29uc3Qgbz1uZXcgbi5DRkZUb3BEaWN0O28uc2V0QnlOYW1lKCJ2ZXJzaW9uIiwzOTEpLG8uc2V0QnlOYW1lKCJOb3RpY2UiLDM5Miksby5zZXRCeU5hbWUoIkZ1bGxOYW1lIiwzOTMpLG8uc2V0QnlOYW1lKCJGYW1pbHlOYW1lIiwzOTQpLG8uc2V0QnlOYW1lKCJXZWlnaHQiLDM5NSksby5zZXRCeU5hbWUoIkVuY29kaW5nIixudWxsKSxvLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsaS5mb250TWF0cml4KSxvLnNldEJ5TmFtZSgiRm9udEJCb3giLGkuYmJveCksby5zZXRCeU5hbWUoImNoYXJzZXQiLG51bGwpLG8uc2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIsbnVsbCksby5zZXRCeU5hbWUoIlByaXZhdGUiLG51bGwpLHMudG9wRGljdD1vO2NvbnN0IGM9bmV3IG4uQ0ZGU3RyaW5ncztjLmFkZCgiVmVyc2lvbiAwLjExIiksYy5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKSxjLmFkZChlKSxjLmFkZChlKSxjLmFkZCgiTWVkaXVtIikscy5zdHJpbmdzPWMscy5nbG9iYWxTdWJySW5kZXg9bmV3IG4uQ0ZGSW5kZXg7Y29uc3QgbD10Lmxlbmd0aCxoPVsiLm5vdGRlZiJdO2xldCB1LGQ7Zm9yKHU9MDt1PGw7dSsrKXtjb25zdCBlPXJbdV0uZ2x5cGhOYW1lOy0xPT09bi5DRkZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihlKSYmYy5hZGQoZSksaC5wdXNoKGUpfXMuY2hhcnNldD1uZXcgbi5DRkZDaGFyc2V0KCExLDAsaCk7Y29uc3QgZj1uZXcgbi5DRkZJbmRleDtmb3IoZi5hZGQoWzEzOSwxNF0pLHU9MDt1PGw7dSsrKWYuYWRkKHRbdV0pO3MuY2hhclN0cmluZ3M9Zjtjb25zdCBnPW5ldyBuLkNGRlByaXZhdGVEaWN0O2cuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgcD1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2Zvcih1PTAsZD1wLmxlbmd0aDt1PGQ7dSsrKXtjb25zdCBlPXBbdV07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2cuc2V0QnlOYW1lKGUsdCl9cy50b3BEaWN0LnByaXZhdGVEaWN0PWc7Y29uc3QgbT1uZXcgbi5DRkZJbmRleDtmb3IodT0wLGQ9YS5sZW5ndGg7dTxkO3UrKyltLmFkZChhW3VdKTtyZXR1cm4gZy5zdWJyc0luZGV4PW0sbmV3IG4uQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5UeXBlMVBhcnNlcj12b2lkIDAscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDE1OSk7dmFyIG49cigxODcpLGE9cigxNDkpLGk9cigxNTQpLHM9cigxNDQpO2NvbnN0IG89WzRdLGM9WzVdLGw9WzZdLGg9WzddLHU9WzhdLGQ9WzEyLDM1XSxmPVsxNF0sZz1bMjFdLHA9WzIyXSxtPVszMF0sYj1bMzFdO2NsYXNzIHl7Y29uc3RydWN0b3IoKXt0aGlzLndpZHRoPTAsdGhpcy5sc2I9MCx0aGlzLmZsZXhpbmc9ITEsdGhpcy5vdXRwdXQ9W10sdGhpcy5zdGFjaz1bXX1jb252ZXJ0KGUsdCxyKXtjb25zdCBuPWUubGVuZ3RoO2xldCBhLGkseSx3PSExO2ZvcihsZXQgdj0wO3Y8bjt2Kyspe2xldCBuPWVbdl07aWYobjwzMil7c3dpdGNoKDEyPT09biYmKG49KG48PDgpK2VbKyt2XSksbil7Y2FzZSAxOmNhc2UgMzpjYXNlIDk6Y2FzZSAzMDcyOmNhc2UgMzA3MzpjYXNlIDMwNzQ6Y2FzZSAzMTA1OnRoaXMuc3RhY2s9W107YnJlYWs7Y2FzZSA0OmlmKHRoaXMuZmxleGluZyl7aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7dz0hMDticmVha31jb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKDAsZSk7YnJlYWt9dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsbyk7YnJlYWs7Y2FzZSA1Onc9dGhpcy5leGVjdXRlQ29tbWFuZCgyLGMpO2JyZWFrO2Nhc2UgNjp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxsKTticmVhaztjYXNlIDc6dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsaCk7YnJlYWs7Y2FzZSA4Onc9dGhpcy5leGVjdXRlQ29tbWFuZCg2LHUpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7dz0hMDticmVha31pZih5PXRoaXMuc3RhY2sucG9wKCksIXRbeV0pe3c9ITA7YnJlYWt9dz10aGlzLmNvbnZlcnQodFt5XSx0LHIpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIHc7Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXt3PSEwO2JyZWFrfWE9dGhpcy5zdGFjay5wb3AoKSxpPXRoaXMuc3RhY2sucG9wKCksdGhpcy5sc2I9aSx0aGlzLndpZHRoPWEsdGhpcy5zdGFjay5wdXNoKGEsaSksdz10aGlzLmV4ZWN1dGVDb21tYW5kKDIscCk7YnJlYWs7Y2FzZSAxNDp0aGlzLm91dHB1dC5wdXNoKGZbMF0pO2JyZWFrO2Nhc2UgMjE6aWYodGhpcy5mbGV4aW5nKWJyZWFrO3c9dGhpcy5leGVjdXRlQ29tbWFuZCgyLGcpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9dz10aGlzLmV4ZWN1dGVDb21tYW5kKDEscCk7YnJlYWs7Y2FzZSAzMDp3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxtKTticmVhaztjYXNlIDMxOnc9dGhpcy5leGVjdXRlQ29tbWFuZCg0LGIpO2JyZWFrO2Nhc2UgMzA3ODppZihyKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KSx0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWUsdz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsZil9ZWxzZSB3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoNCxmKTticmVhaztjYXNlIDMwNzk6aWYodGhpcy5zdGFjay5sZW5ndGg8NCl7dz0hMDticmVha310aGlzLnN0YWNrLnBvcCgpLGE9dGhpcy5zdGFjay5wb3AoKTtjb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7aT10aGlzLnN0YWNrLnBvcCgpLHRoaXMubHNiPWksdGhpcy53aWR0aD1hLHRoaXMuc3RhY2sucHVzaChhLGksZSksdz10aGlzLmV4ZWN1dGVDb21tYW5kKDMsZyk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe3c9ITA7YnJlYWt9Y29uc3Qgdj10aGlzLnN0YWNrLnBvcCgpLHg9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goeC92KTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7dz0hMDticmVha315PXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgUz10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT15JiYzPT09Uyl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKSx3PXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsZCwhMCksdGhpcy5mbGV4aW5nPSExLHRoaXMuc3RhY2sucHVzaChlWzE1XSxlWzE2XSl9ZWxzZSAxPT09eSYmMD09PVMmJih0aGlzLmZsZXhpbmc9ITApO2JyZWFrO2Nhc2UgMzA4OTpicmVhaztkZWZhdWx0OigwLHMud2FybikoJ1Vua25vd24gdHlwZSAxIGNoYXJzdHJpbmcgY29tbWFuZCBvZiAiJytuKyciJyl9aWYodylicmVha31lbHNlIG48PTI0Nj9uLT0xMzk6bj1uPD0yNTA/MjU2KihuLTI0NykrZVsrK3ZdKzEwODpuPD0yNTQ/LTI1Nioobi0yNTEpLWVbKyt2XS0xMDg6KDI1NSZlWysrdl0pPDwyNHwoMjU1JmVbKyt2XSk8PDE2fCgyNTUmZVsrK3ZdKTw8OHwoMjU1JmVbKyt2XSk8PDAsdGhpcy5zdGFjay5wdXNoKG4pfXJldHVybiB3fWV4ZWN1dGVDb21tYW5kKGUsdCxyKXtjb25zdCBuPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+bilyZXR1cm4hMDtjb25zdCBhPW4tZTtmb3IobGV0IGU9YTtlPG47ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO051bWJlci5pc0ludGVnZXIodCk/dGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk6KHQ9NjU1MzYqdHwwLHRoaXMub3V0cHV0LnB1c2goMjU1LHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQpKX1yZXR1cm4gdGhpcy5vdXRwdXQucHVzaCguLi50KSxyP3RoaXMuc3RhY2suc3BsaWNlKGEsZSk6dGhpcy5zdGFjay5sZW5ndGg9MCwhMX19ZnVuY3Rpb24gdyhlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gdihlLHQscil7aWYocj49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBuLGEsaT0wfHQ7Zm9yKG49MDtuPHI7bisrKWk9NTI4NDUqKGVbbl0raSkrMjI3MTkmNjU1MzU7Y29uc3Qgcz1lLmxlbmd0aC1yLG89bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKG49cixhPTA7YTxzO24rKyxhKyspe2NvbnN0IHQ9ZVtuXTtvW2FdPXReaT4+OCxpPTUyODQ1Kih0K2kpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIHgoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfXQuVHlwZTFQYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLHI9ISgodyh0WzBdKXx8KDAsYS5pc1doaXRlU3BhY2UpKHRbMF0pKSYmdyh0WzFdKSYmdyh0WzJdKSYmdyh0WzNdKSYmdyh0WzRdKSYmdyh0WzVdKSYmdyh0WzZdKSYmdyh0WzddKSk7ZT1uZXcgaS5TdHJlYW0ocj92KHQsNTU2NjUsNCk6ZnVuY3Rpb24oZSx0LHIpe2xldCBuPTU1NjY1O2NvbnN0IGE9ZS5sZW5ndGgsaT1uZXcgVWludDhBcnJheShhPj4+MSk7bGV0IHMsbztmb3Iocz0wLG89MDtzPGE7cysrKXtjb25zdCB0PWVbc107aWYoIXcodCkpY29udGludWU7bGV0IHI7Zm9yKHMrKztzPGEmJiF3KHI9ZVtzXSk7KXMrKztpZihzPGEpe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LHIpLDE2KTtpW28rK109ZV5uPj44LG49NTI4NDUqKGUrbikrMjI3MTkmNjU1MzV9fXJldHVybiBpLnNsaWNlKDQsbyl9KHQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFyLHRoaXMuc3RyZWFtPWUsdGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnNraXAoLTIpLHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoISgwLGEuaXNXaGl0ZVNwYWNlKSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZih4KHQpKXJldHVybiB0aGlzLm5leHRDaGFyKCksU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtsZXQgcj0iIjtkb3tyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpLHQ9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiEoMCxhLmlzV2hpdGVTcGFjZSkodCkmJiF4KHQpKTtyZXR1cm4gcn1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTp2KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxyPVtdLG49W10sYT1PYmplY3QuY3JlYXRlKG51bGwpO2EubGVuSVY9NDtjb25zdCBpPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTphfX07bGV0IHMsbyxjLGw7Zm9yKDtudWxsIT09KHM9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09cylzd2l0Y2gocz10aGlzLmdldFRva2VuKCkscyl7Y2FzZSJDaGFyU3RyaW5ncyI6Zm9yKHRoaXMuZ2V0VG9rZW4oKSx0aGlzLmdldFRva2VuKCksdGhpcy5nZXRUb2tlbigpLHRoaXMuZ2V0VG9rZW4oKTtzPXRoaXMuZ2V0VG9rZW4oKSxudWxsIT09cyYmImVuZCIhPT1zOyl7aWYoIi8iIT09cyljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpLHRoaXMuZ2V0VG9rZW4oKSxjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApLGw9aS5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IHI9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCkscz10aGlzLmdldFRva2VuKCksIm5vYWNjZXNzIj09PXM/dGhpcy5nZXRUb2tlbigpOiIvIj09PXMmJnRoaXMucHJldkNoYXIoKSxuLnB1c2goe2dseXBoOmUsZW5jb2RlZDpyfSl9YnJlYWs7Y2FzZSJTdWJycyI6Zm9yKHRoaXMucmVhZEludCgpLHRoaXMuZ2V0VG9rZW4oKTsiZHVwIj09PXRoaXMuZ2V0VG9rZW4oKTspe2NvbnN0IGU9dGhpcy5yZWFkSW50KCk7bz10aGlzLnJlYWRJbnQoKSx0aGlzLmdldFRva2VuKCksYz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKSxsPWkucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBuPXRoaXMucmVhZENoYXJTdHJpbmdzKGMsbCk7dGhpcy5uZXh0Q2hhcigpLHM9dGhpcy5nZXRUb2tlbigpLCJub2FjY2VzcyI9PT1zJiZ0aGlzLmdldFRva2VuKCkscltlXT1ufWJyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOmNvbnN0IGU9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmxlbmd0aD4wJiZlLmxlbmd0aDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOmkucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKXx8LjA2O2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjppLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkQm9vbGVhbigpfWZvcihjb25zdHtlbmNvZGVkOnQsZ2x5cGg6YX1vZiBuKXtjb25zdCBuPW5ldyB5LHM9bi5jb252ZXJ0KHQscix0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO2xldCBvPW4ub3V0cHV0O3MmJihvPVsxNF0pO2NvbnN0IGM9e2dseXBoTmFtZTphLGNoYXJzdHJpbmc6byx3aWR0aDpuLndpZHRoLGxzYjpuLmxzYixzZWFjOm4uc2VhY307aWYoIi5ub3RkZWYiPT09YT9pLmNoYXJzdHJpbmdzLnVuc2hpZnQoYyk6aS5jaGFyc3RyaW5ncy5wdXNoKGMpLGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2YoYSk7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09bi53aWR0aCl9fXJldHVybiBpfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpc3dpdGNoKHQ9dGhpcy5nZXRUb2tlbigpLHQpe2Nhc2UiRm9udE1hdHJpeCI6Y29uc3Qgcj10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuZm9udE1hdHJpeD1yO2JyZWFrO2Nhc2UiRW5jb2RpbmciOmNvbnN0IGE9dGhpcy5nZXRUb2tlbigpO2xldCBpO2lmKC9eXGQrJC8udGVzdChhKSl7aT1bXTtjb25zdCBlPTB8cGFyc2VJbnQoYSwxMCk7dGhpcy5nZXRUb2tlbigpO2ZvcihsZXQgcj0wO3I8ZTtyKyspe2Zvcih0PXRoaXMuZ2V0VG9rZW4oKTsiZHVwIiE9PXQmJiJkZWYiIT09dDspaWYodD10aGlzLmdldFRva2VuKCksbnVsbD09PXQpcmV0dXJuO2lmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCByPXRoaXMuZ2V0VG9rZW4oKTtpW2VdPXIsdGhpcy5nZXRUb2tlbigpfX1lbHNlIGk9KDAsbi5nZXRFbmNvZGluZykoYSk7ZS5idWlsdEluRW5jb2Rpbmc9aTticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCBzPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoc1szXSxzWzFdKSxlLmRlc2NlbnQ9TWF0aC5taW4oc1sxXSxzWzNdKSxlLmFzY2VudFNjYWxlZD0hMH19fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlBhdHRlcm49dm9pZCAwLHQuZ2V0VGlsaW5nUGF0dGVybklSPWZ1bmN0aW9uKGUsdCxyKXtjb25zdCBhPXQuZ2V0QXJyYXkoIk1hdHJpeCIpLGk9bi5VdGlsLm5vcm1hbGl6ZVJlY3QodC5nZXRBcnJheSgiQkJveCIpKSxzPXQuZ2V0KCJYU3RlcCIpLG89dC5nZXQoIllTdGVwIiksYz10LmdldCgiUGFpbnRUeXBlIiksbD10LmdldCgiVGlsaW5nVHlwZSIpO2lmKGlbMl0taVswXT09MHx8aVszXS1pWzFdPT0wKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheTogWyIuY29uY2F0KGksIl0uIikpO3JldHVyblsiVGlsaW5nUGF0dGVybiIscixlLGEsaSxzLG8sYyxsXX0scig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpLHIoMTM5KSxyKDE1OSk7dmFyIG49cigxNDQpLGE9cigxNTEpLHM9cigxNjIpLG89cigxNDkpO3QuUGF0dGVybj1jbGFzc3tjb25zdHJ1Y3RvcigpeygwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBwYXJzZVNoYWRpbmcoZSx0LHIsaSxzKXtjb25zdCBjPWUgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW0/ZS5kaWN0OmUsaD1jLmdldCgiU2hhZGluZ1R5cGUiKTt0cnl7c3dpdGNoKGgpe2Nhc2UgMjpjYXNlIDM6cmV0dXJuIG5ldyBsKGMsdCxyLGkscyk7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OnJldHVybiBuZXcgZChlLHQscixpLHMpO2RlZmF1bHQ6dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK2gpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3JldHVybigwLG4ud2FybikoZSksbmV3IGZ9fX07Y2xhc3MgY3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1jJiYoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNoYWRpbmcuIil9Z2V0SVIoKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRJUmAgY2FsbGVkLiIpfX1pKGMsIlNNQUxMX05VTUJFUiIsMWUtNik7Y2xhc3MgbCBleHRlbmRzIGN7Y29uc3RydWN0b3IoZSx0LHIsYSxpKXtzdXBlcigpLHRoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpLHRoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7Y29uc3Qgbz1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6cixwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSksbD1lLmdldEFycmF5KCJCQm94Iik7dGhpcy5iYm94PUFycmF5LmlzQXJyYXkobCkmJjQ9PT1sLmxlbmd0aD9uLlV0aWwubm9ybWFsaXplUmVjdChsKTpudWxsO2xldCBoPTAsdT0xO2lmKGUuaGFzKCJEb21haW4iKSl7Y29uc3QgdD1lLmdldEFycmF5KCJEb21haW4iKTtoPXRbMF0sdT10WzFdfWxldCBkPSExLGY9ITE7aWYoZS5oYXMoIkV4dGVuZCIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkV4dGVuZCIpO2Q9dFswXSxmPXRbMV19aWYoISgzIT09dGhpcy5zaGFkaW5nVHlwZXx8ZCYmZikpe2NvbnN0W2UsdCxyLGEsaSxzXT10aGlzLmNvb3Jkc0FycixvPU1hdGguaHlwb3QoZS1hLHQtaSk7cjw9cytvJiZzPD1yK28mJigwLG4ud2FybikoIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PWQsdGhpcy5leHRlbmRFbmQ9Zjtjb25zdCBnPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLHA9YS5jcmVhdGVGcm9tQXJyYXkoZyksbT0odS1oKS84NDAsYj10aGlzLmNvbG9yU3RvcHM9W107aWYoaD49dXx8bTw9MClyZXR1cm4gdm9pZCgwLG4uaW5mbykoIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtjb25zdCB5PW5ldyBGbG9hdDMyQXJyYXkoby5udW1Db21wcyksdz1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCB2LHg9MDt3WzBdPWgscCh3LDAseSwwKTtsZXQgUz1vLmdldFJnYih5LDApO2NvbnN0IEE9bi5VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSk7Yi5wdXNoKFswLEFdKTtsZXQgaz0xO3dbMF09aCttLHAodywwLHksMCk7bGV0IEM9by5nZXRSZ2IoeSwwKSxPPUNbMF0tU1swXSsxLEY9Q1sxXS1TWzFdKzEsST1DWzJdLVNbMl0rMSxUPUNbMF0tU1swXS0xLE09Q1sxXS1TWzFdLTEsRT1DWzJdLVNbMl0tMTtmb3IobGV0IGU9MjtlPDg0MDtlKyspe3dbMF09aCtlKm0scCh3LDAseSwwKSx2PW8uZ2V0UmdiKHksMCk7Y29uc3QgdD1lLXg7aWYoTz1NYXRoLm1pbihPLCh2WzBdLVNbMF0rMSkvdCksRj1NYXRoLm1pbihGLCh2WzFdLVNbMV0rMSkvdCksST1NYXRoLm1pbihJLCh2WzJdLVNbMl0rMSkvdCksVD1NYXRoLm1heChULCh2WzBdLVNbMF0tMSkvdCksTT1NYXRoLm1heChNLCh2WzFdLVNbMV0tMSkvdCksRT1NYXRoLm1heChFLCh2WzJdLVNbMl0tMSkvdCksIShUPD1PJiZNPD1GJiZFPD1JKSl7Y29uc3QgZT1uLlV0aWwubWFrZUhleENvbG9yKENbMF0sQ1sxXSxDWzJdKTtiLnB1c2goW2svODQwLGVdKSxPPXZbMF0tQ1swXSsxLEY9dlsxXS1DWzFdKzEsST12WzJdLUNbMl0rMSxUPXZbMF0tQ1swXS0xLE09dlsxXS1DWzFdLTEsRT12WzJdLUNbMl0tMSx4PWssUz1DfWs9ZSxDPXZ9Y29uc3QgUD1uLlV0aWwubWFrZUhleENvbG9yKENbMF0sQ1sxXSxDWzJdKTtiLnB1c2goWzEsUF0pO2xldCBSPSJ0cmFuc3BhcmVudCI7ZS5oYXMoIkJhY2tncm91bmQiKSYmKHY9by5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKSxSPW4uVXRpbC5tYWtlSGV4Q29sb3IodlswXSx2WzFdLHZbMl0pKSxkfHwoYi51bnNoaWZ0KFswLFJdKSxiWzFdWzBdKz1jLlNNQUxMX05VTUJFUiksZnx8KGIuYXQoLTEpWzBdLT1jLlNNQUxMX05VTUJFUixiLnB1c2goWzEsUl0pKSx0aGlzLmNvbG9yU3RvcHM9Yn1nZXRJUigpe2NvbnN0IGU9dGhpcy5jb29yZHNBcnIsdD10aGlzLnNoYWRpbmdUeXBlO2xldCByLGEsaSxzLG87cmV0dXJuIDI9PT10PyhhPVtlWzBdLGVbMV1dLGk9W2VbMl0sZVszXV0scz1udWxsLG89bnVsbCxyPSJheGlhbCIpOjM9PT10PyhhPVtlWzBdLGVbMV1dLGk9W2VbM10sZVs0XV0scz1lWzJdLG89ZVs1XSxyPSJyYWRpYWwiKTooMCxuLnVucmVhY2hhYmxlKSgiZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICIuY29uY2F0KHQpKSxbIlJhZGlhbEF4aWFsIixyLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMsYSxpLHMsb119fWNsYXNzIGh7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lLHRoaXMuY29udGV4dD10LHRoaXMuYnVmZmVyPTAsdGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCByPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KHIpO2NvbnN0IG49dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShuKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7cmV0dXJuIShlPDB8fCh0aGlzLmJ1ZmZlcj1lLHRoaXMuYnVmZmVyTGVuZ3RoPTgsMCkpfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYnVmZmVyLHI9dGhpcy5idWZmZXJMZW5ndGg7aWYoMzI9PT1lKXtpZigwPT09cilyZXR1cm4odGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCkpPj4+MDt0PXQ8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTtyZXR1cm4gdGhpcy5idWZmZXI9ZSYoMTw8ciktMSwodDw8OC1yfCgyNTUmZSk+PnIpPj4+MH1pZig4PT09ZSYmMD09PXIpcmV0dXJuIHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtmb3IoO3I8ZTspdD10PDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKSxyKz04O3JldHVybiByLT1lLHRoaXMuYnVmZmVyTGVuZ3RoPXIsdGhpcy5idWZmZXI9dCYoMTw8ciktMSx0Pj5yfWFsaWduKCl7dGhpcy5idWZmZXI9MCx0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0IGU9dGhpcy5jb250ZXh0LmJpdHNQZXJDb29yZGluYXRlLHQ9dGhpcy5yZWFkQml0cyhlKSxyPXRoaXMucmVhZEJpdHMoZSksbj10aGlzLmNvbnRleHQuZGVjb2RlLGE9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bdCphKihuWzFdLW5bMF0pK25bMF0sciphKihuWzNdLW5bMl0pK25bMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3QgZT10aGlzLmNvbnRleHQubnVtQ29tcHMsdD10aGlzLmNvbnRleHQuYml0c1BlckNvbXBvbmVudCxyPXQ8MzI/MS8oKDE8PHQpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTAsbj10aGlzLmNvbnRleHQuZGVjb2RlLGE9dGhpcy50bXBDb21wc0J1Zjtmb3IobGV0IGk9MCxzPTQ7aTxlO2krKyxzKz0yKXtjb25zdCBlPXRoaXMucmVhZEJpdHModCk7YVtpXT1lKnIqKG5bcysxXS1uW3NdKStuW3NdfWNvbnN0IGk9dGhpcy50bXBDc0NvbXBzQnVmO3JldHVybiB0aGlzLmNvbnRleHQuY29sb3JGbiYmdGhpcy5jb250ZXh0LmNvbG9yRm4oYSwwLGksMCksdGhpcy5jb250ZXh0LmNvbG9yU3BhY2UuZ2V0UmdiKGksMCl9fWNvbnN0IHU9ZnVuY3Rpb24oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfHwoZVt0XT1mdW5jdGlvbihlKXtjb25zdCB0PVtdO2ZvcihsZXQgcj0wO3I8PWU7cisrKXtjb25zdCBuPXIvZSxhPTEtbjt0LnB1c2gobmV3IEZsb2F0MzJBcnJheShbYSphKmEsMypuKmEqYSwzKm4qbiphLG4qbipuXSkpfXJldHVybiB0fSh0KSl9fSgpO2NsYXNzIGQgZXh0ZW5kcyBje2NvbnN0cnVjdG9yKGUsdCxyLGksbyl7aWYoc3VwZXIoKSwhKGUgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW0pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJNZXNoIGRhdGEgaXMgbm90IGEgc3RyZWFtIik7Y29uc3QgYz1lLmRpY3Q7dGhpcy5zaGFkaW5nVHlwZT1jLmdldCgiU2hhZGluZ1R5cGUiKTtjb25zdCBsPWMuZ2V0QXJyYXkoIkJCb3giKTt0aGlzLmJib3g9QXJyYXkuaXNBcnJheShsKSYmND09PWwubGVuZ3RoP24uVXRpbC5ub3JtYWxpemVSZWN0KGwpOm51bGw7Y29uc3QgdT1zLkNvbG9yU3BhY2UucGFyc2Uoe2NzOmMuZ2V0UmF3KCJDUyIpfHxjLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6cixwZGZGdW5jdGlvbkZhY3Rvcnk6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpvfSk7dGhpcy5iYWNrZ3JvdW5kPWMuaGFzKCJCYWNrZ3JvdW5kIik/dS5nZXRSZ2IoYy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGQ9Yy5nZXRSYXcoIkZ1bmN0aW9uIiksZj1kP2kuY3JlYXRlRnJvbUFycmF5KGQpOm51bGw7dGhpcy5jb29yZHM9W10sdGhpcy5jb2xvcnM9W10sdGhpcy5maWd1cmVzPVtdO2NvbnN0IGc9e2JpdHNQZXJDb29yZGluYXRlOmMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6Yy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpjLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6Yy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpmLGNvbG9yU3BhY2U6dSxudW1Db21wczpmPzE6dS5udW1Db21wc30scD1uZXcgaChlLGcpO2xldCBtPSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIDQ6dGhpcy5fZGVjb2RlVHlwZTRTaGFkaW5nKHApO2JyZWFrO2Nhc2UgNTpjb25zdCBlPTB8Yy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKHAsZSk7YnJlYWs7Y2FzZSA2OnRoaXMuX2RlY29kZVR5cGU2U2hhZGluZyhwKSxtPSEwO2JyZWFrO2Nhc2UgNzp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcocCksbT0hMDticmVhaztkZWZhdWx0OigwLG4udW5yZWFjaGFibGUpKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYobSl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCksdGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxhPVtdLGk9W107bGV0IHM9MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG89ZS5yZWFkRmxhZygpLGM9ZS5yZWFkQ29vcmRpbmF0ZSgpLGw9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1zKXtpZighKDA8PW8mJm88PTIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobyl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6aS5wdXNoKGkuYXQoLTIpLGkuYXQoLTEpKSxzPTE7YnJlYWs7Y2FzZSAyOmkucHVzaChpLmF0KC0zKSxpLmF0KC0xKSkscz0xfWEucHVzaChvKX1pLnB1c2godC5sZW5ndGgpLHQucHVzaChjKSxyLnB1c2gobCkscy0tLGUuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IHI9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxhPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksaT1lLnJlYWRDb21wb25lbnRzKCk7YS5wdXNoKHIubGVuZ3RoKSxyLnB1c2godCksbi5wdXNoKGkpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGEpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNiBmbGFnIik7Y29uc3Qgbz10Lmxlbmd0aDtmb3IobGV0IHI9MCxuPTAhPT1zPzg6MTI7cjxuO3IrKyl0LnB1c2goZS5yZWFkQ29vcmRpbmF0ZSgpKTtjb25zdCBjPXIubGVuZ3RoO2ZvcihsZXQgdD0wLG49MCE9PXM/Mjo0O3Q8bjt0Kyspci5wdXNoKGUucmVhZENvbXBvbmVudHMoKSk7bGV0IGwsaCx1LGQ7c3dpdGNoKHMpe2Nhc2UgMDphWzEyXT1vKzMsYVsxM109bys0LGFbMTRdPW8rNSxhWzE1XT1vKzYsYVs4XT1vKzIsYVsxMV09bys3LGFbNF09bysxLGFbN109bys4LGFbMF09byxhWzFdPW8rMTEsYVsyXT1vKzEwLGFbM109bys5LGlbMl09YysxLGlbM109YysyLGlbMF09YyxpWzFdPWMrMzticmVhaztjYXNlIDE6bD1hWzEyXSxoPWFbMTNdLHU9YVsxNF0sZD1hWzE1XSxhWzEyXT1kLGFbMTNdPW8rMCxhWzE0XT1vKzEsYVsxNV09bysyLGFbOF09dSxhWzExXT1vKzMsYVs0XT1oLGFbN109bys0LGFbMF09bCxhWzFdPW8rNyxhWzJdPW8rNixhWzNdPW8rNSxsPWlbMl0saD1pWzNdLGlbMl09aCxpWzNdPWMsaVswXT1sLGlbMV09YysxO2JyZWFrO2Nhc2UgMjpsPWFbMTVdLGg9YVsxMV0sYVsxMl09YVszXSxhWzEzXT1vKzAsYVsxNF09bysxLGFbMTVdPW8rMixhWzhdPWFbN10sYVsxMV09byszLGFbNF09aCxhWzddPW8rNCxhWzBdPWwsYVsxXT1vKzcsYVsyXT1vKzYsYVszXT1vKzUsbD1pWzNdLGlbMl09aVsxXSxpWzNdPWMsaVswXT1sLGlbMV09YysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdLGFbMTNdPW8rMCxhWzE0XT1vKzEsYVsxNV09bysyLGFbOF09YVsxXSxhWzExXT1vKzMsYVs0XT1hWzJdLGFbN109bys0LGFbMF09YVszXSxhWzFdPW8rNyxhWzJdPW8rNixhWzNdPW8rNSxpWzJdPWlbMF0saVszXT1jLGlbMF09aVsxXSxpWzFdPWMrMX1hWzVdPXQubGVuZ3RoLHQucHVzaChbKC00KnRbYVswXV1bMF0tdFthWzE1XV1bMF0rNioodFthWzRdXVswXSt0W2FbMV1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMTNdXVswXSt0W2FbN11dWzBdKSkvOSwoLTQqdFthWzBdXVsxXS10W2FbMTVdXVsxXSs2Kih0W2FbNF1dWzFdK3RbYVsxXV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsxM11dWzFdK3RbYVs3XV1bMV0pKS85XSksYVs2XT10Lmxlbmd0aCx0LnB1c2goWygtNCp0W2FbM11dWzBdLXRbYVsxMl1dWzBdKzYqKHRbYVsyXV1bMF0rdFthWzddXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzRdXVswXSt0W2FbMTRdXVswXSkpLzksKC00KnRbYVszXV1bMV0tdFthWzEyXV1bMV0rNioodFthWzJdXVsxXSt0W2FbN11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbNF1dWzFdK3RbYVsxNF1dWzFdKSkvOV0pLGFbOV09dC5sZW5ndGgsdC5wdXNoKFsoLTQqdFthWzEyXV1bMF0tdFthWzNdXVswXSs2Kih0W2FbOF1dWzBdK3RbYVsxM11dWzBdKS0yKih0W2FbMF1dWzBdK3RbYVsxNV1dWzBdKSszKih0W2FbMTFdXVswXSt0W2FbMV1dWzBdKSkvOSwoLTQqdFthWzEyXV1bMV0tdFthWzNdXVsxXSs2Kih0W2FbOF1dWzFdK3RbYVsxM11dWzFdKS0yKih0W2FbMF1dWzFdK3RbYVsxNV1dWzFdKSszKih0W2FbMTFdXVsxXSt0W2FbMV1dWzFdKSkvOV0pLGFbMTBdPXQubGVuZ3RoLHQucHVzaChbKC00KnRbYVsxNV1dWzBdLXRbYVswXV1bMF0rNioodFthWzExXV1bMF0rdFthWzE0XV1bMF0pLTIqKHRbYVsxMl1dWzBdK3RbYVszXV1bMF0pKzMqKHRbYVsyXV1bMF0rdFthWzhdXVswXSkpLzksKC00KnRbYVsxNV1dWzFdLXRbYVswXV1bMV0rNioodFthWzExXV1bMV0rdFthWzE0XV1bMV0pLTIqKHRbYVsxMl1dWzFdK3RbYVszXV1bMV0pKzMqKHRbYVsyXV1bMV0rdFthWzhdXVsxXSkpLzldKSx0aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkoaSl9KX19X2RlY29kZVR5cGU3U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLHI9dGhpcy5jb2xvcnMsYT1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpO2lmKCEoMDw9cyYmczw9MykpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IG89dC5sZW5ndGg7Zm9yKGxldCByPTAsbj0wIT09cz8xMjoxNjtyPG47cisrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IGM9ci5sZW5ndGg7Zm9yKGxldCB0PTAsbj0wIT09cz8yOjQ7dDxuO3QrKylyLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgbCxoLHUsZDtzd2l0Y2gocyl7Y2FzZSAwOmFbMTJdPW8rMyxhWzEzXT1vKzQsYVsxNF09bys1LGFbMTVdPW8rNixhWzhdPW8rMixhWzldPW8rMTMsYVsxMF09bysxNCxhWzExXT1vKzcsYVs0XT1vKzEsYVs1XT1vKzEyLGFbNl09bysxNSxhWzddPW8rOCxhWzBdPW8sYVsxXT1vKzExLGFbMl09bysxMCxhWzNdPW8rOSxpWzJdPWMrMSxpWzNdPWMrMixpWzBdPWMsaVsxXT1jKzM7YnJlYWs7Y2FzZSAxOmw9YVsxMl0saD1hWzEzXSx1PWFbMTRdLGQ9YVsxNV0sYVsxMl09ZCxhWzEzXT1vKzAsYVsxNF09bysxLGFbMTVdPW8rMixhWzhdPXUsYVs5XT1vKzksYVsxMF09bysxMCxhWzExXT1vKzMsYVs0XT1oLGFbNV09bys4LGFbNl09bysxMSxhWzddPW8rNCxhWzBdPWwsYVsxXT1vKzcsYVsyXT1vKzYsYVszXT1vKzUsbD1pWzJdLGg9aVszXSxpWzJdPWgsaVszXT1jLGlbMF09bCxpWzFdPWMrMTticmVhaztjYXNlIDI6bD1hWzE1XSxoPWFbMTFdLGFbMTJdPWFbM10sYVsxM109byswLGFbMTRdPW8rMSxhWzE1XT1vKzIsYVs4XT1hWzddLGFbOV09bys5LGFbMTBdPW8rMTAsYVsxMV09byszLGFbNF09aCxhWzVdPW8rOCxhWzZdPW8rMTEsYVs3XT1vKzQsYVswXT1sLGFbMV09bys3LGFbMl09bys2LGFbM109bys1LGw9aVszXSxpWzJdPWlbMV0saVszXT1jLGlbMF09bCxpWzFdPWMrMTticmVhaztjYXNlIDM6YVsxMl09YVswXSxhWzEzXT1vKzAsYVsxNF09bysxLGFbMTVdPW8rMixhWzhdPWFbMV0sYVs5XT1vKzksYVsxMF09bysxMCxhWzExXT1vKzMsYVs0XT1hWzJdLGFbNV09bys4LGFbNl09bysxMSxhWzddPW8rNCxhWzBdPWFbM10sYVsxXT1vKzcsYVsyXT1vKzYsYVszXT1vKzUsaVsyXT1pWzBdLGlbM109YyxpWzBdPWlbMV0saVsxXT1jKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTsoMCxuLmFzc2VydCkoInBhdGNoIj09PXQudHlwZSwiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IHI9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxpPXQuY29vcmRzLHM9dC5jb2xvcnMsbz1NYXRoLm1pbihyW2lbMF1dWzBdLHJbaVszXV1bMF0scltpWzEyXV1bMF0scltpWzE1XV1bMF0pLGM9TWF0aC5taW4ocltpWzBdXVsxXSxyW2lbM11dWzFdLHJbaVsxMl1dWzFdLHJbaVsxNV1dWzFdKSxsPU1hdGgubWF4KHJbaVswXV1bMF0scltpWzNdXVswXSxyW2lbMTJdXVswXSxyW2lbMTVdXVswXSksaD1NYXRoLm1heChyW2lbMF1dWzFdLHJbaVszXV1bMV0scltpWzEyXV1bMV0scltpWzE1XV1bMV0pO2xldCBmPU1hdGguY2VpbCgobC1vKSpkLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7Zj1NYXRoLm1heChkLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKGQuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZikpO2xldCBnPU1hdGguY2VpbCgoaC1jKSpkLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7Zz1NYXRoLm1heChkLk1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5ULE1hdGgubWluKGQuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsZykpO2NvbnN0IHA9ZisxLG09bmV3IEludDMyQXJyYXkoKGcrMSkqcCksYj1uZXcgSW50MzJBcnJheSgoZysxKSpwKTtsZXQgeT0wO2NvbnN0IHc9bmV3IFVpbnQ4QXJyYXkoMyksdj1uZXcgVWludDhBcnJheSgzKSx4PWFbc1swXV0sUz1hW3NbMV1dLEE9YVtzWzJdXSxrPWFbc1szXV0sQz11KGcpLE89dShmKTtmb3IobGV0IGU9MDtlPD1nO2UrKyl7d1swXT0oeFswXSooZy1lKStBWzBdKmUpL2d8MCx3WzFdPSh4WzFdKihnLWUpK0FbMV0qZSkvZ3wwLHdbMl09KHhbMl0qKGctZSkrQVsyXSplKS9nfDAsdlswXT0oU1swXSooZy1lKStrWzBdKmUpL2d8MCx2WzFdPShTWzFdKihnLWUpK2tbMV0qZSkvZ3wwLHZbMl09KFNbMl0qKGctZSkra1syXSplKS9nfDA7Zm9yKGxldCB0PTA7dDw9Zjt0KysseSsrKXtpZighKDAhPT1lJiZlIT09Z3x8MCE9PXQmJnQhPT1mKSljb250aW51ZTtsZXQgbj0wLHM9MCxvPTA7Zm9yKGxldCBhPTA7YTw9MzthKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPUNbZV1bYV0qT1t0XVtjXTtuKz1yW2lbb11dWzBdKmwscys9cltpW29dXVsxXSpsfW1beV09ci5sZW5ndGgsci5wdXNoKFtuLHNdKSxiW3ldPWEubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0od1swXSooZi10KSt2WzBdKnQpL2Z8MCxjWzFdPSh3WzFdKihmLXQpK3ZbMV0qdCkvZnwwLGNbMl09KHdbMl0qKGYtdCkrdlsyXSp0KS9mfDAsYS5wdXNoKGMpfX1tWzBdPWlbMF0sYlswXT1zWzBdLG1bZl09aVszXSxiW2ZdPXNbMV0sbVtwKmddPWlbMTJdLGJbcCpnXT1zWzJdLG1bcCpnK2ZdPWlbMTVdLGJbcCpnK2ZdPXNbM10sdGhpcy5maWd1cmVzW2VdPXt0eXBlOiJsYXR0aWNlIixjb29yZHM6bSxjb2xvcnM6Yix2ZXJ0aWNlc1BlclJvdzpwfX1fdXBkYXRlQm91bmRzKCl7bGV0IGU9dGhpcy5jb29yZHNbMF1bMF0sdD10aGlzLmNvb3Jkc1swXVsxXSxyPWUsbj10O2ZvcihsZXQgYT0xLGk9dGhpcy5jb29yZHMubGVuZ3RoO2E8aTthKyspe2NvbnN0IGk9dGhpcy5jb29yZHNbYV1bMF0scz10aGlzLmNvb3Jkc1thXVsxXTtlPWU+aT9pOmUsdD10PnM/czp0LHI9cjxpP2k6cixuPW48cz9zOm59dGhpcy5ib3VuZHM9W2UsdCxyLG5dfV9wYWNrRGF0YSgpe2xldCBlLHQscixuO2NvbnN0IGE9dGhpcy5jb29yZHMsaT1uZXcgRmxvYXQzMkFycmF5KDIqYS5sZW5ndGgpO2ZvcihlPTAscj0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hW2VdO2lbcisrXT10WzBdLGlbcisrXT10WzFdfXRoaXMuY29vcmRzPWk7Y29uc3Qgcz10aGlzLmNvbG9ycyxvPW5ldyBVaW50OEFycmF5KDMqcy5sZW5ndGgpO2ZvcihlPTAscj0wLHQ9cy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1zW2VdO29bcisrXT10WzBdLG9bcisrXT10WzFdLG9bcisrXT10WzJdfXRoaXMuY29sb3JzPW87Y29uc3QgYz10aGlzLmZpZ3VyZXM7Zm9yKGU9MCx0PWMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9Y1tlXSxhPXQuY29vcmRzLGk9dC5jb2xvcnM7Zm9yKHI9MCxuPWEubGVuZ3RoO3I8bjtyKyspYVtyXSo9MixpW3JdKj0zfX1nZXRJUigpe3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSx0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMsdGhpcy5ib3VuZHMsdGhpcy5iYm94LHRoaXMuYmFja2dyb3VuZF19fWkoZCwiTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQiLDMpLGkoZCwiTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQiLDIwKSxpKGQsIlRSSUFOR0xFX0RFTlNJVFkiLDIwKTtjbGFzcyBmIGV4dGVuZHMgY3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0WGZhRm9udERpY3Q9ZnVuY3Rpb24oZSl7Y29uc3QgdD1mdW5jdGlvbihlKXtjb25zdCB0PWQoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczpyLGJhc2VNYXBwaW5nOm4sZmFjdG9yczphfT10LGk9YT9yLm1hcCgoKGUsdCk9PmUqYVt0XSkpOnI7bGV0IHMsbz0tMjtjb25zdCBjPVtdO2Zvcihjb25zdFtlLHRdb2Ygbi5tYXAoKChlLHQpPT5bZSx0XSkpLnNvcnQoKChlLHQpPT57bGV0W3JdPWUsW25dPXQ7cmV0dXJuIHItbn0pKSktMSE9PWUmJihlPT09bysxPyhzLnB1c2goaVt0XSksbys9MSk6KG89ZSxzPVtpW3RdXSxjLnB1c2goZSxzKSkpO3JldHVybiBjfShlKSxyPW5ldyBhLkRpY3QobnVsbCk7ci5zZXQoIkJhc2VGb250IixhLk5hbWUuZ2V0KGUpKSxyLnNldCgiVHlwZSIsYS5OYW1lLmdldCgiRm9udCIpKSxyLnNldCgiU3VidHlwZSIsYS5OYW1lLmdldCgiQ0lERm9udFR5cGUyIikpLHIuc2V0KCJFbmNvZGluZyIsYS5OYW1lLmdldCgiSWRlbnRpdHktSCIpKSxyLnNldCgiQ0lEVG9HSURNYXAiLGEuTmFtZS5nZXQoIklkZW50aXR5IikpLHIuc2V0KCJXIix0KSxyLnNldCgiRmlyc3RDaGFyIix0WzBdKSxyLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBuPW5ldyBhLkRpY3QobnVsbCk7ci5zZXQoIkZvbnREZXNjcmlwdG9yIixuKTtjb25zdCBpPW5ldyBhLkRpY3QobnVsbCk7cmV0dXJuIGkuc2V0KCJPcmRlcmluZyIsIklkZW50aXR5IiksaS5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKSxpLnNldCgiU3VwcGxlbWVudCIsMCksci5zZXQoIkNJRFN5c3RlbUluZm8iLGkpLHJ9LHQuZ2V0WGZhRm9udE5hbWU9ZCxyKDEzOSk7dmFyIG49cigyMDIpLGE9cigxNTApLGk9cigyMDMpLHM9cigyMDQpLG89cigyMDUpLGM9cigyMDYpLGw9cigxNDkpLGg9cigxODgpO2NvbnN0IHU9KDAsbC5nZXRMb29rdXBUYWJsZUZhY3RvcnkpKChmdW5jdGlvbihlKXtlWyJNeXJpYWRQcm8tUmVndWxhciJdPWVbIlBkZkpTLUZhbGxiYWNrLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpvLk15cmlhZFByb1JlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9SZWd1bGFyTWV0cmljc30sZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6by5NeXJpYWRQcm9Cb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOm8uTXlyaWFkUHJvQm9sZE1ldHJpY3N9LGVbIk15cmlhZFByby1JdCJdPWVbIk15cmlhZFByby1JdGFsaWMiXT1lWyJQZGZKUy1GYWxsYmFjay1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOm8uTXlyaWFkUHJvSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczpvLk15cmlhZFByb0l0YWxpY01ldHJpY3N9LGVbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpvLk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6by5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljc30sZS5BcmlhbE1UPWUuQXJpYWw9ZVsiQXJpYWwtUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZ30sZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZ30sZVsiQXJpYWwtSXRhbGljTVQiXT1lWyJBcmlhbC1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmd9LGVbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmd9LGVbIkNhbGlicmktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOm4uQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6bi5DYWxpYnJpUmVndWxhck1ldHJpY3N9LGVbIkNhbGlicmktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOm4uQ2FsaWJyaUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6bi5DYWxpYnJpQm9sZE1ldHJpY3N9LGVbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpuLkNhbGlicmlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOm4uQ2FsaWJyaUl0YWxpY01ldHJpY3N9LGVbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOm4uQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6bi5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3N9LGVbIlNlZ29ldWktUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOmMuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc1JlZ3VsYXJNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpUmVndWxhck1ldHJpY3N9LGVbIlNlZ29ldWktQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZE1ldHJpY3N9LGVbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpjLlNlZ29ldWlJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocyxiYXNlTWFwcGluZzpzLkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZyxtZXRyaWNzOmMuU2Vnb2V1aUl0YWxpY01ldHJpY3N9LGVbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmMuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzLGJhc2VXaWR0aHM6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nLG1ldHJpY3M6Yy5TZWdvZXVpQm9sZEl0YWxpY01ldHJpY3N9LGVbIkhlbHZldGljYS1SZWd1bGFyIl09ZS5IZWx2ZXRpY2E9e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6aS5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhUmVndWxhck1ldHJpY3N9LGVbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZE1ldHJpY3N9LGVbIkhlbHZldGljYS1JdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtSXRhbGljIixmYWN0b3JzOmkuSGVsdmV0aWNhSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHMsYmFzZU1hcHBpbmc6cy5MaWJlcmF0aW9uU2Fuc0l0YWxpY01hcHBpbmcsbWV0cmljczppLkhlbHZldGljYUl0YWxpY01ldHJpY3N9LGVbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6aS5IZWx2ZXRpY2FCb2xkSXRhbGljRmFjdG9ycyxiYXNlV2lkdGhzOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzLGJhc2VNYXBwaW5nOnMuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljTWFwcGluZyxtZXRyaWNzOmkuSGVsdmV0aWNhQm9sZEl0YWxpY01ldHJpY3N9fSkpO2Z1bmN0aW9uIGQoZSl7Y29uc3QgdD0oMCxoLm5vcm1hbGl6ZUZvbnROYW1lKShlKTtyZXR1cm4gdSgpW3RdfX0sKGUsdCk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5DYWxpYnJpUmVndWxhck1ldHJpY3M9dC5DYWxpYnJpUmVndWxhckZhY3RvcnM9dC5DYWxpYnJpSXRhbGljTWV0cmljcz10LkNhbGlicmlJdGFsaWNGYWN0b3JzPXQuQ2FsaWJyaUJvbGRNZXRyaWNzPXQuQ2FsaWJyaUJvbGRJdGFsaWNNZXRyaWNzPXQuQ2FsaWJyaUJvbGRJdGFsaWNGYWN0b3JzPXQuQ2FsaWJyaUJvbGRGYWN0b3JzPXZvaWQgMCx0LkNhbGlicmlCb2xkRmFjdG9ycz1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTQ2NTcsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjczMjkzLC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTEyMSwuODY5NDMsLjc5Nzk1LC44ODE5OCwuNzc5NTgsLjcwODY0LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjAxNywuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41NDY1NywuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjg4NzYyLC44Nzg1LC43NTI0MSwuODc4NSwuOTA1MTgsLjk1MDE1LC43NzYxOCwuODc4NSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkxNDg4LC44Nzg1LC44ODAxLC44Nzg1LC44Nzg1LC45MTM0MywuNzE3MywxLjA0MTA2LC44Nzg1LC44NTA3NSwuOTU3OTQsLjgyNjE2LC44NTE2MiwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTI0MDEsLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzMyOTMsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkxMjEsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODUyODQsLjg3NTA4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODcxNSwuNzUyNDEsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjkwNTE4LC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODc4NSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuODgwMSwuOTA3NDcsLjg5MDQ5LC44Nzg1LC44Nzg1LC44Nzg1LC44Nzg1LC44NTE2MiwuODc4NSwuODUxNjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuODcyODksLjgzMDE2LC44ODUwNiwuOTMxMjUsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LDEsMSwuODczNTYsLjg3ODUsLjkxMDc1LC44OTYwOCwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2MjI5LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43OTQ2OCwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkxMjEsLjg3ODUsMSwxLC45MTIxLC44Nzg1LC44NzgwMiwuODg2NTYsLjg3ODUsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg3NDAyLC44OTI5MSwuNzc5NTgsLjkxMzQzLDEsMSwuNzc5NTgsLjkxMzQzLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjg4NzYyLC43NzUzOSwuODcxNSwuODc1MDgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDY3NCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS4wNjMwMywuODM5MDgsLjgwMzUyLC41NzE4NCwuNjk2NSwuNTYyODksLjgyMDAxLC41NjAyOSwuODEyMzUsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY4MTU2LC44MDM2NywuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY5NDMsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTEyMSwuNzY0OCwuODY5NDMsLjg3MzU2LC43OTc5NSwuNzgyNzUsLjgxMDU1LC43Nzg5MiwuOTc2MiwuODI1NzcsLjk5ODE5LC44NDg5NiwuOTU5NTgsLjc3ODkyLC45NjEwOCwxLjAxNDA3LC44OTA0OSwxLjAyOTg4LC45NDIxMSwuOTYxMDgsLjg5MzYsLjg0MDIxLC44Nzg0MiwuOTYzOTksLjc5MTA5LC44OTA0OSwxLjAwODEzLDEuMDI5ODgsLjg2MDc3LC44NzQ0NSwuOTIwOTksLjg0NzIzLC44NjUxMywuODgwMSwuNzU2MzgsLjg1NzE0LC43ODIxNiwuNzk1ODYsLjg3OTY1LC45NDIxMSwuOTc3NDcsLjc4Mjg3LC45NzkyNiwuODQ5NzEsMS4wMjk4OCwuOTQyMTEsLjg4MDEsLjk0MjExLC44NDk3MSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwMjY0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDUxOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1NDgsMSwxLDEsMSwxLDEsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTE0MywxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkzODM1LC44MzQwNiwuOTExMzMsLjg0MTA3LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA1MjcsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDA2LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkNhbGlicmlCb2xkTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sdC5DYWxpYnJpQm9sZEl0YWxpY0ZhY3RvcnM9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU2MjM5LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MTgwNSwuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkwODcyLC44NTkzOCwuNzk3OTUsLjg3MDY4LC43Nzk1OCwuNjk3NjYsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDY4LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjUyOSwuOTc1MDcsLjg1Mjg0LC44OTU1MiwuOTAxNzYsLjk0OTA4LC44NjQxMSwuNzQwMTIsLjg2NDExLC44ODMyMywuOTUwMTUsLjg2NDExLC44NjMzMSwuODg0MDEsLjkxOTE2LC44NjMwNCwuODg0MDEsLjkwMzksLjg2MzMxLC44NjMzMSwuODY0MTEsLjg2NDExLC45MDQ2NCwuNzA4NTIsMS4wNDEwNiwuODYzMzEsLjg0MzcyLC45NTc5NCwuODI2MTYsLjg0NTQ4LC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xOTEyOSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MTgwNSwuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTA4NzIsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODUyODQsLjg3MDY4LC45MDM5OSwuOTAzOTksLjkwMzk5LC45MDM5OSwuNzc4OTIsLjc5Nzk1LC45MDgwNywuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuODU4ODcsLjc0MDEyLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODMyMywuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjkwNzQ3LC44OTA0OSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg0NTQ4LC44NjQxMSwuODQ1NDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuODcyODksLjc5NTM4LC44ODUwNiwuOTI3MjYsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLDEsMSwuODczNTYsLjg2MzMxLC45MTA3NSwuODc3NywuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjc2NDY3LC45MDE2NywuNTk1MjYsLjkxOTE2LDEsMSwuODYzMDQsLjY5MjI1LC44ODQwMSwxLDEsLjcwNDI0LC43NzMxMiwuOTE5MjYsLjg4MTc1LC43MDgyMywuOTQ5MDMsLjkwODcyLC44NjMzMSwxLDEsLjkwODcyLC44NjMzMSwuODY5MDYsLjg4MTE2LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODc0MDIsLjg2NTQ5LC43Nzk1OCwuOTA0NjQsMSwxLC43Nzk1OCwuOTA0NjQsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwxLDEsLjgxMDU1LC43NTg0MSwuODEwNTUsMS4wNjQ1MiwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsLjc3ODkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC45Mjk3LC41Njg5MiwuODM5MDgsLjk0OTA4LC43NzUzOSwuODU4ODcsLjg3MDY4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzAwODgsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuNDgzODcsLjgzOTA4LC44MDM1MiwuNTcxMTgsLjY5NjUsLjU2MzQ3LC43OTE3OSwuNTU4NTMsLjgwMzQ2LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42NzE3NCwuODYwMzYsLjczMTMzLC43ODI1NywuODczNTYsLjg2NDQxLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkwODcyLC43NDg4OSwuODU5MzgsLjg3ODkxLC43OTc5NSwuNzk1NywuODEwNTUsLjc3ODkyLC45NzQ0NywuODI1NzcsLjk3NDY2LC44NzE3OSwuOTU5NTgsLjc3ODkyLC45NDI1MiwuOTU2MTIsLjg3NTMsMS4wMjk4OCwuOTI3MzMsLjk0MjUyLC44NzQxMSwuODQwMjEsLjg3MjgsLjk1NjEyLC43NDA4MSwuODc1MywxLjAyMTg5LDEuMDI5ODgsLjg0ODE0LC44NzQ0NSwuOTE4MjIsLjg0NzIzLC44NTY2OCwuODYzMzEsLjgxMzQ0LC44NzU4MSwuNzY0MjIsLjgyMDQ2LC45NjA1NywuOTI3MzMsLjk5Mzc1LC43ODAyMiwuOTU0NTIsLjg2MDE1LDEuMDI5ODgsLjkyNzMzLC44NjMzMSwuOTI3MzMsLjg2MDE1LC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA2MzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4MzIzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTE3NCwxLDEsMSwxLDEsMSwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44OTgwNywuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMDk0LDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTI5NzIsLjgzNDA2LC45MTEzMywuODMzMjYsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDYxNiwxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwNywxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5DYWxpYnJpQm9sZEl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHQuQ2FsaWJyaUl0YWxpY0ZhY3RvcnM9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuQ2FsaWJyaUl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LHQuQ2FsaWJyaVJlZ3VsYXJGYWN0b3JzPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTAxNiwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzM4MzQsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5Mzg1LC44NTEyMiwuNzc0NTIsLjg2NTAzLC43NTE4NiwuNjg4ODcsLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MjU4LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM5MDE2LDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjg2MTI4LC45NDQ2OSwuODQ1NywuOTQ0NjksLjg5NDY0LDEuMDk4NDIsLjg0NjM2LC45NDQ2OSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk1ODk3LC45NDQ2OSwuOTQ4MiwuOTQ0NjksLjk0NDY5LDEuMDQ2OTIsLjc4MjIzLDEuMjA1NjIsLjk0NDY5LC45MDMzMiwuOTg5ODYsLjg2NjIxLC45MDUyNywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjA4NzA3LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjczODM0LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTM4NSwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTI4NCwuODUzMTEsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2OTMsLjg0NTcsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjk0NDY5LC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45MDc0NywuODY2NTEsLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45MDUyNywuOTQ0NjksLjkwNTI3LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuODUxOTMsLjkyNDU0LC44NjQ3NywuOTkyMSwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsMSwxLC44NjI3NSwuOTQ0NjksLjkwODcyLC45NTc4NiwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzc0MSwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45MDQ1MiwuOTgxNTYsMS4xMTg0MiwuNzcyNjEsMS4xMTQyOSwuODkzODUsLjk0NDY5LDEsMSwuODkzODUsLjk0NDY5LC45NTg3NywuODY5MDEsLjk0NDY5LC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NjY3LC45MDAxNiwuNzUxODYsMS4wNDY5MiwxLDEsLjc1MTg2LDEuMDQ2OTIsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywxLDEsLjc5Nzc2LC45MjE4OCwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuODYxMjgsLjc2MzE4LC44NjkzLC44NTMxMSwuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjc3NDIsLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2Njg2LC45MDg2MSwuNjIyNjcsLjc0MzU5LC42NTY0OSwuODU0OTgsLjU2OTYzLC44ODI1NCwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzU0NDMsLjg0NTAzLC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NTEyMiwuOTA2ODUsLjc3ODkyLC44NTc0NiwxLjAyNjM4LC44OTM4NSwuNzU2NTcsLjg1MTIyLC44NjI3NSwuNzc0NTIsLjc0MTcxLC43OTc3NiwuNzMwNiwuOTUxNjUsLjc3ODE4LC44OTc3MiwuODg4MzEsLjkwNjg1LC43MzA2LC45ODE0MiwxLjAyMTkxLC45NjU3NiwxLjIzNTE2LC45OTAxOCwuOTgxNDIsLjkyMzYsLjg5MjU4LC45NDAzNSwxLjAyMTkxLC43ODg0OCwuOTY1NzYsLjk1NjEsMS4yMzUxNiwuOTA5MTgsLjkyNTc4LC45NTQyNCwuODk3NDYsLjgzOTY5LC45NDgyLC44MDExMywuODk0NDIsLjg1MjA4LC44NjE1NSwuOTgwMjIsLjk5MDE4LDEuMDA0NTIsLjgxMjA5LC45OTI0NywuODkxODEsMS4yMzUxNiwuOTkwMTgsLjk0ODIsLjk5MDE4LC44OTE4MSwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4ODQ0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTQ2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY3NjYsMSwxLDEsMSwxLDEsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42OTA0MywxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk5MzMxLC44MjYxNiwuOTExMzMsLjg0Mjg2LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMS4wNzE4NSwuOTk0MTMsLjk2MzM0LDEuMDgwNjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkNhbGlicmlSZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN319LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSGVsdmV0aWNhUmVndWxhck1ldHJpY3M9dC5IZWx2ZXRpY2FSZWd1bGFyRmFjdG9ycz10LkhlbHZldGljYUl0YWxpY01ldHJpY3M9dC5IZWx2ZXRpY2FJdGFsaWNGYWN0b3JzPXQuSGVsdmV0aWNhQm9sZE1ldHJpY3M9dC5IZWx2ZXRpY2FCb2xkSXRhbGljTWV0cmljcz10LkhlbHZldGljYUJvbGRJdGFsaWNGYWN0b3JzPXQuSGVsdmV0aWNhQm9sZEZhY3RvcnM9dm9pZCAwLHQuSGVsdmV0aWNhQm9sZEZhY3RvcnM9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAzMzc0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA0MiwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDM4MjgsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDM0LC45OTk3NywxLC45OTk5NywxLjAwMDI2LDEuMDAwNzgsMS4wMDAzNiwuOTk5NzMsMS4wMDAxMywxLjAwMDYsLjk5OTc3LC45OTk3NywuOTk5ODgsLjg1MTQ4LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywxLjAwMDY5LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTg0LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDI0LDEuMDAwMDEsLjk5OTksMSwxLjAwMDYsMS4wMDAwMSwxLjAwMDQxLC45OTk2MiwxLjAwMDI2LDEuMDAwNiwuOTk5OTUsMS4wMDA0MSwuOTk5NDIsLjk5OTczLC45OTkyNywxLjAwMDgyLC45OTkwMiwxLjAwMDI2LDEuMDAwODcsMS4wMDA2LDEuMDAwNjksLjk5OTczLC45OTg2NywuOTk5NzMsLjk5OTMsMS4wMDAyNiwxLjAwMDQ5LDEuMDAwNTYsMSwuOTk5ODgsLjk5OTM1LC45OTk5NSwuOTk5NTQsMS4wMDA1NSwuOTk5NDUsMS4wMDAzMiwxLjAwMDYsLjk5OTk1LDEuMDAwMjYsLjk5OTk1LDEuMDAwMzIsMS4wMDAwMSwxLjAwMDA4LC45OTk3MSwxLjAwMDE5LC45OTk0LDEuMDAwMDEsMS4wMDA2LDEuMDAwNDQsLjk5OTczLDEuMDAwMjMsMS4wMDA0NywxLC45OTk0MiwuOTk1NjEsLjk5OTg5LDEuMDAwMzUsLjk5OTc3LDEuMDAwMzUsLjk5OTc3LDEuMDAwMTksLjk5OTQ0LDEuMDAwMDEsMS4wMDAyMSwuOTk5MjYsMS4wMDAzNSwxLjAwMDM1LC45OTk0MiwxLjAwMDQ4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTg5LDEuMDAwNTcsMS4wMDAwMSwuOTk5MzYsMS4wMDA1MiwxLjAwMDEyLC45OTk5NiwxLjAwMDQzLDEsMS4wMDAzNSwuOTk5NCwuOTk5NzYsMS4wMDAzNSwuOTk5NzMsMS4wMDA1MiwxLjAwMDQxLDEuMDAxMTksMS4wMDAzNywuOTk5NzMsMS4wMDAwMiwuOTk5ODYsMS4wMDA0MSwxLjAwMDQxLC45OTkwMiwuOTk5NiwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LC45OTk3MywxLjAwMDUyLC45OTk3MywxLC45OTk3MywxLjAwMDQxLDEuMDAwNzUsLjk5OTQsMS4wMDAzLC45OTk5OSwxLDEuMDAwNDEsLjk5OTU1LDEsLjk5OTE1LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMTE5LC45OTk1NSwuOTk5NzMsMS4wMDA2LC45OTkxMSwxLjAwMDYsMS4wMDAyNiwuOTk5NzIsMS4wMDAyNiwuOTk5MDIsMS4wMDA0MSwuOTk5NzMsLjk5OTk5LDEsMSwxLjAwMDM4LDEuMDAwNSwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLDEuMDAwNDcsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkhlbHZldGljYUJvbGRNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx0LkhlbHZldGljYUJvbGRJdGFsaWNGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5IZWx2ZXRpY2FCb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LHQuSGVsdmV0aWNhSXRhbGljRmFjdG9ycz1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LkhlbHZldGljYUl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSx0LkhlbHZldGljYVJlZ3VsYXJGYWN0b3JzPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuSGVsdmV0aWNhUmVndWxhck1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocz10LkxpYmVyYXRpb25TYW5zUmVndWxhck1hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0l0YWxpY1dpZHRocz10LkxpYmVyYXRpb25TYW5zSXRhbGljTWFwcGluZz10LkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocz10LkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmc9dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNXaWR0aHM9dC5MaWJlcmF0aW9uU2Fuc0JvbGRJdGFsaWNNYXBwaW5nPXZvaWQgMCx0LkxpYmVyYXRpb25TYW5zQm9sZFdpZHRocz1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSx0LkxpYmVyYXRpb25TYW5zQm9sZE1hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLHQuTGliZXJhdGlvblNhbnNCb2xkSXRhbGljV2lkdGhzPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzQwLDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODIsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzOTYsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNzIyLDMzMyw4NTQsOTA2LDQ3Myw4NDQsOTMwLDg0NywyNzgsNzIyLDcyMiw2MTAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY1Nyw3NzgsNzE4LDY2Nyw1OTAsNjExLDY2Nyw4MjIsNjY3LDgyOSw3ODEsMjc4LDY2Nyw2MjAsNDc5LDYxMSwyNzgsNTkxLDYyMCw2MjEsNTU2LDYxMCw0NzksNDkyLDYxMSw1NTgsMjc4LDU2Niw1NTYsNjAzLDU1Niw0NTAsNjExLDcxMiw2MDUsNTMyLDY2NCw0MDksNTkxLDcwNCw1NzgsNzczLDgzNCwyNzgsNTkxLDYxMSw1OTEsODM0LDY2Nyw2NjcsODg2LDYxNCw3MTksNjY3LDI3OCwyNzgsNTU2LDEwOTQsMTA0Miw4NTQsNjIyLDcxOSw2NzcsNzE5LDcyMiw3MDgsNzIyLDYxNCw3MjIsNjY3LDkyNyw2NDMsNzE5LDcxOSw2MTUsNjg3LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2NzcsNzgxLDY2Nyw3MjksNzA4LDk3OSw5ODksODU0LDFlMyw3MDgsNzE5LDEwNDIsNzI5LDU1Niw2MTksNjA0LDUzNCw2MTgsNTU2LDczNiw1MTAsNjExLDYxMSw1MDcsNjIyLDc0MCw2MDQsNjExLDYxMSw2MTEsNTU2LDg4OSw1NTYsODg1LDU1Niw2NDYsNTgzLDg4OSw5MzUsNzA3LDg1NCw1OTQsNTUyLDg2NSw1ODksNTU2LDU1Niw2MTEsNDY5LDU2Myw1NTYsMjc4LDI3OCwyNzgsOTY5LDkwNiw2MTEsNTA3LDYxOSw1NTYsNjExLDc3OCw2MTEsNTc1LDQ2Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMTA0LDU1Niw4ODUsNTE2LDExNDYsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDk5OSw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSx0LkxpYmVyYXRpb25TYW5zQm9sZEl0YWxpY01hcHBpbmc9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLHQuTGliZXJhdGlvblNhbnNJdGFsaWNXaWR0aHM9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjI1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzMsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyODEsNTU2LDQwMCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYxNSw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNTQsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODksODQ2LDM4OSw3OTQsODY1LDc3NSwyMjIsNjY3LDY2Nyw1NzAsNjcxLDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2Nyw4MzMsNzIyLDY0OCw3NzgsNzI1LDY2Nyw2MDAsNjExLDY2Nyw4MzcsNjY3LDgzMSw3NjEsMjc4LDY2Nyw1NzAsNDM5LDU1NSwyMjIsNTUwLDU3MCw1NzEsNTAwLDU1Niw0MzksNDYzLDU1NSw1NDIsMjIyLDUwMCw0OTIsNTQ4LDUwMCw0NDcsNTU2LDY3MCw1NzMsNDg2LDYwMywzNzQsNTUwLDY1Miw1NDYsNzI4LDc3OSwyMjIsNTUwLDU1Niw1NTAsNzc5LDY2Nyw2NjcsODQzLDU0NCw3MDgsNjY3LDI3OCwyNzgsNTAwLDEwNjYsOTgyLDg0NCw1ODksNzE1LDYzOSw3MjQsNjY3LDY1MSw2NjcsNTQ0LDcwNCw2NjcsOTE3LDYxNCw3MTUsNzE1LDU4OSw2ODYsODMzLDcyMiw3NzgsNzI1LDY2Nyw3MjIsNjExLDYzOSw3OTUsNjY3LDcyNyw2NzMsOTIwLDkyMyw4MDUsODg2LDY1MSw2OTQsMTAyMiw2ODIsNTU2LDU2Miw1MjIsNDkzLDU1Myw1NTYsNjg4LDQ2NSw1NTYsNTU2LDQ3Miw1NjQsNjg2LDU1MCw1NTYsNTU2LDU1Niw1MDAsODMzLDUwMCw4MzUsNTAwLDU3Miw1MTgsODMwLDg1MSw2MjEsNzM2LDUyNiw0OTIsNzUyLDUzNCw1NTYsNTU2LDU1NiwzNzgsNDk2LDUwMCwyMjIsMjIyLDIyMiw5MTAsODI4LDU1Niw0NzIsNTY1LDUwMCw1NTYsNzc4LDU1Niw0OTIsMzM5LDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA4MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCw5OTgsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4NCw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLHQuTGliZXJhdGlvblNhbnNJdGFsaWNNYXBwaW5nPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSx0LkxpYmVyYXRpb25TYW5zUmVndWxhcldpZHRocz1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MTUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczNSw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI5Miw1NTYsMzM0LDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjA0LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM3NSw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4NCw4MzgsMzg0LDc3NCw4NTUsNzUyLDIyMiw2NjcsNjY3LDU1MSw2NjgsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY4LDgzMyw3MjIsNjUwLDc3OCw3MjIsNjY3LDYxOCw2MTEsNjY3LDc5OCw2NjcsODM1LDc0OCwyNzgsNjY3LDU3OCw0NDYsNTU2LDIyMiw1NDcsNTc4LDU3NSw1MDAsNTU3LDQ0Niw0NDEsNTU2LDU1NiwyMjIsNTAwLDUwMCw1NzYsNTAwLDQ0OCw1NTYsNjkwLDU2OSw0ODIsNjE3LDM5NSw1NDcsNjQ4LDUyNSw3MTMsNzgxLDIyMiw1NDcsNTU2LDU0Nyw3ODEsNjY3LDY2Nyw4NjUsNTQyLDcxOSw2NjcsMjc4LDI3OCw1MDAsMTA1NywxMDEwLDg1NCw1ODMsNzIyLDYzNSw3MTksNjY3LDY1Niw2NjcsNTQyLDY3Nyw2NjcsOTIzLDYwNCw3MTksNzE5LDU4Myw2NTYsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDYzNSw3NjAsNjY3LDc0MCw2NjcsOTE3LDkzOCw3OTIsODg1LDY1Niw3MTksMTAxMCw3MjIsNTU2LDU3Myw1MzEsMzY1LDU4Myw1NTYsNjY5LDQ1OCw1NTksNTU5LDQzOCw1ODMsNjg4LDU1Miw1NTYsNTQyLDU1Niw1MDAsNDU4LDUwMCw4MjMsNTAwLDU3Myw1MjEsODAyLDgyMyw2MjUsNzE5LDUyMSw1MTAsNzUwLDU0Miw1NTYsNTU2LDU1NiwzNjUsNTEwLDUwMCwyMjIsMjc4LDIyMiw5MDYsODEyLDU1Niw0MzgsNTU5LDUwMCw1NTIsNzc4LDU1Niw0ODksNDExLDk0NCw3MjIsOTQ0LDcyMiw5NDQsNzIyLDY2Nyw1MDAsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjIyLDIyMiwyMjIsMjIyLDMzMywzMzMsMzMzLDU1Niw1NTYsMzUwLDFlMywxZTMsMTg4LDM1NCwzMzMsMzMzLDUwMCwzMzMsMTY3LDM2NSw1NTYsNTU2LDEwOTQsNTU2LDg4NSwzMjMsMTA3MywxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzE5LDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDUwMCw1MDAsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDI5NCwyOTQsMzI0LDMyNCwzMTYsMzI4LDM5OCwyODVdLHQuTGliZXJhdGlvblNhbnNSZWd1bGFyTWFwcGluZz1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTXlyaWFkUHJvUmVndWxhck1ldHJpY3M9dC5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycz10Lk15cmlhZFByb0l0YWxpY01ldHJpY3M9dC5NeXJpYWRQcm9JdGFsaWNGYWN0b3JzPXQuTXlyaWFkUHJvQm9sZE1ldHJpY3M9dC5NeXJpYWRQcm9Cb2xkSXRhbGljTWV0cmljcz10Lk15cmlhZFByb0JvbGRJdGFsaWNGYWN0b3JzPXQuTXlyaWFkUHJvQm9sZEZhY3RvcnM9dm9pZCAwLHQuTXlyaWFkUHJvQm9sZEZhY3RvcnM9WzEuMzY4OTgsMSwxLC43MjcwNiwuODA0NzksLjgzNzM0LC45ODg5NCwuOTk3OTMsLjk4OTcsLjkzODg0LC44NjIwOSwuOTQyOTIsLjk0MjkyLDEuMTY2NjEsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE5MTM3LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43Mjg1MSwuNzg5NjYsLjkwODM4LC44MzYzNywuODIzOTEsLjk2Mzc2LC44MDA2MSwuODYyNzUsLjg3NjgsLjk1NDA3LDEuMDI1OCwuNzM5MDEsLjg1MDIyLC44MzY1NSwxLjAxNTYsLjk1NTQ2LC45MjE3OSwuODcxMDcsLjkyMTc5LC44MjExNCwuODA5NiwuODk3MTMsLjk0NDM4LC45NTM1MywuOTQwODMsLjkxOTA1LC45MDQwNiwuOTQ0NiwuOTQyOTIsMS4xODc3NywuOTQyOTIsMS4wMjA1OCwuODk5MDMsLjkwMDg4LC45NDkzOCwuOTc4OTgsLjgxMDkzLC45NzU3MSwuOTQ5MzgsMS4wMjQsLjk1NzcsLjk1OTMzLC45ODYyMSwxLjA0NzQsLjk3NDU1LC45ODk4MSwuOTY3MiwuOTU5MzMsLjk0NDYsLjk3ODk4LC45NzQwNywuOTc2NDYsLjc4MDM2LDEuMTAyMDgsLjk1NDQyLC45NTI5OCwuOTc1NzksLjkzMzIsLjk0MDM5LC45MzgsLjgwNjg3LDEuMDExNDksLjgwNjg3LDEuMDIwNTgsLjgwNDc5LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywxLjAxMTQ5LDEuMDA4NzIsLjkwMDg4LC45MTg4MiwxLjAyMTMsLjgzNjEsMS4wMjA1OCwuNjIyOTUsLjU0MzI0LC44OTAyMiwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTc0NTUsLjkzNTgyLC45MDA4OCwxLDEuMDU2ODYsLjgzNjEsLjk5NjQyLC45OTY0MiwuOTk2NDIsLjcyODUxLC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC44NjgsLjgyMzkxLC44MDA2MSwuODAwNjEsLjgwMDYxLC44MDA2MSwxLjAyNTgsMS4wMjU4LDEuMDI1OCwxLjAyNTgsLjk3NDg0LC45NTU0NiwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LDEuMDIwNTgsLjkyMTc5LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTA0MDYsLjg2OTU4LC45ODIyNSwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTAzMSwuODEwOTMsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTM5NjksLjk1OTMzLC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LDEuMDg1OTUsLjk0NDYsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NDAzOSwuOTc4OTgsLjk0MDM5LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjk2Mzc2LC44NDMxMywuOTc0ODQsLjk3NTcxLC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODc2OCwuOTU3NywuODc2OCwuOTU3NywuODc2OCwuOTU3NywxLDEsLjk1NDA3LC45NTkzMywuOTcwNjksLjk1OTMzLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwuODg3LDEuMDE1OTEsLjczOTAxLDEuMDQ3NCwxLDEsLjk3NDU1LC44MzY1NSwuOTg5ODEsMSwxLC44MzY1NSwuNzM5NzcsLjgzNjU1LC43MzkwMywuODQ2MzgsMS4wMzMsLjk1NTQ2LC45NTkzMywxLDEsLjk1NTQ2LC45NTkzMywuODI3MSwuOTU0MTcsLjk1OTMzLC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MzYsLjkxOTY0LC44MjExNCwuOTc2NDYsMSwxLC44MjExNCwuOTc2NDYsLjgwOTYsLjc4MDM2LC44MDk2LC43ODAzNiwxLDEsLjgwOTYsLjc4MDM2LDEsMSwuODk3MTMsLjc3NDUyLC44OTcxMywxLjEwMjA4LC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTA0MDYsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsMSwuOTk3OTMsLjkwODM4LC45NDkzOCwuODY4LC45MDMxLC45MjE3OSwuOTQ0NiwxLDEsLjg5NzEzLDEuMTAyMDgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwOTg5LC45MzU4LC45MTk0NSwuODMxODEsLjc1MjYxLC44Nzk5MiwuODI5NzYsLjk2MDM0LC44MzY4OSwuOTcyNjgsMS4wMDc4LC45MDgzOCwuODM2MzcsLjgwMTksLjkwMTU3LC44MDA2MSwuOTQ0NiwuOTU0MDcsLjkyNDM2LDEuMDI1OCwuODUwMjIsLjk3MTUzLDEuMDE1NiwuOTU1NDYsLjg5MTkyLC45MjE3OSwuOTIzNjEsLjg3MTA3LC45NjMxOCwuODk3MTMsLjkzNzA0LC45NTYzOCwuOTE5MDUsLjkxNzA5LC45Mjc5NiwxLjAyNTgsLjkzNzA0LC45NDgzNiwxLjAzNzMsLjk1OTMzLDEuMDA3OCwuOTU4NzEsLjk0ODM2LC45NjE3NCwuOTI2MDEsLjk0OTgsLjk4NjA3LC45NTc3NiwuOTU5MzMsMS4wNTQ1MywxLjAwNzgsLjk4Mjc1LC45MzE0LC45NTYxNywuOTE3MDEsMS4wNTk5MywuOTQ0NiwuNzgzNjcsLjk1NTMsMSwuODY4MzIsMS4wMTI4LC45NTg3MSwuOTkzOTQsLjg3NTQ4LC45NjM2MSwuODY3NzQsMS4wMDc4LC45NTg3MSwuOTQ0NiwuOTU4NzEsLjg2Nzc0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkzNTgyLC45MzU4MiwuOTM1ODIsMSwuOTA4LC45MDgsLjkxOCwuOTQyMTksLjk0MjE5LC45NjU0NCwxLDEuMjg1LDEsMSwuODEwNzksLjgxMDc5LDEsMSwuNzQ4NTQsMSwxLDEsMSwuOTk3OTMsMSwxLDEsLjY1LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNzE3MywxLC44MDUzNSwuNzYxNjksMS4wMjA1OCwxLjA3MzIsMS4wNTQ4NiwxLDEsMS4zMDY5MiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE2MTYxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuTXlyaWFkUHJvQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHQuTXlyaWFkUHJvQm9sZEl0YWxpY0ZhY3RvcnM9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0Lk15cmlhZFByb0JvbGRJdGFsaWNNZXRyaWNzPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx0Lk15cmlhZFByb0l0YWxpY0ZhY3RvcnM9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuTXlyaWFkUHJvSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sdC5NeXJpYWRQcm9SZWd1bGFyRmFjdG9ycz1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5NeXJpYWRQcm9SZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn19LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU2Vnb2V1aVJlZ3VsYXJNZXRyaWNzPXQuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzPXQuU2Vnb2V1aUl0YWxpY01ldHJpY3M9dC5TZWdvZXVpSXRhbGljRmFjdG9ycz10LlNlZ29ldWlCb2xkTWV0cmljcz10LlNlZ29ldWlCb2xkSXRhbGljTWV0cmljcz10LlNlZ29ldWlCb2xkSXRhbGljRmFjdG9ycz10LlNlZ29ldWlCb2xkRmFjdG9ycz12b2lkIDAsdC5TZWdvZXVpQm9sZEZhY3RvcnM9WzEuNzY3MzgsMSwxLC45OTI5NywuOTgyNCwxLjA0MDE2LDEuMDY0OTcsMS4wMzQyNCwuOTc1MjksMS4xNzY0NywxLjIzMjAzLDEuMTA4NSwxLjEwODUsMS4xNjkzOSwxLjIxMDcsLjk3NTQsMS4yMTQwOCwuOTc1NCwxLjU5NTc4LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsLjgxMzc4LC44MTM3OCwxLjIxMDcsMS4yMTA3LDEuMjEwNywuNzE3MDMsLjk3ODQ3LC45NzM2MywuODg3NzYsLjg2NDEsMS4wMjA5NiwuNzk3OTUsLjg1MTMyLC45MTQsMS4wNjA4NSwxLjE0MDYsLjgwMDcsLjg5ODU4LC44MzY5MywxLjE0ODg5LDEuMDkzOTgsLjk3NDg5LC45MjA5NCwuOTc0ODksLjkwMzk5LC44NDA0MSwuOTU5MjMsMS4wMDEzNSwxLDEuMDY0NjcsLjk4MjQzLC45MDk5NiwuOTkzNjEsMS4xMDg1LDEuNTY5NDIsMS4xMDg1LDEuMjEwNywuNzQ2MjcsLjk0MjgyLC45Njc1MiwxLjAxNTE5LC44NjMwNCwxLjAxMzU5LC45NzI3OCwxLjE1MTAzLDEuMDEzNTksLjk4NTYxLDEuMDIyODUsMS4wMjI4NSwxLjAwNTI3LDEuMDIyODUsMS4wMzAyLC45OTA0MSwxLjAwMDgsMS4wMTUxOSwxLjAxMzU5LDEuMDIyNTgsLjc5MTA0LDEuMTY4NjIsLjk5MDQxLC45NzQ1NCwxLjAyNTExLC45OTI5OCwuOTY3NTIsLjk1ODAxLC45NDg1NiwxLjE2NTc5LC45NDg1NiwxLjIxMDcsLjk4MjQsMS4wMzQyNCwxLjAzNDI0LDEsMS4wMzQyNCwxLjE2NTc5LC44NzI3LDEuMzg3MSwxLjE4NjIyLDEuMTA4MTgsMS4wNDQ3OCwxLjIxMDcsMS4xODYyMiwuNzUxNTUsLjk0OTk0LDEuMjg4MjYsMS4yMTQwOCwxLjIxNDA4LC45MTA1NiwxLC45MTU3MiwuOTc1NCwuNjQ2NjMsMS4xODMyOCwxLjI0ODY2LDEuMDQ0NzgsMS4xNDE2OSwxLjE1NzQ5LDEuMTczODksLjcxNzAzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45MzUwNiwuODY0MSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwuNzk3OTUsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDIwOTYsMS4wOTM5OCwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LDEuMjEwNywuOTc0ODksMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTA5OTYsLjkyMDk0LDEuMDI3OTgsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjkzMTM2LC44NjMwNCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwuOTcyNzgsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwuOTcxMjIsLjk5MDQxLDEsMSwxLDEsMSwxLjI4ODI2LDEuMDAwOCwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk2NzUyLDEuMDE1MTksLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwxLjAyMDk2LDEuMDMwNTcsMS4wMjA5NiwxLjAzNTE3LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwxLDEsMS4wNjA4NSwuOTg1NjEsMS4wNjA4NSwxLjAwODc5LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LC45NzEzOCwxLjA4NjkyLC44MDA3LDEuMDIyODUsMSwxLDEuMDA1MjcsLjgzNjkzLDEuMDIyODUsMSwxLC44MzY5MywuOTQ1NSwuODM2OTMsLjkwNDE4LC44MzY5MywxLjEzMDA1LDEuMDkzOTgsLjk5MDQxLDEsMSwxLjA5Mzk4LC45OTA0MSwuOTY2OTIsMS4wOTI1MSwuOTkwNDEsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjkzOTk0LC45NzkzMSwuOTAzOTksMS4wMjI1OCwxLDEsLjkwMzk5LDEuMDIyNTgsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwxLDEsLjk1OTIzLDEuMDcwMzQsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsLjkwOTk2LC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLDEuMDc3MzMsMS4wMzQyNCwuOTczNjMsLjk2NzUyLC45MzUwNiwuOTMxMzYsLjk3NDg5LDEuMDAwOCwxLDEsLjk1OTIzLDEuMTY4NjIsMS4xNTEwMywxLjE1MTAzLDEuMDExNzMsMS4wMzk1OSwuNzU5NTMsLjgxMzc4LC43OTkxMiwxLjE1MTAzLDEuMjE5OTQsLjk1MTYxLC44NzgxNSwxLjAxMTQ5LC44MTUyNSwuNzY3NiwuOTgxNjcsMS4wMTEzNCwxLjAyNTQ2LC44NDA5NywxLjAzMDg5LDEuMTgxMDIsLjk3MzYzLC44ODc3NiwuODUxMzQsLjk3ODI2LC43OTc5NSwuOTkzNjEsMS4wNjA4NSwuOTc0ODksMS4xNDA2LC44OTg1OCwxLjAzODgsMS4xNDg4OSwxLjA5Mzk4LC44NjAzOSwuOTc0ODksMS4wNTk1LC45MjA5NCwuOTQ3OTMsLjk1OTIzLC45MDk5NiwuOTkzNDYsLjk4MjQzLDEuMDIxMTIsLjk1NDkzLDEuMTQwNiwuOTA5OTYsMS4wMzU3NCwxLjAyNTk3LDEuMDAwOCwxLjE4MTAyLDEuMDY2MjgsMS4wMzU3NCwxLjAxOTIsMS4wMTkzMiwxLjAwODg2LC45NzUzMSwxLjAxMDYsMS4wMDA4LDEuMTMxODksMS4xODEwMiwxLjAyMjc3LC45ODY4MywxLjAwMTYsLjk5NTYxLDEuMDcyMzcsMS4wMDA4LC45MDQzNCwuOTk5MjEsLjkzODAzLC44OTY1LDEuMjMwODUsMS4wNjYyOCwxLjA0OTgzLC45NjI2OCwxLjA0OTksLjk4NDM5LDEuMTgxMDIsMS4wNjYyOCwxLjAwMDgsMS4wNjYyOCwuOTg0MzksLjc5Nzk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDk0NjYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk3Mjc4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDIwNjUsMSwxLDEsMSwxLDEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwxLDEuMjE0MDgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzMwNDcsLjczMDQ3LDEuMjA2NDIsLjkxMjExLDEuMjU2MzUsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjEyNDU0LC45MzUwMywxLjAzNDI0LDEuMTk2ODcsMS4wMzQyNCwxLDEsMSwuNzcxLDEsMSwxLjE1NzQ5LDEuMTU3NDksMS4xNTc0OSwxLjEwOTQ4LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMTY4OTcsMSwuOTYwODUsLjkwMTM3LDEuMjEwNywxLjE4NDE2LDEuMTM5NzMsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjExNzIsMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODg3NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMDkxOTMsMS4wOTE5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdC5TZWdvZXVpQm9sZE1ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHQuU2Vnb2V1aUJvbGRJdGFsaWNGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4wMzk1OSwxLjA0MDE2LDEuMDI4MDksMS4wMzYsLjk3NjM5LDEuMTA5NTMsMS4yMzIwMywxLjExMTQ0LDEuMTExNDQsMS4xNjkzOSwxLjIxMjM3LC45NzU0LDEuMjEyNjEsLjk3NTQsMS41OTc1NCwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwuODEzNzgsLjgxMzc4LDEuMjEyMzcsMS4yMTIzNywxLjIxMjM3LC43MzU0MSwuOTc4NDcsLjk3MzYzLC44OTcyMywuODc4OTcsMS4wNDI2LC43OTQyOSwuODUyOTIsLjkxMTQ5LDEuMDU4MTUsMS4xNDA2LC43OTYzMSwuOTAxMjgsLjgzODUzLDEuMDQzOTYsMS4xMDYxNSwuOTc1NTIsLjk0NDM2LC45NzU1MiwuODg2NDEsLjgwNTI3LC45NjA4MywxLjAwMTM1LDEsMS4wNjc3NywuOTgxNywuOTExNDIsLjk5MzYxLDEuMTExNDQsMS41NzI5MywxLjExMTQ0LDEuMjEyMzcsLjc0NjI3LDEuMzE4MTgsMS4wNjU4NSwuOTcwNDIsLjgzMDU1LC45NzA0MiwuOTM1MDMsMS4xMjYxLC45NzA0MiwuOTc5MjIsMS4xNDIzNiwuOTQ1NTIsMS4wMTA1NCwxLjE0MjM2LDEuMDI0NzEsLjk3OTIyLC45NDE2NSwuOTcwNDIsLjk3MDQyLDEuMDI3NiwuNzg5MjksMS4xMjYxLC45NzkyMiwuOTU4NzQsMS4wMjE5NywuOTg1MDcsLjk2NzUyLC45NzE2OCwuOTUxMDcsMS4xNjU3OSwuOTUxMDcsMS4yMTIzNywxLjAzOTU5LDEuMDM2LDEuMDM2LDEsMS4wMzYsMS4xNjU3OSwuODczNTcsMS4zMTgxOCwxLjE4NzU0LDEuMjY3ODEsMS4wNTM1NiwxLjIxMjM3LDEuMTg2MjIsLjc5NDg3LC45NDk5NCwxLjI5MDA0LDEuMjQwNDcsMS4yNDA0NywxLjMxODE4LDEsLjkxNDg0LC45NzU0LDEuMzE4MTgsMS4xMzQ5LDEuMjQ4NjYsMS4wNTM1NiwxLjEzOTM0LDEuMTU1NzQsMS4xNzM4OSwuNzM1NDEsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk0Mzg1LC44Nzg5NywuNzk0MjksLjc5NDI5LC43OTQyOSwuNzk0MjksMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDQyNiwxLjEwNjE1LC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsMS4yMTIzNywuOTc1NTIsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTExNDIsLjk0NDM2LC45ODcyMSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwuOTY3MDUsLjgzMDU1LC45MzUwMywuOTM1MDMsLjkzNTAzLC45MzUwMywxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LC45MzEyNSwuOTc5MjIsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwxLjI5MDA0LC45NDE2NSwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk2NzUyLC45NzA0MiwuOTY3NTIsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwxLjA0MjYsMS4wMDMzLDEuMDQyNiwuOTcwNDIsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLDEsMSwxLjA1ODE1LC45NzkyMiwxLjA1ODE1LC45NzkyMiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwuOTc0NDEsMS4wNDMwMiwuNzk2MzEsMS4wMTU4MiwxLDEsMS4wMTA1NCwuODM4NTMsMS4xNDIzNiwxLDEsLjgzODUzLDEuMDkxMjUsLjgzODUzLC45MDQxOCwuODM4NTMsMS4xOTUwOCwxLjEwNjE1LC45NzkyMiwxLDEsMS4xMDYxNSwuOTc5MjIsMS4wMTAzNCwxLjEwNDY2LC45NzkyMiwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTE2MDIsLjkxOTgxLC44ODY0MSwxLjAyNzYsMSwxLC44ODY0MSwxLjAyNzYsLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwxLDEsLjk2MDgzLDEuMDU0MDMsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsLjkxMTQyLC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LDEuMjMxOTksMS4wMzYsLjk3MzYzLDEuMDY1ODUsLjk0Mzg1LC45NjcwNSwuOTc1NTIsLjk0MTY1LDEsMSwuOTYwODMsMS4xMjYxLDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LC45NTE2MSwxLjI3MTI2LDEuMDA4MTEsLjgzMjg0LC43NzcwMiwuOTkxMzcsLjk1MjUzLDEuMDM0NywuODYxNDIsMS4wNzIwNSwxLjE0MjM2LC45NzM2MywuODk3MjMsLjg2ODY5LDEuMDk4MTgsLjc5NDI5LC45OTM2MSwxLjA1ODE1LC45NzU1MiwxLjE0MDYsLjkwMTI4LDEuMDY2NjIsMS4wNDM5NiwxLjEwNjE1LC44NDkxOCwuOTc1NTIsMS4wNDY5NCwuOTQ0MzYsLjk4MDE1LC45NjA4MywuOTExNDIsMS4wMDM1NiwuOTgxNywxLjAxOTQ1LC45ODk5OSwxLjE0MDYsLjkxMTQyLDEuMDQ5NjEsLjk4OTgsMS4wMDYzOSwxLjE0MjM2LDEuMDc1MTQsMS4wNDk2MSwuOTk2MDcsMS4wMjg5NywxLjAwOCwuOTg5OCwuOTUxMzQsMS4wMDYzOSwxLjExMTIxLDEuMTQyMzYsMS4wMDUxOCwuOTc5ODEsMS4wMjE4NiwxLDEuMDg1NzgsLjk0MTY1LC45OTMxNCwuOTgzODcsLjkzMDI4LC45MzM3NywxLjM1MTI1LDEuMDc1MTQsMS4xMDY4NywuOTM0OTEsMS4wNDIzMiwxLjAwMzUxLDEuMTQyMzYsMS4wNzUxNCwuOTQxNjUsMS4wNzUxNCwxLjAwMzUxLC43OTQyOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5MDk3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MzUwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY2MDksMSwxLDEsMSwxLDEsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwxLDEuMjEyNjEsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzI5NTksLjcyOTU5LDEuMjA1MDIsLjkxNDA2LDEuMjY1MTQsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjA5MTI1LC45MzMyNywxLjAzMzM2LDEuMTY1NDEsMS4wMzYsMSwxLDEsLjc3MSwxLDEsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwuODYzNjQsLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MjI0LDEsMSwxLjE2Nzk4LDEsLjk2MDg1LC45MDA2OCwxLjIxMjM3LDEuMTg0MTYsMS4xMzkwNCwuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTMzOSwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4Nzc1LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMzI2OSwxLjEzMjY5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LlNlZ29ldWlCb2xkSXRhbGljTWV0cmljcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sdC5TZWdvZXVpSXRhbGljRmFjdG9ycz1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMTQ3NjMsMS4wNTM2NSwxLjA2MjM0LC45NjkyNywuOTI1ODYsMS4xNTM3MywxLjE4NDE0LC45MTM0OSwuOTEzNDksMS4wNzQwMywxLjE3MzA4LC43ODM4MywxLjIwMDg4LC43ODM4MywxLjQyNTMxLC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgzODMsLjc4MzgzLDEuMTczMDgsMS4xNzMwOCwxLjE3MzA4LC43NzM0OSwuOTQ1NjUsLjk0NzI5LC44NTk0NCwuODg1MDYsLjk4NTgsLjc0ODE3LC44MDAxNiwuODg0NDksLjk4MDM5LC45NTc4MiwuNjkyMzgsLjg5ODk4LC44MzIzMSwuOTgxODMsMS4wMzk4OSwuOTY5MjQsLjg2MjM3LC45NjkyNCwuODA1OTUsLjc0NTI0LC44NjA5MSwuOTU0MDIsLjk0MTQzLC45ODQ0OCwuODg1OCwuODMwODksLjkzMjg1LDEuMDk0OSwxLjM5MDE2LDEuMDk0OSwxLjQ1OTk0LC43NDYyNywxLjA0ODM5LC45NzQ1NCwuOTc0NTQsLjg3MjA3LC45NzQ1NCwuODc1MzMsMS4wNjE1MSwuOTc0NTQsMS4wMDE3NiwxLjE2NDg0LDEuMDgxMzIsLjk4MDQ3LDEuMTY0ODQsMS4wMjk4OSwxLjAxMDU0LC45NjIyNSwuOTc0NTQsLjk3NDU0LDEuMDY1OTgsLjc5MDA0LDEuMTYzNDQsMS4wMDM1MSwuOTQ2MjksLjk5NzMsLjkxMDE2LC45Njc3NywuOTA0MywuOTEwODIsLjkyNDgxLC45MTA4MiwxLjE3MzA4LC45NTc0OCwuOTY5MjcsLjk2OTI3LDEsLjk2OTI3LC45MjQ4MSwuODA1OTcsMS4wNDgzOSwxLjIzMzkzLDEuMTc4MSwuOTI0NSwxLjE3MzA4LDEuMjA4MDgsLjYzMjE4LC45NDI2MSwxLjI0ODIyLDEuMDk5NzEsMS4wOTk3MSwxLjA0ODM5LDEsLjg1MjczLC43ODAzMiwxLjA0ODM5LDEuMDk5NzEsMS4yMjMyNiwuOTI0NSwxLjA5ODM2LDEuMTM1MjUsMS4xNTIyMiwuNzA0MjQsLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjg1NDk4LC44ODUwNiwuNzQ4MTcsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45ODU4LDEuMDM5ODksLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MzA4LC45NjkyNCwuOTU0MDIsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjgzMDg5LC44NjIzNywuODg0MDksLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjkyOTE2LC44NzIwNywuODc1MzMsLjg3NTMzLC44NzUzMywuODc1MzMsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45Mzg1NCwxLjAxMDU0LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsMS4yNDgyMiwuODc2MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLC45Njc3NywuOTc0NTQsLjk2Nzc3LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjk4NTgsLjk1MzkxLC45ODU4LC45NzQ1NCwuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsMSwxLC45ODAzOSwxLjAwMTc2LC45ODAzOSwxLjAwMTc2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwxLjE2NDg0LC45NTc4MiwuOTMxNDYsLjg0NDIxLDEuMTI3NjEsLjY5MjM4LDEuMDgxMzIsMSwxLC45ODA0NywuODMyMzEsMS4xNjQ4NCwxLDEsLjg0NzIzLDEuMDQ4NjEsLjg0NzIzLC43ODc1NSwuODMyMzEsMS4yMzczNiwxLjAzOTg5LDEuMDEwNTQsMSwxLDEuMDM5ODksMS4wMTA1NCwuOTg1NywxLjAzODQ5LDEuMDEwNTQsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjkyMzgzLC45MDE3MSwuODA1OTUsMS4wNjU5OCwxLDEsLjgwNTk1LDEuMDY1OTgsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwxLDEsLjg2MDkxLDEuMDI3NTksLjg1NzcxLDEuMTYzNDQsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk1NDAyLDEuMDAzNTEsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsLjgzMDg5LC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLDEuMzE4NjgsLjk2OTI3LC45NDcyOSwuOTc0NTQsLjg1NDk4LC45MjkxNiwuOTY5MjQsLjg3NjEsMSwxLC44NjA5MSwxLjE2MzQ0LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LC44MTk2NSwuODE5NjUsLjk0NzI5LC43ODAzMiwuNzEwMjIsLjkwODgzLC44NDE3MSwuOTk4NzcsLjc3NTk2LDEuMDU3MzQsMS4yLC45NDcyOSwuODU5NDQsLjgyNzkxLC45NjA3LC43NDgxNywuOTMyODUsLjk4MDM5LC45NjkyNCwuOTU3ODIsLjg5ODk4LC45ODMxNiwuOTgxODMsMS4wMzk4OSwuNzg2MTQsLjk2OTI0LC45NzY0MiwuODYyMzcsLjg2MDc1LC44NjA5MSwuODMwODksLjkwMDgyLC44ODU4LC45NzI5NiwxLjAxMjg0LC45NTc4MiwuODMwODksMS4wOTc2LDEuMDQsMS4wMzM0MiwxLjIsMS4wNjc1LDEuMDk3NiwuOTgyMDUsMS4wMzgwOSwxLjA1MDk3LDEuMDQsLjk1MzY0LDEuMDMzNDIsMS4wNTQwMSwxLjIsMS4wMjE0OCwxLjAxMTksMS4wNDcyNCwxLjAxMjcsMS4wMjczMiwuOTYyMjUsLjg5NjUsLjk3NzgzLC45MzU3NCwuOTQ4MTgsMS4zMDY3OSwxLjA2NzUsMS4xMTgyNiwuOTk4MjEsMS4wNTU3LDEuMDMyNiwxLjIsMS4wNjc1LC45NjIyNSwxLjA2NzUsMS4wMzI2LC43NDgxNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAzNzU0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzUzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTg3MDUsMSwxLDEsMSwxLDEsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LDEuMTIzMTcsMS4xMjMxNywxLjEyMzE3LC42NzYwMywuNjc2MDMsMS4xNTYyMSwuNzM1ODQsMS4yMTE5MSwxLjIyMTM1LDEuMDY0ODMsLjk0ODY4LC45NDg2OCwuOTU5OTYsMS4yNDYzMywxLDEuMDc0OTcsLjg3NzA5LC45NjkyNywxLjAxNDczLC45NjkyNywxLDEsMSwuNzcyOTUsMSwxLDEuMDk4MzYsMS4wOTgzNiwxLjA5ODM2LDEuMDE1MjIsLjg2MzIxLC45NDQzNCwuODY0OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY0MzgsMS4xNzMwOCwxLjE4NDE2LDEuMTQ1ODksLjY5ODI1LC45NzYyMiwxLjk2NzkxLDEuMjQ4MjIsMS4yNDgyMiwxLjE3MzA4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTc5ODQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwNzQyLDEuMTA3NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHQuU2Vnb2V1aUl0YWxpY01ldHJpY3M9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHQuU2Vnb2V1aVJlZ3VsYXJGYWN0b3JzPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx0LlNlZ29ldWlSZWd1bGFyTWV0cmljcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Qb3N0U2NyaXB0RXZhbHVhdG9yPXQuUG9zdFNjcmlwdENvbXBpbGVyPXQuUERGRnVuY3Rpb25GYWN0b3J5PXZvaWQgMCx0LmlzUERGRnVuY3Rpb249ZnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIG4uRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBvLkJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9LHIoMikscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDE1OSk7dmFyIG49cigxNTApLGE9cigxNDQpLHM9cigyMDgpLG89cigxNTEpLGM9cigyMDkpO2Z1bmN0aW9uIGwoZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmxlbmd0aDtmb3IobGV0IHI9MDtyPHQ7cisrKWlmKCJudW1iZXIiIT10eXBlb2YgZVtyXSl7Y29uc3Qgcj1uZXcgQXJyYXkodCk7Zm9yKGxldCBuPTA7bjx0O24rKylyW25dPStlW25dO3JldHVybiByfXJldHVybiBlfXQuUERGRnVuY3Rpb25GYWN0b3J5PWNsYXNze2NvbnN0cnVjdG9yKGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnI9ITB9PWU7dGhpcy54cmVmPXQsdGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT1yfWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3Qgcj1oLnBhcnNlKHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm46ZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7cmV0dXJuIHRoaXMuX2NhY2hlKGUscikscn1jcmVhdGVGcm9tQXJyYXkoZSl7Y29uc3QgdD10aGlzLmdldENhY2hlZChlKTtpZih0KXJldHVybiB0O2NvbnN0IHI9aC5wYXJzZUFycmF5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm5PYmo6ZSBpbnN0YW5jZW9mIG4uUmVmP3RoaXMueHJlZi5mZXRjaChlKTplfSk7cmV0dXJuIHRoaXMuX2NhY2hlKGUscikscn1nZXRDYWNoZWQoZSl7dmFyIHQ7bGV0IHI7aWYoZSBpbnN0YW5jZW9mIG4uUmVmP3I9ZTplIGluc3RhbmNlb2Ygbi5EaWN0P3I9ZS5vYmpJZDplIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiYocj1udWxsPT09KHQ9ZS5kaWN0KXx8dm9pZCAwPT09dD92b2lkIDA6dC5vYmpJZCkscil7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYocik7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fY2FjaGUoZSx0KXt2YXIgcjtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO2xldCBhO2UgaW5zdGFuY2VvZiBuLlJlZj9hPWU6ZSBpbnN0YW5jZW9mIG4uRGljdD9hPWUub2JqSWQ6ZSBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSYmKGE9bnVsbD09PShyPWUuZGljdCl8fHZvaWQgMD09PXI/dm9pZCAwOnIub2JqSWQpLGEmJnRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5zZXQobnVsbCxhLHQpfWdldCBfbG9jYWxGdW5jdGlvbkNhY2hlKCl7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIl9sb2NhbEZ1bmN0aW9uQ2FjaGUiLG5ldyBjLkxvY2FsRnVuY3Rpb25DYWNoZSl9fTtjbGFzcyBoe3N0YXRpYyBnZXRTYW1wbGVBcnJheShlLHQscixuKXtsZXQgYSxpLHM9MTtmb3IoYT0wLGk9ZS5sZW5ndGg7YTxpO2ErKylzKj1lW2FdO3MqPXQ7Y29uc3Qgbz1uZXcgQXJyYXkocyk7bGV0IGM9MCxsPTA7Y29uc3QgaD0xLygyKipyLTEpLHU9bi5nZXRCeXRlcygocypyKzcpLzgpO2xldCBkPTA7Zm9yKGE9MDthPHM7YSsrKXtmb3IoO2M8cjspbDw8PTgsbHw9dVtkKytdLGMrPTg7Yy09cixvW2FdPShsPj5jKSpoLGwmPSgxPDxjKS0xfXJldHVybiBvfXN0YXRpYyBwYXJzZShlKXtsZXR7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGZuOm59PWU7Y29uc3QgaT1uLmRpY3R8fG47c3dpdGNoKGkuZ2V0KCJGdW5jdGlvblR5cGUiKSl7Y2FzZSAwOnJldHVybiB0aGlzLmNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixmbjpuLGRpY3Q6aX0pO2Nhc2UgMTpicmVhaztjYXNlIDI6cmV0dXJuIHRoaXMuY29uc3RydWN0SW50ZXJwb2xhdGVkKHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZGljdDppfSk7Y2FzZSAzOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixkaWN0Oml9KTtjYXNlIDQ6cmV0dXJuIHRoaXMuY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGZuOm4sZGljdDppfSl9dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZm5PYmo6bn09ZTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gdGhpcy5wYXJzZSh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGZuOm59KTtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIG4pYS5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixmbjp0LmZldGNoSWZSZWYoZSl9KSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe2ZvcihsZXQgaT0wLHM9YS5sZW5ndGg7aTxzO2krKylhW2ldKGUsdCxyLG4raSl9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZm46bixkaWN0Oml9PWU7ZnVuY3Rpb24gcyhlKXtjb25zdCB0PWUubGVuZ3RoLHI9W107bGV0IG49MDtmb3IobGV0IGE9MDthPHQ7YSs9MilyW24rK109W2VbYV0sZVthKzFdXTtyZXR1cm4gcn1mdW5jdGlvbiBvKGUsdCxyLG4sYSl7cmV0dXJuIG4rKGEtbikvKHItdCkqKGUtdCl9bGV0IGM9bChpLmdldEFycmF5KCJEb21haW4iKSksaD1sKGkuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFjfHwhaCl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiTm8gZG9tYWluIG9yIHJhbmdlIik7Y29uc3QgdT1jLmxlbmd0aC8yLGQ9aC5sZW5ndGgvMjtjPXMoYyksaD1zKGgpO2NvbnN0IGY9bChpLmdldEFycmF5KCJTaXplIikpLGc9aS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxwPWkuZ2V0KCJPcmRlciIpfHwxOzEhPT1wJiYoMCxhLmluZm8pKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitwKTtsZXQgbT1sKGkuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZihtKW09cyhtKTtlbHNle209W107Zm9yKGxldCBlPTA7ZTx1OysrZSltLnB1c2goWzAsZltlXS0xXSl9bGV0IGI9bChpLmdldEFycmF5KCJEZWNvZGUiKSk7Yj1iP3MoYik6aDtjb25zdCB5PXRoaXMuZ2V0U2FtcGxlQXJyYXkoZixkLGcsbik7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe2NvbnN0IGE9MTw8dSxpPW5ldyBGbG9hdDY0QXJyYXkoYSkscz1uZXcgVWludDMyQXJyYXkoYSk7bGV0IGwsZztmb3IoZz0wO2c8YTtnKyspaVtnXT0xO2xldCBwPWQsdz0xO2ZvcihsPTA7bDx1OysrbCl7Y29uc3Qgcj1jW2xdWzBdLG49Y1tsXVsxXTtsZXQgaD1vKE1hdGgubWluKE1hdGgubWF4KGVbdCtsXSxyKSxuKSxyLG4sbVtsXVswXSxtW2xdWzFdKTtjb25zdCB1PWZbbF07aD1NYXRoLm1pbihNYXRoLm1heChoLDApLHUtMSk7Y29uc3QgZD1oPHUtMT9NYXRoLmZsb29yKGgpOmgtMSxiPWQrMS1oLHk9aC1kLHY9ZCpwLHg9ditwO2ZvcihnPTA7ZzxhO2crKylnJnc/KGlbZ10qPXksc1tnXSs9eCk6KGlbZ10qPWIsc1tnXSs9dik7cCo9dSx3PDw9MX1mb3IoZz0wO2c8ZDsrK2cpe2xldCBlPTA7Zm9yKGw9MDtsPGE7bCsrKWUrPXlbc1tsXStnXSppW2xdO2U9byhlLDAsMSxiW2ddWzBdLGJbZ11bMV0pLHJbbitnXT1NYXRoLm1pbihNYXRoLm1heChlLGhbZ11bMF0pLGhbZ11bMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZChlKXtsZXR7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGRpY3Q6bn09ZTtjb25zdCBhPWwobi5nZXRBcnJheSgiQzAiKSl8fFswXSxpPWwobi5nZXRBcnJheSgiQzEiKSl8fFsxXSxzPW4uZ2V0KCJOIiksbz1bXTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDsrK2Upby5wdXNoKGlbZV0tYVtlXSk7Y29uc3QgYz1vLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7Y29uc3QgaT0xPT09cz9lW3RdOmVbdF0qKnM7Zm9yKGxldCBlPTA7ZTxjOysrZSlyW24rZV09YVtlXStpKm9bZV19fXN0YXRpYyBjb25zdHJ1Y3RTdGljaGVkKGUpe2xldHt4cmVmOnQsaXNFdmFsU3VwcG9ydGVkOnIsZGljdDpufT1lO2NvbnN0IGk9bChuLmdldEFycmF5KCJEb21haW4iKSk7aWYoIWkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiIpO2lmKDEhPWkubGVuZ3RoLzIpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkJhZCBkb21haW4gZm9yIHN0aWNoZWQgZnVuY3Rpb24iKTtjb25zdCBzPVtdO2Zvcihjb25zdCBlIG9mIG4uZ2V0KCJGdW5jdGlvbnMiKSlzLnB1c2godGhpcy5wYXJzZSh7eHJlZjp0LGlzRXZhbFN1cHBvcnRlZDpyLGZuOnQuZmV0Y2hJZlJlZihlKX0pKTtjb25zdCBvPWwobi5nZXRBcnJheSgiQm91bmRzIikpLGM9bChuLmdldEFycmF5KCJFbmNvZGUiKSksaD1uZXcgRmxvYXQzMkFycmF5KDEpO3JldHVybiBmdW5jdGlvbihlLHQscixuKXtjb25zdCBhPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT5yP2U9cjplPHQmJihlPXQpLGV9KGVbdF0saVswXSxpWzFdKSxsPW8ubGVuZ3RoO2xldCB1O2Zvcih1PTA7dTxsJiYhKGE8b1t1XSk7Kyt1KTtsZXQgZD1pWzBdO3U+MCYmKGQ9b1t1LTFdKTtsZXQgZj1pWzFdO3U8by5sZW5ndGgmJihmPW9bdV0pO2NvbnN0IGc9Y1syKnVdLHA9Y1syKnUrMV07aFswXT1kPT09Zj9nOmcrKGEtZCkqKHAtZykvKGYtZCksc1t1XShoLDAscixuKX19c3RhdGljIGNvbnN0cnVjdFBvc3RTY3JpcHQoZSl7bGV0e3hyZWY6dCxpc0V2YWxTdXBwb3J0ZWQ6cixmbjpuLGRpY3Q6aX09ZTtjb25zdCBvPWwoaS5nZXRBcnJheSgiRG9tYWluIikpLGM9bChpLmdldEFycmF5KCJSYW5nZSIpKTtpZighbyl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFjKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCBoPW5ldyBzLlBvc3RTY3JpcHRMZXhlcihuKSx1PW5ldyBzLlBvc3RTY3JpcHRQYXJzZXIoaCkucGFyc2UoKTtpZihyJiZhLkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgZT0obmV3IEMpLmNvbXBpbGUodSxvLGMpO2lmKGUpcmV0dXJuIG5ldyBGdW5jdGlvbigic3JjIiwic3JjT2Zmc2V0IiwiZGVzdCIsImRlc3RPZmZzZXQiLGUpfSgwLGEuaW5mbykoIlVuYWJsZSB0byBjb21waWxlIFBTIGZ1bmN0aW9uIik7Y29uc3QgZj1jLmxlbmd0aD4+MSxnPW8ubGVuZ3RoPj4xLHA9bmV3IGQodSksbT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBiPTgxOTI7Y29uc3QgeT1uZXcgRmxvYXQzMkFycmF5KGcpO3JldHVybiBmdW5jdGlvbihlLHQscixuKXtsZXQgYSxpLHM9IiI7Y29uc3Qgbz15O2ZvcihhPTA7YTxnO2ErKylpPWVbdCthXSxvW2FdPWkscys9aSsiXyI7Y29uc3QgbD1tW3NdO2lmKHZvaWQgMCE9PWwpcmV0dXJuIHZvaWQgci5zZXQobCxuKTtjb25zdCBoPW5ldyBGbG9hdDMyQXJyYXkoZiksdT1wLmV4ZWN1dGUobyksZD11Lmxlbmd0aC1mO2ZvcihhPTA7YTxmO2ErKyl7aT11W2QrYV07bGV0IGU9Y1syKmFdO2k8ZT9pPWU6KGU9Y1syKmErMV0saT5lJiYoaT1lKSksaFthXT1pfWI+MCYmKGItLSxtW3NdPWgpLHIuc2V0KGgsbil9fX1jbGFzcyB1e2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PXUuTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO3RoaXMuc3RhY2sucHVzaChlKX1wb3AoKXtpZih0aGlzLnN0YWNrLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgdW5kZXJmbG93LiIpO3JldHVybiB0aGlzLnN0YWNrLnBvcCgpfWNvcHkoZSl7aWYodGhpcy5zdGFjay5sZW5ndGgrZT49dS5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgcj10Lmxlbmd0aC1lLG49ZS0xO24+PTA7bi0tLHIrKyl0LnB1c2godFtyXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IHI9dGhpcy5zdGFjayxuPXIubGVuZ3RoLWUsYT1yLmxlbmd0aC0xLGk9bisodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPW4sdD1hO2U8dDtlKyssdC0tKXtjb25zdCBuPXJbZV07cltlXT1yW3RdLHJbdF09bn1mb3IobGV0IGU9bix0PWktMTtlPHQ7ZSsrLHQtLSl7Y29uc3Qgbj1yW2VdO3JbZV09clt0XSxyW3RdPW59Zm9yKGxldCBlPWksdD1hO2U8dDtlKyssdC0tKXtjb25zdCBuPXJbZV07cltlXT1yW3RdLHJbdF09bn19fWkodSwiTUFYX1NUQUNLX1NJWkUiLDEwMCk7Y2xhc3MgZHtjb25zdHJ1Y3RvcihlKXt0aGlzLm9wZXJhdG9ycz1lfWV4ZWN1dGUoZSl7Y29uc3QgdD1uZXcgdShlKTtsZXQgcj0wO2NvbnN0IG49dGhpcy5vcGVyYXRvcnMsaT1uLmxlbmd0aDtsZXQgcyxvLGM7Zm9yKDtyPGk7KWlmKHM9bltyKytdLCJudW1iZXIiIT10eXBlb2Ygcylzd2l0Y2gocyl7Y2FzZSJqeiI6Yz10LnBvcCgpLG89dC5wb3AoKSxvfHwocj1jKTticmVhaztjYXNlImoiOm89dC5wb3AoKSxyPW87YnJlYWs7Y2FzZSJhYnMiOm89dC5wb3AoKSx0LnB1c2goTWF0aC5hYnMobykpO2JyZWFrO2Nhc2UiYWRkIjpjPXQucG9wKCksbz10LnBvcCgpLHQucHVzaChvK2MpO2JyZWFrO2Nhc2UiYW5kIjpjPXQucG9wKCksbz10LnBvcCgpLCJib29sZWFuIj09dHlwZW9mIG8mJiJib29sZWFuIj09dHlwZW9mIGM/dC5wdXNoKG8mJmMpOnQucHVzaChvJmMpO2JyZWFrO2Nhc2UiYXRhbiI6Yz10LnBvcCgpLG89dC5wb3AoKSxvPU1hdGguYXRhbjIobyxjKS9NYXRoLlBJKjE4MCxvPDAmJihvKz0zNjApLHQucHVzaChvKTticmVhaztjYXNlImJpdHNoaWZ0IjpjPXQucG9wKCksbz10LnBvcCgpLG8+MD90LnB1c2gobzw8Yyk6dC5wdXNoKG8+PmMpO2JyZWFrO2Nhc2UiY2VpbGluZyI6bz10LnBvcCgpLHQucHVzaChNYXRoLmNlaWwobykpO2JyZWFrO2Nhc2UiY29weSI6bz10LnBvcCgpLHQuY29weShvKTticmVhaztjYXNlImNvcyI6bz10LnBvcCgpLHQucHVzaChNYXRoLmNvcyhvJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2UiY3ZpIjpvPTB8dC5wb3AoKSx0LnB1c2gobyk7YnJlYWs7Y2FzZSJjdnIiOmJyZWFrO2Nhc2UiZGl2IjpjPXQucG9wKCksbz10LnBvcCgpLHQucHVzaChvL2MpO2JyZWFrO2Nhc2UiZHVwIjp0LmNvcHkoMSk7YnJlYWs7Y2FzZSJlcSI6Yz10LnBvcCgpLG89dC5wb3AoKSx0LnB1c2gobz09PWMpO2JyZWFrO2Nhc2UiZXhjaCI6dC5yb2xsKDIsMSk7YnJlYWs7Y2FzZSJleHAiOmM9dC5wb3AoKSxvPXQucG9wKCksdC5wdXNoKG8qKmMpO2JyZWFrO2Nhc2UiZmFsc2UiOnQucHVzaCghMSk7YnJlYWs7Y2FzZSJmbG9vciI6bz10LnBvcCgpLHQucHVzaChNYXRoLmZsb29yKG8pKTticmVhaztjYXNlImdlIjpjPXQucG9wKCksbz10LnBvcCgpLHQucHVzaChvPj1jKTticmVhaztjYXNlImd0IjpjPXQucG9wKCksbz10LnBvcCgpLHQucHVzaChvPmMpO2JyZWFrO2Nhc2UiaWRpdiI6Yz10LnBvcCgpLG89dC5wb3AoKSx0LnB1c2goby9jfDApO2JyZWFrO2Nhc2UiaW5kZXgiOm89dC5wb3AoKSx0LmluZGV4KG8pO2JyZWFrO2Nhc2UibGUiOmM9dC5wb3AoKSxvPXQucG9wKCksdC5wdXNoKG88PWMpO2JyZWFrO2Nhc2UibG4iOm89dC5wb3AoKSx0LnB1c2goTWF0aC5sb2cobykpO2JyZWFrO2Nhc2UibG9nIjpvPXQucG9wKCksdC5wdXNoKE1hdGgubG9nMTAobykpO2JyZWFrO2Nhc2UibHQiOmM9dC5wb3AoKSxvPXQucG9wKCksdC5wdXNoKG88Yyk7YnJlYWs7Y2FzZSJtb2QiOmM9dC5wb3AoKSxvPXQucG9wKCksdC5wdXNoKG8lYyk7YnJlYWs7Y2FzZSJtdWwiOmM9dC5wb3AoKSxvPXQucG9wKCksdC5wdXNoKG8qYyk7YnJlYWs7Y2FzZSJuZSI6Yz10LnBvcCgpLG89dC5wb3AoKSx0LnB1c2gobyE9PWMpO2JyZWFrO2Nhc2UibmVnIjpvPXQucG9wKCksdC5wdXNoKC1vKTticmVhaztjYXNlIm5vdCI6bz10LnBvcCgpLCJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKCFvKTp0LnB1c2gofm8pO2JyZWFrO2Nhc2Uib3IiOmM9dC5wb3AoKSxvPXQucG9wKCksImJvb2xlYW4iPT10eXBlb2YgbyYmImJvb2xlYW4iPT10eXBlb2YgYz90LnB1c2gob3x8Yyk6dC5wdXNoKG98Yyk7YnJlYWs7Y2FzZSJwb3AiOnQucG9wKCk7YnJlYWs7Y2FzZSJyb2xsIjpjPXQucG9wKCksbz10LnBvcCgpLHQucm9sbChvLGMpO2JyZWFrO2Nhc2Uicm91bmQiOm89dC5wb3AoKSx0LnB1c2goTWF0aC5yb3VuZChvKSk7YnJlYWs7Y2FzZSJzaW4iOm89dC5wb3AoKSx0LnB1c2goTWF0aC5zaW4obyUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlInNxcnQiOm89dC5wb3AoKSx0LnB1c2goTWF0aC5zcXJ0KG8pKTticmVhaztjYXNlInN1YiI6Yz10LnBvcCgpLG89dC5wb3AoKSx0LnB1c2goby1jKTticmVhaztjYXNlInRydWUiOnQucHVzaCghMCk7YnJlYWs7Y2FzZSJ0cnVuY2F0ZSI6bz10LnBvcCgpLG89bzwwP01hdGguY2VpbChvKTpNYXRoLmZsb29yKG8pLHQucHVzaChvKTticmVhaztjYXNlInhvciI6Yz10LnBvcCgpLG89dC5wb3AoKSwiYm9vbGVhbiI9PXR5cGVvZiBvJiYiYm9vbGVhbiI9PXR5cGVvZiBjP3QucHVzaChvIT09Yyk6dC5wdXNoKG9eYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiVW5rbm93biBvcGVyYXRvciAiLmNvbmNhdChzKSl9ZWxzZSB0LnB1c2gocyk7cmV0dXJuIHQuc3RhY2t9fXQuUG9zdFNjcmlwdEV2YWx1YXRvcj1kO2NsYXNzIGZ7Y29uc3RydWN0b3IoZSl7dGhpcy50eXBlPWV9dmlzaXQoZSl7KDAsYS51bnJlYWNoYWJsZSkoImFic3RyYWN0IG1ldGhvZCIpfX1jbGFzcyBnIGV4dGVuZHMgZntjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoImFyZ3MiKSx0aGlzLmluZGV4PWUsdGhpcy5taW49dCx0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgcCBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKSx0aGlzLm51bWJlcj1lLHRoaXMubWluPWUsdGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgbSBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSx0LHIsbixhKXtzdXBlcigiYmluYXJ5IiksdGhpcy5vcD1lLHRoaXMuYXJnMT10LHRoaXMuYXJnMj1yLHRoaXMubWluPW4sdGhpcy5tYXg9YX12aXNpdChlKXtlLnZpc2l0QmluYXJ5T3BlcmF0aW9uKHRoaXMpfX1jbGFzcyBiIGV4dGVuZHMgZntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJtYXgiKSx0aGlzLmFyZz1lLHRoaXMubWluPWUubWluLHRoaXMubWF4PXR9dmlzaXQoZSl7ZS52aXNpdE1pbih0aGlzKX19Y2xhc3MgeSBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSx0LHIpe3N1cGVyKCJ2YXIiKSx0aGlzLmluZGV4PWUsdGhpcy5taW49dCx0aGlzLm1heD1yfXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZSh0aGlzKX19Y2xhc3MgdyBleHRlbmRzIGZ7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigiZGVmaW5pdGlvbiIpLHRoaXMudmFyaWFibGU9ZSx0aGlzLmFyZz10fXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZURlZmluaXRpb24odGhpcyl9fWNsYXNzIHZ7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS5tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpLGUuYXJnMS52aXNpdCh0aGlzKSx0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKSxlLmFyZzIudmlzaXQodGhpcyksdGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIiksZS52YXJpYWJsZS52aXNpdCh0aGlzKSx0aGlzLnBhcnRzLnB1c2goIiA9ICIpLGUuYXJnLnZpc2l0KHRoaXMpLHRoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIiksZS5hcmcudmlzaXQodGhpcyksdGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiB4KGUsdCl7cmV0dXJuImxpdGVyYWwiPT09dC50eXBlJiYwPT09dC5udW1iZXI/ZToibGl0ZXJhbCI9PT1lLnR5cGUmJjA9PT1lLm51bWJlcj90OiJsaXRlcmFsIj09PXQudHlwZSYmImxpdGVyYWwiPT09ZS50eXBlP25ldyBwKGUubnVtYmVyK3QubnVtYmVyKTpuZXcgbSgiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBTKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIG5ldyBwKDApO2lmKDE9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBwKGUubnVtYmVyKnQubnVtYmVyKX1pZigibGl0ZXJhbCI9PT1lLnR5cGUpe2lmKDA9PT1lLm51bWJlcilyZXR1cm4gbmV3IHAoMCk7aWYoMT09PWUubnVtYmVyKXJldHVybiB0fWNvbnN0IHI9TWF0aC5taW4oZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpLG49TWF0aC5tYXgoZS5taW4qdC5taW4sZS5taW4qdC5tYXgsZS5tYXgqdC5taW4sZS5tYXgqdC5tYXgpO3JldHVybiBuZXcgbSgiKiIsZSx0LHIsbil9ZnVuY3Rpb24gQShlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IHAoZS5udW1iZXItdC5udW1iZXIpfXJldHVybiJiaW5hcnkiPT09dC50eXBlJiYiLSI9PT10Lm9wJiYibGl0ZXJhbCI9PT1lLnR5cGUmJjE9PT1lLm51bWJlciYmImxpdGVyYWwiPT09dC5hcmcxLnR5cGUmJjE9PT10LmFyZzEubnVtYmVyP3QuYXJnMjpuZXcgbSgiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBrKGUsdCl7cmV0dXJuIGUubWluPj10P25ldyBwKHQpOmUubWF4PD10P2U6bmV3IGIoZSx0KX1jbGFzcyBDe2NvbXBpbGUoZSx0LHIpe2NvbnN0IG49W10sYT1bXSxpPXQubGVuZ3RoPj4xLHM9ci5sZW5ndGg+PjE7bGV0IG8sYyxsLGgsdSxkLGYsbSxiPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKyluLnB1c2gobmV3IGcoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYobT1lW3RdLCJudW1iZXIiIT10eXBlb2YgbSlzd2l0Y2gobSl7Y2FzZSJhZGQiOmlmKG4ubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1uLnBvcCgpLGw9bi5wb3AoKSxuLnB1c2goeChsLGgpKTticmVhaztjYXNlImN2ciI6aWYobi5sZW5ndGg8MSlyZXR1cm4gbnVsbDticmVhaztjYXNlIm11bCI6aWYobi5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPW4ucG9wKCksbD1uLnBvcCgpLG4ucHVzaChTKGwsaCkpO2JyZWFrO2Nhc2Uic3ViIjppZihuLmxlbmd0aDwyKXJldHVybiBudWxsO2g9bi5wb3AoKSxsPW4ucG9wKCksbi5wdXNoKEEobCxoKSk7YnJlYWs7Y2FzZSJleGNoIjppZihuLmxlbmd0aDwyKXJldHVybiBudWxsO3U9bi5wb3AoKSxkPW4ucG9wKCksbi5wdXNoKHUsZCk7YnJlYWs7Y2FzZSJwb3AiOmlmKG4ubGVuZ3RoPDEpcmV0dXJuIG51bGw7bi5wb3AoKTticmVhaztjYXNlImluZGV4IjppZihuLmxlbmd0aDwxKXJldHVybiBudWxsO2lmKGw9bi5wb3AoKSwibGl0ZXJhbCIhPT1sLnR5cGUpcmV0dXJuIG51bGw7aWYobz1sLm51bWJlcixvPDB8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHxuLmxlbmd0aDxvKXJldHVybiBudWxsO2lmKHU9bltuLmxlbmd0aC1vLTFdLCJsaXRlcmFsIj09PXUudHlwZXx8InZhciI9PT11LnR5cGUpe24ucHVzaCh1KTticmVha31mPW5ldyB5KGIrKyx1Lm1pbix1Lm1heCksbltuLmxlbmd0aC1vLTFdPWYsbi5wdXNoKGYpLGEucHVzaChuZXcgdyhmLHUpKTticmVhaztjYXNlImR1cCI6aWYobi5sZW5ndGg8MSlyZXR1cm4gbnVsbDtpZigibnVtYmVyIj09dHlwZW9mIGVbdCsxXSYmImd0Ij09PWVbdCsyXSYmZVt0KzNdPT09dCs3JiYianoiPT09ZVt0KzRdJiYicG9wIj09PWVbdCs1XSYmZVt0KzZdPT09ZVt0KzFdKXtsPW4ucG9wKCksbi5wdXNoKGsobCxlW3QrMV0pKSx0Kz02O2JyZWFrfWlmKHU9bi5hdCgtMSksImxpdGVyYWwiPT09dS50eXBlfHwidmFyIj09PXUudHlwZSl7bi5wdXNoKHUpO2JyZWFrfWY9bmV3IHkoYisrLHUubWluLHUubWF4KSxuW24ubGVuZ3RoLTFdPWYsbi5wdXNoKGYpLGEucHVzaChuZXcgdyhmLHUpKTticmVhaztjYXNlInJvbGwiOmlmKG4ubGVuZ3RoPDIpcmV0dXJuIG51bGw7aWYoaD1uLnBvcCgpLGw9bi5wb3AoKSwibGl0ZXJhbCIhPT1oLnR5cGV8fCJsaXRlcmFsIiE9PWwudHlwZSlyZXR1cm4gbnVsbDtpZihjPWgubnVtYmVyLG89bC5udW1iZXIsbzw9MHx8IU51bWJlci5pc0ludGVnZXIobyl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMpfHxuLmxlbmd0aDxvKXJldHVybiBudWxsO2lmKGM9KGMlbytvKSVvLDA9PT1jKWJyZWFrO24ucHVzaCguLi5uLnNwbGljZShuLmxlbmd0aC1vLG8tYykpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9ZWxzZSBuLnB1c2gobmV3IHAobSkpO2lmKG4ubGVuZ3RoIT09cylyZXR1cm4gbnVsbDtjb25zdCBDPVtdO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0IHQ9bmV3IHY7ZS52aXNpdCh0KSxDLnB1c2godC50b1N0cmluZygpKX1mb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9bltlXSxhPW5ldyB2O3QudmlzaXQoYSk7Y29uc3QgaT1yWzIqZV0scz1yWzIqZSsxXSxvPVthLnRvU3RyaW5nKCldO2k+dC5taW4mJihvLnVuc2hpZnQoIk1hdGgubWF4KCIsaSwiLCAiKSxvLnB1c2goIikiKSksczx0Lm1heCYmKG8udW5zaGlmdCgiTWF0aC5taW4oIixzLCIsICIpLG8ucHVzaCgiKSIpKSxvLnVuc2hpZnQoImRlc3RbZGVzdE9mZnNldCArICIsZSwiXSA9ICIpLG8ucHVzaCgiOyIpLEMucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gQy5qb2luKCJcbiIpfX10LlBvc3RTY3JpcHRDb21waWxlcj1DfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUG9zdFNjcmlwdFBhcnNlcj10LlBvc3RTY3JpcHRMZXhlcj12b2lkIDAscigxMzkpO3ZhciBuPXIoMTQ0KSxhPXIoMTUwKSxpPXIoMTQ5KTt0LlBvc3RTY3JpcHRQYXJzZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5sZXhlcj1lLHRoaXMub3BlcmF0b3JzPVtdLHRoaXMudG9rZW49bnVsbCx0aGlzLnByZXY9bnVsbH1uZXh0VG9rZW4oKXt0aGlzLnByZXY9dGhpcy50b2tlbix0aGlzLnRva2VuPXRoaXMubGV4ZXIuZ2V0VG9rZW4oKX1hY2NlcHQoZSl7cmV0dXJuIHRoaXMudG9rZW4udHlwZT09PWUmJih0aGlzLm5leHRUb2tlbigpLCEwKX1leHBlY3QoZSl7aWYodGhpcy5hY2NlcHQoZSkpcmV0dXJuITA7dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVuZXhwZWN0ZWQgc3ltYm9sOiBmb3VuZCAiLmNvbmNhdCh0aGlzLnRva2VuLnR5cGUsIiBleHBlY3RlZCAiKS5jb25jYXQoZSwiLiIpKX1wYXJzZSgpe3JldHVybiB0aGlzLm5leHRUb2tlbigpLHRoaXMuZXhwZWN0KHMuTEJSQUNFKSx0aGlzLnBhcnNlQmxvY2soKSx0aGlzLmV4cGVjdChzLlJCUkFDRSksdGhpcy5vcGVyYXRvcnN9cGFyc2VCbG9jaygpe2Zvcig7OylpZih0aGlzLmFjY2VwdChzLk5VTUJFUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2UgaWYodGhpcy5hY2NlcHQocy5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KHMuTEJSQUNFKSlyZXR1cm47dGhpcy5wYXJzZUNvbmRpdGlvbigpfX1wYXJzZUNvbmRpdGlvbigpe2NvbnN0IGU9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO2lmKHRoaXMub3BlcmF0b3JzLnB1c2gobnVsbCxudWxsKSx0aGlzLnBhcnNlQmxvY2soKSx0aGlzLmV4cGVjdChzLlJCUkFDRSksdGhpcy5hY2NlcHQocy5JRikpdGhpcy5vcGVyYXRvcnNbZV09dGhpcy5vcGVyYXRvcnMubGVuZ3RoLHRoaXMub3BlcmF0b3JzW2UrMV09Imp6IjtlbHNle2lmKCF0aGlzLmFjY2VwdChzLkxCUkFDRSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3Qgcj10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCksdGhpcy5leHBlY3Qocy5SQlJBQ0UpLHRoaXMuZXhwZWN0KHMuSUZFTFNFKSx0aGlzLm9wZXJhdG9yc1t0XT10aGlzLm9wZXJhdG9ycy5sZW5ndGgsdGhpcy5vcGVyYXRvcnNbdCsxXT0iaiIsdGhpcy5vcGVyYXRvcnNbZV09cix0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9fX19O2NvbnN0IHM9e0xCUkFDRTowLFJCUkFDRToxLE5VTUJFUjoyLE9QRVJBVE9SOjMsSUY6NCxJRkVMU0U6NX07Y2xhc3Mgb3tzdGF0aWMgZ2V0IG9wQ2FjaGUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywib3BDYWNoZSIsT2JqZWN0LmNyZWF0ZShudWxsKSl9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnR5cGU9ZSx0aGlzLnZhbHVlPXR9c3RhdGljIGdldE9wZXJhdG9yKGUpe3ZhciB0O3JldHVybih0PW8ub3BDYWNoZSlbZV18fCh0W2VdPW5ldyBvKHMuT1BFUkFUT1IsZSkpfXN0YXRpYyBnZXQgTEJSQUNFKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIkxCUkFDRSIsbmV3IG8ocy5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiUkJSQUNFIixuZXcgbyhzLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIklGIixuZXcgbyhzLklGLCJJRiIpKX1zdGF0aWMgZ2V0IElGRUxTRSgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJJRkVMU0UiLG5ldyBvKHMuSUZFTFNFLCJJRkVMU0UiKSl9fXQuUG9zdFNjcmlwdExleGVyPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWUsdGhpcy5uZXh0Q2hhcigpLHRoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBhLkVPRjtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCEoMCxpLmlzV2hpdGVTcGFjZSkodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IG8ocy5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6cmV0dXJuIHRoaXMubmV4dENoYXIoKSxvLkxCUkFDRTtjYXNlIDEyNTpyZXR1cm4gdGhpcy5uZXh0Q2hhcigpLG8uUkJSQUNFfWNvbnN0IHI9dGhpcy5zdHJCdWY7Zm9yKHIubGVuZ3RoPTAsclswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJih0Pj02NSYmdDw9OTB8fHQ+PTk3JiZ0PD0xMjIpOylyLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7Y29uc3Qgbj1yLmpvaW4oIiIpO3N3aXRjaChuLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaWYiOnJldHVybiBvLklGO2Nhc2UiaWZlbHNlIjpyZXR1cm4gby5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gby5nZXRPcGVyYXRvcihuKX19Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtjb25zdCB0PXRoaXMuc3RyQnVmO2Zvcih0Lmxlbmd0aD0wLHRbMF09U3RyaW5nLmZyb21DaGFyQ29kZShlKTsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCByPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4ocikpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOiAiLmNvbmNhdChyKSk7cmV0dXJuIHJ9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlJlZ2lvbmFsSW1hZ2VDYWNoZT10LkxvY2FsVGlsaW5nUGF0dGVybkNhY2hlPXQuTG9jYWxJbWFnZUNhY2hlPXQuTG9jYWxHU3RhdGVDYWNoZT10LkxvY2FsRnVuY3Rpb25DYWNoZT10LkxvY2FsQ29sb3JTcGFjZUNhY2hlPXQuR2xvYmFsSW1hZ2VDYWNoZT12b2lkIDAscigyKSxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNyk7dmFyIG49cigxNDQpLGE9cigxNTApO2NsYXNzIHN7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PXMmJigwLG4udW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlTG9jYWxDYWNoZS4iKSx0aGlzLl9vbmx5UmVmcz0hMD09PShudWxsPT1lP3ZvaWQgMDplLm9ubHlSZWZzKSx0aGlzLl9vbmx5UmVmc3x8KHRoaXMuX25hbWVSZWZNYXA9bmV3IE1hcCx0aGlzLl9pbWFnZU1hcD1uZXcgTWFwKSx0aGlzLl9pbWFnZUNhY2hlPW5ldyBhLlJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmKDAsbi51bnJlYWNoYWJsZSkoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxyKXsoMCxuLnVucmVhY2hhYmxlKSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19dC5Mb2NhbEltYWdlQ2FjaGU9Y2xhc3MgZXh0ZW5kcyBze3NldChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxyPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCksdGhpcy5faW1hZ2VDYWNoZS5wdXQodCxyKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUscil9fSx0LkxvY2FsQ29sb3JTcGFjZUNhY2hlPWNsYXNzIGV4dGVuZHMgc3tzZXQoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbCx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpLHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQscil9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLHIpfX0sdC5Mb2NhbEZ1bmN0aW9uQ2FjaGU9Y2xhc3MgZXh0ZW5kcyBze2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHQ9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCl9fSx0LkxvY2FsR1N0YXRlQ2FjaGU9Y2xhc3MgZXh0ZW5kcyBze3NldChlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxyPWFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwO2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsR1N0YXRlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFyZ3VtZW50LicpO2lmKHQpe2lmKHRoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpKXJldHVybjt0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpLHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQscil9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLHIpfX0sdC5Mb2NhbFRpbGluZ1BhdHRlcm5DYWNoZT1jbGFzcyBleHRlbmRzIHN7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdD1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZighZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsVGlsaW5nUGF0dGVybkNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpfX0sdC5SZWdpb25hbEltYWdlQ2FjaGU9Y2xhc3MgZXh0ZW5kcyBze2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHQ9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDA7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCdSZWdpb25hbEltYWdlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCl9fTtjbGFzcyBve2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IGEuUmVmU2V0Q2FjaGUsdGhpcy5faW1hZ2VDYWNoZT1uZXcgYS5SZWZTZXRDYWNoZX1nZXQgX2J5dGVTaXplKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0IF9jYWNoZUxpbWl0UmVhY2hlZCgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPG8uTUlOX0lNQUdFU19UT19DQUNIRXx8dGhpcy5fYnl0ZVNpemU8by5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2xldCByPXRoaXMuX3JlZkNhY2hlLmdldChlKTtyZXR1cm4gcnx8KHI9bmV3IFNldCx0aGlzLl9yZWZDYWNoZS5wdXQoZSxyKSksci5hZGQodCksIShyLnNpemU8by5OVU1fUEFHRVNfVEhSRVNIT0xEfHwhdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuX2NhY2hlTGltaXRSZWFjaGVkKX1hZGRCeXRlU2l6ZShlLHQpe2NvbnN0IHI9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7ciYmKHIuYnl0ZVNpemV8fChyLmJ5dGVTaXplPXQpKX1nZXREYXRhKGUsdCl7Y29uc3Qgcj10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIXIpcmV0dXJuIG51bGw7aWYoci5zaXplPG8uTlVNX1BBR0VTX1RIUkVTSE9MRClyZXR1cm4gbnVsbDtjb25zdCBuPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO3JldHVybiBuPyhyLmFkZCh0KSxuKTpudWxsfXNldERhdGEoZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgInNob3VsZENhY2hlIiB0byBoYXZlIGJlZW4gY2FsbGVkLicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHwodGhpcy5fY2FjaGVMaW1pdFJlYWNoZWQ/KDAsbi53YXJuKSgiR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gY2FjaGUgbGltaXQgcmVhY2hlZC4iKTp0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpKX1jbGVhcigpe2FyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF18fHRoaXMuX3JlZkNhY2hlLmNsZWFyKCksdGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1pKG8sIk5VTV9QQUdFU19USFJFU0hPTEQiLDIpLGkobywiTUlOX0lNQUdFU19UT19DQUNIRSIsMTApLGkobywiTUFYX0JZVEVfU0laRSIsNSpuLk1BWF9JTUFHRV9TSVpFX1RPX0NBQ0hFKSx0Lkdsb2JhbEltYWdlQ2FjaGU9b30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmJpZGk9ZnVuY3Rpb24oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOi0xLHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxnPSEwO2NvbnN0IHA9ZS5sZW5ndGg7aWYoMD09PXB8fHIpcmV0dXJuIHUoZSxnLHIpO2QubGVuZ3RoPXAsZi5sZW5ndGg9cDtsZXQgbSxiLHk9MDtmb3IobT0wO208cDsrK20pe2RbbV09ZS5jaGFyQXQobSk7Y29uc3QgdD1lLmNoYXJDb2RlQXQobSk7bGV0IHI9IkwiO3Q8PTI1NT9yPWFbdF06MTQyNDw9dCYmdDw9MTUyND9yPSJSIjoxNTM2PD10JiZ0PD0xNzkxPyhyPWlbMjU1JnRdLHJ8fCgwLG4ud2FybikoIkJpZGk6IGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXIgIit0LnRvU3RyaW5nKDE2KSkpOigxNzkyPD10JiZ0PD0yMjIwfHw2NDMzNjw9dCYmdDw9NjUwMjN8fDY1MTM2PD10JiZ0PD02NTI3OSkmJihyPSJBTCIpLCJSIiE9PXImJiJBTCIhPT1yJiYiQU4iIT09cnx8eSsrLGZbbV09cn1pZigwPT09eSlyZXR1cm4gZz0hMCx1KGUsZyk7LTE9PT10JiYoeS9wPC4zJiZwPjQ/KGc9ITAsdD0wKTooZz0hMSx0PTEpKTtjb25zdCB3PVtdO2ZvcihtPTA7bTxwOysrbSl3W21dPXQ7Y29uc3Qgdj1zKHQpPyJSIjoiTCIseD12LFM9eDtsZXQgQSxrPXg7Zm9yKG09MDttPHA7KyttKSJOU00iPT09ZlttXT9mW21dPWs6az1mW21dO2ZvcihrPXgsbT0wO208cDsrK20pQT1mW21dLCJFTiI9PT1BP2ZbbV09IkFMIj09PWs/IkFOIjoiRU4iOiJSIiE9PUEmJiJMIiE9PUEmJiJBTCIhPT1BfHwoaz1BKTtmb3IobT0wO208cDsrK20pQT1mW21dLCJBTCI9PT1BJiYoZlttXT0iUiIpO2ZvcihtPTE7bTxwLTE7KyttKSJFUyI9PT1mW21dJiYiRU4iPT09ZlttLTFdJiYiRU4iPT09ZlttKzFdJiYoZlttXT0iRU4iKSwiQ1MiIT09ZlttXXx8IkVOIiE9PWZbbS0xXSYmIkFOIiE9PWZbbS0xXXx8ZlttKzFdIT09ZlttLTFdfHwoZlttXT1mW20tMV0pO2ZvcihtPTA7bTxwOysrbSlpZigiRU4iPT09ZlttXSl7Zm9yKGxldCBlPW0tMTtlPj0wJiYiRVQiPT09ZltlXTstLWUpZltlXT0iRU4iO2ZvcihsZXQgZT1tKzE7ZTxwJiYiRVQiPT09ZltlXTsrK2UpZltlXT0iRU4ifWZvcihtPTA7bTxwOysrbSlBPWZbbV0sIldTIiE9PUEmJiJFUyIhPT1BJiYiRVQiIT09QSYmIkNTIiE9PUF8fChmW21dPSJPTiIpO2ZvcihrPXgsbT0wO208cDsrK20pQT1mW21dLCJFTiI9PT1BP2ZbbV09IkwiPT09az8iTCI6IkVOIjoiUiIhPT1BJiYiTCIhPT1BfHwoaz1BKTtmb3IobT0wO208cDsrK20paWYoIk9OIj09PWZbbV0pe2NvbnN0IGU9YyhmLG0rMSwiT04iKTtsZXQgdD14O20+MCYmKHQ9ZlttLTFdKTtsZXQgcj1TO2UrMTxwJiYocj1mW2UrMV0pLCJMIiE9PXQmJih0PSJSIiksIkwiIT09ciYmKHI9IlIiKSx0PT09ciYmbChmLG0sZSx0KSxtPWUtMX1mb3IobT0wO208cDsrK20pIk9OIj09PWZbbV0mJihmW21dPXYpO2ZvcihtPTA7bTxwOysrbSlBPWZbbV0sbyh3W21dKT8iUiI9PT1BP3dbbV0rPTE6IkFOIiE9PUEmJiJFTiIhPT1BfHwod1ttXSs9Mik6IkwiIT09QSYmIkFOIiE9PUEmJiJFTiIhPT1BfHwod1ttXSs9MSk7bGV0IEMsTz0tMSxGPTk5O2ZvcihtPTAsYj13Lmxlbmd0aDttPGI7KyttKUM9d1ttXSxPPEMmJihPPUMpLEY+QyYmcyhDKSYmKEY9Qyk7Zm9yKEM9TztDPj1GOy0tQyl7bGV0IGU9LTE7Zm9yKG09MCxiPXcubGVuZ3RoO208YjsrK20pd1ttXTxDP2U+PTAmJihoKGQsZSxtKSxlPS0xKTplPDAmJihlPW0pO2U+PTAmJmgoZCxlLHcubGVuZ3RoKX1mb3IobT0wLGI9ZC5sZW5ndGg7bTxiOysrbSl7Y29uc3QgZT1kW21dOyI8IiE9PWUmJiI+IiE9PWV8fChkW21dPSIiKX1yZXR1cm4gdShkLmpvaW4oIiIpLGcpfTt2YXIgbj1yKDE0NCk7Y29uc3QgYT1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0saT1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBzKGUpe3JldHVybiAwIT0oMSZlKX1mdW5jdGlvbiBvKGUpe3JldHVybiAwPT0oMSZlKX1mdW5jdGlvbiBjKGUsdCxyKXtsZXQgbixhO2ZvcihuPXQsYT1lLmxlbmd0aDtuPGE7KytuKWlmKGVbbl0hPT1yKXJldHVybiBuO3JldHVybiBufWZ1bmN0aW9uIGwoZSx0LHIsbil7Zm9yKGxldCBhPXQ7YTxyOysrYSllW2FdPW59ZnVuY3Rpb24gaChlLHQscil7Zm9yKGxldCBuPXQsYT1yLTE7bjxhOysrbiwtLWEpe2NvbnN0IHQ9ZVtuXTtlW25dPWVbYV0sZVthXT10fX1mdW5jdGlvbiB1KGUsdCl7bGV0IHI9Imx0ciI7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0/cj0idHRiIjp0fHwocj0icnRsIikse3N0cjplLGRpcjpyfX1jb25zdCBkPVtdLGY9W119LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5nZXRGb250U3Vic3RpdHV0aW9uPWZ1bmN0aW9uKGUsdCxyLGQsZil7Y29uc3QgZz1kPSgwLG4ubm9ybWFsaXplRm9udE5hbWUpKGQpO2xldCBwPWUuZ2V0KGcpO2lmKHApcmV0dXJuIHA7bGV0IG09bC5nZXQoZCk7aWYoIW0pZm9yKGNvbnN0W2UsdF1vZiBoKWlmKGQuc3RhcnRzV2l0aChlKSl7ZD0iIi5jb25jYXQodCkuY29uY2F0KGQuc3Vic3RyaW5nKGUubGVuZ3RoKSksbT1sLmdldChkKTticmVha31sZXQgYj0hMTttfHwobT1sLmdldChmKSxiPSEwKTtjb25zdCB5PSIiLmNvbmNhdCh0LmdldERvY0lkKCksIl9zIikuY29uY2F0KHQuY3JlYXRlRm9udElkKCkpO2lmKCFtKXtpZighKDAsYS52YWxpZGF0ZUZvbnROYW1lKShkKSlyZXR1cm4gZS5zZXQoZyxudWxsKSxudWxsO2NvbnN0IHQ9L2JvbGQvZ2kudGVzdChkKSxyPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KGQpO3JldHVybiBwPXtjc3M6eSxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6eSxiYXNlRm9udE5hbWU6ZCxzcmM6ImxvY2FsKCIuY29uY2F0KGQsIikiKSxzdHlsZTp0JiZyJiZjfHx0JiZzfHxyJiZvfHxpfSxlLnNldChnLHApLHB9Y29uc3Qgdz1bXTtiJiYoMCxhLnZhbGlkYXRlRm9udE5hbWUpKGQpJiZ3LnB1c2goImxvY2FsKCIuY29uY2F0KGQsIikiKSk7Y29uc3R7c3R5bGU6dix1bHRpbWF0ZTp4fT11KG0sdyxyKSxTPW51bGw9PT14O3JldHVybiBwPXtjc3M6IiIuY29uY2F0KHkpLmNvbmNhdChTPyIiOiIsIi5jb25jYXQoeCkpLGd1ZXNzRmFsbGJhY2s6Uyxsb2FkZWROYW1lOnksYmFzZUZvbnROYW1lOmQsc3JjOncuam9pbigiLCIpLHN0eWxlOnZ9LGUuc2V0KGcscCkscH0scigxMzkpO3ZhciBuPXIoMTg4KSxhPXIoMTQ5KTtjb25zdCBpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LHM9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LG89e3N0eWxlOiJpdGFsaWMiLHdlaWdodDoibm9ybWFsIn0sYz17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sbD1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOmksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6cyx1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1JdGFsaWMiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOm8sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6Yyx1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6aSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1Cb2xkIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZC50dGYiLHN0eWxlOnMsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOm8sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Yyx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkNvdXJpZXIiLHtsb2NhbDpbIkNvdXJpZXIiLCJDb3VyaWVyIE5ldyIsIkxpYmVyYXRpb24gTW9ubyIsIk5pbWJ1cyBNb25vIiwiTmltYnVzIE1vbm8gTCIsIkNvdXNpbmUiLCJDdW1iZXJsYW5kIiwiVGVYIEd5cmUgQ3Vyc29yIiwiRnJlZU1vbm8iXSxzdHlsZTppLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6cyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1PYmxpcXVlIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOm8sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6Yyx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOmksZmFsbGJhY2s6IkhlbHZldGljYSJ9XSxbIkFyaWFsTmFycm93LUJvbGQiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpvLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJ9XSxbIkNhbGlicmkiLHtsb2NhbDpbIkNhbGlicmkiLCJDYXJsaXRvIl0sc3R5bGU6aSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOnMsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6byxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJDYWxpYnJpLUJvbGRJdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6YyxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTppfV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV1dKSxoPW5ldyBNYXAoW1siQXJpYWwtQmxhY2siLCJBcmlhbEJsYWNrIl1dKTtmdW5jdGlvbiB1KGUsdCxyKXtsZXR7YWxpYXM6bixsb2NhbDphLHBhdGg6aSxmYWxsYmFjazpoLHN0eWxlOmQsdWx0aW1hdGU6Zn09ZSxnPSEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM10scD0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdLG09YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOiIiO2NvbnN0IGI9e3N0eWxlOm51bGwsdWx0aW1hdGU6bnVsbH07aWYoYSl7Y29uc3QgZT1tPyIgIi5jb25jYXQobSk6IiI7Zm9yKGNvbnN0IHIgb2YgYSl0LnB1c2goImxvY2FsKCIuY29uY2F0KHIpLmNvbmNhdChlLCIpIikpfWlmKG4pe2NvbnN0IGU9bC5nZXQobiksYT1tfHxmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBzOnJldHVybiJCb2xkIjtjYXNlIG86cmV0dXJuIkl0YWxpYyI7Y2FzZSBjOnJldHVybiJCb2xkIEl0YWxpYyI7ZGVmYXVsdDppZigiYm9sZCI9PT0obnVsbD09ZT92b2lkIDA6ZS53ZWlnaHQpKXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PShudWxsPT1lP3ZvaWQgMDplLnN0eWxlKSlyZXR1cm4iSXRhbGljIn1yZXR1cm4iIn0oZCk7T2JqZWN0LmFzc2lnbihiLHUoZSx0LHIsZyYmIWgscCYmIWksYSkpfWlmKGQmJihiLnN0eWxlPWQpLGYmJihiLnVsdGltYXRlPWYpLGcmJmgpe2NvbnN0IGU9bC5nZXQoaCkse3VsdGltYXRlOm59PXUoZSx0LHIsZyxwJiYhaSxtKTtiLnVsdGltYXRlfHwoYi51bHRpbWF0ZT1uKX1yZXR1cm4gcCYmaSYmciYmdC5wdXNoKCJ1cmwoIi5jb25jYXQocikuY29uY2F0KGksIikiKSksYn19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5JbWFnZVJlc2l6ZXI9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDIpO3ZhciBuPXIoMTQ0KTtjbGFzcyBhe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5faW1nRGF0YT1lLHRoaXMuX2lzTWFzaz10fXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCYmdDw9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aClyZXR1cm4hMTtjb25zdHtNQVhfRElNOnJ9PXRoaXM7aWYoZT5yfHx0PnIpcmV0dXJuITA7Y29uc3Qgbj1lKnQ7cmV0dXJuIHRoaXMuX2hhc01heEFyZWE/bj50aGlzLk1BWF9BUkVBOiEobjx0aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKSYmKHRoaXMuX2FyZUdvb2REaW1zKGUsdCk/KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGg9TWF0aC5tYXgodGhpcy5fZ29vZFNxdWFyZUxlbmd0aCxNYXRoLmZsb29yKE1hdGguc3FydChlKnQpKSksITEpOih0aGlzLl9nb29kU3F1YXJlTGVuZ3RoPXRoaXMuX2d1ZXNzTWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsciwxMjgsMCksbj4odGhpcy5NQVhfQVJFQT10aGlzLl9nb29kU3F1YXJlTGVuZ3RoKioyKSkpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybigwLG4uc2hhZG93KSh0aGlzLCJNQVhfRElNIix0aGlzLl9ndWVzc01heCgyMDQ4LDY1NTM3LDAsMSkpfXN0YXRpYyBnZXQgTUFYX0FSRUEoKXtyZXR1cm4gdGhpcy5faGFzTWF4QXJlYT0hMCwoMCxuLnNoYWRvdykodGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KGEuX2dvb2RTcXVhcmVMZW5ndGgsdGhpcy5NQVhfRElNLDEyOCwwKSoqMil9c3RhdGljIHNldCBNQVhfQVJFQShlKXtlPj0wJiYodGhpcy5faGFzTWF4QXJlYT0hMCwoMCxuLnNoYWRvdykodGhpcywiTUFYX0FSRUEiLGUpKX1zdGF0aWMgc2V0TWF4QXJlYShlKXt0aGlzLl9oYXNNYXhBcmVhfHwodGhpcy5NQVhfQVJFQT1lPj4yKX1zdGF0aWMgX2FyZUdvb2REaW1zKGUsdCl7dHJ5e2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyhlLHQpLG49ci5nZXRDb250ZXh0KCIyZCIpO24uZmlsbFJlY3QoMCwwLDEsMSk7Y29uc3QgYT1uLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhWzNdO3JldHVybiByLndpZHRoPXIuaGVpZ2h0PTEsMCE9PWF9Y2F0Y2goZSl7cmV0dXJuITF9fXN0YXRpYyBfZ3Vlc3NNYXgoZSx0LHIsbil7Zm9yKDtlK3IrMTx0Oyl7Y29uc3Qgcj1NYXRoLmZsb29yKChlK3QpLzIpLGE9bnx8cjt0aGlzLl9hcmVHb29kRGltcyhyLGEpP2U9cjp0PXJ9cmV0dXJuIGV9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUpe3JldHVybiBuZXcgYShlLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0pLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0IGU9dGhpcy5fZW5jb2RlQk1QKCksdD1uZXcgQmxvYihbZS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkscj1jcmVhdGVJbWFnZUJpdG1hcCh0KSx7TUFYX0FSRUE6bixNQVhfRElNOml9PWEse19pbWdEYXRhOnN9PXRoaXMse3dpZHRoOm8saGVpZ2h0OmN9PXMsbD1NYXRoLm1heChvL2ksYy9pLE1hdGguc3FydChvKmMvbikpLGg9TWF0aC5tYXgobCwyKSx1PU1hdGgucm91bmQoMTAqKGwrMS4yNSkpLzEwL2gsZD1NYXRoLmZsb29yKE1hdGgubG9nMih1KSksZj1uZXcgQXJyYXkoZCsyKS5maWxsKDIpO2ZbMF09aCxmLnNwbGljZSgtMSwxLHUvKDE8PGQpKTtsZXQgZz1vLHA9YyxtPWF3YWl0IHI7Zm9yKGNvbnN0IGUgb2YgZil7Y29uc3QgdD1nLHI9cDtnPU1hdGguZmxvb3IoZy9lKS0xLHA9TWF0aC5mbG9vcihwL2UpLTE7Y29uc3Qgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKGcscCk7bi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShtLDAsMCx0LHIsMCwwLGcscCksbT1uLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfXJldHVybiBzLmRhdGE9bnVsbCxzLmJpdG1hcD1tLHMud2lkdGg9ZyxzLmhlaWdodD1wLHN9X2VuY29kZUJNUCgpe2NvbnN0e3dpZHRoOmUsaGVpZ2h0OnQsa2luZDpyfT10aGlzLl9pbWdEYXRhO2xldCBhLGk9dGhpcy5faW1nRGF0YS5kYXRhLHM9bmV3IFVpbnQ4QXJyYXkoMCksbz1zLGM9MDtzd2l0Y2gocil7Y2FzZSBuLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDp7YT0xLHM9bmV3IFVpbnQ4QXJyYXkodGhpcy5faXNNYXNrP1syNTUsMjU1LDI1NSwyNTUsMCwwLDAsMF06WzAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSk7Y29uc3Qgcj1lKzc+PjMsbj1yKzMmLTQ7aWYociE9PW4pe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobip0KTtsZXQgYT0wO2ZvcihsZXQgcz0wLG89dCpyO3M8bztzKz1yLGErPW4pZS5zZXQoaS5zdWJhcnJheShzLHMrciksYSk7aT1lfWJyZWFrfWNhc2Ugbi5JbWFnZUtpbmQuUkdCXzI0QlBQOmlmKGE9MjQsMyZlKXtjb25zdCByPTMqZSxuPXIrMyYtNCxhPW4tcixzPW5ldyBVaW50OEFycmF5KG4qdCk7bGV0IG89MDtmb3IobGV0IGU9MCxuPXQqcjtlPG47ZSs9cil7Y29uc3QgdD1pLnN1YmFycmF5KGUsZStyKTtmb3IobGV0IGU9MDtlPHI7ZSs9MylzW28rK109dFtlKzJdLHNbbysrXT10W2UrMV0sc1tvKytdPXRbZV07bys9YX1pPXN9ZWxzZSBmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PWlbZV07aVtlXT1pW2UrMl0saVtlKzJdPXR9YnJlYWs7Y2FzZSBuLkltYWdlS2luZC5SR0JBXzMyQlBQOmE9MzIsYz0zLG89bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IHI9bmV3IERhdGFWaWV3KG8uYnVmZmVyKTtuLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPyhyLnNldFVpbnQzMigwLDI1NSwhMCksci5zZXRVaW50MzIoNCw2NTI4MCwhMCksci5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCksci5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCkpOihyLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApLHIuc2V0VWludDMyKDQsMTY3MTE2ODAsITApLHIuc2V0VWludDMyKDgsNjUyODAsITApLHIuc2V0VWludDMyKDEyLDI1NSwhMCkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBsPTA7Y29uc3QgaD00MCtvLmxlbmd0aCx1PTE0K2grcy5sZW5ndGgraS5sZW5ndGgsZD1uZXcgVWludDhBcnJheSh1KSxmPW5ldyBEYXRhVmlldyhkLmJ1ZmZlcik7cmV0dXJuIGYuc2V0VWludDE2KGwsMTk3NzgsITApLGwrPTIsZi5zZXRVaW50MzIobCx1LCEwKSxsKz00LGYuc2V0VWludDMyKGwsMCwhMCksbCs9NCxmLnNldFVpbnQzMihsLDE0K2grcy5sZW5ndGgsITApLGwrPTQsZi5zZXRVaW50MzIobCxoLCEwKSxsKz00LGYuc2V0SW50MzIobCxlLCEwKSxsKz00LGYuc2V0SW50MzIobCwtdCwhMCksbCs9NCxmLnNldFVpbnQxNihsLDEsITApLGwrPTIsZi5zZXRVaW50MTYobCxhLCEwKSxsKz0yLGYuc2V0VWludDMyKGwsYywhMCksbCs9NCxmLnNldFVpbnQzMihsLDAsITApLGwrPTQsZi5zZXRJbnQzMihsLDAsITApLGwrPTQsZi5zZXRJbnQzMihsLDAsITApLGwrPTQsZi5zZXRVaW50MzIobCxzLmxlbmd0aC80LCEwKSxsKz00LGYuc2V0VWludDMyKGwsMCwhMCksbCs9NCxkLnNldChvLGwpLGwrPW8ubGVuZ3RoLGQuc2V0KHMsbCksbCs9cy5sZW5ndGgsZC5zZXQoaSxsKSxkfX10LkltYWdlUmVzaXplcj1hLGEuX2dvb2RTcXVhcmVMZW5ndGg9MjA0OH0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk11cm11ckhhc2gzXzY0PXZvaWQgMCxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSkscigyKTt2YXIgbj1yKDE0NCk7Y29uc3QgYT0zMjg1Mzc3NTIwLGk9NDI5NDkwMTc2MCxzPTY1NTM1O3QuTXVybXVySGFzaDNfNjQ9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5oMT1lPzQyOTQ5NjcyOTUmZTphLHRoaXMuaDI9ZT80Mjk0OTY3Mjk1JmU6YX11cGRhdGUoZSl7bGV0IHQscjtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCkscj0wO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQobik7YTw9MjU1P3RbcisrXT1hOih0W3IrK109YT4+PjgsdFtyKytdPTI1NSZhKX19ZWxzZXtpZighKDAsbi5pc0FycmF5QnVmZmVyKShlKSl0aHJvdyBuZXcgRXJyb3IoIldyb25nIGRhdGEgZm9ybWF0IGluIE11cm11ckhhc2gzXzY0X3VwZGF0ZS4gSW5wdXQgbXVzdCBiZSBhIHN0cmluZyBvciBhcnJheS4iKTt0PWUuc2xpY2UoKSxyPXQuYnl0ZUxlbmd0aH1jb25zdCBhPXI+PjIsbz1yLTQqYSxjPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLGEpO2xldCBsPTAsaD0wLHU9dGhpcy5oMSxkPXRoaXMuaDI7Y29uc3QgZj0zNDMyOTE4MzUzLGc9NDYxODQ1OTA3LHA9MTE2MDEsbT0xMzcxNTtmb3IobGV0IGU9MDtlPGE7ZSsrKTEmZT8obD1jW2VdLGw9bCpmJml8bCpwJnMsbD1sPDwxNXxsPj4+MTcsbD1sKmcmaXxsKm0mcyx1Xj1sLHU9dTw8MTN8dT4+PjE5LHU9NSp1KzM4NjQyOTIxOTYpOihoPWNbZV0saD1oKmYmaXxoKnAmcyxoPWg8PDE1fGg+Pj4xNyxoPWgqZyZpfGgqbSZzLGRePWgsZD1kPDwxM3xkPj4+MTksZD01KmQrMzg2NDI5MjE5Nik7c3dpdGNoKGw9MCxvKXtjYXNlIDM6bF49dFs0KmErMl08PDE2O2Nhc2UgMjpsXj10WzQqYSsxXTw8ODtjYXNlIDE6bF49dFs0KmFdLGw9bCpmJml8bCpwJnMsbD1sPDwxNXxsPj4+MTcsbD1sKmcmaXxsKm0mcywxJmE/dV49bDpkXj1sfXRoaXMuaDE9dSx0aGlzLmgyPWR9aGV4ZGlnZXN0KCl7bGV0IGU9dGhpcy5oMSx0PXRoaXMuaDI7cmV0dXJuIGVePXQ+Pj4xLGU9Mzk4MTgwNjc5NyplJml8MzYwNDUqZSZzLHQ9NDI4MzU0MzUxMSp0Jml8KDI5NTAxNjM3OTcqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNixlXj10Pj4+MSxlPTQ0NDk4NDQwMyplJml8NjA0OTkqZSZzLHQ9MzMwMTg4MjM2Nip0Jml8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmaSk+Pj4xNixlXj10Pj4+MSwoZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX19LChlLHQscik9Pnt2YXIgbjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5PcGVyYXRvckxpc3Q9dm9pZCAwLHIoMikscigxMzkpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNyk7dmFyIGE9cigxNDQpO2Z1bmN0aW9uIHMoZSx0LHIsbixhKXtsZXQgaT1lO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGgtMTtlPHI7ZSsrKXt2YXIgcztjb25zdCByPXRbZV07aT0ocz1pKVtyXXx8KHNbcl09W10pfWlbdC5hdCgtMSldPXtjaGVja0ZuOnIsaXRlcmF0ZUZuOm4scHJvY2Vzc0ZuOmF9fWNvbnN0IG89W107cyhvLFthLk9QUy5zYXZlLGEuT1BTLnRyYW5zZm9ybSxhLk9QUy5wYWludElubGluZUltYWdlWE9iamVjdCxhLk9QUy5yZXN0b3JlXSxudWxsLChmdW5jdGlvbihlLHQpe2NvbnN0IHI9ZS5mbkFycmF5LG49KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gclt0XT09PWEuT1BTLnNhdmU7Y2FzZSAxOnJldHVybiByW3RdPT09YS5PUFMudHJhbnNmb3JtO2Nhc2UgMjpyZXR1cm4gclt0XT09PWEuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0O2Nhc2UgMzpyZXR1cm4gclt0XT09PWEuT1BTLnJlc3RvcmV9dGhyb3cgbmV3IEVycm9yKCJpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAiLmNvbmNhdChuKSl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMSxsPU1hdGgubWluKE1hdGguZmxvb3IoKHQtcykvNCksMjAwKTtpZihsPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGg9MDtjb25zdCB1PVtdO2xldCBkPTAsZj0xLGc9MTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdCB0PW5bbysoZTw8MildLHI9bltjKyhlPDwyKV1bMF07ZityLndpZHRoPjFlMyYmKGg9TWF0aC5tYXgoaCxmKSxnKz1kKzIsZj0wLGQ9MCksdS5wdXNoKHt0cmFuc2Zvcm06dCx4OmYseTpnLHc6ci53aWR0aCxoOnIuaGVpZ2h0fSksZis9ci53aWR0aCsyLGQ9TWF0aC5tYXgoZCxyLmhlaWdodCl9Y29uc3QgcD1NYXRoLm1heChoLGYpKzEsbT1nK2QrMSxiPW5ldyBVaW50OEFycmF5KHAqbSo0KSx5PXA8PDI7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1uW2MrKGU8PDIpXVswXS5kYXRhLHI9dVtlXS53PDwyO2xldCBhPTAsaT11W2VdLngrdVtlXS55KnA8PDI7Yi5zZXQodC5zdWJhcnJheSgwLHIpLGkteSk7Zm9yKGxldCBuPTAscz11W2VdLmg7bjxzO24rKyliLnNldCh0LnN1YmFycmF5KGEsYStyKSxpKSxhKz1yLGkrPXk7Zm9yKGIuc2V0KHQuc3ViYXJyYXkoYS1yLGEpLGkpO2k+PTA7KXRbaS00XT10W2ldLHRbaS0zXT10W2krMV0sdFtpLTJdPXRbaSsyXSx0W2ktMV09dFtpKzNdLHRbaStyXT10W2krci00XSx0W2krcisxXT10W2krci0zXSx0W2krcisyXT10W2krci0yXSx0W2krciszXT10W2krci0xXSxpLT15fWNvbnN0IHc9e3dpZHRoOnAsaGVpZ2h0Om19O2lmKGUuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhwLG0pO2UuZ2V0Q29udGV4dCgiMmQiKS5wdXRJbWFnZURhdGEobmV3IEltYWdlRGF0YShuZXcgVWludDhDbGFtcGVkQXJyYXkoYi5idWZmZXIpLHAsbSksMCwwKSx3LmJpdG1hcD1lLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLHcuZGF0YT1udWxsfWVsc2Ugdy5raW5kPWEuSW1hZ2VLaW5kLlJHQkFfMzJCUFAsdy5kYXRhPWI7cmV0dXJuIHIuc3BsaWNlKHMsNCpsLGEuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXApLG4uc3BsaWNlKHMsNCpsLFt3LHVdKSxzKzF9KSkscyhvLFthLk9QUy5zYXZlLGEuT1BTLnRyYW5zZm9ybSxhLk9QUy5wYWludEltYWdlTWFza1hPYmplY3QsYS5PUFMucmVzdG9yZV0sbnVsbCwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUuZm5BcnJheSxuPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIHJbdF09PT1hLk9QUy5zYXZlO2Nhc2UgMTpyZXR1cm4gclt0XT09PWEuT1BTLnRyYW5zZm9ybTtjYXNlIDI6cmV0dXJuIHJbdF09PT1hLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Q7Y2FzZSAzOnJldHVybiByW3RdPT09YS5PUFMucmVzdG9yZX10aHJvdyBuZXcgRXJyb3IoIml0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAiLmNvbmNhdChuKSl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixzPWktMyxvPWktMixjPWktMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgaCx1LGQ9ITE7Y29uc3QgZj1uW2NdWzBdLGc9bltvXVswXSxwPW5bb11bMV0sbT1uW29dWzJdLGI9bltvXVszXTtpZihwPT09bSl7ZD0hMCxoPW8rNDtsZXQgZT1jKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxoKz00LGUrPTQpaWYodT1uW2hdLG5bZV1bMF0hPT1mfHx1WzBdIT09Z3x8dVsxXSE9PXB8fHVbMl0hPT1tfHx1WzNdIT09Yil7dDwxMD9kPSExOmw9dDticmVha319aWYoZCl7bD1NYXRoLm1pbihsLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqbCk7aD1vO2ZvcihsZXQgdD0wO3Q8bDt0KyssaCs9NCl1PW5baF0sZVt0PDwxXT11WzRdLGVbMSsodDw8MSldPXVbNV07ci5zcGxpY2Uocyw0KmwsYS5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0UmVwZWF0KSxuLnNwbGljZShzLDQqbCxbZixnLHAsbSxiLGVdKX1lbHNle2w9TWF0aC5taW4obCwxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxsO3QrKyl7dT1uW28rKHQ8PDIpXTtjb25zdCByPW5bYysodDw8MildWzBdO2UucHVzaCh7ZGF0YTpyLmRhdGEsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHQsaW50ZXJwb2xhdGU6ci5pbnRlcnBvbGF0ZSxjb3VudDpyLmNvdW50LHRyYW5zZm9ybTp1fSl9ci5zcGxpY2Uocyw0KmwsYS5PUFMucGFpbnRJbWFnZU1hc2tYT2JqZWN0R3JvdXApLG4uc3BsaWNlKHMsNCpsLFtlXSl9cmV0dXJuIHMrMX0pKSxzKG8sW2EuT1BTLnNhdmUsYS5PUFMudHJhbnNmb3JtLGEuT1BTLnBhaW50SW1hZ2VYT2JqZWN0LGEuT1BTLnJlc3RvcmVdLChmdW5jdGlvbihlKXtjb25zdCB0PWUuYXJnc0FycmF5LHI9ZS5pQ3Vyci0yO3JldHVybiAwPT09dFtyXVsxXSYmMD09PXRbcl1bMl19KSwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm4gclt0XT09PWEuT1BTLnNhdmU7Y2FzZSAxOmlmKHJbdF0hPT1hLk9QUy50cmFuc2Zvcm0pcmV0dXJuITE7Y29uc3QgaT1lLmlDdXJyLTIscz1uW2ldWzBdLG89bltpXVszXTtyZXR1cm4gblt0XVswXT09PXMmJjA9PT1uW3RdWzFdJiYwPT09blt0XVsyXSYmblt0XVszXT09PW87Y2FzZSAyOmlmKHJbdF0hPT1hLk9QUy5wYWludEltYWdlWE9iamVjdClyZXR1cm4hMTtjb25zdCBjPW5bZS5pQ3Vyci0xXVswXTtyZXR1cm4gblt0XVswXT09PWM7Y2FzZSAzOnJldHVybiByW3RdPT09YS5PUFMucmVzdG9yZX10aHJvdyBuZXcgRXJyb3IoIml0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICIuY29uY2F0KGkpKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IHI9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksaT1lLmlDdXJyLHM9aS0zLG89aS0yLGM9bltpLTFdWzBdLGw9bltvXVswXSxoPW5bb11bM10sdT1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDFlMyk7aWYodTwzKXJldHVybiB0LSh0LXMpJTQ7Y29uc3QgZD1uZXcgRmxvYXQzMkFycmF5KDIqdSk7bGV0IGY9bztmb3IobGV0IGU9MDtlPHU7ZSsrLGYrPTQpe2NvbnN0IHQ9bltmXTtkW2U8PDFdPXRbNF0sZFsxKyhlPDwxKV09dFs1XX1jb25zdCBnPVtjLGwsaCxkXTtyZXR1cm4gci5zcGxpY2Uocyw0KnUsYS5PUFMucGFpbnRJbWFnZVhPYmplY3RSZXBlYXQpLG4uc3BsaWNlKHMsNCp1LGcpLHMrMX0pKSxzKG8sW2EuT1BTLmJlZ2luVGV4dCxhLk9QUy5zZXRGb250LGEuT1BTLnNldFRleHRNYXRyaXgsYS5PUFMuc2hvd1RleHQsYS5PUFMuZW5kVGV4dF0sbnVsbCwoZnVuY3Rpb24oZSx0KXtjb25zdCByPWUuZm5BcnJheSxuPWUuYXJnc0FycmF5LGk9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm4gclt0XT09PWEuT1BTLmJlZ2luVGV4dDtjYXNlIDE6cmV0dXJuIHJbdF09PT1hLk9QUy5zZXRGb250O2Nhc2UgMjpyZXR1cm4gclt0XT09PWEuT1BTLnNldFRleHRNYXRyaXg7Y2FzZSAzOmlmKHJbdF0hPT1hLk9QUy5zaG93VGV4dClyZXR1cm4hMTtjb25zdCBpPWUuaUN1cnItMyxzPW5baV1bMF0sbz1uW2ldWzFdO3JldHVybiBuW3RdWzBdPT09cyYmblt0XVsxXT09PW87Y2FzZSA0OnJldHVybiByW3RdPT09YS5PUFMuZW5kVGV4dH10aHJvdyBuZXcgRXJyb3IoIml0ZXJhdGVTaG93VGV4dEdyb3VwIC0gaW52YWxpZCBwb3M6ICIuY29uY2F0KGkpKX0pLChmdW5jdGlvbihlLHQpe2NvbnN0IHI9ZS5mbkFycmF5LG49ZS5hcmdzQXJyYXksYT1lLmlDdXJyLGk9YS00LHM9YS0zLG89YS0yLGM9YS0xLGw9YSxoPW5bc11bMF0sdT1uW3NdWzFdO2xldCBkPU1hdGgubWluKE1hdGguZmxvb3IoKHQtaSkvNSksMWUzKTtpZihkPDMpcmV0dXJuIHQtKHQtaSklNTtsZXQgZj1pO2k+PTQmJnJbaS00XT09PXJbc10mJnJbaS0zXT09PXJbb10mJnJbaS0yXT09PXJbY10mJnJbaS0xXT09PXJbbF0mJm5baS00XVswXT09PWgmJm5baS00XVsxXT09PXUmJihkKyssZi09NSk7bGV0IGc9Zis0O2ZvcihsZXQgZT0xO2U8ZDtlKyspci5zcGxpY2UoZywzKSxuLnNwbGljZShnLDMpLGcrPTI7cmV0dXJuIGcrMX0pKTtjbGFzcyBje2NvbnN0cnVjdG9yKGUpe3RoaXMucXVldWU9ZX1fb3B0aW1pemUoKXt9cHVzaChlLHQpe3RoaXMucXVldWUuZm5BcnJheS5wdXNoKGUpLHRoaXMucXVldWUuYXJnc0FycmF5LnB1c2godCksdGhpcy5fb3B0aW1pemUoKX1mbHVzaCgpe31yZXNldCgpe319Y2xhc3MgbCBleHRlbmRzIGN7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5zdGF0ZT1udWxsLHRoaXMuY29udGV4dD17aUN1cnI6MCxmbkFycmF5OmUuZm5BcnJheSxhcmdzQXJyYXk6ZS5hcmdzQXJyYXksaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITF9LHRoaXMubWF0Y2g9bnVsbCx0aGlzLmxhc3RQcm9jZXNzZWQ9MH1zZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoZSl7dGhpcy5jb250ZXh0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9X29wdGltaXplKCl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXk7bGV0IHQ9dGhpcy5sYXN0UHJvY2Vzc2VkLHI9ZS5sZW5ndGgsbj10aGlzLnN0YXRlLGE9dGhpcy5tYXRjaDtpZighbiYmIWEmJnQrMT09PXImJiFvW2VbdF1dKXJldHVybiB2b2lkKHRoaXMubGFzdFByb2Nlc3NlZD1yKTtjb25zdCBpPXRoaXMuY29udGV4dDtmb3IoO3Q8cjspe2lmKGEpe2lmKCgwLGEuaXRlcmF0ZUZuKShpLHQpKXt0Kys7Y29udGludWV9aWYodD0oMCxhLnByb2Nlc3NGbikoaSx0KzEpLHI9ZS5sZW5ndGgsYT1udWxsLG49bnVsbCx0Pj1yKWJyZWFrfW49KG58fG8pW2VbdF1dLG4mJiFBcnJheS5pc0FycmF5KG4pPyhpLmlDdXJyPXQsdCsrLCFuLmNoZWNrRm58fCgwLG4uY2hlY2tGbikoaSk/KGE9bixuPW51bGwpOm49bnVsbCk6dCsrfXRoaXMuc3RhdGU9bix0aGlzLm1hdGNoPWEsdGhpcy5sYXN0UHJvY2Vzc2VkPXR9Zmx1c2goKXtmb3IoO3RoaXMubWF0Y2g7KXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSksdGhpcy5tYXRjaD1udWxsLHRoaXMuc3RhdGU9bnVsbCx0aGlzLl9vcHRpbWl6ZSgpfX1yZXNldCgpe3RoaXMuc3RhdGU9bnVsbCx0aGlzLm1hdGNoPW51bGwsdGhpcy5sYXN0UHJvY2Vzc2VkPTB9fWNsYXNzIGh7Y29uc3RydWN0b3IoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MCx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3RoaXMuX3N0cmVhbVNpbms9dCx0aGlzLmZuQXJyYXk9W10sdGhpcy5hcmdzQXJyYXk9W10sdGhpcy5vcHRpbWl6ZXI9IXR8fGUmYS5SZW5kZXJpbmdJbnRlbnRGbGFnLk9QTElTVD9uZXcgYyh0aGlzKTpuZXcgbCh0aGlzKSx0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0LHRoaXMuX3RvdGFsTGVuZ3RoPTAsdGhpcy53ZWlnaHQ9MCx0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMub3B0aW1pemVyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KSx0aGlzLndlaWdodCsrLHRoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49aC5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49aC5DSFVOS19TSVpFX0FCT1VUJiYoZT09PWEuT1BTLnJlc3RvcmV8fGU9PT1hLk9QUy5lbmRUZXh0KSkmJnRoaXMuZmx1c2goKX1hZGRJbWFnZU9wcyhlLHQscil7dm9pZCAwIT09ciYmdGhpcy5hZGRPcChhLk9QUy5iZWdpbk1hcmtlZENvbnRlbnRQcm9wcyxbIk9DIixyXSksdGhpcy5hZGRPcChlLHQpLHZvaWQgMCE9PXImJnRoaXMuYWRkT3AoYS5PUFMuZW5kTWFya2VkQ29udGVudCxbXSl9YWRkRGVwZW5kZW5jeShlKXt0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSl8fCh0aGlzLmRlcGVuZGVuY2llcy5hZGQoZSksdGhpcy5hZGRPcChhLk9QUy5kZXBlbmRlbmN5LFtlXSkpfWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIGgpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2UoMCxhLndhcm4pKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe3ZhciBlO2NvbnN0IHQ9W10se2ZuQXJyYXk6cixhcmdzQXJyYXk6bixsZW5ndGg6aX09dGhpcztmb3IobGV0IHM9MDtzPGk7cysrKXN3aXRjaChyW3NdKXtjYXNlIGEuT1BTLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0OmNhc2UgYS5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cDpjYXNlIGEuT1BTLnBhaW50SW1hZ2VNYXNrWE9iamVjdDpjb25zdCByPW5bc11bMF07IXIuY2FjaGVkJiYobnVsbD09PShlPXIuZGF0YSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuYnVmZmVyKWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJnQucHVzaChyLmRhdGEuYnVmZmVyKX1yZXR1cm4gdH1mbHVzaCgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IHI9dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPXIsdGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6cn0sMSx0aGlzLl90cmFuc2ZlcnMpLHRoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCksdGhpcy5mbkFycmF5Lmxlbmd0aD0wLHRoaXMuYXJnc0FycmF5Lmxlbmd0aD0wLHRoaXMud2VpZ2h0PTAsdGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19bj1oLGkoaCwiQ0hVTktfU0laRSIsMWUzKSxpKGgsIkNIVU5LX1NJWkVfQUJPVVQiLG4uQ0hVTktfU0laRS01KSx0Lk9wZXJhdG9yTGlzdD1ofSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuUERGSW1hZ2U9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDIpO3ZhciBuPXIoMTQ0KSxhPXIoMTc4KSxpPXIoMTUxKSxzPXIoMTYyKSxvPXIoMTY4KSxjPXIoMjEyKSxsPXIoMTc2KSxoPXIoMTgwKSx1PXIoMTUwKTtmdW5jdGlvbiBkKGUsdCxyLG4pe3JldHVybihlPXQrZSpyKTwwP2U9MDplPm4mJihlPW4pLGV9ZnVuY3Rpb24gZihlLHQscixuLGEsaSl7Y29uc3Qgcz1hKmk7bGV0IG87bz10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgYz1yL2EsbD1uL2k7bGV0IGgsdSxkLGYsZz0wO2NvbnN0IHA9bmV3IFVpbnQxNkFycmF5KGEpLG09cjtmb3IoaD0wO2g8YTtoKyspcFtoXT1NYXRoLmZsb29yKGgqYyk7Zm9yKGg9MDtoPGk7aCsrKWZvcihkPU1hdGguZmxvb3IoaCpsKSptLHU9MDt1PGE7dSsrKWY9ZCtwW3VdLG9bZysrXT1lW2ZdO3JldHVybiBvfWNsYXNzIGd7Y29uc3RydWN0b3IoZSl7bGV0e3hyZWY6dCxyZXM6cixpbWFnZTphLGlzSW5saW5lOm89ITEsc21hc2s6Yz1udWxsLG1hc2s6bD1udWxsLGlzTWFzazpkPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnB9PWU7dGhpcy5pbWFnZT1hO2NvbnN0IG09YS5kaWN0LGI9bS5nZXQoIkYiLCJGaWx0ZXIiKTtsZXQgeTtpZihiIGluc3RhbmNlb2YgdS5OYW1lKXk9Yi5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShiKSl7Y29uc3QgZT10LmZldGNoSWZSZWYoYlswXSk7ZSBpbnN0YW5jZW9mIHUuTmFtZSYmKHk9ZS5uYW1lKX1zd2l0Y2goeSl7Y2FzZSJKUFhEZWNvZGUiOmNvbnN0IGU9bmV3IGguSnB4SW1hZ2U7ZS5wYXJzZUltYWdlUHJvcGVydGllcyhhLnN0cmVhbSksYS5zdHJlYW0ucmVzZXQoKSxhLndpZHRoPWUud2lkdGgsYS5oZWlnaHQ9ZS5oZWlnaHQsYS5iaXRzUGVyQ29tcG9uZW50PWUuYml0c1BlckNvbXBvbmVudCxhLm51bUNvbXBzPWUuY29tcG9uZW50c0NvdW50O2JyZWFrO2Nhc2UiSkJJRzJEZWNvZGUiOmEuYml0c1BlckNvbXBvbmVudD0xLGEubnVtQ29tcHM9MX1sZXQgdz1tLmdldCgiVyIsIldpZHRoIiksdj1tLmdldCgiSCIsIkhlaWdodCIpO2lmKE51bWJlci5pc0ludGVnZXIoYS53aWR0aCkmJmEud2lkdGg+MCYmTnVtYmVyLmlzSW50ZWdlcihhLmhlaWdodCkmJmEuaGVpZ2h0PjAmJihhLndpZHRoIT09d3x8YS5oZWlnaHQhPT12KSYmKCgwLG4ud2FybikoIlBERkltYWdlIC0gdXNpbmcgdGhlIFdpZHRoL0hlaWdodCBvZiB0aGUgaW1hZ2UgZGF0YSwgcmF0aGVyIHRoYW4gdGhlIGltYWdlIGRpY3Rpb25hcnkuIiksdz1hLndpZHRoLHY9YS5oZWlnaHQpLHc8MXx8djwxKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJJbnZhbGlkIGltYWdlIHdpZHRoOiAiLmNvbmNhdCh3LCIgb3IgaGVpZ2h0OiAiKS5jb25jYXQodikpO3RoaXMud2lkdGg9dyx0aGlzLmhlaWdodD12LHRoaXMuaW50ZXJwb2xhdGU9bS5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLHRoaXMuaW1hZ2VNYXNrPW0uZ2V0KCJJTSIsIkltYWdlTWFzayIpfHwhMSx0aGlzLm1hdHRlPW0uZ2V0KCJNYXR0ZSIpfHwhMTtsZXQgeD1hLmJpdHNQZXJDb21wb25lbnQ7aWYoIXgmJih4PW0uZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50IiksIXgpKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkJpdHMgcGVyIGNvbXBvbmVudCBtaXNzaW5nIGluIGltYWdlOiAiLmNvbmNhdCh0aGlzLmltYWdlTWFzaykpO3g9MX1pZih0aGlzLmJwYz14LCF0aGlzLmltYWdlTWFzayl7bGV0IGU9bS5nZXRSYXcoIkNTIil8fG0uZ2V0UmF3KCJDb2xvclNwYWNlIik7aWYoIWUpc3dpdGNoKCgwLG4uaW5mbykoIkpQWCBpbWFnZXMgKHdoaWNoIGRvIG5vdCByZXF1aXJlIGNvbG9yIHNwYWNlcykiKSxhLm51bUNvbXBzKXtjYXNlIDE6ZT11Lk5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmU9dS5OYW1lLmdldCgiRGV2aWNlUkdCIik7YnJlYWs7Y2FzZSA0OmU9dS5OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJKUFggaW1hZ2VzIHdpdGggIi5jb25jYXQoYS5udW1Db21wcywiIGNvbG9yIGNvbXBvbmVudHMgbm90IHN1cHBvcnRlZC4iKSl9dGhpcy5jb2xvclNwYWNlPXMuQ29sb3JTcGFjZS5wYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOm8/cjpudWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnB9KSx0aGlzLm51bUNvbXBzPXRoaXMuY29sb3JTcGFjZS5udW1Db21wc31pZih0aGlzLmRlY29kZT1tLmdldEFycmF5KCJEIiwiRGVjb2RlIiksdGhpcy5uZWVkc0RlY29kZT0hMSx0aGlzLmRlY29kZSYmKHRoaXMuY29sb3JTcGFjZSYmIXRoaXMuY29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUseCl8fGQmJiFzLkNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dmFyIFM7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDx4KS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdLHRoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PShudWxsPT09KFM9dGhpcy5jb2xvclNwYWNlKXx8dm9pZCAwPT09Uz92b2lkIDA6Uy5uYW1lKTtmb3IobGV0IHI9MCxuPTA7cjx0aGlzLmRlY29kZS5sZW5ndGg7cis9MiwrK24pe2NvbnN0IGE9dGhpcy5kZWNvZGVbcl0saT10aGlzLmRlY29kZVtyKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW25dPXQ/KGktYSkvZTppLWEsdGhpcy5kZWNvZGVBZGRlbmRzW25dPXQ/YTplKmF9fWM/dGhpcy5zbWFzaz1uZXcgZyh7eHJlZjp0LHJlczpyLGltYWdlOmMsaXNJbmxpbmU6byxwZGZGdW5jdGlvbkZhY3Rvcnk6Zixsb2NhbENvbG9yU3BhY2VDYWNoZTpwfSk6bCYmKGwgaW5zdGFuY2VvZiBpLkJhc2VTdHJlYW0/bC5kaWN0LmdldCgiSU0iLCJJbWFnZU1hc2siKT90aGlzLm1hc2s9bmV3IGcoe3hyZWY6dCxyZXM6cixpbWFnZTpsLGlzSW5saW5lOm8saXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpmLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnB9KTooMCxuLndhcm4pKCJJZ25vcmluZyAvTWFzayBpbiBpbWFnZSB3aXRob3V0IC9JbWFnZU1hc2suIik6dGhpcy5tYXNrPWwpfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKGUpe2xldHt4cmVmOnQscmVzOnIsaW1hZ2U6YSxpc0lubGluZTpzPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9PWU7Y29uc3QgbD1hO2xldCBoPW51bGwsdT1udWxsO2NvbnN0IGQ9YS5kaWN0LmdldCgiU01hc2siKSxmPWEuZGljdC5nZXQoIk1hc2siKTtyZXR1cm4gZD9kIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtP2g9ZDooMCxuLndhcm4pKCJVbnN1cHBvcnRlZCAvU01hc2sgZm9ybWF0LiIpOmYmJihmIGluc3RhbmNlb2YgaS5CYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGYpP3U9ZjooMCxuLndhcm4pKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpLG5ldyBnKHt4cmVmOnQscmVzOnIsaW1hZ2U6bCxpc0lubGluZTpzLHNtYXNrOmgsbWFzazp1LHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmN9KX1zdGF0aWMgY3JlYXRlUmF3TWFzayhlKXtsZXR7aW1nQXJyYXk6dCx3aWR0aDpyLGhlaWdodDpuLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW52ZXJzZURlY29kZTppLGludGVycG9sYXRlOnN9PWU7Y29uc3Qgbz0ocis3Pj4zKSpuLGM9dC5ieXRlTGVuZ3RoO2xldCBsLGg7aWYoIWF8fGkmJm8hPT1jP2k/KGw9bmV3IFVpbnQ4QXJyYXkobyksbC5zZXQodCksbC5maWxsKDI1NSxjKSk6bD1uZXcgVWludDhBcnJheSh0KTpsPXQsaSlmb3IoaD0wO2g8YztoKyspbFtoXV49MjU1O3JldHVybntkYXRhOmwsd2lkdGg6cixoZWlnaHQ6bixpbnRlcnBvbGF0ZTpzfX1zdGF0aWMgYXN5bmMgY3JlYXRlTWFzayhlKXtsZXR7aW1nQXJyYXk6dCx3aWR0aDpyLGhlaWdodDppLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnMsaW52ZXJzZURlY29kZTpvLGludGVycG9sYXRlOmwsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6aD0hMX09ZTtjb25zdCB1PTE9PT1yJiYxPT09aSYmbz09PSgwPT09dC5sZW5ndGh8fCEhKDEyOCZ0WzBdKSk7aWYodSlyZXR1cm57aXNTaW5nbGVPcGFxdWVQaXhlbDp1fTtpZihoKXtpZihjLkltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKHIsaSkpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIqaSo0KTtyZXR1cm4oMCxhLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKSh7c3JjOnQsZGVzdDplLHdpZHRoOnIsaGVpZ2h0Omksbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6b30pLGMuSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOm4uSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZGF0YTplLHdpZHRoOnIsaGVpZ2h0OmksaW50ZXJwb2xhdGU6bH0pfWNvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhyLGkpLHM9ZS5nZXRDb250ZXh0KCIyZCIpLGg9cy5jcmVhdGVJbWFnZURhdGEocixpKTtyZXR1cm4oMCxhLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKSh7c3JjOnQsZGVzdDpoLmRhdGEsd2lkdGg6cixoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSkscy5wdXRJbWFnZURhdGEoaCwwLDApLHtkYXRhOm51bGwsd2lkdGg6cixoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpsLGJpdG1hcDplLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTp0LHdpZHRoOnIsaGVpZ2h0OmksaW52ZXJzZURlY29kZTpvLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOnMsaW50ZXJwb2xhdGU6bH0pfWdldCBkcmF3V2lkdGgoKXt2YXIgZSx0O3JldHVybiBNYXRoLm1heCh0aGlzLndpZHRoLChudWxsPT09KGU9dGhpcy5zbWFzayl8fHZvaWQgMD09PWU/dm9pZCAwOmUud2lkdGgpfHwwLChudWxsPT09KHQ9dGhpcy5tYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC53aWR0aCl8fDApfWdldCBkcmF3SGVpZ2h0KCl7dmFyIGUsdDtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsKG51bGw9PT0oZT10aGlzLnNtYXNrKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5oZWlnaHQpfHwwLChudWxsPT09KHQ9dGhpcy5tYXNrKXx8dm9pZCAwPT09dD92b2lkIDA6dC5oZWlnaHQpfHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxyPXRoaXMubnVtQ29tcHMsbj10aGlzLmRlY29kZUFkZGVuZHMsYT10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxpPSgxPDx0KS0xO2xldCBzLG87aWYoMT09PXQpe2ZvcihzPTAsbz1lLmxlbmd0aDtzPG87cysrKWVbc109KyFlW3NdO3JldHVybn1sZXQgYz0wO2ZvcihzPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O3M8bztzKyspZm9yKGxldCB0PTA7dDxyO3QrKyllW2NdPWQoZVtjXSxuW3RdLGFbdF0saSksYysrfWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCByPXRoaXMud2lkdGgsbj10aGlzLmhlaWdodCxhPXRoaXMubnVtQ29tcHMsaT1yKm4qYTtsZXQgcyxvPTA7cz10PD04P25ldyBVaW50OEFycmF5KGkpOnQ8PTE2P25ldyBVaW50MTZBcnJheShpKTpuZXcgVWludDMyQXJyYXkoaSk7Y29uc3QgYz1yKmEsbD0oMTw8dCktMTtsZXQgaCx1LGQ9MDtpZigxPT09dCl7bGV0IHQscixhO2ZvcihsZXQgaT0wO2k8bjtpKyspe2ZvcihyPWQrKC04JmMpLGE9ZCtjO2Q8cjspdT1lW28rK10sc1tkXT11Pj43JjEsc1tkKzFdPXU+PjYmMSxzW2QrMl09dT4+NSYxLHNbZCszXT11Pj40JjEsc1tkKzRdPXU+PjMmMSxzW2QrNV09dT4+MiYxLHNbZCs2XT11Pj4xJjEsc1tkKzddPTEmdSxkKz04O2lmKGQ8YSlmb3IodT1lW28rK10sdD0xMjg7ZDxhOylzW2QrK109KyEhKHUmdCksdD4+PTF9fWVsc2V7bGV0IHI9MDtmb3IodT0wLGQ9MCxoPWk7ZDxoOysrZCl7Zm9yKGQlYz09MCYmKHU9MCxyPTApO3I8dDspdT11PDw4fGVbbysrXSxyKz04O2NvbnN0IG49ci10O2xldCBhPXU+Pm47YTwwP2E9MDphPmwmJihhPWwpLHNbZF09YSx1Jj0oMTw8biktMSxyPW59fXJldHVybiBzfWZpbGxPcGFjaXR5KGUsdCxyLGEsaSl7Y29uc3Qgcz10aGlzLnNtYXNrLG89dGhpcy5tYXNrO2xldCBjLGwsaCx1LGQscDtpZihzKWw9cy53aWR0aCxoPXMuaGVpZ2h0LGM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGwqaCkscy5maWxsR3JheUJ1ZmZlcihjKSxsPT09dCYmaD09PXJ8fChjPWYoYyxzLmJwYyxsLGgsdCxyKSk7ZWxzZSBpZihvKWlmKG8gaW5zdGFuY2VvZiBnKXtmb3IobD1vLndpZHRoLGg9by5oZWlnaHQsYz1uZXcgVWludDhDbGFtcGVkQXJyYXkobCpoKSxvLm51bUNvbXBzPTEsby5maWxsR3JheUJ1ZmZlcihjKSx1PTAsZD1sKmg7dTxkOysrdSljW3VdPTI1NS1jW3VdO2w9PT10JiZoPT09cnx8KGM9ZihjLG8uYnBjLGwsaCx0LHIpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJVbmtub3duIG1hc2sgZm9ybWF0LiIpO3tjPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KnIpO2NvbnN0IGU9dGhpcy5udW1Db21wcztmb3IodT0wLGQ9dCpyO3U8ZDsrK3Upe2xldCB0PTA7Y29uc3Qgcj11KmU7Zm9yKHA9MDtwPGU7KytwKXtjb25zdCBlPWlbcitwXSxuPTIqcDtpZihlPG9bbl18fGU+b1tuKzFdKXt0PTI1NTticmVha319Y1t1XT10fX19aWYoYylmb3IodT0wLHA9MyxkPXQqYTt1PGQ7Kyt1LHArPTQpZVtwXT1jW3VdO2Vsc2UgZm9yKHU9MCxwPTMsZD10KmE7dTxkOysrdSxwKz00KWVbcF09MjU1fXVuZG9QcmVibGVuZChlLHQscil7dmFyIG47Y29uc3QgYT1udWxsPT09KG49dGhpcy5zbWFzayl8fHZvaWQgMD09PW4/dm9pZCAwOm4ubWF0dGU7aWYoIWEpcmV0dXJuO2NvbnN0IGk9dGhpcy5jb2xvclNwYWNlLmdldFJnYihhLDApLHM9aVswXSxvPWlbMV0sYz1pWzJdLGw9dCpyKjQ7Zm9yKGxldCB0PTA7dDxsO3QrPTQpe2NvbnN0IHI9ZVt0KzNdO2lmKDA9PT1yKXtlW3RdPTI1NSxlW3QrMV09MjU1LGVbdCsyXT0yNTU7Y29udGludWV9Y29uc3Qgbj0yNTUvcjtlW3RdPShlW3RdLXMpKm4rcyxlW3QrMV09KGVbdCsxXS1vKSpuK28sZVt0KzJdPShlW3QrMl0tYykqbitjfX1hc3luYyBjcmVhdGVJbWFnZURhdGEoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtjb25zdCByPXRoaXMuZHJhd1dpZHRoLGE9dGhpcy5kcmF3SGVpZ2h0LGk9e3dpZHRoOnIsaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZSxraW5kOjAsZGF0YTpudWxsfSxzPXRoaXMubnVtQ29tcHMsbz10aGlzLndpZHRoLGg9dGhpcy5oZWlnaHQsdT10aGlzLmJwYyxkPW8qcyp1Kzc+PjMsZj10JiZjLkltYWdlUmVzaXplci5uZWVkc1RvQmVSZXNpemVkKHIsYSk7aWYoIWUpe2xldCBlO2lmKCJEZXZpY2VHcmF5Ij09PXRoaXMuY29sb3JTcGFjZS5uYW1lJiYxPT09dT9lPW4uSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQOiJEZXZpY2VSR0IiIT09dGhpcy5jb2xvclNwYWNlLm5hbWV8fDghPT11fHx0aGlzLm5lZWRzRGVjb2RlfHwoZT1uLkltYWdlS2luZC5SR0JfMjRCUFApLGUmJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiZyPT09byYmYT09PWgpe2NvbnN0IHM9dGhpcy5nZXRJbWFnZUJ5dGVzKGgqZCx7fSk7aWYodClyZXR1cm4gZj9jLkltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7ZGF0YTpzLGtpbmQ6ZSx3aWR0aDpyLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9LHRoaXMubmVlZHNEZWNvZGUpOnRoaXMuY3JlYXRlQml0bWFwKGUsbyxoLHMpO2lmKGkua2luZD1lLGkuZGF0YT1zLHRoaXMubmVlZHNEZWNvZGUpeygwLG4uYXNzZXJ0KShlPT09bi5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAsIlBERkltYWdlLmNyZWF0ZUltYWdlRGF0YTogVGhlIGltYWdlIG11c3QgYmUgZ3JheXNjYWxlLiIpO2NvbnN0IHQ9aS5kYXRhO2ZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl0W2VdXj0yNTV9cmV0dXJuIGl9aWYodGhpcy5pbWFnZSBpbnN0YW5jZW9mIGwuSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT1oKmQ7aWYodCYmIWYpe2xldCB0PSExO3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00LHQ9ITA7YnJlYWs7Y2FzZSJEZXZpY2VSR0IiOmU9ZS8zKjQsdD0hMDticmVhaztjYXNlIkRldmljZUNNWUsiOnQ9ITB9aWYodCl7Y29uc3QgdD10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnIsZHJhd0hlaWdodDphLGZvcmNlUkdCQTohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcChuLkltYWdlS2luZC5SR0JBXzMyQlBQLHIsYSx0KX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gaS5raW5kPW4uSW1hZ2VLaW5kLlJHQl8yNEJQUCxpLmRhdGE9dGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDpyLGRyYXdIZWlnaHQ6YSxmb3JjZVJHQjohMH0pLGY/Yy5JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSk6aX19fWNvbnN0IGc9dGhpcy5nZXRJbWFnZUJ5dGVzKGgqZCx7aW50ZXJuYWw6ITB9KSxwPTB8Zy5sZW5ndGgvZCphL2gsbT10aGlzLmdldENvbXBvbmVudHMoZyk7bGV0IGIseSx3LHYseCxTO3JldHVybiB0JiYhZiYmKHc9bmV3IE9mZnNjcmVlbkNhbnZhcyhyLGEpLHY9dy5nZXRDb250ZXh0KCIyZCIpLHg9di5jcmVhdGVJbWFnZURhdGEocixhKSxTPXguZGF0YSksaS5raW5kPW4uSW1hZ2VLaW5kLlJHQkFfMzJCUFAsZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrPyh0JiYhZnx8KFM9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHIqYSo0KSksYj0xLHk9ITAsdGhpcy5maWxsT3BhY2l0eShTLHIsYSxwLG0pKTooIXR8fGY/KGkua2luZD1uLkltYWdlS2luZC5SR0JfMjRCUFAsUz1uZXcgVWludDhDbGFtcGVkQXJyYXkociphKjMpLGI9MCk6KG5ldyBVaW50MzJBcnJheShTLmJ1ZmZlcikuZmlsbChuLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1KSxiPTEpLHk9ITEpLHRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG0pLHRoaXMuY29sb3JTcGFjZS5maWxsUmdiKFMsbyxoLHIsYSxwLHUsbSxiKSx5JiZ0aGlzLnVuZG9QcmVibGVuZChTLHIscCksdCYmIWY/KHYucHV0SW1hZ2VEYXRhKHgsMCwwKSx7ZGF0YTpudWxsLHdpZHRoOnIsaGVpZ2h0OmEsYml0bWFwOncudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0pOihpLmRhdGE9UyxmP2MuSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKGkpOmkpfWZpbGxHcmF5QnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5udW1Db21wcztpZigxIT09dCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiUmVhZGluZyBncmF5IHNjYWxlIGZyb20gYSBjb2xvciBpbWFnZTogIi5jb25jYXQodCkpO2NvbnN0IHI9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LGk9dGhpcy5icGMscz1yKnQqaSs3Pj4zLG89dGhpcy5nZXRJbWFnZUJ5dGVzKGEqcyx7aW50ZXJuYWw6ITB9KSxjPXRoaXMuZ2V0Q29tcG9uZW50cyhvKTtsZXQgbCxoO2lmKDE9PT1pKXtpZihoPXIqYSx0aGlzLm5lZWRzRGVjb2RlKWZvcihsPTA7bDxoOysrbCllW2xdPWNbbF0tMSYyNTU7ZWxzZSBmb3IobD0wO2w8aDsrK2wpZVtsXT0yNTUmLWNbbF07cmV0dXJufXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKGMpLGg9ciphO2NvbnN0IHU9MjU1LygoMTw8aSktMSk7Zm9yKGw9MDtsPGg7KytsKWVbbF09dSpjW2xdfWNyZWF0ZUJpdG1hcChlLHQscixpKXtjb25zdCBzPW5ldyBPZmZzY3JlZW5DYW52YXModCxyKSxvPXMuZ2V0Q29udGV4dCgiMmQiKTtsZXQgYztyZXR1cm4gZT09PW4uSW1hZ2VLaW5kLlJHQkFfMzJCUFA/Yz1uZXcgSW1hZ2VEYXRhKGksdCxyKTooYz1vLmNyZWF0ZUltYWdlRGF0YSh0LHIpLCgwLGEuY29udmVydFRvUkdCQSkoe2tpbmQ6ZSxzcmM6aSxkZXN0Om5ldyBVaW50MzJBcnJheShjLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDpyLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pKSxvLnB1dEltYWdlRGF0YShjLDAsMCkse2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDpyLGJpdG1hcDpzLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWdldEltYWdlQnl0ZXMoZSx0KXtsZXR7ZHJhd1dpZHRoOnIsZHJhd0hlaWdodDphLGZvcmNlUkdCQTppPSExLGZvcmNlUkdCOnM9ITEsaW50ZXJuYWw6Yz0hMX09dDt0aGlzLmltYWdlLnJlc2V0KCksdGhpcy5pbWFnZS5kcmF3V2lkdGg9cnx8dGhpcy53aWR0aCx0aGlzLmltYWdlLmRyYXdIZWlnaHQ9YXx8dGhpcy5oZWlnaHQsdGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFpLHRoaXMuaW1hZ2UuZm9yY2VSR0I9ISFzO2NvbnN0IGw9dGhpcy5pbWFnZS5nZXRCeXRlcyhlKTtyZXR1cm4gY3x8dGhpcy5pbWFnZSBpbnN0YW5jZW9mIG8uRGVjb2RlU3RyZWFtP2w6KCgwLG4uYXNzZXJ0KShsIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyksbmV3IFVpbnQ4QXJyYXkobCkpfX10LlBERkltYWdlPWd9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5pbmNyZW1lbnRhbFVwZGF0ZT1hc3luYyBmdW5jdGlvbihlKXtsZXR7b3JpZ2luYWxEYXRhOnQseHJlZkluZm86cixuZXdSZWZzOm8seHJlZjp1PW51bGwsaGFzWGZhOmQ9ITEseGZhRGF0YXNldHNSZWY6cD1udWxsLGhhc1hmYURhdGFzZXRzRW50cnk6bT0hMSxuZWVkQXBwZWFyYW5jZXM6YixhY3JvRm9ybVJlZjp5PW51bGwsYWNyb0Zvcm06dz1udWxsLHhmYURhdGE6dj1udWxsfT1lO2F3YWl0IGFzeW5jIGZ1bmN0aW9uKGUpe2xldHt4cmVmOnQsYWNyb0Zvcm06cixhY3JvRm9ybVJlZjppLGhhc1hmYTpzLGhhc1hmYURhdGFzZXRzRW50cnk6byx4ZmFEYXRhc2V0c1JlZjpjLG5lZWRBcHBlYXJhbmNlczpoLG5ld1JlZnM6dX09ZTtpZighc3x8b3x8Y3x8KDAsbi53YXJuKSgiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKSwhaCYmKCFzfHwhY3x8bykpcmV0dXJuO2NvbnN0IGQ9bmV3IGEuRGljdCh0KTtmb3IoY29uc3QgZSBvZiByLmdldEtleXMoKSlkLnNldChlLHIuZ2V0UmF3KGUpKTtpZihzJiYhbyl7Y29uc3QgZT1yLmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIiksZS5zcGxpY2UoMywwLGMpLGQuc2V0KCJYRkEiLGUpfWgmJmQuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtjb25zdCBmPXQuZW5jcnlwdDtsZXQgZz1udWxsO2YmJihnPWYuY3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGkubnVtLGkuZ2VuKSk7Y29uc3QgcD1bXTthd2FpdCBsKGksZCxwLGcpLHUucHVzaCh7cmVmOmksZGF0YTpwLmpvaW4oIiIpfSl9KHt4cmVmOnUsYWNyb0Zvcm06dyxhY3JvRm9ybVJlZjp5LGhhc1hmYTpkLGhhc1hmYURhdGFzZXRzRW50cnk6bSx4ZmFEYXRhc2V0c1JlZjpwLG5lZWRBcHBlYXJhbmNlczpiLG5ld1JlZnM6b30pLGQmJmZ1bmN0aW9uKGUpe2xldHt4ZmFEYXRhOnQseGZhRGF0YXNldHNSZWY6cixuZXdSZWZzOmEseHJlZjpvfT1lO251bGw9PT10JiYodD1mdW5jdGlvbihlLHQpe2NvbnN0IHI9bmV3IHMuU2ltcGxlWE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO2Zvcihjb25zdHt4ZmE6ZX1vZiB0KXtpZighZSljb250aW51ZTtjb25zdHtwYXRoOnQsdmFsdWU6YX09ZTtpZighdCljb250aW51ZTtjb25zdCBvPSgwLGkucGFyc2VYRkFQYXRoKSh0KTtsZXQgYz1yLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKG8sMCk7IWMmJm8ubGVuZ3RoPjEmJihjPXIuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW28uYXQoLTEpXSwwKSksYz9jLmNoaWxkTm9kZXM9QXJyYXkuaXNBcnJheShhKT9hLm1hcCgoZT0+bmV3IHMuU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBzLlNpbXBsZURPTU5vZGUoIiN0ZXh0IixhKV06KDAsbi53YXJuKSgiTm9kZSBub3QgZm91bmQgZm9yIHBhdGg6ICIuY29uY2F0KHQpKX1jb25zdCBhPVtdO3JldHVybiByLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpLGEuam9pbigiIil9KG8uZmV0Y2hJZlJlZihyKS5nZXRTdHJpbmcoKSxhKSk7Y29uc3QgYz1vLmVuY3J5cHQ7YyYmKHQ9Yy5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oci5udW0sci5nZW4pLmVuY3J5cHRTdHJpbmcodCkpO2NvbnN0IGw9IiIuY29uY2F0KHIubnVtLCIgIikuY29uY2F0KHIuZ2VuLCIgb2JqXG48PCAvVHlwZSAvRW1iZWRkZWRGaWxlIC9MZW5ndGggIikuY29uY2F0KHQubGVuZ3RoLCI+Plxuc3RyZWFtXG4iKSt0KyJcbmVuZHN0cmVhbVxuZW5kb2JqXG4iO2EucHVzaCh7cmVmOnIsZGF0YTpsfSl9KHt4ZmFEYXRhOnYseGZhRGF0YXNldHNSZWY6cCxuZXdSZWZzOm8seHJlZjp1fSk7Y29uc3QgeD1uZXcgYS5EaWN0KG51bGwpLFM9ci5uZXdSZWY7bGV0IEEsaztjb25zdCBDPXQuYXQoLTEpOzEwPT09Q3x8MTM9PT1DPyhBPVtdLGs9dC5sZW5ndGgpOihBPVsiXG4iXSxrPXQubGVuZ3RoKzEpLHguc2V0KCJTaXplIixTLm51bSsxKSx4LnNldCgiUHJldiIsci5zdGFydFhSZWYpLHguc2V0KCJUeXBlIixhLk5hbWUuZ2V0KCJYUmVmIikpLG51bGwhPT1yLnJvb3RSZWYmJnguc2V0KCJSb290IixyLnJvb3RSZWYpLG51bGwhPT1yLmluZm9SZWYmJnguc2V0KCJJbmZvIixyLmluZm9SZWYpLG51bGwhPT1yLmVuY3J5cHRSZWYmJnguc2V0KCJFbmNyeXB0IixyLmVuY3J5cHRSZWYpLG8ucHVzaCh7cmVmOlMsZGF0YToiIn0pLG89by5zb3J0KCgoZSx0KT0+ZS5yZWYubnVtLXQucmVmLm51bSkpO2NvbnN0IE89W1swLDEsNjU1MzVdXSxGPVswLDFdO2xldCBJPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6dH1vZiBvKUk9TWF0aC5tYXgoSSxrKSxPLnB1c2goWzEsayxNYXRoLm1pbihlLmdlbiw2NTUzNSldKSxrKz10Lmxlbmd0aCxGLnB1c2goZS5udW0sMSksQS5wdXNoKHQpO2lmKHguc2V0KCJJbmRleCIsRiksQXJyYXkuaXNBcnJheShyLmZpbGVJZHMpJiZyLmZpbGVJZHMubGVuZ3RoPjApe2NvbnN0IGU9ZnVuY3Rpb24oZSx0KXtjb25zdCByPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIsaT1bci50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1pLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSlpLnB1c2goZSkscys9ZS5sZW5ndGg7Y29uc3Qgbz1uZXcgVWludDhBcnJheShzKTtsZXQgbD0wO2Zvcihjb25zdCBlIG9mIGkpZyhlLGwsbyksbCs9ZS5sZW5ndGg7cmV0dXJuKDAsbi5ieXRlc1RvU3RyaW5nKSgoMCxjLmNhbGN1bGF0ZU1ENSkobykpfShrLHIpO3guc2V0KCJJRCIsW3IuZmlsZUlkc1swXSxlXSl9Y29uc3QgVD1bMSxNYXRoLmNlaWwoTWF0aC5sb2cyKEkpLzgpLDJdLE09KFRbMF0rVFsxXStUWzJdKSpPLmxlbmd0aDt4LnNldCgiVyIsVCkseC5zZXQoIkxlbmd0aCIsTSksQS5wdXNoKCIiLmNvbmNhdChTLm51bSwiICIpLmNvbmNhdChTLmdlbiwiIG9ialxuIikpLGF3YWl0IGgoeCxBLG51bGwpLEEucHVzaCgiIHN0cmVhbVxuIik7Y29uc3QgRT1BLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApLFA9IlxuZW5kc3RyZWFtXG5lbmRvYmpcbnN0YXJ0eHJlZlxuIi5jb25jYXQoaywiXG4lJUVPRlxuIiksUj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCtFK00rUC5sZW5ndGgpO1Iuc2V0KHQpO2xldCBOPXQubGVuZ3RoO2Zvcihjb25zdCBlIG9mIEEpZyhlLE4sUiksTis9ZS5sZW5ndGg7Zm9yKGNvbnN0W2UsdCxyXW9mIE8pTj1mKGUsVFswXSxOLFIpLE49Zih0LFRbMV0sTixSKSxOPWYocixUWzJdLE4sUik7cmV0dXJuIGcoUCxOLFIpLFJ9LHQud3JpdGVEaWN0PWgsdC53cml0ZU9iamVjdD1sLHIoMTM5KSxyKDg0KSxyKDkzKSxyKDk0KSxyKDk3KSxyKDk5KSxyKDEwMSkscigxMDUpLHIoMTA4KSxyKDExNSk7dmFyIG49cigxNDQpLGE9cigxNTApLGk9cigxNDkpLHM9cigyMTcpLG89cigxNTEpLGM9cigyMTgpO2FzeW5jIGZ1bmN0aW9uIGwoZSx0LHIsbil7ci5wdXNoKCIiLmNvbmNhdChlLm51bSwiICIpLmNvbmNhdChlLmdlbiwiIG9ialxuIikpLHQgaW5zdGFuY2VvZiBhLkRpY3Q/YXdhaXQgaCh0LHIsbik6dCBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSYmYXdhaXQgdSh0LHIsbiksci5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gaChlLHQscil7dC5wdXNoKCI8PCIpO2Zvcihjb25zdCBuIG9mIGUuZ2V0S2V5cygpKXQucHVzaCgiIC8iLmNvbmNhdCgoMCxpLmVzY2FwZVBERk5hbWUpKG4pLCIgIikpLGF3YWl0IGQoZS5nZXRSYXcobiksdCxyKTt0LnB1c2goIj4+Iil9YXN5bmMgZnVuY3Rpb24gdShlLHQscil7bGV0IGk9ZS5nZXRTdHJpbmcoKTtudWxsIT09ciYmKGk9ci5lbmNyeXB0U3RyaW5nKGkpKTtjb25zdHtkaWN0OnN9PWUsW28sY109YXdhaXQgUHJvbWlzZS5hbGwoW3MuZ2V0QXN5bmMoIkZpbHRlciIpLHMuZ2V0QXN5bmMoIkRlY29kZVBhcm1zIildKSxsPUFycmF5LmlzQXJyYXkobyk/YXdhaXQgcy54cmVmLmZldGNoSWZSZWZBc3luYyhvWzBdKTpvLHU9KDAsYS5pc05hbWUpKGwsIkZsYXRlRGVjb2RlIik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBDb21wcmVzc2lvblN0cmVhbSYmKGkubGVuZ3RoPj0yNTZ8fHUpKXRyeXtjb25zdCBlPSgwLG4uc3RyaW5nVG9CeXRlcykoaSksdD1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSxyPXQud3JpdGFibGUuZ2V0V3JpdGVyKCk7ci53cml0ZShlKSxyLmNsb3NlKCk7Y29uc3QgbD1hd2FpdCBuZXcgUmVzcG9uc2UodC5yZWFkYWJsZSkuYXJyYXlCdWZmZXIoKTtsZXQgaCxkO2k9KDAsbi5ieXRlc1RvU3RyaW5nKShuZXcgVWludDhBcnJheShsKSksbz91fHwoaD1BcnJheS5pc0FycmF5KG8pP1thLk5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLm9dOlthLk5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLG9dLGMmJihkPUFycmF5LmlzQXJyYXkoYyk/W251bGwsLi4uY106W251bGwsY10pKTpoPWEuTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksaCYmcy5zZXQoIkZpbHRlciIsaCksZCYmcy5zZXQoIkRlY29kZVBhcm1zIixkKX1jYXRjaChlKXsoMCxuLmluZm8pKCd3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJy5jb25jYXQoZSwnIi4nKSl9cy5zZXQoIkxlbmd0aCIsaS5sZW5ndGgpLGF3YWl0IGgocyx0LHIpLHQucHVzaCgiIHN0cmVhbVxuIixpLCJcbmVuZHN0cmVhbSIpfWFzeW5jIGZ1bmN0aW9uIGQoZSx0LHIpe2UgaW5zdGFuY2VvZiBhLk5hbWU/dC5wdXNoKCIvIi5jb25jYXQoKDAsaS5lc2NhcGVQREZOYW1lKShlLm5hbWUpKSk6ZSBpbnN0YW5jZW9mIGEuUmVmP3QucHVzaCgiIi5jb25jYXQoZS5udW0sIiAiKS5jb25jYXQoZS5nZW4sIiBSIikpOkFycmF5LmlzQXJyYXkoZSk/YXdhaXQgYXN5bmMgZnVuY3Rpb24oZSx0LHIpe3QucHVzaCgiWyIpO2xldCBuPSEwO2Zvcihjb25zdCBhIG9mIGUpbj9uPSExOnQucHVzaCgiICIpLGF3YWl0IGQoYSx0LHIpO3QucHVzaCgiXSIpfShlLHQscik6InN0cmluZyI9PXR5cGVvZiBlPyhudWxsIT09ciYmKGU9ci5lbmNyeXB0U3RyaW5nKGUpKSx0LnB1c2goIigiLmNvbmNhdCgoMCxpLmVzY2FwZVN0cmluZykoZSksIikiKSkpOiJudW1iZXIiPT10eXBlb2YgZT90LnB1c2goKDAsaS5udW1iZXJUb1N0cmluZykoZSkpOiJib29sZWFuIj09dHlwZW9mIGU/dC5wdXNoKGUudG9TdHJpbmcoKSk6ZSBpbnN0YW5jZW9mIGEuRGljdD9hd2FpdCBoKGUsdCxyKTplIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtP2F3YWl0IHUoZSx0LHIpOm51bGw9PT1lP3QucHVzaCgibnVsbCIpOigwLG4ud2FybikoIlVuaGFuZGxlZCB2YWx1ZSBpbiB3cml0ZXI6ICIuY29uY2F0KHR5cGVvZiBlLCIsIHBsZWFzZSBmaWxlIGEgYnVnLiIpKX1mdW5jdGlvbiBmKGUsdCxyLG4pe2ZvcihsZXQgYT10K3ItMTthPnItMTthLS0pblthXT0yNTUmZSxlPj49ODtyZXR1cm4gcit0fWZ1bmN0aW9uIGcoZSx0LHIpe2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKylyW3Qrbl09MjU1JmUuY2hhckNvZGVBdChuKX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5YTUxQYXJzZXJFcnJvckNvZGU9dC5YTUxQYXJzZXJCYXNlPXQuU2ltcGxlWE1MUGFyc2VyPXQuU2ltcGxlRE9NTm9kZT12b2lkIDAscigxMzkpO3ZhciBuPXIoMTQ5KTtjb25zdCBhPXtOb0Vycm9yOjAsRW5kT2ZEb2N1bWVudDotMSxVbnRlcm1pbmF0ZWRDZGF0Oi0yLFVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uOi0zLFVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbjotNCxVbnRlcm1pbmF0ZWRDb21tZW50Oi01LE1hbGZvcm1lZEVsZW1lbnQ6LTYsT3V0T2ZNZW1vcnk6LTcsVW50ZXJtaW5hdGVkQXR0cmlidXRlVmFsdWU6LTgsVW50ZXJtaW5hdGVkRWxlbWVudDotOSxFbGVtZW50TmV2ZXJCZWd1bjotMTB9O2Z1bmN0aW9uIGkoZSx0KXtjb25zdCByPWVbdF07cmV0dXJuIiAiPT09cnx8IlxuIj09PXJ8fCJcciI9PT1yfHwiXHQiPT09cn10LlhNTFBhcnNlckVycm9yQ29kZT1hO2NsYXNzIHN7X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8mKFteO10rKTsvZywoKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSkpfV9wYXJzZUNvbnRlbnQoZSx0KXtjb25zdCByPVtdO2xldCBuPXQ7ZnVuY3Rpb24gYSgpe2Zvcig7bjxlLmxlbmd0aCYmaShlLG4pOykrK259Zm9yKDtuPGUubGVuZ3RoJiYhaShlLG4pJiYiPiIhPT1lW25dJiYiLyIhPT1lW25dOykrK247Y29uc3Qgcz1lLnN1YnN0cmluZyh0LG4pO2ZvcihhKCk7bjxlLmxlbmd0aCYmIj4iIT09ZVtuXSYmIi8iIT09ZVtuXSYmIj8iIT09ZVtuXTspe2EoKTtsZXQgdD0iIixzPSIiO2Zvcig7bjxlLmxlbmd0aCYmIWkoZSxuKSYmIj0iIT09ZVtuXTspdCs9ZVtuXSwrK247aWYoYSgpLCI9IiE9PWVbbl0pcmV0dXJuIG51bGw7KytuLGEoKTtjb25zdCBvPWVbbl07aWYoJyInIT09byYmIiciIT09bylyZXR1cm4gbnVsbDtjb25zdCBjPWUuaW5kZXhPZihvLCsrbik7aWYoYzwwKXJldHVybiBudWxsO3M9ZS5zdWJzdHJpbmcobixjKSxyLnB1c2goe25hbWU6dCx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMocyl9KSxuPWMrMSxhKCl9cmV0dXJue25hbWU6cyxhdHRyaWJ1dGVzOnIscGFyc2VkOm4tdH19X3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsdCl7bGV0IHI9dDtmb3IoO3I8ZS5sZW5ndGgmJiFpKGUscikmJiI+IiE9PWVbcl0mJiI/IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBuPWUuc3Vic3RyaW5nKHQscik7IWZ1bmN0aW9uKCl7Zm9yKDtyPGUubGVuZ3RoJiZpKGUscik7KSsrcn0oKTtjb25zdCBhPXI7Zm9yKDtyPGUubGVuZ3RoJiYoIj8iIT09ZVtyXXx8Ij4iIT09ZVtyKzFdKTspKytyO3JldHVybntuYW1lOm4sdmFsdWU6ZS5zdWJzdHJpbmcoYSxyKSxwYXJzZWQ6ci10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCByPXQ7aWYoIjwiPT09ZVt0XSl7bGV0IHQ7c3dpdGNoKCsrcixlW3JdKXtjYXNlIi8iOmlmKCsrcix0PWUuaW5kZXhPZigiPiIsciksdDwwKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihhLlVudGVybWluYXRlZEVsZW1lbnQpO3RoaXMub25FbmRFbGVtZW50KGUuc3Vic3RyaW5nKHIsdCkpLHI9dCsxO2JyZWFrO2Nhc2UiPyI6KytyO2NvbnN0IG49dGhpcy5fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSxyKTtpZigiPz4iIT09ZS5zdWJzdHJpbmcocituLnBhcnNlZCxyK24ucGFyc2VkKzIpKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihhLlVudGVybWluYXRlZFhtbERlY2xhcmF0aW9uKTt0aGlzLm9uUGkobi5uYW1lLG4udmFsdWUpLHIrPW4ucGFyc2VkKzI7YnJlYWs7Y2FzZSIhIjppZigiLS0iPT09ZS5zdWJzdHJpbmcocisxLHIrMykpe2lmKHQ9ZS5pbmRleE9mKCItLVx4M2UiLHIrMyksdDwwKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihhLlVudGVybWluYXRlZENvbW1lbnQpO3RoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKHIrMyx0KSkscj10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhyKzEscis4KSl7aWYodD1lLmluZGV4T2YoIl1dPiIscis4KSx0PDApcmV0dXJuIHZvaWQgdGhpcy5vbkVycm9yKGEuVW50ZXJtaW5hdGVkQ2RhdCk7dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKHIrOCx0KSkscj10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhyKzEscis4KSlyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IoYS5NYWxmb3JtZWRFbGVtZW50KTt7Y29uc3Qgbj1lLmluZGV4T2YoIlsiLHIrOCk7bGV0IGk9ITE7aWYodD1lLmluZGV4T2YoIj4iLHIrOCksdDwwKXJldHVybiB2b2lkIHRoaXMub25FcnJvcihhLlVudGVybWluYXRlZERvY3R5cGVEZWNsYXJhdGlvbik7aWYobj4wJiZ0Pm4pe2lmKHQ9ZS5pbmRleE9mKCJdPiIscis4KSx0PDApcmV0dXJuIHZvaWQgdGhpcy5vbkVycm9yKGEuVW50ZXJtaW5hdGVkRG9jdHlwZURlY2xhcmF0aW9uKTtpPSEwfWNvbnN0IHM9ZS5zdWJzdHJpbmcocis4LHQrKGk/MTowKSk7dGhpcy5vbkRvY3R5cGUocykscj10KyhpPzI6MSl9fWJyZWFrO2RlZmF1bHQ6Y29uc3QgaT10aGlzLl9wYXJzZUNvbnRlbnQoZSxyKTtpZihudWxsPT09aSlyZXR1cm4gdm9pZCB0aGlzLm9uRXJyb3IoYS5NYWxmb3JtZWRFbGVtZW50KTtsZXQgcz0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcocitpLnBhcnNlZCxyK2kucGFyc2VkKzIpKXM9ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhyK2kucGFyc2VkLHIraS5wYXJzZWQrMSkpcmV0dXJuIHZvaWQgdGhpcy5vbkVycm9yKGEuVW50ZXJtaW5hdGVkRWxlbWVudCk7dGhpcy5vbkJlZ2luRWxlbWVudChpLm5hbWUsaS5hdHRyaWJ1dGVzLHMpLHIrPWkucGFyc2VkKyhzPzI6MSl9fWVsc2V7Zm9yKDtyPGUubGVuZ3RoJiYiPCIhPT1lW3JdOylyKys7Y29uc3Qgbj1lLnN1YnN0cmluZyh0LHIpO3RoaXMub25UZXh0KHRoaXMuX3Jlc29sdmVFbnRpdGllcyhuKSl9dD1yfX1vblJlc29sdmVFbnRpdHkoZSl7cmV0dXJuIiYiLmNvbmNhdChlLCI7Iil9b25QaShlLHQpe31vbkNvbW1lbnQoZSl7fW9uQ2RhdGEoZSl7fW9uRG9jdHlwZShlKXt9b25UZXh0KGUpe31vbkJlZ2luRWxlbWVudChlLHQscil7fW9uRW5kRWxlbWVudChlKXt9b25FcnJvcihlKXt9fXQuWE1MUGFyc2VyQmFzZT1zO2NsYXNzIG97Y29uc3RydWN0b3IoZSx0KXt0aGlzLm5vZGVOYW1lPWUsdGhpcy5ub2RlVmFsdWU9dCxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicGFyZW50Tm9kZSIse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KX1nZXQgZmlyc3RDaGlsZCgpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5jaGlsZE5vZGVzKXx8dm9pZCAwPT09ZT92b2lkIDA6ZVswXX1nZXQgbmV4dFNpYmxpbmcoKXtjb25zdCBlPXRoaXMucGFyZW50Tm9kZS5jaGlsZE5vZGVzO2lmKCFlKXJldHVybjtjb25zdCB0PWUuaW5kZXhPZih0aGlzKTtyZXR1cm4tMSE9PXQ/ZVt0KzFdOnZvaWQgMH1nZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzP3RoaXMuY2hpbGROb2Rlcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRleHRDb250ZW50fSkpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7dmFyIGU7cmV0dXJuKG51bGw9PT0oZT10aGlzLmNoaWxkTm9kZXMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmxlbmd0aCk+MH1zZWFyY2hOb2RlKGUsdCl7aWYodD49ZS5sZW5ndGgpcmV0dXJuIHRoaXM7Y29uc3Qgcj1lW3RdLG49W107bGV0IGE9dGhpcztmb3IoOzspe3ZhciBpO2lmKHIubmFtZT09PWEubm9kZU5hbWUpe2lmKDAhPT1yLnBvcyl7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtpXT1uLnBvcCgpO2xldCBzPTA7Zm9yKGNvbnN0IG4gb2YgaS5jaGlsZE5vZGVzKWlmKHIubmFtZT09PW4ubm9kZU5hbWUpe2lmKHM9PT1yLnBvcylyZXR1cm4gbi5zZWFyY2hOb2RlKGUsdCsxKTtzKyt9cmV0dXJuIGEuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCByPWEuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PXIpcmV0dXJuIHJ9fWlmKChudWxsPT09KGk9YS5jaGlsZE5vZGVzKXx8dm9pZCAwPT09aT92b2lkIDA6aS5sZW5ndGgpPjApbi5wdXNoKFthLDBdKSxhPWEuY2hpbGROb2Rlc1swXTtlbHNle2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1uLmxlbmd0aDspe2NvbnN0W2UsdF09bi5wb3AoKSxyPXQrMTtpZihyPGUuY2hpbGROb2Rlcy5sZW5ndGgpe24ucHVzaChbZSxyXSksYT1lLmNoaWxkTm9kZXNbcl07YnJlYWt9fWlmKDA9PT1uLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2lmKGUucHVzaCgiPCIuY29uY2F0KHRoaXMubm9kZU5hbWUpKSx0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaCgiICIuY29uY2F0KHQubmFtZSwnPSInKS5jb25jYXQoKDAsbi5lbmNvZGVUb1htbFN0cmluZykodC52YWx1ZSksJyInKSk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKCI8LyIuY29uY2F0KHRoaXMubm9kZU5hbWUsIj4iKSl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goIj4iLmNvbmNhdCgoMCxuLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzLm5vZGVWYWx1ZSksIjwvIikuY29uY2F0KHRoaXMubm9kZU5hbWUsIj4iKSk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKCgwLG4uZW5jb2RlVG9YbWxTdHJpbmcpKHRoaXMubm9kZVZhbHVlKSl9fXQuU2ltcGxlRE9NTm9kZT1vLHQuU2ltcGxlWE1MUGFyc2VyPWNsYXNzIGV4dGVuZHMgc3tjb25zdHJ1Y3RvcihlKXtsZXR7aGFzQXR0cmlidXRlczp0PSExLGxvd2VyQ2FzZU5hbWU6cj0hMX09ZTtzdXBlcigpLHRoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsLHRoaXMuX3N0YWNrPW51bGwsdGhpcy5fZXJyb3JDb2RlPWEuTm9FcnJvcix0aGlzLl9oYXNBdHRyaWJ1dGVzPXQsdGhpcy5fbG93ZXJDYXNlTmFtZT1yfXBhcnNlRnJvbVN0cmluZyhlKXtpZih0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W10sdGhpcy5fc3RhY2s9W10sdGhpcy5fZXJyb3JDb2RlPWEuTm9FcnJvcix0aGlzLnBhcnNlWG1sKGUpLHRoaXMuX2Vycm9yQ29kZSE9PWEuTm9FcnJvcilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbihlKXtmb3IobGV0IHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYoIWkoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IG8oIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IG8oIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQscil7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCBuPW5ldyBvKGUpO24uY2hpbGROb2Rlcz1bXSx0aGlzLl9oYXNBdHRyaWJ1dGVzJiYobi5hdHRyaWJ1dGVzPXQpLHRoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKG4pLHJ8fCh0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCksdGhpcy5fY3VycmVudEZyYWdtZW50PW4uY2hpbGROb2Rlcyl9b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jYWxjdWxhdGVTSEEyNTY9dC5jYWxjdWxhdGVNRDU9dC5QREYyMD10LlBERjE3PXQuQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeT10LkFSQ0ZvdXJDaXBoZXI9dC5BRVMyNTZDaXBoZXI9dC5BRVMxMjhDaXBoZXI9dm9pZCAwLHQuY2FsY3VsYXRlU0hBMzg0PXUsdC5jYWxjdWxhdGVTSEE1MTI9dm9pZCAwLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDEzOSk7dmFyIG49cigxNDQpLGE9cigxNTApLGk9cigyMTkpO2NsYXNzIHN7Y29uc3RydWN0b3IoZSl7dGhpcy5hPTAsdGhpcy5iPTA7Y29uc3QgdD1uZXcgVWludDhBcnJheSgyNTYpLHI9ZS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXRbZV09ZTtmb3IobGV0IG49MCxhPTA7bjwyNTY7KytuKXtjb25zdCBpPXRbbl07YT1hK2krZVtuJXJdJjI1NSx0W25dPXRbYV0sdFthXT1pfXRoaXMucz10fWVuY3J5cHRCbG9jayhlKXtsZXQgdD10aGlzLmEscj10aGlzLmI7Y29uc3Qgbj10aGlzLnMsYT1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KGEpO2ZvcihsZXQgcz0wO3M8YTsrK3Mpe3Q9dCsxJjI1NTtjb25zdCBhPW5bdF07cj1yK2EmMjU1O2NvbnN0IG89bltyXTtuW3RdPW8sbltyXT1hLGlbc109ZVtzXV5uW2ErbyYyNTVdfXJldHVybiB0aGlzLmE9dCx0aGlzLmI9cixpfWRlY3J5cHRCbG9jayhlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9ZW5jcnlwdChlKXtyZXR1cm4gdGhpcy5lbmNyeXB0QmxvY2soZSl9fXQuQVJDRm91ckNpcGhlcj1zO2NvbnN0IG89ZnVuY3Rpb24oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSx0PW5ldyBJbnQzMkFycmF5KFstNjgwODc2OTM2LC0zODk1NjQ1ODYsNjA2MTA1ODE5LC0xMDQ0NTI1MzMwLC0xNzY0MTg4OTcsMTIwMDA4MDQyNiwtMTQ3MzIzMTM0MSwtNDU3MDU5ODMsMTc3MDAzNTQxNiwtMTk1ODQxNDQxNywtNDIwNjMsLTE5OTA0MDQxNjIsMTgwNDYwMzY4MiwtNDAzNDExMDEsLTE1MDIwMDIyOTAsMTIzNjUzNTMyOSwtMTY1Nzk2NTEwLC0xMDY5NTAxNjMyLDY0MzcxNzcxMywtMzczODk3MzAyLC03MDE1NTg2OTEsMzgwMTYwODMsLTY2MDQ3ODMzNSwtNDA1NTM3ODQ4LDU2ODQ0NjQzOCwtMTAxOTgwMzY5MCwtMTg3MzYzOTYxLDExNjM1MzE1MDEsLTE0NDQ2ODE0NjcsLTUxNDAzNzg0LDE3MzUzMjg0NzMsLTE5MjY2MDc3MzQsLTM3ODU1OCwtMjAyMjU3NDQ2MywxODM5MDMwNTYyLC0zNTMwOTU1NiwtMTUzMDk5MjA2MCwxMjcyODkzMzUzLC0xNTU0OTc2MzIsLTEwOTQ3MzA2NDAsNjgxMjc5MTc0LC0zNTg1MzcyMjIsLTcyMjUyMTk3OSw3NjAyOTE4OSwtNjQwMzY0NDg3LC00MjE4MTU4MzUsNTMwNzQyNTIwLC05OTUzMzg2NTEsLTE5ODYzMDg0NCwxMTI2ODkxNDE1LC0xNDE2MzU0OTA1LC01NzQzNDA1NSwxNzAwNDg1NTcxLC0xODk0OTg2NjA2LC0xMDUxNTIzLC0yMDU0OTIyNzk5LDE4NzMzMTMzNTksLTMwNjExNzQ0LC0xNTYwMTk4MzgwLDEzMDkxNTE2NDksLTE0NTUyMzA3MCwtMTEyMDIxMDM3OSw3MTg3ODcyNTksLTM0MzQ4NTU1MV0pO3JldHVybiBmdW5jdGlvbihyLG4sYSl7bGV0IGk9MTczMjU4NDE5MyxzPS0yNzE3MzM4Nzksbz0tMTczMjU4NDE5NCxjPTI3MTczMzg3ODtjb25zdCBsPWErNzImLTY0LGg9bmV3IFVpbnQ4QXJyYXkobCk7bGV0IHUsZDtmb3IodT0wO3U8YTsrK3UpaFt1XT1yW24rK107aFt1KytdPTEyODtjb25zdCBmPWwtODtmb3IoO3U8ZjspaFt1KytdPTA7aFt1KytdPWE8PDMmMjU1LGhbdSsrXT1hPj41JjI1NSxoW3UrK109YT4+MTMmMjU1LGhbdSsrXT1hPj4yMSYyNTUsaFt1KytdPWE+Pj4yOSYyNTUsaFt1KytdPTAsaFt1KytdPTAsaFt1KytdPTA7Y29uc3QgZz1uZXcgSW50MzJBcnJheSgxNik7Zm9yKHU9MDt1PGw7KXtmb3IoZD0wO2Q8MTY7KytkLHUrPTQpZ1tkXT1oW3VdfGhbdSsxXTw8OHxoW3UrMl08PDE2fGhbdSszXTw8MjQ7bGV0IHIsbixhPWksbD1zLGY9byxwPWM7Zm9yKGQ9MDtkPDY0OysrZCl7ZDwxNj8ocj1sJmZ8fmwmcCxuPWQpOmQ8MzI/KHI9cCZsfH5wJmYsbj01KmQrMSYxNSk6ZDw0OD8ocj1sXmZecCxuPTMqZCs1JjE1KToocj1mXihsfH5wKSxuPTcqZCYxNSk7Y29uc3QgaT1wLHM9YStyK3RbZF0rZ1tuXXwwLG89ZVtkXTtwPWYsZj1sLGw9bCsoczw8b3xzPj4+MzItbyl8MCxhPWl9aT1pK2F8MCxzPXMrbHwwLG89bytmfDAsYz1jK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZvLG8+PjgmMjU1LG8+PjE2JjI1NSxvPj4+MjQmMjU1LDI1NSZjLGM+PjgmMjU1LGM+PjE2JjI1NSxjPj4+MjQmMjU1XSl9fSgpO3QuY2FsY3VsYXRlTUQ1PW87Y2xhc3MgY3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaGlnaD0wfGUsdGhpcy5sb3c9MHx0fWFuZChlKXt0aGlzLmhpZ2gmPWUuaGlnaCx0aGlzLmxvdyY9ZS5sb3d9eG9yKGUpe3RoaXMuaGlnaF49ZS5oaWdoLHRoaXMubG93Xj1lLmxvd31vcihlKXt0aGlzLmhpZ2h8PWUuaGlnaCx0aGlzLmxvd3w9ZS5sb3d9c2hpZnRSaWdodChlKXtlPj0zMj8odGhpcy5sb3c9dGhpcy5oaWdoPj4+ZS0zMnwwLHRoaXMuaGlnaD0wKToodGhpcy5sb3c9dGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZSx0aGlzLmhpZ2g9dGhpcy5oaWdoPj4+ZXwwKX1zaGlmdExlZnQoZSl7ZT49MzI/KHRoaXMuaGlnaD10aGlzLmxvdzw8ZS0zMix0aGlzLmxvdz0wKToodGhpcy5oaWdoPXRoaXMuaGlnaDw8ZXx0aGlzLmxvdz4+PjMyLWUsdGhpcy5sb3c8PD1lKX1yb3RhdGVSaWdodChlKXtsZXQgdCxyOzMyJmU/KHI9dGhpcy5sb3csdD10aGlzLmhpZ2gpOih0PXRoaXMubG93LHI9dGhpcy5oaWdoKSxlJj0zMSx0aGlzLmxvdz10Pj4+ZXxyPDwzMi1lLHRoaXMuaGlnaD1yPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoLHRoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgcj0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKHIrPTEpLHRoaXMubG93PTB8dCx0aGlzLmhpZ2g9MHxyfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1LGVbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NSxlW3QrMl09dGhpcy5oaWdoPj44JjI1NSxlW3QrM109MjU1JnRoaXMuaGlnaCxlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTUsZVt0KzVdPXRoaXMubG93Pj4xNiYyNTUsZVt0KzZdPXRoaXMubG93Pj44JjI1NSxlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoLHRoaXMubG93PWUubG93fX1jb25zdCBsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIHQoZSx0LHIpe3JldHVybiBlJnRefmUmcn1mdW5jdGlvbiByKGUsdCxyKXtyZXR1cm4gZSZ0XmUmcl50JnJ9ZnVuY3Rpb24gbih0KXtyZXR1cm4gZSh0LDIpXmUodCwxMyleZSh0LDIyKX1mdW5jdGlvbiBhKHQpe3JldHVybiBlKHQsNileZSh0LDExKV5lKHQsMjUpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIGUodCw3KV5lKHQsMTgpXnQ+Pj4zfWNvbnN0IHM9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uKG8sYyxsKXtsZXQgaD0xNzc5MDMzNzAzLHU9MzE0NDEzNDI3NyxkPTEwMTM5MDQyNDIsZj0yNzczNDgwNzYyLGc9MTM1OTg5MzExOSxwPTI2MDA4MjI5MjQsbT01Mjg3MzQ2MzUsYj0xNTQxNDU5MjI1O2NvbnN0IHk9NjQqTWF0aC5jZWlsKChsKzkpLzY0KSx3PW5ldyBVaW50OEFycmF5KHkpO2xldCB2LHg7Zm9yKHY9MDt2PGw7Kyt2KXdbdl09b1tjKytdO3dbdisrXT0xMjg7Y29uc3QgUz15LTg7Zm9yKDt2PFM7KXdbdisrXT0wO3dbdisrXT0wLHdbdisrXT0wLHdbdisrXT0wLHdbdisrXT1sPj4+MjkmMjU1LHdbdisrXT1sPj4yMSYyNTUsd1t2KytdPWw+PjEzJjI1NSx3W3YrK109bD4+NSYyNTUsd1t2KytdPWw8PDMmMjU1O2NvbnN0IEE9bmV3IFVpbnQzMkFycmF5KDY0KTtmb3Iodj0wO3Y8eTspe2Zvcih4PTA7eDwxNjsrK3gpQVt4XT13W3ZdPDwyNHx3W3YrMV08PDE2fHdbdisyXTw8OHx3W3YrM10sdis9NDtmb3IoeD0xNjt4PDY0OysreClBW3hdPShlKGs9QVt4LTJdLDE3KV5lKGssMTkpXms+Pj4xMCkrQVt4LTddK2koQVt4LTE1XSkrQVt4LTE2XXwwO2xldCBvLGMsbD1oLHk9dSxTPWQsQz1mLE89ZyxGPXAsST1tLFQ9Yjtmb3IoeD0wO3g8NjQ7Kyt4KW89VCthKE8pK3QoTyxGLEkpK3NbeF0rQVt4XSxjPW4obCkrcihsLHksUyksVD1JLEk9RixGPU8sTz1DK298MCxDPVMsUz15LHk9bCxsPW8rY3wwO2g9aCtsfDAsdT11K3l8MCxkPWQrU3wwLGY9ZitDfDAsZz1nK098MCxwPXArRnwwLG09bStJfDAsYj1iK1R8MH12YXIgaztyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2g+PjI0JjI1NSxoPj4xNiYyNTUsaD4+OCYyNTUsMjU1JmgsdT4+MjQmMjU1LHU+PjE2JjI1NSx1Pj44JjI1NSwyNTUmdSxkPj4yNCYyNTUsZD4+MTYmMjU1LGQ+PjgmMjU1LDI1NSZkLGY+PjI0JjI1NSxmPj4xNiYyNTUsZj4+OCYyNTUsMjU1JmYsZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxwPj4yNCYyNTUscD4+MTYmMjU1LHA+PjgmMjU1LDI1NSZwLG0+PjI0JjI1NSxtPj4xNiYyNTUsbT4+OCYyNTUsMjU1Jm0sYj4+MjQmMjU1LGI+PjE2JjI1NSxiPj44JjI1NSwyNTUmYl0pfX0oKTt0LmNhbGN1bGF0ZVNIQTI1Nj1sO2NvbnN0IGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxyLG4sYSl7ZS5hc3NpZ24odCksZS5hbmQociksYS5hc3NpZ24odCksYS5ub3QoKSxhLmFuZChuKSxlLnhvcihhKX1mdW5jdGlvbiB0KGUsdCxyLG4sYSl7ZS5hc3NpZ24odCksZS5hbmQociksYS5hc3NpZ24odCksYS5hbmQobiksZS54b3IoYSksYS5hc3NpZ24ociksYS5hbmQobiksZS54b3IoYSl9ZnVuY3Rpb24gcihlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgyOCksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgzNCksZS54b3Iociksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgzOSksZS54b3Iocil9ZnVuY3Rpb24gbihlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgxNCksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCgxOCksZS54b3Iociksci5hc3NpZ24odCksci5yb3RhdGVSaWdodCg0MSksZS54b3Iocil9ZnVuY3Rpb24gYShlLHQscil7ZS5hc3NpZ24odCksZS5yb3RhdGVSaWdodCgxKSxyLmFzc2lnbih0KSxyLnJvdGF0ZVJpZ2h0KDgpLGUueG9yKHIpLHIuYXNzaWduKHQpLHIuc2hpZnRSaWdodCg3KSxlLnhvcihyKX1mdW5jdGlvbiBpKGUsdCxyKXtlLmFzc2lnbih0KSxlLnJvdGF0ZVJpZ2h0KDE5KSxyLmFzc2lnbih0KSxyLnJvdGF0ZVJpZ2h0KDYxKSxlLnhvcihyKSxyLmFzc2lnbih0KSxyLnNoaWZ0UmlnaHQoNiksZS54b3Iocil9Y29uc3Qgcz1bbmV3IGMoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxuZXcgYygxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IGMoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgYygzOTIxMDA5NTczLDIxNzMyOTU1NDgpLG5ldyBjKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgYygxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBjKDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksbmV3IGMoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgYygzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBjKDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxuZXcgYyg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IGMoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgYygxOTI1MDc4Mzg4LDQwNjgxODIzODMpLG5ldyBjKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgYygyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IGMoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSxuZXcgYygzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBjKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgYygyNjQzNDcwNzgsMjM0MTI2Mjc3MyksbmV3IGMoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBjKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgYygxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLG5ldyBjKDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IGMoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgYygyNTU0MjIwODgyLDM5OTk3MTkzMzkpLG5ldyBjKDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgYygyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBjKDMyMTAzMTM2NzEsMzIwMzMzNzk1NiksbmV3IGMoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgYygzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBjKDExMzkyNjk5MywzNzU4MzI2MzgzKSxuZXcgYygzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgYyg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IGMoNzczNTI5OTEyLDE1NDYwNDU3MzQpLG5ldyBjKDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IGMoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgYygxNjk1MTgzNzAwLDIzNDM1MjczOTApLG5ldyBjKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IGMoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgYygyNDU2OTU2MDM3LDM0NDA3NzYyNyksbmV3IGMoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgYygyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBjKDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksbmV3IGMoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBjKDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IGMoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxuZXcgYyg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBjKDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBjKDQzMDIyNzczNCwzMTAwODIzNzUyKSxuZXcgYyg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IGMoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBjKDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxuZXcgYyg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IGMoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgYygxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLG5ldyBjKDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IGMoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgYygyMDI0MTA0ODE1LDExMjU1OTI5MjgpLG5ldyBjKDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IGMoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBjKDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxuZXcgYygyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBjKDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IGMoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxuZXcgYygzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBjKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgYygzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLG5ldyBjKDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IGMoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBjKDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxuZXcgYygyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IGMoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IGMoNjg1NDcxNzMzLDU4NzQ5NjgzNiksbmV3IGMoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBjKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgYygxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLG5ldyBjKDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IGMoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgYygxNjA3MTY3OTE1LDk4NzE2NzQ2OCksbmV3IGMoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV07cmV0dXJuIGZ1bmN0aW9uKG8sbCxoKXtsZXQgdSxkLGYsZyxwLG0sYix5LHc9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXTt3Pyh1PW5ldyBjKDM0MTgwNzAzNjUsMzIzODM3MTAzMiksZD1uZXcgYygxNjU0MjcwMjUwLDkxNDE1MDY2MyksZj1uZXcgYygyNDM4NTI5MzcwLDgxMjcwMjk5OSksZz1uZXcgYygzNTU0NjIzNjAsNDE0NDkxMjY5NykscD1uZXcgYygxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG09bmV3IGMoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxiPW5ldyBjKDM2NzUwMDg1MjUsMTY5NDA3NjgzOSkseT1uZXcgYygxMjAzMDYyODEzLDMyMDQwNzU0MjgpKToodT1uZXcgYygxNzc5MDMzNzAzLDQwODkyMzU3MjApLGQ9bmV3IGMoMzE0NDEzNDI3NywyMjI3ODczNTk1KSxmPW5ldyBjKDEwMTM5MDQyNDIsNDI3MTE3NTcyMyksZz1uZXcgYygyNzczNDgwNzYyLDE1OTU3NTAxMjkpLHA9bmV3IGMoMTM1OTg5MzExOSwyOTE3NTY1MTM3KSxtPW5ldyBjKDI2MDA4MjI5MjQsNzI1NTExMTk5KSxiPW5ldyBjKDUyODczNDYzNSw0MjE1Mzg5NTQ3KSx5PW5ldyBjKDE1NDE0NTkyMjUsMzI3MDMzMjA5KSk7Y29uc3Qgdj0xMjgqTWF0aC5jZWlsKChoKzE3KS8xMjgpLHg9bmV3IFVpbnQ4QXJyYXkodik7bGV0IFMsQTtmb3IoUz0wO1M8aDsrK1MpeFtTXT1vW2wrK107eFtTKytdPTEyODtjb25zdCBrPXYtMTY7Zm9yKDtTPGs7KXhbUysrXT0wO3hbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT0wLHhbUysrXT1oPj4+MjkmMjU1LHhbUysrXT1oPj4yMSYyNTUseFtTKytdPWg+PjEzJjI1NSx4W1MrK109aD4+NSYyNTUseFtTKytdPWg8PDMmMjU1O2NvbnN0IEM9bmV3IEFycmF5KDgwKTtmb3IoUz0wO1M8ODA7UysrKUNbU109bmV3IGMoMCwwKTtsZXQgTz1uZXcgYygwLDApLEY9bmV3IGMoMCwwKSxJPW5ldyBjKDAsMCksVD1uZXcgYygwLDApLE09bmV3IGMoMCwwKSxFPW5ldyBjKDAsMCksUD1uZXcgYygwLDApLFI9bmV3IGMoMCwwKTtjb25zdCBOPW5ldyBjKDAsMCksRD1uZXcgYygwLDApLEI9bmV3IGMoMCwwKSxMPW5ldyBjKDAsMCk7bGV0IF8sajtmb3IoUz0wO1M8djspe2ZvcihBPTA7QTwxNjsrK0EpQ1tBXS5oaWdoPXhbU108PDI0fHhbUysxXTw8MTZ8eFtTKzJdPDw4fHhbUyszXSxDW0FdLmxvdz14W1MrNF08PDI0fHhbUys1XTw8MTZ8eFtTKzZdPDw4fHhbUys3XSxTKz04O2ZvcihBPTE2O0E8ODA7KytBKV89Q1tBXSxpKF8sQ1tBLTJdLEwpLF8uYWRkKENbQS03XSksYShCLENbQS0xNV0sTCksXy5hZGQoQiksXy5hZGQoQ1tBLTE2XSk7Zm9yKE8uYXNzaWduKHUpLEYuYXNzaWduKGQpLEkuYXNzaWduKGYpLFQuYXNzaWduKGcpLE0uYXNzaWduKHApLEUuYXNzaWduKG0pLFAuYXNzaWduKGIpLFIuYXNzaWduKHkpLEE9MDtBPDgwOysrQSlOLmFzc2lnbihSKSxuKEIsTSxMKSxOLmFkZChCKSxlKEIsTSxFLFAsTCksTi5hZGQoQiksTi5hZGQoc1tBXSksTi5hZGQoQ1tBXSkscihELE8sTCksdChCLE8sRixJLEwpLEQuYWRkKEIpLF89UixSPVAsUD1FLEU9TSxULmFkZChOKSxNPVQsVD1JLEk9RixGPU8sXy5hc3NpZ24oTiksXy5hZGQoRCksTz1fO3UuYWRkKE8pLGQuYWRkKEYpLGYuYWRkKEkpLGcuYWRkKFQpLHAuYWRkKE0pLG0uYWRkKEUpLGIuYWRkKFApLHkuYWRkKFIpfXJldHVybiB3PyhqPW5ldyBVaW50OEFycmF5KDQ4KSx1LmNvcHlUbyhqLDApLGQuY29weVRvKGosOCksZi5jb3B5VG8oaiwxNiksZy5jb3B5VG8oaiwyNCkscC5jb3B5VG8oaiwzMiksbS5jb3B5VG8oaiw0MCkpOihqPW5ldyBVaW50OEFycmF5KDY0KSx1LmNvcHlUbyhqLDApLGQuY29weVRvKGosOCksZi5jb3B5VG8oaiwxNiksZy5jb3B5VG8oaiwyNCkscC5jb3B5VG8oaiwzMiksbS5jb3B5VG8oaiw0MCksYi5jb3B5VG8oaiw0OCkseS5jb3B5VG8oaiw1NikpLGp9fSgpO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBoKGUsdCxyLCEwKX10LmNhbGN1bGF0ZVNIQTUxMj1oO2NsYXNzIGR7ZGVjcnlwdEJsb2NrKGUpe3JldHVybiBlfWVuY3J5cHQoZSl7cmV0dXJuIGV9fWNsYXNzIGZ7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09ZiYmKDAsbi51bnJlYWNoYWJsZSkoIkNhbm5vdCBpbml0aWFsaXplIEFFU0Jhc2VDaXBoZXIuIiksdGhpcy5fcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pLHRoaXMuX2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSksdGhpcy5fbWl4PW5ldyBVaW50MzJBcnJheShbMCwyMzU0NzQxODcsNDcwOTQ4Mzc0LDMwMzc2NTI3Nyw5NDE4OTY3NDgsOTA4OTMzNDE1LDYwNzUzMDU1NCw3MDg3ODA4NDksMTg4Mzc5MzQ5NiwyMTE4MjE0OTk1LDE4MTc4NjY4MzAsMTY0OTYzOTIzNywxMjE1MDYxMTA4LDExODEwNDUxMTksMTQxNzU2MTY5OCwxNTE3NzY3NTI5LDM3Njc1ODY5OTIsNDAwMzA2MTE3OSw0MjM2NDI5OTkwLDQwNjkyNDY4OTMsMzYzNTczMzY2MCwzNjAyNzcwMzI3LDMyOTkyNzg0NzQsMzQwMDUyODc2OSwyNDMwMTIyMjE2LDI2NjQ1NDM3MTUsMjM2MjA5MDIzOCwyMTkzODYyNjQ1LDI4MzUxMjMzOTYsMjgwMTEwNzQwNywzMDM1NTM1MDU4LDMxMzU3NDA4ODksMzY3ODEyNDkyMywzNTc2ODcwNTEyLDMzNDEzOTQyODUsMzM3NDM2MTcwMiwzODEwNDk2MzQzLDM5Nzc2NzUzNTYsNDI3OTA4MDI1Nyw0MDQzNjEwMTg2LDI4NzY0OTQ2MjcsMjc3NjI5MjkwNCwzMDc2NjM5MDI5LDMxMTA2NTA5NDIsMjQ3MjAxMTUzNSwyNjQwMjQzMjA0LDI0MDM3Mjg2NjUsMjE2OTMwMzA1OCwxMDAxMDg5OTk1LDg5OTgzNTU4NCw2NjY0NjQ3MzMsNjk5NDMyMTUwLDU5NzI3ODQ3LDIyNjkwNjg2MCw1MzA0MDA3NTMsMjk0OTMwNjgyLDEyNzMxNjg3ODcsMTE3Mjk2NzA2NCwxNDc1NDE4NTAxLDE1MDk0MzA0MTQsMTk0MjQzNTc3NSwyMTEwNjY3NDQ0LDE4NzYyNDE4MzMsMTY0MTgxNjIyNiwyOTEwMjE5NzY2LDI3NDMwMzQxMDksMjk3NjE1MTUyMCwzMjExNjIzMTQ3LDI1MDUyMDIxMzgsMjYwNjQ1Mzk2OSwyMzAyNjkwMjUyLDIyNjk3Mjg0NTUsMzcxMTgyOTQyMiwzNTQzNTk5MjY5LDMyNDA4OTQzOTIsMzQ3NTMxMzMzMSwzODQzNjk5MDc0LDM5NDM5MDY0NDEsNDE3ODA2MjIyOCw0MTQ0MDQ3Nzc1LDEzMDY5NjczNjYsMTEzOTc4MTcwOSwxMzc0OTg4MTEyLDE2MTA0NTk3MzksMTk3NTY4MzQzNCwyMDc2OTM1MjY1LDE3NzUyNzY5MjQsMTc0MjMxNTEyNywxMDM0ODY3OTk4LDg2NjYzNzg0NSw1NjYwMjE4OTYsODAwNDQwODM1LDkyOTg3Njk4LDE5MzE5NTA2NSw0Mjk0NTYxNjQsMzk1NDQxNzExLDE5ODQ4MTI2ODUsMjAxNzc3ODU2NiwxNzg0NjYzMTk1LDE2ODM0MDcyNDgsMTMxNTU2MjE0NSwxMDgwMDk0NjM0LDEzODM4NTYzMTEsMTU1MTAzNzg4NCwxMDEwMzk4MjksMTM1MDUwMjA2LDQzNzc1NzEyMywzMzc1NTM4NjQsMTA0MjM4NTY1Nyw4MDc5NjI2MTAsNTczODA0NzgzLDc0MjAzOTAxMiwyNTMxMDY3NDUzLDI1NjQwMzMzMzQsMjMyODgyODk3MSwyMjI3NTczMDI0LDI5MzU1NjY4NjUsMjcwMDA5OTM1NCwzMDAxNzU1NjU1LDMxNjg5MzcyMjgsMzg2ODU1MjgwNSwzOTAyNTYzMTgyLDQyMDMxODExNzEsNDEwMjk3NzkxMiwzNzM2MTY0OTM3LDM1MDE3NDE4OTAsMzI2NTQ3ODc1MSwzNDMzNzEyOTgwLDExMDYwNDE1OTEsMTM0MDQ2MzEwMCwxNTc2OTc2NjA5LDE0MDg3NDkwMzQsMjA0MzIxMTQ4MywyMDA5MTk1NDcyLDE3MDg4NDgzMzMsMTgwOTA1NDE1MCw4MzI4NzcyMzEsMTA2ODM1MTM5Niw3NjY5NDU0NjUsNTk5NzYyMzU0LDE1OTQxNzk4NywxMjY0NTQ2NjQsMzYxOTI5ODc3LDQ2MzE4MDE5MCwyNzA5MjYwODcxLDI5NDM2ODIzODAsMzE3ODEwNjk2MSwzMDA5ODc5Mzg2LDI1NzI2OTcxOTUsMjUzODY4MTE4NCwyMjM2MjI4NzMzLDIzMzY0MzQ1NTAsMzUwOTg3MTEzNSwzNzQ1MzQ1MzAwLDM0NDE4NTAzNzcsMzI3NDY2NzI2NiwzOTEwMTYxOTcxLDM4NzcxOTg2NDgsNDExMDU2ODQ4NSw0MjExODE4Nzk4LDI1OTc4MDY0NzYsMjQ5NzYwNDc0MywyMjYxMDg5MTc4LDIyOTUxMDEwNzMsMjczMzg1NjE2MCwyOTAyMDg3ODUxLDMyMDI0MzcwNDYsMjk2ODAxMTQ1MywzOTM2MjkxMjg0LDM4MzUwMzY4OTUsNDEzNjQ0MDc3MCw0MTY5NDA4MjAxLDM1MzU0ODY0NTYsMzcwMjY2NTQ1OSwzNDY3MTkyMzAyLDMyMzE3MjIyMTMsMjA1MTUxODc4MCwxOTUxMzE3MDQ3LDE3MTY4OTA0MTAsMTc1MDkwMjMwNSwxMTEzODE4Mzg0LDEyODIwNTAwNzUsMTU4NDUwNDU4MiwxMzUwMDc4OTg5LDE2ODgxMDg1Miw2NzU1NjQ2MywzNzEwNDkzMzAsNDA0MDE2NzYxLDg0MTczOTU5MiwxMDA4OTE4NTk1LDc3NTU1MDgxNCw1NDAwODA3MjUsMzk2OTU2MjM2OSwzODAxMzMyMjM0LDQwMzU0ODkwNDcsNDI2OTkwNzk5NiwzNTY5MjU1MjEzLDM2Njk0NjI1NjYsMzM2Njc1NDYxOSwzMzMyNzQwMTQ0LDI2MzEwNjU0MzMsMjQ2Mzg3OTc2MiwyMTYwMTE3MDcxLDIzOTU1ODg2NzYsMjc2NzY0NTU1NywyODY4ODk3NDA2LDMxMDIwMTE3NDcsMzA2OTA0OTk2MCwyMDIwMDg0OTcsMzM3NzgzNjIsMjcwMDQwNDg3LDUwNDQ1OTQzNiw4NzU0NTEyOTMsOTc1NjU4NjQ2LDY3NTAzOTYyNyw2NDEwMjUxNTIsMjA4NDcwNDIzMywxOTE3NTE4NTYyLDE2MTU4NjEyNDcsMTg1MTMzMjg1MiwxMTQ3NTUwNjYxLDEyNDg4MDI1MTAsMTQ4NDAwNTg0MywxNDUxMDQ0MDU2LDkzMzMwMTM3MCw5NjczMTE3MjksNzMzMTU2OTcyLDYzMjk1MzcwMywyNjAzODg5NTAsMjU5NjU5MTcsMzI4NjcxODA4LDQ5NjkwNjA1OSwxMjA2NDc3ODU4LDEyMzk0NDM3NTMsMTU0MzIwODUwMCwxNDQxOTUyNTc1LDIxNDQxNjE4MDYsMTkwODY5NDI3NywxNjc1NTc3ODgwLDE4NDI3NTk0NDMsMzYxMDM2OTIyNiwzNjQ0Mzc5NTg1LDM0MDgxMTk1MTYsMzMwNzkxNjI0Nyw0MDExMTkwNTAyLDM3NzY3Njc0NjksNDA3NzM4NDQzMiw0MjQ1NjE4NjgzLDI4MDk3NzExNTQsMjg0MjczNzA0OSwzMTQ0Mzk2NDIwLDMwNDMxNDA0OTUsMjY3MzcwNTE1MCwyNDM4MjM3NjIxLDIyMDMwMzIyMzIsMjM3MDIxMzc5NV0pLHRoaXMuX21peENvbD1uZXcgVWludDhBcnJheSgyNTYpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl0aGlzLl9taXhDb2xbZV09ZTwxMjg/ZTw8MTplPDwxXjI3O3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KSx0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXsoMCxuLnVucmVhY2hhYmxlKSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgcixuLGE7Y29uc3QgaT1uZXcgVWludDhBcnJheSgxNik7aS5zZXQoZSk7Zm9yKGxldCBlPTAscj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrcilpW2VdXj10W3JdO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7cj1pWzEzXSxpWzEzXT1pWzldLGlbOV09aVs1XSxpWzVdPWlbMV0saVsxXT1yLHI9aVsxNF0sbj1pWzEwXSxpWzE0XT1pWzZdLGlbMTBdPWlbMl0saVs2XT1yLGlbMl09bixyPWlbMTVdLG49aVsxMV0sYT1pWzddLGlbMTVdPWlbM10saVsxMV09cixpWzddPW4saVszXT1hO2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09dGhpcy5faW52X3NbaVtlXV07Zm9yKGxldCByPTAsbj0xNiplO3I8MTY7KytyLCsrbilpW3JdXj10W25dO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbaVtlXV0sbj10aGlzLl9taXhbaVtlKzFdXSxhPXRoaXMuX21peFtpW2UrMl1dLHM9dGhpcy5fbWl4W2lbZSszXV07cj10Xm4+Pj44Xm48PDI0XmE+Pj4xNl5hPDwxNl5zPj4+MjReczw8OCxpW2VdPXI+Pj4yNCYyNTUsaVtlKzFdPXI+PjE2JjI1NSxpW2UrMl09cj4+OCYyNTUsaVtlKzNdPTI1NSZyfX1yPWlbMTNdLGlbMTNdPWlbOV0saVs5XT1pWzVdLGlbNV09aVsxXSxpWzFdPXIscj1pWzE0XSxuPWlbMTBdLGlbMTRdPWlbNl0saVsxMF09aVsyXSxpWzZdPXIsaVsyXT1uLHI9aVsxNV0sbj1pWzExXSxhPWlbN10saVsxNV09aVszXSxpWzExXT1yLGlbN109bixpWzNdPWE7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXT10aGlzLl9pbnZfc1tpW2VdXSxpW2VdXj10W2VdO3JldHVybiBpfV9lbmNyeXB0KGUsdCl7Y29uc3Qgcj10aGlzLl9zO2xldCBuLGEsaTtjb25zdCBzPW5ldyBVaW50OEFycmF5KDE2KTtzLnNldChlKTtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdXj10W2VdO2ZvcihsZXQgZT0xO2U8dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uO2UrKyl7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1yW3NbZV1dO2k9c1sxXSxzWzFdPXNbNV0sc1s1XT1zWzldLHNbOV09c1sxM10sc1sxM109aSxpPXNbMl0sYT1zWzZdLHNbMl09c1sxMF0sc1s2XT1zWzE0XSxzWzEwXT1pLHNbMTRdPWEsaT1zWzNdLGE9c1s3XSxuPXNbMTFdLHNbM109c1sxNV0sc1s3XT1pLHNbMTFdPWEsc1sxNV09bjtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9c1tlKzBdLHI9c1tlKzFdLGE9c1tlKzJdLGk9c1tlKzNdO249dF5yXmFeaSxzW2UrMF1ePW5edGhpcy5fbWl4Q29sW3Recl0sc1tlKzFdXj1uXnRoaXMuX21peENvbFtyXmFdLHNbZSsyXV49bl50aGlzLl9taXhDb2xbYV5pXSxzW2UrM11ePW5edGhpcy5fbWl4Q29sW2ledF19Zm9yKGxldCByPTAsbj0xNiplO3I8MTY7KytyLCsrbilzW3JdXj10W25dfWZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV09cltzW2VdXTtpPXNbMV0sc1sxXT1zWzVdLHNbNV09c1s5XSxzWzldPXNbMTNdLHNbMTNdPWksaT1zWzJdLGE9c1s2XSxzWzJdPXNbMTBdLHNbNl09c1sxNF0sc1sxMF09aSxzWzE0XT1hLGk9c1szXSxhPXNbN10sbj1zWzExXSxzWzNdPXNbMTVdLHNbN109aSxzWzExXT1hLHNbMTVdPW47Zm9yKGxldCBlPTAscj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrcilzW2VdXj10W3JdO3JldHVybiBzfV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbj10aGlzLmJ1ZmZlcixhPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3QgaT1bXTtsZXQgcz10aGlzLml2O2ZvcihsZXQgdD0wO3Q8cjsrK3Qpe2lmKG5bYV09ZVt0XSwrK2EsYTwxNiljb250aW51ZTtjb25zdCByPXRoaXMuX2RlY3J5cHQobix0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXNbZV07cz1uLGkucHVzaChyKSxuPW5ldyBVaW50OEFycmF5KDE2KSxhPTB9aWYodGhpcy5idWZmZXI9bix0aGlzLmJ1ZmZlckxlbmd0aD1hLHRoaXMuaXY9cywwPT09aS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KmkubGVuZ3RoO2lmKHQpe2NvbnN0IGU9aS5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgcj0xNSxuPTE2LXQ7cj49bjstLXIpaWYoZVtyXSE9PXQpe3Q9MDticmVha31vLT10LGlbaS5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBjPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxyPWkubGVuZ3RoO2U8cjsrK2UsdCs9MTYpYy5zZXQoaVtlXSx0KTtyZXR1cm4gY31kZWNyeXB0QmxvY2soZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtjb25zdCBuPWUubGVuZ3RoLGE9dGhpcy5idWZmZXI7bGV0IGk9dGhpcy5idWZmZXJQb3NpdGlvbjtpZihyKXRoaXMuaXY9cjtlbHNle2ZvcihsZXQgdD0wO2k8MTYmJnQ8bjsrK3QsKytpKWFbaV09ZVt0XTtpZihpPDE2KXJldHVybiB0aGlzLmJ1ZmZlckxlbmd0aD1pLG5ldyBVaW50OEFycmF5KDApO3RoaXMuaXY9YSxlPWUuc3ViYXJyYXkoMTYpfXJldHVybiB0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNiksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syLHRoaXMuZGVjcnlwdEJsb2NrKGUsdCl9ZW5jcnlwdChlLHQpe2NvbnN0IHI9ZS5sZW5ndGg7bGV0IG49dGhpcy5idWZmZXIsYT10aGlzLmJ1ZmZlclBvc2l0aW9uO2NvbnN0IGk9W107dHx8KHQ9bmV3IFVpbnQ4QXJyYXkoMTYpKTtmb3IobGV0IHM9MDtzPHI7KytzKXtpZihuW2FdPWVbc10sKythLGE8MTYpY29udGludWU7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXV49dFtlXTtjb25zdCByPXRoaXMuX2VuY3J5cHQobix0aGlzLl9rZXkpO3Q9cixpLnB1c2gociksbj1uZXcgVWludDhBcnJheSgxNiksYT0wfWlmKHRoaXMuYnVmZmVyPW4sdGhpcy5idWZmZXJMZW5ndGg9YSx0aGlzLml2PXQsMD09PWkubGVuZ3RoKXJldHVybiBuZXcgVWludDhBcnJheSgwKTtjb25zdCBzPTE2KmkubGVuZ3RoLG89bmV3IFVpbnQ4QXJyYXkocyk7Zm9yKGxldCBlPTAsdD0wLHI9aS5sZW5ndGg7ZTxyOysrZSx0Kz0xNilvLnNldChpW2VdLHQpO3JldHVybiBvfX1jbGFzcyBnIGV4dGVuZHMgZntjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMCx0aGlzLl9rZXlTaXplPTE2MCx0aGlzLl9yY29uPW5ldyBVaW50OEFycmF5KFsxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxXSksdGhpcy5fa2V5PXRoaXMuX2V4cGFuZEtleShlKX1fZXhwYW5kS2V5KGUpe2NvbnN0IHQ9dGhpcy5fcyxyPXRoaXMuX3Jjb24sbj1uZXcgVWludDhBcnJheSgxNzYpO24uc2V0KGUpO2ZvcihsZXQgZT0xNixhPTE7ZTwxNzY7KythKXtsZXQgaT1uW2UtM10scz1uW2UtMl0sbz1uW2UtMV0sYz1uW2UtNF07aT10W2ldLHM9dFtzXSxvPXRbb10sYz10W2NdLGlePXJbYV07Zm9yKGxldCB0PTA7dDw0OysrdCluW2VdPWlePW5bZS0xNl0sZSsrLG5bZV09c149bltlLTE2XSxlKyssbltlXT1vXj1uW2UtMTZdLGUrKyxuW2VdPWNePW5bZS0xNl0sZSsrfXJldHVybiBufX10LkFFUzEyOENpcGhlcj1nO2NsYXNzIHAgZXh0ZW5kcyBme2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0LHRoaXMuX2tleVNpemU9MjI0LHRoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3Mscj1uZXcgVWludDhBcnJheSgyNDApO3Iuc2V0KGUpO2xldCBuLGEsaSxzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7ZSUzMj09MTY/KG49dFtuXSxhPXRbYV0saT10W2ldLHM9dFtzXSk6ZSUzMj09MCYmKG49cltlLTNdLGE9cltlLTJdLGk9cltlLTFdLHM9cltlLTRdLG49dFtuXSxhPXRbYV0saT10W2ldLHM9dFtzXSxuXj1vLChvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSkpO2ZvcihsZXQgdD0wO3Q8NDsrK3QpcltlXT1uXj1yW2UtMzJdLGUrKyxyW2VdPWFePXJbZS0zMl0sZSsrLHJbZV09aV49cltlLTMyXSxlKysscltlXT1zXj1yW2UtMzJdLGUrK31yZXR1cm4gcn19dC5BRVMyNTZDaXBoZXI9cDtjbGFzcyBte2NoZWNrT3duZXJQYXNzd29yZChlLHQscixhKXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtpLnNldChlLDApLGkuc2V0KHQsZS5sZW5ndGgpLGkuc2V0KHIsZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9bChpLDAsaS5sZW5ndGgpO3JldHVybigwLG4uaXNBcnJheUVxdWFsKShzLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxyKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCksYS5zZXQodCxlLmxlbmd0aCk7Y29uc3QgaT1sKGEsMCxhLmxlbmd0aCk7cmV0dXJuKDAsbi5pc0FycmF5RXF1YWwpKGkscil9Z2V0T3duZXJLZXkoZSx0LHIsbil7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7YS5zZXQoZSwwKSxhLnNldCh0LGUubGVuZ3RoKSxhLnNldChyLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBpPWwoYSwwLGEubGVuZ3RoKTtyZXR1cm4gbmV3IHAoaSkuZGVjcnlwdEJsb2NrKG4sITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCksbi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgYT1sKG4sMCxuLmxlbmd0aCk7cmV0dXJuIG5ldyBwKGEpLmRlY3J5cHRCbG9jayhyLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fXQuUERGMTc9bTtjbGFzcyBie19oYXNoKGUsdCxyKXtsZXQgbj1sKHQsMCx0Lmxlbmd0aCkuc3ViYXJyYXkoMCwzMiksYT1bMF0saT0wO2Zvcig7aTw2NHx8YS5hdCgtMSk+aS0zMjspe2NvbnN0IHQ9ZS5sZW5ndGgrbi5sZW5ndGgrci5sZW5ndGgscz1uZXcgVWludDhBcnJheSh0KTtsZXQgbz0wO3Muc2V0KGUsbyksbys9ZS5sZW5ndGgscy5zZXQobixvKSxvKz1uLmxlbmd0aCxzLnNldChyLG8pO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoNjQqdCk7Zm9yKGxldCBlPTAscj0wO2U8NjQ7ZSsrLHIrPXQpYy5zZXQocyxyKTthPW5ldyBnKG4uc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoYyxuLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgZD1hLnNsaWNlKDAsMTYpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCklMzswPT09ZD9uPWwoYSwwLGEubGVuZ3RoKToxPT09ZD9uPXUoYSwwLGEubGVuZ3RoKToyPT09ZCYmKG49aChhLDAsYS5sZW5ndGgpKSxpKyt9cmV0dXJuIG4uc3ViYXJyYXkoMCwzMil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxyLGEpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2kuc2V0KGUsMCksaS5zZXQodCxlLmxlbmd0aCksaS5zZXQocixlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10aGlzLl9oYXNoKGUsaSxyKTtyZXR1cm4oMCxuLmlzQXJyYXlFcXVhbCkocyxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQscil7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApLGEuc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9dGhpcy5faGFzaChlLGEsW10pO3JldHVybigwLG4uaXNBcnJheUVxdWFsKShpLHIpfWdldE93bmVyS2V5KGUsdCxyLG4pe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO2Euc2V0KGUsMCksYS5zZXQodCxlLmxlbmd0aCksYS5zZXQocixlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3QgaT10aGlzLl9oYXNoKGUsYSxyKTtyZXR1cm4gbmV3IHAoaSkuZGVjcnlwdEJsb2NrKG4sITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX1nZXRVc2VyS2V5KGUsdCxyKXtjb25zdCBuPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO24uc2V0KGUsMCksbi5zZXQodCxlLmxlbmd0aCk7Y29uc3QgYT10aGlzLl9oYXNoKGUsbixbXSk7cmV0dXJuIG5ldyBwKGEpLmRlY3J5cHRCbG9jayhyLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fXQuUERGMjA9YjtjbGFzcyB5e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3Rvcj1lLHRoaXMuU3RyZWFtQ2lwaGVyQ29uc3RydWN0b3I9dH1jcmVhdGVTdHJlYW0oZSx0KXtjb25zdCByPW5ldyB0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yO3JldHVybiBuZXcgaS5EZWNyeXB0U3RyZWFtKGUsdCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5kZWNyeXB0QmxvY2soZSx0KX0pKX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7bGV0IHI9KDAsbi5zdHJpbmdUb0J5dGVzKShlKTtyZXR1cm4gcj10LmRlY3J5cHRCbG9jayhyLCEwKSwoMCxuLmJ5dGVzVG9TdHJpbmcpKHIpfWVuY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtpZih0IGluc3RhbmNlb2YgZil7Y29uc3Qgcj0xNi1lLmxlbmd0aCUxNjtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHIpLnJlcGVhdChyKTtjb25zdCBhPW5ldyBVaW50OEFycmF5KDE2KTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGNyeXB0byljcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGEpO2Vsc2UgZm9yKGxldCBlPTA7ZTwxNjtlKyspYVtlXT1NYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKTtsZXQgaT0oMCxuLnN0cmluZ1RvQnl0ZXMpKGUpO2k9dC5lbmNyeXB0KGksYSk7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNitpLmxlbmd0aCk7cmV0dXJuIHMuc2V0KGEpLHMuc2V0KGksMTYpLCgwLG4uYnl0ZXNUb1N0cmluZykocyl9bGV0IHI9KDAsbi5zdHJpbmdUb0J5dGVzKShlKTtyZXR1cm4gcj10LmVuY3J5cHQociksKDAsbi5ieXRlc1RvU3RyaW5nKShyKX19Y29uc3Qgdz1mdW5jdGlvbigpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzQwLDE5MSw3OCw5NCw3OCwxMTcsMTM4LDY1LDEwMCwwLDc4LDg2LDI1NSwyNTAsMSw4LDQ2LDQ2LDAsMTgyLDIwOCwxMDQsNjIsMTI4LDQ3LDEyLDE2OSwyNTQsMTAwLDgzLDEwNSwxMjJdKTtmdW5jdGlvbiB0KHQscixuLGEsaSxjLGwsaCl7Y29uc3QgdT00MCtuLmxlbmd0aCt0Lmxlbmd0aCxkPW5ldyBVaW50OEFycmF5KHUpO2xldCBmLGcscD0wO2lmKHIpZm9yKGc9TWF0aC5taW4oMzIsci5sZW5ndGgpO3A8ZzsrK3ApZFtwXT1yW3BdO2ZvcihmPTA7cDwzMjspZFtwKytdPWVbZisrXTtmb3IoZj0wLGc9bi5sZW5ndGg7ZjxnOysrZilkW3ArK109bltmXTtmb3IoZFtwKytdPTI1NSZpLGRbcCsrXT1pPj44JjI1NSxkW3ArK109aT4+MTYmMjU1LGRbcCsrXT1pPj4+MjQmMjU1LGY9MCxnPXQubGVuZ3RoO2Y8ZzsrK2YpZFtwKytdPXRbZl07Yz49NCYmIWgmJihkW3ArK109MjU1LGRbcCsrXT0yNTUsZFtwKytdPTI1NSxkW3ArK109MjU1KTtsZXQgbT1vKGQsMCxwKTtjb25zdCBiPWw+PjM7aWYoYz49Mylmb3IoZj0wO2Y8NTA7KytmKW09byhtLDAsYik7Y29uc3QgeT1tLnN1YmFycmF5KDAsYik7bGV0IHcsdjtpZihjPj0zKXtmb3IocD0wO3A8MzI7KytwKWRbcF09ZVtwXTtmb3IoZj0wLGc9dC5sZW5ndGg7ZjxnOysrZilkW3ArK109dFtmXTt3PW5ldyBzKHkpLHY9dy5lbmNyeXB0QmxvY2sobyhkLDAscCkpLGc9eS5sZW5ndGg7Y29uc3Qgcj1uZXcgVWludDhBcnJheShnKTtmb3IoZj0xO2Y8PTE5OysrZil7Zm9yKGxldCBlPTA7ZTxnOysrZSlyW2VdPXlbZV1eZjt3PW5ldyBzKHIpLHY9dy5lbmNyeXB0QmxvY2sodil9Zm9yKGY9MCxnPXYubGVuZ3RoO2Y8ZzsrK2YpaWYoYVtmXSE9PXZbZl0pcmV0dXJuIG51bGx9ZWxzZSBmb3Iodz1uZXcgcyh5KSx2PXcuZW5jcnlwdEJsb2NrKGUpLGY9MCxnPXYubGVuZ3RoO2Y8ZzsrK2YpaWYoYVtmXSE9PXZbZl0pcmV0dXJuIG51bGw7cmV0dXJuIHl9Y29uc3Qgcj1hLk5hbWUuZ2V0KCJJZGVudGl0eSIpO2Z1bmN0aW9uIGkoZSx0LHIpe2xldCBuPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107Y29uc3QgYT1uZXcgVWludDhBcnJheShyLmxlbmd0aCs5KSxpPXIubGVuZ3RoO2xldCBzO2ZvcihzPTA7czxpOysrcylhW3NdPXJbc107cmV0dXJuIGFbcysrXT0yNTUmZSxhW3MrK109ZT4+OCYyNTUsYVtzKytdPWU+PjE2JjI1NSxhW3MrK109MjU1JnQsYVtzKytdPXQ+PjgmMjU1LG4mJihhW3MrK109MTE1LGFbcysrXT02NSxhW3MrK109MTA4LGFbcysrXT04NCksbyhhLDAscykuc3ViYXJyYXkoMCxNYXRoLm1pbihyLmxlbmd0aCs1LDE2KSl9ZnVuY3Rpb24gYyhlLHQscixvLGMpe2lmKCEodCBpbnN0YW5jZW9mIGEuTmFtZSkpdGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3QgbD1lLmdldCh0Lm5hbWUpO2xldCBoO2lmKG51bGwhPWwmJihoPWwuZ2V0KCJDRk0iKSksIWh8fCJOb25lIj09PWgubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGR9O2lmKCJWMiI9PT1oLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzKGkocixvLGMsITEpKX07aWYoIkFFU1YyIj09PWgubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGcoaShyLG8sYywhMCkpfTtpZigiQUVTVjMiPT09aC5uYW1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcChjKX07dGhyb3cgbmV3IG4uRm9ybWF0RXJyb3IoIlVua25vd24gY3J5cHRvIG1ldGhvZCIpfXJldHVybiBjbGFzc3tjb25zdHJ1Y3RvcihpLGMsbCl7Y29uc3QgaD1pLmdldCgiRmlsdGVyIik7aWYoISgwLGEuaXNOYW1lKShoLCJTdGFuZGFyZCIpKXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWgubmFtZSx0aGlzLmRpY3Q9aTtjb25zdCB1PWkuZ2V0KCJWIik7aWYoIU51bWJlci5pc0ludGVnZXIodSl8fDEhPT11JiYyIT09dSYmNCE9PXUmJjUhPT11KXRocm93IG5ldyBuLkZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPXU7bGV0IGQ9aS5nZXQoIkxlbmd0aCIpO2lmKCFkKWlmKHU8PTMpZD00MDtlbHNle2NvbnN0IGU9aS5nZXQoIkNGIiksdD1pLmdldCgiU3RtRiIpO2lmKGUgaW5zdGFuY2VvZiBhLkRpY3QmJnQgaW5zdGFuY2VvZiBhLk5hbWUpe2Uuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO2NvbnN0IHI9ZS5nZXQodC5uYW1lKTtkPShudWxsPT1yP3ZvaWQgMDpyLmdldCgiTGVuZ3RoIikpfHwxMjgsZDw0MCYmKGQ8PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIoZCl8fGQ8NDB8fGQlOCE9MCl0aHJvdyBuZXcgbi5Gb3JtYXRFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoIik7Y29uc3QgZj0oMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJPIikpLGc9KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiVSIpKSxwPWYuc3ViYXJyYXkoMCwzMikseT1nLnN1YmFycmF5KDAsMzIpLHc9aS5nZXQoIlAiKSx2PWkuZ2V0KCJSIikseD0oND09PXV8fDU9PT11KSYmITEhPT1pLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9eDtjb25zdCBTPSgwLG4uc3RyaW5nVG9CeXRlcykoYyk7bGV0IEEsaztpZihsKXtpZig2PT09dil0cnl7bD0oMCxuLnV0ZjhTdHJpbmdUb1N0cmluZykobCl9Y2F0Y2goZSl7KDAsbi53YXJuKSgiQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeTogVW5hYmxlIHRvIGNvbnZlcnQgVVRGOCBlbmNvZGVkIHBhc3N3b3JkLiIpfUE9KDAsbi5zdHJpbmdUb0J5dGVzKShsKX1pZig1IT09dSlrPXQoUyxBLHAseSx3LHYsZCx4KTtlbHNle2NvbnN0IGU9Zi5zdWJhcnJheSgzMiw0MCksdD1mLnN1YmFycmF5KDQwLDQ4KSxyPWcuc3ViYXJyYXkoMCw0OCksYT1nLnN1YmFycmF5KDMyLDQwKSxzPWcuc3ViYXJyYXkoNDAsNDgpLG89KDAsbi5zdHJpbmdUb0J5dGVzKShpLmdldCgiT0UiKSksYz0oMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJVRSIpKTsoMCxuLnN0cmluZ1RvQnl0ZXMpKGkuZ2V0KCJQZXJtcyIpKSxrPWZ1bmN0aW9uKGUsdCxyLG4sYSxpLHMsbyxjLGwsaCx1KXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IGQ9Nj09PWU/bmV3IGI6bmV3IG07cmV0dXJuIGQuY2hlY2tVc2VyUGFzc3dvcmQodCxvLHMpP2QuZ2V0VXNlcktleSh0LGMsaCk6dC5sZW5ndGgmJmQuY2hlY2tPd25lclBhc3N3b3JkKHQsbixpLHIpP2QuZ2V0T3duZXJLZXkodCxhLGksbCk6bnVsbH0odixBLHAsZSx0LHIseSxhLHMsbyxjKX1pZighayYmIWwpdGhyb3cgbmV3IG4uUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixuLlBhc3N3b3JkUmVzcG9uc2VzLk5FRURfUEFTU1dPUkQpO2lmKCFrJiZsKXtjb25zdCByPWZ1bmN0aW9uKHQscixuLGEpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBjPTA7Y29uc3QgbD1NYXRoLm1pbigzMix0Lmxlbmd0aCk7Zm9yKDtjPGw7KytjKWlbY109dFtjXTtsZXQgaD0wO2Zvcig7YzwzMjspaVtjKytdPWVbaCsrXTtsZXQgdT1vKGksMCxjKTtjb25zdCBkPWE+PjM7aWYobj49Mylmb3IoaD0wO2g8NTA7KytoKXU9byh1LDAsdS5sZW5ndGgpO2xldCBmLGc7aWYobj49Myl7Zz1yO2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoZCk7Zm9yKGg9MTk7aD49MDtoLS0pe2ZvcihsZXQgdD0wO3Q8ZDsrK3QpZVt0XT11W3RdXmg7Zj1uZXcgcyhlKSxnPWYuZW5jcnlwdEJsb2NrKGcpfX1lbHNlIGY9bmV3IHModS5zdWJhcnJheSgwLGQpKSxnPWYuZW5jcnlwdEJsb2NrKHIpO3JldHVybiBnfShBLHAsdixkKTtrPXQoUyxyLHAseSx3LHYsZCx4KX1pZighayl0aHJvdyBuZXcgbi5QYXNzd29yZEV4Y2VwdGlvbigiSW5jb3JyZWN0IFBhc3N3b3JkIixuLlBhc3N3b3JkUmVzcG9uc2VzLklOQ09SUkVDVF9QQVNTV09SRCk7aWYodGhpcy5lbmNyeXB0aW9uS2V5PWssdT49NCl7Y29uc3QgZT1pLmdldCgiQ0YiKTtlIGluc3RhbmNlb2YgYS5EaWN0JiYoZS5zdXBwcmVzc0VuY3J5cHRpb249ITApLHRoaXMuY2Y9ZSx0aGlzLnN0bWY9aS5nZXQoIlN0bUYiKXx8cix0aGlzLnN0cmY9aS5nZXQoIlN0ckYiKXx8cix0aGlzLmVmZj1pLmdldCgiRUZGIil8fHRoaXMuc3RtZn19Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pcmV0dXJuIG5ldyB5KGModGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksYyh0aGlzLmNmLHRoaXMuc3RtZixlLHQsdGhpcy5lbmNyeXB0aW9uS2V5KSk7Y29uc3Qgcj1pKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpLG49ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHMocil9O3JldHVybiBuZXcgeShuLG4pfX19KCk7dC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5PXd9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5EZWNyeXB0U3RyZWFtPXZvaWQgMDt2YXIgbj1yKDE2OCk7Y2xhc3MgYSBleHRlbmRzIG4uRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxyKXtzdXBlcih0KSx0aGlzLnN0cj1lLHRoaXMuZGljdD1lLmRpY3QsdGhpcy5kZWNyeXB0PXIsdGhpcy5uZXh0Q2h1bms9bnVsbCx0aGlzLmluaXRpYWxpemVkPSExfXJlYWRCbG9jaygpe3ZhciBlO2xldCB0O2lmKHRoaXMuaW5pdGlhbGl6ZWQ/dD10aGlzLm5leHRDaHVuazoodD10aGlzLnN0ci5nZXRCeXRlcyg1MTIpLHRoaXMuaW5pdGlhbGl6ZWQ9ITApLCF0fHwwPT09dC5sZW5ndGgpcmV0dXJuIHZvaWQodGhpcy5lb2Y9ITApO3RoaXMubmV4dENodW5rPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7Y29uc3Qgcj0obnVsbD09PShlPXRoaXMubmV4dENodW5rKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5sZW5ndGgpPjA7dD0oMCx0aGlzLmRlY3J5cHQpKHQsIXIpO2NvbnN0IG49dGhpcy5idWZmZXJMZW5ndGgsYT1uK3QubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGEpLnNldCh0LG4pLHRoaXMuYnVmZmVyTGVuZ3RoPWF9fXQuRGVjcnlwdFN0cmVhbT1hfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ2F0YWxvZz12b2lkIDAscig4NCkscig5Mykscig5NCkscig5Nykscig5OSkscigxMDEpLHIoMTA1KSxyKDEwOCkscigxMTUpLHIoMTM5KSxyKDIpO3ZhciBuPXIoMTQ5KSxhPXIoMTQ0KSxpPXIoMTUwKSxzPXIoMjIxKSxvPXIoMTUxKSxjPXIoMjIyKSxsPXIoMTYyKSxoPXIoMjIzKSx1PXIoMjA5KSxkPXIoMjI0KSxmPXIoMjI1KTtmdW5jdGlvbiBnKGUpe3JldHVybiBlIGluc3RhbmNlb2YgaS5EaWN0JiYoZT1lLmdldCgiRCIpKSxBcnJheS5pc0FycmF5KGUpP2U6bnVsbH1jbGFzcyBwe2NvbnN0cnVjdG9yKGUsdCl7aWYodGhpcy5wZGZNYW5hZ2VyPWUsdGhpcy54cmVmPXQsdGhpcy5fY2F0RGljdD10LmdldENhdGFsb2dPYmooKSwhKHRoaXMuX2NhdERpY3QgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJDYXRhbG9nIG9iamVjdCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO3RoaXMudG9wbGV2ZWxQYWdlc0RpY3QsdGhpcy5fYWN0dWFsTnVtUGFnZXM9bnVsbCx0aGlzLmZvbnRDYWNoZT1uZXcgaS5SZWZTZXRDYWNoZSx0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcCx0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwLHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1uZXcgdS5HbG9iYWxJbWFnZUNhY2hlLHRoaXMucGFnZUtpZHNDb3VudENhY2hlPW5ldyBpLlJlZlNldENhY2hlLHRoaXMucGFnZUluZGV4Q2FjaGU9bmV3IGkuUmVmU2V0Q2FjaGUsdGhpcy5ub25CbGVuZE1vZGVzU2V0PW5ldyBpLlJlZlNldCx0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWdldCB2ZXJzaW9uKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVmVyc2lvbiIpO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpe2lmKG4uUERGX1ZFUlNJT05fUkVHRVhQLnRlc3QoZS5uYW1lKSlyZXR1cm4oMCxhLnNoYWRvdykodGhpcywidmVyc2lvbiIsZS5uYW1lKTsoMCxhLndhcm4pKCJJbnZhbGlkIFBERiBjYXRhbG9nIHZlcnNpb246ICIuY29uY2F0KGUubmFtZSkpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJ2ZXJzaW9uIixudWxsKX1nZXQgbGFuZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIkxhbmciKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywibGFuZyIsInN0cmluZyI9PXR5cGVvZiBlPygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm5lZWRzUmVuZGVyaW5nIiwiYm9vbGVhbiI9PXR5cGVvZiBlJiZlKX1nZXQgY29sbGVjdGlvbigpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy5fY2F0RGljdC5nZXQoIkNvbGxlY3Rpb24iKTt0IGluc3RhbmNlb2YgaS5EaWN0JiZ0LnNpemU+MCYmKGU9dCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLmluZm8pKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJjb2xsZWN0aW9uIixlKX1nZXQgYWNyb0Zvcm0oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJBY3JvRm9ybSIpO3QgaW5zdGFuY2VvZiBpLkRpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEuaW5mbykoIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImFjcm9Gb3JtIixlKX1nZXQgYWNyb0Zvcm1SZWYoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJBY3JvRm9ybSIpO3JldHVybigwLGEuc2hhZG93KSh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIGkuUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm1ldGFkYXRhIixudWxsKTtsZXQgdD1udWxsO3RyeXt2YXIgcjtjb25zdCBuPXRoaXMueHJlZi5mZXRjaChlLCEobnVsbCE9PShyPXRoaXMueHJlZi5lbmNyeXB0KSYmdm9pZCAwIT09ciYmci5lbmNyeXB0TWV0YWRhdGEpKTtpZihuIGluc3RhbmNlb2Ygby5CYXNlU3RyZWFtJiZuLmRpY3QgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9bi5kaWN0LmdldCgiVHlwZSIpLHI9bi5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCgwLGkuaXNOYW1lKShlLCJNZXRhZGF0YSIpJiYoMCxpLmlzTmFtZSkociwiWE1MIikpe2NvbnN0IGU9KDAsYS5zdHJpbmdUb1VURjhTdHJpbmcpKG4uZ2V0U3RyaW5nKCkpO2UmJih0PW5ldyBkLk1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEuaW5mbykoJ1NraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICInLmNvbmNhdChlLCciLicpKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywibWV0YWRhdGEiLHQpfWdldCBtYXJrSW5mbygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZE1hcmtJbmZvKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybiBudWxsO2NvbnN0IHQ9e01hcmtlZDohMSxVc2VyUHJvcGVydGllczohMSxTdXNwZWN0czohMX07Zm9yKGNvbnN0IHIgaW4gdCl7Y29uc3Qgbj1lLmdldChyKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYodFtyXT1uKX1yZXR1cm4gdH1nZXQgc3RydWN0VHJlZVJvb3QoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRTdHJ1Y3RUcmVlUm9vdCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBuLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS53YXJuKSgiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJTdHJ1Y3RUcmVlUm9vdCIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgZi5TdHJ1Y3RUcmVlUm9vdChlKTtyZXR1cm4gdC5pbml0KCksdH1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkuIik7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCJVbmFibGUgdG8gcmVhZCBkb2N1bWVudCBvdXRsaW5lLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfV9yZWFkRG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk91dGxpbmVzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtpZihlPWUuZ2V0UmF3KCJGaXJzdCIpLCEoZSBpbnN0YW5jZW9mIGkuUmVmKSlyZXR1cm4gbnVsbDtjb25zdCB0PXtpdGVtczpbXX0scj1be29iajplLHBhcmVudDp0fV0sbj1uZXcgaS5SZWZTZXQ7bi5wdXQoZSk7Y29uc3Qgcz10aGlzLnhyZWYsbz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7Zm9yKDtyLmxlbmd0aD4wOyl7Y29uc3QgdD1yLnNoaWZ0KCksYz1zLmZldGNoSWZSZWYodC5vYmopO2lmKG51bGw9PT1jKWNvbnRpbnVlO2lmKCFjLmhhcygiVGl0bGUiKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBvdXRsaW5lIGl0ZW0gZW5jb3VudGVyZWQuIik7Y29uc3QgaD17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtwLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmMscmVzdWx0T2JqOmgsZG9jQmFzZVVybDp0aGlzLnBkZk1hbmFnZXIuZG9jQmFzZVVybCxkb2NBdHRhY2htZW50czp0aGlzLmF0dGFjaG1lbnRzfSk7Y29uc3QgdT1jLmdldCgiVGl0bGUiKSxkPWMuZ2V0KCJGIil8fDAsZj1jLmdldEFycmF5KCJDIiksZz1jLmdldCgiQ291bnQiKTtsZXQgbT1vOyFBcnJheS5pc0FycmF5KGYpfHwzIT09Zi5sZW5ndGh8fDA9PT1mWzBdJiYwPT09ZlsxXSYmMD09PWZbMl18fChtPWwuQ29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoZiwwKSk7Y29uc3QgYj17YWN0aW9uOmguYWN0aW9uLGF0dGFjaG1lbnQ6aC5hdHRhY2htZW50LGRlc3Q6aC5kZXN0LHVybDpoLnVybCx1bnNhZmVVcmw6aC51bnNhZmVVcmwsbmV3V2luZG93OmgubmV3V2luZG93LHNldE9DR1N0YXRlOmguc2V0T0NHU3RhdGUsdGl0bGU6KDAsYS5zdHJpbmdUb1BERlN0cmluZykodSksY29sb3I6bSxjb3VudDpOdW1iZXIuaXNJbnRlZ2VyKGcpP2c6dm9pZCAwLGJvbGQ6ISEoMiZkKSxpdGFsaWM6ISEoMSZkKSxpdGVtczpbXX07dC5wYXJlbnQuaXRlbXMucHVzaChiKSxlPWMuZ2V0UmF3KCJGaXJzdCIpLGUgaW5zdGFuY2VvZiBpLlJlZiYmIW4uaGFzKGUpJiYoci5wdXNoKHtvYmo6ZSxwYXJlbnQ6Yn0pLG4ucHV0KGUpKSxlPWMuZ2V0UmF3KCJOZXh0IiksZSBpbnN0YW5jZW9mIGkuUmVmJiYhbi5oYXMoZSkmJihyLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pLG4ucHV0KGUpKX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEud2FybikoIlVuYWJsZSB0byByZWFkIHBlcm1pc3Npb25zLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJwZXJtaXNzaW9ucyIsZSl9X3JlYWRQZXJtaXNzaW9ucygpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCByPVtdO2Zvcihjb25zdCBlIGluIGEuUGVybWlzc2lvbkZsYWcpe2NvbnN0IG49YS5QZXJtaXNzaW9uRmxhZ1tlXTt0Jm4mJnIucHVzaChuKX1yZXR1cm4gcn1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgcj10LmdldCgiRCIpO2lmKCFyKXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IG49dC5nZXQoIk9DR3MiKTtpZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4oMCxhLnNoYWRvdykodGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBzPVtdLG89W107Zm9yKGNvbnN0IGUgb2Ygbil7aWYoIShlIGluc3RhbmNlb2YgaS5SZWYpKWNvbnRpbnVlO28ucHVzaChlKTtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO3MucHVzaCh7aWQ6ZS50b1N0cmluZygpLG5hbWU6InN0cmluZyI9PXR5cGVvZiB0LmdldCgiTmFtZSIpPygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJOYW1lIikpOm51bGwsaW50ZW50OiJzdHJpbmciPT10eXBlb2YgdC5nZXQoIkludGVudCIpPygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKHQuZ2V0KCJJbnRlbnQiKSk6bnVsbH0pfWU9dGhpcy5fcmVhZE9wdGlvbmFsQ29udGVudENvbmZpZyhyLG8pLGUuZ3JvdXBzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG4uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCJVbmFibGUgdG8gcmVhZCBvcHRpb25hbCBjb250ZW50IGNvbmZpZzogIi5jb25jYXQoZSkpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLGUpfV9yZWFkT3B0aW9uYWxDb250ZW50Q29uZmlnKGUsdCl7ZnVuY3Rpb24gcihlKXtjb25zdCByPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IG4gb2YgZSluIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMobikmJnIucHVzaChuLnRvU3RyaW5nKCkpO3JldHVybiByfWZ1bmN0aW9uIG4oZSl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluc3RhbmNlb2YgaS5SZWYmJnQuaW5jbHVkZXMoYSkpe2MucHV0KGEpLG4ucHVzaChhLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cyhhLHIpO2UmJm4ucHVzaChlKX1pZihyPjApcmV0dXJuIG47Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBvZiB0KWMuaGFzKGUpfHxhLnB1c2goZS50b1N0cmluZygpKTtyZXR1cm4gYS5sZW5ndGgmJm4ucHVzaCh7bmFtZTpudWxsLG9yZGVyOmF9KSxufWZ1bmN0aW9uIHMoZSx0KXtpZigrK3Q+bClyZXR1cm4oMCxhLndhcm4pKCJwYXJzZU5lc3RlZE9yZGVyIC0gcmVhY2hlZCBNQVhfTkVTVEVEX0xFVkVMUy4iKSxudWxsO2NvbnN0IHI9by5mZXRjaElmUmVmKGUpO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiBudWxsO2NvbnN0IGk9by5mZXRjaElmUmVmKHJbMF0pO2lmKCJzdHJpbmciIT10eXBlb2YgaSlyZXR1cm4gbnVsbDtjb25zdCBzPW4oci5zbGljZSgxKSx0KTtyZXR1cm4gcyYmcy5sZW5ndGg/e25hbWU6KDAsYS5zdHJpbmdUb1BERlN0cmluZykoaSksb3JkZXI6c306bnVsbH1jb25zdCBvPXRoaXMueHJlZixjPW5ldyBpLlJlZlNldCxsPTEwO3JldHVybntuYW1lOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIk5hbWUiKT8oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShlLmdldCgiTmFtZSIpKTpudWxsLGNyZWF0b3I6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiQ3JlYXRvciIpPygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGUuZ2V0KCJDcmVhdG9yIikpOm51bGwsYmFzZVN0YXRlOmUuZ2V0KCJCYXNlU3RhdGUiKWluc3RhbmNlb2YgaS5OYW1lP2UuZ2V0KCJCYXNlU3RhdGUiKS5uYW1lOm51bGwsb246cihlLmdldCgiT04iKSksb2ZmOnIoZS5nZXQoIk9GRiIpKSxvcmRlcjpuKGUuZ2V0KCJPcmRlciIpKSxncm91cHM6bnVsbH19c2V0QWN0dWFsTnVtUGFnZXMoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06bnVsbDt0aGlzLl9hY3R1YWxOdW1QYWdlcz1lfWdldCBoYXNBY3R1YWxOdW1QYWdlcygpe3JldHVybiBudWxsIT09dGhpcy5fYWN0dWFsTnVtUGFnZXN9Z2V0IF9wYWdlc0NvdW50KCl7Y29uc3QgZT10aGlzLnRvcGxldmVsUGFnZXNEaWN0LmdldCgiQ291bnQiKTtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpbiB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeSBpcyBub3QgYW4gaW50ZWdlci4iKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBzLk5hbWVUcmVlKWZvcihjb25zdFtyLG5db2YgZS5nZXRBbGwoKSl7Y29uc3QgZT1nKG4pO2UmJih0WygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKHIpXT1lKX1lbHNlIGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtjb25zdCBuPWcocik7biYmKHRbZV09bil9KSk7cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImRlc3RpbmF0aW9ucyIsdCl9Z2V0RGVzdGluYXRpb24oZSl7Y29uc3QgdD10aGlzLl9yZWFkRGVzdHMoKTtpZih0IGluc3RhbmNlb2Ygcy5OYW1lVHJlZSl7Y29uc3Qgcj1nKHQuZ2V0KGUpKTtpZihyKXJldHVybiByO2NvbnN0IG49dGhpcy5kZXN0aW5hdGlvbnNbZV07aWYobilyZXR1cm4oMCxhLndhcm4pKCdGb3VuZCAiJy5jb25jYXQoZSwnIiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLicpKSxufWVsc2UgaWYodCBpbnN0YW5jZW9mIGkuRGljdCl7Y29uc3Qgcj1nKHQuZ2V0KGUpKTtpZihyKXJldHVybiByfXJldHVybiBudWxsfV9yZWFkRGVzdHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO3JldHVybiBudWxsIT1lJiZlLmhhcygiRGVzdHMiKT9uZXcgcy5OYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygbi5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEud2FybikoIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJwYWdlTGFiZWxzIixlKX1fcmVhZFBhZ2VMYWJlbHMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJQYWdlTGFiZWxzIik7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IHI9bnVsbCxvPSIiO2NvbnN0IGM9bmV3IHMuTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IGw9IiIsaD0xO2ZvcihsZXQgZT0wLHM9dGhpcy5udW1QYWdlcztlPHM7ZSsrKXtjb25zdCBzPWMuZ2V0KGUpO2lmKHZvaWQgMCE9PXMpe2lmKCEocyBpbnN0YW5jZW9mIGkuRGljdCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKHMuaGFzKCJUeXBlIikmJiEoMCxpLmlzTmFtZSkocy5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihzLmhhcygiUyIpKXtjb25zdCBlPXMuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtyPWUubmFtZX1lbHNlIHI9bnVsbDtpZihzLmhhcygiUCIpKXtjb25zdCBlPXMuZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtvPSgwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGUpfWVsc2Ugbz0iIjtpZihzLmhhcygiU3QiKSl7Y29uc3QgZT1zLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIHN0YXJ0IGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2g9ZX1lbHNlIGg9MX1zd2l0Y2gocil7Y2FzZSJEIjpsPWg7YnJlYWs7Y2FzZSJSIjpjYXNlInIiOmw9KDAsbi50b1JvbWFuTnVtZXJhbHMpKGgsInIiPT09cik7YnJlYWs7Y2FzZSJBIjpjYXNlImEiOmNvbnN0IGU9MjYsdD0iYSI9PT1yPzk3OjY1LGk9aC0xO2w9U3RyaW5nLmZyb21DaGFyQ29kZSh0K2klZSkucmVwZWF0KE1hdGguZmxvb3IoaS9lKSsxKTticmVhaztkZWZhdWx0OmlmKHIpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoJ0ludmFsaWQgc3R5bGUgIicuY29uY2F0KHIsJyIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuJykpO2w9IiJ9dFtlXT1vK2wsaCsrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJVc2VOb25lIjpjYXNlIlVzZU91dGxpbmVzIjpjYXNlIlVzZVRodW1icyI6Y2FzZSJGdWxsU2NyZWVuIjpjYXNlIlVzZU9DIjpjYXNlIlVzZUF0dGFjaG1lbnRzIjp0PWUubmFtZX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4oMCxhLnNoYWRvdykodGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0IHIgb2YgZS5nZXRLZXlzKCkpe2NvbnN0IG49ZS5nZXQocik7bGV0IHM7c3dpdGNoKHIpe2Nhc2UiSGlkZVRvb2xiYXIiOmNhc2UiSGlkZU1lbnViYXIiOmNhc2UiSGlkZVdpbmRvd1VJIjpjYXNlIkZpdFdpbmRvdyI6Y2FzZSJDZW50ZXJXaW5kb3ciOmNhc2UiRGlzcGxheURvY1RpdGxlIjpjYXNlIlBpY2tUcmF5QnlQREZTaXplIjoiYm9vbGVhbiI9PXR5cGVvZiBuJiYocz1uKTticmVhaztjYXNlIk5vbkZ1bGxTY3JlZW5QYWdlTW9kZSI6aWYobiBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpzPW4ubmFtZTticmVhaztkZWZhdWx0OnM9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihuIGluc3RhbmNlb2YgaS5OYW1lKXN3aXRjaChuLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6cz1uLm5hbWU7YnJlYWs7ZGVmYXVsdDpzPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYobiBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIk1lZGlhQm94IjpjYXNlIkNyb3BCb3giOmNhc2UiQmxlZWRCb3giOmNhc2UiVHJpbUJveCI6Y2FzZSJBcnRCb3giOnM9bi5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQ3JvcEJveCJ9YnJlYWs7Y2FzZSJQcmludFNjYWxpbmciOmlmKG4gaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnM9bi5uYW1lO2JyZWFrO2RlZmF1bHQ6cz0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKG4gaW5zdGFuY2VvZiBpLk5hbWUpc3dpdGNoKG4ubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjpzPW4ubmFtZTticmVhaztkZWZhdWx0OnM9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOkFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoJTI9PTAmJm4uZXZlcnkoKChlLHQscik9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1yW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSkmJihzPW4pO2JyZWFrO2Nhc2UiTnVtQ29waWVzIjpOdW1iZXIuaXNJbnRlZ2VyKG4pJiZuPjAmJihzPW4pO2JyZWFrO2RlZmF1bHQ6KDAsYS53YXJuKSgiSWdub3Jpbmcgbm9uLXN0YW5kYXJkIGtleSBpbiBWaWV3ZXJQcmVmZXJlbmNlczogIi5jb25jYXQociwiLiIpKTtjb250aW51ZX12b2lkIDAhPT1zPyh0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKSx0W3JdPXMpOigwLGEud2FybikoJ0JhZCB2YWx1ZSwgZm9yIGtleSAiJy5jb25jYXQociwnIiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICcpLmNvbmNhdChuLCIuIikpfXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IHI9bmV3IGkuRGljdCh0aGlzLnhyZWYpO3Iuc2V0KCJBIixlKTtjb25zdCBuPXt1cmw6bnVsbCxkZXN0Om51bGwsYWN0aW9uOm51bGx9O3AucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6cixyZXN1bHRPYmo6bn0pLEFycmF5LmlzQXJyYXkobi5kZXN0KT90LmRlc3Q9bi5kZXN0Om4uYWN0aW9uJiYodC5hY3Rpb249bi5hY3Rpb24pfWVsc2UgQXJyYXkuaXNBcnJheShlKSYmKHQuZGVzdD1lKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywib3BlbkFjdGlvbiIsKDAsYS5vYmplY3RTaXplKSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJFbWJlZGRlZEZpbGVzIikpe2NvbnN0IHI9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLG5db2Ygci5nZXRBbGwoKSl7Y29uc3Qgcj1uZXcgaC5GaWxlU3BlYyhuLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSksdFsoMCxhLnN0cmluZ1RvUERGU3RyaW5nKShlKV09ci5zZXJpYWxpemFibGV9fXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJhdHRhY2htZW50cyIsdCl9Z2V0IHhmYUltYWdlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgaS5EaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IHI9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Usbl1vZiByLmdldEFsbCgpKXR8fCh0PW5ldyBpLkRpY3QodGhpcy54cmVmKSksdC5zZXQoKDAsYS5zdHJpbmdUb1BERlN0cmluZykoZSksbil9cmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsInhmYUltYWdlcyIsdCl9X2NvbGxlY3RKYXZhU2NyaXB0KCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIHIoZSxyKXtpZighKHIgaW5zdGFuY2VvZiBpLkRpY3QpKXJldHVybjtpZighKDAsaS5pc05hbWUpKHIuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSlyZXR1cm47bGV0IG49ci5nZXQoIkpTIik7aWYobiBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbSluPW4uZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIG4pcmV0dXJuO249KDAsYS5zdHJpbmdUb1BERlN0cmluZykobikucmVwbGFjZUFsbCgiXDAiLCIiKSwodHx8KHQ9bmV3IE1hcCkpLnNldChlLG4pfWlmKGUgaW5zdGFuY2VvZiBpLkRpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IHMuTmFtZVRyZWUoZS5nZXRSYXcoIkphdmFTY3JpcHQiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLG5db2YgdC5nZXRBbGwoKSlyKCgwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGUpLG4pfWNvbnN0IG49dGhpcy5fY2F0RGljdC5nZXQoIk9wZW5BY3Rpb24iKTtyZXR1cm4gbiYmcigiT3BlbkFjdGlvbiIsbiksdH1nZXQgamF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtyZXR1cm4oMCxhLnNoYWRvdykodGhpcywiamF2YVNjcmlwdCIsZT9bLi4uZS52YWx1ZXMoKV06bnVsbCl9Z2V0IGpzQWN0aW9ucygpe2NvbnN0IGU9dGhpcy5fY29sbGVjdEphdmFTY3JpcHQoKTtsZXQgdD0oMCxuLmNvbGxlY3RBY3Rpb25zKSh0aGlzLnhyZWYsdGhpcy5fY2F0RGljdCxhLkRvY3VtZW50QWN0aW9uRXZlbnRUeXBlKTtpZihlKXt0fHwodD1PYmplY3QuY3JlYXRlKG51bGwpKTtmb3IoY29uc3RbcixuXW9mIGUpciBpbiB0P3Rbcl0ucHVzaChuKTp0W3JdPVtuXX1yZXR1cm4oMCxhLnNoYWRvdykodGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCByPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgbiBvZiByKWlmKG4ubG9hZGVkTmFtZT09PWUpcmV0dXJuIHZvaWQgbi5mYWxsYmFjayh0KX1hc3luYyBjbGVhbnVwKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTsoMCxjLmNsZWFyR2xvYmFsQ2FjaGVzKSgpLHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKSx0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpLHRoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKSx0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtjb25zdCB0PWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3R7ZGljdDplfW9mIHQpZGVsZXRlIGUuY2FjaGVLZXk7dGhpcy5mb250Q2FjaGUuY2xlYXIoKSx0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuY2xlYXIoKSx0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5jbGVhcigpLHRoaXMuc3lzdGVtRm9udENhY2hlLmNsZWFyKCl9YXN5bmMgZ2V0UGFnZURpY3QoZSl7Y29uc3QgdD1bdGhpcy50b3BsZXZlbFBhZ2VzRGljdF0scj1uZXcgaS5SZWZTZXQsbj10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtuIGluc3RhbmNlb2YgaS5SZWYmJnIucHV0KG4pO2NvbnN0IHM9dGhpcy54cmVmLG89dGhpcy5wYWdlS2lkc0NvdW50Q2FjaGUsYz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7Zm9yKDt0Lmxlbmd0aDspe2NvbnN0IG49dC5wb3AoKTtpZihuIGluc3RhbmNlb2YgaS5SZWYpe2NvbnN0IGg9by5nZXQobik7aWYoaD49MCYmbCtoPD1lKXtsKz1oO2NvbnRpbnVlfWlmKHIuaGFzKG4pKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtyLnB1dChuKTtjb25zdCB1PWF3YWl0IHMuZmV0Y2hBc3luYyhuKTtpZih1IGluc3RhbmNlb2YgaS5EaWN0KXtsZXQgdD11LmdldFJhdygiVHlwZSIpO2lmKHQgaW5zdGFuY2VvZiBpLlJlZiYmKHQ9YXdhaXQgcy5mZXRjaEFzeW5jKHQpKSwoMCxpLmlzTmFtZSkodCwiUGFnZSIpfHwhdS5oYXMoIktpZHMiKSl7aWYoby5oYXMobil8fG8ucHV0KG4sMSksYy5oYXMobil8fGMucHV0KG4sbCksbD09PWUpcmV0dXJuW3Usbl07bCsrO2NvbnRpbnVlfX10LnB1c2godSk7Y29udGludWV9aWYoIShuIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmh9PW47bGV0IHU9bi5nZXRSYXcoIkNvdW50Iik7aWYodSBpbnN0YW5jZW9mIGkuUmVmJiYodT1hd2FpdCBzLmZldGNoQXN5bmModSkpLE51bWJlci5pc0ludGVnZXIodSkmJnU+PTAmJihoJiYhby5oYXMoaCkmJm8ucHV0KGgsdSksbCt1PD1lKSl7bCs9dTtjb250aW51ZX1sZXQgZD1uLmdldFJhdygiS2lkcyIpO2lmKGQgaW5zdGFuY2VvZiBpLlJlZiYmKGQ9YXdhaXQgcy5mZXRjaEFzeW5jKGQpKSwhQXJyYXkuaXNBcnJheShkKSl7bGV0IHQ9bi5nZXRSYXcoIlR5cGUiKTtpZih0IGluc3RhbmNlb2YgaS5SZWYmJih0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KSksKDAsaS5pc05hbWUpKHQsIlBhZ2UiKXx8IW4uaGFzKCJLaWRzIikpe2lmKGw9PT1lKXJldHVybltuLG51bGxdO2wrKztjb250aW51ZX10aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9ZC5sZW5ndGgtMTtlPj0wO2UtLSl0LnB1c2goZFtlXSl9dGhyb3cgbmV3IEVycm9yKCJQYWdlIGluZGV4ICIuY29uY2F0KGUsIiBub3QgZm91bmQuIikpfWFzeW5jIGdldEFsbFBhZ2VEaWN0cygpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLHI9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0scz1uZXcgaS5SZWZTZXQsbz10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTtvIGluc3RhbmNlb2YgaS5SZWYmJnMucHV0KG8pO2NvbnN0IGM9bmV3IE1hcCxsPXRoaXMueHJlZixoPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IHU9MDtmdW5jdGlvbiBkKGUsdCl7dCYmIWguaGFzKHQpJiZoLnB1dCh0LHUpLGMuc2V0KHUrKyxbZSx0XSl9ZnVuY3Rpb24gZihyKXtpZihyIGluc3RhbmNlb2Ygbi5YUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IHI7ZSYmdCYmMD09PXUmJigoMCxhLndhcm4pKCdnZXRBbGxQYWdlRGljdHMgLSBTa2lwcGluZyBpbnZhbGlkIGZpcnN0IHBhZ2U6ICInLmNvbmNhdChyLCciLicpKSxyPWkuRGljdC5lbXB0eSksYy5zZXQodSsrLFtyLG51bGxdKX1mb3IoO3IubGVuZ3RoPjA7KXtjb25zdCB0PXIuYXQoLTEpLHtjdXJyZW50Tm9kZTpuLHBvc0luS2lkczpvfT10O2xldCBjPW4uZ2V0UmF3KCJLaWRzIik7aWYoYyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtjPWF3YWl0IGwuZmV0Y2hBc3luYyhjKX1jYXRjaChlKXtmKGUpO2JyZWFrfWlmKCFBcnJheS5pc0FycmF5KGMpKXtmKG5ldyBhLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpKTticmVha31pZihvPj1jLmxlbmd0aCl7ci5wb3AoKTtjb250aW51ZX1jb25zdCBoPWNbb107bGV0IHU7aWYoaCBpbnN0YW5jZW9mIGkuUmVmKXtpZihzLmhhcyhoKSl7ZihuZXcgYS5Gb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfXMucHV0KGgpO3RyeXt1PWF3YWl0IGwuZmV0Y2hBc3luYyhoKX1jYXRjaChlKXtmKGUpO2JyZWFrfX1lbHNlIHU9aDtpZighKHUgaW5zdGFuY2VvZiBpLkRpY3QpKXtmKG5ldyBhLkZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBnPXUuZ2V0UmF3KCJUeXBlIik7aWYoZyBpbnN0YW5jZW9mIGkuUmVmKXRyeXtnPWF3YWl0IGwuZmV0Y2hBc3luYyhnKX1jYXRjaChlKXtmKGUpO2JyZWFrfSgwLGkuaXNOYW1lKShnLCJQYWdlIil8fCF1LmhhcygiS2lkcyIpP2QodSxoIGluc3RhbmNlb2YgaS5SZWY/aDpudWxsKTpyLnB1c2goe2N1cnJlbnROb2RlOnUscG9zSW5LaWRzOjB9KSx0LnBvc0luS2lkcysrfXJldHVybiBjfWdldFBhZ2VJbmRleChlKXtjb25zdCB0PXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtjb25zdCByPXRoaXMueHJlZjtsZXQgbj0wO2NvbnN0IHM9dD0+ZnVuY3Rpb24odCl7bGV0IG4scz0wO3JldHVybiByLmZldGNoQXN5bmModCkudGhlbigoZnVuY3Rpb24ocil7aWYoKDAsaS5pc1JlZnNFcXVhbCkodCxlKSYmISgwLGkuaXNEaWN0KShyLCJQYWdlIikmJiEociBpbnN0YW5jZW9mIGkuRGljdCYmIXIuaGFzKCJUeXBlIikmJnIuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIXIpcmV0dXJuIG51bGw7aWYoIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm4gbj1yLmdldFJhdygiUGFyZW50Iiksci5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiUGFyZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiBlLmdldEFzeW5jKCJLaWRzIil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgbz1bXTtsZXQgYz0hMTtmb3IoY29uc3QgbiBvZiBlKXtpZighKG4gaW5zdGFuY2VvZiBpLlJlZikpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKCgwLGkuaXNSZWZzRXF1YWwpKG4sdCkpe2M9ITA7YnJlYWt9by5wdXNoKHIuZmV0Y2hBc3luYyhuKS50aGVuKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBpLkRpY3QpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9zKz1lLmdldCgiQ291bnQiKTpzKyt9KSkpfWlmKCFjKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJLaWQgcmVmZXJlbmNlIG5vdCBmb3VuZCBpbiBwYXJlbnQncyBraWRzLiIpO3JldHVybiBQcm9taXNlLmFsbChvKS50aGVuKChmdW5jdGlvbigpe3JldHVybltzLG5dfSkpfSkpfSh0KS50aGVuKCh0PT57aWYoIXQpcmV0dXJuIHRoaXMucGFnZUluZGV4Q2FjaGUucHV0KGUsbiksbjtjb25zdFtyLGFdPXQ7cmV0dXJuIG4rPXIscyhhKX0pKTtyZXR1cm4gcyhlKX1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlVSSSIpO2lmKGUgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9KDAsYS5jcmVhdGVWYWxpZEFic29sdXRlVXJsKSh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuKDAsYS5zaGFkb3cpKHRoaXMsImJhc2VVcmwiLGUuaHJlZil9fXJldHVybigwLGEuc2hhZG93KSh0aGlzLCJiYXNlVXJsIixudWxsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeShlKXtjb25zdCB0PWUuZGVzdERpY3Q7aWYoISh0IGluc3RhbmNlb2YgaS5EaWN0KSlyZXR1cm4gdm9pZCgwLGEud2FybikoInBhcnNlRGVzdERpY3Rpb25hcnk6IGBkZXN0RGljdGAgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3Qgcj1lLnJlc3VsdE9iajtpZigib2JqZWN0IiE9dHlwZW9mIHIpcmV0dXJuIHZvaWQoMCxhLndhcm4pKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgcmVzdWx0T2JqYCBtdXN0IGJlIGFuIG9iamVjdC4iKTtjb25zdCBzPWUuZG9jQmFzZVVybHx8bnVsbCxjPWUuZG9jQXR0YWNobWVudHN8fG51bGw7bGV0IGwsaCx1PXQuZ2V0KCJBIik7aWYodSBpbnN0YW5jZW9mIGkuRGljdHx8KHQuaGFzKCJEZXN0Iik/dT10LmdldCgiRGVzdCIpOih1PXQuZ2V0KCJBQSIpLHUgaW5zdGFuY2VvZiBpLkRpY3QmJih1LmhhcygiRCIpP3U9dS5nZXQoIkQiKTp1LmhhcygiVSIpJiYodT11LmdldCgiVSIpKSkpKSx1IGluc3RhbmNlb2YgaS5EaWN0KXtjb25zdCBlPXUuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgaS5OYW1lKSlyZXR1cm4gdm9pZCgwLGEud2FybikoInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtjb25zdCB0PWUubmFtZTtzd2l0Y2godCl7Y2FzZSJSZXNldEZvcm0iOmNvbnN0IGU9dS5nZXQoIkZsYWdzIikscz0wPT0oMSYoIm51bWJlciI9PXR5cGVvZiBlP2U6MCkpLGQ9W10sZj1bXTtmb3IoY29uc3QgZSBvZiB1LmdldCgiRmllbGRzIil8fFtdKWUgaW5zdGFuY2VvZiBpLlJlZj9mLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmQucHVzaCgoMCxhLnN0cmluZ1RvUERGU3RyaW5nKShlKSk7ci5yZXNldEZvcm09e2ZpZWxkczpkLHJlZnM6ZixpbmNsdWRlOnN9O2JyZWFrO2Nhc2UiVVJJIjpsPXUuZ2V0KCJVUkkiKSxsIGluc3RhbmNlb2YgaS5OYW1lJiYobD0iLyIrbC5uYW1lKTticmVhaztjYXNlIkdvVG8iOmg9dS5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6Y29uc3QgZz11LmdldCgiRiIpO2cgaW5zdGFuY2VvZiBpLkRpY3Q/bD1nLmdldCgiRiIpfHxudWxsOiJzdHJpbmciPT10eXBlb2YgZyYmKGw9Zyk7bGV0IHA9dS5nZXQoIkQiKTtpZihwJiYocCBpbnN0YW5jZW9mIGkuTmFtZSYmKHA9cC5uYW1lKSwic3RyaW5nIj09dHlwZW9mIGwpKXtjb25zdCBlPWwuc3BsaXQoIiMiKVswXTsic3RyaW5nIj09dHlwZW9mIHA/bD1lKyIjIitwOkFycmF5LmlzQXJyYXkocCkmJihsPWUrIiMiK0pTT04uc3RyaW5naWZ5KHApKX1jb25zdCBtPXUuZ2V0KCJOZXdXaW5kb3ciKTsiYm9vbGVhbiI9PXR5cGVvZiBtJiYoci5uZXdXaW5kb3c9bSk7YnJlYWs7Y2FzZSJHb1RvRSI6Y29uc3QgYj11LmdldCgiVCIpO2xldCB5O2lmKGMmJmIgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IGU9Yi5nZXQoIlIiKSx0PWIuZ2V0KCJOIik7KDAsaS5pc05hbWUpKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoeT1jWygwLGEuc3RyaW5nVG9QREZTdHJpbmcpKHQpXSl9eT9yLmF0dGFjaG1lbnQ9eTooMCxhLndhcm4pKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCB3PXUuZ2V0KCJOIik7dyBpbnN0YW5jZW9mIGkuTmFtZSYmKHIuYWN0aW9uPXcubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3Qgdj11LmdldCgiU3RhdGUiKSx4PXUuZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkodil8fDA9PT12Lmxlbmd0aClicmVhaztjb25zdCBTPVtdO2Zvcihjb25zdCBlIG9mIHYpaWYoZSBpbnN0YW5jZW9mIGkuTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOlMucHVzaChlLm5hbWUpfWVsc2UgZSBpbnN0YW5jZW9mIGkuUmVmJiZTLnB1c2goZS50b1N0cmluZygpKTtpZihTLmxlbmd0aCE9PXYubGVuZ3RoKWJyZWFrO3Iuc2V0T0NHU3RhdGU9e3N0YXRlOlMscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiB4fHx4fTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IEE9dS5nZXQoIkpTIik7bGV0IGs7QSBpbnN0YW5jZW9mIG8uQmFzZVN0cmVhbT9rPUEuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiBBJiYoaz1BKTtjb25zdCBDPWsmJigwLG4ucmVjb3ZlckpzVVJMKSgoMCxhLnN0cmluZ1RvUERGU3RyaW5nKShrKSk7aWYoQyl7bD1DLnVybCxyLm5ld1dpbmRvdz1DLm5ld1dpbmRvdzticmVha31kZWZhdWx0OmlmKCJKYXZhU2NyaXB0Ij09PXR8fCJTdWJtaXRGb3JtIj09PXQpYnJlYWs7KDAsYS53YXJuKSgncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuc3VwcG9ydGVkIGFjdGlvbjogIicuY29uY2F0KHQsJyIuJykpfX1lbHNlIHQuaGFzKCJEZXN0IikmJihoPXQuZ2V0KCJEZXN0IikpO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7Y29uc3QgZT0oMCxhLmNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwpKGwscyx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO2UmJihyLnVybD1lLmhyZWYpLHIudW5zYWZlVXJsPWx9aCYmKGggaW5zdGFuY2VvZiBpLk5hbWUmJihoPWgubmFtZSksInN0cmluZyI9PXR5cGVvZiBoP3IuZGVzdD0oMCxhLnN0cmluZ1RvUERGU3RyaW5nKShoKTpBcnJheS5pc0FycmF5KGgpJiYoci5kZXN0PWgpKX19dC5DYXRhbG9nPXB9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5OdW1iZXJUcmVlPXQuTmFtZVRyZWU9dm9pZCAwLHIoMTM5KTt2YXIgbj1yKDE1MCksYT1yKDE0NCk7Y2xhc3MgaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5jb25zdHJ1Y3Rvcj09PWkmJigwLGEudW5yZWFjaGFibGUpKCJDYW5ub3QgaW5pdGlhbGl6ZSBOYW1lT3JOdW1iZXJUcmVlLiIpLHRoaXMucm9vdD1lLHRoaXMueHJlZj10LHRoaXMuX3R5cGU9cn1nZXRBbGwoKXtjb25zdCBlPW5ldyBNYXA7aWYoIXRoaXMucm9vdClyZXR1cm4gZTtjb25zdCB0PXRoaXMueHJlZixyPW5ldyBuLlJlZlNldDtyLnB1dCh0aGlzLnJvb3QpO2NvbnN0IGk9W3RoaXMucm9vdF07Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3Qgcz10LmZldGNoSWZSZWYoaS5zaGlmdCgpKTtpZighKHMgaW5zdGFuY2VvZiBuLkRpY3QpKWNvbnRpbnVlO2lmKHMuaGFzKCJLaWRzIikpe2NvbnN0IGU9cy5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZihyLmhhcyh0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcignRHVwbGljYXRlIGVudHJ5IGluICInLmNvbmNhdCh0aGlzLl90eXBlLCciIHRyZWUuJykpO2kucHVzaCh0KSxyLnB1dCh0KX1jb250aW51ZX1jb25zdCBvPXMuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCByPTAsbj1vLmxlbmd0aDtyPG47cis9MillLnNldCh0LmZldGNoSWZSZWYob1tyXSksdC5mZXRjaElmUmVmKG9bcisxXSkpfXJldHVybiBlfWdldChlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCByPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLG49MDtmb3IoO3IuaGFzKCJLaWRzIik7KXtpZigrK24+MTApcmV0dXJuKDAsYS53YXJuKSgnU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICInLmNvbmNhdCh0aGlzLl90eXBlLCciIHRyZWUuJykpLG51bGw7Y29uc3QgaT1yLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiBudWxsO2xldCBzPTAsbz1pLmxlbmd0aC0xO2Zvcig7czw9bzspe2NvbnN0IG49cytvPj4xLGE9dC5mZXRjaElmUmVmKGlbbl0pLGM9YS5nZXQoIkxpbWl0cyIpO2lmKGU8dC5mZXRjaElmUmVmKGNbMF0pKW89bi0xO2Vsc2V7aWYoIShlPnQuZmV0Y2hJZlJlZihjWzFdKSkpe3I9YTticmVha31zPW4rMX19aWYocz5vKXJldHVybiBudWxsfWNvbnN0IGk9ci5nZXQodGhpcy5fdHlwZSk7aWYoQXJyYXkuaXNBcnJheShpKSl7bGV0IHI9MCxuPWkubGVuZ3RoLTI7Zm9yKDtyPD1uOyl7Y29uc3QgYT1yK24+PjEscz1hKygxJmEpLG89dC5mZXRjaElmUmVmKGlbc10pO2lmKGU8byluPXMtMjtlbHNle2lmKCEoZT5vKSlyZXR1cm4gdC5mZXRjaElmUmVmKGlbcysxXSk7cj1zKzJ9fX1yZXR1cm4gbnVsbH19dC5OYW1lVHJlZT1jbGFzcyBleHRlbmRzIGl7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fSx0Lk51bWJlclRyZWU9Y2xhc3MgZXh0ZW5kcyBpe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOdW1zIil9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNsZWFyR2xvYmFsQ2FjaGVzPWZ1bmN0aW9uKCl7KDAsbi5jbGVhclByaW1pdGl2ZUNhY2hlcykoKSwoMCxhLmNsZWFyVW5pY29kZUNhY2hlcykoKX07dmFyIG49cigxNTApLGE9cigxOTApfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRmlsZVNwZWM9dm9pZCAwO3ZhciBuPXIoMTQ0KSxhPXIoMTUxKSxpPXIoMTUwKTtmdW5jdGlvbiBzKGUpe3JldHVybiBlLmhhcygiVUYiKT9lLmdldCgiVUYiKTplLmhhcygiRiIpP2UuZ2V0KCJGIik6ZS5oYXMoIlVuaXgiKT9lLmdldCgiVW5peCIpOmUuaGFzKCJNYWMiKT9lLmdldCgiTWFjIik6ZS5oYXMoIkRPUyIpP2UuZ2V0KCJET1MiKTpudWxsfXQuRmlsZVNwZWM9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXtlIGluc3RhbmNlb2YgaS5EaWN0JiYodGhpcy54cmVmPXQsdGhpcy5yb290PWUsZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKSx0aGlzLmRlc2NyaXB0aW9uPWUuaGFzKCJEZXNjIik/KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZS5nZXQoIkRlc2MiKSk6IiIsZS5oYXMoIlJGIikmJigwLG4ud2FybikoIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpLHRoaXMuY29udGVudEF2YWlsYWJsZT0hMCxlLmhhcygiRUYiKXx8KHRoaXMuY29udGVudEF2YWlsYWJsZT0hMSwoMCxuLndhcm4pKCJOb24tZW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpKSl9Z2V0IGZpbGVuYW1lKCl7aWYoIXRoaXMuX2ZpbGVuYW1lJiZ0aGlzLnJvb3Qpe2NvbnN0IGU9cyh0aGlzLnJvb3QpfHwidW5uYW1lZCI7dGhpcy5fZmlsZW5hbWU9KDAsbi5zdHJpbmdUb1BERlN0cmluZykoZSkucmVwbGFjZUFsbCgiXFxcXCIsIlxcIikucmVwbGFjZUFsbCgiXFwvIiwiLyIpLnJlcGxhY2VBbGwoIlxcIiwiLyIpfXJldHVybiB0aGlzLl9maWxlbmFtZX1nZXQgY29udGVudCgpe2lmKCF0aGlzLmNvbnRlbnRBdmFpbGFibGUpcmV0dXJuIG51bGw7IXRoaXMuY29udGVudFJlZiYmdGhpcy5yb290JiYodGhpcy5jb250ZW50UmVmPXModGhpcy5yb290LmdldCgiRUYiKSkpO2xldCBlPW51bGw7aWYodGhpcy5jb250ZW50UmVmKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKHRoaXMuY29udGVudFJlZik7dCBpbnN0YW5jZW9mIGEuQmFzZVN0cmVhbT9lPXQuZ2V0Qnl0ZXMoKTooMCxuLndhcm4pKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gcG9pbnRzIHRvIG5vbi1leGlzdGluZy9pbnZhbGlkIGNvbnRlbnQiKX1lbHNlKDAsbi53YXJuKSgiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSBjb250ZW50Iik7cmV0dXJuIGV9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntmaWxlbmFtZTp0aGlzLmZpbGVuYW1lLGNvbnRlbnQ6dGhpcy5jb250ZW50fX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTWV0YWRhdGFQYXJzZXI9dm9pZCAwLHIoMikscigxMzkpO3ZhciBuPXIoMjE3KTt0Lk1ldGFkYXRhUGFyc2VyPWNsYXNze2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IG4uU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXAsdGhpcy5fZGF0YT1lLHQmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj10LnJlcGxhY2VBbGwoL1xcKFswLTNdKShbMC03XSkoWzAtN10pL2csKGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCpyKzEqbil9KSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZywoZnVuY3Rpb24oZSx0KXtzd2l0Y2godCl7Y2FzZSJhbXAiOnJldHVybiImIjtjYXNlImFwb3MiOnJldHVybiInIjtjYXNlImd0IjpyZXR1cm4iPiI7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UicXVvdCI6cmV0dXJuJyInfXRocm93IG5ldyBFcnJvcigiX3JlcGFpcjogIi5jb25jYXQodCwiIGlzbid0IGRlZmluZWQuIikpfSkpLG49WyI+Il07Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqci5jaGFyQ29kZUF0KGUpK3IuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9uLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6bi5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIG4uam9pbigiIil9KSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcigoZT0+InJkZjpsaSI9PT1lLm5vZGVOYW1lKSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMscj10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsci5tYXAoKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSkpfV9wYXJzZShlKXtsZXQgdD1lLmRvY3VtZW50RWxlbWVudDtpZigicmRmOnJkZiIhPT10Lm5vZGVOYW1lKWZvcih0PXQuZmlyc3RDaGlsZDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmc7aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuU3RydWN0VHJlZVJvb3Q9dC5TdHJ1Y3RUcmVlUGFnZT12b2lkIDAscigxMzkpO3ZhciBuPXIoMTUwKSxhPXIoMTQ0KSxpPXIoMjIxKTtjb25zdCBzPSJQQUdFX0NPTlRFTlQiLG89IlNUUkVBTV9DT05URU5UIixjPSJPQkpFQ1QiLGw9IkVMRU1FTlQiO3QuU3RydWN0VHJlZVJvb3Q9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5kaWN0PWUsdGhpcy5yb2xlTWFwPW5ldyBNYXB9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2UgaW5zdGFuY2VvZiBuLkRpY3QmJmUuZm9yRWFjaCgoKGUsdCk9Pnt0IGluc3RhbmNlb2Ygbi5OYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX19O2NsYXNzIGh7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZSx0aGlzLmRpY3Q9dCx0aGlzLmtpZHM9W10sdGhpcy5wYXJzZUtpZHMoKX1nZXQgcm9sZSgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUyIpLHQ9ZSBpbnN0YW5jZW9mIG4uTmFtZT9lLm5hbWU6IiIse3Jvb3Q6cn09dGhpcy50cmVlO3JldHVybiByLnJvbGVNYXAuaGFzKHQpP3Iucm9sZU1hcC5nZXQodCk6dH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2Ygbi5SZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3Qgcj10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShyKSlmb3IoY29uc3QgdCBvZiByKXtjb25zdCByPXRoaXMucGFyc2VLaWQoZSx0KTtyJiZ0aGlzLmtpZHMucHVzaChyKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLHIpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgdSh7dHlwZTpzLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2xldCByPW51bGw7aWYodCBpbnN0YW5jZW9mIG4uUmVmP3I9dGhpcy5kaWN0LnhyZWYuZmV0Y2godCk6dCBpbnN0YW5jZW9mIG4uRGljdCYmKHI9dCksIXIpcmV0dXJuIG51bGw7Y29uc3QgYT1yLmdldFJhdygiUGciKTthIGluc3RhbmNlb2Ygbi5SZWYmJihlPWEudG9TdHJpbmcoKSk7Y29uc3QgaT1yLmdldCgiVHlwZSIpaW5zdGFuY2VvZiBuLk5hbWU/ci5nZXQoIlR5cGUiKS5uYW1lOm51bGw7cmV0dXJuIk1DUiI9PT1pP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgdSh7dHlwZTpvLHJlZk9iaklkOnIuZ2V0UmF3KCJTdG0iKWluc3RhbmNlb2Ygbi5SZWY/ci5nZXRSYXcoIlN0bSIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOnIuZ2V0KCJNQ0lEIil9KToiT0JKUiI9PT1pP3RoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgdSh7dHlwZTpjLHJlZk9iaklkOnIuZ2V0UmF3KCJPYmoiKWluc3RhbmNlb2Ygbi5SZWY/ci5nZXRSYXcoIk9iaiIpLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pOm5ldyB1KHt0eXBlOmwsZGljdDpyfSl9fWNsYXNzIHV7Y29uc3RydWN0b3IoZSl7bGV0e3R5cGU6dCxkaWN0OnI9bnVsbCxtY2lkOm49bnVsbCxwYWdlT2JqSWQ6YT1udWxsLHJlZk9iaklkOmk9bnVsbH09ZTt0aGlzLnR5cGU9dCx0aGlzLmRpY3Q9cix0aGlzLm1jaWQ9bix0aGlzLnBhZ2VPYmpJZD1hLHRoaXMucmVmT2JqSWQ9aSx0aGlzLnBhcmVudE5vZGU9bnVsbH19dC5TdHJ1Y3RUcmVlUGFnZT1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lLHRoaXMucm9vdERpY3Q9ZT9lLmRpY3Q6bnVsbCx0aGlzLnBhZ2VEaWN0PXQsdGhpcy5ub2Rlcz1bXX1wYXJzZSgpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCBlPXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm47Y29uc3Qgcj1uZXcgaS5OdW1iZXJUcmVlKGUsdGhpcy5yb290RGljdC54cmVmKS5nZXQodCk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuO2NvbnN0IGE9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiByKWUgaW5zdGFuY2VvZiBuLlJlZiYmdGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaChlKSxhKX1hZGROb2RlKGUsdCl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7aWYocj40MClyZXR1cm4oMCxhLndhcm4pKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpLG51bGw7aWYodC5oYXMoZSkpcmV0dXJuIHQuZ2V0KGUpO2NvbnN0IGk9bmV3IGgodGhpcyxlKTt0LnNldChlLGkpO2NvbnN0IHM9ZS5nZXQoIlAiKTtpZighc3x8KDAsbi5pc05hbWUpKHMuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290IikpcmV0dXJuIHRoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsaSl8fHQuZGVsZXRlKGUpLGk7Y29uc3Qgbz10aGlzLmFkZE5vZGUocyx0LHIrMSk7aWYoIW8pcmV0dXJuIGk7bGV0IGM9ITE7Zm9yKGNvbnN0IHQgb2Ygby5raWRzKXQudHlwZT09PWwmJnQuZGljdD09PWUmJih0LnBhcmVudE5vZGU9aSxjPSEwKTtyZXR1cm4gY3x8dC5kZWxldGUoZSksaX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCByPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIXIpcmV0dXJuITE7aWYociBpbnN0YW5jZW9mIG4uRGljdClyZXR1cm4gci5vYmpJZD09PWUub2JqSWQmJih0aGlzLm5vZGVzWzBdPXQsITApO2lmKCFBcnJheS5pc0FycmF5KHIpKXJldHVybiEwO2xldCBhPSExO2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXtjb25zdCBpPXJbbl07KG51bGw9PWk/dm9pZCAwOmkudG9TdHJpbmcoKSk9PT1lLm9iaklkJiYodGhpcy5ub2Rlc1tuXT10LGE9ITApfXJldHVybiBhfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBlKHQscil7bGV0IG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjA7aWYobj40MClyZXR1cm4gdm9pZCgwLGEud2FybikoIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7aS5yb2xlPXQucm9sZSxpLmNoaWxkcmVuPVtdLHIuY2hpbGRyZW4ucHVzaChpKTtjb25zdCBoPXQuZGljdC5nZXQoIkFsdCIpOyJzdHJpbmciPT10eXBlb2YgaCYmKGkuYWx0PSgwLGEuc3RyaW5nVG9QREZTdHJpbmcpKGgpKTtjb25zdCB1PXQuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIHUmJihpLmxhbmc9KDAsYS5zdHJpbmdUb1BERlN0cmluZykodSkpO2Zvcihjb25zdCByIG9mIHQua2lkcyl7Y29uc3QgdD1yLnR5cGU9PT1sP3IucGFyZW50Tm9kZTpudWxsO3Q/ZSh0LGksbisxKTpyLnR5cGU9PT1zfHxyLnR5cGU9PT1vP2kuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6InAiLmNvbmNhdChyLnBhZ2VPYmpJZCwiX21jIikuY29uY2F0KHIubWNpZCl9KTpyLnR5cGU9PT1jJiZpLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6ci5yZWZPYmpJZH0pfX1jb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7dC5jaGlsZHJlbj1bXSx0LnJvbGU9IlJvb3QiO2Zvcihjb25zdCByIG9mIHRoaXMubm9kZXMpciYmZShyLHQpO3JldHVybiB0fX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5PYmplY3RMb2FkZXI9dm9pZCAwLHIoMTM5KTt2YXIgbj1yKDE1MCksYT1yKDE1MSksaT1yKDE0OSkscz1yKDE0NCk7ZnVuY3Rpb24gbyhlLHQpe2lmKGUgaW5zdGFuY2VvZiBuLkRpY3QpZT1lLmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGEuQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjtmb3IoY29uc3QgaSBvZiBlKSgocj1pKWluc3RhbmNlb2Ygbi5SZWZ8fHIgaW5zdGFuY2VvZiBuLkRpY3R8fHIgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkocikpJiZ0LnB1c2goaSk7dmFyIHJ9dC5PYmplY3RMb2FkZXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LHIpe3RoaXMuZGljdD1lLHRoaXMua2V5cz10LHRoaXMueHJlZj1yLHRoaXMucmVmU2V0PW51bGx9YXN5bmMgbG9hZCgpe2lmKHRoaXMueHJlZi5zdHJlYW0uaXNEYXRhTG9hZGVkKXJldHVybjtjb25zdHtrZXlzOmUsZGljdDp0fT10aGlzO3RoaXMucmVmU2V0PW5ldyBuLlJlZlNldDtjb25zdCByPVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcobik7dm9pZCAwIT09ZSYmci5wdXNoKGUpfXJldHVybiB0aGlzLl93YWxrKHIpfWFzeW5jIF93YWxrKGUpe2NvbnN0IHQ9W10scj1bXTtmb3IoO2UubGVuZ3RoOyl7bGV0IGM9ZS5wb3AoKTtpZihjIGluc3RhbmNlb2Ygbi5SZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhjKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KGMpLGM9dGhpcy54cmVmLmZldGNoKGMpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIGkuTWlzc2luZ0RhdGFFeGNlcHRpb24pKXsoMCxzLndhcm4pKCdPYmplY3RMb2FkZXIuX3dhbGsgLSByZXF1ZXN0aW5nIGFsbCBkYXRhOiAiJy5jb25jYXQoZSwnIi4nKSksdGhpcy5yZWZTZXQ9bnVsbDtjb25zdHttYW5hZ2VyOnR9PXRoaXMueHJlZi5zdHJlYW07cmV0dXJuIHQucmVxdWVzdEFsbENodW5rcygpfXQucHVzaChjKSxyLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKGMgaW5zdGFuY2VvZiBhLkJhc2VTdHJlYW0pe2NvbnN0IGU9Yy5nZXRCYXNlU3RyZWFtcygpO2lmKGUpe2xldCBuPSExO2Zvcihjb25zdCB0IG9mIGUpdC5pc0RhdGFMb2FkZWR8fChuPSEwLHIucHVzaCh7YmVnaW46dC5zdGFydCxlbmQ6dC5lbmR9KSk7biYmdC5wdXNoKGMpfX1vKGMsZSl9aWYoci5sZW5ndGgpe2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0UmFuZ2VzKHIpO2Zvcihjb25zdCBlIG9mIHQpZSBpbnN0YW5jZW9mIG4uUmVmJiZ0aGlzLnJlZlNldC5yZW1vdmUoZSk7cmV0dXJuIHRoaXMuX3dhbGsodCl9dGhpcy5yZWZTZXQ9bnVsbH19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWEZBRmFjdG9yeT12b2lkIDAscigxMzkpO3ZhciBuPXIoMjI4KSxhPXIoMjI5KSxpPXIoMjQyKSxzPXIoMjM4KSxvPXIoMjM3KSxjPXIoMTQ0KSxsPXIoMjQzKSxoPXIoMjUzKTtjbGFzcyB1e2NvbnN0cnVjdG9yKGUpe3RyeXt0aGlzLnJvb3Q9KG5ldyBsLlhGQVBhcnNlcikucGFyc2UodS5fY3JlYXRlRG9jdW1lbnQoZSkpO2NvbnN0IHQ9bmV3IGEuQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpLHRoaXMuZGF0YUhhbmRsZXI9bmV3IGkuRGF0YUhhbmRsZXIodGhpcy5yb290LHQuZ2V0RGF0YSgpKSx0aGlzLmZvcm1bbi4kZ2xvYmFsRGF0YV0udGVtcGxhdGU9dGhpcy5mb3JtfWNhdGNoKGUpeygwLGMud2FybikoIlhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIGFuZCBiaW5kaW5nOiAiLmNvbmNhdChlKSl9fWlzVmFsaWQoKXtyZXR1cm4gdGhpcy5yb290JiZ0aGlzLmZvcm19X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bbi4kdG9QYWdlc10oKTtyZXR1cm4gbmV3IFByb21pc2UoKCh0LHIpPT57Y29uc3Qgbj0oKT0+e3RyeXtjb25zdCByPWUubmV4dCgpO3IuZG9uZT90KHIudmFsdWUpOnNldFRpbWVvdXQobiwwKX1jYXRjaChlKXtyKGUpfX07c2V0VGltZW91dChuLDApfSkpfWFzeW5jIF9jcmVhdGVQYWdlcygpe3RyeXt0aGlzLnBhZ2VzPWF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzSGVscGVyKCksdGhpcy5kaW1zPXRoaXMucGFnZXMuY2hpbGRyZW4ubWFwKChlPT57Y29uc3R7d2lkdGg6dCxoZWlnaHQ6cn09ZS5hdHRyaWJ1dGVzLnN0eWxlO3JldHVyblswLDAscGFyc2VJbnQodCkscGFyc2VJbnQocildfSkpfWNhdGNoKGUpeygwLGMud2FybikoIlhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICIuY29uY2F0KGUpKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3JldHVybiB0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpLHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVtuLiRnbG9iYWxEYXRhXS5pbWFnZXM9ZX1zZXRGb250cyhlKXt0aGlzLmZvcm1bbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcj1uZXcgcy5Gb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVtuLiRnbG9iYWxEYXRhXS51c2VkVHlwZWZhY2VzKWU9KDAsby5zdHJpcFF1b3RlcykoZSksdGhpcy5mb3JtW24uJGdsb2JhbERhdGFdLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpO3JldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtuLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmFkZChlLHQpfWFzeW5jIGdldFBhZ2VzKCl7dGhpcy5wYWdlc3x8YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXMoKTtjb25zdCBlPXRoaXMucGFnZXM7cmV0dXJuIHRoaXMucGFnZXM9bnVsbCxlfXNlcmlhbGl6ZURhdGEoZSl7cmV0dXJuIHRoaXMuZGF0YUhhbmRsZXIuc2VyaWFsaXplKGUpfXN0YXRpYyBfY3JlYXRlRG9jdW1lbnQoZSl7cmV0dXJuIGVbIi94ZHA6eGRwIl0/T2JqZWN0LnZhbHVlcyhlKS5qb2luKCIiKTplWyJ4ZHA6eGRwIl19c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBsLlhGQVBhcnNlcihoLlhodG1sTmFtZXNwYWNlLCEwKS5wYXJzZShlKTtpZighWyJib2R5IiwieGh0bWwiXS5pbmNsdWRlcyh0W24uJG5vZGVOYW1lXSkpe2NvbnN0IGU9aC5YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW24uJGFwcGVuZENoaWxkXSh0KSx0PWV9Y29uc3Qgcj10W24uJHRvSFRNTF0oKTtpZighci5zdWNjZXNzKXJldHVybiBudWxsO2NvbnN0e2h0bWw6YX09cix7YXR0cmlidXRlczppfT1hO3JldHVybiBpJiYoaS5jbGFzcyYmKGkuY2xhc3M9aS5jbGFzcy5maWx0ZXIoKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKSkpLGkuZGlyPSJhdXRvIikse2h0bWw6YSxzdHI6dFtuLiR0ZXh0XSgpfX1jYXRjaChlKXsoMCxjLndhcm4pKCJYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICIuY29uY2F0KGUpKX1yZXR1cm4gbnVsbH19dC5YRkFGYWN0b3J5PXV9LChlLHQpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuJHVpZD10LiR0b1N0eWxlPXQuJHRvU3RyaW5nPXQuJHRvUGFnZXM9dC4kdG9IVE1MPXQuJHRleHQ9dC4kdGFiSW5kZXg9dC4kc2V0VmFsdWU9dC4kc2V0U2V0QXR0cmlidXRlcz10LiRzZXRJZD10LiRzZWFyY2hOb2RlPXQuJHJvb3Q9dC4kcmVzb2x2ZVByb3RvdHlwZXM9dC4kcmVtb3ZlQ2hpbGQ9dC4kcHVzaFBhcmE9dC4kcHVzaEdseXBocz10LiRwb3BQYXJhPXQuJG9uVGV4dD10LiRvbkNoaWxkQ2hlY2s9dC4kb25DaGlsZD10LiRuc0F0dHJpYnV0ZXM9dC4kbm9kZU5hbWU9dC4kbmFtZXNwYWNlSWQ9dC4kbGFzdEF0dHJpYnV0ZT10LiRpc1VzYWJsZT10LiRpc1RyYW5zcGFyZW50PXQuJGlzVGhlcmVNb3JlV2lkdGg9dC4kaXNTcGxpdHRhYmxlPXQuJGlzTnNBZ25vc3RpYz10LiRpc0Rlc2NlbmRlbnQ9dC4kaXNEYXRhVmFsdWU9dC4kaXNDREFUQVhtbD10LiRpc0JpbmRhYmxlPXQuJGluc2VydEF0PXQuJGluZGV4T2Y9dC4kaWRzPXQuJGhhc1NldHRhYmxlVmFsdWU9dC4kZ2xvYmFsRGF0YT10LiRnZXRUZW1wbGF0ZVJvb3Q9dC4kZ2V0U3ViZm9ybVBhcmVudD10LiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdD10LiRnZXRQYXJlbnQ9dC4kZ2V0TmV4dFBhZ2U9dC4kZ2V0RXh0cmE9dC4kZ2V0RGF0YVZhbHVlPXQuJGdldENvbnRhaW5lZENoaWxkcmVuPXQuJGdldENoaWxkcmVuQnlOYW1lSXQ9dC4kZ2V0Q2hpbGRyZW5CeU5hbWU9dC4kZ2V0Q2hpbGRyZW5CeUNsYXNzPXQuJGdldENoaWxkcmVuPXQuJGdldEF2YWlsYWJsZVNwYWNlPXQuJGdldEF0dHJpYnV0ZXM9dC4kZ2V0QXR0cmlidXRlSXQ9dC4kZmx1c2hIVE1MPXQuJGZpbmFsaXplPXQuJGV4dHJhPXQuJGR1bXA9dC4kZGF0YT10LiRjb250ZW50PXQuJGNvbnN1bWVkPXQuJGNsb25lPXQuJGNsZWFudXA9dC4kY2xlYW5QYWdlPXQuJGNsZWFuPXQuJGNoaWxkcmVuVG9IVE1MPXQuJGFwcGVuZENoaWxkPXQuJGFkZEhUTUw9dC4kYWNjZXB0V2hpdGVzcGFjZT12b2lkIDA7Y29uc3Qgcj1TeW1ib2woKTt0LiRhY2NlcHRXaGl0ZXNwYWNlPXI7Y29uc3Qgbj1TeW1ib2woKTt0LiRhZGRIVE1MPW47Y29uc3QgYT1TeW1ib2woKTt0LiRhcHBlbmRDaGlsZD1hO2NvbnN0IGk9U3ltYm9sKCk7dC4kY2hpbGRyZW5Ub0hUTUw9aTtjb25zdCBzPVN5bWJvbCgpO3QuJGNsZWFuPXM7Y29uc3Qgbz1TeW1ib2woKTt0LiRjbGVhblBhZ2U9bztjb25zdCBjPVN5bWJvbCgpO3QuJGNsZWFudXA9Yztjb25zdCBsPVN5bWJvbCgpO3QuJGNsb25lPWw7Y29uc3QgaD1TeW1ib2woKTt0LiRjb25zdW1lZD1oO2NvbnN0IHU9U3ltYm9sKCJjb250ZW50Iik7dC4kY29udGVudD11O2NvbnN0IGQ9U3ltYm9sKCJkYXRhIik7dC4kZGF0YT1kO2NvbnN0IGY9U3ltYm9sKCk7dC4kZHVtcD1mO2NvbnN0IGc9U3ltYm9sKCJleHRyYSIpO3QuJGV4dHJhPWc7Y29uc3QgcD1TeW1ib2woKTt0LiRmaW5hbGl6ZT1wO2NvbnN0IG09U3ltYm9sKCk7dC4kZmx1c2hIVE1MPW07Y29uc3QgYj1TeW1ib2woKTt0LiRnZXRBdHRyaWJ1dGVJdD1iO2NvbnN0IHk9U3ltYm9sKCk7dC4kZ2V0QXR0cmlidXRlcz15O2NvbnN0IHc9U3ltYm9sKCk7dC4kZ2V0QXZhaWxhYmxlU3BhY2U9dztjb25zdCB2PVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlDbGFzcz12O2NvbnN0IHg9U3ltYm9sKCk7dC4kZ2V0Q2hpbGRyZW5CeU5hbWU9eDtjb25zdCBTPVN5bWJvbCgpO3QuJGdldENoaWxkcmVuQnlOYW1lSXQ9Uztjb25zdCBBPVN5bWJvbCgpO3QuJGdldERhdGFWYWx1ZT1BO2NvbnN0IGs9U3ltYm9sKCk7dC4kZ2V0RXh0cmE9aztjb25zdCBDPVN5bWJvbCgpO3QuJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0PUM7Y29uc3QgTz1TeW1ib2woKTt0LiRnZXRDaGlsZHJlbj1PO2NvbnN0IEY9U3ltYm9sKCk7dC4kZ2V0Q29udGFpbmVkQ2hpbGRyZW49Rjtjb25zdCBJPVN5bWJvbCgpO3QuJGdldE5leHRQYWdlPUk7Y29uc3QgVD1TeW1ib2woKTt0LiRnZXRTdWJmb3JtUGFyZW50PVQ7Y29uc3QgTT1TeW1ib2woKTt0LiRnZXRQYXJlbnQ9TTtjb25zdCBFPVN5bWJvbCgpO3QuJGdldFRlbXBsYXRlUm9vdD1FO2NvbnN0IFA9U3ltYm9sKCk7dC4kZ2xvYmFsRGF0YT1QO2NvbnN0IFI9U3ltYm9sKCk7dC4kaGFzU2V0dGFibGVWYWx1ZT1SO2NvbnN0IE49U3ltYm9sKCk7dC4kaWRzPU47Y29uc3QgRD1TeW1ib2woKTt0LiRpbmRleE9mPUQ7Y29uc3QgQj1TeW1ib2woKTt0LiRpbnNlcnRBdD1CO2NvbnN0IEw9U3ltYm9sKCk7dC4kaXNDREFUQVhtbD1MO2NvbnN0IF89U3ltYm9sKCk7dC4kaXNCaW5kYWJsZT1fO2NvbnN0IGo9U3ltYm9sKCk7dC4kaXNEYXRhVmFsdWU9ajtjb25zdCBVPVN5bWJvbCgpO3QuJGlzRGVzY2VuZGVudD1VO2NvbnN0ICQ9U3ltYm9sKCk7dC4kaXNOc0Fnbm9zdGljPSQ7Y29uc3QgWD1TeW1ib2woKTt0LiRpc1NwbGl0dGFibGU9WDtjb25zdCBIPVN5bWJvbCgpO3QuJGlzVGhlcmVNb3JlV2lkdGg9SDtjb25zdCBxPVN5bWJvbCgpO3QuJGlzVHJhbnNwYXJlbnQ9cTtjb25zdCB6PVN5bWJvbCgpO3QuJGlzVXNhYmxlPXo7Y29uc3QgRz1TeW1ib2woKTt0LiRsYXN0QXR0cmlidXRlPUc7Y29uc3QgVz1TeW1ib2woIm5hbWVzcGFjZUlkIik7dC4kbmFtZXNwYWNlSWQ9Vztjb25zdCBWPVN5bWJvbCgibm9kZU5hbWUiKTt0LiRub2RlTmFtZT1WO2NvbnN0IEs9U3ltYm9sKCk7dC4kbnNBdHRyaWJ1dGVzPUs7Y29uc3QgWT1TeW1ib2woKTt0LiRvbkNoaWxkPVk7Y29uc3QgSj1TeW1ib2woKTt0LiRvbkNoaWxkQ2hlY2s9Sjtjb25zdCBaPVN5bWJvbCgpO3QuJG9uVGV4dD1aO2NvbnN0IFE9U3ltYm9sKCk7dC4kcHVzaEdseXBocz1RO2NvbnN0IGVlPVN5bWJvbCgpO3QuJHBvcFBhcmE9ZWU7Y29uc3QgdGU9U3ltYm9sKCk7dC4kcHVzaFBhcmE9dGU7Y29uc3QgcmU9U3ltYm9sKCk7dC4kcmVtb3ZlQ2hpbGQ9cmU7Y29uc3QgbmU9U3ltYm9sKCJyb290Iik7dC4kcm9vdD1uZTtjb25zdCBhZT1TeW1ib2woKTt0LiRyZXNvbHZlUHJvdG90eXBlcz1hZTtjb25zdCBpZT1TeW1ib2woKTt0LiRzZWFyY2hOb2RlPWllO2NvbnN0IHNlPVN5bWJvbCgpO3QuJHNldElkPXNlO2NvbnN0IG9lPVN5bWJvbCgpO3QuJHNldFNldEF0dHJpYnV0ZXM9b2U7Y29uc3QgY2U9U3ltYm9sKCk7dC4kc2V0VmFsdWU9Y2U7Y29uc3QgbGU9U3ltYm9sKCk7dC4kdGFiSW5kZXg9bGU7Y29uc3QgaGU9U3ltYm9sKCk7dC4kdGV4dD1oZTtjb25zdCB1ZT1TeW1ib2woKTt0LiR0b1BhZ2VzPXVlO2NvbnN0IGRlPVN5bWJvbCgpO3QuJHRvSFRNTD1kZTtjb25zdCBmZT1TeW1ib2woKTt0LiR0b1N0cmluZz1mZTtjb25zdCBnZT1TeW1ib2woKTt0LiR0b1N0eWxlPWdlO2NvbnN0IHBlPVN5bWJvbCgidWlkIik7dC4kdWlkPXBlfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQmluZGVyPXZvaWQgMCxyKDEzOSk7dmFyIG49cigyMjgpLGE9cigyMzApLGk9cigyNDEpLHM9cigyNDApLG89cigyMzQpLGM9cigxNDQpO2NvbnN0IGw9by5OYW1lc3BhY2VJZHMuZGF0YXNldHMuaWQ7ZnVuY3Rpb24gaChlKXtjb25zdCB0PW5ldyBhLlRleHQoe30pO3JldHVybiB0W24uJGNvbnRlbnRdPWUsdH10LkJpbmRlcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXt2YXIgdDt0aGlzLnJvb3Q9ZSx0aGlzLmRhdGFzZXRzPWUuZGF0YXNldHMsdGhpcy5kYXRhPShudWxsPT09KHQ9ZS5kYXRhc2V0cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGF0YSl8fG5ldyBzLlhtbE9iamVjdChvLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZCwiZGF0YSIpLHRoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW24uJGdldENoaWxkcmVuXSgpLmxlbmd0aCx0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVtuLiRjbG9uZV0oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7cmV0dXJuIHRoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpLHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxyKXt2YXIgaTtpZihlW24uJGRhdGFdPXQsZVtuLiRoYXNTZXR0YWJsZVZhbHVlXSgpKWlmKHRbbi4kaXNEYXRhVmFsdWVdKCkpe2NvbnN0IHI9dFtuLiRnZXREYXRhVmFsdWVdKCk7ZVtuLiRzZXRWYWx1ZV0oaChyKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgYS5GaWVsZCYmIm11bHRpU2VsZWN0Ij09PShudWxsPT09KGk9ZS51aSl8fHZvaWQgMD09PWl8fG51bGw9PT0oaT1pLmNob2ljZUxpc3QpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLm9wZW4pKXtjb25zdCByPXRbbi4kZ2V0Q2hpbGRyZW5dKCkubWFwKChlPT5lW24uJGNvbnRlbnRdLnRyaW0oKSkpLmpvaW4oIlxuIik7ZVtuLiRzZXRWYWx1ZV0oaChyKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJigwLGMud2FybikoIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbbi4kaXNEYXRhVmFsdWVdKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6KDAsYy53YXJuKSgiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQscixhKXt2YXIgaTtpZighZSlyZXR1cm4gbnVsbDtsZXQgcyxjO2ZvcihsZXQgYT0wO2E8MzthKyspe2ZvcihzPXJbbi4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITEsITApO2M9cy5uZXh0KCkudmFsdWUsYzspaWYodD09PWNbbi4kaXNEYXRhVmFsdWVdKCkpcmV0dXJuIGM7aWYocltuLiRuYW1lc3BhY2VJZF09PT1vLk5hbWVzcGFjZUlkcy5kYXRhc2V0cy5pZCYmImRhdGEiPT09cltuLiRub2RlTmFtZV0pYnJlYWs7cj1yW24uJGdldFBhcmVudF0oKX1yZXR1cm4gYT8ocz10aGlzLmRhdGFbbi4kZ2V0UmVhbENoaWxkcmVuQnlOYW1lSXRdKGUsITAsITEpLGM9cy5uZXh0KCkudmFsdWUsY3x8KHM9dGhpcy5kYXRhW24uJGdldEF0dHJpYnV0ZUl0XShlLCEwKSxjPXMubmV4dCgpLnZhbHVlLG51bGwhPT0oaT1jKSYmdm9pZCAwIT09aSYmaVtuLiRpc0RhdGFWYWx1ZV0oKT9jOm51bGwpKTpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoZS5oYXNPd25Qcm9wZXJ0eSgic2V0UHJvcGVydHkiKSlmb3IoY29uc3R7cmVmOnIsdGFyZ2V0Om8sY29ubmVjdGlvbjpsfW9mIGUuc2V0UHJvcGVydHkuY2hpbGRyZW4pe2lmKGwpY29udGludWU7aWYoIXIpY29udGludWU7Y29uc3QgaD0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LHIsITEsITEpO2lmKCFoKXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogIi5jb25jYXQociwiLiIpKTtjb250aW51ZX1jb25zdFt1XT1oO2lmKCF1W24uJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhKSl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IGQ9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsZSxvLCExLCExKTtpZighZCl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICIuY29uY2F0KG8sIi4iKSk7Y29udGludWV9Y29uc3RbZl09ZDtpZighZltuLiRpc0Rlc2NlbmRlbnRdKGUpKXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGc9ZltuLiRnZXRQYXJlbnRdKCk7aWYoZiBpbnN0YW5jZW9mIGEuU2V0UHJvcGVydHl8fGcgaW5zdGFuY2VvZiBhLlNldFByb3BlcnR5KXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGYgaW5zdGFuY2VvZiBhLkJpbmRJdGVtc3x8ZyBpbnN0YW5jZW9mIGEuQmluZEl0ZW1zKXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBwPXVbbi4kdGV4dF0oKSxtPWZbbi4kbm9kZU5hbWVdO2lmKGYgaW5zdGFuY2VvZiBzLlhGQUF0dHJpYnV0ZSl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2VbbV09cDtjb25zdCB0PVJlZmxlY3QuY29uc3RydWN0KE9iamVjdC5nZXRQcm90b3R5cGVPZihnKS5jb25zdHJ1Y3RvcixbZV0pO2dbbV09dFttXX1lbHNlIGYuaGFzT3duUHJvcGVydHkobi4kY29udGVudCk/KGZbbi4kZGF0YV09dSxmW24uJGNvbnRlbnRdPXAsZltuLiRmaW5hbGl6ZV0oKSk6KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIWUuaGFzT3duUHJvcGVydHkoIml0ZW1zIil8fCFlLmhhc093blByb3BlcnR5KCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbbi4kcmVtb3ZlQ2hpbGRdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCByPW5ldyBhLkl0ZW1zKHt9KSxzPW5ldyBhLkl0ZW1zKHt9KTtlW24uJGFwcGVuZENoaWxkXShyKSxlLml0ZW1zLnB1c2gociksZVtuLiRhcHBlbmRDaGlsZF0ocyksZS5pdGVtcy5wdXNoKHMpO2Zvcihjb25zdHtyZWY6YSxsYWJlbFJlZjpvLHZhbHVlUmVmOmwsY29ubmVjdGlvbjp1fW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZih1KWNvbnRpbnVlO2lmKCFhKWNvbnRpbnVlO2NvbnN0IGU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxhLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W24uJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLGMud2FybikoIlhGQSAtIEludmFsaWQgcmVmICgiLmNvbmNhdChhLCIpOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIikpO2NvbnRpbnVlfWNvbnN0IGU9KDAsaS5zZWFyY2hOb2RlKSh0aGlzLnJvb3QsdCxvLCEwLCExKTtpZighZSl7KDAsYy53YXJuKSgiWEZBIC0gSW52YWxpZCBsYWJlbDogIi5jb25jYXQobywiLiIpKTtjb250aW51ZX1jb25zdFt1XT1lO2lmKCF1W24uJGlzRGVzY2VuZGVudF0odGhpcy5kYXRhc2V0cykpeygwLGMud2FybikoIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBkPSgwLGkuc2VhcmNoTm9kZSkodGhpcy5yb290LHQsbCwhMCwhMSk7aWYoIWQpeygwLGMud2FybikoIlhGQSAtIEludmFsaWQgdmFsdWU6ICIuY29uY2F0KGwsIi4iKSk7Y29udGludWV9Y29uc3RbZl09ZDtpZighZltuLiRpc0Rlc2NlbmRlbnRdKHRoaXMuZGF0YXNldHMpKXsoMCxjLndhcm4pKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgZz1oKHVbbi4kdGV4dF0oKSkscD1oKGZbbi4kdGV4dF0oKSk7cltuLiRhcHBlbmRDaGlsZF0oZyksci50ZXh0LnB1c2goZyksc1tuLiRhcHBlbmRDaGlsZF0ocCkscy50ZXh0LnB1c2gocCl9ZWxzZSgwLGMud2FybikoIlhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAiLmNvbmNhdChhLCIuIikpfX1fYmluZE9jY3VycmVuY2VzKGUsdCxyKXtsZXQgYTtpZih0Lmxlbmd0aD4xJiYoYT1lW24uJGNsb25lXSgpLGFbbi4kcmVtb3ZlQ2hpbGRdKGEub2NjdXIpLGEub2NjdXI9bnVsbCksdGhpcy5fYmluZFZhbHVlKGUsdFswXSxyKSx0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSksdGhpcy5fYmluZEl0ZW1zKGUsdFswXSksMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbbi4kZ2V0UGFyZW50XSgpLHM9ZVtuLiRub2RlTmFtZV0sbz1pW24uJGluZGV4T2ZdKGUpO2ZvcihsZXQgZT0xLGM9dC5sZW5ndGg7ZTxjO2UrKyl7Y29uc3QgYz10W2VdLGw9YVtuLiRjbG9uZV0oKTtpW3NdLnB1c2gobCksaVtuLiRpbnNlcnRBdF0obytlLGwpLHRoaXMuX2JpbmRWYWx1ZShsLGMsciksdGhpcy5fc2V0UHJvcGVydGllcyhsLGMpLHRoaXMuX2JpbmRJdGVtcyhsLGMpfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCByPWVbbi4kZ2V0UGFyZW50XSgpLGE9ZVtuLiRub2RlTmFtZV07aWYoIShyW2FdaW5zdGFuY2VvZiBzLlhGQU9iamVjdEFycmF5KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/clthXS5jaGlsZHJlbi5maWx0ZXIoKHQ9PnQubmFtZT09PWUubmFtZSkpLmxlbmd0aDpyW2FdLmNoaWxkcmVuLmxlbmd0aDtjb25zdCBvPXJbbi4kaW5kZXhPZl0oZSkrMSxjPXQuaW5pdGlhbC1pO2lmKGMpe2NvbnN0IHQ9ZVtuLiRjbG9uZV0oKTt0W24uJHJlbW92ZUNoaWxkXSh0Lm9jY3VyKSx0Lm9jY3VyPW51bGwsclthXS5wdXNoKHQpLHJbbi4kaW5zZXJ0QXRdKG8sdCk7Zm9yKGxldCBlPTE7ZTxjO2UrKyl7Y29uc3QgaT10W24uJGNsb25lXSgpO3JbYV0ucHVzaChpKSxyW24uJGluc2VydEF0XShvK2UsaSl9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjpyfT1lO2lmKCFyfHwhdClyZXR1cm5bMSwxXTtjb25zdCBuPS0xPT09ci5tYXg/MS8wOnIubWF4O3JldHVybltyLm1pbixuXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KSx0aGlzLl9iaW5kSXRlbXMoZSx0KSx0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IHI9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtuLiRnZXRDaGlsZHJlbl0oKSl7aWYoYVtuLiRkYXRhXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PWFbbi4kbm9kZU5hbWVdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PWEubWVyZ2VNb2RlO2NvbnN0IGU9dFtuLiRnZXRDaGlsZHJlbl0oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W24uJG5hbWVzcGFjZUlkXT09PWw/LTE6dFtuLiRuYW1lc3BhY2VJZF0scj1hW24uJGRhdGFdPW5ldyBzLlhtbE9iamVjdChlLGEubmFtZXx8InJvb3QiKTt0W24uJGFwcGVuZENoaWxkXShyKSx0aGlzLl9iaW5kRWxlbWVudChhLHIpfWNvbnRpbnVlfWlmKCFhW24uJGlzQmluZGFibGVdKCkpY29udGludWU7bGV0IGU9ITEsbz1udWxsLGg9bnVsbCx1PW51bGw7aWYoYS5iaW5kKXtzd2l0Y2goYS5iaW5kLm1hdGNoKXtjYXNlIm5vbmUiOnRoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZTtjYXNlImdsb2JhbCI6ZT0hMDticmVhaztjYXNlImRhdGFSZWYiOmlmKCFhLmJpbmQucmVmKXsoMCxjLndhcm4pKCJYRkEgLSByZWYgaXMgZW1wdHkgaW4gbm9kZSAiLmNvbmNhdChhW24uJG5vZGVOYW1lXSwiLiIpKSx0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9aD1hLmJpbmQucmVmfWEuYmluZC5waWN0dXJlJiYobz1hLmJpbmQucGljdHVyZVtuLiRjb250ZW50XSl9Y29uc3RbZCxmXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYoaCl7aWYodT0oMCxpLnNlYXJjaE5vZGUpKHRoaXMucm9vdCx0LGgsITAsITEpLG51bGw9PT11KXtpZih1PSgwLGkuY3JlYXRlRGF0YU5vZGUpKHRoaXMuZGF0YSx0LGgpLCF1KWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKHVbbi4kY29uc3VtZWRdPSEwKSx0aGlzLl9zZXRBbmRCaW5kKGEsdSk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYodT11LmZpbHRlcigoZT0+IWVbbi4kY29uc3VtZWRdKSkpLHUubGVuZ3RoPmY/dT11LnNsaWNlKDAsZik6MD09PXUubGVuZ3RoJiYodT1udWxsKSx1JiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJnUuZm9yRWFjaCgoZT0+e2Vbbi4kY29uc3VtZWRdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3Qgcj1bXTtmb3IoO3IubGVuZ3RoPGY7KXtjb25zdCBpPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW24uJGhhc1NldHRhYmxlVmFsdWVdKCksdCxlKTtpZighaSlicmVhaztpW24uJGNvbnN1bWVkXT0hMCxyLnB1c2goaSl9dT1yLmxlbmd0aD4wP3I6bnVsbH1lbHNle2lmKHU9dFtuLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oYS5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlLCF1KXtpZigwPT09ZCl7ci5wdXNoKGEpO2NvbnRpbnVlfWNvbnN0IGU9dFtuLiRuYW1lc3BhY2VJZF09PT1sPy0xOnRbbi4kbmFtZXNwYWNlSWRdO3U9YVtuLiRkYXRhXT1uZXcgcy5YbWxPYmplY3QoZSxhLm5hbWUpLHRoaXMuZW1wdHlNZXJnZSYmKHVbbi4kY29uc3VtZWRdPSEwKSx0W24uJGFwcGVuZENoaWxkXSh1KSx0aGlzLl9zZXRBbmRCaW5kKGEsdSk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYodVtuLiRjb25zdW1lZF09ITApLHU9W3VdfX11P3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLHUsbyk6ZD4wP3RoaXMuX3NldEFuZEJpbmQoYSx0KTpyLnB1c2goYSl9ci5mb3JFYWNoKChlPT5lW24uJGdldFBhcmVudF0oKVtuLiRyZW1vdmVDaGlsZF0oZSkpKX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuVmFsdWU9dC5UZXh0PXQuVGVtcGxhdGVOYW1lc3BhY2U9dC5UZW1wbGF0ZT10LlNldFByb3BlcnR5PXQuSXRlbXM9dC5GaWVsZD10LkJpbmRJdGVtcz12b2lkIDAscigxMTYpLHIoMTI2KSxyKDEyOCkscigxMzEpLHIoMTMzKSxyKDEzNSkscigxMzcpLHIoMTM5KSxyKDIzMSkscigxNDUpLHIoMTQ3KSxyKDE0OCk7dmFyIG49cigyMjgpLGE9cigyMzQpLGk9cigyMzUpLHM9cigyMzYpLG89cigyNDApLGM9cigyMzcpLGw9cigxNDQpLGg9cigyMzgpLHU9cigxNDkpLGQ9cigyNDEpO2NvbnN0IGY9YS5OYW1lc3BhY2VJZHMudGVtcGxhdGUuaWQsZz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHA9L15IKFxkKykkLyxtPW5ldyBTZXQoWyJpbWFnZS9naWYiLCJpbWFnZS9qcGVnIiwiaW1hZ2UvanBnIiwiaW1hZ2UvcGpwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9hcG5nIiwiaW1hZ2UveC1wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LW1zLWJtcCIsImltYWdlL3RpZmYiLCJpbWFnZS90aWYiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSksYj1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24geShlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW24uJGdldEV4dHJhXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC5pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiB3KGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiB2KGUsdCl7aWYoIWUudmFsdWUpe2NvbnN0IHQ9bmV3IE50KHt9KTtlW24uJGFwcGVuZENoaWxkXSh0KSxlLnZhbHVlPXR9ZS52YWx1ZVtuLiRzZXRWYWx1ZV0odCl9ZnVuY3Rpb24qeChlKXtmb3IoY29uc3QgdCBvZiBlW24uJGdldENoaWxkcmVuXSgpKXQgaW5zdGFuY2VvZiB2dD95aWVsZCp0W24uJGdldENvbnRhaW5lZENoaWxkcmVuXSgpOnlpZWxkIHR9ZnVuY3Rpb24gUyhlKXt2YXIgdDtyZXR1cm4iZXJyb3IiPT09KG51bGw9PT0odD1lLnZhbGlkYXRlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5udWxsVGVzdCl9ZnVuY3Rpb24gQShlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpcmV0dXJuIHZvaWQoZVtuLiR0YWJJbmRleF09ZVtuLiRnZXRQYXJlbnRdKClbbi4kdGFiSW5kZXhdKTtpZihlW24uJHRhYkluZGV4XSlyZXR1cm47bGV0IHQ9bnVsbDtmb3IoY29uc3QgciBvZiBlLnRyYXZlcnNhbFtuLiRnZXRDaGlsZHJlbl0oKSlpZigibmV4dCI9PT1yLm9wZXJhdGlvbil7dD1yO2JyZWFrfWlmKCF0fHwhdC5yZWYpcmV0dXJuIHZvaWQoZVtuLiR0YWJJbmRleF09ZVtuLiRnZXRQYXJlbnRdKClbbi4kdGFiSW5kZXhdKTtjb25zdCByPWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpO2Vbbi4kdGFiSW5kZXhdPSsrcltuLiR0YWJJbmRleF07Y29uc3QgYT1yW24uJHNlYXJjaE5vZGVdKHQucmVmLGUpO2lmKCFhKXJldHVybjtlPWFbMF19fWZ1bmN0aW9uIGsoZSx0KXtjb25zdCByPWUuYXNzaXN0O2lmKHIpe2NvbnN0IGU9cltuLiR0b0hUTUxdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3QgYT1yLnJvbGUubWF0Y2gocCk7aWYoYSl7Y29uc3QgZT0iaGVhZGluZyIscj1hWzFdO3Qucm9sZT1lLHRbImFyaWEtbGV2ZWwiXT1yfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle3ZhciBhO2NvbnN0IHI9ZVtuLiRnZXRQYXJlbnRdKCk7InJvdyI9PT1yLmxheW91dCYmKHQucm9sZT0iVEgiPT09KG51bGw9PT0oYT1yLmFzc2lzdCl8fHZvaWQgMD09PWE/dm9pZCAwOmEucm9sZSk/ImNvbHVtbmhlYWRlciI6ImNlbGwiKX19ZnVuY3Rpb24gQyhlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW24uJGNvbnRlbnRdP3Quc3BlYWtbbi4kY29udGVudF06dC50b29sVGlwP3QudG9vbFRpcFtuLiRjb250ZW50XTpudWxsfWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gRihlKXtjb25zdCB0PWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpO251bGw9PT10W24uJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSYmKHRbbi4kZXh0cmFdLmZpcnN0VW5zcGxpdHRhYmxlPWUsdFtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwKX1mdW5jdGlvbiBJKGUpe2NvbnN0IHQ9ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKCk7dFtuLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9PT1lJiYodFtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSExKX1mdW5jdGlvbiBUKGUpe2lmKGVbbi4kZXh0cmFdKXJldHVybiExO2lmKGVbbi4kZXh0cmFdPU9iamVjdC5jcmVhdGUobnVsbCksImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IHI9bnVsbDtpZihlLnRhcmdldCl7aWYocj10W24uJHNlYXJjaE5vZGVdKGUudGFyZ2V0LGVbbi4kZ2V0UGFyZW50XSgpKSwhcilyZXR1cm4hMTtyPXJbMF19Y29uc3R7Y3VycmVudFBhZ2VBcmVhOmEsY3VycmVudENvbnRlbnRBcmVhOml9PXRbbi4kZXh0cmFdO2lmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpcmV0dXJuIHIgaW5zdGFuY2VvZiBRZXx8KHI9bnVsbCksZS5zdGFydE5ldz8oZVtuLiRleHRyYV0udGFyZ2V0PXJ8fGEsITApOiEoIXJ8fHI9PT1hfHwoZVtuLiRleHRyYV0udGFyZ2V0PXIsMCkpO3IgaW5zdGFuY2VvZiBlZXx8KHI9bnVsbCk7Y29uc3Qgcz1yJiZyW24uJGdldFBhcmVudF0oKTtsZXQgbyxjPXM7aWYoZS5zdGFydE5ldylpZihyKXtjb25zdCBlPXMuY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YoaSksbj1lLmluZGV4T2Yocik7LTEhPT10JiZ0PG4mJihjPW51bGwpLG89bi0xfWVsc2Ugbz1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSk7ZWxzZXtpZighcnx8cj09PWkpcmV0dXJuITE7bz1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YociktMSxjPXM9PT1hP251bGw6c31yZXR1cm4gZVtuLiRleHRyYV0udGFyZ2V0PWMsZVtuLiRleHRyYV0uaW5kZXg9bywhMH1mdW5jdGlvbiBNKGUsdCxyKXtjb25zdCBhPWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpLGk9YVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlLHM9dFtuLiRnZXRTdWJmb3JtUGFyZW50XTt0W24uJGdldFN1YmZvcm1QYXJlbnRdPSgpPT5lLGFbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT0hMDtjb25zdCBvPXRbbi4kdG9IVE1MXShyKTtlW24uJGFkZEhUTUxdKG8uaHRtbCxvLmJib3gpLGFbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1pLHRbbi4kZ2V0U3ViZm9ybVBhcmVudF09c31jbGFzcyBFIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYXBwZWFyYW5jZUZpbHRlciIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImFyYyIsITApLHRoaXMuY2lyY3VsYXI9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNpcmN1bGFyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy5oYW5kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5zdGFydEFuZ2xlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuc3RhcnRBbmdsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4hMH0pLHRoaXMuc3dlZXBBbmdsZT0oMCxjLmdldEZsb2F0KSh7ZGF0YTplLnN3ZWVwQW5nbGUsZGVmYXVsdFZhbHVlOjM2MCx2YWxpZGF0ZTplPT4hMH0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmVkZ2U9bnVsbCx0aGlzLmZpbGw9bnVsbH1bbi4kdG9IVE1MXSgpe3ZhciBlO2NvbnN0IHQ9dGhpcy5lZGdlfHxuZXcgdWUoe30pLHI9dFtuLiR0b1N0eWxlXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaTsidmlzaWJsZSI9PT0obnVsbD09PShlPXRoaXMuZmlsbCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJlc2VuY2UpP09iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbbi4kdG9TdHlsZV0oKSk6YS5maWxsPSJ0cmFuc3BhcmVudCIsYS5zdHJva2VXaWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykoInZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowKSxhLnN0cm9rZT1yLmNvbG9yO2NvbnN0IG89e3htbG5zOmcsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlpPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpnLGN4OiI1MCUiLGN5OiI1MCUiLHJ4OiI1MCUiLHJ5OiI1MCUiLHN0eWxlOmF9fTtlbHNle2NvbnN0IGU9dGhpcy5zdGFydEFuZ2xlKk1hdGguUEkvMTgwLHQ9dGhpcy5zd2VlcEFuZ2xlKk1hdGguUEkvMTgwLHI9dGhpcy5zd2VlcEFuZ2xlPjE4MD8xOjAsW24scyxjLGxdPVs1MCooMStNYXRoLmNvcyhlKSksNTAqKDEtTWF0aC5zaW4oZSkpLDUwKigxK01hdGguY29zKGUrdCkpLDUwKigxLU1hdGguc2luKGUrdCkpXTtpPXtuYW1lOiJwYXRoIixhdHRyaWJ1dGVzOnt4bWxuczpnLGQ6Ik0gIi5jb25jYXQobiwiICIpLmNvbmNhdChzLCIgQSA1MCA1MCAwICIpLmNvbmNhdChyLCIgMCAiKS5jb25jYXQoYywiICIpLmNvbmNhdChsKSx2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6YX19LE9iamVjdC5hc3NpZ24obyx7dmlld0JveDoiMCAwIDEwMCAxMDAiLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSl9Y29uc3QgbD17bmFtZToic3ZnIixjaGlsZHJlbjpbaV0sYXR0cmlidXRlczpvfTtyZXR1cm4gdyh0aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCkpP2MuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2xdfSk6KGwuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGMuSFRNTFJlc3VsdC5zdWNjZXNzKGwpKX19Y2xhc3MgUiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImFyZWEiLCEwKSx0aGlzLmNvbFNwYW49KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLng9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKSx0aGlzLnk9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKSx0aGlzLmRlc2M9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMuYXJlYT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRyYXc9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5leE9iamVjdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4Y2xHcm91cD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZpZWxkPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc3ViZm9ybT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmZvcm1TZXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXl9KltuLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCp4KHRoaXMpfVtuLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiEwfVtuLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtuLiRhZGRIVE1MXShlLHQpe2NvbnN0W3IsYSxpLHNdPXQ7dGhpc1tuLiRleHRyYV0ud2lkdGg9TWF0aC5tYXgodGhpc1tuLiRleHRyYV0ud2lkdGgscitpKSx0aGlzW24uJGV4dHJhXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1tuLiRleHRyYV0uaGVpZ2h0LGErcyksdGhpc1tuLiRleHRyYV0uY2hpbGRyZW4ucHVzaChlKX1bbi4kZ2V0QXZhaWxhYmxlU3BhY2VdKCl7cmV0dXJuIHRoaXNbbi4kZXh0cmFdLmF2YWlsYWJsZVNwYWNlfVtuLiR0b0hUTUxdKGUpe2NvbnN0IHQ9KDAscy50b1N0eWxlKSh0aGlzLCJwb3NpdGlvbiIpLHI9e3N0eWxlOnQsaWQ6dGhpc1tuLiR1aWRdLGNsYXNzOlsieGZhQXJlYSJdfTsoMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmci5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKSx0aGlzLm5hbWUmJihyLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBhPVtdO3RoaXNbbi4kZXh0cmFdPXtjaGlsZHJlbjphLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3QgaT10aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFpLnN1Y2Nlc3MpcmV0dXJuIGkuaXNCcmVhaygpP2k6KGRlbGV0ZSB0aGlzW24uJGV4dHJhXSxjLkhUTUxSZXN1bHQuRkFJTFVSRSk7dC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpc1tuLiRleHRyYV0ud2lkdGgpLHQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzW24uJGV4dHJhXS5oZWlnaHQpO2NvbnN0IG89e25hbWU6ImRpdiIsYXR0cmlidXRlczpyLGNoaWxkcmVuOmF9LGw9W3RoaXMueCx0aGlzLnksdGhpc1tuLiRleHRyYV0ud2lkdGgsdGhpc1tuLiRleHRyYV0uaGVpZ2h0XTtyZXR1cm4gZGVsZXRlIHRoaXNbbi4kZXh0cmFdLGMuSFRNTFJlc3VsdC5zdWNjZXNzKG8sbCl9fWNsYXNzIE4gZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJhc3Npc3QiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucm9sZT1lLnJvbGV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnNwZWFrPW51bGwsdGhpcy50b29sVGlwPW51bGx9W24uJHRvSFRNTF0oKXt2YXIgZTtyZXR1cm4obnVsbD09PShlPXRoaXMudG9vbFRpcCl8fHZvaWQgMD09PWU/dm9pZCAwOmVbbi4kY29udGVudF0pfHxudWxsfX1jbGFzcyBEIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYmFyY29kZSIsITApLHRoaXMuY2hhckVuY29kaW5nPSgwLGMuZ2V0S2V5d29yZCkoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pLHRoaXMuY2hlY2tzdW09KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSksdGhpcy5kYXRhQ29sdW1uQ291bnQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pLHRoaXMuZGF0YUxlbmd0aD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pLHRoaXMuZGF0YVByZXA9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKSx0aGlzLmRhdGFSb3dDb3VudD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSksdGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiIsdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubW9kdWxlSGVpZ2h0PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubW9kdWxlSGVpZ2h0LCI1bW0iKSx0aGlzLm1vZHVsZVdpZHRoPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpLHRoaXMucHJpbnRDaGVja0RpZ2l0PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLnJvd0NvbHVtblJhdGlvPSgwLGMuZ2V0UmF0aW8pKGUucm93Q29sdW1uUmF0aW8pLHRoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIix0aGlzLnRleHRMb2NhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pLHRoaXMudHJ1bmNhdGU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSksdGhpcy51cHNNb2RlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLndpZGVOYXJyb3dSYXRpbz0oMCxjLmdldFJhdGlvKShlLndpZGVOYXJyb3dSYXRpbyksdGhpcy5lbmNyeXB0PW51bGwsdGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJpbmQiLCEwKSx0aGlzLm1hdGNoPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm1hdGNoLFsib25jZSIsImRhdGFSZWYiLCJnbG9iYWwiLCJub25lIl0pLHRoaXMucmVmPWUucmVmfHwiIix0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgTCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJpbmRJdGVtcyIpLHRoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLHRoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiIsdGhpcy5yZWY9ZS5yZWZ8fCIiLHRoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fXQuQmluZEl0ZW1zPUw7Y2xhc3MgXyBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJvb2tlbmQiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubGVhZGVyPWUubGVhZGVyfHwiIix0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGogZXh0ZW5kcyBvLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJvb2xlYW4iKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbi4kdG9IVE1MXShlKXtyZXR1cm4gTygxPT09dGhpc1tuLiRjb250ZW50XT8iMSI6IjAiKX19Y2xhc3MgVSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImJvcmRlciIsITApLHRoaXMuYnJlYWs9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSksdGhpcy5oYW5kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSx0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNvcm5lcj1uZXcgby5YRkFPYmplY3RBcnJheSg0KSx0aGlzLmVkZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXkoNCksdGhpcy5leHRyYXM9bnVsbCx0aGlzLmZpbGw9bnVsbCx0aGlzLm1hcmdpbj1udWxsfVtuLiRnZXRFeHRyYV0oKXtpZighdGhpc1tuLiRleHRyYV0pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IHVlKHt9KTtmb3IobGV0IHI9ZS5sZW5ndGg7cjw0O3IrKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcCgoZT0+ZS50aGlja25lc3MpKSxyPVswLDAsMCwwXTt0aGlzLm1hcmdpbiYmKHJbMF09dGhpcy5tYXJnaW4udG9wSW5zZXQsclsxXT10aGlzLm1hcmdpbi5yaWdodEluc2V0LHJbMl09dGhpcy5tYXJnaW4uYm90dG9tSW5zZXQsclszXT10aGlzLm1hcmdpbi5sZWZ0SW5zZXQpLHRoaXNbbi4kZXh0cmFdPXt3aWR0aHM6dCxpbnNldHM6cixlZGdlczplfX1yZXR1cm4gdGhpc1tuLiRleHRyYV19W24uJHRvU3R5bGVdKCl7dmFyIGU7Y29uc3R7ZWRnZXM6dH09dGhpc1tuLiRnZXRFeHRyYV0oKSxyPXQubWFwKChlPT57Y29uc3QgdD1lW24uJHRvU3R5bGVdKCk7cmV0dXJuIHQuY29sb3J8fCh0LmNvbG9yPSIjMDAwMDAwIiksdH0pKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24oYSx0aGlzLm1hcmdpbltuLiR0b1N0eWxlXSgpKSwidmlzaWJsZSI9PT0obnVsbD09PShlPXRoaXMuZmlsbCl8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJlc2VuY2UpJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW24uJHRvU3R5bGVdKCkpLHRoaXMuY29ybmVyLmNoaWxkcmVuLnNvbWUoKGU9PjAhPT1lLnJhZGl1cykpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcCgoZT0+ZVtuLiR0b1N0eWxlXSgpKSk7aWYoMj09PWUubGVuZ3RofHwzPT09ZS5sZW5ndGgpe2NvbnN0IHQ9ZS5hdCgtMSk7Zm9yKGxldCByPWUubGVuZ3RoO3I8NDtyKyspZS5wdXNoKHQpfWEuYm9yZGVyUmFkaXVzPWUubWFwKChlPT5lLnJhZGl1cykpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjphLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOmEuYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6YS5ib3JkZXJTdHlsZT1yLm1hcCgoZT0+ZS5zdHlsZSkpLmpvaW4oIiAiKX1yZXR1cm4gYS5ib3JkZXJXaWR0aD1yLm1hcCgoZT0+ZS53aWR0aCkpLmpvaW4oIiAiKSxhLmJvcmRlckNvbG9yPXIubWFwKChlPT5lLmNvbG9yKSkuam9pbigiICIpLGF9fWNsYXNzICQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJicmVhayIsITApLHRoaXMuYWZ0ZXI9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKSx0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiLHRoaXMuYmVmb3JlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pLHRoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIix0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIix0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIix0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiLHRoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIix0aGlzLnN0YXJ0TmV3PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBYIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYnJlYWtBZnRlciIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiLHRoaXMuc3RhcnROZXc9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiLHRoaXMudGFyZ2V0VHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSksdGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEggZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJicmVha0JlZm9yZSIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiLHRoaXMuc3RhcnROZXc9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiLHRoaXMudGFyZ2V0VHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50YXJnZXRUeXBlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXSksdGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuc2NyaXB0PW51bGx9W24uJHRvSFRNTF0oZSl7cmV0dXJuIHRoaXNbbi4kZXh0cmFdPXt9LGMuSFRNTFJlc3VsdC5GQUlMVVJFfX1jbGFzcyBxIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiYnV0dG9uIiwhMCksdGhpcy5oaWdobGlnaHQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbH1bbi4kdG9IVE1MXShlKXtjb25zdCB0PXRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSxyPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbbi4kdWlkXSxjbGFzczpbInhmYUJ1dHRvbiJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2YgdC5ldmVudC5jaGlsZHJlbil7aWYoImNsaWNrIiE9PWUuYWN0aXZpdHl8fCFlLnNjcmlwdCljb250aW51ZTtjb25zdCB0PSgwLHUucmVjb3ZlckpzVVJMKShlLnNjcmlwdFtuLiRjb250ZW50XSk7aWYoIXQpY29udGludWU7Y29uc3QgYT0oMCxzLmZpeFVSTCkodC51cmwpO2EmJnIuY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbbi4kdWlkXSxocmVmOmEsbmV3V2luZG93OnQubmV3V2luZG93LGNsYXNzOlsieGZhTGluayJdLHN0eWxlOnt9fSxjaGlsZHJlbjpbXX0pfXJldHVybiBjLkhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgeiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNhbGN1bGF0ZSIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5vdmVycmlkZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmV4dHJhcz1udWxsLHRoaXMubWVzc2FnZT1udWxsLHRoaXMuc2NyaXB0PW51bGx9fWNsYXNzIEcgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjYXB0aW9uIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnBsYWNlbWVudD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSksdGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSx0aGlzLnJlc2VydmU9TWF0aC5jZWlsKCgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUucmVzZXJ2ZSkpLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmV4dHJhcz1udWxsLHRoaXMuZm9udD1udWxsLHRoaXMubWFyZ2luPW51bGwsdGhpcy5wYXJhPW51bGwsdGhpcy52YWx1ZT1udWxsfVtuLiRzZXRWYWx1ZV0oZSl7dih0aGlzLGUpfVtuLiRnZXRFeHRyYV0oZSl7aWYoIXRoaXNbbi4kZXh0cmFdKXtsZXR7d2lkdGg6dCxoZWlnaHQ6cn09ZTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQ9dGhpcy5yZXNlcnZlPD0wP3Q6dGhpcy5yZXNlcnZlO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6cj10aGlzLnJlc2VydmU8PTA/cjp0aGlzLnJlc2VydmV9dGhpc1tuLiRleHRyYV09KDAscy5sYXlvdXROb2RlKSh0aGlzLHt3aWR0aDp0LGhlaWdodDpyfSl9cmV0dXJuIHRoaXNbbi4kZXh0cmFdfVtuLiR0b0hUTUxdKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7dGhpc1tuLiRwdXNoUGFyYV0oKTtjb25zdCB0PXRoaXMudmFsdWVbbi4kdG9IVE1MXShlKS5odG1sO2lmKCF0KXJldHVybiB0aGlzW24uJHBvcFBhcmFdKCksYy5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IHI9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6cn09dGhpc1tuLiRnZXRFeHRyYV0oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1yfX1jb25zdCBhPVtdOyJzdHJpbmciPT10eXBlb2YgdD9hLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6YS5wdXNoKHQpO2NvbnN0IGk9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKGkud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihpLmhlaWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5yZXNlcnZlKSl9cmV0dXJuKDAscy5zZXRQYXJhKSh0aGlzLG51bGwsdCksdGhpc1tuLiRwb3BQYXJhXSgpLHRoaXMucmVzZXJ2ZT1yLGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOmF9KX19Y2xhc3MgVyBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNlcnRpZmljYXRlIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFYgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjZXJ0aWZpY2F0ZXMiLCEwKSx0aGlzLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY3JlZGVudGlhbFNlcnZlclBvbGljeSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVybD1lLnVybHx8IiIsdGhpcy51cmxQb2xpY3k9ZS51cmxQb2xpY3l8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmVuY3J5cHRpb249bnVsbCx0aGlzLmlzc3VlcnM9bnVsbCx0aGlzLmtleVVzYWdlPW51bGwsdGhpcy5vaWRzPW51bGwsdGhpcy5zaWduaW5nPW51bGwsdGhpcy5zdWJqZWN0RE5zPW51bGx9fWNsYXNzIEsgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjaGVja0J1dHRvbiIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5tYXJrPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm1hcmssWyJkZWZhdWx0IiwiY2hlY2siLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzcXVhcmUiLCJzdGFyIl0pLHRoaXMuc2hhcGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc2hhcGUsWyJzcXVhcmUiLCJyb3VuZCJdKSx0aGlzLnNpemU9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5zaXplLCIxMHB0IiksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuYm9yZGVyPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLm1hcmdpbj1udWxsfVtuLiR0b0hUTUxdKGUpe3ZhciB0O2NvbnN0IHI9KDAscy50b1N0eWxlKSgibWFyZ2luIiksYT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zaXplKTtsZXQgaSxvLGw7ci53aWR0aD1yLmhlaWdodD1hO2NvbnN0IGg9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLHU9aC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJmguaXRlbXMuY2hpbGRyZW5bMF1bbi4kdG9IVE1MXSgpLmh0bWx8fFtdLGQ9e29uOih2b2lkIDAhPT11WzBdP3VbMF06Im9uIikudG9TdHJpbmcoKSxvZmY6KHZvaWQgMCE9PXVbMV0/dVsxXToib2ZmIikudG9TdHJpbmcoKX0sZj0oKG51bGw9PT0odD1oLnZhbHVlKXx8dm9pZCAwPT09dD92b2lkIDA6dFtuLiR0ZXh0XSgpKXx8Im9mZiIpPT09ZC5vbnx8dm9pZCAwLGc9aFtuLiRnZXRTdWJmb3JtUGFyZW50XSgpLHA9aFtuLiR1aWRdO2xldCBtO3ZhciBiLHk7ZyBpbnN0YW5jZW9mIFNlPyhsPWdbbi4kdWlkXSxpPSJyYWRpbyIsbz0ieGZhUmFkaW8iLG09KG51bGw9PT0oYj1nW24uJGRhdGFdKXx8dm9pZCAwPT09Yj92b2lkIDA6YltuLiR1aWRdKXx8Z1tuLiR1aWRdKTooaT0iY2hlY2tib3giLG89InhmYUNoZWNrYm94IixtPShudWxsPT09KHk9aFtuLiRkYXRhXSl8fHZvaWQgMD09PXk/dm9pZCAwOnlbbi4kdWlkXSl8fGhbbi4kdWlkXSk7Y29uc3Qgdz17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e2NsYXNzOltvXSxzdHlsZTpyLGZpZWxkSWQ6cCxkYXRhSWQ6bSx0eXBlOmksY2hlY2tlZDpmLHhmYU9uOmQub24seGZhT2ZmOmQub2ZmLCJhcmlhLWxhYmVsIjpDKGgpLCJhcmlhLXJlcXVpcmVkIjohMX19O3JldHVybiBsJiYody5hdHRyaWJ1dGVzLm5hbWU9bCksUyhoKSYmKHcuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwLHcuYXR0cmlidXRlcy5yZXF1aXJlZD0hMCksYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt3XX0pfX1jbGFzcyBZIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY2hvaWNlTGlzdCIsITApLHRoaXMuY29tbWl0T249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY29tbWl0T24sWyJzZWxlY3QiLCJleGl0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5vcGVuPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm9wZW4sWyJ1c2VyQ29udHJvbCIsImFsd2F5cyIsIm11bHRpU2VsZWN0Iiwib25FbnRyeSJdKSx0aGlzLnRleHRFbnRyeT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUudGV4dEVudHJ5LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuYm9yZGVyPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLm1hcmdpbj1udWxsfVtuLiR0b0hUTUxdKGUpe3ZhciB0LHI7Y29uc3QgYT0oMCxzLnRvU3R5bGUpKHRoaXMsImJvcmRlciIsIm1hcmdpbiIpLGk9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLG89e2ZvbnRTaXplOiJjYWxjKCIuY29uY2F0KChudWxsPT09KHQ9aS5mb250KXx8dm9pZCAwPT09dD92b2lkIDA6dC5zaXplKXx8MTAsInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSkiKX0sbD1bXTtpZihpLml0ZW1zLmNoaWxkcmVuLmxlbmd0aD4wKXt2YXIgaDtjb25zdCBlPWkuaXRlbXM7bGV0IHQ9MCxyPTA7Mj09PWUuY2hpbGRyZW4ubGVuZ3RoJiYodD1lLmNoaWxkcmVuWzBdLnNhdmUscj0xLXQpO2NvbnN0IGE9ZS5jaGlsZHJlblt0XVtuLiR0b0hUTUxdKCkuaHRtbCxzPWUuY2hpbGRyZW5bcl1bbi4kdG9IVE1MXSgpLmh0bWw7bGV0IGM9ITE7Y29uc3QgdT0obnVsbD09PShoPWkudmFsdWUpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoW24uJHRleHRdKCkpfHwiIjtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6c1tlXXx8YVtlXSxzdHlsZTpvfSx2YWx1ZTphW2VdfTtzW2VdPT09dSYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1jPSEwKSxsLnB1c2godCl9Y3x8bC5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3QgdT17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmlbbi4kdWlkXSxkYXRhSWQ6KG51bGw9PT0ocj1pW24uJGRhdGFdKXx8dm9pZCAwPT09cj92b2lkIDA6cltuLiR1aWRdKXx8aVtuLiR1aWRdLHN0eWxlOmEsImFyaWEtbGFiZWwiOkMoaSksImFyaWEtcmVxdWlyZWQiOiExfTtyZXR1cm4gUyhpKSYmKHVbImFyaWEtcmVxdWlyZWQiXT0hMCx1LnJlcXVpcmVkPSEwKSwibXVsdGlTZWxlY3QiPT09dGhpcy5vcGVuJiYodS5tdWx0aXBsZT0hMCksYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjpsLGF0dHJpYnV0ZXM6dX1dfSl9fWNsYXNzIEogZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJjb2xvciIsITApLHRoaXMuY1NwYWNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmNTcGFjZSxbIlNSR0IiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy52YWx1ZT1lLnZhbHVlPygwLGMuZ2V0Q29sb3IpKGUudmFsdWUpOiIiLHRoaXMuZXh0cmFzPW51bGx9W24uJGhhc1NldHRhYmxlVmFsdWVdKCl7cmV0dXJuITF9W24uJHRvU3R5bGVdKCl7cmV0dXJuIHRoaXMudmFsdWU/bC5VdGlsLm1ha2VIZXhDb2xvcih0aGlzLnZhbHVlLnIsdGhpcy52YWx1ZS5nLHRoaXMudmFsdWUuYik6bnVsbH19Y2xhc3MgWiBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNvbWIiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubnVtYmVyT2ZDZWxscz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubnVtYmVyT2ZDZWxscyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBRIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY29ubmVjdCIsITApLHRoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5yZWY9ZS5yZWZ8fCIiLHRoaXMudXNhZ2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudXNhZ2UsWyJleHBvcnRBbmRJbXBvcnQiLCJleHBvcnRPbmx5IiwiaW1wb3J0T25seSJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIGVlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiY29udGVudEFyZWEiLCEwKSx0aGlzLmg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5oKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMudz0oMCxjLmdldE1lYXN1cmVtZW50KShlLncpLHRoaXMueD0oMCxjLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpLHRoaXMueT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpLHRoaXMuZGVzYz1udWxsLHRoaXMuZXh0cmFzPW51bGx9W24uJHRvSFRNTF0oZSl7Y29uc3QgdD17bGVmdDooMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy54KSx0b3A6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMueSksd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudyksaGVpZ2h0OigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmgpfSxyPVsieGZhQ29udGVudGFyZWEiXTtyZXR1cm4oMCxzLmlzUHJpbnRPbmx5KSh0aGlzKSYmci5wdXNoKCJ4ZmFQcmludE9ubHkiKSxjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOnIsaWQ6dGhpc1tuLiR1aWRdfX0pfX1jbGFzcyB0ZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImNvcm5lciIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5pbnZlcnRlZD0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuaW52ZXJ0ZWQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmpvaW49KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuam9pbixbInNxdWFyZSIsInJvdW5kIl0pLHRoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksdGhpcy5yYWRpdXM9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5yYWRpdXMpLHRoaXMuc3Ryb2tlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSksdGhpcy50aGlja25lc3M9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS50aGlja25lc3MsIjAuNXB0IiksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuY29sb3I9bnVsbCx0aGlzLmV4dHJhcz1udWxsfVtuLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJ2aXNpYmlsaXR5Iik7cmV0dXJuIGUucmFkaXVzPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgic3F1YXJlIj09PXRoaXMuam9pbj8wOnRoaXMucmFkaXVzKSxlfX1jbGFzcyByZSBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkYXRlIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W24uJGZpbmFsaXplXSgpe2NvbnN0IGU9dGhpc1tuLiRjb250ZW50XS50cmltKCk7dGhpc1tuLiRjb250ZW50XT1lP25ldyBEYXRlKGUpOm51bGx9W24uJHRvSFRNTF0oZSl7cmV0dXJuIE8odGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBuZSBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkYXRlVGltZSIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpO3RoaXNbbi4kY29udGVudF09ZT9uZXcgRGF0ZShlKTpudWxsfVtuLiR0b0hUTUxdKGUpe3JldHVybiBPKHRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgYWUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkYXRlVGltZUVkaXQiLCEwKSx0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucGlja2VyPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnBpY2tlcixbImhvc3QiLCJub25lIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmJvcmRlcj1udWxsLHRoaXMuY29tYj1udWxsLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5tYXJnaW49bnVsbH1bbi4kdG9IVE1MXShlKXt2YXIgdDtjb25zdCByPSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLGk9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbbi4kdWlkXSxkYXRhSWQ6KG51bGw9PT0odD1hW24uJGRhdGFdKXx8dm9pZCAwPT09dD92b2lkIDA6dFtuLiR1aWRdKXx8YVtuLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6ciwiYXJpYS1sYWJlbCI6QyhhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtyZXR1cm4gUyhhKSYmKGkuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwLGkuYXR0cmlidXRlcy5yZXF1aXJlZD0hMCksYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBpZSBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkZWNpbWFsIiksdGhpcy5mcmFjRGlnaXRzPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PiEwfSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxlYWREaWdpdHM9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxlYWREaWdpdHMsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSksdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXBhcnNlRmxvYXQodGhpc1tuLiRjb250ZW50XS50cmltKCkpO3RoaXNbbi4kY29udGVudF09aXNOYU4oZSk/bnVsbDplfVtuLiR0b0hUTUxdKGUpe3JldHVybiBPKG51bGwhPT10aGlzW24uJGNvbnRlbnRdP3RoaXNbbi4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIHNlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGVmYXVsdFVpIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbH19Y2xhc3Mgb2UgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkZXNjIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuaW1hZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pbnRlZ2VyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIGNlIGV4dGVuZHMgby5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGxlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZGlnZXN0TWV0aG9kcyIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgaGUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJkcmF3IiwhMCksdGhpcy5hbmNob3JUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSksdGhpcy5jb2xTcGFuPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pLHRoaXMuaD1lLmg/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5oKToiIix0aGlzLmhBbGlnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiLHRoaXMubWF4SD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heEgsIjBwdCIpLHRoaXMubWF4Vz0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1heFcsIjBwdCIpLHRoaXMubWluSD0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1pbkgsIjBwdCIpLHRoaXMubWluVz0oMCxjLmdldE1lYXN1cmVtZW50KShlLm1pblcsIjBwdCIpLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksdGhpcy5yZWxldmFudD0oMCxjLmdldFJlbGV2YW50KShlLnJlbGV2YW50KSx0aGlzLnJvdGF0ZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy53PWUudz8oMCxjLmdldE1lYXN1cmVtZW50KShlLncpOiIiLHRoaXMueD0oMCxjLmdldE1lYXN1cmVtZW50KShlLngsIjBwdCIpLHRoaXMueT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnksIjBwdCIpLHRoaXMuYXNzaXN0PW51bGwsdGhpcy5ib3JkZXI9bnVsbCx0aGlzLmNhcHRpb249bnVsbCx0aGlzLmRlc2M9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMuZm9udD1udWxsLHRoaXMua2VlcD1udWxsLHRoaXMubWFyZ2luPW51bGwsdGhpcy5wYXJhPW51bGwsdGhpcy50cmF2ZXJzYWw9bnVsbCx0aGlzLnVpPW51bGwsdGhpcy52YWx1ZT1udWxsLHRoaXMuc2V0UHJvcGVydHk9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W24uJHNldFZhbHVlXShlKXt2KHRoaXMsZSl9W24uJHRvSFRNTF0oZSl7aWYoQSh0aGlzKSwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKSx0aGlzW24uJHB1c2hQYXJhXSgpO2NvbnN0IHQ9dGhpcy53LHI9dGhpcy5oLHt3OmEsaDpvLGlzQnJva2VuOmx9PSgwLHMubGF5b3V0Tm9kZSkodGhpcyxlKTtpZihhJiYiIj09PXRoaXMudyl7aWYobCYmdGhpc1tuLiRnZXRTdWJmb3JtUGFyZW50XSgpW24uJGlzVGhlcmVNb3JlV2lkdGhdKCkpcmV0dXJuIHRoaXNbbi4kcG9wUGFyYV0oKSxjLkhUTUxSZXN1bHQuRkFJTFVSRTt0aGlzLnc9YX1pZihvJiYiIj09PXRoaXMuaCYmKHRoaXMuaD1vKSxGKHRoaXMpLCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gdGhpcy53PXQsdGhpcy5oPXIsdGhpc1tuLiRwb3BQYXJhXSgpLGMuSFRNTFJlc3VsdC5GQUlMVVJFO0kodGhpcyk7Y29uc3QgaD0oMCxzLnRvU3R5bGUpKHRoaXMsImZvbnQiLCJoQWxpZ24iLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJib3JkZXIiLCJtYXJnaW4iKTsoMCxzLnNldE1pbk1heERpbWVuc2lvbnMpKHRoaXMsaCksaC5tYXJnaW4mJihoLnBhZGRpbmc9aC5tYXJnaW4sZGVsZXRlIGgubWFyZ2luKTtjb25zdCB1PVsieGZhRHJhdyJdO3RoaXMuZm9udCYmdS5wdXNoKCJ4ZmFGb250IiksKDAscy5pc1ByaW50T25seSkodGhpcykmJnUucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgZD17c3R5bGU6aCxpZDp0aGlzW24uJHVpZF0sY2xhc3M6dX07dGhpcy5uYW1lJiYoZC54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgZj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmQsY2hpbGRyZW46W119O2sodGhpcyxkKTtjb25zdCBnPSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsZixlKSxwPXRoaXMudmFsdWU/dGhpcy52YWx1ZVtuLiR0b0hUTUxdKGUpLmh0bWw6bnVsbDtyZXR1cm4gbnVsbD09PXA/KHRoaXMudz10LHRoaXMuaD1yLHRoaXNbbi4kcG9wUGFyYV0oKSxjLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsZiksZykpOihmLmNoaWxkcmVuLnB1c2gocCksKDAscy5zZXRQYXJhKSh0aGlzLGgscCksdGhpcy53PXQsdGhpcy5oPXIsdGhpc1tuLiRwb3BQYXJhXSgpLGMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxmKSxnKSl9fWNsYXNzIHVlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZWRnZSIsITApLHRoaXMuY2FwPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmNhcCxbInNxdWFyZSIsImJ1dHQiLCJyb3VuZCJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksdGhpcy5zdHJva2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKSx0aGlzLnRoaWNrbmVzcz0oMCxjLmdldE1lYXN1cmVtZW50KShlLnRoaWNrbmVzcywiMC41cHQiKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5jb2xvcj1udWxsLHRoaXMuZXh0cmFzPW51bGx9W24uJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsInZpc2liaWxpdHkiKTtpZihPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbbi4kdG9TdHlsZV0oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KSwidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgZGUgZXh0ZW5kcyBvLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBmZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImVuY29kaW5ncyIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmVuY29kaW5nPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBnZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImVuY3J5cHQiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNlcnRpZmljYXRlPW51bGx9fWNsYXNzIHBlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZW5jcnlwdERhdGEiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMub3BlcmF0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pLHRoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5maWx0ZXI9bnVsbCx0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIG1lIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZW5jcnlwdGlvbiIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNlcnRpZmljYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBiZSBleHRlbmRzIG8uT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImVuY3J5cHRpb25NZXRob2QiLFsiIiwiQUVTMjU2LUNCQyIsIlRSSVBMRURFUy1DQkMiLCJBRVMxMjgtQ0JDIiwiQUVTMTkyLUNCQyJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgeWUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJlbmNyeXB0aW9uTWV0aG9kcyIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIHdlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZXZlbnQiLCEwKSx0aGlzLmFjdGl2aXR5PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjdGl2aXR5LFsiY2xpY2siLCJjaGFuZ2UiLCJkb2NDbG9zZSIsImRvY1JlYWR5IiwiZW50ZXIiLCJleGl0IiwiZnVsbCIsImluZGV4Q2hhbmdlIiwiaW5pdGlhbGl6ZSIsIm1vdXNlRG93biIsIm1vdXNlRW50ZXIiLCJtb3VzZUV4aXQiLCJtb3VzZVVwIiwicG9zdEV4ZWN1dGUiLCJwb3N0T3BlbiIsInBvc3RQcmludCIsInBvc3RTYXZlIiwicG9zdFNpZ24iLCJwb3N0U3VibWl0IiwicHJlRXhlY3V0ZSIsInByZU9wZW4iLCJwcmVQcmludCIsInByZVNhdmUiLCJwcmVTaWduIiwicHJlU3VibWl0IiwicmVhZHkiLCJ2YWxpZGF0aW9uU3RhdGUiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxpc3Rlbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5saXN0ZW4sWyJyZWZPbmx5IiwicmVmQW5kRGVzY2VuZGVudHMiXSksdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy5yZWY9ZS5yZWZ8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmV4dHJhcz1udWxsLHRoaXMuZW5jcnlwdERhdGE9bnVsbCx0aGlzLmV4ZWN1dGU9bnVsbCx0aGlzLnNjcmlwdD1udWxsLHRoaXMuc2lnbkRhdGE9bnVsbCx0aGlzLnN1Ym1pdD1udWxsfX1jbGFzcyB2ZSBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJleERhdGEiKSx0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiLHRoaXMuaHJlZj1lLmhyZWZ8fCIiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5tYXhMZW5ndGg9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLm1heExlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49LTF9KSx0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnJpZD1lLnJpZHx8IiIsdGhpcy50cmFuc2ZlckVuY29kaW5nPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnRyYW5zZmVyRW5jb2RpbmcsWyJub25lIiwiYmFzZTY0IiwicGFja2FnZSJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W24uJGlzQ0RBVEFYbWxdKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfVtuLiRvbkNoaWxkXShlKXtyZXR1cm4oInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZlW24uJG5hbWVzcGFjZUlkXT09PWEuTmFtZXNwYWNlSWRzLnhodG1sLmlkfHwidGV4dC94bWwiPT09dGhpcy5jb250ZW50VHlwZSkmJih0aGlzW24uJGNvbnRlbnRdPWUsITApfVtuLiR0b0hUTUxdKGUpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmdGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdW24uJHRvSFRNTF0oZSk6Yy5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyB4ZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImV4T2JqZWN0IiwhMCksdGhpcy5hcmNoaXZlPWUuYXJjaGl2ZXx8IiIsdGhpcy5jbGFzc0lkPWUuY2xhc3NJZHx8IiIsdGhpcy5jb2RlQmFzZT1lLmNvZGVCYXNlfHwiIix0aGlzLmNvZGVUeXBlPWUuY29kZVR5cGV8fCIiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4T2JqZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZmxvYXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pbWFnZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmludGVnZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy50ZXh0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGltZT1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgU2UgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJleGNsR3JvdXAiLCEwKSx0aGlzLmFjY2Vzcz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKSx0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiIsdGhpcy5hbmNob3JUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSksdGhpcy5jb2xTcGFuPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pLHRoaXMuaD1lLmg/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5oKToiIix0aGlzLmhBbGlnbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5sYXlvdXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKSx0aGlzLm1heEg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKSx0aGlzLm1heFc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKSx0aGlzLm1pbkg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5ILCIwcHQiKSx0aGlzLm1pblc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5taW5XLCIwcHQiKSx0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pLHRoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMudz1lLnc/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS53KToiIix0aGlzLng9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS54LCIwcHQiKSx0aGlzLnk9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS55LCIwcHQiKSx0aGlzLmFzc2lzdD1udWxsLHRoaXMuYmluZD1udWxsLHRoaXMuYm9yZGVyPW51bGwsdGhpcy5jYWxjdWxhdGU9bnVsbCx0aGlzLmNhcHRpb249bnVsbCx0aGlzLmRlc2M9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMubWFyZ2luPW51bGwsdGhpcy5wYXJhPW51bGwsdGhpcy50cmF2ZXJzYWw9bnVsbCx0aGlzLnZhbGlkYXRlPW51bGwsdGhpcy5jb25uZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXZlbnQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5maWVsZD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5fVtuLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtuLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiEwfVtuLiRzZXRWYWx1ZV0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IE50KHt9KTt0W24uJGFwcGVuZENoaWxkXShlKSx0LnZhbHVlPWV9dC52YWx1ZVtuLiRzZXRWYWx1ZV0oZSl9fVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW24uJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW24uJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kaXNUaGVyZU1vcmVXaWR0aF0oKX1bbi4kaXNTcGxpdHRhYmxlXSgpe3ZhciBlO2NvbnN0IHQ9dGhpc1tuLiRnZXRTdWJmb3JtUGFyZW50XSgpO3JldHVybiEhdFtuLiRpc1NwbGl0dGFibGVdKCkmJih2b2lkIDAhPT10aGlzW24uJGV4dHJhXS5faXNTcGxpdHRhYmxlP3RoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU6InBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iik/KHRoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU9ITEsITEpOiEobnVsbCE9PShlPXQubGF5b3V0KSYmdm9pZCAwIT09ZSYmZS5lbmRzV2l0aCgiLXRiIikmJjAhPT10W24uJGV4dHJhXS5udW1iZXJJbkxpbmV8fCh0aGlzW24uJGV4dHJhXS5faXNTcGxpdHRhYmxlPSEwLDApKSl9W24uJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W24uJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W24uJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtuLiR0b0hUTUxdKGUpe2lmKEEodGhpcyksImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZOygwLHMuZml4RGltZW5zaW9ucykodGhpcyk7Y29uc3QgdD1bXSxyPXtpZDp0aGlzW24uJHVpZF0sY2xhc3M6W119OygwLHMuc2V0QWNjZXNzKSh0aGlzLHIuY2xhc3MpLHRoaXNbbi4kZXh0cmFdfHwodGhpc1tuLiRleHRyYV09T2JqZWN0LmNyZWF0ZShudWxsKSksT2JqZWN0LmFzc2lnbih0aGlzW24uJGV4dHJhXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOnIsYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbbi4kaXNTcGxpdHRhYmxlXSgpO2lmKGF8fEYodGhpcyksISgwLGkuY2hlY2tEaW1lbnNpb25zKSh0aGlzLGUpKXJldHVybiBjLkhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBvPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tuLiRnZXRTdWJmb3JtUGFyZW50XSgpLmNvbHVtbldpZHRocztBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiYodGhpc1tuLiRleHRyYV0uY29sdW1uV2lkdGhzPWUsdGhpc1tuLiRleHRyYV0uY3VycmVudENvbHVtbj0wKX1jb25zdCBsPSgwLHMudG9TdHlsZSkodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksaD1bInhmYUV4Y2xncm91cCJdLHU9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7dSYmaC5wdXNoKHUpLCgwLHMuaXNQcmludE9ubHkpKHRoaXMpJiZoLnB1c2goInhmYVByaW50T25seSIpLHIuc3R5bGU9bCxyLmNsYXNzPWgsdGhpcy5uYW1lJiYoci54ZmFOYW1lPXRoaXMubmFtZSksdGhpc1tuLiRwdXNoUGFyYV0oKTtjb25zdCBkPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGY9ZD8yOjE7Zm9yKDt0aGlzW24uJGV4dHJhXS5hdHRlbXB0PGY7dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCsrKXtkJiYxPT09dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCYmKHRoaXNbbi4kZXh0cmFdLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbbi4kY2hpbGRyZW5Ub0hUTUxdKHtmaWx0ZXI6byxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXJldHVybiB0aGlzW24uJHBvcFBhcmFdKCksZTtpZihkJiYwPT09dGhpc1tuLiRleHRyYV0uYXR0ZW1wdCYmMD09PXRoaXNbbi4kZXh0cmFdLm51bWJlckluTGluZSYmIXRoaXNbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbbi4kZXh0cmFdLmF0dGVtcHQ9ZjticmVha319aWYodGhpc1tuLiRwb3BQYXJhXSgpLGF8fEkodGhpcyksdGhpc1tuLiRleHRyYV0uYXR0ZW1wdD09PWYpcmV0dXJuIGF8fGRlbGV0ZSB0aGlzW24uJGV4dHJhXSxjLkhUTUxSZXN1bHQuRkFJTFVSRTtsZXQgZz0wLHA9MDt0aGlzLm1hcmdpbiYmKGc9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQscD10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldCk7Y29uc3QgbT1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS53aWR0aCtnLHRoaXMud3x8MCksYj1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS5oZWlnaHQrcCx0aGlzLmh8fDApLHk9W3RoaXMueCx0aGlzLnksbSxiXTsiIj09PXRoaXMudyYmKGwud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKG0pKSwiIj09PXRoaXMuaCYmKGwuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKShiKSk7Y29uc3Qgdz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOnIsY2hpbGRyZW46dH07cmV0dXJuIGsodGhpcyxyKSxkZWxldGUgdGhpc1tuLiRleHRyYV0sYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLHcpLHkpfX1jbGFzcyBBZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImV4ZWN1dGUiKSx0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIix0aGlzLmV4ZWN1dGVUeXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucnVuQXQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3Mga2UgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJleHRyYXMiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmJvb2xlYW49bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5kYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZVRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5kZWNpbWFsPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXhEYXRhPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXh0cmFzPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZmxvYXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pbWFnZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmludGVnZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy50ZXh0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGltZT1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3MgQ2UgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJmaWVsZCIsITApLHRoaXMuYWNjZXNzPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pLHRoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIix0aGlzLmFuY2hvclR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKSx0aGlzLmNvbFNwYW49KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSksdGhpcy5oPWUuaD8oMCxjLmdldE1lYXN1cmVtZW50KShlLmgpOiIiLHRoaXMuaEFsaWduPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiIsdGhpcy5tYXhIPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4SCwiMHB0IiksdGhpcy5tYXhXPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWF4VywiMHB0IiksdGhpcy5taW5IPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0IiksdGhpcy5taW5XPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0IiksdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSx0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLHRoaXMucm90YXRlPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnc9ZS53PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiIsdGhpcy54PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0IiksdGhpcy55PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0IiksdGhpcy5hc3Npc3Q9bnVsbCx0aGlzLmJpbmQ9bnVsbCx0aGlzLmJvcmRlcj1udWxsLHRoaXMuY2FsY3VsYXRlPW51bGwsdGhpcy5jYXB0aW9uPW51bGwsdGhpcy5kZXNjPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLmZvbnQ9bnVsbCx0aGlzLmZvcm1hdD1udWxsLHRoaXMuaXRlbXM9bmV3IG8uWEZBT2JqZWN0QXJyYXkoMiksdGhpcy5rZWVwPW51bGwsdGhpcy5tYXJnaW49bnVsbCx0aGlzLnBhcmE9bnVsbCx0aGlzLnRyYXZlcnNhbD1udWxsLHRoaXMudWk9bnVsbCx0aGlzLnZhbGlkYXRlPW51bGwsdGhpcy52YWx1ZT1udWxsLHRoaXMuYmluZEl0ZW1zPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY29ubmVjdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV2ZW50PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc2V0UHJvcGVydHk9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W24uJGlzQmluZGFibGVdKCl7cmV0dXJuITB9W24uJHNldFZhbHVlXShlKXt2KHRoaXMsZSl9W24uJHRvSFRNTF0oZSl7dmFyIHQscjtpZihBKHRoaXMpLCF0aGlzLnVpKXtsZXQgZTtzd2l0Y2godGhpcy51aT1uZXcgUHQoe30pLHRoaXMudWlbbi4kZ2xvYmFsRGF0YV09dGhpc1tuLiRnbG9iYWxEYXRhXSx0aGlzW24uJGFwcGVuZENoaWxkXSh0aGlzLnVpKSx0aGlzLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCl7Y2FzZSAwOmU9bmV3IE90KHt9KSx0aGlzLnVpLnRleHRFZGl0PWU7YnJlYWs7Y2FzZSAxOmU9bmV3IEsoe30pLHRoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgWSh7fSksdGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtuLiRhcHBlbmRDaGlsZF0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bbi4kZXh0cmFdLHRoaXNbbi4kcHVzaFBhcmFdKCk7Y29uc3QgYT10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW24uJHRvSFRNTF0oZSkuaHRtbDpudWxsLG89dGhpcy53LGw9dGhpcy5oO2xldCB1PTAsZD0wO3RoaXMubWFyZ2luJiYodT10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldCxkPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0KTtsZXQgZj1udWxsO2lmKCIiPT09dGhpcy53fHwiIj09PXRoaXMuaCl7bGV0IHQ9bnVsbCxyPW51bGwsYT0wLGk9MDtpZih0aGlzLnVpLmNoZWNrQnV0dG9uKWE9aT10aGlzLnVpLmNoZWNrQnV0dG9uLnNpemU7ZWxzZXtjb25zdHt3OnQsaDpyfT0oMCxzLmxheW91dE5vZGUpKHRoaXMsZSk7bnVsbCE9PXQ/KGE9dCxpPXIpOmk9KDAsaC5nZXRNZXRyaWNzKSh0aGlzLmZvbnQsITApLmxpbmVOb0dhcH1pZihmPXkodGhpcy51aVtuLiRnZXRFeHRyYV0oKSksYSs9Zi53LGkrPWYuaCx0aGlzLmNhcHRpb24pe2NvbnN0e3c6cyxoOm8saXNCcm9rZW46bH09dGhpcy5jYXB0aW9uW24uJGdldEV4dHJhXShlKTtpZihsJiZ0aGlzW24uJGdldFN1YmZvcm1QYXJlbnRdKClbbi4kaXNUaGVyZU1vcmVXaWR0aF0oKSlyZXR1cm4gdGhpc1tuLiRwb3BQYXJhXSgpLGMuSFRNTFJlc3VsdC5GQUlMVVJFO3N3aXRjaCh0PXMscj1vLHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPWE7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyKz1pfX1lbHNlIHQ9YSxyPWk7dCYmIiI9PT10aGlzLncmJih0Kz11LHRoaXMudz1NYXRoLm1pbih0aGlzLm1heFc8PTA/MS8wOnRoaXMubWF4Vyx0aGlzLm1pblcrMTx0P3Q6dGhpcy5taW5XKSksciYmIiI9PT10aGlzLmgmJihyKz1kLHRoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxyP3I6dGhpcy5taW5IKSl9aWYodGhpc1tuLiRwb3BQYXJhXSgpLCgwLHMuZml4RGltZW5zaW9ucykodGhpcyksRih0aGlzKSwhKDAsaS5jaGVja0RpbWVuc2lvbnMpKHRoaXMsZSkpcmV0dXJuIHRoaXMudz1vLHRoaXMuaD1sLHRoaXNbbi4kcG9wUGFyYV0oKSxjLkhUTUxSZXN1bHQuRkFJTFVSRTtJKHRoaXMpO2NvbnN0IGc9KDAscy50b1N0eWxlKSh0aGlzLCJmb250IiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsInByZXNlbmNlIiwibWFyZ2luIiwiaEFsaWduIik7KDAscy5zZXRNaW5NYXhEaW1lbnNpb25zKSh0aGlzLGcpO2NvbnN0IHA9WyJ4ZmFGaWVsZCJdO3RoaXMuZm9udCYmcC5wdXNoKCJ4ZmFGb250IiksKDAscy5pc1ByaW50T25seSkodGhpcykmJnAucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgbT17c3R5bGU6ZyxpZDp0aGlzW24uJHVpZF0sY2xhc3M6cH07Zy5tYXJnaW4mJihnLnBhZGRpbmc9Zy5tYXJnaW4sZGVsZXRlIGcubWFyZ2luKSwoMCxzLnNldEFjY2VzcykodGhpcyxwKSx0aGlzLm5hbWUmJihtLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBiPVtdLHc9e25hbWU6ImRpdiIsYXR0cmlidXRlczptLGNoaWxkcmVuOmJ9O2sodGhpcyxtKTtjb25zdCB2PXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW24uJHRvU3R5bGVdKCk6bnVsbCx4PSgwLHMuY29tcHV0ZUJib3gpKHRoaXMsdyxlKSxTPXRoaXMudWlbbi4kdG9IVE1MXSgpLmh0bWw7aWYoIVMpcmV0dXJuIE9iamVjdC5hc3NpZ24oZyx2KSxjLkhUTUxSZXN1bHQuc3VjY2VzcygoMCxzLmNyZWF0ZVdyYXBwZXIpKHRoaXMsdykseCk7dGhpc1tuLiR0YWJJbmRleF0mJihudWxsIT09KHQ9Uy5jaGlsZHJlbikmJnZvaWQgMCE9PXQmJnRbMF0/Uy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbbi4kdGFiSW5kZXhdOlMuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW24uJHRhYkluZGV4XSksUy5hdHRyaWJ1dGVzLnN0eWxlfHwoUy5hdHRyaWJ1dGVzLnN0eWxlPU9iamVjdC5jcmVhdGUobnVsbCkpO2xldCBDPW51bGw7aWYodGhpcy51aS5idXR0b24/KDE9PT1TLmNoaWxkcmVuLmxlbmd0aCYmKFtDXT1TLmNoaWxkcmVuLnNwbGljZSgwLDEpKSxPYmplY3QuYXNzaWduKFMuYXR0cmlidXRlcy5zdHlsZSx2KSk6T2JqZWN0LmFzc2lnbihnLHYpLGIucHVzaChTKSx0aGlzLnZhbHVlKWlmKHRoaXMudWkuaW1hZ2VFZGl0KVMuY2hpbGRyZW4ucHVzaCh0aGlzLnZhbHVlW24uJHRvSFRNTF0oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7dmFyIE87bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtuLiR0ZXh0XSgpO2Vsc2UgaWYodGhpcy52YWx1ZS50ZXh0KWU9dGhpcy52YWx1ZS50ZXh0W24uJGdldEV4dHJhXSgpO2Vsc2V7Y29uc3QgdD10aGlzLnZhbHVlW24uJHRvSFRNTF0oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiYobnVsbD09PShPPXRoaXMudmFsdWUudGV4dCl8fHZvaWQgMD09PU8/dm9pZCAwOk8ubWF4Q2hhcnMpJiYoUy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpLGUmJih0aGlzLnVpLm51bWVyaWNFZGl0JiYoZT1wYXJzZUZsb2F0KGUpLGU9aXNOYU4oZSk/IiI6ZS50b1N0cmluZygpKSwidGV4dGFyZWEiPT09Uy5jaGlsZHJlblswXS5uYW1lP1MuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOlMuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lKX1pZighdGhpcy51aS5pbWFnZUVkaXQmJm51bGwhPT0ocj1TLmNoaWxkcmVuKSYmdm9pZCAwIT09ciYmclswXSYmdGhpcy5oKXtmPWZ8fHkodGhpcy51aVtuLiRnZXRFeHRyYV0oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmUsdDw9MCYmKHQ9dGhpcy5jYXB0aW9uW24uJGdldEV4dHJhXShlKS5oKTtjb25zdCByPXRoaXMuaC10LWQtZi5oO1MuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHIpfWVsc2UgUy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9aWYoQyYmUy5jaGlsZHJlbi5wdXNoKEMpLCFhKXJldHVybiBTLmF0dHJpYnV0ZXMuY2xhc3MmJlMuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0IiksdGhpcy53PW8sdGhpcy5oPWwsYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoKDAscy5jcmVhdGVXcmFwcGVyKSh0aGlzLHcpLHgpO2lmKHRoaXMudWkuYnV0dG9uKXJldHVybiBnLnBhZGRpbmcmJmRlbGV0ZSBnLnBhZGRpbmcsImRpdiI9PT1hLm5hbWUmJihhLm5hbWU9InNwYW4iKSxTLmNoaWxkcmVuLnB1c2goYSksYy5IVE1MUmVzdWx0LnN1Y2Nlc3Modyx4KTtzd2l0Y2godGhpcy51aS5jaGVja0J1dHRvbiYmKGEuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIiksUy5hdHRyaWJ1dGVzLmNsYXNzfHwoUy5hdHRyaWJ1dGVzLmNsYXNzPVtdKSxTLmNoaWxkcmVuLnNwbGljZSgwLDAsYSksdGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlImlubGluZSI6Uy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYUxlZnQiKTticmVhaztjYXNlInJpZ2h0IjpTLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhUmlnaHQiKTticmVhaztjYXNlInRvcCI6Uy5hdHRyaWJ1dGVzLmNsYXNzLnB1c2goInhmYVRvcCIpO2JyZWFrO2Nhc2UiYm90dG9tIjpTLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhQm90dG9tIil9cmV0dXJuIHRoaXMudz1vLHRoaXMuaD1sLGMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyx3KSx4KX19dC5GaWVsZD1DZTtjbGFzcyBPZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImZpbGwiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucHJlc2VuY2U9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuY29sb3I9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMubGluZWFyPW51bGwsdGhpcy5wYXR0ZXJuPW51bGwsdGhpcy5yYWRpYWw9bnVsbCx0aGlzLnNvbGlkPW51bGwsdGhpcy5zdGlwcGxlPW51bGx9W24uJHRvU3R5bGVdKCl7dmFyIGU7Y29uc3QgdD10aGlzW24uJGdldFBhcmVudF0oKSxyPXRbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGk9ImNvbG9yIixzPWk7dCBpbnN0YW5jZW9mIFUmJihpPSJiYWNrZ3JvdW5kLWNvbG9yIixzPSJiYWNrZ3JvdW5kIixyIGluc3RhbmNlb2YgUHQmJihhLmJhY2tncm91bmRDb2xvcj0id2hpdGUiKSksKHQgaW5zdGFuY2VvZiBsdHx8dCBpbnN0YW5jZW9mIFApJiYoaT1zPSJmaWxsIixhLmZpbGw9IndoaXRlIik7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJleHRyYXMiPT09ZXx8ImNvbG9yIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKCEodCBpbnN0YW5jZW9mIG8uWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCByPXRbbi4kdG9TdHlsZV0odGhpcy5jb2xvcik7cmV0dXJuIHImJihhW3Iuc3RhcnRzV2l0aCgiIyIpP2k6c109ciksYX1pZihudWxsIT09KGU9dGhpcy5jb2xvcikmJnZvaWQgMCE9PWUmJmUudmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltuLiR0b1N0eWxlXSgpO2FbZS5zdGFydHNXaXRoKCIjIik/aTpzXT1lfXJldHVybiBhfX1jbGFzcyBGZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImZpbHRlciIsITApLHRoaXMuYWRkUmV2b2NhdGlvbkluZm89KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYWRkUmV2b2NhdGlvbkluZm8sWyIiLCJyZXF1aXJlZCIsIm9wdGlvbmFsIiwibm9uZSJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnZlcnNpb249KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzLnZlcnNpb24sZGVmYXVsdFZhbHVlOjUsdmFsaWRhdGU6ZT0+ZT49MSYmZTw9NX0pLHRoaXMuYXBwZWFyYW5jZUZpbHRlcj1udWxsLHRoaXMuY2VydGlmaWNhdGVzPW51bGwsdGhpcy5kaWdlc3RNZXRob2RzPW51bGwsdGhpcy5lbmNvZGluZ3M9bnVsbCx0aGlzLmVuY3J5cHRpb25NZXRob2RzPW51bGwsdGhpcy5oYW5kbGVyPW51bGwsdGhpcy5sb2NrRG9jdW1lbnQ9bnVsbCx0aGlzLm1kcD1udWxsLHRoaXMucmVhc29ucz1udWxsLHRoaXMudGltZVN0YW1wPW51bGx9fWNsYXNzIEllIGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImZsb2F0IiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W24uJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW24uJGNvbnRlbnRdLnRyaW0oKSk7dGhpc1tuLiRjb250ZW50XT1pc05hTihlKT9udWxsOmV9W24uJHRvSFRNTF0oZSl7cmV0dXJuIE8obnVsbCE9PXRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJmb250IiwhMCksdGhpcy5iYXNlbGluZVNoaWZ0PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUuYmFzZWxpbmVTaGlmdCksdGhpcy5mb250SG9yaXpvbnRhbFNjYWxlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuZm9udEhvcml6b250YWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KSx0aGlzLmZvbnRWZXJ0aWNhbFNjYWxlPSgwLGMuZ2V0RmxvYXQpKHtkYXRhOmUuZm9udFZlcnRpY2FsU2NhbGUsZGVmYXVsdFZhbHVlOjEwMCx2YWxpZGF0ZTplPT5lPj0wfSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmtlcm5pbmdNb2RlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmtlcm5pbmdNb2RlLFsibm9uZSIsInBhaXIiXSksdGhpcy5sZXR0ZXJTcGFjaW5nPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubGV0dGVyU3BhY2luZywiMCIpLHRoaXMubGluZVRocm91Z2g9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxpbmVUaHJvdWdoLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pLHRoaXMubGluZVRocm91Z2hQZXJpb2Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubGluZVRocm91Z2hQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pLHRoaXMub3ZlcmxpbmU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pLHRoaXMub3ZlcmxpbmVQZXJpb2Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUub3ZlcmxpbmVQZXJpb2QsWyJhbGwiLCJ3b3JkIl0pLHRoaXMucG9zdHVyZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wb3N0dXJlLFsibm9ybWFsIiwiaXRhbGljIl0pLHRoaXMuc2l6ZT0oMCxjLmdldE1lYXN1cmVtZW50KShlLnNpemUsIjEwcHQiKSx0aGlzLnR5cGVmYWNlPWUudHlwZWZhY2V8fCJDb3VyaWVyIix0aGlzLnVuZGVybGluZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUudW5kZXJsaW5lLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfHwyPT09ZX0pLHRoaXMudW5kZXJsaW5lUGVyaW9kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnVuZGVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMud2VpZ2h0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLndlaWdodCxbIm5vcm1hbCIsImJvbGQiXSksdGhpcy5leHRyYXM9bnVsbCx0aGlzLmZpbGw9bnVsbH1bbi4kY2xlYW5dKGUpe3N1cGVyW24uJGNsZWFuXShlKSx0aGlzW24uJGdsb2JhbERhdGFdLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtuLiR0b1N0eWxlXSgpe2NvbnN0IGU9KDAscy50b1N0eWxlKSh0aGlzLCJmaWxsIiksdD1lLmNvbG9yO3JldHVybiB0JiYoIiMwMDAwMDAiPT09dD9kZWxldGUgZS5jb2xvcjp0LnN0YXJ0c1dpdGgoIiMiKXx8KGUuYmFja2dyb3VuZD10LGUuYmFja2dyb3VuZENsaXA9InRleHQiLGUuY29sb3I9InRyYW5zcGFyZW50IikpLHRoaXMuYmFzZWxpbmVTaGlmdCYmKGUudmVydGljYWxBbGlnbj0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5iYXNlbGluZVNoaWZ0KSksZS5mb250S2VybmluZz0ibm9uZSI9PT10aGlzLmtlcm5pbmdNb2RlPyJub25lIjoibm9ybWFsIixlLmxldHRlclNwYWNpbmc9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGV0dGVyU3BhY2luZyksMCE9PXRoaXMubGluZVRocm91Z2gmJihlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giLDI9PT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKSksMCE9PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uPSJvdmVybGluZSIsMj09PXRoaXMub3ZlcmxpbmUmJihlLnRleHREZWNvcmF0aW9uU3R5bGU9ImRvdWJsZSIpKSxlLmZvbnRTdHlsZT10aGlzLnBvc3R1cmUsZS5mb250U2l6ZT0oMCxzLm1lYXN1cmVUb1N0cmluZykoLjk5KnRoaXMuc2l6ZSksKDAscy5zZXRGb250RmFtaWx5KSh0aGlzLHRoaXMsdGhpc1tuLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLGUpLDAhPT10aGlzLnVuZGVybGluZSYmKGUudGV4dERlY29yYXRpb249InVuZGVybGluZSIsMj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKSksZS5mb250V2VpZ2h0PXRoaXMud2VpZ2h0LGV9fWNsYXNzIE1lIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiZm9ybWF0IiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbCx0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgRWUgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJoYW5kbGVyIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBQZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImh5cGhlbmF0aW9uIiksdGhpcy5leGNsdWRlQWxsQ2Fwcz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pLHRoaXMuaHlwaGVuYXRlPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucHVzaENoYXJhY3RlckNvdW50PSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pLHRoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFJlIGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiaW1hZ2UiKSx0aGlzLmFzcGVjdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hc3BlY3QsWyJmaXQiLCJhY3R1YWwiLCJoZWlnaHQiLCJub25lIiwid2lkdGgiXSksdGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIix0aGlzLmhyZWY9ZS5ocmVmfHwiIix0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudHJhbnNmZXJFbmNvZGluZz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50cmFuc2ZlckVuY29kaW5nLFsiYmFzZTY0Iiwibm9uZSIsInBhY2thZ2UiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuLiR0b0hUTUxdKCl7aWYodGhpcy5jb250ZW50VHlwZSYmIW0uaGFzKHRoaXMuY29udGVudFR5cGUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW24uJGdsb2JhbERhdGFdLmltYWdlcyYmdGhpc1tuLiRnbG9iYWxEYXRhXS5pbWFnZXMuZ2V0KHRoaXMuaHJlZik7aWYoIWUmJih0aGlzLmhyZWZ8fCF0aGlzW24uJGNvbnRlbnRdKSlyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZO2lmKGV8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT0oMCxsLnN0cmluZ1RvQnl0ZXMpKGF0b2IodGhpc1tuLiRjb250ZW50XSkpKSwhZSlyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxyXW9mIGIpaWYoZS5sZW5ndGg+dC5sZW5ndGgmJnQuZXZlcnkoKCh0LHIpPT50PT09ZVtyXSkpKXt0aGlzLmNvbnRlbnRUeXBlPXI7YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIGMuSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IHI7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjpyPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6cj17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6cj17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IGE9dGhpc1tuLiRnZXRQYXJlbnRdKCk7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTpyLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDphP0MoYVtuLiRnZXRQYXJlbnRdKCkpOm51bGx9fSl9fWNsYXNzIE5lIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiaW1hZ2VFZGl0IiwhMCksdGhpcy5kYXRhPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5ib3JkZXI9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMubWFyZ2luPW51bGx9W24uJHRvSFRNTF0oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9jLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6Yy5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBEZSBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJpbnRlZ2VyIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W24uJGZpbmFsaXplXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tuLiRjb250ZW50XS50cmltKCksMTApO3RoaXNbbi4kY29udGVudF09aXNOYU4oZSk/bnVsbDplfVtuLiR0b0hUTUxdKGUpe3JldHVybiBPKG51bGwhPT10aGlzW24uJGNvbnRlbnRdP3RoaXNbbi4kY29udGVudF0udG9TdHJpbmcoKToiIil9fWNsYXNzIEJlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwiaXNzdWVycyIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNlcnRpZmljYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBMZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIml0ZW1zIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnByZXNlbmNlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pLHRoaXMucmVmPWUucmVmfHwiIix0aGlzLnNhdmU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuaW1hZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pbnRlZ2VyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGV4dD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnRpbWU9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W24uJHRvSFRNTF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbbi4kZ2V0Q2hpbGRyZW5dKCkpZS5wdXNoKHRbbi4kdGV4dF0oKSk7cmV0dXJuIGMuSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX10Lkl0ZW1zPUxlO2NsYXNzIF9lIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwia2VlcCIsITApLHRoaXMuaWQ9ZS5pZHx8IiI7Y29uc3QgdD1bIm5vbmUiLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl07dGhpcy5pbnRhY3Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaW50YWN0LHQpLHRoaXMubmV4dD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5uZXh0LHQpLHRoaXMucHJldmlvdXM9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucHJldmlvdXMsdCksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuZXh0cmFzPW51bGx9fWNsYXNzIGplIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuY3JsU2lnbix0KSx0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZGF0YUVuY2lwaGVybWVudCx0KSx0aGlzLmRlY2lwaGVyT25seT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5kZWNpcGhlck9ubHksdCksdGhpcy5kaWdpdGFsU2lnbmF0dXJlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmRpZ2l0YWxTaWduYXR1cmUsdCksdGhpcy5lbmNpcGhlck9ubHk9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuZW5jaXBoZXJPbmx5LHQpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5rZXlBZ3JlZW1lbnQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUua2V5QWdyZWVtZW50LHQpLHRoaXMua2V5Q2VydFNpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUua2V5Q2VydFNpZ24sdCksdGhpcy5rZXlFbmNpcGhlcm1lbnQ9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUua2V5RW5jaXBoZXJtZW50LHQpLHRoaXMubm9uUmVwdWRpYXRpb249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubm9uUmVwdWRpYXRpb24sdCksdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgVWUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJsaW5lIiwhMCksdGhpcy5oYW5kPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5zbG9wZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zbG9wZSxbIlxcIiwiLyJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5lZGdlPW51bGx9W24uJHRvSFRNTF0oKXtjb25zdCBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldFBhcmVudF0oKSx0PXRoaXMuZWRnZXx8bmV3IHVlKHt9KSxyPXRbbi4kdG9TdHlsZV0oKSxhPU9iamVjdC5jcmVhdGUobnVsbCksaT0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7YS5zdHJva2VXaWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykoaSksYS5zdHJva2U9ci5jb2xvcjtsZXQgbyxsLGgsdSxkPSIxMDAlIixmPSIxMDAlIjtlLnc8PWk/KFtvLGwsaCx1XT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdLGQ9YS5zdHJva2VXaWR0aCk6ZS5oPD1pPyhbbyxsLGgsdV09WzAsIjUwJSIsIjEwMCUiLCI1MCUiXSxmPWEuc3Ryb2tlV2lkdGgpOiJcXCI9PT10aGlzLnNsb3BlP1tvLGwsaCx1XT1bMCwwLCIxMDAlIiwiMTAwJSJdOltvLGwsaCx1XT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IHA9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpnLHgxOm8seTE6bCx4MjpoLHkyOnUsc3R5bGU6YX19XSxhdHRyaWJ1dGVzOnt4bWxuczpnLHdpZHRoOmQsaGVpZ2h0OmYsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtyZXR1cm4gdyhlKT9jLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltwXX0pOihwLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixjLkhUTUxSZXN1bHQuc3VjY2VzcyhwKSl9fWNsYXNzICRlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibGluZWFyIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNvbG9yPW51bGwsdGhpcy5leHRyYXM9bnVsbH1bbi4kdG9TdHlsZV0oZSl7cmV0dXJuIGU9ZT9lW24uJHRvU3R5bGVdKCk6IiNGRkZGRkYiLCJsaW5lYXItZ3JhZGllbnQoIi5jb25jYXQodGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKSwiLCAiKS5jb25jYXQoZSwiLCAiKS5jb25jYXQodGhpcy5jb2xvcj90aGlzLmNvbG9yW24uJHRvU3R5bGVdKCk6IiMwMDAwMDAiLCIpIil9fWNsYXNzIFhlIGV4dGVuZHMgby5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsImxvY2tEb2N1bWVudCIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT0oMCxjLmdldFN0cmluZ09wdGlvbikodGhpc1tuLiRjb250ZW50XSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgSGUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJtYW5pZmVzdCIsITApLHRoaXMuYWN0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5yZWY9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIHFlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibWFyZ2luIiwhMCksdGhpcy5ib3R0b21JbnNldD0oMCxjLmdldE1lYXN1cmVtZW50KShlLmJvdHRvbUluc2V0LCIwIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxlZnRJbnNldD0oMCxjLmdldE1lYXN1cmVtZW50KShlLmxlZnRJbnNldCwiMCIpLHRoaXMucmlnaHRJbnNldD0oMCxjLmdldE1lYXN1cmVtZW50KShlLnJpZ2h0SW5zZXQsIjAiKSx0aGlzLnRvcEluc2V0PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudG9wSW5zZXQsIjAiKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbH1bbi4kdG9TdHlsZV0oKXtyZXR1cm57bWFyZ2luOigwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRvcEluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMucmlnaHRJbnNldCkrIiAiKygwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLmJvdHRvbUluc2V0KSsiICIrKDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGVmdEluc2V0KX19fWNsYXNzIHplIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibWRwIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnBlcm1pc3Npb25zPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5wZXJtaXNzaW9ucyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4xPT09ZXx8Mz09PWV9KSx0aGlzLnNpZ25hdHVyZVR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc2lnbmF0dXJlVHlwZSxbImZpbGxlciIsImF1dGhvciJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEdlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibWVkaXVtIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmltYWdpbmdCQm94PSgwLGMuZ2V0QkJveCkoZS5pbWFnaW5nQkJveCksdGhpcy5sb25nPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubG9uZyksdGhpcy5vcmllbnRhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vcmllbnRhdGlvbixbInBvcnRyYWl0IiwibGFuZHNjYXBlIl0pLHRoaXMuc2hvcnQ9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5zaG9ydCksdGhpcy5zdG9jaz1lLnN0b2NrfHwiIix0aGlzLnRyYXlJbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50cmF5SW4sWyJhdXRvIiwiZGVsZWdhdGUiLCJwYWdlRnJvbnQiXSksdGhpcy50cmF5T3V0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnRyYXlPdXQsWyJhdXRvIiwiZGVsZWdhdGUiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm1lc3NhZ2UiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnRleHQ9bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFZlIGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwibnVtZXJpY0VkaXQiLCEwKSx0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmJvcmRlcj1udWxsLHRoaXMuY29tYj1udWxsLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5tYXJnaW49bnVsbH1bbi4kdG9IVE1MXShlKXt2YXIgdDtjb25zdCByPSgwLHMudG9TdHlsZSkodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpLGE9dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kZ2V0UGFyZW50XSgpLGk9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbbi4kdWlkXSxkYXRhSWQ6KG51bGw9PT0odD1hW24uJGRhdGFdKXx8dm9pZCAwPT09dD92b2lkIDA6dFtuLiR1aWRdKXx8YVtuLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6ciwiYXJpYS1sYWJlbCI6QyhhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtyZXR1cm4gUyhhKSYmKGkuYXR0cmlidXRlc1siYXJpYS1yZXF1aXJlZCJdPSEwLGkuYXR0cmlidXRlcy5yZXF1aXJlZD0hMCksYy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBLZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm9jY3VyIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmluaXRpYWw9IiIhPT1lLmluaXRpYWw/KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWwsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PiEwfSk6IiIsdGhpcy5tYXg9IiIhPT1lLm1heD8oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWF4LGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiIsdGhpcy5taW49IiIhPT1lLm1pbj8oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuZXh0cmFzPW51bGx9W24uJGNsZWFuXSgpe2NvbnN0IGU9dGhpc1tuLiRnZXRQYXJlbnRdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFFlfHxlIGluc3RhbmNlb2YgZXQ/MDoxKSwiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBRZXx8ZSBpbnN0YW5jZW9mIGV0Py0xOjE6dGhpcy5taW4pLC0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pLCIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBrdD8xOnRoaXMubWluKX19Y2xhc3MgWWUgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJvaWQiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSmUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJvaWRzIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMub2lkPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBaZSBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsIm92ZXJmbG93IiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiIsdGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiLHRoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bbi4kZ2V0RXh0cmFdKCl7aWYoIXRoaXNbbi4kZXh0cmFdKXtjb25zdCBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpLHQ9dGhpc1tuLiRnZXRUZW1wbGF0ZVJvb3RdKCkscj10W24uJHNlYXJjaE5vZGVdKHRoaXMudGFyZ2V0LGUpLGE9dFtuLiRzZWFyY2hOb2RlXSh0aGlzLmxlYWRlcixlKSxpPXRbbi4kc2VhcmNoTm9kZV0odGhpcy50cmFpbGVyLGUpO3RoaXNbbi4kZXh0cmFdPXt0YXJnZXQ6KG51bGw9PXI/dm9pZCAwOnJbMF0pfHxudWxsLGxlYWRlcjoobnVsbD09YT92b2lkIDA6YVswXSl8fG51bGwsdHJhaWxlcjoobnVsbD09aT92b2lkIDA6aVswXSl8fG51bGwsYWRkTGVhZGVyOiExLGFkZFRyYWlsZXI6ITF9fXJldHVybiB0aGlzW24uJGV4dHJhXX19Y2xhc3MgUWUgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwYWdlQXJlYSIsITApLHRoaXMuYmxhbmtPck5vdEJsYW5rPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmluaXRpYWxOdW1iZXI9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KSx0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLm51bWJlcmVkPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pLHRoaXMub2RkT3JFdmVuPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSksdGhpcy5wYWdlUG9zaXRpb249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSksdGhpcy5yZWxldmFudD0oMCxjLmdldFJlbGV2YW50KShlLnJlbGV2YW50KSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5kZXNjPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLm1lZGl1bT1udWxsLHRoaXMub2NjdXI9bnVsbCx0aGlzLmFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5jb250ZW50QXJlYT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRyYXc9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5leGNsR3JvdXA9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5maWVsZD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmZvcm09bmV3IG8uWEZBT2JqZWN0QXJyYXl9W24uJGlzVXNhYmxlXSgpe3JldHVybiB0aGlzW24uJGV4dHJhXT8hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tuLiRleHRyYV0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXg6KHRoaXNbbi4kZXh0cmFdPXtudW1iZXJPZlVzZTowfSwhMCl9W24uJGNsZWFuUGFnZV0oKXtkZWxldGUgdGhpc1tuLiRleHRyYV19W24uJGdldE5leHRQYWdlXSgpe3RoaXNbbi4kZXh0cmFdfHwodGhpc1tuLiRleHRyYV09e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpO3JldHVybiJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW24uJGlzVXNhYmxlXSgpPyh0aGlzW24uJGV4dHJhXS5udW1iZXJPZlVzZSs9MSx0aGlzKTplW24uJGdldE5leHRQYWdlXSgpfVtuLiRnZXRBdmFpbGFibGVTcGFjZV0oKXtyZXR1cm4gdGhpc1tuLiRleHRyYV0uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bbi4kdG9IVE1MXSgpe3RoaXNbbi4kZXh0cmFdfHwodGhpc1tuLiRleHRyYV09e251bWJlck9mVXNlOjF9KTtjb25zdCBlPVtdO3RoaXNbbi4kZXh0cmFdLmNoaWxkcmVuPWU7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHRoaXMubWVkaXVtJiZ0aGlzLm1lZGl1bS5zaG9ydCYmdGhpcy5tZWRpdW0ubG9uZyl7aWYodC53aWR0aD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tZWRpdW0uc2hvcnQpLHQuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLm1lZGl1bS5sb25nKSx0aGlzW24uJGV4dHJhXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0uc2hvcnQsaGVpZ2h0OnRoaXMubWVkaXVtLmxvbmd9LCJsYW5kc2NhcGUiPT09dGhpcy5tZWRpdW0ub3JpZW50YXRpb24pe2NvbnN0IGU9dC53aWR0aDt0LndpZHRoPXQuaGVpZ2h0LHQuaGVpZ2h0PWUsdGhpc1tuLiRleHRyYV0uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLmxvbmcsaGVpZ2h0OnRoaXMubWVkaXVtLnNob3J0fX19ZWxzZSgwLGwud2FybikoIlhGQSAtIE5vIG1lZGl1bSBzcGVjaWZpZWQgaW4gcGFnZUFyZWE6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiB0aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwic3ViZm9ybSJdKSxpbmNsdWRlOiEwfSksdGhpc1tuLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpuZXcgU2V0KFsiY29udGVudEFyZWEiXSksaW5jbHVkZTohMH0pLGMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1tuLiR1aWRdLHN0eWxlOnQseGZhTmFtZTp0aGlzLm5hbWV9fSl9fWNsYXNzIGV0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicGFnZVNldCIsITApLHRoaXMuZHVwbGV4SW1wb3NpdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnJlbGF0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pLHRoaXMucmVsZXZhbnQ9KDAsYy5nZXRSZWxldmFudCkoZS5yZWxldmFudCksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5vY2N1cj1udWxsLHRoaXMucGFnZUFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5wYWdlU2V0PW5ldyBvLlhGQU9iamVjdEFycmF5fVtuLiRjbGVhblBhZ2VdKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlQXJlYS5jaGlsZHJlbillW24uJGNsZWFuUGFnZV0oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtuLiRjbGVhblBhZ2VdKCl9W24uJGlzVXNhYmxlXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW24uJGV4dHJhXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bbi4kZ2V0TmV4dFBhZ2VdKCl7aWYodGhpc1tuLiRleHRyYV18fCh0aGlzW24uJGV4dHJhXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSksIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbbi4kZXh0cmFdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiB0aGlzW24uJGV4dHJhXS5wYWdlSW5kZXgrPTEsdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW24uJGV4dHJhXS5wYWdlSW5kZXhdW24uJGdldE5leHRQYWdlXSgpO2lmKHRoaXNbbi4kZXh0cmFdLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpcmV0dXJuIHRoaXNbbi4kZXh0cmFdLnBhZ2VTZXRJbmRleCs9MSx0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1tuLiRleHRyYV0ucGFnZVNldEluZGV4XVtuLiRnZXROZXh0UGFnZV0oKTtpZih0aGlzW24uJGlzVXNhYmxlXSgpKXJldHVybiB0aGlzW24uJGV4dHJhXS5udW1iZXJPZlVzZSs9MSx0aGlzW24uJGV4dHJhXS5wYWdlSW5kZXg9LTEsdGhpc1tuLiRleHRyYV0ucGFnZVNldEluZGV4PS0xLHRoaXNbbi4kZ2V0TmV4dFBhZ2VdKCk7Y29uc3QgZT10aGlzW24uJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIGV0P2Vbbi4kZ2V0TmV4dFBhZ2VdKCk6KHRoaXNbbi4kY2xlYW5QYWdlXSgpLHRoaXNbbi4kZ2V0TmV4dFBhZ2VdKCkpfWNvbnN0IGU9dGhpc1tuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLHI9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IGE9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT5lLm9kZE9yRXZlbj09PXQmJmUucGFnZVBvc2l0aW9uPT09cikpO3JldHVybiBhfHwoYT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09cikpLGF8fChhPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmImFueSI9PT1lLnBhZ2VQb3NpdGlvbikpLGF8fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF0pKX19Y2xhc3MgdHQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwYXJhIiwhMCksdGhpcy5oQWxpZ249KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5saW5lSGVpZ2h0LCIwcHQiKToiIix0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luTGVmdCwiMHB0Iik6IiIsdGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiLHRoaXMub3JwaGFucz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSksdGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIix0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiIsdGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT8oMCxjLmdldE1lYXN1cmVtZW50KShlLnNwYWNlQWJvdmUsIjBwdCIpOiIiLHRoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5zcGFjZUJlbG93LCIwcHQiKToiIix0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0PygwLGMuZ2V0TWVhc3VyZW1lbnQpKHRoaXMudGFiRGVmYXVsdCk6IiIsdGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKCgoZSx0KT0+dCUyPT0xPygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUpOmUpKSx0aGlzLnRleHRJbmRlbnQ9ZS50ZXh0SW5kZW50PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudGV4dEluZGVudCwiMHB0Iik6IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMudkFsaWduPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnZBbGlnbixbInRvcCIsImJvdHRvbSIsIm1pZGRsZSJdKSx0aGlzLndpZG93cz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUud2lkb3dzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KSx0aGlzLmh5cGhlbmF0aW9uPW51bGx9W24uJHRvU3R5bGVdKCl7Y29uc3QgZT0oMCxzLnRvU3R5bGUpKHRoaXMsImhBbGlnbiIpO3JldHVybiIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5MZWZ0KSksIiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5tYXJnaW5SaWdodCkpLCIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnNwYWNlQWJvdmUpKSwiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT0oMCxzLm1lYXN1cmVUb1N0cmluZykodGhpcy5zcGFjZUJlbG93KSksIiIhPT10aGlzLnRleHRJbmRlbnQmJihlLnRleHRJbmRlbnQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMudGV4dEluZGVudCksKDAscy5maXhUZXh0SW5kZW50KShlKSksdGhpcy5saW5lSGVpZ2h0PjAmJihlLmxpbmVIZWlnaHQ9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHRoaXMubGluZUhlaWdodCkpLCIiIT09dGhpcy50YWJEZWZhdWx0JiYoZS50YWJTaXplPSgwLHMubWVhc3VyZVRvU3RyaW5nKSh0aGlzLnRhYkRlZmF1bHQpKSx0aGlzLnRhYlN0b3BzLmxlbmd0aCx0aGlzLmh5cGhlbmF0YXRpb24mJk9iamVjdC5hc3NpZ24oZSx0aGlzLmh5cGhlbmF0YXRpb25bbi4kdG9TdHlsZV0oKSksZX19Y2xhc3MgcnQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJwYXNzd29yZEVkaXQiLCEwKSx0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuYm9yZGVyPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBudCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInBhdHRlcm4iLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsiY3Jvc3NIYXRjaCIsImNyb3NzRGlhZ29uYWwiLCJkaWFnb25hbExlZnQiLCJkaWFnb25hbFJpZ2h0IiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNvbG9yPW51bGwsdGhpcy5leHRyYXM9bnVsbH1bbi4kdG9TdHlsZV0oZSl7ZT1lP2Vbbi4kdG9TdHlsZV0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbbi4kdG9TdHlsZV0oKToiIzAwMDAwMCIscj0icmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCIsYT0iIi5jb25jYXQoZSwiLCIpLmNvbmNhdChlLCIgNXB4LCIpLmNvbmNhdCh0LCIgNXB4LCIpLmNvbmNhdCh0LCIgMTBweCIpO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UiY3Jvc3NIYXRjaCI6cmV0dXJuIiIuY29uY2F0KHIsIih0byB0b3AsIikuY29uY2F0KGEsIikgIikuY29uY2F0KHIsIih0byByaWdodCwiKS5jb25jYXQoYSwiKSIpO2Nhc2UiY3Jvc3NEaWFnb25hbCI6cmV0dXJuIiIuY29uY2F0KHIsIig0NWRlZywiKS5jb25jYXQoYSwiKSAiKS5jb25jYXQociwiKC00NWRlZywiKS5jb25jYXQoYSwiKSIpO2Nhc2UiZGlhZ29uYWxMZWZ0IjpyZXR1cm4iIi5jb25jYXQociwiKDQ1ZGVnLCIpLmNvbmNhdChhLCIpIik7Y2FzZSJkaWFnb25hbFJpZ2h0IjpyZXR1cm4iIi5jb25jYXQociwiKC00NWRlZywiKS5jb25jYXQoYSwiKSIpO2Nhc2UiaG9yaXpvbnRhbCI6cmV0dXJuIiIuY29uY2F0KHIsIih0byB0b3AsIikuY29uY2F0KGEsIikiKTtjYXNlInZlcnRpY2FsIjpyZXR1cm4iIi5jb25jYXQociwiKHRvIHJpZ2h0LCIpLmNvbmNhdChhLCIpIil9cmV0dXJuIiJ9fWNsYXNzIGF0IGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwicGljdHVyZSIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBpdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInByb3RvIiwhMCksdGhpcy5hcHBlYXJhbmNlRmlsdGVyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYXJjPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYXJlYT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmFzc2lzdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJhcmNvZGU9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5iaW5kSXRlbXM9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5ib29rZW5kPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYm9vbGVhbj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJvcmRlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJyZWFrPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYnJlYWtBZnRlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJyZWFrQmVmb3JlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYnV0dG9uPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY2FsY3VsYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY2FwdGlvbj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmNlcnRpZmljYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY2VydGlmaWNhdGVzPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY2hlY2tCdXR0b249bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5jaG9pY2VMaXN0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY29sb3I9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5jb21iPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY29ubmVjdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmNvbnRlbnRBcmVhPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY29ybmVyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZVRpbWVFZGl0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRlZmF1bHRVaT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRlc2M9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5kaWdlc3RNZXRob2Q9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5kaWdlc3RNZXRob2RzPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZHJhdz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmVkZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5lbmNvZGluZz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmVuY29kaW5ncz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmVuY3J5cHQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5lbmNyeXB0RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmVuY3J5cHRpb249bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5lbmNyeXB0aW9uTWV0aG9kPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5ldmVudD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4T2JqZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXhjbEdyb3VwPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXhlY3V0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4dHJhcz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZpZWxkPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZmlsbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZpbHRlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZm9udD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZvcm1hdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmhhbmRsZXI9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5oeXBoZW5hdGlvbj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmltYWdlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuaW1hZ2VFZGl0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuaW50ZWdlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmlzc3VlcnM9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pdGVtcz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmtlZXA9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5rZXlVc2FnZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmxpbmU9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5saW5lYXI9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5sb2NrRG9jdW1lbnQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5tYW5pZmVzdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm1hcmdpbj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm1kcD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm1lZGl1bT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm1lc3NhZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5udW1lcmljRWRpdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm9jY3VyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMub2lkPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMub2lkcz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLm92ZXJmbG93PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMucGFnZUFyZWE9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5wYWdlU2V0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMucGFyYT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnBhc3N3b3JkRWRpdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnBhdHRlcm49bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5waWN0dXJlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMucmFkaWFsPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMucmVhc29uPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMucmVhc29ucz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnJlY3RhbmdsZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnJlZj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnNjcmlwdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc2lnbkRhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zaWduYXR1cmU9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zaWduaW5nPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc29saWQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zcGVhaz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN0aXBwbGU9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zdWJmb3JtPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc3ViZm9ybVNldD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmplY3RETj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmplY3RETnM9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zdWJtaXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy50ZXh0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGV4dEVkaXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy50aW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGltZVN0YW1wPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudG9vbFRpcD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnRyYXZlcnNhbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnRyYXZlcnNlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudWk9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy52YWxpZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnZhbHVlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudmFyaWFibGVzPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBzdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInJhZGlhbCIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5jb2xvcj1udWxsLHRoaXMuZXh0cmFzPW51bGx9W24uJHRvU3R5bGVdKGUpe2U9ZT9lW24uJHRvU3R5bGVdKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW24uJHRvU3R5bGVdKCk6IiMwMDAwMDAiO3JldHVybiJyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgIi5jb25jYXQoInRvRWRnZSI9PT10aGlzLnR5cGU/IiIuY29uY2F0KGUsIiwiKS5jb25jYXQodCk6IiIuY29uY2F0KHQsIiwiKS5jb25jYXQoZSksIikiKX19Y2xhc3Mgb3QgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJyZWFzb24iKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY3QgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJyZWFzb25zIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMucmVhc29uPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBsdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInJlY3RhbmdsZSIsITApLHRoaXMuaGFuZD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNvcm5lcj1uZXcgby5YRkFPYmplY3RBcnJheSg0KSx0aGlzLmVkZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXkoNCksdGhpcy5maWxsPW51bGx9W24uJHRvSFRNTF0oKXt2YXIgZTtjb25zdCB0PXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyB1ZSh7fSkscj10W24uJHRvU3R5bGVdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PShudWxsPT09KGU9dGhpcy5maWxsKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5wcmVzZW5jZSk/T2JqZWN0LmFzc2lnbihhLHRoaXMuZmlsbFtuLiR0b1N0eWxlXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IixhLnN0cm9rZVdpZHRoPSgwLHMubWVhc3VyZVRvU3RyaW5nKSgidmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjApLGEuc3Ryb2tlPXIuY29sb3I7Y29uc3QgaT0odGhpcy5jb3JuZXIuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY29ybmVyLmNoaWxkcmVuWzBdOm5ldyB0ZSh7fSkpW24uJHRvU3R5bGVdKCksbz17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOmcsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDppLnJhZGl1cyxyeTppLnJhZGl1cyxzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOmcsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtyZXR1cm4gdyh0aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCkpP2MuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W29dfSk6KG8uYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGMuSFRNTFJlc3VsdC5zdWNjZXNzKG8pKX19Y2xhc3MgaHQgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJyZWYiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgdXQgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzY3JpcHQiKSx0aGlzLmJpbmRpbmc9ZS5iaW5kaW5nfHwiIix0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy5ydW5BdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBkdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInNldFByb3BlcnR5IiksdGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiIsdGhpcy5yZWY9ZS5yZWZ8fCIiLHRoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19dC5TZXRQcm9wZXJ0eT1kdDtjbGFzcyBmdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInNpZ25EYXRhIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm9wZXJhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSksdGhpcy5yZWY9ZS5yZWZ8fCIiLHRoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5maWx0ZXI9bnVsbCx0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIGd0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic2lnbmF0dXJlIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5ib3JkZXI9bnVsbCx0aGlzLmV4dHJhcz1udWxsLHRoaXMuZmlsdGVyPW51bGwsdGhpcy5tYW5pZmVzdD1udWxsLHRoaXMubWFyZ2luPW51bGx9fWNsYXNzIHB0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic2lnbmluZyIsITApLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy50eXBlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmNlcnRpZmljYXRlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBtdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInNvbGlkIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbH1bbi4kdG9TdHlsZV0oZSl7cmV0dXJuIGU/ZVtuLiR0b1N0eWxlXSgpOiIjRkZGRkZGIn19Y2xhc3MgYnQgZXh0ZW5kcyBvLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzcGVhayIpLHRoaXMuZGlzYWJsZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5wcmlvcml0eT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKSx0aGlzLnJpZD1lLnJpZHx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyB5dCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN0aXBwbGUiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucmF0ZT0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMuY29sb3I9bnVsbCx0aGlzLmV4dHJhcz1udWxsfVtuLiR0b1N0eWxlXShlKXtjb25zdCB0PXRoaXMucmF0ZS8xMDA7cmV0dXJuIGwuVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyB3dCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN1YmZvcm0iLCEwKSx0aGlzLmFjY2Vzcz0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKSx0aGlzLmFsbG93TWFjcm89KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmFuY2hvclR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKSx0aGlzLmNvbFNwYW49KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSksdGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOigwLGMuZ2V0TWVhc3VyZW1lbnQpKGUpKSksdGhpcy5oPWUuaD8oMCxjLmdldE1lYXN1cmVtZW50KShlLmgpOiIiLHRoaXMuaEFsaWduPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLmxheW91dD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pLHRoaXMubG9jYWxlPWUubG9jYWxlfHwiIix0aGlzLm1heEg9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhILCIwcHQiKSx0aGlzLm1heFc9KDAsYy5nZXRNZWFzdXJlbWVudCkoZS5tYXhXLCIwcHQiKSx0aGlzLm1lcmdlTW9kZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSksdGhpcy5taW5IPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWluSCwiMHB0IiksdGhpcy5taW5XPSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUubWluVywiMHB0IiksdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy5wcmVzZW5jZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKSx0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLHRoaXMucmVzdG9yZVN0YXRlPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSksdGhpcy5zY29wZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5zY29wZSxbIm5hbWUiLCJub25lIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnc9ZS53PygwLGMuZ2V0TWVhc3VyZW1lbnQpKGUudyk6IiIsdGhpcy54PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueCwiMHB0IiksdGhpcy55PSgwLGMuZ2V0TWVhc3VyZW1lbnQpKGUueSwiMHB0IiksdGhpcy5hc3Npc3Q9bnVsbCx0aGlzLmJpbmQ9bnVsbCx0aGlzLmJvb2tlbmQ9bnVsbCx0aGlzLmJvcmRlcj1udWxsLHRoaXMuYnJlYWs9bnVsbCx0aGlzLmNhbGN1bGF0ZT1udWxsLHRoaXMuZGVzYz1udWxsLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5rZWVwPW51bGwsdGhpcy5tYXJnaW49bnVsbCx0aGlzLm9jY3VyPW51bGwsdGhpcy5vdmVyZmxvdz1udWxsLHRoaXMucGFnZVNldD1udWxsLHRoaXMucGFyYT1udWxsLHRoaXMudHJhdmVyc2FsPW51bGwsdGhpcy52YWxpZGF0ZT1udWxsLHRoaXMudmFyaWFibGVzPW51bGwsdGhpcy5hcmVhPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuYnJlYWtBZnRlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJyZWFrQmVmb3JlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuY29ubmVjdD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRyYXc9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5ldmVudD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4T2JqZWN0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZXhjbEdyb3VwPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZmllbGQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5wcm90bz1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnNldFByb3BlcnR5PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc3ViZm9ybT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmZvcm1TZXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXl9W24uJGdldFN1YmZvcm1QYXJlbnRdKCl7Y29uc3QgZT10aGlzW24uJGdldFBhcmVudF0oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIHZ0P2Vbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTplfVtuLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW24uJGV4dHJhXS5hdHRlbXB0JiZ0aGlzW24uJGV4dHJhXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tuLiRnZXRQYXJlbnRdKClbbi4kaXNUaGVyZU1vcmVXaWR0aF0oKX0qW24uJGdldENvbnRhaW5lZENoaWxkcmVuXSgpe3lpZWxkKngodGhpcyl9W24uJGZsdXNoSFRNTF0oKXtyZXR1cm4oMCxpLmZsdXNoSFRNTCkodGhpcyl9W24uJGFkZEhUTUxdKGUsdCl7KDAsaS5hZGRIVE1MKSh0aGlzLGUsdCl9W24uJGdldEF2YWlsYWJsZVNwYWNlXSgpe3JldHVybigwLGkuZ2V0QXZhaWxhYmxlU3BhY2UpKHRoaXMpfVtuLiRpc1NwbGl0dGFibGVdKCl7dmFyIGU7Y29uc3QgdD10aGlzW24uJGdldFN1YmZvcm1QYXJlbnRdKCk7cmV0dXJuISF0W24uJGlzU3BsaXR0YWJsZV0oKSYmKHZvaWQgMCE9PXRoaXNbbi4kZXh0cmFdLl9pc1NwbGl0dGFibGU/dGhpc1tuLiRleHRyYV0uX2lzU3BsaXR0YWJsZToicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKXx8dGhpcy5rZWVwJiYibm9uZSIhPT10aGlzLmtlZXAuaW50YWN0Pyh0aGlzW24uJGV4dHJhXS5faXNTcGxpdHRhYmxlPSExLCExKTohKG51bGwhPT0oZT10LmxheW91dCkmJnZvaWQgMCE9PWUmJmUuZW5kc1dpdGgoIi10YiIpJiYwIT09dFtuLiRleHRyYV0ubnVtYmVySW5MaW5lfHwodGhpc1tuLiRleHRyYV0uX2lzU3BsaXR0YWJsZT0hMCwwKSkpfVtuLiR0b0hUTUxdKGUpe3ZhciB0O2lmKEEodGhpcyksdGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBYKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVtuLiRnbG9iYWxEYXRhXT10aGlzW24uJGdsb2JhbERhdGFdLHRoaXNbbi4kYXBwZW5kQ2hpbGRdKGUpLHRoaXMuYnJlYWtBZnRlci5wdXNoKGUpfWlmKCJhdXRvIiE9PXRoaXMuYnJlYWsuYmVmb3JlfHwiIiE9PXRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0KXtjb25zdCBlPW5ldyBIKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW24uJGdsb2JhbERhdGFdPXRoaXNbbi4kZ2xvYmFsRGF0YV0sdGhpc1tuLiRhcHBlbmRDaGlsZF0oZSksdGhpcy5icmVha0JlZm9yZS5wdXNoKGUpfWlmKCIiIT09dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCl7Y29uc3QgZT1uZXcgWmUoe3RhcmdldDp0aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0LGxlYWRlcjp0aGlzLmJyZWFrLm92ZXJmbG93TGVhZGVyLHRyYWlsZXI6dGhpcy5icmVhay5vdmVyZmxvd1RyYWlsZXJ9KTtlW24uJGdsb2JhbERhdGFdPXRoaXNbbi4kZ2xvYmFsRGF0YV0sdGhpc1tuLiRhcHBlbmRDaGlsZF0oZSksdGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbbi4kcmVtb3ZlQ2hpbGRdKHRoaXMuYnJlYWspLHRoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7aWYoKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPjF8fHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+MSkmJigwLGwud2FybikoIlhGQSAtIFNldmVyYWwgYnJlYWtCZWZvcmUgb3IgYnJlYWtBZnRlciBpbiBzdWJmb3JtczogcGxlYXNlIGZpbGUgYSBidWcuIiksdGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0JlZm9yZS5jaGlsZHJlblswXTtpZihUKGUpKXJldHVybiBjLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKG51bGwhPT0odD10aGlzW24uJGV4dHJhXSkmJnZvaWQgMCE9PXQmJnQuYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBjLkhUTUxSZXN1bHQuRU1QVFk7KDAscy5maXhEaW1lbnNpb25zKSh0aGlzKTtjb25zdCByPVtdLGE9e2lkOnRoaXNbbi4kdWlkXSxjbGFzczpbXX07KDAscy5zZXRBY2Nlc3MpKHRoaXMsYS5jbGFzcyksdGhpc1tuLiRleHRyYV18fCh0aGlzW24uJGV4dHJhXT1PYmplY3QuY3JlYXRlKG51bGwpKSxPYmplY3QuYXNzaWduKHRoaXNbbi4kZXh0cmFdLHtjaGlsZHJlbjpyLGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmEsYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IG89dGhpc1tuLiRnZXRUZW1wbGF0ZVJvb3RdKCksaD1vW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmUsdT10aGlzW24uJGlzU3BsaXR0YWJsZV0oKTtpZih1fHxGKHRoaXMpLCEoMCxpLmNoZWNrRGltZW5zaW9ucykodGhpcyxlKSlyZXR1cm4gYy5IVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3QgZD1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW24uJGdldFN1YmZvcm1QYXJlbnRdKCkuY29sdW1uV2lkdGhzO0FycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjAmJih0aGlzW24uJGV4dHJhXS5jb2x1bW5XaWR0aHM9ZSx0aGlzW24uJGV4dHJhXS5jdXJyZW50Q29sdW1uPTApfWNvbnN0IGY9KDAscy50b1N0eWxlKSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLHA9KDAscy5sYXlvdXRDbGFzcykodGhpcyk7aWYocCYmZy5wdXNoKHApLGEuc3R5bGU9ZixhLmNsYXNzPWcsdGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSksdGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W24uJGdldEV4dHJhXSgpO3QuYWRkTGVhZGVyJiYodC5hZGRMZWFkZXI9ITEsTSh0aGlzLHQubGVhZGVyLGUpKX10aGlzW24uJHB1c2hQYXJhXSgpO2NvbnN0IG09ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsYj1tPzI6MTtmb3IoO3RoaXNbbi4kZXh0cmFdLmF0dGVtcHQ8Yjt0aGlzW24uJGV4dHJhXS5hdHRlbXB0Kyspe20mJjE9PT10aGlzW24uJGV4dHJhXS5hdHRlbXB0JiYodGhpc1tuLiRleHRyYV0ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tuLiRjaGlsZHJlblRvSFRNTF0oe2ZpbHRlcjpkLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpcmV0dXJuIHRoaXNbbi4kcG9wUGFyYV0oKSxlO2lmKG0mJjA9PT10aGlzW24uJGV4dHJhXS5hdHRlbXB0JiYwPT09dGhpc1tuLiRleHRyYV0ubnVtYmVySW5MaW5lJiYhb1tuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW24uJGV4dHJhXS5hdHRlbXB0PWI7YnJlYWt9fWlmKHRoaXNbbi4kcG9wUGFyYV0oKSx1fHxJKHRoaXMpLG9bbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZT1oLHRoaXNbbi4kZXh0cmFdLmF0dGVtcHQ9PT1iKXJldHVybiB0aGlzLm92ZXJmbG93JiYodGhpc1tuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KSx1fHxkZWxldGUgdGhpc1tuLiRleHRyYV0sYy5IVE1MUmVzdWx0LkZBSUxVUkU7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W24uJGdldEV4dHJhXSgpO3QuYWRkVHJhaWxlciYmKHQuYWRkVHJhaWxlcj0hMSxNKHRoaXMsdC50cmFpbGVyLGUpKX1sZXQgeT0wLHc9MDt0aGlzLm1hcmdpbiYmKHk9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQsdz10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldCk7Y29uc3Qgdj1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS53aWR0aCt5LHRoaXMud3x8MCkseD1NYXRoLm1heCh0aGlzW24uJGV4dHJhXS5oZWlnaHQrdyx0aGlzLmh8fDApLFM9W3RoaXMueCx0aGlzLnksdix4XTtpZigiIj09PXRoaXMudyYmKGYud2lkdGg9KDAscy5tZWFzdXJlVG9TdHJpbmcpKHYpKSwiIj09PXRoaXMuaCYmKGYuaGVpZ2h0PSgwLHMubWVhc3VyZVRvU3RyaW5nKSh4KSksKCIwcHgiPT09Zi53aWR0aHx8IjBweCI9PT1mLmhlaWdodCkmJjA9PT1yLmxlbmd0aClyZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZO2NvbnN0IEM9e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnJ9O2sodGhpcyxhKTtjb25zdCBPPWMuSFRNTFJlc3VsdC5zdWNjZXNzKCgwLHMuY3JlYXRlV3JhcHBlcikodGhpcyxDKSxTKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihUKGUpKXJldHVybiB0aGlzW24uJGV4dHJhXS5hZnRlckJyZWFrQWZ0ZXI9TyxjLkhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfXJldHVybiBkZWxldGUgdGhpc1tuLiRleHRyYV0sT319Y2xhc3MgdnQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzdWJmb3JtU2V0IiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnJlbGF0aW9uPSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLnJlbGF0aW9uLFsib3JkZXJlZCIsImNob2ljZSIsInVub3JkZXJlZCJdKSx0aGlzLnJlbGV2YW50PSgwLGMuZ2V0UmVsZXZhbnQpKGUucmVsZXZhbnQpLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmJvb2tlbmQ9bnVsbCx0aGlzLmJyZWFrPW51bGwsdGhpcy5kZXNjPW51bGwsdGhpcy5leHRyYXM9bnVsbCx0aGlzLm9jY3VyPW51bGwsdGhpcy5vdmVyZmxvdz1udWxsLHRoaXMuYnJlYWtBZnRlcj1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmJyZWFrQmVmb3JlPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuc3ViZm9ybT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLnN1YmZvcm1TZXQ9bmV3IG8uWEZBT2JqZWN0QXJyYXl9KltuLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXt5aWVsZCp4KHRoaXMpfVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpe2xldCBlPXRoaXNbbi4kZ2V0UGFyZW50XSgpO2Zvcig7IShlIGluc3RhbmNlb2Ygd3QpOyllPWVbbi4kZ2V0UGFyZW50XSgpO3JldHVybiBlfVtuLiRpc0JpbmRhYmxlXSgpe3JldHVybiEwfX1jbGFzcyB4dCBleHRlbmRzIG8uQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJzdWJqZWN0RE4iKSx0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuLiRmaW5hbGl6ZV0oKXt0aGlzW24uJGNvbnRlbnRdPW5ldyBNYXAodGhpc1tuLiRjb250ZW50XS5zcGxpdCh0aGlzLmRlbGltaXRlcikubWFwKChlPT4oKGU9ZS5zcGxpdCgiPSIsMikpWzBdPWVbMF0udHJpbSgpLGUpKSkpfX1jbGFzcyBTdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInN1YmplY3RETnMiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMudHlwZT0oMCxjLmdldFN0cmluZ09wdGlvbikoZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5zdWJqZWN0RE49bmV3IG8uWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEF0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwic3VibWl0IiwhMCksdGhpcy5lbWJlZFBERj0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUuZW1iZWRQREYsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmZvcm1hdD0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJ4ZHAiLCJmb3JtZGF0YSIsInBkZiIsInVybGVuY29kZWQiLCJ4ZmQiLCJ4bWwiXSksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnRhcmdldD1lLnRhcmdldHx8IiIsdGhpcy50ZXh0RW5jb2Rpbmc9KDAsYy5nZXRLZXl3b3JkKSh7ZGF0YTplLnRleHRFbmNvZGluZz9lLnRleHRFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiLHRoaXMueGRwQ29udGVudD1lLnhkcENvbnRlbnR8fCIiLHRoaXMuZW5jcnlwdD1udWxsLHRoaXMuZW5jcnlwdERhdGE9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zaWduRGF0YT1uZXcgby5YRkFPYmplY3RBcnJheX19Y2xhc3Mga3QgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJ0ZW1wbGF0ZSIsITApLHRoaXMuYmFzZVByb2ZpbGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuYmFzZVByb2ZpbGUsWyJmdWxsIiwiaW50ZXJhY3RpdmVGb3JtcyJdKSx0aGlzLmV4dHJhcz1udWxsLHRoaXMuc3ViZm9ybT1uZXcgby5YRkFPYmplY3RBcnJheX1bbi4kZmluYWxpemVdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJigwLGwud2FybikoIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIiksdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmKDAsbC53YXJuKSgiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKSx0aGlzW24uJHRhYkluZGV4XT01ZTN9W24uJGlzU3BsaXR0YWJsZV0oKXtyZXR1cm4hMH1bbi4kc2VhcmNoTm9kZV0oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbbi4kaWRzXS5nZXQoZS5zbGljZSgxKSldOigwLGQuc2VhcmNoTm9kZSkodGhpcyx0LGUsITAsITApfSpbbi4kdG9QYWdlc10oKXt2YXIgZSx0O2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXX0pO3RoaXNbbi4kZXh0cmFdPXtvdmVyZmxvd05vZGU6bnVsbCxmaXJzdFVuc3BsaXR0YWJsZTpudWxsLGN1cnJlbnRDb250ZW50QXJlYTpudWxsLGN1cnJlbnRQYWdlQXJlYTpudWxsLG5vTGF5b3V0RmFpbHVyZTohMSxwYWdlTnVtYmVyOjEscGFnZVBvc2l0aW9uOiJmaXJzdCIsb2RkT3JFdmVuOiJvZGQiLGJsYW5rT3JOb3RCbGFuazoibm9uQmxhbmsiLHBhcmFTdGFjazpbXX07Y29uc3Qgcj10aGlzLnN1YmZvcm0uY2hpbGRyZW5bMF07ci5wYWdlU2V0W24uJGNsZWFuUGFnZV0oKTtjb25zdCBhPXIucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixpPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgcz1udWxsLG89bnVsbCxoPW51bGw7aWYoci5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTE/KG89ci5icmVha0JlZm9yZS5jaGlsZHJlblswXSxoPW8udGFyZ2V0KTpyLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZyLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xPyhvPXIuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlblswXSxoPW8udGFyZ2V0KTpudWxsIT09KGU9ci5icmVhaykmJnZvaWQgMCE9PWUmJmUuYmVmb3JlVGFyZ2V0PyhvPXIuYnJlYWssaD1vLmJlZm9yZVRhcmdldCk6ci5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmbnVsbCE9PSh0PXIuc3ViZm9ybS5jaGlsZHJlblswXS5icmVhaykmJnZvaWQgMCE9PXQmJnQuYmVmb3JlVGFyZ2V0JiYobz1yLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWssaD1vLmJlZm9yZVRhcmdldCksbyl7Y29uc3QgZT10aGlzW24uJHNlYXJjaE5vZGVdKGgsb1tuLiRnZXRQYXJlbnRdKCkpO2UgaW5zdGFuY2VvZiBRZSYmKHM9ZSxvW24uJGV4dHJhXT17fSl9c3x8KHM9YVswXSksc1tuLiRleHRyYV09e251bWJlck9mVXNlOjF9O2NvbnN0IHU9c1tuLiRnZXRQYXJlbnRdKCk7dVtuLiRleHRyYV09e251bWJlck9mVXNlOjEscGFnZUluZGV4OnUucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihzKSxwYWdlU2V0SW5kZXg6MH07bGV0IGQsZj1udWxsLGc9bnVsbCxwPSEwLG09MCxiPTA7Zm9yKDs7KXtpZihwKW09MDtlbHNlIGlmKGkuY2hpbGRyZW4ucG9wKCksMz09KyttKXJldHVybigwLGwud2FybikoIlhGQSAtIFNvbWV0aGluZyBnb2VzIHdyb25nOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKSxpO2Q9bnVsbCx0aGlzW24uJGV4dHJhXS5jdXJyZW50UGFnZUFyZWE9cztjb25zdCBlPXNbbi4kdG9IVE1MXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKGUpLGYmJih0aGlzW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITAsZS5jaGlsZHJlbi5wdXNoKGZbbi4kdG9IVE1MXShzW24uJGV4dHJhXS5zcGFjZSkuaHRtbCksZj1udWxsKSxnJiYodGhpc1tuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPSEwLGUuY2hpbGRyZW4ucHVzaChnW24uJHRvSFRNTF0oc1tuLiRleHRyYV0uc3BhY2UpLmh0bWwpLGc9bnVsbCk7Y29uc3QgdD1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLGE9ZS5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO3A9ITEsdGhpc1tuLiRleHRyYV0uZmlyc3RVbnNwbGl0dGFibGU9bnVsbCx0aGlzW24uJGV4dHJhXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3Qgbz1lPT57Y29uc3QgdD1yW24uJGZsdXNoSFRNTF0oKTt2YXIgaTt0JiYocHx8KHA9KG51bGw9PT0oaT10LmNoaWxkcmVuKXx8dm9pZCAwPT09aT92b2lkIDA6aS5sZW5ndGgpPjApLGFbZV0uY2hpbGRyZW4ucHVzaCh0KSl9O2ZvcihsZXQgZT1iLHM9dC5sZW5ndGg7ZTxzO2UrKyl7Y29uc3Qgcz10aGlzW24uJGV4dHJhXS5jdXJyZW50Q29udGVudEFyZWE9dFtlXSxjPXt3aWR0aDpzLncsaGVpZ2h0OnMuaH07Yj0wLGYmJihhW2VdLmNoaWxkcmVuLnB1c2goZltuLiR0b0hUTUxdKGMpLmh0bWwpLGY9bnVsbCksZyYmKGFbZV0uY2hpbGRyZW4ucHVzaChnW24uJHRvSFRNTF0oYykuaHRtbCksZz1udWxsKTtjb25zdCBsPXJbbi4kdG9IVE1MXShjKTt2YXIgeTtpZihsLnN1Y2Nlc3MpcmV0dXJuIGwuaHRtbD8ocHx8KHA9KG51bGw9PT0oeT1sLmh0bWwuY2hpbGRyZW4pfHx2b2lkIDA9PT15P3ZvaWQgMDp5Lmxlbmd0aCk+MCksYVtlXS5jaGlsZHJlbi5wdXNoKGwuaHRtbCkpOiFwJiZpLmNoaWxkcmVuLmxlbmd0aD4xJiZpLmNoaWxkcmVuLnBvcCgpLGk7aWYobC5pc0JyZWFrKCkpe2NvbnN0IHQ9bC5icmVha05vZGU7aWYobyhlKSwiYXV0byI9PT10LnRhcmdldFR5cGUpY29udGludWU7dC5sZWFkZXImJihmPXRoaXNbbi4kc2VhcmNoTm9kZV0odC5sZWFkZXIsdFtuLiRnZXRQYXJlbnRdKCkpLGY9Zj9mWzBdOm51bGwpLHQudHJhaWxlciYmKGc9dGhpc1tuLiRzZWFyY2hOb2RlXSh0LnRyYWlsZXIsdFtuLiRnZXRQYXJlbnRdKCkpLGc9Zz9nWzBdOm51bGwpLCJwYWdlQXJlYSI9PT10LnRhcmdldFR5cGU/KGQ9dFtuLiRleHRyYV0udGFyZ2V0LGU9MS8wKTp0W24uJGV4dHJhXS50YXJnZXQ/KGQ9dFtuLiRleHRyYV0udGFyZ2V0LGI9dFtuLiRleHRyYV0uaW5kZXgrMSxlPTEvMCk6ZT10W24uJGV4dHJhXS5pbmRleH1lbHNlIGlmKHRoaXNbbi4kZXh0cmFdLm92ZXJmbG93Tm9kZSl7Y29uc3Qgcj10aGlzW24uJGV4dHJhXS5vdmVyZmxvd05vZGU7dGhpc1tuLiRleHRyYV0ub3ZlcmZsb3dOb2RlPW51bGw7Y29uc3QgYT1yW24uJGdldEV4dHJhXSgpLGk9YS50YXJnZXQ7YS5hZGRMZWFkZXI9bnVsbCE9PWEubGVhZGVyLGEuYWRkVHJhaWxlcj1udWxsIT09YS50cmFpbGVyLG8oZSk7Y29uc3Qgcz1lO2lmKGU9MS8wLGkgaW5zdGFuY2VvZiBRZSlkPWk7ZWxzZSBpZihpIGluc3RhbmNlb2YgZWUpe2NvbnN0IHI9dC5pbmRleE9mKGkpOy0xIT09cj9yPnM/ZT1yLTE6Yj1yOihkPWlbbi4kZ2V0UGFyZW50XSgpLGI9ZC5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKGkpKX19ZWxzZSBvKGUpfXRoaXNbbi4kZXh0cmFdLnBhZ2VOdW1iZXIrPTEsZCYmKGRbbi4kaXNVc2FibGVdKCk/ZFtuLiRleHRyYV0ubnVtYmVyT2ZVc2UrPTE6ZD1udWxsKSxzPWR8fHNbbi4kZ2V0TmV4dFBhZ2VdKCkseWllbGQgbnVsbH19fXQuVGVtcGxhdGU9a3Q7Y2xhc3MgQ3QgZXh0ZW5kcyBvLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGV4dCIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5tYXhDaGFycz0oMCxjLmdldEludGVnZXIpKHtkYXRhOmUubWF4Q2hhcnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMucmlkPWUucmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W24uJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuITB9W24uJG9uQ2hpbGRdKGUpe3JldHVybiBlW24uJG5hbWVzcGFjZUlkXT09PWEuTmFtZXNwYWNlSWRzLnhodG1sLmlkPyh0aGlzW24uJGNvbnRlbnRdPWUsITApOigoMCxsLndhcm4pKCJYRkEgLSBJbnZhbGlkIGNvbnRlbnQgaW4gVGV4dDogIi5jb25jYXQoZVtuLiRub2RlTmFtZV0sIi4iKSksITEpfVtuLiRvblRleHRdKGUpe3RoaXNbbi4kY29udGVudF1pbnN0YW5jZW9mIG8uWEZBT2JqZWN0fHxzdXBlcltuLiRvblRleHRdKGUpfVtuLiRmaW5hbGl6ZV0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbbi4kY29udGVudF0mJih0aGlzW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0ucmVwbGFjZUFsbCgiXHJcbiIsIlxuIikpfVtuLiRnZXRFeHRyYV0oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pih0JiZlLnB1c2godCksZSkpLFtdKS5qb2luKCJcbiIpOnRoaXNbbi4kY29udGVudF1bbi4kdGV4dF0oKX1bbi4kdG9IVE1MXShlKXtpZigic3RyaW5nIj09dHlwZW9mIHRoaXNbbi4kY29udGVudF0pe2NvbnN0IGU9Tyh0aGlzW24uJGNvbnRlbnRdKS5odG1sO3JldHVybiB0aGlzW24uJGNvbnRlbnRdLmluY2x1ZGVzKCJcdTIwMjkiKT8oZS5uYW1lPSJkaXYiLGUuY2hpbGRyZW49W10sdGhpc1tuLiRjb250ZW50XS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+KGUucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pLGUpKSxbXSkpKS5mb3JFYWNoKCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KSkpOi9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbbi4kY29udGVudF0pJiYoZS5uYW1lPSJkaXYiLGUuY2hpbGRyZW49W10sdGhpc1tuLiRjb250ZW50XS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKSksYy5IVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbbi4kY29udGVudF1bbi4kdG9IVE1MXShlKX19dC5UZXh0PUN0O2NsYXNzIE90IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGV4dEVkaXQiLCEwKSx0aGlzLmFsbG93UmljaFRleHQ9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmFsbG93UmljaFRleHQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KSx0aGlzLmhTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubXVsdGlMaW5lPSgwLGMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5tdWx0aUxpbmUsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PjA9PT1lfHwxPT09ZX0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLnZTY3JvbGxQb2xpY3k9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudlNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKSx0aGlzLmJvcmRlcj1udWxsLHRoaXMuY29tYj1udWxsLHRoaXMuZXh0cmFzPW51bGwsdGhpcy5tYXJnaW49bnVsbH1bbi4kdG9IVE1MXShlKXt2YXIgdCxyO2NvbnN0IGE9KDAscy50b1N0eWxlKSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIik7bGV0IGk7Y29uc3Qgbz10aGlzW24uJGdldFBhcmVudF0oKVtuLiRnZXRQYXJlbnRdKCk7cmV0dXJuIiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPW8gaW5zdGFuY2VvZiBoZT8xOjApLGk9MT09PXRoaXMubXVsdGlMaW5lP3tuYW1lOiJ0ZXh0YXJlYSIsYXR0cmlidXRlczp7ZGF0YUlkOihudWxsPT09KHQ9b1tuLiRkYXRhXSl8fHZvaWQgMD09PXQ/dm9pZCAwOnRbbi4kdWlkXSl8fG9bbi4kdWlkXSxmaWVsZElkOm9bbi4kdWlkXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOmEsImFyaWEtbGFiZWwiOkMobyksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6KG51bGw9PT0ocj1vW24uJGRhdGFdKXx8dm9pZCAwPT09cj92b2lkIDA6cltuLiR1aWRdKXx8b1tuLiR1aWRdLGZpZWxkSWQ6b1tuLiR1aWRdLGNsYXNzOlsieGZhVGV4dGZpZWxkIl0sc3R5bGU6YSwiYXJpYS1sYWJlbCI6QyhvKSwiYXJpYS1yZXF1aXJlZCI6ITF9fSxTKG8pJiYoaS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITAsaS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwKSxjLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2ldfSl9fWNsYXNzIEZ0IGV4dGVuZHMgby5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidGltZSIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtuLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbbi4kY29udGVudF0udHJpbSgpO3RoaXNbbi4kY29udGVudF09ZT9uZXcgRGF0ZShlKTpudWxsfVtuLiR0b0hUTUxdKGUpe3JldHVybiBPKHRoaXNbbi4kY29udGVudF0/dGhpc1tuLiRjb250ZW50XS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXQgZXh0ZW5kcyBvLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmLCJ0aW1lU3RhbXAiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMuc2VydmVyPWUuc2VydmVyfHwiIix0aGlzLnR5cGU9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSksdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUdCBleHRlbmRzIG8uU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInRvb2xUaXAiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMucmlkPWUucmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE10IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidHJhdmVyc2FsIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbCx0aGlzLnRyYXZlcnNlPW5ldyBvLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInRyYXZlcnNlIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm9wZXJhdGlvbj0oMCxjLmdldFN0cmluZ09wdGlvbikoZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pLHRoaXMucmVmPWUucmVmfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbCx0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtuLiRpc1RyYW5zcGFyZW50XSgpe3JldHVybiExfX1jbGFzcyBQdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInVpIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5leHRyYXM9bnVsbCx0aGlzLnBpY3R1cmU9bnVsbCx0aGlzLmJhcmNvZGU9bnVsbCx0aGlzLmJ1dHRvbj1udWxsLHRoaXMuY2hlY2tCdXR0b249bnVsbCx0aGlzLmNob2ljZUxpc3Q9bnVsbCx0aGlzLmRhdGVUaW1lRWRpdD1udWxsLHRoaXMuZGVmYXVsdFVpPW51bGwsdGhpcy5pbWFnZUVkaXQ9bnVsbCx0aGlzLm51bWVyaWNFZGl0PW51bGwsdGhpcy5wYXNzd29yZEVkaXQ9bnVsbCx0aGlzLnNpZ25hdHVyZT1udWxsLHRoaXMudGV4dEVkaXQ9bnVsbH1bbi4kZ2V0RXh0cmFdKCl7aWYodm9pZCAwPT09dGhpc1tuLiRleHRyYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBvLlhGQU9iamVjdClyZXR1cm4gdGhpc1tuLiRleHRyYV09dCx0fXRoaXNbbi4kZXh0cmFdPW51bGx9cmV0dXJuIHRoaXNbbi4kZXh0cmFdfVtuLiR0b0hUTUxdKGUpe2NvbnN0IHQ9dGhpc1tuLiRnZXRFeHRyYV0oKTtyZXR1cm4gdD90W24uJHRvSFRNTF0oZSk6Yy5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBSdCBleHRlbmRzIG8uWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGYsInZhbGlkYXRlIiwhMCksdGhpcy5mb3JtYXRUZXN0PSgwLGMuZ2V0U3RyaW5nT3B0aW9uKShlLmZvcm1hdFRlc3QsWyJ3YXJuaW5nIiwiZGlzYWJsZWQiLCJlcnJvciJdKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubnVsbFRlc3Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUubnVsbFRlc3QsWyJkaXNhYmxlZCIsImVycm9yIiwid2FybmluZyJdKSx0aGlzLnNjcmlwdFRlc3Q9KDAsYy5nZXRTdHJpbmdPcHRpb24pKGUuc2NyaXB0VGVzdCxbImVycm9yIiwiZGlzYWJsZWQiLCJ3YXJuaW5nIl0pLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIix0aGlzLmV4dHJhcz1udWxsLHRoaXMubWVzc2FnZT1udWxsLHRoaXMucGljdHVyZT1udWxsLHRoaXMuc2NyaXB0PW51bGx9fWNsYXNzIE50IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidmFsdWUiLCEwKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMub3ZlcnJpZGU9KDAsYy5nZXRJbnRlZ2VyKSh7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy5yZWxldmFudD0oMCxjLmdldFJlbGV2YW50KShlLnJlbGV2YW50KSx0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5hcmM9bnVsbCx0aGlzLmJvb2xlYW49bnVsbCx0aGlzLmRhdGU9bnVsbCx0aGlzLmRhdGVUaW1lPW51bGwsdGhpcy5kZWNpbWFsPW51bGwsdGhpcy5leERhdGE9bnVsbCx0aGlzLmZsb2F0PW51bGwsdGhpcy5pbWFnZT1udWxsLHRoaXMuaW50ZWdlcj1udWxsLHRoaXMubGluZT1udWxsLHRoaXMucmVjdGFuZ2xlPW51bGwsdGhpcy50ZXh0PW51bGwsdGhpcy50aW1lPW51bGx9W24uJHNldFZhbHVlXShlKXt2YXIgdDtjb25zdCByPXRoaXNbbi4kZ2V0UGFyZW50XSgpO2lmKHIgaW5zdGFuY2VvZiBDZSYmbnVsbCE9PSh0PXIudWkpJiZ2b2lkIDAhPT10JiZ0LmltYWdlRWRpdClyZXR1cm4gdGhpcy5pbWFnZXx8KHRoaXMuaW1hZ2U9bmV3IFJlKHt9KSx0aGlzW24uJGFwcGVuZENoaWxkXSh0aGlzLmltYWdlKSksdm9pZCh0aGlzLmltYWdlW24uJGNvbnRlbnRdPWVbbi4kY29udGVudF0pO2NvbnN0IGE9ZVtuLiRub2RlTmFtZV07aWYobnVsbD09PXRoaXNbYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07dCBpbnN0YW5jZW9mIG8uWEZBT2JqZWN0JiYodGhpc1tlXT1udWxsLHRoaXNbbi4kcmVtb3ZlQ2hpbGRdKHQpKX10aGlzW2Vbbi4kbm9kZU5hbWVdXT1lLHRoaXNbbi4kYXBwZW5kQ2hpbGRdKGUpfWVsc2UgdGhpc1thXVtuLiRjb250ZW50XT1lW24uJGNvbnRlbnRdfVtuLiR0ZXh0XSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbbi4kY29udGVudF0/dGhpcy5leERhdGFbbi4kY29udGVudF0udHJpbSgpOnRoaXMuZXhEYXRhW24uJGNvbnRlbnRdW24uJHRleHRdKCkudHJpbSgpO2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiaW1hZ2UiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIG8uWEZBT2JqZWN0KXJldHVybih0W24uJGNvbnRlbnRdfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W24uJHRvSFRNTF0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHI9dGhpc1t0XTtpZihyIGluc3RhbmNlb2Ygby5YRkFPYmplY3QpcmV0dXJuIHJbbi4kdG9IVE1MXShlKX1yZXR1cm4gYy5IVE1MUmVzdWx0LkVNUFRZfX10LlZhbHVlPU50O2NsYXNzIER0IGV4dGVuZHMgby5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZiwidmFyaWFibGVzIiwhMCksdGhpcy5pZD1lLmlkfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiIsdGhpcy5ib29sZWFuPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGF0ZT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmRhdGVUaW1lPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuZGVjaW1hbD1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmV4RGF0YT1uZXcgby5YRkFPYmplY3RBcnJheSx0aGlzLmZsb2F0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMuaW1hZ2U9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5pbnRlZ2VyPW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMubWFuaWZlc3Q9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy5zY3JpcHQ9bmV3IG8uWEZBT2JqZWN0QXJyYXksdGhpcy50ZXh0PW5ldyBvLlhGQU9iamVjdEFycmF5LHRoaXMudGltZT1uZXcgby5YRkFPYmplY3RBcnJheX1bbi4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hMH19Y2xhc3MgQnR7c3RhdGljW2EuJGJ1aWxkWEZBT2JqZWN0XShlLHQpe2lmKEJ0Lmhhc093blByb3BlcnR5KGUpKXtjb25zdCByPUJ0W2VdKHQpO3JldHVybiByW24uJHNldFNldEF0dHJpYnV0ZXNdKHQpLHJ9fXN0YXRpYyBhcHBlYXJhbmNlRmlsdGVyKGUpe3JldHVybiBuZXcgRShlKX1zdGF0aWMgYXJjKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IFIoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IE4oZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBEKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQihlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgTChlKX1zdGF0aWMgYm9va2VuZChlKXtyZXR1cm4gbmV3IF8oZSl9c3RhdGljIGJvb2xlYW4oZSl7cmV0dXJuIG5ldyBqKGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBVKGUpfXN0YXRpYyBicmVhayhlKXtyZXR1cm4gbmV3ICQoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBYKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEgoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IHEoZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IHooZSl9c3RhdGljIGNhcHRpb24oZSl7cmV0dXJuIG5ldyBHKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZShlKXtyZXR1cm4gbmV3IFcoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IFYoZSl9c3RhdGljIGNoZWNrQnV0dG9uKGUpe3JldHVybiBuZXcgSyhlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IFkoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgSihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IFooZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBRKGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IGVlKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyB0ZShlKX1zdGF0aWMgZGF0ZShlKXtyZXR1cm4gbmV3IHJlKGUpfXN0YXRpYyBkYXRlVGltZShlKXtyZXR1cm4gbmV3IG5lKGUpfXN0YXRpYyBkYXRlVGltZUVkaXQoZSl7cmV0dXJuIG5ldyBhZShlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IGllKGUpfXN0YXRpYyBkZWZhdWx0VWkoZSl7cmV0dXJuIG5ldyBzZShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IG9lKGUpfXN0YXRpYyBkaWdlc3RNZXRob2QoZSl7cmV0dXJuIG5ldyBjZShlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IGxlKGUpfXN0YXRpYyBkcmF3KGUpe3JldHVybiBuZXcgaGUoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyB1ZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBkZShlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgZmUoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBnZShlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBwZShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IG1lKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kKGUpe3JldHVybiBuZXcgYmUoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgeWUoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgd2UoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IHZlKGUpfXN0YXRpYyBleE9iamVjdChlKXtyZXR1cm4gbmV3IHhlKGUpfXN0YXRpYyBleGNsR3JvdXAoZSl7cmV0dXJuIG5ldyBTZShlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEFlKGUpfXN0YXRpYyBleHRyYXMoZSl7cmV0dXJuIG5ldyBrZShlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBDZShlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IE9lKGUpfXN0YXRpYyBmaWx0ZXIoZSl7cmV0dXJuIG5ldyBGZShlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBJZShlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IFRlKGUpfXN0YXRpYyBmb3JtYXQoZSl7cmV0dXJuIG5ldyBNZShlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEVlKGUpfXN0YXRpYyBoeXBoZW5hdGlvbihlKXtyZXR1cm4gbmV3IFBlKGUpfXN0YXRpYyBpbWFnZShlKXtyZXR1cm4gbmV3IFJlKGUpfXN0YXRpYyBpbWFnZUVkaXQoZSl7cmV0dXJuIG5ldyBOZShlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IERlKGUpfXN0YXRpYyBpc3N1ZXJzKGUpe3JldHVybiBuZXcgQmUoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgTGUoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBfZShlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBqZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IFVlKGUpfXN0YXRpYyBsaW5lYXIoZSl7cmV0dXJuIG5ldyAkZShlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgWGUoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgSGUoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IHFlKGUpfXN0YXRpYyBtZHAoZSl7cmV0dXJuIG5ldyB6ZShlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgR2UoZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBXZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBWZShlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBLZShlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgWWUoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBKZShlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBaZShlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBRZShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IGV0KGUpfXN0YXRpYyBwYXJhKGUpe3JldHVybiBuZXcgdHQoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IHJ0KGUpfXN0YXRpYyBwYXR0ZXJuKGUpe3JldHVybiBuZXcgbnQoZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBhdChlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBpdChlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgc3QoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IG90KGUpfXN0YXRpYyByZWFzb25zKGUpe3JldHVybiBuZXcgY3QoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IGx0KGUpfXN0YXRpYyByZWYoZSl7cmV0dXJuIG5ldyBodChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgdXQoZSl9c3RhdGljIHNldFByb3BlcnR5KGUpe3JldHVybiBuZXcgZHQoZSl9c3RhdGljIHNpZ25EYXRhKGUpe3JldHVybiBuZXcgZnQoZSl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IGd0KGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgcHQoZSl9c3RhdGljIHNvbGlkKGUpe3JldHVybiBuZXcgbXQoZSl9c3RhdGljIHNwZWFrKGUpe3JldHVybiBuZXcgYnQoZSl9c3RhdGljIHN0aXBwbGUoZSl7cmV0dXJuIG5ldyB5dChlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IHd0KGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgdnQoZSl9c3RhdGljIHN1YmplY3RETihlKXtyZXR1cm4gbmV3IHh0KGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3QoZSl9c3RhdGljIHN1Ym1pdChlKXtyZXR1cm4gbmV3IEF0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IGt0KGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgQ3QoZSl9c3RhdGljIHRleHRFZGl0KGUpe3JldHVybiBuZXcgT3QoZSl9c3RhdGljIHRpbWUoZSl7cmV0dXJuIG5ldyBGdChlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgSXQoZSl9c3RhdGljIHRvb2xUaXAoZSl7cmV0dXJuIG5ldyBUdChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgTXQoZSl9c3RhdGljIHRyYXZlcnNlKGUpe3JldHVybiBuZXcgRXQoZSl9c3RhdGljIHVpKGUpe3JldHVybiBuZXcgUHQoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgUnQoZSl9c3RhdGljIHZhbHVlKGUpe3JldHVybiBuZXcgTnQoZSl9c3RhdGljIHZhcmlhYmxlcyhlKXtyZXR1cm4gbmV3IER0KGUpfX10LlRlbXBsYXRlTmFtZXNwYWNlPUJ0fSwoZSx0LHIpPT57dmFyIG49cigzKSxhPXIoNCksaT1yKDI0KSxzPXIoMTEpLG89cig0NSkuZixjPXIoMzkpLGw9cigyMzIpLGg9cig3NSksdT1yKDc2KSxkPXIoMjMzKSxmPXIoODIpLGc9cig2KSxwPXIoMzYpLG09IkRPTUV4Y2VwdGlvbiIsYj1pKCJFcnJvciIpLHk9aShtKSx3PWZ1bmN0aW9uKCl7bCh0aGlzLHYpO3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD11KGU8MT92b2lkIDA6YXJndW1lbnRzWzBdKSxyPXUoZTwyP3ZvaWQgMDphcmd1bWVudHNbMV0sIkVycm9yIiksbj1uZXcgeSh0LHIpLGE9Yih0KTtyZXR1cm4gYS5uYW1lPW0sbyhuLCJzdGFjayIscygxLGYoYS5zdGFjaywxKSkpLGgobix0aGlzLHcpLG59LHY9dy5wcm90b3R5cGU9eS5wcm90b3R5cGUseD0ic3RhY2siaW4gYihtKSxTPSJzdGFjayJpbiBuZXcgeSgxLDIpLEE9eSYmZyYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLG0pLGs9ISghQXx8QS53cml0YWJsZSYmQS5jb25maWd1cmFibGUpLEM9eCYmIWsmJiFTO24oe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6cHx8Q30se0RPTUV4Y2VwdGlvbjpDP3c6eX0pO3ZhciBPPWkobSksRj1PLnByb3RvdHlwZTtpZihGLmNvbnN0cnVjdG9yIT09Tylmb3IodmFyIEkgaW4gcHx8byhGLCJjb25zdHJ1Y3RvciIscygxLE8pKSxkKWlmKGMoZCxJKSl7dmFyIFQ9ZFtJXSxNPVQucztjKE8sTSl8fG8oTyxNLHMoNixULmMpKX19LChlLHQscik9Pnt2YXIgbj1yKDI1KSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihuKHQsZSkpcmV0dXJuIGU7dGhyb3cgYSgiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LGU9PntlLmV4cG9ydHM9e0luZGV4U2l6ZUVycm9yOntzOiJJTkRFWF9TSVpFX0VSUiIsYzoxLG06MX0sRE9NU3RyaW5nU2l6ZUVycm9yOntzOiJET01TVFJJTkdfU0laRV9FUlIiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czoiSElFUkFSQ0hZX1JFUVVFU1RfRVJSIixjOjMsbToxfSxXcm9uZ0RvY3VtZW50RXJyb3I6e3M6IldST05HX0RPQ1VNRU5UX0VSUiIsYzo0LG06MX0sSW52YWxpZENoYXJhY3RlckVycm9yOntzOiJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czoiTk9fREFUQV9BTExPV0VEX0VSUiIsYzo2LG06MH0sTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3I6e3M6Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIsYzo3LG06MX0sTm90Rm91bmRFcnJvcjp7czoiTk9UX0ZPVU5EX0VSUiIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6Ik5PVF9TVVBQT1JURURfRVJSIixjOjksbToxfSxJblVzZUF0dHJpYnV0ZUVycm9yOntzOiJJTlVTRV9BVFRSSUJVVEVfRVJSIixjOjEwLG06MX0sSW52YWxpZFN0YXRlRXJyb3I6e3M6IklOVkFMSURfU1RBVEVfRVJSIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6IlNZTlRBWF9FUlIiLGM6MTIsbToxfSxJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3I6e3M6IklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUiIsYzoxMyxtOjF9LE5hbWVzcGFjZUVycm9yOntzOiJOQU1FU1BBQ0VfRVJSIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOiJJTlZBTElEX0FDQ0VTU19FUlIiLGM6MTUsbToxfSxWYWxpZGF0aW9uRXJyb3I6e3M6IlZBTElEQVRJT05fRVJSIixjOjE2LG06MH0sVHlwZU1pc21hdGNoRXJyb3I6e3M6IlRZUEVfTUlTTUFUQ0hfRVJSIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czoiU0VDVVJJVFlfRVJSIixjOjE4LG06MX0sTmV0d29ya0Vycm9yOntzOiJORVRXT1JLX0VSUiIsYzoxOSxtOjF9LEFib3J0RXJyb3I6e3M6IkFCT1JUX0VSUiIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6IlVSTF9NSVNNQVRDSF9FUlIiLGM6MjEsbToxfSxRdW90YUV4Y2VlZGVkRXJyb3I6e3M6IlFVT1RBX0VYQ0VFREVEX0VSUiIsYzoyMixtOjF9LFRpbWVvdXRFcnJvcjp7czoiVElNRU9VVF9FUlIiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czoiSU5WQUxJRF9OT0RFX1RZUEVfRVJSIixjOjI0LG06MX0sRGF0YUNsb25lRXJyb3I6e3M6IkRBVEFfQ0xPTkVfRVJSIixjOjI1LG06MX19fSwoZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk5hbWVzcGFjZUlkcz10LiRidWlsZFhGQU9iamVjdD12b2lkIDA7Y29uc3Qgcj1TeW1ib2woKTt0LiRidWlsZFhGQU9iamVjdD1yLHQuTmFtZXNwYWNlSWRzPXtjb25maWc6e2lkOjAsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hjaS8iKX0sY29ubmVjdGlvblNldDp7aWQ6MSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWNvbm5lY3Rpb24tc2V0LyIpfSxkYXRhc2V0czp7aWQ6MixjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLWRhdGEvIil9LGZvcm06e2lkOjMsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1mb3JtLyIpfSxsb2NhbGVTZXQ6e2lkOjQsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1sb2NhbGUtc2V0LyIpfSxwZGY6e2lkOjUsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwL3BkZi8iPT09ZX0sc2lnbmF0dXJlOntpZDo2LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj09PWV9LHNvdXJjZVNldDp7aWQ6NyxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXNvdXJjZS1zZXQvIil9LHN0eWxlc2hlZXQ6e2lkOjgsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI9PT1lfSx0ZW1wbGF0ZTp7aWQ6OSxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGZhLXRlbXBsYXRlLyIpfSx4ZGM6e2lkOjEwLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZGMvIil9LHhkcDp7aWQ6MTEsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGRwLyI9PT1lfSx4ZmRmOntpZDoxMixjaGVjazplPT4iaHR0cDovL25zLmFkb2JlLmNvbS94ZmRmLyI9PT1lfSx4aHRtbDp7aWQ6MTMsY2hlY2s6ZT0+Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09ZX0seG1wbWV0YTp7aWQ6MTQsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veG1wbWV0YS8iPT09ZX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuYWRkSFRNTD1mdW5jdGlvbihlLHQscil7Y29uc3Qgcz1lW24uJGV4dHJhXSxvPXMuYXZhaWxhYmxlU3BhY2UsW2MsbCxoLHVdPXI7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpzLndpZHRoPU1hdGgubWF4KHMud2lkdGgsYytoKSxzLmhlaWdodD1NYXRoLm1heChzLmhlaWdodCxsK3UpLHMuY2hpbGRyZW4ucHVzaCh0KTticmVhaztjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpzLmxpbmUmJjEhPT1zLmF0dGVtcHR8fChzLmxpbmU9aShlLFtdKSxzLmNoaWxkcmVuLnB1c2gocy5saW5lKSxzLm51bWJlckluTGluZT0wKSxzLm51bWJlckluTGluZSs9MSxzLmxpbmUuY2hpbGRyZW4ucHVzaCh0KSwwPT09cy5hdHRlbXB0PyhzLmN1cnJlbnRXaWR0aCs9aCxzLmhlaWdodD1NYXRoLm1heChzLmhlaWdodCxzLnByZXZIZWlnaHQrdSkpOihzLmN1cnJlbnRXaWR0aD1oLHMucHJldkhlaWdodD1zLmhlaWdodCxzLmhlaWdodCs9dSxzLmF0dGVtcHQ9MCkscy53aWR0aD1NYXRoLm1heChzLndpZHRoLHMuY3VycmVudFdpZHRoKTticmVhaztjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOntzLmNoaWxkcmVuLnB1c2godCkscy53aWR0aCs9aCxzLmhlaWdodD1NYXRoLm1heChzLmhlaWdodCx1KTtjb25zdCBlPSgwLGEubWVhc3VyZVRvU3RyaW5nKShzLmhlaWdodCk7Zm9yKGNvbnN0IHQgb2Ygcy5jaGlsZHJlbil0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PWU7YnJlYWt9Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cy53aWR0aD1NYXRoLm1pbihvLndpZHRoLE1hdGgubWF4KHMud2lkdGgsaCkpLHMuaGVpZ2h0Kz11LHMuY2hpbGRyZW4ucHVzaCh0KX19LHQuY2hlY2tEaW1lbnNpb25zPWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYobnVsbD09PWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5maXJzdFVuc3BsaXR0YWJsZSlyZXR1cm4hMDtpZigwPT09ZS53fHwwPT09ZS5oKXJldHVybiEwO2NvbnN0IGE9ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpLGk9KG51bGw9PT0ocj1hW24uJGV4dHJhXSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuYXR0ZW1wdCl8fDAsWyxzLG8sY109ZnVuY3Rpb24oZSl7bGV0IHQscixuPSIiPT09ZS53P05hTjplLncsYT0iIj09PWUuaD9OYU46ZS5oLFtpLHNdPVswLDBdO3N3aXRjaChlLmFuY2hvclR5cGV8fCIiKXtjYXNlImJvdHRvbUNlbnRlciI6W2ksc109W24vMixhXTticmVhaztjYXNlImJvdHRvbUxlZnQiOltpLHNdPVswLGFdO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOltpLHNdPVtuLGFdO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjpbaSxzXT1bbi8yLGEvMl07YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0IjpbaSxzXT1bMCxhLzJdO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOltpLHNdPVtuLGEvMl07YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOltpLHNdPVtuLzIsMF07YnJlYWs7Y2FzZSJ0b3BSaWdodCI6W2ksc109W24sMF19c3dpdGNoKGUucm90YXRlfHwwKXtjYXNlIDA6W3Qscl09Wy1pLC1zXTticmVhaztjYXNlIDkwOlt0LHJdPVstcyxpXSxbbixhXT1bYSwtbl07YnJlYWs7Y2FzZSAxODA6W3Qscl09W2ksc10sW24sYV09Wy1uLC1hXTticmVhaztjYXNlIDI3MDpbdCxyXT1bcywtaV0sW24sYV09Wy1hLG5dfXJldHVybltlLngrdCtNYXRoLm1pbigwLG4pLGUueStyK01hdGgubWluKDAsYSksTWF0aC5hYnMobiksTWF0aC5hYnMoYSldfShlKTtzd2l0Y2goYS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09aT9lW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQoby10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChjLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQoby10LndpZHRoKTw9Mnx8MD09PWFbbi4kZXh0cmFdLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChjLXQuaGVpZ2h0KT4yKSYmKCIiPT09ZS53fHxNYXRoLnJvdW5kKG8tdC53aWR0aCk8PTJ8fCFhW24uJGlzVGhlcmVNb3JlV2lkdGhdKCkpJiZ0LmhlaWdodD4yO2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybiEhZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW24uJGlzU3BsaXR0YWJsZV0oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQoby10LndpZHRoKTw9Mnx8IWFbbi4kaXNUaGVyZU1vcmVXaWR0aF0oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChjLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6cmV0dXJuISFlW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlfHwiIj09PWUuaHx8TWF0aC5yb3VuZChjK3MtdC5oZWlnaHQpPD0yfHxjK3M+ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKClbbi4kZXh0cmFdLmN1cnJlbnRDb250ZW50QXJlYS5oO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJuISFlW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ubm9MYXlvdXRGYWlsdXJlfHwiIj09PWUuaHx8TWF0aC5yb3VuZChjLXQuaGVpZ2h0KTw9MjtkZWZhdWx0OnJldHVybiEwfX0sdC5mbHVzaEhUTUw9ZnVuY3Rpb24oZSl7aWYoIWVbbi4kZXh0cmFdKXJldHVybiBudWxsO2NvbnN0IHQ9e25hbWU6ImRpdiIsYXR0cmlidXRlczplW24uJGV4dHJhXS5hdHRyaWJ1dGVzLGNoaWxkcmVuOmVbbi4kZXh0cmFdLmNoaWxkcmVufTtpZihlW24uJGV4dHJhXS5mYWlsaW5nTm9kZSl7Y29uc3Qgcj1lW24uJGV4dHJhXS5mYWlsaW5nTm9kZVtuLiRmbHVzaEhUTUxdKCk7ciYmKGUubGF5b3V0LmVuZHNXaXRoKCItdGIiKT90LmNoaWxkcmVuLnB1c2goaShlLFtyXSkpOnQuY2hpbGRyZW4ucHVzaChyKSl9cmV0dXJuIDA9PT10LmNoaWxkcmVuLmxlbmd0aD9udWxsOnR9LHQuZ2V0QXZhaWxhYmxlU3BhY2U9ZnVuY3Rpb24oZSl7Y29uc3QgdD1lW24uJGV4dHJhXS5hdmFpbGFibGVTcGFjZSxyPWUubWFyZ2luP2UubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0OjAsYT1lLm1hcmdpbj9lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDowO3N3aXRjaChlLmxheW91dCl7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6cmV0dXJuIDA9PT1lW24uJGV4dHJhXS5hdHRlbXB0P3t3aWR0aDp0LndpZHRoLWEtZVtuLiRleHRyYV0uY3VycmVudFdpZHRoLGhlaWdodDp0LmhlaWdodC1yLWVbbi4kZXh0cmFdLnByZXZIZWlnaHR9Ont3aWR0aDp0LndpZHRoLWEsaGVpZ2h0OnQuaGVpZ2h0LXItZVtuLiRleHRyYV0uaGVpZ2h0fTtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybnt3aWR0aDplW24uJGV4dHJhXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtuLiRleHRyYV0uY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSksaGVpZ2h0OnQuaGVpZ2h0LWF9O2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybnt3aWR0aDp0LndpZHRoLWEsaGVpZ2h0OnQuaGVpZ2h0LXItZVtuLiRleHRyYV0uaGVpZ2h0fTtkZWZhdWx0OnJldHVybiB0fX0scigxMzkpO3ZhciBuPXIoMjI4KSxhPXIoMjM2KTtmdW5jdGlvbiBpKGUsdCl7cmV0dXJue25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJsci10YiI9PT1lLmxheW91dD8ieGZhTHIiOiJ4ZmFSbCJdfSxjaGlsZHJlbjp0fX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jb21wdXRlQmJveD1mdW5jdGlvbihlLHQscil7bGV0IGE7aWYoIiIhPT1lLncmJiIiIT09ZS5oKWE9W2UueCxlLnksZS53LGUuaF07ZWxzZXtpZighcilyZXR1cm4gbnVsbDtsZXQgaT1lLnc7aWYoIiI9PT1pKXtpZigwPT09ZS5tYXhXKXtjb25zdCB0PWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lnc/MDplLm1pbld9ZWxzZSBpPU1hdGgubWluKGUubWF4VyxyLndpZHRoKTt0LmF0dHJpYnV0ZXMuc3R5bGUud2lkdGg9bChpKX1sZXQgcz1lLmg7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTtzPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSBzPU1hdGgubWluKGUubWF4SCxyLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1sKHMpfWE9W2UueCxlLnksaSxzXX1yZXR1cm4gYX0sdC5jcmVhdGVXcmFwcGVyPWZ1bmN0aW9uKGUsdCl7Y29uc3R7YXR0cmlidXRlczpyfT10LHtzdHlsZTphfT1yLGk9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFXcmFwcGVyIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W119O2lmKHIuY2xhc3MucHVzaCgieGZhV3JhcHBlZCIpLGUuYm9yZGVyKXtjb25zdHt3aWR0aHM6cixpbnNldHM6c309ZS5ib3JkZXJbbi4kZXh0cmFdO2xldCBvLGMsbD1zWzBdLGg9c1szXTtjb25zdCB1PXNbMF0rc1syXSxmPXNbMV0rc1szXTtzd2l0Y2goZS5ib3JkZXIuaGFuZCl7Y2FzZSJldmVuIjpsLT1yWzBdLzIsaC09clszXS8yLG89ImNhbGMoMTAwJSArICIuY29uY2F0KChyWzFdK3JbM10pLzItZiwicHgpIiksYz0iY2FsYygxMDAlICsgIi5jb25jYXQoKHJbMF0rclsyXSkvMi11LCJweCkiKTticmVhaztjYXNlImxlZnQiOmwtPXJbMF0saC09clszXSxvPSJjYWxjKDEwMCUgKyAiLmNvbmNhdChyWzFdK3JbM10tZiwicHgpIiksYz0iY2FsYygxMDAlICsgIi5jb25jYXQoclswXStyWzJdLXUsInB4KSIpO2JyZWFrO2Nhc2UicmlnaHQiOm89Zj8iY2FsYygxMDAlIC0gIi5jb25jYXQoZiwicHgpIik6IjEwMCUiLGM9dT8iY2FsYygxMDAlIC0gIi5jb25jYXQodSwicHgpIik6IjEwMCUifWNvbnN0IGc9WyJ4ZmFCb3JkZXIiXTtkKGUuYm9yZGVyKSYmZy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBwPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOmcsc3R5bGU6e3RvcDoiIi5jb25jYXQobCwicHgiKSxsZWZ0OiIiLmNvbmNhdChoLCJweCIpLHdpZHRoOm8saGVpZ2h0OmN9fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKXZvaWQgMCE9PWFbZV0mJihwLmF0dHJpYnV0ZXMuc3R5bGVbZV09YVtlXSxkZWxldGUgYVtlXSk7aS5jaGlsZHJlbi5wdXNoKHAsdCl9ZWxzZSBpLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0pdm9pZCAwIT09YVtlXSYmKGkuYXR0cmlidXRlcy5zdHlsZVtlXT1hW2VdLGRlbGV0ZSBhW2VdKTtyZXR1cm4gaS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1hLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIixkZWxldGUgYS5wb3NpdGlvbixhLmFsaWduU2VsZiYmKGkuYXR0cmlidXRlcy5zdHlsZS5hbGlnblNlbGY9YS5hbGlnblNlbGYsZGVsZXRlIGEuYWxpZ25TZWxmKSxpfSx0LmZpeERpbWVuc2lvbnM9ZnVuY3Rpb24oZSl7dmFyIHQ7Y29uc3Qgcj1lW24uJGdldFN1YmZvcm1QYXJlbnRdKCk7aWYobnVsbCE9PSh0PXIubGF5b3V0KSYmdm9pZCAwIT09dCYmdC5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9cltuLiRleHRyYV0sYT1lLmNvbFNwYW47bGV0IGk7aT0tMT09PWE/dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApOnQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rYSkucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSxpc05hTihpKXx8KGUudz1pKX1yLmxheW91dCYmInBvc2l0aW9uIiE9PXIubGF5b3V0JiYoZS54PWUueT0wKSwidGFibGUiPT09ZS5sYXlvdXQmJiIiPT09ZS53JiZBcnJheS5pc0FycmF5KGUuY29sdW1uV2lkdGhzKSYmKGUudz1lLmNvbHVtbldpZHRocy5yZWR1Y2UoKChlLHQpPT5lK3QpLDApKX0sdC5maXhUZXh0SW5kZW50PWZ1bmN0aW9uKGUpe2NvbnN0IHQ9KDAsaS5nZXRNZWFzdXJlbWVudCkoZS50ZXh0SW5kZW50LCIwcHgiKTtpZih0Pj0wKXJldHVybjtjb25zdCByPSJwYWRkaW5nIisoImxlZnQiPT0oInJpZ2h0Ij09PWUudGV4dEFsaWduPyJyaWdodCI6ImxlZnQiKT8iTGVmdCI6IlJpZ2h0Iiksbj0oMCxpLmdldE1lYXN1cmVtZW50KShlW3JdLCIwcHgiKTtlW3JdPW4tdCsicHgifSx0LmZpeFVSTD1mdW5jdGlvbihlKXtjb25zdCB0PSgwLGEuY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCkoZSxudWxsLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7cmV0dXJuIHQ/dC5ocmVmOm51bGx9LHQuaXNQcmludE9ubHk9ZCx0LmxheW91dENsYXNzPWZ1bmN0aW9uKGUpe3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ZGVmYXVsdDpyZXR1cm4ieGZhUG9zaXRpb24iO2Nhc2UibHItdGIiOnJldHVybiJ4ZmFMclRiIjtjYXNlInJsLXJvdyI6cmV0dXJuInhmYVJsUm93IjtjYXNlInJsLXRiIjpyZXR1cm4ieGZhUmxUYiI7Y2FzZSJyb3ciOnJldHVybiJ4ZmFSb3ciO2Nhc2UidGFibGUiOnJldHVybiJ4ZmFUYWJsZSI7Y2FzZSJ0YiI6cmV0dXJuInhmYVRiIn19LHQubGF5b3V0Tm9kZT1mdW5jdGlvbihlLHQpe2xldCByPW51bGwsYT1udWxsLGk9ITE7aWYoKCFlLnd8fCFlLmgpJiZlLnZhbHVlKXtsZXQgcz0wLG89MDtlLm1hcmdpbiYmKHM9ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQsbz1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldCk7bGV0IGM9bnVsbCxsPW51bGw7ZS5wYXJhJiYobD1PYmplY3QuY3JlYXRlKG51bGwpLGM9IiI9PT1lLnBhcmEubGluZUhlaWdodD9udWxsOmUucGFyYS5saW5lSGVpZ2h0LGwudG9wPSIiPT09ZS5wYXJhLnNwYWNlQWJvdmU/MDplLnBhcmEuc3BhY2VBYm92ZSxsLmJvdHRvbT0iIj09PWUucGFyYS5zcGFjZUJlbG93PzA6ZS5wYXJhLnNwYWNlQmVsb3csbC5sZWZ0PSIiPT09ZS5wYXJhLm1hcmdpbkxlZnQ/MDplLnBhcmEubWFyZ2luTGVmdCxsLnJpZ2h0PSIiPT09ZS5wYXJhLm1hcmdpblJpZ2h0PzA6ZS5wYXJhLm1hcmdpblJpZ2h0KTtsZXQgaD1lLmZvbnQ7aWYoIWgpe2NvbnN0IHQ9ZVtuLiRnZXRUZW1wbGF0ZVJvb3RdKCk7bGV0IHI9ZVtuLiRnZXRQYXJlbnRdKCk7Zm9yKDtyJiZyIT09dDspe2lmKHIuZm9udCl7aD1yLmZvbnQ7YnJlYWt9cj1yW24uJGdldFBhcmVudF0oKX19Y29uc3QgZD0oZS53fHx0LndpZHRoKS1zLGY9ZVtuLiRnbG9iYWxEYXRhXS5mb250RmluZGVyO2lmKGUudmFsdWUuZXhEYXRhJiZlLnZhbHVlLmV4RGF0YVtuLiRjb250ZW50XSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD11KGUudmFsdWUuZXhEYXRhW24uJGNvbnRlbnRdLGgsbCxjLGYsZCk7YT10LndpZHRoLHI9dC5oZWlnaHQsaT10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW24uJHRleHRdKCk7aWYodCl7Y29uc3QgZT11KHQsaCxsLGMsZixkKTthPWUud2lkdGgscj1lLmhlaWdodCxpPWUuaXNCcm9rZW59fW51bGw9PT1hfHxlLnd8fChhKz1zKSxudWxsPT09cnx8ZS5ofHwocis9byl9cmV0dXJue3c6YSxoOnIsaXNCcm9rZW46aX19LHQubWVhc3VyZVRvU3RyaW5nPWwsdC5zZXRBY2Nlc3M9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZS5hY2Nlc3Mpe2Nhc2Uibm9uSW50ZXJhY3RpdmUiOnQucHVzaCgieGZhTm9uSW50ZXJhY3RpdmUiKTticmVhaztjYXNlInJlYWRPbmx5Ijp0LnB1c2goInhmYVJlYWRPbmx5Iik7YnJlYWs7Y2FzZSJwcm90ZWN0ZWQiOnQucHVzaCgieGZhRGlzYWJsZWQiKX19LHQuc2V0Rm9udEZhbWlseT1mdW5jdGlvbihlLHQscixuKXtpZighcilyZXR1cm4gdm9pZCBkZWxldGUgbi5mb250RmFtaWx5O2NvbnN0IGE9KDAsaS5zdHJpcFF1b3RlcykoZS50eXBlZmFjZSk7bi5mb250RmFtaWx5PSciJy5jb25jYXQoYSwnIicpO2NvbnN0IG89ci5maW5kKGEpO2lmKG8pe2NvbnN0e2ZvbnRGYW1pbHk6cn09by5yZWd1bGFyLmNzc0ZvbnRJbmZvO3IhPT1hJiYobi5mb250RmFtaWx5PSciJy5jb25jYXQociwnIicpKTtjb25zdCBpPWYodCk7aWYoaSYmIiIhPT1pLmxpbmVIZWlnaHQpcmV0dXJuO2lmKG4ubGluZUhlaWdodClyZXR1cm47Y29uc3QgYz0oMCxzLnNlbGVjdEZvbnQpKGUsbyk7YyYmKG4ubGluZUhlaWdodD1NYXRoLm1heCgxLjIsYy5saW5lSGVpZ2h0KSl9fSx0LnNldE1pbk1heERpbWVuc2lvbnM9ZnVuY3Rpb24oZSx0KXsicG9zaXRpb24iPT09ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpLmxheW91dCYmKGUubWluVz4wJiYodC5taW5XaWR0aD1sKGUubWluVykpLGUubWF4Vz4wJiYodC5tYXhXaWR0aD1sKGUubWF4VykpLGUubWluSD4wJiYodC5taW5IZWlnaHQ9bChlLm1pbkgpKSxlLm1heEg+MCYmKHQubWF4SGVpZ2h0PWwoZS5tYXhIKSkpfSx0LnNldFBhcmE9ZnVuY3Rpb24oZSx0LHIpe3ZhciBhO2lmKG51bGwhPT0oYT1yLmF0dHJpYnV0ZXMuY2xhc3MpJiZ2b2lkIDAhPT1hJiZhLmluY2x1ZGVzKCJ4ZmFSaWNoIikpe3QmJigiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIiksIiI9PT1lLncmJih0LndpZHRoPSJhdXRvIikpO2NvbnN0IGE9ZihlKTtpZihhKXtjb25zdCBlPXIuYXR0cmlidXRlcy5zdHlsZTtzd2l0Y2goZS5kaXNwbGF5PSJmbGV4IixlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiIsYS52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1hW24uJHRvU3R5bGVdKCk7Zm9yKGNvbnN0W3Isbl1vZiBPYmplY3QuZW50cmllcyh0KSlyIGluIGV8fChlW3JdPW4pfX19LHQudG9TdHlsZT1mdW5jdGlvbihlKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocj4xP3ItMTowKSxzPTE7czxyO3MrKylpW3MtMV09YXJndW1lbnRzW3NdO2Zvcihjb25zdCByIG9mIGkpe2NvbnN0IGk9ZVtyXTtpZihudWxsIT09aSlpZihoLmhhc093blByb3BlcnR5KHIpKWhbcl0oZSx0KTtlbHNlIGlmKGkgaW5zdGFuY2VvZiBjLlhGQU9iamVjdCl7Y29uc3QgZT1pW24uJHRvU3R5bGVdKCk7ZT9PYmplY3QuYXNzaWduKHQsZSk6KDAsYS53YXJuKSgiKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAiLmNvbmNhdChyLCIgbm90IGltcGxlbWVudGVkIHlldCIpKX19cmV0dXJuIHR9LHIoMTM5KTt2YXIgbj1yKDIyOCksYT1yKDE0NCksaT1yKDIzNykscz1yKDIzOCksbz1yKDIzOSksYz1yKDI0MCk7ZnVuY3Rpb24gbChlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT8iIi5jb25jYXQoZSwicHgiKToiIi5jb25jYXQoZS50b0ZpeGVkKDIpLCJweCIpfWNvbnN0IGg9e2FuY2hvclR5cGUoZSx0KXtjb25zdCByPWVbbi4kZ2V0U3ViZm9ybVBhcmVudF0oKTtpZihyJiYoIXIubGF5b3V0fHwicG9zaXRpb24iPT09ci5sYXlvdXQpKXN3aXRjaCgidHJhbnNmb3JtImluIHR8fCh0LnRyYW5zZm9ybT0iIiksZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX0sZGltZW5zaW9ucyhlLHQpe3ZhciByO2NvbnN0IGE9ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpO2xldCBpPWUudztjb25zdCBzPWUuaDtpZihudWxsIT09KHI9YS5sYXlvdXQpJiZ2b2lkIDAhPT1yJiZyLmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW24uJGV4dHJhXSxyPWUuY29sU3BhbjtsZXQgczstMT09PXI/KHM9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApLHQuY3VycmVudENvbHVtbj0wKToocz10LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4sdC5jdXJyZW50Q29sdW1uK3IpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCksdC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGgpLGlzTmFOKHMpfHwoaT1lLnc9cyl9dC53aWR0aD0iIiE9PWk/bChpKToiYXV0byIsdC5oZWlnaHQ9IiIhPT1zP2wocyk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IHI9ZVtuLiRnZXRTdWJmb3JtUGFyZW50XSgpO251bGwhPXImJnIubGF5b3V0JiYicG9zaXRpb24iIT09ci5sYXlvdXR8fCh0LnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5sZWZ0PWwoZS54KSx0LnRvcD1sKGUueSkpfSxyb3RhdGUoZSx0KXtlLnJvdGF0ZSYmKCJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKSx0LnRyYW5zZm9ybSs9InJvdGF0ZSgtIi5jb25jYXQoZS5yb3RhdGUsImRlZykiKSx0LnRyYW5zZm9ybU9yaWdpbj0idG9wIGxlZnQiKX0scHJlc2VuY2UoZSx0KXtzd2l0Y2goZS5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOnQudmlzaWJpbGl0eT0iaGlkZGVuIjticmVhaztjYXNlImhpZGRlbiI6Y2FzZSJpbmFjdGl2ZSI6dC5kaXNwbGF5PSJub25lIn19LGhBbGlnbihlLHQpe2lmKCJwYXJhIj09PWVbbi4kbm9kZU5hbWVdKXN3aXRjaChlLmhBbGlnbil7Y2FzZSJqdXN0aWZ5QWxsIjp0LnRleHRBbGlnbj0ianVzdGlmeS1hbGwiO2JyZWFrO2Nhc2UicmFkaXgiOnQudGV4dEFsaWduPSJsZWZ0IjticmVhaztkZWZhdWx0OnQudGV4dEFsaWduPWUuaEFsaWdufWVsc2Ugc3dpdGNoKGUuaEFsaWduKXtjYXNlImxlZnQiOnQuYWxpZ25TZWxmPSJzdGFydCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnQuYWxpZ25TZWxmPSJjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOnQuYWxpZ25TZWxmPSJlbmQifX0sbWFyZ2luKGUsdCl7ZS5tYXJnaW4mJih0Lm1hcmdpbj1lLm1hcmdpbltuLiR0b1N0eWxlXSgpLm1hcmdpbil9fTtmdW5jdGlvbiB1KGUsdCxyLGEsaSxzKXtjb25zdCBjPW5ldyBvLlRleHRNZWFzdXJlKHQscixhLGkpO3JldHVybiJzdHJpbmciPT10eXBlb2YgZT9jLmFkZFN0cmluZyhlKTplW24uJHB1c2hHbHlwaHNdKGMpLGMuY29tcHV0ZShzKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZihlKXtjb25zdCB0PWVbbi4kZ2V0VGVtcGxhdGVSb290XSgpW24uJGV4dHJhXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuSFRNTFJlc3VsdD12b2lkIDAsdC5nZXRCQm94PWZ1bmN0aW9uKGUpe2NvbnN0IHQ9LTE7aWYoIWUpcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3Qgcj1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+byhlLCItMSIpKSk7aWYoci5sZW5ndGg8NHx8clsyXTwwfHxyWzNdPDApcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3RbbixhLGksc109cjtyZXR1cm57eDpuLHk6YSx3aWR0aDppLGhlaWdodDpzfX0sdC5nZXRDb2xvcj1mdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06WzAsMCwwXSxbcixuLGFdPXQ7aWYoIWUpcmV0dXJue3IsZzpuLGI6YX07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO3JldHVybiBpLmxlbmd0aDwzfHwoW3IsbixhXT1pKSx7cixnOm4sYjphfX0sdC5nZXRGbG9hdD1mdW5jdGlvbihlKXtsZXR7ZGF0YTp0LGRlZmF1bHRWYWx1ZTpyLHZhbGlkYXRlOm59PWU7aWYoIXQpcmV0dXJuIHI7dD10LnRyaW0oKTtjb25zdCBhPXBhcnNlRmxvYXQodCk7cmV0dXJuIWlzTmFOKGEpJiZuKGEpP2E6cn0sdC5nZXRJbnRlZ2VyPWZ1bmN0aW9uKGUpe2xldHtkYXRhOnQsZGVmYXVsdFZhbHVlOnIsdmFsaWRhdGU6bn09ZTtpZighdClyZXR1cm4gcjt0PXQudHJpbSgpO2NvbnN0IGE9cGFyc2VJbnQodCwxMCk7cmV0dXJuIWlzTmFOKGEpJiZuKGEpP2E6cn0sdC5nZXRLZXl3b3JkPXMsdC5nZXRNZWFzdXJlbWVudD1vLHQuZ2V0UmF0aW89ZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJue251bToxLGRlbjoxfTtjb25zdCB0PWUudHJpbSgpLnNwbGl0KC9ccyo6XHMqLykubWFwKChlPT5wYXJzZUZsb2F0KGUpKSkuZmlsdGVyKChlPT4haXNOYU4oZSkpKTtpZigxPT09dC5sZW5ndGgmJnQucHVzaCgxKSwwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtyLG5dPXQ7cmV0dXJue251bTpyLGRlbjpufX0sdC5nZXRSZWxldmFudD1mdW5jdGlvbihlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT4oe2V4Y2x1ZGVkOiItIj09PWVbMF0sdmlld25hbWU6ZS5zdWJzdHJpbmcoMSl9KSkpOltdfSx0LmdldFN0cmluZ09wdGlvbj1mdW5jdGlvbihlLHQpe3JldHVybiBzKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnRbMF0sdmFsaWRhdGU6ZT0+dC5pbmNsdWRlcyhlKX0pfSx0LnN0cmlwUXVvdGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiciKXx8ZS5zdGFydHNXaXRoKCciJyk/ZS5zbGljZSgxLC0xKTplfSxyKDEzOSk7dmFyIG49cigxNDQpO2NvbnN0IGE9e3B0OmU9PmUsY206ZT0+ZS8yLjU0KjcyLG1tOmU9PmUvMjUuNCo3MixpbjplPT43MiplLHB4OmU9PmV9LGk9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzKGUpe2xldHtkYXRhOnQsZGVmYXVsdFZhbHVlOnIsdmFsaWRhdGU6bn09ZTtyZXR1cm4gdD8odD10LnRyaW0oKSxuKHQpP3Q6cik6cn1mdW5jdGlvbiBvKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiMCI7aWYodHx8KHQ9IjAiKSwhZSlyZXR1cm4gbyh0KTtjb25zdCByPWUudHJpbSgpLm1hdGNoKGkpO2lmKCFyKXJldHVybiBvKHQpO2NvbnN0WyxuLHNdPXIsYz1wYXJzZUZsb2F0KG4pO2lmKGlzTmFOKGMpKXJldHVybiBvKHQpO2lmKDA9PT1jKXJldHVybiAwO2NvbnN0IGw9YVtzXTtyZXR1cm4gbD9sKGMpOmN9Y2xhc3MgY3tzdGF0aWMgZ2V0IEZBSUxVUkUoKXtyZXR1cm4oMCxuLnNoYWRvdykodGhpcywiRkFJTFVSRSIsbmV3IGMoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuKDAsbi5zaGFkb3cpKHRoaXMsIkVNUFRZIixuZXcgYyghMCxudWxsLG51bGwsbnVsbCkpfWNvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMuc3VjY2Vzcz1lLHRoaXMuaHRtbD10LHRoaXMuYmJveD1yLHRoaXMuYnJlYWtOb2RlPW59aXNCcmVhaygpe3JldHVybiEhdGhpcy5icmVha05vZGV9c3RhdGljIGJyZWFrTm9kZShlKXtyZXR1cm4gbmV3IGMoITEsbnVsbCxudWxsLGUpfXN0YXRpYyBzdWNjZXNzKGUpe3JldHVybiBuZXcgYyghMCxlLGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLG51bGwpfX10LkhUTUxSZXN1bHQ9Y30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkZvbnRGaW5kZXI9dm9pZCAwLHQuZ2V0TWV0cmljcz1mdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdLHI9bnVsbDtpZihlKXtjb25zdCB0PSgwLGEuc3RyaXBRdW90ZXMpKGUudHlwZWZhY2UpLGk9ZVtuLiRnbG9iYWxEYXRhXS5mb250RmluZGVyLmZpbmQodCk7cj1zKGUsaSl9aWYoIXIpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgaT1lLnNpemV8fDEwLG89ci5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsci5saW5lSGVpZ2h0KToxLjIsYz12b2lkIDA9PT1yLmxpbmVHYXA/LjI6ci5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0Om8qaSxsaW5lR2FwOmMqaSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxvLWMpKml9fSx0LnNlbGVjdEZvbnQ9cyxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNykscigxMzkpO3ZhciBuPXIoMjI4KSxhPXIoMjM3KSxpPXIoMTQ0KTtmdW5jdGlvbiBzKGUsdCl7cmV0dXJuIml0YWxpYyI9PT1lLnBvc3R1cmU/ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkaXRhbGljOnQuaXRhbGljOiJib2xkIj09PWUud2VpZ2h0P3QuYm9sZDp0LnJlZ3VsYXJ9dC5Gb250RmluZGVyPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udHM9bmV3IE1hcCx0aGlzLmNhY2hlPW5ldyBNYXAsdGhpcy53YXJuZWQ9bmV3IFNldCx0aGlzLmRlZmF1bHRGb250PW51bGwsdGhpcy5hZGQoZSl9YWRkKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsO2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGRQZGZGb250KHQpO2Zvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyfHwoZS5yZWd1bGFyPWUuaXRhbGljfHxlLmJvbGR8fGUuYm9sZGl0YWxpYyk7aWYoIXR8fDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IHI9dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5mb250cy5zZXQoZSxyKX1hZGRQZGZGb250KGUpe2NvbnN0IHQ9ZS5jc3NGb250SW5mbyxyPXQuZm9udEZhbWlseTtsZXQgbj10aGlzLmZvbnRzLmdldChyKTtufHwobj1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZm9udHMuc2V0KHIsbiksdGhpcy5kZWZhdWx0Rm9udHx8KHRoaXMuZGVmYXVsdEZvbnQ9bikpO2xldCBhPSIiO2NvbnN0IGk9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpO3ZhciBzLG8sYzswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9hPWk+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6aT49NzAwJiYoYT0iYm9sZCIpLGF8fCgoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fChudWxsPT09KHM9ZS5wc05hbWUpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLmluY2x1ZGVzKCJCb2xkIikpKSYmKGE9ImJvbGQiKSwoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHwobnVsbD09PShvPWUucHNOYW1lKXx8dm9pZCAwPT09bz92b2lkIDA6by5pbmNsdWRlcygiSXRhbGljIikpfHwobnVsbD09PShjPWUucHNOYW1lKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5lbmRzV2l0aCgiSXQiKSkpJiYoYSs9Iml0YWxpYyIpKSxhfHwoYT0icmVndWxhciIpLG5bYV09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlKXtsZXQgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLHI9dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7Y29uc3Qgbj0vLHwtfF98IHxib2xkaXRhbGljfGJvbGR8aXRhbGljfHJlZ3VsYXJ8aXQvZ2k7bGV0IGE9ZS5yZXBsYWNlQWxsKG4sIiIpO2lmKHI9dGhpcy5mb250cy5nZXQoYSkscilyZXR1cm4gdGhpcy5jYWNoZS5zZXQoZSxyKSxyO2E9YS50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpJiZzLnB1c2godCk7aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdFssZV1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSl7dmFyIG87KG51bGw9PT0obz1lLnJlZ3VsYXIubmFtZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8ucmVwbGFjZUFsbChuLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoYSkpJiZzLnB1c2goZSl9aWYoMD09PXMubGVuZ3RoKXthPWEucmVwbGFjZUFsbCgvcHNtdHxtdC9naSwiIik7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpJiZzLnB1c2godCl9aWYoMD09PXMubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpe3ZhciBjOyhudWxsPT09KGM9ZS5yZWd1bGFyLm5hbWUpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnJlcGxhY2VBbGwobiwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGEpKSYmcy5wdXNoKGUpfXJldHVybiBzLmxlbmd0aD49MT8oMSE9PXMubGVuZ3RoJiZ0JiYoMCxpLndhcm4pKCJYRkEgLSBUb28gbWFueSBjaG9pY2VzIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IGZvbnQ6ICIuY29uY2F0KGUpKSx0aGlzLmNhY2hlLnNldChlLHNbMF0pLHNbMF0pOih0JiYhdGhpcy53YXJuZWQuaGFzKGUpJiYodGhpcy53YXJuZWQuYWRkKGUpLCgwLGkud2FybikoIlhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAiLmNvbmNhdChlKSkpLG51bGwpfX19LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5UZXh0TWVhc3VyZT12b2lkIDAscigxMzkpO3ZhciBuPXIoMjM4KTtjbGFzcyBhe2NvbnN0cnVjdG9yKGUsdCxyLGEpe2lmKHRoaXMubGluZUhlaWdodD1yLHRoaXMucGFyYU1hcmdpbj10fHx7dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjB9LCFlKXJldHVybiB2b2lkKFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKTt0aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCBpPWEuZmluZChlLnR5cGVmYWNlKTtpPyh0aGlzLnBkZkZvbnQ9KDAsbi5zZWxlY3RGb250KShlLGkpLHRoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KGEpKSk6W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSl9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZihudWxsIT10JiZ0LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIGl7Y29uc3RydWN0b3IoZSx0LHIsbil7dGhpcy5mb250RmluZGVyPW4sdGhpcy5zdGFjaz1bbmV3IGEoZSx0LHIsbildfXB1c2hEYXRhKGUsdCxyKXtjb25zdCBuPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dGVyU3BhY2luZyJdKWVbdF18fChlW3RdPW4ueGZhRm9udFt0XSk7Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1uLnBhcmFNYXJnaW5bZV0pO2NvbnN0IGk9bmV3IGEoZSx0LHJ8fG4ubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO2kucGRmRm9udHx8KGkucGRmRm9udD1uLnBkZkZvbnQpLHRoaXMuc3RhY2sucHVzaChpKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX10LlRleHRNZWFzdXJlPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxyLG4pe3RoaXMuZ2x5cGhzPVtdLHRoaXMuZm9udFNlbGVjdG9yPW5ldyBpKGUsdCxyLG4pLHRoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQscil7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LHIpfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCkscj10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IG49dC54ZmFGb250LmxldHRlclNwYWNpbmcsYT10LnBkZkZvbnQsaT1hLmxpbmVIZWlnaHR8fDEuMixzPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLGkpKnIsbz1pLSh2b2lkIDA9PT1hLmxpbmVHYXA/LjI6YS5saW5lR2FwKSxjPU1hdGgubWF4KDEsbykqcixsPXIvMWUzLGg9YS5kZWZhdWx0V2lkdGh8fGEuY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1hLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxyPWEuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PWUud2lkdGh8fGg7dGhpcy5nbHlwaHMucHVzaChbdCpsK24scyxjLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1lbHNle2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiIikpdGhpcy5nbHlwaHMucHVzaChbciwxLjIqcixyLGUsITFdKTt0aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9fWNvbXB1dGUoZSl7bGV0IHQ9LTEscj0wLG49MCxhPTAsaT0wLHM9MCxvPSExLGM9ITA7Zm9yKGxldCBsPTAsaD10aGlzLmdseXBocy5sZW5ndGg7bDxoO2wrKyl7Y29uc3RbaCx1LGQsZixnXT10aGlzLmdseXBoc1tsXSxwPSIgIj09PWYsbT1jP2Q6dTtnPyhuPU1hdGgubWF4KG4saSksaT0wLGErPXMscz1tLHQ9LTEscj0wLGM9ITEpOnA/aStoPmU/KG49TWF0aC5tYXgobixpKSxpPTAsYSs9cyxzPW0sdD0tMSxyPTAsbz0hMCxjPSExKToocz1NYXRoLm1heChtLHMpLHI9aSxpKz1oLHQ9bCk6aStoPmU/KGErPXMscz1tLC0xIT09dD8obD10LG49TWF0aC5tYXgobixyKSxpPTAsdD0tMSxyPTApOihuPU1hdGgubWF4KG4saSksaT1oKSxvPSEwLGM9ITEpOihpKz1oLHM9TWF0aC5tYXgobSxzKSl9cmV0dXJuIG49TWF0aC5tYXgobixpKSxhKz1zK3RoaXMuZXh0cmFIZWlnaHQse3dpZHRoOjEuMDIqbixoZWlnaHQ6YSxpc0Jyb2tlbjpvfX19fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWG1sT2JqZWN0PXQuWEZBT2JqZWN0QXJyYXk9dC5YRkFPYmplY3Q9dC5YRkFBdHRyaWJ1dGU9dC5TdHJpbmdPYmplY3Q9dC5PcHRpb25PYmplY3Q9dC5PcHRpb24xMD10Lk9wdGlvbjAxPXQuSW50ZWdlck9iamVjdD10LkNvbnRlbnRPYmplY3Q9dm9pZCAwLHIoMTM5KSxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNyk7dmFyIG49cigyMjgpLGE9cigyMzcpLGk9cigxNDQpLHM9cigxNDkpLG89cigyMzQpLGM9cigyNDEpO2NvbnN0IGw9U3ltYm9sKCksaD1TeW1ib2woKSx1PVN5bWJvbCgpLGQ9U3ltYm9sKCJfY2hpbGRyZW4iKSxmPVN5bWJvbCgpLGc9U3ltYm9sKCkscD1TeW1ib2woKSxtPVN5bWJvbCgpLGI9U3ltYm9sKCkseT1TeW1ib2woKSx3PVN5bWJvbCgpLHY9U3ltYm9sKCkseD1TeW1ib2woKSxTPVN5bWJvbCgicGFyZW50IiksQT1TeW1ib2woKSxrPVN5bWJvbCgpLEM9U3ltYm9sKCk7bGV0IE89MDtjb25zdCBGPW8uTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2NsYXNzIEl7Y29uc3RydWN0b3IoZSx0KXtsZXQgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3RoaXNbbi4kbmFtZXNwYWNlSWRdPWUsdGhpc1tuLiRub2RlTmFtZV09dCx0aGlzW3ddPXIsdGhpc1tTXT1udWxsLHRoaXNbZF09W10sdGhpc1tuLiR1aWRdPSIiLmNvbmNhdCh0KS5jb25jYXQoTysrKSx0aGlzW24uJGdsb2JhbERhdGFdPW51bGx9Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITB9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMX1jcmVhdGVOb2RlcyhlKXtsZXQgdD10aGlzLHI9bnVsbDtmb3IoY29uc3R7bmFtZTphLGluZGV4Oml9b2YgZSl7Zm9yKGxldCBlPTAscz1pc0Zpbml0ZShpKT9pOjA7ZTw9cztlKyspe2NvbnN0IGU9dFtuLiRuYW1lc3BhY2VJZF09PT1GPy0xOnRbbi4kbmFtZXNwYWNlSWRdO3I9bmV3IEUoZSxhKSx0W24uJGFwcGVuZENoaWxkXShyKX10PXJ9cmV0dXJuIHJ9W24uJG9uQ2hpbGRdKGUpe2lmKCF0aGlzW3ddfHwhdGhpc1tuLiRvbkNoaWxkQ2hlY2tdKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtuLiRub2RlTmFtZV0scj10aGlzW3RdO2lmKCEociBpbnN0YW5jZW9mIFQpKXJldHVybiBudWxsIT09ciYmdGhpc1tuLiRyZW1vdmVDaGlsZF0ociksdGhpc1t0XT1lLHRoaXNbbi4kYXBwZW5kQ2hpbGRdKGUpLCEwO2lmKHIucHVzaChlKSlyZXR1cm4gdGhpc1tuLiRhcHBlbmRDaGlsZF0oZSksITA7bGV0IGE9IiI7cmV0dXJuIHRoaXMuaWQ/YT0iIChpZDogIi5jb25jYXQodGhpcy5pZCwiKSIpOnRoaXMubmFtZSYmKGE9IiAobmFtZTogIi5jb25jYXQodGhpcy5uYW1lLCIgIikuY29uY2F0KHRoaXMuaC52YWx1ZSwiKSIpKSwoMCxpLndhcm4pKCdYRkEgLSBub2RlICInLmNvbmNhdCh0aGlzW24uJG5vZGVOYW1lXSwnIicpLmNvbmNhdChhLCcgaGFzIGFscmVhZHkgZW5vdWdoICInKS5jb25jYXQodCwnIiEnKSksITF9W24uJG9uQ2hpbGRDaGVja10oZSl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoZVtuLiRub2RlTmFtZV0pJiZlW24uJG5hbWVzcGFjZUlkXT09PXRoaXNbbi4kbmFtZXNwYWNlSWRdfVtuLiRpc05zQWdub3N0aWNdKCl7cmV0dXJuITF9W24uJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuITF9W24uJGlzQ0RBVEFYbWxdKCl7cmV0dXJuITF9W24uJGlzQmluZGFibGVdKCl7cmV0dXJuITF9W24uJHBvcFBhcmFdKCl7dGhpcy5wYXJhJiZ0aGlzW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ucGFyYVN0YWNrLnBvcCgpfVtuLiRwdXNoUGFyYV0oKXt0aGlzW24uJGdldFRlbXBsYXRlUm9vdF0oKVtuLiRleHRyYV0ucGFyYVN0YWNrLnB1c2godGhpcy5wYXJhKX1bbi4kc2V0SWRdKGUpe3RoaXMuaWQmJnRoaXNbbi4kbmFtZXNwYWNlSWRdPT09by5OYW1lc3BhY2VJZHMudGVtcGxhdGUuaWQmJmUuc2V0KHRoaXMuaWQsdGhpcyl9W24uJGdldFRlbXBsYXRlUm9vdF0oKXtyZXR1cm4gdGhpc1tuLiRnbG9iYWxEYXRhXS50ZW1wbGF0ZX1bbi4kaXNTcGxpdHRhYmxlXSgpe3JldHVybiExfVtuLiRpc1RoZXJlTW9yZVdpZHRoXSgpe3JldHVybiExfVtuLiRhcHBlbmRDaGlsZF0oZSl7ZVtTXT10aGlzLHRoaXNbZF0ucHVzaChlKSwhZVtuLiRnbG9iYWxEYXRhXSYmdGhpc1tuLiRnbG9iYWxEYXRhXSYmKGVbbi4kZ2xvYmFsRGF0YV09dGhpc1tuLiRnbG9iYWxEYXRhXSl9W24uJHJlbW92ZUNoaWxkXShlKXtjb25zdCB0PXRoaXNbZF0uaW5kZXhPZihlKTt0aGlzW2RdLnNwbGljZSh0LDEpfVtuLiRoYXNTZXR0YWJsZVZhbHVlXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVtuLiRzZXRWYWx1ZV0oZSl7fVtuLiRvblRleHRdKGUpe31bbi4kZmluYWxpemVdKCl7fVtuLiRjbGVhbl0oZSl7ZGVsZXRlIHRoaXNbd10sdGhpc1tuLiRjbGVhbnVwXSYmKGUuY2xlYW4odGhpc1tuLiRjbGVhbnVwXSksZGVsZXRlIHRoaXNbbi4kY2xlYW51cF0pfVtuLiRpbmRleE9mXShlKXtyZXR1cm4gdGhpc1tkXS5pbmRleE9mKGUpfVtuLiRpbnNlcnRBdF0oZSx0KXt0W1NdPXRoaXMsdGhpc1tkXS5zcGxpY2UoZSwwLHQpLCF0W24uJGdsb2JhbERhdGFdJiZ0aGlzW24uJGdsb2JhbERhdGFdJiYodFtuLiRnbG9iYWxEYXRhXT10aGlzW24uJGdsb2JhbERhdGFdKX1bbi4kaXNUcmFuc3BhcmVudF0oKXtyZXR1cm4hdGhpcy5uYW1lfVtuLiRsYXN0QXR0cmlidXRlXSgpe3JldHVybiIifVtuLiR0ZXh0XSgpe3JldHVybiAwPT09dGhpc1tkXS5sZW5ndGg/dGhpc1tuLiRjb250ZW50XTp0aGlzW2RdLm1hcCgoZT0+ZVtuLiR0ZXh0XSgpKSkuam9pbigiIil9Z2V0W3VdKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgSXx8dGhpc1tlXWluc3RhbmNlb2YgVClicmVhazt0LmFkZChlKX19cmV0dXJuKDAsaS5zaGFkb3cpKHRoaXMsdSxlLl9hdHRyaWJ1dGVzKX1bbi4kaXNEZXNjZW5kZW50XShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtuLiRnZXRQYXJlbnRdKCl9cmV0dXJuITF9W24uJGdldFBhcmVudF0oKXtyZXR1cm4gdGhpc1tTXX1bbi4kZ2V0U3ViZm9ybVBhcmVudF0oKXtyZXR1cm4gdGhpc1tuLiRnZXRQYXJlbnRdKCl9W24uJGdldENoaWxkcmVuXSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBlP3RoaXNbZV06dGhpc1tkXX1bbi4kZHVtcF0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpc1tuLiRjb250ZW50XSYmKGUuJGNvbnRlbnQ9dGhpc1tuLiRjb250ZW50XSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IHI9dGhpc1t0XTtudWxsIT09ciYmKHIgaW5zdGFuY2VvZiBJP2VbdF09cltuLiRkdW1wXSgpOnIgaW5zdGFuY2VvZiBUP3IuaXNFbXB0eSgpfHwoZVt0XT1yLmR1bXAoKSk6ZVt0XT1yKX1yZXR1cm4gZX1bbi4kdG9TdHlsZV0oKXtyZXR1cm4gbnVsbH1bbi4kdG9IVE1MXSgpe3JldHVybiBhLkhUTUxSZXN1bHQuRU1QVFl9KltuLiRnZXRDb250YWluZWRDaGlsZHJlbl0oKXtmb3IoY29uc3QgZSBvZiB0aGlzW24uJGdldENoaWxkcmVuXSgpKXlpZWxkIGV9KlttXShlLHQpe2Zvcihjb25zdCByIG9mIHRoaXNbbi4kZ2V0Q29udGFpbmVkQ2hpbGRyZW5dKCkpaWYoIWV8fHQ9PT1lLmhhcyhyW24uJG5vZGVOYW1lXSkpe2NvbnN0IGU9dGhpc1tuLiRnZXRBdmFpbGFibGVTcGFjZV0oKSx0PXJbbi4kdG9IVE1MXShlKTt0LnN1Y2Nlc3N8fCh0aGlzW24uJGV4dHJhXS5mYWlsaW5nTm9kZT1yKSx5aWVsZCB0fX1bbi4kZmx1c2hIVE1MXSgpe3JldHVybiBudWxsfVtuLiRhZGRIVE1MXShlLHQpe3RoaXNbbi4kZXh0cmFdLmNoaWxkcmVuLnB1c2goZSl9W24uJGdldEF2YWlsYWJsZVNwYWNlXSgpe31bbi4kY2hpbGRyZW5Ub0hUTUxdKGUpe2xldHtmaWx0ZXI6dD1udWxsLGluY2x1ZGU6cj0hMH09ZTtpZih0aGlzW24uJGV4dHJhXS5nZW5lcmF0b3Ipe2NvbnN0IGU9dGhpc1tuLiRnZXRBdmFpbGFibGVTcGFjZV0oKSx0PXRoaXNbbi4kZXh0cmFdLmZhaWxpbmdOb2RlW24uJHRvSFRNTF0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbbi4kYWRkSFRNTF0odC5odG1sLHQuYmJveCksZGVsZXRlIHRoaXNbbi4kZXh0cmFdLmZhaWxpbmdOb2RlfWVsc2UgdGhpc1tuLiRleHRyYV0uZ2VuZXJhdG9yPXRoaXNbbV0odCxyKTtmb3IoOzspe2NvbnN0IGU9dGhpc1tuLiRleHRyYV0uZ2VuZXJhdG9yLm5leHQoKTtpZihlLmRvbmUpYnJlYWs7Y29uc3QgdD1lLnZhbHVlO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW24uJGFkZEhUTUxdKHQuaHRtbCx0LmJib3gpfXJldHVybiB0aGlzW24uJGV4dHJhXS5nZW5lcmF0b3I9bnVsbCxhLkhUTUxSZXN1bHQuRU1QVFl9W24uJHNldFNldEF0dHJpYnV0ZXNdKGUpe3RoaXNba109bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W3ldKGUpe2NvbnN0IHQ9dGhpc1t1XSxyPXRoaXNba107cmV0dXJuWy4uLmVdLmZpbHRlcigoZT0+dC5oYXMoZSkmJiFyLmhhcyhlKSkpfVtuLiRyZXNvbHZlUHJvdG90eXBlc10oZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm5ldyBTZXQ7Zm9yKGNvbnN0IHIgb2YgdGhpc1tkXSlyW0FdKGUsdCl9W0FdKGUsdCl7Y29uc3Qgcj10aGlzW2JdKGUsdCk7cj90aGlzW2xdKHIsZSx0KTp0aGlzW24uJHJlc29sdmVQcm90b3R5cGVzXShlLHQpfVtiXShlLHQpe2NvbnN0e3VzZTpyLHVzZWhyZWY6YX09dGhpcztpZighciYmIWEpcmV0dXJuIG51bGw7bGV0IHM9bnVsbCxvPW51bGwsaD1udWxsLHU9cjtpZihhPyh1PWEsYS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/bz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9vPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/aD1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKGg9YS5zbGljZSgyKSkpOnIuc3RhcnRzV2l0aCgiIyIpP2g9ci5zbGljZSgxKTpvPXIsdGhpcy51c2U9dGhpcy51c2VocmVmPSIiLGg/cz1lLmdldChoKToocz0oMCxjLnNlYXJjaE5vZGUpKGUuZ2V0KG4uJHJvb3QpLHRoaXMsbywhMCwhMSkscyYmKHM9c1swXSkpLCFzKXJldHVybigwLGkud2FybikoIlhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogIi5jb25jYXQodSwiLiIpKSxudWxsO2lmKHNbbi4kbm9kZU5hbWVdIT09dGhpc1tuLiRub2RlTmFtZV0pcmV0dXJuKDAsaS53YXJuKSgiWEZBIC0gSW5jb21wYXRpYmxlIHByb3RvdHlwZTogIi5jb25jYXQoc1tuLiRub2RlTmFtZV0sIiAhPT0gIikuY29uY2F0KHRoaXNbbi4kbm9kZU5hbWVdLCIuIikpLG51bGw7aWYodC5oYXMocykpcmV0dXJuKDAsaS53YXJuKSgiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIiksbnVsbDt0LmFkZChzKTtjb25zdCBkPXNbYl0oZSx0KTtyZXR1cm4gZCYmc1tsXShkLGUsdCksc1tuLiRyZXNvbHZlUHJvdG90eXBlc10oZSx0KSx0LmRlbGV0ZShzKSxzfVtsXShlLHQscil7aWYoci5oYXMoZSkpKDAsaS53YXJuKSgiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7ZWxzZXshdGhpc1tuLiRjb250ZW50XSYmZVtuLiRjb250ZW50XSYmKHRoaXNbbi4kY29udGVudF09ZVtuLiRjb250ZW50XSksbmV3IFNldChyKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1t5XShlW2tdKSl0aGlzW3RdPWVbdF0sdGhpc1trXSYmdGhpc1trXS5hZGQodCk7Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbdV0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IGk9dGhpc1thXSxzPWVbYV07aWYoaSBpbnN0YW5jZW9mIFQpe2Zvcihjb25zdCBlIG9mIGlbZF0pZVtBXSh0LHIpO2ZvcihsZXQgYT1pW2RdLmxlbmd0aCxvPXNbZF0ubGVuZ3RoO2E8bzthKyspe2NvbnN0IHM9ZVtkXVthXVtuLiRjbG9uZV0oKTtpZighaS5wdXNoKHMpKWJyZWFrO3NbU109dGhpcyx0aGlzW2RdLnB1c2gocyksc1tBXSh0LHIpfX1lbHNlIGlmKG51bGw9PT1pKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW24uJGNsb25lXSgpO2VbU109dGhpcyx0aGlzW2FdPWUsdGhpc1tkXS5wdXNoKGUpLGVbQV0odCxyKX19ZWxzZSBpW24uJHJlc29sdmVQcm90b3R5cGVzXSh0LHIpLHMmJmlbbF0ocyx0LHIpfX19c3RhdGljW2ZdKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UubWFwKChlPT5JW2ZdKGUpKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W24uJGNsb25lXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaChyKXsoMCxpLnNoYWRvdykoZSx0LHRoaXNbdF0pfWVbbi4kdWlkXT0iIi5jb25jYXQoZVtuLiRub2RlTmFtZV0pLmNvbmNhdChPKyspLGVbZF09W107Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKHRoaXNbdV0uaGFzKHQpKXtlW3RdPUlbZl0odGhpc1t0XSk7Y29udGludWV9Y29uc3Qgcj10aGlzW3RdO2VbdF09ciBpbnN0YW5jZW9mIFQ/bmV3IFQoclt2XSk6bnVsbH1mb3IoY29uc3QgdCBvZiB0aGlzW2RdKXtjb25zdCByPXRbbi4kbm9kZU5hbWVdLGE9dFtuLiRjbG9uZV0oKTtlW2RdLnB1c2goYSksYVtTXT1lLG51bGw9PT1lW3JdP2Vbcl09YTplW3JdW2RdLnB1c2goYSl9cmV0dXJuIGV9W24uJGdldENoaWxkcmVuXSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3JldHVybiBlP3RoaXNbZF0uZmlsdGVyKCh0PT50W24uJG5vZGVOYW1lXT09PWUpKTp0aGlzW2RdfVtuLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKGUpe3JldHVybiB0aGlzW2VdfVtuLiRnZXRDaGlsZHJlbkJ5TmFtZV0oZSx0KXtsZXQgcj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdO3JldHVybiBBcnJheS5mcm9tKHRoaXNbbi4kZ2V0Q2hpbGRyZW5CeU5hbWVJdF0oZSx0LHIpKX1bbi4kZ2V0Q2hpbGRyZW5CeU5hbWVJdF0oZSx0KXt2YXIgcj10aGlzO2xldCBhPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl07cmV0dXJuIGZ1bmN0aW9uKigpe2lmKCJwYXJlbnQiIT09ZSl7Zm9yKGNvbnN0IGEgb2YgcltkXSlhW24uJG5vZGVOYW1lXT09PWUmJih5aWVsZCBhKSxhLm5hbWU9PT1lJiYoeWllbGQgYSksKHR8fGFbbi4kaXNUcmFuc3BhcmVudF0oKSkmJih5aWVsZCphW24uJGdldENoaWxkcmVuQnlOYW1lSXRdKGUsdCwhMSkpO2EmJnJbdV0uaGFzKGUpJiYoeWllbGQgbmV3IE0ocixlLHJbZV0pKX1lbHNlIHlpZWxkIHJbU119KCl9fXQuWEZBT2JqZWN0PUk7Y2xhc3MgVHtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxLzA7dGhpc1t2XT1lLHRoaXNbZF09W119Z2V0IGlzWEZBT2JqZWN0KCl7cmV0dXJuITF9Z2V0IGlzWEZBT2JqZWN0QXJyYXkoKXtyZXR1cm4hMH1wdXNoKGUpe3JldHVybiB0aGlzW2RdLmxlbmd0aDw9dGhpc1t2XT8odGhpc1tkXS5wdXNoKGUpLCEwKTooKDAsaS53YXJuKSgnWEZBIC0gbm9kZSAiJy5jb25jYXQoZVtuLiRub2RlTmFtZV0sJyIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJykuY29uY2F0KHRoaXNbdl0sIiBjaGlsZHJlbiIpKSwhMSl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpc1tkXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tkXS5sZW5ndGg/dGhpc1tkXVswXVtuLiRkdW1wXSgpOnRoaXNbZF0ubWFwKChlPT5lW24uJGR1bXBdKCkpKX1bbi4kY2xvbmVdKCl7Y29uc3QgZT1uZXcgVCh0aGlzW3ZdKTtyZXR1cm4gZVtkXT10aGlzW2RdLm1hcCgoZT0+ZVtuLiRjbG9uZV0oKSkpLGV9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXNbZF19Y2xlYXIoKXt0aGlzW2RdLmxlbmd0aD0wfX10LlhGQU9iamVjdEFycmF5PVQ7Y2xhc3MgTXtjb25zdHJ1Y3RvcihlLHQscil7dGhpc1tTXT1lLHRoaXNbbi4kbm9kZU5hbWVdPXQsdGhpc1tuLiRjb250ZW50XT1yLHRoaXNbbi4kY29uc3VtZWRdPSExLHRoaXNbbi4kdWlkXT0iYXR0cmlidXRlIitPKyt9W24uJGdldFBhcmVudF0oKXtyZXR1cm4gdGhpc1tTXX1bbi4kaXNEYXRhVmFsdWVdKCl7cmV0dXJuITB9W24uJGdldERhdGFWYWx1ZV0oKXtyZXR1cm4gdGhpc1tuLiRjb250ZW50XS50cmltKCl9W24uJHNldFZhbHVlXShlKXtlPWUudmFsdWV8fCIiLHRoaXNbbi4kY29udGVudF09ZS50b1N0cmluZygpfVtuLiR0ZXh0XSgpe3JldHVybiB0aGlzW24uJGNvbnRlbnRdfVtuLiRpc0Rlc2NlbmRlbnRdKGUpe3JldHVybiB0aGlzW1NdPT09ZXx8dGhpc1tTXVtuLiRpc0Rlc2NlbmRlbnRdKGUpfX10LlhGQUF0dHJpYnV0ZT1NO2NsYXNzIEUgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKGUsdCl7bGV0IHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9O2lmKHN1cGVyKGUsdCksdGhpc1tuLiRjb250ZW50XT0iIix0aGlzW2ddPW51bGwsIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW2hdPWU7Zm9yKGNvbnN0W3Qsbl1vZiBPYmplY3QuZW50cmllcyhyKSllLnNldCh0LG5ldyBNKHRoaXMsdCxuKSk7aWYoci5oYXNPd25Qcm9wZXJ0eShuLiRuc0F0dHJpYnV0ZXMpKXtjb25zdCBlPXJbbi4kbnNBdHRyaWJ1dGVzXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW2ddPSExOiJkYXRhVmFsdWUiPT09ZSYmKHRoaXNbZ109ITApKX19dGhpc1tuLiRjb25zdW1lZF09ITF9W24uJHRvU3RyaW5nXShlKXtjb25zdCB0PXRoaXNbbi4kbm9kZU5hbWVdO2lmKCIjdGV4dCI9PT10KXJldHVybiB2b2lkIGUucHVzaCgoMCxzLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW24uJGNvbnRlbnRdKSk7Y29uc3Qgcj0oMCxpLnV0ZjhTdHJpbmdUb1N0cmluZykodCksYT10aGlzW24uJG5hbWVzcGFjZUlkXT09PUY/InhmYToiOiIiO2UucHVzaCgiPCIuY29uY2F0KGEpLmNvbmNhdChyKSk7Zm9yKGNvbnN0W3Qscl1vZiB0aGlzW2hdLmVudHJpZXMoKSl7Y29uc3QgYT0oMCxpLnV0ZjhTdHJpbmdUb1N0cmluZykodCk7ZS5wdXNoKCIgIi5jb25jYXQoYSwnPSInKS5jb25jYXQoKDAscy5lbmNvZGVUb1htbFN0cmluZykocltuLiRjb250ZW50XSksJyInKSl9aWYobnVsbCE9PXRoaXNbZ10mJih0aGlzW2ddP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKSx0aGlzW24uJGNvbnRlbnRdfHwwIT09dGhpc1tkXS5sZW5ndGgpe2lmKGUucHVzaCgiPiIpLHRoaXNbbi4kY29udGVudF0pInN0cmluZyI9PXR5cGVvZiB0aGlzW24uJGNvbnRlbnRdP2UucHVzaCgoMCxzLmVuY29kZVRvWG1sU3RyaW5nKSh0aGlzW24uJGNvbnRlbnRdKSk6dGhpc1tuLiRjb250ZW50XVtuLiR0b1N0cmluZ10oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW2RdKXRbbi4kdG9TdHJpbmddKGUpO2UucHVzaCgiPC8iLmNvbmNhdChhKS5jb25jYXQociwiPiIpKX1lbHNlIGUucHVzaCgiLz4iKX1bbi4kb25DaGlsZF0oZSl7aWYodGhpc1tuLiRjb250ZW50XSl7Y29uc3QgZT1uZXcgRSh0aGlzW24uJG5hbWVzcGFjZUlkXSwiI3RleHQiKTt0aGlzW24uJGFwcGVuZENoaWxkXShlKSxlW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0sdGhpc1tuLiRjb250ZW50XT0iIn1yZXR1cm4gdGhpc1tuLiRhcHBlbmRDaGlsZF0oZSksITB9W24uJG9uVGV4dF0oZSl7dGhpc1tuLiRjb250ZW50XSs9ZX1bbi4kZmluYWxpemVdKCl7aWYodGhpc1tuLiRjb250ZW50XSYmdGhpc1tkXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgRSh0aGlzW24uJG5hbWVzcGFjZUlkXSwiI3RleHQiKTt0aGlzW24uJGFwcGVuZENoaWxkXShlKSxlW24uJGNvbnRlbnRdPXRoaXNbbi4kY29udGVudF0sZGVsZXRlIHRoaXNbbi4kY29udGVudF19fVtuLiR0b0hUTUxdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbbi4kbm9kZU5hbWVdP2EuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiIjdGV4dCIsdmFsdWU6dGhpc1tuLiRjb250ZW50XX0pOmEuSFRNTFJlc3VsdC5FTVBUWX1bbi4kZ2V0Q2hpbGRyZW5dKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGw7cmV0dXJuIGU/dGhpc1tkXS5maWx0ZXIoKHQ9PnRbbi4kbm9kZU5hbWVdPT09ZSkpOnRoaXNbZF19W24uJGdldEF0dHJpYnV0ZXNdKCl7cmV0dXJuIHRoaXNbaF19W24uJGdldENoaWxkcmVuQnlDbGFzc10oZSl7Y29uc3QgdD10aGlzW2hdLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbbi4kZ2V0Q2hpbGRyZW5dKGUpfSpbbi4kZ2V0Q2hpbGRyZW5CeU5hbWVJdF0oZSx0KXtjb25zdCByPXRoaXNbaF0uZ2V0KGUpO3ImJih5aWVsZCByKTtmb3IoY29uc3QgciBvZiB0aGlzW2RdKXJbbi4kbm9kZU5hbWVdPT09ZSYmKHlpZWxkIHIpLHQmJih5aWVsZCpyW24uJGdldENoaWxkcmVuQnlOYW1lSXRdKGUsdCkpfSpbbi4kZ2V0QXR0cmlidXRlSXRdKGUsdCl7Y29uc3Qgcj10aGlzW2hdLmdldChlKTshcnx8dCYmcltuLiRjb25zdW1lZF18fCh5aWVsZCByKTtmb3IoY29uc3QgciBvZiB0aGlzW2RdKXlpZWxkKnJbbi4kZ2V0QXR0cmlidXRlSXRdKGUsdCl9KltuLiRnZXRSZWFsQ2hpbGRyZW5CeU5hbWVJdF0oZSx0LHIpe2Zvcihjb25zdCBhIG9mIHRoaXNbZF0pYVtuLiRub2RlTmFtZV0hPT1lfHxyJiZhW24uJGNvbnN1bWVkXXx8KHlpZWxkIGEpLHQmJih5aWVsZCphW24uJGdldFJlYWxDaGlsZHJlbkJ5TmFtZUl0XShlLHQscikpfVtuLiRpc0RhdGFWYWx1ZV0oKXtyZXR1cm4gbnVsbD09PXRoaXNbZ10/MD09PXRoaXNbZF0ubGVuZ3RofHx0aGlzW2RdWzBdW24uJG5hbWVzcGFjZUlkXT09PW8uTmFtZXNwYWNlSWRzLnhodG1sLmlkOnRoaXNbZ119W24uJGdldERhdGFWYWx1ZV0oKXtyZXR1cm4gbnVsbD09PXRoaXNbZ10/MD09PXRoaXNbZF0ubGVuZ3RoP3RoaXNbbi4kY29udGVudF0udHJpbSgpOnRoaXNbZF1bMF1bbi4kbmFtZXNwYWNlSWRdPT09by5OYW1lc3BhY2VJZHMueGh0bWwuaWQ/dGhpc1tkXVswXVtuLiR0ZXh0XSgpLnRyaW0oKTpudWxsOnRoaXNbbi4kY29udGVudF0udHJpbSgpfVtuLiRzZXRWYWx1ZV0oZSl7ZT1lLnZhbHVlfHwiIix0aGlzW24uJGNvbnRlbnRdPWUudG9TdHJpbmcoKX1bbi4kZHVtcF0oKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlJiYodC4kbnM9dGhpc1tuLiRuYW1lc3BhY2VJZF0pLHRoaXNbbi4kY29udGVudF0mJih0LiRjb250ZW50PXRoaXNbbi4kY29udGVudF0pLHQuJG5hbWU9dGhpc1tuLiRub2RlTmFtZV0sdC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgciBvZiB0aGlzW2RdKXQuY2hpbGRyZW4ucHVzaChyW24uJGR1bXBdKGUpKTt0LmF0dHJpYnV0ZXM9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbZSxyXW9mIHRoaXNbaF0pdC5hdHRyaWJ1dGVzW2VdPXJbbi4kY29udGVudF07cmV0dXJuIHR9fXQuWG1sT2JqZWN0PUU7Y2xhc3MgUCBleHRlbmRzIEl7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpLHRoaXNbbi4kY29udGVudF09IiJ9W24uJG9uVGV4dF0oZSl7dGhpc1tuLiRjb250ZW50XSs9ZX1bbi4kZmluYWxpemVdKCl7fX10LkNvbnRlbnRPYmplY3Q9UDtjbGFzcyBSIGV4dGVuZHMgUHtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoZSx0KSx0aGlzW3hdPXJ9W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09KDAsYS5nZXRLZXl3b3JkKSh7ZGF0YTp0aGlzW24uJGNvbnRlbnRdLGRlZmF1bHRWYWx1ZTp0aGlzW3hdWzBdLHZhbGlkYXRlOmU9PnRoaXNbeF0uaW5jbHVkZXMoZSl9KX1bbi4kY2xlYW5dKGUpe3N1cGVyW24uJGNsZWFuXShlKSxkZWxldGUgdGhpc1t4XX19dC5PcHRpb25PYmplY3Q9UjtjbGFzcyBOIGV4dGVuZHMgUHtbbi4kZmluYWxpemVdKCl7dGhpc1tuLiRjb250ZW50XT10aGlzW24uJGNvbnRlbnRdLnRyaW0oKX19dC5TdHJpbmdPYmplY3Q9TjtjbGFzcyBEIGV4dGVuZHMgUHtjb25zdHJ1Y3RvcihlLHQscixuKXtzdXBlcihlLHQpLHRoaXNbcF09cix0aGlzW0NdPW59W24uJGZpbmFsaXplXSgpe3RoaXNbbi4kY29udGVudF09KDAsYS5nZXRJbnRlZ2VyKSh7ZGF0YTp0aGlzW24uJGNvbnRlbnRdLGRlZmF1bHRWYWx1ZTp0aGlzW3BdLHZhbGlkYXRlOnRoaXNbQ119KX1bbi4kY2xlYW5dKGUpe3N1cGVyW24uJGNsZWFuXShlKSxkZWxldGUgdGhpc1twXSxkZWxldGUgdGhpc1tDXX19dC5JbnRlZ2VyT2JqZWN0PUQsdC5PcHRpb24wMT1jbGFzcyBleHRlbmRzIER7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMCwoZT0+MT09PWUpKX19LHQuT3B0aW9uMTA9Y2xhc3MgZXh0ZW5kcyBEe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDEsKGU9PjA9PT1lKSl9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNyZWF0ZURhdGFOb2RlPWZ1bmN0aW9uKGUsdCxyKXtjb25zdCBpPWgocik7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5zb21lKChlPT5lLm9wZXJhdG9yPT09by5kb3REb3QpKSlyZXR1cm4gbnVsbDtjb25zdCBzPWMuZ2V0KGlbMF0ubmFtZSk7bGV0IGw9MDtzPyhlPXMoZSx0KSxsPTEpOmU9dHx8ZTtmb3IobGV0IHQ9aS5sZW5ndGg7bDx0O2wrKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOnIsaW5kZXg6c309aVtsXTtpZighaXNGaW5pdGUocykpcmV0dXJuIGlbbF0uaW5kZXg9MCxlLmNyZWF0ZU5vZGVzKGkuc2xpY2UobCkpO2xldCBjO3N3aXRjaChyKXtjYXNlIG8uZG90OmM9ZVtuLiRnZXRDaGlsZHJlbkJ5TmFtZV0odCwhMSk7YnJlYWs7Y2FzZSBvLmRvdERvdDpjPWVbbi4kZ2V0Q2hpbGRyZW5CeU5hbWVdKHQsITApO2JyZWFrO2Nhc2Ugby5kb3RIYXNoOmM9ZVtuLiRnZXRDaGlsZHJlbkJ5Q2xhc3NdKHQpLGM9Yy5pc1hGQU9iamVjdEFycmF5P2MuY2hpbGRyZW46W2NdfWlmKDA9PT1jLmxlbmd0aClyZXR1cm4gZS5jcmVhdGVOb2RlcyhpLnNsaWNlKGwpKTtpZighKHM8Yy5sZW5ndGgpKXJldHVybiBpW2xdLmluZGV4PXMtYy5sZW5ndGgsZS5jcmVhdGVOb2RlcyhpLnNsaWNlKGwpKTt7Y29uc3QgdD1jW3NdO2lmKCF0LmlzWEZBT2JqZWN0KXJldHVybigwLGEud2FybikoIlhGQSAtIENhbm5vdCBjcmVhdGUgYSBub2RlLiIpLG51bGw7ZT10fX1yZXR1cm4gbnVsbH0sdC5zZWFyY2hOb2RlPWZ1bmN0aW9uKGUsdCxyKXtsZXQgYT0hKGFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdKXx8YXJndW1lbnRzWzRdO2NvbnN0IGk9aChyLCEoYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10pfHxhcmd1bWVudHNbM10pO2lmKCFpKXJldHVybiBudWxsO2NvbnN0IHM9Yy5nZXQoaVswXS5uYW1lKTtsZXQgdSxkPTA7cz8odT0hMCxlPVtzKGUsdCldLGQ9MSk6KHU9bnVsbD09PXQsZT1bdHx8ZV0pO2ZvcihsZXQgcj1pLmxlbmd0aDtkPHI7ZCsrKXtjb25zdHtuYW1lOnIsY2FjaGVOYW1lOnMsb3BlcmF0b3I6YyxpbmRleDpofT1pW2RdLGY9W107Zm9yKGNvbnN0IHQgb2YgZSl7aWYoIXQuaXNYRkFPYmplY3QpY29udGludWU7bGV0IGUsaTtpZihhJiYoaT1sLmdldCh0KSxpfHwoaT1uZXcgTWFwLGwuc2V0KHQsaSkpLGU9aS5nZXQocykpLCFlKXtzd2l0Y2goYyl7Y2FzZSBvLmRvdDplPXRbbi4kZ2V0Q2hpbGRyZW5CeU5hbWVdKHIsITEpO2JyZWFrO2Nhc2Ugby5kb3REb3Q6ZT10W24uJGdldENoaWxkcmVuQnlOYW1lXShyLCEwKTticmVhaztjYXNlIG8uZG90SGFzaDplPXRbbi4kZ2V0Q2hpbGRyZW5CeUNsYXNzXShyKSxlPWUuaXNYRkFPYmplY3RBcnJheT9lLmNoaWxkcmVuOltlXX1hJiZpLnNldChzLGUpfWUubGVuZ3RoPjAmJmYucHVzaChlKX1pZigwIT09Zi5sZW5ndGh8fHV8fDAhPT1kKWU9aXNGaW5pdGUoaCk/Zi5maWx0ZXIoKGU9Pmg8ZS5sZW5ndGgpKS5tYXAoKGU9PmVbaF0pKTpmLmZsYXQoKTtlbHNle2NvbnN0IHI9dFtuLiRnZXRQYXJlbnRdKCk7aWYoISh0PXIpKXJldHVybiBudWxsO2Q9LTEsZT1bdF19fXJldHVybiAwPT09ZS5sZW5ndGg/bnVsbDplfSxyKDEzOSk7dmFyIG49cigyMjgpLGE9cigxNDQpO2NvbnN0IGk9L15bXi5bXSsvLHM9L15bXlxdXSsvLG89e2RvdDowLGRvdERvdDoxLGRvdEhhc2g6Mixkb3RCcmFja2V0OjMsZG90UGFyZW46NH0sYz1uZXcgTWFwKFtbIiRkYXRhIiwoZSx0KT0+ZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZV0sWyIkcmVjb3JkIiwoZSx0KT0+KGUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmUpW24uJGdldENoaWxkcmVuXSgpWzBdXSxbIiR0ZW1wbGF0ZSIsKGUsdCk9PmUudGVtcGxhdGVdLFsiJGNvbm5lY3Rpb25TZXQiLChlLHQpPT5lLmNvbm5lY3Rpb25TZXRdLFsiJGZvcm0iLChlLHQpPT5lLmZvcm1dLFsiJGxheW91dCIsKGUsdCk9PmUubGF5b3V0XSxbIiRob3N0IiwoZSx0KT0+ZS5ob3N0XSxbIiRkYXRhV2luZG93IiwoZSx0KT0+ZS5kYXRhV2luZG93XSxbIiRldmVudCIsKGUsdCk9PmUuZXZlbnRdLFsiISIsKGUsdCk9PmUuZGF0YXNldHNdLFsiJHhmYSIsKGUsdCk9PmVdLFsieGZhIiwoZSx0KT0+ZV0sWyIkIiwoZSx0KT0+dF1dKSxsPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGgoZSx0KXtsZXQgcj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLG49ZS5tYXRjaChpKTtpZighbilyZXR1cm4gbnVsbDtsZXRbY109bjtjb25zdCBsPVt7bmFtZTpjLGNhY2hlTmFtZToiLiIrYyxpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbCxvcGVyYXRvcjpvLmRvdH1dO2xldCBoPWMubGVuZ3RoO2Zvcig7aDxlLmxlbmd0aDspe2NvbnN0IGQ9aDtpZigiWyI9PT1lLmNoYXJBdChoKyspKXtpZihuPWUuc2xpY2UoaCkubWF0Y2gocyksIW4pcmV0dXJuKDAsYS53YXJuKSgiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpLG51bGw7bC5hdCgtMSkuaW5kZXg9IioiPT09KHU9KHU9blswXSkudHJpbSgpKT8xLzA6cGFyc2VJbnQodSwxMCl8fDAsaCs9blswXS5sZW5ndGgrMTtjb250aW51ZX1sZXQgZjtzd2l0Y2goZS5jaGFyQXQoaCkpe2Nhc2UiLiI6aWYoIXQpcmV0dXJuIG51bGw7aCsrLGY9by5kb3REb3Q7YnJlYWs7Y2FzZSIjIjpoKyssZj1vLmRvdEhhc2g7YnJlYWs7Y2FzZSJbIjppZihyKXJldHVybigwLGEud2FybikoIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgRm9ybUNhbGMgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIiksbnVsbDtmPW8uZG90QnJhY2tldDticmVhaztjYXNlIigiOmlmKHIpcmV0dXJuKDAsYS53YXJuKSgiWEZBIC0gU09NIGV4cHJlc3Npb24gY29udGFpbnMgYSBKYXZhU2NyaXB0IHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpLG51bGw7Zj1vLmRvdFBhcmVuO2JyZWFrO2RlZmF1bHQ6Zj1vLmRvdH1pZihuPWUuc2xpY2UoaCkubWF0Y2goaSksIW4pYnJlYWs7W2NdPW4saCs9Yy5sZW5ndGgsbC5wdXNoKHtuYW1lOmMsY2FjaGVOYW1lOmUuc2xpY2UoZCxoKSxvcGVyYXRvcjpmLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsfSl9dmFyIHU7cmV0dXJuIGx9fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRGF0YUhhbmRsZXI9dm9pZCAwLHIoMTM5KTt2YXIgbj1yKDIyOCk7dC5EYXRhSGFuZGxlcj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10LHRoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW24uJGdldENoaWxkcmVuXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3Qgcj10LmF0KC0xKSxbYSxpXT1yO2lmKGErMT09PWkubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IHM9aVsrK3JbMF1dLG89ZS5nZXQoc1tuLiR1aWRdKTtpZihvKXNbbi4kc2V0VmFsdWVdKG8pO2Vsc2V7Y29uc3QgdD1zW24uJGdldEF0dHJpYnV0ZXNdKCk7Zm9yKGNvbnN0IHIgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChyW24uJHVpZF0pO2lmKHQpe3Jbbi4kc2V0VmFsdWVdKHQpO2JyZWFrfX19Y29uc3QgYz1zW24uJGdldENoaWxkcmVuXSgpO2MubGVuZ3RoPjAmJnQucHVzaChbLTEsY10pfWNvbnN0IHI9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W24uJGdldENoaWxkcmVuXSgpKSJkYXRhIiE9PWVbbi4kbm9kZU5hbWVdJiZlW24uJHRvU3RyaW5nXShyKTtyZXR1cm4gdGhpcy5kYXRhW24uJHRvU3RyaW5nXShyKSxyLnB1c2goIjwveGZhOmRhdGFzZXRzPiIpLHIuam9pbigiIil9fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlhGQVBhcnNlcj12b2lkIDAscigxMTYpLHIoMTI2KSxyKDEyOCkscigxMzEpLHIoMTMzKSxyKDEzNSkscigxMzcpLHIoMTM5KTt2YXIgbj1yKDIyOCksYT1yKDIxNyksaT1yKDI0NCkscz1yKDE0NCk7Y2xhc3MgbyBleHRlbmRzIGEuWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtzdXBlcigpLHRoaXMuX2J1aWxkZXI9bmV3IGkuQnVpbGRlcihlKSx0aGlzLl9zdGFjaz1bXSx0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9LHRoaXMuX2lkcz1uZXcgTWFwLHRoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKSx0aGlzLl9lcnJvckNvZGU9YS5YTUxQYXJzZXJFcnJvckNvZGUuTm9FcnJvcix0aGlzLl93aGl0ZVJlZ2V4PS9eXHMrJC8sdGhpcy5fbmJzcHM9L1x4YTArL2csdGhpcy5fcmljaFRleHQ9dH1wYXJzZShlKXtpZih0aGlzLnBhcnNlWG1sKGUpLHRoaXMuX2Vycm9yQ29kZT09PWEuWE1MUGFyc2VyRXJyb3JDb2RlLk5vRXJyb3IpcmV0dXJuIHRoaXMuX2N1cnJlbnRbbi4kZmluYWxpemVdKCksdGhpcy5fY3VycmVudC5lbGVtZW50fW9uVGV4dChlKXtlPWUucmVwbGFjZSh0aGlzLl9uYnNwcywoZT0+ZS5zbGljZSgxKSsiICIpKSx0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtuLiRhY2NlcHRXaGl0ZXNwYWNlXSgpP3RoaXMuX2N1cnJlbnRbbi4kb25UZXh0XShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbbi4kb25UZXh0XShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W24uJG9uVGV4dF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCByPW51bGwsYT1udWxsO2NvbnN0IGk9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6Yyx2YWx1ZTpsfW9mIGUpaWYoInhtbG5zIj09PWMpcj8oMCxzLndhcm4pKCJYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8Ii5jb25jYXQodCwiPiIpKTpyPWw7ZWxzZSBpZihjLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPWMuc3Vic3RyaW5nKDYpO2F8fChhPVtdKSxhLnB1c2goe3ByZWZpeDplLHZhbHVlOmx9KX1lbHNle2NvbnN0IGU9Yy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKWlbY109bDtlbHNle3ZhciBvO2xldCB0PWlbbi4kbnNBdHRyaWJ1dGVzXTt0fHwodD1pW24uJG5zQXR0cmlidXRlc109T2JqZWN0LmNyZWF0ZShudWxsKSk7Y29uc3RbcixhXT1bYy5zbGljZSgwLGUpLGMuc2xpY2UoZSsxKV07KChvPXQpW3JdfHwob1tyXT1PYmplY3QuY3JlYXRlKG51bGwpKSlbYV09bH19cmV0dXJuW3IsYSxpXX1fZ2V0TmFtZUFuZFByZWZpeChlLHQpe2NvbnN0IHI9ZS5pbmRleE9mKCI6Iik7cmV0dXJuLTE9PT1yP1tlLG51bGxdOltlLnN1YnN0cmluZyhyKzEpLHQ/IiI6ZS5zdWJzdHJpbmcoMCxyKV19b25CZWdpbkVsZW1lbnQoZSx0LHIpe2NvbnN0W2EsaSxzXT10aGlzLl9ta0F0dHJpYnV0ZXModCxlKSxbbyxjXT10aGlzLl9nZXROYW1lQW5kUHJlZml4KGUsdGhpcy5fYnVpbGRlci5pc05zQWdub3N0aWMoKSksbD10aGlzLl9idWlsZGVyLmJ1aWxkKHtuc1ByZWZpeDpjLG5hbWU6byxhdHRyaWJ1dGVzOnMsbmFtZXNwYWNlOmEscHJlZml4ZXM6aX0pO2xbbi4kZ2xvYmFsRGF0YV09dGhpcy5fZ2xvYmFsRGF0YSxyPyhsW24uJGZpbmFsaXplXSgpLHRoaXMuX2N1cnJlbnRbbi4kb25DaGlsZF0obCkmJmxbbi4kc2V0SWRdKHRoaXMuX2lkcyksbFtuLiRjbGVhbl0odGhpcy5fYnVpbGRlcikpOih0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpLHRoaXMuX2N1cnJlbnQ9bCl9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W24uJGlzQ0RBVEFYbWxdKCkmJiJzdHJpbmciPT10eXBlb2YgdFtuLiRjb250ZW50XSl7Y29uc3QgZT1uZXcgbztlLl9nbG9iYWxEYXRhPXRoaXMuX2dsb2JhbERhdGE7Y29uc3Qgcj1lLnBhcnNlKHRbbi4kY29udGVudF0pO3Rbbi4kY29udGVudF09bnVsbCx0W24uJG9uQ2hpbGRdKHIpfXRbbi4kZmluYWxpemVdKCksdGhpcy5fY3VycmVudD10aGlzLl9zdGFjay5wb3AoKSx0aGlzLl9jdXJyZW50W24uJG9uQ2hpbGRdKHQpJiZ0W24uJHNldElkXSh0aGlzLl9pZHMpLHRbbi4kY2xlYW5dKHRoaXMuX2J1aWxkZXIpfW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fXQuWEZBUGFyc2VyPW99LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5CdWlsZGVyPXZvaWQgMCxyKDEzOSk7dmFyIG49cigyMzQpLGE9cigyMjgpLGk9cigyNDUpLHM9cigyMzApLG89cigyNTQpLGM9cigxNDQpLGw9cigyNDApO2NsYXNzIGggZXh0ZW5kcyBsLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigtMSwicm9vdCIsT2JqZWN0LmNyZWF0ZShudWxsKSksdGhpcy5lbGVtZW50PW51bGwsdGhpc1thLiRpZHNdPWV9W2EuJG9uQ2hpbGRdKGUpe3JldHVybiB0aGlzLmVsZW1lbnQ9ZSwhMH1bYS4kZmluYWxpemVdKCl7c3VwZXJbYS4kZmluYWxpemVdKCksdGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2Ygcy5UZW1wbGF0ZSYmKHRoaXNbYS4kaWRzXS5zZXQoYS4kcm9vdCx0aGlzLmVsZW1lbnQpLHRoaXMuZWxlbWVudC50ZW1wbGF0ZVthLiRyZXNvbHZlUHJvdG90eXBlc10odGhpc1thLiRpZHNdKSx0aGlzLmVsZW1lbnQudGVtcGxhdGVbYS4kaWRzXT10aGlzW2EuJGlkc10pfX1jbGFzcyB1IGV4dGVuZHMgbC5YRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bYS4kb25DaGlsZF0oZSl7cmV0dXJuITF9fXQuQnVpbGRlcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsO3RoaXMuX25hbWVzcGFjZVN0YWNrPVtdLHRoaXMuX25zQWdub3N0aWNMZXZlbD0wLHRoaXMuX25hbWVzcGFjZVByZWZpeGVzPW5ldyBNYXAsdGhpcy5fbmFtZXNwYWNlcz1uZXcgTWFwLHRoaXMuX25leHROc0lkPU1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMobi5OYW1lc3BhY2VJZHMpLm1hcCgoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSkpKSx0aGlzLl9jdXJyZW50TmFtZXNwYWNlPWV8fG5ldyBvLlVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgaChlKX1idWlsZChlKXtsZXR7bnNQcmVmaXg6dCxuYW1lOnIsYXR0cmlidXRlczpzLG5hbWVzcGFjZTpvLHByZWZpeGVzOmN9PWU7Y29uc3QgbD1udWxsIT09bztpZihsJiYodGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKSx0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShvKSksYyYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KGMpLHMuaGFzT3duUHJvcGVydHkoYS4kbnNBdHRyaWJ1dGVzKSl7Y29uc3QgZT1pLk5hbWVzcGFjZVNldFVwLmRhdGFzZXRzLHQ9c1thLiRuc0F0dHJpYnV0ZXNdO2xldCByPW51bGw7Zm9yKGNvbnN0W24sYV1vZiBPYmplY3QuZW50cmllcyh0KSlpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZShuKT09PWUpe3I9e3hmYTphfTticmVha31yP3NbYS4kbnNBdHRyaWJ1dGVzXT1yOmRlbGV0ZSBzW2EuJG5zQXR0cmlidXRlc119Y29uc3QgaD10aGlzLl9nZXROYW1lc3BhY2VUb1VzZSh0KSxkPShudWxsPT1oP3ZvaWQgMDpoW24uJGJ1aWxkWEZBT2JqZWN0XShyLHMpKXx8bmV3IHU7cmV0dXJuIGRbYS4kaXNOc0Fnbm9zdGljXSgpJiZ0aGlzLl9uc0Fnbm9zdGljTGV2ZWwrKywobHx8Y3x8ZFthLiRpc05zQWdub3N0aWNdKCkpJiYoZFthLiRjbGVhbnVwXT17aGFzTmFtZXNwYWNlOmwscHJlZml4ZXM6Yyxuc0Fnbm9zdGljOmRbYS4kaXNOc0Fnbm9zdGljXSgpfSksZH1pc05zQWdub3N0aWMoKXtyZXR1cm4gdGhpcy5fbnNBZ25vc3RpY0xldmVsPjB9X3NlYXJjaE5hbWVzcGFjZShlKXtsZXQgdD10aGlzLl9uYW1lc3BhY2VzLmdldChlKTtpZih0KXJldHVybiB0O2Zvcihjb25zdFtyLHtjaGVjazphfV1vZiBPYmplY3QuZW50cmllcyhuLk5hbWVzcGFjZUlkcykpaWYoYShlKSl7aWYodD1pLk5hbWVzcGFjZVNldFVwW3JdLHQpcmV0dXJuIHRoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCksdDticmVha31yZXR1cm4gdD1uZXcgby5Vbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpLHRoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCksdH1fYWRkTmFtZXNwYWNlUHJlZml4KGUpe2Zvcihjb25zdHtwcmVmaXg6dCx2YWx1ZTpyfW9mIGUpe2NvbnN0IGU9dGhpcy5fc2VhcmNoTmFtZXNwYWNlKHIpO2xldCBuPXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldCh0KTtufHwobj1bXSx0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5zZXQodCxuKSksbi5wdXNoKGUpfX1fZ2V0TmFtZXNwYWNlVG9Vc2UoZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7Y29uc3QgdD10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSk7cmV0dXJuKG51bGw9PXQ/dm9pZCAwOnQubGVuZ3RoKT4wP3QuYXQoLTEpOigoMCxjLndhcm4pKCJVbmtub3duIG5hbWVzcGFjZSBwcmVmaXg6ICIuY29uY2F0KGUsIi4iKSksbnVsbCl9Y2xlYW4oZSl7Y29uc3R7aGFzTmFtZXNwYWNlOnQscHJlZml4ZXM6cixuc0Fnbm9zdGljOm59PWU7dCYmKHRoaXMuX2N1cnJlbnROYW1lc3BhY2U9dGhpcy5fbmFtZXNwYWNlU3RhY2sucG9wKCkpLHImJnIuZm9yRWFjaCgoZT0+e2xldHtwcmVmaXg6dH09ZTt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQodCkucG9wKCl9KSksbiYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk5hbWVzcGFjZVNldFVwPXZvaWQgMDt2YXIgbj1yKDI0NiksYT1yKDI0NyksaT1yKDI0OCkscz1yKDI0OSksbz1yKDI1MCksYz1yKDI1MSksbD1yKDIzMCksaD1yKDI1MiksdT1yKDI1Myk7Y29uc3QgZD17Y29uZmlnOm4uQ29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246YS5Db25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOmkuRGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OnMuTG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpvLlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OmMuU3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpsLlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpoLlhkcE5hbWVzcGFjZSx4aHRtbDp1LlhodG1sTmFtZXNwYWNlfTt0Lk5hbWVzcGFjZVNldFVwPWR9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Db25maWdOYW1lc3BhY2U9dm9pZCAwLHIoMTM5KTt2YXIgbj1yKDIzNCksYT1yKDIyOCksaT1yKDI0MCkscz1yKDIzNyksbz1yKDE0NCk7Y29uc3QgYz1uLk5hbWVzcGFjZUlkcy5jb25maWcuaWQ7Y2xhc3MgbCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImFjcm9iYXQiLCEwKSx0aGlzLmFjcm9iYXQ3PW51bGwsdGhpcy5hdXRvU2F2ZT1udWxsLHRoaXMuY29tbW9uPW51bGwsdGhpcy52YWxpZGF0ZT1udWxsLHRoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbCx0aGlzLnN1Ym1pdFVybD1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgaCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImFjcm9iYXQ3IiwhMCksdGhpcy5keW5hbWljUmVuZGVyPW51bGx9fWNsYXNzIHUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJBREJFX0pTQ29uc29sZSIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIGQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBmIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBnIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBwIGV4dGVuZHMgaS5PcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJhZGp1c3REYXRhIil9fWNsYXNzIG0gZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCwoZT0+ZT49MSYmZTw9OCkpfX1jbGFzcyBiIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWdlbnQiLCEwKSx0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiIsdGhpcy5jb21tb249bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIHkgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYWx3YXlzRW1iZWQiKX19Y2xhc3MgdyBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImFtZCIpfX1jbGFzcyB2IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYXJlYSIpLHRoaXMubGV2ZWw9KDAscy5nZXRJbnRlZ2VyKSh7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KSx0aGlzLm5hbWU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyB4IGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBTIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBBIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYmFzZSIpfX1jbGFzcyBrIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYmF0Y2hPdXRwdXQiKSx0aGlzLmZvcm1hdD0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5mb3JtYXQsWyJub25lIiwiY29uY2F0IiwiemlwIiwiemlwQ29tcHJlc3MiXSl9fWNsYXNzIEMgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiYmVoYXZpb3JPdmVycmlkZSIpfVthLiRmaW5hbGl6ZV0oKXt0aGlzW2EuJGNvbnRlbnRdPW5ldyBNYXAodGhpc1thLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+ZS5pbmNsdWRlcygiOiIpKSkubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKX19Y2xhc3MgTyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNhY2hlIiwhMCksdGhpcy50ZW1wbGF0ZUNhY2hlPW51bGx9fWNsYXNzIEYgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNoYW5nZSIpfX1jbGFzcyBJIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29tbW9uIiwhMCksdGhpcy5kYXRhPW51bGwsdGhpcy5sb2NhbGU9bnVsbCx0aGlzLmxvY2FsZVNldD1udWxsLHRoaXMubWVzc2FnaW5nPW51bGwsdGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsLHRoaXMudGVtcGxhdGU9bnVsbCx0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbCx0aGlzLnZlcnNpb25Db250cm9sPW51bGwsdGhpcy5sb2c9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb21wcmVzcyIpLHRoaXMuc2NvcGU9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuc2NvcGUsWyJpbWFnZU9ubHkiLCJkb2N1bWVudCJdKX19Y2xhc3MgTSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIEUgZXh0ZW5kcyBpLk9wdGlvbjEwe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIFAgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjb21wcmVzc2lvbiIsITApLHRoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGwsdGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsLHRoaXMubGV2ZWw9bnVsbCx0aGlzLnR5cGU9bnVsbH19Y2xhc3MgUiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNvbmZpZyIsITApLHRoaXMuYWNyb2JhdD1udWxsLHRoaXMucHJlc2VudD1udWxsLHRoaXMudHJhY2U9bnVsbCx0aGlzLmFnZW50PW5ldyBpLlhGQU9iamVjdEFycmF5fX1jbGFzcyBOIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29uZm9ybWFuY2UiLFsiQSIsIkIiXSl9fWNsYXNzIEQgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImNvbnRlbnRDb3B5Iil9fWNsYXNzIEIgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIEwgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJjcmVhdG9yIil9fWNsYXNzIF8gZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiY3VycmVudFBhZ2UiLDAsKGU9PmU+PTApKX19Y2xhc3MgaiBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImRhdGEiLCEwKSx0aGlzLmFkanVzdERhdGE9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9bnVsbCx0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsLHRoaXMub3V0cHV0WFNMPW51bGwsdGhpcy5yYW5nZT1udWxsLHRoaXMucmVjb3JkPW51bGwsdGhpcy5zdGFydE5vZGU9bnVsbCx0aGlzLnVyaT1udWxsLHRoaXMud2luZG93PW51bGwsdGhpcy54c2w9bnVsbCx0aGlzLmV4Y2x1ZGVOUz1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLnRyYW5zZm9ybT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgVSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImRlYnVnIiwhMCksdGhpcy51cmk9bnVsbH19Y2xhc3MgJCBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkZWZhdWx0VHlwZWZhY2UiKSx0aGlzLndyaXRpbmdTY3JpcHQ9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgWCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBIIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIHEgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkcml2ZXIiLCEwKSx0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiIsdGhpcy5mb250SW5mbz1udWxsLHRoaXMueGRjPW51bGx9fWNsYXNzIHogZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIEcgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBXIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbWJlZCIpfX1jbGFzcyBWIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmNyeXB0Iil9fWNsYXNzIEsgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmNyeXB0aW9uIiwhMCksdGhpcy5lbmNyeXB0PW51bGwsdGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbCx0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIFkgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEogZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlbmZvcmNlIil9fWNsYXNzIFogZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlcXVhdGUiKSx0aGlzLmZvcmNlPSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pLHRoaXMuZnJvbT1lLmZyb218fCIiLHRoaXMudG89ZS50b3x8IiJ9fWNsYXNzIFEgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJlcXVhdGVSYW5nZSIpLHRoaXMuZnJvbT1lLmZyb218fCIiLHRoaXMudG89ZS50b3x8IiIsdGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8scj10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCBuIG9mIHIuc3BsaXQoIiwiKS5tYXAoKGU9PmUudHJpbSgpKSkuZmlsdGVyKChlPT4hIWUpKSluPW4uc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IHI9ZS5tYXRjaCh0KTtyZXR1cm4gcj9wYXJzZUludChyWzFdLDE2KTowfSkpLDE9PT1uLmxlbmd0aCYmbi5wdXNoKG5bMF0pLGUucHVzaChuKTtyZXR1cm4oMCxvLnNoYWRvdykodGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgZWUgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZXhjbHVkZSIpfVthLiRmaW5hbGl6ZV0oKXt0aGlzW2EuJGNvbnRlbnRdPXRoaXNbYS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PmUmJlsiY2FsY3VsYXRlIiwiY2xvc2UiLCJlbnRlciIsImV4aXQiLCJpbml0aWFsaXplIiwicmVhZHkiLCJ2YWxpZGF0ZSJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIHRlIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZXhjbHVkZU5TIil9fWNsYXNzIHJlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIG5lIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZm9udEluZm8iLCEwKSx0aGlzLmVtYmVkPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLnN1YnNldEJlbG93PW51bGwsdGhpcy5hbHdheXNFbWJlZD1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLmRlZmF1bHRUeXBlZmFjZT1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLm5ldmVyRW1iZWQ9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIGFlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJmb3JtRmllbGRGaWxsaW5nIil9fWNsYXNzIGllIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywiZ3JvdXBQYXJlbnQiKX19Y2xhc3Mgc2UgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJpZkVtcHR5IixbImRhdGFWYWx1ZSIsImRhdGFHcm91cCIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3Mgb2UgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJpbmNsdWRlWERQQ29udGVudCIpfX1jbGFzcyBjZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImluY3JlbWVudGFsTG9hZCIsWyJub25lIiwiZm9yd2FyZE9ubHkiXSl9fWNsYXNzIGxlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJpbmNyZW1lbnRhbE1lcmdlIil9fWNsYXNzIGhlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJpbnRlcmFjdGl2ZSIpfX1jbGFzcyB1ZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImpvZyIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm5vbmUiLCJwYWdlU2V0Il0pfX1jbGFzcyBkZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxhYmVsUHJpbnRlciIsITApLHRoaXMubmFtZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKSx0aGlzLmJhdGNoT3V0cHV0PW51bGwsdGhpcy5mbGlwTGFiZWw9bnVsbCx0aGlzLmZvbnRJbmZvPW51bGwsdGhpcy54ZGM9bnVsbH19Y2xhc3MgZmUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJsYXlvdXQiLFsicGFnaW5hdGUiLCJwYW5lbCJdKX19Y2xhc3MgZ2UgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBwZSBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibGluZWFyaXplZCIpfX1jbGFzcyBtZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxvY2FsZSIpfX1jbGFzcyBiZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxvY2FsZVNldCIpfX1jbGFzcyB5ZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsImxvZyIsITApLHRoaXMubW9kZT1udWxsLHRoaXMudGhyZXNob2xkPW51bGwsdGhpcy50bz1udWxsLHRoaXMudXJpPW51bGx9fWNsYXNzIHdlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibWFwIiwhMCksdGhpcy5lcXVhdGU9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy5lcXVhdGVSYW5nZT1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgdmUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJtZWRpdW1JbmZvIiwhMCksdGhpcy5tYXA9bnVsbH19Y2xhc3MgeGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJtZXNzYWdlIiwhMCksdGhpcy5tc2dJZD1udWxsLHRoaXMuc2V2ZXJpdHk9bnVsbH19Y2xhc3MgU2UgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJtZXNzYWdpbmciLCEwKSx0aGlzLm1lc3NhZ2U9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIGtlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgQ2UgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywibXNnSWQiLDEsKGU9PmU+PTEpKX19Y2xhc3MgT2UgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJuYW1lQXR0ciIpfX1jbGFzcyBGZSBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJuZXZlckVtYmVkIil9fWNsYXNzIEllIGV4dGVuZHMgaS5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm51bWJlck9mQ29waWVzIixudWxsLChlPT5lPj0yJiZlPD01KSl9fWNsYXNzIFRlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywib3BlbkFjdGlvbiIsITApLHRoaXMuZGVzdGluYXRpb249bnVsbH19Y2xhc3MgTWUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJvdXRwdXQiLCEwKSx0aGlzLnRvPW51bGwsdGhpcy50eXBlPW51bGwsdGhpcy51cmk9bnVsbH19Y2xhc3MgRWUgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJvdXRwdXRCaW4iKX19Y2xhc3MgUGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJvdXRwdXRYU0wiLCEwKSx0aGlzLnVyaT1udWxsfX1jbGFzcyBSZSBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIm92ZXJwcmludCIsWyJub25lIiwiYm90aCIsImRyYXciLCJmaWVsZCJdKX19Y2xhc3MgTmUgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWNrZXRzIil9W2EuJGZpbmFsaXplXSgpeyIqIiE9PXRoaXNbYS4kY29udGVudF0mJih0aGlzW2EuJGNvbnRlbnRdPXRoaXNbYS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIERlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGFnZU9mZnNldCIpLHRoaXMueD0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUueCxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSksdGhpcy55PSgwLHMuZ2V0SW50ZWdlcikoe2RhdGE6ZS55LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KX19Y2xhc3MgQmUgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdlUmFuZ2UiKX1bYS4kZmluYWxpemVdKCl7Y29uc3QgZT10aGlzW2EuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlPT5wYXJzZUludChlLDEwKSkpLHQ9W107Zm9yKGxldCByPTAsbj1lLmxlbmd0aDtyPG47cis9Mil0LnB1c2goZS5zbGljZShyLHIrMikpO3RoaXNbYS4kY29udGVudF09dH19Y2xhc3MgTGUgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgX2UgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBqZSBleHRlbmRzIGkuSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwYXJ0IiwxLChlPT4hMSkpfX1jbGFzcyBVZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBjbCIsITApLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMuYmF0Y2hPdXRwdXQ9bnVsbCx0aGlzLmZvbnRJbmZvPW51bGwsdGhpcy5qb2c9bnVsbCx0aGlzLm1lZGl1bUluZm89bnVsbCx0aGlzLm91dHB1dEJpbj1udWxsLHRoaXMucGFnZU9mZnNldD1udWxsLHRoaXMuc3RhcGxlPW51bGwsdGhpcy54ZGM9bnVsbH19Y2xhc3MgJGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwZGYiLCEwKSx0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLmFkb2JlRXh0ZW5zaW9uTGV2ZWw9bnVsbCx0aGlzLmJhdGNoT3V0cHV0PW51bGwsdGhpcy5jb21wcmVzc2lvbj1udWxsLHRoaXMuY3JlYXRvcj1udWxsLHRoaXMuZW5jcnlwdGlvbj1udWxsLHRoaXMuZm9udEluZm89bnVsbCx0aGlzLmludGVyYWN0aXZlPW51bGwsdGhpcy5saW5lYXJpemVkPW51bGwsdGhpcy5vcGVuQWN0aW9uPW51bGwsdGhpcy5wZGZhPW51bGwsdGhpcy5wcm9kdWNlcj1udWxsLHRoaXMucmVuZGVyUG9saWN5PW51bGwsdGhpcy5zY3JpcHRNb2RlbD1udWxsLHRoaXMuc2lsZW50UHJpbnQ9bnVsbCx0aGlzLnN1Ym1pdEZvcm1hdD1udWxsLHRoaXMudGFnZ2VkPW51bGwsdGhpcy52ZXJzaW9uPW51bGwsdGhpcy52aWV3ZXJQcmVmZXJlbmNlcz1udWxsLHRoaXMueGRjPW51bGx9fWNsYXNzIFhlIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicGRmYSIsITApLHRoaXMuYW1kPW51bGwsdGhpcy5jb25mb3JtYW5jZT1udWxsLHRoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbCx0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgSGUgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwZXJtaXNzaW9ucyIsITApLHRoaXMuYWNjZXNzaWJsZUNvbnRlbnQ9bnVsbCx0aGlzLmNoYW5nZT1udWxsLHRoaXMuY29udGVudENvcHk9bnVsbCx0aGlzLmRvY3VtZW50QXNzZW1ibHk9bnVsbCx0aGlzLmZvcm1GaWVsZEZpbGxpbmc9bnVsbCx0aGlzLm1vZGlmeUFubm90cz1udWxsLHRoaXMucGxhaW50ZXh0TWV0YWRhdGE9bnVsbCx0aGlzLnByaW50PW51bGwsdGhpcy5wcmludEhpZ2hRdWFsaXR5PW51bGx9fWNsYXNzIHFlIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwaWNrVHJheUJ5UERGU2l6ZSIpfX1jbGFzcyB6ZSBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBpY3R1cmUiKX19Y2xhc3MgR2UgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBsYWludGV4dE1ldGFkYXRhIil9fWNsYXNzIFdlIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBWZSBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInByZXNlbnQiLCEwKSx0aGlzLmJlaGF2aW9yT3ZlcnJpZGU9bnVsbCx0aGlzLmNhY2hlPW51bGwsdGhpcy5jb21tb249bnVsbCx0aGlzLmNvcGllcz1udWxsLHRoaXMuZGVzdGluYXRpb249bnVsbCx0aGlzLmluY3JlbWVudGFsTWVyZ2U9bnVsbCx0aGlzLmxheW91dD1udWxsLHRoaXMub3V0cHV0PW51bGwsdGhpcy5vdmVycHJpbnQ9bnVsbCx0aGlzLnBhZ2luYXRpb249bnVsbCx0aGlzLnBhZ2luYXRpb25PdmVycmlkZT1udWxsLHRoaXMuc2NyaXB0PW51bGwsdGhpcy52YWxpZGF0ZT1udWxsLHRoaXMueGRwPW51bGwsdGhpcy5kcml2ZXI9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy5sYWJlbFByaW50ZXI9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy5wY2w9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy5wZGY9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy5wcz1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLnN1Ym1pdFVybD1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLndlYkNsaWVudD1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLnpwbD1uZXcgaS5YRkFPYmplY3RBcnJheX19Y2xhc3MgS2UgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInByaW50Iil9fWNsYXNzIFllIGV4dGVuZHMgaS5PcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcmludEhpZ2hRdWFsaXR5Iil9fWNsYXNzIEplIGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFplIGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicHJpbnRlck5hbWUiKX19Y2xhc3MgUWUgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJwcm9kdWNlciIpfX1jbGFzcyBldCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInBzIiwhMCksdGhpcy5uYW1lPWUubmFtZXx8IiIsdGhpcy5iYXRjaE91dHB1dD1udWxsLHRoaXMuZm9udEluZm89bnVsbCx0aGlzLmpvZz1udWxsLHRoaXMubWVkaXVtSW5mbz1udWxsLHRoaXMub3V0cHV0QmluPW51bGwsdGhpcy5zdGFwbGU9bnVsbCx0aGlzLnhkYz1udWxsfX1jbGFzcyB0dCBleHRlbmRzIGkuQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJyYW5nZSIpfVthLiRmaW5hbGl6ZV0oKXt0aGlzW2EuJGNvbnRlbnRdPXRoaXNbYS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PmUuc3BsaXQoIi0iKS5tYXAoKGU9PnBhcnNlSW50KGUudHJpbSgpLDEwKSkpKSkuZmlsdGVyKChlPT5lLmV2ZXJ5KChlPT4haXNOYU4oZSkpKSkpLm1hcCgoZT0+KDE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pLGUpKSl9fWNsYXNzIHJ0IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInJlY29yZCIpfVthLiRmaW5hbGl6ZV0oKXt0aGlzW2EuJGNvbnRlbnRdPXRoaXNbYS4kY29udGVudF0udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1thLiRjb250ZW50XSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1thLiRjb250ZW50XT1lKX19Y2xhc3MgbnQgZXh0ZW5kcyBpLkNvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicmVsZXZhbnQiKX1bYS4kZmluYWxpemVdKCl7dGhpc1thLiRjb250ZW50XT10aGlzW2EuJGNvbnRlbnRdLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIGF0IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInJlbmFtZSIpfVthLiRmaW5hbGl6ZV0oKXt0aGlzW2EuJGNvbnRlbnRdPXRoaXNbYS4kY29udGVudF0udHJpbSgpLCh0aGlzW2EuJGNvbnRlbnRdLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fG5ldyBSZWdFeHAoIltcXHB7TH1fXVtcXHB7TH1cXGQuX1xccHtNfS1dKiIsInUiKS50ZXN0KHRoaXNbYS4kY29udGVudF0pKSYmKDAsby53YXJuKSgiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIGl0IGV4dGVuZHMgaS5PcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3Mgc3QgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJydW5TY3JpcHRzIixbImJvdGgiLCJjbGllbnQiLCJub25lIiwic2VydmVyIl0pfX1jbGFzcyBvdCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInNjcmlwdCIsITApLHRoaXMuY3VycmVudFBhZ2U9bnVsbCx0aGlzLmV4Y2x1ZGU9bnVsbCx0aGlzLnJ1blNjcmlwdHM9bnVsbH19Y2xhc3MgY3QgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJzY3JpcHRNb2RlbCIsWyJYRkEiLCJub25lIl0pfX1jbGFzcyBsdCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIGh0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic2lsZW50UHJpbnQiLCEwKSx0aGlzLmFkZFNpbGVudFByaW50PW51bGwsdGhpcy5wcmludGVyTmFtZT1udWxsfX1jbGFzcyB1dCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN0YXBsZSIpLHRoaXMubW9kZT0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5tb2RlLFsidXNlUHJpbnRlclNldHRpbmciLCJvbiIsIm9mZiJdKX19Y2xhc3MgZHQgZXh0ZW5kcyBpLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJzdGFydE5vZGUiKX19Y2xhc3MgZnQgZXh0ZW5kcyBpLkludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic3RhcnRQYWdlIiwwLChlPT4hMCkpfX1jbGFzcyBndCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIHB0IGV4dGVuZHMgaS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic3VibWl0VXJsIil9fWNsYXNzIG10IGV4dGVuZHMgaS5JbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInN1YnNldEJlbG93IiwxMDAsKGU9PmU+PTAmJmU8PTEwMCkpfX1jbGFzcyBidCBleHRlbmRzIGkuT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgeXQgZXh0ZW5kcyBpLk9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRhZ2dlZCIpfX1jbGFzcyB3dCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRlbXBsYXRlIiwhMCksdGhpcy5iYXNlPW51bGwsdGhpcy5yZWxldmFudD1udWxsLHRoaXMuc3RhcnRQYWdlPW51bGwsdGhpcy51cmk9bnVsbCx0aGlzLnhzbD1udWxsfX1jbGFzcyB2dCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyB4dCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInRvIixbIm51bGwiLCJtZW1vcnkiLCJzdGRlcnIiLCJzdGRvdXQiLCJzeXN0ZW0iLCJ1cmkiXSl9fWNsYXNzIFN0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidGVtcGxhdGVDYWNoZSIpLHRoaXMubWF4RW50cmllcz0oMCxzLmdldEludGVnZXIpKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEF0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidHJhY2UiLCEwKSx0aGlzLmFyZWE9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIGt0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywidHJhbnNmb3JtIiwhMCksdGhpcy5ncm91cFBhcmVudD1udWxsLHRoaXMuaWZFbXB0eT1udWxsLHRoaXMubmFtZUF0dHI9bnVsbCx0aGlzLnBpY3R1cmU9bnVsbCx0aGlzLnByZXNlbmNlPW51bGwsdGhpcy5yZW5hbWU9bnVsbCx0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgQ3QgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBPdCBleHRlbmRzIGkuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInVyaSIpfX1jbGFzcyBGdCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIEl0IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W2EuJGZpbmFsaXplXSgpe3RoaXNbYS4kY29udGVudF09dGhpc1thLiRjb250ZW50XS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcigoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpKX19Y2xhc3MgVHQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBNdCBleHRlbmRzIGkuT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsInZlcnNpb24iLFsiMS43IiwiMS42IiwiMS41IiwiMS40IiwiMS4zIiwiMS4yIl0pfX1jbGFzcyBFdCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIlZlcnNpb25Db250cm9sIiksdGhpcy5vdXRwdXRCZWxvdz0oMCxzLmdldFN0cmluZ09wdGlvbikoZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKSx0aGlzLnNvdXJjZUFib3ZlPSgwLHMuZ2V0U3RyaW5nT3B0aW9uKShlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pLHRoaXMuc291cmNlQmVsb3c9KDAscy5nZXRTdHJpbmdPcHRpb24pKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgUHQgZXh0ZW5kcyBpLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsITApLHRoaXMuQURCRV9KU0NvbnNvbGU9bnVsbCx0aGlzLkFEQkVfSlNEZWJ1Z2dlcj1udWxsLHRoaXMuYWRkVmlld2VyUHJlZmVyZW5jZXM9bnVsbCx0aGlzLmR1cGxleE9wdGlvbj1udWxsLHRoaXMuZW5mb3JjZT1udWxsLHRoaXMubnVtYmVyT2ZDb3BpZXM9bnVsbCx0aGlzLnBhZ2VSYW5nZT1udWxsLHRoaXMucGlja1RyYXlCeVBERlNpemU9bnVsbCx0aGlzLnByaW50U2NhbGluZz1udWxsfX1jbGFzcyBSdCBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIndlYkNsaWVudCIsITApLHRoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIix0aGlzLmZvbnRJbmZvPW51bGwsdGhpcy54ZGM9bnVsbH19Y2xhc3MgTnQgZXh0ZW5kcyBpLk9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIER0IGV4dGVuZHMgaS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGMsIndpbmRvdyIpfVthLiRmaW5hbGl6ZV0oKXtjb25zdCBlPXRoaXNbYS4kY29udGVudF0udHJpbSgpLnNwbGl0KC9ccyosXHMqLywyKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSk7ZS5zb21lKChlPT5pc05hTihlKSkpP3RoaXNbYS4kY29udGVudF09WzAsMF06KDE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pLHRoaXNbYS4kY29udGVudF09ZSl9fWNsYXNzIEJ0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywieGRjIiwhMCksdGhpcy51cmk9bmV3IGkuWEZBT2JqZWN0QXJyYXksdGhpcy54c2w9bmV3IGkuWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEx0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywieGRwIiwhMCksdGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIF90IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywieHNsIiwhMCksdGhpcy5kZWJ1Zz1udWxsLHRoaXMudXJpPW51bGx9fWNsYXNzIGp0IGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYywienBsIiwhMCksdGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiLHRoaXMuYmF0Y2hPdXRwdXQ9bnVsbCx0aGlzLmZsaXBMYWJlbD1udWxsLHRoaXMuZm9udEluZm89bnVsbCx0aGlzLnhkYz1udWxsfX1jbGFzcyBVdHtzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoVXQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFV0W2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgbChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBoKGUpfXN0YXRpYyBBREJFX0pTQ29uc29sZShlKXtyZXR1cm4gbmV3IHUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IGQoZSl9c3RhdGljIGFkZFNpbGVudFByaW50KGUpe3JldHVybiBuZXcgZihlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBnKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgcChlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IG0oZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgYihlKX1zdGF0aWMgYWx3YXlzRW1iZWQoZSl7cmV0dXJuIG5ldyB5KGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyB3KGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgdihlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IHgoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgUyhlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgayhlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEMoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgTyhlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgRihlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgSShlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBUKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBNKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IEUoZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgUihlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBOKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IEQoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBMKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IF8oZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBqKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IFUoZSl9c3RhdGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3ICQoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgWChlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IEgoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IHEoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IHooZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBHKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IFcoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBWKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgSyhlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgWShlKX1zdGF0aWMgZW5mb3JjZShlKXtyZXR1cm4gbmV3IEooZSl9c3RhdGljIGVxdWF0ZShlKXtyZXR1cm4gbmV3IFooZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgUShlKX1zdGF0aWMgZXhjbHVkZShlKXtyZXR1cm4gbmV3IGVlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyB0ZShlKX1zdGF0aWMgZmxpcExhYmVsKGUpe3JldHVybiBuZXcgcmUoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgbmUoZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBhZShlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBpZShlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IHNlKGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IG9lKGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBjZShlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IGxlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IGhlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyB1ZShlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgZGUoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IGZlKGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IGdlKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgcGUoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IG1lKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBiZShlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgeWUoZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IHdlKGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgdmUoZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyB4ZShlKX1zdGF0aWMgbWVzc2FnaW5nKGUpe3JldHVybiBuZXcgU2UoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBBZShlKX1zdGF0aWMgbW9kaWZ5QW5ub3RzKGUpe3JldHVybiBuZXcga2UoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgQ2UoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgT2UoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBGZShlKX1zdGF0aWMgbnVtYmVyT2ZDb3BpZXMoZSl7cmV0dXJuIG5ldyBJZShlKX1zdGF0aWMgb3BlbkFjdGlvbihlKXtyZXR1cm4gbmV3IFRlKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBNZShlKX1zdGF0aWMgb3V0cHV0QmluKGUpe3JldHVybiBuZXcgRWUoZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IFBlKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBSZShlKX1zdGF0aWMgcGFja2V0cyhlKXtyZXR1cm4gbmV3IE5lKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgRGUoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IEJlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgTGUoZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IF9lKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgamUoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFVlKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyAkZShlKX1zdGF0aWMgcGRmYShlKXtyZXR1cm4gbmV3IFhlKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IEhlKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IHFlKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgemUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgR2UoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgV2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBWZShlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBLZShlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFllKGUpfXN0YXRpYyBwcmludFNjYWxpbmcoZSl7cmV0dXJuIG5ldyBKZShlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBaZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBRZShlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBldChlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyB0dChlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgcnQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IGF0KGUpfXN0YXRpYyByZW5kZXJQb2xpY3koZSl7cmV0dXJuIG5ldyBpdChlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IHN0KGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBvdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBjdChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBsdChlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBodChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgdXQoZSl9c3RhdGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IGR0KGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBmdChlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgZ3QoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IHB0KGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IG10KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IGJ0KGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyB5dChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyB3dChlKX1zdGF0aWMgdGVtcGxhdGVDYWNoZShlKXtyZXR1cm4gbmV3IFN0KGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyB2dChlKX1zdGF0aWMgdG8oZSl7cmV0dXJuIG5ldyB4dChlKX1zdGF0aWMgdHJhY2UoZSl7cmV0dXJuIG5ldyBBdChlKX1zdGF0aWMgdHJhbnNmb3JtKGUpe3JldHVybiBuZXcga3QoZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBDdChlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgT3QoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgRnQoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgSXQoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBUdChlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IE10KGUpfXN0YXRpYyB2ZXJzaW9uQ29udHJvbChlKXtyZXR1cm4gbmV3IEV0KGUpfXN0YXRpYyB2aWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IFB0KGUpfXN0YXRpYyB3ZWJDbGllbnQoZSl7cmV0dXJuIG5ldyBSdChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IE50KGUpfXN0YXRpYyB3aW5kb3coZSl7cmV0dXJuIG5ldyBEdChlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgQnQoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IEx0KGUpfXN0YXRpYyB4c2woZSl7cmV0dXJuIG5ldyBfdChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcganQoZSl9fXQuQ29uZmlnTmFtZXNwYWNlPVV0fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT12b2lkIDA7dmFyIG49cigyMzQpLGE9cigyNDApO2NvbnN0IGk9bi5OYW1lc3BhY2VJZHMuY29ubmVjdGlvblNldC5pZDtjbGFzcyBzIGV4dGVuZHMgYS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwiY29ubmVjdGlvblNldCIsITApLHRoaXMud3NkbENvbm5lY3Rpb249bmV3IGEuWEZBT2JqZWN0QXJyYXksdGhpcy54bWxDb25uZWN0aW9uPW5ldyBhLlhGQU9iamVjdEFycmF5LHRoaXMueHNkQ29ubmVjdGlvbj1uZXcgYS5YRkFPYmplY3RBcnJheX19Y2xhc3MgbyBleHRlbmRzIGEuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksImVmZmVjdGl2ZUlucHV0UG9saWN5IiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGMgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJlZmZlY3RpdmVPdXRwdXRQb2xpY3kiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgbCBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIm9wZXJhdGlvbiIpLHRoaXMuaWQ9ZS5pZHx8IiIsdGhpcy5pbnB1dD1lLmlucHV0fHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLm91dHB1dD1lLm91dHB1dHx8IiIsdGhpcy51c2U9ZS51c2V8fCIiLHRoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBoIGV4dGVuZHMgYS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoaSwicm9vdEVsZW1lbnQiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgdSBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBY3Rpb24iKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgZCBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInNvYXBBZGRyZXNzIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGYgZXh0ZW5kcyBhLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ1cmkiKSx0aGlzLmlkPWUuaWR8fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXNlPWUudXNlfHwiIix0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgZyBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksIndzZGxBZGRyZXNzIiksdGhpcy5pZD1lLmlkfHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLnVzZT1lLnVzZXx8IiIsdGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIHAgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ3c2RsQ29ubmVjdGlvbiIsITApLHRoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIix0aGlzLm5hbWU9ZS5uYW1lfHwiIix0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGwsdGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbCx0aGlzLm9wZXJhdGlvbj1udWxsLHRoaXMuc29hcEFjdGlvbj1udWxsLHRoaXMuc29hcEFkZHJlc3M9bnVsbCx0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIG0gZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4bWxDb25uZWN0aW9uIiwhMCksdGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMudXJpPW51bGx9fWNsYXNzIGIgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJ4c2RDb25uZWN0aW9uIiwhMCksdGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiLHRoaXMubmFtZT1lLm5hbWV8fCIiLHRoaXMucm9vdEVsZW1lbnQ9bnVsbCx0aGlzLnVyaT1udWxsfX1jbGFzcyB5e3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZih5Lmhhc093blByb3BlcnR5KGUpKXJldHVybiB5W2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgcyhlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBvKGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBjKGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBsKGUpfXN0YXRpYyByb290RWxlbWVudChlKXtyZXR1cm4gbmV3IGgoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyB1KGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IGQoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IGYoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgZyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBwKGUpfXN0YXRpYyB4bWxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgbShlKX1zdGF0aWMgeHNkQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IGIoZSl9fXQuQ29ubmVjdGlvblNldE5hbWVzcGFjZT15fSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuRGF0YXNldHNOYW1lc3BhY2U9dm9pZCAwO3ZhciBuPXIoMjI4KSxhPXIoMjM0KSxpPXIoMjQwKTtjb25zdCBzPWEuTmFtZXNwYWNlSWRzLmRhdGFzZXRzLmlkO2NsYXNzIG8gZXh0ZW5kcyBpLlhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRhIixlKX1bbi4kaXNOc0Fnbm9zdGljXSgpe3JldHVybiEwfX1jbGFzcyBjIGV4dGVuZHMgaS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0YXNldHMiLCEwKSx0aGlzLmRhdGE9bnVsbCx0aGlzLlNpZ25hdHVyZT1udWxsfVtuLiRvbkNoaWxkXShlKXtjb25zdCB0PWVbbi4kbm9kZU5hbWVdOygiZGF0YSI9PT10JiZlW24uJG5hbWVzcGFjZUlkXT09PXN8fCJTaWduYXR1cmUiPT09dCYmZVtuLiRuYW1lc3BhY2VJZF09PT1hLk5hbWVzcGFjZUlkcy5zaWduYXR1cmUuaWQpJiYodGhpc1t0XT1lKSx0aGlzW24uJGFwcGVuZENoaWxkXShlKX19Y2xhc3MgbHtzdGF0aWNbYS4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYobC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gbFtlXSh0KX1zdGF0aWMgZGF0YXNldHMoZSl7cmV0dXJuIG5ldyBjKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgbyhlKX19dC5EYXRhc2V0c05hbWVzcGFjZT1sfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuTG9jYWxlU2V0TmFtZXNwYWNlPXZvaWQgMDt2YXIgbj1yKDIzNCksYT1yKDI0MCksaT1yKDIzNyk7Y29uc3Qgcz1uLk5hbWVzcGFjZUlkcy5sb2NhbGVTZXQuaWQ7Y2xhc3MgbyBleHRlbmRzIGEuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImNhbGVuZGFyU3ltYm9scyIsITApLHRoaXMubmFtZT0iZ3JlZ29yaWFuIix0aGlzLmRheU5hbWVzPW5ldyBhLlhGQU9iamVjdEFycmF5KDIpLHRoaXMuZXJhTmFtZXM9bnVsbCx0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbCx0aGlzLm1vbnRoTmFtZXM9bmV3IGEuWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIGMgZXh0ZW5kcyBhLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbCIpLHRoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIGwgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJjdXJyZW5jeVN5bWJvbHMiLCEwKSx0aGlzLmN1cnJlbmN5U3ltYm9sPW5ldyBhLlhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBoIGV4dGVuZHMgYS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF0ZVBhdHRlcm4iKSx0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIHUgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXRlUGF0dGVybnMiLCEwKSx0aGlzLmRhdGVQYXR0ZXJuPW5ldyBhLlhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBkIGV4dGVuZHMgYS5Db250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBmIGV4dGVuZHMgYS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZGF5Iil9fWNsYXNzIGcgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJkYXlOYW1lcyIsITApLHRoaXMuYWJicj0oMCxpLmdldEludGVnZXIpKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pLHRoaXMuZGF5PW5ldyBhLlhGQU9iamVjdEFycmF5KDcpfX1jbGFzcyBwIGV4dGVuZHMgYS5TdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywiZXJhIil9fWNsYXNzIG0gZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJlcmFOYW1lcyIsITApLHRoaXMuZXJhPW5ldyBhLlhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBiIGV4dGVuZHMgYS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibG9jYWxlIiwhMCksdGhpcy5kZXNjPWUuZGVzY3x8IiIsdGhpcy5uYW1lPSJpc29uYW1lIix0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsLHRoaXMuY3VycmVuY3lTeW1ib2xzPW51bGwsdGhpcy5kYXRlUGF0dGVybnM9bnVsbCx0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsLHRoaXMubnVtYmVyUGF0dGVybnM9bnVsbCx0aGlzLm51bWJlclN5bWJvbHM9bnVsbCx0aGlzLnRpbWVQYXR0ZXJucz1udWxsLHRoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIHkgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJsb2NhbGVTZXQiLCEwKSx0aGlzLmxvY2FsZT1uZXcgYS5YRkFPYmplY3RBcnJheX19Y2xhc3MgdyBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1lcmlkaWVtIil9fWNsYXNzIHYgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtZXJpZGllbU5hbWVzIiwhMCksdGhpcy5tZXJpZGllbT1uZXcgYS5YRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgeCBleHRlbmRzIGEuU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsIm1vbnRoIil9fWNsYXNzIFMgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJtb250aE5hbWVzIiwhMCksdGhpcy5hYmJyPSgwLGkuZ2V0SW50ZWdlcikoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSksdGhpcy5tb250aD1uZXcgYS5YRkFPYmplY3RBcnJheSgxMil9fWNsYXNzIEEgZXh0ZW5kcyBhLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJudW1iZXJQYXR0ZXJuIiksdGhpcy5uYW1lPSgwLGkuZ2V0U3RyaW5nT3B0aW9uKShlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBrIGV4dGVuZHMgYS5YRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocywibnVtYmVyUGF0dGVybnMiLCEwKSx0aGlzLm51bWJlclBhdHRlcm49bmV3IGEuWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIEMgZXh0ZW5kcyBhLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJudW1iZXJTeW1ib2wiKSx0aGlzLm5hbWU9KDAsaS5nZXRTdHJpbmdPcHRpb24pKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE8gZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJudW1iZXJTeW1ib2xzIiwhMCksdGhpcy5udW1iZXJTeW1ib2w9bmV3IGEuWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIEYgZXh0ZW5kcyBhLlN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0aW1lUGF0dGVybiIpLHRoaXMubmFtZT0oMCxpLmdldFN0cmluZ09wdGlvbikoZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgSSBleHRlbmRzIGEuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInRpbWVQYXR0ZXJucyIsITApLHRoaXMudGltZVBhdHRlcm49bmV3IGEuWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIFQgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZSIsITApLHRoaXMubmFtZT0iInxlLm5hbWV9fWNsYXNzIE0gZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihzLCJ0eXBlRmFjZXMiLCEwKSx0aGlzLnR5cGVGYWNlPW5ldyBhLlhGQU9iamVjdEFycmF5fX1jbGFzcyBFe3N0YXRpY1tuLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihFLmhhc093blByb3BlcnR5KGUpKXJldHVybiBFW2VdKHQpfXN0YXRpYyBjYWxlbmRhclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBvKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IGMoZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9scyhlKXtyZXR1cm4gbmV3IGwoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgaChlKX1zdGF0aWMgZGF0ZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgdShlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgZChlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgZihlKX1zdGF0aWMgZGF5TmFtZXMoZSl7cmV0dXJuIG5ldyBnKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBwKGUpfXN0YXRpYyBlcmFOYW1lcyhlKXtyZXR1cm4gbmV3IG0oZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGIoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IHkoZSl9c3RhdGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgdyhlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IHYoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgeChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IFMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBBKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IGsoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IEMoZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBPKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IEYoZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVChlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgTShlKX19dC5Mb2NhbGVTZXROYW1lc3BhY2U9RX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlNpZ25hdHVyZU5hbWVzcGFjZT12b2lkIDA7dmFyIG49cigyMzQpLGE9cigyNDApO2NvbnN0IGk9bi5OYW1lc3BhY2VJZHMuc2lnbmF0dXJlLmlkO2NsYXNzIHMgZXh0ZW5kcyBhLlhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLCJzaWduYXR1cmUiLCEwKX19Y2xhc3Mgb3tzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoby5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gb1tlXSh0KX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgcyhlKX19dC5TaWduYXR1cmVOYW1lc3BhY2U9b30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlN0eWxlc2hlZXROYW1lc3BhY2U9dm9pZCAwO3ZhciBuPXIoMjM0KSxhPXIoMjQwKTtjb25zdCBpPW4uTmFtZXNwYWNlSWRzLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgcyBleHRlbmRzIGEuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGksInN0eWxlc2hlZXQiLCEwKX19Y2xhc3Mgb3tzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoby5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gb1tlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IHMoZSl9fXQuU3R5bGVzaGVldE5hbWVzcGFjZT1vfSwoZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWGRwTmFtZXNwYWNlPXZvaWQgMDt2YXIgbj1yKDIzNCksYT1yKDIyOCksaT1yKDI0MCk7Y29uc3Qgcz1uLk5hbWVzcGFjZUlkcy54ZHAuaWQ7Y2xhc3MgbyBleHRlbmRzIGkuWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHMsInhkcCIsITApLHRoaXMudXVpZD1lLnV1aWR8fCIiLHRoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIix0aGlzLmNvbmZpZz1udWxsLHRoaXMuY29ubmVjdGlvblNldD1udWxsLHRoaXMuZGF0YXNldHM9bnVsbCx0aGlzLmxvY2FsZVNldD1udWxsLHRoaXMuc3R5bGVzaGVldD1uZXcgaS5YRkFPYmplY3RBcnJheSx0aGlzLnRlbXBsYXRlPW51bGx9W2EuJG9uQ2hpbGRDaGVja10oZSl7Y29uc3QgdD1uLk5hbWVzcGFjZUlkc1tlW2EuJG5vZGVOYW1lXV07cmV0dXJuIHQmJmVbYS4kbmFtZXNwYWNlSWRdPT09dC5pZH19Y2xhc3MgY3tzdGF0aWNbbi4kYnVpbGRYRkFPYmplY3RdKGUsdCl7aWYoYy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gY1tlXSh0KX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgbyhlKX19dC5YZHBOYW1lc3BhY2U9Y30sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlhodG1sTmFtZXNwYWNlPXZvaWQgMCxyKDExNikscigxMjYpLHIoMTI4KSxyKDEzMSkscigxMzMpLHIoMTM1KSxyKDEzNyk7dmFyIG49cigyMjgpLGE9cigyMzQpLGk9cigyMzYpLHM9cigyMzcpLG89cigyNDApO2NvbnN0IGM9YS5OYW1lc3BhY2VJZHMueGh0bWwuaWQsbD1TeW1ib2woKSxoPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksdT1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PiJzY2FsZVgoIi5jb25jYXQoTWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpLCIpIildLFsieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLGU9PiJzY2FsZVkoIi5jb25jYXQoTWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpLCIpIildLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT4oZT10LmZvbnRTaXplPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpLCgwLGkubWVhc3VyZVRvU3RyaW5nKSguOTkqZSkpXSxbImxldHRlci1zcGFjaW5nIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbiIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+KDAsaS5tZWFzdXJlVG9TdHJpbmcpKCgwLHMuZ2V0TWVhc3VyZW1lbnQpKGUpKV0sWyJtYXJnaW4tdG9wIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbInRleHQtaW5kZW50IixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT4oMCxpLm1lYXN1cmVUb1N0cmluZykoKDAscy5nZXRNZWFzdXJlbWVudCkoZSkpXV0pLGQ9L1xzKy9nLGY9L1tcclxuXSsvZyxnPS9cclxuPy9nO2Z1bmN0aW9uIHAoZSx0LHIpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gYTtjb25zdCBvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3Qscl1vZiBlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXtjb25zdCBlPXUuZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgbj1yO2UmJihuPSJzdHJpbmciPT10eXBlb2YgZT9lOmUocixvKSksdC5lbmRzV2l0aCgic2NhbGUiKT9hLnRyYW5zZm9ybT1hLnRyYW5zZm9ybT8iIi5jb25jYXQoYVt0XSwiICIpLmNvbmNhdChuKTpuOmFbdC5yZXBsYWNlQWxsKC8tKFthLXpBLVpdKS9nLCgoZSx0KT0+dC50b1VwcGVyQ2FzZSgpKSldPW59aWYoYS5mb250RmFtaWx5JiYoMCxpLnNldEZvbnRGYW1pbHkpKHt0eXBlZmFjZTphLmZvbnRGYW1pbHksd2VpZ2h0OmEuZm9udFdlaWdodHx8Im5vcm1hbCIscG9zdHVyZTphLmZvbnRTdHlsZXx8Im5vcm1hbCIsc2l6ZTpvLmZvbnRTaXplfHwwfSx0LHRbbi4kZ2xvYmFsRGF0YV0uZm9udEZpbmRlcixhKSxyJiZhLnZlcnRpY2FsQWxpZ24mJiIwcHgiIT09YS52ZXJ0aWNhbEFsaWduJiZhLmZvbnRTaXplKXtjb25zdCBlPS41ODMsdD0uMzMzLHI9KDAscy5nZXRNZWFzdXJlbWVudCkoYS5mb250U2l6ZSk7YS5mb250U2l6ZT0oMCxpLm1lYXN1cmVUb1N0cmluZykociplKSxhLnZlcnRpY2FsQWxpZ249KDAsaS5tZWFzdXJlVG9TdHJpbmcpKE1hdGguc2lnbigoMCxzLmdldE1lYXN1cmVtZW50KShhLnZlcnRpY2FsQWxpZ24pKSpyKnQpfXJldHVybiByJiZhLmZvbnRTaXplJiYoYS5mb250U2l6ZT0iY2FsYygiLmNvbmNhdChhLmZvbnRTaXplLCIgKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSIpKSwoMCxpLmZpeFRleHRJbmRlbnQpKGEpLGF9Y29uc3QgbT1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgYiBleHRlbmRzIG8uWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYyx0KSx0aGlzW2xdPSExLHRoaXMuc3R5bGU9ZS5zdHlsZXx8IiJ9W24uJGNsZWFuXShlKXtzdXBlcltuLiRjbGVhbl0oZSksdGhpcy5zdHlsZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnRyaW0oKS5zcGxpdCgvXHMqO1xzKi8pLmZpbHRlcigoZT0+ISFlKSkubWFwKChlPT5lLnNwbGl0KC9ccyo6XHMqLywyKSkpLmZpbHRlcigodD0+e2xldFtyLGFdPXQ7cmV0dXJuImZvbnQtZmFtaWx5Ij09PXImJmVbbi4kZ2xvYmFsRGF0YV0udXNlZFR5cGVmYWNlcy5hZGQoYSksaC5oYXMocil9KSkubWFwKChlPT5lLmpvaW4oIjoiKSkpLmpvaW4oIjsiKToiIn0odGhpcyl9W24uJGFjY2VwdFdoaXRlc3BhY2VdKCl7cmV0dXJuIW0uaGFzKHRoaXNbbi4kbm9kZU5hbWVdKX1bbi4kb25UZXh0XShlKXthcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdP3RoaXNbbF09ITA6KGU9ZS5yZXBsYWNlQWxsKGYsIiIpLHRoaXMuc3R5bGUuaW5jbHVkZXMoInhmYS1zcGFjZXJ1bjp5ZXMiKXx8KGU9ZS5yZXBsYWNlQWxsKGQsIiAiKSkpLGUmJih0aGlzW24uJGNvbnRlbnRdKz1lKX1bbi4kcHVzaEdseXBoc10oZSl7bGV0IHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCksYT17dG9wOk5hTixib3R0b206TmFOLGxlZnQ6TmFOLHJpZ2h0Ok5hTn07bGV0IGk9bnVsbDtmb3IoY29uc3RbZSx0XW9mIHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpc3dpdGNoKGUpe2Nhc2UiZm9udC1mYW1pbHkiOnIudHlwZWZhY2U9KDAscy5zdHJpcFF1b3RlcykodCk7YnJlYWs7Y2FzZSJmb250LXNpemUiOnIuc2l6ZT0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlImZvbnQtd2VpZ2h0IjpyLndlaWdodD10O2JyZWFrO2Nhc2UiZm9udC1zdHlsZSI6ci5wb3N0dXJlPXQ7YnJlYWs7Y2FzZSJsZXR0ZXItc3BhY2luZyI6ci5sZXR0ZXJTcGFjaW5nPSgwLHMuZ2V0TWVhc3VyZW1lbnQpKHQpO2JyZWFrO2Nhc2UibWFyZ2luIjpjb25zdCBlPXQuc3BsaXQoLyBcdC8pLm1hcCgoZT0+KDAscy5nZXRNZWFzdXJlbWVudCkoZSkpKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTphLnRvcD1hLmJvdHRvbT1hLmxlZnQ9YS5yaWdodD1lWzBdO2JyZWFrO2Nhc2UgMjphLnRvcD1hLmJvdHRvbT1lWzBdLGEubGVmdD1hLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSAzOmEudG9wPWVbMF0sYS5ib3R0b209ZVsyXSxhLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgNDphLnRvcD1lWzBdLGEubGVmdD1lWzFdLGEuYm90dG9tPWVbMl0sYS5yaWdodD1lWzNdfWJyZWFrO2Nhc2UibWFyZ2luLXRvcCI6YS50b3A9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4tYm90dG9tIjphLmJvdHRvbT0oMCxzLmdldE1lYXN1cmVtZW50KSh0KTticmVhaztjYXNlIm1hcmdpbi1sZWZ0IjphLmxlZnQ9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJtYXJnaW4tcmlnaHQiOmEucmlnaHQ9KDAscy5nZXRNZWFzdXJlbWVudCkodCk7YnJlYWs7Y2FzZSJsaW5lLWhlaWdodCI6aT0oMCxzLmdldE1lYXN1cmVtZW50KSh0KX1pZihlLnB1c2hEYXRhKHIsYSxpKSx0aGlzW24uJGNvbnRlbnRdKWUuYWRkU3RyaW5nKHRoaXNbbi4kY29udGVudF0pO2Vsc2UgZm9yKGNvbnN0IHQgb2YgdGhpc1tuLiRnZXRDaGlsZHJlbl0oKSkiI3RleHQiIT09dFtuLiRub2RlTmFtZV0/dFtuLiRwdXNoR2x5cGhzXShlKTplLmFkZFN0cmluZyh0W24uJGNvbnRlbnRdKTt0JiZlLnBvcEZvbnQoKX1bbi4kdG9IVE1MXShlKXtjb25zdCB0PVtdO2lmKHRoaXNbbi4kZXh0cmFdPXtjaGlsZHJlbjp0fSx0aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7fSksMD09PXQubGVuZ3RoJiYhdGhpc1tuLiRjb250ZW50XSlyZXR1cm4gcy5IVE1MUmVzdWx0LkVNUFRZO2xldCByO3JldHVybiByPXRoaXNbbF0/dGhpc1tuLiRjb250ZW50XT90aGlzW24uJGNvbnRlbnRdLnJlcGxhY2VBbGwoZywiXG4iKTp2b2lkIDA6dGhpc1tuLiRjb250ZW50XXx8dm9pZCAwLHMuSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOnRoaXNbbi4kbm9kZU5hbWVdLGF0dHJpYnV0ZXM6e2hyZWY6dGhpcy5ocmVmLHN0eWxlOnAodGhpcy5zdHlsZSx0aGlzLHRoaXNbbF0pfSxjaGlsZHJlbjp0LHZhbHVlOnJ9KX19Y2xhc3MgeSBleHRlbmRzIGJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYSIpLHRoaXMuaHJlZj0oMCxpLmZpeFVSTCkoZS5ocmVmKXx8IiJ9fWNsYXNzIHcgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImIiKX1bbi4kcHVzaEdseXBoc10oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pLHN1cGVyW24uJHB1c2hHbHlwaHNdKGUpLGUucG9wRm9udCgpfX1jbGFzcyB2IGV4dGVuZHMgYntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W24uJHRvSFRNTF0oZSl7Y29uc3QgdD1zdXBlcltuLiR0b0hUTUxdKGUpLHtodG1sOnJ9PXQ7cmV0dXJuIHI/KHIubmFtZT0iZGl2IixyLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl0sdCk6cy5IVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyB4IGV4dGVuZHMgYntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiciIpfVtuLiR0ZXh0XSgpe3JldHVybiJcbiJ9W24uJHB1c2hHbHlwaHNdKGUpe2UuYWRkU3RyaW5nKCJcbiIpfVtuLiR0b0hUTUxdKGUpe3JldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiYnIifSl9fWNsYXNzIFMgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bbi4kdG9IVE1MXShlKXtjb25zdCB0PVtdO2lmKHRoaXNbbi4kZXh0cmFdPXtjaGlsZHJlbjp0fSx0aGlzW24uJGNoaWxkcmVuVG9IVE1MXSh7fSksMD09PXQubGVuZ3RoKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tuLiRjb250ZW50XXx8IiJ9KTtpZigxPT09dC5sZW5ndGgpe3ZhciByO2NvbnN0IGU9dFswXTtpZihudWxsIT09KHI9ZS5hdHRyaWJ1dGVzKSYmdm9pZCAwIT09ciYmci5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBzLkhUTUxSZXN1bHQuc3VjY2VzcyhlKX1yZXR1cm4gcy5IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgQSBleHRlbmRzIGJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaSIpfVtuLiRwdXNoR2x5cGhzXShlKXtlLnB1c2hGb250KHtwb3N0dXJlOiJpdGFsaWMifSksc3VwZXJbbi4kcHVzaEdseXBoc10oZSksZS5wb3BGb250KCl9fWNsYXNzIGsgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImxpIil9fWNsYXNzIEMgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIE8gZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInAiKX1bbi4kcHVzaEdseXBoc10oZSl7c3VwZXJbbi4kcHVzaEdseXBoc10oZSwhMSksZS5hZGRTdHJpbmcoIlxuIiksZS5hZGRQYXJhKCksZS5wb3BGb250KCl9W24uJHRleHRdKCl7cmV0dXJuIHRoaXNbbi4kZ2V0UGFyZW50XSgpW24uJGdldENoaWxkcmVuXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbbi4kdGV4dF0oKTpzdXBlcltuLiR0ZXh0XSgpKyJcbiJ9fWNsYXNzIEYgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInNwYW4iKX19Y2xhc3MgSSBleHRlbmRzIGJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3ViIil9fWNsYXNzIFQgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1cCIpfX1jbGFzcyBNIGV4dGVuZHMgYntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBFe3N0YXRpY1thLiRidWlsZFhGQU9iamVjdF0oZSx0KXtpZihFLmhhc093blByb3BlcnR5KGUpKXJldHVybiBFW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgeShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IHcoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyB2KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IHgoZSl9c3RhdGljIGh0bWwoZSl7cmV0dXJuIG5ldyBTKGUpfXN0YXRpYyBpKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgbGkoZSl7cmV0dXJuIG5ldyBrKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IEMoZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBPKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgRihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgSShlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgVChlKX1zdGF0aWMgdWwoZSl7cmV0dXJuIG5ldyBNKGUpfX10LlhodG1sTmFtZXNwYWNlPUV9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5Vbmtub3duTmFtZXNwYWNlPXZvaWQgMDt2YXIgbj1yKDIzNCksYT1yKDI0MCk7Y2xhc3MgaXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWVzcGFjZUlkPWV9W24uJGJ1aWxkWEZBT2JqZWN0XShlLHQpe3JldHVybiBuZXcgYS5YbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX10LlVua25vd25OYW1lc3BhY2U9aX0sKGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LkRhdGFzZXRSZWFkZXI9dm9pZCAwLHIoMik7dmFyIG49cigxNDQpLGE9cigxNDkpLGk9cigyMTcpO2Z1bmN0aW9uIHMoZSl7dHJ5e3JldHVybigwLG4uc3RyaW5nVG9VVEY4U3RyaW5nKShlKX1jYXRjaCh0KXtyZXR1cm4oMCxuLndhcm4pKCdVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICInLmNvbmNhdCh0LCciLicpKSxlfX1jbGFzcyBvIGV4dGVuZHMgaS5TaW1wbGVYTUxQYXJzZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5ub2RlPW51bGx9b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9c3VwZXIub25FbmRFbGVtZW50KGUpO2lmKHQmJiJ4ZmE6ZGF0YXNldHMiPT09ZSl0aHJvdyB0aGlzLm5vZGU9dCxuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fXQuRGF0YXNldFJlYWRlcj1jbGFzc3tjb25zdHJ1Y3RvcihlKXtpZihlLmRhdGFzZXRzKXRoaXMubm9kZT1uZXcgaS5TaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgbyh7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoKGUpe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKCgwLGEucGFyc2VYRkFQYXRoKShlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCByPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09KG51bGw9PXI/dm9pZCAwOnIubm9kZU5hbWUpP3QuY2hpbGRyZW4ubWFwKChlPT5zKGUudGV4dENvbnRlbnQpKSk6cyh0LnRleHRDb250ZW50KX19fSwoZSx0LHIpPT57dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuWFJlZj12b2lkIDAscigxMTYpLHIoMTI2KSxyKDEyOCkscigxMzEpLHIoMTMzKSxyKDEzNSkscigxMzcpLHIoODQpLHIoOTMpLHIoOTQpLHIoOTcpLHIoOTkpLHIoMTAxKSxyKDEwNSkscigxMDgpLHIoMTE1KSxyKDEzOSkscigyKTt2YXIgYT1yKDE0NCksaT1yKDE1MCkscz1yKDE2Niksbz1yKDE0OSksbD1yKDE1MSksZD1yKDIxOCk7dC5YUmVmPShuPW5ldyBXZWFrTWFwLGNsYXNze2NvbnN0cnVjdG9yKGUsdCl7Yyh0aGlzLG4se3dyaXRhYmxlOiEwLHZhbHVlOm51bGx9KSx0aGlzLnN0cmVhbT1lLHRoaXMucGRmTWFuYWdlcj10LHRoaXMuZW50cmllcz1bXSx0aGlzLl94cmVmU3Rtcz1uZXcgU2V0LHRoaXMuX2NhY2hlTWFwPW5ldyBNYXAsdGhpcy5fcGVuZGluZ1JlZnM9bmV3IGkuUmVmU2V0LHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW09bnVsbCx0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKztyZXR1cm4gdGhpcy5fY2FjaGVNYXAuc2V0KHQsZSksaS5SZWYuZ2V0KHQsMCl9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7cmV0dXJuIG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0mJih0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSksaS5SZWYuZ2V0KHRoaXMuX25ld1RlbXBvcmFyeVJlZk51bSsrLDApfXJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl7dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtPW51bGx9c2V0U3RhcnRYUmVmKGUpe3RoaXMuc3RhcnRYUmVmUXVldWU9W2VdfXBhcnNlKCl7bGV0IGUsdCxyLG49YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTtuPygoMCxhLndhcm4pKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKSxlPXRoaXMuaW5kZXhPYmplY3RzKCkpOmU9dGhpcy5yZWFkWFJlZigpLGUuYXNzaWduWHJlZih0aGlzKSx0aGlzLnRyYWlsZXI9ZTt0cnl7dD1lLmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBvLk1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7KDAsYS53YXJuKSgnWFJlZi5wYXJzZSAtIEludmFsaWQgIkVuY3J5cHQiIHJlZmVyZW5jZTogIicuY29uY2F0KGUsJyIuJykpfWlmKHQgaW5zdGFuY2VvZiBpLkRpY3Qpe2NvbnN0IHI9ZS5nZXQoIklEIiksbj1udWxsIT1yJiZyLmxlbmd0aD9yWzBdOiIiO3Quc3VwcHJlc3NFbmNyeXB0aW9uPSEwLHRoaXMuZW5jcnlwdD1uZXcgZC5DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5KHQsbix0aGlzLnBkZk1hbmFnZXIucGFzc3dvcmQpfXRyeXtyPWUuZ2V0KCJSb290Iil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG8uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCdYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJy5jb25jYXQoZSwnIi4nKSl9aWYociBpbnN0YW5jZW9mIGkuRGljdCl0cnl7aWYoci5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIGkuRGljdClyZXR1cm4gdm9pZCh0aGlzLnJvb3Q9cil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIG8uTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTsoMCxhLndhcm4pKCdYUmVmLnBhcnNlIC0gSW52YWxpZCAiUGFnZXMiIHJlZmVyZW5jZTogIicuY29uY2F0KGUsJyIuJykpfWlmKCFuKXRocm93IG5ldyBvLlhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgYS5JbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7Y29uc3QgdD10aGlzLnJlYWRYUmVmVGFibGUoZSk7aWYoISgwLGkuaXNDbWQpKHQsInRyYWlsZXIiKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgcj1lLmdldE9iaigpO2lmKHIgaW5zdGFuY2VvZiBpLkRpY3R8fCFyLmRpY3R8fChyPXIuZGljdCksIShyIGluc3RhbmNlb2YgaS5EaWN0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7cmV0dXJuIGRlbGV0ZSB0aGlzLnRhYmxlU3RhdGUscn1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0scj10aGlzLnRhYmxlU3RhdGU7bGV0IG47Zm9yKHQucG9zPXIuc3RyZWFtUG9zLGUuYnVmMT1yLnBhcnNlckJ1ZjEsZS5idWYyPXIucGFyc2VyQnVmMjs7KXtpZighKCJmaXJzdEVudHJ5TnVtImluIHIpfHwhKCJlbnRyeUNvdW50ImluIHIpKXtpZigoMCxpLmlzQ21kKShuPWUuZ2V0T2JqKCksInRyYWlsZXIiKSlicmVhaztyLmZpcnN0RW50cnlOdW09bixyLmVudHJ5Q291bnQ9ZS5nZXRPYmooKX1sZXQgcz1yLmZpcnN0RW50cnlOdW07Y29uc3Qgbz1yLmVudHJ5Q291bnQ7aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBuPXIuZW50cnlOdW07bjxvO24rKyl7ci5zdHJlYW1Qb3M9dC5wb3Msci5lbnRyeU51bT1uLHIucGFyc2VyQnVmMT1lLmJ1ZjEsci5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBjPXt9O2Mub2Zmc2V0PWUuZ2V0T2JqKCksYy5nZW49ZS5nZXRPYmooKTtjb25zdCBsPWUuZ2V0T2JqKCk7aWYobCBpbnN0YW5jZW9mIGkuQ21kKXN3aXRjaChsLmNtZCl7Y2FzZSJmIjpjLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpjLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihjLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKGMuZ2VuKXx8IWMuZnJlZSYmIWMudW5jb21wcmVzc2VkKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogIi5jb25jYXQocywiLCAiKS5jb25jYXQobykpOzA9PT1uJiZjLmZyZWUmJjE9PT1zJiYocz0wKSx0aGlzLmVudHJpZXNbbitzXXx8KHRoaXMuZW50cmllc1tuK3NdPWMpfXIuZW50cnlOdW09MCxyLnN0cmVhbVBvcz10LnBvcyxyLnBhcnNlckJ1ZjE9ZS5idWYxLHIucGFyc2VyQnVmMj1lLmJ1ZjIsZGVsZXRlIHIuZmlyc3RFbnRyeU51bSxkZWxldGUgci5lbnRyeUNvdW50fWlmKHRoaXMuZW50cmllc1swXSYmIXRoaXMuZW50cmllc1swXS5mcmVlKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIG59cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0IHQ9ZS5kaWN0LHI9dC5nZXQoIlciKTtsZXQgbj10LmdldCgiSW5kZXgiKTtufHwobj1bMCx0LmdldCgiU2l6ZSIpXSksdGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6bixieXRlV2lkdGhzOnIsZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5wb3N9fXJldHVybiB0aGlzLnJlYWRYUmVmU3RyZWFtKGUpLGRlbGV0ZSB0aGlzLnN0cmVhbVN0YXRlLGUuZGljdH1yZWFkWFJlZlN0cmVhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtU3RhdGU7ZS5wb3M9dC5zdHJlYW1Qb3M7Y29uc3RbcixuLGldPXQuYnl0ZVdpZHRocyxzPXQuZW50cnlSYW5nZXM7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3RbbyxjXT1zO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG8pfHwhTnVtYmVyLmlzSW50ZWdlcihjKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogIi5jb25jYXQobywiLCAiKS5jb25jYXQoYykpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihuKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBlbnRyeSBmaWVsZHMgbGVuZ3RoOiAiLmNvbmNhdChvLCIsICIpLmNvbmNhdChjKSk7Zm9yKGxldCBzPXQuZW50cnlOdW07czxjOysrcyl7dC5lbnRyeU51bT1zLHQuc3RyZWFtUG9zPWUucG9zO2xldCBjPTAsbD0wLGg9MDtmb3IobGV0IHQ9MDt0PHI7Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ3R5cGUnLiIpO2M9Yzw8OHx0fTA9PT1yJiYoYz0xKTtmb3IobGV0IHQ9MDt0PG47Kyt0KXtjb25zdCB0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dCl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBieXRlV2lkdGhzICdnZW5lcmF0aW9uJy4iKTtoPWg8PDh8dH1jb25zdCB1PXt9O3N3aXRjaCh1Lm9mZnNldD1sLHUuZ2VuPWgsYyl7Y2FzZSAwOnUuZnJlZT0hMDticmVhaztjYXNlIDE6dS51bmNvbXByZXNzZWQ9ITA7YnJlYWs7Y2FzZSAyOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAiLmNvbmNhdChjKSl9dGhpcy5lbnRyaWVzW28rc118fCh0aGlzLmVudHJpZXNbbytzXT11KX10LmVudHJ5TnVtPTAsdC5zdHJlYW1Qb3M9ZS5wb3Mscy5zcGxpY2UoMCwyKX19aW5kZXhPYmplY3RzKCl7ZnVuY3Rpb24gZShlLHQpe2xldCByPSIiLG49ZVt0XTtmb3IoOzEwIT09biYmMTMhPT1uJiY2MCE9PW4mJiEoKyt0Pj1lLmxlbmd0aCk7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUobiksbj1lW3RdO3JldHVybiByfWZ1bmN0aW9uIHQoZSx0LHIpe2NvbnN0IG49ci5sZW5ndGgsYT1lLmxlbmd0aDtsZXQgaT0wO2Zvcig7dDxhOyl7bGV0IGE9MDtmb3IoO2E8biYmZVt0K2FdPT09clthXTspKythO2lmKGE+PW4pYnJlYWs7dCsrLGkrK31yZXR1cm4gaX1jb25zdCByPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csbj0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLGM9L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGw9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSksaD1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHU9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLmVudHJpZXMubGVuZ3RoPTAsdGhpcy5fY2FjaGVNYXAuY2xlYXIoKTtjb25zdCBkPXRoaXMuc3RyZWFtO2QucG9zPTA7Y29uc3QgZj1kLmdldEJ5dGVzKCksZz0oMCxhLmJ5dGVzVG9TdHJpbmcpKGYpLHA9Zi5sZW5ndGg7bGV0IG09ZC5zdGFydDtjb25zdCBiPVtdLHk9W107Zm9yKDttPHA7KXtsZXQgaT1mW21dO2lmKDk9PT1pfHwxMD09PWl8fDEzPT09aXx8MzI9PT1pKXsrK207Y29udGludWV9aWYoMzc9PT1pKXtkb3tpZigrK20sbT49cClicmVhaztpPWZbbV19d2hpbGUoMTAhPT1pJiYxMyE9PWkpO2NvbnRpbnVlfWNvbnN0IHc9ZShmLG0pO2xldCB2O2lmKHcuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PXcubGVuZ3RofHwvXHMvLnRlc3Qod1s0XSkpKW0rPXQoZixtLGwpLGIucHVzaChtKSxtKz10KGYsbSxoKTtlbHNlIGlmKHY9Yy5leGVjKHcpKXtjb25zdCBlPTB8dlsxXSxuPTB8dlsyXSxpPW0rdy5sZW5ndGg7bGV0IGMsbD0hMTtpZih0aGlzLmVudHJpZXNbZV0pe2lmKHRoaXMuZW50cmllc1tlXS5nZW49PT1uKXRyeXtuZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGQubWFrZVN1YlN0cmVhbShpKSl9KS5nZXRPYmooKSxsPSEwfWNhdGNoKHIpe3IgaW5zdGFuY2VvZiBvLlBhcnNlckVPRkV4Y2VwdGlvbj8oMCxhLndhcm4pKCJpbmRleE9iamVjdHMgLS0gY2hlY2tpbmcgb2JqZWN0ICgiLmNvbmNhdCh3LCcpOiAiJykuY29uY2F0KHIsJyIuJykpOmw9ITB9fWVsc2UgbD0hMDtsJiYodGhpcy5lbnRyaWVzW2VdPXtvZmZzZXQ6bS1kLnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pLHIubGFzdEluZGV4PWk7Y29uc3QgaD1yLmV4ZWMoZyk7aD8oYz1yLmxhc3RJbmRleCsxLW0sImVuZG9iaiIhPT1oWzFdJiYoKDAsYS53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCAiJy5jb25jYXQoaFsxXSwnIiBpbnNpZGUgb2YgYW5vdGhlciAib2JqIiwgY2F1c2VkIGJ5IG1pc3NpbmcgImVuZG9iaiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJykpLGMtPWhbMV0ubGVuZ3RoKzEpKTpjPXAtbTtjb25zdCBiPWYuc3ViYXJyYXkobSxtK2MpLHg9dChiLDAsdSk7eDxjJiZiW3grNV08NjQmJih5LnB1c2gobS1kLnN0YXJ0KSx0aGlzLl94cmVmU3Rtcy5hZGQobS1kLnN0YXJ0KSksbSs9Y31lbHNlIGlmKHcuc3RhcnRzV2l0aCgidHJhaWxlciIpJiYoNz09PXcubGVuZ3RofHwvXHMvLnRlc3Qod1s3XSkpKXtiLnB1c2gobSk7Y29uc3QgZT1tK3cubGVuZ3RoO2xldCB0O24ubGFzdEluZGV4PWU7Y29uc3Qgcj1uLmV4ZWMoZyk7cj8odD1uLmxhc3RJbmRleCsxLW0sInN0YXJ0eHJlZiIhPT1yWzFdJiYoKDAsYS53YXJuKSgnaW5kZXhPYmplY3RzOiBGb3VuZCAiJy5jb25jYXQoclsxXSwnIiBhZnRlciAidHJhaWxlciIsIGNhdXNlZCBieSBtaXNzaW5nICJzdGFydHhyZWYiIC0tIHRyeWluZyB0byByZWNvdmVyLicpKSx0LT1yWzFdLmxlbmd0aCsxKSk6dD1wLW0sbSs9dH1lbHNlIG0rPXcubGVuZ3RoKzF9Zm9yKGNvbnN0IGUgb2YgeSl0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSksdGhpcy5yZWFkWFJlZighMCk7Y29uc3Qgdz1bXTtsZXQgdix4LFM9ITE7Zm9yKGNvbnN0IGUgb2YgYil7ZC5wb3M9ZTtjb25zdCB0PW5ldyBzLlBhcnNlcih7bGV4ZXI6bmV3IHMuTGV4ZXIoZCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMCxyZWNvdmVyeU1vZGU6ITB9KSxyPXQuZ2V0T2JqKCk7aWYoISgwLGkuaXNDbWQpKHIsInRyYWlsZXIiKSljb250aW51ZTtjb25zdCBuPXQuZ2V0T2JqKCk7biBpbnN0YW5jZW9mIGkuRGljdCYmKHcucHVzaChuKSxuLmhhcygiRW5jcnlwdCIpJiYoUz0hMCkpfWZvcihjb25zdCBlIG9mWy4uLncsImdlbkZhbGxiYWNrIiwuLi53XSl7aWYoImdlbkZhbGxiYWNrIj09PWUpe2lmKCF4KWJyZWFrO3RoaXMuX2dlbmVyYXRpb25GYWxsYmFjaz0hMDtjb250aW51ZX1sZXQgdD0hMTt0cnl7Y29uc3Qgcj1lLmdldCgiUm9vdCIpO2lmKCEociBpbnN0YW5jZW9mIGkuRGljdCkpY29udGludWU7Y29uc3Qgbj1yLmdldCgiUGFnZXMiKTtpZighKG4gaW5zdGFuY2VvZiBpLkRpY3QpKWNvbnRpbnVlO2NvbnN0IGE9bi5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihhKSYmKHQ9ITApfWNhdGNoKHIpe3g9cjtjb250aW51ZX1pZih0JiYoIVN8fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTt2PWV9aWYodilyZXR1cm4gdjtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDt0aHJvdyBuZXcgYS5JbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdO2NvbnN0IHQ9dGhpcy5zdHJlYW0scj1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKHIuaGFzKGUpKXsoMCxhLndhcm4pKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpLHRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1yLmFkZChlKSx0LnBvcz1lK3Quc3RhcnQ7Y29uc3Qgbz1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKHQpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtsZXQgZCxmPW8uZ2V0T2JqKCk7aWYoKDAsaS5pc0NtZCkoZiwieHJlZiIpKXt2YXIgYztkPXRoaXMucHJvY2Vzc1hSZWZUYWJsZShvKSx0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9ZCksZj1kLmdldCgiWFJlZlN0bSIpLE51bWJlci5pc0ludGVnZXIoZikmJiF0aGlzLl94cmVmU3Rtcy5oYXMoZikmJih0aGlzLl94cmVmU3Rtcy5hZGQoZiksdGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGYpLG51bGwhPT0oYz1oKHRoaXMsbikpJiZ2b2lkIDAhPT1jfHx1KHRoaXMsbixmKSl9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihmKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoby5nZXRPYmooKSkmJigwLGkuaXNDbWQpKG8uZ2V0T2JqKCksIm9iaiIpJiYoZj1vLmdldE9iaigpKWluc3RhbmNlb2YgbC5CYXNlU3RyZWFtKSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSIpO2lmKGQ9dGhpcy5wcm9jZXNzWFJlZlN0cmVhbShmKSx0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9ZCksIWQpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9Zj1kLmdldCgiUHJldiIpLE51bWJlci5pc0ludGVnZXIoZik/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGYpOmYgaW5zdGFuY2VvZiBpLlJlZiYmdGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGYubnVtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2Ygby5NaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlOygwLGEuaW5mbykoIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgby5YUmVmUGFyc2VFeGNlcHRpb259Z2V0IGxhc3RYUmVmU3RyZWFtUG9zKCl7dmFyIGU7cmV0dXJuIG51bGwhPT0oZT1oKHRoaXMsbikpJiZ2b2lkIDAhPT1lP2U6dGhpcy5feHJlZlN0bXMuc2l6ZT4wP01hdGgubWF4KC4uLnRoaXMuX3hyZWZTdG1zKTpudWxsfWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy5lbnRyaWVzW2VdO3JldHVybiB0JiYhdC5mcmVlJiZ0Lm9mZnNldD90Om51bGx9ZmV0Y2hJZlJlZihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdO3JldHVybiBlIGluc3RhbmNlb2YgaS5SZWY/dGhpcy5mZXRjaChlLHQpOmV9ZmV0Y2goZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtpZighKGUgaW5zdGFuY2VvZiBpLlJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IHI9ZS5udW0sbj10aGlzLl9jYWNoZU1hcC5nZXQocik7aWYodm9pZCAwIT09bilyZXR1cm4gbiBpbnN0YW5jZW9mIGkuRGljdCYmIW4ub2JqSWQmJihuLm9iaklkPWUudG9TdHJpbmcoKSksbjtsZXQgcz10aGlzLmdldEVudHJ5KHIpO2lmKG51bGw9PT1zKXJldHVybiB0aGlzLl9jYWNoZU1hcC5zZXQocixzKSxzO2lmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSlyZXR1cm4gdGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpLCgwLGEud2FybikoIklnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogIi5jb25jYXQoZSwiLiIpKSxpLkNJUkNVTEFSX1JFRjt0aGlzLl9wZW5kaW5nUmVmcy5wdXQoZSk7dHJ5e3M9cy51bmNvbXByZXNzZWQ/dGhpcy5mZXRjaFVuY29tcHJlc3NlZChlLHMsdCk6dGhpcy5mZXRjaENvbXByZXNzZWQoZSxzLHQpLHRoaXMuX3BlbmRpbmdSZWZzLnJlbW92ZShlKX1jYXRjaCh0KXt0aHJvdyB0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSksdH1yZXR1cm4gcyBpbnN0YW5jZW9mIGkuRGljdD9zLm9iaklkPWUudG9TdHJpbmcoKTpzIGluc3RhbmNlb2YgbC5CYXNlU3RyZWFtJiYocy5kaWN0Lm9iaklkPWUudG9TdHJpbmcoKSksc31mZXRjaFVuY29tcHJlc3NlZChlLHQpe2xldCByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl07Y29uc3Qgbj1lLmdlbjtsZXQgYz1lLm51bTtpZih0LmdlbiE9PW4pe2NvbnN0IHM9IkluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICIuY29uY2F0KGUpO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48bilyZXR1cm4oMCxhLndhcm4pKHMpLHRoaXMuZmV0Y2hVbmNvbXByZXNzZWQoaS5SZWYuZ2V0KGMsdC5nZW4pLHQscik7dGhyb3cgbmV3IG8uWFJlZkVudHJ5RXhjZXB0aW9uKHMpfWNvbnN0IGg9dGhpcy5zdHJlYW0ubWFrZVN1YlN0cmVhbSh0Lm9mZnNldCt0aGlzLnN0cmVhbS5zdGFydCksdT1uZXcgcy5QYXJzZXIoe2xleGVyOm5ldyBzLkxleGVyKGgpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxkPXUuZ2V0T2JqKCksZj11LmdldE9iaigpLGc9dS5nZXRPYmooKTtpZihkIT09Y3x8ZiE9PW58fCEoZyBpbnN0YW5jZW9mIGkuQ21kKSl0aHJvdyBuZXcgby5YUmVmRW50cnlFeGNlcHRpb24oIkJhZCAodW5jb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAiLmNvbmNhdChlKSk7aWYoIm9iaiIhPT1nLmNtZCl7aWYoZy5jbWQuc3RhcnRzV2l0aCgib2JqIikmJihjPXBhcnNlSW50KGcuY21kLnN1YnN0cmluZygzKSwxMCksIU51bWJlci5pc05hTihjKSkpcmV0dXJuIGM7dGhyb3cgbmV3IG8uWFJlZkVudHJ5RXhjZXB0aW9uKCJCYWQgKHVuY29tcHJlc3NlZCkgWFJlZiBlbnRyeTogIi5jb25jYXQoZSkpfXJldHVybih0PXRoaXMuZW5jcnlwdCYmIXI/dS5nZXRPYmoodGhpcy5lbmNyeXB0LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShjLG4pKTp1LmdldE9iaigpKWluc3RhbmNlb2YgbC5CYXNlU3RyZWFtfHx0aGlzLl9jYWNoZU1hcC5zZXQoYyx0KSx0fWZldGNoQ29tcHJlc3NlZChlLHQpe2NvbnN0IHI9dC5vZmZzZXQsbj10aGlzLmZldGNoKGkuUmVmLmdldChyLDApKTtpZighKG4gaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0pKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJiYWQgT2JqU3RtIHN0cmVhbSIpO2NvbnN0IGM9bi5kaWN0LmdldCgiRmlyc3QiKSxoPW4uZGljdC5nZXQoIk4iKTtpZighTnVtYmVyLmlzSW50ZWdlcihjKXx8IU51bWJlci5pc0ludGVnZXIoaCkpdGhyb3cgbmV3IGEuRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCB1PW5ldyBzLlBhcnNlcih7bGV4ZXI6bmV3IHMuTGV4ZXIobikseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGQ9bmV3IEFycmF5KGgpLGY9bmV3IEFycmF5KGgpO2ZvcihsZXQgZT0wO2U8aDsrK2Upe2NvbnN0IHQ9dS5nZXRPYmooKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSl0aHJvdyBuZXcgYS5Gb3JtYXRFcnJvcigiaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAiLmNvbmNhdCh0KSk7Y29uc3Qgcj11LmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJpbnZhbGlkIG9iamVjdCBvZmZzZXQgaW4gdGhlIE9ialN0bSBzdHJlYW06ICIuY29uY2F0KHIpKTtkW2VdPXQsZltlXT1yfWNvbnN0IGc9KG4uc3RhcnR8fDApK2MscD1uZXcgQXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoOysrZSl7Y29uc3QgdD1lPGgtMT9mW2UrMV0tZltlXTp2b2lkIDA7aWYodDwwKXRocm93IG5ldyBhLkZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTt1PW5ldyBzLlBhcnNlcih7bGV4ZXI6bmV3IHMuTGV4ZXIobi5tYWtlU3ViU3RyZWFtKGcrZltlXSx0LG4uZGljdCkpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KTtjb25zdCBpPXUuZ2V0T2JqKCk7aWYocFtlXT1pLGkgaW5zdGFuY2VvZiBsLkJhc2VTdHJlYW0pY29udGludWU7Y29uc3Qgbz1kW2VdLGM9dGhpcy5lbnRyaWVzW29dO2MmJmMub2Zmc2V0PT09ciYmYy5nZW49PT1lJiZ0aGlzLl9jYWNoZU1hcC5zZXQobyxpKX1pZih2b2lkIDA9PT0odD1wW3QuZ2VuXSkpdGhyb3cgbmV3IG8uWFJlZkVudHJ5RXhjZXB0aW9uKCJCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICIuY29uY2F0KGUpKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIGkuUmVmP3RoaXMuZmV0Y2hBc3luYyhlLHQpOmV9YXN5bmMgZmV0Y2hBc3luYyhlLHQpe3RyeXtyZXR1cm4gdGhpcy5mZXRjaChlLHQpfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIG8uTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IHI7cmV0dXJuIGF3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2Uoci5iZWdpbixyLmVuZCksdGhpcy5mZXRjaEFzeW5jKGUsdCl9fWdldENhdGFsb2dPYmooKXtyZXR1cm4gdGhpcy5yb290fX0pfSwoZSx0LHIpPT57dmFyIG4sYSxpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0Lk1lc3NhZ2VIYW5kbGVyPXZvaWQgMCxyKDIpO3ZhciBjPXIoMTQ0KTtmdW5jdGlvbiBsKGUpe3N3aXRjaChlIGluc3RhbmNlb2YgRXJyb3J8fCJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCgwLGMudW5yZWFjaGFibGUpKCd3cmFwUmVhc29uOiBFeHBlY3RlZCAicmVhc29uIiB0byBiZSBhIChwb3NzaWJseSBjbG9uZWQpIEVycm9yLicpLGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBjLkFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGMuTWlzc2luZ1BERkV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiUGFzc3dvcmRFeGNlcHRpb24iOnJldHVybiBuZXcgYy5QYXNzd29yZEV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5jb2RlKTtjYXNlIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBjLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IGMuVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLmRldGFpbHMpO2RlZmF1bHQ6cmV0dXJuIG5ldyBjLlVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX19ZnVuY3Rpb24gaChlKXtjb25zdCB0PWUuc3RyZWFtSWQscj10aGlzLnNvdXJjZU5hbWUsbj1lLnNvdXJjZU5hbWUsYT10aGlzLmNvbU9iaixpPXRoaXMscz10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLG89e2VucXVldWUoZSl7bGV0IGk9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjEscz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMDtpZih0aGlzLmlzQ2FuY2VsbGVkKXJldHVybjtjb25zdCBvPXRoaXMuZGVzaXJlZFNpemU7dGhpcy5kZXNpcmVkU2l6ZS09aSxvPjAmJnRoaXMuZGVzaXJlZFNpemU8PTAmJih0aGlzLnNpbmtDYXBhYmlsaXR5PW5ldyBjLlByb21pc2VDYXBhYmlsaXR5LHRoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlKSxhLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbTo0LHN0cmVhbUlkOnQsY2h1bms6ZX0scyl9LGNsb3NlKCl7dGhpcy5pc0NhbmNlbGxlZHx8KHRoaXMuaXNDYW5jZWxsZWQ9ITAsYS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixzdHJlYW06MyxzdHJlYW1JZDp0fSksZGVsZXRlIGkuc3RyZWFtU2lua3NbdF0pfSxlcnJvcihlKXsoMCxjLmFzc2VydCkoZSBpbnN0YW5jZW9mIEVycm9yLCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKSx0aGlzLmlzQ2FuY2VsbGVkfHwodGhpcy5pc0NhbmNlbGxlZD0hMCxhLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbTo1LHN0cmVhbUlkOnQscmVhc29uOmwoZSl9KSl9LHNpbmtDYXBhYmlsaXR5Om5ldyBjLlByb21pc2VDYXBhYmlsaXR5LG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKSxvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZSx0aGlzLnN0cmVhbVNpbmtzW3RdPW8sbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QocyhlLmRhdGEsbykpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixzdHJlYW06OCxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbTo4LHN0cmVhbUlkOnQscmVhc29uOmwoZSl9KX0pKX1mdW5jdGlvbiB1KGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxyPXRoaXMuc291cmNlTmFtZSxuPWUuc291cmNlTmFtZSxhPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxoPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIDg6ZS5zdWNjZXNzP3Muc3RhcnRDYWxsLnJlc29sdmUoKTpzLnN0YXJ0Q2FsbC5yZWplY3QobChlLnJlYXNvbikpO2JyZWFrO2Nhc2UgNzplLnN1Y2Nlc3M/cy5wdWxsQ2FsbC5yZXNvbHZlKCk6cy5wdWxsQ2FsbC5yZWplY3QobChlLnJlYXNvbikpO2JyZWFrO2Nhc2UgNjppZighaCl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixzdHJlYW06NyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KTticmVha31oLmRlc2lyZWRTaXplPD0wJiZlLmRlc2lyZWRTaXplPjAmJmguc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpLGguZGVzaXJlZFNpemU9ZS5kZXNpcmVkU2l6ZSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dmFyIHQ7ZShudWxsPT09KHQ9aC5vblB1bGwpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNhbGwoaCkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7YS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpyLHRhcmdldE5hbWU6bixzdHJlYW06NyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0pLChmdW5jdGlvbihlKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbTo3LHN0cmVhbUlkOnQscmVhc29uOmwoZSl9KX0pKTticmVhaztjYXNlIDQ6aWYoKDAsYy5hc3NlcnQpKHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKSxzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgMzppZigoMCxjLmFzc2VydCkocywiY2xvc2Ugc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKSxzLmlzQ2xvc2VkKWJyZWFrO3MuaXNDbG9zZWQ9ITAscy5jb250cm9sbGVyLmNsb3NlKCksbyh0aGlzLGksZCkuY2FsbCh0aGlzLHMsdCk7YnJlYWs7Y2FzZSA1OigwLGMuYXNzZXJ0KShzLCJlcnJvciBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpLHMuY29udHJvbGxlci5lcnJvcihsKGUucmVhc29uKSksbyh0aGlzLGksZCkuY2FsbCh0aGlzLHMsdCk7YnJlYWs7Y2FzZSAyOmUuc3VjY2Vzcz9zLmNhbmNlbENhbGwucmVzb2x2ZSgpOnMuY2FuY2VsQ2FsbC5yZWplY3QobChlLnJlYXNvbikpLG8odGhpcyxpLGQpLmNhbGwodGhpcyxzLHQpO2JyZWFrO2Nhc2UgMTppZighaClicmVhaztuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dmFyIHI7dChudWxsPT09KHI9aC5vbkNhbmNlbCl8fHZvaWQgMD09PXI/dm9pZCAwOnIuY2FsbChoLGwoZS5yZWFzb24pKSl9KSkudGhlbigoZnVuY3Rpb24oKXthLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnIsdGFyZ2V0TmFtZTpuLHN0cmVhbToyLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe2EucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cix0YXJnZXROYW1lOm4sc3RyZWFtOjIsc3RyZWFtSWQ6dCxyZWFzb246bChlKX0pfSkpLGguc2lua0NhcGFiaWxpdHkucmVqZWN0KGwoZS5yZWFzb24pKSxoLmlzQ2FuY2VsbGVkPSEwLGRlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jIGZ1bmN0aW9uIGQoZSx0KXt2YXIgcixuLGE7YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtudWxsPT09KHI9ZS5zdGFydENhbGwpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnByb21pc2UsbnVsbD09PShuPWUucHVsbENhbGwpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnByb21pc2UsbnVsbD09PShhPWUuY2FuY2VsQ2FsbCl8fHZvaWQgMD09PWE/dm9pZCAwOmEucHJvbWlzZV0pLGRlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3RdfXQuTWVzc2FnZUhhbmRsZXI9KG49bmV3IFdlYWtTZXQsYT1uZXcgV2Vha1NldCxpPW5ldyBXZWFrU2V0LGNsYXNze2NvbnN0cnVjdG9yKGUsdCxyKXtzKHRoaXMsaSkscyh0aGlzLGEpLHModGhpcyxuKSx0aGlzLnNvdXJjZU5hbWU9ZSx0aGlzLnRhcmdldE5hbWU9dCx0aGlzLmNvbU9iaj1yLHRoaXMuY2FsbGJhY2tJZD0xLHRoaXMuc3RyZWFtSWQ9MSx0aGlzLnN0cmVhbVNpbmtzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5zdHJlYW1Db250cm9sbGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmFjdGlvbkhhbmRsZXI9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9vbkNvbU9iak9uTWVzc2FnZT1lPT57Y29uc3QgdD1lLmRhdGE7aWYodC50YXJnZXROYW1lIT09dGhpcy5zb3VyY2VOYW1lKXJldHVybjtpZih0LnN0cmVhbSlyZXR1cm4gdm9pZCBvKHRoaXMsYSx1KS5jYWxsKHRoaXMsdCk7aWYodC5jYWxsYmFjayl7Y29uc3QgZT10LmNhbGxiYWNrSWQscj10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdO2lmKCFyKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgIi5jb25jYXQoZSkpO2lmKGRlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2VdLDE9PT10LmNhbGxiYWNrKXIucmVzb2x2ZSh0LmRhdGEpO2Vsc2V7aWYoMiE9PXQuY2FsbGJhY2spdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtyLnJlamVjdChsKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IGk9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAiLmNvbmNhdCh0LmFjdGlvbikpO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUsbj10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UoaSh0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihhKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpuLGNhbGxiYWNrOjEsY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQsZGF0YTphfSl9KSwoZnVuY3Rpb24oYSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTplLHRhcmdldE5hbWU6bixjYWxsYmFjazoyLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLHJlYXNvbjpsKGEpfSl9KSl9ZWxzZSB0LnN0cmVhbUlkP28odGhpcyxuLGgpLmNhbGwodGhpcyx0KTppKHQuZGF0YSl9LHIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfW9uKGUsdCl7Y29uc3Qgcj10aGlzLmFjdGlvbkhhbmRsZXI7aWYocltlXSl0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIicuY29uY2F0KGUsJyInKSk7cltlXT10fXNlbmQoZSx0LHIpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LHIpfXNlbmRXaXRoUHJvbWlzZShlLHQscil7Y29uc3Qgbj10aGlzLmNhbGxiYWNrSWQrKyxhPW5ldyBjLlByb21pc2VDYXBhYmlsaXR5O3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbbl09YTt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6bixkYXRhOnR9LHIpfWNhdGNoKGUpe2EucmVqZWN0KGUpfXJldHVybiBhLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LHIsbil7Y29uc3QgYT10aGlzLnN0cmVhbUlkKyssaT10aGlzLnNvdXJjZU5hbWUscz10aGlzLnRhcmdldE5hbWUsbz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDpyPT57Y29uc3QgbD1uZXcgYy5Qcm9taXNlQ2FwYWJpbGl0eTtyZXR1cm4gdGhpcy5zdHJlYW1Db250cm9sbGVyc1thXT17Y29udHJvbGxlcjpyLHN0YXJ0Q2FsbDpsLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfSxvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTpzLGFjdGlvbjplLHN0cmVhbUlkOmEsZGF0YTp0LGRlc2lyZWRTaXplOnIuZGVzaXJlZFNpemV9LG4pLGwucHJvbWlzZX0scHVsbDplPT57Y29uc3QgdD1uZXcgYy5Qcm9taXNlQ2FwYWJpbGl0eTtyZXR1cm4gdGhpcy5zdHJlYW1Db250cm9sbGVyc1thXS5wdWxsQ2FsbD10LG8ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOnMsc3RyZWFtOjYsc3RyZWFtSWQ6YSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSksdC5wcm9taXNlfSxjYW5jZWw6ZT0+eygwLGMuYXNzZXJ0KShlIGluc3RhbmNlb2YgRXJyb3IsImNhbmNlbCBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb24iKTtjb25zdCB0PW5ldyBjLlByb21pc2VDYXBhYmlsaXR5O3JldHVybiB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2FdLmNhbmNlbENhbGw9dCx0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2FdLmlzQ2xvc2VkPSEwLG8ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOnMsc3RyZWFtOjEsc3RyZWFtSWQ6YSxyZWFzb246bChlKX0pLHQucHJvbWlzZX19LHIpfWRlc3Ryb3koKXt0aGlzLmNvbU9iai5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLl9vbkNvbU9iak9uTWVzc2FnZSl9fSl9LChlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5QREZXb3JrZXJTdHJlYW09dm9pZCAwLHIoMTM5KTt2YXIgbj1yKDE0NCk7dC5QREZXb3JrZXJTdHJlYW09Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lLHRoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbCx0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1udWxsLHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnM9W119Z2V0RnVsbFJlYWRlcigpe3JldHVybigwLG4uYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIlBERldvcmtlclN0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiIpLHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyPW5ldyBhKHRoaXMuX21zZ0hhbmRsZXIpLHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyfWdldFJhbmdlUmVhZGVyKGUsdCl7Y29uc3Qgcj1uZXcgaShlLHQsdGhpcy5fbXNnSGFuZGxlcik7cmV0dXJuIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChyKSxyfWNhbmNlbEFsbFJlcXVlc3RzKGUpe3RoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyJiZ0aGlzLl9mdWxsUmVxdWVzdFJlYWRlci5jYW5jZWwoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSl0LmNhbmNlbChlKX19O2NsYXNzIGF7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lLHRoaXMub25Qcm9ncmVzcz1udWxsLHRoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbCx0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExLHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCksdGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZCx0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZCx0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgaXtjb25zdHJ1Y3RvcihlLHQscil7dGhpcy5fbXNnSGFuZGxlcj1yLHRoaXMub25Qcm9ncmVzcz1udWxsO2NvbnN0IG49dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjplLGVuZDp0fSk7dGhpcy5fcmVhZGVyPW4uZ2V0UmVhZGVyKCl9Z2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCl7cmV0dXJuITF9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX19XSx0PXt9O2Z1bmN0aW9uIG4ocil7dmFyIGE9dFtyXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsbiksaS5leHBvcnRzfW4uZD0oZSx0KT0+e2Zvcih2YXIgciBpbiB0KW4ubyh0LHIpJiYhbi5vKGUscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0sbi5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KSxuLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9O3ZhciBhPXt9O3JldHVybigoKT0+e3ZhciBlPWE7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJXb3JrZXJNZXNzYWdlSGFuZGxlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQuV29ya2VyTWVzc2FnZUhhbmRsZXJ9fSk7dmFyIHQ9bigxKX0pKCksYX0pKCksIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2UuZXhwb3J0cz1hKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmci5hbWRPP2RlZmluZSgicGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyIixbXSxhKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0c1sicGRmanMtZGlzdC9idWlsZC9wZGYud29ya2VyIl09YSgpOm5bInBkZmpzLWRpc3QvYnVpbGQvcGRmLndvcmtlciJdPW4ucGRmanNXb3JrZXI9YSgpfSw5NjYyOihlLHQscik9Pnt2YXIgbj1yKDYxNCksYT1yKDYzMzApLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihuKGUpKXJldHVybiBlO3Rocm93IGkoYShlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSw5NDgzOihlLHQscik9Pnt2YXIgbj1yKDQ0MTEpLGE9cig2MzMwKSxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSlyZXR1cm4gZTt0aHJvdyBpKGEoZSkrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciIpfX0sNjA3NzooZSx0LHIpPT57dmFyIG49cig2MTQpLGE9U3RyaW5nLGk9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGV8fG4oZSkpcmV0dXJuIGU7dGhyb3cgaSgiQ2FuJ3Qgc2V0ICIrYShlKSsiIGFzIGEgcHJvdG90eXBlIil9fSwxMjIzOihlLHQscik9Pnt2YXIgbj1yKDUxMTIpLGE9cigzMCksaT1yKDMwNzApLmYscz1uKCJ1bnNjb3BhYmxlcyIpLG89QXJyYXkucHJvdG90eXBlO251bGw9PW9bc10mJmkobyxzLHtjb25maWd1cmFibGU6ITAsdmFsdWU6YShudWxsKX0pLGUuZXhwb3J0cz1mdW5jdGlvbihlKXtvW3NdW2VdPSEwfX0sMTUzMDooZSx0LHIpPT57dmFyIG49cig4NzEwKS5jaGFyQXQ7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdCsocj9uKGUsdCkubGVuZ3RoOjEpfX0sNTc4NzooZSx0LHIpPT57dmFyIG49cig3OTc2KSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihuKHQsZSkpcmV0dXJuIGU7dGhyb3cgYSgiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDk2NzA6KGUsdCxyKT0+e3ZhciBuPXIoMTExKSxhPVN0cmluZyxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSlyZXR1cm4gZTt0aHJvdyBpKGEoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSwzMDEzOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzU1NjooZSx0LHIpPT57dmFyIG49cig3MjkzKTtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBlPW5ldyBBcnJheUJ1ZmZlcig4KTtPYmplY3QuaXNFeHRlbnNpYmxlKGUpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYSIse3ZhbHVlOjh9KX19KSl9LDI2MDooZSx0LHIpPT57dmFyIG4sYSxpLHM9cigzMDEzKSxvPXIoOTc4MSksYz1yKDc4NTQpLGw9cig2MTQpLGg9cigxMTEpLHU9cigyNTk3KSxkPXIoNjQ4KSxmPXIoNjMzMCksZz1yKDg4ODApLHA9cig4MDUyKSxtPXIoNzA0NSksYj1yKDc5NzYpLHk9cig5NTE4KSx3PXIoNzY3NCksdj1yKDUxMTIpLHg9cig5NzExKSxTPXIoOTkwOSksQT1TLmVuZm9yY2Usaz1TLmdldCxDPWMuSW50OEFycmF5LE89QyYmQy5wcm90b3R5cGUsRj1jLlVpbnQ4Q2xhbXBlZEFycmF5LEk9RiYmRi5wcm90b3R5cGUsVD1DJiZ5KEMpLE09TyYmeShPKSxFPU9iamVjdC5wcm90b3R5cGUsUD1jLlR5cGVFcnJvcixSPXYoInRvU3RyaW5nVGFnIiksTj14KCJUWVBFRF9BUlJBWV9UQUciKSxEPSJUeXBlZEFycmF5Q29uc3RydWN0b3IiLEI9cyYmISF3JiYiT3BlcmEiIT09ZChjLm9wZXJhKSxMPSExLF89e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxqPXtCaWdJbnQ2NEFycmF5OjgsQmlnVWludDY0QXJyYXk6OH0sVT1mdW5jdGlvbihlKXt2YXIgdD15KGUpO2lmKGgodCkpe3ZhciByPWsodCk7cmV0dXJuIHImJnUocixEKT9yW0RdOlUodCl9fSwkPWZ1bmN0aW9uKGUpe2lmKCFoKGUpKXJldHVybiExO3ZhciB0PWQoZSk7cmV0dXJuIHUoXyx0KXx8dShqLHQpfTtmb3IobiBpbiBfKShpPShhPWNbbl0pJiZhLnByb3RvdHlwZSk/QShpKVtEXT1hOkI9ITE7Zm9yKG4gaW4gaikoaT0oYT1jW25dKSYmYS5wcm90b3R5cGUpJiYoQShpKVtEXT1hKTtpZigoIUJ8fCFsKFQpfHxUPT09RnVuY3Rpb24ucHJvdG90eXBlKSYmKFQ9ZnVuY3Rpb24oKXt0aHJvdyBQKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxCKSlmb3IobiBpbiBfKWNbbl0mJncoY1tuXSxUKTtpZigoIUJ8fCFNfHxNPT09RSkmJihNPVQucHJvdG90eXBlLEIpKWZvcihuIGluIF8pY1tuXSYmdyhjW25dLnByb3RvdHlwZSxNKTtpZihCJiZ5KEkpIT09TSYmdyhJLE0pLG8mJiF1KE0sUikpZm9yKG4gaW4gTD0hMCxtKE0sUix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBoKHRoaXMpP3RoaXNbTl06dm9pZCAwfX0pLF8pY1tuXSYmZyhjW25dLE4sbik7ZS5leHBvcnRzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOkIsVFlQRURfQVJSQVlfVEFHOkwmJk4sYVR5cGVkQXJyYXk6ZnVuY3Rpb24oZSl7aWYoJChlKSlyZXR1cm4gZTt0aHJvdyBQKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbihlKXtpZihsKGUpJiYoIXd8fGIoVCxlKSkpcmV0dXJuIGU7dGhyb3cgUChmKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQscixuKXtpZihvKXtpZihyKWZvcih2YXIgYSBpbiBfKXt2YXIgaT1jW2FdO2lmKGkmJnUoaS5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBpLnByb3RvdHlwZVtlXX1jYXRjaChyKXt0cnl7aS5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1NW2VdJiYhcnx8cChNLGUscj90OkImJk9bZV18fHQsbil9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhO2lmKG8pe2lmKHcpe2lmKHIpZm9yKG4gaW4gXylpZigoYT1jW25dKSYmdShhLGUpKXRyeXtkZWxldGUgYVtlXX1jYXRjaChlKXt9aWYoVFtlXSYmIXIpcmV0dXJuO3RyeXtyZXR1cm4gcChULGUscj90OkImJlRbZV18fHQpfWNhdGNoKGUpe319Zm9yKG4gaW4gXykhKGE9Y1tuXSl8fGFbZV0mJiFyfHxwKGEsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpVLGlzVmlldzpmdW5jdGlvbihlKXtpZighaChlKSlyZXR1cm4hMTt2YXIgdD1kKGUpO3JldHVybiJEYXRhVmlldyI9PT10fHx1KF8sdCl8fHUoaix0KX0saXNUeXBlZEFycmF5OiQsVHlwZWRBcnJheTpULFR5cGVkQXJyYXlQcm90b3R5cGU6TX19LDMzMzE6KGUsdCxyKT0+e3ZhciBuPXIoNzg1NCksYT1yKDE3MDIpLGk9cig5NzgxKSxzPXIoMzAxMyksbz1yKDY1MzApLGM9cig4ODgwKSxsPXIoNzA0NSksaD1yKDkxOTApLHU9cig3MjkzKSxkPXIoNTc4NyksZj1yKDkzMDMpLGc9cig3NDY2KSxwPXIoNzA2NyksbT1yKDExNzkpLGI9cig5NTE4KSx5PXIoNzY3NCksdz1yKDgwMDYpLmYsdj1yKDEyODUpLHg9cigxNTg5KSxTPXIoODAwMyksQT1yKDk5MDkpLGs9by5QUk9QRVIsQz1vLkNPTkZJR1VSQUJMRSxPPSJBcnJheUJ1ZmZlciIsRj0iRGF0YVZpZXciLEk9InByb3RvdHlwZSIsVD0iV3JvbmcgaW5kZXgiLE09QS5nZXR0ZXJGb3IoTyksRT1BLmdldHRlckZvcihGKSxQPUEuc2V0LFI9bltPXSxOPVIsRD1OJiZOW0ldLEI9bltGXSxMPUImJkJbSV0sXz1PYmplY3QucHJvdG90eXBlLGo9bi5BcnJheSxVPW4uUmFuZ2VFcnJvciwkPWEodiksWD1hKFtdLnJldmVyc2UpLEg9bS5wYWNrLHE9bS51bnBhY2ssej1mdW5jdGlvbihlKXtyZXR1cm5bMjU1JmVdfSxHPWZ1bmN0aW9uKGUpe3JldHVyblsyNTUmZSxlPj44JjI1NV19LFc9ZnVuY3Rpb24oZSl7cmV0dXJuWzI1NSZlLGU+PjgmMjU1LGU+PjE2JjI1NSxlPj4yNCYyNTVdfSxWPWZ1bmN0aW9uKGUpe3JldHVybiBlWzNdPDwyNHxlWzJdPDwxNnxlWzFdPDw4fGVbMF19LEs9ZnVuY3Rpb24oZSl7cmV0dXJuIEgoZSwyMyw0KX0sWT1mdW5jdGlvbihlKXtyZXR1cm4gSChlLDUyLDgpfSxKPWZ1bmN0aW9uKGUsdCxyKXtsKGVbSV0sdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByKHRoaXMpW3RdfX0pfSxaPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPUUoZSksaT1wKHIpLHM9ISFuO2lmKGkrdD5hLmJ5dGVMZW5ndGgpdGhyb3cgVShUKTt2YXIgbz1hLmJ5dGVzLGM9aSthLmJ5dGVPZmZzZXQsbD14KG8sYyxjK3QpO3JldHVybiBzP2w6WChsKX0sUT1mdW5jdGlvbihlLHQscixuLGEsaSl7dmFyIHM9RShlKSxvPXAociksYz1uKCthKSxsPSEhaTtpZihvK3Q+cy5ieXRlTGVuZ3RoKXRocm93IFUoVCk7Zm9yKHZhciBoPXMuYnl0ZXMsdT1vK3MuYnl0ZU9mZnNldCxkPTA7ZDx0O2QrKyloW3UrZF09Y1tsP2Q6dC1kLTFdfTtpZihzKXt2YXIgZWU9ayYmUi5uYW1lIT09TztpZih1KChmdW5jdGlvbigpe1IoMSl9KSkmJnUoKGZ1bmN0aW9uKCl7bmV3IFIoLTEpfSkpJiYhdSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFIsbmV3IFIoMS41KSxuZXcgUihOYU4pLDEhPVIubGVuZ3RofHxlZSYmIUN9KSkpZWUmJkMmJmMoUiwibmFtZSIsTyk7ZWxzZXsoTj1mdW5jdGlvbihlKXtyZXR1cm4gZCh0aGlzLEQpLG5ldyBSKHAoZSkpfSlbSV09RDtmb3IodmFyIHRlLHJlPXcoUiksbmU9MDtyZS5sZW5ndGg+bmU7KSh0ZT1yZVtuZSsrXSlpbiBOfHxjKE4sdGUsUlt0ZV0pO0QuY29uc3RydWN0b3I9Tn15JiZiKEwpIT09XyYmeShMLF8pO3ZhciBhZT1uZXcgQihuZXcgTigyKSksaWU9YShMLnNldEludDgpO2FlLnNldEludDgoMCwyMTQ3NDgzNjQ4KSxhZS5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIWFlLmdldEludDgoMCkmJmFlLmdldEludDgoMSl8fGgoTCx7c2V0SW50ODpmdW5jdGlvbihlLHQpe2llKHRoaXMsZSx0PDwyND4+MjQpfSxzZXRVaW50ODpmdW5jdGlvbihlLHQpe2llKHRoaXMsZSx0PDwyND4+MjQpfX0se3Vuc2FmZTohMH0pfWVsc2UgRD0oTj1mdW5jdGlvbihlKXtkKHRoaXMsRCk7dmFyIHQ9cChlKTtQKHRoaXMse3R5cGU6TyxieXRlczokKGoodCksMCksYnl0ZUxlbmd0aDp0fSksaXx8KHRoaXMuYnl0ZUxlbmd0aD10LHRoaXMuZGV0YWNoZWQ9ITEpfSlbSV0sTD0oQj1mdW5jdGlvbihlLHQscil7ZCh0aGlzLEwpLGQoZSxEKTt2YXIgbj1NKGUpLGE9bi5ieXRlTGVuZ3RoLHM9Zih0KTtpZihzPDB8fHM+YSl0aHJvdyBVKCJXcm9uZyBvZmZzZXQiKTtpZihzKyhyPXZvaWQgMD09PXI/YS1zOmcocikpPmEpdGhyb3cgVSgiV3JvbmcgbGVuZ3RoIik7UCh0aGlzLHt0eXBlOkYsYnVmZmVyOmUsYnl0ZUxlbmd0aDpyLGJ5dGVPZmZzZXQ6cyxieXRlczpuLmJ5dGVzfSksaXx8KHRoaXMuYnVmZmVyPWUsdGhpcy5ieXRlTGVuZ3RoPXIsdGhpcy5ieXRlT2Zmc2V0PXMpfSlbSV0saSYmKEooTiwiYnl0ZUxlbmd0aCIsTSksSihCLCJidWZmZXIiLEUpLEooQiwiYnl0ZUxlbmd0aCIsRSksSihCLCJieXRlT2Zmc2V0IixFKSksaChMLHtnZXRJbnQ4OmZ1bmN0aW9uKGUpe3JldHVybiBaKHRoaXMsMSxlKVswXTw8MjQ+PjI0fSxnZXRVaW50ODpmdW5jdGlvbihlKXtyZXR1cm4gWih0aGlzLDEsZSlbMF19LGdldEludDE2OmZ1bmN0aW9uKGUpe3ZhciB0PVoodGhpcywyLGUsYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0pO3JldHVybih0WzFdPDw4fHRbMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbihlKXt2YXIgdD1aKHRoaXMsMixlLGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKTtyZXR1cm4gdFsxXTw8OHx0WzBdfSxnZXRJbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gVihaKHRoaXMsNCxlLGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbihlKXtyZXR1cm4gVihaKHRoaXMsNCxlLGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uKGUpe3JldHVybiBxKFoodGhpcyw0LGUsYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0pLDIzKX0sZ2V0RmxvYXQ2NDpmdW5jdGlvbihlKXtyZXR1cm4gcShaKHRoaXMsOCxlLGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdKSw1Mil9LHNldEludDg6ZnVuY3Rpb24oZSx0KXtRKHRoaXMsMSxlLHosdCl9LHNldFVpbnQ4OmZ1bmN0aW9uKGUsdCl7USh0aGlzLDEsZSx6LHQpfSxzZXRJbnQxNjpmdW5jdGlvbihlLHQpe1EodGhpcywyLGUsRyx0LGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uKGUsdCl7USh0aGlzLDIsZSxHLHQsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRJbnQzMjpmdW5jdGlvbihlLHQpe1EodGhpcyw0LGUsVyx0LGFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdKX0sc2V0VWludDMyOmZ1bmN0aW9uKGUsdCl7USh0aGlzLDQsZSxXLHQsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKGUsdCl7USh0aGlzLDQsZSxLLHQsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDY0OmZ1bmN0aW9uKGUsdCl7USh0aGlzLDgsZSxZLHQsYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0pfX0pO1MoTixPKSxTKEIsRiksZS5leHBvcnRzPXtBcnJheUJ1ZmZlcjpOLERhdGFWaWV3OkJ9fSwxMjg1OihlLHQscik9Pnt2YXIgbj1yKDc5MDgpLGE9cigxNDAwKSxpPXIoNjI0NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1uKHRoaXMpLHI9aSh0KSxzPWFyZ3VtZW50cy5sZW5ndGgsbz1hKHM+MT9hcmd1bWVudHNbMV06dm9pZCAwLHIpLGM9cz4yP2FyZ3VtZW50c1syXTp2b2lkIDAsbD12b2lkIDA9PT1jP3I6YShjLHIpO2w+bzspdFtvKytdPWU7cmV0dXJuIHR9fSw3NzQ1OihlLHQscik9Pnt2YXIgbj1yKDYyNDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLGE9bih0KSxpPW5ldyBlKGEpO2E+cjspaVtyXT10W3IrK107cmV0dXJuIGl9fSw4NDU3OihlLHQscik9Pnt2YXIgbj1yKDk5NzQpLGE9cig2OTE2KSxpPXIoNzkwOCkscz1yKDM0MTEpLG89cig3NjU5KSxjPXIoNDQxMSksbD1yKDYyNDQpLGg9cig2MTM1KSx1PXIoNDEyMSksZD1yKDEyNDYpLGY9QXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSkscj1jKHRoaXMpLGc9YXJndW1lbnRzLmxlbmd0aCxwPWc+MT9hcmd1bWVudHNbMV06dm9pZCAwLG09dm9pZCAwIT09cDttJiYocD1uKHAsZz4yP2FyZ3VtZW50c1syXTp2b2lkIDApKTt2YXIgYix5LHcsdix4LFMsQT1kKHQpLGs9MDtpZighQXx8dGhpcz09PWYmJm8oQSkpZm9yKGI9bCh0KSx5PXI/bmV3IHRoaXMoYik6ZihiKTtiPms7aysrKVM9bT9wKHRba10sayk6dFtrXSxoKHksayxTKTtlbHNlIGZvcih4PSh2PXUodCxBKSkubmV4dCx5PXI/bmV3IHRoaXM6W107ISh3PWEoeCx2KSkuZG9uZTtrKyspUz1tP3ModixwLFt3LnZhbHVlLGtdLCEwKTp3LnZhbHVlLGgoeSxrLFMpO3JldHVybiB5Lmxlbmd0aD1rLHl9fSwxMzE4OihlLHQscik9Pnt2YXIgbj1yKDU2NTYpLGE9cigxNDAwKSxpPXIoNjI0NCkscz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyLHMpe3ZhciBvLGM9bih0KSxsPWkoYyksaD1hKHMsbCk7aWYoZSYmciE9cil7Zm9yKDtsPmg7KWlmKChvPWNbaCsrXSkhPW8pcmV0dXJuITB9ZWxzZSBmb3IoO2w+aDtoKyspaWYoKGV8fGggaW4gYykmJmNbaF09PT1yKXJldHVybiBlfHxofHwwO3JldHVybiFlJiYtMX19O2UuZXhwb3J0cz17aW5jbHVkZXM6cyghMCksaW5kZXhPZjpzKCExKX19LDk2NzE6KGUsdCxyKT0+e3ZhciBuPXIoOTk3NCksYT1yKDgzNjEpLGk9cig3OTA4KSxzPXIoNjI0NCksbz1mdW5jdGlvbihlKXt2YXIgdD0xPT1lO3JldHVybiBmdW5jdGlvbihyLG8sYyl7Zm9yKHZhciBsLGg9aShyKSx1PWEoaCksZD1uKG8sYyksZj1zKHUpO2YtLSA+MDspaWYoZChsPXVbZl0sZixoKSlzd2l0Y2goZSl7Y2FzZSAwOnJldHVybiBsO2Nhc2UgMTpyZXR1cm4gZn1yZXR1cm4gdD8tMTp2b2lkIDB9fTtlLmV4cG9ydHM9e2ZpbmRMYXN0Om8oMCksZmluZExhc3RJbmRleDpvKDEpfX0sMjA5MjooZSx0LHIpPT57dmFyIG49cig5OTc0KSxhPXIoMTcwMiksaT1yKDgzNjEpLHM9cig3OTA4KSxvPXIoNjI0NCksYz1yKDU0MTcpLGw9YShbXS5wdXNoKSxoPWZ1bmN0aW9uKGUpe3ZhciB0PTE9PWUscj0yPT1lLGE9Mz09ZSxoPTQ9PWUsdT02PT1lLGQ9Nz09ZSxmPTU9PWV8fHU7cmV0dXJuIGZ1bmN0aW9uKGcscCxtLGIpe2Zvcih2YXIgeSx3LHY9cyhnKSx4PWkodiksUz1uKHAsbSksQT1vKHgpLGs9MCxDPWJ8fGMsTz10P0MoZyxBKTpyfHxkP0MoZywwKTp2b2lkIDA7QT5rO2srKylpZigoZnx8ayBpbiB4KSYmKHc9Uyh5PXhba10sayx2KSxlKSlpZih0KU9ba109dztlbHNlIGlmKHcpc3dpdGNoKGUpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIHk7Y2FzZSA2OnJldHVybiBrO2Nhc2UgMjpsKE8seSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSA0OnJldHVybiExO2Nhc2UgNzpsKE8seSl9cmV0dXJuIHU/LTE6YXx8aD9oOk99fTtlLmV4cG9ydHM9e2ZvckVhY2g6aCgwKSxtYXA6aCgxKSxmaWx0ZXI6aCgyKSxzb21lOmgoMyksZXZlcnk6aCg0KSxmaW5kOmgoNSksZmluZEluZGV4OmgoNiksZmlsdGVyUmVqZWN0OmgoNyl9fSw5MzQxOihlLHQscik9Pnt2YXIgbj1yKDcyOTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPVtdW2VdO3JldHVybiEhciYmbigoZnVuY3Rpb24oKXtyLmNhbGwobnVsbCx0fHxmdW5jdGlvbigpe3JldHVybiAxfSwxKX0pKX19LDM2NzE6KGUsdCxyKT0+e3ZhciBuPXIoOTY2MiksYT1yKDc5MDgpLGk9cig4MzYxKSxzPXIoNjI0NCksbz1UeXBlRXJyb3IsYz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyLGMsbCl7bihyKTt2YXIgaD1hKHQpLHU9aShoKSxkPXMoaCksZj1lP2QtMTowLGc9ZT8tMToxO2lmKGM8Milmb3IoOzspe2lmKGYgaW4gdSl7bD11W2ZdLGYrPWc7YnJlYWt9aWYoZis9ZyxlP2Y8MDpkPD1mKXRocm93IG8oIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO2U/Zj49MDpkPmY7Zis9ZylmIGluIHUmJihsPXIobCx1W2ZdLGYsaCkpO3JldHVybiBsfX07ZS5leHBvcnRzPXtsZWZ0OmMoITEpLHJpZ2h0OmMoITApfX0sMzY1ODooZSx0LHIpPT57dmFyIG49cig5NzgxKSxhPXIoMzE1NyksaT1UeXBlRXJyb3Iscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89biYmIWZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcylyZXR1cm4hMDt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLmxlbmd0aD0xfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKTtlLmV4cG9ydHM9bz9mdW5jdGlvbihlLHQpe2lmKGEoZSkmJiFzKGUsImxlbmd0aCIpLndyaXRhYmxlKXRocm93IGkoIkNhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgiKTtyZXR1cm4gZS5sZW5ndGg9dH06ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5sZW5ndGg9dH19LDE1ODk6KGUsdCxyKT0+e3ZhciBuPXIoMTQwMCksYT1yKDYyNDQpLGk9cig2MTM1KSxzPUFycmF5LG89TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGM9YShlKSxsPW4odCxjKSxoPW4odm9pZCAwPT09cj9jOnIsYyksdT1zKG8oaC1sLDApKSxkPTA7bDxoO2wrKyxkKyspaSh1LGQsZVtsXSk7cmV0dXJuIHUubGVuZ3RoPWQsdX19LDIwNjooZSx0LHIpPT57dmFyIG49cigxNzAyKTtlLmV4cG9ydHM9bihbXS5zbGljZSl9LDQzNjI6KGUsdCxyKT0+e3ZhciBuPXIoMTU4OSksYT1NYXRoLmZsb29yLGk9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aCxjPWEoci8yKTtyZXR1cm4gcjw4P3MoZSx0KTpvKGUsaShuKGUsMCxjKSx0KSxpKG4oZSxjKSx0KSx0KX0scz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGE9ZS5sZW5ndGgsaT0xO2k8YTspe2ZvcihuPWkscj1lW2ldO24mJnQoZVtuLTFdLHIpPjA7KWVbbl09ZVstLW5dO24hPT1pKysmJihlW25dPXIpfXJldHVybiBlfSxvPWZ1bmN0aW9uKGUsdCxyLG4pe2Zvcih2YXIgYT10Lmxlbmd0aCxpPXIubGVuZ3RoLHM9MCxvPTA7czxhfHxvPGk7KWVbcytvXT1zPGEmJm88aT9uKHRbc10scltvXSk8PTA/dFtzKytdOnJbbysrXTpzPGE/dFtzKytdOnJbbysrXTtyZXR1cm4gZX07ZS5leHBvcnRzPWl9LDc0NzU6KGUsdCxyKT0+e3ZhciBuPXIoMzE1NyksYT1yKDQ0MTEpLGk9cigxMTEpLHM9cig1MTEyKSgic3BlY2llcyIpLG89QXJyYXk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBuKGUpJiYodD1lLmNvbnN0cnVjdG9yLChhKHQpJiYodD09PW98fG4odC5wcm90b3R5cGUpKXx8aSh0KSYmbnVsbD09PSh0PXRbc10pKSYmKHQ9dm9pZCAwKSksdm9pZCAwPT09dD9vOnR9fSw1NDE3OihlLHQscik9Pnt2YXIgbj1yKDc0NzUpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcobihlKSkoMD09PXQ/MDp0KX19LDE4NDM6KGUsdCxyKT0+e3ZhciBuPXIoNjI0NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPW4oZSksYT1uZXcgdChyKSxpPTA7aTxyO2krKylhW2ldPWVbci1pLTFdO3JldHVybiBhfX0sMTU3MjooZSx0LHIpPT57dmFyIG49cig2MjQ0KSxhPXIoOTMwMyksaT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixzKXt2YXIgbz1uKGUpLGM9YShyKSxsPWM8MD9vK2M6YztpZihsPj1vfHxsPDApdGhyb3cgaSgiSW5jb3JyZWN0IGluZGV4Iik7Zm9yKHZhciBoPW5ldyB0KG8pLHU9MDt1PG87dSsrKWhbdV09dT09PWw/czplW3VdO3JldHVybiBofX0sMzQxMTooZSx0LHIpPT57dmFyIG49cig5NjcwKSxhPXIoOTIxMik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGkpe3RyeXtyZXR1cm4gaT90KG4ocilbMF0sclsxXSk6dChyKX1jYXRjaCh0KXthKGUsInRocm93Iix0KX19fSw3MDcyOihlLHQscik9Pnt2YXIgbj1yKDUxMTIpKCJpdGVyYXRvciIpLGE9ITE7dHJ5e3ZhciBpPTAscz17bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhaSsrfX0scmV0dXJuOmZ1bmN0aW9uKCl7YT0hMH19O3Nbbl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShzLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goZSl7fWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCF0JiYhYSlyZXR1cm4hMTt2YXIgcj0hMTt0cnl7dmFyIGk9e307aVtuXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19fX0sZShpKX1jYXRjaChlKXt9cmV0dXJuIHJ9fSw0MzI2OihlLHQscik9Pnt2YXIgbj1yKDE3MDIpLGE9bih7fS50b1N0cmluZyksaT1uKCIiLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoYShlKSw4LC0xKX19LDY0ODooZSx0LHIpPT57dmFyIG49cigxNjk0KSxhPXIoNjE0KSxpPXIoNDMyNikscz1yKDUxMTIpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGM9IkFyZ3VtZW50cyI9PWkoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTtlLmV4cG9ydHM9bj9pOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gdm9pZCAwPT09ZT8iVW5kZWZpbmVkIjpudWxsPT09ZT8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihyPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiBlW3RdfWNhdGNoKGUpe319KHQ9byhlKSxzKSk/cjpjP2kodCk6Ik9iamVjdCI9PShuPWkodCkpJiZhKHQuY2FsbGVlKT8iQXJndW1lbnRzIjpufX0sOTMyMDooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoOTE5MCksaT1yKDI0MjMpLmdldFdlYWtEYXRhLHM9cig1Nzg3KSxvPXIoOTY3MCksYz1yKDg1NTQpLGw9cigxMTEpLGg9cig0MDgpLHU9cigyMDkyKSxkPXIoMjU5NyksZj1yKDk5MDkpLGc9Zi5zZXQscD1mLmdldHRlckZvcixtPXUuZmluZCxiPXUuZmluZEluZGV4LHk9bihbXS5zcGxpY2UpLHc9MCx2PWZ1bmN0aW9uKGUpe3JldHVybiBlLmZyb3plbnx8KGUuZnJvemVuPW5ldyB4KX0seD1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sUz1mdW5jdGlvbihlLHQpe3JldHVybiBtKGUuZW50cmllcywoZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF09PT10fSkpfTt4LnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVModGhpcyxlKTtpZih0KXJldHVybiB0WzFdfSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuISFTKHRoaXMsZSl9LHNldDpmdW5jdGlvbihlLHQpe3ZhciByPVModGhpcyxlKTtyP3JbMV09dDp0aGlzLmVudHJpZXMucHVzaChbZSx0XSl9LGRlbGV0ZTpmdW5jdGlvbihlKXt2YXIgdD1iKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT1lfSkpO3JldHVybn50JiZ5KHRoaXMuZW50cmllcyx0LDEpLCEhfnR9fSxlLmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciB1PWUoKGZ1bmN0aW9uKGUsYSl7cyhlLGYpLGcoZSx7dHlwZTp0LGlkOncrKyxmcm96ZW46dm9pZCAwfSksYyhhKXx8aChhLGVbbl0se3RoYXQ6ZSxBU19FTlRSSUVTOnJ9KX0pKSxmPXUucHJvdG90eXBlLG09cCh0KSxiPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1tKGUpLGE9aShvKHQpLCEwKTtyZXR1cm4hMD09PWE/dihuKS5zZXQodCxyKTphW24uaWRdPXIsZX07cmV0dXJuIGEoZix7ZGVsZXRlOmZ1bmN0aW9uKGUpe3ZhciB0PW0odGhpcyk7aWYoIWwoZSkpcmV0dXJuITE7dmFyIHI9aShlKTtyZXR1cm4hMD09PXI/dih0KS5kZWxldGUoZSk6ciYmZChyLHQuaWQpJiZkZWxldGUgclt0LmlkXX0saGFzOmZ1bmN0aW9uKGUpe3ZhciB0PW0odGhpcyk7aWYoIWwoZSkpcmV0dXJuITE7dmFyIHI9aShlKTtyZXR1cm4hMD09PXI/dih0KS5oYXMoZSk6ciYmZChyLHQuaWQpfX0pLGEoZixyP3tnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9bSh0aGlzKTtpZihsKGUpKXt2YXIgcj1pKGUpO3JldHVybiEwPT09cj92KHQpLmdldChlKTpyP3JbdC5pZF06dm9pZCAwfX0sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGIodGhpcyxlLHQpfX06e2FkZDpmdW5jdGlvbihlKXtyZXR1cm4gYih0aGlzLGUsITApfX0pLHV9fX0sNzcxMDooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNzg1NCksaT1yKDE3MDIpLHM9cig0NzA1KSxvPXIoODA1MiksYz1yKDI0MjMpLGw9cig0MDgpLGg9cig1Nzg3KSx1PXIoNjE0KSxkPXIoODU1NCksZj1yKDExMSksZz1yKDcyOTMpLHA9cig3MDcyKSxtPXIoODAwMyksYj1yKDk1ODcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHk9LTEhPT1lLmluZGV4T2YoIk1hcCIpLHc9LTEhPT1lLmluZGV4T2YoIldlYWsiKSx2PXk/InNldCI6ImFkZCIseD1hW2VdLFM9eCYmeC5wcm90b3R5cGUsQT14LGs9e30sQz1mdW5jdGlvbihlKXt2YXIgdD1pKFNbZV0pO28oUyxlLCJhZGQiPT1lP2Z1bmN0aW9uKGUpe3JldHVybiB0KHRoaXMsMD09PWU/MDplKSx0aGlzfToiZGVsZXRlIj09ZT9mdW5jdGlvbihlKXtyZXR1cm4hKHcmJiFmKGUpKSYmdCh0aGlzLDA9PT1lPzA6ZSl9OiJnZXQiPT1lP2Z1bmN0aW9uKGUpe3JldHVybiB3JiYhZihlKT92b2lkIDA6dCh0aGlzLDA9PT1lPzA6ZSl9OiJoYXMiPT1lP2Z1bmN0aW9uKGUpe3JldHVybiEodyYmIWYoZSkpJiZ0KHRoaXMsMD09PWU/MDplKX06ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdCh0aGlzLDA9PT1lPzA6ZSxyKSx0aGlzfSl9O2lmKHMoZSwhdSh4KXx8ISh3fHxTLmZvckVhY2gmJiFnKChmdW5jdGlvbigpeyhuZXcgeCkuZW50cmllcygpLm5leHQoKX0pKSkpKUE9ci5nZXRDb25zdHJ1Y3Rvcih0LGUseSx2KSxjLmVuYWJsZSgpO2Vsc2UgaWYocyhlLCEwKSl7dmFyIE89bmV3IEEsRj1PW3ZdKHc/e306LTAsMSkhPU8sST1nKChmdW5jdGlvbigpe08uaGFzKDEpfSkpLFQ9cCgoZnVuY3Rpb24oZSl7bmV3IHgoZSl9KSksTT0hdyYmZygoZnVuY3Rpb24oKXtmb3IodmFyIGU9bmV3IHgsdD01O3QtLTspZVt2XSh0LHQpO3JldHVybiFlLmhhcygtMCl9KSk7VHx8KChBPXQoKGZ1bmN0aW9uKGUsdCl7aChlLFMpO3ZhciByPWIobmV3IHgsZSxBKTtyZXR1cm4gZCh0KXx8bCh0LHJbdl0se3RoYXQ6cixBU19FTlRSSUVTOnl9KSxyfSkpKS5wcm90b3R5cGU9UyxTLmNvbnN0cnVjdG9yPUEpLChJfHxNKSYmKEMoImRlbGV0ZSIpLEMoImhhcyIpLHkmJkMoImdldCIpKSwoTXx8RikmJkModiksdyYmUy5jbGVhciYmZGVsZXRlIFMuY2xlYXJ9cmV0dXJuIGtbZV09QSxuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOkEhPXh9LGspLG0oQSxlKSx3fHxyLnNldFN0cm9uZyhBLGUseSksQX19LDk5MjA6KGUsdCxyKT0+e3ZhciBuPXIoMjU5NyksYT1yKDM4ODcpLGk9cigxMjM2KSxzPXIoMzA3MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG89YSh0KSxjPXMuZixsPWkuZixoPTA7aDxvLmxlbmd0aDtoKyspe3ZhciB1PW9baF07bihlLHUpfHxyJiZuKHIsdSl8fGMoZSx1LGwodCx1KSl9fX0sNDk2NDooZSx0LHIpPT57dmFyIG49cig1MTEyKSgibWF0Y2giKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Ly4vO3RyeXsiLy4vIltlXSh0KX1jYXRjaChyKXt0cnl7cmV0dXJuIHRbbl09ITEsIi8uLyJbZV0odCl9Y2F0Y2goZSl7fX1yZXR1cm4hMX19LDg1NDQ6KGUsdCxyKT0+e3ZhciBuPXIoNzI5Myk7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBlKSE9PWUucHJvdG90eXBlfSkpfSw2MTc4OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sODg4MDooZSx0LHIpPT57dmFyIG49cig5NzgxKSxhPXIoMzA3MCksaT1yKDkxMTQpO2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYS5mKGUsdCxpKDEscikpfTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cixlfX0sOTExNDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sNjEzNTooZSx0LHIpPT57dmFyIG49cig0OTQ4KSxhPXIoMzA3MCksaT1yKDkxMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dmFyIHM9bih0KTtzIGluIGU/YS5mKGUscyxpKDAscikpOmVbc109cn19LDcwNDU6KGUsdCxyKT0+e3ZhciBuPXIoNjMzOSksYT1yKDMwNzApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHIuZ2V0JiZuKHIuZ2V0LHQse2dldHRlcjohMH0pLHIuc2V0JiZuKHIuc2V0LHQse3NldHRlcjohMH0pLGEuZihlLHQscil9fSw4MDUyOihlLHQscik9Pnt2YXIgbj1yKDYxNCksYT1yKDMwNzApLGk9cig2MzM5KSxzPXIoMzA3Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG8pe298fChvPXt9KTt2YXIgYz1vLmVudW1lcmFibGUsbD12b2lkIDAhPT1vLm5hbWU/by5uYW1lOnQ7aWYobihyKSYmaShyLGwsbyksby5nbG9iYWwpYz9lW3RdPXI6cyh0LHIpO2Vsc2V7dHJ5e28udW5zYWZlP2VbdF0mJihjPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Yz9lW3RdPXI6YS5mKGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohby5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IW8ubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LDkxOTA6KGUsdCxyKT0+e3ZhciBuPXIoODA1Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGEgaW4gdCluKGUsYSx0W2FdLHIpO3JldHVybiBlfX0sMzA3MjooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7YShuLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gocil7bltlXT10fXJldHVybiB0fX0sNTExNzooZSx0LHIpPT57dmFyIG49cig2MzMwKSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighZGVsZXRlIGVbdF0pdGhyb3cgYSgiQ2Fubm90IGRlbGV0ZSBwcm9wZXJ0eSAiK24odCkrIiBvZiAiK24oZSkpfX0sOTc4MTooZSx0LHIpPT57dmFyIG49cig3MjkzKTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKX0sNDE1NDplPT57dmFyIHQ9Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWxsLHI9dm9pZCAwPT09dCYmdm9pZCAwIT09dDtlLmV4cG9ydHM9e2FsbDp0LElTX0hUTUxEREE6cn19LDMxNzooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoMTExKSxpPW4uZG9jdW1lbnQscz1hKGkpJiZhKGkuY3JlYXRlRWxlbWVudCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzP2kuY3JlYXRlRWxlbWVudChlKTp7fX19LDcyMDc6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IHQoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO3JldHVybiBlfX0sMzY3ODplPT57ZS5leHBvcnRzPXtJbmRleFNpemVFcnJvcjp7czoiSU5ERVhfU0laRV9FUlIiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czoiRE9NU1RSSU5HX1NJWkVfRVJSIixjOjIsbTowfSxIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6e3M6IkhJRVJBUkNIWV9SRVFVRVNUX0VSUiIsYzozLG06MX0sV3JvbmdEb2N1bWVudEVycm9yOntzOiJXUk9OR19ET0NVTUVOVF9FUlIiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czoiSU5WQUxJRF9DSEFSQUNURVJfRVJSIixjOjUsbToxfSxOb0RhdGFBbGxvd2VkRXJyb3I6e3M6Ik5PX0RBVEFfQUxMT1dFRF9FUlIiLGM6NixtOjB9LE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yOntzOiJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6Ik5PVF9GT1VORF9FUlIiLGM6OCxtOjF9LE5vdFN1cHBvcnRlZEVycm9yOntzOiJOT1RfU1VQUE9SVEVEX0VSUiIsYzo5LG06MX0sSW5Vc2VBdHRyaWJ1dGVFcnJvcjp7czoiSU5VU0VfQVRUUklCVVRFX0VSUiIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOiJJTlZBTElEX1NUQVRFX0VSUiIsYzoxMSxtOjF9LFN5bnRheEVycm9yOntzOiJTWU5UQVhfRVJSIixjOjEyLG06MX0sSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yOntzOiJJTlZBTElEX01PRElGSUNBVElPTl9FUlIiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czoiTkFNRVNQQUNFX0VSUiIsYzoxNCxtOjF9LEludmFsaWRBY2Nlc3NFcnJvcjp7czoiSU5WQUxJRF9BQ0NFU1NfRVJSIixjOjE1LG06MX0sVmFsaWRhdGlvbkVycm9yOntzOiJWQUxJREFUSU9OX0VSUiIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOiJUWVBFX01JU01BVENIX0VSUiIsYzoxNyxtOjF9LFNlY3VyaXR5RXJyb3I6e3M6IlNFQ1VSSVRZX0VSUiIsYzoxOCxtOjF9LE5ldHdvcmtFcnJvcjp7czoiTkVUV09SS19FUlIiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOiJBQk9SVF9FUlIiLGM6MjAsbToxfSxVUkxNaXNtYXRjaEVycm9yOntzOiJVUkxfTUlTTUFUQ0hfRVJSIixjOjIxLG06MX0sUXVvdGFFeGNlZWRlZEVycm9yOntzOiJRVU9UQV9FWENFRURFRF9FUlIiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6IlRJTUVPVVRfRVJSIixjOjIzLG06MX0sSW52YWxpZE5vZGVUeXBlRXJyb3I6e3M6IklOVkFMSURfTk9ERV9UWVBFX0VSUiIsYzoyNCxtOjF9LERhdGFDbG9uZUVycm9yOntzOiJEQVRBX0NMT05FX0VSUiIsYzoyNSxtOjF9fX0sODMyNDplPT57ZS5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sODUwOTooZSx0LHIpPT57dmFyIG49cigzMTcpKCJzcGFuIikuY2xhc3NMaXN0LGE9biYmbi5jb25zdHJ1Y3RvciYmbi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7ZS5leHBvcnRzPWE9PT1PYmplY3QucHJvdG90eXBlP3ZvaWQgMDphfSw4ODg2OihlLHQscik9Pnt2YXIgbj1yKDgxMTMpLm1hdGNoKC9maXJlZm94XC8oXGQrKS9pKTtlLmV4cG9ydHM9ISFuJiYrblsxXX0sNzg3MTooZSx0LHIpPT57dmFyIG49cigzODIzKSxhPXIoNTI2OCk7ZS5leHBvcnRzPSFuJiYhYSYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LDM4MjM6ZT0+e2UuZXhwb3J0cz0ib2JqZWN0Ij09dHlwZW9mIERlbm8mJkRlbm8mJiJvYmplY3QiPT10eXBlb2YgRGVuby52ZXJzaW9ufSwyNTY6KGUsdCxyKT0+e3ZhciBuPXIoODExMyk7ZS5leHBvcnRzPS9NU0lFfFRyaWRlbnQvLnRlc3Qobil9LDE1Mjg6KGUsdCxyKT0+e3ZhciBuPXIoODExMyk7ZS5leHBvcnRzPS9pcGFkfGlwaG9uZXxpcG9kL2kudGVzdChuKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBQZWJibGV9LDY4MzM6KGUsdCxyKT0+e3ZhciBuPXIoODExMyk7ZS5leHBvcnRzPS8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KG4pfSw1MjY4OihlLHQscik9Pnt2YXIgbj1yKDQzMjYpO2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJwcm9jZXNzIj09bihwcm9jZXNzKX0sMTAzNjooZSx0LHIpPT57dmFyIG49cig4MTEzKTtlLmV4cG9ydHM9L3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdChuKX0sODExMzplPT57ZS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiZTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCl8fCIifSw3MzkyOihlLHQscik9Pnt2YXIgbixhLGk9cig3ODU0KSxzPXIoODExMyksbz1pLnByb2Nlc3MsYz1pLkRlbm8sbD1vJiZvLnZlcnNpb25zfHxjJiZjLnZlcnNpb24saD1sJiZsLnY4O2gmJihhPShuPWguc3BsaXQoIi4iKSlbMF0+MCYmblswXTw0PzE6KyhuWzBdK25bMV0pKSwhYSYmcyYmKCEobj1zLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8blsxXT49NzQpJiYobj1zLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYoYT0rblsxXSksZS5leHBvcnRzPWF9LDgwMDg6KGUsdCxyKT0+e3ZhciBuPXIoODExMykubWF0Y2goL0FwcGxlV2ViS2l0XC8oXGQrKVwuLyk7ZS5leHBvcnRzPSEhbiYmK25bMV19LDc0ODplPT57ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDEwNjA6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMiksYT1FcnJvcixpPW4oIiIucmVwbGFjZSkscz1TdHJpbmcoYSgienhjYXNkIikuc3RhY2spLG89L1xuXHMqYXQgW146XSo6W15cbl0qLyxjPW8udGVzdChzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihjJiYic3RyaW5nIj09dHlwZW9mIGUmJiFhLnByZXBhcmVTdGFja1RyYWNlKWZvcig7dC0tOyllPWkoZSxvLCIiKTtyZXR1cm4gZX19LDUzOTI6KGUsdCxyKT0+e3ZhciBuPXIoODg4MCksYT1yKDEwNjApLGk9cigyOTE0KSxzPUVycm9yLmNhcHR1cmVTdGFja1RyYWNlO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixvKXtpJiYocz9zKGUsdCk6bihlLCJzdGFjayIsYShyLG8pKSl9fSwyOTE0OihlLHQscik9Pnt2YXIgbj1yKDcyOTMpLGE9cig5MTE0KTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7dmFyIGU9RXJyb3IoImEiKTtyZXR1cm4hKCJzdGFjayJpbiBlKXx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJzdGFjayIsYSgxLDcpKSw3IT09ZS5zdGFjayl9KSl9LDc3NjI6KGUsdCxyKT0+e3ZhciBuPXIoOTc4MSksYT1yKDcyOTMpLGk9cig5NjcwKSxzPXIoMzApLG89cig2Mjc3KSxjPUVycm9yLnByb3RvdHlwZS50b1N0cmluZyxsPWEoKGZ1bmN0aW9uKCl7aWYobil7dmFyIGU9cyhPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIm5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PWV9fSkpO2lmKCJ0cnVlIiE9PWMuY2FsbChlKSlyZXR1cm4hMH1yZXR1cm4iMjogMSIhPT1jLmNhbGwoe21lc3NhZ2U6MSxuYW1lOjJ9KXx8IkVycm9yIiE9PWMuY2FsbCh7fSl9KSk7ZS5leHBvcnRzPWw/ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpLHQ9byhlLm5hbWUsIkVycm9yIikscj1vKGUubWVzc2FnZSk7cmV0dXJuIHQ/cj90KyI6ICIrcjp0OnJ9OmN9LDIxMDk6KGUsdCxyKT0+e3ZhciBuPXIoNzg1NCksYT1yKDEyMzYpLmYsaT1yKDg4ODApLHM9cig4MDUyKSxvPXIoMzA3MiksYz1yKDk5MjApLGw9cig0NzA1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcixoLHUsZCxmLGc9ZS50YXJnZXQscD1lLmdsb2JhbCxtPWUuc3RhdDtpZihyPXA/bjptP25bZ118fG8oZyx7fSk6KG5bZ118fHt9KS5wcm90b3R5cGUpZm9yKGggaW4gdCl7aWYoZD10W2hdLHU9ZS5kb250Q2FsbEdldFNldD8oZj1hKHIsaCkpJiZmLnZhbHVlOnJbaF0sIWwocD9oOmcrKG0/Ii4iOiIjIikraCxlLmZvcmNlZCkmJnZvaWQgMCE9PXUpe2lmKHR5cGVvZiBkPT10eXBlb2YgdSljb250aW51ZTtjKGQsdSl9KGUuc2hhbXx8dSYmdS5zaGFtKSYmaShkLCJzaGFtIiwhMCkscyhyLGgsZCxlKX19fSw3MjkzOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKGUpe3JldHVybiEwfX19LDcwMDc6KGUsdCxyKT0+e3IoNDkxNik7dmFyIG49cigxNDcwKSxhPXIoODA1MiksaT1yKDIyNjEpLHM9cig3MjkzKSxvPXIoNTExMiksYz1yKDg4ODApLGw9bygic3BlY2llcyIpLGg9UmVnRXhwLnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsdSl7dmFyIGQ9byhlKSxmPSFzKChmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0W2RdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW2VdKHQpfSkpLGc9ZiYmIXMoKGZ1bmN0aW9uKCl7dmFyIHQ9ITEscj0vYS87cmV0dXJuInNwbGl0Ij09PWUmJigocj17fSkuY29uc3RydWN0b3I9e30sci5jb25zdHJ1Y3RvcltsXT1mdW5jdGlvbigpe3JldHVybiByfSxyLmZsYWdzPSIiLHJbZF09Ly4vW2RdKSxyLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gdD0hMCxudWxsfSxyW2RdKCIiKSwhdH0pKTtpZighZnx8IWd8fHIpe3ZhciBwPW4oLy4vW2RdKSxtPXQoZCwiIltlXSwoZnVuY3Rpb24oZSx0LHIsYSxzKXt2YXIgbz1uKGUpLGM9dC5leGVjO3JldHVybiBjPT09aXx8Yz09PWguZXhlYz9mJiYhcz97ZG9uZTohMCx2YWx1ZTpwKHQscixhKX06e2RvbmU6ITAsdmFsdWU6byhyLHQsYSl9Ontkb25lOiExfX0pKTthKFN0cmluZy5wcm90b3R5cGUsZSxtWzBdKSxhKGgsZCxtWzFdKX11JiZjKGhbZF0sInNoYW0iLCEwKX19LDY3OTA6KGUsdCxyKT0+e3ZhciBuPXIoMzE1NyksYT1yKDYyNDQpLGk9cig3MjA3KSxzPXIoOTk3NCksbz1mdW5jdGlvbihlLHQscixjLGwsaCx1LGQpe2Zvcih2YXIgZixnLHA9bCxtPTAsYj0hIXUmJnModSxkKTttPGM7KW0gaW4gciYmKGY9Yj9iKHJbbV0sbSx0KTpyW21dLGg+MCYmbihmKT8oZz1hKGYpLHA9byhlLHQsZixnLHAsaC0xKS0xKTooaShwKzEpLGVbcF09ZikscCsrKSxtKys7cmV0dXJuIHB9O2UuZXhwb3J0cz1vfSw2Njc3OihlLHQscik9Pnt2YXIgbj1yKDcyOTMpO2UuZXhwb3J0cz0hbigoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKX0pKX0sMjEwNDooZSx0LHIpPT57dmFyIG49cig0Mzc0KSxhPUZ1bmN0aW9uLnByb3RvdHlwZSxpPWEuYXBwbHkscz1hLmNhbGw7ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5hcHBseXx8KG4/cy5iaW5kKGkpOmZ1bmN0aW9uKCl7cmV0dXJuIHMuYXBwbHkoaSxhcmd1bWVudHMpfSl9LDk5NzQ6KGUsdCxyKT0+e3ZhciBuPXIoMTQ3MCksYT1yKDk2NjIpLGk9cig0Mzc0KSxzPW4obi5iaW5kKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlKSx2b2lkIDA9PT10P2U6aT9zKGUsdCk6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fX0sNDM3NDooZSx0LHIpPT57dmFyIG49cig3MjkzKTtlLmV4cG9ydHM9IW4oKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZXx8ZS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSl9LDY5MTY6KGUsdCxyKT0+e3ZhciBuPXIoNDM3NCksYT1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9bj9hLmJpbmQoYSk6ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShhLGFyZ3VtZW50cyl9fSw2NTMwOihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cigyNTk3KSxpPUZ1bmN0aW9uLnByb3RvdHlwZSxzPW4mJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Isbz1hKGksIm5hbWUiKSxjPW8mJiJzb21ldGhpbmciPT09ZnVuY3Rpb24oKXt9Lm5hbWUsbD1vJiYoIW58fG4mJnMoaSwibmFtZSIpLmNvbmZpZ3VyYWJsZSk7ZS5leHBvcnRzPXtFWElTVFM6byxQUk9QRVI6YyxDT05GSUdVUkFCTEU6bH19LDU2Njg6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMiksYT1yKDk2NjIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7dHJ5e3JldHVybiBuKGEoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpW3JdKSl9Y2F0Y2goZSl7fX19LDE0NzA6KGUsdCxyKT0+e3ZhciBuPXIoNDMyNiksYT1yKDE3MDIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09bihlKSlyZXR1cm4gYShlKX19LDE3MDI6KGUsdCxyKT0+e3ZhciBuPXIoNDM3NCksYT1GdW5jdGlvbi5wcm90b3R5cGUsaT1hLmNhbGwscz1uJiZhLmJpbmQuYmluZChpLGkpO2UuZXhwb3J0cz1uP3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuYXBwbHkoZSxhcmd1bWVudHMpfX19LDUwMDU6KGUsdCxyKT0+e3ZhciBuPXIoNzg1NCksYT1yKDYxNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8ocj1uW2VdLGEocik/cjp2b2lkIDApOm5bZV0mJm5bZV1bdF07dmFyIHJ9fSwxMjQ2OihlLHQscik9Pnt2YXIgbj1yKDY0OCksYT1yKDgxNzMpLGk9cig4NTU0KSxzPXIoNzQ5Nyksbz1yKDUxMTIpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4gYShlLG8pfHxhKGUsIkBAaXRlcmF0b3IiKXx8c1tuKGUpXX19LDQxMjE6KGUsdCxyKT0+e3ZhciBuPXIoNjkxNiksYT1yKDk2NjIpLGk9cig5NjcwKSxzPXIoNjMzMCksbz1yKDEyNDYpLGM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYoYShyKSlyZXR1cm4gaShuKHIsZSkpO3Rocm93IGMocyhlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sODA0NDooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoMzE1NyksaT1yKDYxNCkscz1yKDQzMjYpLG89cigxMzQwKSxjPW4oW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGkoZSkpcmV0dXJuIGU7aWYoYShlKSl7Zm9yKHZhciB0PWUubGVuZ3RoLHI9W10sbj0wO248dDtuKyspe3ZhciBsPWVbbl07InN0cmluZyI9PXR5cGVvZiBsP2MocixsKToibnVtYmVyIiE9dHlwZW9mIGwmJiJOdW1iZXIiIT1zKGwpJiYiU3RyaW5nIiE9cyhsKXx8YyhyLG8obCkpfXZhciBoPXIubGVuZ3RoLHU9ITA7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYodSlyZXR1cm4gdT0hMSx0O2lmKGEodGhpcykpcmV0dXJuIHQ7Zm9yKHZhciBuPTA7bjxoO24rKylpZihyW25dPT09ZSlyZXR1cm4gdH19fX0sODE3MzooZSx0LHIpPT57dmFyIG49cig5NjYyKSxhPXIoODU1NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVt0XTtyZXR1cm4gYShyKT92b2lkIDA6bihyKX19LDY0NzooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoNzkwOCksaT1NYXRoLmZsb29yLHM9bigiIi5jaGFyQXQpLG89bigiIi5yZXBsYWNlKSxjPW4oIiIuc2xpY2UpLGw9L1wkKFskJidgXXxcZHsxLDJ9fDxbXj5dKj4pL2csaD0vXCQoWyQmJ2BdfFxkezEsMn0pL2c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sdSxkKXt2YXIgZj1yK2UubGVuZ3RoLGc9bi5sZW5ndGgscD1oO3JldHVybiB2b2lkIDAhPT11JiYodT1hKHUpLHA9bCksbyhkLHAsKGZ1bmN0aW9uKGEsbyl7dmFyIGw7c3dpdGNoKHMobywwKSl7Y2FzZSIkIjpyZXR1cm4iJCI7Y2FzZSImIjpyZXR1cm4gZTtjYXNlImAiOnJldHVybiBjKHQsMCxyKTtjYXNlIiciOnJldHVybiBjKHQsZik7Y2FzZSI8IjpsPXVbYyhvLDEsLTEpXTticmVhaztkZWZhdWx0OnZhciBoPStvO2lmKDA9PT1oKXJldHVybiBhO2lmKGg+Zyl7dmFyIGQ9aShoLzEwKTtyZXR1cm4gMD09PWQ/YTpkPD1nP3ZvaWQgMD09PW5bZC0xXT9zKG8sMSk6bltkLTFdK3MobywxKTphfWw9bltoLTFdfXJldHVybiB2b2lkIDA9PT1sPyIiOmx9KSl9fSw3ODU0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT1NYXRoJiZlfTtlLmV4cG9ydHM9bigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxuKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxuKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fG4oIm9iamVjdCI9PXR5cGVvZiByLmcmJnIuZyl8fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCl8fHRoaXN8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9LDI1OTc6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMiksYT1yKDc5MDgpLGk9bih7fS5oYXNPd25Qcm9wZXJ0eSk7ZS5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoYShlKSx0KX19LDM1MDE6ZT0+e2UuZXhwb3J0cz17fX0sODQyOmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7MT09YXJndW1lbnRzLmxlbmd0aD9jb25zb2xlLmVycm9yKGUpOmNvbnNvbGUuZXJyb3IoZSx0KX1jYXRjaChlKXt9fX0sNDkwOihlLHQscik9Pnt2YXIgbj1yKDUwMDUpO2UuZXhwb3J0cz1uKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpfSw0NjY0OihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cig3MjkzKSxpPXIoMzE3KTtlLmV4cG9ydHM9IW4mJiFhKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoaSgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSwxMTc5OmU9Pnt2YXIgdD1BcnJheSxyPU1hdGguYWJzLG49TWF0aC5wb3csYT1NYXRoLmZsb29yLGk9TWF0aC5sb2cscz1NYXRoLkxOMjtlLmV4cG9ydHM9e3BhY2s6ZnVuY3Rpb24oZSxvLGMpe3ZhciBsLGgsdSxkPXQoYyksZj04KmMtby0xLGc9KDE8PGYpLTEscD1nPj4xLG09MjM9PT1vP24oMiwtMjQpLW4oMiwtNzcpOjAsYj1lPDB8fDA9PT1lJiYxL2U8MD8xOjAseT0wO2ZvcigoZT1yKGUpKSE9ZXx8ZT09PTEvMD8oaD1lIT1lPzE6MCxsPWcpOihsPWEoaShlKS9zKSxlKih1PW4oMiwtbCkpPDEmJihsLS0sdSo9MiksKGUrPWwrcD49MT9tL3U6bSpuKDIsMS1wKSkqdT49MiYmKGwrKyx1Lz0yKSxsK3A+PWc/KGg9MCxsPWcpOmwrcD49MT8oaD0oZSp1LTEpKm4oMixvKSxsKz1wKTooaD1lKm4oMixwLTEpKm4oMixvKSxsPTApKTtvPj04OylkW3krK109MjU1JmgsaC89MjU2LG8tPTg7Zm9yKGw9bDw8b3xoLGYrPW87Zj4wOylkW3krK109MjU1JmwsbC89MjU2LGYtPTg7cmV0dXJuIGRbLS15XXw9MTI4KmIsZH0sdW5wYWNrOmZ1bmN0aW9uKGUsdCl7dmFyIHIsYT1lLmxlbmd0aCxpPTgqYS10LTEscz0oMTw8aSktMSxvPXM+PjEsYz1pLTcsbD1hLTEsaD1lW2wtLV0sdT0xMjcmaDtmb3IoaD4+PTc7Yz4wOyl1PTI1Nip1K2VbbC0tXSxjLT04O2ZvcihyPXUmKDE8PC1jKS0xLHU+Pj0tYyxjKz10O2M+MDspcj0yNTYqcitlW2wtLV0sYy09ODtpZigwPT09dSl1PTEtbztlbHNle2lmKHU9PT1zKXJldHVybiByP05hTjpoPy0xLzA6MS8wO3IrPW4oMix0KSx1LT1vfXJldHVybihoPy0xOjEpKnIqbigyLHUtdCl9fX0sODM2MTooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoNzI5MyksaT1yKDQzMjYpLHM9T2JqZWN0LG89bigiIi5zcGxpdCk7ZS5leHBvcnRzPWEoKGZ1bmN0aW9uKCl7cmV0dXJuIXMoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09aShlKT9vKGUsIiIpOnMoZSl9OnN9LDk1ODc6KGUsdCxyKT0+e3ZhciBuPXIoNjE0KSxhPXIoMTExKSxpPXIoNzY3NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcyxvO3JldHVybiBpJiZuKHM9dC5jb25zdHJ1Y3RvcikmJnMhPT1yJiZhKG89cy5wcm90b3R5cGUpJiZvIT09ci5wcm90b3R5cGUmJmkoZSxvKSxlfX0sMjc4ODooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoNjE0KSxpPXIoNTQ2NSkscz1uKEZ1bmN0aW9uLnRvU3RyaW5nKTthKGkuaW5zcGVjdFNvdXJjZSl8fChpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9KSxlLmV4cG9ydHM9aS5pbnNwZWN0U291cmNlfSw4MzQwOihlLHQscik9Pnt2YXIgbj1yKDExMSksYT1yKDg4ODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe24odCkmJiJjYXVzZSJpbiB0JiZhKGUsImNhdXNlIix0LmNhdXNlKX19LDI0MjM6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDE3MDIpLGk9cigzNTAxKSxzPXIoMTExKSxvPXIoMjU5NyksYz1yKDMwNzApLmYsbD1yKDgwMDYpLGg9cigxMTU2KSx1PXIoMjA1MCksZD1yKDk3MTEpLGY9cig2Njc3KSxnPSExLHA9ZCgibWV0YSIpLG09MCxiPWZ1bmN0aW9uKGUpe2MoZSxwLHt2YWx1ZTp7b2JqZWN0SUQ6Ik8iK20rKyx3ZWFrRGF0YTp7fX19KX0seT1lLmV4cG9ydHM9e2VuYWJsZTpmdW5jdGlvbigpe3kuZW5hYmxlPWZ1bmN0aW9uKCl7fSxnPSEwO3ZhciBlPWwuZix0PWEoW10uc3BsaWNlKSxyPXt9O3JbcF09MSxlKHIpLmxlbmd0aCYmKGwuZj1mdW5jdGlvbihyKXtmb3IodmFyIG49ZShyKSxhPTAsaT1uLmxlbmd0aDthPGk7YSsrKWlmKG5bYV09PT1wKXt0KG4sYSwxKTticmVha31yZXR1cm4gbn0sbih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiEwfSx7Z2V0T3duUHJvcGVydHlOYW1lczpoLmZ9KSl9LGZhc3RLZXk6ZnVuY3Rpb24oZSx0KXtpZighcyhlKSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGU/ZTooInN0cmluZyI9PXR5cGVvZiBlPyJTIjoiUCIpK2U7aWYoIW8oZSxwKSl7aWYoIXUoZSkpcmV0dXJuIkYiO2lmKCF0KXJldHVybiJFIjtiKGUpfXJldHVybiBlW3BdLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbihlLHQpe2lmKCFvKGUscCkpe2lmKCF1KGUpKXJldHVybiEwO2lmKCF0KXJldHVybiExO2IoZSl9cmV0dXJuIGVbcF0ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKGUpe3JldHVybiBmJiZnJiZ1KGUpJiYhbyhlLHApJiZiKGUpLGV9fTtpW3BdPSEwfSw5OTA5OihlLHQscik9Pnt2YXIgbixhLGkscz1yKDQ4MTEpLG89cig3ODU0KSxjPXIoMTExKSxsPXIoODg4MCksaD1yKDI1OTcpLHU9cig1NDY1KSxkPXIoNjIwMCksZj1yKDM1MDEpLGc9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixwPW8uVHlwZUVycm9yLG09by5XZWFrTWFwO2lmKHN8fHUuc3RhdGUpe3ZhciBiPXUuc3RhdGV8fCh1LnN0YXRlPW5ldyBtKTtiLmdldD1iLmdldCxiLmhhcz1iLmhhcyxiLnNldD1iLnNldCxuPWZ1bmN0aW9uKGUsdCl7aWYoYi5oYXMoZSkpdGhyb3cgcChnKTtyZXR1cm4gdC5mYWNhZGU9ZSxiLnNldChlLHQpLHR9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZ2V0KGUpfHx7fX0saT1mdW5jdGlvbihlKXtyZXR1cm4gYi5oYXMoZSl9fWVsc2V7dmFyIHk9ZCgic3RhdGUiKTtmW3ldPSEwLG49ZnVuY3Rpb24oZSx0KXtpZihoKGUseSkpdGhyb3cgcChnKTtyZXR1cm4gdC5mYWNhZGU9ZSxsKGUseSx0KSx0fSxhPWZ1bmN0aW9uKGUpe3JldHVybiBoKGUseSk/ZVt5XTp7fX0saT1mdW5jdGlvbihlKXtyZXR1cm4gaChlLHkpfX1lLmV4cG9ydHM9e3NldDpuLGdldDphLGhhczppLGVuZm9yY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSk/YShlKTpuKGUse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByO2lmKCFjKHQpfHwocj1hKHQpKS50eXBlIT09ZSl0aHJvdyBwKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIHJ9fX19LDc2NTk6KGUsdCxyKT0+e3ZhciBuPXIoNTExMiksYT1yKDc0OTcpLGk9bigiaXRlcmF0b3IiKSxzPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihhLkFycmF5PT09ZXx8c1tpXT09PWUpfX0sMzE1NzooZSx0LHIpPT57dmFyIG49cig0MzI2KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIkFycmF5Ij09bihlKX19LDQwNjc6KGUsdCxyKT0+e3ZhciBuPXIoNjQ4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKTtyZXR1cm4iQmlnSW50NjRBcnJheSI9PXR8fCJCaWdVaW50NjRBcnJheSI9PXR9fSw2MTQ6KGUsdCxyKT0+e3ZhciBuPXIoNDE1NCksYT1uLmFsbDtlLmV4cG9ydHM9bi5JU19IVE1MRERBP2Z1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlfHxlPT09YX06ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV9fSw0NDExOihlLHQscik9Pnt2YXIgbj1yKDE3MDIpLGE9cig3MjkzKSxpPXIoNjE0KSxzPXIoNjQ4KSxvPXIoNTAwNSksYz1yKDI3ODgpLGw9ZnVuY3Rpb24oKXt9LGg9W10sdT1vKCJSZWZsZWN0IiwiY29uc3RydWN0IiksZD0vXlxzKig/OmNsYXNzfGZ1bmN0aW9uKVxiLyxmPW4oZC5leGVjKSxnPSFkLmV4ZWMobCkscD1mdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4hMTt0cnl7cmV0dXJuIHUobCxoLGUpLCEwfWNhdGNoKGUpe3JldHVybiExfX0sbT1mdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4hMTtzd2l0Y2gocyhlKSl7Y2FzZSJBc3luY0Z1bmN0aW9uIjpjYXNlIkdlbmVyYXRvckZ1bmN0aW9uIjpjYXNlIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iOnJldHVybiExfXRyeXtyZXR1cm4gZ3x8ISFmKGQsYyhlKSl9Y2F0Y2goZSl7cmV0dXJuITB9fTttLnNoYW09ITAsZS5leHBvcnRzPSF1fHxhKChmdW5jdGlvbigpe3ZhciBlO3JldHVybiBwKHAuY2FsbCl8fCFwKE9iamVjdCl8fCFwKChmdW5jdGlvbigpe2U9ITB9KSl8fGV9KSk/bTpwfSw0NzA1OihlLHQscik9Pnt2YXIgbj1yKDcyOTMpLGE9cig2MTQpLGk9LyN8XC5wcm90b3R5cGVcLi8scz1mdW5jdGlvbihlLHQpe3ZhciByPWNbbyhlKV07cmV0dXJuIHI9PWh8fHIhPWwmJihhKHQpP24odCk6ISF0KX0sbz1zLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoaSwiLiIpLnRvTG93ZXJDYXNlKCl9LGM9cy5kYXRhPXt9LGw9cy5OQVRJVkU9Ik4iLGg9cy5QT0xZRklMTD0iUCI7ZS5leHBvcnRzPXN9LDU5ODg6KGUsdCxyKT0+e3ZhciBuPXIoMTExKSxhPU1hdGguZmxvb3I7ZS5leHBvcnRzPU51bWJlci5pc0ludGVnZXJ8fGZ1bmN0aW9uKGUpe3JldHVybiFuKGUpJiZpc0Zpbml0ZShlKSYmYShlKT09PWV9fSw4NTU0OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSwxMTE6KGUsdCxyKT0+e3ZhciBuPXIoNjE0KSxhPXIoNDE1NCksaT1hLmFsbDtlLmV4cG9ydHM9YS5JU19IVE1MRERBP2Z1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTpuKGUpfHxlPT09aX06ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOm4oZSl9fSwxOTEzOmU9PntlLmV4cG9ydHM9ITF9LDc4NTA6KGUsdCxyKT0+e3ZhciBuPXIoMTExKSxhPXIoNDMyNiksaT1yKDUxMTIpKCJtYXRjaCIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gbihlKSYmKHZvaWQgMCE9PSh0PWVbaV0pPyEhdDoiUmVnRXhwIj09YShlKSl9fSwyMTkwOihlLHQscik9Pnt2YXIgbj1yKDUwMDUpLGE9cig2MTQpLGk9cig3OTc2KSxzPXIoMzMwNyksbz1PYmplY3Q7ZS5leHBvcnRzPXM/ZnVuY3Rpb24oZSl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiBlfTpmdW5jdGlvbihlKXt2YXIgdD1uKCJTeW1ib2wiKTtyZXR1cm4gYSh0KSYmaSh0LnByb3RvdHlwZSxvKGUpKX19LDQwODooZSx0LHIpPT57dmFyIG49cig5OTc0KSxhPXIoNjkxNiksaT1yKDk2NzApLHM9cig2MzMwKSxvPXIoNzY1OSksYz1yKDYyNDQpLGw9cig3OTc2KSxoPXIoNDEyMSksdT1yKDEyNDYpLGQ9cig5MjEyKSxmPVR5cGVFcnJvcixnPWZ1bmN0aW9uKGUsdCl7dGhpcy5zdG9wcGVkPWUsdGhpcy5yZXN1bHQ9dH0scD1nLnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBtLGIseSx3LHYseCxTLEE9ciYmci50aGF0LGs9ISghcnx8IXIuQVNfRU5UUklFUyksQz0hKCFyfHwhci5JU19SRUNPUkQpLE89ISghcnx8IXIuSVNfSVRFUkFUT1IpLEY9ISghcnx8IXIuSU5URVJSVVBURUQpLEk9bih0LEEpLFQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG0mJmQobSwibm9ybWFsIixlKSxuZXcgZyghMCxlKX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gaz8oaShlKSxGP0koZVswXSxlWzFdLFQpOkkoZVswXSxlWzFdKSk6Rj9JKGUsVCk6SShlKX07aWYoQyltPWUuaXRlcmF0b3I7ZWxzZSBpZihPKW09ZTtlbHNle2lmKCEoYj11KGUpKSl0aHJvdyBmKHMoZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGIpKXtmb3IoeT0wLHc9YyhlKTt3Pnk7eSsrKWlmKCh2PU0oZVt5XSkpJiZsKHAsdikpcmV0dXJuIHY7cmV0dXJuIG5ldyBnKCExKX1tPWgoZSxiKX1mb3IoeD1DP2UubmV4dDptLm5leHQ7IShTPWEoeCxtKSkuZG9uZTspe3RyeXt2PU0oUy52YWx1ZSl9Y2F0Y2goZSl7ZChtLCJ0aHJvdyIsZSl9aWYoIm9iamVjdCI9PXR5cGVvZiB2JiZ2JiZsKHAsdikpcmV0dXJuIHZ9cmV0dXJuIG5ldyBnKCExKX19LDkyMTI6KGUsdCxyKT0+e3ZhciBuPXIoNjkxNiksYT1yKDk2NzApLGk9cig4MTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBzLG87YShlKTt0cnl7aWYoIShzPWkoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyByO3JldHVybiByfXM9bihzLGUpfWNhdGNoKGUpe289ITAscz1lfWlmKCJ0aHJvdyI9PT10KXRocm93IHI7aWYobyl0aHJvdyBzO3JldHVybiBhKHMpLHJ9fSwzMDYxOihlLHQscik9Pnt2YXIgbj1yKDMzODMpLkl0ZXJhdG9yUHJvdG90eXBlLGE9cigzMCksaT1yKDkxMTQpLHM9cig4MDAzKSxvPXIoNzQ5NyksYz1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbCl7dmFyIGg9dCsiIEl0ZXJhdG9yIjtyZXR1cm4gZS5wcm90b3R5cGU9YShuLHtuZXh0OmkoKyFsLHIpfSkscyhlLGgsITEsITApLG9baF09YyxlfX0sMTY1NjooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNjkxNiksaT1yKDE5MTMpLHM9cig2NTMwKSxvPXIoNjE0KSxjPXIoMzA2MSksbD1yKDk1MTgpLGg9cig3Njc0KSx1PXIoODAwMyksZD1yKDg4ODApLGY9cig4MDUyKSxnPXIoNTExMikscD1yKDc0OTcpLG09cigzMzgzKSxiPXMuUFJPUEVSLHk9cy5DT05GSUdVUkFCTEUsdz1tLkl0ZXJhdG9yUHJvdG90eXBlLHY9bS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLHg9ZygiaXRlcmF0b3IiKSxTPSJrZXlzIixBPSJ2YWx1ZXMiLGs9ImVudHJpZXMiLEM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMsZyxtLE8pe2Mocix0LHMpO3ZhciBGLEksVCxNPWZ1bmN0aW9uKGUpe2lmKGU9PT1nJiZEKXJldHVybiBEO2lmKCF2JiZlIGluIFIpcmV0dXJuIFJbZV07c3dpdGNoKGUpe2Nhc2UgUzpjYXNlIEE6Y2FzZSBrOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLGUpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcyl9fSxFPXQrIiBJdGVyYXRvciIsUD0hMSxSPWUucHJvdG90eXBlLE49Ult4XXx8UlsiQEBpdGVyYXRvciJdfHxnJiZSW2ddLEQ9IXYmJk58fE0oZyksQj0iQXJyYXkiPT10JiZSLmVudHJpZXN8fE47aWYoQiYmKEY9bChCLmNhbGwobmV3IGUpKSkhPT1PYmplY3QucHJvdG90eXBlJiZGLm5leHQmJihpfHxsKEYpPT09d3x8KGg/aChGLHcpOm8oRlt4XSl8fGYoRix4LEMpKSx1KEYsRSwhMCwhMCksaSYmKHBbRV09QykpLGImJmc9PUEmJk4mJk4ubmFtZSE9PUEmJighaSYmeT9kKFIsIm5hbWUiLEEpOihQPSEwLEQ9ZnVuY3Rpb24oKXtyZXR1cm4gYShOLHRoaXMpfSkpLGcpaWYoST17dmFsdWVzOk0oQSksa2V5czptP0Q6TShTKSxlbnRyaWVzOk0oayl9LE8pZm9yKFQgaW4gSSkodnx8UHx8IShUIGluIFIpKSYmZihSLFQsSVtUXSk7ZWxzZSBuKHt0YXJnZXQ6dCxwcm90bzohMCxmb3JjZWQ6dnx8UH0sSSk7cmV0dXJuIGkmJiFPfHxSW3hdPT09RHx8ZihSLHgsRCx7bmFtZTpnfSkscFt0XT1ELEl9fSwzMzgzOihlLHQscik9Pnt2YXIgbixhLGkscz1yKDcyOTMpLG89cig2MTQpLGM9cigxMTEpLGw9cigzMCksaD1yKDk1MTgpLHU9cig4MDUyKSxkPXIoNTExMiksZj1yKDE5MTMpLGc9ZCgiaXRlcmF0b3IiKSxwPSExO1tdLmtleXMmJigibmV4dCJpbihpPVtdLmtleXMoKSk/KGE9aChoKGkpKSkhPT1PYmplY3QucHJvdG90eXBlJiYobj1hKTpwPSEwKSwhYyhuKXx8cygoZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gbltnXS5jYWxsKGUpIT09ZX0pKT9uPXt9OmYmJihuPWwobikpLG8obltnXSl8fHUobixnLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLGUuZXhwb3J0cz17SXRlcmF0b3JQcm90b3R5cGU6bixCVUdHWV9TQUZBUklfSVRFUkFUT1JTOnB9fSw3NDk3OmU9PntlLmV4cG9ydHM9e319LDYyNDQ6KGUsdCxyKT0+e3ZhciBuPXIoNzQ2Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUubGVuZ3RoKX19LDYzMzk6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMiksYT1yKDcyOTMpLGk9cig2MTQpLHM9cigyNTk3KSxvPXIoOTc4MSksYz1yKDY1MzApLkNPTkZJR1VSQUJMRSxsPXIoMjc4OCksaD1yKDk5MDkpLHU9aC5lbmZvcmNlLGQ9aC5nZXQsZj1TdHJpbmcsZz1PYmplY3QuZGVmaW5lUHJvcGVydHkscD1uKCIiLnNsaWNlKSxtPW4oIiIucmVwbGFjZSksYj1uKFtdLmpvaW4pLHk9byYmIWEoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1nKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLHc9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHY9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXsiU3ltYm9sKCI9PT1wKGYodCksMCw3KSYmKHQ9IlsiK20oZih0KSwvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLHImJnIuZ2V0dGVyJiYodD0iZ2V0ICIrdCksciYmci5zZXR0ZXImJih0PSJzZXQgIit0KSwoIXMoZSwibmFtZSIpfHxjJiZlLm5hbWUhPT10KSYmKG8/ZyhlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCkseSYmciYmcyhyLCJhcml0eSIpJiZlLmxlbmd0aCE9PXIuYXJpdHkmJmcoZSwibGVuZ3RoIix7dmFsdWU6ci5hcml0eX0pO3RyeXtyJiZzKHIsImNvbnN0cnVjdG9yIikmJnIuY29uc3RydWN0b3I/byYmZyhlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIG49dShlKTtyZXR1cm4gcyhuLCJzb3VyY2UiKXx8KG4uc291cmNlPWIodywic3RyaW5nIj09dHlwZW9mIHQ/dDoiIikpLGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz12KChmdW5jdGlvbigpe3JldHVybiBpKHRoaXMpJiZkKHRoaXMpLnNvdXJjZXx8bCh0aGlzKX0pLCJ0b1N0cmluZyIpfSw0NzU4OmU9Pnt2YXIgdD1NYXRoLmNlaWwscj1NYXRoLmZsb29yO2UuZXhwb3J0cz1NYXRoLnRydW5jfHxmdW5jdGlvbihlKXt2YXIgbj0rZTtyZXR1cm4obj4wP3I6dCkobil9fSw1OTQ4OihlLHQscik9Pnt2YXIgbixhLGkscyxvLGM9cig3ODU0KSxsPXIoOTk3NCksaD1yKDEyMzYpLmYsdT1yKDI2MSkuc2V0LGQ9cig4NTcyKSxmPXIoNjgzMyksZz1yKDE1MjgpLHA9cigxMDM2KSxtPXIoNTI2OCksYj1jLk11dGF0aW9uT2JzZXJ2ZXJ8fGMuV2ViS2l0TXV0YXRpb25PYnNlcnZlcix5PWMuZG9jdW1lbnQsdz1jLnByb2Nlc3Msdj1jLlByb21pc2UseD1oKGMsInF1ZXVlTWljcm90YXNrIiksUz14JiZ4LnZhbHVlO2lmKCFTKXt2YXIgQT1uZXcgZCxrPWZ1bmN0aW9uKCl7dmFyIGUsdDtmb3IobSYmKGU9dy5kb21haW4pJiZlLmV4aXQoKTt0PUEuZ2V0KCk7KXRyeXt0KCl9Y2F0Y2goZSl7dGhyb3cgQS5oZWFkJiZuKCksZX1lJiZlLmVudGVyKCl9O2Z8fG18fHB8fCFifHwheT8hZyYmdiYmdi5yZXNvbHZlPygocz12LnJlc29sdmUodm9pZCAwKSkuY29uc3RydWN0b3I9dixvPWwocy50aGVuLHMpLG49ZnVuY3Rpb24oKXtvKGspfSk6bT9uPWZ1bmN0aW9uKCl7dy5uZXh0VGljayhrKX06KHU9bCh1LGMpLG49ZnVuY3Rpb24oKXt1KGspfSk6KGE9ITAsaT15LmNyZWF0ZVRleHROb2RlKCIiKSxuZXcgYihrKS5vYnNlcnZlKGkse2NoYXJhY3RlckRhdGE6ITB9KSxuPWZ1bmN0aW9uKCl7aS5kYXRhPWE9IWF9KSxTPWZ1bmN0aW9uKGUpe0EuaGVhZHx8bigpLEEuYWRkKGUpfX1lLmV4cG9ydHM9U30sODUyMzooZSx0LHIpPT57dmFyIG49cig5NjYyKSxhPVR5cGVFcnJvcixpPWZ1bmN0aW9uKGUpe3ZhciB0LHI7dGhpcy5wcm9taXNlPW5ldyBlKChmdW5jdGlvbihlLG4pe2lmKHZvaWQgMCE9PXR8fHZvaWQgMCE9PXIpdGhyb3cgYSgiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWUscj1ufSkpLHRoaXMucmVzb2x2ZT1uKHQpLHRoaXMucmVqZWN0PW4ocil9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaShlKX19LDYyNzc6KGUsdCxyKT0+e3ZhciBuPXIoMTM0MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6bihlKX19LDM5Mjk6KGUsdCxyKT0+e3ZhciBuPXIoNzg1MCksYT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpdGhyb3cgYSgiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zIik7cmV0dXJuIGV9fSwyODE0OihlLHQscik9Pnt2YXIgbj1yKDc4NTQpLGE9cig3MjkzKSxpPXIoMTcwMikscz1yKDEzNDApLG89cigzMTExKS50cmltLGM9cigxMzYxKSxsPWkoIiIuY2hhckF0KSxoPW4ucGFyc2VGbG9hdCx1PW4uU3ltYm9sLGQ9dSYmdS5pdGVyYXRvcixmPTEvaChjKyItMCIpIT0tMS8wfHxkJiYhYSgoZnVuY3Rpb24oKXtoKE9iamVjdChkKSl9KSk7ZS5leHBvcnRzPWY/ZnVuY3Rpb24oZSl7dmFyIHQ9byhzKGUpKSxyPWgodCk7cmV0dXJuIDA9PT1yJiYiLSI9PWwodCwwKT8tMDpyfTpofSwzMDA5OihlLHQscik9Pnt2YXIgbj1yKDc4NTQpLGE9cig3MjkzKSxpPXIoMTcwMikscz1yKDEzNDApLG89cigzMTExKS50cmltLGM9cigxMzYxKSxsPW4ucGFyc2VJbnQsaD1uLlN5bWJvbCx1PWgmJmguaXRlcmF0b3IsZD0vXlsrLV0/MHgvaSxmPWkoZC5leGVjKSxnPTghPT1sKGMrIjA4Iil8fDIyIT09bChjKyIweDE2Iil8fHUmJiFhKChmdW5jdGlvbigpe2woT2JqZWN0KHUpKX0pKTtlLmV4cG9ydHM9Zz9mdW5jdGlvbihlLHQpe3ZhciByPW8ocyhlKSk7cmV0dXJuIGwocix0Pj4+MHx8KGYoZCxyKT8xNjoxMCkpfTpsfSwxNTc0OihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cigxNzAyKSxpPXIoNjkxNikscz1yKDcyOTMpLG89cigxOTU2KSxjPXIoNTE4MSksbD1yKDUyOTYpLGg9cig3OTA4KSx1PXIoODM2MSksZD1PYmplY3QuYXNzaWduLGY9T2JqZWN0LmRlZmluZVByb3BlcnR5LGc9YShbXS5jb25jYXQpO2UuZXhwb3J0cz0hZHx8cygoZnVuY3Rpb24oKXtpZihuJiYxIT09ZCh7YjoxfSxkKGYoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2YodGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgZT17fSx0PXt9LHI9U3ltYm9sKCksYT0iYWJjZGVmZ2hpamtsbW5vcHFyc3QiO3JldHVybiBlW3JdPTcsYS5zcGxpdCgiIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT1lfSkpLDchPWQoe30sZSlbcl18fG8oZCh7fSx0KSkuam9pbigiIikhPWF9KSk/ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9aChlKSxhPWFyZ3VtZW50cy5sZW5ndGgscz0xLGQ9Yy5mLGY9bC5mO2E+czspZm9yKHZhciBwLG09dShhcmd1bWVudHNbcysrXSksYj1kP2cobyhtKSxkKG0pKTpvKG0pLHk9Yi5sZW5ndGgsdz0wO3k+dzspcD1iW3crK10sbiYmIWkoZixtLHApfHwocltwXT1tW3BdKTtyZXR1cm4gcn06ZH0sMzA6KGUsdCxyKT0+e3ZhciBuLGE9cig5NjcwKSxpPXIoNjA0OCkscz1yKDc0OCksbz1yKDM1MDEpLGM9cig0OTApLGw9cigzMTcpLGg9cig2MjAwKSx1PSJwcm90b3R5cGUiLGQ9InNjcmlwdCIsZj1oKCJJRV9QUk9UTyIpLGc9ZnVuY3Rpb24oKXt9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK2QrIj4iK2UrIjwvIitkKyI+In0sbT1mdW5jdGlvbihlKXtlLndyaXRlKHAoIiIpKSxlLmNsb3NlKCk7dmFyIHQ9ZS5wYXJlbnRXaW5kb3cuT2JqZWN0O3JldHVybiBlPW51bGwsdH0sYj1mdW5jdGlvbigpe3RyeXtuPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe312YXIgZSx0LHI7Yj0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmRvbWFpbiYmbj9tKG4pOih0PWwoImlmcmFtZSIpLHI9ImphdmEiK2QrIjoiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsYy5hcHBlbmRDaGlsZCh0KSx0LnNyYz1TdHJpbmcociksKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZShwKCJkb2N1bWVudC5GPU9iamVjdCIpKSxlLmNsb3NlKCksZS5GKTptKG4pO2Zvcih2YXIgYT1zLmxlbmd0aDthLS07KWRlbGV0ZSBiW3VdW3NbYV1dO3JldHVybiBiKCl9O29bZl09ITAsZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhnW3VdPWEoZSkscj1uZXcgZyxnW3VdPW51bGwscltmXT1lKTpyPWIoKSx2b2lkIDA9PT10P3I6aS5mKHIsdCl9fSw2MDQ4OihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cigzMzUzKSxpPXIoMzA3MCkscz1yKDk2NzApLG89cig1NjU2KSxjPXIoMTk1Nik7dC5mPW4mJiFhP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCl7cyhlKTtmb3IodmFyIHIsbj1vKHQpLGE9Yyh0KSxsPWEubGVuZ3RoLGg9MDtsPmg7KWkuZihlLHI9YVtoKytdLG5bcl0pO3JldHVybiBlfX0sMzA3MDooZSx0LHIpPT57dmFyIG49cig5NzgxKSxhPXIoNDY2NCksaT1yKDMzNTMpLHM9cig5NjcwKSxvPXIoNDk0OCksYz1UeXBlRXJyb3IsbD1PYmplY3QuZGVmaW5lUHJvcGVydHksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHU9ImVudW1lcmFibGUiLGQ9ImNvbmZpZ3VyYWJsZSIsZj0id3JpdGFibGUiO3QuZj1uP2k/ZnVuY3Rpb24oZSx0LHIpe2lmKHMoZSksdD1vKHQpLHMociksImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIHImJmYgaW4gciYmIXJbZl0pe3ZhciBuPWgoZSx0KTtuJiZuW2ZdJiYoZVt0XT1yLnZhbHVlLHI9e2NvbmZpZ3VyYWJsZTpkIGluIHI/cltkXTpuW2RdLGVudW1lcmFibGU6dSBpbiByP3JbdV06blt1XSx3cml0YWJsZTohMX0pfXJldHVybiBsKGUsdCxyKX06bDpmdW5jdGlvbihlLHQscil7aWYocyhlKSx0PW8odCkscyhyKSxhKXRyeXtyZXR1cm4gbChlLHQscil9Y2F0Y2goZSl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IGMoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIHImJihlW3RdPXIudmFsdWUpLGV9fSwxMjM2OihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cig2OTE2KSxpPXIoNTI5Nikscz1yKDkxMTQpLG89cig1NjU2KSxjPXIoNDk0OCksbD1yKDI1OTcpLGg9cig0NjY0KSx1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPW4/dTpmdW5jdGlvbihlLHQpe2lmKGU9byhlKSx0PWModCksaCl0cnl7cmV0dXJuIHUoZSx0KX1jYXRjaChlKXt9aWYobChlLHQpKXJldHVybiBzKCFhKGkuZixlLHQpLGVbdF0pfX0sMTE1NjooZSx0LHIpPT57dmFyIG49cig0MzI2KSxhPXIoNTY1NiksaT1yKDgwMDYpLmYscz1yKDE1ODkpLG89Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM/T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KTpbXTtlLmV4cG9ydHMuZj1mdW5jdGlvbihlKXtyZXR1cm4gbyYmIldpbmRvdyI9PW4oZSk/ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBpKGUpfWNhdGNoKGUpe3JldHVybiBzKG8pfX0oZSk6aShhKGUpKX19LDgwMDY6KGUsdCxyKT0+e3ZhciBuPXIoNjMyNCksYT1yKDc0OCkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiBuKGUsYSl9fSw1MTgxOihlLHQpPT57dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDk1MTg6KGUsdCxyKT0+e3ZhciBuPXIoMjU5NyksYT1yKDYxNCksaT1yKDc5MDgpLHM9cig2MjAwKSxvPXIoODU0NCksYz1zKCJJRV9QUk9UTyIpLGw9T2JqZWN0LGg9bC5wcm90b3R5cGU7ZS5leHBvcnRzPW8/bC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXt2YXIgdD1pKGUpO2lmKG4odCxjKSlyZXR1cm4gdFtjXTt2YXIgcj10LmNvbnN0cnVjdG9yO3JldHVybiBhKHIpJiZ0IGluc3RhbmNlb2Ygcj9yLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgbD9oOm51bGx9fSwyMDUwOihlLHQscik9Pnt2YXIgbj1yKDcyOTMpLGE9cigxMTEpLGk9cig0MzI2KSxzPXIoNzU1Niksbz1PYmplY3QuaXNFeHRlbnNpYmxlLGM9bigoZnVuY3Rpb24oKXtvKDEpfSkpO2UuZXhwb3J0cz1jfHxzP2Z1bmN0aW9uKGUpe3JldHVybiEhYShlKSYmKCFzfHwiQXJyYXlCdWZmZXIiIT1pKGUpKSYmKCFvfHxvKGUpKX06b30sNzk3NjooZSx0LHIpPT57dmFyIG49cigxNzAyKTtlLmV4cG9ydHM9bih7fS5pc1Byb3RvdHlwZU9mKX0sNjMyNDooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoMjU5NyksaT1yKDU2NTYpLHM9cigxMzE4KS5pbmRleE9mLG89cigzNTAxKSxjPW4oW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1pKGUpLGw9MCxoPVtdO2ZvcihyIGluIG4pIWEobyxyKSYmYShuLHIpJiZjKGgscik7Zm9yKDt0Lmxlbmd0aD5sOylhKG4scj10W2wrK10pJiYofnMoaCxyKXx8YyhoLHIpKTtyZXR1cm4gaH19LDE5NTY6KGUsdCxyKT0+e3ZhciBuPXIoNjMyNCksYT1yKDc0OCk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGEpfX0sNTI5NjooZSx0KT0+e3ZhciByPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixhPW4mJiFyLmNhbGwoezE6Mn0sMSk7dC5mPWE/ZnVuY3Rpb24oZSl7dmFyIHQ9bih0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTpyfSw3Njc0OihlLHQscik9Pnt2YXIgbj1yKDU2NjgpLGE9cig5NjcwKSxpPXIoNjA3Nyk7ZS5leHBvcnRzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciBlLHQ9ITEscj17fTt0cnl7KGU9bihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iLCJzZXQiKSkocixbXSksdD1yIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goZSl7fXJldHVybiBmdW5jdGlvbihyLG4pe3JldHVybiBhKHIpLGkobiksdD9lKHIsbik6ci5fX3Byb3RvX189bixyfX0oKTp2b2lkIDApfSwyMTQwOihlLHQscik9Pnt2YXIgbj1yKDY5MTYpLGE9cig2MTQpLGk9cigxMTEpLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByLG87aWYoInN0cmluZyI9PT10JiZhKHI9ZS50b1N0cmluZykmJiFpKG89bihyLGUpKSlyZXR1cm4gbztpZihhKHI9ZS52YWx1ZU9mKSYmIWkobz1uKHIsZSkpKXJldHVybiBvO2lmKCJzdHJpbmciIT09dCYmYShyPWUudG9TdHJpbmcpJiYhaShvPW4ocixlKSkpcmV0dXJuIG87dGhyb3cgcygiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSwzODg3OihlLHQscik9Pnt2YXIgbj1yKDUwMDUpLGE9cigxNzAyKSxpPXIoODAwNikscz1yKDUxODEpLG89cig5NjcwKSxjPWEoW10uY29uY2F0KTtlLmV4cG9ydHM9bigiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9aS5mKG8oZSkpLHI9cy5mO3JldHVybiByP2ModCxyKGUpKTp0fX0sMjUzNDplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm57ZXJyb3I6ITEsdmFsdWU6ZSgpfX1jYXRjaChlKXtyZXR1cm57ZXJyb3I6ITAsdmFsdWU6ZX19fX0sMzcwMjooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoMjQ5MiksaT1yKDYxNCkscz1yKDQ3MDUpLG89cigyNzg4KSxjPXIoNTExMiksbD1yKDc4NzEpLGg9cigzODIzKSx1PXIoMTkxMyksZD1yKDczOTIpLGY9YSYmYS5wcm90b3R5cGUsZz1jKCJzcGVjaWVzIikscD0hMSxtPWkobi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpLGI9cygiUHJvbWlzZSIsKGZ1bmN0aW9uKCl7dmFyIGU9byhhKSx0PWUhPT1TdHJpbmcoYSk7aWYoIXQmJjY2PT09ZClyZXR1cm4hMDtpZih1JiYoIWYuY2F0Y2h8fCFmLmZpbmFsbHkpKXJldHVybiEwO2lmKCFkfHxkPDUxfHwhL25hdGl2ZSBjb2RlLy50ZXN0KGUpKXt2YXIgcj1uZXcgYSgoZnVuY3Rpb24oZSl7ZSgxKX0pKSxuPWZ1bmN0aW9uKGUpe2UoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKCl7fSkpfTtpZigoci5jb25zdHJ1Y3Rvcj17fSlbZ109biwhKHA9ci50aGVuKChmdW5jdGlvbigpe30pKWluc3RhbmNlb2YgbikpcmV0dXJuITB9cmV0dXJuIXQmJihsfHxoKSYmIW19KSk7ZS5leHBvcnRzPXtDT05TVFJVQ1RPUjpiLFJFSkVDVElPTl9FVkVOVDptLFNVQkNMQVNTSU5HOnB9fSwyNDkyOihlLHQscik9Pnt2YXIgbj1yKDc4NTQpO2UuZXhwb3J0cz1uLlByb21pc2V9LDk0Nzg6KGUsdCxyKT0+e3ZhciBuPXIoOTY3MCksYT1yKDExMSksaT1yKDg1MjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKG4oZSksYSh0KSYmdC5jb25zdHJ1Y3Rvcj09PWUpcmV0dXJuIHQ7dmFyIHI9aS5mKGUpO3JldHVybigwLHIucmVzb2x2ZSkodCksci5wcm9taXNlfX0sNjEyOihlLHQscik9Pnt2YXIgbj1yKDI0OTIpLGE9cig3MDcyKSxpPXIoMzcwMikuQ09OU1RSVUNUT1I7ZS5leHBvcnRzPWl8fCFhKChmdW5jdGlvbihlKXtuLmFsbChlKS50aGVuKHZvaWQgMCwoZnVuY3Rpb24oKXt9KSl9KSl9LDI2MjY6KGUsdCxyKT0+e3ZhciBuPXIoMzA3MCkuZjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3IgaW4gZXx8bihlLHIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX0sc2V0OmZ1bmN0aW9uKGUpe3Rbcl09ZX19KX19LDg1NzI6ZT0+e3ZhciB0PWZ1bmN0aW9uKCl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGx9O3QucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9e2l0ZW06ZSxuZXh0Om51bGx9LHI9dGhpcy50YWlsO3I/ci5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy50YWlsPXR9LGdldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZDtpZihlKXJldHVybiBudWxsPT09KHRoaXMuaGVhZD1lLm5leHQpJiYodGhpcy50YWlsPW51bGwpLGUuaXRlbX19LGUuZXhwb3J0cz10fSw3NjUxOihlLHQscik9Pnt2YXIgbj1yKDY5MTYpLGE9cig5NjcwKSxpPXIoNjE0KSxzPXIoNDMyNiksbz1yKDIyNjEpLGM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPWUuZXhlYztpZihpKHIpKXt2YXIgbD1uKHIsZSx0KTtyZXR1cm4gbnVsbCE9PWwmJmEobCksbH1pZigiUmVnRXhwIj09PXMoZSkpcmV0dXJuIG4obyxlLHQpO3Rocm93IGMoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKX19LDIyNjE6KGUsdCxyKT0+e3ZhciBuLGEsaT1yKDY5MTYpLHM9cigxNzAyKSxvPXIoMTM0MCksYz1yKDcwNjYpLGw9cigyOTk5KSxoPXIoMjMwOSksdT1yKDMwKSxkPXIoOTkwOSkuZ2V0LGY9cig5NDQxKSxnPXIoNzE2OCkscD1oKCJuYXRpdmUtc3RyaW5nLXJlcGxhY2UiLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksbT1SZWdFeHAucHJvdG90eXBlLmV4ZWMsYj1tLHk9cygiIi5jaGFyQXQpLHc9cygiIi5pbmRleE9mKSx2PXMoIiIucmVwbGFjZSkseD1zKCIiLnNsaWNlKSxTPShhPS9iKi9nLGkobSxuPS9hLywiYSIpLGkobSxhLCJhIiksMCE9PW4ubGFzdEluZGV4fHwwIT09YS5sYXN0SW5kZXgpLEE9bC5CUk9LRU5fQ0FSRVQsaz12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KFN8fGt8fEF8fGZ8fGcpJiYoYj1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxzLGwsaCxmPXRoaXMsZz1kKGYpLEM9byhlKSxPPWcucmF3O2lmKE8pcmV0dXJuIE8ubGFzdEluZGV4PWYubGFzdEluZGV4LHQ9aShiLE8sQyksZi5sYXN0SW5kZXg9Ty5sYXN0SW5kZXgsdDt2YXIgRj1nLmdyb3VwcyxJPUEmJmYuc3RpY2t5LFQ9aShjLGYpLE09Zi5zb3VyY2UsRT0wLFA9QztpZihJJiYoVD12KFQsInkiLCIiKSwtMT09PXcoVCwiZyIpJiYoVCs9ImciKSxQPXgoQyxmLmxhc3RJbmRleCksZi5sYXN0SW5kZXg+MCYmKCFmLm11bHRpbGluZXx8Zi5tdWx0aWxpbmUmJiJcbiIhPT15KEMsZi5sYXN0SW5kZXgtMSkpJiYoTT0iKD86ICIrTSsiKSIsUD0iICIrUCxFKyspLHI9bmV3IFJlZ0V4cCgiXig/OiIrTSsiKSIsVCkpLGsmJihyPW5ldyBSZWdFeHAoIl4iK00rIiQoPyFcXHMpIixUKSksUyYmKG49Zi5sYXN0SW5kZXgpLGE9aShtLEk/cjpmLFApLEk/YT8oYS5pbnB1dD14KGEuaW5wdXQsRSksYVswXT14KGFbMF0sRSksYS5pbmRleD1mLmxhc3RJbmRleCxmLmxhc3RJbmRleCs9YVswXS5sZW5ndGgpOmYubGFzdEluZGV4PTA6UyYmYSYmKGYubGFzdEluZGV4PWYuZ2xvYmFsP2EuaW5kZXgrYVswXS5sZW5ndGg6biksayYmYSYmYS5sZW5ndGg+MSYmaShwLGFbMF0sciwoZnVuY3Rpb24oKXtmb3Iocz0xO3M8YXJndW1lbnRzLmxlbmd0aC0yO3MrKyl2b2lkIDA9PT1hcmd1bWVudHNbc10mJihhW3NdPXZvaWQgMCl9KSksYSYmRilmb3IoYS5ncm91cHM9bD11KG51bGwpLHM9MDtzPEYubGVuZ3RoO3MrKylsWyhoPUZbc10pWzBdXT1hW2hbMV1dO3JldHVybiBhfSksZS5leHBvcnRzPWJ9LDcwNjY6KGUsdCxyKT0+e3ZhciBuPXIoOTY3MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIGU9bih0aGlzKSx0PSIiO3JldHVybiBlLmhhc0luZGljZXMmJih0Kz0iZCIpLGUuZ2xvYmFsJiYodCs9ImciKSxlLmlnbm9yZUNhc2UmJih0Kz0iaSIpLGUubXVsdGlsaW5lJiYodCs9Im0iKSxlLmRvdEFsbCYmKHQrPSJzIiksZS51bmljb2RlJiYodCs9InUiKSxlLnVuaWNvZGVTZXRzJiYodCs9InYiKSxlLnN0aWNreSYmKHQrPSJ5IiksdH19LDQ3MDY6KGUsdCxyKT0+e3ZhciBuPXIoNjkxNiksYT1yKDI1OTcpLGk9cig3OTc2KSxzPXIoNzA2Niksbz1SZWdFeHAucHJvdG90eXBlO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1lLmZsYWdzO3JldHVybiB2b2lkIDAhPT10fHwiZmxhZ3MiaW4gb3x8YShlLCJmbGFncyIpfHwhaShvLGUpP3Q6bihzLGUpfX0sMjk5OTooZSx0LHIpPT57dmFyIG49cig3MjkzKSxhPXIoNzg1NCkuUmVnRXhwLGk9bigoZnVuY3Rpb24oKXt2YXIgZT1hKCJhIiwieSIpO3JldHVybiBlLmxhc3RJbmRleD0yLG51bGwhPWUuZXhlYygiYWJjZCIpfSkpLHM9aXx8bigoZnVuY3Rpb24oKXtyZXR1cm4hYSgiYSIsInkiKS5zdGlja3l9KSksbz1pfHxuKChmdW5jdGlvbigpe3ZhciBlPWEoIl5yIiwiZ3kiKTtyZXR1cm4gZS5sYXN0SW5kZXg9MixudWxsIT1lLmV4ZWMoInN0ciIpfSkpO2UuZXhwb3J0cz17QlJPS0VOX0NBUkVUOm8sTUlTU0VEX1NUSUNLWTpzLFVOU1VQUE9SVEVEX1k6aX19LDk0NDE6KGUsdCxyKT0+e3ZhciBuPXIoNzI5MyksYT1yKDc4NTQpLlJlZ0V4cDtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXt2YXIgZT1hKCIuIiwicyIpO3JldHVybiEoZS5kb3RBbGwmJmUuZXhlYygiXG4iKSYmInMiPT09ZS5mbGFncyl9KSl9LDcxNjg6KGUsdCxyKT0+e3ZhciBuPXIoNzI5MyksYT1yKDc4NTQpLlJlZ0V4cDtlLmV4cG9ydHM9bigoZnVuY3Rpb24oKXt2YXIgZT1hKCIoPzxhPmIpIiwiZyIpO3JldHVybiJiIiE9PWUuZXhlYygiYiIpLmdyb3Vwcy5hfHwiYmMiIT09ImIiLnJlcGxhY2UoZSwiJDxhPmMiKX0pKX0sNDQ4ODooZSx0LHIpPT57dmFyIG49cig4NTU0KSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSl0aHJvdyBhKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sNjM0MDooZSx0LHIpPT57dmFyIG49cig1MDA1KSxhPXIoNzA0NSksaT1yKDUxMTIpLHM9cig5NzgxKSxvPWkoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKTtzJiZ0JiYhdFtvXSYmYSh0LG8se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LDgwMDM6KGUsdCxyKT0+e3ZhciBuPXIoMzA3MCkuZixhPXIoMjU5NyksaT1yKDUxMTIpKCJ0b1N0cmluZ1RhZyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7ZSYmIXImJihlPWUucHJvdG90eXBlKSxlJiYhYShlLGkpJiZuKGUsaSx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LDYyMDA6KGUsdCxyKT0+e3ZhciBuPXIoMjMwOSksYT1yKDk3MTEpLGk9bigia2V5cyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09YShlKSl9fSw1NDY1OihlLHQscik9Pnt2YXIgbj1yKDc4NTQpLGE9cigzMDcyKSxpPSJfX2NvcmUtanNfc2hhcmVkX18iLHM9bltpXXx8YShpLHt9KTtlLmV4cG9ydHM9c30sMjMwOTooZSx0LHIpPT57dmFyIG49cigxOTEzKSxhPXIoNTQ2NSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhW2VdfHwoYVtlXT12b2lkIDAhPT10P3Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjoiMy4zMi4wIixtb2RlOm4/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjMyLjAvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNjcwNzooZSx0LHIpPT57dmFyIG49cig5NjcwKSxhPXIoOTQ4MyksaT1yKDg1NTQpLHM9cig1MTEyKSgic3BlY2llcyIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByLG89bihlKS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09b3x8aShyPW4obylbc10pP3Q6YShyKX19LDg3MTA6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMiksYT1yKDkzMDMpLGk9cigxMzQwKSxzPXIoNDQ4OCksbz1uKCIiLmNoYXJBdCksYz1uKCIiLmNoYXJDb2RlQXQpLGw9bigiIi5zbGljZSksaD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbixoLHU9aShzKHQpKSxkPWEociksZj11Lmxlbmd0aDtyZXR1cm4gZDwwfHxkPj1mP2U/IiI6dm9pZCAwOihuPWModSxkKSk8NTUyOTZ8fG4+NTYzMTl8fGQrMT09PWZ8fChoPWModSxkKzEpKTw1NjMyMHx8aD41NzM0Mz9lP28odSxkKTpuOmU/bCh1LGQsZCsyKTpoLTU2MzIwKyhuLTU1Mjk2PDwxMCkrNjU1MzZ9fTtlLmV4cG9ydHM9e2NvZGVBdDpoKCExKSxjaGFyQXQ6aCghMCl9fSwzMTk3OihlLHQscik9Pnt2YXIgbj1yKDE3MDIpLGE9MjE0NzQ4MzY0NyxpPS9bXlwwLVx1MDA3RV0vLHM9L1suXHUzMDAyXHVGRjBFXHVGRjYxXS9nLG89Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIixjPVJhbmdlRXJyb3IsbD1uKHMuZXhlYyksaD1NYXRoLmZsb29yLHU9U3RyaW5nLmZyb21DaGFyQ29kZSxkPW4oIiIuY2hhckNvZGVBdCksZj1uKFtdLmpvaW4pLGc9bihbXS5wdXNoKSxwPW4oIiIucmVwbGFjZSksbT1uKCIiLnNwbGl0KSxiPW4oIiIudG9Mb3dlckNhc2UpLHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUrMjIrNzUqKGU8MjYpfSx3PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj0wO2ZvcihlPXI/aChlLzcwMCk6ZT4+MSxlKz1oKGUvdCk7ZT40NTU7KWU9aChlLzM1KSxuKz0zNjtyZXR1cm4gaChuKzM2KmUvKGUrMzgpKX0sdj1mdW5jdGlvbihlKXt2YXIgdD1bXTtlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTAsbj1lLmxlbmd0aDtyPG47KXt2YXIgYT1kKGUscisrKTtpZihhPj01NTI5NiYmYTw9NTYzMTkmJnI8bil7dmFyIGk9ZChlLHIrKyk7NTYzMjA9PSg2NDUxMiZpKT9nKHQsKCgxMDIzJmEpPDwxMCkrKDEwMjMmaSkrNjU1MzYpOihnKHQsYSksci0tKX1lbHNlIGcodCxhKX1yZXR1cm4gdH0oZSk7dmFyIHIsbixpPWUubGVuZ3RoLHM9MTI4LGw9MCxwPTcyO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspKG49ZVtyXSk8MTI4JiZnKHQsdShuKSk7dmFyIG09dC5sZW5ndGgsYj1tO2ZvcihtJiZnKHQsIi0iKTtiPGk7KXt2YXIgdj1hO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspKG49ZVtyXSk+PXMmJm48diYmKHY9bik7dmFyIHg9YisxO2lmKHYtcz5oKChhLWwpL3gpKXRocm93IGMobyk7Zm9yKGwrPSh2LXMpKngscz12LHI9MDtyPGUubGVuZ3RoO3IrKyl7aWYoKG49ZVtyXSk8cyYmKytsPmEpdGhyb3cgYyhvKTtpZihuPT1zKXtmb3IodmFyIFM9bCxBPTM2Ozspe3ZhciBrPUE8PXA/MTpBPj1wKzI2PzI2OkEtcDtpZihTPGspYnJlYWs7dmFyIEM9Uy1rLE89MzYtaztnKHQsdSh5KGsrQyVPKSkpLFM9aChDL08pLEErPTM2fWcodCx1KHkoUykpKSxwPXcobCx4LGI9PW0pLGw9MCxiKyt9fWwrKyxzKyt9cmV0dXJuIGYodCwiIil9O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLG49W10sYT1tKHAoYihlKSxzLCIuIiksIi4iKTtmb3IodD0wO3Q8YS5sZW5ndGg7dCsrKXI9YVt0XSxnKG4sbChpLHIpPyJ4bi0tIit2KHIpOnIpO3JldHVybiBmKG4sIi4iKX19LDg0MTU6KGUsdCxyKT0+e3ZhciBuPXIoOTMwMyksYT1yKDEzNDApLGk9cig0NDg4KSxzPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoaSh0aGlzKSkscj0iIixvPW4oZSk7aWYobzwwfHxvPT0xLzApdGhyb3cgcygiV3JvbmcgbnVtYmVyIG9mIHJlcGV0aXRpb25zIik7Zm9yKDtvPjA7KG8+Pj49MSkmJih0Kz10KSkxJm8mJihyKz10KTtyZXR1cm4gcn19LDYwOTE6KGUsdCxyKT0+e3ZhciBuPXIoNjUzMCkuUFJPUEVSLGE9cig3MjkzKSxpPXIoMTM2MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKChmdW5jdGlvbigpe3JldHVybiEhaVtlXSgpfHwi4oCLwoXhoI4iIT09IuKAi8KF4aCOIltlXSgpfHxuJiZpW2VdLm5hbWUhPT1lfSkpfX0sMzExMTooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPXIoNDQ4OCksaT1yKDEzNDApLHM9cigxMzYxKSxvPW4oIiIucmVwbGFjZSksYz1SZWdFeHAoIl5bIitzKyJdKyIpLGw9UmVnRXhwKCIoXnxbXiIrcysiXSlbIitzKyJdKyQiKSxoPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1pKGEodCkpO3JldHVybiAxJmUmJihyPW8ocixjLCIiKSksMiZlJiYocj1vKHIsbCwiJDEiKSkscn19O2UuZXhwb3J0cz17c3RhcnQ6aCgxKSxlbmQ6aCgyKSx0cmltOmgoMyl9fSw2MjkzOihlLHQscik9Pnt2YXIgbj1yKDczOTIpLGE9cig3MjkzKSxpPXIoNzg1NCkuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFhKChmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFpKGUpfHwhKE9iamVjdChlKWluc3RhbmNlb2YgU3ltYm9sKXx8IVN5bWJvbC5zaGFtJiZuJiZuPDQxfSkpfSwyNjE6KGUsdCxyKT0+e3ZhciBuLGEsaSxzLG89cig3ODU0KSxjPXIoMjEwNCksbD1yKDk5NzQpLGg9cig2MTQpLHU9cigyNTk3KSxkPXIoNzI5MyksZj1yKDQ5MCksZz1yKDIwNikscD1yKDMxNyksbT1yKDgwNTMpLGI9cig2ODMzKSx5PXIoNTI2OCksdz1vLnNldEltbWVkaWF0ZSx2PW8uY2xlYXJJbW1lZGlhdGUseD1vLnByb2Nlc3MsUz1vLkRpc3BhdGNoLEE9by5GdW5jdGlvbixrPW8uTWVzc2FnZUNoYW5uZWwsQz1vLlN0cmluZyxPPTAsRj17fSxJPSJvbnJlYWR5c3RhdGVjaGFuZ2UiO2QoKGZ1bmN0aW9uKCl7bj1vLmxvY2F0aW9ufSkpO3ZhciBUPWZ1bmN0aW9uKGUpe2lmKHUoRixlKSl7dmFyIHQ9RltlXTtkZWxldGUgRltlXSx0KCl9fSxNPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe1QoZSl9fSxFPWZ1bmN0aW9uKGUpe1QoZS5kYXRhKX0sUD1mdW5jdGlvbihlKXtvLnBvc3RNZXNzYWdlKEMoZSksbi5wcm90b2NvbCsiLy8iK24uaG9zdCl9O3cmJnZ8fCh3PWZ1bmN0aW9uKGUpe20oYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgdD1oKGUpP2U6QShlKSxyPWcoYXJndW1lbnRzLDEpO3JldHVybiBGWysrT109ZnVuY3Rpb24oKXtjKHQsdm9pZCAwLHIpfSxhKE8pLE99LHY9ZnVuY3Rpb24oZSl7ZGVsZXRlIEZbZV19LHk/YT1mdW5jdGlvbihlKXt4Lm5leHRUaWNrKE0oZSkpfTpTJiZTLm5vdz9hPWZ1bmN0aW9uKGUpe1Mubm93KE0oZSkpfTprJiYhYj8ocz0oaT1uZXcgaykucG9ydDIsaS5wb3J0MS5vbm1lc3NhZ2U9RSxhPWwocy5wb3N0TWVzc2FnZSxzKSk6by5hZGRFdmVudExpc3RlbmVyJiZoKG8ucG9zdE1lc3NhZ2UpJiYhby5pbXBvcnRTY3JpcHRzJiZuJiYiZmlsZToiIT09bi5wcm90b2NvbCYmIWQoUCk/KGE9UCxvLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLEUsITEpKTphPUkgaW4gcCgic2NyaXB0Iik/ZnVuY3Rpb24oZSl7Zi5hcHBlbmRDaGlsZChwKCJzY3JpcHQiKSlbSV09ZnVuY3Rpb24oKXtmLnJlbW92ZUNoaWxkKHRoaXMpLFQoZSl9fTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KE0oZSksMCl9KSxlLmV4cG9ydHM9e3NldDp3LGNsZWFyOnZ9fSw4NjM6KGUsdCxyKT0+e3ZhciBuPXIoMTcwMik7ZS5leHBvcnRzPW4oMS4udmFsdWVPZil9LDE0MDA6KGUsdCxyKT0+e3ZhciBuPXIoOTMwMyksYT1NYXRoLm1heCxpPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPW4oZSk7cmV0dXJuIHI8MD9hKHIrdCwwKTppKHIsdCl9fSw0NTk5OihlLHQscik9Pnt2YXIgbj1yKDc1OTMpLGE9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsIm51bWJlciIpO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBhKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNzA2NzooZSx0LHIpPT57dmFyIG49cig5MzAzKSxhPXIoNzQ2NiksaT1SYW5nZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXJldHVybiAwO3ZhciB0PW4oZSkscj1hKHQpO2lmKHQhPT1yKXRocm93IGkoIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiByfX0sNTY1NjooZSx0LHIpPT57dmFyIG49cig4MzYxKSxhPXIoNDQ4OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGEoZSkpfX0sOTMwMzooZSx0LHIpPT57dmFyIG49cig0NzU4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6bih0KX19LDc0NjY6KGUsdCxyKT0+e3ZhciBuPXIoOTMwMyksYT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9hKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LDc5MDg6KGUsdCxyKT0+e3ZhciBuPXIoNDQ4OCksYT1PYmplY3Q7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKG4oZSkpfX0sNDU5MDooZSx0LHIpPT57dmFyIG49cigzMDAyKSxhPVJhbmdlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9bihlKTtpZihyJXQpdGhyb3cgYSgiV3Jvbmcgb2Zmc2V0Iik7cmV0dXJuIHJ9fSwzMDAyOihlLHQscik9Pnt2YXIgbj1yKDkzMDMpLGE9UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKTtpZih0PDApdGhyb3cgYSgiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwIik7cmV0dXJuIHR9fSw3NTkzOihlLHQscik9Pnt2YXIgbj1yKDY5MTYpLGE9cigxMTEpLGk9cigyMTkwKSxzPXIoODE3Myksbz1yKDIxNDApLGM9cig1MTEyKSxsPVR5cGVFcnJvcixoPWMoInRvUHJpbWl0aXZlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIWEoZSl8fGkoZSkpcmV0dXJuIGU7dmFyIHIsYz1zKGUsaCk7aWYoYyl7aWYodm9pZCAwPT09dCYmKHQ9ImRlZmF1bHQiKSxyPW4oYyxlLHQpLCFhKHIpfHxpKHIpKXJldHVybiByO3Rocm93IGwoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT10JiYodD0ibnVtYmVyIiksbyhlLHQpfX0sNDk0ODooZSx0LHIpPT57dmFyIG49cig3NTkzKSxhPXIoMjE5MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwic3RyaW5nIik7cmV0dXJuIGEodCk/dDp0KyIifX0sMTY5NDooZSx0LHIpPT57dmFyIG49e307bltyKDUxMTIpKCJ0b1N0cmluZ1RhZyIpXT0ieiIsZS5leHBvcnRzPSJbb2JqZWN0IHpdIj09PVN0cmluZyhuKX0sMTM0MDooZSx0LHIpPT57dmFyIG49cig2NDgpLGE9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiU3ltYm9sIj09PW4oZSkpdGhyb3cgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiBhKGUpfX0sNzg5MjplPT57dmFyIHQ9TWF0aC5yb3VuZDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHI9dChlKTtyZXR1cm4gcjwwPzA6cj4yNTU/MjU1OjI1NSZyfX0sNDAzODooZSx0LHIpPT57dmFyIG49cig1MjY4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e2lmKG4pcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZSgiJytlKyciKScpKCl9Y2F0Y2goZSl7fX19LDYzMzA6ZT0+e3ZhciB0PVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LDk4NDM6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc4NTQpLGk9cig2OTE2KSxzPXIoOTc4MSksbz1yKDM4MzIpLGM9cigyNjApLGw9cigzMzMxKSxoPXIoNTc4NyksdT1yKDkxMTQpLGQ9cig4ODgwKSxmPXIoNTk4OCksZz1yKDc0NjYpLHA9cig3MDY3KSxtPXIoNDU5MCksYj1yKDc4OTIpLHk9cig0OTQ4KSx3PXIoMjU5Nyksdj1yKDY0OCkseD1yKDExMSksUz1yKDIxOTApLEE9cigzMCksaz1yKDc5NzYpLEM9cig3Njc0KSxPPXIoODAwNikuZixGPXIoNzMyMSksST1yKDIwOTIpLmZvckVhY2gsVD1yKDYzNDApLE09cig3MDQ1KSxFPXIoMzA3MCksUD1yKDEyMzYpLFI9cig5OTA5KSxOPXIoOTU4NyksRD1SLmdldCxCPVIuc2V0LEw9Ui5lbmZvcmNlLF89RS5mLGo9UC5mLFU9YS5SYW5nZUVycm9yLCQ9bC5BcnJheUJ1ZmZlcixYPSQucHJvdG90eXBlLEg9bC5EYXRhVmlldyxxPWMuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyx6PWMuVFlQRURfQVJSQVlfVEFHLEc9Yy5UeXBlZEFycmF5LFc9Yy5UeXBlZEFycmF5UHJvdG90eXBlLFY9Yy5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLEs9Yy5pc1R5cGVkQXJyYXksWT0iQllURVNfUEVSX0VMRU1FTlQiLEo9Ildyb25nIGxlbmd0aCIsWj1mdW5jdGlvbihlLHQpe1YoZSk7Zm9yKHZhciByPTAsbj10Lmxlbmd0aCxhPW5ldyBlKG4pO24+cjspYVtyXT10W3IrK107cmV0dXJuIGF9LFE9ZnVuY3Rpb24oZSx0KXtNKGUsdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBEKHRoaXMpW3RdfX0pfSxlZT1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gayhYLGUpfHwiQXJyYXlCdWZmZXIiPT0odD12KGUpKXx8IlNoYXJlZEFycmF5QnVmZmVyIj09dH0sdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSyhlKSYmIVModCkmJnQgaW4gZSYmZigrdCkmJnQ+PTB9LHJlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9eSh0KSx0ZShlLHQpP3UoMixlW3RdKTpqKGUsdCl9LG5lPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD15KHQpLCEodGUoZSx0KSYmeChyKSYmdyhyLCJ2YWx1ZSIpKXx8dyhyLCJnZXQiKXx8dyhyLCJzZXQiKXx8ci5jb25maWd1cmFibGV8fHcociwid3JpdGFibGUiKSYmIXIud3JpdGFibGV8fHcociwiZW51bWVyYWJsZSIpJiYhci5lbnVtZXJhYmxlP18oZSx0LHIpOihlW3RdPXIudmFsdWUsZSl9O3M/KHF8fChQLmY9cmUsRS5mPW5lLFEoVywiYnVmZmVyIiksUShXLCJieXRlT2Zmc2V0IiksUShXLCJieXRlTGVuZ3RoIiksUShXLCJsZW5ndGgiKSksbih7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFxfSx7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnJlLGRlZmluZVByb3BlcnR5Om5lfSksZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgcz1lLm1hdGNoKC9cZCsvKVswXS84LGM9ZSsocj8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsbD0iZ2V0IitlLHU9InNldCIrZSxmPWFbY10seT1mLHc9eSYmeS5wcm90b3R5cGUsdj17fSxTPWZ1bmN0aW9uKGUsdCl7XyhlLHQse2dldDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciByPUQoZSk7cmV0dXJuIHIudmlld1tsXSh0KnMrci5ieXRlT2Zmc2V0LCEwKX0odGhpcyx0KX0sc2V0OmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIGE9RChlKTthLnZpZXdbdV0odCpzK2EuYnl0ZU9mZnNldCxyP2Iobik6biwhMCl9KHRoaXMsdCxlKX0sZW51bWVyYWJsZTohMH0pfTtxP28mJih5PXQoKGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBoKGUsdyksTih4KHQpP2VlKHQpP3ZvaWQgMCE9PW4/bmV3IGYodCxtKHIscyksbik6dm9pZCAwIT09cj9uZXcgZih0LG0ocixzKSk6bmV3IGYodCk6Syh0KT9aKHksdCk6aShGLHksdCk6bmV3IGYocCh0KSksZSx5KX0pKSxDJiZDKHksRyksSShPKGYpLChmdW5jdGlvbihlKXtlIGluIHl8fGQoeSxlLGZbZV0pfSkpLHkucHJvdG90eXBlPXcpOih5PXQoKGZ1bmN0aW9uKGUsdCxyLG4pe2goZSx3KTt2YXIgYSxvLGMsbD0wLHU9MDtpZih4KHQpKXtpZighZWUodCkpcmV0dXJuIEsodCk/Wih5LHQpOmkoRix5LHQpO2E9dCx1PW0ocixzKTt2YXIgZD10LmJ5dGVMZW5ndGg7aWYodm9pZCAwPT09bil7aWYoZCVzKXRocm93IFUoSik7aWYoKG89ZC11KTwwKXRocm93IFUoSil9ZWxzZSBpZigobz1nKG4pKnMpK3U+ZCl0aHJvdyBVKEopO2M9by9zfWVsc2UgYz1wKHQpLGE9bmV3ICQobz1jKnMpO2ZvcihCKGUse2J1ZmZlcjphLGJ5dGVPZmZzZXQ6dSxieXRlTGVuZ3RoOm8sbGVuZ3RoOmMsdmlldzpuZXcgSChhKX0pO2w8YzspUyhlLGwrKyl9KSksQyYmQyh5LEcpLHc9eS5wcm90b3R5cGU9QShXKSksdy5jb25zdHJ1Y3RvciE9PXkmJmQodywiY29uc3RydWN0b3IiLHkpLEwodykuVHlwZWRBcnJheUNvbnN0cnVjdG9yPXkseiYmZCh3LHosYyk7dmFyIGs9eSE9Zjt2W2NdPXksbih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDprLHNoYW06IXF9LHYpLFkgaW4geXx8ZCh5LFkscyksWSBpbiB3fHxkKHcsWSxzKSxUKGMpfSk6ZS5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sMzgzMjooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoNzI5MyksaT1yKDcwNzIpLHM9cigyNjApLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1Msbz1uLkFycmF5QnVmZmVyLGM9bi5JbnQ4QXJyYXk7ZS5leHBvcnRzPSFzfHwhYSgoZnVuY3Rpb24oKXtjKDEpfSkpfHwhYSgoZnVuY3Rpb24oKXtuZXcgYygtMSl9KSl8fCFpKChmdW5jdGlvbihlKXtuZXcgYyxuZXcgYyhudWxsKSxuZXcgYygxLjUpLG5ldyBjKGUpfSksITApfHxhKChmdW5jdGlvbigpe3JldHVybiAxIT09bmV3IGMobmV3IG8oMiksMSx2b2lkIDApLmxlbmd0aH0pKX0sNzMyMTooZSx0LHIpPT57dmFyIG49cig5OTc0KSxhPXIoNjkxNiksaT1yKDk0ODMpLHM9cig3OTA4KSxvPXIoNjI0NCksYz1yKDQxMjEpLGw9cigxMjQ2KSxoPXIoNzY1OSksdT1yKDQwNjcpLGQ9cigyNjApLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsZj1yKDQ1OTkpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdCxyLGcscCxtLGIseSx3LHY9aSh0aGlzKSx4PXMoZSksUz1hcmd1bWVudHMubGVuZ3RoLEE9Uz4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsaz12b2lkIDAhPT1BLEM9bCh4KTtpZihDJiYhaChDKSlmb3Iodz0oeT1jKHgsQykpLm5leHQseD1bXTshKGI9YSh3LHkpKS5kb25lOyl4LnB1c2goYi52YWx1ZSk7Zm9yKGsmJlM+MiYmKEE9bihBLGFyZ3VtZW50c1syXSkpLHI9byh4KSxnPW5ldyhkKHYpKShyKSxwPXUoZyksdD0wO3I+dDt0KyspbT1rP0EoeFt0XSx0KTp4W3RdLGdbdF09cD9mKG0pOittO3JldHVybiBnfX0sOTcxMTooZSx0LHIpPT57dmFyIG49cigxNzAyKSxhPTAsaT1NYXRoLnJhbmRvbSgpLHM9bigxLi50b1N0cmluZyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09ZT8iIjplKSsiKV8iK3MoKythK2ksMzYpfX0sNTE0MzooZSx0LHIpPT57dmFyIG49cig3MjkzKSxhPXIoNTExMiksaT1yKDk3ODEpLHM9cigxOTEzKSxvPWEoIml0ZXJhdG9yIik7ZS5leHBvcnRzPSFuKChmdW5jdGlvbigpe3ZhciBlPW5ldyBVUkwoImI/YT0xJmI9MiZjPTMiLCJodHRwOi8vYSIpLHQ9ZS5zZWFyY2hQYXJhbXMscj1uZXcgVVJMU2VhcmNoUGFyYW1zKCJhPTEmYT0yJmI9MyIpLG49IiI7cmV0dXJuIGUucGF0aG5hbWU9ImMlMjBkIix0LmZvckVhY2goKGZ1bmN0aW9uKGUscil7dC5kZWxldGUoImIiKSxuKz1yK2V9KSksci5kZWxldGUoImEiLDIpLHIuZGVsZXRlKCJiIix2b2lkIDApLHMmJighZS50b0pTT058fCFyLmhhcygiYSIsMSl8fHIuaGFzKCJhIiwyKXx8IXIuaGFzKCJhIix2b2lkIDApfHxyLmhhcygiYiIpKXx8IXQuc2l6ZSYmKHN8fCFpKXx8IXQuc29ydHx8Imh0dHA6Ly9hL2MlMjBkP2E9MSZjPTMiIT09ZS5ocmVmfHwiMyIhPT10LmdldCgiYyIpfHwiYT0xIiE9PVN0cmluZyhuZXcgVVJMU2VhcmNoUGFyYW1zKCI/YT0xIikpfHwhdFtvXXx8ImEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hQGIiKS51c2VybmFtZXx8ImIiIT09bmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCJhPWIiKSkuZ2V0KCJhIil8fCJ4bi0tZTFheWJjIiE9PW5ldyBVUkwoImh0dHA6Ly/RgtC10YHRgiIpLmhvc3R8fCIjJUQwJUIxIiE9PW5ldyBVUkwoImh0dHA6Ly9hI9CxIikuaGFzaHx8ImExYzMiIT09bnx8IngiIT09bmV3IFVSTCgiaHR0cDovL3giLHZvaWQgMCkuaG9zdH0pKX0sMzMwNzooZSx0LHIpPT57dmFyIG49cig2MjkzKTtlLmV4cG9ydHM9biYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sMzM1MzooZSx0LHIpPT57dmFyIG49cig5NzgxKSxhPXIoNzI5Myk7ZS5leHBvcnRzPW4mJmEoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpfSw4MDUzOmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUscil7aWYoZTxyKXRocm93IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw0ODExOihlLHQscik9Pnt2YXIgbj1yKDc4NTQpLGE9cig2MTQpLGk9bi5XZWFrTWFwO2UuZXhwb3J0cz1hKGkpJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKGkpKX0sNTExMjooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoMjMwOSksaT1yKDI1OTcpLHM9cig5NzExKSxvPXIoNjI5MyksYz1yKDMzMDcpLGw9bi5TeW1ib2wsaD1hKCJ3a3MiKSx1PWM/bC5mb3J8fGw6bCYmbC53aXRob3V0U2V0dGVyfHxzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShoLGUpfHwoaFtlXT1vJiZpKGwsZSk/bFtlXTp1KCJTeW1ib2wuIitlKSksaFtlXX19LDEzNjE6ZT0+e2UuZXhwb3J0cz0iXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LDkxOTE6KGUsdCxyKT0+e3ZhciBuPXIoNTAwNSksYT1yKDI1OTcpLGk9cig4ODgwKSxzPXIoNzk3Niksbz1yKDc2NzQpLGM9cig5OTIwKSxsPXIoMjYyNiksaD1yKDk1ODcpLHU9cig2Mjc3KSxkPXIoODM0MCksZj1yKDUzOTIpLGc9cig5NzgxKSxwPXIoMTkxMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG0pe3ZhciBiPSJzdGFja1RyYWNlTGltaXQiLHk9bT8yOjEsdz1lLnNwbGl0KCIuIiksdj13W3cubGVuZ3RoLTFdLHg9bi5hcHBseShudWxsLHcpO2lmKHgpe3ZhciBTPXgucHJvdG90eXBlO2lmKCFwJiZhKFMsImNhdXNlIikmJmRlbGV0ZSBTLmNhdXNlLCFyKXJldHVybiB4O3ZhciBBPW4oIkVycm9yIiksaz10KChmdW5jdGlvbihlLHQpe3ZhciByPXUobT90OmUsdm9pZCAwKSxuPW0/bmV3IHgoZSk6bmV3IHg7cmV0dXJuIHZvaWQgMCE9PXImJmkobiwibWVzc2FnZSIsciksZihuLGssbi5zdGFjaywyKSx0aGlzJiZzKFMsdGhpcykmJmgobix0aGlzLGspLGFyZ3VtZW50cy5sZW5ndGg+eSYmZChuLGFyZ3VtZW50c1t5XSksbn0pKTtpZihrLnByb3RvdHlwZT1TLCJFcnJvciIhPT12P28/byhrLEEpOmMoayxBLHtuYW1lOiEwfSk6ZyYmYiBpbiB4JiYobChrLHgsYiksbChrLHgsInByZXBhcmVTdGFja1RyYWNlIikpLGMoayx4KSwhcCl0cnl7Uy5uYW1lIT09diYmaShTLCJuYW1lIix2KSxTLmNvbnN0cnVjdG9yPWt9Y2F0Y2goZSl7fXJldHVybiBrfX19LDgyNjQ6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc4NTQpLGk9cigzMzMxKSxzPXIoNjM0MCksbz0iQXJyYXlCdWZmZXIiLGM9aVtvXTtuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOmFbb10hPT1jfSx7QXJyYXlCdWZmZXI6Y30pLHMobyl9LDk1NzU6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDE0NzApLGk9cig3MjkzKSxzPXIoMzMzMSksbz1yKDk2NzApLGM9cigxNDAwKSxsPXIoNzQ2NiksaD1yKDY3MDcpLHU9cy5BcnJheUJ1ZmZlcixkPXMuRGF0YVZpZXcsZj1kLnByb3RvdHlwZSxnPWEodS5wcm90b3R5cGUuc2xpY2UpLHA9YShmLmdldFVpbnQ4KSxtPWEoZi5zZXRVaW50OCk7bih7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITAsdW5zYWZlOiEwLGZvcmNlZDppKChmdW5jdGlvbigpe3JldHVybiFuZXcgdSgyKS5zbGljZSgxLHZvaWQgMCkuYnl0ZUxlbmd0aH0pKX0se3NsaWNlOmZ1bmN0aW9uKGUsdCl7aWYoZyYmdm9pZCAwPT09dClyZXR1cm4gZyhvKHRoaXMpLGUpO2Zvcih2YXIgcj1vKHRoaXMpLmJ5dGVMZW5ndGgsbj1jKGUsciksYT1jKHZvaWQgMD09PXQ/cjp0LHIpLGk9bmV3KGgodGhpcyx1KSkobChhLW4pKSxzPW5ldyBkKHRoaXMpLGY9bmV3IGQoaSksYj0wO248YTspbShmLGIrKyxwKHMsbisrKSk7cmV0dXJuIGl9fSl9LDIyNjI6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc5MDgpLGk9cig2MjQ0KSxzPXIoOTMwMyksbz1yKDEyMjMpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7YXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YSh0aGlzKSxyPWkodCksbj1zKGUpLG89bj49MD9uOnIrbjtyZXR1cm4gbzwwfHxvPj1yP3ZvaWQgMDp0W29dfX0pLG8oImF0Iil9LDcyODc6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDk2NzEpLmZpbmRMYXN0SW5kZXgsaT1yKDEyMjMpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7ZmluZExhc3RJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGkoImZpbmRMYXN0SW5kZXgiKX0sNzYzNTooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoOTY3MSkuZmluZExhc3QsaT1yKDEyMjMpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwfSx7ZmluZExhc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxpKCJmaW5kTGFzdCIpfSw0OTQ0OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cig2NzkwKSxpPXIoNzkwOCkscz1yKDYyNDQpLG89cig5MzAzKSxjPXIoNTQxNyk7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtmbGF0OmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLHQ9aSh0aGlzKSxyPXModCksbj1jKHQsMCk7cmV0dXJuIG4ubGVuZ3RoPWEobix0LHQsciwwLHZvaWQgMD09PWU/MTpvKGUpKSxufX0pfSw2Njk5OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigxMzE4KS5pbmNsdWRlcyxpPXIoNzI5Mykscz1yKDEyMjMpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDppKChmdW5jdGlvbigpe3JldHVybiFBcnJheSgxKS5pbmNsdWRlcygpfSkpfSx7aW5jbHVkZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxzKCJpbmNsdWRlcyIpfSw2OTkyOihlLHQscik9Pnt2YXIgbj1yKDU2NTYpLGE9cigxMjIzKSxpPXIoNzQ5Nykscz1yKDk5MDkpLG89cigzMDcwKS5mLGM9cigxNjU2KSxsPXIoNjE3OCksaD1yKDE5MTMpLHU9cig5NzgxKSxkPSJBcnJheSBJdGVyYXRvciIsZj1zLnNldCxnPXMuZ2V0dGVyRm9yKGQpO2UuZXhwb3J0cz1jKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKGUsdCl7Zih0aGlzLHt0eXBlOmQsdGFyZ2V0Om4oZSksaW5kZXg6MCxraW5kOnR9KX0pLChmdW5jdGlvbigpe3ZhciBlPWcodGhpcyksdD1lLnRhcmdldCxyPWUua2luZCxuPWUuaW5kZXgrKztyZXR1cm4hdHx8bj49dC5sZW5ndGg/KGUudGFyZ2V0PXZvaWQgMCxsKHZvaWQgMCwhMCkpOmwoImtleXMiPT1yP246InZhbHVlcyI9PXI/dFtuXTpbbix0W25dXSwhMSl9KSwidmFsdWVzIik7dmFyIHA9aS5Bcmd1bWVudHM9aS5BcnJheTtpZihhKCJrZXlzIiksYSgidmFsdWVzIiksYSgiZW50cmllcyIpLCFoJiZ1JiYidmFsdWVzIiE9PXAubmFtZSl0cnl7byhwLCJuYW1lIix7dmFsdWU6InZhbHVlcyJ9KX1jYXRjaChlKXt9fSw3NjU4OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cig3OTA4KSxpPXIoNjI0NCkscz1yKDM2NTgpLG89cig3MjA3KTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpyKDcyOTMpKChmdW5jdGlvbigpe3JldHVybiA0Mjk0OTY3Mjk3IT09W10ucHVzaC5jYWxsKHtsZW5ndGg6NDI5NDk2NzI5Nn0sMSl9KSl8fCFmdW5jdGlvbigpe3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sImxlbmd0aCIse3dyaXRhYmxlOiExfSkucHVzaCgpfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se3B1c2g6ZnVuY3Rpb24oZSl7dmFyIHQ9YSh0aGlzKSxyPWkodCksbj1hcmd1bWVudHMubGVuZ3RoO28ocituKTtmb3IodmFyIGM9MDtjPG47YysrKXRbcl09YXJndW1lbnRzW2NdLHIrKztyZXR1cm4gcyh0LHIpLHJ9fSl9LDU4Mjc6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDM2NzEpLmxlZnQsaT1yKDkzNDEpLHM9cig3MzkyKTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IXIoNTI2OCkmJnM+NzkmJnM8ODN8fCFpKCJyZWR1Y2UiKX0se3JlZHVjZTpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiBhKHRoaXMsZSx0LHQ+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sMjcwNzooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoMTcwMiksaT1yKDk2NjIpLHM9cig3OTA4KSxvPXIoNjI0NCksYz1yKDUxMTcpLGw9cigxMzQwKSxoPXIoNzI5MyksdT1yKDQzNjIpLGQ9cig5MzQxKSxmPXIoODg4NiksZz1yKDI1NikscD1yKDczOTIpLG09cig4MDA4KSxiPVtdLHk9YShiLnNvcnQpLHc9YShiLnB1c2gpLHY9aCgoZnVuY3Rpb24oKXtiLnNvcnQodm9pZCAwKX0pKSx4PWgoKGZ1bmN0aW9uKCl7Yi5zb3J0KG51bGwpfSkpLFM9ZCgic29ydCIpLEE9IWgoKGZ1bmN0aW9uKCl7aWYocClyZXR1cm4gcDw3MDtpZighKGYmJmY+Mykpe2lmKGcpcmV0dXJuITA7aWYobSlyZXR1cm4gbTw2MDM7dmFyIGUsdCxyLG4sYT0iIjtmb3IoZT02NTtlPDc2O2UrKyl7c3dpdGNoKHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKSxlKXtjYXNlIDY2OmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDcyOnI9MzticmVhaztjYXNlIDY4OmNhc2UgNzE6cj00O2JyZWFrO2RlZmF1bHQ6cj0yfWZvcihuPTA7bjw0NztuKyspYi5wdXNoKHtrOnQrbix2OnJ9KX1mb3IoYi5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiB0LnYtZS52fSkpLG49MDtuPGIubGVuZ3RoO24rKyl0PWJbbl0uay5jaGFyQXQoMCksYS5jaGFyQXQoYS5sZW5ndGgtMSkhPT10JiYoYSs9dCk7cmV0dXJuIkRHQkVGSEFDSUpLIiE9PWF9fSkpO24oe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp2fHwheHx8IVN8fCFBfSx7c29ydDpmdW5jdGlvbihlKXt2b2lkIDAhPT1lJiZpKGUpO3ZhciB0PXModGhpcyk7aWYoQSlyZXR1cm4gdm9pZCAwPT09ZT95KHQpOnkodCxlKTt2YXIgcixuLGE9W10saD1vKHQpO2ZvcihuPTA7bjxoO24rKyluIGluIHQmJncoYSx0W25dKTtmb3IodShhLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiB2b2lkIDA9PT1yPy0xOnZvaWQgMD09PXQ/MTp2b2lkIDAhPT1lPytlKHQscil8fDA6bCh0KT5sKHIpPzE6LTF9fShlKSkscj1vKGEpLG49MDtuPHI7KXRbbl09YVtuKytdO2Zvcig7bjxoOyljKHQsbisrKTtyZXR1cm4gdH19KX0sMzc5MjooZSx0LHIpPT57cigxMjIzKSgiZmxhdCIpfSw1NDE6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc5MDgpLGk9cig2MjQ0KSxzPXIoMzY1OCksbz1yKDUxMTcpLGM9cig3MjA3KTtuKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDoxIT09W10udW5zaGlmdCgwKXx8IWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS51bnNoaWZ0KCl9Y2F0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBUeXBlRXJyb3J9fSgpfSx7dW5zaGlmdDpmdW5jdGlvbihlKXt2YXIgdD1hKHRoaXMpLHI9aSh0KSxuPWFyZ3VtZW50cy5sZW5ndGg7aWYobil7YyhyK24pO2Zvcih2YXIgbD1yO2wtLTspe3ZhciBoPWwrbjtsIGluIHQ/dFtoXT10W2xdOm8odCxoKX1mb3IodmFyIHU9MDt1PG47dSsrKXRbdV09YXJndW1lbnRzW3VdfXJldHVybiBzKHQscituKX19KX0sNTU4MTooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoMTU3MiksaT1yKDU2NTYpLHM9QXJyYXk7bih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHt3aXRoOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoaSh0aGlzKSxzLGUsdCl9fSl9LDE3MDM6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc4NTQpLGk9cigyMTA0KSxzPXIoOTE5MSksbz0iV2ViQXNzZW1ibHkiLGM9YVtvXSxsPTchPT1FcnJvcigiZSIse2NhdXNlOjd9KS5jYXVzZSxoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cltlXT1zKGUsdCxsKSxuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6MSxmb3JjZWQ6bH0scil9LHU9ZnVuY3Rpb24oZSx0KXtpZihjJiZjW2VdKXt2YXIgcj17fTtyW2VdPXMobysiLiIrZSx0LGwpLG4oe3RhcmdldDpvLHN0YXQ6ITAsY29uc3RydWN0b3I6ITAsYXJpdHk6MSxmb3JjZWQ6bH0scil9fTtoKCJFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiRXZhbEVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxoKCJSYW5nZUVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSxoKCJSZWZlcmVuY2VFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiU3ludGF4RXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLGgoIlR5cGVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksaCgiVVJJRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpLHUoIkNvbXBpbGVFcnJvciIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRoaXMsYXJndW1lbnRzKX19KSksdSgiTGlua0Vycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKGUsdGhpcyxhcmd1bWVudHMpfX0pKSx1KCJSdW50aW1lRXJyb3IiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkoZSx0aGlzLGFyZ3VtZW50cyl9fSkpfSw1ODM3OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cig3ODU0KTtuKHtnbG9iYWw6ITAsZm9yY2VkOmEuZ2xvYmFsVGhpcyE9PWF9LHtnbG9iYWxUaGlzOmF9KX0sODg2MjooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNTAwNSksaT1yKDIxMDQpLHM9cig2OTE2KSxvPXIoMTcwMiksYz1yKDcyOTMpLGw9cig2MTQpLGg9cigyMTkwKSx1PXIoMjA2KSxkPXIoODA0NCksZj1yKDYyOTMpLGc9U3RyaW5nLHA9YSgiSlNPTiIsInN0cmluZ2lmeSIpLG09bygvLi8uZXhlYyksYj1vKCIiLmNoYXJBdCkseT1vKCIiLmNoYXJDb2RlQXQpLHc9bygiIi5yZXBsYWNlKSx2PW8oMS4udG9TdHJpbmcpLHg9L1tcdUQ4MDAtXHVERkZGXS9nLFM9L15bXHVEODAwLVx1REJGRl0kLyxBPS9eW1x1REMwMC1cdURGRkZdJC8saz0hZnx8YygoZnVuY3Rpb24oKXt2YXIgZT1hKCJTeW1ib2wiKSgpO3JldHVybiJbbnVsbF0iIT1wKFtlXSl8fCJ7fSIhPXAoe2E6ZX0pfHwie30iIT1wKE9iamVjdChlKSl9KSksQz1jKChmdW5jdGlvbigpe3JldHVybiciXFx1ZGYwNlxcdWQ4MzQiJyE9PXAoIlx1ZGYwNlx1ZDgzNCIpfHwnIlxcdWRlYWQiJyE9PXAoIlx1ZGVhZCIpfSkpLE89ZnVuY3Rpb24oZSx0KXt2YXIgcj11KGFyZ3VtZW50cyksbj1kKHQpO2lmKGwobil8fHZvaWQgMCE9PWUmJiFoKGUpKXJldHVybiByWzFdPWZ1bmN0aW9uKGUsdCl7aWYobChuKSYmKHQ9cyhuLHRoaXMsZyhlKSx0KSksIWgodCkpcmV0dXJuIHR9LGkocCxudWxsLHIpfSxGPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1iKHIsdC0xKSxhPWIocix0KzEpO3JldHVybiBtKFMsZSkmJiFtKEEsYSl8fG0oQSxlKSYmIW0oUyxuKT8iXFx1Iit2KHkoZSwwKSwxNik6ZX07cCYmbih7dGFyZ2V0OiJKU09OIixzdGF0OiEwLGFyaXR5OjMsZm9yY2VkOmt8fEN9LHtzdHJpbmdpZnk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXUoYXJndW1lbnRzKSxhPWkoaz9POnAsbnVsbCxuKTtyZXR1cm4gQyYmInN0cmluZyI9PXR5cGVvZiBhP3coYSx4LEYpOmF9fSl9LDU0Mzg6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1NYXRoLmh5cG90LGk9TWF0aC5hYnMscz1NYXRoLnNxcnQ7bih7dGFyZ2V0OiJNYXRoIixzdGF0OiEwLGFyaXR5OjIsZm9yY2VkOiEhYSYmYSgxLzAsTmFOKSE9PTEvMH0se2h5cG90OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sYT0wLG89MCxjPWFyZ3VtZW50cy5sZW5ndGgsbD0wO288YzspbDwocj1pKGFyZ3VtZW50c1tvKytdKSk/KGE9YSoobj1sL3IpKm4rMSxsPXIpOmErPXI+MD8obj1yL2wpKm46cjtyZXR1cm4gbD09PTEvMD8xLzA6bCpzKGEpfX0pfSw2OTc3OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigxNzAyKSxpPXIoOTMwMykscz1yKDg2Myksbz1yKDg0MTUpLGM9cig3MjkzKSxsPVJhbmdlRXJyb3IsaD1TdHJpbmcsdT1NYXRoLmZsb29yLGQ9YShvKSxmPWEoIiIuc2xpY2UpLGc9YSgxLi50b0ZpeGVkKSxwPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gMD09PXQ/cjp0JTI9PTE/cChlLHQtMSxyKmUpOnAoZSplLHQvMixyKX0sbT1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPS0xLGE9cjsrK248NjspYSs9dCplW25dLGVbbl09YSUxZTcsYT11KGEvMWU3KX0sYj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj02LG49MDstLXI+PTA7KW4rPWVbcl0sZVtyXT11KG4vdCksbj1uJXQqMWU3fSx5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD02LHI9IiI7LS10Pj0wOylpZigiIiE9PXJ8fDA9PT10fHwwIT09ZVt0XSl7dmFyIG49aChlW3RdKTtyPSIiPT09cj9uOnIrZCgiMCIsNy1uLmxlbmd0aCkrbn1yZXR1cm4gcn07bih7dGFyZ2V0OiJOdW1iZXIiLHByb3RvOiEwLGZvcmNlZDpjKChmdW5jdGlvbigpe3JldHVybiIwLjAwMCIhPT1nKDhlLTUsMyl8fCIxIiE9PWcoLjksMCl8fCIxLjI1IiE9PWcoMS4yNTUsMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PWcoMHhkZTBiNmIzYTc2NDAwODAsMCl9KSl8fCFjKChmdW5jdGlvbigpe2coe30pfSkpfSx7dG9GaXhlZDpmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxvPXModGhpcyksYz1pKGUpLHU9WzAsMCwwLDAsMCwwXSxnPSIiLHc9IjAiO2lmKGM8MHx8Yz4yMCl0aHJvdyBsKCJJbmNvcnJlY3QgZnJhY3Rpb24gZGlnaXRzIik7aWYobyE9bylyZXR1cm4iTmFOIjtpZihvPD0tMWUyMXx8bz49MWUyMSlyZXR1cm4gaChvKTtpZihvPDAmJihnPSItIixvPS1vKSxvPjFlLTIxKWlmKHI9KHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAscj1lO3I+PTQwOTY7KXQrPTEyLHIvPTQwOTY7Zm9yKDtyPj0yOyl0Kz0xLHIvPTI7cmV0dXJuIHR9KG8qcCgyLDY5LDEpKS02OSk8MD9vKnAoMiwtdCwxKTpvL3AoMix0LDEpLHIqPTQ1MDM1OTk2MjczNzA0OTYsKHQ9NTItdCk+MCl7Zm9yKG0odSwwLHIpLG49YztuPj03OyltKHUsMWU3LDApLG4tPTc7Zm9yKG0odSxwKDEwLG4sMSksMCksbj10LTE7bj49MjM7KWIodSwxPDwyMyksbi09MjM7Yih1LDE8PG4pLG0odSwxLDEpLGIodSwyKSx3PXkodSl9ZWxzZSBtKHUsMCxyKSxtKHUsMTw8LXQsMCksdz15KHUpK2QoIjAiLGMpO3JldHVybiBjPjA/ZysoKGE9dy5sZW5ndGgpPD1jPyIwLiIrZCgiMCIsYy1hKSt3OmYodywwLGEtYykrIi4iK2YodyxhLWMpKTpnK3d9fSl9LDk2MDE6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDE1NzQpO24oe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGFyaXR5OjIsZm9yY2VkOk9iamVjdC5hc3NpZ24hPT1hfSx7YXNzaWduOmF9KX0sNjMxNDooZSx0LHIpPT57cigyMTA5KSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITB9LHtoYXNPd246cigyNTk3KX0pfSw0Njc4OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigyODE0KTtuKHtnbG9iYWw6ITAsZm9yY2VkOnBhcnNlRmxvYXQhPWF9LHtwYXJzZUZsb2F0OmF9KX0sMTA1ODooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoMzAwOSk7bih7Z2xvYmFsOiEwLGZvcmNlZDpwYXJzZUludCE9YX0se3BhcnNlSW50OmF9KX0sNzkyMjooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNjkxNiksaT1yKDk2NjIpLHM9cig4NTIzKSxvPXIoMjUzNCksYz1yKDQwOCk7bih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDpyKDYxMil9LHthbGxTZXR0bGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1zLmYodCksbj1yLnJlc29sdmUsbD1yLnJlamVjdCxoPW8oKGZ1bmN0aW9uKCl7dmFyIHI9aSh0LnJlc29sdmUpLHM9W10sbz0wLGw9MTtjKGUsKGZ1bmN0aW9uKGUpe3ZhciBpPW8rKyxjPSExO2wrKyxhKHIsdCxlKS50aGVuKChmdW5jdGlvbihlKXtjfHwoYz0hMCxzW2ldPXtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6ZX0sLS1sfHxuKHMpKX0pLChmdW5jdGlvbihlKXtjfHwoYz0hMCxzW2ldPXtzdGF0dXM6InJlamVjdGVkIixyZWFzb246ZX0sLS1sfHxuKHMpKX0pKX0pKSwtLWx8fG4ocyl9KSk7cmV0dXJuIGguZXJyb3ImJmwoaC52YWx1ZSksci5wcm9taXNlfX0pfSw4MjE6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDY5MTYpLGk9cig5NjYyKSxzPXIoODUyMyksbz1yKDI1MzQpLGM9cig0MDgpO24oe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6cig2MTIpfSx7YWxsOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj1zLmYodCksbj1yLnJlc29sdmUsbD1yLnJlamVjdCxoPW8oKGZ1bmN0aW9uKCl7dmFyIHI9aSh0LnJlc29sdmUpLHM9W10sbz0wLGg9MTtjKGUsKGZ1bmN0aW9uKGUpe3ZhciBpPW8rKyxjPSExO2grKyxhKHIsdCxlKS50aGVuKChmdW5jdGlvbihlKXtjfHwoYz0hMCxzW2ldPWUsLS1ofHxuKHMpKX0pLGwpfSkpLC0taHx8bihzKX0pKTtyZXR1cm4gaC5lcnJvciYmbChoLnZhbHVlKSxyLnByb21pc2V9fSl9LDQxNjQ6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDE5MTMpLGk9cigzNzAyKS5DT05TVFJVQ1RPUixzPXIoMjQ5Miksbz1yKDUwMDUpLGM9cig2MTQpLGw9cig4MDUyKSxoPXMmJnMucHJvdG90eXBlO2lmKG4oe3RhcmdldDoiUHJvbWlzZSIscHJvdG86ITAsZm9yY2VkOmkscmVhbDohMH0se2NhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGUpfX0pLCFhJiZjKHMpKXt2YXIgdT1vKCJQcm9taXNlIikucHJvdG90eXBlLmNhdGNoO2guY2F0Y2ghPT11JiZsKGgsImNhdGNoIix1LHt1bnNhZmU6ITB9KX19LDM0MDE6KGUsdCxyKT0+e3ZhciBuLGEsaSxzPXIoMjEwOSksbz1yKDE5MTMpLGM9cig1MjY4KSxsPXIoNzg1NCksaD1yKDY5MTYpLHU9cig4MDUyKSxkPXIoNzY3NCksZj1yKDgwMDMpLGc9cig2MzQwKSxwPXIoOTY2MiksbT1yKDYxNCksYj1yKDExMSkseT1yKDU3ODcpLHc9cig2NzA3KSx2PXIoMjYxKS5zZXQseD1yKDU5NDgpLFM9cig4NDIpLEE9cigyNTM0KSxrPXIoODU3MiksQz1yKDk5MDkpLE89cigyNDkyKSxGPXIoMzcwMiksST1yKDg1MjMpLFQ9IlByb21pc2UiLE09Ri5DT05TVFJVQ1RPUixFPUYuUkVKRUNUSU9OX0VWRU5ULFA9Ri5TVUJDTEFTU0lORyxSPUMuZ2V0dGVyRm9yKFQpLE49Qy5zZXQsRD1PJiZPLnByb3RvdHlwZSxCPU8sTD1ELF89bC5UeXBlRXJyb3Isaj1sLmRvY3VtZW50LFU9bC5wcm9jZXNzLCQ9SS5mLFg9JCxIPSEhKGomJmouY3JlYXRlRXZlbnQmJmwuZGlzcGF0Y2hFdmVudCkscT0idW5oYW5kbGVkcmVqZWN0aW9uIix6PWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEoIWIoZSl8fCFtKHQ9ZS50aGVuKSkmJnR9LEc9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGEsaT10LnZhbHVlLHM9MT09dC5zdGF0ZSxvPXM/ZS5vazplLmZhaWwsYz1lLnJlc29sdmUsbD1lLnJlamVjdCx1PWUuZG9tYWluO3RyeXtvPyhzfHwoMj09PXQucmVqZWN0aW9uJiZKKHQpLHQucmVqZWN0aW9uPTEpLCEwPT09bz9yPWk6KHUmJnUuZW50ZXIoKSxyPW8oaSksdSYmKHUuZXhpdCgpLGE9ITApKSxyPT09ZS5wcm9taXNlP2woXygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToobj16KHIpKT9oKG4scixjLGwpOmMocikpOmwoaSl9Y2F0Y2goZSl7dSYmIWEmJnUuZXhpdCgpLGwoZSl9fSxXPWZ1bmN0aW9uKGUsdCl7ZS5ub3RpZmllZHx8KGUubm90aWZpZWQ9ITAseCgoZnVuY3Rpb24oKXtmb3IodmFyIHIsbj1lLnJlYWN0aW9ucztyPW4uZ2V0KCk7KUcocixlKTtlLm5vdGlmaWVkPSExLHQmJiFlLnJlamVjdGlvbiYmSyhlKX0pKSl9LFY9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGE7SD8oKG49ai5jcmVhdGVFdmVudCgiRXZlbnQiKSkucHJvbWlzZT10LG4ucmVhc29uPXIsbi5pbml0RXZlbnQoZSwhMSwhMCksbC5kaXNwYXRjaEV2ZW50KG4pKTpuPXtwcm9taXNlOnQscmVhc29uOnJ9LCFFJiYoYT1sWyJvbiIrZV0pP2Eobik6ZT09PXEmJlMoIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbiIscil9LEs9ZnVuY3Rpb24oZSl7aCh2LGwsKGZ1bmN0aW9uKCl7dmFyIHQscj1lLmZhY2FkZSxuPWUudmFsdWU7aWYoWShlKSYmKHQ9QSgoZnVuY3Rpb24oKXtjP1UuZW1pdCgidW5oYW5kbGVkUmVqZWN0aW9uIixuLHIpOlYocSxyLG4pfSkpLGUucmVqZWN0aW9uPWN8fFkoZSk/MjoxLHQuZXJyb3IpKXRocm93IHQudmFsdWV9KSl9LFk9ZnVuY3Rpb24oZSl7cmV0dXJuIDEhPT1lLnJlamVjdGlvbiYmIWUucGFyZW50fSxKPWZ1bmN0aW9uKGUpe2godixsLChmdW5jdGlvbigpe3ZhciB0PWUuZmFjYWRlO2M/VS5lbWl0KCJyZWplY3Rpb25IYW5kbGVkIix0KTpWKCJyZWplY3Rpb25oYW5kbGVkIix0LGUudmFsdWUpfSkpfSxaPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7ZSh0LG4scil9fSxRPWZ1bmN0aW9uKGUsdCxyKXtlLmRvbmV8fChlLmRvbmU9ITAsciYmKGU9ciksZS52YWx1ZT10LGUuc3RhdGU9MixXKGUsITApKX0sZWU9ZnVuY3Rpb24oZSx0LHIpe2lmKCFlLmRvbmUpe2UuZG9uZT0hMCxyJiYoZT1yKTt0cnl7aWYoZS5mYWNhZGU9PT10KXRocm93IF8oIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmIik7dmFyIG49eih0KTtuP3goKGZ1bmN0aW9uKCl7dmFyIHI9e2RvbmU6ITF9O3RyeXtoKG4sdCxaKGVlLHIsZSksWihRLHIsZSkpfWNhdGNoKHQpe1Eocix0LGUpfX0pKTooZS52YWx1ZT10LGUuc3RhdGU9MSxXKGUsITEpKX1jYXRjaCh0KXtRKHtkb25lOiExfSx0LGUpfX19O2lmKE0mJihMPShCPWZ1bmN0aW9uKGUpe3kodGhpcyxMKSxwKGUpLGgobix0aGlzKTt2YXIgdD1SKHRoaXMpO3RyeXtlKFooZWUsdCksWihRLHQpKX1jYXRjaChlKXtRKHQsZSl9fSkucHJvdG90eXBlLChuPWZ1bmN0aW9uKGUpe04odGhpcyx7dHlwZTpULGRvbmU6ITEsbm90aWZpZWQ6ITEscGFyZW50OiExLHJlYWN0aW9uczpuZXcgayxyZWplY3Rpb246ITEsc3RhdGU6MCx2YWx1ZTp2b2lkIDB9KX0pLnByb3RvdHlwZT11KEwsInRoZW4iLChmdW5jdGlvbihlLHQpe3ZhciByPVIodGhpcyksbj0kKHcodGhpcyxCKSk7cmV0dXJuIHIucGFyZW50PSEwLG4ub2s9IW0oZSl8fGUsbi5mYWlsPW0odCkmJnQsbi5kb21haW49Yz9VLmRvbWFpbjp2b2lkIDAsMD09ci5zdGF0ZT9yLnJlYWN0aW9ucy5hZGQobik6eCgoZnVuY3Rpb24oKXtHKG4scil9KSksbi5wcm9taXNlfSkpLGE9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgbix0PVIoZSk7dGhpcy5wcm9taXNlPWUsdGhpcy5yZXNvbHZlPVooZWUsdCksdGhpcy5yZWplY3Q9WihRLHQpfSxJLmY9JD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUJ8fHZvaWQgMD09PWU/bmV3IGEoZSk6WChlKX0sIW8mJm0oTykmJkQhPT1PYmplY3QucHJvdG90eXBlKSl7aT1ELnRoZW4sUHx8dShELCJ0aGVuIiwoZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3JldHVybiBuZXcgQigoZnVuY3Rpb24oZSx0KXtoKGkscixlLHQpfSkpLnRoZW4oZSx0KX0pLHt1bnNhZmU6ITB9KTt0cnl7ZGVsZXRlIEQuY29uc3RydWN0b3J9Y2F0Y2goZSl7fWQmJmQoRCxMKX1zKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxmb3JjZWQ6TX0se1Byb21pc2U6Qn0pLGYoQixULCExLCEwKSxnKFQpfSw3NzI3OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigxOTEzKSxpPXIoMjQ5Mikscz1yKDcyOTMpLG89cig1MDA1KSxjPXIoNjE0KSxsPXIoNjcwNyksaD1yKDk0NzgpLHU9cig4MDUyKSxkPWkmJmkucHJvdG90eXBlO2lmKG4oe3RhcmdldDoiUHJvbWlzZSIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6ISFpJiZzKChmdW5jdGlvbigpe2QuZmluYWxseS5jYWxsKHt0aGVuOmZ1bmN0aW9uKCl7fX0sKGZ1bmN0aW9uKCl7fSkpfSkpfSx7ZmluYWxseTpmdW5jdGlvbihlKXt2YXIgdD1sKHRoaXMsbygiUHJvbWlzZSIpKSxyPWMoZSk7cmV0dXJuIHRoaXMudGhlbihyP2Z1bmN0aW9uKHIpe3JldHVybiBoKHQsZSgpKS50aGVuKChmdW5jdGlvbigpe3JldHVybiByfSkpfTplLHI/ZnVuY3Rpb24ocil7cmV0dXJuIGgodCxlKCkpLnRoZW4oKGZ1bmN0aW9uKCl7dGhyb3cgcn0pKX06ZSl9fSksIWEmJmMoaSkpe3ZhciBmPW8oIlByb21pc2UiKS5wcm90b3R5cGUuZmluYWxseTtkLmZpbmFsbHkhPT1mJiZ1KGQsImZpbmFsbHkiLGYse3Vuc2FmZTohMH0pfX0sODY3NDooZSx0LHIpPT57cigzNDAxKSxyKDgyMSkscig0MTY0KSxyKDYwMjcpLHIoNjgzKSxyKDYyOTQpfSw2MDI3OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cig2OTE2KSxpPXIoOTY2Mikscz1yKDg1MjMpLG89cigyNTM0KSxjPXIoNDA4KTtuKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITAsZm9yY2VkOnIoNjEyKX0se3JhY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXMuZih0KSxuPXIucmVqZWN0LGw9bygoZnVuY3Rpb24oKXt2YXIgcz1pKHQucmVzb2x2ZSk7YyhlLChmdW5jdGlvbihlKXthKHMsdCxlKS50aGVuKHIucmVzb2x2ZSxuKX0pKX0pKTtyZXR1cm4gbC5lcnJvciYmbihsLnZhbHVlKSxyLnByb21pc2V9fSl9LDY4MzooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNjkxNiksaT1yKDg1MjMpO24oe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6cigzNzAyKS5DT05TVFJVQ1RPUn0se3JlamVjdDpmdW5jdGlvbihlKXt2YXIgdD1pLmYodGhpcyk7cmV0dXJuIGEodC5yZWplY3Qsdm9pZCAwLGUpLHQucHJvbWlzZX19KX0sNjI5NDooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNTAwNSksaT1yKDE5MTMpLHM9cigyNDkyKSxvPXIoMzcwMikuQ09OU1RSVUNUT1IsYz1yKDk0NzgpLGw9YSgiUHJvbWlzZSIpLGg9aSYmIW87bih7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwLGZvcmNlZDppfHxvfSx7cmVzb2x2ZTpmdW5jdGlvbihlKXtyZXR1cm4gYyhoJiZ0aGlzPT09bD9zOnRoaXMsZSl9fSl9LDEyOTk6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc4NTQpLGk9cig4MDAzKTtuKHtnbG9iYWw6ITB9LHtSZWZsZWN0Ont9fSksaShhLlJlZmxlY3QsIlJlZmxlY3QiLCEwKX0sNDYwMzooZSx0LHIpPT57dmFyIG49cig5NzgxKSxhPXIoNzg1NCksaT1yKDE3MDIpLHM9cig0NzA1KSxvPXIoOTU4NyksYz1yKDg4ODApLGw9cig4MDA2KS5mLGg9cig3OTc2KSx1PXIoNzg1MCksZD1yKDEzNDApLGY9cig0NzA2KSxnPXIoMjk5OSkscD1yKDI2MjYpLG09cig4MDUyKSxiPXIoNzI5MykseT1yKDI1OTcpLHc9cig5OTA5KS5lbmZvcmNlLHY9cig2MzQwKSx4PXIoNTExMiksUz1yKDk0NDEpLEE9cig3MTY4KSxrPXgoIm1hdGNoIiksQz1hLlJlZ0V4cCxPPUMucHJvdG90eXBlLEY9YS5TeW50YXhFcnJvcixJPWkoTy5leGVjKSxUPWkoIiIuY2hhckF0KSxNPWkoIiIucmVwbGFjZSksRT1pKCIiLmluZGV4T2YpLFA9aSgiIi5zbGljZSksUj0vXlw/PFteXHNcZCEjJSYqKzw9PkBeXVteXHMhIyUmKis8PT5AXl0qPi8sTj0vYS9nLEQ9L2EvZyxCPW5ldyBDKE4pIT09TixMPWcuTUlTU0VEX1NUSUNLWSxfPWcuVU5TVVBQT1JURURfWTtpZihzKCJSZWdFeHAiLG4mJighQnx8THx8U3x8QXx8YigoZnVuY3Rpb24oKXtyZXR1cm4gRFtrXT0hMSxDKE4pIT1OfHxDKEQpPT1EfHwiL2EvaSIhPUMoTiwiaSIpfSkpKSkpe2Zvcih2YXIgaj1mdW5jdGlvbihlLHQpe3ZhciByLG4sYSxpLHMsbCxnPWgoTyx0aGlzKSxwPXUoZSksbT12b2lkIDA9PT10LGI9W10sdj1lO2lmKCFnJiZwJiZtJiZlLmNvbnN0cnVjdG9yPT09ailyZXR1cm4gZTtpZigocHx8aChPLGUpKSYmKGU9ZS5zb3VyY2UsbSYmKHQ9Zih2KSkpLGU9dm9pZCAwPT09ZT8iIjpkKGUpLHQ9dm9pZCAwPT09dD8iIjpkKHQpLHY9ZSxTJiYiZG90QWxsImluIE4mJihuPSEhdCYmRSh0LCJzIik+LTEpJiYodD1NKHQsL3MvZywiIikpLHI9dCxMJiYic3RpY2t5ImluIE4mJihhPSEhdCYmRSh0LCJ5Iik+LTEpJiZfJiYodD1NKHQsL3kvZywiIikpLEEmJihpPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPWUubGVuZ3RoLG49MCxhPSIiLGk9W10scz17fSxvPSExLGM9ITEsbD0wLGg9IiI7bjw9cjtuKyspe2lmKCJcXCI9PT0odD1UKGUsbikpKXQrPVQoZSwrK24pO2Vsc2UgaWYoIl0iPT09dClvPSExO2Vsc2UgaWYoIW8pc3dpdGNoKCEwKXtjYXNlIlsiPT09dDpvPSEwO2JyZWFrO2Nhc2UiKCI9PT10OkkoUixQKGUsbisxKSkmJihuKz0yLGM9ITApLGErPXQsbCsrO2NvbnRpbnVlO2Nhc2UiPiI9PT10JiZjOmlmKCIiPT09aHx8eShzLGgpKXRocm93IG5ldyBGKCJJbnZhbGlkIGNhcHR1cmUgZ3JvdXAgbmFtZSIpO3NbaF09ITAsaVtpLmxlbmd0aF09W2gsbF0sYz0hMSxoPSIiO2NvbnRpbnVlfWM/aCs9dDphKz10fXJldHVyblthLGldfShlKSxlPWlbMF0sYj1pWzFdKSxzPW8oQyhlLHQpLGc/dGhpczpPLGopLChufHxhfHxiLmxlbmd0aCkmJihsPXcocyksbiYmKGwuZG90QWxsPSEwLGwucmF3PWooZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9ZS5sZW5ndGgsbj0wLGE9IiIsaT0hMTtuPD1yO24rKykiXFwiIT09KHQ9VChlLG4pKT9pfHwiLiIhPT10PygiWyI9PT10P2k9ITA6Il0iPT09dCYmKGk9ITEpLGErPXQpOmErPSJbXFxzXFxTXSI6YSs9dCtUKGUsKytuKTtyZXR1cm4gYX0oZSkscikpLGEmJihsLnN0aWNreT0hMCksYi5sZW5ndGgmJihsLmdyb3Vwcz1iKSksZSE9PXYpdHJ5e2Mocywic291cmNlIiwiIj09PXY/Iig/OikiOnYpfWNhdGNoKGUpe31yZXR1cm4gc30sVT1sKEMpLCQ9MDtVLmxlbmd0aD4kOylwKGosQyxVWyQrK10pO08uY29uc3RydWN0b3I9aixqLnByb3RvdHlwZT1PLG0oYSwiUmVnRXhwIixqLHtjb25zdHJ1Y3RvcjohMH0pfXYoIlJlZ0V4cCIpfSw4NDUwOihlLHQscik9Pnt2YXIgbj1yKDk3ODEpLGE9cig5NDQxKSxpPXIoNDMyNikscz1yKDcwNDUpLG89cig5OTA5KS5nZXQsYz1SZWdFeHAucHJvdG90eXBlLGw9VHlwZUVycm9yO24mJmEmJnMoYywiZG90QWxsIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHRoaXMhPT1jKXtpZigiUmVnRXhwIj09PWkodGhpcykpcmV0dXJuISFvKHRoaXMpLmRvdEFsbDt0aHJvdyBsKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIFJlZ0V4cCByZXF1aXJlZCIpfX19KX0sNDkxNjooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoMjI2MSk7bih7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PWF9LHtleGVjOmF9KX0sMjA4NzooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoOTc4MSksaT1yKDcwNDUpLHM9cig3MDY2KSxvPXIoNzI5MyksYz1uLlJlZ0V4cCxsPWMucHJvdG90eXBlO2EmJm8oKGZ1bmN0aW9uKCl7dmFyIGU9ITA7dHJ5e2MoIi4iLCJkIil9Y2F0Y2godCl7ZT0hMX12YXIgdD17fSxyPSIiLG49ZT8iZGdpbXN5IjoiZ2ltc3kiLGE9ZnVuY3Rpb24oZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcis9biwhMH19KX0saT17ZG90QWxsOiJzIixnbG9iYWw6ImciLGlnbm9yZUNhc2U6ImkiLG11bHRpbGluZToibSIsc3RpY2t5OiJ5In07Zm9yKHZhciBzIGluIGUmJihpLmhhc0luZGljZXM9ImQiKSxpKWEocyxpW3NdKTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsLCJmbGFncyIpLmdldC5jYWxsKHQpIT09bnx8ciE9PW59KSkmJmkobCwiZmxhZ3MiLHtjb25maWd1cmFibGU6ITAsZ2V0OnN9KX0sNzYwMTooZSx0LHIpPT57cig0OTE2KTt2YXIgbixhLGk9cigyMTA5KSxzPXIoNjkxNiksbz1yKDYxNCksYz1yKDk2NzApLGw9cigxMzQwKSxoPShuPSExLChhPS9bYWNdLykuZXhlYz1mdW5jdGlvbigpe3JldHVybiBuPSEwLC8uLy5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sITA9PT1hLnRlc3QoImFiYyIpJiZuKSx1PS8uLy50ZXN0O2koe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6IWh9LHt0ZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWModGhpcykscj1sKGUpLG49dC5leGVjO2lmKCFvKG4pKXJldHVybiBzKHUsdCxyKTt2YXIgYT1zKG4sdCxyKTtyZXR1cm4gbnVsbCE9PWEmJihjKGEpLCEwKX19KX0sOTcxNDooZSx0LHIpPT57dmFyIG49cig2NTMwKS5QUk9QRVIsYT1yKDgwNTIpLGk9cig5NjcwKSxzPXIoMTM0MCksbz1yKDcyOTMpLGM9cig0NzA2KSxsPSJ0b1N0cmluZyIsaD1SZWdFeHAucHJvdG90eXBlW2xdLHU9bygoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWguY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxkPW4mJmgubmFtZSE9bDsodXx8ZCkmJmEoUmVnRXhwLnByb3RvdHlwZSxsLChmdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7cmV0dXJuIi8iK3MoZS5zb3VyY2UpKyIvIitzKGMoZSkpfSkse3Vuc2FmZTohMH0pfSw0NTA2OihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigxNzAyKSxpPXIoNDQ4OCkscz1yKDkzMDMpLG89cigxMzQwKSxjPXIoNzI5MyksbD1hKCIiLmNoYXJBdCk7bih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpjKChmdW5jdGlvbigpe3JldHVybiJcdWQ4NDIiIT09Iu2hgu2+tyIuYXQoLTIpfSkpfSx7YXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9byhpKHRoaXMpKSxyPXQubGVuZ3RoLG49cyhlKSxhPW4+PTA/bjpyK247cmV0dXJuIGE8MHx8YT49cj92b2lkIDA6bCh0LGEpfX0pfSw3ODUyOihlLHQscik9Pnt2YXIgbixhPXIoMjEwOSksaT1yKDE0NzApLHM9cigxMjM2KS5mLG89cig3NDY2KSxjPXIoMTM0MCksbD1yKDM5MjkpLGg9cig0NDg4KSx1PXIoNDk2NCksZD1yKDE5MTMpLGY9aSgiIi5lbmRzV2l0aCksZz1pKCIiLnNsaWNlKSxwPU1hdGgubWluLG09dSgiZW5kc1dpdGgiKTthKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiEoIWQmJiFtJiYobj1zKFN0cmluZy5wcm90b3R5cGUsImVuZHNXaXRoIiksbiYmIW4ud3JpdGFibGUpfHxtKX0se2VuZHNXaXRoOmZ1bmN0aW9uKGUpe3ZhciB0PWMoaCh0aGlzKSk7bChlKTt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxuPXQubGVuZ3RoLGE9dm9pZCAwPT09cj9uOnAobyhyKSxuKSxpPWMoZSk7cmV0dXJuIGY/Zih0LGksYSk6Zyh0LGEtaS5sZW5ndGgsYSk9PT1pfX0pfSwyMDIzOihlLHQscik9Pnt2YXIgbj1yKDIxMDkpLGE9cigxNzAyKSxpPXIoMzkyOSkscz1yKDQ0ODgpLG89cigxMzQwKSxjPXIoNDk2NCksbD1hKCIiLmluZGV4T2YpO24oe3RhcmdldDoiU3RyaW5nIixwcm90bzohMCxmb3JjZWQ6IWMoImluY2x1ZGVzIil9LHtpbmNsdWRlczpmdW5jdGlvbihlKXtyZXR1cm4hIX5sKG8ocyh0aGlzKSksbyhpKGUpKSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LDg3ODM6KGUsdCxyKT0+e3ZhciBuPXIoODcxMCkuY2hhckF0LGE9cigxMzQwKSxpPXIoOTkwOSkscz1yKDE2NTYpLG89cig2MTc4KSxjPSJTdHJpbmcgSXRlcmF0b3IiLGw9aS5zZXQsaD1pLmdldHRlckZvcihjKTtzKFN0cmluZywiU3RyaW5nIiwoZnVuY3Rpb24oZSl7bCh0aGlzLHt0eXBlOmMsc3RyaW5nOmEoZSksaW5kZXg6MH0pfSksKGZ1bmN0aW9uKCl7dmFyIGUsdD1oKHRoaXMpLHI9dC5zdHJpbmcsYT10LmluZGV4O3JldHVybiBhPj1yLmxlbmd0aD9vKHZvaWQgMCwhMCk6KGU9bihyLGEpLHQuaW5kZXgrPWUubGVuZ3RoLG8oZSwhMSkpfSkpfSw0NzIzOihlLHQscik9Pnt2YXIgbj1yKDY5MTYpLGE9cig3MDA3KSxpPXIoOTY3MCkscz1yKDg1NTQpLG89cig3NDY2KSxjPXIoMTM0MCksbD1yKDQ0ODgpLGg9cig4MTczKSx1PXIoMTUzMCksZD1yKDc2NTEpO2EoIm1hdGNoIiwoZnVuY3Rpb24oZSx0LHIpe3JldHVybltmdW5jdGlvbih0KXt2YXIgcj1sKHRoaXMpLGE9cyh0KT92b2lkIDA6aCh0LGUpO3JldHVybiBhP24oYSx0LHIpOm5ldyBSZWdFeHAodClbZV0oYyhyKSl9LGZ1bmN0aW9uKGUpe3ZhciBuPWkodGhpcyksYT1jKGUpLHM9cih0LG4sYSk7aWYocy5kb25lKXJldHVybiBzLnZhbHVlO2lmKCFuLmdsb2JhbClyZXR1cm4gZChuLGEpO3ZhciBsPW4udW5pY29kZTtuLmxhc3RJbmRleD0wO2Zvcih2YXIgaCxmPVtdLGc9MDtudWxsIT09KGg9ZChuLGEpKTspe3ZhciBwPWMoaFswXSk7ZltnXT1wLCIiPT09cCYmKG4ubGFzdEluZGV4PXUoYSxvKG4ubGFzdEluZGV4KSxsKSksZysrfXJldHVybiAwPT09Zz9udWxsOmZ9XX0pKX0sODc1NzooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNjkxNiksaT1yKDE3MDIpLHM9cig0NDg4KSxvPXIoNjE0KSxjPXIoODU1NCksbD1yKDc4NTApLGg9cigxMzQwKSx1PXIoODE3MyksZD1yKDQ3MDYpLGY9cig2NDcpLGc9cig1MTEyKSxwPXIoMTkxMyksbT1nKCJyZXBsYWNlIiksYj1UeXBlRXJyb3IseT1pKCIiLmluZGV4T2YpLHc9aSgiIi5yZXBsYWNlKSx2PWkoIiIuc2xpY2UpLHg9TWF0aC5tYXgsUz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHI+ZS5sZW5ndGg/LTE6IiI9PT10P3I6eShlLHQscil9O24oe3RhcmdldDoiU3RyaW5nIixwcm90bzohMH0se3JlcGxhY2VBbGw6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksZyxBLGssQyxPLEYsST1zKHRoaXMpLFQ9MCxNPTAsRT0iIjtpZighYyhlKSl7aWYoKHI9bChlKSkmJihuPWgocyhkKGUpKSksIX55KG4sImciKSkpdGhyb3cgYigiYC5yZXBsYWNlQWxsYCBkb2VzIG5vdCBhbGxvdyBub24tZ2xvYmFsIHJlZ2V4ZXMiKTtpZihpPXUoZSxtKSlyZXR1cm4gYShpLGUsSSx0KTtpZihwJiZyKXJldHVybiB3KGgoSSksZSx0KX1mb3IoZz1oKEkpLEE9aChlKSwoaz1vKHQpKXx8KHQ9aCh0KSksQz1BLmxlbmd0aCxPPXgoMSxDKSxUPVMoZyxBLDApOy0xIT09VDspRj1rP2godChBLFQsZykpOmYoQSxnLFQsW10sdm9pZCAwLHQpLEUrPXYoZyxNLFQpK0YsTT1UK0MsVD1TKGcsQSxUK08pO3JldHVybiBNPGcubGVuZ3RoJiYoRSs9dihnLE0pKSxFfX0pfSw1MzA2OihlLHQscik9Pnt2YXIgbj1yKDIxMDQpLGE9cig2OTE2KSxpPXIoMTcwMikscz1yKDcwMDcpLG89cig3MjkzKSxjPXIoOTY3MCksbD1yKDYxNCksaD1yKDg1NTQpLHU9cig5MzAzKSxkPXIoNzQ2NiksZj1yKDEzNDApLGc9cig0NDg4KSxwPXIoMTUzMCksbT1yKDgxNzMpLGI9cig2NDcpLHk9cig3NjUxKSx3PXIoNTExMikoInJlcGxhY2UiKSx2PU1hdGgubWF4LHg9TWF0aC5taW4sUz1pKFtdLmNvbmNhdCksQT1pKFtdLnB1c2gpLGs9aSgiIi5pbmRleE9mKSxDPWkoIiIuc2xpY2UpLE89IiQwIj09PSJhIi5yZXBsYWNlKC8uLywiJDAiKSxGPSEhLy4vW3ddJiYiIj09PS8uL1t3XSgiYSIsIiQwIik7cygicmVwbGFjZSIsKGZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1GPyIkIjoiJDAiO3JldHVybltmdW5jdGlvbihlLHIpe3ZhciBuPWcodGhpcyksaT1oKGUpP3ZvaWQgMDptKGUsdyk7cmV0dXJuIGk/YShpLGUsbixyKTphKHQsZihuKSxlLHIpfSxmdW5jdGlvbihlLGEpe3ZhciBzPWModGhpcyksbz1mKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmLTE9PT1rKGEsaSkmJi0xPT09ayhhLCIkPCIpKXt2YXIgaD1yKHQscyxvLGEpO2lmKGguZG9uZSlyZXR1cm4gaC52YWx1ZX12YXIgZz1sKGEpO2d8fChhPWYoYSkpO3ZhciBtPXMuZ2xvYmFsO2lmKG0pe3ZhciB3PXMudW5pY29kZTtzLmxhc3RJbmRleD0wfWZvcih2YXIgTz1bXTs7KXt2YXIgRj15KHMsbyk7aWYobnVsbD09PUYpYnJlYWs7aWYoQShPLEYpLCFtKWJyZWFrOyIiPT09ZihGWzBdKSYmKHMubGFzdEluZGV4PXAobyxkKHMubGFzdEluZGV4KSx3KSl9Zm9yKHZhciBJLFQ9IiIsTT0wLEU9MDtFPE8ubGVuZ3RoO0UrKyl7Zm9yKHZhciBQPWYoKEY9T1tFXSlbMF0pLFI9dih4KHUoRi5pbmRleCksby5sZW5ndGgpLDApLE49W10sRD0xO0Q8Ri5sZW5ndGg7RCsrKUEoTix2b2lkIDA9PT0oST1GW0RdKT9JOlN0cmluZyhJKSk7dmFyIEI9Ri5ncm91cHM7aWYoZyl7dmFyIEw9UyhbUF0sTixSLG8pO3ZvaWQgMCE9PUImJkEoTCxCKTt2YXIgXz1mKG4oYSx2b2lkIDAsTCkpfWVsc2UgXz1iKFAsbyxSLE4sQixhKTtSPj1NJiYoVCs9QyhvLE0sUikrXyxNPVIrUC5sZW5ndGgpfXJldHVybiBUK0MobyxNKX1dfSksISFvKChmdW5jdGlvbigpe3ZhciBlPS8uLztyZXR1cm4gZS5leGVjPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIGUuZ3JvdXBzPXthOiI3In0sZX0sIjciIT09IiIucmVwbGFjZShlLCIkPGE+Iil9KSl8fCFPfHxGKX0sMzEyMzooZSx0LHIpPT57dmFyIG49cigyMTA0KSxhPXIoNjkxNiksaT1yKDE3MDIpLHM9cig3MDA3KSxvPXIoOTY3MCksYz1yKDg1NTQpLGw9cig3ODUwKSxoPXIoNDQ4OCksdT1yKDY3MDcpLGQ9cigxNTMwKSxmPXIoNzQ2NiksZz1yKDEzNDApLHA9cig4MTczKSxtPXIoMTU4OSksYj1yKDc2NTEpLHk9cigyMjYxKSx3PXIoMjk5OSksdj1yKDcyOTMpLHg9dy5VTlNVUFBPUlRFRF9ZLFM9NDI5NDk2NzI5NSxBPU1hdGgubWluLGs9W10ucHVzaCxDPWkoLy4vLmV4ZWMpLE89aShrKSxGPWkoIiIuc2xpY2UpO3MoInNwbGl0IiwoZnVuY3Rpb24oZSx0LHIpe3ZhciBpO3JldHVybiBpPSJjIj09ImFiYmMiLnNwbGl0KC8oYikqLylbMV18fDQhPSJ0ZXN0Ii5zcGxpdCgvKD86KS8sLTEpLmxlbmd0aHx8MiE9ImFiIi5zcGxpdCgvKD86YWIpKi8pLmxlbmd0aHx8NCE9Ii4iLnNwbGl0KC8oLj8pKC4/KS8pLmxlbmd0aHx8Ii4iLnNwbGl0KC8oKSgpLykubGVuZ3RoPjF8fCIiLnNwbGl0KC8uPy8pLmxlbmd0aD9mdW5jdGlvbihlLHIpe3ZhciBpPWcoaCh0aGlzKSkscz12b2lkIDA9PT1yP1M6cj4+PjA7aWYoMD09PXMpcmV0dXJuW107aWYodm9pZCAwPT09ZSlyZXR1cm5baV07aWYoIWwoZSkpcmV0dXJuIGEodCxpLGUscyk7Zm9yKHZhciBvLGMsdSxkPVtdLGY9KGUuaWdub3JlQ2FzZT8iaSI6IiIpKyhlLm11bHRpbGluZT8ibSI6IiIpKyhlLnVuaWNvZGU/InUiOiIiKSsoZS5zdGlja3k/InkiOiIiKSxwPTAsYj1uZXcgUmVnRXhwKGUuc291cmNlLGYrImciKTsobz1hKHksYixpKSkmJiEoKGM9Yi5sYXN0SW5kZXgpPnAmJihPKGQsRihpLHAsby5pbmRleCkpLG8ubGVuZ3RoPjEmJm8uaW5kZXg8aS5sZW5ndGgmJm4oayxkLG0obywxKSksdT1vWzBdLmxlbmd0aCxwPWMsZC5sZW5ndGg+PXMpKTspYi5sYXN0SW5kZXg9PT1vLmluZGV4JiZiLmxhc3RJbmRleCsrO3JldHVybiBwPT09aS5sZW5ndGg/IXUmJkMoYiwiIil8fE8oZCwiIik6TyhkLEYoaSxwKSksZC5sZW5ndGg+cz9tKGQsMCxzKTpkfToiMCIuc3BsaXQodm9pZCAwLDApLmxlbmd0aD9mdW5jdGlvbihlLHIpe3JldHVybiB2b2lkIDA9PT1lJiYwPT09cj9bXTphKHQsdGhpcyxlLHIpfTp0LFtmdW5jdGlvbih0LHIpe3ZhciBuPWgodGhpcykscz1jKHQpP3ZvaWQgMDpwKHQsZSk7cmV0dXJuIHM/YShzLHQsbixyKTphKGksZyhuKSx0LHIpfSxmdW5jdGlvbihlLG4pe3ZhciBhPW8odGhpcykscz1nKGUpLGM9cihpLGEscyxuLGkhPT10KTtpZihjLmRvbmUpcmV0dXJuIGMudmFsdWU7dmFyIGw9dShhLFJlZ0V4cCksaD1hLnVuaWNvZGUscD0oYS5pZ25vcmVDYXNlPyJpIjoiIikrKGEubXVsdGlsaW5lPyJtIjoiIikrKGEudW5pY29kZT8idSI6IiIpKyh4PyJnIjoieSIpLG09bmV3IGwoeD8iXig/OiIrYS5zb3VyY2UrIikiOmEscCkseT12b2lkIDA9PT1uP1M6bj4+PjA7aWYoMD09PXkpcmV0dXJuW107aWYoMD09PXMubGVuZ3RoKXJldHVybiBudWxsPT09YihtLHMpP1tzXTpbXTtmb3IodmFyIHc9MCx2PTAsaz1bXTt2PHMubGVuZ3RoOyl7bS5sYXN0SW5kZXg9eD8wOnY7dmFyIEMsST1iKG0seD9GKHMsdik6cyk7aWYobnVsbD09PUl8fChDPUEoZihtLmxhc3RJbmRleCsoeD92OjApKSxzLmxlbmd0aCkpPT09dyl2PWQocyx2LGgpO2Vsc2V7aWYoTyhrLEYocyx3LHYpKSxrLmxlbmd0aD09PXkpcmV0dXJuIGs7Zm9yKHZhciBUPTE7VDw9SS5sZW5ndGgtMTtUKyspaWYoTyhrLElbVF0pLGsubGVuZ3RoPT09eSlyZXR1cm4gazt2PXc9Q319cmV0dXJuIE8oayxGKHMsdykpLGt9XX0pLCEhdigoZnVuY3Rpb24oKXt2YXIgZT0vKD86KS8sdD1lLmV4ZWM7ZS5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTt2YXIgcj0iYWIiLnNwbGl0KGUpO3JldHVybiAyIT09ci5sZW5ndGh8fCJhIiE9PXJbMF18fCJiIiE9PXJbMV19KSkseCl9LDY3NTU6KGUsdCxyKT0+e3ZhciBuLGE9cigyMTA5KSxpPXIoMTQ3MCkscz1yKDEyMzYpLmYsbz1yKDc0NjYpLGM9cigxMzQwKSxsPXIoMzkyOSksaD1yKDQ0ODgpLHU9cig0OTY0KSxkPXIoMTkxMyksZj1pKCIiLnN0YXJ0c1dpdGgpLGc9aSgiIi5zbGljZSkscD1NYXRoLm1pbixtPXUoInN0YXJ0c1dpdGgiKTthKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOiEoIWQmJiFtJiYobj1zKFN0cmluZy5wcm90b3R5cGUsInN0YXJ0c1dpdGgiKSxuJiYhbi53cml0YWJsZSl8fG0pfSx7c3RhcnRzV2l0aDpmdW5jdGlvbihlKXt2YXIgdD1jKGgodGhpcykpO2woZSk7dmFyIHI9byhwKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLHQubGVuZ3RoKSksbj1jKGUpO3JldHVybiBmP2YodCxuLHIpOmcodCxyLHIrbi5sZW5ndGgpPT09bn19KX0sMzIxMDooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoMzExMSkudHJpbTtuKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOnIoNjA5MSkoInRyaW0iKX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gYSh0aGlzKX19KX0sMTgxNzooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoOTc4MSksaT1yKDc4NTQpLHM9cigxNzAyKSxvPXIoMjU5NyksYz1yKDYxNCksbD1yKDc5NzYpLGg9cigxMzQwKSx1PXIoNzA0NSksZD1yKDk5MjApLGY9aS5TeW1ib2wsZz1mJiZmLnByb3RvdHlwZTtpZihhJiZjKGYpJiYoISgiZGVzY3JpcHRpb24iaW4gZyl8fHZvaWQgMCE9PWYoKS5kZXNjcmlwdGlvbikpe3ZhciBwPXt9LG09ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPDF8fHZvaWQgMD09PWFyZ3VtZW50c1swXT92b2lkIDA6aChhcmd1bWVudHNbMF0pLHQ9bChnLHRoaXMpP25ldyBmKGUpOnZvaWQgMD09PWU/ZigpOmYoZSk7cmV0dXJuIiI9PT1lJiYocFt0XT0hMCksdH07ZChtLGYpLG0ucHJvdG90eXBlPWcsZy5jb25zdHJ1Y3Rvcj1tO3ZhciBiPSJTeW1ib2wodGVzdCkiPT1TdHJpbmcoZigidGVzdCIpKSx5PXMoZy52YWx1ZU9mKSx3PXMoZy50b1N0cmluZyksdj0vXlN5bWJvbFwoKC4qKVwpW14pXSskLyx4PXMoIiIucmVwbGFjZSksUz1zKCIiLnNsaWNlKTt1KGcsImRlc2NyaXB0aW9uIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciBlPXkodGhpcyk7aWYobyhwLGUpKXJldHVybiIiO3ZhciB0PXcoZSkscj1iP1ModCw3LC0xKTp4KHQsdiwiJDEiKTtyZXR1cm4iIj09PXI/dm9pZCAwOnJ9fSksbih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDohMH0se1N5bWJvbDptfSl9fSw4Njc1OihlLHQscik9Pnt2YXIgbj1yKDI2MCksYT1yKDYyNDQpLGk9cig5MzAzKSxzPW4uYVR5cGVkQXJyYXk7KDAsbi5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiYXQiLChmdW5jdGlvbihlKXt2YXIgdD1zKHRoaXMpLHI9YSh0KSxuPWkoZSksbz1uPj0wP246cituO3JldHVybiBvPDB8fG8+PXI/dm9pZCAwOnRbb119KSl9LDMxMDU6KGUsdCxyKT0+e3ZhciBuPXIoMjYwKSxhPXIoMTI4NSksaT1yKDQ1OTkpLHM9cig2NDgpLG89cig2OTE2KSxjPXIoMTcwMiksbD1yKDcyOTMpLGg9bi5hVHlwZWRBcnJheSx1PW4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxkPWMoIiIuc2xpY2UpO3UoImZpbGwiLChmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO2godGhpcyk7dmFyIHI9IkJpZyI9PT1kKHModGhpcyksMCwzKT9pKGUpOitlO3JldHVybiBvKGEsdGhpcyxyLHQ+MT9hcmd1bWVudHNbMV06dm9pZCAwLHQ+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0pLGwoKGZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gbmV3IEludDhBcnJheSgyKS5maWxsKHt2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIGUrK319KSwxIT09ZX0pKSl9LDI5NTg6KGUsdCxyKT0+e3ZhciBuPXIoMjYwKSxhPXIoOTY3MSkuZmluZExhc3RJbmRleCxpPW4uYVR5cGVkQXJyYXk7KDAsbi5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiZmluZExhc3RJbmRleCIsKGZ1bmN0aW9uKGUpe3JldHVybiBhKGkodGhpcyksZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LDM0MDg6KGUsdCxyKT0+e3ZhciBuPXIoMjYwKSxhPXIoOTY3MSkuZmluZExhc3QsaT1uLmFUeXBlZEFycmF5OygwLG4uZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRMYXN0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGEoaSh0aGlzKSxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sNDE5NzooZSx0LHIpPT57cig5ODQzKSgiRmxvYXQzMiIsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIGUodGhpcyx0LHIsbil9fSkpfSw2NDk1OihlLHQscik9PntyKDk4NDMpKCJGbG9hdDY0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSl9LDUxMDk6KGUsdCxyKT0+e3IoOTg0MykoIkludDE2IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSl9LDUxMjU6KGUsdCxyKT0+e3IoOTg0MykoIkludDMyIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSl9LDcxNDU6KGUsdCxyKT0+e3IoOTg0MykoIkludDgiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHRoaXMsdCxyLG4pfX0pKX0sMzQ2MjooZSx0LHIpPT57dmFyIG49cig3ODU0KSxhPXIoNjkxNiksaT1yKDI2MCkscz1yKDYyNDQpLG89cig0NTkwKSxjPXIoNzkwOCksbD1yKDcyOTMpLGg9bi5SYW5nZUVycm9yLHU9bi5JbnQ4QXJyYXksZD11JiZ1LnByb3RvdHlwZSxmPWQmJmQuc2V0LGc9aS5hVHlwZWRBcnJheSxwPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxtPSFsKChmdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OENsYW1wZWRBcnJheSgyKTtyZXR1cm4gYShmLGUse2xlbmd0aDoxLDA6M30sMSksMyE9PWVbMV19KSksYj1tJiZpLk5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MmJmwoKGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHUoMik7cmV0dXJuIGUuc2V0KDEpLGUuc2V0KCIyIiwxKSwwIT09ZVswXXx8MiE9PWVbMV19KSk7cCgic2V0IiwoZnVuY3Rpb24oZSl7Zyh0aGlzKTt2YXIgdD1vKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLHI9YyhlKTtpZihtKXJldHVybiBhKGYsdGhpcyxyLHQpO3ZhciBuPXRoaXMubGVuZ3RoLGk9cyhyKSxsPTA7aWYoaSt0Pm4pdGhyb3cgaCgiV3JvbmcgbGVuZ3RoIik7Zm9yKDtsPGk7KXRoaXNbdCtsXT1yW2wrK119KSwhbXx8Yil9LDM4MjQ6KGUsdCxyKT0+e3ZhciBuPXIoNzg1NCksYT1yKDE0NzApLGk9cig3MjkzKSxzPXIoOTY2Miksbz1yKDQzNjIpLGM9cigyNjApLGw9cig4ODg2KSxoPXIoMjU2KSx1PXIoNzM5MiksZD1yKDgwMDgpLGY9Yy5hVHlwZWRBcnJheSxnPWMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxwPW4uVWludDE2QXJyYXksbT1wJiZhKHAucHJvdG90eXBlLnNvcnQpLGI9ISghbXx8aSgoZnVuY3Rpb24oKXttKG5ldyBwKDIpLG51bGwpfSkpJiZpKChmdW5jdGlvbigpe20obmV3IHAoMikse30pfSkpKSx5PSEhbSYmIWkoKGZ1bmN0aW9uKCl7aWYodSlyZXR1cm4gdTw3NDtpZihsKXJldHVybiBsPDY3O2lmKGgpcmV0dXJuITA7aWYoZClyZXR1cm4gZDw2MDI7dmFyIGUsdCxyPW5ldyBwKDUxNiksbj1BcnJheSg1MTYpO2ZvcihlPTA7ZTw1MTY7ZSsrKXQ9ZSU0LHJbZV09NTE1LWUsbltlXT1lLTIqdCszO2ZvcihtKHIsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUvNHwwKS0odC80fDApfSkpLGU9MDtlPDUxNjtlKyspaWYocltlXSE9PW5bZV0pcmV0dXJuITB9KSk7Zygic29ydCIsKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiZzKGUpLHk/bSh0aGlzLGUpOm8oZih0aGlzKSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gdm9pZCAwIT09ZT8rZSh0LHIpfHwwOnIhPXI/LTE6dCE9dD8xOjA9PT10JiYwPT09cj8xL3Q+MCYmMS9yPDA/MTotMTp0PnJ9fShlKSl9KSwheXx8Yil9LDI5NzQ6KGUsdCxyKT0+e3ZhciBuPXIoNzg1NCksYT1yKDIxMDQpLGk9cigyNjApLHM9cig3MjkzKSxvPXIoMjA2KSxjPW4uSW50OEFycmF5LGw9aS5hVHlwZWRBcnJheSxoPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCx1PVtdLnRvTG9jYWxlU3RyaW5nLGQ9ISFjJiZzKChmdW5jdGlvbigpe3UuY2FsbChuZXcgYygxKSl9KSk7aCgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBhKHUsZD9vKGwodGhpcykpOmwodGhpcyksbyhhcmd1bWVudHMpKX0pLHMoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IGMoWzEsMl0pLnRvTG9jYWxlU3RyaW5nKCl9KSl8fCFzKChmdW5jdGlvbigpe2MucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKX0sMTQzOTooZSx0LHIpPT57dmFyIG49cigxODQzKSxhPXIoMjYwKSxpPWEuYVR5cGVkQXJyYXkscz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Qsbz1hLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtzKCJ0b1JldmVyc2VkIiwoZnVuY3Rpb24oKXtyZXR1cm4gbihpKHRoaXMpLG8odGhpcykpfSkpfSw3NTg1OihlLHQscik9Pnt2YXIgbj1yKDI2MCksYT1yKDE3MDIpLGk9cig5NjYyKSxzPXIoNzc0NSksbz1uLmFUeXBlZEFycmF5LGM9bi5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsbD1uLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsaD1hKG4uVHlwZWRBcnJheVByb3RvdHlwZS5zb3J0KTtsKCJ0b1NvcnRlZCIsKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PWUmJmkoZSk7dmFyIHQ9byh0aGlzKSxyPXMoYyh0KSx0KTtyZXR1cm4gaChyLGUpfSkpfSw4MjU1OihlLHQscik9PntyKDk4NDMpKCJVaW50MTYiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiBlKHRoaXMsdCxyLG4pfX0pKX0sOTEzNTooZSx0LHIpPT57cig5ODQzKSgiVWludDMyIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSl9LDI0NzI6KGUsdCxyKT0+e3IoOTg0MykoIlVpbnQ4IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSl9LDk3NDM6KGUsdCxyKT0+e3IoOTg0MykoIlVpbnQ4IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gZSh0aGlzLHQscixuKX19KSwhMCl9LDUzMTU6KGUsdCxyKT0+e3ZhciBuPXIoMTU3MiksYT1yKDI2MCksaT1yKDQwNjcpLHM9cig5MzAzKSxvPXIoNDU5OSksYz1hLmFUeXBlZEFycmF5LGw9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsaD1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsdT0hIWZ1bmN0aW9uKCl7dHJ5e25ldyBJbnQ4QXJyYXkoMSkud2l0aCgyLHt2YWx1ZU9mOmZ1bmN0aW9uKCl7dGhyb3cgOH19KX1jYXRjaChlKXtyZXR1cm4gOD09PWV9fSgpO2goIndpdGgiLHt3aXRoOmZ1bmN0aW9uKGUsdCl7dmFyIHI9Yyh0aGlzKSxhPXMoZSksaD1pKHIpP28odCk6K3Q7cmV0dXJuIG4ocixsKHIpLGEsaCl9fS53aXRoLCF1KX0sMTIwMjooZSx0LHIpPT57dmFyIG4sYT1yKDY2NzcpLGk9cig3ODU0KSxzPXIoMTcwMiksbz1yKDkxOTApLGM9cigyNDIzKSxsPXIoNzcxMCksaD1yKDkzMjApLHU9cigxMTEpLGQ9cig5OTA5KS5lbmZvcmNlLGY9cig3MjkzKSxnPXIoNDgxMSkscD1PYmplY3QsbT1BcnJheS5pc0FycmF5LGI9cC5pc0V4dGVuc2libGUseT1wLmlzRnJvemVuLHc9cC5pc1NlYWxlZCx2PXAuZnJlZXplLHg9cC5zZWFsLFM9e30sQT17fSxrPSFpLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIGksQz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLGFyZ3VtZW50cy5sZW5ndGg/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSxPPWwoIldlYWtNYXAiLEMsaCksRj1PLnByb3RvdHlwZSxJPXMoRi5zZXQpO2lmKGcpaWYoayl7bj1oLmdldENvbnN0cnVjdG9yKEMsIldlYWtNYXAiLCEwKSxjLmVuYWJsZSgpO3ZhciBUPXMoRi5kZWxldGUpLE09cyhGLmhhcyksRT1zKEYuZ2V0KTtvKEYse2RlbGV0ZTpmdW5jdGlvbihlKXtpZih1KGUpJiYhYihlKSl7dmFyIHQ9ZCh0aGlzKTtyZXR1cm4gdC5mcm96ZW58fCh0LmZyb3plbj1uZXcgbiksVCh0aGlzLGUpfHx0LmZyb3plbi5kZWxldGUoZSl9cmV0dXJuIFQodGhpcyxlKX0saGFzOmZ1bmN0aW9uKGUpe2lmKHUoZSkmJiFiKGUpKXt2YXIgdD1kKHRoaXMpO3JldHVybiB0LmZyb3plbnx8KHQuZnJvemVuPW5ldyBuKSxNKHRoaXMsZSl8fHQuZnJvemVuLmhhcyhlKX1yZXR1cm4gTSh0aGlzLGUpfSxnZXQ6ZnVuY3Rpb24oZSl7aWYodShlKSYmIWIoZSkpe3ZhciB0PWQodGhpcyk7cmV0dXJuIHQuZnJvemVufHwodC5mcm96ZW49bmV3IG4pLE0odGhpcyxlKT9FKHRoaXMsZSk6dC5mcm96ZW4uZ2V0KGUpfXJldHVybiBFKHRoaXMsZSl9LHNldDpmdW5jdGlvbihlLHQpe2lmKHUoZSkmJiFiKGUpKXt2YXIgcj1kKHRoaXMpO3IuZnJvemVufHwoci5mcm96ZW49bmV3IG4pLE0odGhpcyxlKT9JKHRoaXMsZSx0KTpyLmZyb3plbi5zZXQoZSx0KX1lbHNlIEkodGhpcyxlLHQpO3JldHVybiB0aGlzfX0pfWVsc2UgYSYmZigoZnVuY3Rpb24oKXt2YXIgZT12KFtdKTtyZXR1cm4gSShuZXcgTyxlLDEpLCF5KGUpfSkpJiZvKEYse3NldDpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBtKGUpJiYoeShlKT9yPVM6dyhlKSYmKHI9QSkpLEkodGhpcyxlLHQpLHI9PVMmJnYoZSkscj09QSYmeChlKSx0aGlzfX0pfSw0MTI5OihlLHQscik9PntyKDEyMDIpfSwzOTQ4OihlLHQscik9Pnt2YXIgbj1yKDc4NTQpLGE9cig4MzI0KSxpPXIoODUwOSkscz1yKDY5OTIpLG89cig4ODgwKSxjPXIoNTExMiksbD1jKCJpdGVyYXRvciIpLGg9YygidG9TdHJpbmdUYWciKSx1PXMudmFsdWVzLGQ9ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihlW2xdIT09dSl0cnl7byhlLGwsdSl9Y2F0Y2godCl7ZVtsXT11fWlmKGVbaF18fG8oZSxoLHQpLGFbdF0pZm9yKHZhciByIGluIHMpaWYoZVtyXSE9PXNbcl0pdHJ5e28oZSxyLHNbcl0pfWNhdGNoKHQpe2Vbcl09c1tyXX19fTtmb3IodmFyIGYgaW4gYSlkKG5bZl0mJm5bZl0ucHJvdG90eXBlLGYpO2QoaSwiRE9NVG9rZW5MaXN0Iil9LDc3MTQ6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDQwMzgpLGk9cig1MDA1KSxzPXIoNzI5Myksbz1yKDMwKSxjPXIoOTExNCksbD1yKDMwNzApLmYsaD1yKDgwNTIpLHU9cig3MDQ1KSxkPXIoMjU5NyksZj1yKDU3ODcpLGc9cig5NjcwKSxwPXIoNzc2MiksbT1yKDYyNzcpLGI9cigzNjc4KSx5PXIoMTA2MCksdz1yKDk5MDkpLHY9cig5NzgxKSx4PXIoMTkxMyksUz0iRE9NRXhjZXB0aW9uIixBPSJEQVRBX0NMT05FX0VSUiIsaz1pKCJFcnJvciIpLEM9aShTKXx8ZnVuY3Rpb24oKXt0cnl7KG5ldyhpKCJNZXNzYWdlQ2hhbm5lbCIpfHxhKCJ3b3JrZXJfdGhyZWFkcyIpLk1lc3NhZ2VDaGFubmVsKSkucG9ydDEucG9zdE1lc3NhZ2UobmV3IFdlYWtNYXApfWNhdGNoKGUpe2lmKGUubmFtZT09QSYmMjU9PWUuY29kZSlyZXR1cm4gZS5jb25zdHJ1Y3Rvcn19KCksTz1DJiZDLnByb3RvdHlwZSxGPWsucHJvdG90eXBlLEk9dy5zZXQsVD13LmdldHRlckZvcihTKSxNPSJzdGFjayJpbiBrKFMpLEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGQoYixlKSYmYltlXS5tP2JbZV0uYzowfSxQPWZ1bmN0aW9uKCl7Zih0aGlzLFIpO3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1tKGU8MT92b2lkIDA6YXJndW1lbnRzWzBdKSxyPW0oZTwyP3ZvaWQgMDphcmd1bWVudHNbMV0sIkVycm9yIiksbj1FKHIpO2lmKEkodGhpcyx7dHlwZTpTLG5hbWU6cixtZXNzYWdlOnQsY29kZTpufSksdnx8KHRoaXMubmFtZT1yLHRoaXMubWVzc2FnZT10LHRoaXMuY29kZT1uKSxNKXt2YXIgYT1rKHQpO2EubmFtZT1TLGwodGhpcywic3RhY2siLGMoMSx5KGEuc3RhY2ssMSkpKX19LFI9UC5wcm90b3R5cGU9byhGKSxOPWZ1bmN0aW9uKGUpe3JldHVybntlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZX19LEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE4oKGZ1bmN0aW9uKCl7cmV0dXJuIFQodGhpcylbZV19KSl9O3YmJih1KFIsImNvZGUiLEQoImNvZGUiKSksdShSLCJtZXNzYWdlIixEKCJtZXNzYWdlIikpLHUoUiwibmFtZSIsRCgibmFtZSIpKSksbChSLCJjb25zdHJ1Y3RvciIsYygxLFApKTt2YXIgQj1zKChmdW5jdGlvbigpe3JldHVybiEobmV3IEMgaW5zdGFuY2VvZiBrKX0pKSxMPUJ8fHMoKGZ1bmN0aW9uKCl7cmV0dXJuIEYudG9TdHJpbmchPT1wfHwiMjogMSIhPT1TdHJpbmcobmV3IEMoMSwyKSl9KSksXz1CfHxzKChmdW5jdGlvbigpe3JldHVybiAyNSE9PW5ldyBDKDEsIkRhdGFDbG9uZUVycm9yIikuY29kZX0pKSxqPUJ8fDI1IT09Q1tBXXx8MjUhPT1PW0FdLFU9eD9MfHxffHxqOkI7bih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpVfSx7RE9NRXhjZXB0aW9uOlU/UDpDfSk7dmFyICQ9aShTKSxYPSQucHJvdG90eXBlO2Zvcih2YXIgSCBpbiBMJiYoeHx8Qz09PSQpJiZoKFgsInRvU3RyaW5nIixwKSxfJiZ2JiZDPT09JCYmdShYLCJjb2RlIixOKChmdW5jdGlvbigpe3JldHVybiBFKGcodGhpcykubmFtZSl9KSkpLGIpaWYoZChiLEgpKXt2YXIgcT1iW0hdLHo9cS5zLEc9Yyg2LHEuYyk7ZCgkLHopfHxsKCQseixHKSxkKFgseil8fGwoWCx6LEcpfX0sMjgwMTooZSx0LHIpPT57dmFyIG49cigyMTA5KSxhPXIoNzg1NCksaT1yKDUwMDUpLHM9cig5MTE0KSxvPXIoMzA3MCkuZixjPXIoMjU5NyksbD1yKDU3ODcpLGg9cig5NTg3KSx1PXIoNjI3NyksZD1yKDM2NzgpLGY9cigxMDYwKSxnPXIoOTc4MSkscD1yKDE5MTMpLG09IkRPTUV4Y2VwdGlvbiIsYj1pKCJFcnJvciIpLHk9aShtKSx3PWZ1bmN0aW9uKCl7bCh0aGlzLHYpO3ZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD11KGU8MT92b2lkIDA6YXJndW1lbnRzWzBdKSxyPXUoZTwyP3ZvaWQgMDphcmd1bWVudHNbMV0sIkVycm9yIiksbj1uZXcgeSh0LHIpLGE9Yih0KTtyZXR1cm4gYS5uYW1lPW0sbyhuLCJzdGFjayIscygxLGYoYS5zdGFjaywxKSkpLGgobix0aGlzLHcpLG59LHY9dy5wcm90b3R5cGU9eS5wcm90b3R5cGUseD0ic3RhY2siaW4gYihtKSxTPSJzdGFjayJpbiBuZXcgeSgxLDIpLEE9eSYmZyYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLG0pLGs9ISghQXx8QS53cml0YWJsZSYmQS5jb25maWd1cmFibGUpLEM9eCYmIWsmJiFTO24oe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6cHx8Q30se0RPTUV4Y2VwdGlvbjpDP3c6eX0pO3ZhciBPPWkobSksRj1PLnByb3RvdHlwZTtpZihGLmNvbnN0cnVjdG9yIT09Tylmb3IodmFyIEkgaW4gcHx8byhGLCJjb25zdHJ1Y3RvciIscygxLE8pKSxkKWlmKGMoZCxJKSl7dmFyIFQ9ZFtJXSxNPVQucztjKE8sTSl8fG8oTyxNLHMoNixULmMpKX19LDExNzQ6KGUsdCxyKT0+e3ZhciBuPXIoNTAwNSksYT0iRE9NRXhjZXB0aW9uIjtyKDgwMDMpKG4oYSksYSl9LDE1NTA6KGUsdCxyKT0+e3ZhciBuPXIoMjEwOSksYT1yKDc4NTQpLGk9cig3MDQ1KSxzPXIoOTc4MSksbz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksbD1hLnNlbGYhPT1hO3RyeXtpZihzKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsInNlbGYiKTshbCYmaCYmaC5nZXQmJmguZW51bWVyYWJsZXx8aShhLCJzZWxmIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldDpmdW5jdGlvbihlKXtpZih0aGlzIT09YSl0aHJvdyBvKCJJbGxlZ2FsIGludm9jYXRpb24iKTtjKGEsInNlbGYiLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9ZWxzZSBuKHtnbG9iYWw6ITAsc2ltcGxlOiEwLGZvcmNlZDpsfSx7c2VsZjphfSl9Y2F0Y2goZSl7fX0sNTU1NjooZSx0LHIpPT57cig2OTkyKTt2YXIgbj1yKDIxMDkpLGE9cig3ODU0KSxpPXIoNjkxNikscz1yKDE3MDIpLG89cig5NzgxKSxjPXIoNTE0MyksbD1yKDgwNTIpLGg9cig3MDQ1KSx1PXIoOTE5MCksZD1yKDgwMDMpLGY9cigzMDYxKSxnPXIoOTkwOSkscD1yKDU3ODcpLG09cig2MTQpLGI9cigyNTk3KSx5PXIoOTk3NCksdz1yKDY0OCksdj1yKDk2NzApLHg9cigxMTEpLFM9cigxMzQwKSxBPXIoMzApLGs9cig5MTE0KSxDPXIoNDEyMSksTz1yKDEyNDYpLEY9cig4MDUzKSxJPXIoNTExMiksVD1yKDQzNjIpLE09SSgiaXRlcmF0b3IiKSxFPSJVUkxTZWFyY2hQYXJhbXMiLFA9RSsiSXRlcmF0b3IiLFI9Zy5zZXQsTj1nLmdldHRlckZvcihFKSxEPWcuZ2V0dGVyRm9yKFApLEI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixMPWZ1bmN0aW9uKGUpe2lmKCFvKXJldHVybiBhW2VdO3ZhciB0PUIoYSxlKTtyZXR1cm4gdCYmdC52YWx1ZX0sXz1MKCJmZXRjaCIpLGo9TCgiUmVxdWVzdCIpLFU9TCgiSGVhZGVycyIpLCQ9aiYmai5wcm90b3R5cGUsWD1VJiZVLnByb3RvdHlwZSxIPWEuUmVnRXhwLHE9YS5UeXBlRXJyb3Isej1hLmRlY29kZVVSSUNvbXBvbmVudCxHPWEuZW5jb2RlVVJJQ29tcG9uZW50LFc9cygiIi5jaGFyQXQpLFY9cyhbXS5qb2luKSxLPXMoW10ucHVzaCksWT1zKCIiLnJlcGxhY2UpLEo9cyhbXS5zaGlmdCksWj1zKFtdLnNwbGljZSksUT1zKCIiLnNwbGl0KSxlZT1zKCIiLnNsaWNlKSx0ZT0vXCsvZyxyZT1BcnJheSg0KSxuZT1mdW5jdGlvbihlKXtyZXR1cm4gcmVbZS0xXXx8KHJlW2UtMV09SCgiKCg/OiVbXFxkYS1mXXsyfSl7IitlKyJ9KSIsImdpIikpfSxhZT1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHooZSl9Y2F0Y2godCl7cmV0dXJuIGV9fSxpZT1mdW5jdGlvbihlKXt2YXIgdD1ZKGUsdGUsIiAiKSxyPTQ7dHJ5e3JldHVybiB6KHQpfWNhdGNoKGUpe2Zvcig7cjspdD1ZKHQsbmUoci0tKSxhZSk7cmV0dXJuIHR9fSxzZT0vWyEnKCl+XXwlMjAvZyxvZT17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyJ9LGNlPWZ1bmN0aW9uKGUpe3JldHVybiBvZVtlXX0sbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIFkoRyhlKSxzZSxjZSl9LGhlPWYoKGZ1bmN0aW9uKGUsdCl7Uih0aGlzLHt0eXBlOlAsaXRlcmF0b3I6QyhOKGUpLmVudHJpZXMpLGtpbmQ6dH0pfSksIkl0ZXJhdG9yIiwoZnVuY3Rpb24oKXt2YXIgZT1EKHRoaXMpLHQ9ZS5raW5kLHI9ZS5pdGVyYXRvci5uZXh0KCksbj1yLnZhbHVlO3JldHVybiByLmRvbmV8fChyLnZhbHVlPSJrZXlzIj09PXQ/bi5rZXk6InZhbHVlcyI9PT10P24udmFsdWU6W24ua2V5LG4udmFsdWVdKSxyfSksITApLHVlPWZ1bmN0aW9uKGUpe3RoaXMuZW50cmllcz1bXSx0aGlzLnVybD1udWxsLHZvaWQgMCE9PWUmJih4KGUpP3RoaXMucGFyc2VPYmplY3QoZSk6dGhpcy5wYXJzZVF1ZXJ5KCJzdHJpbmciPT10eXBlb2YgZT8iPyI9PT1XKGUsMCk/ZWUoZSwxKTplOlMoZSkpKX07dWUucHJvdG90eXBlPXt0eXBlOkUsYmluZFVSTDpmdW5jdGlvbihlKXt0aGlzLnVybD1lLHRoaXMudXBkYXRlKCl9LHBhcnNlT2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLHMsbyxjLGw9TyhlKTtpZihsKWZvcihyPSh0PUMoZSxsKSkubmV4dDshKG49aShyLHQpKS5kb25lOyl7aWYocz0oYT1DKHYobi52YWx1ZSkpKS5uZXh0LChvPWkocyxhKSkuZG9uZXx8KGM9aShzLGEpKS5kb25lfHwhaShzLGEpLmRvbmUpdGhyb3cgcSgiRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMiIpO0sodGhpcy5lbnRyaWVzLHtrZXk6UyhvLnZhbHVlKSx2YWx1ZTpTKGMudmFsdWUpfSl9ZWxzZSBmb3IodmFyIGggaW4gZSliKGUsaCkmJksodGhpcy5lbnRyaWVzLHtrZXk6aCx2YWx1ZTpTKGVbaF0pfSl9LHBhcnNlUXVlcnk6ZnVuY3Rpb24oZSl7aWYoZSlmb3IodmFyIHQscixuPVEoZSwiJiIpLGE9MDthPG4ubGVuZ3RoOykodD1uW2ErK10pLmxlbmd0aCYmKHI9USh0LCI9IiksSyh0aGlzLmVudHJpZXMse2tleTppZShKKHIpKSx2YWx1ZTppZShWKHIsIj0iKSl9KSl9LHNlcmlhbGl6ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PXRoaXMuZW50cmllcyxyPVtdLG49MDtuPHQubGVuZ3RoOyllPXRbbisrXSxLKHIsbGUoZS5rZXkpKyI9IitsZShlLnZhbHVlKSk7cmV0dXJuIFYociwiJiIpfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLmVudHJpZXMubGVuZ3RoPTAsdGhpcy5wYXJzZVF1ZXJ5KHRoaXMudXJsLnF1ZXJ5KX0sdXBkYXRlVVJMOmZ1bmN0aW9uKCl7dGhpcy51cmwmJnRoaXMudXJsLnVwZGF0ZSgpfX07dmFyIGRlPWZ1bmN0aW9uKCl7cCh0aGlzLGZlKTt2YXIgZT1SKHRoaXMsbmV3IHVlKGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKSk7b3x8KHRoaXMuc2l6ZT1lLmVudHJpZXMubGVuZ3RoKX0sZmU9ZGUucHJvdG90eXBlO2lmKHUoZmUse2FwcGVuZDpmdW5jdGlvbihlLHQpe3ZhciByPU4odGhpcyk7Rihhcmd1bWVudHMubGVuZ3RoLDIpLEsoci5lbnRyaWVzLHtrZXk6UyhlKSx2YWx1ZTpTKHQpfSksb3x8dGhpcy5sZW5ndGgrKyxyLnVwZGF0ZVVSTCgpfSxkZWxldGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU4odGhpcykscj1GKGFyZ3VtZW50cy5sZW5ndGgsMSksbj10LmVudHJpZXMsYT1TKGUpLGk9cjwyP3ZvaWQgMDphcmd1bWVudHNbMV0scz12b2lkIDA9PT1pP2k6UyhpKSxjPTA7YzxuLmxlbmd0aDspe3ZhciBsPW5bY107aWYobC5rZXkhPT1hfHx2b2lkIDAhPT1zJiZsLnZhbHVlIT09cyljKys7ZWxzZSBpZihaKG4sYywxKSx2b2lkIDAhPT1zKWJyZWFrfW98fCh0aGlzLnNpemU9bi5sZW5ndGgpLHQudXBkYXRlVVJMKCl9LGdldDpmdW5jdGlvbihlKXt2YXIgdD1OKHRoaXMpLmVudHJpZXM7Rihhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgcj1TKGUpLG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmtleT09PXIpcmV0dXJuIHRbbl0udmFsdWU7cmV0dXJuIG51bGx9LGdldEFsbDpmdW5jdGlvbihlKXt2YXIgdD1OKHRoaXMpLmVudHJpZXM7Rihhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgcj1TKGUpLG49W10sYT0wO2E8dC5sZW5ndGg7YSsrKXRbYV0ua2V5PT09ciYmSyhuLHRbYV0udmFsdWUpO3JldHVybiBufSxoYXM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU4odGhpcykuZW50cmllcyxyPUYoYXJndW1lbnRzLmxlbmd0aCwxKSxuPVMoZSksYT1yPDI/dm9pZCAwOmFyZ3VtZW50c1sxXSxpPXZvaWQgMD09PWE/YTpTKGEpLHM9MDtzPHQubGVuZ3RoOyl7dmFyIG89dFtzKytdO2lmKG8ua2V5PT09biYmKHZvaWQgMD09PWl8fG8udmFsdWU9PT1pKSlyZXR1cm4hMH1yZXR1cm4hMX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9Tih0aGlzKTtGKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBuLGE9ci5lbnRyaWVzLGk9ITEscz1TKGUpLGM9Uyh0KSxsPTA7bDxhLmxlbmd0aDtsKyspKG49YVtsXSkua2V5PT09cyYmKGk/WihhLGwtLSwxKTooaT0hMCxuLnZhbHVlPWMpKTtpfHxLKGEse2tleTpzLHZhbHVlOmN9KSxvfHwodGhpcy5zaXplPWEubGVuZ3RoKSxyLnVwZGF0ZVVSTCgpfSxzb3J0OmZ1bmN0aW9uKCl7dmFyIGU9Tih0aGlzKTtUKGUuZW50cmllcywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5rZXk+dC5rZXk/MTotMX0pKSxlLnVwZGF0ZVVSTCgpfSxmb3JFYWNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPU4odGhpcykuZW50cmllcyxuPXkoZSxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksYT0wO2E8ci5sZW5ndGg7KW4oKHQ9clthKytdKS52YWx1ZSx0LmtleSx0aGlzKX0sa2V5czpmdW5jdGlvbigpe3JldHVybiBuZXcgaGUodGhpcywia2V5cyIpfSx2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGhlKHRoaXMsInZhbHVlcyIpfSxlbnRyaWVzOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoZSh0aGlzLCJlbnRyaWVzIil9fSx7ZW51bWVyYWJsZTohMH0pLGwoZmUsTSxmZS5lbnRyaWVzLHtuYW1lOiJlbnRyaWVzIn0pLGwoZmUsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4gTih0aGlzKS5zZXJpYWxpemUoKX0pLHtlbnVtZXJhYmxlOiEwfSksbyYmaChmZSwic2l6ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBOKHRoaXMpLmVudHJpZXMubGVuZ3RofSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pLGQoZGUsRSksbih7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDohY30se1VSTFNlYXJjaFBhcmFtczpkZX0pLCFjJiZtKFUpKXt2YXIgZ2U9cyhYLmhhcykscGU9cyhYLnNldCksbWU9ZnVuY3Rpb24oZSl7aWYoeChlKSl7dmFyIHQscj1lLmJvZHk7aWYodyhyKT09PUUpcmV0dXJuIHQ9ZS5oZWFkZXJzP25ldyBVKGUuaGVhZGVycyk6bmV3IFUsZ2UodCwiY29udGVudC10eXBlIil8fHBlKHQsImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04IiksQShlLHtib2R5OmsoMCxTKHIpKSxoZWFkZXJzOmsoMCx0KX0pfXJldHVybiBlfTtpZihtKF8pJiZuKHtnbG9iYWw6ITAsZW51bWVyYWJsZTohMCxkb250Q2FsbEdldFNldDohMCxmb3JjZWQ6ITB9LHtmZXRjaDpmdW5jdGlvbihlKXtyZXR1cm4gXyhlLGFyZ3VtZW50cy5sZW5ndGg+MT9tZShhcmd1bWVudHNbMV0pOnt9KX19KSxtKGopKXt2YXIgYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHAodGhpcywkKSxuZXcgaihlLGFyZ3VtZW50cy5sZW5ndGg+MT9tZShhcmd1bWVudHNbMV0pOnt9KX07JC5jb25zdHJ1Y3Rvcj1iZSxiZS5wcm90b3R5cGU9JCxuKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZG9udENhbGxHZXRTZXQ6ITAsZm9yY2VkOiEwfSx7UmVxdWVzdDpiZX0pfX1lLmV4cG9ydHM9e1VSTFNlYXJjaFBhcmFtczpkZSxnZXRTdGF0ZTpOfX0sNjIyOTooZSx0LHIpPT57dmFyIG49cig4MDUyKSxhPXIoMTcwMiksaT1yKDEzNDApLHM9cig4MDUzKSxvPVVSTFNlYXJjaFBhcmFtcyxjPW8ucHJvdG90eXBlLGw9YShjLmFwcGVuZCksaD1hKGMuZGVsZXRlKSx1PWEoYy5mb3JFYWNoKSxkPWEoW10ucHVzaCksZj1uZXcgbygiYT0xJmE9MiZiPTMiKTtmLmRlbGV0ZSgiYSIsMSksZi5kZWxldGUoImIiLHZvaWQgMCksZisiIiE9ImE9MiImJm4oYywiZGVsZXRlIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PXIpcmV0dXJuIGgodGhpcyxlKTt2YXIgbj1bXTt1KHRoaXMsKGZ1bmN0aW9uKGUsdCl7ZChuLHtrZXk6dCx2YWx1ZTplfSl9KSkscyh0LDEpO2Zvcih2YXIgYSxvPWkoZSksYz1pKHIpLGY9MCxnPTAscD0hMSxtPW4ubGVuZ3RoO2Y8bTspYT1uW2YrK10scHx8YS5rZXk9PT1vPyhwPSEwLGgodGhpcyxhLmtleSkpOmcrKztmb3IoO2c8bTspKGE9bltnKytdKS5rZXk9PT1vJiZhLnZhbHVlPT09Y3x8bCh0aGlzLGEua2V5LGEudmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDczMzA6KGUsdCxyKT0+e3ZhciBuPXIoODA1MiksYT1yKDE3MDIpLGk9cigxMzQwKSxzPXIoODA1Myksbz1VUkxTZWFyY2hQYXJhbXMsYz1vLnByb3RvdHlwZSxsPWEoYy5nZXRBbGwpLGg9YShjLmhhcyksdT1uZXcgbygiYT0xIik7IXUuaGFzKCJhIiwyKSYmdS5oYXMoImEiLHZvaWQgMCl8fG4oYywiaGFzIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxyPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PXIpcmV0dXJuIGgodGhpcyxlKTt2YXIgbj1sKHRoaXMsZSk7cyh0LDEpO2Zvcih2YXIgYT1pKHIpLG89MDtvPG4ubGVuZ3RoOylpZihuW28rK109PT1hKXJldHVybiEwO3JldHVybiExfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDE2Mzc6KGUsdCxyKT0+e3IoNTU1Nil9LDIwNjI6KGUsdCxyKT0+e3ZhciBuPXIoOTc4MSksYT1yKDE3MDIpLGk9cig3MDQ1KSxzPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUsbz1hKHMuZm9yRWFjaCk7biYmISgic2l6ZSJpbiBzKSYmaShzLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbigpe2UrK30pKSxlfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH0pfSw4Nzg5OihlLHQscik9PntyKDg3ODMpO3ZhciBuLGE9cigyMTA5KSxpPXIoOTc4MSkscz1yKDUxNDMpLG89cig3ODU0KSxjPXIoOTk3NCksbD1yKDE3MDIpLGg9cig4MDUyKSx1PXIoNzA0NSksZD1yKDU3ODcpLGY9cigyNTk3KSxnPXIoMTU3NCkscD1yKDg0NTcpLG09cigxNTg5KSxiPXIoODcxMCkuY29kZUF0LHk9cigzMTk3KSx3PXIoMTM0MCksdj1yKDgwMDMpLHg9cig4MDUzKSxTPXIoNTU1NiksQT1yKDk5MDkpLGs9QS5zZXQsQz1BLmdldHRlckZvcigiVVJMIiksTz1TLlVSTFNlYXJjaFBhcmFtcyxGPVMuZ2V0U3RhdGUsST1vLlVSTCxUPW8uVHlwZUVycm9yLE09by5wYXJzZUludCxFPU1hdGguZmxvb3IsUD1NYXRoLnBvdyxSPWwoIiIuY2hhckF0KSxOPWwoLy4vLmV4ZWMpLEQ9bChbXS5qb2luKSxCPWwoMS4udG9TdHJpbmcpLEw9bChbXS5wb3ApLF89bChbXS5wdXNoKSxqPWwoIiIucmVwbGFjZSksVT1sKFtdLnNoaWZ0KSwkPWwoIiIuc3BsaXQpLFg9bCgiIi5zbGljZSksSD1sKCIiLnRvTG93ZXJDYXNlKSxxPWwoW10udW5zaGlmdCksej0iSW52YWxpZCBzY2hlbWUiLEc9IkludmFsaWQgaG9zdCIsVz0iSW52YWxpZCBwb3J0IixWPS9bYS16XS9pLEs9L1tcZCstLmEtel0vaSxZPS9cZC8sSj0vXjB4L2ksWj0vXlswLTddKyQvLFE9L15cZCskLyxlZT0vXltcZGEtZl0rJC9pLHRlPS9bXDBcdFxuXHIgIyUvOjw+P0BbXFxcXV58XS8scmU9L1tcMFx0XG5cciAjLzo8Pj9AW1xcXF1efF0vLG5lPS9eW1x1MDAwMC1cdTAwMjBdKy8sYWU9LyhefFteXHUwMDAwLVx1MDAyMF0pW1x1MDAwMC1cdTAwMjBdKyQvLGllPS9bXHRcblxyXS9nLHNlPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7Zm9yKHQ9W10scj0wO3I8NDtyKyspcSh0LGUlMjU2KSxlPUUoZS8yNTYpO3JldHVybiBEKHQsIi4iKX1pZigib2JqZWN0Ij09dHlwZW9mIGUpe2Zvcih0PSIiLG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW51bGwscj0xLG49bnVsbCxhPTAsaT0wO2k8ODtpKyspMCE9PWVbaV0/KGE+ciYmKHQ9bixyPWEpLG49bnVsbCxhPTApOihudWxsPT09biYmKG49aSksKythKTtyZXR1cm4gYT5yJiYodD1uLHI9YSksdH0oZSkscj0wO3I8ODtyKyspYSYmMD09PWVbcl18fChhJiYoYT0hMSksbj09PXI/KHQrPXI/IjoiOiI6OiIsYT0hMCk6KHQrPUIoZVtyXSwxNikscjw3JiYodCs9IjoiKSkpO3JldHVybiJbIit0KyJdIn1yZXR1cm4gZX0sb2U9e30sY2U9Zyh7fSxvZSx7IiAiOjEsJyInOjEsIjwiOjEsIj4iOjEsImAiOjF9KSxsZT1nKHt9LGNlLHsiIyI6MSwiPyI6MSwieyI6MSwifSI6MX0pLGhlPWcoe30sbGUseyIvIjoxLCI6IjoxLCI7IjoxLCI9IjoxLCJAIjoxLCJbIjoxLCJcXCI6MSwiXSI6MSwiXiI6MSwifCI6MX0pLHVlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YihlLDApO3JldHVybiByPjMyJiZyPDEyNyYmIWYodCxlKT9lOmVuY29kZVVSSUNvbXBvbmVudChlKX0sZGU9e2Z0cDoyMSxmaWxlOm51bGwsaHR0cDo4MCxodHRwczo0NDMsd3M6ODAsd3NzOjQ0M30sZmU9ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gMj09ZS5sZW5ndGgmJk4oVixSKGUsMCkpJiYoIjoiPT0ocj1SKGUsMSkpfHwhdCYmInwiPT1yKX0sZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGUubGVuZ3RoPjEmJmZlKFgoZSwwLDIpKSYmKDI9PWUubGVuZ3RofHwiLyI9PT0odD1SKGUsMikpfHwiXFwiPT09dHx8Ij8iPT09dHx8IiMiPT09dCl9LHBlPWZ1bmN0aW9uKGUpe3JldHVybiIuIj09PWV8fCIlMmUiPT09SChlKX0sbWU9e30sYmU9e30seWU9e30sd2U9e30sdmU9e30seGU9e30sU2U9e30sQWU9e30sa2U9e30sQ2U9e30sT2U9e30sRmU9e30sSWU9e30sVGU9e30sTWU9e30sRWU9e30sUGU9e30sUmU9e30sTmU9e30sRGU9e30sQmU9e30sTGU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGEsaSxzPXcoZSk7aWYodCl7aWYoYT10aGlzLnBhcnNlKHMpKXRocm93IFQoYSk7dGhpcy5zZWFyY2hQYXJhbXM9bnVsbH1lbHNle2lmKHZvaWQgMCE9PXImJihuPW5ldyBMZShyLCEwKSksYT10aGlzLnBhcnNlKHMsbnVsbCxuKSl0aHJvdyBUKGEpOyhpPUYobmV3IE8pKS5iaW5kVVJMKHRoaXMpLHRoaXMuc2VhcmNoUGFyYW1zPWl9fTtMZS5wcm90b3R5cGU9e3R5cGU6IlVSTCIscGFyc2U6ZnVuY3Rpb24oZSx0LHIpe3ZhciBhLGkscyxvLGMsbD10aGlzLGg9dHx8bWUsdT0wLGQ9IiIsZz0hMSxiPSExLHk9ITE7Zm9yKGU9dyhlKSx0fHwobC5zY2hlbWU9IiIsbC51c2VybmFtZT0iIixsLnBhc3N3b3JkPSIiLGwuaG9zdD1udWxsLGwucG9ydD1udWxsLGwucGF0aD1bXSxsLnF1ZXJ5PW51bGwsbC5mcmFnbWVudD1udWxsLGwuY2Fubm90QmVBQmFzZVVSTD0hMSxlPWooZSxuZSwiIiksZT1qKGUsYWUsIiQxIikpLGU9aihlLGllLCIiKSxhPXAoZSk7dTw9YS5sZW5ndGg7KXtzd2l0Y2goaT1hW3VdLGgpe2Nhc2UgbWU6aWYoIWl8fCFOKFYsaSkpe2lmKHQpcmV0dXJuIHo7aD15ZTtjb250aW51ZX1kKz1IKGkpLGg9YmU7YnJlYWs7Y2FzZSBiZTppZihpJiYoTihLLGkpfHwiKyI9PWl8fCItIj09aXx8Ii4iPT1pKSlkKz1IKGkpO2Vsc2V7aWYoIjoiIT1pKXtpZih0KXJldHVybiB6O2Q9IiIsaD15ZSx1PTA7Y29udGludWV9aWYodCYmKGwuaXNTcGVjaWFsKCkhPWYoZGUsZCl8fCJmaWxlIj09ZCYmKGwuaW5jbHVkZXNDcmVkZW50aWFscygpfHxudWxsIT09bC5wb3J0KXx8ImZpbGUiPT1sLnNjaGVtZSYmIWwuaG9zdCkpcmV0dXJuO2lmKGwuc2NoZW1lPWQsdClyZXR1cm4gdm9pZChsLmlzU3BlY2lhbCgpJiZkZVtsLnNjaGVtZV09PWwucG9ydCYmKGwucG9ydD1udWxsKSk7ZD0iIiwiZmlsZSI9PWwuc2NoZW1lP2g9VGU6bC5pc1NwZWNpYWwoKSYmciYmci5zY2hlbWU9PWwuc2NoZW1lP2g9d2U6bC5pc1NwZWNpYWwoKT9oPUFlOiIvIj09YVt1KzFdPyhoPXZlLHUrKyk6KGwuY2Fubm90QmVBQmFzZVVSTD0hMCxfKGwucGF0aCwiIiksaD1OZSl9YnJlYWs7Y2FzZSB5ZTppZighcnx8ci5jYW5ub3RCZUFCYXNlVVJMJiYiIyIhPWkpcmV0dXJuIHo7aWYoci5jYW5ub3RCZUFCYXNlVVJMJiYiIyI9PWkpe2wuc2NoZW1lPXIuc2NoZW1lLGwucGF0aD1tKHIucGF0aCksbC5xdWVyeT1yLnF1ZXJ5LGwuZnJhZ21lbnQ9IiIsbC5jYW5ub3RCZUFCYXNlVVJMPSEwLGg9QmU7YnJlYWt9aD0iZmlsZSI9PXIuc2NoZW1lP1RlOnhlO2NvbnRpbnVlO2Nhc2Ugd2U6aWYoIi8iIT1pfHwiLyIhPWFbdSsxXSl7aD14ZTtjb250aW51ZX1oPWtlLHUrKzticmVhaztjYXNlIHZlOmlmKCIvIj09aSl7aD1DZTticmVha31oPVJlO2NvbnRpbnVlO2Nhc2UgeGU6aWYobC5zY2hlbWU9ci5zY2hlbWUsaT09bilsLnVzZXJuYW1lPXIudXNlcm5hbWUsbC5wYXNzd29yZD1yLnBhc3N3b3JkLGwuaG9zdD1yLmhvc3QsbC5wb3J0PXIucG9ydCxsLnBhdGg9bShyLnBhdGgpLGwucXVlcnk9ci5xdWVyeTtlbHNlIGlmKCIvIj09aXx8IlxcIj09aSYmbC5pc1NwZWNpYWwoKSloPVNlO2Vsc2UgaWYoIj8iPT1pKWwudXNlcm5hbWU9ci51c2VybmFtZSxsLnBhc3N3b3JkPXIucGFzc3dvcmQsbC5ob3N0PXIuaG9zdCxsLnBvcnQ9ci5wb3J0LGwucGF0aD1tKHIucGF0aCksbC5xdWVyeT0iIixoPURlO2Vsc2V7aWYoIiMiIT1pKXtsLnVzZXJuYW1lPXIudXNlcm5hbWUsbC5wYXNzd29yZD1yLnBhc3N3b3JkLGwuaG9zdD1yLmhvc3QsbC5wb3J0PXIucG9ydCxsLnBhdGg9bShyLnBhdGgpLGwucGF0aC5sZW5ndGgtLSxoPVJlO2NvbnRpbnVlfWwudXNlcm5hbWU9ci51c2VybmFtZSxsLnBhc3N3b3JkPXIucGFzc3dvcmQsbC5ob3N0PXIuaG9zdCxsLnBvcnQ9ci5wb3J0LGwucGF0aD1tKHIucGF0aCksbC5xdWVyeT1yLnF1ZXJ5LGwuZnJhZ21lbnQ9IiIsaD1CZX1icmVhaztjYXNlIFNlOmlmKCFsLmlzU3BlY2lhbCgpfHwiLyIhPWkmJiJcXCIhPWkpe2lmKCIvIiE9aSl7bC51c2VybmFtZT1yLnVzZXJuYW1lLGwucGFzc3dvcmQ9ci5wYXNzd29yZCxsLmhvc3Q9ci5ob3N0LGwucG9ydD1yLnBvcnQsaD1SZTtjb250aW51ZX1oPUNlfWVsc2UgaD1rZTticmVhaztjYXNlIEFlOmlmKGg9a2UsIi8iIT1pfHwiLyIhPVIoZCx1KzEpKWNvbnRpbnVlO3UrKzticmVhaztjYXNlIGtlOmlmKCIvIiE9aSYmIlxcIiE9aSl7aD1DZTtjb250aW51ZX1icmVhaztjYXNlIENlOmlmKCJAIj09aSl7ZyYmKGQ9IiU0MCIrZCksZz0hMCxzPXAoZCk7Zm9yKHZhciB2PTA7djxzLmxlbmd0aDt2Kyspe3ZhciB4PXNbdl07aWYoIjoiIT14fHx5KXt2YXIgUz11ZSh4LGhlKTt5P2wucGFzc3dvcmQrPVM6bC51c2VybmFtZSs9U31lbHNlIHk9ITB9ZD0iIn1lbHNlIGlmKGk9PW58fCIvIj09aXx8Ij8iPT1pfHwiIyI9PWl8fCJcXCI9PWkmJmwuaXNTcGVjaWFsKCkpe2lmKGcmJiIiPT1kKXJldHVybiJJbnZhbGlkIGF1dGhvcml0eSI7dS09cChkKS5sZW5ndGgrMSxkPSIiLGg9T2V9ZWxzZSBkKz1pO2JyZWFrO2Nhc2UgT2U6Y2FzZSBGZTppZih0JiYiZmlsZSI9PWwuc2NoZW1lKXtoPUVlO2NvbnRpbnVlfWlmKCI6IiE9aXx8Yil7aWYoaT09bnx8Ii8iPT1pfHwiPyI9PWl8fCIjIj09aXx8IlxcIj09aSYmbC5pc1NwZWNpYWwoKSl7aWYobC5pc1NwZWNpYWwoKSYmIiI9PWQpcmV0dXJuIEc7aWYodCYmIiI9PWQmJihsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKXx8bnVsbCE9PWwucG9ydCkpcmV0dXJuO2lmKG89bC5wYXJzZUhvc3QoZCkpcmV0dXJuIG87aWYoZD0iIixoPVBlLHQpcmV0dXJuO2NvbnRpbnVlfSJbIj09aT9iPSEwOiJdIj09aSYmKGI9ITEpLGQrPWl9ZWxzZXtpZigiIj09ZClyZXR1cm4gRztpZihvPWwucGFyc2VIb3N0KGQpKXJldHVybiBvO2lmKGQ9IiIsaD1JZSx0PT1GZSlyZXR1cm59YnJlYWs7Y2FzZSBJZTppZighTihZLGkpKXtpZihpPT1ufHwiLyI9PWl8fCI/Ij09aXx8IiMiPT1pfHwiXFwiPT1pJiZsLmlzU3BlY2lhbCgpfHx0KXtpZigiIiE9ZCl7dmFyIEE9TShkLDEwKTtpZihBPjY1NTM1KXJldHVybiBXO2wucG9ydD1sLmlzU3BlY2lhbCgpJiZBPT09ZGVbbC5zY2hlbWVdP251bGw6QSxkPSIifWlmKHQpcmV0dXJuO2g9UGU7Y29udGludWV9cmV0dXJuIFd9ZCs9aTticmVhaztjYXNlIFRlOmlmKGwuc2NoZW1lPSJmaWxlIiwiLyI9PWl8fCJcXCI9PWkpaD1NZTtlbHNle2lmKCFyfHwiZmlsZSIhPXIuc2NoZW1lKXtoPVJlO2NvbnRpbnVlfWlmKGk9PW4pbC5ob3N0PXIuaG9zdCxsLnBhdGg9bShyLnBhdGgpLGwucXVlcnk9ci5xdWVyeTtlbHNlIGlmKCI/Ij09aSlsLmhvc3Q9ci5ob3N0LGwucGF0aD1tKHIucGF0aCksbC5xdWVyeT0iIixoPURlO2Vsc2V7aWYoIiMiIT1pKXtnZShEKG0oYSx1KSwiIikpfHwobC5ob3N0PXIuaG9zdCxsLnBhdGg9bShyLnBhdGgpLGwuc2hvcnRlblBhdGgoKSksaD1SZTtjb250aW51ZX1sLmhvc3Q9ci5ob3N0LGwucGF0aD1tKHIucGF0aCksbC5xdWVyeT1yLnF1ZXJ5LGwuZnJhZ21lbnQ9IiIsaD1CZX19YnJlYWs7Y2FzZSBNZTppZigiLyI9PWl8fCJcXCI9PWkpe2g9RWU7YnJlYWt9ciYmImZpbGUiPT1yLnNjaGVtZSYmIWdlKEQobShhLHUpLCIiKSkmJihmZShyLnBhdGhbMF0sITApP18obC5wYXRoLHIucGF0aFswXSk6bC5ob3N0PXIuaG9zdCksaD1SZTtjb250aW51ZTtjYXNlIEVlOmlmKGk9PW58fCIvIj09aXx8IlxcIj09aXx8Ij8iPT1pfHwiIyI9PWkpe2lmKCF0JiZmZShkKSloPVJlO2Vsc2UgaWYoIiI9PWQpe2lmKGwuaG9zdD0iIix0KXJldHVybjtoPVBlfWVsc2V7aWYobz1sLnBhcnNlSG9zdChkKSlyZXR1cm4gbztpZigibG9jYWxob3N0Ij09bC5ob3N0JiYobC5ob3N0PSIiKSx0KXJldHVybjtkPSIiLGg9UGV9Y29udGludWV9ZCs9aTticmVhaztjYXNlIFBlOmlmKGwuaXNTcGVjaWFsKCkpe2lmKGg9UmUsIi8iIT1pJiYiXFwiIT1pKWNvbnRpbnVlfWVsc2UgaWYodHx8Ij8iIT1pKWlmKHR8fCIjIiE9aSl7aWYoaSE9biYmKGg9UmUsIi8iIT1pKSljb250aW51ZX1lbHNlIGwuZnJhZ21lbnQ9IiIsaD1CZTtlbHNlIGwucXVlcnk9IiIsaD1EZTticmVhaztjYXNlIFJlOmlmKGk9PW58fCIvIj09aXx8IlxcIj09aSYmbC5pc1NwZWNpYWwoKXx8IXQmJigiPyI9PWl8fCIjIj09aSkpe2lmKCIuLiI9PT0oYz1IKGM9ZCkpfHwiJTJlLiI9PT1jfHwiLiUyZSI9PT1jfHwiJTJlJTJlIj09PWM/KGwuc2hvcnRlblBhdGgoKSwiLyI9PWl8fCJcXCI9PWkmJmwuaXNTcGVjaWFsKCl8fF8obC5wYXRoLCIiKSk6cGUoZCk/Ii8iPT1pfHwiXFwiPT1pJiZsLmlzU3BlY2lhbCgpfHxfKGwucGF0aCwiIik6KCJmaWxlIj09bC5zY2hlbWUmJiFsLnBhdGgubGVuZ3RoJiZmZShkKSYmKGwuaG9zdCYmKGwuaG9zdD0iIiksZD1SKGQsMCkrIjoiKSxfKGwucGF0aCxkKSksZD0iIiwiZmlsZSI9PWwuc2NoZW1lJiYoaT09bnx8Ij8iPT1pfHwiIyI9PWkpKWZvcig7bC5wYXRoLmxlbmd0aD4xJiYiIj09PWwucGF0aFswXTspVShsLnBhdGgpOyI/Ij09aT8obC5xdWVyeT0iIixoPURlKToiIyI9PWkmJihsLmZyYWdtZW50PSIiLGg9QmUpfWVsc2UgZCs9dWUoaSxsZSk7YnJlYWs7Y2FzZSBOZToiPyI9PWk/KGwucXVlcnk9IiIsaD1EZSk6IiMiPT1pPyhsLmZyYWdtZW50PSIiLGg9QmUpOmkhPW4mJihsLnBhdGhbMF0rPXVlKGksb2UpKTticmVhaztjYXNlIERlOnR8fCIjIiE9aT9pIT1uJiYoIiciPT1pJiZsLmlzU3BlY2lhbCgpP2wucXVlcnkrPSIlMjciOmwucXVlcnkrPSIjIj09aT8iJTIzIjp1ZShpLG9lKSk6KGwuZnJhZ21lbnQ9IiIsaD1CZSk7YnJlYWs7Y2FzZSBCZTppIT1uJiYobC5mcmFnbWVudCs9dWUoaSxjZSkpfXUrK319LHBhcnNlSG9zdDpmdW5jdGlvbihlKXt2YXIgdCxyLG47aWYoIlsiPT1SKGUsMCkpe2lmKCJdIiE9UihlLGUubGVuZ3RoLTEpKXJldHVybiBHO2lmKHQ9ZnVuY3Rpb24oZSl7dmFyIHQscixuLGEsaSxzLG8sYz1bMCwwLDAsMCwwLDAsMCwwXSxsPTAsaD1udWxsLHU9MCxkPWZ1bmN0aW9uKCl7cmV0dXJuIFIoZSx1KX07aWYoIjoiPT1kKCkpe2lmKCI6IiE9UihlLDEpKXJldHVybjt1Kz0yLGg9KytsfWZvcig7ZCgpOyl7aWYoOD09bClyZXR1cm47aWYoIjoiIT1kKCkpe2Zvcih0PXI9MDtyPDQmJk4oZWUsZCgpKTspdD0xNip0K00oZCgpLDE2KSx1KysscisrO2lmKCIuIj09ZCgpKXtpZigwPT1yKXJldHVybjtpZih1LT1yLGw+NilyZXR1cm47Zm9yKG49MDtkKCk7KXtpZihhPW51bGwsbj4wKXtpZighKCIuIj09ZCgpJiZuPDQpKXJldHVybjt1Kyt9aWYoIU4oWSxkKCkpKXJldHVybjtmb3IoO04oWSxkKCkpOyl7aWYoaT1NKGQoKSwxMCksbnVsbD09PWEpYT1pO2Vsc2V7aWYoMD09YSlyZXR1cm47YT0xMCphK2l9aWYoYT4yNTUpcmV0dXJuO3UrK31jW2xdPTI1NipjW2xdK2EsMiE9KytuJiY0IT1ufHxsKyt9aWYoNCE9bilyZXR1cm47YnJlYWt9aWYoIjoiPT1kKCkpe2lmKHUrKywhZCgpKXJldHVybn1lbHNlIGlmKGQoKSlyZXR1cm47Y1tsKytdPXR9ZWxzZXtpZihudWxsIT09aClyZXR1cm47dSsrLGg9KytsfX1pZihudWxsIT09aClmb3Iocz1sLWgsbD03OzAhPWwmJnM+MDspbz1jW2xdLGNbbC0tXT1jW2grcy0xXSxjW2grLS1zXT1vO2Vsc2UgaWYoOCE9bClyZXR1cm47cmV0dXJuIGN9KFgoZSwxLC0xKSksIXQpcmV0dXJuIEc7dGhpcy5ob3N0PXR9ZWxzZSBpZih0aGlzLmlzU3BlY2lhbCgpKXtpZihlPXkoZSksTih0ZSxlKSlyZXR1cm4gRztpZih0PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGkscyxvLGM9JChlLCIuIik7aWYoYy5sZW5ndGgmJiIiPT1jW2MubGVuZ3RoLTFdJiZjLmxlbmd0aC0tLCh0PWMubGVuZ3RoKT40KXJldHVybiBlO2ZvcihyPVtdLG49MDtuPHQ7bisrKXtpZigiIj09KGE9Y1tuXSkpcmV0dXJuIGU7aWYoaT0xMCxhLmxlbmd0aD4xJiYiMCI9PVIoYSwwKSYmKGk9TihKLGEpPzE2OjgsYT1YKGEsOD09aT8xOjIpKSwiIj09PWEpcz0wO2Vsc2V7aWYoIU4oMTA9PWk/UTo4PT1pP1o6ZWUsYSkpcmV0dXJuIGU7cz1NKGEsaSl9XyhyLHMpfWZvcihuPTA7bjx0O24rKylpZihzPXJbbl0sbj09dC0xKXtpZihzPj1QKDI1Niw1LXQpKXJldHVybiBudWxsfWVsc2UgaWYocz4yNTUpcmV0dXJuIG51bGw7Zm9yKG89TChyKSxuPTA7bjxyLmxlbmd0aDtuKyspbys9cltuXSpQKDI1NiwzLW4pO3JldHVybiBvfShlKSxudWxsPT09dClyZXR1cm4gRzt0aGlzLmhvc3Q9dH1lbHNle2lmKE4ocmUsZSkpcmV0dXJuIEc7Zm9yKHQ9IiIscj1wKGUpLG49MDtuPHIubGVuZ3RoO24rKyl0Kz11ZShyW25dLG9lKTt0aGlzLmhvc3Q9dH19LGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydDpmdW5jdGlvbigpe3JldHVybiF0aGlzLmhvc3R8fHRoaXMuY2Fubm90QmVBQmFzZVVSTHx8ImZpbGUiPT10aGlzLnNjaGVtZX0saW5jbHVkZXNDcmVkZW50aWFsczpmdW5jdGlvbigpe3JldHVybiIiIT10aGlzLnVzZXJuYW1lfHwiIiE9dGhpcy5wYXNzd29yZH0saXNTcGVjaWFsOmZ1bmN0aW9uKCl7cmV0dXJuIGYoZGUsdGhpcy5zY2hlbWUpfSxzaG9ydGVuUGF0aDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGF0aCx0PWUubGVuZ3RoOyF0fHwiZmlsZSI9PXRoaXMuc2NoZW1lJiYxPT10JiZmZShlWzBdLCEwKXx8ZS5sZW5ndGgtLX0sc2VyaWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuc2NoZW1lLHI9ZS51c2VybmFtZSxuPWUucGFzc3dvcmQsYT1lLmhvc3QsaT1lLnBvcnQscz1lLnBhdGgsbz1lLnF1ZXJ5LGM9ZS5mcmFnbWVudCxsPXQrIjoiO3JldHVybiBudWxsIT09YT8obCs9Ii8vIixlLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSYmKGwrPXIrKG4/IjoiK246IiIpKyJAIiksbCs9c2UoYSksbnVsbCE9PWkmJihsKz0iOiIraSkpOiJmaWxlIj09dCYmKGwrPSIvLyIpLGwrPWUuY2Fubm90QmVBQmFzZVVSTD9zWzBdOnMubGVuZ3RoPyIvIitEKHMsIi8iKToiIixudWxsIT09byYmKGwrPSI/IitvKSxudWxsIT09YyYmKGwrPSIjIitjKSxsfSxzZXRIcmVmOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyc2UoZSk7aWYodCl0aHJvdyBUKHQpO3RoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpfSxnZXRPcmlnaW46ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnNjaGVtZSx0PXRoaXMucG9ydDtpZigiYmxvYiI9PWUpdHJ5e3JldHVybiBuZXcgX2UoZS5wYXRoWzBdKS5vcmlnaW59Y2F0Y2goZSl7cmV0dXJuIm51bGwifXJldHVybiJmaWxlIiE9ZSYmdGhpcy5pc1NwZWNpYWwoKT9lKyI6Ly8iK3NlKHRoaXMuaG9zdCkrKG51bGwhPT10PyI6Iit0OiIiKToibnVsbCJ9LGdldFByb3RvY29sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2NoZW1lKyI6In0sc2V0UHJvdG9jb2w6ZnVuY3Rpb24oZSl7dGhpcy5wYXJzZSh3KGUpKyI6IixtZSl9LGdldFVzZXJuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXNlcm5hbWV9LHNldFVzZXJuYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PXAodyhlKSk7aWYoIXRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkpe3RoaXMudXNlcm5hbWU9IiI7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspdGhpcy51c2VybmFtZSs9dWUodFtyXSxoZSl9fSxnZXRQYXNzd29yZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhc3N3b3JkfSxzZXRQYXNzd29yZDpmdW5jdGlvbihlKXt2YXIgdD1wKHcoZSkpO2lmKCF0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKXt0aGlzLnBhc3N3b3JkPSIiO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXRoaXMucGFzc3dvcmQrPXVlKHRbcl0saGUpfX0sZ2V0SG9zdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaG9zdCx0PXRoaXMucG9ydDtyZXR1cm4gbnVsbD09PWU/IiI6bnVsbD09PXQ/c2UoZSk6c2UoZSkrIjoiK3R9LHNldEhvc3Q6ZnVuY3Rpb24oZSl7dGhpcy5jYW5ub3RCZUFCYXNlVVJMfHx0aGlzLnBhcnNlKGUsT2UpfSxnZXRIb3N0bmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaG9zdDtyZXR1cm4gbnVsbD09PWU/IiI6c2UoZSl9LHNldEhvc3RuYW1lOmZ1bmN0aW9uKGUpe3RoaXMuY2Fubm90QmVBQmFzZVVSTHx8dGhpcy5wYXJzZShlLEZlKX0sZ2V0UG9ydDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucG9ydDtyZXR1cm4gbnVsbD09PWU/IiI6dyhlKX0sc2V0UG9ydDpmdW5jdGlvbihlKXt0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpfHwoIiI9PShlPXcoZSkpP3RoaXMucG9ydD1udWxsOnRoaXMucGFyc2UoZSxJZSkpfSxnZXRQYXRobmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGF0aDtyZXR1cm4gdGhpcy5jYW5ub3RCZUFCYXNlVVJMP2VbMF06ZS5sZW5ndGg/Ii8iK0QoZSwiLyIpOiIifSxzZXRQYXRobmFtZTpmdW5jdGlvbihlKXt0aGlzLmNhbm5vdEJlQUJhc2VVUkx8fCh0aGlzLnBhdGg9W10sdGhpcy5wYXJzZShlLFBlKSl9LGdldFNlYXJjaDpmdW5jdGlvbigpe3ZhciBlPXRoaXMucXVlcnk7cmV0dXJuIGU/Ij8iK2U6IiJ9LHNldFNlYXJjaDpmdW5jdGlvbihlKXsiIj09KGU9dyhlKSk/dGhpcy5xdWVyeT1udWxsOigiPyI9PVIoZSwwKSYmKGU9WChlLDEpKSx0aGlzLnF1ZXJ5PSIiLHRoaXMucGFyc2UoZSxEZSkpLHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpfSxnZXRTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWFyY2hQYXJhbXMuZmFjYWRlfSxnZXRIYXNoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5mcmFnbWVudDtyZXR1cm4gZT8iIyIrZToiIn0sc2V0SGFzaDpmdW5jdGlvbihlKXsiIiE9KGU9dyhlKSk/KCIjIj09UihlLDApJiYoZT1YKGUsMSkpLHRoaXMuZnJhZ21lbnQ9IiIsdGhpcy5wYXJzZShlLEJlKSk6dGhpcy5mcmFnbWVudD1udWxsfSx1cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLnF1ZXJ5PXRoaXMuc2VhcmNoUGFyYW1zLnNlcmlhbGl6ZSgpfHxudWxsfX07dmFyIF9lPWZ1bmN0aW9uKGUpe3ZhciB0PWQodGhpcyxqZSkscj14KGFyZ3VtZW50cy5sZW5ndGgsMSk+MT9hcmd1bWVudHNbMV06dm9pZCAwLG49ayh0LG5ldyBMZShlLCExLHIpKTtpfHwodC5ocmVmPW4uc2VyaWFsaXplKCksdC5vcmlnaW49bi5nZXRPcmlnaW4oKSx0LnByb3RvY29sPW4uZ2V0UHJvdG9jb2woKSx0LnVzZXJuYW1lPW4uZ2V0VXNlcm5hbWUoKSx0LnBhc3N3b3JkPW4uZ2V0UGFzc3dvcmQoKSx0Lmhvc3Q9bi5nZXRIb3N0KCksdC5ob3N0bmFtZT1uLmdldEhvc3RuYW1lKCksdC5wb3J0PW4uZ2V0UG9ydCgpLHQucGF0aG5hbWU9bi5nZXRQYXRobmFtZSgpLHQuc2VhcmNoPW4uZ2V0U2VhcmNoKCksdC5zZWFyY2hQYXJhbXM9bi5nZXRTZWFyY2hQYXJhbXMoKSx0Lmhhc2g9bi5nZXRIYXNoKCkpfSxqZT1fZS5wcm90b3R5cGUsVWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcylbZV0oKX0sc2V0OnQmJmZ1bmN0aW9uKGUpe3JldHVybiBDKHRoaXMpW3RdKGUpfSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH19O2lmKGkmJih1KGplLCJocmVmIixVZSgic2VyaWFsaXplIiwic2V0SHJlZiIpKSx1KGplLCJvcmlnaW4iLFVlKCJnZXRPcmlnaW4iKSksdShqZSwicHJvdG9jb2wiLFVlKCJnZXRQcm90b2NvbCIsInNldFByb3RvY29sIikpLHUoamUsInVzZXJuYW1lIixVZSgiZ2V0VXNlcm5hbWUiLCJzZXRVc2VybmFtZSIpKSx1KGplLCJwYXNzd29yZCIsVWUoImdldFBhc3N3b3JkIiwic2V0UGFzc3dvcmQiKSksdShqZSwiaG9zdCIsVWUoImdldEhvc3QiLCJzZXRIb3N0IikpLHUoamUsImhvc3RuYW1lIixVZSgiZ2V0SG9zdG5hbWUiLCJzZXRIb3N0bmFtZSIpKSx1KGplLCJwb3J0IixVZSgiZ2V0UG9ydCIsInNldFBvcnQiKSksdShqZSwicGF0aG5hbWUiLFVlKCJnZXRQYXRobmFtZSIsInNldFBhdGhuYW1lIikpLHUoamUsInNlYXJjaCIsVWUoImdldFNlYXJjaCIsInNldFNlYXJjaCIpKSx1KGplLCJzZWFyY2hQYXJhbXMiLFVlKCJnZXRTZWFyY2hQYXJhbXMiKSksdShqZSwiaGFzaCIsVWUoImdldEhhc2giLCJzZXRIYXNoIikpKSxoKGplLCJ0b0pTT04iLChmdW5jdGlvbigpe3JldHVybiBDKHRoaXMpLnNlcmlhbGl6ZSgpfSkse2VudW1lcmFibGU6ITB9KSxoKGplLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEModGhpcykuc2VyaWFsaXplKCl9KSx7ZW51bWVyYWJsZTohMH0pLEkpe3ZhciAkZT1JLmNyZWF0ZU9iamVjdFVSTCxYZT1JLnJldm9rZU9iamVjdFVSTDskZSYmaChfZSwiY3JlYXRlT2JqZWN0VVJMIixjKCRlLEkpKSxYZSYmaChfZSwicmV2b2tlT2JqZWN0VVJMIixjKFhlLEkpKX12KF9lLCJVUkwiKSxhKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOiFzLHNoYW06IWl9LHtVUkw6X2V9KX0sMjg1OihlLHQscik9PntyKDg3ODkpfX0sdD17fTtmdW5jdGlvbiByKG4pe3ZhciBhPXRbbl07aWYodm9pZCAwIT09YSlyZXR1cm4gYS5leHBvcnRzO3ZhciBpPXRbbl09e2lkOm4sbG9hZGVkOiExLGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLHIpLGkubG9hZGVkPSEwLGkuZXhwb3J0c31yLmFtZE89e30sci5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gci5kKHQse2E6dH0pLHR9LHIuZD0oZSx0KT0+e2Zvcih2YXIgbiBpbiB0KXIubyh0LG4pJiYhci5vKGUsbikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0sci5nPWZ1bmN0aW9uKCl7aWYoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCl9Y2F0Y2goZSl7aWYoIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksci5obWQ9ZT0+KChlPU9iamVjdC5jcmVhdGUoZSkpLmNoaWxkcmVufHwoZS5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImV4cG9ydHMiLHtlbnVtZXJhYmxlOiEwLHNldDooKT0+e3Rocm93IG5ldyBFcnJvcigiRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogIitlLmlkKX19KSxlKSxyLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLHIoNzc1Nyl9KSgpOw==",S="KCgpPT57InVzZSBzdHJpY3QiO3ZhciBfX3dlYnBhY2tfbW9kdWxlc19fPSh7Ii4vcGRmLmpzIjooKG1vZHVsZSxfX3dlYnBhY2tfZXhwb3J0c19fLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19nbG9iYWxfdGhpc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLmdsb2JhbC10aGlzLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmdsb2JhbC10aGlzLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19nbG9iYWxfdGhpc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19nbG9iYWxfdGhpc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3N0YXJ0c193aXRoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdGFydHMtd2l0aC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3N0YXJ0c193aXRoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19zdGFydHNfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2V4ZWNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2V4ZWNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2V4ZWNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19tYXRjaF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5tYXRjaC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19tYXRjaF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfbWF0Y2hfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9kb21fY29sbGVjdGlvbnNfaXRlcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9kb21fY29sbGVjdGlvbnNfaXRlcmF0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9jb2xsZWN0aW9uc19pdGVyYXRvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc193ZWJfdXJsX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfdXJsX3NlYXJjaF9wYXJhbXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfdXJsX3NlYXJjaF9wYXJhbXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzZfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9zZWFyY2hfcGFyYW1zX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfdXJsX3NlYXJjaF9wYXJhbXNfZGVsZXRlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuZGVsZXRlLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfdXJsX3NlYXJjaF9wYXJhbXNfZGVsZXRlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV83X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX3dlYl91cmxfc2VhcmNoX3BhcmFtc19kZWxldGVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzdfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl91cmxfc2VhcmNoX3BhcmFtc19oYXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuaGFzLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl91cmxfc2VhcmNoX3BhcmFtc19oYXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzhfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9zZWFyY2hfcGFyYW1zX2hhc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfOF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9zZWFyY2hfcGFyYW1zX3NpemVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9zZWFyY2hfcGFyYW1zX3NpemVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX3VybF9zZWFyY2hfcGFyYW1zX3NpemVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzlfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF90b19zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEwX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfdG9fc3RyaW5nX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfdG9fc3RyaW5nX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfYnVmZmVyX3NsaWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LWJ1ZmZlci5zbGljZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuc2xpY2UuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2J1ZmZlcl9zbGljZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfYnVmZmVyX3NsaWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdWludDhfYXJyYXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtYXJyYXkuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtYXJyYXkuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3VpbnQ4X2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xMl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV91aW50OF9hcnJheV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTJfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2F0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmF0LmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmF0LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9hdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTNfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfYXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzEzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9maWxsX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbGwuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmlsbC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfZmlsbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTRfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfZmlsbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTRfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ZpbmRfbGFzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maW5kLWxhc3QuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC1sYXN0LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9maW5kX2xhc3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE1X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ZpbmRfbGFzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTVfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ZpbmRfbGFzdF9pbmRleF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maW5kLWxhc3QtaW5kZXguanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC1sYXN0LWluZGV4LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9maW5kX2xhc3RfaW5kZXhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE2X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ZpbmRfbGFzdF9pbmRleF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTZfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3NldF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zZXQuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuc2V0LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9zZXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE3X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3NldF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTdfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3NvcnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuc29ydC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5zb3J0LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9zb3J0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9zb3J0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xOF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdG9fbG9jYWxlX3N0cmluZ19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMTlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1sb2NhbGUtc3RyaW5nLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnRvLWxvY2FsZS1zdHJpbmcuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3RvX2xvY2FsZV9zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3RvX2xvY2FsZV9zdHJpbmdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzE5X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV90b19yZXZlcnNlZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1yZXZlcnNlZC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1yZXZlcnNlZC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdG9fcmV2ZXJzZWRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIwX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3RvX3JldmVyc2VkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdG9fc29ydGVkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnRvLXNvcnRlZC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1zb3J0ZWQuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3RvX3NvcnRlZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdG9fc29ydGVkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yMV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS53aXRoLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LndpdGguanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIyX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIyX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfcmVwbGFjZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3JlcGxhY2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzIzX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19yZXBsYWNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yM19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3JlcGxhY2VfYWxsX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLWFsbC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS1hbGwuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19yZXBsYWNlX2FsbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjRfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3JlcGxhY2VfYWxsX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfcHVzaF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3B1c2hfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI1X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3B1c2hfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI1X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19lcnJvcl9jYXVzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5lcnJvci5jYXVzZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5lcnJvci5jYXVzZS5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfZXJyb3JfY2F1c2VfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI2X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2Vycm9yX2NhdXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yNl9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdWludDMyX2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yN19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnVpbnQzMi1hcnJheS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50MzItYXJyYXkuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3VpbnQzMl9hcnJheV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjdfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfdWludDMyX2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yN19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfaW5jbHVkZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2luY2x1ZGVzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yOF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjhfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaW5jbHVkZXMuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfaW5jbHVkZXNfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzI5X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19pbmNsdWRlc19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMjlfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3dlYWtfbWFwX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLndlYWstbWFwLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLndlYWstbWFwLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc193ZWFrX21hcF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfd2Vha19tYXBfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMwX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19wcm9taXNlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcHJvbWlzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcHJvbWlzZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzFfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9zZWxmX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL3dlYi5zZWxmLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5zZWxmLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfc2VsZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzJfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfd2ViX3NlbGZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMyX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfc3BsaXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3NwbGl0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zM19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfc3BsaXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzMzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19zeW1ib2xfZGVzY3JpcHRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3ltYm9sX2Rlc2NyaXB0aW9uX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19zeW1ib2xfZGVzY3JpcHRpb25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19vYmplY3RfaGFzX293bl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaGFzLW93bi5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaGFzLW93bi5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfb2JqZWN0X2hhc19vd25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM1X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX29iamVjdF9oYXNfb3duX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX3Rlc3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM2X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF90ZXN0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zNl9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfdGVzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzZfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3JlZmxlY3RfdG9fc3RyaW5nX3RhZ19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LnRvLXN0cmluZy10YWcuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC50by1zdHJpbmctdGFnLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19yZWZsZWN0X3RvX3N0cmluZ190YWdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM3X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3JlZmxlY3RfdG9fc3RyaW5nX3RhZ19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzdfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZpbmRfbGFzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWxhc3QuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1sYXN0LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9maW5kX2xhc3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM4X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZpbmRfbGFzdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzhfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2J1ZmZlcl9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuY29uc3RydWN0b3IuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLmNvbnN0cnVjdG9yLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9idWZmZXJfY29uc3RydWN0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzM5X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2J1ZmZlcl9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMzlfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZpbmRfbGFzdF9pbmRleF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWxhc3QtaW5kZXguanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1sYXN0LWluZGV4LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9maW5kX2xhc3RfaW5kZXhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQwX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZpbmRfbGFzdF9pbmRleF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDBfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X3VpbnQ4X2NsYW1wZWRfYXJyYXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQxX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtY2xhbXBlZC1hcnJheS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50OC1jbGFtcGVkLWFycmF5LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV91aW50OF9jbGFtcGVkX2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV91aW50OF9jbGFtcGVkX2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80MV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfc29ydF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3NvcnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQyX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3NvcnRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQyX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV93aXRoX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80M19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LndpdGguanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkud2l0aC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDNfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ludDhfYXJyYXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW50OC1hcnJheS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pbnQ4LWFycmF5LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9pbnQ4X2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80NF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9pbnQ4X2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80NF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfb2JqZWN0X2Fzc2lnbl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX29iamVjdF9hc3NpZ25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ1X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX29iamVjdF9hc3NpZ25fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ1X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2V4Y2VwdGlvbl9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi5jb25zdHJ1Y3Rvci5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi5jb25zdHJ1Y3Rvci5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9leGNlcHRpb25fY29uc3RydWN0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ2X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX3dlYl9kb21fZXhjZXB0aW9uX2NvbnN0cnVjdG9yX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80Nl9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX2RvbV9leGNlcHRpb25fc3RhY2tfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ3X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1leGNlcHRpb24uc3RhY2suanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1leGNlcHRpb24uc3RhY2suanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9kb21fZXhjZXB0aW9uX3N0YWNrX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80N19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2V4Y2VwdGlvbl9zdGFja19qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDdfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9kb21fZXhjZXB0aW9uX3RvX3N0cmluZ190YWdfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1leGNlcHRpb24udG8tc3RyaW5nLXRhZy5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi50by1zdHJpbmctdGFnLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2V4Y2VwdGlvbl90b19zdHJpbmdfdGFnX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80OF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc193ZWJfZG9tX2V4Y2VwdGlvbl90b19zdHJpbmdfdGFnX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80OF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfd2ViX3N0cnVjdHVyZWRfY2xvbmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzQ5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvd2ViLnN0cnVjdHVyZWQtY2xvbmUuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnN0cnVjdHVyZWQtY2xvbmUuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX3dlYl9zdHJ1Y3R1cmVkX2Nsb25lX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80OV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc193ZWJfc3RydWN0dXJlZF9jbG9uZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNDlfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3Byb21pc2VfZmluYWxseV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHkuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19wcm9taXNlX2ZpbmFsbHlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUwX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3Byb21pc2VfZmluYWxseV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTBfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmNvbnN0cnVjdG9yLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfY29uc3RydWN0b3JfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUxX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9jb25zdHJ1Y3Rvcl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTFfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3JlZ2V4cF9kb3RfYWxsX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81Ml9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5kb3QtYWxsLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5kb3QtYWxsLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZG90X2FsbF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTJfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2RvdF9hbGxfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUyX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZmxhZ3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5mbGFncy5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcmVnZXhwX2ZsYWdzX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81M19fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19yZWdleHBfZmxhZ3NfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzUzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19qc29uX3N0cmluZ2lmeV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfanNvbl9zdHJpbmdpZnlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU0X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2pzb25fc3RyaW5naWZ5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81NF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfbnVtYmVyX3RvX2ZpeGVkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81NV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci50by1maXhlZC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX251bWJlcl90b19maXhlZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTVfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfbnVtYmVyX3RvX2ZpeGVkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81NV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2VuZHNfd2l0aF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTZfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuZW5kcy13aXRoLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5lbmRzLXdpdGguanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19lbmRzX3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU2X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19lbmRzX3dpdGhfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU2X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19wYXJzZV9mbG9hdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5wYXJzZS1mbG9hdC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wYXJzZS1mbG9hdC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcGFyc2VfZmxvYXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU3X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3BhcnNlX2Zsb2F0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81N19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfbWF0aF9oeXBvdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNThfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5tYXRoLmh5cG90LmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguaHlwb3QuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX21hdGhfaHlwb3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU4X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX21hdGhfaHlwb3RfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU4X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9hdF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNTlfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5hdC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5hdC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfYXRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzU5X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2F0X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81OV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2F0X2FsdGVybmF0aXZlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82MF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5hdC1hbHRlcm5hdGl2ZS5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuYXQtYWx0ZXJuYXRpdmUuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ19hdF9hbHRlcm5hdGl2ZV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX2F0X2FsdGVybmF0aXZlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82MF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcGFyc2VfaW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82MV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnBhcnNlLWludC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wYXJzZS1pbnQuanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3BhcnNlX2ludF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcGFyc2VfaW50X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82MV9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfc3RyaW5nX3RyaW1fanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYyX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanNcIik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ190cmltX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82Ml9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfdHJpbV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjJfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3R5cGVkX2FycmF5X2ludDMyX2FycmF5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82M19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDMyLWFycmF5LmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDMyLWFycmF5LmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc190eXBlZF9hcnJheV9pbnQzMl9hcnJheV9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjNfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfdHlwZWRfYXJyYXlfaW50MzJfYXJyYXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzYzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19wcm9taXNlX2FsbF9zZXR0bGVkX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82NF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYWxsLXNldHRsZWQuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfcHJvbWlzZV9hbGxfc2V0dGxlZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjRfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfcHJvbWlzZV9hbGxfc2V0dGxlZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjRfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ190cmltX2VuZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS1lbmQuanMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0tZW5kLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19zdHJpbmdfdHJpbV9lbmRfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY1X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX3N0cmluZ190cmltX2VuZF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjVfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X2ZsYXRfbWFwX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82Nl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzXCIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV9mbGF0X21hcF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjZfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfZmxhdF9tYXBfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY2X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIGNvcmVfanNfbW9kdWxlc19lc19hcnJheV91bnNjb3BhYmxlc19mbGF0X21hcF9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNjdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS51bnNjb3BhYmxlcy5mbGF0LW1hcC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS51bnNjb3BhYmxlcy5mbGF0LW1hcC5qc1wiKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBjb3JlX2pzX21vZHVsZXNfZXNfYXJyYXlfdW5zY29wYWJsZXNfZmxhdF9tYXBfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzY3X19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oY29yZV9qc19tb2R1bGVzX2VzX2FycmF5X3Vuc2NvcGFibGVzX2ZsYXRfbWFwX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82N19fKTtcbi8qIG1vZHVsZSBkZWNvcmF0b3IgKi8gbW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXy5obWQobW9kdWxlKTtcbmZ1bmN0aW9uIF9jbGFzc1ByaXZhdGVGaWVsZERlc3RydWN0dXJlU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7IHZhciBkZXNjcmlwdG9yID0gX2NsYXNzRXh0cmFjdEZpZWxkRGVzY3JpcHRvcihyZWNlaXZlciwgcHJpdmF0ZU1hcCwgXCJzZXRcIik7IHJldHVybiBfY2xhc3NBcHBseURlc2NyaXB0b3JEZXN0cnVjdHVyZVNldChyZWNlaXZlciwgZGVzY3JpcHRvcik7IH1cbmZ1bmN0aW9uIF9jbGFzc0FwcGx5RGVzY3JpcHRvckRlc3RydWN0dXJlU2V0KHJlY2VpdmVyLCBkZXNjcmlwdG9yKSB7IGlmIChkZXNjcmlwdG9yLnNldCkgeyBpZiAoIShcIl9fZGVzdHJPYmpcIiBpbiBkZXNjcmlwdG9yKSkgeyBkZXNjcmlwdG9yLl9fZGVzdHJPYmogPSB7IHNldCB2YWx1ZSh2KSB7IGRlc2NyaXB0b3Iuc2V0LmNhbGwocmVjZWl2ZXIsIHYpOyB9IH07IH0gcmV0dXJuIGRlc2NyaXB0b3IuX19kZXN0ck9iajsgfSBlbHNlIHsgaWYgKCFkZXNjcmlwdG9yLndyaXRhYmxlKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHJlYWQgb25seSBwcml2YXRlIGZpZWxkXCIpOyB9IHJldHVybiBkZXNjcmlwdG9yOyB9IH1cbmZ1bmN0aW9uIF9jbGFzc1N0YXRpY1ByaXZhdGVNZXRob2RHZXQocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IsIG1ldGhvZCkgeyBfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNBY2Nlc3MocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IpOyByZXR1cm4gbWV0aG9kOyB9XG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KSksIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsga2V5ID0gX3RvUHJvcGVydHlLZXkoa2V5KTsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5mdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHsgdmFyIGtleSA9IF90b1ByaW1pdGl2ZShhcmcsIFwic3RyaW5nXCIpOyByZXR1cm4gdHlwZW9mIGtleSA9PT0gXCJzeW1ib2xcIiA/IGtleSA6IFN0cmluZyhrZXkpOyB9XG5mdW5jdGlvbiBfdG9QcmltaXRpdmUoaW5wdXQsIGhpbnQpIHsgaWYgKHR5cGVvZiBpbnB1dCAhPT0gXCJvYmplY3RcIiB8fCBpbnB1dCA9PT0gbnVsbCkgcmV0dXJuIGlucHV0OyB2YXIgcHJpbSA9IGlucHV0W1N5bWJvbC50b1ByaW1pdGl2ZV07IGlmIChwcmltICE9PSB1bmRlZmluZWQpIHsgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7IGlmICh0eXBlb2YgcmVzICE9PSBcIm9iamVjdFwiKSByZXR1cm4gcmVzOyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7IH0gcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7IH1cbmZ1bmN0aW9uIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyhvYmosIHByaXZhdGVTZXQpIHsgX2NoZWNrUHJpdmF0ZVJlZGVjbGFyYXRpb24ob2JqLCBwcml2YXRlU2V0KTsgcHJpdmF0ZVNldC5hZGQob2JqKTsgfVxuZnVuY3Rpb24gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldChyZWNlaXZlciwgcHJpdmF0ZVNldCwgZm4pIHsgaWYgKCFwcml2YXRlU2V0LmhhcyhyZWNlaXZlcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7IH0gcmV0dXJuIGZuOyB9XG5mdW5jdGlvbiBfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjU2V0KHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yLCBkZXNjcmlwdG9yLCB2YWx1ZSkgeyBfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNBY2Nlc3MocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IpOyBfY2xhc3NDaGVja1ByaXZhdGVTdGF0aWNGaWVsZERlc2NyaXB0b3IoZGVzY3JpcHRvciwgXCJzZXRcIik7IF9jbGFzc0FwcGx5RGVzY3JpcHRvclNldChyZWNlaXZlciwgZGVzY3JpcHRvciwgdmFsdWUpOyByZXR1cm4gdmFsdWU7IH1cbmZ1bmN0aW9uIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQocmVjZWl2ZXIsIGNsYXNzQ29uc3RydWN0b3IsIGRlc2NyaXB0b3IpIHsgX2NsYXNzQ2hlY2tQcml2YXRlU3RhdGljQWNjZXNzKHJlY2VpdmVyLCBjbGFzc0NvbnN0cnVjdG9yKTsgX2NsYXNzQ2hlY2tQcml2YXRlU3RhdGljRmllbGREZXNjcmlwdG9yKGRlc2NyaXB0b3IsIFwiZ2V0XCIpOyByZXR1cm4gX2NsYXNzQXBwbHlEZXNjcmlwdG9yR2V0KHJlY2VpdmVyLCBkZXNjcmlwdG9yKTsgfVxuZnVuY3Rpb24gX2NsYXNzQ2hlY2tQcml2YXRlU3RhdGljRmllbGREZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGFjdGlvbikgeyBpZiAoZGVzY3JpcHRvciA9PT0gdW5kZWZpbmVkKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gXCIgKyBhY3Rpb24gKyBcIiBwcml2YXRlIHN0YXRpYyBmaWVsZCBiZWZvcmUgaXRzIGRlY2xhcmF0aW9uXCIpOyB9IH1cbmZ1bmN0aW9uIF9jbGFzc0NoZWNrUHJpdmF0ZVN0YXRpY0FjY2VzcyhyZWNlaXZlciwgY2xhc3NDb25zdHJ1Y3RvcikgeyBpZiAocmVjZWl2ZXIgIT09IGNsYXNzQ29uc3RydWN0b3IpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgc3RhdGljIGFjY2VzcyBvZiB3cm9uZyBwcm92ZW5hbmNlXCIpOyB9IH1cbmZ1bmN0aW9uIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKG9iaiwgcHJpdmF0ZU1hcCwgdmFsdWUpIHsgX2NoZWNrUHJpdmF0ZVJlZGVjbGFyYXRpb24ob2JqLCBwcml2YXRlTWFwKTsgcHJpdmF0ZU1hcC5zZXQob2JqLCB2YWx1ZSk7IH1cbmZ1bmN0aW9uIF9jaGVja1ByaXZhdGVSZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZUNvbGxlY3Rpb24pIHsgaWYgKHByaXZhdGVDb2xsZWN0aW9uLmhhcyhvYmopKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdFwiKTsgfSB9XG5mdW5jdGlvbiBfY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHsgdmFyIGRlc2NyaXB0b3IgPSBfY2xhc3NFeHRyYWN0RmllbGREZXNjcmlwdG9yKHJlY2VpdmVyLCBwcml2YXRlTWFwLCBcImdldFwiKTsgcmV0dXJuIF9jbGFzc0FwcGx5RGVzY3JpcHRvckdldChyZWNlaXZlciwgZGVzY3JpcHRvcik7IH1cbmZ1bmN0aW9uIF9jbGFzc0FwcGx5RGVzY3JpcHRvckdldChyZWNlaXZlciwgZGVzY3JpcHRvcikgeyBpZiAoZGVzY3JpcHRvci5nZXQpIHsgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0LmNhbGwocmVjZWl2ZXIpOyB9IHJldHVybiBkZXNjcmlwdG9yLnZhbHVlOyB9XG5mdW5jdGlvbiBfY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7IHZhciBkZXNjcmlwdG9yID0gX2NsYXNzRXh0cmFjdEZpZWxkRGVzY3JpcHRvcihyZWNlaXZlciwgcHJpdmF0ZU1hcCwgXCJzZXRcIik7IF9jbGFzc0FwcGx5RGVzY3JpcHRvclNldChyZWNlaXZlciwgZGVzY3JpcHRvciwgdmFsdWUpOyByZXR1cm4gdmFsdWU7IH1cbmZ1bmN0aW9uIF9jbGFzc0V4dHJhY3RGaWVsZERlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsIGFjdGlvbikgeyBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIFwiICsgYWN0aW9uICsgXCIgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7IH0gcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTsgfVxuZnVuY3Rpb24gX2NsYXNzQXBwbHlEZXNjcmlwdG9yU2V0KHJlY2VpdmVyLCBkZXNjcmlwdG9yLCB2YWx1ZSkgeyBpZiAoZGVzY3JpcHRvci5zZXQpIHsgZGVzY3JpcHRvci5zZXQuY2FsbChyZWNlaXZlciwgdmFsdWUpOyB9IGVsc2UgeyBpZiAoIWRlc2NyaXB0b3Iud3JpdGFibGUpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcmVhZCBvbmx5IHByaXZhdGUgZmllbGRcIik7IH0gZGVzY3JpcHRvci52YWx1ZSA9IHZhbHVlOyB9IH1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4hZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24odCwgZSkge1xuICBcIm9iamVjdFwiID09IHR5cGVvZiBleHBvcnRzICYmIFwib2JqZWN0XCIgPT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzID0gZSgpIDogXCJmdW5jdGlvblwiID09IHR5cGVvZiBkZWZpbmUgJiYgX193ZWJwYWNrX3JlcXVpcmVfXy5hbWRPID8gZGVmaW5lKFwicGRmanMtZGlzdC9idWlsZC9wZGZcIiwgW10sIGUpIDogXCJvYmplY3RcIiA9PSB0eXBlb2YgZXhwb3J0cyA/IGV4cG9ydHNbXCJwZGZqcy1kaXN0L2J1aWxkL3BkZlwiXSA9IGUoKSA6IHRbXCJwZGZqcy1kaXN0L2J1aWxkL3BkZlwiXSA9IHQucGRmanNMaWIgPSBlKCk7XG59KGdsb2JhbFRoaXMsICgpID0+ICgoKSA9PiB7XG4gIHZhciBfX3dlYnBhY2tfbW9kdWxlc19fID0gWywgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgX3Q7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuVmVyYm9zaXR5TGV2ZWwgPSBlLlV0aWwgPSBlLlVua25vd25FcnJvckV4Y2VwdGlvbiA9IGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uID0gZS5UZXh0UmVuZGVyaW5nTW9kZSA9IGUuUmVuZGVyaW5nSW50ZW50RmxhZyA9IGUuUHJvbWlzZUNhcGFiaWxpdHkgPSBlLlBlcm1pc3Npb25GbGFnID0gZS5QYXNzd29yZFJlc3BvbnNlcyA9IGUuUGFzc3dvcmRFeGNlcHRpb24gPSBlLlBhZ2VBY3Rpb25FdmVudFR5cGUgPSBlLk9QUyA9IGUuTWlzc2luZ1BERkV4Y2VwdGlvbiA9IGUuTUFYX0lNQUdFX1NJWkVfVE9fQ0FDSEUgPSBlLkxJTkVfRkFDVE9SID0gZS5MSU5FX0RFU0NFTlRfRkFDVE9SID0gZS5JbnZhbGlkUERGRXhjZXB0aW9uID0gZS5JbWFnZUtpbmQgPSBlLklERU5USVRZX01BVFJJWCA9IGUuRm9ybWF0RXJyb3IgPSBlLkZlYXR1cmVUZXN0ID0gZS5GT05UX0lERU5USVRZX01BVFJJWCA9IGUuRG9jdW1lbnRBY3Rpb25FdmVudFR5cGUgPSBlLkNNYXBDb21wcmVzc2lvblR5cGUgPSBlLkJhc2VFeGNlcHRpb24gPSBlLkJBU0VMSU5FX0ZBQ1RPUiA9IGUuQW5ub3RhdGlvblR5cGUgPSBlLkFubm90YXRpb25SZXBseVR5cGUgPSBlLkFubm90YXRpb25Nb2RlID0gZS5Bbm5vdGF0aW9uRmxhZyA9IGUuQW5ub3RhdGlvbkZpZWxkRmxhZyA9IGUuQW5ub3RhdGlvbkVkaXRvclR5cGUgPSBlLkFubm90YXRpb25FZGl0b3JQcmVmaXggPSBlLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlID0gZS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlID0gZS5Bbm5vdGF0aW9uQWN0aW9uRXZlbnRUeXBlID0gZS5BYm9ydEV4Y2VwdGlvbiA9IHZvaWQgMDtcbiAgICAgIGUuYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KHQsIGUpIHtcbiAgICAgICAgdCB8fCB1bnJlYWNoYWJsZShlKTtcbiAgICAgIH07XG4gICAgICBlLmJ5dGVzVG9TdHJpbmcgPSBieXRlc1RvU3RyaW5nO1xuICAgICAgZS5jcmVhdGVWYWxpZEFic29sdXRlVXJsID0gZnVuY3Rpb24gY3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0KSB7XG4gICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsLFxuICAgICAgICAgIG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IG51bGw7XG4gICAgICAgIGlmICghdCkgcmV0dXJuIG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKG4gJiYgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCkge1xuICAgICAgICAgICAgaWYgKG4uYWRkRGVmYXVsdFByb3RvY29sICYmIHQuc3RhcnRzV2l0aChcInd3dy5cIikpIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IHQubWF0Y2goL1xcLi9nKTtcbiAgICAgICAgICAgICAgKGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5sZW5ndGgpID49IDIgJiYgKHQgPSBcImh0dHA6Ly9cIi5jb25jYXQodCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG4udHJ5Q29udmVydEVuY29kaW5nKSB0cnkge1xuICAgICAgICAgICAgICB0ID0gc3RyaW5nVG9VVEY4U3RyaW5nKHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoX3VudXNlZCkge31cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaSA9IGUgPyBuZXcgVVJMKHQsIGUpIDogbmV3IFVSTCh0KTtcbiAgICAgICAgICBpZiAoZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbCh0KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHQgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5wcm90b2NvbCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaHR0cDpcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImh0dHBzOlwiOlxuICAgICAgICAgICAgICBjYXNlIFwiZnRwOlwiOlxuICAgICAgICAgICAgICBjYXNlIFwibWFpbHRvOlwiOlxuICAgICAgICAgICAgICBjYXNlIFwidGVsOlwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfShpKSkgcmV0dXJuIGk7XG4gICAgICAgIH0gY2F0Y2ggKF91bnVzZWQyKSB7fVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG4gICAgICBlLmdldE1vZGlmaWNhdGlvbkRhdGUgPSBmdW5jdGlvbiBnZXRNb2RpZmljYXRpb25EYXRlKCkge1xuICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogbmV3IERhdGUoKTtcbiAgICAgICAgcmV0dXJuIFt0LmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwgKHQuZ2V0VVRDTW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpLCB0LmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKSwgdC5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgXCIwXCIpLCB0LmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIFwiMFwiKSwgdC5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIildLmpvaW4oXCJcIik7XG4gICAgICB9O1xuICAgICAgZS5nZXRVdWlkID0gZnVuY3Rpb24gZ2V0VXVpZCgpIHtcbiAgICAgICAgdmFyIF9jcnlwdG8sIF9jcnlwdG8yO1xuICAgICAgICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgY3J5cHRvICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgKChfY3J5cHRvID0gY3J5cHRvKSA9PT0gbnVsbCB8fCBfY3J5cHRvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY3J5cHRvLnJhbmRvbVVVSUQpKSByZXR1cm4gY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgICAgY29uc3QgdCA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICAgICAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIGNyeXB0byAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mICgoX2NyeXB0bzIgPSBjcnlwdG8pID09PSBudWxsIHx8IF9jcnlwdG8yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY3J5cHRvMi5nZXRSYW5kb21WYWx1ZXMpKSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHQpO2Vsc2UgZm9yIChsZXQgZSA9IDA7IGUgPCAzMjsgZSsrKSB0W2VdID0gTWF0aC5mbG9vcigyNTUgKiBNYXRoLnJhbmRvbSgpKTtcbiAgICAgICAgcmV0dXJuIGJ5dGVzVG9TdHJpbmcodCk7XG4gICAgICB9O1xuICAgICAgZS5nZXRWZXJib3NpdHlMZXZlbCA9IGZ1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCkge1xuICAgICAgICByZXR1cm4gcztcbiAgICAgIH07XG4gICAgICBlLmluZm8gPSBmdW5jdGlvbiBpbmZvKHQpIHtcbiAgICAgICAgcyA+PSByLklORk9TICYmIGNvbnNvbGUubG9nKFwiSW5mbzogXCIuY29uY2F0KHQpKTtcbiAgICAgIH07XG4gICAgICBlLmlzQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBpc0FycmF5QnVmZmVyKHQpIHtcbiAgICAgICAgcmV0dXJuIFwib2JqZWN0XCIgPT0gdHlwZW9mIHQgJiYgdm9pZCAwICE9PSAodCA9PT0gbnVsbCB8fCB0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0LmJ5dGVMZW5ndGgpO1xuICAgICAgfTtcbiAgICAgIGUuaXNBcnJheUVxdWFsID0gZnVuY3Rpb24gaXNBcnJheUVxdWFsKHQsIGUpIHtcbiAgICAgICAgaWYgKHQubGVuZ3RoICE9PSBlLmxlbmd0aCkgcmV0dXJuICExO1xuICAgICAgICBmb3IgKGxldCBuID0gMCwgaSA9IHQubGVuZ3RoOyBuIDwgaTsgbisrKSBpZiAodFtuXSAhPT0gZVtuXSkgcmV0dXJuICExO1xuICAgICAgICByZXR1cm4gITA7XG4gICAgICB9O1xuICAgICAgZS5pc05vZGVKUyA9IHZvaWQgMDtcbiAgICAgIGUubm9ybWFsaXplVW5pY29kZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUodCkge1xuICAgICAgICBpZiAoIWMpIHtcbiAgICAgICAgICBjID0gLyhbXFx4QTBcXHhCNVxcdTAzN0VcXHUwRUIzXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIxMjZcXHVGQjAwLVxcdUZCMDRcXHVGQjA2XFx1RkIyMC1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQTFcXHVGQkE0LVxcdUZCQTlcXHVGQkFFLVxcdUZCQjFcXHVGQkQzLVxcdUZCRENcXHVGQkRFLVxcdUZCRTdcXHVGQkVBLVxcdUZCRjhcXHVGQkZDXFx1RkJGRFxcdUZDMDAtXFx1RkM1RFxcdUZDNjQtXFx1RkNGMVxcdUZDRjUtXFx1RkQzRFxcdUZEODhcXHVGREY0XFx1RkRGQVxcdUZERkJcXHVGRTcxXFx1RkU3N1xcdUZFNzlcXHVGRTdCXFx1RkU3RF0rKXwoXFx1RkIwNSspL2c7XG4gICAgICAgICAgaCA9IG5ldyBNYXAoW1tcIu+shVwiLCBcIsW/dFwiXV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0LnJlcGxhY2VBbGwoYywgKHQsIGUsIG4pID0+IGUgPyBlLm5vcm1hbGl6ZShcIk5GS0NcIikgOiBoLmdldChuKSk7XG4gICAgICB9O1xuICAgICAgZS5vYmplY3RGcm9tTWFwID0gZnVuY3Rpb24gb2JqZWN0RnJvbU1hcCh0KSB7XG4gICAgICAgIGNvbnN0IGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBmb3IgKGNvbnN0IFtuLCBpXSBvZiB0KSBlW25dID0gaTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9O1xuICAgICAgZS5vYmplY3RTaXplID0gZnVuY3Rpb24gb2JqZWN0U2l6ZSh0KSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0KS5sZW5ndGg7XG4gICAgICB9O1xuICAgICAgZS5zZXRWZXJib3NpdHlMZXZlbCA9IGZ1bmN0aW9uIHNldFZlcmJvc2l0eUxldmVsKHQpIHtcbiAgICAgICAgTnVtYmVyLmlzSW50ZWdlcih0KSAmJiAocyA9IHQpO1xuICAgICAgfTtcbiAgICAgIGUuc2hhZG93ID0gc2hhZG93O1xuICAgICAgZS5zdHJpbmczMiA9IGZ1bmN0aW9uIHN0cmluZzMyKHQpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCA+PiAyNCAmIDI1NSwgdCA+PiAxNiAmIDI1NSwgdCA+PiA4ICYgMjU1LCAyNTUgJiB0KTtcbiAgICAgIH07XG4gICAgICBlLnN0cmluZ1RvQnl0ZXMgPSBzdHJpbmdUb0J5dGVzO1xuICAgICAgZS5zdHJpbmdUb1BERlN0cmluZyA9IGZ1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKHQpIHtcbiAgICAgICAgaWYgKHRbMF0gPj0gXCLDr1wiKSB7XG4gICAgICAgICAgbGV0IGU7XG4gICAgICAgICAgXCLDvlwiID09PSB0WzBdICYmIFwiw79cIiA9PT0gdFsxXSA/IGUgPSBcInV0Zi0xNmJlXCIgOiBcIsO/XCIgPT09IHRbMF0gJiYgXCLDvlwiID09PSB0WzFdID8gZSA9IFwidXRmLTE2bGVcIiA6IFwiw69cIiA9PT0gdFswXSAmJiBcIsK7XCIgPT09IHRbMV0gJiYgXCLCv1wiID09PSB0WzJdICYmIChlID0gXCJ1dGYtOFwiKTtcbiAgICAgICAgICBpZiAoZSkgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBuZXcgVGV4dERlY29kZXIoZSwge1xuICAgICAgICAgICAgICAgIGZhdGFsOiAhMFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgaSA9IHN0cmluZ1RvQnl0ZXModCk7XG4gICAgICAgICAgICByZXR1cm4gbi5kZWNvZGUoaSk7XG4gICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgd2FybihcInN0cmluZ1RvUERGU3RyaW5nOiBcXFwiXCIuY29uY2F0KHQsIFwiXFxcIi5cIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlID0gW107XG4gICAgICAgIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuKyspIHtcbiAgICAgICAgICBjb25zdCBpID0gbFt0LmNoYXJDb2RlQXQobildO1xuICAgICAgICAgIGUucHVzaChpID8gU3RyaW5nLmZyb21DaGFyQ29kZShpKSA6IHQuY2hhckF0KG4pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZS5qb2luKFwiXCIpO1xuICAgICAgfTtcbiAgICAgIGUuc3RyaW5nVG9VVEY4U3RyaW5nID0gc3RyaW5nVG9VVEY4U3RyaW5nO1xuICAgICAgZS51bnJlYWNoYWJsZSA9IHVucmVhY2hhYmxlO1xuICAgICAgZS51dGY4U3RyaW5nVG9TdHJpbmcgPSBmdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcodCkge1xuICAgICAgICByZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKTtcbiAgICAgIH07XG4gICAgICBlLndhcm4gPSB3YXJuO1xuICAgICAgbigyKTtcbiAgICAgIG4oODQpO1xuICAgICAgbig4Nik7XG4gICAgICBuKDg3KTtcbiAgICAgIG4oODkpO1xuICAgICAgbig5Myk7XG4gICAgICBuKDEwMSk7XG4gICAgICBuKDEwMik7XG4gICAgICBuKDEwNSk7XG4gICAgICBuKDEwNyk7XG4gICAgICBuKDEwOSk7XG4gICAgICBuKDExMyk7XG4gICAgICBuKDExNik7XG4gICAgICBuKDEyMyk7XG4gICAgICBjb25zdCBpID0gIShcIm9iamVjdFwiICE9IHR5cGVvZiBwcm9jZXNzIHx8IHByb2Nlc3MgKyBcIlwiICE9IFwiW29iamVjdCBwcm9jZXNzXVwiIHx8IHByb2Nlc3MudmVyc2lvbnMubncgfHwgcHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiAmJiBwcm9jZXNzLnR5cGUgJiYgXCJicm93c2VyXCIgIT09IHByb2Nlc3MudHlwZSk7XG4gICAgICBlLmlzTm9kZUpTID0gaTtcbiAgICAgIGUuSURFTlRJVFlfTUFUUklYID0gWzEsIDAsIDAsIDEsIDAsIDBdO1xuICAgICAgZS5GT05UX0lERU5USVRZX01BVFJJWCA9IFsuMDAxLCAwLCAwLCAuMDAxLCAwLCAwXTtcbiAgICAgIGUuTUFYX0lNQUdFX1NJWkVfVE9fQ0FDSEUgPSAxZTc7XG4gICAgICBlLkxJTkVfRkFDVE9SID0gMS4zNTtcbiAgICAgIGUuTElORV9ERVNDRU5UX0ZBQ1RPUiA9IC4zNTtcbiAgICAgIGUuQkFTRUxJTkVfRkFDVE9SID0gLjI1OTI1OTI1OTI1OTI1OTI0O1xuICAgICAgZS5SZW5kZXJpbmdJbnRlbnRGbGFnID0ge1xuICAgICAgICBBTlk6IDEsXG4gICAgICAgIERJU1BMQVk6IDIsXG4gICAgICAgIFBSSU5UOiA0LFxuICAgICAgICBTQVZFOiA4LFxuICAgICAgICBBTk5PVEFUSU9OU19GT1JNUzogMTYsXG4gICAgICAgIEFOTk9UQVRJT05TX1NUT1JBR0U6IDMyLFxuICAgICAgICBBTk5PVEFUSU9OU19ESVNBQkxFOiA2NCxcbiAgICAgICAgT1BMSVNUOiAyNTZcbiAgICAgIH07XG4gICAgICBlLkFubm90YXRpb25Nb2RlID0ge1xuICAgICAgICBESVNBQkxFOiAwLFxuICAgICAgICBFTkFCTEU6IDEsXG4gICAgICAgIEVOQUJMRV9GT1JNUzogMixcbiAgICAgICAgRU5BQkxFX1NUT1JBR0U6IDNcbiAgICAgIH07XG4gICAgICBlLkFubm90YXRpb25FZGl0b3JQcmVmaXggPSBcInBkZmpzX2ludGVybmFsX2VkaXRvcl9cIjtcbiAgICAgIGUuQW5ub3RhdGlvbkVkaXRvclR5cGUgPSB7XG4gICAgICAgIERJU0FCTEU6IC0xLFxuICAgICAgICBOT05FOiAwLFxuICAgICAgICBGUkVFVEVYVDogMyxcbiAgICAgICAgU1RBTVA6IDEzLFxuICAgICAgICBJTks6IDE1XG4gICAgICB9O1xuICAgICAgZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZSA9IHtcbiAgICAgICAgUkVTSVpFOiAxLFxuICAgICAgICBGUkVFVEVYVF9TSVpFOiAxMSxcbiAgICAgICAgRlJFRVRFWFRfQ09MT1I6IDEyLFxuICAgICAgICBGUkVFVEVYVF9PUEFDSVRZOiAxMyxcbiAgICAgICAgSU5LX0NPTE9SOiAyMSxcbiAgICAgICAgSU5LX1RISUNLTkVTUzogMjIsXG4gICAgICAgIElOS19PUEFDSVRZOiAyM1xuICAgICAgfTtcbiAgICAgIGUuUGVybWlzc2lvbkZsYWcgPSB7XG4gICAgICAgIFBSSU5UOiA0LFxuICAgICAgICBNT0RJRllfQ09OVEVOVFM6IDgsXG4gICAgICAgIENPUFk6IDE2LFxuICAgICAgICBNT0RJRllfQU5OT1RBVElPTlM6IDMyLFxuICAgICAgICBGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOiAyNTYsXG4gICAgICAgIENPUFlfRk9SX0FDQ0VTU0lCSUxJVFk6IDUxMixcbiAgICAgICAgQVNTRU1CTEU6IDEwMjQsXG4gICAgICAgIFBSSU5UX0hJR0hfUVVBTElUWTogMjA0OFxuICAgICAgfTtcbiAgICAgIGUuVGV4dFJlbmRlcmluZ01vZGUgPSB7XG4gICAgICAgIEZJTEw6IDAsXG4gICAgICAgIFNUUk9LRTogMSxcbiAgICAgICAgRklMTF9TVFJPS0U6IDIsXG4gICAgICAgIElOVklTSUJMRTogMyxcbiAgICAgICAgRklMTF9BRERfVE9fUEFUSDogNCxcbiAgICAgICAgU1RST0tFX0FERF9UT19QQVRIOiA1LFxuICAgICAgICBGSUxMX1NUUk9LRV9BRERfVE9fUEFUSDogNixcbiAgICAgICAgQUREX1RPX1BBVEg6IDcsXG4gICAgICAgIEZJTExfU1RST0tFX01BU0s6IDMsXG4gICAgICAgIEFERF9UT19QQVRIX0ZMQUc6IDRcbiAgICAgIH07XG4gICAgICBlLkltYWdlS2luZCA9IHtcbiAgICAgICAgR1JBWVNDQUxFXzFCUFA6IDEsXG4gICAgICAgIFJHQl8yNEJQUDogMixcbiAgICAgICAgUkdCQV8zMkJQUDogM1xuICAgICAgfTtcbiAgICAgIGUuQW5ub3RhdGlvblR5cGUgPSB7XG4gICAgICAgIFRFWFQ6IDEsXG4gICAgICAgIExJTks6IDIsXG4gICAgICAgIEZSRUVURVhUOiAzLFxuICAgICAgICBMSU5FOiA0LFxuICAgICAgICBTUVVBUkU6IDUsXG4gICAgICAgIENJUkNMRTogNixcbiAgICAgICAgUE9MWUdPTjogNyxcbiAgICAgICAgUE9MWUxJTkU6IDgsXG4gICAgICAgIEhJR0hMSUdIVDogOSxcbiAgICAgICAgVU5ERVJMSU5FOiAxMCxcbiAgICAgICAgU1FVSUdHTFk6IDExLFxuICAgICAgICBTVFJJS0VPVVQ6IDEyLFxuICAgICAgICBTVEFNUDogMTMsXG4gICAgICAgIENBUkVUOiAxNCxcbiAgICAgICAgSU5LOiAxNSxcbiAgICAgICAgUE9QVVA6IDE2LFxuICAgICAgICBGSUxFQVRUQUNITUVOVDogMTcsXG4gICAgICAgIFNPVU5EOiAxOCxcbiAgICAgICAgTU9WSUU6IDE5LFxuICAgICAgICBXSURHRVQ6IDIwLFxuICAgICAgICBTQ1JFRU46IDIxLFxuICAgICAgICBQUklOVEVSTUFSSzogMjIsXG4gICAgICAgIFRSQVBORVQ6IDIzLFxuICAgICAgICBXQVRFUk1BUks6IDI0LFxuICAgICAgICBUSFJFRUQ6IDI1LFxuICAgICAgICBSRURBQ1Q6IDI2XG4gICAgICB9O1xuICAgICAgZS5Bbm5vdGF0aW9uUmVwbHlUeXBlID0ge1xuICAgICAgICBHUk9VUDogXCJHcm91cFwiLFxuICAgICAgICBSRVBMWTogXCJSXCJcbiAgICAgIH07XG4gICAgICBlLkFubm90YXRpb25GbGFnID0ge1xuICAgICAgICBJTlZJU0lCTEU6IDEsXG4gICAgICAgIEhJRERFTjogMixcbiAgICAgICAgUFJJTlQ6IDQsXG4gICAgICAgIE5PWk9PTTogOCxcbiAgICAgICAgTk9ST1RBVEU6IDE2LFxuICAgICAgICBOT1ZJRVc6IDMyLFxuICAgICAgICBSRUFET05MWTogNjQsXG4gICAgICAgIExPQ0tFRDogMTI4LFxuICAgICAgICBUT0dHTEVOT1ZJRVc6IDI1NixcbiAgICAgICAgTE9DS0VEQ09OVEVOVFM6IDUxMlxuICAgICAgfTtcbiAgICAgIGUuQW5ub3RhdGlvbkZpZWxkRmxhZyA9IHtcbiAgICAgICAgUkVBRE9OTFk6IDEsXG4gICAgICAgIFJFUVVJUkVEOiAyLFxuICAgICAgICBOT0VYUE9SVDogNCxcbiAgICAgICAgTVVMVElMSU5FOiA0MDk2LFxuICAgICAgICBQQVNTV09SRDogODE5MixcbiAgICAgICAgTk9UT0dHTEVUT09GRjogMTYzODQsXG4gICAgICAgIFJBRElPOiAzMjc2OCxcbiAgICAgICAgUFVTSEJVVFRPTjogNjU1MzYsXG4gICAgICAgIENPTUJPOiAxMzEwNzIsXG4gICAgICAgIEVESVQ6IDI2MjE0NCxcbiAgICAgICAgU09SVDogNTI0Mjg4LFxuICAgICAgICBGSUxFU0VMRUNUOiAxMDQ4NTc2LFxuICAgICAgICBNVUxUSVNFTEVDVDogMjA5NzE1MixcbiAgICAgICAgRE9OT1RTUEVMTENIRUNLOiA0MTk0MzA0LFxuICAgICAgICBET05PVFNDUk9MTDogODM4ODYwOCxcbiAgICAgICAgQ09NQjogMTY3NzcyMTYsXG4gICAgICAgIFJJQ0hURVhUOiAzMzU1NDQzMixcbiAgICAgICAgUkFESU9TSU5VTklTT046IDMzNTU0NDMyLFxuICAgICAgICBDT01NSVRPTlNFTENIQU5HRTogNjcxMDg4NjRcbiAgICAgIH07XG4gICAgICBlLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUgPSB7XG4gICAgICAgIFNPTElEOiAxLFxuICAgICAgICBEQVNIRUQ6IDIsXG4gICAgICAgIEJFVkVMRUQ6IDMsXG4gICAgICAgIElOU0VUOiA0LFxuICAgICAgICBVTkRFUkxJTkU6IDVcbiAgICAgIH07XG4gICAgICBlLkFubm90YXRpb25BY3Rpb25FdmVudFR5cGUgPSB7XG4gICAgICAgIEU6IFwiTW91c2UgRW50ZXJcIixcbiAgICAgICAgWDogXCJNb3VzZSBFeGl0XCIsXG4gICAgICAgIEQ6IFwiTW91c2UgRG93blwiLFxuICAgICAgICBVOiBcIk1vdXNlIFVwXCIsXG4gICAgICAgIEZvOiBcIkZvY3VzXCIsXG4gICAgICAgIEJsOiBcIkJsdXJcIixcbiAgICAgICAgUE86IFwiUGFnZU9wZW5cIixcbiAgICAgICAgUEM6IFwiUGFnZUNsb3NlXCIsXG4gICAgICAgIFBWOiBcIlBhZ2VWaXNpYmxlXCIsXG4gICAgICAgIFBJOiBcIlBhZ2VJbnZpc2libGVcIixcbiAgICAgICAgSzogXCJLZXlzdHJva2VcIixcbiAgICAgICAgRjogXCJGb3JtYXRcIixcbiAgICAgICAgVjogXCJWYWxpZGF0ZVwiLFxuICAgICAgICBDOiBcIkNhbGN1bGF0ZVwiXG4gICAgICB9O1xuICAgICAgZS5Eb2N1bWVudEFjdGlvbkV2ZW50VHlwZSA9IHtcbiAgICAgICAgV0M6IFwiV2lsbENsb3NlXCIsXG4gICAgICAgIFdTOiBcIldpbGxTYXZlXCIsXG4gICAgICAgIERTOiBcIkRpZFNhdmVcIixcbiAgICAgICAgV1A6IFwiV2lsbFByaW50XCIsXG4gICAgICAgIERQOiBcIkRpZFByaW50XCJcbiAgICAgIH07XG4gICAgICBlLlBhZ2VBY3Rpb25FdmVudFR5cGUgPSB7XG4gICAgICAgIE86IFwiUGFnZU9wZW5cIixcbiAgICAgICAgQzogXCJQYWdlQ2xvc2VcIlxuICAgICAgfTtcbiAgICAgIGNvbnN0IHIgPSB7XG4gICAgICAgIEVSUk9SUzogMCxcbiAgICAgICAgV0FSTklOR1M6IDEsXG4gICAgICAgIElORk9TOiA1XG4gICAgICB9O1xuICAgICAgZS5WZXJib3NpdHlMZXZlbCA9IHI7XG4gICAgICBlLkNNYXBDb21wcmVzc2lvblR5cGUgPSB7XG4gICAgICAgIE5PTkU6IDAsXG4gICAgICAgIEJJTkFSWTogMVxuICAgICAgfTtcbiAgICAgIGUuT1BTID0ge1xuICAgICAgICBkZXBlbmRlbmN5OiAxLFxuICAgICAgICBzZXRMaW5lV2lkdGg6IDIsXG4gICAgICAgIHNldExpbmVDYXA6IDMsXG4gICAgICAgIHNldExpbmVKb2luOiA0LFxuICAgICAgICBzZXRNaXRlckxpbWl0OiA1LFxuICAgICAgICBzZXREYXNoOiA2LFxuICAgICAgICBzZXRSZW5kZXJpbmdJbnRlbnQ6IDcsXG4gICAgICAgIHNldEZsYXRuZXNzOiA4LFxuICAgICAgICBzZXRHU3RhdGU6IDksXG4gICAgICAgIHNhdmU6IDEwLFxuICAgICAgICByZXN0b3JlOiAxMSxcbiAgICAgICAgdHJhbnNmb3JtOiAxMixcbiAgICAgICAgbW92ZVRvOiAxMyxcbiAgICAgICAgbGluZVRvOiAxNCxcbiAgICAgICAgY3VydmVUbzogMTUsXG4gICAgICAgIGN1cnZlVG8yOiAxNixcbiAgICAgICAgY3VydmVUbzM6IDE3LFxuICAgICAgICBjbG9zZVBhdGg6IDE4LFxuICAgICAgICByZWN0YW5nbGU6IDE5LFxuICAgICAgICBzdHJva2U6IDIwLFxuICAgICAgICBjbG9zZVN0cm9rZTogMjEsXG4gICAgICAgIGZpbGw6IDIyLFxuICAgICAgICBlb0ZpbGw6IDIzLFxuICAgICAgICBmaWxsU3Ryb2tlOiAyNCxcbiAgICAgICAgZW9GaWxsU3Ryb2tlOiAyNSxcbiAgICAgICAgY2xvc2VGaWxsU3Ryb2tlOiAyNixcbiAgICAgICAgY2xvc2VFT0ZpbGxTdHJva2U6IDI3LFxuICAgICAgICBlbmRQYXRoOiAyOCxcbiAgICAgICAgY2xpcDogMjksXG4gICAgICAgIGVvQ2xpcDogMzAsXG4gICAgICAgIGJlZ2luVGV4dDogMzEsXG4gICAgICAgIGVuZFRleHQ6IDMyLFxuICAgICAgICBzZXRDaGFyU3BhY2luZzogMzMsXG4gICAgICAgIHNldFdvcmRTcGFjaW5nOiAzNCxcbiAgICAgICAgc2V0SFNjYWxlOiAzNSxcbiAgICAgICAgc2V0TGVhZGluZzogMzYsXG4gICAgICAgIHNldEZvbnQ6IDM3LFxuICAgICAgICBzZXRUZXh0UmVuZGVyaW5nTW9kZTogMzgsXG4gICAgICAgIHNldFRleHRSaXNlOiAzOSxcbiAgICAgICAgbW92ZVRleHQ6IDQwLFxuICAgICAgICBzZXRMZWFkaW5nTW92ZVRleHQ6IDQxLFxuICAgICAgICBzZXRUZXh0TWF0cml4OiA0MixcbiAgICAgICAgbmV4dExpbmU6IDQzLFxuICAgICAgICBzaG93VGV4dDogNDQsXG4gICAgICAgIHNob3dTcGFjZWRUZXh0OiA0NSxcbiAgICAgICAgbmV4dExpbmVTaG93VGV4dDogNDYsXG4gICAgICAgIG5leHRMaW5lU2V0U3BhY2luZ1Nob3dUZXh0OiA0NyxcbiAgICAgICAgc2V0Q2hhcldpZHRoOiA0OCxcbiAgICAgICAgc2V0Q2hhcldpZHRoQW5kQm91bmRzOiA0OSxcbiAgICAgICAgc2V0U3Ryb2tlQ29sb3JTcGFjZTogNTAsXG4gICAgICAgIHNldEZpbGxDb2xvclNwYWNlOiA1MSxcbiAgICAgICAgc2V0U3Ryb2tlQ29sb3I6IDUyLFxuICAgICAgICBzZXRTdHJva2VDb2xvck46IDUzLFxuICAgICAgICBzZXRGaWxsQ29sb3I6IDU0LFxuICAgICAgICBzZXRGaWxsQ29sb3JOOiA1NSxcbiAgICAgICAgc2V0U3Ryb2tlR3JheTogNTYsXG4gICAgICAgIHNldEZpbGxHcmF5OiA1NyxcbiAgICAgICAgc2V0U3Ryb2tlUkdCQ29sb3I6IDU4LFxuICAgICAgICBzZXRGaWxsUkdCQ29sb3I6IDU5LFxuICAgICAgICBzZXRTdHJva2VDTVlLQ29sb3I6IDYwLFxuICAgICAgICBzZXRGaWxsQ01ZS0NvbG9yOiA2MSxcbiAgICAgICAgc2hhZGluZ0ZpbGw6IDYyLFxuICAgICAgICBiZWdpbklubGluZUltYWdlOiA2MyxcbiAgICAgICAgYmVnaW5JbWFnZURhdGE6IDY0LFxuICAgICAgICBlbmRJbmxpbmVJbWFnZTogNjUsXG4gICAgICAgIHBhaW50WE9iamVjdDogNjYsXG4gICAgICAgIG1hcmtQb2ludDogNjcsXG4gICAgICAgIG1hcmtQb2ludFByb3BzOiA2OCxcbiAgICAgICAgYmVnaW5NYXJrZWRDb250ZW50OiA2OSxcbiAgICAgICAgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6IDcwLFxuICAgICAgICBlbmRNYXJrZWRDb250ZW50OiA3MSxcbiAgICAgICAgYmVnaW5Db21wYXQ6IDcyLFxuICAgICAgICBlbmRDb21wYXQ6IDczLFxuICAgICAgICBwYWludEZvcm1YT2JqZWN0QmVnaW46IDc0LFxuICAgICAgICBwYWludEZvcm1YT2JqZWN0RW5kOiA3NSxcbiAgICAgICAgYmVnaW5Hcm91cDogNzYsXG4gICAgICAgIGVuZEdyb3VwOiA3NyxcbiAgICAgICAgYmVnaW5Bbm5vdGF0aW9uOiA4MCxcbiAgICAgICAgZW5kQW5ub3RhdGlvbjogODEsXG4gICAgICAgIHBhaW50SW1hZ2VNYXNrWE9iamVjdDogODMsXG4gICAgICAgIHBhaW50SW1hZ2VNYXNrWE9iamVjdEdyb3VwOiA4NCxcbiAgICAgICAgcGFpbnRJbWFnZVhPYmplY3Q6IDg1LFxuICAgICAgICBwYWludElubGluZUltYWdlWE9iamVjdDogODYsXG4gICAgICAgIHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0R3JvdXA6IDg3LFxuICAgICAgICBwYWludEltYWdlWE9iamVjdFJlcGVhdDogODgsXG4gICAgICAgIHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdDogODksXG4gICAgICAgIHBhaW50U29saWRDb2xvckltYWdlTWFzazogOTAsXG4gICAgICAgIGNvbnN0cnVjdFBhdGg6IDkxXG4gICAgICB9O1xuICAgICAgZS5QYXNzd29yZFJlc3BvbnNlcyA9IHtcbiAgICAgICAgTkVFRF9QQVNTV09SRDogMSxcbiAgICAgICAgSU5DT1JSRUNUX1BBU1NXT1JEOiAyXG4gICAgICB9O1xuICAgICAgbGV0IHMgPSByLldBUk5JTkdTO1xuICAgICAgZnVuY3Rpb24gd2Fybih0KSB7XG4gICAgICAgIHMgPj0gci5XQVJOSU5HUyAmJiBjb25zb2xlLmxvZyhcIldhcm5pbmc6IFwiLmNvbmNhdCh0KSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiB1bnJlYWNoYWJsZSh0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcih0KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHNoYWRvdyh0LCBlLCBuKSB7XG4gICAgICAgIGxldCBpID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gJiYgYXJndW1lbnRzWzNdO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgZSwge1xuICAgICAgICAgIHZhbHVlOiBuLFxuICAgICAgICAgIGVudW1lcmFibGU6ICFpLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgICAgd3JpdGFibGU6ICExXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGEgPSBmdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpIHtcbiAgICAgICAgZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbih0LCBlKSB7XG4gICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9PT0gQmFzZUV4Y2VwdGlvbiAmJiB1bnJlYWNoYWJsZShcIkNhbm5vdCBpbml0aWFsaXplIEJhc2VFeGNlcHRpb24uXCIpO1xuICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHQ7XG4gICAgICAgICAgdGhpcy5uYW1lID0gZTtcbiAgICAgICAgfVxuICAgICAgICBCYXNlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuICAgICAgICBCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yID0gQmFzZUV4Y2VwdGlvbjtcbiAgICAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb247XG4gICAgICB9KCk7XG4gICAgICBlLkJhc2VFeGNlcHRpb24gPSBhO1xuICAgICAgZS5QYXNzd29yZEV4Y2VwdGlvbiA9IGNsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgYSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHtcbiAgICAgICAgICBzdXBlcih0LCBcIlBhc3N3b3JkRXhjZXB0aW9uXCIpO1xuICAgICAgICAgIHRoaXMuY29kZSA9IGU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBlLlVua25vd25FcnJvckV4Y2VwdGlvbiA9IGNsYXNzIFVua25vd25FcnJvckV4Y2VwdGlvbiBleHRlbmRzIGEge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7XG4gICAgICAgICAgc3VwZXIodCwgXCJVbmtub3duRXJyb3JFeGNlcHRpb25cIik7XG4gICAgICAgICAgdGhpcy5kZXRhaWxzID0gZTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGUuSW52YWxpZFBERkV4Y2VwdGlvbiA9IGNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBhIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIFwiSW52YWxpZFBERkV4Y2VwdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGUuTWlzc2luZ1BERkV4Y2VwdGlvbiA9IGNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBhIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIFwiTWlzc2luZ1BERkV4Y2VwdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGUuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uID0gY2xhc3MgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgYSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHtcbiAgICAgICAgICBzdXBlcih0LCBcIlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvblwiKTtcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IGU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBlLkZvcm1hdEVycm9yID0gY2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBhIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIFwiRm9ybWF0RXJyb3JcIik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBlLkFib3J0RXhjZXB0aW9uID0gY2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBhIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIFwiQWJvcnRFeGNlcHRpb25cIik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBieXRlc1RvU3RyaW5nKHQpIHtcbiAgICAgICAgXCJvYmplY3RcIiA9PSB0eXBlb2YgdCAmJiB2b2lkIDAgIT09ICh0ID09PSBudWxsIHx8IHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHQubGVuZ3RoKSB8fCB1bnJlYWNoYWJsZShcIkludmFsaWQgYXJndW1lbnQgZm9yIGJ5dGVzVG9TdHJpbmdcIik7XG4gICAgICAgIGNvbnN0IGUgPSB0Lmxlbmd0aCxcbiAgICAgICAgICBuID0gODE5MjtcbiAgICAgICAgaWYgKGUgPCBuKSByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCB0KTtcbiAgICAgICAgY29uc3QgaSA9IFtdO1xuICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IGU7IHIgKz0gbikge1xuICAgICAgICAgIGNvbnN0IHMgPSBNYXRoLm1pbihyICsgbiwgZSksXG4gICAgICAgICAgICBhID0gdC5zdWJhcnJheShyLCBzKTtcbiAgICAgICAgICBpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBhKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGkuam9pbihcIlwiKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXModCkge1xuICAgICAgICBcInN0cmluZ1wiICE9IHR5cGVvZiB0ICYmIHVucmVhY2hhYmxlKFwiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlc1wiKTtcbiAgICAgICAgY29uc3QgZSA9IHQubGVuZ3RoLFxuICAgICAgICAgIG4gPSBuZXcgVWludDhBcnJheShlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlOyArK2kpIG5baV0gPSAyNTUgJiB0LmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfVxuICAgICAgZS5GZWF0dXJlVGVzdCA9IGNsYXNzIEZlYXR1cmVUZXN0IHtcbiAgICAgICAgc3RhdGljIGdldCBpc0xpdHRsZUVuZGlhbigpIHtcbiAgICAgICAgICByZXR1cm4gc2hhZG93KHRoaXMsIFwiaXNMaXR0bGVFbmRpYW5cIiwgZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgICAgICB0WzBdID0gMTtcbiAgICAgICAgICAgIHJldHVybiAxID09PSBuZXcgVWludDMyQXJyYXkodC5idWZmZXIsIDAsIDEpWzBdO1xuICAgICAgICAgIH0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGdldCBpc0V2YWxTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCBcImlzRXZhbFN1cHBvcnRlZFwiLCBmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBuZXcgRnVuY3Rpb24oXCJcIik7XG4gICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIH0gY2F0Y2ggKF91bnVzZWQzKSB7XG4gICAgICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KCkpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHNoYWRvdyh0aGlzLCBcImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkXCIsIFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIE9mZnNjcmVlbkNhbnZhcyk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGdldCBwbGF0Zm9ybSgpIHtcbiAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgbmF2aWdhdG9yID8gc2hhZG93KHRoaXMsIFwicGxhdGZvcm1cIiwge1xuICAgICAgICAgICAgaXNXaW46ICExLFxuICAgICAgICAgICAgaXNNYWM6ICExXG4gICAgICAgICAgfSkgOiBzaGFkb3codGhpcywgXCJwbGF0Zm9ybVwiLCB7XG4gICAgICAgICAgICBpc1dpbjogbmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKFwiV2luXCIpLFxuICAgICAgICAgICAgaXNNYWM6IG5hdmlnYXRvci5wbGF0Zm9ybS5pbmNsdWRlcyhcIk1hY1wiKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgbyA9IFsuLi5BcnJheSgyNTYpLmtleXMoKV0ubWFwKHQgPT4gdC50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKTtcbiAgICAgIGUuVXRpbCA9IGNsYXNzIFV0aWwge1xuICAgICAgICBzdGF0aWMgbWFrZUhleENvbG9yKHQsIGUsIG4pIHtcbiAgICAgICAgICByZXR1cm4gXCIjXCIuY29uY2F0KG9bdF0pLmNvbmNhdChvW2VdKS5jb25jYXQob1tuXSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHNjYWxlTWluTWF4KHQsIGUpIHtcbiAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICBpZiAodFswXSkge1xuICAgICAgICAgICAgaWYgKHRbMF0gPCAwKSB7XG4gICAgICAgICAgICAgIG4gPSBlWzBdO1xuICAgICAgICAgICAgICBlWzBdID0gZVsxXTtcbiAgICAgICAgICAgICAgZVsxXSA9IG47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlWzBdICo9IHRbMF07XG4gICAgICAgICAgICBlWzFdICo9IHRbMF07XG4gICAgICAgICAgICBpZiAodFszXSA8IDApIHtcbiAgICAgICAgICAgICAgbiA9IGVbMl07XG4gICAgICAgICAgICAgIGVbMl0gPSBlWzNdO1xuICAgICAgICAgICAgICBlWzNdID0gbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVbMl0gKj0gdFszXTtcbiAgICAgICAgICAgIGVbM10gKj0gdFszXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbiA9IGVbMF07XG4gICAgICAgICAgICBlWzBdID0gZVsyXTtcbiAgICAgICAgICAgIGVbMl0gPSBuO1xuICAgICAgICAgICAgbiA9IGVbMV07XG4gICAgICAgICAgICBlWzFdID0gZVszXTtcbiAgICAgICAgICAgIGVbM10gPSBuO1xuICAgICAgICAgICAgaWYgKHRbMV0gPCAwKSB7XG4gICAgICAgICAgICAgIG4gPSBlWzJdO1xuICAgICAgICAgICAgICBlWzJdID0gZVszXTtcbiAgICAgICAgICAgICAgZVszXSA9IG47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlWzJdICo9IHRbMV07XG4gICAgICAgICAgICBlWzNdICo9IHRbMV07XG4gICAgICAgICAgICBpZiAodFsyXSA8IDApIHtcbiAgICAgICAgICAgICAgbiA9IGVbMF07XG4gICAgICAgICAgICAgIGVbMF0gPSBlWzFdO1xuICAgICAgICAgICAgICBlWzFdID0gbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVbMF0gKj0gdFsyXTtcbiAgICAgICAgICAgIGVbMV0gKj0gdFsyXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZVswXSArPSB0WzRdO1xuICAgICAgICAgIGVbMV0gKz0gdFs0XTtcbiAgICAgICAgICBlWzJdICs9IHRbNV07XG4gICAgICAgICAgZVszXSArPSB0WzVdO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyB0cmFuc2Zvcm0odCwgZSkge1xuICAgICAgICAgIHJldHVybiBbdFswXSAqIGVbMF0gKyB0WzJdICogZVsxXSwgdFsxXSAqIGVbMF0gKyB0WzNdICogZVsxXSwgdFswXSAqIGVbMl0gKyB0WzJdICogZVszXSwgdFsxXSAqIGVbMl0gKyB0WzNdICogZVszXSwgdFswXSAqIGVbNF0gKyB0WzJdICogZVs1XSArIHRbNF0sIHRbMV0gKiBlWzRdICsgdFszXSAqIGVbNV0gKyB0WzVdXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYXBwbHlUcmFuc2Zvcm0odCwgZSkge1xuICAgICAgICAgIHJldHVybiBbdFswXSAqIGVbMF0gKyB0WzFdICogZVsyXSArIGVbNF0sIHRbMF0gKiBlWzFdICsgdFsxXSAqIGVbM10gKyBlWzVdXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gZVswXSAqIGVbM10gLSBlWzFdICogZVsyXTtcbiAgICAgICAgICByZXR1cm4gWyh0WzBdICogZVszXSAtIHRbMV0gKiBlWzJdICsgZVsyXSAqIGVbNV0gLSBlWzRdICogZVszXSkgLyBuLCAoLXRbMF0gKiBlWzFdICsgdFsxXSAqIGVbMF0gKyBlWzRdICogZVsxXSAtIGVbNV0gKiBlWzBdKSAvIG5dO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBnZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMuYXBwbHlUcmFuc2Zvcm0odCwgZSksXG4gICAgICAgICAgICBpID0gdGhpcy5hcHBseVRyYW5zZm9ybSh0LnNsaWNlKDIsIDQpLCBlKSxcbiAgICAgICAgICAgIHIgPSB0aGlzLmFwcGx5VHJhbnNmb3JtKFt0WzBdLCB0WzNdXSwgZSksXG4gICAgICAgICAgICBzID0gdGhpcy5hcHBseVRyYW5zZm9ybShbdFsyXSwgdFsxXV0sIGUpO1xuICAgICAgICAgIHJldHVybiBbTWF0aC5taW4oblswXSwgaVswXSwgclswXSwgc1swXSksIE1hdGgubWluKG5bMV0sIGlbMV0sIHJbMV0sIHNbMV0pLCBNYXRoLm1heChuWzBdLCBpWzBdLCByWzBdLCBzWzBdKSwgTWF0aC5tYXgoblsxXSwgaVsxXSwgclsxXSwgc1sxXSldO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdFswXSAqIHRbM10gLSB0WzFdICogdFsyXTtcbiAgICAgICAgICByZXR1cm4gW3RbM10gLyBlLCAtdFsxXSAvIGUsIC10WzJdIC8gZSwgdFswXSAvIGUsICh0WzJdICogdFs1XSAtIHRbNF0gKiB0WzNdKSAvIGUsICh0WzRdICogdFsxXSAtIHRbNV0gKiB0WzBdKSAvIGVdO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IFt0WzBdLCB0WzJdLCB0WzFdLCB0WzNdXSxcbiAgICAgICAgICAgIG4gPSB0WzBdICogZVswXSArIHRbMV0gKiBlWzJdLFxuICAgICAgICAgICAgaSA9IHRbMF0gKiBlWzFdICsgdFsxXSAqIGVbM10sXG4gICAgICAgICAgICByID0gdFsyXSAqIGVbMF0gKyB0WzNdICogZVsyXSxcbiAgICAgICAgICAgIHMgPSB0WzJdICogZVsxXSArIHRbM10gKiBlWzNdLFxuICAgICAgICAgICAgYSA9IChuICsgcykgLyAyLFxuICAgICAgICAgICAgbyA9IE1hdGguc3FydCgobiArIHMpICoqIDIgLSA0ICogKG4gKiBzIC0gciAqIGkpKSAvIDIsXG4gICAgICAgICAgICBsID0gYSArIG8gfHwgMSxcbiAgICAgICAgICAgIGMgPSBhIC0gbyB8fCAxO1xuICAgICAgICAgIHJldHVybiBbTWF0aC5zcXJ0KGwpLCBNYXRoLnNxcnQoYyldO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBub3JtYWxpemVSZWN0KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdC5zbGljZSgwKTtcbiAgICAgICAgICBpZiAodFswXSA+IHRbMl0pIHtcbiAgICAgICAgICAgIGVbMF0gPSB0WzJdO1xuICAgICAgICAgICAgZVsyXSA9IHRbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0WzFdID4gdFszXSkge1xuICAgICAgICAgICAgZVsxXSA9IHRbM107XG4gICAgICAgICAgICBlWzNdID0gdFsxXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGludGVyc2VjdCh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IE1hdGgubWF4KE1hdGgubWluKHRbMF0sIHRbMl0pLCBNYXRoLm1pbihlWzBdLCBlWzJdKSksXG4gICAgICAgICAgICBpID0gTWF0aC5taW4oTWF0aC5tYXgodFswXSwgdFsyXSksIE1hdGgubWF4KGVbMF0sIGVbMl0pKTtcbiAgICAgICAgICBpZiAobiA+IGkpIHJldHVybiBudWxsO1xuICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLm1heChNYXRoLm1pbih0WzFdLCB0WzNdKSwgTWF0aC5taW4oZVsxXSwgZVszXSkpLFxuICAgICAgICAgICAgcyA9IE1hdGgubWluKE1hdGgubWF4KHRbMV0sIHRbM10pLCBNYXRoLm1heChlWzFdLCBlWzNdKSk7XG4gICAgICAgICAgcmV0dXJuIHIgPiBzID8gbnVsbCA6IFtuLCByLCBpLCBzXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYmV6aWVyQm91bmRpbmdCb3godCwgZSwgbiwgaSwgciwgcywgYSwgbykge1xuICAgICAgICAgIGNvbnN0IGwgPSBbXSxcbiAgICAgICAgICAgIGMgPSBbW10sIFtdXTtcbiAgICAgICAgICBsZXQgaCwgZCwgdSwgcCwgZiwgZywgbSwgYjtcbiAgICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IDI7ICsrYykge1xuICAgICAgICAgICAgaWYgKDAgPT09IGMpIHtcbiAgICAgICAgICAgICAgZCA9IDYgKiB0IC0gMTIgKiBuICsgNiAqIHI7XG4gICAgICAgICAgICAgIGggPSAtMyAqIHQgKyA5ICogbiAtIDkgKiByICsgMyAqIGE7XG4gICAgICAgICAgICAgIHUgPSAzICogbiAtIDMgKiB0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZCA9IDYgKiBlIC0gMTIgKiBpICsgNiAqIHM7XG4gICAgICAgICAgICAgIGggPSAtMyAqIGUgKyA5ICogaSAtIDkgKiBzICsgMyAqIG87XG4gICAgICAgICAgICAgIHUgPSAzICogaSAtIDMgKiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKGgpIDwgMWUtMTIpIHtcbiAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGQpIDwgMWUtMTIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICBwID0gLXUgLyBkO1xuICAgICAgICAgICAgICAwIDwgcCAmJiBwIDwgMSAmJiBsLnB1c2gocCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtID0gZCAqIGQgLSA0ICogdSAqIGg7XG4gICAgICAgICAgICAgIGIgPSBNYXRoLnNxcnQobSk7XG4gICAgICAgICAgICAgIGlmICghKG0gPCAwKSkge1xuICAgICAgICAgICAgICAgIGYgPSAoLWQgKyBiKSAvICgyICogaCk7XG4gICAgICAgICAgICAgICAgMCA8IGYgJiYgZiA8IDEgJiYgbC5wdXNoKGYpO1xuICAgICAgICAgICAgICAgIGcgPSAoLWQgLSBiKSAvICgyICogaCk7XG4gICAgICAgICAgICAgICAgMCA8IGcgJiYgZyA8IDEgJiYgbC5wdXNoKGcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB2LFxuICAgICAgICAgICAgeSA9IGwubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IEEgPSB5O1xuICAgICAgICAgIGZvciAoOyB5LS07KSB7XG4gICAgICAgICAgICBwID0gbFt5XTtcbiAgICAgICAgICAgIHYgPSAxIC0gcDtcbiAgICAgICAgICAgIGNbMF1beV0gPSB2ICogdiAqIHYgKiB0ICsgMyAqIHYgKiB2ICogcCAqIG4gKyAzICogdiAqIHAgKiBwICogciArIHAgKiBwICogcCAqIGE7XG4gICAgICAgICAgICBjWzFdW3ldID0gdiAqIHYgKiB2ICogZSArIDMgKiB2ICogdiAqIHAgKiBpICsgMyAqIHYgKiBwICogcCAqIHMgKyBwICogcCAqIHAgKiBvO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjWzBdW0FdID0gdDtcbiAgICAgICAgICBjWzFdW0FdID0gZTtcbiAgICAgICAgICBjWzBdW0EgKyAxXSA9IGE7XG4gICAgICAgICAgY1sxXVtBICsgMV0gPSBvO1xuICAgICAgICAgIGNbMF0ubGVuZ3RoID0gY1sxXS5sZW5ndGggPSBBICsgMjtcbiAgICAgICAgICByZXR1cm4gW01hdGgubWluKC4uLmNbMF0pLCBNYXRoLm1pbiguLi5jWzFdKSwgTWF0aC5tYXgoLi4uY1swXSksIE1hdGgubWF4KC4uLmNbMV0pXTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGwgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4LCA3MTEsIDcxMCwgNzI5LCA3MzMsIDczMSwgNzMwLCA3MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyMjYsIDgyMjQsIDgyMjUsIDgyMzAsIDgyMTIsIDgyMTEsIDQwMiwgODI2MCwgODI0OSwgODI1MCwgODcyMiwgODI0MCwgODIyMiwgODIyMCwgODIyMSwgODIxNiwgODIxNywgODIxOCwgODQ4MiwgNjQyNTcsIDY0MjU4LCAzMjEsIDMzOCwgMzUyLCAzNzYsIDM4MSwgMzA1LCAzMjIsIDMzOSwgMzUzLCAzODIsIDAsIDgzNjRdO1xuICAgICAgZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKHQpIHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUodCkpO1xuICAgICAgfVxuICAgICAgZS5Qcm9taXNlQ2FwYWJpbGl0eSA9IChfdCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpLCBjbGFzcyBQcm9taXNlQ2FwYWJpbGl0eSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF90LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAhMVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKCh0LCBlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSBlID0+IHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF90LCAhMCk7XG4gICAgICAgICAgICAgIHQoZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSB0ID0+IHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF90LCAhMCk7XG4gICAgICAgICAgICAgIGUodCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldCBzZXR0bGVkKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3QpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxldCBjID0gbnVsbCxcbiAgICAgICAgaCA9IG51bGw7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigzKSxcbiAgICAgICAgciA9IG4oNCksXG4gICAgICAgIHMgPSBuKDY5KSxcbiAgICAgICAgYSA9IG4oNzApLFxuICAgICAgICBvID0gXCJXZWJBc3NlbWJseVwiLFxuICAgICAgICBsID0gcltvXSxcbiAgICAgICAgYyA9IDcgIT09IEVycm9yKFwiZVwiLCB7XG4gICAgICAgICAgY2F1c2U6IDdcbiAgICAgICAgfSkuY2F1c2UsXG4gICAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyID0gZnVuY3Rpb24gZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIodCwgZSkge1xuICAgICAgICAgIHZhciBuID0ge307XG4gICAgICAgICAgblt0XSA9IGEodCwgZSwgYyk7XG4gICAgICAgICAgaSh7XG4gICAgICAgICAgICBnbG9iYWw6ICEwLFxuICAgICAgICAgICAgY29uc3RydWN0b3I6ICEwLFxuICAgICAgICAgICAgYXJpdHk6IDEsXG4gICAgICAgICAgICBmb3JjZWQ6IGNcbiAgICAgICAgICB9LCBuKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlciA9IGZ1bmN0aW9uIGV4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIodCwgZSkge1xuICAgICAgICAgIGlmIChsICYmIGxbdF0pIHtcbiAgICAgICAgICAgIHZhciBuID0ge307XG4gICAgICAgICAgICBuW3RdID0gYShvICsgXCIuXCIgKyB0LCBlLCBjKTtcbiAgICAgICAgICAgIGkoe1xuICAgICAgICAgICAgICB0YXJnZXQ6IG8sXG4gICAgICAgICAgICAgIHN0YXQ6ICEwLFxuICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjogITAsXG4gICAgICAgICAgICAgIGFyaXR5OiAxLFxuICAgICAgICAgICAgICBmb3JjZWQ6IGNcbiAgICAgICAgICAgIH0sIG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKFwiRXJyb3JcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIEVycm9yKGUpIHtcbiAgICAgICAgICByZXR1cm4gcyh0LCB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcihcIkV2YWxFcnJvclwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gRXZhbEVycm9yKGUpIHtcbiAgICAgICAgICByZXR1cm4gcyh0LCB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcihcIlJhbmdlRXJyb3JcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFJhbmdlRXJyb3IoZSkge1xuICAgICAgICAgIHJldHVybiBzKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKFwiUmVmZXJlbmNlRXJyb3JcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFJlZmVyZW5jZUVycm9yKGUpIHtcbiAgICAgICAgICByZXR1cm4gcyh0LCB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBleHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcihcIlN5bnRheEVycm9yXCIsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBTeW50YXhFcnJvcihlKSB7XG4gICAgICAgICAgcmV0dXJuIHModCwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoXCJUeXBlRXJyb3JcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIFR5cGVFcnJvcihlKSB7XG4gICAgICAgICAgcmV0dXJuIHModCwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoXCJVUklFcnJvclwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gVVJJRXJyb3IoZSkge1xuICAgICAgICAgIHJldHVybiBzKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGV4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoXCJDb21waWxlRXJyb3JcIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIENvbXBpbGVFcnJvcihlKSB7XG4gICAgICAgICAgcmV0dXJuIHModCwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcihcIkxpbmtFcnJvclwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gTGlua0Vycm9yKGUpIHtcbiAgICAgICAgICByZXR1cm4gcyh0LCB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBleHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKFwiUnVudGltZUVycm9yXCIsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBSdW50aW1lRXJyb3IoZSkge1xuICAgICAgICAgIHJldHVybiBzKHQsIHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQpLFxuICAgICAgICByID0gbig1KS5mLFxuICAgICAgICBzID0gbig0NCksXG4gICAgICAgIGEgPSBuKDQ4KSxcbiAgICAgICAgbyA9IG4oMzgpLFxuICAgICAgICBsID0gbig1NiksXG4gICAgICAgIGMgPSBuKDY4KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIHZhciBuLFxuICAgICAgICAgIGgsXG4gICAgICAgICAgZCxcbiAgICAgICAgICB1LFxuICAgICAgICAgIHAsXG4gICAgICAgICAgZiA9IHQudGFyZ2V0LFxuICAgICAgICAgIGcgPSB0Lmdsb2JhbCxcbiAgICAgICAgICBtID0gdC5zdGF0O1xuICAgICAgICBpZiAobiA9IGcgPyBpIDogbSA/IGlbZl0gfHwgbyhmLCB7fSkgOiAoaVtmXSB8fCB7fSkucHJvdG90eXBlKSBmb3IgKGggaW4gZSkge1xuICAgICAgICAgIHUgPSBlW2hdO1xuICAgICAgICAgIGQgPSB0LmRvbnRDYWxsR2V0U2V0ID8gKHAgPSByKG4sIGgpKSAmJiBwLnZhbHVlIDogbltoXTtcbiAgICAgICAgICBpZiAoIWMoZyA/IGggOiBmICsgKG0gPyBcIi5cIiA6IFwiI1wiKSArIGgsIHQuZm9yY2VkKSAmJiB2b2lkIDAgIT09IGQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdSA9PSB0eXBlb2YgZCkgY29udGludWU7XG4gICAgICAgICAgICBsKHUsIGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAodC5zaGFtIHx8IGQgJiYgZC5zaGFtKSAmJiBzKHUsIFwic2hhbVwiLCAhMCk7XG4gICAgICAgICAgYShuLCBoLCB1LCB0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgdmFyIGNoZWNrID0gZnVuY3Rpb24gY2hlY2sodCkge1xuICAgICAgICByZXR1cm4gdCAmJiB0Lk1hdGggPT0gTWF0aCAmJiB0O1xuICAgICAgfTtcbiAgICAgIHQuZXhwb3J0cyA9IGNoZWNrKFwib2JqZWN0XCIgPT0gdHlwZW9mIGdsb2JhbFRoaXMgJiYgZ2xvYmFsVGhpcykgfHwgY2hlY2soXCJvYmplY3RcIiA9PSB0eXBlb2Ygd2luZG93ICYmIHdpbmRvdykgfHwgY2hlY2soXCJvYmplY3RcIiA9PSB0eXBlb2Ygc2VsZiAmJiBzZWxmKSB8fCBjaGVjayhcIm9iamVjdFwiID09IHR5cGVvZiBfX3dlYnBhY2tfcmVxdWlyZV9fLmcgJiYgX193ZWJwYWNrX3JlcXVpcmVfXy5nKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSgpIHx8IHRoaXMgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNiksXG4gICAgICAgIHIgPSBuKDgpLFxuICAgICAgICBzID0gbigxMCksXG4gICAgICAgIGEgPSBuKDExKSxcbiAgICAgICAgbyA9IG4oMTIpLFxuICAgICAgICBsID0gbigxOCksXG4gICAgICAgIGMgPSBuKDM5KSxcbiAgICAgICAgaCA9IG4oNDIpLFxuICAgICAgICBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICAgIGUuZiA9IGkgPyBkIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIGUpIHtcbiAgICAgICAgdCA9IG8odCk7XG4gICAgICAgIGUgPSBsKGUpO1xuICAgICAgICBpZiAoaCkgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZCh0LCBlKTtcbiAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgaWYgKGModCwgZSkpIHJldHVybiBhKCFyKHMuZiwgdCwgZSksIHRbZV0pO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDcpO1xuICAgICAgdC5leHBvcnRzID0gIWkoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gNyAhPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHtcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgIHJldHVybiA3O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlbMV07XG4gICAgICB9KTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuICEhdCgpO1xuICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oOSksXG4gICAgICAgIHIgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcbiAgICAgIHQuZXhwb3J0cyA9IGkgPyByLmJpbmQocikgOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByLmFwcGx5KHIsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNyk7XG4gICAgICB0LmV4cG9ydHMgPSAhaShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ID0gZnVuY3Rpb24gKCkge30uYmluZCgpO1xuICAgICAgICByZXR1cm4gXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0IHx8IHQuaGFzT3duUHJvcGVydHkoXCJwcm90b3R5cGVcIik7XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSkgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBuID0ge30ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIGkgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAgICAgICByID0gaSAmJiAhbi5jYWxsKHtcbiAgICAgICAgICAxOiAyXG4gICAgICAgIH0sIDEpO1xuICAgICAgZS5mID0gciA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKHQpIHtcbiAgICAgICAgdmFyIGUgPSBpKHRoaXMsIHQpO1xuICAgICAgICByZXR1cm4gISFlICYmIGUuZW51bWVyYWJsZTtcbiAgICAgIH0gOiBuO1xuICAgIH0sIHQgPT4ge1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiAhKDEgJiB0KSxcbiAgICAgICAgICBjb25maWd1cmFibGU6ICEoMiAmIHQpLFxuICAgICAgICAgIHdyaXRhYmxlOiAhKDQgJiB0KSxcbiAgICAgICAgICB2YWx1ZTogZVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDEzKSxcbiAgICAgICAgciA9IG4oMTYpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGkocih0KSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbig3KSxcbiAgICAgICAgcyA9IG4oMTUpLFxuICAgICAgICBhID0gT2JqZWN0LFxuICAgICAgICBvID0gaShcIlwiLnNwbGl0KTtcbiAgICAgIHQuZXhwb3J0cyA9IHIoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gIWEoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xuICAgICAgfSkgPyBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gXCJTdHJpbmdcIiA9PSBzKHQpID8gbyh0LCBcIlwiKSA6IGEodCk7XG4gICAgICB9IDogYTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDkpLFxuICAgICAgICByID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgICBzID0gci5jYWxsLFxuICAgICAgICBhID0gaSAmJiByLmJpbmQuYmluZChzLCBzKTtcbiAgICAgIHQuZXhwb3J0cyA9IGkgPyBhIDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gcy5hcHBseSh0LCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE0KSxcbiAgICAgICAgciA9IGkoe30udG9TdHJpbmcpLFxuICAgICAgICBzID0gaShcIlwiLnNsaWNlKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBzKHIodCksIDgsIC0xKTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxNyksXG4gICAgICAgIHIgPSBUeXBlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoaSh0KSkgdGhyb3cgcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgdCk7XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBudWxsID09IHQ7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTkpLFxuICAgICAgICByID0gbigyMyk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IGkodCwgXCJzdHJpbmdcIik7XG4gICAgICAgIHJldHVybiByKGUpID8gZSA6IGUgKyBcIlwiO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDgpLFxuICAgICAgICByID0gbigyMCksXG4gICAgICAgIHMgPSBuKDIzKSxcbiAgICAgICAgYSA9IG4oMzApLFxuICAgICAgICBvID0gbigzMyksXG4gICAgICAgIGwgPSBuKDM0KSxcbiAgICAgICAgYyA9IFR5cGVFcnJvcixcbiAgICAgICAgaCA9IGwoXCJ0b1ByaW1pdGl2ZVwiKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIGlmICghcih0KSB8fCBzKHQpKSByZXR1cm4gdDtcbiAgICAgICAgdmFyIG4sXG4gICAgICAgICAgbCA9IGEodCwgaCk7XG4gICAgICAgIGlmIChsKSB7XG4gICAgICAgICAgdm9pZCAwID09PSBlICYmIChlID0gXCJkZWZhdWx0XCIpO1xuICAgICAgICAgIG4gPSBpKGwsIHQsIGUpO1xuICAgICAgICAgIGlmICghcihuKSB8fCBzKG4pKSByZXR1cm4gbjtcbiAgICAgICAgICB0aHJvdyBjKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZvaWQgMCA9PT0gZSAmJiAoZSA9IFwibnVtYmVyXCIpO1xuICAgICAgICByZXR1cm4gbyh0LCBlKTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigyMSksXG4gICAgICAgIHIgPSBuKDIyKSxcbiAgICAgICAgcyA9IHIuYWxsO1xuICAgICAgdC5leHBvcnRzID0gci5JU19IVE1MRERBID8gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIFwib2JqZWN0XCIgPT0gdHlwZW9mIHQgPyBudWxsICE9PSB0IDogaSh0KSB8fCB0ID09PSBzO1xuICAgICAgfSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBcIm9iamVjdFwiID09IHR5cGVvZiB0ID8gbnVsbCAhPT0gdCA6IGkodCk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMjIpLFxuICAgICAgICByID0gaS5hbGw7XG4gICAgICB0LmV4cG9ydHMgPSBpLklTX0hUTUxEREEgPyBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiB0IHx8IHQgPT09IHI7XG4gICAgICB9IDogZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdDtcbiAgICAgIH07XG4gICAgfSwgdCA9PiB7XG4gICAgICB2YXIgZSA9IFwib2JqZWN0XCIgPT0gdHlwZW9mIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCxcbiAgICAgICAgbiA9IHZvaWQgMCA9PT0gZSAmJiB2b2lkIDAgIT09IGU7XG4gICAgICB0LmV4cG9ydHMgPSB7XG4gICAgICAgIGFsbDogZSxcbiAgICAgICAgSVNfSFRNTEREQTogblxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDI0KSxcbiAgICAgICAgciA9IG4oMjEpLFxuICAgICAgICBzID0gbigyNSksXG4gICAgICAgIGEgPSBuKDI2KSxcbiAgICAgICAgbyA9IE9iamVjdDtcbiAgICAgIHQuZXhwb3J0cyA9IGEgPyBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gXCJzeW1ib2xcIiA9PSB0eXBlb2YgdDtcbiAgICAgIH0gOiBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IGkoXCJTeW1ib2xcIik7XG4gICAgICAgIHJldHVybiByKGUpICYmIHMoZS5wcm90b3R5cGUsIG8odCkpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQpLFxuICAgICAgICByID0gbigyMSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyAobiA9IGlbdF0sIHIobikgPyBuIDogdm9pZCAwKSA6IGlbdF0gJiYgaVt0XVtlXTtcbiAgICAgICAgdmFyIG47XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpO1xuICAgICAgdC5leHBvcnRzID0gaSh7fS5pc1Byb3RvdHlwZU9mKTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDI3KTtcbiAgICAgIHQuZXhwb3J0cyA9IGkgJiYgIVN5bWJvbC5zaGFtICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvcjtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDI4KSxcbiAgICAgICAgciA9IG4oNyksXG4gICAgICAgIHMgPSBuKDQpLlN0cmluZztcbiAgICAgIHQuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ID0gU3ltYm9sKCk7XG4gICAgICAgIHJldHVybiAhcyh0KSB8fCAhKE9iamVjdCh0KSBpbnN0YW5jZW9mIFN5bWJvbCkgfHwgIVN5bWJvbC5zaGFtICYmIGkgJiYgaSA8IDQxO1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpLFxuICAgICAgICByLFxuICAgICAgICBzID0gbig0KSxcbiAgICAgICAgYSA9IG4oMjkpLFxuICAgICAgICBvID0gcy5wcm9jZXNzLFxuICAgICAgICBsID0gcy5EZW5vLFxuICAgICAgICBjID0gbyAmJiBvLnZlcnNpb25zIHx8IGwgJiYgbC52ZXJzaW9uLFxuICAgICAgICBoID0gYyAmJiBjLnY4O1xuICAgICAgaCAmJiAociA9IChpID0gaC5zcGxpdChcIi5cIikpWzBdID4gMCAmJiBpWzBdIDwgNCA/IDEgOiArKGlbMF0gKyBpWzFdKSk7XG4gICAgICAhciAmJiBhICYmICghKGkgPSBhLm1hdGNoKC9FZGdlXFwvKFxcZCspLykpIHx8IGlbMV0gPj0gNzQpICYmIChpID0gYS5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLykpICYmIChyID0gK2lbMV0pO1xuICAgICAgdC5leHBvcnRzID0gcjtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIG5hdmlnYXRvciAmJiBTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgXCJcIjtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMxKSxcbiAgICAgICAgciA9IG4oMTcpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgdmFyIG4gPSB0W2VdO1xuICAgICAgICByZXR1cm4gcihuKSA/IHZvaWQgMCA6IGkobik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMjEpLFxuICAgICAgICByID0gbigzMiksXG4gICAgICAgIHMgPSBUeXBlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoaSh0KSkgcmV0dXJuIHQ7XG4gICAgICAgIHRocm93IHMocih0KSArIFwiIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgICAgfTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHZhciBlID0gU3RyaW5nO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gZSh0KTtcbiAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgIHJldHVybiBcIk9iamVjdFwiO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oOCksXG4gICAgICAgIHIgPSBuKDIxKSxcbiAgICAgICAgcyA9IG4oMjApLFxuICAgICAgICBhID0gVHlwZUVycm9yO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgdmFyIG4sIG87XG4gICAgICAgIGlmIChcInN0cmluZ1wiID09PSBlICYmIHIobiA9IHQudG9TdHJpbmcpICYmICFzKG8gPSBpKG4sIHQpKSkgcmV0dXJuIG87XG4gICAgICAgIGlmIChyKG4gPSB0LnZhbHVlT2YpICYmICFzKG8gPSBpKG4sIHQpKSkgcmV0dXJuIG87XG4gICAgICAgIGlmIChcInN0cmluZ1wiICE9PSBlICYmIHIobiA9IHQudG9TdHJpbmcpICYmICFzKG8gPSBpKG4sIHQpKSkgcmV0dXJuIG87XG4gICAgICAgIHRocm93IGEoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNCksXG4gICAgICAgIHIgPSBuKDM1KSxcbiAgICAgICAgcyA9IG4oMzkpLFxuICAgICAgICBhID0gbig0MSksXG4gICAgICAgIG8gPSBuKDI3KSxcbiAgICAgICAgbCA9IG4oMjYpLFxuICAgICAgICBjID0gaS5TeW1ib2wsXG4gICAgICAgIGggPSByKFwid2tzXCIpLFxuICAgICAgICBkID0gbCA/IGMuZm9yIHx8IGMgOiBjICYmIGMud2l0aG91dFNldHRlciB8fCBhO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcyhoLCB0KSB8fCAoaFt0XSA9IG8gJiYgcyhjLCB0KSA/IGNbdF0gOiBkKFwiU3ltYm9sLlwiICsgdCkpO1xuICAgICAgICByZXR1cm4gaFt0XTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigzNiksXG4gICAgICAgIHIgPSBuKDM3KTtcbiAgICAgICh0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICByZXR1cm4gclt0XSB8fCAoclt0XSA9IHZvaWQgMCAhPT0gZSA/IGUgOiB7fSk7XG4gICAgICB9KShcInZlcnNpb25zXCIsIFtdKS5wdXNoKHtcbiAgICAgICAgdmVyc2lvbjogXCIzLjMxLjFcIixcbiAgICAgICAgbW9kZTogaSA/IFwicHVyZVwiIDogXCJnbG9iYWxcIixcbiAgICAgICAgY29weXJpZ2h0OiBcIsKpIDIwMTQtMjAyMyBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KVwiLFxuICAgICAgICBsaWNlbnNlOiBcImh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzEuMS9MSUNFTlNFXCIsXG4gICAgICAgIHNvdXJjZTogXCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wiXG4gICAgICB9KTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9ICExO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNCksXG4gICAgICAgIHIgPSBuKDM4KSxcbiAgICAgICAgcyA9IFwiX19jb3JlLWpzX3NoYXJlZF9fXCIsXG4gICAgICAgIGEgPSBpW3NdIHx8IHIocywge30pO1xuICAgICAgdC5leHBvcnRzID0gYTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQpLFxuICAgICAgICByID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByKGksIHQsIHtcbiAgICAgICAgICAgIHZhbHVlOiBlLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgICAgICAgIHdyaXRhYmxlOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChuKSB7XG4gICAgICAgICAgaVt0XSA9IGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbig0MCksXG4gICAgICAgIHMgPSBpKHt9Lmhhc093blByb3BlcnR5KTtcbiAgICAgIHQuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKHQsIGUpIHtcbiAgICAgICAgcmV0dXJuIHMocih0KSwgZSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTYpLFxuICAgICAgICByID0gT2JqZWN0O1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIHIoaSh0KSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gMCxcbiAgICAgICAgcyA9IE1hdGgucmFuZG9tKCksXG4gICAgICAgIGEgPSBpKDEuLnRvU3RyaW5nKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiBcIlN5bWJvbChcIiArICh2b2lkIDAgPT09IHQgPyBcIlwiIDogdCkgKyBcIilfXCIgKyBhKCsrciArIHMsIDM2KTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig2KSxcbiAgICAgICAgciA9IG4oNyksXG4gICAgICAgIHMgPSBuKDQzKTtcbiAgICAgIHQuZXhwb3J0cyA9ICFpICYmICFyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIDcgIT0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMoXCJkaXZcIiksIFwiYVwiLCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gNztcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmE7XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQpLFxuICAgICAgICByID0gbigyMCksXG4gICAgICAgIHMgPSBpLmRvY3VtZW50LFxuICAgICAgICBhID0gcihzKSAmJiByKHMuY3JlYXRlRWxlbWVudCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gYSA/IHMuY3JlYXRlRWxlbWVudCh0KSA6IHt9O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDYpLFxuICAgICAgICByID0gbig0NSksXG4gICAgICAgIHMgPSBuKDExKTtcbiAgICAgIHQuZXhwb3J0cyA9IGkgPyBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICByZXR1cm4gci5mKHQsIGUsIHMoMSwgbikpO1xuICAgICAgfSA6IGZ1bmN0aW9uICh0LCBlLCBuKSB7XG4gICAgICAgIHRbZV0gPSBuO1xuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig2KSxcbiAgICAgICAgciA9IG4oNDIpLFxuICAgICAgICBzID0gbig0NiksXG4gICAgICAgIGEgPSBuKDQ3KSxcbiAgICAgICAgbyA9IG4oMTgpLFxuICAgICAgICBsID0gVHlwZUVycm9yLFxuICAgICAgICBjID0gT2JqZWN0LmRlZmluZVByb3BlcnR5LFxuICAgICAgICBoID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgICAgICAgZCA9IFwiZW51bWVyYWJsZVwiLFxuICAgICAgICB1ID0gXCJjb25maWd1cmFibGVcIixcbiAgICAgICAgcCA9IFwid3JpdGFibGVcIjtcbiAgICAgIGUuZiA9IGkgPyBzID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCwgZSwgbikge1xuICAgICAgICBhKHQpO1xuICAgICAgICBlID0gbyhlKTtcbiAgICAgICAgYShuKTtcbiAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdCAmJiBcInByb3RvdHlwZVwiID09PSBlICYmIFwidmFsdWVcIiBpbiBuICYmIHAgaW4gbiAmJiAhbltwXSkge1xuICAgICAgICAgIHZhciBpID0gaCh0LCBlKTtcbiAgICAgICAgICBpZiAoaSAmJiBpW3BdKSB7XG4gICAgICAgICAgICB0W2VdID0gbi52YWx1ZTtcbiAgICAgICAgICAgIG4gPSB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdSBpbiBuID8gblt1XSA6IGlbdV0sXG4gICAgICAgICAgICAgIGVudW1lcmFibGU6IGQgaW4gbiA/IG5bZF0gOiBpW2RdLFxuICAgICAgICAgICAgICB3cml0YWJsZTogITFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjKHQsIGUsIG4pO1xuICAgICAgfSA6IGMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0LCBlLCBuKSB7XG4gICAgICAgIGEodCk7XG4gICAgICAgIGUgPSBvKGUpO1xuICAgICAgICBhKG4pO1xuICAgICAgICBpZiAocikgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYyh0LCBlLCBuKTtcbiAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgaWYgKFwiZ2V0XCIgaW4gbiB8fCBcInNldFwiIGluIG4pIHRocm93IGwoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgICAgXCJ2YWx1ZVwiIGluIG4gJiYgKHRbZV0gPSBuLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNiksXG4gICAgICAgIHIgPSBuKDcpO1xuICAgICAgdC5leHBvcnRzID0gaSAmJiByKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIDQyICE9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7fSwgXCJwcm90b3R5cGVcIiwge1xuICAgICAgICAgIHZhbHVlOiA0MixcbiAgICAgICAgICB3cml0YWJsZTogITFcbiAgICAgICAgfSkucHJvdG90eXBlO1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigyMCksXG4gICAgICAgIHIgPSBTdHJpbmcsXG4gICAgICAgIHMgPSBUeXBlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoaSh0KSkgcmV0dXJuIHQ7XG4gICAgICAgIHRocm93IHMocih0KSArIFwiIGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMjEpLFxuICAgICAgICByID0gbig0NSksXG4gICAgICAgIHMgPSBuKDQ5KSxcbiAgICAgICAgYSA9IG4oMzgpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIG4sIG8pIHtcbiAgICAgICAgbyB8fCAobyA9IHt9KTtcbiAgICAgICAgdmFyIGwgPSBvLmVudW1lcmFibGUsXG4gICAgICAgICAgYyA9IHZvaWQgMCAhPT0gby5uYW1lID8gby5uYW1lIDogZTtcbiAgICAgICAgaShuKSAmJiBzKG4sIGMsIG8pO1xuICAgICAgICBpZiAoby5nbG9iYWwpIGwgPyB0W2VdID0gbiA6IGEoZSwgbik7ZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG8udW5zYWZlID8gdFtlXSAmJiAobCA9ICEwKSA6IGRlbGV0ZSB0W2VdO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgbCA/IHRbZV0gPSBuIDogci5mKHQsIGUsIHtcbiAgICAgICAgICAgIHZhbHVlOiBuLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6ICFvLm5vbkNvbmZpZ3VyYWJsZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiAhby5ub25Xcml0YWJsZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE0KSxcbiAgICAgICAgciA9IG4oNyksXG4gICAgICAgIHMgPSBuKDIxKSxcbiAgICAgICAgYSA9IG4oMzkpLFxuICAgICAgICBvID0gbig2KSxcbiAgICAgICAgbCA9IG4oNTApLkNPTkZJR1VSQUJMRSxcbiAgICAgICAgYyA9IG4oNTEpLFxuICAgICAgICBoID0gbig1MiksXG4gICAgICAgIGQgPSBoLmVuZm9yY2UsXG4gICAgICAgIHUgPSBoLmdldCxcbiAgICAgICAgcCA9IFN0cmluZyxcbiAgICAgICAgZiA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSxcbiAgICAgICAgZyA9IGkoXCJcIi5zbGljZSksXG4gICAgICAgIG0gPSBpKFwiXCIucmVwbGFjZSksXG4gICAgICAgIGIgPSBpKFtdLmpvaW4pLFxuICAgICAgICB2ID0gbyAmJiAhcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIDggIT09IGYoZnVuY3Rpb24gKCkge30sIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiA4XG4gICAgICAgICAgfSkubGVuZ3RoO1xuICAgICAgICB9KSxcbiAgICAgICAgeSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KFwiU3RyaW5nXCIpLFxuICAgICAgICBBID0gdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIG4pIHtcbiAgICAgICAgICBcIlN5bWJvbChcIiA9PT0gZyhwKGUpLCAwLCA3KSAmJiAoZSA9IFwiW1wiICsgbShwKGUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCBcIiQxXCIpICsgXCJdXCIpO1xuICAgICAgICAgIG4gJiYgbi5nZXR0ZXIgJiYgKGUgPSBcImdldCBcIiArIGUpO1xuICAgICAgICAgIG4gJiYgbi5zZXR0ZXIgJiYgKGUgPSBcInNldCBcIiArIGUpO1xuICAgICAgICAgICghYSh0LCBcIm5hbWVcIikgfHwgbCAmJiB0Lm5hbWUgIT09IGUpICYmIChvID8gZih0LCBcIm5hbWVcIiwge1xuICAgICAgICAgICAgdmFsdWU6IGUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgICAgICAgfSkgOiB0Lm5hbWUgPSBlKTtcbiAgICAgICAgICB2ICYmIG4gJiYgYShuLCBcImFyaXR5XCIpICYmIHQubGVuZ3RoICE9PSBuLmFyaXR5ICYmIGYodCwgXCJsZW5ndGhcIiwge1xuICAgICAgICAgICAgdmFsdWU6IG4uYXJpdHlcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgbiAmJiBhKG4sIFwiY29uc3RydWN0b3JcIikgJiYgbi5jb25zdHJ1Y3RvciA/IG8gJiYgZih0LCBcInByb3RvdHlwZVwiLCB7XG4gICAgICAgICAgICAgIHdyaXRhYmxlOiAhMVxuICAgICAgICAgICAgfSkgOiB0LnByb3RvdHlwZSAmJiAodC5wcm90b3R5cGUgPSB2b2lkIDApO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgdmFyIGkgPSBkKHQpO1xuICAgICAgICAgIGEoaSwgXCJzb3VyY2VcIikgfHwgKGkuc291cmNlID0gYih5LCBcInN0cmluZ1wiID09IHR5cGVvZiBlID8gZSA6IFwiXCIpKTtcbiAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfTtcbiAgICAgIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IEEoZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBzKHRoaXMpICYmIHUodGhpcykuc291cmNlIHx8IGModGhpcyk7XG4gICAgICB9LCBcInRvU3RyaW5nXCIpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNiksXG4gICAgICAgIHIgPSBuKDM5KSxcbiAgICAgICAgcyA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgYSA9IGkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgICAgICAgbyA9IHIocywgXCJuYW1lXCIpLFxuICAgICAgICBsID0gbyAmJiBcInNvbWV0aGluZ1wiID09PSBmdW5jdGlvbiBzb21ldGhpbmcoKSB7fS5uYW1lLFxuICAgICAgICBjID0gbyAmJiAoIWkgfHwgaSAmJiBhKHMsIFwibmFtZVwiKS5jb25maWd1cmFibGUpO1xuICAgICAgdC5leHBvcnRzID0ge1xuICAgICAgICBFWElTVFM6IG8sXG4gICAgICAgIFBST1BFUjogbCxcbiAgICAgICAgQ09ORklHVVJBQkxFOiBjXG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbigyMSksXG4gICAgICAgIHMgPSBuKDM3KSxcbiAgICAgICAgYSA9IGkoRnVuY3Rpb24udG9TdHJpbmcpO1xuICAgICAgcihzLmluc3BlY3RTb3VyY2UpIHx8IChzLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gYSh0KTtcbiAgICAgIH0pO1xuICAgICAgdC5leHBvcnRzID0gcy5pbnNwZWN0U291cmNlO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSxcbiAgICAgICAgcixcbiAgICAgICAgcyxcbiAgICAgICAgYSA9IG4oNTMpLFxuICAgICAgICBvID0gbig0KSxcbiAgICAgICAgbCA9IG4oMjApLFxuICAgICAgICBjID0gbig0NCksXG4gICAgICAgIGggPSBuKDM5KSxcbiAgICAgICAgZCA9IG4oMzcpLFxuICAgICAgICB1ID0gbig1NCksXG4gICAgICAgIHAgPSBuKDU1KSxcbiAgICAgICAgZiA9IFwiT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRcIixcbiAgICAgICAgZyA9IG8uVHlwZUVycm9yLFxuICAgICAgICBtID0gby5XZWFrTWFwO1xuICAgICAgaWYgKGEgfHwgZC5zdGF0ZSkge1xuICAgICAgICB2YXIgYiA9IGQuc3RhdGUgfHwgKGQuc3RhdGUgPSBuZXcgbSgpKTtcbiAgICAgICAgYi5nZXQgPSBiLmdldDtcbiAgICAgICAgYi5oYXMgPSBiLmhhcztcbiAgICAgICAgYi5zZXQgPSBiLnNldDtcbiAgICAgICAgaSA9IGZ1bmN0aW9uIGkodCwgZSkge1xuICAgICAgICAgIGlmIChiLmhhcyh0KSkgdGhyb3cgZyhmKTtcbiAgICAgICAgICBlLmZhY2FkZSA9IHQ7XG4gICAgICAgICAgYi5zZXQodCwgZSk7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH07XG4gICAgICAgIHIgPSBmdW5jdGlvbiByKHQpIHtcbiAgICAgICAgICByZXR1cm4gYi5nZXQodCkgfHwge307XG4gICAgICAgIH07XG4gICAgICAgIHMgPSBmdW5jdGlvbiBzKHQpIHtcbiAgICAgICAgICByZXR1cm4gYi5oYXModCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdiA9IHUoXCJzdGF0ZVwiKTtcbiAgICAgICAgcFt2XSA9ICEwO1xuICAgICAgICBpID0gZnVuY3Rpb24gaSh0LCBlKSB7XG4gICAgICAgICAgaWYgKGgodCwgdikpIHRocm93IGcoZik7XG4gICAgICAgICAgZS5mYWNhZGUgPSB0O1xuICAgICAgICAgIGModCwgdiwgZSk7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH07XG4gICAgICAgIHIgPSBmdW5jdGlvbiByKHQpIHtcbiAgICAgICAgICByZXR1cm4gaCh0LCB2KSA/IHRbdl0gOiB7fTtcbiAgICAgICAgfTtcbiAgICAgICAgcyA9IGZ1bmN0aW9uIHModCkge1xuICAgICAgICAgIHJldHVybiBoKHQsIHYpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdC5leHBvcnRzID0ge1xuICAgICAgICBzZXQ6IGksXG4gICAgICAgIGdldDogcixcbiAgICAgICAgaGFzOiBzLFxuICAgICAgICBlbmZvcmNlOiBmdW5jdGlvbiBlbmZvcmNlKHQpIHtcbiAgICAgICAgICByZXR1cm4gcyh0KSA/IHIodCkgOiBpKHQsIHt9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0dGVyRm9yOiBmdW5jdGlvbiBnZXR0ZXJGb3IodCkge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdmFyIG47XG4gICAgICAgICAgICBpZiAoIWwoZSkgfHwgKG4gPSByKGUpKS50eXBlICE9PSB0KSB0aHJvdyBnKFwiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBcIiArIHQgKyBcIiByZXF1aXJlZFwiKTtcbiAgICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig0KSxcbiAgICAgICAgciA9IG4oMjEpLFxuICAgICAgICBzID0gaS5XZWFrTWFwO1xuICAgICAgdC5leHBvcnRzID0gcihzKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKHMpKTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDM1KSxcbiAgICAgICAgciA9IG4oNDEpLFxuICAgICAgICBzID0gaShcImtleXNcIik7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gc1t0XSB8fCAoc1t0XSA9IHIodCkpO1xuICAgICAgfTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9IHt9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMzkpLFxuICAgICAgICByID0gbig1NyksXG4gICAgICAgIHMgPSBuKDUpLFxuICAgICAgICBhID0gbig0NSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICBmb3IgKHZhciBvID0gcihlKSwgbCA9IGEuZiwgYyA9IHMuZiwgaCA9IDA7IGggPCBvLmxlbmd0aDsgaCsrKSB7XG4gICAgICAgICAgdmFyIGQgPSBvW2hdO1xuICAgICAgICAgIGkodCwgZCkgfHwgbiAmJiBpKG4sIGQpIHx8IGwodCwgZCwgYyhlLCBkKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigyNCksXG4gICAgICAgIHIgPSBuKDE0KSxcbiAgICAgICAgcyA9IG4oNTgpLFxuICAgICAgICBhID0gbig2NyksXG4gICAgICAgIG8gPSBuKDQ3KSxcbiAgICAgICAgbCA9IHIoW10uY29uY2F0KTtcbiAgICAgIHQuZXhwb3J0cyA9IGkoXCJSZWZsZWN0XCIsIFwib3duS2V5c1wiKSB8fCBmdW5jdGlvbiBvd25LZXlzKHQpIHtcbiAgICAgICAgdmFyIGUgPSBzLmYobyh0KSksXG4gICAgICAgICAgbiA9IGEuZjtcbiAgICAgICAgcmV0dXJuIG4gPyBsKGUsIG4odCkpIDogZTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig1OSksXG4gICAgICAgIHIgPSBuKDY2KS5jb25jYXQoXCJsZW5ndGhcIiwgXCJwcm90b3R5cGVcIik7XG4gICAgICBlLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKHQpIHtcbiAgICAgICAgcmV0dXJuIGkodCwgcik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbigzOSksXG4gICAgICAgIHMgPSBuKDEyKSxcbiAgICAgICAgYSA9IG4oNjApLmluZGV4T2YsXG4gICAgICAgIG8gPSBuKDU1KSxcbiAgICAgICAgbCA9IGkoW10ucHVzaCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICB2YXIgbixcbiAgICAgICAgICBpID0gcyh0KSxcbiAgICAgICAgICBjID0gMCxcbiAgICAgICAgICBoID0gW107XG4gICAgICAgIGZvciAobiBpbiBpKSAhcihvLCBuKSAmJiByKGksIG4pICYmIGwoaCwgbik7XG4gICAgICAgIGZvciAoOyBlLmxlbmd0aCA+IGM7KSByKGksIG4gPSBlW2MrK10pICYmICh+YShoLCBuKSB8fCBsKGgsIG4pKTtcbiAgICAgICAgcmV0dXJuIGg7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTIpLFxuICAgICAgICByID0gbig2MSksXG4gICAgICAgIHMgPSBuKDY0KSxcbiAgICAgICAgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gY3JlYXRlTWV0aG9kKHQpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUsIG4sIGEpIHtcbiAgICAgICAgICAgIHZhciBvLFxuICAgICAgICAgICAgICBsID0gaShlKSxcbiAgICAgICAgICAgICAgYyA9IHMobCksXG4gICAgICAgICAgICAgIGggPSByKGEsIGMpO1xuICAgICAgICAgICAgaWYgKHQgJiYgbiAhPSBuKSB7XG4gICAgICAgICAgICAgIGZvciAoOyBjID4gaDspIGlmICgobyA9IGxbaCsrXSkgIT0gbykgcmV0dXJuICEwO1xuICAgICAgICAgICAgfSBlbHNlIGZvciAoOyBjID4gaDsgaCsrKSBpZiAoKHQgfHwgaCBpbiBsKSAmJiBsW2hdID09PSBuKSByZXR1cm4gdCB8fCBoIHx8IDA7XG4gICAgICAgICAgICByZXR1cm4gIXQgJiYgLTE7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIHQuZXhwb3J0cyA9IHtcbiAgICAgICAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCghMCksXG4gICAgICAgIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZCghMSlcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig2MiksXG4gICAgICAgIHIgPSBNYXRoLm1heCxcbiAgICAgICAgcyA9IE1hdGgubWluO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgdmFyIG4gPSBpKHQpO1xuICAgICAgICByZXR1cm4gbiA8IDAgPyByKG4gKyBlLCAwKSA6IHMobiwgZSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNjMpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIGUgPSArdDtcbiAgICAgICAgcmV0dXJuIGUgIT0gZSB8fCAwID09PSBlID8gMCA6IGkoZSk7XG4gICAgICB9O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdmFyIGUgPSBNYXRoLmNlaWwsXG4gICAgICAgIG4gPSBNYXRoLmZsb29yO1xuICAgICAgdC5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh0KSB7XG4gICAgICAgIHZhciBpID0gK3Q7XG4gICAgICAgIHJldHVybiAoaSA+IDAgPyBuIDogZSkoaSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNjUpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIGkodC5sZW5ndGgpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDYyKSxcbiAgICAgICAgciA9IE1hdGgubWluO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgcmV0dXJuIHQgPiAwID8gcihpKHQpLCA5MDA3MTk5MjU0NzQwOTkxKSA6IDA7XG4gICAgICB9O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdC5leHBvcnRzID0gW1wiY29uc3RydWN0b3JcIiwgXCJoYXNPd25Qcm9wZXJ0eVwiLCBcImlzUHJvdG90eXBlT2ZcIiwgXCJwcm9wZXJ0eUlzRW51bWVyYWJsZVwiLCBcInRvTG9jYWxlU3RyaW5nXCIsIFwidG9TdHJpbmdcIiwgXCJ2YWx1ZU9mXCJdO1xuICAgIH0sICh0LCBlKSA9PiB7XG4gICAgICBlLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNyksXG4gICAgICAgIHIgPSBuKDIxKSxcbiAgICAgICAgcyA9IC8jfFxcLnByb3RvdHlwZVxcLi8sXG4gICAgICAgIGlzRm9yY2VkID0gZnVuY3Rpb24gaXNGb3JjZWQodCwgZSkge1xuICAgICAgICAgIHZhciBuID0gb1thKHQpXTtcbiAgICAgICAgICByZXR1cm4gbiA9PSBjIHx8IG4gIT0gbCAmJiAocihlKSA/IGkoZSkgOiAhIWUpO1xuICAgICAgICB9LFxuICAgICAgICBhID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UocywgXCIuXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIG8gPSBpc0ZvcmNlZC5kYXRhID0ge30sXG4gICAgICAgIGwgPSBpc0ZvcmNlZC5OQVRJVkUgPSBcIk5cIixcbiAgICAgICAgYyA9IGlzRm9yY2VkLlBPTFlGSUxMID0gXCJQXCI7XG4gICAgICB0LmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDkpLFxuICAgICAgICByID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgICBzID0gci5hcHBseSxcbiAgICAgICAgYSA9IHIuY2FsbDtcbiAgICAgIHQuZXhwb3J0cyA9IFwib2JqZWN0XCIgPT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5hcHBseSB8fCAoaSA/IGEuYmluZChzKSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGEuYXBwbHkocywgYXJndW1lbnRzKTtcbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDI0KSxcbiAgICAgICAgciA9IG4oMzkpLFxuICAgICAgICBzID0gbig0NCksXG4gICAgICAgIGEgPSBuKDI1KSxcbiAgICAgICAgbyA9IG4oNzEpLFxuICAgICAgICBsID0gbig1NiksXG4gICAgICAgIGMgPSBuKDc0KSxcbiAgICAgICAgaCA9IG4oNzUpLFxuICAgICAgICBkID0gbig3NiksXG4gICAgICAgIHUgPSBuKDgwKSxcbiAgICAgICAgcCA9IG4oODEpLFxuICAgICAgICBmID0gbig2KSxcbiAgICAgICAgZyA9IG4oMzYpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIG4sIG0pIHtcbiAgICAgICAgdmFyIGIgPSBcInN0YWNrVHJhY2VMaW1pdFwiLFxuICAgICAgICAgIHYgPSBtID8gMiA6IDEsXG4gICAgICAgICAgeSA9IHQuc3BsaXQoXCIuXCIpLFxuICAgICAgICAgIEEgPSB5W3kubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgXyA9IGkuYXBwbHkobnVsbCwgeSk7XG4gICAgICAgIGlmIChfKSB7XG4gICAgICAgICAgdmFyIFMgPSBfLnByb3RvdHlwZTtcbiAgICAgICAgICAhZyAmJiByKFMsIFwiY2F1c2VcIikgJiYgZGVsZXRlIFMuY2F1c2U7XG4gICAgICAgICAgaWYgKCFuKSByZXR1cm4gXztcbiAgICAgICAgICB2YXIgRSA9IGkoXCJFcnJvclwiKSxcbiAgICAgICAgICAgIHggPSBlKGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgICAgIHZhciBuID0gZChtID8gZSA6IHQsIHZvaWQgMCksXG4gICAgICAgICAgICAgICAgaSA9IG0gPyBuZXcgXyh0KSA6IG5ldyBfKCk7XG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gbiAmJiBzKGksIFwibWVzc2FnZVwiLCBuKTtcbiAgICAgICAgICAgICAgcChpLCB4LCBpLnN0YWNrLCAyKTtcbiAgICAgICAgICAgICAgdGhpcyAmJiBhKFMsIHRoaXMpICYmIGgoaSwgdGhpcywgeCk7XG4gICAgICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiB2ICYmIHUoaSwgYXJndW1lbnRzW3ZdKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB4LnByb3RvdHlwZSA9IFM7XG4gICAgICAgICAgaWYgKFwiRXJyb3JcIiAhPT0gQSkgbyA/IG8oeCwgRSkgOiBsKHgsIEUsIHtcbiAgICAgICAgICAgIG5hbWU6ICEwXG4gICAgICAgICAgfSk7ZWxzZSBpZiAoZiAmJiBiIGluIF8pIHtcbiAgICAgICAgICAgIGMoeCwgXywgYik7XG4gICAgICAgICAgICBjKHgsIF8sIFwicHJlcGFyZVN0YWNrVHJhY2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGwoeCwgXyk7XG4gICAgICAgICAgaWYgKCFnKSB0cnkge1xuICAgICAgICAgICAgUy5uYW1lICE9PSBBICYmIHMoUywgXCJuYW1lXCIsIEEpO1xuICAgICAgICAgICAgUy5jb25zdHJ1Y3RvciA9IHg7XG4gICAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDcyKSxcbiAgICAgICAgciA9IG4oNDcpLFxuICAgICAgICBzID0gbig3Myk7XG4gICAgICB0LmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKFwiX19wcm90b19fXCIgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0LFxuICAgICAgICAgIGUgPSAhMSxcbiAgICAgICAgICBuID0ge307XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKHQgPSBpKE9iamVjdC5wcm90b3R5cGUsIFwiX19wcm90b19fXCIsIFwic2V0XCIpKShuLCBbXSk7XG4gICAgICAgICAgZSA9IG4gaW5zdGFuY2VvZiBBcnJheTtcbiAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKG4sIGkpIHtcbiAgICAgICAgICByKG4pO1xuICAgICAgICAgIHMoaSk7XG4gICAgICAgICAgZSA/IHQobiwgaSkgOiBuLl9fcHJvdG9fXyA9IGk7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH07XG4gICAgICB9KCkgOiB2b2lkIDApO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbigzMSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LCBlKVtuXSkpO1xuICAgICAgICB9IGNhdGNoICh0KSB7fVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDIxKSxcbiAgICAgICAgciA9IFN0cmluZyxcbiAgICAgICAgcyA9IFR5cGVFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIGlmIChcIm9iamVjdFwiID09IHR5cGVvZiB0IHx8IGkodCkpIHJldHVybiB0O1xuICAgICAgICB0aHJvdyBzKFwiQ2FuJ3Qgc2V0IFwiICsgcih0KSArIFwiIGFzIGEgcHJvdG90eXBlXCIpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQ1KS5mO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUsIG4pIHtcbiAgICAgICAgbiBpbiB0IHx8IGkodCwgbiwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gZVtuXTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHQpIHtcbiAgICAgICAgICAgIGVbbl0gPSB0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMjEpLFxuICAgICAgICByID0gbigyMCksXG4gICAgICAgIHMgPSBuKDcxKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCBuKSB7XG4gICAgICAgIHZhciBhLCBvO1xuICAgICAgICBzICYmIGkoYSA9IGUuY29uc3RydWN0b3IpICYmIGEgIT09IG4gJiYgcihvID0gYS5wcm90b3R5cGUpICYmIG8gIT09IG4ucHJvdG90eXBlICYmIHModCwgbyk7XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDc3KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IFwiXCIgOiBlIDogaSh0KTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig3OCksXG4gICAgICAgIHIgPSBTdHJpbmc7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoXCJTeW1ib2xcIiA9PT0gaSh0KSkgdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmdcIik7XG4gICAgICAgIHJldHVybiByKHQpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDc5KSxcbiAgICAgICAgciA9IG4oMjEpLFxuICAgICAgICBzID0gbigxNSksXG4gICAgICAgIGEgPSBuKDM0KShcInRvU3RyaW5nVGFnXCIpLFxuICAgICAgICBvID0gT2JqZWN0LFxuICAgICAgICBsID0gXCJBcmd1bWVudHNcIiA9PSBzKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gYXJndW1lbnRzO1xuICAgICAgICB9KCkpO1xuICAgICAgdC5leHBvcnRzID0gaSA/IHMgOiBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSwgbiwgaTtcbiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gdCA/IFwiVW5kZWZpbmVkXCIgOiBudWxsID09PSB0ID8gXCJOdWxsXCIgOiBcInN0cmluZ1wiID09IHR5cGVvZiAobiA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0W2VdO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgIH0oZSA9IG8odCksIGEpKSA/IG4gOiBsID8gcyhlKSA6IFwiT2JqZWN0XCIgPT0gKGkgPSBzKGUpKSAmJiByKGUuY2FsbGVlKSA/IFwiQXJndW1lbnRzXCIgOiBpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSB7fTtcbiAgICAgIGlbbigzNCkoXCJ0b1N0cmluZ1RhZ1wiKV0gPSBcInpcIjtcbiAgICAgIHQuZXhwb3J0cyA9IFwiW29iamVjdCB6XVwiID09PSBTdHJpbmcoaSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigyMCksXG4gICAgICAgIHIgPSBuKDQ0KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIGkoZSkgJiYgXCJjYXVzZVwiIGluIGUgJiYgcih0LCBcImNhdXNlXCIsIGUuY2F1c2UpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDQ0KSxcbiAgICAgICAgciA9IG4oODIpLFxuICAgICAgICBzID0gbig4MyksXG4gICAgICAgIGEgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCBuLCBvKSB7XG4gICAgICAgIHMgJiYgKGEgPyBhKHQsIGUpIDogaSh0LCBcInN0YWNrXCIsIHIobiwgbykpKTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxNCksXG4gICAgICAgIHIgPSBFcnJvcixcbiAgICAgICAgcyA9IGkoXCJcIi5yZXBsYWNlKSxcbiAgICAgICAgYSA9IFN0cmluZyhyKFwienhjYXNkXCIpLnN0YWNrKSxcbiAgICAgICAgbyA9IC9cXG5cXHMqYXQgW146XSo6W15cXG5dKi8sXG4gICAgICAgIGwgPSBvLnRlc3QoYSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICBpZiAobCAmJiBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmICFyLnByZXBhcmVTdGFja1RyYWNlKSBmb3IgKDsgZS0tOykgdCA9IHModCwgbywgXCJcIik7XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDcpLFxuICAgICAgICByID0gbigxMSk7XG4gICAgICB0LmV4cG9ydHMgPSAhaShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ID0gRXJyb3IoXCJhXCIpO1xuICAgICAgICBpZiAoIShcInN0YWNrXCIgaW4gdCkpIHJldHVybiAhMDtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwic3RhY2tcIiwgcigxLCA3KSk7XG4gICAgICAgIHJldHVybiA3ICE9PSB0LnN0YWNrO1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oNDgpLFxuICAgICAgICByID0gbigxNCksXG4gICAgICAgIHMgPSBuKDc3KSxcbiAgICAgICAgYSA9IG4oODUpLFxuICAgICAgICBvID0gVVJMU2VhcmNoUGFyYW1zLFxuICAgICAgICBsID0gby5wcm90b3R5cGUsXG4gICAgICAgIGMgPSByKGwuYXBwZW5kKSxcbiAgICAgICAgaCA9IHIobC5kZWxldGUpLFxuICAgICAgICBkID0gcihsLmZvckVhY2gpLFxuICAgICAgICB1ID0gcihbXS5wdXNoKSxcbiAgICAgICAgcCA9IG5ldyBvKFwiYT0xJmE9MlwiKTtcbiAgICAgIHAuZGVsZXRlKFwiYVwiLCAxKTtcbiAgICAgIHAgKyBcIlwiICE9IFwiYT0yXCIgJiYgaShsLCBcImRlbGV0ZVwiLCBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgbiA9IGUgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoZSAmJiB2b2lkIDAgPT09IG4pIHJldHVybiBoKHRoaXMsIHQpO1xuICAgICAgICB2YXIgaSA9IFtdO1xuICAgICAgICBkKHRoaXMsIGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgICAgdShpLCB7XG4gICAgICAgICAgICBrZXk6IGUsXG4gICAgICAgICAgICB2YWx1ZTogdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYShlLCAxKTtcbiAgICAgICAgZm9yICh2YXIgciwgbyA9IHModCksIGwgPSBzKG4pLCBwID0gMCwgZiA9IDAsIGcgPSAhMSwgbSA9IGkubGVuZ3RoOyBwIDwgbTspIHtcbiAgICAgICAgICByID0gaVtwKytdO1xuICAgICAgICAgIGlmIChnIHx8IHIua2V5ID09PSBvKSB7XG4gICAgICAgICAgICBnID0gITA7XG4gICAgICAgICAgICBoKHRoaXMsIHIua2V5KTtcbiAgICAgICAgICB9IGVsc2UgZisrO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoOyBmIDwgbTspIChyID0gaVtmKytdKS5rZXkgPT09IG8gJiYgci52YWx1ZSA9PT0gbCB8fCBjKHRoaXMsIHIua2V5LCByLnZhbHVlKTtcbiAgICAgIH0sIHtcbiAgICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICAgIHVuc2FmZTogITBcbiAgICAgIH0pO1xuICAgIH0sIHQgPT4ge1xuICAgICAgdmFyIGUgPSBUeXBlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgbikge1xuICAgICAgICBpZiAodCA8IG4pIHRocm93IGUoXCJOb3QgZW5vdWdoIGFyZ3VtZW50c1wiKTtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDQ4KSxcbiAgICAgICAgciA9IG4oMTQpLFxuICAgICAgICBzID0gbig3NyksXG4gICAgICAgIGEgPSBuKDg1KSxcbiAgICAgICAgbyA9IFVSTFNlYXJjaFBhcmFtcyxcbiAgICAgICAgbCA9IG8ucHJvdG90eXBlLFxuICAgICAgICBjID0gcihsLmdldEFsbCksXG4gICAgICAgIGggPSByKGwuaGFzKTtcbiAgICAgIG5ldyBvKFwiYT0xXCIpLmhhcyhcImFcIiwgMikgJiYgaShsLCBcImhhc1wiLCBmdW5jdGlvbiBoYXModCkge1xuICAgICAgICB2YXIgZSA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgbiA9IGUgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoZSAmJiB2b2lkIDAgPT09IG4pIHJldHVybiBoKHRoaXMsIHQpO1xuICAgICAgICB2YXIgaSA9IGModGhpcywgdCk7XG4gICAgICAgIGEoZSwgMSk7XG4gICAgICAgIGZvciAodmFyIHIgPSBzKG4pLCBvID0gMDsgbyA8IGkubGVuZ3RoOykgaWYgKGlbbysrXSA9PT0gcikgcmV0dXJuICEwO1xuICAgICAgICByZXR1cm4gITE7XG4gICAgICB9LCB7XG4gICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICB1bnNhZmU6ICEwXG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbig2KSxcbiAgICAgICAgciA9IG4oMTQpLFxuICAgICAgICBzID0gbig4OCksXG4gICAgICAgIGEgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLFxuICAgICAgICBvID0gcihhLmZvckVhY2gpO1xuICAgICAgaSAmJiAhKFwic2l6ZVwiIGluIGEpICYmIHMoYSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgICAgIHZhciB0ID0gMDtcbiAgICAgICAgICBvKHRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHQrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICAgICAgZW51bWVyYWJsZTogITBcbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNDkpLFxuICAgICAgICByID0gbig0NSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICBuLmdldCAmJiBpKG4uZ2V0LCBlLCB7XG4gICAgICAgICAgZ2V0dGVyOiAhMFxuICAgICAgICB9KTtcbiAgICAgICAgbi5zZXQgJiYgaShuLnNldCwgZSwge1xuICAgICAgICAgIHNldHRlcjogITBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByLmYodCwgZSwgbik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbig0MCksXG4gICAgICAgIHMgPSBuKDY0KSxcbiAgICAgICAgYSA9IG4oOTApLFxuICAgICAgICBvID0gbig5Mik7XG4gICAgICBpKHtcbiAgICAgICAgdGFyZ2V0OiBcIkFycmF5XCIsXG4gICAgICAgIHByb3RvOiAhMCxcbiAgICAgICAgYXJpdHk6IDEsXG4gICAgICAgIGZvcmNlZDogbig3KShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIDQyOTQ5NjcyOTcgIT09IFtdLnB1c2guY2FsbCh7XG4gICAgICAgICAgICBsZW5ndGg6IDQyOTQ5NjcyOTZcbiAgICAgICAgICB9LCAxKTtcbiAgICAgICAgfSkgfHwgIWZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCBcImxlbmd0aFwiLCB7XG4gICAgICAgICAgICAgIHdyaXRhYmxlOiAhMVxuICAgICAgICAgICAgfSkucHVzaCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0IGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSgpXG4gICAgICB9LCB7XG4gICAgICAgIHB1c2g6IGZ1bmN0aW9uIHB1c2godCkge1xuICAgICAgICAgIHZhciBlID0gcih0aGlzKSxcbiAgICAgICAgICAgIG4gPSBzKGUpLFxuICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgbyhuICsgaSk7XG4gICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpOyBsKyspIHtcbiAgICAgICAgICAgIGVbbl0gPSBhcmd1bWVudHNbbF07XG4gICAgICAgICAgICBuKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGEoZSwgbik7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDYpLFxuICAgICAgICByID0gbig5MSksXG4gICAgICAgIHMgPSBUeXBlRXJyb3IsXG4gICAgICAgIGEgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLFxuICAgICAgICBvID0gaSAmJiAhZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRoaXMpIHJldHVybiAhMDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCBcImxlbmd0aFwiLCB7XG4gICAgICAgICAgICAgIHdyaXRhYmxlOiAhMVxuICAgICAgICAgICAgfSkubGVuZ3RoID0gMTtcbiAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdCBpbnN0YW5jZW9mIFR5cGVFcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH0oKTtcbiAgICAgIHQuZXhwb3J0cyA9IG8gPyBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICBpZiAocih0KSAmJiAhYSh0LCBcImxlbmd0aFwiKS53cml0YWJsZSkgdGhyb3cgcyhcIkNhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGhcIik7XG4gICAgICAgIHJldHVybiB0Lmxlbmd0aCA9IGU7XG4gICAgICB9IDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgcmV0dXJuIHQubGVuZ3RoID0gZTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxNSk7XG4gICAgICB0LmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkodCkge1xuICAgICAgICByZXR1cm4gXCJBcnJheVwiID09IGkodCk7XG4gICAgICB9O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdmFyIGUgPSBUeXBlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAodCA+IDkwMDcxOTkyNTQ3NDA5OTEpIHRocm93IGUoXCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWRcIik7XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbig5NCksXG4gICAgICAgIHIgPSBuKDk4KS5maW5kTGFzdCxcbiAgICAgICAgcyA9IGkuYVR5cGVkQXJyYXk7XG4gICAgICAoMCwgaS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKShcImZpbmRMYXN0XCIsIGZ1bmN0aW9uIGZpbmRMYXN0KHQpIHtcbiAgICAgICAgcmV0dXJuIHIocyh0aGlzKSwgdCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB2b2lkIDApO1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSxcbiAgICAgICAgcixcbiAgICAgICAgcyxcbiAgICAgICAgYSA9IG4oOTUpLFxuICAgICAgICBvID0gbig2KSxcbiAgICAgICAgbCA9IG4oNCksXG4gICAgICAgIGMgPSBuKDIxKSxcbiAgICAgICAgaCA9IG4oMjApLFxuICAgICAgICBkID0gbigzOSksXG4gICAgICAgIHUgPSBuKDc4KSxcbiAgICAgICAgcCA9IG4oMzIpLFxuICAgICAgICBmID0gbig0NCksXG4gICAgICAgIGcgPSBuKDQ4KSxcbiAgICAgICAgbSA9IG4oODgpLFxuICAgICAgICBiID0gbigyNSksXG4gICAgICAgIHYgPSBuKDk2KSxcbiAgICAgICAgeSA9IG4oNzEpLFxuICAgICAgICBBID0gbigzNCksXG4gICAgICAgIF8gPSBuKDQxKSxcbiAgICAgICAgUyA9IG4oNTIpLFxuICAgICAgICBFID0gUy5lbmZvcmNlLFxuICAgICAgICB4ID0gUy5nZXQsXG4gICAgICAgIHcgPSBsLkludDhBcnJheSxcbiAgICAgICAgQyA9IHcgJiYgdy5wcm90b3R5cGUsXG4gICAgICAgIFQgPSBsLlVpbnQ4Q2xhbXBlZEFycmF5LFxuICAgICAgICBQID0gVCAmJiBULnByb3RvdHlwZSxcbiAgICAgICAgayA9IHcgJiYgdih3KSxcbiAgICAgICAgTSA9IEMgJiYgdihDKSxcbiAgICAgICAgUiA9IE9iamVjdC5wcm90b3R5cGUsXG4gICAgICAgIEkgPSBsLlR5cGVFcnJvcixcbiAgICAgICAgRCA9IEEoXCJ0b1N0cmluZ1RhZ1wiKSxcbiAgICAgICAgTyA9IF8oXCJUWVBFRF9BUlJBWV9UQUdcIiksXG4gICAgICAgIEwgPSBcIlR5cGVkQXJyYXlDb25zdHJ1Y3RvclwiLFxuICAgICAgICBOID0gYSAmJiAhIXkgJiYgXCJPcGVyYVwiICE9PSB1KGwub3BlcmEpLFxuICAgICAgICBCID0gITEsXG4gICAgICAgIGogPSB7XG4gICAgICAgICAgSW50OEFycmF5OiAxLFxuICAgICAgICAgIFVpbnQ4QXJyYXk6IDEsXG4gICAgICAgICAgVWludDhDbGFtcGVkQXJyYXk6IDEsXG4gICAgICAgICAgSW50MTZBcnJheTogMixcbiAgICAgICAgICBVaW50MTZBcnJheTogMixcbiAgICAgICAgICBJbnQzMkFycmF5OiA0LFxuICAgICAgICAgIFVpbnQzMkFycmF5OiA0LFxuICAgICAgICAgIEZsb2F0MzJBcnJheTogNCxcbiAgICAgICAgICBGbG9hdDY0QXJyYXk6IDhcbiAgICAgICAgfSxcbiAgICAgICAgVSA9IHtcbiAgICAgICAgICBCaWdJbnQ2NEFycmF5OiA4LFxuICAgICAgICAgIEJpZ1VpbnQ2NEFycmF5OiA4XG4gICAgICAgIH0sXG4gICAgICAgIGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdmFyIGUgPSB2KHQpO1xuICAgICAgICAgIGlmIChoKGUpKSB7XG4gICAgICAgICAgICB2YXIgbiA9IHgoZSk7XG4gICAgICAgICAgICByZXR1cm4gbiAmJiBkKG4sIEwpID8gbltMXSA6IGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcihlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzVHlwZWRBcnJheSA9IGZ1bmN0aW9uIGlzVHlwZWRBcnJheSh0KSB7XG4gICAgICAgICAgaWYgKCFoKHQpKSByZXR1cm4gITE7XG4gICAgICAgICAgdmFyIGUgPSB1KHQpO1xuICAgICAgICAgIHJldHVybiBkKGosIGUpIHx8IGQoVSwgZSk7XG4gICAgICAgIH07XG4gICAgICBmb3IgKGkgaW4gaikgKHMgPSAociA9IGxbaV0pICYmIHIucHJvdG90eXBlKSA/IEUocylbTF0gPSByIDogTiA9ICExO1xuICAgICAgZm9yIChpIGluIFUpIChzID0gKHIgPSBsW2ldKSAmJiByLnByb3RvdHlwZSkgJiYgKEUocylbTF0gPSByKTtcbiAgICAgIGlmICghTiB8fCAhYyhrKSB8fCBrID09PSBGdW5jdGlvbi5wcm90b3R5cGUpIHtcbiAgICAgICAgayA9IGZ1bmN0aW9uIFR5cGVkQXJyYXkoKSB7XG4gICAgICAgICAgdGhyb3cgSShcIkluY29ycmVjdCBpbnZvY2F0aW9uXCIpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoTikgZm9yIChpIGluIGopIGxbaV0gJiYgeShsW2ldLCBrKTtcbiAgICAgIH1cbiAgICAgIGlmICghTiB8fCAhTSB8fCBNID09PSBSKSB7XG4gICAgICAgIE0gPSBrLnByb3RvdHlwZTtcbiAgICAgICAgaWYgKE4pIGZvciAoaSBpbiBqKSBsW2ldICYmIHkobFtpXS5wcm90b3R5cGUsIE0pO1xuICAgICAgfVxuICAgICAgTiAmJiB2KFApICE9PSBNICYmIHkoUCwgTSk7XG4gICAgICBpZiAobyAmJiAhZChNLCBEKSkge1xuICAgICAgICBCID0gITA7XG4gICAgICAgIG0oTSwgRCwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gaCh0aGlzKSA/IHRoaXNbT10gOiB2b2lkIDA7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChpIGluIGopIGxbaV0gJiYgZihsW2ldLCBPLCBpKTtcbiAgICAgIH1cbiAgICAgIHQuZXhwb3J0cyA9IHtcbiAgICAgICAgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzogTixcbiAgICAgICAgVFlQRURfQVJSQVlfVEFHOiBCICYmIE8sXG4gICAgICAgIGFUeXBlZEFycmF5OiBmdW5jdGlvbiBhVHlwZWRBcnJheSh0KSB7XG4gICAgICAgICAgaWYgKGlzVHlwZWRBcnJheSh0KSkgcmV0dXJuIHQ7XG4gICAgICAgICAgdGhyb3cgSShcIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheVwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjogZnVuY3Rpb24gYVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgaWYgKGModCkgJiYgKCF5IHx8IGIoaywgdCkpKSByZXR1cm4gdDtcbiAgICAgICAgICB0aHJvdyBJKHAodCkgKyBcIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvclwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXhwb3J0VHlwZWRBcnJheU1ldGhvZDogZnVuY3Rpb24gZXhwb3J0VHlwZWRBcnJheU1ldGhvZCh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgaWYgKG8pIHtcbiAgICAgICAgICAgIGlmIChuKSBmb3IgKHZhciByIGluIGopIHtcbiAgICAgICAgICAgICAgdmFyIHMgPSBsW3JdO1xuICAgICAgICAgICAgICBpZiAocyAmJiBkKHMucHJvdG90eXBlLCB0KSkgdHJ5IHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcy5wcm90b3R5cGVbdF07XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKG4pIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgcy5wcm90b3R5cGVbdF0gPSBlO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE1bdF0gJiYgIW4gfHwgZyhNLCB0LCBuID8gZSA6IE4gJiYgQ1t0XSB8fCBlLCBpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6IGZ1bmN0aW9uIGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2QodCwgZSwgbikge1xuICAgICAgICAgIHZhciBpLCByO1xuICAgICAgICAgIGlmIChvKSB7XG4gICAgICAgICAgICBpZiAoeSkge1xuICAgICAgICAgICAgICBpZiAobikgZm9yIChpIGluIGopIGlmICgociA9IGxbaV0pICYmIGQociwgdCkpIHRyeSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJbdF07XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgICAgIGlmIChrW3RdICYmICFuKSByZXR1cm47XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGcoaywgdCwgbiA/IGUgOiBOICYmIGtbdF0gfHwgZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGkgaW4gaikgIShyID0gbFtpXSkgfHwgclt0XSAmJiAhbiB8fCBnKHIsIHQsIGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yOiBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsXG4gICAgICAgIGlzVmlldzogZnVuY3Rpb24gaXNWaWV3KHQpIHtcbiAgICAgICAgICBpZiAoIWgodCkpIHJldHVybiAhMTtcbiAgICAgICAgICB2YXIgZSA9IHUodCk7XG4gICAgICAgICAgcmV0dXJuIFwiRGF0YVZpZXdcIiA9PT0gZSB8fCBkKGosIGUpIHx8IGQoVSwgZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzVHlwZWRBcnJheTogaXNUeXBlZEFycmF5LFxuICAgICAgICBUeXBlZEFycmF5OiBrLFxuICAgICAgICBUeXBlZEFycmF5UHJvdG90eXBlOiBNXG4gICAgICB9O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdC5leHBvcnRzID0gXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgQXJyYXlCdWZmZXIgJiYgXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgRGF0YVZpZXc7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigzOSksXG4gICAgICAgIHIgPSBuKDIxKSxcbiAgICAgICAgcyA9IG4oNDApLFxuICAgICAgICBhID0gbig1NCksXG4gICAgICAgIG8gPSBuKDk3KSxcbiAgICAgICAgbCA9IGEoXCJJRV9QUk9UT1wiKSxcbiAgICAgICAgYyA9IE9iamVjdCxcbiAgICAgICAgaCA9IGMucHJvdG90eXBlO1xuICAgICAgdC5leHBvcnRzID0gbyA/IGMuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IHModCk7XG4gICAgICAgIGlmIChpKGUsIGwpKSByZXR1cm4gZVtsXTtcbiAgICAgICAgdmFyIG4gPSBlLmNvbnN0cnVjdG9yO1xuICAgICAgICByZXR1cm4gcihuKSAmJiBlIGluc3RhbmNlb2YgbiA/IG4ucHJvdG90eXBlIDogZSBpbnN0YW5jZW9mIGMgPyBoIDogbnVsbDtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig3KTtcbiAgICAgIHQuZXhwb3J0cyA9ICFpKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZnVuY3Rpb24gRigpIHt9XG4gICAgICAgIEYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRigpKSAhPT0gRi5wcm90b3R5cGU7XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDk5KSxcbiAgICAgICAgciA9IG4oMTMpLFxuICAgICAgICBzID0gbig0MCksXG4gICAgICAgIGEgPSBuKDY0KSxcbiAgICAgICAgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gY3JlYXRlTWV0aG9kKHQpIHtcbiAgICAgICAgICB2YXIgZSA9IDEgPT0gdDtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG4sIG8sIGwpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGMsIGggPSBzKG4pLCBkID0gcihoKSwgdSA9IGkobywgbCksIHAgPSBhKGQpOyBwLS0gPiAwOykgaWYgKHUoYyA9IGRbcF0sIHAsIGgpKSBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZSA/IC0xIDogdm9pZCAwO1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICB0LmV4cG9ydHMgPSB7XG4gICAgICAgIGZpbmRMYXN0OiBjcmVhdGVNZXRob2QoMCksXG4gICAgICAgIGZpbmRMYXN0SW5kZXg6IGNyZWF0ZU1ldGhvZCgxKVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDEwMCksXG4gICAgICAgIHIgPSBuKDMxKSxcbiAgICAgICAgcyA9IG4oOSksXG4gICAgICAgIGEgPSBpKGkuYmluZCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICByKHQpO1xuICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gdCA6IHMgPyBhKHQsIGUpIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB0LmFwcGx5KGUsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTUpLFxuICAgICAgICByID0gbigxNCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoXCJGdW5jdGlvblwiID09PSBpKHQpKSByZXR1cm4gcih0KTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oOTQpLFxuICAgICAgICByID0gbig5OCkuZmluZExhc3RJbmRleCxcbiAgICAgICAgcyA9IGkuYVR5cGVkQXJyYXk7XG4gICAgICAoMCwgaS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKShcImZpbmRMYXN0SW5kZXhcIiwgZnVuY3Rpb24gZmluZExhc3RJbmRleCh0KSB7XG4gICAgICAgIHJldHVybiByKHModGhpcyksIHQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwKTtcbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDQpLFxuICAgICAgICByID0gbig4KSxcbiAgICAgICAgcyA9IG4oOTQpLFxuICAgICAgICBhID0gbig2NCksXG4gICAgICAgIG8gPSBuKDEwMyksXG4gICAgICAgIGwgPSBuKDQwKSxcbiAgICAgICAgYyA9IG4oNyksXG4gICAgICAgIGggPSBpLlJhbmdlRXJyb3IsXG4gICAgICAgIGQgPSBpLkludDhBcnJheSxcbiAgICAgICAgdSA9IGQgJiYgZC5wcm90b3R5cGUsXG4gICAgICAgIHAgPSB1ICYmIHUuc2V0LFxuICAgICAgICBmID0gcy5hVHlwZWRBcnJheSxcbiAgICAgICAgZyA9IHMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxcbiAgICAgICAgbSA9ICFjKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBVaW50OENsYW1wZWRBcnJheSgyKTtcbiAgICAgICAgICByKHAsIHQsIHtcbiAgICAgICAgICAgIGxlbmd0aDogMSxcbiAgICAgICAgICAgIDA6IDNcbiAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICByZXR1cm4gMyAhPT0gdFsxXTtcbiAgICAgICAgfSksXG4gICAgICAgIGIgPSBtICYmIHMuTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBjKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBkKDIpO1xuICAgICAgICAgIHQuc2V0KDEpO1xuICAgICAgICAgIHQuc2V0KFwiMlwiLCAxKTtcbiAgICAgICAgICByZXR1cm4gMCAhPT0gdFswXSB8fCAyICE9PSB0WzFdO1xuICAgICAgICB9KTtcbiAgICAgIGcoXCJzZXRcIiwgZnVuY3Rpb24gc2V0KHQpIHtcbiAgICAgICAgZih0aGlzKTtcbiAgICAgICAgdmFyIGUgPSBvKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdm9pZCAwLCAxKSxcbiAgICAgICAgICBuID0gbCh0KTtcbiAgICAgICAgaWYgKG0pIHJldHVybiByKHAsIHRoaXMsIG4sIGUpO1xuICAgICAgICB2YXIgaSA9IHRoaXMubGVuZ3RoLFxuICAgICAgICAgIHMgPSBhKG4pLFxuICAgICAgICAgIGMgPSAwO1xuICAgICAgICBpZiAocyArIGUgPiBpKSB0aHJvdyBoKFwiV3JvbmcgbGVuZ3RoXCIpO1xuICAgICAgICBmb3IgKDsgYyA8IHM7KSB0aGlzW2UgKyBjXSA9IG5bYysrXTtcbiAgICAgIH0sICFtIHx8IGIpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTA0KSxcbiAgICAgICAgciA9IFJhbmdlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICB2YXIgbiA9IGkodCk7XG4gICAgICAgIGlmIChuICUgZSkgdGhyb3cgcihcIldyb25nIG9mZnNldFwiKTtcbiAgICAgICAgcmV0dXJuIG47XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNjIpLFxuICAgICAgICByID0gUmFuZ2VFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciBlID0gaSh0KTtcbiAgICAgICAgaWYgKGUgPCAwKSB0aHJvdyByKFwiVGhlIGFyZ3VtZW50IGNhbid0IGJlIGxlc3MgdGhhbiAwXCIpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oMTA2KSxcbiAgICAgICAgciA9IG4oOTQpLFxuICAgICAgICBzID0gci5hVHlwZWRBcnJheSxcbiAgICAgICAgYSA9IHIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxcbiAgICAgICAgbyA9IHIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICAgICAgYShcInRvUmV2ZXJzZWRcIiwgZnVuY3Rpb24gdG9SZXZlcnNlZCgpIHtcbiAgICAgICAgcmV0dXJuIGkocyh0aGlzKSwgbyh0aGlzKSk7XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDY0KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSBpKHQpLCByID0gbmV3IGUobiksIHMgPSAwOyBzIDwgbjsgcysrKSByW3NdID0gdFtuIC0gcyAtIDFdO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oOTQpLFxuICAgICAgICByID0gbigxNCksXG4gICAgICAgIHMgPSBuKDMxKSxcbiAgICAgICAgYSA9IG4oMTA4KSxcbiAgICAgICAgbyA9IGkuYVR5cGVkQXJyYXksXG4gICAgICAgIGwgPSBpLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixcbiAgICAgICAgYyA9IGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxcbiAgICAgICAgaCA9IHIoaS5UeXBlZEFycmF5UHJvdG90eXBlLnNvcnQpO1xuICAgICAgYyhcInRvU29ydGVkXCIsIGZ1bmN0aW9uIHRvU29ydGVkKHQpIHtcbiAgICAgICAgdm9pZCAwICE9PSB0ICYmIHModCk7XG4gICAgICAgIHZhciBlID0gbyh0aGlzKSxcbiAgICAgICAgICBuID0gYShsKGUpLCBlKTtcbiAgICAgICAgcmV0dXJuIGgobiwgdCk7XG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDY0KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIGZvciAodmFyIG4gPSAwLCByID0gaShlKSwgcyA9IG5ldyB0KHIpOyByID4gbjspIHNbbl0gPSBlW24rK107XG4gICAgICAgIHJldHVybiBzO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigxMTApLFxuICAgICAgICByID0gbig5NCksXG4gICAgICAgIHMgPSBuKDExMSksXG4gICAgICAgIGEgPSBuKDYyKSxcbiAgICAgICAgbyA9IG4oMTEyKSxcbiAgICAgICAgbCA9IHIuYVR5cGVkQXJyYXksXG4gICAgICAgIGMgPSByLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixcbiAgICAgICAgaCA9IHIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxcbiAgICAgICAgZCA9ICEhZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgSW50OEFycmF5KDEpLndpdGgoMiwge1xuICAgICAgICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbiB2YWx1ZU9mKCkge1xuICAgICAgICAgICAgICAgIHRocm93IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgIHJldHVybiA4ID09PSB0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSgpO1xuICAgICAgaChcIndpdGhcIiwge1xuICAgICAgICB3aXRoOiBmdW5jdGlvbiBfd2l0aCh0LCBlKSB7XG4gICAgICAgICAgdmFyIG4gPSBsKHRoaXMpLFxuICAgICAgICAgICAgciA9IGEodCksXG4gICAgICAgICAgICBoID0gcyhuKSA/IG8oZSkgOiArZTtcbiAgICAgICAgICByZXR1cm4gaShuLCBjKG4pLCByLCBoKTtcbiAgICAgICAgfVxuICAgICAgfS53aXRoLCAhZCk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig2NCksXG4gICAgICAgIHIgPSBuKDYyKSxcbiAgICAgICAgcyA9IFJhbmdlRXJyb3I7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbiwgYSkge1xuICAgICAgICB2YXIgbyA9IGkodCksXG4gICAgICAgICAgbCA9IHIobiksXG4gICAgICAgICAgYyA9IGwgPCAwID8gbyArIGwgOiBsO1xuICAgICAgICBpZiAoYyA+PSBvIHx8IGMgPCAwKSB0aHJvdyBzKFwiSW5jb3JyZWN0IGluZGV4XCIpO1xuICAgICAgICBmb3IgKHZhciBoID0gbmV3IGUobyksIGQgPSAwOyBkIDwgbzsgZCsrKSBoW2RdID0gZCA9PT0gYyA/IGEgOiB0W2RdO1xuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig3OCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IGkodCk7XG4gICAgICAgIHJldHVybiBcIkJpZ0ludDY0QXJyYXlcIiA9PSBlIHx8IFwiQmlnVWludDY0QXJyYXlcIiA9PSBlO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE5KSxcbiAgICAgICAgciA9IFR5cGVFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHZhciBlID0gaSh0LCBcIm51bWJlclwiKTtcbiAgICAgICAgaWYgKFwibnVtYmVyXCIgPT0gdHlwZW9mIGUpIHRocm93IHIoXCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnRcIik7XG4gICAgICAgIHJldHVybiBCaWdJbnQoZSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDYpLFxuICAgICAgICByID0gbig4OCksXG4gICAgICAgIHMgPSBuKDExNCksXG4gICAgICAgIGEgPSBBcnJheUJ1ZmZlci5wcm90b3R5cGU7XG4gICAgICBpICYmICEoXCJkZXRhY2hlZFwiIGluIGEpICYmIHIoYSwgXCJkZXRhY2hlZFwiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgIGdldDogZnVuY3Rpb24gZGV0YWNoZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHModGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbigxMTUpLFxuICAgICAgICBzID0gaShBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgaWYgKDAgIT09IHIodCkpIHJldHVybiAhMTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzKHQsIDAsIDApO1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDcyKSxcbiAgICAgICAgciA9IG4oMTUpLFxuICAgICAgICBzID0gVHlwZUVycm9yO1xuICAgICAgdC5leHBvcnRzID0gaShBcnJheUJ1ZmZlci5wcm90b3R5cGUsIFwiYnl0ZUxlbmd0aFwiLCBcImdldFwiKSB8fCBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoXCJBcnJheUJ1ZmZlclwiICE9IHIodCkpIHRocm93IHMoXCJBcnJheUJ1ZmZlciBleHBlY3RlZFwiKTtcbiAgICAgICAgcmV0dXJuIHQuYnl0ZUxlbmd0aDtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oMyksXG4gICAgICAgIHIgPSBuKDExNyk7XG4gICAgICByICYmIGkoe1xuICAgICAgICB0YXJnZXQ6IFwiQXJyYXlCdWZmZXJcIixcbiAgICAgICAgcHJvdG86ICEwXG4gICAgICB9LCB7XG4gICAgICAgIHRyYW5zZmVyOiBmdW5jdGlvbiB0cmFuc2ZlcigpIHtcbiAgICAgICAgICByZXR1cm4gcih0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdm9pZCAwLCAhMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNCksXG4gICAgICAgIHIgPSBuKDE0KSxcbiAgICAgICAgcyA9IG4oNzIpLFxuICAgICAgICBhID0gbigxMTgpLFxuICAgICAgICBvID0gbigxMTQpLFxuICAgICAgICBsID0gbigxMTUpLFxuICAgICAgICBjID0gbigxMTkpLFxuICAgICAgICBoID0gaS5UeXBlRXJyb3IsXG4gICAgICAgIGQgPSBpLnN0cnVjdHVyZWRDbG9uZSxcbiAgICAgICAgdSA9IGkuQXJyYXlCdWZmZXIsXG4gICAgICAgIHAgPSBpLkRhdGFWaWV3LFxuICAgICAgICBmID0gTWF0aC5taW4sXG4gICAgICAgIGcgPSB1LnByb3RvdHlwZSxcbiAgICAgICAgbSA9IHAucHJvdG90eXBlLFxuICAgICAgICBiID0gcihnLnNsaWNlKSxcbiAgICAgICAgdiA9IHMoZywgXCJyZXNpemFibGVcIiwgXCJnZXRcIiksXG4gICAgICAgIHkgPSBzKGcsIFwibWF4Qnl0ZUxlbmd0aFwiLCBcImdldFwiKSxcbiAgICAgICAgQSA9IHIobS5nZXRJbnQ4KSxcbiAgICAgICAgXyA9IHIobS5zZXRJbnQ4KTtcbiAgICAgIHQuZXhwb3J0cyA9IGMgJiYgZnVuY3Rpb24gKHQsIGUsIG4pIHtcbiAgICAgICAgdmFyIGkgPSBsKHQpLFxuICAgICAgICAgIHIgPSB2b2lkIDAgPT09IGUgPyBpIDogYShlKSxcbiAgICAgICAgICBzID0gIXYgfHwgIXYodCk7XG4gICAgICAgIGlmIChvKHQpKSB0aHJvdyBoKFwiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWRcIik7XG4gICAgICAgIHZhciBjID0gZCh0LCB7XG4gICAgICAgICAgdHJhbnNmZXI6IFt0XVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGkgPT0gciAmJiAobiB8fCBzKSkgcmV0dXJuIGM7XG4gICAgICAgIGlmIChpID49IHIgJiYgKCFuIHx8IHMpKSByZXR1cm4gYihjLCAwLCByKTtcbiAgICAgICAgZm9yICh2YXIgZyA9IG4gJiYgIXMgJiYgeSA/IHtcbiAgICAgICAgICAgIG1heEJ5dGVMZW5ndGg6IHkoYylcbiAgICAgICAgICB9IDogdm9pZCAwLCBtID0gbmV3IHUociwgZyksIFMgPSBuZXcgcChjKSwgRSA9IG5ldyBwKG0pLCB4ID0gZihyLCBpKSwgdyA9IDA7IHcgPCB4OyB3KyspIF8oRSwgdywgQShTLCB3KSk7XG4gICAgICAgIHJldHVybiBtO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDYyKSxcbiAgICAgICAgciA9IG4oNjUpLFxuICAgICAgICBzID0gUmFuZ2VFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIGlmICh2b2lkIDAgPT09IHQpIHJldHVybiAwO1xuICAgICAgICB2YXIgZSA9IGkodCksXG4gICAgICAgICAgbiA9IHIoZSk7XG4gICAgICAgIGlmIChlICE9PSBuKSB0aHJvdyBzKFwiV3JvbmcgbGVuZ3RoIG9yIGluZGV4XCIpO1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig0KSxcbiAgICAgICAgciA9IG4oNyksXG4gICAgICAgIHMgPSBuKDI4KSxcbiAgICAgICAgYSA9IG4oMTIwKSxcbiAgICAgICAgbyA9IG4oMTIxKSxcbiAgICAgICAgbCA9IG4oMTIyKSxcbiAgICAgICAgYyA9IGkuc3RydWN0dXJlZENsb25lO1xuICAgICAgdC5leHBvcnRzID0gISFjICYmICFyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG8gJiYgcyA+IDkyIHx8IGwgJiYgcyA+IDk0IHx8IGEgJiYgcyA+IDk3KSByZXR1cm4gITE7XG4gICAgICAgIHZhciB0ID0gbmV3IEFycmF5QnVmZmVyKDgpLFxuICAgICAgICAgIGUgPSBjKHQsIHtcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbdF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIDAgIT0gdC5ieXRlTGVuZ3RoIHx8IDggIT0gZS5ieXRlTGVuZ3RoO1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxMjEpLFxuICAgICAgICByID0gbigxMjIpO1xuICAgICAgdC5leHBvcnRzID0gIWkgJiYgIXIgJiYgXCJvYmplY3RcIiA9PSB0eXBlb2Ygd2luZG93ICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIGRvY3VtZW50O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdC5leHBvcnRzID0gXCJvYmplY3RcIiA9PSB0eXBlb2YgRGVubyAmJiBEZW5vICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIERlbm8udmVyc2lvbjtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE1KTtcbiAgICAgIHQuZXhwb3J0cyA9IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIHByb2Nlc3MgJiYgXCJwcm9jZXNzXCIgPT0gaShwcm9jZXNzKTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigzKSxcbiAgICAgICAgciA9IG4oMTE3KTtcbiAgICAgIHIgJiYgaSh7XG4gICAgICAgIHRhcmdldDogXCJBcnJheUJ1ZmZlclwiLFxuICAgICAgICBwcm90bzogITBcbiAgICAgIH0sIHtcbiAgICAgICAgdHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOiBmdW5jdGlvbiB0cmFuc2ZlclRvRml4ZWRMZW5ndGgoKSB7XG4gICAgICAgICAgcmV0dXJuIHIodGhpcywgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1swXSA6IHZvaWQgMCwgITEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LCAoX191bnVzZWRfd2VicGFja19tb2R1bGUsIGV4cG9ydHMsIF9fd19wZGZqc19yZXF1aXJlX18pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGV4cG9ydHMuUmVuZGVyVGFzayA9IGV4cG9ydHMuUERGV29ya2VyVXRpbCA9IGV4cG9ydHMuUERGV29ya2VyID0gZXhwb3J0cy5QREZQYWdlUHJveHkgPSBleHBvcnRzLlBERkRvY3VtZW50UHJveHkgPSBleHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2sgPSBleHBvcnRzLlBERkRhdGFSYW5nZVRyYW5zcG9ydCA9IGV4cG9ydHMuTG9vcGJhY2tQb3J0ID0gZXhwb3J0cy5EZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBleHBvcnRzLkRlZmF1bHRGaWx0ZXJGYWN0b3J5ID0gZXhwb3J0cy5EZWZhdWx0Q2FudmFzRmFjdG9yeSA9IGV4cG9ydHMuRGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5ID0gdm9pZCAwO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiU1ZHR3JhcGhpY3NcIiwge1xuICAgICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwbGF5U3ZnLlNWR0dyYXBoaWNzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGV4cG9ydHMuYnVpbGQgPSB2b2lkIDA7XG4gICAgICBleHBvcnRzLmdldERvY3VtZW50ID0gZ2V0RG9jdW1lbnQ7XG4gICAgICBleHBvcnRzLnZlcnNpb24gPSB2b2lkIDA7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDg0KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oODYpO1xuICAgICAgX193X3BkZmpzX3JlcXVpcmVfXyg4Nyk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDIpO1xuICAgICAgX193X3BkZmpzX3JlcXVpcmVfXyg5Myk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEwMSk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEwMik7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEwNSk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEwNyk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEwOSk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDExMyk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDExNik7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDEyMyk7XG4gICAgICBfX3dfcGRmanNfcmVxdWlyZV9fKDg5KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTI1KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTM1KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTM3KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTQwKTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTQyKTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTQ0KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTQ2KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTQ4KTtcbiAgICAgIF9fd19wZGZqc19yZXF1aXJlX18oMTUxKTtcbiAgICAgIHZhciBfdXRpbCA9IF9fd19wZGZqc19yZXF1aXJlX18oMSksXG4gICAgICAgIF9hbm5vdGF0aW9uX3N0b3JhZ2UgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE2MiksXG4gICAgICAgIF9kaXNwbGF5X3V0aWxzID0gX193X3BkZmpzX3JlcXVpcmVfXygxNjcpLFxuICAgICAgICBfZm9udF9sb2FkZXIgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE3MCksXG4gICAgICAgIF9kaXNwbGF5Tm9kZV91dGlscyA9IF9fd19wZGZqc19yZXF1aXJlX18oMTcxKSxcbiAgICAgICAgX2NhbnZhcyA9IF9fd19wZGZqc19yZXF1aXJlX18oMTcyKSxcbiAgICAgICAgX3dvcmtlcl9vcHRpb25zID0gX193X3BkZmpzX3JlcXVpcmVfXygxNzUpLFxuICAgICAgICBfbWVzc2FnZV9oYW5kbGVyID0gX193X3BkZmpzX3JlcXVpcmVfXygxNzYpLFxuICAgICAgICBfbWV0YWRhdGEgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE3NyksXG4gICAgICAgIF9vcHRpb25hbF9jb250ZW50X2NvbmZpZyA9IF9fd19wZGZqc19yZXF1aXJlX18oMTc4KSxcbiAgICAgICAgX3RyYW5zcG9ydF9zdHJlYW0gPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE3OSksXG4gICAgICAgIF9kaXNwbGF5RmV0Y2hfc3RyZWFtID0gX193X3BkZmpzX3JlcXVpcmVfXygxODApLFxuICAgICAgICBfZGlzcGxheU5ldHdvcmsgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE4MyksXG4gICAgICAgIF9kaXNwbGF5Tm9kZV9zdHJlYW0gPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE4NCksXG4gICAgICAgIF9kaXNwbGF5U3ZnID0gX193X3BkZmpzX3JlcXVpcmVfXygxODUpLFxuICAgICAgICBfeGZhX3RleHQgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE5Myk7XG4gICAgICBjb25zdCBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkUgPSA2NTUzNixcbiAgICAgICAgUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUID0gMTAwLFxuICAgICAgICBERUxBWUVEX0NMRUFOVVBfVElNRU9VVCA9IDVlMyxcbiAgICAgICAgRGVmYXVsdENhbnZhc0ZhY3RvcnkgPSBfdXRpbC5pc05vZGVKUyA/IF9kaXNwbGF5Tm9kZV91dGlscy5Ob2RlQ2FudmFzRmFjdG9yeSA6IF9kaXNwbGF5X3V0aWxzLkRPTUNhbnZhc0ZhY3Rvcnk7XG4gICAgICBleHBvcnRzLkRlZmF1bHRDYW52YXNGYWN0b3J5ID0gRGVmYXVsdENhbnZhc0ZhY3Rvcnk7XG4gICAgICBjb25zdCBEZWZhdWx0Q01hcFJlYWRlckZhY3RvcnkgPSBfdXRpbC5pc05vZGVKUyA/IF9kaXNwbGF5Tm9kZV91dGlscy5Ob2RlQ01hcFJlYWRlckZhY3RvcnkgOiBfZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeTtcbiAgICAgIGV4cG9ydHMuRGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5ID0gRGVmYXVsdENNYXBSZWFkZXJGYWN0b3J5O1xuICAgICAgY29uc3QgRGVmYXVsdEZpbHRlckZhY3RvcnkgPSBfdXRpbC5pc05vZGVKUyA/IF9kaXNwbGF5Tm9kZV91dGlscy5Ob2RlRmlsdGVyRmFjdG9yeSA6IF9kaXNwbGF5X3V0aWxzLkRPTUZpbHRlckZhY3Rvcnk7XG4gICAgICBleHBvcnRzLkRlZmF1bHRGaWx0ZXJGYWN0b3J5ID0gRGVmYXVsdEZpbHRlckZhY3Rvcnk7XG4gICAgICBjb25zdCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBfdXRpbC5pc05vZGVKUyA/IF9kaXNwbGF5Tm9kZV91dGlscy5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkgOiBfZGlzcGxheV91dGlscy5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeTtcbiAgICAgIGV4cG9ydHMuRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5ID0gRGVmYXVsdFN0YW5kYXJkRm9udERhdGFGYWN0b3J5O1xuICAgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQodCkge1xuICAgICAgICB2YXIgX3QkcGFzc3dvcmQsIF90JGxlbmd0aDtcbiAgICAgICAgXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCB8fCB0IGluc3RhbmNlb2YgVVJMID8gdCA9IHtcbiAgICAgICAgICB1cmw6IHRcbiAgICAgICAgfSA6ICgwLCBfdXRpbC5pc0FycmF5QnVmZmVyKSh0KSAmJiAodCA9IHtcbiAgICAgICAgICBkYXRhOiB0XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoXCJvYmplY3RcIiAhPSB0eXBlb2YgdCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYXJhbWV0ZXIgaW4gZ2V0RG9jdW1lbnQsIG5lZWQgcGFyYW1ldGVyIG9iamVjdC5cIik7XG4gICAgICAgIGlmICghdC51cmwgJiYgIXQuZGF0YSAmJiAhdC5yYW5nZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBwYXJhbWV0ZXIgb2JqZWN0OiBuZWVkIGVpdGhlciAuZGF0YSwgLnJhbmdlIG9yIC51cmxcIik7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgUERGRG9jdW1lbnRMb2FkaW5nVGFzaygpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRvY0lkOiBuXG4gICAgICAgICAgfSA9IGUsXG4gICAgICAgICAgaSA9IHQudXJsID8gZ2V0VXJsUHJvcCh0LnVybCkgOiBudWxsLFxuICAgICAgICAgIHIgPSB0LmRhdGEgPyBnZXREYXRhUHJvcCh0LmRhdGEpIDogbnVsbCxcbiAgICAgICAgICBzID0gdC5odHRwSGVhZGVycyB8fCBudWxsLFxuICAgICAgICAgIGEgPSAhMCA9PT0gdC53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgbyA9IChfdCRwYXNzd29yZCA9IHQucGFzc3dvcmQpICE9PSBudWxsICYmIF90JHBhc3N3b3JkICE9PSB2b2lkIDAgPyBfdCRwYXNzd29yZCA6IG51bGwsXG4gICAgICAgICAgbCA9IHQucmFuZ2UgaW5zdGFuY2VvZiBQREZEYXRhUmFuZ2VUcmFuc3BvcnQgPyB0LnJhbmdlIDogbnVsbCxcbiAgICAgICAgICBjID0gTnVtYmVyLmlzSW50ZWdlcih0LnJhbmdlQ2h1bmtTaXplKSAmJiB0LnJhbmdlQ2h1bmtTaXplID4gMCA/IHQucmFuZ2VDaHVua1NpemUgOiBERUZBVUxUX1JBTkdFX0NIVU5LX1NJWkU7XG4gICAgICAgIGxldCBoID0gdC53b3JrZXIgaW5zdGFuY2VvZiBQREZXb3JrZXIgPyB0LndvcmtlciA6IG51bGw7XG4gICAgICAgIGNvbnN0IGQgPSB0LnZlcmJvc2l0eSxcbiAgICAgICAgICB1ID0gXCJzdHJpbmdcIiAhPSB0eXBlb2YgdC5kb2NCYXNlVXJsIHx8ICgwLCBfZGlzcGxheV91dGlscy5pc0RhdGFTY2hlbWUpKHQuZG9jQmFzZVVybCkgPyBudWxsIDogdC5kb2NCYXNlVXJsLFxuICAgICAgICAgIHAgPSBcInN0cmluZ1wiID09IHR5cGVvZiB0LmNNYXBVcmwgPyB0LmNNYXBVcmwgOiBudWxsLFxuICAgICAgICAgIGYgPSAhMSAhPT0gdC5jTWFwUGFja2VkLFxuICAgICAgICAgIGcgPSB0LkNNYXBSZWFkZXJGYWN0b3J5IHx8IERlZmF1bHRDTWFwUmVhZGVyRmFjdG9yeSxcbiAgICAgICAgICBtID0gXCJzdHJpbmdcIiA9PSB0eXBlb2YgdC5zdGFuZGFyZEZvbnREYXRhVXJsID8gdC5zdGFuZGFyZEZvbnREYXRhVXJsIDogbnVsbCxcbiAgICAgICAgICBiID0gdC5TdGFuZGFyZEZvbnREYXRhRmFjdG9yeSB8fCBEZWZhdWx0U3RhbmRhcmRGb250RGF0YUZhY3RvcnksXG4gICAgICAgICAgdiA9ICEwICE9PSB0LnN0b3BBdEVycm9ycyxcbiAgICAgICAgICB5ID0gTnVtYmVyLmlzSW50ZWdlcih0Lm1heEltYWdlU2l6ZSkgJiYgdC5tYXhJbWFnZVNpemUgPiAtMSA/IHQubWF4SW1hZ2VTaXplIDogLTEsXG4gICAgICAgICAgQSA9ICExICE9PSB0LmlzRXZhbFN1cHBvcnRlZCxcbiAgICAgICAgICBfID0gXCJib29sZWFuXCIgPT0gdHlwZW9mIHQuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQgPyB0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIDogIV91dGlsLmlzTm9kZUpTLFxuICAgICAgICAgIFMgPSBOdW1iZXIuaXNJbnRlZ2VyKHQuY2FudmFzTWF4QXJlYUluQnl0ZXMpID8gdC5jYW52YXNNYXhBcmVhSW5CeXRlcyA6IC0xLFxuICAgICAgICAgIEUgPSBcImJvb2xlYW5cIiA9PSB0eXBlb2YgdC5kaXNhYmxlRm9udEZhY2UgPyB0LmRpc2FibGVGb250RmFjZSA6IF91dGlsLmlzTm9kZUpTLFxuICAgICAgICAgIHggPSAhMCA9PT0gdC5mb250RXh0cmFQcm9wZXJ0aWVzLFxuICAgICAgICAgIHcgPSAhMCA9PT0gdC5lbmFibGVYZmEsXG4gICAgICAgICAgQyA9IHQub3duZXJEb2N1bWVudCB8fCBnbG9iYWxUaGlzLmRvY3VtZW50LFxuICAgICAgICAgIFQgPSAhMCA9PT0gdC5kaXNhYmxlUmFuZ2UsXG4gICAgICAgICAgUCA9ICEwID09PSB0LmRpc2FibGVTdHJlYW0sXG4gICAgICAgICAgayA9ICEwID09PSB0LmRpc2FibGVBdXRvRmV0Y2gsXG4gICAgICAgICAgTSA9ICEwID09PSB0LnBkZkJ1ZyxcbiAgICAgICAgICBSID0gbCA/IGwubGVuZ3RoIDogKF90JGxlbmd0aCA9IHQubGVuZ3RoKSAhPT0gbnVsbCAmJiBfdCRsZW5ndGggIT09IHZvaWQgMCA/IF90JGxlbmd0aCA6IE5hTixcbiAgICAgICAgICBJID0gXCJib29sZWFuXCIgPT0gdHlwZW9mIHQudXNlU3lzdGVtRm9udHMgPyB0LnVzZVN5c3RlbUZvbnRzIDogIV91dGlsLmlzTm9kZUpTICYmICFFLFxuICAgICAgICAgIEQgPSBcImJvb2xlYW5cIiA9PSB0eXBlb2YgdC51c2VXb3JrZXJGZXRjaCA/IHQudXNlV29ya2VyRmV0Y2ggOiBnID09PSBfZGlzcGxheV91dGlscy5ET01DTWFwUmVhZGVyRmFjdG9yeSAmJiBiID09PSBfZGlzcGxheV91dGlscy5ET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeSAmJiBwICYmIG0gJiYgKDAsIF9kaXNwbGF5X3V0aWxzLmlzVmFsaWRGZXRjaFVybCkocCwgZG9jdW1lbnQuYmFzZVVSSSkgJiYgKDAsIF9kaXNwbGF5X3V0aWxzLmlzVmFsaWRGZXRjaFVybCkobSwgZG9jdW1lbnQuYmFzZVVSSSksXG4gICAgICAgICAgTyA9IHQuY2FudmFzRmFjdG9yeSB8fCBuZXcgRGVmYXVsdENhbnZhc0ZhY3Rvcnkoe1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudDogQ1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIEwgPSB0LmZpbHRlckZhY3RvcnkgfHwgbmV3IERlZmF1bHRGaWx0ZXJGYWN0b3J5KHtcbiAgICAgICAgICAgIGRvY0lkOiBuLFxuICAgICAgICAgICAgb3duZXJEb2N1bWVudDogQ1xuICAgICAgICAgIH0pO1xuICAgICAgICAoMCwgX3V0aWwuc2V0VmVyYm9zaXR5TGV2ZWwpKGQpO1xuICAgICAgICBjb25zdCBOID0ge1xuICAgICAgICAgIGNhbnZhc0ZhY3Rvcnk6IE8sXG4gICAgICAgICAgZmlsdGVyRmFjdG9yeTogTFxuICAgICAgICB9O1xuICAgICAgICBpZiAoIUQpIHtcbiAgICAgICAgICBOLmNNYXBSZWFkZXJGYWN0b3J5ID0gbmV3IGcoe1xuICAgICAgICAgICAgYmFzZVVybDogcCxcbiAgICAgICAgICAgIGlzQ29tcHJlc3NlZDogZlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIE4uc3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBuZXcgYih7XG4gICAgICAgICAgICBiYXNlVXJsOiBtXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHtcbiAgICAgICAgICAgIHZlcmJvc2l0eTogZCxcbiAgICAgICAgICAgIHBvcnQ6IF93b3JrZXJfb3B0aW9ucy5HbG9iYWxXb3JrZXJPcHRpb25zLndvcmtlclBvcnRcbiAgICAgICAgICB9O1xuICAgICAgICAgIGggPSB0LnBvcnQgPyBQREZXb3JrZXIuZnJvbVBvcnQodCkgOiBuZXcgUERGV29ya2VyKHQpO1xuICAgICAgICAgIGUuX3dvcmtlciA9IGg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgQiA9IHtcbiAgICAgICAgICAgIGRvY0lkOiBuLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogXCIzLjkuMTc5XCIsXG4gICAgICAgICAgICBkYXRhOiByLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IG8sXG4gICAgICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiBrLFxuICAgICAgICAgICAgcmFuZ2VDaHVua1NpemU6IGMsXG4gICAgICAgICAgICBsZW5ndGg6IFIsXG4gICAgICAgICAgICBkb2NCYXNlVXJsOiB1LFxuICAgICAgICAgICAgZW5hYmxlWGZhOiB3LFxuICAgICAgICAgICAgZXZhbHVhdG9yT3B0aW9uczoge1xuICAgICAgICAgICAgICBtYXhJbWFnZVNpemU6IHksXG4gICAgICAgICAgICAgIGRpc2FibGVGb250RmFjZTogRSxcbiAgICAgICAgICAgICAgaWdub3JlRXJyb3JzOiB2LFxuICAgICAgICAgICAgICBpc0V2YWxTdXBwb3J0ZWQ6IEEsXG4gICAgICAgICAgICAgIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiBfLFxuICAgICAgICAgICAgICBjYW52YXNNYXhBcmVhSW5CeXRlczogUyxcbiAgICAgICAgICAgICAgZm9udEV4dHJhUHJvcGVydGllczogeCxcbiAgICAgICAgICAgICAgdXNlU3lzdGVtRm9udHM6IEksXG4gICAgICAgICAgICAgIGNNYXBVcmw6IEQgPyBwIDogbnVsbCxcbiAgICAgICAgICAgICAgc3RhbmRhcmRGb250RGF0YVVybDogRCA/IG0gOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBqID0ge1xuICAgICAgICAgICAgaWdub3JlRXJyb3JzOiB2LFxuICAgICAgICAgICAgaXNFdmFsU3VwcG9ydGVkOiBBLFxuICAgICAgICAgICAgZGlzYWJsZUZvbnRGYWNlOiBFLFxuICAgICAgICAgICAgZm9udEV4dHJhUHJvcGVydGllczogeCxcbiAgICAgICAgICAgIGVuYWJsZVhmYTogdyxcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQ6IEMsXG4gICAgICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiBrLFxuICAgICAgICAgICAgcGRmQnVnOiBNLFxuICAgICAgICAgICAgc3R5bGVFbGVtZW50OiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgaC5wcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChlLmRlc3Ryb3llZCkgdGhyb3cgbmV3IEVycm9yKFwiTG9hZGluZyBhYm9ydGVkXCIpO1xuICAgICAgICAgIGNvbnN0IHQgPSBfZmV0Y2hEb2N1bWVudChoLCBCKSxcbiAgICAgICAgICAgIG8gPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICBsZXQgZTtcbiAgICAgICAgICAgICAgaWYgKGwpIGUgPSBuZXcgX3RyYW5zcG9ydF9zdHJlYW0uUERGRGF0YVRyYW5zcG9ydFN0cmVhbSh7XG4gICAgICAgICAgICAgICAgbGVuZ3RoOiBSLFxuICAgICAgICAgICAgICAgIGluaXRpYWxEYXRhOiBsLmluaXRpYWxEYXRhLFxuICAgICAgICAgICAgICAgIHByb2dyZXNzaXZlRG9uZTogbC5wcm9ncmVzc2l2ZURvbmUsXG4gICAgICAgICAgICAgICAgY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWU6IGwuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZVJhbmdlOiBULFxuICAgICAgICAgICAgICAgIGRpc2FibGVTdHJlYW06IFBcbiAgICAgICAgICAgICAgfSwgbCk7ZWxzZSBpZiAoIXIpIHtcbiAgICAgICAgICAgICAgICBlID0gKHQgPT4gX3V0aWwuaXNOb2RlSlMgPyBuZXcgX2Rpc3BsYXlOb2RlX3N0cmVhbS5QREZOb2RlU3RyZWFtKHQpIDogKDAsIF9kaXNwbGF5X3V0aWxzLmlzVmFsaWRGZXRjaFVybCkodC51cmwpID8gbmV3IF9kaXNwbGF5RmV0Y2hfc3RyZWFtLlBERkZldGNoU3RyZWFtKHQpIDogbmV3IF9kaXNwbGF5TmV0d29yay5QREZOZXR3b3JrU3RyZWFtKHQpKSh7XG4gICAgICAgICAgICAgICAgICB1cmw6IGksXG4gICAgICAgICAgICAgICAgICBsZW5ndGg6IFIsXG4gICAgICAgICAgICAgICAgICBodHRwSGVhZGVyczogcyxcbiAgICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogYSxcbiAgICAgICAgICAgICAgICAgIHJhbmdlQ2h1bmtTaXplOiBjLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJhbmdlOiBULFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVN0cmVhbTogUFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHQoZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW3QsIG9dKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICBsZXQgW2ksIHJdID0gdDtcbiAgICAgICAgICAgIGlmIChlLmRlc3Ryb3llZCkgdGhyb3cgbmV3IEVycm9yKFwiTG9hZGluZyBhYm9ydGVkXCIpO1xuICAgICAgICAgICAgY29uc3QgcyA9IG5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKG4sIGksIGgucG9ydCksXG4gICAgICAgICAgICAgIGEgPSBuZXcgV29ya2VyVHJhbnNwb3J0KHMsIGUsIHIsIGosIE4pO1xuICAgICAgICAgICAgZS5fdHJhbnNwb3J0ID0gYTtcbiAgICAgICAgICAgIHMuc2VuZChcIlJlYWR5XCIsIG51bGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaChlLl9jYXBhYmlsaXR5LnJlamVjdCk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfVxuICAgICAgYXN5bmMgZnVuY3Rpb24gX2ZldGNoRG9jdW1lbnQodCwgZSkge1xuICAgICAgICBpZiAodC5kZXN0cm95ZWQpIHRocm93IG5ldyBFcnJvcihcIldvcmtlciB3YXMgZGVzdHJveWVkXCIpO1xuICAgICAgICBjb25zdCBuID0gYXdhaXQgdC5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXREb2NSZXF1ZXN0XCIsIGUsIGUuZGF0YSA/IFtlLmRhdGEuYnVmZmVyXSA6IG51bGwpO1xuICAgICAgICBpZiAodC5kZXN0cm95ZWQpIHRocm93IG5ldyBFcnJvcihcIldvcmtlciB3YXMgZGVzdHJveWVkXCIpO1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGdldFVybFByb3AodCkge1xuICAgICAgICBpZiAodCBpbnN0YW5jZW9mIFVSTCkgcmV0dXJuIHQuaHJlZjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gbmV3IFVSTCh0LCB3aW5kb3cubG9jYXRpb24pLmhyZWY7XG4gICAgICAgIH0gY2F0Y2ggKF91bnVzZWQ0KSB7XG4gICAgICAgICAgaWYgKF91dGlsLmlzTm9kZUpTICYmIFwic3RyaW5nXCIgPT0gdHlwZW9mIHQpIHJldHVybiB0O1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUERGIHVybCBkYXRhOiBlaXRoZXIgc3RyaW5nIG9yIFVSTC1vYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIHVybCBwcm9wZXJ0eS5cIik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBnZXREYXRhUHJvcCh0KSB7XG4gICAgICAgIGlmIChfdXRpbC5pc05vZGVKUyAmJiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBCdWZmZXIgJiYgdCBpbnN0YW5jZW9mIEJ1ZmZlcikgdGhyb3cgbmV3IEVycm9yKFwiUGxlYXNlIHByb3ZpZGUgYmluYXJ5IGRhdGEgYXMgYFVpbnQ4QXJyYXlgLCByYXRoZXIgdGhhbiBgQnVmZmVyYC5cIik7XG4gICAgICAgIGlmICh0IGluc3RhbmNlb2YgVWludDhBcnJheSAmJiB0LmJ5dGVMZW5ndGggPT09IHQuYnVmZmVyLmJ5dGVMZW5ndGgpIHJldHVybiB0O1xuICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCkgcmV0dXJuICgwLCBfdXRpbC5zdHJpbmdUb0J5dGVzKSh0KTtcbiAgICAgICAgaWYgKFwib2JqZWN0XCIgPT0gdHlwZW9mIHQgJiYgIWlzTmFOKHQgPT09IG51bGwgfHwgdCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdC5sZW5ndGgpIHx8ICgwLCBfdXRpbC5pc0FycmF5QnVmZmVyKSh0KSkgcmV0dXJuIG5ldyBVaW50OEFycmF5KHQpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFBERiBiaW5hcnkgZGF0YTogZWl0aGVyIFR5cGVkQXJyYXksIHN0cmluZywgb3IgYXJyYXktbGlrZSBvYmplY3QgaXMgZXhwZWN0ZWQgaW4gdGhlIGRhdGEgcHJvcGVydHkuXCIpO1xuICAgICAgfVxuICAgICAgY2xhc3MgUERGRG9jdW1lbnRMb2FkaW5nVGFzayB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIHZhciBfUERGRG9jdW1lbnRMb2FkaW5nVGEsIF9QREZEb2N1bWVudExvYWRpbmdUYTI7XG4gICAgICAgICAgdGhpcy5fY2FwYWJpbGl0eSA9IG5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIHRoaXMuX3RyYW5zcG9ydCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fd29ya2VyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmRvY0lkID0gXCJkXCIgKyAoX2NsYXNzU3RhdGljUHJpdmF0ZUZpZWxkU3BlY1NldChQREZEb2N1bWVudExvYWRpbmdUYXNrLCBQREZEb2N1bWVudExvYWRpbmdUYXNrLCBfZSwgKF9QREZEb2N1bWVudExvYWRpbmdUYSA9IF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoUERGRG9jdW1lbnRMb2FkaW5nVGFzaywgUERGRG9jdW1lbnRMb2FkaW5nVGFzaywgX2UpLCBfUERGRG9jdW1lbnRMb2FkaW5nVGEyID0gX1BERkRvY3VtZW50TG9hZGluZ1RhKyssIF9QREZEb2N1bWVudExvYWRpbmdUYSkpLCBfUERGRG9jdW1lbnRMb2FkaW5nVGEyKTtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3llZCA9ICExO1xuICAgICAgICAgIHRoaXMub25QYXNzd29yZCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5vblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgcHJvbWlzZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIGRlc3Ryb3koKSB7XG4gICAgICAgICAgdmFyIF90aGlzJF90cmFuc3BvcnQ7XG4gICAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSAhMDtcbiAgICAgICAgICBhd2FpdCAoKF90aGlzJF90cmFuc3BvcnQgPSB0aGlzLl90cmFuc3BvcnQpID09PSBudWxsIHx8IF90aGlzJF90cmFuc3BvcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF90cmFuc3BvcnQuZGVzdHJveSgpKTtcbiAgICAgICAgICB0aGlzLl90cmFuc3BvcnQgPSBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLl93b3JrZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3dvcmtlci5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl93b3JrZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIF9lID0ge1xuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IDBcbiAgICAgIH07XG4gICAgICBleHBvcnRzLlBERkRvY3VtZW50TG9hZGluZ1Rhc2sgPSBQREZEb2N1bWVudExvYWRpbmdUYXNrO1xuICAgICAgY2xhc3MgUERGRGF0YVJhbmdlVHJhbnNwb3J0IHtcbiAgICAgICAgY29uc3RydWN0b3IodCwgZSkge1xuICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gJiYgYXJndW1lbnRzWzJdLFxuICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdID8gYXJndW1lbnRzWzNdIDogbnVsbDtcbiAgICAgICAgICB0aGlzLmxlbmd0aCA9IHQ7XG4gICAgICAgICAgdGhpcy5pbml0aWFsRGF0YSA9IGU7XG4gICAgICAgICAgdGhpcy5wcm9ncmVzc2l2ZURvbmUgPSBuO1xuICAgICAgICAgIHRoaXMuY29udGVudERpc3Bvc2l0aW9uRmlsZW5hbWUgPSBpO1xuICAgICAgICAgIHRoaXMuX3JhbmdlTGlzdGVuZXJzID0gW107XG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgICB0aGlzLl9wcm9ncmVzc2l2ZVJlYWRMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgICB0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnMgPSBbXTtcbiAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkgPSBuZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRSYW5nZUxpc3RlbmVyKHQpIHtcbiAgICAgICAgICB0aGlzLl9yYW5nZUxpc3RlbmVycy5wdXNoKHQpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFByb2dyZXNzTGlzdGVuZXIodCkge1xuICAgICAgICAgIHRoaXMuX3Byb2dyZXNzTGlzdGVuZXJzLnB1c2godCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCkge1xuICAgICAgICAgIHRoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycy5wdXNoKHQpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFByb2dyZXNzaXZlRG9uZUxpc3RlbmVyKHQpIHtcbiAgICAgICAgICB0aGlzLl9wcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcnMucHVzaCh0KTtcbiAgICAgICAgfVxuICAgICAgICBvbkRhdGFSYW5nZSh0LCBlKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBuIG9mIHRoaXMuX3JhbmdlTGlzdGVuZXJzKSBuKHQsIGUpO1xuICAgICAgICB9XG4gICAgICAgIG9uRGF0YVByb2dyZXNzKHQsIGUpIHtcbiAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0aGlzLl9wcm9ncmVzc0xpc3RlbmVycykgbih0LCBlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBvbkRhdGFQcm9ncmVzc2l2ZVJlYWQodCkge1xuICAgICAgICAgIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5wcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMuX3Byb2dyZXNzaXZlUmVhZExpc3RlbmVycykgZSh0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBvbkRhdGFQcm9ncmVzc2l2ZURvbmUoKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5fcHJvZ3Jlc3NpdmVEb25lTGlzdGVuZXJzKSB0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNwb3J0UmVhZHkoKSB7XG4gICAgICAgICAgdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0RGF0YVJhbmdlKHQsIGUpIHtcbiAgICAgICAgICAoMCwgX3V0aWwudW5yZWFjaGFibGUpKFwiQWJzdHJhY3QgbWV0aG9kIFBERkRhdGFSYW5nZVRyYW5zcG9ydC5yZXF1ZXN0RGF0YVJhbmdlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGFib3J0KCkge31cbiAgICAgIH1cbiAgICAgIGV4cG9ydHMuUERGRGF0YVJhbmdlVHJhbnNwb3J0ID0gUERGRGF0YVJhbmdlVHJhbnNwb3J0O1xuICAgICAgY2xhc3MgUERGRG9jdW1lbnRQcm94eSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHtcbiAgICAgICAgICB0aGlzLl9wZGZJbmZvID0gdDtcbiAgICAgICAgICB0aGlzLl90cmFuc3BvcnQgPSBlO1xuICAgICAgICB9XG4gICAgICAgIGdldCBhbm5vdGF0aW9uU3RvcmFnZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmFubm90YXRpb25TdG9yYWdlO1xuICAgICAgICB9XG4gICAgICAgIGdldCBmaWx0ZXJGYWN0b3J5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZmlsdGVyRmFjdG9yeTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgbnVtUGFnZXMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BkZkluZm8ubnVtUGFnZXM7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGZpbmdlcnByaW50cygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcGRmSW5mby5maW5nZXJwcmludHM7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUHVyZVhmYSgpIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF91dGlsLnNoYWRvdykodGhpcywgXCJpc1B1cmVYZmFcIiwgISF0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmEpO1xuICAgICAgICB9XG4gICAgICAgIGdldCBhbGxYZmFIdG1sKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmE7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGFnZSh0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlKHQpO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhZ2VJbmRleCh0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSW5kZXgodCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RGVzdGluYXRpb25zKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RGVzdGluYXRpb24odCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0RGVzdGluYXRpb24odCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGFnZUxhYmVscygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFBhZ2VMYWJlbHMoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRQYWdlTGF5b3V0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZUxheW91dCgpO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhZ2VNb2RlKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGFnZU1vZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRWaWV3ZXJQcmVmZXJlbmNlcygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFZpZXdlclByZWZlcmVuY2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0T3BlbkFjdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE9wZW5BY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRBdHRhY2htZW50cygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEF0dGFjaG1lbnRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0SmF2YVNjcmlwdCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEphdmFTY3JpcHQoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRKU0FjdGlvbnMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXREb2NKU0FjdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRPdXRsaW5lKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0T3V0bGluZSgpO1xuICAgICAgICB9XG4gICAgICAgIGdldE9wdGlvbmFsQ29udGVudENvbmZpZygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE9wdGlvbmFsQ29udGVudENvbmZpZygpO1xuICAgICAgICB9XG4gICAgICAgIGdldFBlcm1pc3Npb25zKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZ2V0UGVybWlzc2lvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRNZXRhZGF0YSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldE1ldGFkYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0TWFya0luZm8oKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRNYXJrSW5mbygpO1xuICAgICAgICB9XG4gICAgICAgIGdldERhdGEoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXREYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgc2F2ZURvY3VtZW50KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuc2F2ZURvY3VtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RG93bmxvYWRJbmZvKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFudXAoKSB7XG4gICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSAmJiBhcmd1bWVudHNbMF07XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5zdGFydENsZWFudXAodCB8fCB0aGlzLmlzUHVyZVhmYSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVzdHJveSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkaW5nVGFzay5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGxvYWRpbmdQYXJhbXMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5sb2FkaW5nUGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIGdldCBsb2FkaW5nVGFzaygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmxvYWRpbmdUYXNrO1xuICAgICAgICB9XG4gICAgICAgIGdldEZpZWxkT2JqZWN0cygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldEZpZWxkT2JqZWN0cygpO1xuICAgICAgICB9XG4gICAgICAgIGhhc0pTQWN0aW9ucygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0Lmhhc0pTQWN0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGdldENhbGN1bGF0aW9uT3JkZXJJZHMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRDYWxjdWxhdGlvbk9yZGVySWRzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGV4cG9ydHMuUERGRG9jdW1lbnRQcm94eSA9IFBERkRvY3VtZW50UHJveHk7XG4gICAgICB2YXIgX24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfaSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9zID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX3IgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIFBERlBhZ2VQcm94eSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF90MiwgX2UyLCBuKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9yKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX3MpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9uLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2ksIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSAmJiBhcmd1bWVudHNbM107XG4gICAgICAgICAgdGhpcy5fcGFnZUluZGV4ID0gX3QyO1xuICAgICAgICAgIHRoaXMuX3BhZ2VJbmZvID0gX2UyO1xuICAgICAgICAgIHRoaXMuX3RyYW5zcG9ydCA9IG47XG4gICAgICAgICAgdGhpcy5fc3RhdHMgPSBpID8gbmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcigpIDogbnVsbDtcbiAgICAgICAgICB0aGlzLl9wZGZCdWcgPSBpO1xuICAgICAgICAgIHRoaXMuY29tbW9uT2JqcyA9IG4uY29tbW9uT2JqcztcbiAgICAgICAgICB0aGlzLm9ianMgPSBuZXcgUERGT2JqZWN0cygpO1xuICAgICAgICAgIHRoaXMuX21heWJlQ2xlYW51cEFmdGVyUmVuZGVyID0gITE7XG4gICAgICAgICAgdGhpcy5faW50ZW50U3RhdGVzID0gbmV3IE1hcCgpO1xuICAgICAgICAgIHRoaXMuZGVzdHJveWVkID0gITE7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHBhZ2VOdW1iZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmRleCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHJvdGF0ZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcGFnZUluZm8ucm90YXRlO1xuICAgICAgICB9XG4gICAgICAgIGdldCByZWYoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmZvLnJlZjtcbiAgICAgICAgfVxuICAgICAgICBnZXQgdXNlclVuaXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmZvLnVzZXJVbml0O1xuICAgICAgICB9XG4gICAgICAgIGdldCB2aWV3KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9wYWdlSW5mby52aWV3O1xuICAgICAgICB9XG4gICAgICAgIGdldFZpZXdwb3J0KCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBzY2FsZTogdCxcbiAgICAgICAgICAgIHJvdGF0aW9uOiBlID0gdGhpcy5yb3RhdGUsXG4gICAgICAgICAgICBvZmZzZXRYOiBuID0gMCxcbiAgICAgICAgICAgIG9mZnNldFk6IGkgPSAwLFxuICAgICAgICAgICAgZG9udEZsaXA6IHIgPSAhMVxuICAgICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgIHJldHVybiBuZXcgX2Rpc3BsYXlfdXRpbHMuUGFnZVZpZXdwb3J0KHtcbiAgICAgICAgICAgIHZpZXdCb3g6IHRoaXMudmlldyxcbiAgICAgICAgICAgIHNjYWxlOiB0LFxuICAgICAgICAgICAgcm90YXRpb246IGUsXG4gICAgICAgICAgICBvZmZzZXRYOiBuLFxuICAgICAgICAgICAgb2Zmc2V0WTogaSxcbiAgICAgICAgICAgIGRvbnRGbGlwOiByXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0QW5ub3RhdGlvbnMoKSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGludGVudDogdCA9IFwiZGlzcGxheVwiXG4gICAgICAgICAgfSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuX3RyYW5zcG9ydC5nZXRSZW5kZXJpbmdJbnRlbnQodCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRBbm5vdGF0aW9ucyh0aGlzLl9wYWdlSW5kZXgsIGUucmVuZGVyaW5nSW50ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBnZXRKU0FjdGlvbnMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5nZXRQYWdlSlNBY3Rpb25zKHRoaXMuX3BhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGZpbHRlckZhY3RvcnkoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zcG9ydC5maWx0ZXJGYWN0b3J5O1xuICAgICAgICB9XG4gICAgICAgIGdldCBpc1B1cmVYZmEoKSB7XG4gICAgICAgICAgcmV0dXJuICgwLCBfdXRpbC5zaGFkb3cpKHRoaXMsIFwiaXNQdXJlWGZhXCIsICEhdGhpcy5fdHJhbnNwb3J0Ll9odG1sRm9yWGZhKTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyBnZXRYZmEoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJF90cmFuc3BvcnQkX2h0bTtcbiAgICAgICAgICByZXR1cm4gKChfdGhpcyRfdHJhbnNwb3J0JF9odG0gPSB0aGlzLl90cmFuc3BvcnQuX2h0bWxGb3JYZmEpID09PSBudWxsIHx8IF90aGlzJF90cmFuc3BvcnQkX2h0bSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX3RyYW5zcG9ydCRfaHRtLmNoaWxkcmVuW3RoaXMuX3BhZ2VJbmRleF0pIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKHQpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX3N0YXRzLCBfdTtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgY2FudmFzQ29udGV4dDogZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiBuLFxuICAgICAgICAgICAgaW50ZW50OiBpID0gXCJkaXNwbGF5XCIsXG4gICAgICAgICAgICBhbm5vdGF0aW9uTW9kZTogciA9IF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRSxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcyA9IG51bGwsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBhID0gbnVsbCxcbiAgICAgICAgICAgIG9wdGlvbmFsQ29udGVudENvbmZpZ1Byb21pc2U6IG8gPSBudWxsLFxuICAgICAgICAgICAgYW5ub3RhdGlvbkNhbnZhc01hcDogbCA9IG51bGwsXG4gICAgICAgICAgICBwYWdlQ29sb3JzOiBjID0gbnVsbCxcbiAgICAgICAgICAgIHByaW50QW5ub3RhdGlvblN0b3JhZ2U6IGggPSBudWxsXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgKF90aGlzJF9zdGF0cyA9IHRoaXMuX3N0YXRzKSA9PT0gbnVsbCB8fCBfdGhpcyRfc3RhdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9zdGF0cy50aW1lKFwiT3ZlcmFsbFwiKTtcbiAgICAgICAgICBjb25zdCBkID0gdGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudChpLCByLCBoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2ksICExKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9yLCBfcjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgbyB8fCAobyA9IHRoaXMuX3RyYW5zcG9ydC5nZXRPcHRpb25hbENvbnRlbnRDb25maWcoKSk7XG4gICAgICAgICAgbGV0IHUgPSB0aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KGQuY2FjaGVLZXkpO1xuICAgICAgICAgIGlmICghdSkge1xuICAgICAgICAgICAgdSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICB0aGlzLl9pbnRlbnRTdGF0ZXMuc2V0KGQuY2FjaGVLZXksIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KTtcbiAgICAgICAgICAgIHUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHAgPSAhIShkLnJlbmRlcmluZ0ludGVudCAmIF91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuUFJJTlQpO1xuICAgICAgICAgIGlmICghdS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkX3N0YXRzMjtcbiAgICAgICAgICAgIHUuZGlzcGxheVJlYWR5Q2FwYWJpbGl0eSA9IG5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgICAgdS5vcGVyYXRvckxpc3QgPSB7XG4gICAgICAgICAgICAgIGZuQXJyYXk6IFtdLFxuICAgICAgICAgICAgICBhcmdzQXJyYXk6IFtdLFxuICAgICAgICAgICAgICBsYXN0Q2h1bms6ICExLFxuICAgICAgICAgICAgICBzZXBhcmF0ZUFubm90czogbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIChfdGhpcyRfc3RhdHMyID0gdGhpcy5fc3RhdHMpID09PSBudWxsIHx8IF90aGlzJF9zdGF0czIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9zdGF0czIudGltZShcIlBhZ2UgUmVxdWVzdFwiKTtcbiAgICAgICAgICAgIHRoaXMuX3B1bXBPcGVyYXRvckxpc3QoZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlID0gdCA9PiB7XG4gICAgICAgICAgICAgIHZhciBfdGhpcyRfc3RhdHMzLCBfdGhpcyRfc3RhdHM0O1xuICAgICAgICAgICAgICB1LnJlbmRlclRhc2tzLmRlbGV0ZShmKTtcbiAgICAgICAgICAgICAgKHRoaXMuX21heWJlQ2xlYW51cEFmdGVyUmVuZGVyIHx8IHApICYmIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaSwgITApO1xuICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9zLCBfczIpLmNhbGwodGhpcywgIXApO1xuICAgICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICAgIGYuY2FwYWJpbGl0eS5yZWplY3QodCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe1xuICAgICAgICAgICAgICAgICAgaW50ZW50U3RhdGU6IHUsXG4gICAgICAgICAgICAgICAgICByZWFzb246IHQgaW5zdGFuY2VvZiBFcnJvciA/IHQgOiBuZXcgRXJyb3IodClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIGYuY2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgIChfdGhpcyRfc3RhdHMzID0gdGhpcy5fc3RhdHMpID09PSBudWxsIHx8IF90aGlzJF9zdGF0czMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9zdGF0czMudGltZUVuZChcIlJlbmRlcmluZ1wiKTtcbiAgICAgICAgICAgICAgKF90aGlzJF9zdGF0czQgPSB0aGlzLl9zdGF0cykgPT09IG51bGwgfHwgX3RoaXMkX3N0YXRzNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX3N0YXRzNC50aW1lRW5kKFwiT3ZlcmFsbFwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmID0gbmV3IEludGVybmFsUmVuZGVyVGFzayh7XG4gICAgICAgICAgICAgIGNhbGxiYWNrOiBjb21wbGV0ZSxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgY2FudmFzQ29udGV4dDogZSxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydDogbixcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHMsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogYVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvYmpzOiB0aGlzLm9ianMsXG4gICAgICAgICAgICAgIGNvbW1vbk9ianM6IHRoaXMuY29tbW9uT2JqcyxcbiAgICAgICAgICAgICAgYW5ub3RhdGlvbkNhbnZhc01hcDogbCxcbiAgICAgICAgICAgICAgb3BlcmF0b3JMaXN0OiB1Lm9wZXJhdG9yTGlzdCxcbiAgICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5kZXgsXG4gICAgICAgICAgICAgIGNhbnZhc0ZhY3Rvcnk6IHRoaXMuX3RyYW5zcG9ydC5jYW52YXNGYWN0b3J5LFxuICAgICAgICAgICAgICBmaWx0ZXJGYWN0b3J5OiB0aGlzLl90cmFuc3BvcnQuZmlsdGVyRmFjdG9yeSxcbiAgICAgICAgICAgICAgdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOiAhcCxcbiAgICAgICAgICAgICAgcGRmQnVnOiB0aGlzLl9wZGZCdWcsXG4gICAgICAgICAgICAgIHBhZ2VDb2xvcnM6IGNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICgoX3UgPSB1KS5yZW5kZXJUYXNrcyB8fCAoX3UucmVuZGVyVGFza3MgPSBuZXcgU2V0KCkpKS5hZGQoZik7XG4gICAgICAgICAgY29uc3QgZyA9IGYudGFzaztcbiAgICAgICAgICBQcm9taXNlLmFsbChbdS5kaXNwbGF5UmVhZHlDYXBhYmlsaXR5LnByb21pc2UsIG9dKS50aGVuKHQgPT4ge1xuICAgICAgICAgICAgbGV0IFtlLCBuXSA9IHQ7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXN0cm95ZWQpIGNvbXBsZXRlKCk7ZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBfdGhpcyRfc3RhdHM1O1xuICAgICAgICAgICAgICAoX3RoaXMkX3N0YXRzNSA9IHRoaXMuX3N0YXRzKSA9PT0gbnVsbCB8fCBfdGhpcyRfc3RhdHM1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfc3RhdHM1LnRpbWUoXCJSZW5kZXJpbmdcIik7XG4gICAgICAgICAgICAgIGYuaW5pdGlhbGl6ZUdyYXBoaWNzKHtcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVuY3k6IGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uYWxDb250ZW50Q29uZmlnOiBuXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmLm9wZXJhdG9yTGlzdENoYW5nZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KS5jYXRjaChjb21wbGV0ZSk7XG4gICAgICAgICAgcmV0dXJuIGc7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0T3BlcmF0b3JMaXN0KCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBpbnRlbnQ6IHQgPSBcImRpc3BsYXlcIixcbiAgICAgICAgICAgIGFubm90YXRpb25Nb2RlOiBlID0gX3V0aWwuQW5ub3RhdGlvbk1vZGUuRU5BQkxFLFxuICAgICAgICAgICAgcHJpbnRBbm5vdGF0aW9uU3RvcmFnZTogbiA9IG51bGxcbiAgICAgICAgICB9ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5fdHJhbnNwb3J0LmdldFJlbmRlcmluZ0ludGVudCh0LCBlLCBuLCAhMCk7XG4gICAgICAgICAgbGV0IHIsXG4gICAgICAgICAgICBzID0gdGhpcy5faW50ZW50U3RhdGVzLmdldChpLmNhY2hlS2V5KTtcbiAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgIHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5faW50ZW50U3RhdGVzLnNldChpLmNhY2hlS2V5LCBzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFzLm9wTGlzdFJlYWRDYXBhYmlsaXR5KSB7XG4gICAgICAgICAgICB2YXIgX3MzLCBfdGhpcyRfc3RhdHM2O1xuICAgICAgICAgICAgciA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICByLm9wZXJhdG9yTGlzdENoYW5nZWQgPSBmdW5jdGlvbiBvcGVyYXRvckxpc3RDaGFuZ2VkKCkge1xuICAgICAgICAgICAgICBpZiAocy5vcGVyYXRvckxpc3QubGFzdENodW5rKSB7XG4gICAgICAgICAgICAgICAgcy5vcExpc3RSZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKHMub3BlcmF0b3JMaXN0KTtcbiAgICAgICAgICAgICAgICBzLnJlbmRlclRhc2tzLmRlbGV0ZShyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHMub3BMaXN0UmVhZENhcGFiaWxpdHkgPSBuZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICAgICgoX3MzID0gcykucmVuZGVyVGFza3MgfHwgKF9zMy5yZW5kZXJUYXNrcyA9IG5ldyBTZXQoKSkpLmFkZChyKTtcbiAgICAgICAgICAgIHMub3BlcmF0b3JMaXN0ID0ge1xuICAgICAgICAgICAgICBmbkFycmF5OiBbXSxcbiAgICAgICAgICAgICAgYXJnc0FycmF5OiBbXSxcbiAgICAgICAgICAgICAgbGFzdENodW5rOiAhMSxcbiAgICAgICAgICAgICAgc2VwYXJhdGVBbm5vdHM6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAoX3RoaXMkX3N0YXRzNiA9IHRoaXMuX3N0YXRzKSA9PT0gbnVsbCB8fCBfdGhpcyRfc3RhdHM2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfc3RhdHM2LnRpbWUoXCJQYWdlIFJlcXVlc3RcIik7XG4gICAgICAgICAgICB0aGlzLl9wdW1wT3BlcmF0b3JMaXN0KGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcy5vcExpc3RSZWFkQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIHN0cmVhbVRleHRDb250ZW50KCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBpbmNsdWRlTWFya2VkQ29udGVudDogdCA9ICExLFxuICAgICAgICAgICAgZGlzYWJsZU5vcm1hbGl6YXRpb246IGUgPSAhMVxuICAgICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhTdHJlYW0oXCJHZXRUZXh0Q29udGVudFwiLCB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMuX3BhZ2VJbmRleCxcbiAgICAgICAgICAgIGluY2x1ZGVNYXJrZWRDb250ZW50OiAhMCA9PT0gdCxcbiAgICAgICAgICAgIGRpc2FibGVOb3JtYWxpemF0aW9uOiAhMCA9PT0gZVxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGhpZ2hXYXRlck1hcms6IDEwMCxcbiAgICAgICAgICAgIHNpemU6IHQgPT4gdC5pdGVtcy5sZW5ndGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBnZXRUZXh0Q29udGVudCgpIHtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICAgICAgaWYgKHRoaXMuX3RyYW5zcG9ydC5faHRtbEZvclhmYSkgcmV0dXJuIHRoaXMuZ2V0WGZhKCkudGhlbih0ID0+IF94ZmFfdGV4dC5YZmFUZXh0LnRleHRDb250ZW50KHQpKTtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5zdHJlYW1UZXh0Q29udGVudCh0KTtcbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBlLmdldFJlYWRlcigpLFxuICAgICAgICAgICAgICByID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICFmdW5jdGlvbiBwdW1wKCkge1xuICAgICAgICAgICAgICBpLnJlYWQoKS50aGVuKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLFxuICAgICAgICAgICAgICAgICAgZG9uZTogaVxuICAgICAgICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgICAgICAgIGlmIChpKSB0KHIpO2Vsc2Uge1xuICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyLnN0eWxlcywgbi5zdHlsZXMpO1xuICAgICAgICAgICAgICAgICAgci5pdGVtcy5wdXNoKC4uLm4uaXRlbXMpO1xuICAgICAgICAgICAgICAgICAgcHVtcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSwgbik7XG4gICAgICAgICAgICB9KCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0U3RydWN0VHJlZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LmdldFN0cnVjdFRyZWUodGhpcy5fcGFnZUluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBfZGVzdHJveSgpIHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3llZCA9ICEwO1xuICAgICAgICAgIGNvbnN0IHQgPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5faW50ZW50U3RhdGVzLnZhbHVlcygpKSB7XG4gICAgICAgICAgICB0aGlzLl9hYm9ydE9wZXJhdG9yTGlzdCh7XG4gICAgICAgICAgICAgIGludGVudFN0YXRlOiBlLFxuICAgICAgICAgICAgICByZWFzb246IG5ldyBFcnJvcihcIlBhZ2Ugd2FzIGRlc3Ryb3llZC5cIiksXG4gICAgICAgICAgICAgIGZvcmNlOiAhMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIWUub3BMaXN0UmVhZENhcGFiaWxpdHkpIGZvciAoY29uc3QgbiBvZiBlLnJlbmRlclRhc2tzKSB7XG4gICAgICAgICAgICAgIHQucHVzaChuLmNvbXBsZXRlZCk7XG4gICAgICAgICAgICAgIG4uY2FuY2VsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub2Jqcy5jbGVhcigpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaSwgITEpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3IsIF9yMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodCk7XG4gICAgICAgIH1cbiAgICAgICAgY2xlYW51cCgpIHtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdICYmIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2ksICEwKTtcbiAgICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfcywgX3MyKS5jYWxsKHRoaXMsICExKTtcbiAgICAgICAgICB0ICYmIGUgJiYgdGhpcy5fc3RhdHMgJiYgKHRoaXMuX3N0YXRzID0gbmV3IF9kaXNwbGF5X3V0aWxzLlN0YXRUaW1lcigpKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfVxuICAgICAgICBfc3RhcnRSZW5kZXJQYWdlKHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5faW50ZW50U3RhdGVzLmdldChlKTtcbiAgICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgdmFyIF90aGlzJF9zdGF0czcsIF9uJGRpc3BsYXlSZWFkeUNhcGFiaTtcbiAgICAgICAgICAgIChfdGhpcyRfc3RhdHM3ID0gdGhpcy5fc3RhdHMpID09PSBudWxsIHx8IF90aGlzJF9zdGF0czcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9zdGF0czcudGltZUVuZChcIlBhZ2UgUmVxdWVzdFwiKTtcbiAgICAgICAgICAgIChfbiRkaXNwbGF5UmVhZHlDYXBhYmkgPSBuLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkpID09PSBudWxsIHx8IF9uJGRpc3BsYXlSZWFkeUNhcGFiaSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX24kZGlzcGxheVJlYWR5Q2FwYWJpLnJlc29sdmUodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF9yZW5kZXJQYWdlQ2h1bmsodCwgZSkge1xuICAgICAgICAgIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuKyspIHtcbiAgICAgICAgICAgIGUub3BlcmF0b3JMaXN0LmZuQXJyYXkucHVzaCh0LmZuQXJyYXlbbl0pO1xuICAgICAgICAgICAgZS5vcGVyYXRvckxpc3QuYXJnc0FycmF5LnB1c2godC5hcmdzQXJyYXlbbl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmsgPSB0Lmxhc3RDaHVuaztcbiAgICAgICAgICBlLm9wZXJhdG9yTGlzdC5zZXBhcmF0ZUFubm90cyA9IHQuc2VwYXJhdGVBbm5vdHM7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUucmVuZGVyVGFza3MpIHQub3BlcmF0b3JMaXN0Q2hhbmdlZCgpO1xuICAgICAgICAgIHQubGFzdENodW5rICYmIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3MsIF9zMikuY2FsbCh0aGlzLCAhMCk7XG4gICAgICAgIH1cbiAgICAgICAgX3B1bXBPcGVyYXRvckxpc3QodCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICByZW5kZXJpbmdJbnRlbnQ6IGUsXG4gICAgICAgICAgICBjYWNoZUtleTogbixcbiAgICAgICAgICAgIGFubm90YXRpb25TdG9yYWdlU2VyaWFsaXphYmxlOiBpXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBtYXA6IHIsXG4gICAgICAgICAgICAgIHRyYW5zZmVyczogc1xuICAgICAgICAgICAgfSA9IGksXG4gICAgICAgICAgICBhID0gdGhpcy5fdHJhbnNwb3J0Lm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKFwiR2V0T3BlcmF0b3JMaXN0XCIsIHtcbiAgICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5kZXgsXG4gICAgICAgICAgICAgIGludGVudDogZSxcbiAgICAgICAgICAgICAgY2FjaGVLZXk6IG4sXG4gICAgICAgICAgICAgIGFubm90YXRpb25TdG9yYWdlOiByXG4gICAgICAgICAgICB9LCBzKS5nZXRSZWFkZXIoKSxcbiAgICAgICAgICAgIG8gPSB0aGlzLl9pbnRlbnRTdGF0ZXMuZ2V0KG4pO1xuICAgICAgICAgIG8uc3RyZWFtUmVhZGVyID0gYTtcbiAgICAgICAgICBjb25zdCBwdW1wID0gKCkgPT4ge1xuICAgICAgICAgICAgYS5yZWFkKCkudGhlbih0ID0+IHtcbiAgICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZSxcbiAgICAgICAgICAgICAgICBkb25lOiBuXG4gICAgICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgICAgICBpZiAobikgby5zdHJlYW1SZWFkZXIgPSBudWxsO2Vsc2UgaWYgKCF0aGlzLl90cmFuc3BvcnQuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyUGFnZUNodW5rKGUsIG8pO1xuICAgICAgICAgICAgICAgIHB1bXAoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdCA9PiB7XG4gICAgICAgICAgICAgIG8uc3RyZWFtUmVhZGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLl90cmFuc3BvcnQuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG8ub3BlcmF0b3JMaXN0KSB7XG4gICAgICAgICAgICAgICAgICBvLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmsgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBvLnJlbmRlclRhc2tzKSB0Lm9wZXJhdG9yTGlzdENoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3MsIF9zMikuY2FsbCh0aGlzLCAhMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvLmRpc3BsYXlSZWFkeUNhcGFiaWxpdHkpIG8uZGlzcGxheVJlYWR5Q2FwYWJpbGl0eS5yZWplY3QodCk7ZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIW8ub3BMaXN0UmVhZENhcGFiaWxpdHkpIHRocm93IHQ7XG4gICAgICAgICAgICAgICAgICBvLm9wTGlzdFJlYWRDYXBhYmlsaXR5LnJlamVjdCh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcHVtcCgpO1xuICAgICAgICB9XG4gICAgICAgIF9hYm9ydE9wZXJhdG9yTGlzdCh0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGludGVudFN0YXRlOiBlLFxuICAgICAgICAgICAgcmVhc29uOiBuLFxuICAgICAgICAgICAgZm9yY2U6IGkgPSAhMVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIGlmIChlLnN0cmVhbVJlYWRlcikge1xuICAgICAgICAgICAgaWYgKGUuc3RyZWFtUmVhZGVyQ2FuY2VsVGltZW91dCkge1xuICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0KTtcbiAgICAgICAgICAgICAgZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaSkge1xuICAgICAgICAgICAgICBpZiAoZS5yZW5kZXJUYXNrcy5zaXplID4gMCkgcmV0dXJuO1xuICAgICAgICAgICAgICBpZiAobiBpbnN0YW5jZW9mIF9kaXNwbGF5X3V0aWxzLlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvbikge1xuICAgICAgICAgICAgICAgIGxldCB0ID0gUkVOREVSSU5HX0NBTkNFTExFRF9USU1FT1VUO1xuICAgICAgICAgICAgICAgIG4uZXh0cmFEZWxheSA+IDAgJiYgbi5leHRyYURlbGF5IDwgMWUzICYmICh0ICs9IG4uZXh0cmFEZWxheSk7XG4gICAgICAgICAgICAgICAgZS5zdHJlYW1SZWFkZXJDYW5jZWxUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBlLnN0cmVhbVJlYWRlckNhbmNlbFRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fYWJvcnRPcGVyYXRvckxpc3Qoe1xuICAgICAgICAgICAgICAgICAgICBpbnRlbnRTdGF0ZTogZSxcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiBuLFxuICAgICAgICAgICAgICAgICAgICBmb3JjZTogITBcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIHQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZS5zdHJlYW1SZWFkZXIuY2FuY2VsKG5ldyBfdXRpbC5BYm9ydEV4Y2VwdGlvbihuLm1lc3NhZ2UpKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICAgICAgICBlLnN0cmVhbVJlYWRlciA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RyYW5zcG9ydC5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBbdCwgbl0gb2YgdGhpcy5faW50ZW50U3RhdGVzKSBpZiAobiA9PT0gZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVudFN0YXRlcy5kZWxldGUodCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldCBzdGF0cygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9zMigpIHtcbiAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSAmJiBhcmd1bWVudHNbMF07XG4gICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3IsIF9yMikuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2kpIHx8IHRoaXMuZGVzdHJveWVkKSByZXR1cm4gITE7XG4gICAgICAgIGlmICh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9uLCBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbiwgbnVsbCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9zLCBfczIpLmNhbGwodGhpcywgITEpO1xuICAgICAgICAgIH0sIERFTEFZRURfQ0xFQU5VUF9USU1FT1VUKSk7XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qge1xuICAgICAgICAgIHJlbmRlclRhc2tzOiB0LFxuICAgICAgICAgIG9wZXJhdG9yTGlzdDogZVxuICAgICAgICB9IG9mIHRoaXMuX2ludGVudFN0YXRlcy52YWx1ZXMoKSkgaWYgKHQuc2l6ZSA+IDAgfHwgIWUubGFzdENodW5rKSByZXR1cm4gITE7XG4gICAgICAgIHRoaXMuX2ludGVudFN0YXRlcy5jbGVhcigpO1xuICAgICAgICB0aGlzLm9ianMuY2xlYXIoKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9pLCAhMSk7XG4gICAgICAgIHJldHVybiAhMDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9yMigpIHtcbiAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbikpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9uKSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9uLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXhwb3J0cy5QREZQYWdlUHJveHkgPSBQREZQYWdlUHJveHk7XG4gICAgICB2YXIgX2EgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbyA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgTG9vcGJhY2tQb3J0IHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2EsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBTZXQoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9vLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBvc3RNZXNzYWdlKHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0ge1xuICAgICAgICAgICAgZGF0YTogc3RydWN0dXJlZENsb25lKHQsIG51bGwpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX28pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYSkpIHQuY2FsbCh0aGlzLCBuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKHQsIGUpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2EpLmFkZChlKTtcbiAgICAgICAgfVxuICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyKHQsIGUpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2EpLmRlbGV0ZShlKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXJtaW5hdGUoKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9hKS5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBleHBvcnRzLkxvb3BiYWNrUG9ydCA9IExvb3BiYWNrUG9ydDtcbiAgICAgIGNvbnN0IFBERldvcmtlclV0aWwgPSB7XG4gICAgICAgIGlzV29ya2VyRGlzYWJsZWQ6ICExLFxuICAgICAgICBmYWxsYmFja1dvcmtlclNyYzogbnVsbCxcbiAgICAgICAgZmFrZVdvcmtlcklkOiAwXG4gICAgICB9O1xuICAgICAgZXhwb3J0cy5QREZXb3JrZXJVdGlsID0gUERGV29ya2VyVXRpbDtcbiAgICAgIGlmIChfdXRpbC5pc05vZGVKUyAmJiBcImZ1bmN0aW9uXCIgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIFBERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZCA9ICEwO1xuICAgICAgICBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjID0gXCIuL3BkZi53b3JrZXIuanNcIjtcbiAgICAgIH0gZWxzZSBpZiAoXCJvYmplY3RcIiA9PSB0eXBlb2YgZG9jdW1lbnQpIHtcbiAgICAgICAgdmFyIF9kb2N1bWVudDtcbiAgICAgICAgY29uc3QgdCA9IChfZG9jdW1lbnQgPSBkb2N1bWVudCkgPT09IG51bGwgfHwgX2RvY3VtZW50ID09PSB2b2lkIDAgfHwgKF9kb2N1bWVudCA9IF9kb2N1bWVudC5jdXJyZW50U2NyaXB0KSA9PT0gbnVsbCB8fCBfZG9jdW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kb2N1bWVudC5zcmM7XG4gICAgICAgIHQgJiYgKFBERldvcmtlclV0aWwuZmFsbGJhY2tXb3JrZXJTcmMgPSB0LnJlcGxhY2UoLyhcXC4oPzptaW5cXC4pP2pzKShcXD8uKik/JC9pLCBcIi53b3JrZXIkMSQyXCIpKTtcbiAgICAgIH1cbiAgICAgIFBERldvcmtlclV0aWwuaXNTYW1lT3JpZ2luID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgbGV0IG47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbiA9IG5ldyBVUkwodCk7XG4gICAgICAgICAgaWYgKCFuLm9yaWdpbiB8fCBcIm51bGxcIiA9PT0gbi5vcmlnaW4pIHJldHVybiAhMTtcbiAgICAgICAgfSBjYXRjaCAoX3VudXNlZDUpIHtcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaSA9IG5ldyBVUkwoZSwgbik7XG4gICAgICAgIHJldHVybiBuLm9yaWdpbiA9PT0gaS5vcmlnaW47XG4gICAgICB9O1xuICAgICAgUERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IFwiaW1wb3J0U2NyaXB0cyhcXFwiXCIuY29uY2F0KHQsIFwiXFxcIik7XCIpO1xuICAgICAgICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZV0pKTtcbiAgICAgIH07XG4gICAgICBjbGFzcyBQREZXb3JrZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgbmFtZTogdCA9IG51bGwsXG4gICAgICAgICAgICBwb3J0OiBlID0gbnVsbCxcbiAgICAgICAgICAgIHZlcmJvc2l0eTogbiA9ICgwLCBfdXRpbC5nZXRWZXJib3NpdHlMZXZlbCkoKVxuICAgICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgIGlmIChlICYmIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoUERGV29ya2VyLCBQREZXb3JrZXIsIF9sKS5oYXMoZSkpIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2UgbW9yZSB0aGFuIG9uZSBQREZXb3JrZXIgcGVyIHBvcnQuXCIpO1xuICAgICAgICAgIHRoaXMubmFtZSA9IHQ7XG4gICAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSAhMTtcbiAgICAgICAgICB0aGlzLnZlcmJvc2l0eSA9IG47XG4gICAgICAgICAgdGhpcy5fcmVhZHlDYXBhYmlsaXR5ID0gbmV3IF91dGlsLlByb21pc2VDYXBhYmlsaXR5KCk7XG4gICAgICAgICAgdGhpcy5fcG9ydCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fd2ViV29ya2VyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlSGFuZGxlciA9IG51bGw7XG4gICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoUERGV29ya2VyLCBQREZXb3JrZXIsIF9sKS5zZXQoZSwgdGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplRnJvbVBvcnQoZSk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMuX2luaXRpYWxpemUoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgcHJvbWlzZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHBvcnQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3BvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IG1lc3NhZ2VIYW5kbGVyKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGFuZGxlcjtcbiAgICAgICAgfVxuICAgICAgICBfaW5pdGlhbGl6ZUZyb21Qb3J0KHQpIHtcbiAgICAgICAgICB0aGlzLl9wb3J0ID0gdDtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlSGFuZGxlciA9IG5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKFwibWFpblwiLCBcIndvcmtlclwiLCB0KTtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlSGFuZGxlci5vbihcInJlYWR5XCIsIGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVyLnNlbmQoXCJjb25maWd1cmVcIiwge1xuICAgICAgICAgICAgdmVyYm9zaXR5OiB0aGlzLnZlcmJvc2l0eVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF9pbml0aWFsaXplKCkge1xuICAgICAgICAgIGlmICghUERGV29ya2VyVXRpbC5pc1dvcmtlckRpc2FibGVkICYmICFQREZXb3JrZXIuX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgd29ya2VyU3JjOiB0XG4gICAgICAgICAgICB9ID0gUERGV29ya2VyO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgUERGV29ya2VyVXRpbC5pc1NhbWVPcmlnaW4od2luZG93LmxvY2F0aW9uLmhyZWYsIHQpIHx8ICh0ID0gUERGV29ya2VyVXRpbC5jcmVhdGVDRE5XcmFwcGVyKG5ldyBVUkwodCwgd2luZG93LmxvY2F0aW9uKS5ocmVmKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBuZXcgV29ya2VyKHQpLFxuICAgICAgICAgICAgICAgIG4gPSBuZXcgX21lc3NhZ2VfaGFuZGxlci5NZXNzYWdlSGFuZGxlcihcIm1haW5cIiwgXCJ3b3JrZXJcIiwgZSksXG4gICAgICAgICAgICAgICAgdGVybWluYXRlRWFybHkgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBvbldvcmtlckVycm9yKTtcbiAgICAgICAgICAgICAgICAgIG4uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgICAgZS50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGVzdHJveWVkID8gdGhpcy5fcmVhZHlDYXBhYmlsaXR5LnJlamVjdChuZXcgRXJyb3IoXCJXb3JrZXIgd2FzIGRlc3Ryb3llZFwiKSkgOiB0aGlzLl9zZXR1cEZha2VXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uV29ya2VyRXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl93ZWJXb3JrZXIgfHwgdGVybWluYXRlRWFybHkoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBlLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBvbldvcmtlckVycm9yKTtcbiAgICAgICAgICAgICAgbi5vbihcInRlc3RcIiwgdCA9PiB7XG4gICAgICAgICAgICAgICAgZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgb25Xb3JrZXJFcnJvcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSB0ZXJtaW5hdGVFYXJseSgpO2Vsc2UgaWYgKHQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVyID0gbjtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcnQgPSBlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fd2ViV29ya2VyID0gZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3JlYWR5Q2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICBuLnNlbmQoXCJjb25maWd1cmVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk6IHRoaXMudmVyYm9zaXR5XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7XG4gICAgICAgICAgICAgICAgICBuLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgIGUudGVybWluYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbi5vbihcInJlYWR5XCIsIHQgPT4ge1xuICAgICAgICAgICAgICAgIGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIG9uV29ya2VyRXJyb3IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgdGVybWluYXRlRWFybHkoKTtlbHNlIHRyeSB7XG4gICAgICAgICAgICAgICAgICBzZW5kVGVzdCgpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKF91bnVzZWQ2KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9zZXR1cEZha2VXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBzZW5kVGVzdCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ID0gbmV3IFVpbnQ4QXJyYXkoKTtcbiAgICAgICAgICAgICAgICBuLnNlbmQoXCJ0ZXN0XCIsIHQsIFt0LmJ1ZmZlcl0pO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBzZW5kVGVzdCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChfdW51c2VkNykge1xuICAgICAgICAgICAgICAoMCwgX3V0aWwuaW5mbykoXCJUaGUgd29ya2VyIGhhcyBiZWVuIGRpc2FibGVkLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fc2V0dXBGYWtlV29ya2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgX3NldHVwRmFrZVdvcmtlcigpIHtcbiAgICAgICAgICBpZiAoIVBERldvcmtlclV0aWwuaXNXb3JrZXJEaXNhYmxlZCkge1xuICAgICAgICAgICAgKDAsIF91dGlsLndhcm4pKFwiU2V0dGluZyB1cCBmYWtlIHdvcmtlci5cIik7XG4gICAgICAgICAgICBQREZXb3JrZXJVdGlsLmlzV29ya2VyRGlzYWJsZWQgPSAhMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgUERGV29ya2VyLl9zZXR1cEZha2VXb3JrZXJHbG9iYWwudGhlbih0ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVqZWN0KG5ldyBFcnJvcihcIldvcmtlciB3YXMgZGVzdHJveWVkXCIpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZSA9IG5ldyBMb29wYmFja1BvcnQoKTtcbiAgICAgICAgICAgIHRoaXMuX3BvcnQgPSBlO1xuICAgICAgICAgICAgY29uc3QgbiA9IFwiZmFrZVwiICsgUERGV29ya2VyVXRpbC5mYWtlV29ya2VySWQrKyxcbiAgICAgICAgICAgICAgaSA9IG5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKG4gKyBcIl93b3JrZXJcIiwgbiwgZSk7XG4gICAgICAgICAgICB0LnNldHVwKGksIGUpO1xuICAgICAgICAgICAgY29uc3QgciA9IG5ldyBfbWVzc2FnZV9oYW5kbGVyLk1lc3NhZ2VIYW5kbGVyKG4sIG4gKyBcIl93b3JrZXJcIiwgZSk7XG4gICAgICAgICAgICB0aGlzLl9tZXNzYWdlSGFuZGxlciA9IHI7XG4gICAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICAgICAgci5zZW5kKFwiY29uZmlndXJlXCIsIHtcbiAgICAgICAgICAgICAgdmVyYm9zaXR5OiB0aGlzLnZlcmJvc2l0eVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkuY2F0Y2godCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZWFkeUNhcGFiaWxpdHkucmVqZWN0KG5ldyBFcnJvcihcIlNldHRpbmcgdXAgZmFrZSB3b3JrZXIgZmFpbGVkOiBcXFwiXCIuY29uY2F0KHQubWVzc2FnZSwgXCJcXFwiLlwiKSkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRlc3Ryb3koKSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSAhMDtcbiAgICAgICAgICBpZiAodGhpcy5fd2ViV29ya2VyKSB7XG4gICAgICAgICAgICB0aGlzLl93ZWJXb3JrZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgICB0aGlzLl93ZWJXb3JrZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KFBERldvcmtlciwgUERGV29ya2VyLCBfbCkuZGVsZXRlKHRoaXMuX3BvcnQpO1xuICAgICAgICAgIHRoaXMuX3BvcnQgPSBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLl9tZXNzYWdlSGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fbWVzc2FnZUhhbmRsZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZnJvbVBvcnQodCkge1xuICAgICAgICAgIGlmICghKHQgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwICYmIHQucG9ydCkpIHRocm93IG5ldyBFcnJvcihcIlBERldvcmtlci5mcm9tUG9ydCAtIGludmFsaWQgbWV0aG9kIHNpZ25hdHVyZS5cIik7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQodGhpcywgUERGV29ya2VyLCBfbCkuaGFzKHQucG9ydCkgPyBfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KHRoaXMsIFBERldvcmtlciwgX2wpLmdldCh0LnBvcnQpIDogbmV3IFBERldvcmtlcih0KTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZ2V0IHdvcmtlclNyYygpIHtcbiAgICAgICAgICBpZiAoX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjKSByZXR1cm4gX3dvcmtlcl9vcHRpb25zLkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjO1xuICAgICAgICAgIGlmIChudWxsICE9PSBQREZXb3JrZXJVdGlsLmZhbGxiYWNrV29ya2VyU3JjKSB7XG4gICAgICAgICAgICBfdXRpbC5pc05vZGVKUyB8fCAoMCwgX2Rpc3BsYXlfdXRpbHMuZGVwcmVjYXRlZCkoJ05vIFwiR2xvYmFsV29ya2VyT3B0aW9ucy53b3JrZXJTcmNcIiBzcGVjaWZpZWQuJyk7XG4gICAgICAgICAgICByZXR1cm4gUERGV29ya2VyVXRpbC5mYWxsYmFja1dvcmtlclNyYztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjXCIgc3BlY2lmaWVkLicpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBnZXQgX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlcigpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIF9nbG9iYWxUaGlzJHBkZmpzV29yaztcbiAgICAgICAgICAgIHJldHVybiAoKF9nbG9iYWxUaGlzJHBkZmpzV29yayA9IGdsb2JhbFRoaXMucGRmanNXb3JrZXIpID09PSBudWxsIHx8IF9nbG9iYWxUaGlzJHBkZmpzV29yayA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2dsb2JhbFRoaXMkcGRmanNXb3JrLldvcmtlck1lc3NhZ2VIYW5kbGVyKSB8fCBudWxsO1xuICAgICAgICAgIH0gY2F0Y2ggKF91bnVzZWQ4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGdldCBfc2V0dXBGYWtlV29ya2VyR2xvYmFsKCkge1xuICAgICAgICAgIGNvbnN0IGxvYWRlciA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1haW5Xb3JrZXJNZXNzYWdlSGFuZGxlciA9IHRoaXMuX21haW5UaHJlYWRXb3JrZXJNZXNzYWdlSGFuZGxlcjtcbiAgICAgICAgICAgIGlmIChtYWluV29ya2VyTWVzc2FnZUhhbmRsZXIpIHJldHVybiBtYWluV29ya2VyTWVzc2FnZUhhbmRsZXI7XG4gICAgICAgICAgICBpZiAoX3V0aWwuaXNOb2RlSlMgJiYgXCJmdW5jdGlvblwiID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICBjb25zdCB3b3JrZXIgPSBldmFsKFwicmVxdWlyZVwiKSh0aGlzLndvcmtlclNyYyk7XG4gICAgICAgICAgICAgIHJldHVybiB3b3JrZXIuV29ya2VyTWVzc2FnZUhhbmRsZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCAoMCwgX2Rpc3BsYXlfdXRpbHMubG9hZFNjcmlwdCkodGhpcy53b3JrZXJTcmMpO1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5wZGZqc1dvcmtlci5Xb3JrZXJNZXNzYWdlSGFuZGxlcjtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiAoMCwgX3V0aWwuc2hhZG93KSh0aGlzLCBcIl9zZXR1cEZha2VXb3JrZXJHbG9iYWxcIiwgbG9hZGVyKCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgX2wgPSB7XG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogbmV3IFdlYWtNYXAoKVxuICAgICAgfTtcbiAgICAgIGV4cG9ydHMuUERGV29ya2VyID0gUERGV29ya2VyO1xuICAgICAgdmFyIF9jID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2ggPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF91MiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9wID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBXb3JrZXJUcmFuc3BvcnQge1xuICAgICAgICBjb25zdHJ1Y3RvcihfdDMsIF9lMywgX24yLCBfaTIsIHIpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX3ApO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9jLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgTWFwKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfaCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbmV3IE1hcCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2QsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBNYXAoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF91Miwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIgPSBfdDM7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nVGFzayA9IF9lMztcbiAgICAgICAgICB0aGlzLmNvbW1vbk9ianMgPSBuZXcgUERGT2JqZWN0cygpO1xuICAgICAgICAgIHRoaXMuZm9udExvYWRlciA9IG5ldyBfZm9udF9sb2FkZXIuRm9udExvYWRlcih7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50OiBfaTIub3duZXJEb2N1bWVudCxcbiAgICAgICAgICAgIHN0eWxlRWxlbWVudDogX2kyLnN0eWxlRWxlbWVudFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3BhcmFtcyA9IF9pMjtcbiAgICAgICAgICB0aGlzLmNhbnZhc0ZhY3RvcnkgPSByLmNhbnZhc0ZhY3Rvcnk7XG4gICAgICAgICAgdGhpcy5maWx0ZXJGYWN0b3J5ID0gci5maWx0ZXJGYWN0b3J5O1xuICAgICAgICAgIHRoaXMuY01hcFJlYWRlckZhY3RvcnkgPSByLmNNYXBSZWFkZXJGYWN0b3J5O1xuICAgICAgICAgIHRoaXMuc3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSByLnN0YW5kYXJkRm9udERhdGFGYWN0b3J5O1xuICAgICAgICAgIHRoaXMuZGVzdHJveWVkID0gITE7XG4gICAgICAgICAgdGhpcy5kZXN0cm95Q2FwYWJpbGl0eSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fbmV0d29ya1N0cmVhbSA9IF9uMjtcbiAgICAgICAgICB0aGlzLl9mdWxsUmVhZGVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgIHRoaXMuZG93bmxvYWRJbmZvQ2FwYWJpbGl0eSA9IG5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIHRoaXMuc2V0dXBNZXNzYWdlSGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgICAgIGdldCBhbm5vdGF0aW9uU3RvcmFnZSgpIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF91dGlsLnNoYWRvdykodGhpcywgXCJhbm5vdGF0aW9uU3RvcmFnZVwiLCBuZXcgX2Fubm90YXRpb25fc3RvcmFnZS5Bbm5vdGF0aW9uU3RvcmFnZSgpKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSZW5kZXJpbmdJbnRlbnQodCkge1xuICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEUsXG4gICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiBudWxsLFxuICAgICAgICAgICAgaSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzNdICYmIGFyZ3VtZW50c1szXSxcbiAgICAgICAgICAgIHIgPSBfdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkRJU1BMQVksXG4gICAgICAgICAgICBzID0gX2Fubm90YXRpb25fc3RvcmFnZS5TZXJpYWxpemFibGVFbXB0eTtcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhbnlcIjpcbiAgICAgICAgICAgICAgciA9IF91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5ZO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkaXNwbGF5XCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInByaW50XCI6XG4gICAgICAgICAgICAgIHIgPSBfdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLlBSSU5UO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICgwLCBfdXRpbC53YXJuKShcImdldFJlbmRlcmluZ0ludGVudCAtIGludmFsaWQgaW50ZW50OiBcIi5jb25jYXQodCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNhc2UgX3V0aWwuQW5ub3RhdGlvbk1vZGUuRElTQUJMRTpcbiAgICAgICAgICAgICAgciArPSBfdXRpbC5SZW5kZXJpbmdJbnRlbnRGbGFnLkFOTk9UQVRJT05TX0RJU0FCTEU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEU6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBfdXRpbC5Bbm5vdGF0aW9uTW9kZS5FTkFCTEVfRk9STVM6XG4gICAgICAgICAgICAgIHIgKz0gX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5BTk5PVEFUSU9OU19GT1JNUztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIF91dGlsLkFubm90YXRpb25Nb2RlLkVOQUJMRV9TVE9SQUdFOlxuICAgICAgICAgICAgICByICs9IF91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuQU5OT1RBVElPTlNfU1RPUkFHRTtcbiAgICAgICAgICAgICAgcyA9IChyICYgX3V0aWwuUmVuZGVyaW5nSW50ZW50RmxhZy5QUklOVCAmJiBuIGluc3RhbmNlb2YgX2Fubm90YXRpb25fc3RvcmFnZS5QcmludEFubm90YXRpb25TdG9yYWdlID8gbiA6IHRoaXMuYW5ub3RhdGlvblN0b3JhZ2UpLnNlcmlhbGl6YWJsZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAoMCwgX3V0aWwud2FybikoXCJnZXRSZW5kZXJpbmdJbnRlbnQgLSBpbnZhbGlkIGFubm90YXRpb25Nb2RlOiBcIi5jb25jYXQoZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpICYmIChyICs9IF91dGlsLlJlbmRlcmluZ0ludGVudEZsYWcuT1BMSVNUKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVuZGVyaW5nSW50ZW50OiByLFxuICAgICAgICAgICAgY2FjaGVLZXk6IFwiXCIuY29uY2F0KHIsIFwiX1wiKS5jb25jYXQocy5oYXNoKSxcbiAgICAgICAgICAgIGFubm90YXRpb25TdG9yYWdlU2VyaWFsaXphYmxlOiBzXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBkZXN0cm95KCkge1xuICAgICAgICAgIHZhciBfY2xhc3NQcml2YXRlRmllbGRHZXQyO1xuICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3lDYXBhYmlsaXR5KSByZXR1cm4gdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICAgIHRoaXMuZGVzdHJveWVkID0gITA7XG4gICAgICAgICAgdGhpcy5kZXN0cm95Q2FwYWJpbGl0eSA9IG5ldyBfdXRpbC5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQyID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF91MikpID09PSBudWxsIHx8IF9jbGFzc1ByaXZhdGVGaWVsZEdldDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDIucmVqZWN0KG5ldyBFcnJvcihcIldvcmtlciB3YXMgZGVzdHJveWVkIGR1cmluZyBvblBhc3N3b3JkIGNhbGxiYWNrXCIpKTtcbiAgICAgICAgICBjb25zdCB0ID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBlIG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaCkudmFsdWVzKCkpIHQucHVzaChlLl9kZXN0cm95KCkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaCkuY2xlYXIoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2QpLmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5oYXNPd25Qcm9wZXJ0eShcImFubm90YXRpb25TdG9yYWdlXCIpICYmIHRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIlRlcm1pbmF0ZVwiLCBudWxsKTtcbiAgICAgICAgICB0LnB1c2goZSk7XG4gICAgICAgICAgUHJvbWlzZS5hbGwodCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbW1vbk9ianMuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuZm9udExvYWRlci5jbGVhcigpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jKS5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJGYWN0b3J5LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX25ldHdvcmtTdHJlYW0gJiYgdGhpcy5fbmV0d29ya1N0cmVhbS5jYW5jZWxBbGxSZXF1ZXN0cyhuZXcgX3V0aWwuQWJvcnRFeGNlcHRpb24oXCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuXCIpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICAgIH0sIHRoaXMuZGVzdHJveUNhcGFiaWxpdHkucmVqZWN0KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZXN0cm95Q2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIHNldHVwTWVzc2FnZUhhbmRsZXIoKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgbWVzc2FnZUhhbmRsZXI6IHQsXG4gICAgICAgICAgICBsb2FkaW5nVGFzazogZVxuICAgICAgICAgIH0gPSB0aGlzO1xuICAgICAgICAgIHQub24oXCJHZXRSZWFkZXJcIiwgKHQsIGUpID0+IHtcbiAgICAgICAgICAgICgwLCBfdXRpbC5hc3NlcnQpKHRoaXMuX25ldHdvcmtTdHJlYW0sIFwiR2V0UmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS5cIik7XG4gICAgICAgICAgICB0aGlzLl9mdWxsUmVhZGVyID0gdGhpcy5fbmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyKCk7XG4gICAgICAgICAgICB0aGlzLl9mdWxsUmVhZGVyLm9uUHJvZ3Jlc3MgPSB0ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbGFzdFByb2dyZXNzID0ge1xuICAgICAgICAgICAgICAgIGxvYWRlZDogdC5sb2FkZWQsXG4gICAgICAgICAgICAgICAgdG90YWw6IHQudG90YWxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlLm9uUHVsbCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fZnVsbFJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogbixcbiAgICAgICAgICAgICAgICAgIGRvbmU6IGlcbiAgICAgICAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICAgICAgICBpZiAoaSkgZS5jbG9zZSgpO2Vsc2Uge1xuICAgICAgICAgICAgICAgICAgKDAsIF91dGlsLmFzc2VydCkobiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyLCBcIkdldFJlYWRlciAtIGV4cGVjdGVkIGFuIEFycmF5QnVmZmVyLlwiKTtcbiAgICAgICAgICAgICAgICAgIGUuZW5xdWV1ZShuZXcgVWludDhBcnJheShuKSwgMSwgW25dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLmNhdGNoKHQgPT4ge1xuICAgICAgICAgICAgICAgIGUuZXJyb3IodCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGUub25DYW5jZWwgPSB0ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fZnVsbFJlYWRlci5jYW5jZWwodCk7XG4gICAgICAgICAgICAgIGUucmVhZHkuY2F0Y2godCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkgdGhyb3cgdDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub24oXCJSZWFkZXJIZWFkZXJzUmVhZHlcIiwgdCA9PiB7XG4gICAgICAgICAgICBjb25zdCBuID0gbmV3IF91dGlsLlByb21pc2VDYXBhYmlsaXR5KCksXG4gICAgICAgICAgICAgIGkgPSB0aGlzLl9mdWxsUmVhZGVyO1xuICAgICAgICAgICAgaS5oZWFkZXJzUmVhZHkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaS5pc1N0cmVhbWluZ1N1cHBvcnRlZCB8fCAhaS5pc1JhbmdlU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9lJG9uUHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFByb2dyZXNzICYmICgoX2Ukb25Qcm9ncmVzcyA9IGUub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX2Ukb25Qcm9ncmVzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Ukb25Qcm9ncmVzcy5jYWxsKGUsIHRoaXMuX2xhc3RQcm9ncmVzcykpO1xuICAgICAgICAgICAgICAgIGkub25Qcm9ncmVzcyA9IHQgPT4ge1xuICAgICAgICAgICAgICAgICAgdmFyIF9lJG9uUHJvZ3Jlc3MyO1xuICAgICAgICAgICAgICAgICAgKF9lJG9uUHJvZ3Jlc3MyID0gZS5vblByb2dyZXNzKSA9PT0gbnVsbCB8fCBfZSRvblByb2dyZXNzMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Ukb25Qcm9ncmVzczIuY2FsbChlLCB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWRlZDogdC5sb2FkZWQsXG4gICAgICAgICAgICAgICAgICAgIHRvdGFsOiB0LnRvdGFsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG4ucmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgaXNTdHJlYW1pbmdTdXBwb3J0ZWQ6IGkuaXNTdHJlYW1pbmdTdXBwb3J0ZWQsXG4gICAgICAgICAgICAgICAgaXNSYW5nZVN1cHBvcnRlZDogaS5pc1JhbmdlU3VwcG9ydGVkLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IGkuY29udGVudExlbmd0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIG4ucmVqZWN0KTtcbiAgICAgICAgICAgIHJldHVybiBuLnByb21pc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcIkdldFJhbmdlUmVhZGVyXCIsICh0LCBlKSA9PiB7XG4gICAgICAgICAgICAoMCwgX3V0aWwuYXNzZXJ0KSh0aGlzLl9uZXR3b3JrU3RyZWFtLCBcIkdldFJhbmdlUmVhZGVyIC0gbm8gYElQREZTdHJlYW1gIGluc3RhbmNlIGF2YWlsYWJsZS5cIik7XG4gICAgICAgICAgICBjb25zdCBuID0gdGhpcy5fbmV0d29ya1N0cmVhbS5nZXRSYW5nZVJlYWRlcih0LmJlZ2luLCB0LmVuZCk7XG4gICAgICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgICBlLm9uUHVsbCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBuLnJlYWQoKS50aGVuKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbixcbiAgICAgICAgICAgICAgICAgICAgZG9uZTogaVxuICAgICAgICAgICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgICAgICAgICBpZiAoaSkgZS5jbG9zZSgpO2Vsc2Uge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3V0aWwuYXNzZXJ0KShuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIsIFwiR2V0UmFuZ2VSZWFkZXIgLSBleHBlY3RlZCBhbiBBcnJheUJ1ZmZlci5cIik7XG4gICAgICAgICAgICAgICAgICAgIGUuZW5xdWV1ZShuZXcgVWludDhBcnJheShuKSwgMSwgW25dKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KS5jYXRjaCh0ID0+IHtcbiAgICAgICAgICAgICAgICAgIGUuZXJyb3IodCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGUub25DYW5jZWwgPSB0ID0+IHtcbiAgICAgICAgICAgICAgICBuLmNhbmNlbCh0KTtcbiAgICAgICAgICAgICAgICBlLnJlYWR5LmNhdGNoKHQgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkgdGhyb3cgdDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBlLmNsb3NlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcIkdldERvY1wiLCB0ID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHBkZkluZm86IG5cbiAgICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgICAgdGhpcy5fbnVtUGFnZXMgPSBuLm51bVBhZ2VzO1xuICAgICAgICAgICAgdGhpcy5faHRtbEZvclhmYSA9IG4uaHRtbEZvclhmYTtcbiAgICAgICAgICAgIGRlbGV0ZSBuLmh0bWxGb3JYZmE7XG4gICAgICAgICAgICBlLl9jYXBhYmlsaXR5LnJlc29sdmUobmV3IFBERkRvY3VtZW50UHJveHkobiwgdGhpcykpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub24oXCJEb2NFeGNlcHRpb25cIiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgc3dpdGNoICh0Lm5hbWUpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIlBhc3N3b3JkRXhjZXB0aW9uXCI6XG4gICAgICAgICAgICAgICAgbiA9IG5ldyBfdXRpbC5QYXNzd29yZEV4Y2VwdGlvbih0Lm1lc3NhZ2UsIHQuY29kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJJbnZhbGlkUERGRXhjZXB0aW9uXCI6XG4gICAgICAgICAgICAgICAgbiA9IG5ldyBfdXRpbC5JbnZhbGlkUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJNaXNzaW5nUERGRXhjZXB0aW9uXCI6XG4gICAgICAgICAgICAgICAgbiA9IG5ldyBfdXRpbC5NaXNzaW5nUERGRXhjZXB0aW9uKHQubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJVbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb25cIjpcbiAgICAgICAgICAgICAgICBuID0gbmV3IF91dGlsLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbih0Lm1lc3NhZ2UsIHQuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIlVua25vd25FcnJvckV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICAgIG4gPSBuZXcgX3V0aWwuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSwgdC5kZXRhaWxzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAoMCwgX3V0aWwudW5yZWFjaGFibGUpKFwiRG9jRXhjZXB0aW9uIC0gZXhwZWN0ZWQgYSB2YWxpZCBFcnJvci5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlLl9jYXBhYmlsaXR5LnJlamVjdChuKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0Lm9uKFwiUGFzc3dvcmRSZXF1ZXN0XCIsIHQgPT4ge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF91MiwgbmV3IF91dGlsLlByb21pc2VDYXBhYmlsaXR5KCkpO1xuICAgICAgICAgICAgaWYgKGUub25QYXNzd29yZCkge1xuICAgICAgICAgICAgICBjb25zdCB1cGRhdGVQYXNzd29yZCA9IHQgPT4ge1xuICAgICAgICAgICAgICAgIHQgaW5zdGFuY2VvZiBFcnJvciA/IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdTIpLnJlamVjdCh0KSA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdTIpLnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBlLm9uUGFzc3dvcmQodXBkYXRlUGFzc3dvcmQsIHQuY29kZSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3UyKS5yZWplY3QodCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3UyKS5yZWplY3QobmV3IF91dGlsLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSwgdC5jb2RlKSk7XG4gICAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF91MikucHJvbWlzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0Lm9uKFwiRGF0YUxvYWRlZFwiLCB0ID0+IHtcbiAgICAgICAgICAgIHZhciBfZSRvblByb2dyZXNzMztcbiAgICAgICAgICAgIChfZSRvblByb2dyZXNzMyA9IGUub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX2Ukb25Qcm9ncmVzczMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lJG9uUHJvZ3Jlc3MzLmNhbGwoZSwge1xuICAgICAgICAgICAgICBsb2FkZWQ6IHQubGVuZ3RoLFxuICAgICAgICAgICAgICB0b3RhbDogdC5sZW5ndGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kb3dubG9hZEluZm9DYXBhYmlsaXR5LnJlc29sdmUodCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcIlN0YXJ0UmVuZGVyUGFnZVwiLCB0ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9oKS5nZXQodC5wYWdlSW5kZXgpLl9zdGFydFJlbmRlclBhZ2UodC50cmFuc3BhcmVuY3ksIHQuY2FjaGVLZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub24oXCJjb21tb25vYmpcIiwgZSA9PiB7XG4gICAgICAgICAgICB2YXIgX2dsb2JhbFRoaXMkRm9udEluc3BlO1xuICAgICAgICAgICAgbGV0IFtuLCBpLCByXSA9IGU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVzdHJveWVkICYmICF0aGlzLmNvbW1vbk9ianMuaGFzKG4pKSBzd2l0Y2ggKGkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIkZvbnRcIjpcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fcGFyYW1zO1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gcikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHIuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAoMCwgX3V0aWwud2FybikoXCJFcnJvciBkdXJpbmcgZm9udCBsb2FkaW5nOiBcIi5jb25jYXQodCkpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLnJlc29sdmUobiwgdCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IGUucGRmQnVnICYmIChfZ2xvYmFsVGhpcyRGb250SW5zcGUgPSBnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3IpICE9PSBudWxsICYmIF9nbG9iYWxUaGlzJEZvbnRJbnNwZSAhPT0gdm9pZCAwICYmIF9nbG9iYWxUaGlzJEZvbnRJbnNwZS5lbmFibGVkID8gKHQsIGUpID0+IGdsb2JhbFRoaXMuRm9udEluc3BlY3Rvci5mb250QWRkZWQodCwgZSkgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgYSA9IG5ldyBfZm9udF9sb2FkZXIuRm9udEZhY2VPYmplY3Qociwge1xuICAgICAgICAgICAgICAgICAgICBpc0V2YWxTdXBwb3J0ZWQ6IGUuaXNFdmFsU3VwcG9ydGVkLFxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlRm9udEZhY2U6IGUuZGlzYWJsZUZvbnRGYWNlLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVFcnJvcnM6IGUuaWdub3JlRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICBpbnNwZWN0Rm9udDogc1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb250TG9hZGVyLmJpbmQoYSkuY2F0Y2goZSA9PiB0LnNlbmRXaXRoUHJvbWlzZShcIkZvbnRGYWxsYmFja1wiLCB7XG4gICAgICAgICAgICAgICAgICBpZDogblxuICAgICAgICAgICAgICAgIH0pKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICFlLmZvbnRFeHRyYVByb3BlcnRpZXMgJiYgYS5kYXRhICYmIChhLmRhdGEgPSBudWxsKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uT2Jqcy5yZXNvbHZlKG4sIGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiRm9udFBhdGhcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIkltYWdlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJQYXR0ZXJuXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLnJlc29sdmUobiwgcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR290IHVua25vd24gY29tbW9uIG9iamVjdCB0eXBlIFwiLmNvbmNhdChpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcIm9ialwiLCB0ID0+IHtcbiAgICAgICAgICAgIGxldCBbZSwgbiwgaSwgcl0gPSB0O1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBzID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9oKS5nZXQobik7XG4gICAgICAgICAgICBpZiAoIXMub2Jqcy5oYXMoZSkpIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgICBjYXNlIFwiSW1hZ2VcIjpcbiAgICAgICAgICAgICAgICBzLm9ianMucmVzb2x2ZShlLCByKTtcbiAgICAgICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgICAgdmFyIF9yJGRhdGE7XG4gICAgICAgICAgICAgICAgICBsZXQgdDtcbiAgICAgICAgICAgICAgICAgIGlmIChyLmJpdG1hcCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBuXG4gICAgICAgICAgICAgICAgICAgIH0gPSByO1xuICAgICAgICAgICAgICAgICAgICB0ID0gZSAqIG4gKiA0O1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHQgPSAoKF9yJGRhdGEgPSByLmRhdGEpID09PSBudWxsIHx8IF9yJGRhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9yJGRhdGEubGVuZ3RoKSB8fCAwO1xuICAgICAgICAgICAgICAgICAgdCA+IF91dGlsLk1BWF9JTUFHRV9TSVpFX1RPX0NBQ0hFICYmIChzLl9tYXliZUNsZWFudXBBZnRlclJlbmRlciA9ICEwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJQYXR0ZXJuXCI6XG4gICAgICAgICAgICAgICAgcy5vYmpzLnJlc29sdmUoZSwgcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR290IHVua25vd24gb2JqZWN0IHR5cGUgXCIuY29uY2F0KGkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0Lm9uKFwiRG9jUHJvZ3Jlc3NcIiwgdCA9PiB7XG4gICAgICAgICAgICB2YXIgX2Ukb25Qcm9ncmVzczQ7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3llZCB8fCAoKF9lJG9uUHJvZ3Jlc3M0ID0gZS5vblByb2dyZXNzKSA9PT0gbnVsbCB8fCBfZSRvblByb2dyZXNzNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Ukb25Qcm9ncmVzczQuY2FsbChlLCB7XG4gICAgICAgICAgICAgIGxvYWRlZDogdC5sb2FkZWQsXG4gICAgICAgICAgICAgIHRvdGFsOiB0LnRvdGFsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcIkZldGNoQnVpbHRJbkNNYXBcIiwgdCA9PiB0aGlzLmRlc3Ryb3llZCA/IFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIldvcmtlciB3YXMgZGVzdHJveWVkLlwiKSkgOiB0aGlzLmNNYXBSZWFkZXJGYWN0b3J5ID8gdGhpcy5jTWFwUmVhZGVyRmFjdG9yeS5mZXRjaCh0KSA6IFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkNNYXBSZWFkZXJGYWN0b3J5IG5vdCBpbml0aWFsaXplZCwgc2VlIHRoZSBgdXNlV29ya2VyRmV0Y2hgIHBhcmFtZXRlci5cIikpKTtcbiAgICAgICAgICB0Lm9uKFwiRmV0Y2hTdGFuZGFyZEZvbnREYXRhXCIsIHQgPT4gdGhpcy5kZXN0cm95ZWQgPyBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJXb3JrZXIgd2FzIGRlc3Ryb3llZC5cIikpIDogdGhpcy5zdGFuZGFyZEZvbnREYXRhRmFjdG9yeSA/IHRoaXMuc3RhbmRhcmRGb250RGF0YUZhY3RvcnkuZmV0Y2godCkgOiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQsIHNlZSB0aGUgYHVzZVdvcmtlckZldGNoYCBwYXJhbWV0ZXIuXCIpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RGF0YSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXREYXRhXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHNhdmVEb2N1bWVudCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX2Z1bGxSZWFkZXIkZmlsLCBfdGhpcyRfZnVsbFJlYWRlcjtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25TdG9yYWdlLnNpemUgPD0gMCAmJiAoMCwgX3V0aWwud2FybikoXCJzYXZlRG9jdW1lbnQgY2FsbGVkIHdoaWxlIGBhbm5vdGF0aW9uU3RvcmFnZWAgaXMgZW1wdHksIHBsZWFzZSB1c2UgdGhlIGdldERhdGEtbWV0aG9kIGluc3RlYWQuXCIpO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG1hcDogdCxcbiAgICAgICAgICAgIHRyYW5zZmVyczogZVxuICAgICAgICAgIH0gPSB0aGlzLmFubm90YXRpb25TdG9yYWdlLnNlcmlhbGl6YWJsZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJTYXZlRG9jdW1lbnRcIiwge1xuICAgICAgICAgICAgaXNQdXJlWGZhOiAhIXRoaXMuX2h0bWxGb3JYZmEsXG4gICAgICAgICAgICBudW1QYWdlczogdGhpcy5fbnVtUGFnZXMsXG4gICAgICAgICAgICBhbm5vdGF0aW9uU3RvcmFnZTogdCxcbiAgICAgICAgICAgIGZpbGVuYW1lOiAoX3RoaXMkX2Z1bGxSZWFkZXIkZmlsID0gKF90aGlzJF9mdWxsUmVhZGVyID0gdGhpcy5fZnVsbFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZWFkZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVhZGVyLmZpbGVuYW1lKSAhPT0gbnVsbCAmJiBfdGhpcyRfZnVsbFJlYWRlciRmaWwgIT09IHZvaWQgMCA/IF90aGlzJF9mdWxsUmVhZGVyJGZpbCA6IG51bGxcbiAgICAgICAgICB9LCBlKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYW5ub3RhdGlvblN0b3JhZ2UucmVzZXRNb2RpZmllZCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhZ2UodCkge1xuICAgICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcih0KSB8fCB0IDw9IDAgfHwgdCA+IHRoaXMuX251bVBhZ2VzKSByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBwYWdlIHJlcXVlc3QuXCIpKTtcbiAgICAgICAgICBjb25zdCBlID0gdCAtIDEsXG4gICAgICAgICAgICBuID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kKS5nZXQoZSk7XG4gICAgICAgICAgaWYgKG4pIHJldHVybiBuO1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIkdldFBhZ2VcIiwge1xuICAgICAgICAgICAgcGFnZUluZGV4OiBlXG4gICAgICAgICAgfSkudGhlbih0ID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgdGhyb3cgbmV3IEVycm9yKFwiVHJhbnNwb3J0IGRlc3Ryb3llZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBuZXcgUERGUGFnZVByb3h5KGUsIHQsIHRoaXMsIHRoaXMuX3BhcmFtcy5wZGZCdWcpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9oKS5zZXQoZSwgbik7XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2QpLnNldChlLCBpKTtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICBnZXRQYWdlSW5kZXgodCkge1xuICAgICAgICAgIHJldHVybiBcIm9iamVjdFwiICE9IHR5cGVvZiB0IHx8IG51bGwgPT09IHQgfHwgIU51bWJlci5pc0ludGVnZXIodC5udW0pIHx8IHQubnVtIDwgMCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0LmdlbikgfHwgdC5nZW4gPCAwID8gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBwYWdlSW5kZXggcmVxdWVzdC5cIikpIDogdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRQYWdlSW5kZXhcIiwge1xuICAgICAgICAgICAgbnVtOiB0Lm51bSxcbiAgICAgICAgICAgIGdlbjogdC5nZW5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBnZXRBbm5vdGF0aW9ucyh0LCBlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0QW5ub3RhdGlvbnNcIiwge1xuICAgICAgICAgICAgcGFnZUluZGV4OiB0LFxuICAgICAgICAgICAgaW50ZW50OiBlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RmllbGRPYmplY3RzKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9wLCBfcDIpLmNhbGwodGhpcywgXCJHZXRGaWVsZE9iamVjdHNcIik7XG4gICAgICAgIH1cbiAgICAgICAgaGFzSlNBY3Rpb25zKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9wLCBfcDIpLmNhbGwodGhpcywgXCJIYXNKU0FjdGlvbnNcIik7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0Q2FsY3VsYXRpb25PcmRlcklkcygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGdldERlc3RpbmF0aW9ucygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXREZXN0aW5hdGlvbnNcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RGVzdGluYXRpb24odCkge1xuICAgICAgICAgIHJldHVybiBcInN0cmluZ1wiICE9IHR5cGVvZiB0ID8gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBkZXN0aW5hdGlvbiByZXF1ZXN0LlwiKSkgOiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIkdldERlc3RpbmF0aW9uXCIsIHtcbiAgICAgICAgICAgIGlkOiB0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGFnZUxhYmVscygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRQYWdlTGFiZWxzXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhZ2VMYXlvdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0UGFnZUxheW91dFwiLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRQYWdlTW9kZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRQYWdlTW9kZVwiLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRWaWV3ZXJQcmVmZXJlbmNlcygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRWaWV3ZXJQcmVmZXJlbmNlc1wiLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRPcGVuQWN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIkdldE9wZW5BY3Rpb25cIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0QXR0YWNobWVudHMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0QXR0YWNobWVudHNcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0SmF2YVNjcmlwdCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRKYXZhU2NyaXB0XCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGdldERvY0pTQWN0aW9ucygpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXREb2NKU0FjdGlvbnNcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGFnZUpTQWN0aW9ucyh0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0UGFnZUpTQWN0aW9uc1wiLCB7XG4gICAgICAgICAgICBwYWdlSW5kZXg6IHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBnZXRTdHJ1Y3RUcmVlKHQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UoXCJHZXRTdHJ1Y3RUcmVlXCIsIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogdFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldE91dGxpbmUoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0T3V0bGluZVwiLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRPcHRpb25hbENvbnRlbnRDb25maWcoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnXCIsIG51bGwpLnRoZW4odCA9PiBuZXcgX29wdGlvbmFsX2NvbnRlbnRfY29uZmlnLk9wdGlvbmFsQ29udGVudENvbmZpZyh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGVybWlzc2lvbnMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKFwiR2V0UGVybWlzc2lvbnNcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0TWV0YWRhdGEoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IFwiR2V0TWV0YWRhdGFcIixcbiAgICAgICAgICAgIGUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2MpLmdldCh0KTtcbiAgICAgICAgICBpZiAoZSkgcmV0dXJuIGU7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMubWVzc2FnZUhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKHQsIG51bGwpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkX2Z1bGxSZWFkZXIkZmlsMiwgX3RoaXMkX2Z1bGxSZWFkZXIyLCBfdGhpcyRfZnVsbFJlYWRlciRjb24sIF90aGlzJF9mdWxsUmVhZGVyMztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGluZm86IHRbMF0sXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiB0WzFdID8gbmV3IF9tZXRhZGF0YS5NZXRhZGF0YSh0WzFdKSA6IG51bGwsXG4gICAgICAgICAgICAgIGNvbnRlbnREaXNwb3NpdGlvbkZpbGVuYW1lOiAoX3RoaXMkX2Z1bGxSZWFkZXIkZmlsMiA9IChfdGhpcyRfZnVsbFJlYWRlcjIgPSB0aGlzLl9mdWxsUmVhZGVyKSA9PT0gbnVsbCB8fCBfdGhpcyRfZnVsbFJlYWRlcjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVhZGVyMi5maWxlbmFtZSkgIT09IG51bGwgJiYgX3RoaXMkX2Z1bGxSZWFkZXIkZmlsMiAhPT0gdm9pZCAwID8gX3RoaXMkX2Z1bGxSZWFkZXIkZmlsMiA6IG51bGwsXG4gICAgICAgICAgICAgIGNvbnRlbnRMZW5ndGg6IChfdGhpcyRfZnVsbFJlYWRlciRjb24gPSAoX3RoaXMkX2Z1bGxSZWFkZXIzID0gdGhpcy5fZnVsbFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZWFkZXIzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfZnVsbFJlYWRlcjMuY29udGVudExlbmd0aCkgIT09IG51bGwgJiYgX3RoaXMkX2Z1bGxSZWFkZXIkY29uICE9PSB2b2lkIDAgPyBfdGhpcyRfZnVsbFJlYWRlciRjb24gOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYykuc2V0KHQsIG4pO1xuICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICB9XG4gICAgICAgIGdldE1hcmtJbmZvKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIkdldE1hcmtJbmZvXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIHN0YXJ0Q2xlYW51cCgpIHtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdICYmIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICBpZiAoIXRoaXMuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNlbmRXaXRoUHJvbWlzZShcIkNsZWFudXBcIiwgbnVsbCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9oKS52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICBpZiAoIXQuY2xlYW51cCgpKSB0aHJvdyBuZXcgRXJyb3IoXCJzdGFydENsZWFudXA6IFBhZ2UgXCIuY29uY2F0KHQucGFnZU51bWJlciwgXCIgaXMgY3VycmVudGx5IHJlbmRlcmluZy5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21tb25PYmpzLmNsZWFyKCk7XG4gICAgICAgICAgICB0IHx8IHRoaXMuZm9udExvYWRlci5jbGVhcigpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jKS5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJGYWN0b3J5LmRlc3Ryb3koITApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgbG9hZGluZ1BhcmFtcygpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBkaXNhYmxlQXV0b0ZldGNoOiB0LFxuICAgICAgICAgICAgZW5hYmxlWGZhOiBlXG4gICAgICAgICAgfSA9IHRoaXMuX3BhcmFtcztcbiAgICAgICAgICByZXR1cm4gKDAsIF91dGlsLnNoYWRvdykodGhpcywgXCJsb2FkaW5nUGFyYW1zXCIsIHtcbiAgICAgICAgICAgIGRpc2FibGVBdXRvRmV0Y2g6IHQsXG4gICAgICAgICAgICBlbmFibGVYZmE6IGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3AyKHQpIHtcbiAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG4gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2MpLmdldCh0KTtcbiAgICAgICAgaWYgKG4pIHJldHVybiBuO1xuICAgICAgICBjb25zdCBpID0gdGhpcy5tZXNzYWdlSGFuZGxlci5zZW5kV2l0aFByb21pc2UodCwgZSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYykuc2V0KHQsIGkpO1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICAgIHZhciBfZiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9nID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBQREZPYmplY3RzIHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9nKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldCh0KSB7XG4gICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9nLCBfZzIpLmNhbGwodGhpcywgdCk7XG4gICAgICAgICAgICBuLmNhcGFiaWxpdHkucHJvbWlzZS50aGVuKCgpID0+IGUobi5kYXRhKSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZilbdF07XG4gICAgICAgICAgaWYgKCEobiAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgJiYgbi5jYXBhYmlsaXR5LnNldHRsZWQpKSB0aHJvdyBuZXcgRXJyb3IoXCJSZXF1ZXN0aW5nIG9iamVjdCB0aGF0IGlzbid0IHJlc29sdmVkIHlldCBcIi5jb25jYXQodCwgXCIuXCIpKTtcbiAgICAgICAgICByZXR1cm4gbi5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIGhhcyh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZilbdF07XG4gICAgICAgICAgcmV0dXJuIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuY2FwYWJpbGl0eS5zZXR0bGVkKSB8fCAhMTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHQpIHtcbiAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICBjb25zdCBuID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfZywgX2cyKS5jYWxsKHRoaXMsIHQpO1xuICAgICAgICAgIG4uZGF0YSA9IGU7XG4gICAgICAgICAgbi5jYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjbGVhcigpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mKSkge1xuICAgICAgICAgICAgdmFyIF9lJGJpdG1hcDtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgZGF0YTogZVxuICAgICAgICAgICAgfSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZilbdF07XG4gICAgICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCB8fCAoX2UkYml0bWFwID0gZS5iaXRtYXApID09PSBudWxsIHx8IF9lJGJpdG1hcCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UkYml0bWFwLmNsb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfZiwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9nMih0KSB7XG4gICAgICAgIGNvbnN0IGUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2YpW3RdO1xuICAgICAgICByZXR1cm4gZSB8fCAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mKVt0XSA9IHtcbiAgICAgICAgICBjYXBhYmlsaXR5OiBuZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHkoKSxcbiAgICAgICAgICBkYXRhOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdmFyIF9tID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICBjbGFzcyBSZW5kZXJUYXNrIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9tLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9tLCB0KTtcbiAgICAgICAgICB0aGlzLm9uQ29udGludWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdldCBwcm9taXNlKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX20pLmNhcGFiaWxpdHkucHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwoKSB7XG4gICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IDA7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9tKS5jYW5jZWwobnVsbCwgdCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHNlcGFyYXRlQW5ub3RzKCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNlcGFyYXRlQW5ub3RzOiB0XG4gICAgICAgICAgfSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbSkub3BlcmF0b3JMaXN0O1xuICAgICAgICAgIGlmICghdCkgcmV0dXJuICExO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGFubm90YXRpb25DYW52YXNNYXA6IGVcbiAgICAgICAgICB9ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9tKTtcbiAgICAgICAgICByZXR1cm4gdC5mb3JtIHx8IHQuY2FudmFzICYmIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuc2l6ZSkgPiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBleHBvcnRzLlJlbmRlclRhc2sgPSBSZW5kZXJUYXNrO1xuICAgICAgY2xhc3MgSW50ZXJuYWxSZW5kZXJUYXNrIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBjYWxsYmFjazogZSxcbiAgICAgICAgICAgIHBhcmFtczogbixcbiAgICAgICAgICAgIG9ianM6IGksXG4gICAgICAgICAgICBjb21tb25PYmpzOiByLFxuICAgICAgICAgICAgYW5ub3RhdGlvbkNhbnZhc01hcDogcyxcbiAgICAgICAgICAgIG9wZXJhdG9yTGlzdDogYSxcbiAgICAgICAgICAgIHBhZ2VJbmRleDogbyxcbiAgICAgICAgICAgIGNhbnZhc0ZhY3Rvcnk6IGwsXG4gICAgICAgICAgICBmaWx0ZXJGYWN0b3J5OiBjLFxuICAgICAgICAgICAgdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBoID0gITEsXG4gICAgICAgICAgICBwZGZCdWc6IGQgPSAhMSxcbiAgICAgICAgICAgIHBhZ2VDb2xvcnM6IHUgPSBudWxsXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgdGhpcy5jYWxsYmFjayA9IGU7XG4gICAgICAgICAgdGhpcy5wYXJhbXMgPSBuO1xuICAgICAgICAgIHRoaXMub2JqcyA9IGk7XG4gICAgICAgICAgdGhpcy5jb21tb25PYmpzID0gcjtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25DYW52YXNNYXAgPSBzO1xuICAgICAgICAgIHRoaXMub3BlcmF0b3JMaXN0SWR4ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yTGlzdCA9IGE7XG4gICAgICAgICAgdGhpcy5fcGFnZUluZGV4ID0gbztcbiAgICAgICAgICB0aGlzLmNhbnZhc0ZhY3RvcnkgPSBsO1xuICAgICAgICAgIHRoaXMuZmlsdGVyRmFjdG9yeSA9IGM7XG4gICAgICAgICAgdGhpcy5fcGRmQnVnID0gZDtcbiAgICAgICAgICB0aGlzLnBhZ2VDb2xvcnMgPSB1O1xuICAgICAgICAgIHRoaXMucnVubmluZyA9ICExO1xuICAgICAgICAgIHRoaXMuZ3JhcGhpY3NSZWFkeUNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmdyYXBoaWNzUmVhZHkgPSAhMTtcbiAgICAgICAgICB0aGlzLl91c2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSAhMCA9PT0gaCAmJiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiB3aW5kb3c7XG4gICAgICAgICAgdGhpcy5jYW5jZWxsZWQgPSAhMTtcbiAgICAgICAgICB0aGlzLmNhcGFiaWxpdHkgPSBuZXcgX3V0aWwuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLnRhc2sgPSBuZXcgUmVuZGVyVGFzayh0aGlzKTtcbiAgICAgICAgICB0aGlzLl9jYW5jZWxCb3VuZCA9IHRoaXMuY2FuY2VsLmJpbmQodGhpcyk7XG4gICAgICAgICAgdGhpcy5fY29udGludWVCb3VuZCA9IHRoaXMuX2NvbnRpbnVlLmJpbmQodGhpcyk7XG4gICAgICAgICAgdGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQgPSB0aGlzLl9zY2hlZHVsZU5leHQuYmluZCh0aGlzKTtcbiAgICAgICAgICB0aGlzLl9uZXh0Qm91bmQgPSB0aGlzLl9uZXh0LmJpbmQodGhpcyk7XG4gICAgICAgICAgdGhpcy5fY2FudmFzID0gbi5jYW52YXNDb250ZXh0LmNhbnZhcztcbiAgICAgICAgfVxuICAgICAgICBnZXQgY29tcGxldGVkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdHkucHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5pdGlhbGl6ZUdyYXBoaWNzKHQpIHtcbiAgICAgICAgICB2YXIgX2dsb2JhbFRoaXMkU3RlcHBlck1hLCBfdGhpcyRncmFwaGljc1JlYWR5Q2E7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHRyYW5zcGFyZW5jeTogZSA9ICExLFxuICAgICAgICAgICAgb3B0aW9uYWxDb250ZW50Q29uZmlnOiBuXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgaWYgKHRoaXMuY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgaWYgKHRoaXMuX2NhbnZhcykge1xuICAgICAgICAgICAgaWYgKF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoSW50ZXJuYWxSZW5kZXJUYXNrLCBJbnRlcm5hbFJlbmRlclRhc2ssIF9iKS5oYXModGhpcy5fY2FudmFzKSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSB0aGUgc2FtZSBjYW52YXMgZHVyaW5nIG11bHRpcGxlIHJlbmRlcigpIG9wZXJhdGlvbnMuIFVzZSBkaWZmZXJlbnQgY2FudmFzIG9yIGVuc3VyZSBwcmV2aW91cyBvcGVyYXRpb25zIHdlcmUgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZC5cIik7XG4gICAgICAgICAgICBfY2xhc3NTdGF0aWNQcml2YXRlRmllbGRTcGVjR2V0KEludGVybmFsUmVuZGVyVGFzaywgSW50ZXJuYWxSZW5kZXJUYXNrLCBfYikuYWRkKHRoaXMuX2NhbnZhcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl9wZGZCdWcgJiYgKF9nbG9iYWxUaGlzJFN0ZXBwZXJNYSA9IGdsb2JhbFRoaXMuU3RlcHBlck1hbmFnZXIpICE9PSBudWxsICYmIF9nbG9iYWxUaGlzJFN0ZXBwZXJNYSAhPT0gdm9pZCAwICYmIF9nbG9iYWxUaGlzJFN0ZXBwZXJNYS5lbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBwZXIgPSBnbG9iYWxUaGlzLlN0ZXBwZXJNYW5hZ2VyLmNyZWF0ZSh0aGlzLl9wYWdlSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyLmluaXQodGhpcy5vcGVyYXRvckxpc3QpO1xuICAgICAgICAgICAgdGhpcy5zdGVwcGVyLm5leHRCcmVha1BvaW50ID0gdGhpcy5zdGVwcGVyLmdldE5leHRCcmVha1BvaW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGksXG4gICAgICAgICAgICB2aWV3cG9ydDogcixcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGFcbiAgICAgICAgICB9ID0gdGhpcy5wYXJhbXM7XG4gICAgICAgICAgdGhpcy5nZnggPSBuZXcgX2NhbnZhcy5DYW52YXNHcmFwaGljcyhpLCB0aGlzLmNvbW1vbk9ianMsIHRoaXMub2JqcywgdGhpcy5jYW52YXNGYWN0b3J5LCB0aGlzLmZpbHRlckZhY3RvcnksIHtcbiAgICAgICAgICAgIG9wdGlvbmFsQ29udGVudENvbmZpZzogblxuICAgICAgICAgIH0sIHRoaXMuYW5ub3RhdGlvbkNhbnZhc01hcCwgdGhpcy5wYWdlQ29sb3JzKTtcbiAgICAgICAgICB0aGlzLmdmeC5iZWdpbkRyYXdpbmcoe1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzLFxuICAgICAgICAgICAgdmlld3BvcnQ6IHIsXG4gICAgICAgICAgICB0cmFuc3BhcmVuY3k6IGUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBhXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5vcGVyYXRvckxpc3RJZHggPSAwO1xuICAgICAgICAgIHRoaXMuZ3JhcGhpY3NSZWFkeSA9ICEwO1xuICAgICAgICAgIChfdGhpcyRncmFwaGljc1JlYWR5Q2EgPSB0aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjaykgPT09IG51bGwgfHwgX3RoaXMkZ3JhcGhpY3NSZWFkeUNhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRncmFwaGljc1JlYWR5Q2EuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJGdmeDtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogbnVsbCxcbiAgICAgICAgICAgIGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nID0gITE7XG4gICAgICAgICAgdGhpcy5jYW5jZWxsZWQgPSAhMDtcbiAgICAgICAgICAoX3RoaXMkZ2Z4ID0gdGhpcy5nZngpID09PSBudWxsIHx8IF90aGlzJGdmeCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZ2Z4LmVuZERyYXdpbmcoKTtcbiAgICAgICAgICB0aGlzLl9jYW52YXMgJiYgX2NsYXNzU3RhdGljUHJpdmF0ZUZpZWxkU3BlY0dldChJbnRlcm5hbFJlbmRlclRhc2ssIEludGVybmFsUmVuZGVyVGFzaywgX2IpLmRlbGV0ZSh0aGlzLl9jYW52YXMpO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2sodCB8fCBuZXcgX2Rpc3BsYXlfdXRpbHMuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uKFwiUmVuZGVyaW5nIGNhbmNlbGxlZCwgcGFnZSBcIi5jb25jYXQodGhpcy5fcGFnZUluZGV4ICsgMSksIGUpKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVyYXRvckxpc3RDaGFuZ2VkKCkge1xuICAgICAgICAgIGlmICh0aGlzLmdyYXBoaWNzUmVhZHkpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyRzdGVwcGVyO1xuICAgICAgICAgICAgKF90aGlzJHN0ZXBwZXIgPSB0aGlzLnN0ZXBwZXIpID09PSBudWxsIHx8IF90aGlzJHN0ZXBwZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHN0ZXBwZXIudXBkYXRlT3BlcmF0b3JMaXN0KHRoaXMub3BlcmF0b3JMaXN0KTtcbiAgICAgICAgICAgIHRoaXMucnVubmluZyB8fCB0aGlzLl9jb250aW51ZSgpO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLmdyYXBoaWNzUmVhZHlDYWxsYmFjayB8fCAodGhpcy5ncmFwaGljc1JlYWR5Q2FsbGJhY2sgPSB0aGlzLl9jb250aW51ZUJvdW5kKTtcbiAgICAgICAgfVxuICAgICAgICBfY29udGludWUoKSB7XG4gICAgICAgICAgdGhpcy5ydW5uaW5nID0gITA7XG4gICAgICAgICAgdGhpcy5jYW5jZWxsZWQgfHwgKHRoaXMudGFzay5vbkNvbnRpbnVlID8gdGhpcy50YXNrLm9uQ29udGludWUodGhpcy5fc2NoZWR1bGVOZXh0Qm91bmQpIDogdGhpcy5fc2NoZWR1bGVOZXh0KCkpO1xuICAgICAgICB9XG4gICAgICAgIF9zY2hlZHVsZU5leHQoKSB7XG4gICAgICAgICAgdGhpcy5fdXNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lID8gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uZXh0Qm91bmQoKS5jYXRjaCh0aGlzLl9jYW5jZWxCb3VuZCk7XG4gICAgICAgICAgfSkgOiBQcm9taXNlLnJlc29sdmUoKS50aGVuKHRoaXMuX25leHRCb3VuZCkuY2F0Y2godGhpcy5fY2FuY2VsQm91bmQpO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIF9uZXh0KCkge1xuICAgICAgICAgIGlmICghdGhpcy5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JMaXN0SWR4ID0gdGhpcy5nZnguZXhlY3V0ZU9wZXJhdG9yTGlzdCh0aGlzLm9wZXJhdG9yTGlzdCwgdGhpcy5vcGVyYXRvckxpc3RJZHgsIHRoaXMuX2NvbnRpbnVlQm91bmQsIHRoaXMuc3RlcHBlcik7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVyYXRvckxpc3RJZHggPT09IHRoaXMub3BlcmF0b3JMaXN0LmFyZ3NBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5ydW5uaW5nID0gITE7XG4gICAgICAgICAgICAgIGlmICh0aGlzLm9wZXJhdG9yTGlzdC5sYXN0Q2h1bmspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdmeC5lbmREcmF3aW5nKHRoaXMucGFnZUNvbG9ycyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FudmFzICYmIF9jbGFzc1N0YXRpY1ByaXZhdGVGaWVsZFNwZWNHZXQoSW50ZXJuYWxSZW5kZXJUYXNrLCBJbnRlcm5hbFJlbmRlclRhc2ssIF9iKS5kZWxldGUodGhpcy5fY2FudmFzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBfYiA9IHtcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBuZXcgV2Vha1NldCgpXG4gICAgICB9O1xuICAgICAgY29uc3QgdmVyc2lvbiA9IFwiMy45LjE3OVwiO1xuICAgICAgZXhwb3J0cy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgIGNvbnN0IGJ1aWxkID0gXCIxZWY2ZmJjNTJcIjtcbiAgICAgIGV4cG9ydHMuYnVpbGQgPSBidWlsZDtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbigxMjYpO1xuICAgICAgaSh7XG4gICAgICAgIHRhcmdldDogXCJTZXRcIixcbiAgICAgICAgcHJvdG86ICEwLFxuICAgICAgICByZWFsOiAhMCxcbiAgICAgICAgZm9yY2VkOiAhbigxMzQpKFwiZGlmZmVyZW5jZVwiKVxuICAgICAgfSwge1xuICAgICAgICBkaWZmZXJlbmNlOiByXG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigxMjcpLFxuICAgICAgICByID0gbigxMjgpLFxuICAgICAgICBzID0gbigxMjkpLFxuICAgICAgICBhID0gbigxMzIpLFxuICAgICAgICBvID0gbigxMzMpLFxuICAgICAgICBsID0gbigxMzApLFxuICAgICAgICBjID0gbigxMzEpLFxuICAgICAgICBoID0gci5oYXMsXG4gICAgICAgIGQgPSByLnJlbW92ZTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpZmZlcmVuY2UodCkge1xuICAgICAgICB2YXIgZSA9IGkodGhpcyksXG4gICAgICAgICAgbiA9IG8odCksXG4gICAgICAgICAgciA9IHMoZSk7XG4gICAgICAgIGEoZSkgPD0gbi5zaXplID8gbChlLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIG4uaW5jbHVkZXModCkgJiYgZChyLCB0KTtcbiAgICAgICAgfSkgOiBjKG4uZ2V0SXRlcmF0b3IoKSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBoKGUsIHQpICYmIGQociwgdCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxMjgpLmhhcztcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIGkodCk7XG4gICAgICAgIHJldHVybiB0O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE0KSxcbiAgICAgICAgciA9IFNldC5wcm90b3R5cGU7XG4gICAgICB0LmV4cG9ydHMgPSB7XG4gICAgICAgIFNldDogU2V0LFxuICAgICAgICBhZGQ6IGkoci5hZGQpLFxuICAgICAgICBoYXM6IGkoci5oYXMpLFxuICAgICAgICByZW1vdmU6IGkoci5kZWxldGUpLFxuICAgICAgICBwcm90bzogclxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDEyOCksXG4gICAgICAgIHIgPSBuKDEzMCksXG4gICAgICAgIHMgPSBpLlNldCxcbiAgICAgICAgYSA9IGkuYWRkO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdmFyIGUgPSBuZXcgcygpO1xuICAgICAgICByKHQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgYShlLCB0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDE0KSxcbiAgICAgICAgciA9IG4oMTMxKSxcbiAgICAgICAgcyA9IG4oMTI4KSxcbiAgICAgICAgYSA9IHMuU2V0LFxuICAgICAgICBvID0gcy5wcm90byxcbiAgICAgICAgbCA9IGkoby5mb3JFYWNoKSxcbiAgICAgICAgYyA9IGkoby5rZXlzKSxcbiAgICAgICAgaCA9IGMobmV3IGEoKSkubmV4dDtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCBuKSB7XG4gICAgICAgIHJldHVybiBuID8gcihjKHQpLCBlLCBoKSA6IGwodCwgZSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oOCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICBmb3IgKHZhciByLCBzLCBhID0gbiB8fCB0Lm5leHQ7ICEociA9IGkoYSwgdCkpLmRvbmU7KSBpZiAodm9pZCAwICE9PSAocyA9IGUoci52YWx1ZSkpKSByZXR1cm4gcztcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig3MiksXG4gICAgICAgIHIgPSBuKDEyOCk7XG4gICAgICB0LmV4cG9ydHMgPSBpKHIucHJvdG8sIFwic2l6ZVwiLCBcImdldFwiKSB8fCBmdW5jdGlvbiAodCkge1xuICAgICAgICByZXR1cm4gdC5zaXplO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMxKSxcbiAgICAgICAgciA9IG4oNDcpLFxuICAgICAgICBzID0gbig4KSxcbiAgICAgICAgYSA9IG4oNjIpLFxuICAgICAgICBvID0gVHlwZUVycm9yLFxuICAgICAgICBsID0gTWF0aC5tYXgsXG4gICAgICAgIFNldFJlY29yZCA9IGZ1bmN0aW9uIFNldFJlY29yZCh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgdGhpcy5zZXQgPSB0O1xuICAgICAgICAgIHRoaXMuc2l6ZSA9IGU7XG4gICAgICAgICAgdGhpcy5oYXMgPSBuO1xuICAgICAgICAgIHRoaXMua2V5cyA9IGk7XG4gICAgICAgIH07XG4gICAgICBTZXRSZWNvcmQucHJvdG90eXBlID0ge1xuICAgICAgICBnZXRJdGVyYXRvcjogZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKSB7XG4gICAgICAgICAgcmV0dXJuIHIocyh0aGlzLmtleXMsIHRoaXMuc2V0KSk7XG4gICAgICAgIH0sXG4gICAgICAgIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyh0KSB7XG4gICAgICAgICAgcmV0dXJuIHModGhpcy5oYXMsIHRoaXMuc2V0LCB0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHIodCk7XG4gICAgICAgIHZhciBlID0gK3Quc2l6ZTtcbiAgICAgICAgaWYgKGUgIT0gZSkgdGhyb3cgbyhcIkludmFsaWQgc2l6ZVwiKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXRSZWNvcmQodCwgbChhKGUpLCAwKSwgaSh0LmhhcyksIGkodC5rZXlzKSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMjQpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBuZXcgKGkoXCJTZXRcIikpKClbdF0oe1xuICAgICAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgICAgIGhhczogZnVuY3Rpb24gaGFzKCkge1xuICAgICAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAga2V5czogZnVuY3Rpb24ga2V5cygpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZTogITBcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbig3KSxcbiAgICAgICAgcyA9IG4oMTM2KTtcbiAgICAgIGkoe1xuICAgICAgICB0YXJnZXQ6IFwiU2V0XCIsXG4gICAgICAgIHByb3RvOiAhMCxcbiAgICAgICAgcmVhbDogITAsXG4gICAgICAgIGZvcmNlZDogIW4oMTM0KShcImludGVyc2VjdGlvblwiKSB8fCByKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gXCIzLDJcIiAhPSBBcnJheS5mcm9tKG5ldyBTZXQoWzEsIDIsIDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywgMl0pKSk7XG4gICAgICAgIH0pXG4gICAgICB9LCB7XG4gICAgICAgIGludGVyc2VjdGlvbjogc1xuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oMTI3KSxcbiAgICAgICAgciA9IG4oMTI4KSxcbiAgICAgICAgcyA9IG4oMTMyKSxcbiAgICAgICAgYSA9IG4oMTMzKSxcbiAgICAgICAgbyA9IG4oMTMwKSxcbiAgICAgICAgbCA9IG4oMTMxKSxcbiAgICAgICAgYyA9IHIuU2V0LFxuICAgICAgICBoID0gci5hZGQsXG4gICAgICAgIGQgPSByLmhhcztcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uIGludGVyc2VjdGlvbih0KSB7XG4gICAgICAgIHZhciBlID0gaSh0aGlzKSxcbiAgICAgICAgICBuID0gYSh0KSxcbiAgICAgICAgICByID0gbmV3IGMoKTtcbiAgICAgICAgcyhlKSA+IG4uc2l6ZSA/IGwobi5nZXRJdGVyYXRvcigpLCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgIGQoZSwgdCkgJiYgaChyLCB0KTtcbiAgICAgICAgfSkgOiBvKGUsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgbi5pbmNsdWRlcyh0KSAmJiBoKHIsIHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMyksXG4gICAgICAgIHIgPSBuKDEzOCk7XG4gICAgICBpKHtcbiAgICAgICAgdGFyZ2V0OiBcIlNldFwiLFxuICAgICAgICBwcm90bzogITAsXG4gICAgICAgIHJlYWw6ICEwLFxuICAgICAgICBmb3JjZWQ6ICFuKDEzNCkoXCJpc0Rpc2pvaW50RnJvbVwiKVxuICAgICAgfSwge1xuICAgICAgICBpc0Rpc2pvaW50RnJvbTogclxuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oMTI3KSxcbiAgICAgICAgciA9IG4oMTI4KS5oYXMsXG4gICAgICAgIHMgPSBuKDEzMiksXG4gICAgICAgIGEgPSBuKDEzMyksXG4gICAgICAgIG8gPSBuKDEzMCksXG4gICAgICAgIGwgPSBuKDEzMSksXG4gICAgICAgIGMgPSBuKDEzOSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Rpc2pvaW50RnJvbSh0KSB7XG4gICAgICAgIHZhciBlID0gaSh0aGlzKSxcbiAgICAgICAgICBuID0gYSh0KTtcbiAgICAgICAgaWYgKHMoZSkgPD0gbi5zaXplKSByZXR1cm4gITEgIT09IG8oZSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpZiAobi5pbmNsdWRlcyh0KSkgcmV0dXJuICExO1xuICAgICAgICB9LCAhMCk7XG4gICAgICAgIHZhciBoID0gbi5nZXRJdGVyYXRvcigpO1xuICAgICAgICByZXR1cm4gITEgIT09IGwoaCwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpZiAocihlLCB0KSkgcmV0dXJuIGMoaCwgXCJub3JtYWxcIiwgITEpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig4KSxcbiAgICAgICAgciA9IG4oNDcpLFxuICAgICAgICBzID0gbigzMCk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICB2YXIgYSwgbztcbiAgICAgICAgcih0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIShhID0gcyh0LCBcInJldHVyblwiKSkpIHtcbiAgICAgICAgICAgIGlmIChcInRocm93XCIgPT09IGUpIHRocm93IG47XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYSA9IGkoYSwgdCk7XG4gICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICBvID0gITA7XG4gICAgICAgICAgYSA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwidGhyb3dcIiA9PT0gZSkgdGhyb3cgbjtcbiAgICAgICAgaWYgKG8pIHRocm93IGE7XG4gICAgICAgIHIoYSk7XG4gICAgICAgIHJldHVybiBuO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbigxNDEpO1xuICAgICAgaSh7XG4gICAgICAgIHRhcmdldDogXCJTZXRcIixcbiAgICAgICAgcHJvdG86ICEwLFxuICAgICAgICByZWFsOiAhMCxcbiAgICAgICAgZm9yY2VkOiAhbigxMzQpKFwiaXNTdWJzZXRPZlwiKVxuICAgICAgfSwge1xuICAgICAgICBpc1N1YnNldE9mOiByXG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigxMjcpLFxuICAgICAgICByID0gbigxMzIpLFxuICAgICAgICBzID0gbigxMzApLFxuICAgICAgICBhID0gbigxMzMpO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gaXNTdWJzZXRPZih0KSB7XG4gICAgICAgIHZhciBlID0gaSh0aGlzKSxcbiAgICAgICAgICBuID0gYSh0KTtcbiAgICAgICAgcmV0dXJuICEocihlKSA+IG4uc2l6ZSkgJiYgITEgIT09IHMoZSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpZiAoIW4uaW5jbHVkZXModCkpIHJldHVybiAhMTtcbiAgICAgICAgfSwgITApO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbigxNDMpO1xuICAgICAgaSh7XG4gICAgICAgIHRhcmdldDogXCJTZXRcIixcbiAgICAgICAgcHJvdG86ICEwLFxuICAgICAgICByZWFsOiAhMCxcbiAgICAgICAgZm9yY2VkOiAhbigxMzQpKFwiaXNTdXBlcnNldE9mXCIpXG4gICAgICB9LCB7XG4gICAgICAgIGlzU3VwZXJzZXRPZjogclxuICAgICAgfSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgaSA9IG4oMTI3KSxcbiAgICAgICAgciA9IG4oMTI4KS5oYXMsXG4gICAgICAgIHMgPSBuKDEzMiksXG4gICAgICAgIGEgPSBuKDEzMyksXG4gICAgICAgIG8gPSBuKDEzMSksXG4gICAgICAgIGwgPSBuKDEzOSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiBpc1N1cGVyc2V0T2YodCkge1xuICAgICAgICB2YXIgZSA9IGkodGhpcyksXG4gICAgICAgICAgbiA9IGEodCk7XG4gICAgICAgIGlmIChzKGUpIDwgbi5zaXplKSByZXR1cm4gITE7XG4gICAgICAgIHZhciBjID0gbi5nZXRJdGVyYXRvcigpO1xuICAgICAgICByZXR1cm4gITEgIT09IG8oYywgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBpZiAoIXIoZSwgdCkpIHJldHVybiBsKGMsIFwibm9ybWFsXCIsICExKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMyksXG4gICAgICAgIHIgPSBuKDE0NSk7XG4gICAgICBpKHtcbiAgICAgICAgdGFyZ2V0OiBcIlNldFwiLFxuICAgICAgICBwcm90bzogITAsXG4gICAgICAgIHJlYWw6ICEwLFxuICAgICAgICBmb3JjZWQ6ICFuKDEzNCkoXCJzeW1tZXRyaWNEaWZmZXJlbmNlXCIpXG4gICAgICB9LCB7XG4gICAgICAgIHN5bW1ldHJpY0RpZmZlcmVuY2U6IHJcbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDEyNyksXG4gICAgICAgIHIgPSBuKDEyOCksXG4gICAgICAgIHMgPSBuKDEyOSksXG4gICAgICAgIGEgPSBuKDEzMyksXG4gICAgICAgIG8gPSBuKDEzMSksXG4gICAgICAgIGwgPSByLmFkZCxcbiAgICAgICAgYyA9IHIuaGFzLFxuICAgICAgICBoID0gci5yZW1vdmU7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiBzeW1tZXRyaWNEaWZmZXJlbmNlKHQpIHtcbiAgICAgICAgdmFyIGUgPSBpKHRoaXMpLFxuICAgICAgICAgIG4gPSBhKHQpLmdldEl0ZXJhdG9yKCksXG4gICAgICAgICAgciA9IHMoZSk7XG4gICAgICAgIG8obiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBjKGUsIHQpID8gaChyLCB0KSA6IGwociwgdCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigzKSxcbiAgICAgICAgciA9IG4oMTQ3KTtcbiAgICAgIGkoe1xuICAgICAgICB0YXJnZXQ6IFwiU2V0XCIsXG4gICAgICAgIHByb3RvOiAhMCxcbiAgICAgICAgcmVhbDogITAsXG4gICAgICAgIGZvcmNlZDogIW4oMTM0KShcInVuaW9uXCIpXG4gICAgICB9LCB7XG4gICAgICAgIHVuaW9uOiByXG4gICAgICB9KTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigxMjcpLFxuICAgICAgICByID0gbigxMjgpLmFkZCxcbiAgICAgICAgcyA9IG4oMTI5KSxcbiAgICAgICAgYSA9IG4oMTMzKSxcbiAgICAgICAgbyA9IG4oMTMxKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uIHVuaW9uKHQpIHtcbiAgICAgICAgdmFyIGUgPSBpKHRoaXMpLFxuICAgICAgICAgIG4gPSBhKHQpLmdldEl0ZXJhdG9yKCksXG4gICAgICAgICAgbCA9IHMoZSk7XG4gICAgICAgIG8obiwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICByKGwsIHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGw7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbig0KSxcbiAgICAgICAgcyA9IG4oMjQpLFxuICAgICAgICBhID0gbigxMSksXG4gICAgICAgIG8gPSBuKDQ1KS5mLFxuICAgICAgICBsID0gbigzOSksXG4gICAgICAgIGMgPSBuKDE0OSksXG4gICAgICAgIGggPSBuKDc1KSxcbiAgICAgICAgZCA9IG4oNzYpLFxuICAgICAgICB1ID0gbigxNTApLFxuICAgICAgICBwID0gbig4MiksXG4gICAgICAgIGYgPSBuKDYpLFxuICAgICAgICBnID0gbigzNiksXG4gICAgICAgIG0gPSBcIkRPTUV4Y2VwdGlvblwiLFxuICAgICAgICBiID0gcyhcIkVycm9yXCIpLFxuICAgICAgICB2ID0gcyhtKSxcbiAgICAgICAgeSA9IGZ1bmN0aW9uIERPTUV4Y2VwdGlvbigpIHtcbiAgICAgICAgICBjKHRoaXMsIEEpO1xuICAgICAgICAgIHZhciB0ID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGUgPSBkKHQgPCAxID8gdm9pZCAwIDogYXJndW1lbnRzWzBdKSxcbiAgICAgICAgICAgIG4gPSBkKHQgPCAyID8gdm9pZCAwIDogYXJndW1lbnRzWzFdLCBcIkVycm9yXCIpLFxuICAgICAgICAgICAgaSA9IG5ldyB2KGUsIG4pLFxuICAgICAgICAgICAgciA9IGIoZSk7XG4gICAgICAgICAgci5uYW1lID0gbTtcbiAgICAgICAgICBvKGksIFwic3RhY2tcIiwgYSgxLCBwKHIuc3RhY2ssIDEpKSk7XG4gICAgICAgICAgaChpLCB0aGlzLCB5KTtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfSxcbiAgICAgICAgQSA9IHkucHJvdG90eXBlID0gdi5wcm90b3R5cGUsXG4gICAgICAgIF8gPSAoXCJzdGFja1wiIGluIGIobSkpLFxuICAgICAgICBTID0gKFwic3RhY2tcIiBpbiBuZXcgdigxLCAyKSksXG4gICAgICAgIEUgPSB2ICYmIGYgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLCBtKSxcbiAgICAgICAgeCA9ICEoIUUgfHwgRS53cml0YWJsZSAmJiBFLmNvbmZpZ3VyYWJsZSksXG4gICAgICAgIHcgPSBfICYmICF4ICYmICFTO1xuICAgICAgaSh7XG4gICAgICAgIGdsb2JhbDogITAsXG4gICAgICAgIGNvbnN0cnVjdG9yOiAhMCxcbiAgICAgICAgZm9yY2VkOiBnIHx8IHdcbiAgICAgIH0sIHtcbiAgICAgICAgRE9NRXhjZXB0aW9uOiB3ID8geSA6IHZcbiAgICAgIH0pO1xuICAgICAgdmFyIEMgPSBzKG0pLFxuICAgICAgICBUID0gQy5wcm90b3R5cGU7XG4gICAgICBpZiAoVC5jb25zdHJ1Y3RvciAhPT0gQykge1xuICAgICAgICBnIHx8IG8oVCwgXCJjb25zdHJ1Y3RvclwiLCBhKDEsIEMpKTtcbiAgICAgICAgZm9yICh2YXIgUCBpbiB1KSBpZiAobCh1LCBQKSkge1xuICAgICAgICAgIHZhciBrID0gdVtQXSxcbiAgICAgICAgICAgIE0gPSBrLnM7XG4gICAgICAgICAgbChDLCBNKSB8fCBvKEMsIE0sIGEoNiwgay5jKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDI1KSxcbiAgICAgICAgciA9IFR5cGVFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIGlmIChpKGUsIHQpKSByZXR1cm4gdDtcbiAgICAgICAgdGhyb3cgcihcIkluY29ycmVjdCBpbnZvY2F0aW9uXCIpO1xuICAgICAgfTtcbiAgICB9LCB0ID0+IHtcbiAgICAgIHQuZXhwb3J0cyA9IHtcbiAgICAgICAgSW5kZXhTaXplRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIklOREVYX1NJWkVfRVJSXCIsXG4gICAgICAgICAgYzogMSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIERPTVN0cmluZ1NpemVFcnJvcjoge1xuICAgICAgICAgIHM6IFwiRE9NU1RSSU5HX1NJWkVfRVJSXCIsXG4gICAgICAgICAgYzogMixcbiAgICAgICAgICBtOiAwXG4gICAgICAgIH0sXG4gICAgICAgIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjoge1xuICAgICAgICAgIHM6IFwiSElFUkFSQ0hZX1JFUVVFU1RfRVJSXCIsXG4gICAgICAgICAgYzogMyxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFdyb25nRG9jdW1lbnRFcnJvcjoge1xuICAgICAgICAgIHM6IFwiV1JPTkdfRE9DVU1FTlRfRVJSXCIsXG4gICAgICAgICAgYzogNCxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIEludmFsaWRDaGFyYWN0ZXJFcnJvcjoge1xuICAgICAgICAgIHM6IFwiSU5WQUxJRF9DSEFSQUNURVJfRVJSXCIsXG4gICAgICAgICAgYzogNSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIE5vRGF0YUFsbG93ZWRFcnJvcjoge1xuICAgICAgICAgIHM6IFwiTk9fREFUQV9BTExPV0VEX0VSUlwiLFxuICAgICAgICAgIGM6IDYsXG4gICAgICAgICAgbTogMFxuICAgICAgICB9LFxuICAgICAgICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjoge1xuICAgICAgICAgIHM6IFwiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSXCIsXG4gICAgICAgICAgYzogNyxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIE5vdEZvdW5kRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIk5PVF9GT1VORF9FUlJcIixcbiAgICAgICAgICBjOiA4LFxuICAgICAgICAgIG06IDFcbiAgICAgICAgfSxcbiAgICAgICAgTm90U3VwcG9ydGVkRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIk5PVF9TVVBQT1JURURfRVJSXCIsXG4gICAgICAgICAgYzogOSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIEluVXNlQXR0cmlidXRlRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIklOVVNFX0FUVFJJQlVURV9FUlJcIixcbiAgICAgICAgICBjOiAxMCxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIEludmFsaWRTdGF0ZUVycm9yOiB7XG4gICAgICAgICAgczogXCJJTlZBTElEX1NUQVRFX0VSUlwiLFxuICAgICAgICAgIGM6IDExLFxuICAgICAgICAgIG06IDFcbiAgICAgICAgfSxcbiAgICAgICAgU3ludGF4RXJyb3I6IHtcbiAgICAgICAgICBzOiBcIlNZTlRBWF9FUlJcIixcbiAgICAgICAgICBjOiAxMixcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjoge1xuICAgICAgICAgIHM6IFwiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSXCIsXG4gICAgICAgICAgYzogMTMsXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBOYW1lc3BhY2VFcnJvcjoge1xuICAgICAgICAgIHM6IFwiTkFNRVNQQUNFX0VSUlwiLFxuICAgICAgICAgIGM6IDE0LFxuICAgICAgICAgIG06IDFcbiAgICAgICAgfSxcbiAgICAgICAgSW52YWxpZEFjY2Vzc0Vycm9yOiB7XG4gICAgICAgICAgczogXCJJTlZBTElEX0FDQ0VTU19FUlJcIixcbiAgICAgICAgICBjOiAxNSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFZhbGlkYXRpb25FcnJvcjoge1xuICAgICAgICAgIHM6IFwiVkFMSURBVElPTl9FUlJcIixcbiAgICAgICAgICBjOiAxNixcbiAgICAgICAgICBtOiAwXG4gICAgICAgIH0sXG4gICAgICAgIFR5cGVNaXNtYXRjaEVycm9yOiB7XG4gICAgICAgICAgczogXCJUWVBFX01JU01BVENIX0VSUlwiLFxuICAgICAgICAgIGM6IDE3LFxuICAgICAgICAgIG06IDFcbiAgICAgICAgfSxcbiAgICAgICAgU2VjdXJpdHlFcnJvcjoge1xuICAgICAgICAgIHM6IFwiU0VDVVJJVFlfRVJSXCIsXG4gICAgICAgICAgYzogMTgsXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBOZXR3b3JrRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIk5FVFdPUktfRVJSXCIsXG4gICAgICAgICAgYzogMTksXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBBYm9ydEVycm9yOiB7XG4gICAgICAgICAgczogXCJBQk9SVF9FUlJcIixcbiAgICAgICAgICBjOiAyMCxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFVSTE1pc21hdGNoRXJyb3I6IHtcbiAgICAgICAgICBzOiBcIlVSTF9NSVNNQVRDSF9FUlJcIixcbiAgICAgICAgICBjOiAyMSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH0sXG4gICAgICAgIFF1b3RhRXhjZWVkZWRFcnJvcjoge1xuICAgICAgICAgIHM6IFwiUVVPVEFfRVhDRUVERURfRVJSXCIsXG4gICAgICAgICAgYzogMjIsXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBUaW1lb3V0RXJyb3I6IHtcbiAgICAgICAgICBzOiBcIlRJTUVPVVRfRVJSXCIsXG4gICAgICAgICAgYzogMjMsXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBJbnZhbGlkTm9kZVR5cGVFcnJvcjoge1xuICAgICAgICAgIHM6IFwiSU5WQUxJRF9OT0RFX1RZUEVfRVJSXCIsXG4gICAgICAgICAgYzogMjQsXG4gICAgICAgICAgbTogMVxuICAgICAgICB9LFxuICAgICAgICBEYXRhQ2xvbmVFcnJvcjoge1xuICAgICAgICAgIHM6IFwiREFUQV9DTE9ORV9FUlJcIixcbiAgICAgICAgICBjOiAyNSxcbiAgICAgICAgICBtOiAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpLFxuICAgICAgICByID0gbigzNiksXG4gICAgICAgIHMgPSBuKDMpLFxuICAgICAgICBhID0gbig0KSxcbiAgICAgICAgbyA9IG4oMjQpLFxuICAgICAgICBsID0gbigxNCksXG4gICAgICAgIGMgPSBuKDcpLFxuICAgICAgICBoID0gbig0MSksXG4gICAgICAgIGQgPSBuKDIxKSxcbiAgICAgICAgdSA9IG4oMTUyKSxcbiAgICAgICAgcCA9IG4oMTcpLFxuICAgICAgICBmID0gbigyMCksXG4gICAgICAgIGcgPSBuKDIzKSxcbiAgICAgICAgbSA9IG4oMTUzKSxcbiAgICAgICAgYiA9IG4oNDcpLFxuICAgICAgICB2ID0gbig3OCksXG4gICAgICAgIHkgPSBuKDM5KSxcbiAgICAgICAgQSA9IG4oMTU4KSxcbiAgICAgICAgXyA9IG4oNDQpLFxuICAgICAgICBTID0gbig2NCksXG4gICAgICAgIEUgPSBuKDg1KSxcbiAgICAgICAgeCA9IG4oMTU5KSxcbiAgICAgICAgdyA9IG4oMTYxKSxcbiAgICAgICAgQyA9IG4oMTI4KSxcbiAgICAgICAgVCA9IG4oODMpLFxuICAgICAgICBQID0gbigxMTkpLFxuICAgICAgICBrID0gYS5PYmplY3QsXG4gICAgICAgIE0gPSBhLkFycmF5LFxuICAgICAgICBSID0gYS5EYXRlLFxuICAgICAgICBJID0gYS5FcnJvcixcbiAgICAgICAgRCA9IGEuRXZhbEVycm9yLFxuICAgICAgICBPID0gYS5SYW5nZUVycm9yLFxuICAgICAgICBMID0gYS5SZWZlcmVuY2VFcnJvcixcbiAgICAgICAgTiA9IGEuU3ludGF4RXJyb3IsXG4gICAgICAgIEIgPSBhLlR5cGVFcnJvcixcbiAgICAgICAgaiA9IGEuVVJJRXJyb3IsXG4gICAgICAgIFUgPSBhLlBlcmZvcm1hbmNlTWFyayxcbiAgICAgICAgeiA9IGEuV2ViQXNzZW1ibHksXG4gICAgICAgIEggPSB6ICYmIHouQ29tcGlsZUVycm9yIHx8IEksXG4gICAgICAgIHEgPSB6ICYmIHouTGlua0Vycm9yIHx8IEksXG4gICAgICAgIFcgPSB6ICYmIHouUnVudGltZUVycm9yIHx8IEksXG4gICAgICAgIEcgPSBvKFwiRE9NRXhjZXB0aW9uXCIpLFxuICAgICAgICBWID0gdy5NYXAsXG4gICAgICAgICQgPSB3LmhhcyxcbiAgICAgICAgWCA9IHcuZ2V0LFxuICAgICAgICBLID0gdy5zZXQsXG4gICAgICAgIFkgPSBDLlNldCxcbiAgICAgICAgSiA9IEMuYWRkLFxuICAgICAgICBRID0gbyhcIk9iamVjdFwiLCBcImtleXNcIiksXG4gICAgICAgIFogPSBsKFtdLnB1c2gpLFxuICAgICAgICB0dCA9IGwoKCEwKS52YWx1ZU9mKSxcbiAgICAgICAgZXQgPSBsKDEuLnZhbHVlT2YpLFxuICAgICAgICBudCA9IGwoXCJcIi52YWx1ZU9mKSxcbiAgICAgICAgaXQgPSBsKFIucHJvdG90eXBlLmdldFRpbWUpLFxuICAgICAgICBydCA9IGgoXCJzdHJ1Y3R1cmVkQ2xvbmVcIiksXG4gICAgICAgIHN0ID0gXCJEYXRhQ2xvbmVFcnJvclwiLFxuICAgICAgICBhdCA9IFwiVHJhbnNmZXJyaW5nXCIsXG4gICAgICAgIGNoZWNrQmFzaWNTZW1hbnRpYyA9IGZ1bmN0aW9uIGNoZWNrQmFzaWNTZW1hbnRpYyh0KSB7XG4gICAgICAgICAgcmV0dXJuICFjKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlID0gbmV3IGEuU2V0KFs3XSksXG4gICAgICAgICAgICAgIG4gPSB0KGUpLFxuICAgICAgICAgICAgICBpID0gdChrKDcpKTtcbiAgICAgICAgICAgIHJldHVybiBuID09IGUgfHwgIW4uaGFzKDcpIHx8IFwib2JqZWN0XCIgIT0gdHlwZW9mIGkgfHwgNyAhPSBpO1xuICAgICAgICAgIH0pICYmIHQ7XG4gICAgICAgIH0sXG4gICAgICAgIGNoZWNrRXJyb3JzQ2xvbmluZyA9IGZ1bmN0aW9uIGNoZWNrRXJyb3JzQ2xvbmluZyh0LCBlKSB7XG4gICAgICAgICAgcmV0dXJuICFjKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBuID0gbmV3IGUoKSxcbiAgICAgICAgICAgICAgaSA9IHQoe1xuICAgICAgICAgICAgICAgIGE6IG4sXG4gICAgICAgICAgICAgICAgYjogblxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhKGkgJiYgaS5hID09PSBpLmIgJiYgaS5hIGluc3RhbmNlb2YgZSAmJiBpLmEuc3RhY2sgPT09IG4uc3RhY2spO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvdCA9IGEuc3RydWN0dXJlZENsb25lLFxuICAgICAgICBsdCA9IHIgfHwgIWNoZWNrRXJyb3JzQ2xvbmluZyhvdCwgSSkgfHwgIWNoZWNrRXJyb3JzQ2xvbmluZyhvdCwgRykgfHwgIShpID0gb3QsICFjKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgdCA9IGkobmV3IGEuQWdncmVnYXRlRXJyb3IoWzFdLCBydCwge1xuICAgICAgICAgICAgY2F1c2U6IDNcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgcmV0dXJuIFwiQWdncmVnYXRlRXJyb3JcIiAhPSB0Lm5hbWUgfHwgMSAhPSB0LmVycm9yc1swXSB8fCB0Lm1lc3NhZ2UgIT0gcnQgfHwgMyAhPSB0LmNhdXNlO1xuICAgICAgICB9KSksXG4gICAgICAgIGN0ID0gIW90ICYmIGNoZWNrQmFzaWNTZW1hbnRpYyhmdW5jdGlvbiAodCkge1xuICAgICAgICAgIHJldHVybiBuZXcgVShydCwge1xuICAgICAgICAgICAgZGV0YWlsOiB0XG4gICAgICAgICAgfSkuZGV0YWlsO1xuICAgICAgICB9KSxcbiAgICAgICAgaHQgPSBjaGVja0Jhc2ljU2VtYW50aWMob3QpIHx8IGN0LFxuICAgICAgICB0aHJvd1VuY2xvbmVhYmxlID0gZnVuY3Rpb24gdGhyb3dVbmNsb25lYWJsZSh0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEcoXCJVbmNsb25lYWJsZSB0eXBlOiBcIiArIHQsIHN0KTtcbiAgICAgICAgfSxcbiAgICAgICAgdGhyb3dVbnBvbHlmaWxsYWJsZSA9IGZ1bmN0aW9uIHRocm93VW5wb2x5ZmlsbGFibGUodCwgZSkge1xuICAgICAgICAgIHRocm93IG5ldyBHKChlIHx8IFwiQ2xvbmluZ1wiKSArIFwiIG9mIFwiICsgdCArIFwiIGNhbm5vdCBiZSBwcm9wZXJseSBwb2x5ZmlsbGVkIGluIHRoaXMgZW5naW5lXCIsIHN0KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ5TmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSA9IGZ1bmN0aW9uIHRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUodCwgZSkge1xuICAgICAgICAgIGh0IHx8IHRocm93VW5wb2x5ZmlsbGFibGUoZSk7XG4gICAgICAgICAgcmV0dXJuIGh0KHQpO1xuICAgICAgICB9LFxuICAgICAgICBjbG9uZUJ1ZmZlciA9IGZ1bmN0aW9uIGNsb25lQnVmZmVyKHQsIGUsIG4pIHtcbiAgICAgICAgICBpZiAoJChlLCB0KSkgcmV0dXJuIFgoZSwgdCk7XG4gICAgICAgICAgdmFyIGksIHIsIHMsIG8sIGwsIGM7XG4gICAgICAgICAgaWYgKFwiU2hhcmVkQXJyYXlCdWZmZXJcIiA9PT0gKG4gfHwgdih0KSkpIGkgPSBodCA/IGh0KHQpIDogdDtlbHNlIHtcbiAgICAgICAgICAgIHZhciBoID0gYS5EYXRhVmlldztcbiAgICAgICAgICAgIGggfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiB0LnNsaWNlIHx8IHRocm93VW5wb2x5ZmlsbGFibGUoXCJBcnJheUJ1ZmZlclwiKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIHQuc2xpY2UgfHwgdC5yZXNpemFibGUpIHtcbiAgICAgICAgICAgICAgICByID0gdC5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgICAgIHMgPSBcIm1heEJ5dGVMZW5ndGhcIiBpbiB0ID8ge1xuICAgICAgICAgICAgICAgICAgbWF4Qnl0ZUxlbmd0aDogdC5tYXhCeXRlTGVuZ3RoXG4gICAgICAgICAgICAgICAgfSA6IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBpID0gbmV3IEFycmF5QnVmZmVyKHIsIHMpO1xuICAgICAgICAgICAgICAgIG8gPSBuZXcgaCh0KTtcbiAgICAgICAgICAgICAgICBsID0gbmV3IGgoaSk7XG4gICAgICAgICAgICAgICAgZm9yIChjID0gMDsgYyA8IHI7IGMrKykgbC5zZXRVaW50OChjLCBvLmdldFVpbnQ4KGMpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGkgPSB0LnNsaWNlKDApO1xuICAgICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRyhcIkFycmF5QnVmZmVyIGlzIGRldGFjaGVkXCIsIHN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgSyhlLCB0LCBpKTtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xvbmVWaWV3ID0gZnVuY3Rpb24gY2xvbmVWaWV3KHQsIGUsIG4sIGksIHIpIHtcbiAgICAgICAgICB2YXIgcyA9IGFbZV07XG4gICAgICAgICAgZihzKSB8fCB0aHJvd1VucG9seWZpbGxhYmxlKGUpO1xuICAgICAgICAgIHJldHVybiBuZXcgcyhjbG9uZUJ1ZmZlcih0LmJ1ZmZlciwgciksIG4sIGkpO1xuICAgICAgICB9LFxuICAgICAgICBQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIFBsYWNlaG9sZGVyKHQsIGUsIG4pIHtcbiAgICAgICAgICB0aGlzLm9iamVjdCA9IHQ7XG4gICAgICAgICAgdGhpcy50eXBlID0gZTtcbiAgICAgICAgICB0aGlzLm1ldGFkYXRhID0gbjtcbiAgICAgICAgfSxcbiAgICAgICAgc3RydWN0dXJlZENsb25lSW50ZXJuYWwgPSBmdW5jdGlvbiBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LCBlLCBuKSB7XG4gICAgICAgICAgZyh0KSAmJiB0aHJvd1VuY2xvbmVhYmxlKFwiU3ltYm9sXCIpO1xuICAgICAgICAgIGlmICghZih0KSkgcmV0dXJuIHQ7XG4gICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIGlmICgkKGUsIHQpKSByZXR1cm4gWChlLCB0KTtcbiAgICAgICAgICB9IGVsc2UgZSA9IG5ldyBWKCk7XG4gICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgcyxcbiAgICAgICAgICAgIGwsXG4gICAgICAgICAgICBjLFxuICAgICAgICAgICAgaCxcbiAgICAgICAgICAgIHUsXG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgbSA9IHYodCk7XG4gICAgICAgICAgc3dpdGNoIChtKSB7XG4gICAgICAgICAgICBjYXNlIFwiQXJyYXlcIjpcbiAgICAgICAgICAgICAgcyA9IE0oUyh0KSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICBzID0ge307XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIk1hcFwiOlxuICAgICAgICAgICAgICBzID0gbmV3IFYoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiU2V0XCI6XG4gICAgICAgICAgICAgIHMgPSBuZXcgWSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJSZWdFeHBcIjpcbiAgICAgICAgICAgICAgcyA9IG5ldyBSZWdFeHAodC5zb3VyY2UsIHgodCkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJFcnJvclwiOlxuICAgICAgICAgICAgICBzd2l0Y2ggKHIgPSB0Lm5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiQWdncmVnYXRlRXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgIHMgPSBvKFwiQWdncmVnYXRlRXJyb3JcIikoW10pO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkV2YWxFcnJvclwiOlxuICAgICAgICAgICAgICAgICAgcyA9IEQoKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJSYW5nZUVycm9yXCI6XG4gICAgICAgICAgICAgICAgICBzID0gTygpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlJlZmVyZW5jZUVycm9yXCI6XG4gICAgICAgICAgICAgICAgICBzID0gTCgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlN5bnRheEVycm9yXCI6XG4gICAgICAgICAgICAgICAgICBzID0gTigpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlR5cGVFcnJvclwiOlxuICAgICAgICAgICAgICAgICAgcyA9IEIoKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJVUklFcnJvclwiOlxuICAgICAgICAgICAgICAgICAgcyA9IGooKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDb21waWxlRXJyb3JcIjpcbiAgICAgICAgICAgICAgICAgIHMgPSBIKCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiTGlua0Vycm9yXCI6XG4gICAgICAgICAgICAgICAgICBzID0gcSgpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlJ1bnRpbWVFcnJvclwiOlxuICAgICAgICAgICAgICAgICAgcyA9IFcoKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBzID0gSSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkRPTUV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICBzID0gbmV3IEcodC5tZXNzYWdlLCB0Lm5hbWUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBcnJheUJ1ZmZlclwiOlxuICAgICAgICAgICAgY2FzZSBcIlNoYXJlZEFycmF5QnVmZmVyXCI6XG4gICAgICAgICAgICAgIHMgPSBuID8gbmV3IFBsYWNlaG9sZGVyKHQsIG0pIDogY2xvbmVCdWZmZXIodCwgZSwgbSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkRhdGFWaWV3XCI6XG4gICAgICAgICAgICBjYXNlIFwiSW50OEFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiVWludDhBcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBcIlVpbnQ4Q2xhbXBlZEFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiSW50MTZBcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBcIlVpbnQxNkFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiSW50MzJBcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBcIlVpbnQzMkFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiRmxvYXQxNkFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiRmxvYXQzMkFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiRmxvYXQ2NEFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiQmlnSW50NjRBcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBcIkJpZ1VpbnQ2NEFycmF5XCI6XG4gICAgICAgICAgICAgIGggPSBcIkRhdGFWaWV3XCIgPT09IG0gPyB0LmJ5dGVMZW5ndGggOiB0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgcyA9IG4gPyBuZXcgUGxhY2Vob2xkZXIodCwgbSwge1xuICAgICAgICAgICAgICAgIG9mZnNldDogdC5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxlbmd0aDogaFxuICAgICAgICAgICAgICB9KSA6IGNsb25lVmlldyh0LCBtLCB0LmJ5dGVPZmZzZXQsIGgsIGUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJET01RdWFkXCI6XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcyA9IG5ldyBET01RdWFkKHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQucDEsIGUsIG4pLCBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LnAyLCBlLCBuKSwgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5wMywgZSwgbiksIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQucDQsIGUsIG4pKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHMgPSB0cnlOYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKHQsIG0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkZpbGVcIjpcbiAgICAgICAgICAgICAgaWYgKGh0KSB0cnkge1xuICAgICAgICAgICAgICAgIHMgPSBodCh0KTtcbiAgICAgICAgICAgICAgICB2KHMpICE9PSBtICYmIChzID0gdm9pZCAwKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgICAgICAgaWYgKCFzKSB0cnkge1xuICAgICAgICAgICAgICAgIHMgPSBuZXcgRmlsZShbdF0sIHQubmFtZSwgdCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgICAgIHMgfHwgdGhyb3dVbnBvbHlmaWxsYWJsZShtKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiRmlsZUxpc3RcIjpcbiAgICAgICAgICAgICAgaWYgKGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQ7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIHQgPSBuZXcgYS5EYXRhVHJhbnNmZXIoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IGEuQ2xpcGJvYXJkRXZlbnQoXCJcIikuY2xpcGJvYXJkRGF0YTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0ICYmIHQuaXRlbXMgJiYgdC5maWxlcyA/IHQgOiBudWxsO1xuICAgICAgICAgICAgICB9KCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGMgPSAwLCBoID0gUyh0KTsgYyA8IGg7IGMrKykgbC5pdGVtcy5hZGQoc3RydWN0dXJlZENsb25lSW50ZXJuYWwodFtjXSwgZSwgbikpO1xuICAgICAgICAgICAgICAgIHMgPSBsLmZpbGVzO1xuICAgICAgICAgICAgICB9IGVsc2UgcyA9IHRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUodCwgbSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkltYWdlRGF0YVwiOlxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHMgPSBuZXcgSW1hZ2VEYXRhKHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQuZGF0YSwgZSwgbiksIHQud2lkdGgsIHQuaGVpZ2h0LCB7XG4gICAgICAgICAgICAgICAgICBjb2xvclNwYWNlOiB0LmNvbG9yU3BhY2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHMgPSB0cnlOYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKHQsIG0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKGh0KSBzID0gaHQodCk7ZWxzZSBzd2l0Y2ggKG0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiQmlnSW50XCI6XG4gICAgICAgICAgICAgICAgICBzID0gayh0LnZhbHVlT2YoKSk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQm9vbGVhblwiOlxuICAgICAgICAgICAgICAgICAgcyA9IGsodHQodCkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIk51bWJlclwiOlxuICAgICAgICAgICAgICAgICAgcyA9IGsoZXQodCkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgICAgICAgICAgICAgcyA9IGsobnQodCkpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkRhdGVcIjpcbiAgICAgICAgICAgICAgICAgIHMgPSBuZXcgUihpdCh0KSk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQmxvYlwiOlxuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcyA9IHQuc2xpY2UoMCwgdC5zaXplLCB0LnR5cGUpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKG0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTVBvaW50XCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTVBvaW50UmVhZE9ubHlcIjpcbiAgICAgICAgICAgICAgICAgIGkgPSBhW21dO1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcyA9IGkuZnJvbVBvaW50ID8gaS5mcm9tUG9pbnQodCkgOiBuZXcgaSh0LngsIHQueSwgdC56LCB0LncpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKG0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTVJlY3RcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiRE9NUmVjdFJlYWRPbmx5XCI6XG4gICAgICAgICAgICAgICAgICBpID0gYVttXTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHMgPSBpLmZyb21SZWN0ID8gaS5mcm9tUmVjdCh0KSA6IG5ldyBpKHQueCwgdC55LCB0LndpZHRoLCB0LmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93VW5wb2x5ZmlsbGFibGUobSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRE9NTWF0cml4XCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTU1hdHJpeFJlYWRPbmx5XCI6XG4gICAgICAgICAgICAgICAgICBpID0gYVttXTtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHMgPSBpLmZyb21NYXRyaXggPyBpLmZyb21NYXRyaXgodCkgOiBuZXcgaSh0KTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dVbnBvbHlmaWxsYWJsZShtKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJBdWRpb0RhdGFcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiVmlkZW9GcmFtZVwiOlxuICAgICAgICAgICAgICAgICAgZCh0LmNsb25lKSB8fCB0aHJvd1VucG9seWZpbGxhYmxlKG0pO1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcyA9IHQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dVbmNsb25lYWJsZShtKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDcm9wVGFyZ2V0XCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkNyeXB0b0tleVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJGaWxlU3lzdGVtRGlyZWN0b3J5SGFuZGxlXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkZpbGVTeXN0ZW1GaWxlSGFuZGxlXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkZpbGVTeXN0ZW1IYW5kbGVcIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiR1BVQ29tcGlsYXRpb25JbmZvXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcIkdQVUNvbXBpbGF0aW9uTWVzc2FnZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJJbWFnZUJpdG1hcFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJSVENDZXJ0aWZpY2F0ZVwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJXZWJBc3NlbWJseS5Nb2R1bGVcIjpcbiAgICAgICAgICAgICAgICAgIHRocm93VW5wb2x5ZmlsbGFibGUobSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIHRocm93VW5jbG9uZWFibGUobSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgSyhlLCB0LCBzKTtcbiAgICAgICAgICBzd2l0Y2ggKG0pIHtcbiAgICAgICAgICAgIGNhc2UgXCJBcnJheVwiOlxuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICB1ID0gUSh0KTtcbiAgICAgICAgICAgICAgZm9yIChjID0gMCwgaCA9IFModSk7IGMgPCBoOyBjKyspIHtcbiAgICAgICAgICAgICAgICBwID0gdVtjXTtcbiAgICAgICAgICAgICAgICBBKHMsIHAsIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHRbcF0sIGUsIG4pKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJNYXBcIjpcbiAgICAgICAgICAgICAgdC5mb3JFYWNoKGZ1bmN0aW9uICh0LCBpKSB7XG4gICAgICAgICAgICAgICAgSyhzLCBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbChpLCBlLCBuKSwgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodCwgZSwgbikpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiU2V0XCI6XG4gICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIEoocywgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodCwgZSwgbikpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiRXJyb3JcIjpcbiAgICAgICAgICAgICAgXyhzLCBcIm1lc3NhZ2VcIiwgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5tZXNzYWdlLCBlLCBuKSk7XG4gICAgICAgICAgICAgIHkodCwgXCJjYXVzZVwiKSAmJiBfKHMsIFwiY2F1c2VcIiwgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodC5jYXVzZSwgZSwgbikpO1xuICAgICAgICAgICAgICBcIkFnZ3JlZ2F0ZUVycm9yXCIgPT0gciAmJiAocy5lcnJvcnMgPSBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LmVycm9ycywgZSwgbikpO1xuICAgICAgICAgICAgY2FzZSBcIkRPTUV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgICBUICYmIF8ocywgXCJzdGFja1wiLCBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh0LnN0YWNrLCBlLCBuKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICB9LFxuICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzID0gZnVuY3Rpb24gcmVwbGFjZVBsYWNlaG9sZGVycyh0LCBlKSB7XG4gICAgICAgICAgaWYgKCFmKHQpKSByZXR1cm4gdDtcbiAgICAgICAgICBpZiAoJChlLCB0KSkgcmV0dXJuIFgoZSwgdCk7XG4gICAgICAgICAgdmFyIG4sIGksIHIsIHMsIGEsIG8sIGwsIGM7XG4gICAgICAgICAgaWYgKHQgaW5zdGFuY2VvZiBQbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgbiA9IHQudHlwZTtcbiAgICAgICAgICAgIGkgPSB0Lm9iamVjdDtcbiAgICAgICAgICAgIHN3aXRjaCAobikge1xuICAgICAgICAgICAgICBjYXNlIFwiQXJyYXlCdWZmZXJcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIlNoYXJlZEFycmF5QnVmZmVyXCI6XG4gICAgICAgICAgICAgICAgYyA9IGNsb25lQnVmZmVyKGksIGUsIG4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiRGF0YVZpZXdcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIkludDhBcnJheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiVWludDhBcnJheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiVWludDhDbGFtcGVkQXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIkludDE2QXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIlVpbnQxNkFycmF5XCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJJbnQzMkFycmF5XCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJVaW50MzJBcnJheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiRmxvYXQxNkFycmF5XCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJGbG9hdDMyQXJyYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIkZsb2F0NjRBcnJheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiQmlnSW50NjRBcnJheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiQmlnVWludDY0QXJyYXlcIjpcbiAgICAgICAgICAgICAgICByID0gdC5tZXRhZGF0YTtcbiAgICAgICAgICAgICAgICBjID0gY2xvbmVWaWV3KGksIG4sIHIub2Zmc2V0LCByLmxlbmd0aCwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHN3aXRjaCAodih0KSkge1xuICAgICAgICAgICAgY2FzZSBcIkFycmF5XCI6XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0XCI6XG4gICAgICAgICAgICAgIG8gPSBRKHQpO1xuICAgICAgICAgICAgICBmb3IgKHMgPSAwLCBhID0gUyhvKTsgcyA8IGE7IHMrKykgdFtsID0gb1tzXV0gPSByZXBsYWNlUGxhY2Vob2xkZXJzKHRbbF0sIGUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJNYXBcIjpcbiAgICAgICAgICAgICAgYyA9IG5ldyBWKCk7XG4gICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAodCwgbikge1xuICAgICAgICAgICAgICAgIEsoYywgcmVwbGFjZVBsYWNlaG9sZGVycyhuLCBlKSwgcmVwbGFjZVBsYWNlaG9sZGVycyh0LCBlKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTZXRcIjpcbiAgICAgICAgICAgICAgYyA9IG5ldyBZKCk7XG4gICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICAgIEooYywgcmVwbGFjZVBsYWNlaG9sZGVycyh0LCBlKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJFcnJvclwiOlxuICAgICAgICAgICAgICB0Lm1lc3NhZ2UgPSByZXBsYWNlUGxhY2Vob2xkZXJzKHQubWVzc2FnZSwgZSk7XG4gICAgICAgICAgICAgIHkodCwgXCJjYXVzZVwiKSAmJiAodC5jYXVzZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnModC5jYXVzZSwgZSkpO1xuICAgICAgICAgICAgICBcIkFnZ3JlZ2F0ZUVycm9yXCIgPT0gdC5uYW1lICYmICh0LmVycm9ycyA9IHJlcGxhY2VQbGFjZWhvbGRlcnModC5lcnJvcnMsIGUpKTtcbiAgICAgICAgICAgIGNhc2UgXCJET01FeGNlcHRpb25cIjpcbiAgICAgICAgICAgICAgVCAmJiAodC5zdGFjayA9IHJlcGxhY2VQbGFjZWhvbGRlcnModC5zdGFjaywgZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBLKGUsIHQsIGMgfHwgdCk7XG4gICAgICAgICAgcmV0dXJuIGMgfHwgdDtcbiAgICAgICAgfTtcbiAgICAgIHMoe1xuICAgICAgICBnbG9iYWw6ICEwLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgICAgc2hhbTogIVAsXG4gICAgICAgIGZvcmNlZDogbHRcbiAgICAgIH0sIHtcbiAgICAgICAgc3RydWN0dXJlZENsb25lOiBmdW5jdGlvbiBzdHJ1Y3R1cmVkQ2xvbmUodCkge1xuICAgICAgICAgIHZhciBlLFxuICAgICAgICAgICAgbixcbiAgICAgICAgICAgIGkgPSBFKGFyZ3VtZW50cy5sZW5ndGgsIDEpID4gMSAmJiAhcChhcmd1bWVudHNbMV0pID8gYihhcmd1bWVudHNbMV0pIDogdm9pZCAwLFxuICAgICAgICAgICAgciA9IGkgPyBpLnRyYW5zZmVyIDogdm9pZCAwLFxuICAgICAgICAgICAgcyA9ICExO1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHIpIHtcbiAgICAgICAgICAgIG4gPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICBpZiAoIWYodCkpIHRocm93IEIoXCJUcmFuc2ZlciBvcHRpb24gY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIHNlcXVlbmNlXCIpO1xuICAgICAgICAgICAgICB2YXIgbiA9IFtdO1xuICAgICAgICAgICAgICBtKHQsIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgWihuLCBiKHQpKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvciAodmFyIGksIHIsIHMsIG8sIGwsIGMgPSAwLCBoID0gUyhuKSwgcCA9IFtdOyBjIDwgaDspIHtcbiAgICAgICAgICAgICAgICBpID0gbltjKytdO1xuICAgICAgICAgICAgICAgIGlmIChcIkFycmF5QnVmZmVyXCIgIT09IChyID0gdihpKSkpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkKGUsIGkpKSB0aHJvdyBuZXcgRyhcIkR1cGxpY2F0ZSB0cmFuc2ZlcmFibGVcIiwgc3QpO1xuICAgICAgICAgICAgICAgICAgaWYgKFApIG8gPSBvdChpLCB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyOiBbaV1cbiAgICAgICAgICAgICAgICAgIH0pO2Vsc2Ugc3dpdGNoIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJJbWFnZUJpdG1hcFwiOlxuICAgICAgICAgICAgICAgICAgICAgIHMgPSBhLk9mZnNjcmVlbkNhbnZhcztcbiAgICAgICAgICAgICAgICAgICAgICB1KHMpIHx8IHRocm93VW5wb2x5ZmlsbGFibGUociwgYXQpO1xuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAobCA9IG5ldyBzKGkud2lkdGgsIGkuaGVpZ2h0KSkuZ2V0Q29udGV4dChcImJpdG1hcHJlbmRlcmVyXCIpLnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGwudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAodCkge31cbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkF1ZGlvRGF0YVwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiVmlkZW9GcmFtZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGQoaS5jbG9uZSkgJiYgZChpLmNsb3NlKSB8fCB0aHJvd1VucG9seWZpbGxhYmxlKHIsIGF0KTtcbiAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGkuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7fVxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiTWVkaWFTb3VyY2VIYW5kbGVcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIk1lc3NhZ2VQb3J0XCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJPZmZzY3JlZW5DYW52YXNcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlJlYWRhYmxlU3RyZWFtXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJUcmFuc2Zvcm1TdHJlYW1cIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIldyaXRhYmxlU3RyZWFtXCI6XG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3dVbnBvbHlmaWxsYWJsZShyLCBhdCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBvKSB0aHJvdyBuZXcgRyhcIlRoaXMgb2JqZWN0IGNhbm5vdCBiZSB0cmFuc2ZlcnJlZDogXCIgKyByLCBzdCk7XG4gICAgICAgICAgICAgICAgICBLKGUsIGksIG8pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBaKHAsIGkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgfShyLCBlID0gbmV3IFYoKSk7XG4gICAgICAgICAgICBzID0gISFTKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbyA9IHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHQsIGUsIHMpO1xuICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAhZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgICAgZm9yICh2YXIgbiwgaSwgciA9IDAsIHMgPSBTKHQpOyByIDwgczspIHtcbiAgICAgICAgICAgICAgICBuID0gdFtyKytdO1xuICAgICAgICAgICAgICAgIGlmICgkKGUsIG4pKSB0aHJvdyBuZXcgRyhcIkR1cGxpY2F0ZSB0cmFuc2ZlcmFibGVcIiwgc3QpO1xuICAgICAgICAgICAgICAgIGlmIChQKSBpID0gb3Qobiwge1xuICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFtuXVxuICAgICAgICAgICAgICAgIH0pO2Vsc2Uge1xuICAgICAgICAgICAgICAgICAgZChuLnRyYW5zZmVyKSB8fCB0aHJvd1VucG9seWZpbGxhYmxlKFwiQXJyYXlCdWZmZXJcIiwgYXQpO1xuICAgICAgICAgICAgICAgICAgaSA9IG4udHJhbnNmZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgSyhlLCBuLCBpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfShyLCBlID0gbmV3IFYoKSk7XG4gICAgICAgICAgICBvID0gcmVwbGFjZVBsYWNlaG9sZGVycyhvLCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbig3KSxcbiAgICAgICAgcyA9IG4oMjEpLFxuICAgICAgICBhID0gbig3OCksXG4gICAgICAgIG8gPSBuKDI0KSxcbiAgICAgICAgbCA9IG4oNTEpLFxuICAgICAgICBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9LFxuICAgICAgICBjID0gW10sXG4gICAgICAgIGggPSBvKFwiUmVmbGVjdFwiLCBcImNvbnN0cnVjdFwiKSxcbiAgICAgICAgZCA9IC9eXFxzKig/OmNsYXNzfGZ1bmN0aW9uKVxcYi8sXG4gICAgICAgIHUgPSBpKGQuZXhlYyksXG4gICAgICAgIHAgPSAhZC5leGVjKG5vb3ApLFxuICAgICAgICBmID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgaWYgKCFzKHQpKSByZXR1cm4gITE7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGgobm9vcCwgYywgdCk7XG4gICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZyA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IodCkge1xuICAgICAgICAgIGlmICghcyh0KSkgcmV0dXJuICExO1xuICAgICAgICAgIHN3aXRjaCAoYSh0KSkge1xuICAgICAgICAgICAgY2FzZSBcIkFzeW5jRnVuY3Rpb25cIjpcbiAgICAgICAgICAgIGNhc2UgXCJHZW5lcmF0b3JGdW5jdGlvblwiOlxuICAgICAgICAgICAgY2FzZSBcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIjpcbiAgICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHAgfHwgISF1KGQsIGwodCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICBnLnNoYW0gPSAhMDtcbiAgICAgIHQuZXhwb3J0cyA9ICFoIHx8IHIoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdDtcbiAgICAgICAgcmV0dXJuIGYoZi5jYWxsKSB8fCAhZihPYmplY3QpIHx8ICFmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0ID0gITA7XG4gICAgICAgIH0pIHx8IHQ7XG4gICAgICB9KSA/IGcgOiBmO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oOTkpLFxuICAgICAgICByID0gbig4KSxcbiAgICAgICAgcyA9IG4oNDcpLFxuICAgICAgICBhID0gbigzMiksXG4gICAgICAgIG8gPSBuKDE1NCksXG4gICAgICAgIGwgPSBuKDY0KSxcbiAgICAgICAgYyA9IG4oMjUpLFxuICAgICAgICBoID0gbigxNTYpLFxuICAgICAgICBkID0gbigxNTcpLFxuICAgICAgICB1ID0gbigxMzkpLFxuICAgICAgICBwID0gVHlwZUVycm9yLFxuICAgICAgICBSZXN1bHQgPSBmdW5jdGlvbiBSZXN1bHQodCwgZSkge1xuICAgICAgICAgIHRoaXMuc3RvcHBlZCA9IHQ7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgPSBlO1xuICAgICAgICB9LFxuICAgICAgICBmID0gUmVzdWx0LnByb3RvdHlwZTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCBuKSB7XG4gICAgICAgIHZhciBnLFxuICAgICAgICAgIG0sXG4gICAgICAgICAgYixcbiAgICAgICAgICB2LFxuICAgICAgICAgIHksXG4gICAgICAgICAgQSxcbiAgICAgICAgICBfLFxuICAgICAgICAgIFMgPSBuICYmIG4udGhhdCxcbiAgICAgICAgICBFID0gISghbiB8fCAhbi5BU19FTlRSSUVTKSxcbiAgICAgICAgICB4ID0gISghbiB8fCAhbi5JU19SRUNPUkQpLFxuICAgICAgICAgIHcgPSAhKCFuIHx8ICFuLklTX0lURVJBVE9SKSxcbiAgICAgICAgICBDID0gISghbiB8fCAhbi5JTlRFUlJVUFRFRCksXG4gICAgICAgICAgVCA9IGkoZSwgUyksXG4gICAgICAgICAgc3RvcCA9IGZ1bmN0aW9uIHN0b3AodCkge1xuICAgICAgICAgICAgZyAmJiB1KGcsIFwibm9ybWFsXCIsIHQpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoITAsIHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2FsbEZuID0gZnVuY3Rpb24gY2FsbEZuKHQpIHtcbiAgICAgICAgICAgIGlmIChFKSB7XG4gICAgICAgICAgICAgIHModCk7XG4gICAgICAgICAgICAgIHJldHVybiBDID8gVCh0WzBdLCB0WzFdLCBzdG9wKSA6IFQodFswXSwgdFsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gQyA/IFQodCwgc3RvcCkgOiBUKHQpO1xuICAgICAgICAgIH07XG4gICAgICAgIGlmICh4KSBnID0gdC5pdGVyYXRvcjtlbHNlIGlmICh3KSBnID0gdDtlbHNlIHtcbiAgICAgICAgICBpZiAoIShtID0gZCh0KSkpIHRocm93IHAoYSh0KSArIFwiIGlzIG5vdCBpdGVyYWJsZVwiKTtcbiAgICAgICAgICBpZiAobyhtKSkge1xuICAgICAgICAgICAgZm9yIChiID0gMCwgdiA9IGwodCk7IHYgPiBiOyBiKyspIGlmICgoeSA9IGNhbGxGbih0W2JdKSkgJiYgYyhmLCB5KSkgcmV0dXJuIHk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc3VsdCghMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGcgPSBoKHQsIG0pO1xuICAgICAgICB9XG4gICAgICAgIEEgPSB4ID8gdC5uZXh0IDogZy5uZXh0O1xuICAgICAgICBmb3IgKDsgIShfID0gcihBLCBnKSkuZG9uZTspIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgeSA9IGNhbGxGbihfLnZhbHVlKTtcbiAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICB1KGcsIFwidGhyb3dcIiwgdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcIm9iamVjdFwiID09IHR5cGVvZiB5ICYmIHkgJiYgYyhmLCB5KSkgcmV0dXJuIHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoITEpO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDM0KSxcbiAgICAgICAgciA9IG4oMTU1KSxcbiAgICAgICAgcyA9IGkoXCJpdGVyYXRvclwiKSxcbiAgICAgICAgYSA9IEFycmF5LnByb3RvdHlwZTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0KSB7XG4gICAgICAgIHJldHVybiB2b2lkIDAgIT09IHQgJiYgKHIuQXJyYXkgPT09IHQgfHwgYVtzXSA9PT0gdCk7XG4gICAgICB9O1xuICAgIH0sIHQgPT4ge1xuICAgICAgdC5leHBvcnRzID0ge307XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig4KSxcbiAgICAgICAgciA9IG4oMzEpLFxuICAgICAgICBzID0gbig0NyksXG4gICAgICAgIGEgPSBuKDMyKSxcbiAgICAgICAgbyA9IG4oMTU3KSxcbiAgICAgICAgbCA9IFR5cGVFcnJvcjtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBvKHQpIDogZTtcbiAgICAgICAgaWYgKHIobikpIHJldHVybiBzKGkobiwgdCkpO1xuICAgICAgICB0aHJvdyBsKGEodCkgKyBcIiBpcyBub3QgaXRlcmFibGVcIik7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNzgpLFxuICAgICAgICByID0gbigzMCksXG4gICAgICAgIHMgPSBuKDE3KSxcbiAgICAgICAgYSA9IG4oMTU1KSxcbiAgICAgICAgbyA9IG4oMzQpKFwiaXRlcmF0b3JcIik7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBpZiAoIXModCkpIHJldHVybiByKHQsIG8pIHx8IHIodCwgXCJAQGl0ZXJhdG9yXCIpIHx8IGFbaSh0KV07XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDE4KSxcbiAgICAgICAgciA9IG4oNDUpLFxuICAgICAgICBzID0gbigxMSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCwgZSwgbikge1xuICAgICAgICB2YXIgYSA9IGkoZSk7XG4gICAgICAgIGEgaW4gdCA/IHIuZih0LCBhLCBzKDAsIG4pKSA6IHRbYV0gPSBuO1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGkgPSBuKDgpLFxuICAgICAgICByID0gbigzOSksXG4gICAgICAgIHMgPSBuKDI1KSxcbiAgICAgICAgYSA9IG4oMTYwKSxcbiAgICAgICAgbyA9IFJlZ0V4cC5wcm90b3R5cGU7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICB2YXIgZSA9IHQuZmxhZ3M7XG4gICAgICAgIHJldHVybiB2b2lkIDAgIT09IGUgfHwgXCJmbGFnc1wiIGluIG8gfHwgcih0LCBcImZsYWdzXCIpIHx8ICFzKG8sIHQpID8gZSA6IGkoYSwgdCk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDQ3KTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHQgPSBpKHRoaXMpLFxuICAgICAgICAgIGUgPSBcIlwiO1xuICAgICAgICB0Lmhhc0luZGljZXMgJiYgKGUgKz0gXCJkXCIpO1xuICAgICAgICB0Lmdsb2JhbCAmJiAoZSArPSBcImdcIik7XG4gICAgICAgIHQuaWdub3JlQ2FzZSAmJiAoZSArPSBcImlcIik7XG4gICAgICAgIHQubXVsdGlsaW5lICYmIChlICs9IFwibVwiKTtcbiAgICAgICAgdC5kb3RBbGwgJiYgKGUgKz0gXCJzXCIpO1xuICAgICAgICB0LnVuaWNvZGUgJiYgKGUgKz0gXCJ1XCIpO1xuICAgICAgICB0LnVuaWNvZGVTZXRzICYmIChlICs9IFwidlwiKTtcbiAgICAgICAgdC5zdGlja3kgJiYgKGUgKz0gXCJ5XCIpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigxNCksXG4gICAgICAgIHIgPSBNYXAucHJvdG90eXBlO1xuICAgICAgdC5leHBvcnRzID0ge1xuICAgICAgICBNYXA6IE1hcCxcbiAgICAgICAgc2V0OiBpKHIuc2V0KSxcbiAgICAgICAgZ2V0OiBpKHIuZ2V0KSxcbiAgICAgICAgaGFzOiBpKHIuaGFzKSxcbiAgICAgICAgcmVtb3ZlOiBpKHIuZGVsZXRlKSxcbiAgICAgICAgcHJvdG86IHJcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuU2VyaWFsaXphYmxlRW1wdHkgPSBlLlByaW50QW5ub3RhdGlvblN0b3JhZ2UgPSBlLkFubm90YXRpb25TdG9yYWdlID0gdm9pZCAwO1xuICAgICAgbig4OSk7XG4gICAgICBuKDE0OCk7XG4gICAgICBuKDE1MSk7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2MyksXG4gICAgICAgIHMgPSBuKDE2OSk7XG4gICAgICBjb25zdCBhID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgICAgIG1hcDogbnVsbCxcbiAgICAgICAgaGFzaDogXCJcIixcbiAgICAgICAgdHJhbnNmZXJzOiB2b2lkIDBcbiAgICAgIH0pO1xuICAgICAgZS5TZXJpYWxpemFibGVFbXB0eSA9IGE7XG4gICAgICB2YXIgX3YgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfeSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9BID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBBbm5vdGF0aW9uU3RvcmFnZSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfQSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3YsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3ksIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBNYXAoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMub25TZXRNb2RpZmllZCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5vblJlc2V0TW9kaWZpZWQgPSBudWxsO1xuICAgICAgICAgIHRoaXMub25Bbm5vdGF0aW9uRWRpdG9yID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXRWYWx1ZSh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeSkuZ2V0KHQpO1xuICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IG4gPyBlIDogT2JqZWN0LmFzc2lnbihlLCBuKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSYXdWYWx1ZSh0KSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeSkuZ2V0KHQpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZSh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KS5kZWxldGUodCk7XG4gICAgICAgICAgMCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KS5zaXplICYmIHRoaXMucmVzZXRNb2RpZmllZCgpO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHRoaXMub25Bbm5vdGF0aW9uRWRpdG9yKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KS52YWx1ZXMoKSkgaWYgKHQgaW5zdGFuY2VvZiByLkFubm90YXRpb25FZGl0b3IpIHJldHVybjtcbiAgICAgICAgICAgIHRoaXMub25Bbm5vdGF0aW9uRWRpdG9yKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRWYWx1ZSh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeSkuZ2V0KHQpO1xuICAgICAgICAgIGxldCBpID0gITE7XG4gICAgICAgICAgaWYgKHZvaWQgMCAhPT0gbikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbdCwgcl0gb2YgT2JqZWN0LmVudHJpZXMoZSkpIGlmIChuW3RdICE9PSByKSB7XG4gICAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICAgICAgblt0XSA9IHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeSkuc2V0KHQsIGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpICYmIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0EsIF9BMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICBlIGluc3RhbmNlb2Ygci5Bbm5vdGF0aW9uRWRpdG9yICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdGhpcy5vbkFubm90YXRpb25FZGl0b3IgJiYgdGhpcy5vbkFubm90YXRpb25FZGl0b3IoZS5jb25zdHJ1Y3Rvci5fdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaGFzKHQpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KS5oYXModCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0QWxsKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3kpLnNpemUgPiAwID8gKDAsIGkub2JqZWN0RnJvbU1hcCkoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KSkgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHNldEFsbCh0KSB7XG4gICAgICAgICAgZm9yIChjb25zdCBbZSwgbl0gb2YgT2JqZWN0LmVudHJpZXModCkpIHRoaXMuc2V0VmFsdWUoZSwgbik7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHNpemUoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeSkuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICByZXNldE1vZGlmaWVkKCkge1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3YpKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3YsICExKTtcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgdGhpcy5vblJlc2V0TW9kaWZpZWQgJiYgdGhpcy5vblJlc2V0TW9kaWZpZWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHByaW50KCkge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgc2VyaWFsaXphYmxlKCkge1xuICAgICAgICAgIGlmICgwID09PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3kpLnNpemUpIHJldHVybiBhO1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgTWFwKCksXG4gICAgICAgICAgICBlID0gbmV3IHMuTXVybXVySGFzaDNfNjQoKSxcbiAgICAgICAgICAgIG4gPSBbXSxcbiAgICAgICAgICAgIGkgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGxldCBvID0gITE7XG4gICAgICAgICAgZm9yIChjb25zdCBbbiwgc10gb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF95KSkge1xuICAgICAgICAgICAgY29uc3QgYSA9IHMgaW5zdGFuY2VvZiByLkFubm90YXRpb25FZGl0b3IgPyBzLnNlcmlhbGl6ZSghMSwgaSkgOiBzO1xuICAgICAgICAgICAgaWYgKGEpIHtcbiAgICAgICAgICAgICAgdC5zZXQobiwgYSk7XG4gICAgICAgICAgICAgIGUudXBkYXRlKFwiXCIuY29uY2F0KG4sIFwiOlwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoYSkpKTtcbiAgICAgICAgICAgICAgbyB8fCAobyA9ICEhYS5iaXRtYXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobykgZm9yIChjb25zdCBlIG9mIHQudmFsdWVzKCkpIGUuYml0bWFwICYmIG4ucHVzaChlLmJpdG1hcCk7XG4gICAgICAgICAgcmV0dXJuIHQuc2l6ZSA+IDAgPyB7XG4gICAgICAgICAgICBtYXA6IHQsXG4gICAgICAgICAgICBoYXNoOiBlLmhleGRpZ2VzdCgpLFxuICAgICAgICAgICAgdHJhbnNmZXJzOiBuXG4gICAgICAgICAgfSA6IGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9BMigpIHtcbiAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3YpKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF92LCAhMCk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09IHR5cGVvZiB0aGlzLm9uU2V0TW9kaWZpZWQgJiYgdGhpcy5vblNldE1vZGlmaWVkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuQW5ub3RhdGlvblN0b3JhZ2UgPSBBbm5vdGF0aW9uU3RvcmFnZTtcbiAgICAgIHZhciBfMiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSBleHRlbmRzIEFubm90YXRpb25TdG9yYWdlIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgXzIsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgbWFwOiBlLFxuICAgICAgICAgICAgICBoYXNoOiBuLFxuICAgICAgICAgICAgICB0cmFuc2ZlcnM6IGlcbiAgICAgICAgICAgIH0gPSB0LnNlcmlhbGl6YWJsZSxcbiAgICAgICAgICAgIHIgPSBzdHJ1Y3R1cmVkQ2xvbmUoZSwgbnVsbCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF8yLCB7XG4gICAgICAgICAgICBtYXA6IHIsXG4gICAgICAgICAgICBoYXNoOiBuLFxuICAgICAgICAgICAgdHJhbnNmZXJzOiBpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHByaW50KCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIlNob3VsZCBub3QgY2FsbCBQcmludEFubm90YXRpb25TdG9yYWdlLnByaW50XCIpO1xuICAgICAgICB9XG4gICAgICAgIGdldCBzZXJpYWxpemFibGUoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfMik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuUHJpbnRBbm5vdGF0aW9uU3RvcmFnZSA9IFByaW50QW5ub3RhdGlvblN0b3JhZ2U7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgX2NsYXNzMTI7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuQW5ub3RhdGlvbkVkaXRvciA9IHZvaWQgMDtcbiAgICAgIG4oODkpO1xuICAgICAgbigyKTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTY0KTtcbiAgICAgIHZhciBfUyA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9FID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3ggPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdyA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9DID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfUCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9rID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX00gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfUiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9GID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0kgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfRCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgY2xhc3MgQW5ub3RhdGlvbkVkaXRvciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF90NCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfRCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9JKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX0YpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfUik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1MsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0UsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfeCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF93LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvY3VzaW4uYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9DLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmZvY3Vzb3V0LmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfVCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfUCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfaywge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJfdWlNYW5hZ2VyXCIsIG51bGwpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9NLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBBbm5vdGF0aW9uRWRpdG9yLl96SW5kZXgrK1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPT09IEFubm90YXRpb25FZGl0b3IgJiYgKDAsIGkudW5yZWFjaGFibGUpKFwiQ2Fubm90IGluaXRpYWxpemUgQW5ub3RhdGlvbkVkaXRvci5cIik7XG4gICAgICAgICAgdGhpcy5wYXJlbnQgPSBfdDQucGFyZW50O1xuICAgICAgICAgIHRoaXMuaWQgPSBfdDQuaWQ7XG4gICAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuaGVpZ2h0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IF90NC5wYXJlbnQucGFnZUluZGV4O1xuICAgICAgICAgIHRoaXMubmFtZSA9IF90NC5uYW1lO1xuICAgICAgICAgIHRoaXMuZGl2ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl91aU1hbmFnZXIgPSBfdDQudWlNYW5hZ2VyO1xuICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbkVsZW1lbnRJZCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fd2lsbEtlZXBBc3BlY3RSYXRpbyA9ICExO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHJvdGF0aW9uOiBfZTQsXG4gICAgICAgICAgICByYXdEaW1zOiB7XG4gICAgICAgICAgICAgIHBhZ2VXaWR0aDogX24zLFxuICAgICAgICAgICAgICBwYWdlSGVpZ2h0OiBfcjMsXG4gICAgICAgICAgICAgIHBhZ2VYOiBfczQsXG4gICAgICAgICAgICAgIHBhZ2VZOiBfYTJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ID0gdGhpcy5wYXJlbnQudmlld3BvcnQ7XG4gICAgICAgICAgdGhpcy5yb3RhdGlvbiA9IF9lNDtcbiAgICAgICAgICB0aGlzLnBhZ2VSb3RhdGlvbiA9ICgzNjAgKyBfZTQgLSB0aGlzLl91aU1hbmFnZXIudmlld1BhcmFtZXRlcnMucm90YXRpb24pICUgMzYwO1xuICAgICAgICAgIHRoaXMucGFnZURpbWVuc2lvbnMgPSBbX24zLCBfcjNdO1xuICAgICAgICAgIHRoaXMucGFnZVRyYW5zbGF0aW9uID0gW19zNCwgX2EyXTtcbiAgICAgICAgICBjb25zdCBbX28yLCBfbDJdID0gdGhpcy5wYXJlbnREaW1lbnNpb25zO1xuICAgICAgICAgIHRoaXMueCA9IF90NC54IC8gX28yO1xuICAgICAgICAgIHRoaXMueSA9IF90NC55IC8gX2wyO1xuICAgICAgICAgIHRoaXMuaXNBdHRhY2hlZFRvRE9NID0gITE7XG4gICAgICAgICAgdGhpcy5kZWxldGVkID0gITE7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGdldCBfZGVmYXVsdExpbmVDb2xvcigpIHtcbiAgICAgICAgICByZXR1cm4gKDAsIGkuc2hhZG93KSh0aGlzLCBcIl9kZWZhdWx0TGluZUNvbG9yXCIsIHRoaXMuX2NvbG9yTWFuYWdlci5nZXRIZXhDb2RlKFwiQ2FudmFzVGV4dFwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGRlbGV0ZUFubm90YXRpb25FbGVtZW50KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gbmV3IEZha2VFZGl0b3Ioe1xuICAgICAgICAgICAgaWQ6IHQucGFyZW50LmdldE5leHRJZCgpLFxuICAgICAgICAgICAgcGFyZW50OiB0LnBhcmVudCxcbiAgICAgICAgICAgIHVpTWFuYWdlcjogdC5fdWlNYW5hZ2VyXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZS5hbm5vdGF0aW9uRWxlbWVudElkID0gdC5hbm5vdGF0aW9uRWxlbWVudElkO1xuICAgICAgICAgIGUuZGVsZXRlZCA9ICEwO1xuICAgICAgICAgIGUuX3VpTWFuYWdlci5hZGRUb0Fubm90YXRpb25TdG9yYWdlKGUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBpbml0aWFsaXplKHQpIHt9XG4gICAgICAgIHN0YXRpYyB1cGRhdGVEZWZhdWx0UGFyYW1zKHQsIGUpIHt9XG4gICAgICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgYWRkQ29tbWFuZHModCkge1xuICAgICAgICAgIHRoaXMuX3VpTWFuYWdlci5hZGRDb21tYW5kcyh0KTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgY3VycmVudExheWVyKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl91aU1hbmFnZXIuY3VycmVudExheWVyO1xuICAgICAgICB9XG4gICAgICAgIHNldEluQmFja2dyb3VuZCgpIHtcbiAgICAgICAgICB0aGlzLmRpdi5zdHlsZS56SW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHNldEluRm9yZWdyb3VuZCgpIHtcbiAgICAgICAgICB0aGlzLmRpdi5zdHlsZS56SW5kZXggPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX00pO1xuICAgICAgICB9XG4gICAgICAgIHNldFBhcmVudCh0KSB7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gdC5wYWdlSW5kZXg7XG4gICAgICAgICAgICB0aGlzLnBhZ2VEaW1lbnNpb25zID0gdC5wYWdlRGltZW5zaW9ucztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJlbnQgPSB0O1xuICAgICAgICB9XG4gICAgICAgIGZvY3VzaW4odCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVCkgPyBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1QsICExKSA6IHRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGZvY3Vzb3V0KHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZFRvRE9NKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZSA9IHQucmVsYXRlZFRhcmdldDtcbiAgICAgICAgICBpZiAoIShlICE9PSBudWxsICYmIGUgIT09IHZvaWQgMCAmJiBlLmNsb3Nlc3QoXCIjXCIuY29uY2F0KHRoaXMuaWQpKSkpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyRwYXJlbnQ7XG4gICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoKF90aGlzJHBhcmVudCA9IHRoaXMucGFyZW50KSA9PT0gbnVsbCB8fCBfdGhpcyRwYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHBhcmVudC5pc011bHRpcGxlU2VsZWN0aW9uKSB8fCB0aGlzLmNvbW1pdE9yUmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbW1pdE9yUmVtb3ZlKCkge1xuICAgICAgICAgIHRoaXMuaXNFbXB0eSgpID8gdGhpcy5yZW1vdmUoKSA6IHRoaXMuY29tbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0KCkge1xuICAgICAgICAgIHRoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGFkZFRvQW5ub3RhdGlvblN0b3JhZ2UoKSB7XG4gICAgICAgICAgdGhpcy5fdWlNYW5hZ2VyLmFkZFRvQW5ub3RhdGlvblN0b3JhZ2UodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZHJhZ3N0YXJ0KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5wYXJlbnQuZGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIHRoaXMuc3RhcnRYID0gdC5jbGllbnRYIC0gZS54O1xuICAgICAgICAgIHRoaXMuc3RhcnRZID0gdC5jbGllbnRZIC0gZS55O1xuICAgICAgICAgIHQuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJ0ZXh0L3BsYWluXCIsIHRoaXMuaWQpO1xuICAgICAgICAgIHQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcbiAgICAgICAgfVxuICAgICAgICBzZXRBdCh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgY29uc3QgW3IsIHNdID0gdGhpcy5wYXJlbnREaW1lbnNpb25zO1xuICAgICAgICAgIFtuLCBpXSA9IHRoaXMuc2NyZWVuVG9QYWdlVHJhbnNsYXRpb24obiwgaSk7XG4gICAgICAgICAgdGhpcy54ID0gKHQgKyBuKSAvIHI7XG4gICAgICAgICAgdGhpcy55ID0gKGUgKyBpKSAvIHM7XG4gICAgICAgICAgdGhpcy5maXhBbmRTZXRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHRyYW5zbGF0ZSh0LCBlKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfUiwgX1IyKS5jYWxsKHRoaXMsIHRoaXMucGFyZW50RGltZW5zaW9ucywgdCwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNsYXRlSW5QYWdlKHQsIGUpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9SLCBfUjIpLmNhbGwodGhpcywgdGhpcy5wYWdlRGltZW5zaW9ucywgdCwgZSk7XG4gICAgICAgICAgdGhpcy5kaXYuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmxvY2s6IFwibmVhcmVzdFwiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZml4QW5kU2V0UG9zaXRpb24oKSB7XG4gICAgICAgICAgY29uc3QgW3QsIGVdID0gdGhpcy5wYWdlRGltZW5zaW9ucztcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgeDogbixcbiAgICAgICAgICAgIHk6IGksXG4gICAgICAgICAgICB3aWR0aDogcixcbiAgICAgICAgICAgIGhlaWdodDogc1xuICAgICAgICAgIH0gPSB0aGlzO1xuICAgICAgICAgIHIgKj0gdDtcbiAgICAgICAgICBzICo9IGU7XG4gICAgICAgICAgbiAqPSB0O1xuICAgICAgICAgIGkgKj0gZTtcbiAgICAgICAgICBzd2l0Y2ggKHRoaXMucm90YXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgbiA9IE1hdGgubWF4KDAsIE1hdGgubWluKHQgLSByLCBuKSk7XG4gICAgICAgICAgICAgIGkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihlIC0gcywgaSkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgIG4gPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0IC0gcywgbikpO1xuICAgICAgICAgICAgICBpID0gTWF0aC5taW4oZSwgTWF0aC5tYXgociwgaSkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTgwOlxuICAgICAgICAgICAgICBuID0gTWF0aC5taW4odCwgTWF0aC5tYXgociwgbikpO1xuICAgICAgICAgICAgICBpID0gTWF0aC5taW4oZSwgTWF0aC5tYXgocywgaSkpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjcwOlxuICAgICAgICAgICAgICBuID0gTWF0aC5taW4odCwgTWF0aC5tYXgocywgbikpO1xuICAgICAgICAgICAgICBpID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZSAtIHIsIGkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy54ID0gbiAvIHQ7XG4gICAgICAgICAgdGhpcy55ID0gaSAvIGU7XG4gICAgICAgICAgdGhpcy5kaXYuc3R5bGUubGVmdCA9IFwiXCIuY29uY2F0KCgxMDAgKiB0aGlzLngpLnRvRml4ZWQoMiksIFwiJVwiKTtcbiAgICAgICAgICB0aGlzLmRpdi5zdHlsZS50b3AgPSBcIlwiLmNvbmNhdCgoMTAwICogdGhpcy55KS50b0ZpeGVkKDIpLCBcIiVcIik7XG4gICAgICAgIH1cbiAgICAgICAgc2NyZWVuVG9QYWdlVHJhbnNsYXRpb24odCwgZSkge1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5wYXJlbnRSb3RhdGlvbikge1xuICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtlLCAtdF07XG4gICAgICAgICAgICBjYXNlIDE4MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFstdCwgLWVdO1xuICAgICAgICAgICAgY2FzZSAyNzA6XG4gICAgICAgICAgICAgIHJldHVybiBbLWUsIHRdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIFt0LCBlXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFnZVRyYW5zbGF0aW9uVG9TY3JlZW4odCwgZSkge1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5wYXJlbnRSb3RhdGlvbikge1xuICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFstZSwgdF07XG4gICAgICAgICAgICBjYXNlIDE4MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFstdCwgLWVdO1xuICAgICAgICAgICAgY2FzZSAyNzA6XG4gICAgICAgICAgICAgIHJldHVybiBbZSwgLXRdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIFt0LCBlXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHBhcmVudFNjYWxlKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl91aU1hbmFnZXIudmlld1BhcmFtZXRlcnMucmVhbFNjYWxlO1xuICAgICAgICB9XG4gICAgICAgIGdldCBwYXJlbnRSb3RhdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gKHRoaXMuX3VpTWFuYWdlci52aWV3UGFyYW1ldGVycy5yb3RhdGlvbiArIHRoaXMucGFnZVJvdGF0aW9uKSAlIDM2MDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgcGFyZW50RGltZW5zaW9ucygpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlYWxTY2FsZTogdFxuICAgICAgICAgICAgfSA9IHRoaXMuX3VpTWFuYWdlci52aWV3UGFyYW1ldGVycyxcbiAgICAgICAgICAgIFtlLCBuXSA9IHRoaXMucGFnZURpbWVuc2lvbnM7XG4gICAgICAgICAgcmV0dXJuIFtlICogdCwgbiAqIHRdO1xuICAgICAgICB9XG4gICAgICAgIHNldERpbXModCwgZSkge1xuICAgICAgICAgIGNvbnN0IFtuLCBpXSA9IHRoaXMucGFyZW50RGltZW5zaW9ucztcbiAgICAgICAgICB0aGlzLmRpdi5zdHlsZS53aWR0aCA9IFwiXCIuY29uY2F0KCgxMDAgKiB0IC8gbikudG9GaXhlZCgyKSwgXCIlXCIpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUykgfHwgKHRoaXMuZGl2LnN0eWxlLmhlaWdodCA9IFwiXCIuY29uY2F0KCgxMDAgKiBlIC8gaSkudG9GaXhlZCgyKSwgXCIlXCIpKTtcbiAgICAgICAgfVxuICAgICAgICBmaXhEaW1zKCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgc3R5bGU6IHRcbiAgICAgICAgICAgIH0gPSB0aGlzLmRpdixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiBlLFxuICAgICAgICAgICAgICB3aWR0aDogblxuICAgICAgICAgICAgfSA9IHQsXG4gICAgICAgICAgICBpID0gbi5lbmRzV2l0aChcIiVcIiksXG4gICAgICAgICAgICByID0gIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUykgJiYgZS5lbmRzV2l0aChcIiVcIik7XG4gICAgICAgICAgaWYgKGkgJiYgcikgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IFtzLCBhXSA9IHRoaXMucGFyZW50RGltZW5zaW9ucztcbiAgICAgICAgICBpIHx8ICh0LndpZHRoID0gXCJcIi5jb25jYXQoKDEwMCAqIHBhcnNlRmxvYXQobikgLyBzKS50b0ZpeGVkKDIpLCBcIiVcIikpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUykgfHwgciB8fCAodC5oZWlnaHQgPSBcIlwiLmNvbmNhdCgoMTAwICogcGFyc2VGbG9hdChlKSAvIGEpLnRvRml4ZWQoMiksIFwiJVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0SW5pdGlhbFRyYW5zbGF0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBbMCwgMF07XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICB0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoXCJkYXRhLWVkaXRvci1yb3RhdGlvblwiLCAoMzYwIC0gdGhpcy5yb3RhdGlvbikgJSAzNjApO1xuICAgICAgICAgIHRoaXMuZGl2LmNsYXNzTmFtZSA9IHRoaXMubmFtZTtcbiAgICAgICAgICB0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLmlkKTtcbiAgICAgICAgICB0aGlzLmRpdi5zZXRBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiLCAwKTtcbiAgICAgICAgICB0aGlzLnNldEluRm9yZWdyb3VuZCgpO1xuICAgICAgICAgIHRoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdykpO1xuICAgICAgICAgIHRoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0MpKTtcbiAgICAgICAgICBjb25zdCBbdCwgZV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnM7XG4gICAgICAgICAgaWYgKHRoaXMucGFyZW50Um90YXRpb24gJSAxODAgIT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kaXYuc3R5bGUubWF4V2lkdGggPSBcIlwiLmNvbmNhdCgoMTAwICogZSAvIHQpLnRvRml4ZWQoMiksIFwiJVwiKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LnN0eWxlLm1heEhlaWdodCA9IFwiXCIuY29uY2F0KCgxMDAgKiB0IC8gZSkudG9GaXhlZCgyKSwgXCIlXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBbbiwgaV0gPSB0aGlzLmdldEluaXRpYWxUcmFuc2xhdGlvbigpO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlKG4sIGkpO1xuICAgICAgICAgICgwLCByLmJpbmRFdmVudHMpKHRoaXMsIHRoaXMuZGl2LCBbXCJkcmFnc3RhcnRcIiwgXCJwb2ludGVyZG93blwiXSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGl2O1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJkb3duKHQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpc01hYzogZVxuICAgICAgICAgIH0gPSBpLkZlYXR1cmVUZXN0LnBsYXRmb3JtO1xuICAgICAgICAgIGlmICgwICE9PSB0LmJ1dHRvbiB8fCB0LmN0cmxLZXkgJiYgZSkgdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2Uge1xuICAgICAgICAgICAgdC5jdHJsS2V5ICYmICFlIHx8IHQuc2hpZnRLZXkgfHwgdC5tZXRhS2V5ICYmIGUgPyB0aGlzLnBhcmVudC50b2dnbGVTZWxlY3RlZCh0aGlzKSA6IHRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ULCAhMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldFJlY3QodCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLnBhcmVudFNjYWxlLFxuICAgICAgICAgICAgW2ksIHJdID0gdGhpcy5wYWdlRGltZW5zaW9ucyxcbiAgICAgICAgICAgIFtzLCBhXSA9IHRoaXMucGFnZVRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgbyA9IHQgLyBuLFxuICAgICAgICAgICAgbCA9IGUgLyBuLFxuICAgICAgICAgICAgYyA9IHRoaXMueCAqIGksXG4gICAgICAgICAgICBoID0gdGhpcy55ICogcixcbiAgICAgICAgICAgIGQgPSB0aGlzLndpZHRoICogaSxcbiAgICAgICAgICAgIHUgPSB0aGlzLmhlaWdodCAqIHI7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbYyArIG8gKyBzLCByIC0gaCAtIGwgLSB1ICsgYSwgYyArIG8gKyBkICsgcywgciAtIGggLSBsICsgYV07XG4gICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICByZXR1cm4gW2MgKyBsICsgcywgciAtIGggKyBvICsgYSwgYyArIGwgKyB1ICsgcywgciAtIGggKyBvICsgZCArIGFdO1xuICAgICAgICAgICAgY2FzZSAxODA6XG4gICAgICAgICAgICAgIHJldHVybiBbYyAtIG8gLSBkICsgcywgciAtIGggKyBsICsgYSwgYyAtIG8gKyBzLCByIC0gaCArIGwgKyB1ICsgYV07XG4gICAgICAgICAgICBjYXNlIDI3MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtjIC0gbCAtIHUgKyBzLCByIC0gaCAtIG8gLSBkICsgYSwgYyAtIGwgKyBzLCByIC0gaCAtIG8gKyBhXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcm90YXRpb25cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldFJlY3RJbkN1cnJlbnRDb29yZHModCwgZSkge1xuICAgICAgICAgIGNvbnN0IFtuLCBpLCByLCBzXSA9IHQsXG4gICAgICAgICAgICBhID0gciAtIG4sXG4gICAgICAgICAgICBvID0gcyAtIGk7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLnJvdGF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIHJldHVybiBbbiwgZSAtIHMsIGEsIG9dO1xuICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtuLCBlIC0gaSwgbywgYV07XG4gICAgICAgICAgICBjYXNlIDE4MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtyLCBlIC0gaSwgYSwgb107XG4gICAgICAgICAgICBjYXNlIDI3MDpcbiAgICAgICAgICAgICAgcmV0dXJuIFtyLCBlIC0gcywgbywgYV07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdGF0aW9uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbmNlQWRkZWQoKSB7fVxuICAgICAgICBpc0VtcHR5KCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBlbmFibGVFZGl0TW9kZSgpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2ssICEwKTtcbiAgICAgICAgfVxuICAgICAgICBkaXNhYmxlRWRpdE1vZGUoKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9rLCAhMSk7XG4gICAgICAgIH1cbiAgICAgICAgaXNJbkVkaXRNb2RlKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2spO1xuICAgICAgICB9XG4gICAgICAgIHNob3VsZEdldEtleWJvYXJkRXZlbnRzKCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBuZWVkc1RvQmVSZWJ1aWx0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmRpdiAmJiAhdGhpcy5pc0F0dGFjaGVkVG9ET007XG4gICAgICAgIH1cbiAgICAgICAgcmVidWlsZCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkZGl2LCBfdGhpcyRkaXYyO1xuICAgICAgICAgIChfdGhpcyRkaXYgPSB0aGlzLmRpdikgPT09IG51bGwgfHwgX3RoaXMkZGl2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkaXYuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF93KSk7XG4gICAgICAgICAgKF90aGlzJGRpdjIgPSB0aGlzLmRpdikgPT09IG51bGwgfHwgX3RoaXMkZGl2MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZGl2Mi5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9DKSk7XG4gICAgICAgIH1cbiAgICAgICAgc2VyaWFsaXplKCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIkFuIGVkaXRvciBtdXN0IGJlIHNlcmlhbGl6YWJsZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZGVzZXJpYWxpemUodCwgZSwgbikge1xuICAgICAgICAgIGNvbnN0IGkgPSBuZXcgdGhpcy5wcm90b3R5cGUuY29uc3RydWN0b3Ioe1xuICAgICAgICAgICAgcGFyZW50OiBlLFxuICAgICAgICAgICAgaWQ6IGUuZ2V0TmV4dElkKCksXG4gICAgICAgICAgICB1aU1hbmFnZXI6IG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpLnJvdGF0aW9uID0gdC5yb3RhdGlvbjtcbiAgICAgICAgICBjb25zdCBbciwgc10gPSBpLnBhZ2VEaW1lbnNpb25zLFxuICAgICAgICAgICAgW2EsIG8sIGwsIGNdID0gaS5nZXRSZWN0SW5DdXJyZW50Q29vcmRzKHQucmVjdCwgcyk7XG4gICAgICAgICAgaS54ID0gYSAvIHI7XG4gICAgICAgICAgaS55ID0gbyAvIHM7XG4gICAgICAgICAgaS53aWR0aCA9IGwgLyByO1xuICAgICAgICAgIGkuaGVpZ2h0ID0gYyAvIHM7XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgcmVtb3ZlKCkge1xuICAgICAgICAgIHRoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdykpO1xuICAgICAgICAgIHRoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0MpKTtcbiAgICAgICAgICB0aGlzLmlzRW1wdHkoKSB8fCB0aGlzLmNvbW1pdCgpO1xuICAgICAgICAgIHRoaXMucGFyZW50ID8gdGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpIDogdGhpcy5fdWlNYW5hZ2VyLnJlbW92ZUVkaXRvcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaXNSZXNpemFibGUoKSB7XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIG1ha2VSZXNpemFibGUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXNpemFibGUpIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0YsIF9GMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRSkuY2xhc3NMaXN0LnJlbW92ZShcImhpZGRlblwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0KCkge1xuICAgICAgICAgIHZhciBfdGhpcyRkaXYzO1xuICAgICAgICAgIHRoaXMubWFrZVJlc2l6YWJsZSgpO1xuICAgICAgICAgIChfdGhpcyRkaXYzID0gdGhpcy5kaXYpID09PSBudWxsIHx8IF90aGlzJGRpdjMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRpdjMuY2xhc3NMaXN0LmFkZChcInNlbGVjdGVkRWRpdG9yXCIpO1xuICAgICAgICB9XG4gICAgICAgIHVuc2VsZWN0KCkge1xuICAgICAgICAgIHZhciBfY2xhc3NQcml2YXRlRmllbGRHZXQzLCBfdGhpcyRkaXY0LCBfdGhpcyRkaXY1O1xuICAgICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQzID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9FKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0My5jbGFzc0xpc3QuYWRkKFwiaGlkZGVuXCIpO1xuICAgICAgICAgIChfdGhpcyRkaXY0ID0gdGhpcy5kaXYpID09PSBudWxsIHx8IF90aGlzJGRpdjQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRpdjQuY2xhc3NMaXN0LnJlbW92ZShcInNlbGVjdGVkRWRpdG9yXCIpO1xuICAgICAgICAgICgoX3RoaXMkZGl2NSA9IHRoaXMuZGl2KSA9PT0gbnVsbCB8fCBfdGhpcyRkaXY1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkaXY1LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSAmJiB0aGlzLl91aU1hbmFnZXIuY3VycmVudExheWVyLmRpdi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVBhcmFtcyh0LCBlKSB7fVxuICAgICAgICBkaXNhYmxlRWRpdGluZygpIHt9XG4gICAgICAgIGVuYWJsZUVkaXRpbmcoKSB7fVxuICAgICAgICBlbnRlckluRWRpdE1vZGUoKSB7fVxuICAgICAgICBnZXQgY29udGVudERpdigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kaXY7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzRWRpdGluZygpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9QKTtcbiAgICAgICAgfVxuICAgICAgICBzZXQgaXNFZGl0aW5nKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1AsIHQpO1xuICAgICAgICAgIGlmICh0aGlzLnBhcmVudCkgaWYgKHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFNlbGVjdGVkKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0QWN0aXZlRWRpdG9yKHRoaXMpO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLnBhcmVudC5zZXRBY3RpdmVFZGl0b3IobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0QXNwZWN0UmF0aW8odCwgZSkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfUywgITApO1xuICAgICAgICAgIGNvbnN0IG4gPSB0IC8gZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3R5bGU6IGlcbiAgICAgICAgICAgIH0gPSB0aGlzLmRpdjtcbiAgICAgICAgICBpLmFzcGVjdFJhdGlvID0gbjtcbiAgICAgICAgICBpLmhlaWdodCA9IFwiYXV0b1wiO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBnZXQgTUlOX1NJWkUoKSB7XG4gICAgICAgICAgcmV0dXJuIDE2O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfY2xhc3MxMiA9IEFubm90YXRpb25FZGl0b3I7XG4gICAgICBmdW5jdGlvbiBfUjIodCwgZSwgbikge1xuICAgICAgICBsZXQgW2ksIHJdID0gdDtcbiAgICAgICAgW2UsIG5dID0gdGhpcy5zY3JlZW5Ub1BhZ2VUcmFuc2xhdGlvbihlLCBuKTtcbiAgICAgICAgdGhpcy54ICs9IGUgLyBpO1xuICAgICAgICB0aGlzLnkgKz0gbiAvIHI7XG4gICAgICAgIHRoaXMuZml4QW5kU2V0UG9zaXRpb24oKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9GMigpIHtcbiAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRSkpIHJldHVybjtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9FLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9FKS5jbGFzc0xpc3QuYWRkKFwicmVzaXplcnNcIik7XG4gICAgICAgIGNvbnN0IHQgPSBbXCJ0b3BMZWZ0XCIsIFwidG9wUmlnaHRcIiwgXCJib3R0b21SaWdodFwiLCBcImJvdHRvbUxlZnRcIl07XG4gICAgICAgIHRoaXMuX3dpbGxLZWVwQXNwZWN0UmF0aW8gfHwgdC5wdXNoKFwidG9wTWlkZGxlXCIsIFwibWlkZGxlUmlnaHRcIiwgXCJib3R0b21NaWRkbGVcIiwgXCJtaWRkbGVMZWZ0XCIpO1xuICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdCkge1xuICAgICAgICAgIGNvbnN0IHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRSkuYXBwZW5kKHQpO1xuICAgICAgICAgIHQuY2xhc3NMaXN0LmFkZChcInJlc2l6ZXJcIiwgZSk7XG4gICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfSSwgX0kyKS5iaW5kKHRoaXMsIGUpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpdi5wcmVwZW5kKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRSkpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0kyKHQsIGUpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3gsIFtlLmNsaWVudFgsIGUuY2xpZW50WV0pO1xuICAgICAgICBjb25zdCBuID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfRCwgX0QyKS5iaW5kKHRoaXMsIHQpLFxuICAgICAgICAgIGkgPSB0aGlzLmRpdi5kcmFnZ2FibGU7XG4gICAgICAgIHRoaXMuZGl2LmRyYWdnYWJsZSA9ICExO1xuICAgICAgICBjb25zdCByID0gXCJyZXNpemluZ1wiLmNvbmNhdCh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKS5jb25jYXQodC5zbGljZSgxKSk7XG4gICAgICAgIHRoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKHIpO1xuICAgICAgICBjb25zdCBzID0ge1xuICAgICAgICAgIHBhc3NpdmU6ICEwLFxuICAgICAgICAgIGNhcHR1cmU6ICEwXG4gICAgICAgIH07XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIiwgbiwgcyk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIsICgpID0+IHtcbiAgICAgICAgICB0aGlzLl91aU1hbmFnZXIuc3RvcFVuZG9BY2N1bXVsYXRpb24oKTtcbiAgICAgICAgICB0aGlzLmRpdi5kcmFnZ2FibGUgPSBpO1xuICAgICAgICAgIHRoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QucmVtb3ZlKHIpO1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIiwgbiwgcyk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBvbmNlOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9EMih0LCBlKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsaWVudFg6IG4sXG4gICAgICAgICAgICBjbGllbnRZOiByXG4gICAgICAgICAgfSA9IGUsXG4gICAgICAgICAgcyA9IG4gLSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3gpWzBdLFxuICAgICAgICAgIGEgPSByIC0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF94KVsxXTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF94KVswXSA9IG47XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeClbMV0gPSByO1xuICAgICAgICBjb25zdCBbbywgbF0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnMsXG4gICAgICAgICAgYyA9IHRoaXMueCxcbiAgICAgICAgICBoID0gdGhpcy55LFxuICAgICAgICAgIGQgPSB0aGlzLndpZHRoLFxuICAgICAgICAgIHUgPSB0aGlzLmhlaWdodCxcbiAgICAgICAgICBwID0gX2NsYXNzMTIuTUlOX1NJWkUgLyBvLFxuICAgICAgICAgIGYgPSBfY2xhc3MxMi5NSU5fU0laRSAvIGw7XG4gICAgICAgIGxldCBnO1xuICAgICAgICBjb25zdCByb3VuZCA9IHQgPT4gTWF0aC5yb3VuZCgxZTQgKiB0KSAvIDFlNCxcbiAgICAgICAgICB1cGRhdGVQb3NpdGlvbiA9ICh0LCBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbbiwgaV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnM7XG4gICAgICAgICAgICB0aGlzLnNldERpbXMobiAqIHQsIGkgKiBlKTtcbiAgICAgICAgICAgIHRoaXMuZml4QW5kU2V0UG9zaXRpb24oKTtcbiAgICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICBjYXNlIFwidG9wTGVmdFwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoTWF0aC5zaWduKHMpICogTWF0aC5zaWduKGEpIDwgMCkgcmV0dXJuO1xuICAgICAgICAgICAgICBjb25zdCB0ID0gTWF0aC5oeXBvdChzLCBhKSxcbiAgICAgICAgICAgICAgICBlID0gTWF0aC5oeXBvdChkICogbywgdSAqIGwpLFxuICAgICAgICAgICAgICAgIG4gPSByb3VuZChjICsgZCksXG4gICAgICAgICAgICAgICAgaSA9IHJvdW5kKGggKyB1KSxcbiAgICAgICAgICAgICAgICByID0gTWF0aC5tYXgoTWF0aC5taW4oMSAtIE1hdGguc2lnbihzKSAqICh0IC8gZSksIDEgLyBkLCAxIC8gdSksIHAgLyBkLCBmIC8gdSksXG4gICAgICAgICAgICAgICAgbSA9IHJvdW5kKGQgKiByKSxcbiAgICAgICAgICAgICAgICBiID0gcm91bmQodSAqIHIpLFxuICAgICAgICAgICAgICAgIHYgPSBuIC0gbSxcbiAgICAgICAgICAgICAgICB5ID0gaSAtIGI7XG4gICAgICAgICAgICAgIGcgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IG07XG4gICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBiO1xuICAgICAgICAgICAgICAgIHRoaXMueCA9IHY7XG4gICAgICAgICAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihtLCBiKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcInRvcE1pZGRsZVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gcm91bmQodGhpcy55ICsgdSksXG4gICAgICAgICAgICAgICAgZSA9IHJvdW5kKE1hdGgubWF4KGYsIE1hdGgubWluKDEsIHUgLSBhIC8gbCkpKSxcbiAgICAgICAgICAgICAgICBuID0gdCAtIGU7XG4gICAgICAgICAgICAgIGcgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBlO1xuICAgICAgICAgICAgICAgIHRoaXMueSA9IG47XG4gICAgICAgICAgICAgICAgdXBkYXRlUG9zaXRpb24oZCwgZSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJ0b3BSaWdodFwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoTWF0aC5zaWduKHMpICogTWF0aC5zaWduKGEpID4gMCkgcmV0dXJuO1xuICAgICAgICAgICAgICBjb25zdCB0ID0gTWF0aC5oeXBvdChzLCBhKSxcbiAgICAgICAgICAgICAgICBlID0gTWF0aC5oeXBvdCh0aGlzLndpZHRoICogbywgdGhpcy5oZWlnaHQgKiBsKSxcbiAgICAgICAgICAgICAgICBuID0gcm91bmQoaCArIHRoaXMuaGVpZ2h0KSxcbiAgICAgICAgICAgICAgICBpID0gTWF0aC5tYXgoTWF0aC5taW4oMSArIE1hdGguc2lnbihzKSAqICh0IC8gZSksIDEgLyBkLCAxIC8gdSksIHAgLyBkLCBmIC8gdSksXG4gICAgICAgICAgICAgICAgciA9IHJvdW5kKGQgKiBpKSxcbiAgICAgICAgICAgICAgICBjID0gcm91bmQodSAqIGkpLFxuICAgICAgICAgICAgICAgIG0gPSBuIC0gYztcbiAgICAgICAgICAgICAgZyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gcjtcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IGM7XG4gICAgICAgICAgICAgICAgdGhpcy55ID0gbTtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihyLCBjKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIm1pZGRsZVJpZ2h0XCI6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnN0IHQgPSByb3VuZChNYXRoLm1heChwLCBNYXRoLm1pbigxLCBkICsgcyAvIG8pKSk7XG4gICAgICAgICAgICAgIGcgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWR0aCA9IHQ7XG4gICAgICAgICAgICAgICAgdXBkYXRlUG9zaXRpb24odCwgdSk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJib3R0b21SaWdodFwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZiAoTWF0aC5zaWduKHMpICogTWF0aC5zaWduKGEpIDwgMCkgcmV0dXJuO1xuICAgICAgICAgICAgICBjb25zdCB0ID0gTWF0aC5oeXBvdChzLCBhKSxcbiAgICAgICAgICAgICAgICBlID0gTWF0aC5oeXBvdCh0aGlzLndpZHRoICogbywgdGhpcy5oZWlnaHQgKiBsKSxcbiAgICAgICAgICAgICAgICBuID0gTWF0aC5tYXgoTWF0aC5taW4oMSArIE1hdGguc2lnbihzKSAqICh0IC8gZSksIDEgLyBkLCAxIC8gdSksIHAgLyBkLCBmIC8gdSksXG4gICAgICAgICAgICAgICAgaSA9IHJvdW5kKGQgKiBuKSxcbiAgICAgICAgICAgICAgICByID0gcm91bmQodSAqIG4pO1xuICAgICAgICAgICAgICBnID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSBpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcjtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihpLCByKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcImJvdHRvbU1pZGRsZVwiOlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gcm91bmQoTWF0aC5tYXgoZiwgTWF0aC5taW4oMSwgdSArIGEgLyBsKSkpO1xuICAgICAgICAgICAgICBnID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gdDtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihkLCB0KTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcImJvdHRvbUxlZnRcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWYgKE1hdGguc2lnbihzKSAqIE1hdGguc2lnbihhKSA+IDApIHJldHVybjtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IE1hdGguaHlwb3QocywgYSksXG4gICAgICAgICAgICAgICAgZSA9IE1hdGguaHlwb3QodGhpcy53aWR0aCAqIG8sIHRoaXMuaGVpZ2h0ICogbCksXG4gICAgICAgICAgICAgICAgbiA9IHJvdW5kKGMgKyB0aGlzLndpZHRoKSxcbiAgICAgICAgICAgICAgICBpID0gTWF0aC5tYXgoTWF0aC5taW4oMSAtIE1hdGguc2lnbihzKSAqICh0IC8gZSksIDEgLyBkLCAxIC8gdSksIHAgLyBkLCBmIC8gdSksXG4gICAgICAgICAgICAgICAgciA9IHJvdW5kKGQgKiBpKSxcbiAgICAgICAgICAgICAgICBoID0gcm91bmQodSAqIGkpLFxuICAgICAgICAgICAgICAgIG0gPSBuIC0gcjtcbiAgICAgICAgICAgICAgZyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gcjtcbiAgICAgICAgICAgICAgICB0aGlzLmhlaWdodCA9IGg7XG4gICAgICAgICAgICAgICAgdGhpcy54ID0gbTtcbiAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbihyLCBoKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIm1pZGRsZUxlZnRcIjpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IHJvdW5kKGMgKyBkKSxcbiAgICAgICAgICAgICAgICBlID0gcm91bmQoTWF0aC5tYXgocCwgTWF0aC5taW4oMSwgZCAtIHMgLyBvKSkpLFxuICAgICAgICAgICAgICAgIG4gPSB0IC0gZTtcbiAgICAgICAgICAgICAgZyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLndpZHRoID0gZTtcbiAgICAgICAgICAgICAgICB0aGlzLnggPSBuO1xuICAgICAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKGUsIHUpO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZENvbW1hbmRzKHtcbiAgICAgICAgICBjbWQ6IGcsXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy53aWR0aCA9IGQ7XG4gICAgICAgICAgICB0aGlzLmhlaWdodCA9IHU7XG4gICAgICAgICAgICB0aGlzLnggPSBjO1xuICAgICAgICAgICAgdGhpcy55ID0gaDtcbiAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uKGQsIHUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbXVzdEV4ZWM6ICEwLFxuICAgICAgICAgIHR5cGU6IGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuUkVTSVpFLFxuICAgICAgICAgIG92ZXJ3cml0ZUlmU2FtZVR5cGU6ICEwLFxuICAgICAgICAgIGtlZXBVbmRvOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShBbm5vdGF0aW9uRWRpdG9yLCBcIl9jb2xvck1hbmFnZXJcIiwgbmV3IHIuQ29sb3JNYW5hZ2VyKCkpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KEFubm90YXRpb25FZGl0b3IsIFwiX3pJbmRleFwiLCAxKTtcbiAgICAgIGUuQW5ub3RhdGlvbkVkaXRvciA9IEFubm90YXRpb25FZGl0b3I7XG4gICAgICBjbGFzcyBGYWtlRWRpdG9yIGV4dGVuZHMgQW5ub3RhdGlvbkVkaXRvciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBzdXBlcih0KTtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25FbGVtZW50SWQgPSB0LmFubm90YXRpb25FbGVtZW50SWQ7XG4gICAgICAgICAgdGhpcy5kZWxldGVkID0gITA7XG4gICAgICAgIH1cbiAgICAgICAgc2VyaWFsaXplKCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGhpcy5hbm5vdGF0aW9uRWxlbWVudElkLFxuICAgICAgICAgICAgZGVsZXRlZDogITAsXG4gICAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLktleWJvYXJkTWFuYWdlciA9IGUuQ29tbWFuZE1hbmFnZXIgPSBlLkNvbG9yTWFuYWdlciA9IGUuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlciA9IHZvaWQgMDtcbiAgICAgIGUuYmluZEV2ZW50cyA9IGZ1bmN0aW9uIGJpbmRFdmVudHModCwgZSwgbikge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgbikgZS5hZGRFdmVudExpc3RlbmVyKGksIHRbaV0uYmluZCh0KSk7XG4gICAgICB9O1xuICAgICAgZS5vcGFjaXR5VG9IZXggPSBmdW5jdGlvbiBvcGFjaXR5VG9IZXgodCkge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1pbigyNTUsIE1hdGgubWF4KDEsIDI1NSAqIHQpKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgICAgIH07XG4gICAgICBuKDIpO1xuICAgICAgbig4OSk7XG4gICAgICBuKDEyNSk7XG4gICAgICBuKDEzNSk7XG4gICAgICBuKDEzNyk7XG4gICAgICBuKDE0MCk7XG4gICAgICBuKDE0Mik7XG4gICAgICBuKDE0NCk7XG4gICAgICBuKDE0Nik7XG4gICAgICBuKDE2NSk7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2Nyk7XG4gICAgICB2YXIgX08gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNsYXNzIElkTWFuYWdlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9PLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0SWQoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJE8sIF90aGlzJE8yO1xuICAgICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChpLkFubm90YXRpb25FZGl0b3JQcmVmaXgpLmNvbmNhdCgoX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9PLCAoX3RoaXMkTyA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTyksIF90aGlzJE8yID0gX3RoaXMkTysrLCBfdGhpcyRPKSksIF90aGlzJE8yKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBfTCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9PMiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9OID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0IgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIEltYWdlTWFuYWdlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfQik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0wsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICgwLCBpLmdldFV1aWQpKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfTzIsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfTiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIGdldEZyb21GaWxlKHQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGUsXG4gICAgICAgICAgICBuYW1lOiBuLFxuICAgICAgICAgICAgc2l6ZTogaSxcbiAgICAgICAgICAgIHR5cGU6IHJcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfQiwgX0IyKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KGUsIFwiX1wiKS5jb25jYXQobiwgXCJfXCIpLmNvbmNhdChpLCBcIl9cIikuY29uY2F0KHIpLCB0KTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyBnZXRGcm9tVXJsKHQpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfQiwgX0IyKS5jYWxsKHRoaXMsIHQsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIGdldEZyb21JZCh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OKSB8fCBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX04sIG5ldyBNYXAoKSk7XG4gICAgICAgICAgY29uc3QgZSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikuZ2V0KHQpO1xuICAgICAgICAgIGlmICghZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgaWYgKGUuYml0bWFwKSB7XG4gICAgICAgICAgICBlLnJlZkNvdW50ZXIgKz0gMTtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZS5maWxlID8gdGhpcy5nZXRGcm9tRmlsZShlLmZpbGUpIDogdGhpcy5nZXRGcm9tVXJsKGUudXJsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRTdmdVcmwodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX04pLmdldCh0KTtcbiAgICAgICAgICByZXR1cm4gZSAhPT0gbnVsbCAmJiBlICE9PSB2b2lkIDAgJiYgZS5pc1N2ZyA/IGUuc3ZnVXJsIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGVJZCh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OKSB8fCBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX04sIG5ldyBNYXAoKSk7XG4gICAgICAgICAgY29uc3QgZSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikuZ2V0KHQpO1xuICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnJlZkNvdW50ZXIgLT0gMTtcbiAgICAgICAgICAgIDAgPT09IGUucmVmQ291bnRlciAmJiAoZS5iaXRtYXAgPSBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaXNWYWxpZElkKHQpIHtcbiAgICAgICAgICByZXR1cm4gdC5zdGFydHNXaXRoKFwiaW1hZ2VfXCIuY29uY2F0KF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTCksIFwiX1wiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIF9CMih0LCBlKSB7XG4gICAgICAgIHZhciBfbjU7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9OLCBuZXcgTWFwKCkpO1xuICAgICAgICBsZXQgbiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikuZ2V0KHQpO1xuICAgICAgICBpZiAobnVsbCA9PT0gbikgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICgoX241ID0gbikgIT09IG51bGwgJiYgX241ICE9PSB2b2lkIDAgJiYgX241LmJpdG1hcCkge1xuICAgICAgICAgIG4ucmVmQ291bnRlciArPSAxO1xuICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIF90aGlzJE8zLCBfdGhpcyRPNDtcbiAgICAgICAgICBuIHx8IChuID0ge1xuICAgICAgICAgICAgYml0bWFwOiBudWxsLFxuICAgICAgICAgICAgaWQ6IFwiaW1hZ2VfXCIuY29uY2F0KF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTCksIFwiX1wiKS5jb25jYXQoKF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfTzIsIChfdGhpcyRPMyA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTzIpLCBfdGhpcyRPNCA9IF90aGlzJE8zKyssIF90aGlzJE8zKSksIF90aGlzJE80KSksXG4gICAgICAgICAgICByZWZDb3VudGVyOiAwLFxuICAgICAgICAgICAgaXNTdmc6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHQ7XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIGUpIHtcbiAgICAgICAgICAgIG4udXJsID0gZTtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBhd2FpdCBmZXRjaChlKTtcbiAgICAgICAgICAgIGlmICghaS5vaykgdGhyb3cgbmV3IEVycm9yKGkuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICB0ID0gYXdhaXQgaS5ibG9iKCk7XG4gICAgICAgICAgfSBlbHNlIHQgPSBuLmZpbGUgPSBlO1xuICAgICAgICAgIGlmIChcImltYWdlL3N2Zyt4bWxcIiA9PT0gdC50eXBlKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gbmV3IEZpbGVSZWFkZXIoKSxcbiAgICAgICAgICAgICAgaSA9IG5ldyBJbWFnZSgpLFxuICAgICAgICAgICAgICByID0gbmV3IFByb21pc2UoKHQsIHIpID0+IHtcbiAgICAgICAgICAgICAgICBpLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgIG4uYml0bWFwID0gaTtcbiAgICAgICAgICAgICAgICAgIG4uaXNTdmcgPSAhMDtcbiAgICAgICAgICAgICAgICAgIHQoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGUub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaS5zcmMgPSBuLnN2Z1VybCA9IGUucmVzdWx0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaS5vbmVycm9yID0gZS5vbmVycm9yID0gcjtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlLnJlYWRBc0RhdGFVUkwodCk7XG4gICAgICAgICAgICBhd2FpdCByO1xuICAgICAgICAgIH0gZWxzZSBuLmJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHQpO1xuICAgICAgICAgIG4ucmVmQ291bnRlciA9IDE7XG4gICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHQpO1xuICAgICAgICAgIG4gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikuc2V0KHQsIG4pO1xuICAgICAgICBuICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTikuc2V0KG4uaWQsIG4pO1xuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cbiAgICAgIHZhciBfaiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9VID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3ogPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfSCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgQ29tbWFuZE1hbmFnZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfaiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogW11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfVSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfeiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0gsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IC0xXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IDEyODtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3osIHQpO1xuICAgICAgICB9XG4gICAgICAgIGFkZCh0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGNtZDogZSxcbiAgICAgICAgICAgIHVuZG86IG4sXG4gICAgICAgICAgICBtdXN0RXhlYzogaSxcbiAgICAgICAgICAgIHR5cGU6IHIgPSBOYU4sXG4gICAgICAgICAgICBvdmVyd3JpdGVJZlNhbWVUeXBlOiBzID0gITEsXG4gICAgICAgICAgICBrZWVwVW5kbzogYSA9ICExXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgaSAmJiBlKCk7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVSkpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBvID0ge1xuICAgICAgICAgICAgY21kOiBlLFxuICAgICAgICAgICAgdW5kbzogbixcbiAgICAgICAgICAgIHR5cGU6IHJcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICgtMSA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9IKSkge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKS5sZW5ndGggPiAwICYmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2opLmxlbmd0aCA9IDApO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ILCAwKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaikucHVzaChvKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKVtfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpXS50eXBlID09PSByKSB7XG4gICAgICAgICAgICBhICYmIChvLnVuZG8gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2opW19jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSCldLnVuZG8pO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKVtfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpXSA9IG87XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGwgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpICsgMTtcbiAgICAgICAgICBpZiAobCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF96KSkgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKS5zcGxpY2UoMCwgMSk7ZWxzZSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0gsIGwpO1xuICAgICAgICAgICAgbCA8IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaikubGVuZ3RoICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaikuc3BsaWNlKGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2opLnB1c2gobyk7XG4gICAgICAgIH1cbiAgICAgICAgc3RvcFVuZG9BY2N1bXVsYXRpb24oKSB7XG4gICAgICAgICAgLTEgIT09IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSCkgJiYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfailbX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9IKV0udHlwZSA9IE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgdW5kbygpIHtcbiAgICAgICAgICBpZiAoLTEgIT09IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSCkpIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfVSwgITApO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKVtfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpXS51bmRvKCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1UsICExKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfSCwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9IKSAtIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZWRvKCkge1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpIDwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0gsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSCkgKyAxKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfVSwgITApO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9qKVtfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpXS5jbWQoKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfVSwgITEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoYXNTb21ldGhpbmdUb1VuZG8oKSB7XG4gICAgICAgICAgcmV0dXJuIC0xICE9PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0gpO1xuICAgICAgICB9XG4gICAgICAgIGhhc1NvbWV0aGluZ1RvUmVkbygpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9IKSA8IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaikubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBkZXN0cm95KCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuQ29tbWFuZE1hbmFnZXIgPSBDb21tYW5kTWFuYWdlcjtcbiAgICAgIHZhciBfcSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgY2xhc3MgS2V5Ym9hcmRNYW5hZ2VyIHtcbiAgICAgICAgY29uc3RydWN0b3IoX3Q1KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9xKTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tzID0gbmV3IE1hcCgpO1xuICAgICAgICAgIHRoaXMuYWxsS2V5cyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpc01hYzogX2U1XG4gICAgICAgICAgfSA9IGkuRmVhdHVyZVRlc3QucGxhdGZvcm07XG4gICAgICAgICAgZm9yIChjb25zdCBbbiwgaSwgciA9IHt9XSBvZiBfdDUpIGZvciAoY29uc3QgdCBvZiBuKSB7XG4gICAgICAgICAgICBjb25zdCBuID0gdC5zdGFydHNXaXRoKFwibWFjK1wiKTtcbiAgICAgICAgICAgIGlmIChfZTUgJiYgbikge1xuICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5zZXQodC5zbGljZSg0KSwge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBpLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuYWxsS2V5cy5hZGQodC5zcGxpdChcIitcIikuYXQoLTEpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIV9lNSAmJiAhbikge1xuICAgICAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5zZXQodCwge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBpLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuYWxsS2V5cy5hZGQodC5zcGxpdChcIitcIikuYXQoLTEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhlYyh0LCBlKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFsbEtleXMuaGFzKGUua2V5KSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmNhbGxiYWNrcy5nZXQoX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfcSwgX3EyKS5jYWxsKHRoaXMsIGUpKTtcbiAgICAgICAgICBpZiAoIW4pIHJldHVybjtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjYWxsYmFjazogaSxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgYnViYmxlczogciA9ICExLFxuICAgICAgICAgICAgICBhcmdzOiBzID0gW10sXG4gICAgICAgICAgICAgIGNoZWNrZXI6IGEgPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSA9IG47XG4gICAgICAgICAgaWYgKCFhIHx8IGEodCwgZSkpIHtcbiAgICAgICAgICAgIGkuYmluZCh0LCAuLi5zKSgpO1xuICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9xMih0KSB7XG4gICAgICAgIHQuYWx0S2V5ICYmIHRoaXMuYnVmZmVyLnB1c2goXCJhbHRcIik7XG4gICAgICAgIHQuY3RybEtleSAmJiB0aGlzLmJ1ZmZlci5wdXNoKFwiY3RybFwiKTtcbiAgICAgICAgdC5tZXRhS2V5ICYmIHRoaXMuYnVmZmVyLnB1c2goXCJtZXRhXCIpO1xuICAgICAgICB0LnNoaWZ0S2V5ICYmIHRoaXMuYnVmZmVyLnB1c2goXCJzaGlmdFwiKTtcbiAgICAgICAgdGhpcy5idWZmZXIucHVzaCh0LmtleSk7XG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLmJ1ZmZlci5qb2luKFwiK1wiKTtcbiAgICAgICAgdGhpcy5idWZmZXIubGVuZ3RoID0gMDtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICBlLktleWJvYXJkTWFuYWdlciA9IEtleWJvYXJkTWFuYWdlcjtcbiAgICAgIGNsYXNzIENvbG9yTWFuYWdlciB7XG4gICAgICAgIGdldCBfY29sb3JzKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgTWFwKFtbXCJDYW52YXNUZXh0XCIsIG51bGxdLCBbXCJDYW52YXNcIiwgbnVsbF1dKTtcbiAgICAgICAgICAoMCwgci5nZXRDb2xvclZhbHVlcykodCk7XG4gICAgICAgICAgcmV0dXJuICgwLCBpLnNoYWRvdykodGhpcywgXCJfY29sb3JzXCIsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnZlcnQodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSAoMCwgci5nZXRSR0IpKHQpO1xuICAgICAgICAgIGlmICghd2luZG93Lm1hdGNoTWVkaWEoXCIoZm9yY2VkLWNvbG9yczogYWN0aXZlKVwiKS5tYXRjaGVzKSByZXR1cm4gZTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFt0LCBuXSBvZiB0aGlzLl9jb2xvcnMpIGlmIChuLmV2ZXJ5KCh0LCBuKSA9PiB0ID09PSBlW25dKSkgcmV0dXJuIENvbG9yTWFuYWdlci5fY29sb3JzTWFwcGluZy5nZXQodCk7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0SGV4Q29kZSh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuX2NvbG9ycy5nZXQodCk7XG4gICAgICAgICAgcmV0dXJuIGUgPyBpLlV0aWwubWFrZUhleENvbG9yKC4uLmUpIDogdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2RlZmluZVByb3BlcnR5KENvbG9yTWFuYWdlciwgXCJfY29sb3JzTWFwcGluZ1wiLCBuZXcgTWFwKFtbXCJDYW52YXNUZXh0XCIsIFswLCAwLCAwXV0sIFtcIkNhbnZhc1wiLCBbMjU1LCAyNTUsIDI1NV1dXSkpO1xuICAgICAgZS5Db2xvck1hbmFnZXIgPSBDb2xvck1hbmFnZXI7XG4gICAgICB2YXIgX1cgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfRyA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9WID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgXyQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfWCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9LID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1kgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfSiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9RID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1ogPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfaXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfcnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfc3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfYXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfb3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfY3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfaHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfcHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZ3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfYnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfeXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfdnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfQXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfdDYgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfeHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfd3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfVHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfUHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfU3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfQ3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfRXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIge1xuICAgICAgICBzdGF0aWMgZ2V0IF9rZXlib2FyZE1hbmFnZXIoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IEFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIucHJvdG90eXBlLFxuICAgICAgICAgICAgYXJyb3dDaGVja2VyID0gdCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBhY3RpdmVFbGVtZW50OiBlXG4gICAgICAgICAgICAgIH0gPSBkb2N1bWVudDtcbiAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHQsIF9idCkuY29udGFpbnMoZSkgJiYgdC5oYXNTb21ldGhpbmdUb0NvbnRyb2woKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlID0gdGhpcy5UUkFOU0xBVEVfU01BTEwsXG4gICAgICAgICAgICBuID0gdGhpcy5UUkFOU0xBVEVfQklHO1xuICAgICAgICAgIHJldHVybiAoMCwgaS5zaGFkb3cpKHRoaXMsIFwiX2tleWJvYXJkTWFuYWdlclwiLCBuZXcgS2V5Ym9hcmRNYW5hZ2VyKFtbW1wiY3RybCthXCIsIFwibWFjK21ldGErYVwiXSwgdC5zZWxlY3RBbGxdLCBbW1wiY3RybCt6XCIsIFwibWFjK21ldGErelwiXSwgdC51bmRvXSwgW1tcImN0cmwreVwiLCBcImN0cmwrc2hpZnQrelwiLCBcIm1hYyttZXRhK3NoaWZ0K3pcIiwgXCJjdHJsK3NoaWZ0K1pcIiwgXCJtYWMrbWV0YStzaGlmdCtaXCJdLCB0LnJlZG9dLCBbW1wiQmFja3NwYWNlXCIsIFwiYWx0K0JhY2tzcGFjZVwiLCBcImN0cmwrQmFja3NwYWNlXCIsIFwic2hpZnQrQmFja3NwYWNlXCIsIFwibWFjK0JhY2tzcGFjZVwiLCBcIm1hYythbHQrQmFja3NwYWNlXCIsIFwibWFjK2N0cmwrQmFja3NwYWNlXCIsIFwiRGVsZXRlXCIsIFwiY3RybCtEZWxldGVcIiwgXCJzaGlmdCtEZWxldGVcIiwgXCJtYWMrRGVsZXRlXCJdLCB0LmRlbGV0ZV0sIFtbXCJFc2NhcGVcIiwgXCJtYWMrRXNjYXBlXCJdLCB0LnVuc2VsZWN0QWxsXSwgW1tcIkFycm93TGVmdFwiLCBcIm1hYytBcnJvd0xlZnRcIl0sIHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLCB7XG4gICAgICAgICAgICBhcmdzOiBbLWUsIDBdLFxuICAgICAgICAgICAgY2hlY2tlcjogYXJyb3dDaGVja2VyXG4gICAgICAgICAgfV0sIFtbXCJjdHJsK0Fycm93TGVmdFwiLCBcIm1hYytzaGlmdCtBcnJvd0xlZnRcIl0sIHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLCB7XG4gICAgICAgICAgICBhcmdzOiBbLW4sIDBdLFxuICAgICAgICAgICAgY2hlY2tlcjogYXJyb3dDaGVja2VyXG4gICAgICAgICAgfV0sIFtbXCJBcnJvd1JpZ2h0XCIsIFwibWFjK0Fycm93UmlnaHRcIl0sIHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLCB7XG4gICAgICAgICAgICBhcmdzOiBbZSwgMF0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcImN0cmwrQXJyb3dSaWdodFwiLCBcIm1hYytzaGlmdCtBcnJvd1JpZ2h0XCJdLCB0LnRyYW5zbGF0ZVNlbGVjdGVkRWRpdG9ycywge1xuICAgICAgICAgICAgYXJnczogW24sIDBdLFxuICAgICAgICAgICAgY2hlY2tlcjogYXJyb3dDaGVja2VyXG4gICAgICAgICAgfV0sIFtbXCJBcnJvd1VwXCIsIFwibWFjK0Fycm93VXBcIl0sIHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLCB7XG4gICAgICAgICAgICBhcmdzOiBbMCwgLWVdLFxuICAgICAgICAgICAgY2hlY2tlcjogYXJyb3dDaGVja2VyXG4gICAgICAgICAgfV0sIFtbXCJjdHJsK0Fycm93VXBcIiwgXCJtYWMrc2hpZnQrQXJyb3dVcFwiXSwgdC50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnMsIHtcbiAgICAgICAgICAgIGFyZ3M6IFswLCAtbl0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcIkFycm93RG93blwiLCBcIm1hYytBcnJvd0Rvd25cIl0sIHQudHJhbnNsYXRlU2VsZWN0ZWRFZGl0b3JzLCB7XG4gICAgICAgICAgICBhcmdzOiBbMCwgZV0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcImN0cmwrQXJyb3dEb3duXCIsIFwibWFjK3NoaWZ0K0Fycm93RG93blwiXSwgdC50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnMsIHtcbiAgICAgICAgICAgIGFyZ3M6IFswLCBuXSxcbiAgICAgICAgICAgIGNoZWNrZXI6IGFycm93Q2hlY2tlclxuICAgICAgICAgIH1dXSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0cnVjdG9yKF90OCwgX2U2LCBfbjQsIF9pMykge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfRXQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfQ3QpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfU3QpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfUHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfVHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfd3QpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfeHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfdDYpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfQXQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfdnQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfeXQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9XLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0csIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBNYXAoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9WLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgTWFwKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfJCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9YLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgQ29tbWFuZE1hbmFnZXIoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9LLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1ksIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBTZXQoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9KLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1EsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBTZXQoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9aLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3R0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2V0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgSWRNYW5hZ2VyKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbnQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2l0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBpLkFubm90YXRpb25FZGl0b3JUeXBlLk5PTkVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfcnQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBTZXQoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9zdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9hdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5jb3B5LmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfb3QsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuY3V0LmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbHQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFzdGUuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9jdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5rZXlkb3duLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfaHQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMub25FZGl0aW5nQWN0aW9uLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZHQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMub25QYWdlQ2hhbmdpbmcuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF91dCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5vblNjYWxlQ2hhbmdpbmcuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9wdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5vblJvdGF0aW9uQ2hhbmdpbmcuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9mdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICBpc0VkaXRpbmc6ICExLFxuICAgICAgICAgICAgICBpc0VtcHR5OiAhMCxcbiAgICAgICAgICAgICAgaGFzU29tZXRoaW5nVG9VbmRvOiAhMSxcbiAgICAgICAgICAgICAgaGFzU29tZXRoaW5nVG9SZWRvOiAhMSxcbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRFZGl0b3I6ICExXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2d0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBbMCwgMF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbXQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfYnQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2J0LCBfdDgpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfWiwgX2U2KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1opLl9vbihcImVkaXRpbmdhY3Rpb25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9odCkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWikuX29uKFwicGFnZWNoYW5naW5nXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZHQpKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1opLl9vbihcInNjYWxlY2hhbmdpbmdcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF91dCkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWikuX29uKFwicm90YXRpb25jaGFuZ2luZ1wiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3B0KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF8kLCBfbjQuYW5ub3RhdGlvblN0b3JhZ2UpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfdHQsIF9uNC5maWx0ZXJGYWN0b3J5KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3N0LCBfaTMpO1xuICAgICAgICAgIHRoaXMudmlld1BhcmFtZXRlcnMgPSB7XG4gICAgICAgICAgICByZWFsU2NhbGU6IHIuUGl4ZWxzUGVySW5jaC5QREZfVE9fQ1NTX1VOSVRTLFxuICAgICAgICAgICAgcm90YXRpb246IDBcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGRlc3Ryb3koKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfdnQsIF92dDIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9aKS5fb2ZmKFwiZWRpdGluZ2FjdGlvblwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2h0KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9aKS5fb2ZmKFwicGFnZWNoYW5naW5nXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZHQpKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1opLl9vZmYoXCJzY2FsZWNoYW5naW5nXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdXQpKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1opLl9vZmYoXCJyb3RhdGlvbmNoYW5naW5nXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcHQpKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS52YWx1ZXMoKSkgdC5kZXN0cm95KCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS5jbGVhcigpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRykuY2xlYXIoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1EpLmNsZWFyKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9XLCBudWxsKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KS5jbGVhcigpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWCkuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIGdldCBoY21GaWx0ZXIoKSB7XG4gICAgICAgICAgcmV0dXJuICgwLCBpLnNoYWRvdykodGhpcywgXCJoY21GaWx0ZXJcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zdCkgPyBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3R0KS5hZGRIQ01GaWx0ZXIoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zdCkuZm9yZWdyb3VuZCwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9zdCkuYmFja2dyb3VuZCkgOiBcIm5vbmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgb25QYWdlQ2hhbmdpbmcodCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBwYWdlTnVtYmVyOiBlXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9LLCBlIC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9jdXNNYWluQ29udGFpbmVyKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYnQpLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkU2hvdWxkUmVzY2FsZSh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9RKS5hZGQodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVtb3ZlU2hvdWxkUmVzY2FsZSh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9RKS5kZWxldGUodCk7XG4gICAgICAgIH1cbiAgICAgICAgb25TY2FsZUNoYW5naW5nKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgc2NhbGU6IGVcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICB0aGlzLmNvbW1pdE9yUmVtb3ZlKCk7XG4gICAgICAgICAgdGhpcy52aWV3UGFyYW1ldGVycy5yZWFsU2NhbGUgPSBlICogci5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFM7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUSkpIHQub25TY2FsZUNoYW5naW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25Sb3RhdGlvbkNoYW5naW5nKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgcGFnZXNSb3RhdGlvbjogZVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIHRoaXMuY29tbWl0T3JSZW1vdmUoKTtcbiAgICAgICAgICB0aGlzLnZpZXdQYXJhbWV0ZXJzLnJvdGF0aW9uID0gZTtcbiAgICAgICAgfVxuICAgICAgICBhZGRUb0Fubm90YXRpb25TdG9yYWdlKHQpIHtcbiAgICAgICAgICB0LmlzRW1wdHkoKSB8fCAhX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF8kKSB8fCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgXyQpLmhhcyh0LmlkKSB8fCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgXyQpLnNldFZhbHVlKHQuaWQsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGNvcHkodCkge1xuICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1cpICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVykuY29tbWl0T3JSZW1vdmUoKTtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0aW9uKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IHQuc2VyaWFsaXplKCEwKTtcbiAgICAgICAgICAgIG4gJiYgZS5wdXNoKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAwICE9PSBlLmxlbmd0aCAmJiB0LmNsaXBib2FyZERhdGEuc2V0RGF0YShcImFwcGxpY2F0aW9uL3BkZmpzXCIsIEpTT04uc3RyaW5naWZ5KGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjdXQodCkge1xuICAgICAgICAgIHRoaXMuY29weSh0KTtcbiAgICAgICAgICB0aGlzLmRlbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHBhc3RlKHQpIHtcbiAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbGV0IGUgPSB0LmNsaXBib2FyZERhdGEuZ2V0RGF0YShcImFwcGxpY2F0aW9uL3BkZmpzXCIpO1xuICAgICAgICAgIGlmICghZSkgcmV0dXJuO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlID0gSlNPTi5wYXJzZShlKTtcbiAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICAoMCwgaS53YXJuKShcInBhc3RlOiBcXFwiXCIuY29uY2F0KHQubWVzc2FnZSwgXCJcXFwiLlwiKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlKSkgcmV0dXJuO1xuICAgICAgICAgIHRoaXMudW5zZWxlY3RBbGwoKTtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5jdXJyZW50TGF5ZXI7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaSBvZiBlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBuLmRlc2VyaWFsaXplKGkpO1xuICAgICAgICAgICAgICBpZiAoIWUpIHJldHVybjtcbiAgICAgICAgICAgICAgdC5wdXNoKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY21kID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0KSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9TdCwgX1N0MikuY2FsbCh0aGlzLCBlKTtcbiAgICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9FdCwgX0V0MikuY2FsbCh0aGlzLCB0KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdW5kbyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdCkgZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tbWFuZHMoe1xuICAgICAgICAgICAgICBjbWQ6IGNtZCxcbiAgICAgICAgICAgICAgdW5kbzogdW5kbyxcbiAgICAgICAgICAgICAgbXVzdEV4ZWM6ICEwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICAoMCwgaS53YXJuKShcInBhc3RlOiBcXFwiXCIuY29uY2F0KHQubWVzc2FnZSwgXCJcXFwiLlwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleWRvd24odCkge1xuICAgICAgICAgIHZhciBfdGhpcyRnZXRBY3RpdmU7XG4gICAgICAgICAgKChfdGhpcyRnZXRBY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpKSA9PT0gbnVsbCB8fCBfdGhpcyRnZXRBY3RpdmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGdldEFjdGl2ZS5zaG91bGRHZXRLZXlib2FyZEV2ZW50cygpKSB8fCBBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLl9rZXlib2FyZE1hbmFnZXIuZXhlYyh0aGlzLCB0KTtcbiAgICAgICAgfVxuICAgICAgICBvbkVkaXRpbmdBY3Rpb24odCkge1xuICAgICAgICAgIFtcInVuZG9cIiwgXCJyZWRvXCIsIFwiZGVsZXRlXCIsIFwic2VsZWN0QWxsXCJdLmluY2x1ZGVzKHQubmFtZSkgJiYgdGhpc1t0Lm5hbWVdKCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0RWRpdGluZ1N0YXRlKHQpIHtcbiAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfeXQsIF95dDIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9BdCwgX0F0MikuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3h0LCBfeHQyKS5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgICAgaXNFZGl0aW5nOiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2l0KSAhPT0gaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5OT05FLFxuICAgICAgICAgICAgICBpc0VtcHR5OiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9DdCwgX0N0MikuY2FsbCh0aGlzKSxcbiAgICAgICAgICAgICAgaGFzU29tZXRoaW5nVG9VbmRvOiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1gpLmhhc1NvbWV0aGluZ1RvVW5kbygpLFxuICAgICAgICAgICAgICBoYXNTb21ldGhpbmdUb1JlZG86IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWCkuaGFzU29tZXRoaW5nVG9SZWRvKCksXG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkRWRpdG9yOiAhMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3Z0LCBfdnQyKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfdDYsIF90NykuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3h0LCBfeHQyKS5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgICAgaXNFZGl0aW5nOiAhMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlZ2lzdGVyRWRpdG9yVHlwZXModCkge1xuICAgICAgICAgIGlmICghX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9KKSkge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9KLCB0KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0opKSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF93dCwgX3d0MikuY2FsbCh0aGlzLCB0LmRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXRJZCgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ldCkuZ2V0SWQoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgY3VycmVudExheWVyKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1YpLmdldChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0spKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgY3VycmVudFBhZ2VJbmRleCgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9LKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRMYXllcih0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS5zZXQodC5wYWdlSW5kZXgsIHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbnQpID8gdC5lbmFibGUoKSA6IHQuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZUxheWVyKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1YpLmRlbGV0ZSh0LnBhZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlTW9kZSh0KSB7XG4gICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9pdCwgdCk7XG4gICAgICAgICAgaWYgKHQgIT09IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5zZXRFZGl0aW5nU3RhdGUoITApO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVHQsIF9UdDIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS52YWx1ZXMoKSkgZS51cGRhdGVNb2RlKHQpO1xuICAgICAgICAgICAgaWYgKGUpIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLnZhbHVlcygpKSBpZiAodC5hbm5vdGF0aW9uRWxlbWVudElkID09PSBlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQodCk7XG4gICAgICAgICAgICAgIHQuZW50ZXJJbkVkaXRNb2RlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldEVkaXRpbmdTdGF0ZSghMSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9QdCwgX1B0MikuY2FsbCh0aGlzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlVG9vbGJhcih0KSB7XG4gICAgICAgICAgdCAhPT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9pdCkgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9aKS5kaXNwYXRjaChcInN3aXRjaGFubm90YXRpb25lZGl0b3Jtb2RlXCIsIHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICAgIG1vZGU6IHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVQYXJhbXModCwgZSkge1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0opKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkpIG4udXBkYXRlUGFyYW1zKHQsIGUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSikpIG4udXBkYXRlRGVmYXVsdFBhcmFtcyh0LCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWRpdG9ycyh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgbiBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLnZhbHVlcygpKSBuLnBhZ2VJbmRleCA9PT0gdCAmJiBlLnB1c2gobik7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWRpdG9yKHQpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9HKS5nZXQodCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkRWRpdG9yKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLnNldCh0LmlkLCB0KTtcbiAgICAgICAgfVxuICAgICAgICByZW1vdmVFZGl0b3IodCkge1xuICAgICAgICAgIHZhciBfY2xhc3NQcml2YXRlRmllbGRHZXQ0O1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRykuZGVsZXRlKHQuaWQpO1xuICAgICAgICAgIHRoaXMudW5zZWxlY3QodCk7XG4gICAgICAgICAgdC5hbm5vdGF0aW9uRWxlbWVudElkICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWSkuaGFzKHQuYW5ub3RhdGlvbkVsZW1lbnRJZCkgfHwgKChfY2xhc3NQcml2YXRlRmllbGRHZXQ0ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF8kKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0NCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0NC5yZW1vdmUodC5pZCkpO1xuICAgICAgICB9XG4gICAgICAgIGFkZERlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZKS5hZGQodC5hbm5vdGF0aW9uRWxlbWVudElkKTtcbiAgICAgICAgICB0LmRlbGV0ZWQgPSAhMDtcbiAgICAgICAgfVxuICAgICAgICBpc0RlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0KSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWSkuaGFzKHQpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZURlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZKS5kZWxldGUodC5hbm5vdGF0aW9uRWxlbWVudElkKTtcbiAgICAgICAgICB0LmRlbGV0ZWQgPSAhMTtcbiAgICAgICAgfVxuICAgICAgICBzZXRBY3RpdmVFZGl0b3IodCkge1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1cpICE9PSB0KSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1csIHQpO1xuICAgICAgICAgICAgdCAmJiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF93dCwgX3d0MikuY2FsbCh0aGlzLCB0LnByb3BlcnRpZXNUb1VwZGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRvZ2dsZVNlbGVjdGVkKHQpIHtcbiAgICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkuaGFzKHQpKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KS5kZWxldGUodCk7XG4gICAgICAgICAgICB0LnVuc2VsZWN0KCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF94dCwgX3h0MikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkRWRpdG9yOiB0aGlzLmhhc1NlbGVjdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcnQpLmFkZCh0KTtcbiAgICAgICAgICAgIHQuc2VsZWN0KCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF93dCwgX3d0MikuY2FsbCh0aGlzLCB0LnByb3BlcnRpZXNUb1VwZGF0ZSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF94dCwgX3h0MikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICAgIGhhc1NlbGVjdGVkRWRpdG9yOiAhMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFNlbGVjdGVkKHQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkpIGUgIT09IHQgJiYgZS51bnNlbGVjdCgpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcnQpLmNsZWFyKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkuYWRkKHQpO1xuICAgICAgICAgIHQuc2VsZWN0KCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfd3QsIF93dDIpLmNhbGwodGhpcywgdC5wcm9wZXJ0aWVzVG9VcGRhdGUpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3h0LCBfeHQyKS5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgIGhhc1NlbGVjdGVkRWRpdG9yOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlzU2VsZWN0ZWQodCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KS5oYXModCk7XG4gICAgICAgIH1cbiAgICAgICAgdW5zZWxlY3QodCkge1xuICAgICAgICAgIHQudW5zZWxlY3QoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KS5kZWxldGUodCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfeHQsIF94dDIpLmNhbGwodGhpcywge1xuICAgICAgICAgICAgaGFzU2VsZWN0ZWRFZGl0b3I6IHRoaXMuaGFzU2VsZWN0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGhhc1NlbGVjdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gMCAhPT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBzdG9wVW5kb0FjY3VtdWxhdGlvbigpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1gpLnN0b3BVbmRvQWNjdW11bGF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdW5kbygpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1gpLnVuZG8oKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF94dCwgX3h0MikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICBoYXNTb21ldGhpbmdUb1VuZG86IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWCkuaGFzU29tZXRoaW5nVG9VbmRvKCksXG4gICAgICAgICAgICBoYXNTb21ldGhpbmdUb1JlZG86ICEwLFxuICAgICAgICAgICAgaXNFbXB0eTogX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfQ3QsIF9DdDIpLmNhbGwodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZWRvKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWCkucmVkbygpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3h0LCBfeHQyKS5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgIGhhc1NvbWV0aGluZ1RvVW5kbzogITAsXG4gICAgICAgICAgICBoYXNTb21ldGhpbmdUb1JlZG86IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWCkuaGFzU29tZXRoaW5nVG9SZWRvKCksXG4gICAgICAgICAgICBpc0VtcHR5OiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9DdCwgX0N0MikuY2FsbCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGFkZENvbW1hbmRzKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1gpLmFkZCh0KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF94dCwgX3h0MikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICBoYXNTb21ldGhpbmdUb1VuZG86ICEwLFxuICAgICAgICAgICAgaGFzU29tZXRoaW5nVG9SZWRvOiAhMSxcbiAgICAgICAgICAgIGlzRW1wdHk6IF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0N0LCBfQ3QyKS5jYWxsKHRoaXMpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlKCkge1xuICAgICAgICAgIHRoaXMuY29tbWl0T3JSZW1vdmUoKTtcbiAgICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0aW9uKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgdCA9IFsuLi5fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KV07XG4gICAgICAgICAgdGhpcy5hZGRDb21tYW5kcyh7XG4gICAgICAgICAgICBjbWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQpIGUucmVtb3ZlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdCkgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfU3QsIF9TdDIpLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXVzdEV4ZWM6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0T3JSZW1vdmUoKSB7XG4gICAgICAgICAgdmFyIF9jbGFzc1ByaXZhdGVGaWVsZEdldDU7XG4gICAgICAgICAgKF9jbGFzc1ByaXZhdGVGaWVsZEdldDUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1cpKSA9PT0gbnVsbCB8fCBfY2xhc3NQcml2YXRlRmllbGRHZXQ1ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2xhc3NQcml2YXRlRmllbGRHZXQ1LmNvbW1pdE9yUmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaGFzU29tZXRoaW5nVG9Db250cm9sKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1cpIHx8IHRoaXMuaGFzU2VsZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdEFsbCgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkpIHQuY29tbWl0KCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfRXQsIF9FdDIpLmNhbGwodGhpcywgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9HKS52YWx1ZXMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5zZWxlY3RBbGwoKSB7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVykpIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVykuY29tbWl0T3JSZW1vdmUoKTtlbHNlIGlmICh0aGlzLmhhc1NlbGVjdGlvbikge1xuICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcnQpKSB0LnVuc2VsZWN0KCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3J0KS5jbGVhcigpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfeHQsIF94dDIpLmNhbGwodGhpcywge1xuICAgICAgICAgICAgICBoYXNTZWxlY3RlZEVkaXRvcjogITFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnModCwgZSkge1xuICAgICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdICYmIGFyZ3VtZW50c1syXSB8fCB0aGlzLmNvbW1pdE9yUmVtb3ZlKCk7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGlvbikgcmV0dXJuO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZ3QpWzBdICs9IHQ7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ndClbMV0gKz0gZTtcbiAgICAgICAgICBjb25zdCBbbiwgaV0gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2d0KSxcbiAgICAgICAgICAgIHIgPSBbLi4uX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCldO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbXQpICYmIGNsZWFyVGltZW91dChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX210KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9tdCwgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX210LCBudWxsKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZ3QpWzBdID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ndClbMV0gPSAwO1xuICAgICAgICAgICAgdGhpcy5hZGRDb21tYW5kcyh7XG4gICAgICAgICAgICAgIGNtZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiByKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLmhhcyh0LmlkKSAmJiB0LnRyYW5zbGF0ZUluUGFnZShuLCBpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiByKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLmhhcyh0LmlkKSAmJiB0LnRyYW5zbGF0ZUluUGFnZSgtbiwgLWkpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtdXN0RXhlYzogITFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDFlMykpO1xuICAgICAgICAgIGZvciAoY29uc3QgbiBvZiByKSBuLnRyYW5zbGF0ZUluUGFnZSh0LCBlKTtcbiAgICAgICAgfVxuICAgICAgICBpc0FjdGl2ZSh0KSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVykgPT09IHQ7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0QWN0aXZlKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1cpO1xuICAgICAgICB9XG4gICAgICAgIGdldE1vZGUoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaXQpO1xuICAgICAgICB9XG4gICAgICAgIGdldCBpbWFnZU1hbmFnZXIoKSB7XG4gICAgICAgICAgcmV0dXJuICgwLCBpLnNoYWRvdykodGhpcywgXCJpbWFnZU1hbmFnZXJcIiwgbmV3IEltYWdlTWFuYWdlcigpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3l0MigpIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfY3QpLCB7XG4gICAgICAgICAgY2FwdHVyZTogITBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdnQyKCkge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jdCksIHtcbiAgICAgICAgICBjYXB0dXJlOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9BdDIoKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjb3B5XCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYXQpKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImN1dFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX290KSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2x0KSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdDcoKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjb3B5XCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYXQpKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImN1dFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX290KSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2x0KSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfeHQyKHQpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXModCkuc29tZSh0ID0+IHtcbiAgICAgICAgICBsZXQgW2UsIG5dID0gdDtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mdClbZV0gIT09IG47XG4gICAgICAgIH0pICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWikuZGlzcGF0Y2goXCJhbm5vdGF0aW9uZWRpdG9yc3RhdGVzY2hhbmdlZFwiLCB7XG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIGRldGFpbHM6IE9iamVjdC5hc3NpZ24oX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mdCksIHQpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3d0Mih0KSB7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWikuZGlzcGF0Y2goXCJhbm5vdGF0aW9uZWRpdG9ycGFyYW1zY2hhbmdlZFwiLCB7XG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIGRldGFpbHM6IHRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfVHQyKCkge1xuICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbnQpKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9udCwgITApO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1YpLnZhbHVlcygpKSB0LmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfUHQyKCkge1xuICAgICAgICB0aGlzLnVuc2VsZWN0QWxsKCk7XG4gICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX250KSkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbnQsICExKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS52YWx1ZXMoKSkgdC5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9TdDIodCkge1xuICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WKS5nZXQodC5wYWdlSW5kZXgpO1xuICAgICAgICBlID8gZS5hZGRPclJlYnVpbGQodCkgOiB0aGlzLmFkZEVkaXRvcih0KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9DdDIoKSB7XG4gICAgICAgIGlmICgwID09PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0cpLnNpemUpIHJldHVybiAhMDtcbiAgICAgICAgaWYgKDEgPT09IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRykuc2l6ZSkgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRykudmFsdWVzKCkpIHJldHVybiB0LmlzRW1wdHkoKTtcbiAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0V0Mih0KSB7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcnQpLmNsZWFyKCk7XG4gICAgICAgIGZvciAoY29uc3QgZSBvZiB0KSBpZiAoIWUuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ydCkuYWRkKGUpO1xuICAgICAgICAgIGUuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfeHQsIF94dDIpLmNhbGwodGhpcywge1xuICAgICAgICAgIGhhc1NlbGVjdGVkRWRpdG9yOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLCBcIlRSQU5TTEFURV9TTUFMTFwiLCAxKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyLCBcIlRSQU5TTEFURV9CSUdcIiwgMTApO1xuICAgICAgZS5Bbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyID0gQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlcjtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIHZhciBpID0gbigzKSxcbiAgICAgICAgciA9IG4oNiksXG4gICAgICAgIHMgPSBuKDQpLFxuICAgICAgICBhID0gbigyNCksXG4gICAgICAgIG8gPSBuKDE0KSxcbiAgICAgICAgbCA9IG4oOCksXG4gICAgICAgIGMgPSBuKDIxKSxcbiAgICAgICAgaCA9IG4oMjApLFxuICAgICAgICBkID0gbig5MSksXG4gICAgICAgIHUgPSBuKDM5KSxcbiAgICAgICAgcCA9IG4oNzcpLFxuICAgICAgICBmID0gbig2NCksXG4gICAgICAgIGcgPSBuKDE1OCksXG4gICAgICAgIG0gPSBuKDcpLFxuICAgICAgICBiID0gbigxNjYpLFxuICAgICAgICB2ID0gbigyNyksXG4gICAgICAgIHkgPSBzLkpTT04sXG4gICAgICAgIEEgPSBzLk51bWJlcixcbiAgICAgICAgXyA9IHMuU3ludGF4RXJyb3IsXG4gICAgICAgIFMgPSB5ICYmIHkucGFyc2UsXG4gICAgICAgIEUgPSBhKFwiT2JqZWN0XCIsIFwia2V5c1wiKSxcbiAgICAgICAgeCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gICAgICAgIHcgPSBvKFwiXCIuY2hhckF0KSxcbiAgICAgICAgQyA9IG8oXCJcIi5zbGljZSksXG4gICAgICAgIFQgPSBvKC8uLy5leGVjKSxcbiAgICAgICAgUCA9IG8oW10ucHVzaCksXG4gICAgICAgIGsgPSAvXlxcZCQvLFxuICAgICAgICBNID0gL15bMS05XSQvLFxuICAgICAgICBSID0gL14oLXxcXGQpJC8sXG4gICAgICAgIEkgPSAvXltcXHRcXG5cXHIgXSQvLFxuICAgICAgICBpbnRlcm5hbGl6ZSA9IGZ1bmN0aW9uIGludGVybmFsaXplKHQsIGUsIG4sIGkpIHtcbiAgICAgICAgICB2YXIgcixcbiAgICAgICAgICAgIHMsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgbyxcbiAgICAgICAgICAgIGMsXG4gICAgICAgICAgICBwID0gdFtlXSxcbiAgICAgICAgICAgIGcgPSBpICYmIHAgPT09IGkudmFsdWUsXG4gICAgICAgICAgICBtID0gZyAmJiBcInN0cmluZ1wiID09IHR5cGVvZiBpLnNvdXJjZSA/IHtcbiAgICAgICAgICAgICAgc291cmNlOiBpLnNvdXJjZVxuICAgICAgICAgICAgfSA6IHt9O1xuICAgICAgICAgIGlmIChoKHApKSB7XG4gICAgICAgICAgICB2YXIgYiA9IGQocCksXG4gICAgICAgICAgICAgIHYgPSBnID8gaS5ub2RlcyA6IGIgPyBbXSA6IHt9O1xuICAgICAgICAgICAgaWYgKGIpIHtcbiAgICAgICAgICAgICAgciA9IHYubGVuZ3RoO1xuICAgICAgICAgICAgICBhID0gZihwKTtcbiAgICAgICAgICAgICAgZm9yIChvID0gMDsgbyA8IGE7IG8rKykgaW50ZXJuYWxpemVQcm9wZXJ0eShwLCBvLCBpbnRlcm5hbGl6ZShwLCBcIlwiICsgbywgbiwgbyA8IHIgPyB2W29dIDogdm9pZCAwKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzID0gRShwKTtcbiAgICAgICAgICAgICAgYSA9IGYocyk7XG4gICAgICAgICAgICAgIGZvciAobyA9IDA7IG8gPCBhOyBvKyspIHtcbiAgICAgICAgICAgICAgICBjID0gc1tvXTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbGl6ZVByb3BlcnR5KHAsIGMsIGludGVybmFsaXplKHAsIGMsIG4sIHUodiwgYykgPyB2W2NdIDogdm9pZCAwKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGwobiwgdCwgZSwgcCwgbSk7XG4gICAgICAgIH0sXG4gICAgICAgIGludGVybmFsaXplUHJvcGVydHkgPSBmdW5jdGlvbiBpbnRlcm5hbGl6ZVByb3BlcnR5KHQsIGUsIG4pIHtcbiAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgdmFyIGkgPSB4KHQsIGUpO1xuICAgICAgICAgICAgaWYgKGkgJiYgIWkuY29uZmlndXJhYmxlKSByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHZvaWQgMCA9PT0gbiA/IGRlbGV0ZSB0W2VdIDogZyh0LCBlLCBuKTtcbiAgICAgICAgfSxcbiAgICAgICAgTm9kZSA9IGZ1bmN0aW9uIE5vZGUodCwgZSwgbiwgaSkge1xuICAgICAgICAgIHRoaXMudmFsdWUgPSB0O1xuICAgICAgICAgIHRoaXMuZW5kID0gZTtcbiAgICAgICAgICB0aGlzLnNvdXJjZSA9IG47XG4gICAgICAgICAgdGhpcy5ub2RlcyA9IGk7XG4gICAgICAgIH0sXG4gICAgICAgIENvbnRleHQgPSBmdW5jdGlvbiBDb250ZXh0KHQsIGUpIHtcbiAgICAgICAgICB0aGlzLnNvdXJjZSA9IHQ7XG4gICAgICAgICAgdGhpcy5pbmRleCA9IGU7XG4gICAgICAgIH07XG4gICAgICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICAgICAgZm9yazogZnVuY3Rpb24gZm9yayh0KSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBDb250ZXh0KHRoaXMuc291cmNlLCB0KTtcbiAgICAgICAgfSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKCkge1xuICAgICAgICAgIHZhciB0ID0gdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICBlID0gdGhpcy5za2lwKEksIHRoaXMuaW5kZXgpLFxuICAgICAgICAgICAgbiA9IHRoaXMuZm9yayhlKSxcbiAgICAgICAgICAgIGkgPSB3KHQsIGUpO1xuICAgICAgICAgIGlmIChUKFIsIGkpKSByZXR1cm4gbi5udW1iZXIoKTtcbiAgICAgICAgICBzd2l0Y2ggKGkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJ7XCI6XG4gICAgICAgICAgICAgIHJldHVybiBuLm9iamVjdCgpO1xuICAgICAgICAgICAgY2FzZSBcIltcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG4uYXJyYXkoKTtcbiAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgcmV0dXJuIG4uc3RyaW5nKCk7XG4gICAgICAgICAgICBjYXNlIFwidFwiOlxuICAgICAgICAgICAgICByZXR1cm4gbi5rZXl3b3JkKCEwKTtcbiAgICAgICAgICAgIGNhc2UgXCJmXCI6XG4gICAgICAgICAgICAgIHJldHVybiBuLmtleXdvcmQoITEpO1xuICAgICAgICAgICAgY2FzZSBcIm5cIjpcbiAgICAgICAgICAgICAgcmV0dXJuIG4ua2V5d29yZChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgXygnVW5leHBlY3RlZCBjaGFyYWN0ZXI6IFwiJyArIGkgKyAnXCIgYXQ6ICcgKyBlKTtcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZTogZnVuY3Rpb24gbm9kZSh0LCBlLCBuLCBpLCByKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBOb2RlKGUsIGksIHQgPyBudWxsIDogQyh0aGlzLnNvdXJjZSwgbiwgaSksIHIpO1xuICAgICAgICB9LFxuICAgICAgICBvYmplY3Q6IGZ1bmN0aW9uIG9iamVjdCgpIHtcbiAgICAgICAgICBmb3IgKHZhciB0ID0gdGhpcy5zb3VyY2UsIGUgPSB0aGlzLmluZGV4ICsgMSwgbiA9ICExLCBpID0ge30sIHIgPSB7fTsgZSA8IHQubGVuZ3RoOykge1xuICAgICAgICAgICAgZSA9IHRoaXMudW50aWwoWydcIicsIFwifVwiXSwgZSk7XG4gICAgICAgICAgICBpZiAoXCJ9XCIgPT0gdyh0LCBlKSAmJiAhbikge1xuICAgICAgICAgICAgICBlKys7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHMgPSB0aGlzLmZvcmsoZSkuc3RyaW5nKCksXG4gICAgICAgICAgICAgIGEgPSBzLnZhbHVlO1xuICAgICAgICAgICAgZSA9IHMuZW5kO1xuICAgICAgICAgICAgZSA9IHRoaXMudW50aWwoW1wiOlwiXSwgZSkgKyAxO1xuICAgICAgICAgICAgZSA9IHRoaXMuc2tpcChJLCBlKTtcbiAgICAgICAgICAgIHMgPSB0aGlzLmZvcmsoZSkucGFyc2UoKTtcbiAgICAgICAgICAgIGcociwgYSwgcyk7XG4gICAgICAgICAgICBnKGksIGEsIHMudmFsdWUpO1xuICAgICAgICAgICAgZSA9IHRoaXMudW50aWwoW1wiLFwiLCBcIn1cIl0sIHMuZW5kKTtcbiAgICAgICAgICAgIHZhciBvID0gdyh0LCBlKTtcbiAgICAgICAgICAgIGlmIChcIixcIiA9PSBvKSB7XG4gICAgICAgICAgICAgIG4gPSAhMDtcbiAgICAgICAgICAgICAgZSsrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcIn1cIiA9PSBvKSB7XG4gICAgICAgICAgICAgIGUrKztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUoMSwgaSwgdGhpcy5pbmRleCwgZSwgcik7XG4gICAgICAgIH0sXG4gICAgICAgIGFycmF5OiBmdW5jdGlvbiBhcnJheSgpIHtcbiAgICAgICAgICBmb3IgKHZhciB0ID0gdGhpcy5zb3VyY2UsIGUgPSB0aGlzLmluZGV4ICsgMSwgbiA9ICExLCBpID0gW10sIHIgPSBbXTsgZSA8IHQubGVuZ3RoOykge1xuICAgICAgICAgICAgZSA9IHRoaXMuc2tpcChJLCBlKTtcbiAgICAgICAgICAgIGlmIChcIl1cIiA9PSB3KHQsIGUpICYmICFuKSB7XG4gICAgICAgICAgICAgIGUrKztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcyA9IHRoaXMuZm9yayhlKS5wYXJzZSgpO1xuICAgICAgICAgICAgUChyLCBzKTtcbiAgICAgICAgICAgIFAoaSwgcy52YWx1ZSk7XG4gICAgICAgICAgICBlID0gdGhpcy51bnRpbChbXCIsXCIsIFwiXVwiXSwgcy5lbmQpO1xuICAgICAgICAgICAgaWYgKFwiLFwiID09IHcodCwgZSkpIHtcbiAgICAgICAgICAgICAgbiA9ICEwO1xuICAgICAgICAgICAgICBlKys7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFwiXVwiID09IHcodCwgZSkpIHtcbiAgICAgICAgICAgICAgZSsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgxLCBpLCB0aGlzLmluZGV4LCBlLCByKTtcbiAgICAgICAgfSxcbiAgICAgICAgc3RyaW5nOiBmdW5jdGlvbiBzdHJpbmcoKSB7XG4gICAgICAgICAgdmFyIHQgPSB0aGlzLmluZGV4LFxuICAgICAgICAgICAgZSA9IGIodGhpcy5zb3VyY2UsIHRoaXMuaW5kZXggKyAxKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKDAsIGUudmFsdWUsIHQsIGUuZW5kKTtcbiAgICAgICAgfSxcbiAgICAgICAgbnVtYmVyOiBmdW5jdGlvbiBudW1iZXIoKSB7XG4gICAgICAgICAgdmFyIHQgPSB0aGlzLnNvdXJjZSxcbiAgICAgICAgICAgIGUgPSB0aGlzLmluZGV4LFxuICAgICAgICAgICAgbiA9IGU7XG4gICAgICAgICAgXCItXCIgPT0gdyh0LCBuKSAmJiBuKys7XG4gICAgICAgICAgaWYgKFwiMFwiID09IHcodCwgbikpIG4rKztlbHNlIHtcbiAgICAgICAgICAgIGlmICghVChNLCB3KHQsIG4pKSkgdGhyb3cgXyhcIkZhaWxlZCB0byBwYXJzZSBudW1iZXIgYXQ6IFwiICsgbik7XG4gICAgICAgICAgICBuID0gdGhpcy5za2lwKGssICsrbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIFwiLlwiID09IHcodCwgbikgJiYgKG4gPSB0aGlzLnNraXAoaywgKytuKSk7XG4gICAgICAgICAgaWYgKFwiZVwiID09IHcodCwgbikgfHwgXCJFXCIgPT0gdyh0LCBuKSkge1xuICAgICAgICAgICAgbisrO1xuICAgICAgICAgICAgXCIrXCIgIT0gdyh0LCBuKSAmJiBcIi1cIiAhPSB3KHQsIG4pIHx8IG4rKztcbiAgICAgICAgICAgIGlmIChuID09IChuID0gdGhpcy5za2lwKGssIG4pKSkgdGhyb3cgXyhcIkZhaWxlZCB0byBwYXJzZSBudW1iZXIncyBleHBvbmVudCB2YWx1ZSBhdDogXCIgKyBuKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSgwLCBBKEModCwgZSwgbikpLCBlLCBuKTtcbiAgICAgICAgfSxcbiAgICAgICAga2V5d29yZDogZnVuY3Rpb24ga2V5d29yZCh0KSB7XG4gICAgICAgICAgdmFyIGUgPSBcIlwiICsgdCxcbiAgICAgICAgICAgIG4gPSB0aGlzLmluZGV4LFxuICAgICAgICAgICAgaSA9IG4gKyBlLmxlbmd0aDtcbiAgICAgICAgICBpZiAoQyh0aGlzLnNvdXJjZSwgbiwgaSkgIT0gZSkgdGhyb3cgXyhcIkZhaWxlZCB0byBwYXJzZSB2YWx1ZSBhdDogXCIgKyBuKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKDAsIHQsIG4sIGkpO1xuICAgICAgICB9LFxuICAgICAgICBza2lwOiBmdW5jdGlvbiBza2lwKHQsIGUpIHtcbiAgICAgICAgICBmb3IgKHZhciBuID0gdGhpcy5zb3VyY2U7IGUgPCBuLmxlbmd0aCAmJiBUKHQsIHcobiwgZSkpOyBlKyspO1xuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9LFxuICAgICAgICB1bnRpbDogZnVuY3Rpb24gdW50aWwodCwgZSkge1xuICAgICAgICAgIGUgPSB0aGlzLnNraXAoSSwgZSk7XG4gICAgICAgICAgZm9yICh2YXIgbiA9IHcodGhpcy5zb3VyY2UsIGUpLCBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIGlmICh0W2ldID09IG4pIHJldHVybiBlO1xuICAgICAgICAgIHRocm93IF8oJ1VuZXhwZWN0ZWQgY2hhcmFjdGVyOiBcIicgKyBuICsgJ1wiIGF0OiAnICsgZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgRCA9IG0oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciB0LFxuICAgICAgICAgICAgZSA9IFwiOTAwNzE5OTI1NDc0MDk5M1wiO1xuICAgICAgICAgIFMoZSwgZnVuY3Rpb24gKGUsIG4sIGkpIHtcbiAgICAgICAgICAgIHQgPSBpLnNvdXJjZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdCAhPT0gZTtcbiAgICAgICAgfSksXG4gICAgICAgIE8gPSB2ICYmICFtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gMSAvIFMoXCItMCBcXHRcIikgIT0gLTEgLyAwO1xuICAgICAgICB9KTtcbiAgICAgIGkoe1xuICAgICAgICB0YXJnZXQ6IFwiSlNPTlwiLFxuICAgICAgICBzdGF0OiAhMCxcbiAgICAgICAgZm9yY2VkOiBEXG4gICAgICB9LCB7XG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSh0LCBlKSB7XG4gICAgICAgICAgcmV0dXJuIE8gJiYgIWMoZSkgPyBTKHQpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgICAgIHQgPSBwKHQpO1xuICAgICAgICAgICAgdmFyIG4gPSBuZXcgQ29udGV4dCh0LCAwLCBcIlwiKSxcbiAgICAgICAgICAgICAgaSA9IG4ucGFyc2UoKSxcbiAgICAgICAgICAgICAgciA9IGkudmFsdWUsXG4gICAgICAgICAgICAgIHMgPSBuLnNraXAoSSwgaS5lbmQpO1xuICAgICAgICAgICAgaWYgKHMgPCB0Lmxlbmd0aCkgdGhyb3cgXygnVW5leHBlY3RlZCBleHRyYSBjaGFyYWN0ZXI6IFwiJyArIHcodCwgcykgKyAnXCIgYWZ0ZXIgdGhlIHBhcnNlZCBkYXRhIGF0OiAnICsgcyk7XG4gICAgICAgICAgICByZXR1cm4gYyhlKSA/IGludGVybmFsaXplKHtcbiAgICAgICAgICAgICAgXCJcIjogclxuICAgICAgICAgICAgfSwgXCJcIiwgZSwgaSkgOiByO1xuICAgICAgICAgIH0odCwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oMTQpLFxuICAgICAgICByID0gbigzOSksXG4gICAgICAgIHMgPSBTeW50YXhFcnJvcixcbiAgICAgICAgYSA9IHBhcnNlSW50LFxuICAgICAgICBvID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcbiAgICAgICAgbCA9IGkoXCJcIi5jaGFyQXQpLFxuICAgICAgICBjID0gaShcIlwiLnNsaWNlKSxcbiAgICAgICAgaCA9IGkoLy4vLmV4ZWMpLFxuICAgICAgICBkID0ge1xuICAgICAgICAgICdcXFxcXCInOiAnXCInLFxuICAgICAgICAgIFwiXFxcXFxcXFxcIjogXCJcXFxcXCIsXG4gICAgICAgICAgXCJcXFxcL1wiOiBcIi9cIixcbiAgICAgICAgICBcIlxcXFxiXCI6IFwiXFxiXCIsXG4gICAgICAgICAgXCJcXFxcZlwiOiBcIlxcZlwiLFxuICAgICAgICAgIFwiXFxcXG5cIjogXCJcXG5cIixcbiAgICAgICAgICBcIlxcXFxyXCI6IFwiXFxyXCIsXG4gICAgICAgICAgXCJcXFxcdFwiOiBcIlxcdFwiXG4gICAgICAgIH0sXG4gICAgICAgIHUgPSAvXltcXGRhLWZdezR9JC9pLFxuICAgICAgICBwID0gL15bXFx1MDAwMC1cXHUwMDFGXSQvO1xuICAgICAgdC5leHBvcnRzID0gZnVuY3Rpb24gKHQsIGUpIHtcbiAgICAgICAgZm9yICh2YXIgbiA9ICEwLCBpID0gXCJcIjsgZSA8IHQubGVuZ3RoOykge1xuICAgICAgICAgIHZhciBmID0gbCh0LCBlKTtcbiAgICAgICAgICBpZiAoXCJcXFxcXCIgPT0gZikge1xuICAgICAgICAgICAgdmFyIGcgPSBjKHQsIGUsIGUgKyAyKTtcbiAgICAgICAgICAgIGlmIChyKGQsIGcpKSB7XG4gICAgICAgICAgICAgIGkgKz0gZFtnXTtcbiAgICAgICAgICAgICAgZSArPSAyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKFwiXFxcXHVcIiAhPSBnKSB0aHJvdyBzKCdVbmtub3duIGVzY2FwZSBzZXF1ZW5jZTogXCInICsgZyArICdcIicpO1xuICAgICAgICAgICAgICB2YXIgbSA9IGModCwgZSArPSAyLCBlICsgNCk7XG4gICAgICAgICAgICAgIGlmICghaCh1LCBtKSkgdGhyb3cgcyhcIkJhZCBVbmljb2RlIGVzY2FwZSBhdDogXCIgKyBlKTtcbiAgICAgICAgICAgICAgaSArPSBvKGEobSwgMTYpKTtcbiAgICAgICAgICAgICAgZSArPSA0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoJ1wiJyA9PSBmKSB7XG4gICAgICAgICAgICAgIG4gPSAhMTtcbiAgICAgICAgICAgICAgZSsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoKHAsIGYpKSB0aHJvdyBzKFwiQmFkIGNvbnRyb2wgY2hhcmFjdGVyIGluIHN0cmluZyBsaXRlcmFsIGF0OiBcIiArIGUpO1xuICAgICAgICAgICAgaSArPSBmO1xuICAgICAgICAgICAgZSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobikgdGhyb3cgcyhcIlVudGVybWluYXRlZCBzdHJpbmcgYXQ6IFwiICsgZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmFsdWU6IGksXG4gICAgICAgICAgZW5kOiBlXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9jbGFzczE5O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLlN0YXRUaW1lciA9IGUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uID0gZS5QaXhlbHNQZXJJbmNoID0gZS5QYWdlVmlld3BvcnQgPSBlLlBERkRhdGVTdHJpbmcgPSBlLkRPTVN0YW5kYXJkRm9udERhdGFGYWN0b3J5ID0gZS5ET01TVkdGYWN0b3J5ID0gZS5ET01GaWx0ZXJGYWN0b3J5ID0gZS5ET01DYW52YXNGYWN0b3J5ID0gZS5ET01DTWFwUmVhZGVyRmFjdG9yeSA9IGUuQW5ub3RhdGlvblByZWZpeCA9IHZvaWQgMDtcbiAgICAgIGUuZGVwcmVjYXRlZCA9IGZ1bmN0aW9uIGRlcHJlY2F0ZWQodCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkRlcHJlY2F0ZWQgQVBJIHVzYWdlOiBcIiArIHQpO1xuICAgICAgfTtcbiAgICAgIGUuZ2V0Q29sb3JWYWx1ZXMgPSBmdW5jdGlvbiBnZXRDb2xvclZhbHVlcyh0KSB7XG4gICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgICAgZS5zdHlsZS52aXNpYmlsaXR5ID0gXCJoaWRkZW5cIjtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoZSk7XG4gICAgICAgIGZvciAoY29uc3QgbiBvZiB0LmtleXMoKSkge1xuICAgICAgICAgIGUuc3R5bGUuY29sb3IgPSBuO1xuICAgICAgICAgIGNvbnN0IGkgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5jb2xvcjtcbiAgICAgICAgICB0LnNldChuLCBnZXRSR0IoaSkpO1xuICAgICAgICB9XG4gICAgICAgIGUucmVtb3ZlKCk7XG4gICAgICB9O1xuICAgICAgZS5nZXRDdXJyZW50VHJhbnNmb3JtID0gZnVuY3Rpb24gZ2V0Q3VycmVudFRyYW5zZm9ybSh0KSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBhOiBlLFxuICAgICAgICAgIGI6IG4sXG4gICAgICAgICAgYzogaSxcbiAgICAgICAgICBkOiByLFxuICAgICAgICAgIGU6IHMsXG4gICAgICAgICAgZjogYVxuICAgICAgICB9ID0gdC5nZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgcmV0dXJuIFtlLCBuLCBpLCByLCBzLCBhXTtcbiAgICAgIH07XG4gICAgICBlLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlID0gZnVuY3Rpb24gZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UodCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgYTogZSxcbiAgICAgICAgICBiOiBuLFxuICAgICAgICAgIGM6IGksXG4gICAgICAgICAgZDogcixcbiAgICAgICAgICBlOiBzLFxuICAgICAgICAgIGY6IGFcbiAgICAgICAgfSA9IHQuZ2V0VHJhbnNmb3JtKCkuaW52ZXJ0U2VsZigpO1xuICAgICAgICByZXR1cm4gW2UsIG4sIGksIHIsIHMsIGFdO1xuICAgICAgfTtcbiAgICAgIGUuZ2V0RmlsZW5hbWVGcm9tVXJsID0gZnVuY3Rpb24gZ2V0RmlsZW5hbWVGcm9tVXJsKHQpIHtcbiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gJiYgYXJndW1lbnRzWzFdIHx8IChbdF0gPSB0LnNwbGl0KC9bIz9dLywgMSkpO1xuICAgICAgICByZXR1cm4gdC5zdWJzdHJpbmcodC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICAgIH07XG4gICAgICBlLmdldFBkZkZpbGVuYW1lRnJvbVVybCA9IGZ1bmN0aW9uIGdldFBkZkZpbGVuYW1lRnJvbVVybCh0KSB7XG4gICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBcImRvY3VtZW50LnBkZlwiO1xuICAgICAgICBpZiAoXCJzdHJpbmdcIiAhPSB0eXBlb2YgdCkgcmV0dXJuIGU7XG4gICAgICAgIGlmIChpc0RhdGFTY2hlbWUodCkpIHtcbiAgICAgICAgICAoMCwgci53YXJuKSgnZ2V0UGRmRmlsZW5hbWVGcm9tVXJsOiBpZ25vcmUgXCJkYXRhOlwiLVVSTCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4nKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gL1teLz8jPV0rXFwucGRmXFxiKD8hLipcXC5wZGZcXGIpL2ksXG4gICAgICAgICAgaSA9IC9eKD86KD86W146XSs6KT9cXC9cXC9bXi9dKyk/KFtePyNdKikoXFw/W14jXSopPygjLiopPyQvLmV4ZWModCk7XG4gICAgICAgIGxldCBzID0gbi5leGVjKGlbMV0pIHx8IG4uZXhlYyhpWzJdKSB8fCBuLmV4ZWMoaVszXSk7XG4gICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgcyA9IHNbMF07XG4gICAgICAgICAgaWYgKHMuaW5jbHVkZXMoXCIlXCIpKSB0cnkge1xuICAgICAgICAgICAgcyA9IG4uZXhlYyhkZWNvZGVVUklDb21wb25lbnQocykpWzBdO1xuICAgICAgICAgIH0gY2F0Y2ggKF91bnVzZWQ5KSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzIHx8IGU7XG4gICAgICB9O1xuICAgICAgZS5nZXRSR0IgPSBnZXRSR0I7XG4gICAgICBlLmdldFhmYVBhZ2VWaWV3cG9ydCA9IGZ1bmN0aW9uIGdldFhmYVBhZ2VWaWV3cG9ydCh0LCBlKSB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgc2NhbGU6IG4gPSAxLFxuICAgICAgICAgIHJvdGF0aW9uOiBpID0gMFxuICAgICAgICB9ID0gZTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgd2lkdGg6IHIsXG4gICAgICAgICAgICBoZWlnaHQ6IHNcbiAgICAgICAgICB9ID0gdC5hdHRyaWJ1dGVzLnN0eWxlLFxuICAgICAgICAgIGEgPSBbMCwgMCwgcGFyc2VJbnQociksIHBhcnNlSW50KHMpXTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYWdlVmlld3BvcnQoe1xuICAgICAgICAgIHZpZXdCb3g6IGEsXG4gICAgICAgICAgc2NhbGU6IG4sXG4gICAgICAgICAgcm90YXRpb246IGlcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgZS5pc0RhdGFTY2hlbWUgPSBpc0RhdGFTY2hlbWU7XG4gICAgICBlLmlzUGRmRmlsZSA9IGZ1bmN0aW9uIGlzUGRmRmlsZSh0KSB7XG4gICAgICAgIHJldHVybiBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmIC9cXC5wZGYkL2kudGVzdCh0KTtcbiAgICAgIH07XG4gICAgICBlLmlzVmFsaWRGZXRjaFVybCA9IGlzVmFsaWRGZXRjaFVybDtcbiAgICAgIGUubG9hZFNjcmlwdCA9IGZ1bmN0aW9uIGxvYWRTY3JpcHQodCkge1xuICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdICYmIGFyZ3VtZW50c1sxXTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChuLCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgICAgci5zcmMgPSB0O1xuICAgICAgICAgIHIub25sb2FkID0gZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgIGUgJiYgci5yZW1vdmUoKTtcbiAgICAgICAgICAgIG4odCk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpKG5ldyBFcnJvcihcIkNhbm5vdCBsb2FkIHNjcmlwdCBhdDogXCIuY29uY2F0KHIuc3JjKSkpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmQocik7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGUuc2V0TGF5ZXJEaW1lbnNpb25zID0gZnVuY3Rpb24gc2V0TGF5ZXJEaW1lbnNpb25zKHQsIGUpIHtcbiAgICAgICAgbGV0IG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSAmJiBhcmd1bWVudHNbMl0sXG4gICAgICAgICAgaSA9ICEoYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10pIHx8IGFyZ3VtZW50c1szXTtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBQYWdlVmlld3BvcnQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHBhZ2VXaWR0aDogaSxcbiAgICAgICAgICAgICAgcGFnZUhlaWdodDogclxuICAgICAgICAgICAgfSA9IGUucmF3RGltcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3R5bGU6IHNcbiAgICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgICAgYSA9IFwiY2FsYyh2YXIoLS1zY2FsZS1mYWN0b3IpICogXCIuY29uY2F0KGksIFwicHgpXCIpLFxuICAgICAgICAgICAgbyA9IFwiY2FsYyh2YXIoLS1zY2FsZS1mYWN0b3IpICogXCIuY29uY2F0KHIsIFwicHgpXCIpO1xuICAgICAgICAgIGlmIChuICYmIGUucm90YXRpb24gJSAxODAgIT0gMCkge1xuICAgICAgICAgICAgcy53aWR0aCA9IG87XG4gICAgICAgICAgICBzLmhlaWdodCA9IGE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMud2lkdGggPSBhO1xuICAgICAgICAgICAgcy5oZWlnaHQgPSBvO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpICYmIHQuc2V0QXR0cmlidXRlKFwiZGF0YS1tYWluLXJvdGF0aW9uXCIsIGUucm90YXRpb24pO1xuICAgICAgfTtcbiAgICAgIG4oMik7XG4gICAgICBuKDkzKTtcbiAgICAgIG4oMTAxKTtcbiAgICAgIG4oMTAyKTtcbiAgICAgIG4oMTA1KTtcbiAgICAgIG4oMTA3KTtcbiAgICAgIG4oMTA5KTtcbiAgICAgIG4oMTEzKTtcbiAgICAgIG4oMTE2KTtcbiAgICAgIG4oMTIzKTtcbiAgICAgIG4oODkpO1xuICAgICAgbig4NCk7XG4gICAgICBuKDg2KTtcbiAgICAgIG4oODcpO1xuICAgICAgdmFyIGkgPSBuKDE2OCksXG4gICAgICAgIHIgPSBuKDEpO1xuICAgICAgY29uc3QgcyA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbiAgICAgIGUuQW5ub3RhdGlvblByZWZpeCA9IFwicGRmanNfaW50ZXJuYWxfaWRfXCI7XG4gICAgICBjbGFzcyBQaXhlbHNQZXJJbmNoIHt9XG4gICAgICBfY2xhc3MxOSA9IFBpeGVsc1BlckluY2g7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoUGl4ZWxzUGVySW5jaCwgXCJDU1NcIiwgOTYpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KFBpeGVsc1BlckluY2gsIFwiUERGXCIsIDcyKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShQaXhlbHNQZXJJbmNoLCBcIlBERl9UT19DU1NfVU5JVFNcIiwgX2NsYXNzMTkuQ1NTIC8gX2NsYXNzMTkuUERGKTtcbiAgICAgIGUuUGl4ZWxzUGVySW5jaCA9IFBpeGVsc1BlckluY2g7XG4gICAgICB2YXIgX2t0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX010ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2U3ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1J0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0Z0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0l0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0R0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX090ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0x0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX050ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX08zID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX04yID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0J0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0h0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2p0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX3F0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1V0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX3p0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBET01GaWx0ZXJGYWN0b3J5IGV4dGVuZHMgaS5CYXNlRmlsdGVyRmFjdG9yeSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBkb2NJZDogX3Q5LFxuICAgICAgICAgICAgb3duZXJEb2N1bWVudDogX2U4ID0gZ2xvYmFsVGhpcy5kb2N1bWVudFxuICAgICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF96dCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9VdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9xdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9qdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9IdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0J0LCB7XG4gICAgICAgICAgICBnZXQ6IF9nZXRfQnQsXG4gICAgICAgICAgICBzZXQ6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9OMiwge1xuICAgICAgICAgICAgZ2V0OiBfZ2V0X04sXG4gICAgICAgICAgICBzZXQ6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9rdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX010LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZTcsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9SdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0Z0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfSXQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9EdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX090LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfTHQsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9OdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX08zLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9lNywgX3Q5KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1J0LCBfZTgpO1xuICAgICAgICB9XG4gICAgICAgIGFkZEZpbHRlcih0KSB7XG4gICAgICAgICAgdmFyIF90aGlzJE81LCBfdGhpcyRPNjtcbiAgICAgICAgICBpZiAoIXQpIHJldHVybiBcIm5vbmVcIjtcbiAgICAgICAgICBsZXQgZSxcbiAgICAgICAgICAgIG4sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIHMgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX04yKS5nZXQodCk7XG4gICAgICAgICAgaWYgKHMpIHJldHVybiBzO1xuICAgICAgICAgIGlmICgxID09PSB0Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcyA9IHRbMF0sXG4gICAgICAgICAgICAgIGEgPSBuZXcgQXJyYXkoMjU2KTtcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgMjU2OyB0KyspIGFbdF0gPSBzW3RdIC8gMjU1O1xuICAgICAgICAgICAgciA9IGUgPSBuID0gaSA9IGEuam9pbihcIixcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFtzLCBhLCBvXSA9IHQsXG4gICAgICAgICAgICAgIGwgPSBuZXcgQXJyYXkoMjU2KSxcbiAgICAgICAgICAgICAgYyA9IG5ldyBBcnJheSgyNTYpLFxuICAgICAgICAgICAgICBoID0gbmV3IEFycmF5KDI1Nik7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IDI1NjsgdCsrKSB7XG4gICAgICAgICAgICAgIGxbdF0gPSBzW3RdIC8gMjU1O1xuICAgICAgICAgICAgICBjW3RdID0gYVt0XSAvIDI1NTtcbiAgICAgICAgICAgICAgaFt0XSA9IG9bdF0gLyAyNTU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlID0gbC5qb2luKFwiLFwiKTtcbiAgICAgICAgICAgIG4gPSBjLmpvaW4oXCIsXCIpO1xuICAgICAgICAgICAgaSA9IGguam9pbihcIixcIik7XG4gICAgICAgICAgICByID0gXCJcIi5jb25jYXQoZSkuY29uY2F0KG4pLmNvbmNhdChpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcyA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTjIpLmdldChyKTtcbiAgICAgICAgICBpZiAocykge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OMikuc2V0KHQsIHMpO1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGEgPSBcImdfXCIuY29uY2F0KF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZTcpLCBcIl90cmFuc2Zlcl9tYXBfXCIpLmNvbmNhdCgoX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9PMywgKF90aGlzJE81ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9PMyksIF90aGlzJE82ID0gX3RoaXMkTzUrKywgX3RoaXMkTzUpKSwgX3RoaXMkTzYpKSxcbiAgICAgICAgICAgIG8gPSBcInVybCgjXCIuY29uY2F0KGEsIFwiKVwiKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX04yKS5zZXQodCwgbyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OMikuc2V0KHIsIG8pO1xuICAgICAgICAgIGNvbnN0IGwgPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9qdCwgX2p0MikuY2FsbCh0aGlzLCBhKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9VdCwgX1V0MikuY2FsbCh0aGlzLCBlLCBuLCBpLCBsKTtcbiAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgfVxuICAgICAgICBhZGRIQ01GaWx0ZXIodCwgZSkge1xuICAgICAgICAgIHZhciBfY2xhc3NQcml2YXRlRmllbGRHZXQ2O1xuICAgICAgICAgIGNvbnN0IG4gPSBcIlwiLmNvbmNhdCh0LCBcIi1cIikuY29uY2F0KGUpO1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0l0KSA9PT0gbikgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfSXQsIG4pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfRHQsIFwibm9uZVwiKTtcbiAgICAgICAgICAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0NiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRnQpKSA9PT0gbnVsbCB8fCBfY2xhc3NQcml2YXRlRmllbGRHZXQ2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2xhc3NQcml2YXRlRmllbGRHZXQ2LnJlbW92ZSgpO1xuICAgICAgICAgIGlmICghdCB8fCAhZSkgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRHQpO1xuICAgICAgICAgIGNvbnN0IGkgPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF96dCwgX3p0MikuY2FsbCh0aGlzLCB0KTtcbiAgICAgICAgICB0ID0gci5VdGlsLm1ha2VIZXhDb2xvciguLi5pKTtcbiAgICAgICAgICBjb25zdCBzID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfenQsIF96dDIpLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgZSA9IHIuVXRpbC5tYWtlSGV4Q29sb3IoLi4ucyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9CdCkuc3R5bGUuY29sb3IgPSBcIlwiO1xuICAgICAgICAgIGlmIChcIiMwMDAwMDBcIiA9PT0gdCAmJiBcIiNmZmZmZmZcIiA9PT0gZSB8fCB0ID09PSBlKSByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9EdCk7XG4gICAgICAgICAgY29uc3QgYSA9IG5ldyBBcnJheSgyNTYpO1xuICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDw9IDI1NTsgdCsrKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdCAvIDI1NTtcbiAgICAgICAgICAgIGFbdF0gPSBlIDw9IC4wMzkyOCA/IGUgLyAxMi45MiA6ICgoZSArIC4wNTUpIC8gMS4wNTUpICoqIDIuNDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbyA9IGEuam9pbihcIixcIiksXG4gICAgICAgICAgICBsID0gXCJnX1wiLmNvbmNhdChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2U3KSwgXCJfaGNtX2ZpbHRlclwiKSxcbiAgICAgICAgICAgIGMgPSBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX090LCBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9qdCwgX2p0MikuY2FsbCh0aGlzLCBsKSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVXQsIF9VdDIpLmNhbGwodGhpcywgbywgbywgbywgYyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfSHQsIF9IdDIpLmNhbGwodGhpcywgYyk7XG4gICAgICAgICAgY29uc3QgZ2V0U3RlcHMgPSAodCwgZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbiA9IGlbdF0gLyAyNTUsXG4gICAgICAgICAgICAgIHIgPSBzW3RdIC8gMjU1LFxuICAgICAgICAgICAgICBhID0gbmV3IEFycmF5KGUgKyAxKTtcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDw9IGU7IHQrKykgYVt0XSA9IG4gKyB0IC8gZSAqIChyIC0gbik7XG4gICAgICAgICAgICByZXR1cm4gYS5qb2luKFwiLFwiKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1V0LCBfVXQyKS5jYWxsKHRoaXMsIGdldFN0ZXBzKDAsIDUpLCBnZXRTdGVwcygxLCA1KSwgZ2V0U3RlcHMoMiwgNSksIGMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfRHQsIFwidXJsKCNcIi5jb25jYXQobCwgXCIpXCIpKTtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9EdCk7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGlnaGxpZ2h0SENNRmlsdGVyKHQsIGUsIG4sIGkpIHtcbiAgICAgICAgICB2YXIgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0NztcbiAgICAgICAgICBjb25zdCByID0gXCJcIi5jb25jYXQodCwgXCItXCIpLmNvbmNhdChlLCBcIi1cIikuY29uY2F0KG4sIFwiLVwiKS5jb25jYXQoaSk7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTHQpID09PSByKSByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9MdCwgcik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9OdCwgXCJub25lXCIpO1xuICAgICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQ3ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9PdCkpID09PSBudWxsIHx8IF9jbGFzc1ByaXZhdGVGaWVsZEdldDcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDcucmVtb3ZlKCk7XG4gICAgICAgICAgaWYgKCF0IHx8ICFlKSByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9OdCk7XG4gICAgICAgICAgY29uc3QgW3MsIGFdID0gW3QsIGVdLm1hcChfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF96dCwgX3p0MikuYmluZCh0aGlzKSk7XG4gICAgICAgICAgbGV0IG8gPSBNYXRoLnJvdW5kKC4yMTI2ICogc1swXSArIC43MTUyICogc1sxXSArIC4wNzIyICogc1syXSksXG4gICAgICAgICAgICBsID0gTWF0aC5yb3VuZCguMjEyNiAqIGFbMF0gKyAuNzE1MiAqIGFbMV0gKyAuMDcyMiAqIGFbMl0pLFxuICAgICAgICAgICAgW2MsIGhdID0gW24sIGldLm1hcChfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF96dCwgX3p0MikuYmluZCh0aGlzKSk7XG4gICAgICAgICAgbCA8IG8gJiYgKFtvLCBsLCBjLCBoXSA9IFtsLCBvLCBoLCBjXSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9CdCkuc3R5bGUuY29sb3IgPSBcIlwiO1xuICAgICAgICAgIGNvbnN0IGdldFN0ZXBzID0gKHQsIGUsIG4pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaSA9IG5ldyBBcnJheSgyNTYpLFxuICAgICAgICAgICAgICAgIHIgPSAobCAtIG8pIC8gbixcbiAgICAgICAgICAgICAgICBzID0gdCAvIDI1NSxcbiAgICAgICAgICAgICAgICBhID0gKGUgLSB0KSAvICgyNTUgKiBuKTtcbiAgICAgICAgICAgICAgbGV0IGMgPSAwO1xuICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8PSBuOyB0KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gTWF0aC5yb3VuZChvICsgdCAqIHIpLFxuICAgICAgICAgICAgICAgICAgbiA9IHMgKyB0ICogYTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gYzsgdCA8PSBlOyB0KyspIGlbdF0gPSBuO1xuICAgICAgICAgICAgICAgIGMgPSBlICsgMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGxldCB0ID0gYzsgdCA8IDI1NjsgdCsrKSBpW3RdID0gaVtjIC0gMV07XG4gICAgICAgICAgICAgIHJldHVybiBpLmpvaW4oXCIsXCIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGQgPSBcImdfXCIuY29uY2F0KF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZTcpLCBcIl9oY21faGlnaGxpZ2h0X2ZpbHRlclwiKSxcbiAgICAgICAgICAgIHUgPSBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX090LCBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9qdCwgX2p0MikuY2FsbCh0aGlzLCBkKSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfSHQsIF9IdDIpLmNhbGwodGhpcywgdSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVXQsIF9VdDIpLmNhbGwodGhpcywgZ2V0U3RlcHMoY1swXSwgaFswXSwgNSksIGdldFN0ZXBzKGNbMV0sIGhbMV0sIDUpLCBnZXRTdGVwcyhjWzJdLCBoWzJdLCA1KSwgdSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9OdCwgXCJ1cmwoI1wiLmNvbmNhdChkLCBcIilcIikpO1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX050KTtcbiAgICAgICAgfVxuICAgICAgICBkZXN0cm95KCkge1xuICAgICAgICAgIGlmICghKGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdICYmIGFyZ3VtZW50c1swXSkgfHwgIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRHQpICYmICFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX050KSkge1xuICAgICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTXQpKSB7XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTXQpLnBhcmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9NdCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9rdCkpIHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9rdCkuY2xlYXIoKTtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9rdCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX08zLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9nZXRfTigpIHtcbiAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfa3QpIHx8IF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfa3QsIG5ldyBNYXAoKSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfZ2V0X0J0KCkge1xuICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTXQpKSB7XG4gICAgICAgICAgY29uc3QgdCA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUnQpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0eWxlOiBlXG4gICAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBlLnZpc2liaWxpdHkgPSBcImhpZGRlblwiO1xuICAgICAgICAgIGUuY29udGFpbiA9IFwic3RyaWN0XCI7XG4gICAgICAgICAgZS53aWR0aCA9IGUuaGVpZ2h0ID0gMDtcbiAgICAgICAgICBlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICAgIGUudG9wID0gZS5sZWZ0ID0gMDtcbiAgICAgICAgICBlLnpJbmRleCA9IC0xO1xuICAgICAgICAgIGNvbnN0IG4gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1J0KS5jcmVhdGVFbGVtZW50TlMocywgXCJzdmdcIik7XG4gICAgICAgICAgbi5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCAwKTtcbiAgICAgICAgICBuLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCAwKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX010LCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1J0KS5jcmVhdGVFbGVtZW50TlMocywgXCJkZWZzXCIpKTtcbiAgICAgICAgICB0LmFwcGVuZChuKTtcbiAgICAgICAgICBuLmFwcGVuZChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX010KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9SdCkuYm9keS5hcHBlbmQodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTXQpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0h0Mih0KSB7XG4gICAgICAgIGNvbnN0IGUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1J0KS5jcmVhdGVFbGVtZW50TlMocywgXCJmZUNvbG9yTWF0cml4XCIpO1xuICAgICAgICBlLnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJtYXRyaXhcIik7XG4gICAgICAgIGUuc2V0QXR0cmlidXRlKFwidmFsdWVzXCIsIFwiMC4yMTI2IDAuNzE1MiAwLjA3MjIgMCAwIDAuMjEyNiAwLjcxNTIgMC4wNzIyIDAgMCAwLjIxMjYgMC43MTUyIDAuMDcyMiAwIDAgMCAwIDAgMSAwXCIpO1xuICAgICAgICB0LmFwcGVuZChlKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9qdDIodCkge1xuICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9SdCkuY3JlYXRlRWxlbWVudE5TKHMsIFwiZmlsdGVyXCIpO1xuICAgICAgICBlLnNldEF0dHJpYnV0ZShcImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyc1wiLCBcInNSR0JcIik7XG4gICAgICAgIGUuc2V0QXR0cmlidXRlKFwiaWRcIiwgdCk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfQnQpLmFwcGVuZChlKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfcXQyKHQsIGUsIG4pIHtcbiAgICAgICAgY29uc3QgaSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfUnQpLmNyZWF0ZUVsZW1lbnROUyhzLCBlKTtcbiAgICAgICAgaS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwiZGlzY3JldGVcIik7XG4gICAgICAgIGkuc2V0QXR0cmlidXRlKFwidGFibGVWYWx1ZXNcIiwgbik7XG4gICAgICAgIHQuYXBwZW5kKGkpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX1V0Mih0LCBlLCBuLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1J0KS5jcmVhdGVFbGVtZW50TlMocywgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCIpO1xuICAgICAgICBpLmFwcGVuZChyKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfcXQsIF9xdDIpLmNhbGwodGhpcywgciwgXCJmZUZ1bmNSXCIsIHQpO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9xdCwgX3F0MikuY2FsbCh0aGlzLCByLCBcImZlRnVuY0dcIiwgZSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3F0LCBfcXQyKS5jYWxsKHRoaXMsIHIsIFwiZmVGdW5jQlwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF96dDIodCkge1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0J0KS5zdHlsZS5jb2xvciA9IHQ7XG4gICAgICAgIHJldHVybiBnZXRSR0IoZ2V0Q29tcHV0ZWRTdHlsZShfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0J0KSkuZ2V0UHJvcGVydHlWYWx1ZShcImNvbG9yXCIpKTtcbiAgICAgIH1cbiAgICAgIGUuRE9NRmlsdGVyRmFjdG9yeSA9IERPTUZpbHRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBET01DYW52YXNGYWN0b3J5IGV4dGVuZHMgaS5CYXNlQ2FudmFzRmFjdG9yeSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50OiB0ID0gZ2xvYmFsVGhpcy5kb2N1bWVudFxuICAgICAgICAgIH0gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSB0O1xuICAgICAgICB9XG4gICAgICAgIF9jcmVhdGVDYW52YXModCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICAgIG4ud2lkdGggPSB0O1xuICAgICAgICAgIG4uaGVpZ2h0ID0gZTtcbiAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5ET01DYW52YXNGYWN0b3J5ID0gRE9NQ2FudmFzRmFjdG9yeTtcbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh0KSB7XG4gICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gJiYgYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoaXNWYWxpZEZldGNoVXJsKHQsIGRvY3VtZW50LmJhc2VVUkkpKSB7XG4gICAgICAgICAgY29uc3QgbiA9IGF3YWl0IGZldGNoKHQpO1xuICAgICAgICAgIGlmICghbi5vaykgdGhyb3cgbmV3IEVycm9yKG4uc3RhdHVzVGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGUgPyBuZXcgVWludDhBcnJheShhd2FpdCBuLmFycmF5QnVmZmVyKCkpIDogKDAsIHIuc3RyaW5nVG9CeXRlcykoYXdhaXQgbi50ZXh0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgobiwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHMgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgICBzLm9wZW4oXCJHRVRcIiwgdCwgITApO1xuICAgICAgICAgIGUgJiYgKHMucmVzcG9uc2VUeXBlID0gXCJhcnJheWJ1ZmZlclwiKTtcbiAgICAgICAgICBzLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzLnJlYWR5U3RhdGUgPT09IFhNTEh0dHBSZXF1ZXN0LkRPTkUpIHtcbiAgICAgICAgICAgICAgaWYgKDIwMCA9PT0gcy5zdGF0dXMgfHwgMCA9PT0gcy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgdDtcbiAgICAgICAgICAgICAgICBlICYmIHMucmVzcG9uc2UgPyB0ID0gbmV3IFVpbnQ4QXJyYXkocy5yZXNwb25zZSkgOiAhZSAmJiBzLnJlc3BvbnNlVGV4dCAmJiAodCA9ICgwLCByLnN0cmluZ1RvQnl0ZXMpKHMucmVzcG9uc2VUZXh0KSk7XG4gICAgICAgICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgICAgICAgIG4odCk7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGkobmV3IEVycm9yKHMuc3RhdHVzVGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgcy5zZW5kKG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGNsYXNzIERPTUNNYXBSZWFkZXJGYWN0b3J5IGV4dGVuZHMgaS5CYXNlQ01hcFJlYWRlckZhY3Rvcnkge1xuICAgICAgICBfZmV0Y2hEYXRhKHQsIGUpIHtcbiAgICAgICAgICByZXR1cm4gZmV0Y2hEYXRhKHQsIHRoaXMuaXNDb21wcmVzc2VkKS50aGVuKHQgPT4gKHtcbiAgICAgICAgICAgIGNNYXBEYXRhOiB0LFxuICAgICAgICAgICAgY29tcHJlc3Npb25UeXBlOiBlXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLkRPTUNNYXBSZWFkZXJGYWN0b3J5ID0gRE9NQ01hcFJlYWRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeSBleHRlbmRzIGkuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5IHtcbiAgICAgICAgX2ZldGNoRGF0YSh0KSB7XG4gICAgICAgICAgcmV0dXJuIGZldGNoRGF0YSh0LCAhMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuRE9NU3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBET01TdGFuZGFyZEZvbnREYXRhRmFjdG9yeTtcbiAgICAgIGNsYXNzIERPTVNWR0ZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTVkdGYWN0b3J5IHtcbiAgICAgICAgX2NyZWF0ZVNWRyh0KSB7XG4gICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzLCB0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5ET01TVkdGYWN0b3J5ID0gRE9NU1ZHRmFjdG9yeTtcbiAgICAgIGNsYXNzIFBhZ2VWaWV3cG9ydCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgdmlld0JveDogZSxcbiAgICAgICAgICAgIHNjYWxlOiBuLFxuICAgICAgICAgICAgcm90YXRpb246IGksXG4gICAgICAgICAgICBvZmZzZXRYOiByID0gMCxcbiAgICAgICAgICAgIG9mZnNldFk6IHMgPSAwLFxuICAgICAgICAgICAgZG9udEZsaXA6IGEgPSAhMVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIHRoaXMudmlld0JveCA9IGU7XG4gICAgICAgICAgdGhpcy5zY2FsZSA9IG47XG4gICAgICAgICAgdGhpcy5yb3RhdGlvbiA9IGk7XG4gICAgICAgICAgdGhpcy5vZmZzZXRYID0gcjtcbiAgICAgICAgICB0aGlzLm9mZnNldFkgPSBzO1xuICAgICAgICAgIGNvbnN0IG8gPSAoZVsyXSArIGVbMF0pIC8gMixcbiAgICAgICAgICAgIGwgPSAoZVszXSArIGVbMV0pIC8gMjtcbiAgICAgICAgICBsZXQgYywgaCwgZCwgdSwgcCwgZiwgZywgbTtcbiAgICAgICAgICBpICU9IDM2MDtcbiAgICAgICAgICBpIDwgMCAmJiAoaSArPSAzNjApO1xuICAgICAgICAgIHN3aXRjaCAoaSkge1xuICAgICAgICAgICAgY2FzZSAxODA6XG4gICAgICAgICAgICAgIGMgPSAtMTtcbiAgICAgICAgICAgICAgaCA9IDA7XG4gICAgICAgICAgICAgIGQgPSAwO1xuICAgICAgICAgICAgICB1ID0gMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICBjID0gMDtcbiAgICAgICAgICAgICAgaCA9IDE7XG4gICAgICAgICAgICAgIGQgPSAxO1xuICAgICAgICAgICAgICB1ID0gMDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI3MDpcbiAgICAgICAgICAgICAgYyA9IDA7XG4gICAgICAgICAgICAgIGggPSAtMTtcbiAgICAgICAgICAgICAgZCA9IC0xO1xuICAgICAgICAgICAgICB1ID0gMDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGMgPSAxO1xuICAgICAgICAgICAgICBoID0gMDtcbiAgICAgICAgICAgICAgZCA9IDA7XG4gICAgICAgICAgICAgIHUgPSAtMTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYWdlVmlld3BvcnQ6IEludmFsaWQgcm90YXRpb24sIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5MCBkZWdyZWVzLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGEpIHtcbiAgICAgICAgICAgIGQgPSAtZDtcbiAgICAgICAgICAgIHUgPSAtdTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKDAgPT09IGMpIHtcbiAgICAgICAgICAgIHAgPSBNYXRoLmFicyhsIC0gZVsxXSkgKiBuICsgcjtcbiAgICAgICAgICAgIGYgPSBNYXRoLmFicyhvIC0gZVswXSkgKiBuICsgcztcbiAgICAgICAgICAgIGcgPSAoZVszXSAtIGVbMV0pICogbjtcbiAgICAgICAgICAgIG0gPSAoZVsyXSAtIGVbMF0pICogbjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCA9IE1hdGguYWJzKG8gLSBlWzBdKSAqIG4gKyByO1xuICAgICAgICAgICAgZiA9IE1hdGguYWJzKGwgLSBlWzFdKSAqIG4gKyBzO1xuICAgICAgICAgICAgZyA9IChlWzJdIC0gZVswXSkgKiBuO1xuICAgICAgICAgICAgbSA9IChlWzNdIC0gZVsxXSkgKiBuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IFtjICogbiwgaCAqIG4sIGQgKiBuLCB1ICogbiwgcCAtIGMgKiBuICogbyAtIGQgKiBuICogbCwgZiAtIGggKiBuICogbyAtIHUgKiBuICogbF07XG4gICAgICAgICAgdGhpcy53aWR0aCA9IGc7XG4gICAgICAgICAgdGhpcy5oZWlnaHQgPSBtO1xuICAgICAgICB9XG4gICAgICAgIGdldCByYXdEaW1zKCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHZpZXdCb3g6IHRcbiAgICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gKDAsIHIuc2hhZG93KSh0aGlzLCBcInJhd0RpbXNcIiwge1xuICAgICAgICAgICAgcGFnZVdpZHRoOiB0WzJdIC0gdFswXSxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IHRbM10gLSB0WzFdLFxuICAgICAgICAgICAgcGFnZVg6IHRbMF0sXG4gICAgICAgICAgICBwYWdlWTogdFsxXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNsb25lKCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBzY2FsZTogdCA9IHRoaXMuc2NhbGUsXG4gICAgICAgICAgICByb3RhdGlvbjogZSA9IHRoaXMucm90YXRpb24sXG4gICAgICAgICAgICBvZmZzZXRYOiBuID0gdGhpcy5vZmZzZXRYLFxuICAgICAgICAgICAgb2Zmc2V0WTogaSA9IHRoaXMub2Zmc2V0WSxcbiAgICAgICAgICAgIGRvbnRGbGlwOiByID0gITFcbiAgICAgICAgICB9ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VWaWV3cG9ydCh7XG4gICAgICAgICAgICB2aWV3Qm94OiB0aGlzLnZpZXdCb3guc2xpY2UoKSxcbiAgICAgICAgICAgIHNjYWxlOiB0LFxuICAgICAgICAgICAgcm90YXRpb246IGUsXG4gICAgICAgICAgICBvZmZzZXRYOiBuLFxuICAgICAgICAgICAgb2Zmc2V0WTogaSxcbiAgICAgICAgICAgIGRvbnRGbGlwOiByXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udmVydFRvVmlld3BvcnRQb2ludCh0LCBlKSB7XG4gICAgICAgICAgcmV0dXJuIHIuVXRpbC5hcHBseVRyYW5zZm9ybShbdCwgZV0sIHRoaXMudHJhbnNmb3JtKTtcbiAgICAgICAgfVxuICAgICAgICBjb252ZXJ0VG9WaWV3cG9ydFJlY3RhbmdsZSh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHIuVXRpbC5hcHBseVRyYW5zZm9ybShbdFswXSwgdFsxXV0sIHRoaXMudHJhbnNmb3JtKSxcbiAgICAgICAgICAgIG4gPSByLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW3RbMl0sIHRbM11dLCB0aGlzLnRyYW5zZm9ybSk7XG4gICAgICAgICAgcmV0dXJuIFtlWzBdLCBlWzFdLCBuWzBdLCBuWzFdXTtcbiAgICAgICAgfVxuICAgICAgICBjb252ZXJ0VG9QZGZQb2ludCh0LCBlKSB7XG4gICAgICAgICAgcmV0dXJuIHIuVXRpbC5hcHBseUludmVyc2VUcmFuc2Zvcm0oW3QsIGVdLCB0aGlzLnRyYW5zZm9ybSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuUGFnZVZpZXdwb3J0ID0gUGFnZVZpZXdwb3J0O1xuICAgICAgY2xhc3MgUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uIGV4dGVuZHMgci5CYXNlRXhjZXB0aW9uIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiAwO1xuICAgICAgICAgIHN1cGVyKHQsIFwiUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uXCIpO1xuICAgICAgICAgIHRoaXMuZXh0cmFEZWxheSA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uID0gUmVuZGVyaW5nQ2FuY2VsbGVkRXhjZXB0aW9uO1xuICAgICAgZnVuY3Rpb24gaXNEYXRhU2NoZW1lKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHQubGVuZ3RoO1xuICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgIGZvciAoOyBuIDwgZSAmJiBcIlwiID09PSB0W25dLnRyaW0oKTspIG4rKztcbiAgICAgICAgcmV0dXJuIFwiZGF0YTpcIiA9PT0gdC5zdWJzdHJpbmcobiwgbiArIDUpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBlLlN0YXRUaW1lciA9IGNsYXNzIFN0YXRUaW1lciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInN0YXJ0ZWRcIiwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICAgICAgX2RlZmluZVByb3BlcnR5KHRoaXMsIFwidGltZXNcIiwgW10pO1xuICAgICAgICB9XG4gICAgICAgIHRpbWUodCkge1xuICAgICAgICAgIHQgaW4gdGhpcy5zdGFydGVkICYmICgwLCByLndhcm4pKFwiVGltZXIgaXMgYWxyZWFkeSBydW5uaW5nIGZvciBcIi5jb25jYXQodCkpO1xuICAgICAgICAgIHRoaXMuc3RhcnRlZFt0XSA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGltZUVuZCh0KSB7XG4gICAgICAgICAgdCBpbiB0aGlzLnN0YXJ0ZWQgfHwgKDAsIHIud2FybikoXCJUaW1lciBoYXMgbm90IGJlZW4gc3RhcnRlZCBmb3IgXCIuY29uY2F0KHQpKTtcbiAgICAgICAgICB0aGlzLnRpbWVzLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogdCxcbiAgICAgICAgICAgIHN0YXJ0OiB0aGlzLnN0YXJ0ZWRbdF0sXG4gICAgICAgICAgICBlbmQ6IERhdGUubm93KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkZWxldGUgdGhpcy5zdGFydGVkW3RdO1xuICAgICAgICB9XG4gICAgICAgIHRvU3RyaW5nKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSBbXTtcbiAgICAgICAgICBsZXQgZSA9IDA7XG4gICAgICAgICAgZm9yIChjb25zdCB7XG4gICAgICAgICAgICBuYW1lOiB0XG4gICAgICAgICAgfSBvZiB0aGlzLnRpbWVzKSBlID0gTWF0aC5tYXgodC5sZW5ndGgsIGUpO1xuICAgICAgICAgIGZvciAoY29uc3Qge1xuICAgICAgICAgICAgbmFtZTogbixcbiAgICAgICAgICAgIHN0YXJ0OiBpLFxuICAgICAgICAgICAgZW5kOiByXG4gICAgICAgICAgfSBvZiB0aGlzLnRpbWVzKSB0LnB1c2goXCJcIi5jb25jYXQobi5wYWRFbmQoZSksIFwiIFwiKS5jb25jYXQociAtIGksIFwibXNcXG5cIikpO1xuICAgICAgICAgIHJldHVybiB0LmpvaW4oXCJcIik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBpc1ZhbGlkRmV0Y2hVcmwodCwgZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHByb3RvY29sOiBuXG4gICAgICAgICAgfSA9IGUgPyBuZXcgVVJMKHQsIGUpIDogbmV3IFVSTCh0KTtcbiAgICAgICAgICByZXR1cm4gXCJodHRwOlwiID09PSBuIHx8IFwiaHR0cHM6XCIgPT09IG47XG4gICAgICAgIH0gY2F0Y2ggKF91bnVzZWQxMCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGE7XG4gICAgICBlLlBERkRhdGVTdHJpbmcgPSBjbGFzcyBQREZEYXRlU3RyaW5nIHtcbiAgICAgICAgc3RhdGljIHRvRGF0ZU9iamVjdCh0KSB7XG4gICAgICAgICAgaWYgKCF0IHx8IFwic3RyaW5nXCIgIT0gdHlwZW9mIHQpIHJldHVybiBudWxsO1xuICAgICAgICAgIGEgfHwgKGEgPSBuZXcgUmVnRXhwKFwiXkQ6KFxcXFxkezR9KShcXFxcZHsyfSk/KFxcXFxkezJ9KT8oXFxcXGR7Mn0pPyhcXFxcZHsyfSk/KFxcXFxkezJ9KT8oW1p8K3wtXSk/KFxcXFxkezJ9KT8nPyhcXFxcZHsyfSk/Jz9cIikpO1xuICAgICAgICAgIGNvbnN0IGUgPSBhLmV4ZWModCk7XG4gICAgICAgICAgaWYgKCFlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoZVsxXSwgMTApO1xuICAgICAgICAgIGxldCBpID0gcGFyc2VJbnQoZVsyXSwgMTApO1xuICAgICAgICAgIGkgPSBpID49IDEgJiYgaSA8PSAxMiA/IGkgLSAxIDogMDtcbiAgICAgICAgICBsZXQgciA9IHBhcnNlSW50KGVbM10sIDEwKTtcbiAgICAgICAgICByID0gciA+PSAxICYmIHIgPD0gMzEgPyByIDogMTtcbiAgICAgICAgICBsZXQgcyA9IHBhcnNlSW50KGVbNF0sIDEwKTtcbiAgICAgICAgICBzID0gcyA+PSAwICYmIHMgPD0gMjMgPyBzIDogMDtcbiAgICAgICAgICBsZXQgbyA9IHBhcnNlSW50KGVbNV0sIDEwKTtcbiAgICAgICAgICBvID0gbyA+PSAwICYmIG8gPD0gNTkgPyBvIDogMDtcbiAgICAgICAgICBsZXQgbCA9IHBhcnNlSW50KGVbNl0sIDEwKTtcbiAgICAgICAgICBsID0gbCA+PSAwICYmIGwgPD0gNTkgPyBsIDogMDtcbiAgICAgICAgICBjb25zdCBjID0gZVs3XSB8fCBcIlpcIjtcbiAgICAgICAgICBsZXQgaCA9IHBhcnNlSW50KGVbOF0sIDEwKTtcbiAgICAgICAgICBoID0gaCA+PSAwICYmIGggPD0gMjMgPyBoIDogMDtcbiAgICAgICAgICBsZXQgZCA9IHBhcnNlSW50KGVbOV0sIDEwKSB8fCAwO1xuICAgICAgICAgIGQgPSBkID49IDAgJiYgZCA8PSA1OSA/IGQgOiAwO1xuICAgICAgICAgIGlmIChcIi1cIiA9PT0gYykge1xuICAgICAgICAgICAgcyArPSBoO1xuICAgICAgICAgICAgbyArPSBkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXCIrXCIgPT09IGMpIHtcbiAgICAgICAgICAgIHMgLT0gaDtcbiAgICAgICAgICAgIG8gLT0gZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKG4sIGksIHIsIHMsIG8sIGwpKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIGdldFJHQih0KSB7XG4gICAgICAgIGlmICh0LnN0YXJ0c1dpdGgoXCIjXCIpKSB7XG4gICAgICAgICAgY29uc3QgZSA9IHBhcnNlSW50KHQuc2xpY2UoMSksIDE2KTtcbiAgICAgICAgICByZXR1cm4gWygxNjcxMTY4MCAmIGUpID4+IDE2LCAoNjUyODAgJiBlKSA+PiA4LCAyNTUgJiBlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodC5zdGFydHNXaXRoKFwicmdiKFwiKSkgcmV0dXJuIHQuc2xpY2UoNCwgLTEpLnNwbGl0KFwiLFwiKS5tYXAodCA9PiBwYXJzZUludCh0KSk7XG4gICAgICAgIGlmICh0LnN0YXJ0c1dpdGgoXCJyZ2JhKFwiKSkgcmV0dXJuIHQuc2xpY2UoNSwgLTEpLnNwbGl0KFwiLFwiKS5tYXAodCA9PiBwYXJzZUludCh0KSkuc2xpY2UoMCwgMyk7XG4gICAgICAgICgwLCByLndhcm4pKFwiTm90IGEgdmFsaWQgY29sb3IgZm9ybWF0OiBcXFwiXCIuY29uY2F0KHQsIFwiXFxcIlwiKSk7XG4gICAgICAgIHJldHVybiBbMCwgMCwgMF07XG4gICAgICB9XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5ID0gZS5CYXNlU1ZHRmFjdG9yeSA9IGUuQmFzZUZpbHRlckZhY3RvcnkgPSBlLkJhc2VDYW52YXNGYWN0b3J5ID0gZS5CYXNlQ01hcFJlYWRlckZhY3RvcnkgPSB2b2lkIDA7XG4gICAgICBuKDIpO1xuICAgICAgdmFyIGkgPSBuKDEpO1xuICAgICAgY2xhc3MgQmFzZUZpbHRlckZhY3Rvcnkge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID09PSBCYXNlRmlsdGVyRmFjdG9yeSAmJiAoMCwgaS51bnJlYWNoYWJsZSkoXCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRmlsdGVyRmFjdG9yeS5cIik7XG4gICAgICAgIH1cbiAgICAgICAgYWRkRmlsdGVyKHQpIHtcbiAgICAgICAgICByZXR1cm4gXCJub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSENNRmlsdGVyKHQsIGUpIHtcbiAgICAgICAgICByZXR1cm4gXCJub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGlnaGxpZ2h0SENNRmlsdGVyKHQsIGUsIG4sIGkpIHtcbiAgICAgICAgICByZXR1cm4gXCJub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgZGVzdHJveSgpIHt9XG4gICAgICB9XG4gICAgICBlLkJhc2VGaWx0ZXJGYWN0b3J5ID0gQmFzZUZpbHRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBCYXNlQ2FudmFzRmFjdG9yeSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPT09IEJhc2VDYW52YXNGYWN0b3J5ICYmICgwLCBpLnVucmVhY2hhYmxlKShcIkNhbm5vdCBpbml0aWFsaXplIEJhc2VDYW52YXNGYWN0b3J5LlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGUodCwgZSkge1xuICAgICAgICAgIGlmICh0IDw9IDAgfHwgZSA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNhbnZhcyBzaXplXCIpO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9jcmVhdGVDYW52YXModCwgZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNhbnZhczogbixcbiAgICAgICAgICAgIGNvbnRleHQ6IG4uZ2V0Q29udGV4dChcIjJkXCIpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXNldCh0LCBlLCBuKSB7XG4gICAgICAgICAgaWYgKCF0LmNhbnZhcykgdGhyb3cgbmV3IEVycm9yKFwiQ2FudmFzIGlzIG5vdCBzcGVjaWZpZWRcIik7XG4gICAgICAgICAgaWYgKGUgPD0gMCB8fCBuIDw9IDApIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY2FudmFzIHNpemVcIik7XG4gICAgICAgICAgdC5jYW52YXMud2lkdGggPSBlO1xuICAgICAgICAgIHQuY2FudmFzLmhlaWdodCA9IG47XG4gICAgICAgIH1cbiAgICAgICAgZGVzdHJveSh0KSB7XG4gICAgICAgICAgaWYgKCF0LmNhbnZhcykgdGhyb3cgbmV3IEVycm9yKFwiQ2FudmFzIGlzIG5vdCBzcGVjaWZpZWRcIik7XG4gICAgICAgICAgdC5jYW52YXMud2lkdGggPSAwO1xuICAgICAgICAgIHQuY2FudmFzLmhlaWdodCA9IDA7XG4gICAgICAgICAgdC5jYW52YXMgPSBudWxsO1xuICAgICAgICAgIHQuY29udGV4dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgX2NyZWF0ZUNhbnZhcyh0LCBlKSB7XG4gICAgICAgICAgKDAsIGkudW5yZWFjaGFibGUpKFwiQWJzdHJhY3QgbWV0aG9kIGBfY3JlYXRlQ2FudmFzYCBjYWxsZWQuXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLkJhc2VDYW52YXNGYWN0b3J5ID0gQmFzZUNhbnZhc0ZhY3Rvcnk7XG4gICAgICBjbGFzcyBCYXNlQ01hcFJlYWRlckZhY3Rvcnkge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IGUgPSBudWxsLFxuICAgICAgICAgICAgaXNDb21wcmVzc2VkOiBuID0gITBcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID09PSBCYXNlQ01hcFJlYWRlckZhY3RvcnkgJiYgKDAsIGkudW5yZWFjaGFibGUpKFwiQ2Fubm90IGluaXRpYWxpemUgQmFzZUNNYXBSZWFkZXJGYWN0b3J5LlwiKTtcbiAgICAgICAgICB0aGlzLmJhc2VVcmwgPSBlO1xuICAgICAgICAgIHRoaXMuaXNDb21wcmVzc2VkID0gbjtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyBmZXRjaCh0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIG5hbWU6IGVcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBpZiAoIXRoaXMuYmFzZVVybCkgdGhyb3cgbmV3IEVycm9yKCdUaGUgQ01hcCBcImJhc2VVcmxcIiBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQsIGVuc3VyZSB0aGF0IHRoZSBcImNNYXBVcmxcIiBhbmQgXCJjTWFwUGFja2VkXCIgQVBJIHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLicpO1xuICAgICAgICAgIGlmICghZSkgdGhyb3cgbmV3IEVycm9yKFwiQ01hcCBuYW1lIG11c3QgYmUgc3BlY2lmaWVkLlwiKTtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5iYXNlVXJsICsgZSArICh0aGlzLmlzQ29tcHJlc3NlZCA/IFwiLmJjbWFwXCIgOiBcIlwiKSxcbiAgICAgICAgICAgIHIgPSB0aGlzLmlzQ29tcHJlc3NlZCA/IGkuQ01hcENvbXByZXNzaW9uVHlwZS5CSU5BUlkgOiBpLkNNYXBDb21wcmVzc2lvblR5cGUuTk9ORTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKG4sIHIpLmNhdGNoKHQgPT4ge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvYWQgXCIuY29uY2F0KHRoaXMuaXNDb21wcmVzc2VkID8gXCJiaW5hcnkgXCIgOiBcIlwiLCBcIkNNYXAgYXQ6IFwiKS5jb25jYXQobikpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF9mZXRjaERhdGEodCwgZSkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5CYXNlQ01hcFJlYWRlckZhY3RvcnkgPSBCYXNlQ01hcFJlYWRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnkge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGJhc2VVcmw6IGUgPSBudWxsXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9PT0gQmFzZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5ICYmICgwLCBpLnVucmVhY2hhYmxlKShcIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdGFuZGFyZEZvbnREYXRhRmFjdG9yeS5cIik7XG4gICAgICAgICAgdGhpcy5iYXNlVXJsID0gZTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyBmZXRjaCh0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGZpbGVuYW1lOiBlXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgaWYgKCF0aGlzLmJhc2VVcmwpIHRocm93IG5ldyBFcnJvcignVGhlIHN0YW5kYXJkIGZvbnQgXCJiYXNlVXJsXCIgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkLCBlbnN1cmUgdGhhdCB0aGUgXCJzdGFuZGFyZEZvbnREYXRhVXJsXCIgQVBJIHBhcmFtZXRlciBpcyBwcm92aWRlZC4nKTtcbiAgICAgICAgICBpZiAoIWUpIHRocm93IG5ldyBFcnJvcihcIkZvbnQgZmlsZW5hbWUgbXVzdCBiZSBzcGVjaWZpZWQuXCIpO1xuICAgICAgICAgIGNvbnN0IG4gPSBcIlwiLmNvbmNhdCh0aGlzLmJhc2VVcmwpLmNvbmNhdChlKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hEYXRhKG4pLmNhdGNoKHQgPT4ge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvYWQgZm9udCBkYXRhIGF0OiBcIi5jb25jYXQobikpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF9mZXRjaERhdGEodCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIkFic3RyYWN0IG1ldGhvZCBgX2ZldGNoRGF0YWAgY2FsbGVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5CYXNlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBCYXNlU3RhbmRhcmRGb250RGF0YUZhY3Rvcnk7XG4gICAgICBjbGFzcyBCYXNlU1ZHRmFjdG9yeSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IgPT09IEJhc2VTVkdGYWN0b3J5ICYmICgwLCBpLnVucmVhY2hhYmxlKShcIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTVkdGYWN0b3J5LlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGUodCwgZSkge1xuICAgICAgICAgIGxldCBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gJiYgYXJndW1lbnRzWzJdO1xuICAgICAgICAgIGlmICh0IDw9IDAgfHwgZSA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFNWRyBkaW1lbnNpb25zXCIpO1xuICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9jcmVhdGVTVkcoXCJzdmc6c3ZnXCIpO1xuICAgICAgICAgIGkuc2V0QXR0cmlidXRlKFwidmVyc2lvblwiLCBcIjEuMVwiKTtcbiAgICAgICAgICBpZiAoIW4pIHtcbiAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgXCJcIi5jb25jYXQodCwgXCJweFwiKSk7XG4gICAgICAgICAgICBpLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIlwiLmNvbmNhdChlLCBcInB4XCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaS5zZXRBdHRyaWJ1dGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKTtcbiAgICAgICAgICBpLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIiwgXCIwIDAgXCIuY29uY2F0KHQsIFwiIFwiKS5jb25jYXQoZSkpO1xuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICAgIGNyZWF0ZUVsZW1lbnQodCkge1xuICAgICAgICAgIGlmIChcInN0cmluZ1wiICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFNWRyBlbGVtZW50IHR5cGVcIik7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNWRyh0KTtcbiAgICAgICAgfVxuICAgICAgICBfY3JlYXRlU1ZHKHQpIHtcbiAgICAgICAgICAoMCwgaS51bnJlYWNoYWJsZSkoXCJBYnN0cmFjdCBtZXRob2QgYF9jcmVhdGVTVkdgIGNhbGxlZC5cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuQmFzZVNWR0ZhY3RvcnkgPSBCYXNlU1ZHRmFjdG9yeTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5NdXJtdXJIYXNoM182NCA9IHZvaWQgMDtcbiAgICAgIG4oOTMpO1xuICAgICAgbigxMDEpO1xuICAgICAgbigxMDIpO1xuICAgICAgbigxMDUpO1xuICAgICAgbigxMDcpO1xuICAgICAgbigxMDkpO1xuICAgICAgbigxMTMpO1xuICAgICAgbigxMTYpO1xuICAgICAgbigxMjMpO1xuICAgICAgbigyKTtcbiAgICAgIHZhciBpID0gbigxKTtcbiAgICAgIGNvbnN0IHIgPSAzMjg1Mzc3NTIwLFxuICAgICAgICBzID0gNDI5NDkwMTc2MCxcbiAgICAgICAgYSA9IDY1NTM1O1xuICAgICAgZS5NdXJtdXJIYXNoM182NCA9IGNsYXNzIE11cm11ckhhc2gzXzY0IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHRoaXMuaDEgPSB0ID8gNDI5NDk2NzI5NSAmIHQgOiByO1xuICAgICAgICAgIHRoaXMuaDIgPSB0ID8gNDI5NDk2NzI5NSAmIHQgOiByO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZSh0KSB7XG4gICAgICAgICAgbGV0IGUsIG47XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHQpIHtcbiAgICAgICAgICAgIGUgPSBuZXcgVWludDhBcnJheSgyICogdC5sZW5ndGgpO1xuICAgICAgICAgICAgbiA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgciA9IHQubGVuZ3RoOyBpIDwgcjsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHIgPSB0LmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICAgIGlmIChyIDw9IDI1NSkgZVtuKytdID0gcjtlbHNlIHtcbiAgICAgICAgICAgICAgICBlW24rK10gPSByID4+PiA4O1xuICAgICAgICAgICAgICAgIGVbbisrXSA9IDI1NSAmIHI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCEoMCwgaS5pc0FycmF5QnVmZmVyKSh0KSkgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgZGF0YSBmb3JtYXQgaW4gTXVybXVySGFzaDNfNjRfdXBkYXRlLiBJbnB1dCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5LlwiKTtcbiAgICAgICAgICAgIGUgPSB0LnNsaWNlKCk7XG4gICAgICAgICAgICBuID0gZS5ieXRlTGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByID0gbiA+PiAyLFxuICAgICAgICAgICAgbyA9IG4gLSA0ICogcixcbiAgICAgICAgICAgIGwgPSBuZXcgVWludDMyQXJyYXkoZS5idWZmZXIsIDAsIHIpO1xuICAgICAgICAgIGxldCBjID0gMCxcbiAgICAgICAgICAgIGggPSAwLFxuICAgICAgICAgICAgZCA9IHRoaXMuaDEsXG4gICAgICAgICAgICB1ID0gdGhpcy5oMjtcbiAgICAgICAgICBjb25zdCBwID0gMzQzMjkxODM1MyxcbiAgICAgICAgICAgIGYgPSA0NjE4NDU5MDcsXG4gICAgICAgICAgICBnID0gMTE2MDEsXG4gICAgICAgICAgICBtID0gMTM3MTU7XG4gICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCByOyB0KyspIGlmICgxICYgdCkge1xuICAgICAgICAgICAgYyA9IGxbdF07XG4gICAgICAgICAgICBjID0gYyAqIHAgJiBzIHwgYyAqIGcgJiBhO1xuICAgICAgICAgICAgYyA9IGMgPDwgMTUgfCBjID4+PiAxNztcbiAgICAgICAgICAgIGMgPSBjICogZiAmIHMgfCBjICogbSAmIGE7XG4gICAgICAgICAgICBkIF49IGM7XG4gICAgICAgICAgICBkID0gZCA8PCAxMyB8IGQgPj4+IDE5O1xuICAgICAgICAgICAgZCA9IDUgKiBkICsgMzg2NDI5MjE5NjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaCA9IGxbdF07XG4gICAgICAgICAgICBoID0gaCAqIHAgJiBzIHwgaCAqIGcgJiBhO1xuICAgICAgICAgICAgaCA9IGggPDwgMTUgfCBoID4+PiAxNztcbiAgICAgICAgICAgIGggPSBoICogZiAmIHMgfCBoICogbSAmIGE7XG4gICAgICAgICAgICB1IF49IGg7XG4gICAgICAgICAgICB1ID0gdSA8PCAxMyB8IHUgPj4+IDE5O1xuICAgICAgICAgICAgdSA9IDUgKiB1ICsgMzg2NDI5MjE5NjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYyA9IDA7XG4gICAgICAgICAgc3dpdGNoIChvKSB7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGMgXj0gZVs0ICogciArIDJdIDw8IDE2O1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBjIF49IGVbNCAqIHIgKyAxXSA8PCA4O1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjIF49IGVbNCAqIHJdO1xuICAgICAgICAgICAgICBjID0gYyAqIHAgJiBzIHwgYyAqIGcgJiBhO1xuICAgICAgICAgICAgICBjID0gYyA8PCAxNSB8IGMgPj4+IDE3O1xuICAgICAgICAgICAgICBjID0gYyAqIGYgJiBzIHwgYyAqIG0gJiBhO1xuICAgICAgICAgICAgICAxICYgciA/IGQgXj0gYyA6IHUgXj0gYztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5oMSA9IGQ7XG4gICAgICAgICAgdGhpcy5oMiA9IHU7XG4gICAgICAgIH1cbiAgICAgICAgaGV4ZGlnZXN0KCkge1xuICAgICAgICAgIGxldCB0ID0gdGhpcy5oMSxcbiAgICAgICAgICAgIGUgPSB0aGlzLmgyO1xuICAgICAgICAgIHQgXj0gZSA+Pj4gMTtcbiAgICAgICAgICB0ID0gMzk4MTgwNjc5NyAqIHQgJiBzIHwgMzYwNDUgKiB0ICYgYTtcbiAgICAgICAgICBlID0gNDI4MzU0MzUxMSAqIGUgJiBzIHwgKDI5NTAxNjM3OTcgKiAoZSA8PCAxNiB8IHQgPj4+IDE2KSAmIHMpID4+PiAxNjtcbiAgICAgICAgICB0IF49IGUgPj4+IDE7XG4gICAgICAgICAgdCA9IDQ0NDk4NDQwMyAqIHQgJiBzIHwgNjA0OTkgKiB0ICYgYTtcbiAgICAgICAgICBlID0gMzMwMTg4MjM2NiAqIGUgJiBzIHwgKDMxMjA0Mzc4OTMgKiAoZSA8PCAxNiB8IHQgPj4+IDE2KSAmIHMpID4+PiAxNjtcbiAgICAgICAgICB0IF49IGUgPj4+IDE7XG4gICAgICAgICAgcmV0dXJuICh0ID4+PiAwKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgXCIwXCIpICsgKGUgPj4+IDApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgX1d0O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLkZvbnRMb2FkZXIgPSBlLkZvbnRGYWNlT2JqZWN0ID0gdm9pZCAwO1xuICAgICAgbigxMjUpO1xuICAgICAgbigxMzUpO1xuICAgICAgbigxMzcpO1xuICAgICAgbigxNDApO1xuICAgICAgbigxNDIpO1xuICAgICAgbigxNDQpO1xuICAgICAgbigxNDYpO1xuICAgICAgbig4OSk7XG4gICAgICBuKDE0OCk7XG4gICAgICB2YXIgaSA9IG4oMSk7XG4gICAgICBlLkZvbnRMb2FkZXIgPSAoX1d0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCksIGNsYXNzIEZvbnRMb2FkZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1d0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgU2V0KClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudDogZSA9IGdsb2JhbFRoaXMuZG9jdW1lbnQsXG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQ6IG4gPSBudWxsXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQgPSBlO1xuICAgICAgICAgIHRoaXMubmF0aXZlRm9udEZhY2VzID0gbmV3IFNldCgpO1xuICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdSZXF1ZXN0cyA9IFtdO1xuICAgICAgICAgIHRoaXMubG9hZFRlc3RGb250SWQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGFkZE5hdGl2ZUZvbnRGYWNlKHQpIHtcbiAgICAgICAgICB0aGlzLm5hdGl2ZUZvbnRGYWNlcy5hZGQodCk7XG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZm9udHMuYWRkKHQpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZU5hdGl2ZUZvbnRGYWNlKHQpIHtcbiAgICAgICAgICB0aGlzLm5hdGl2ZUZvbnRGYWNlcy5kZWxldGUodCk7XG4gICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZm9udHMuZGVsZXRlKHQpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydFJ1bGUodCkge1xuICAgICAgICAgIGlmICghdGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmQodGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5zdHlsZUVsZW1lbnQuc2hlZXQ7XG4gICAgICAgICAgZS5pbnNlcnRSdWxlKHQsIGUuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBjbGVhcigpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5uYXRpdmVGb250RmFjZXMpIHRoaXMuX2RvY3VtZW50LmZvbnRzLmRlbGV0ZSh0KTtcbiAgICAgICAgICB0aGlzLm5hdGl2ZUZvbnRGYWNlcy5jbGVhcigpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfV3QpLmNsZWFyKCk7XG4gICAgICAgICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXN5bmMgbG9hZFN5c3RlbUZvbnQodCkge1xuICAgICAgICAgIGlmICh0ICYmICFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1d0KS5oYXModC5sb2FkZWROYW1lKSkge1xuICAgICAgICAgICAgKDAsIGkuYXNzZXJ0KSghdGhpcy5kaXNhYmxlRm9udEZhY2UsIFwibG9hZFN5c3RlbUZvbnQgc2hvdWxkbid0IGJlIGNhbGxlZCB3aGVuIGBkaXNhYmxlRm9udEZhY2VgIGlzIHNldC5cIik7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZvbnRMb2FkaW5nQVBJU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIGxvYWRlZE5hbWU6IGUsXG4gICAgICAgICAgICAgICAgICBzcmM6IG4sXG4gICAgICAgICAgICAgICAgICBzdHlsZTogclxuICAgICAgICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgICAgICAgIHMgPSBuZXcgRm9udEZhY2UoZSwgbiwgcik7XG4gICAgICAgICAgICAgIHRoaXMuYWRkTmF0aXZlRm9udEZhY2Uocyk7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcy5sb2FkKCk7XG4gICAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9XdCkuYWRkKGUpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChfdW51c2VkMTEpIHtcbiAgICAgICAgICAgICAgICAoMCwgaS53YXJuKShcIkNhbm5vdCBsb2FkIHN5c3RlbSBmb250OiBcIi5jb25jYXQodC5iYXNlRm9udE5hbWUsIFwiLCBpbnN0YWxsaW5nIGl0IGNvdWxkIGhlbHAgdG8gaW1wcm92ZSBQREYgcmVuZGVyaW5nLlwiKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOYXRpdmVGb250RmFjZShzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlICgwLCBpLnVucmVhY2hhYmxlKShcIk5vdCBpbXBsZW1lbnRlZDogbG9hZFN5c3RlbUZvbnQgd2l0aG91dCB0aGUgRm9udCBMb2FkaW5nIEFQSS5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzeW5jIGJpbmQodCkge1xuICAgICAgICAgIGlmICh0LmF0dGFjaGVkIHx8IHQubWlzc2luZ0ZpbGUgJiYgIXQuc3lzdGVtRm9udEluZm8pIHJldHVybjtcbiAgICAgICAgICB0LmF0dGFjaGVkID0gITA7XG4gICAgICAgICAgaWYgKHQuc3lzdGVtRm9udEluZm8pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZFN5c3RlbUZvbnQodC5zeXN0ZW1Gb250SW5mbyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0LmNyZWF0ZU5hdGl2ZUZvbnRGYWNlKCk7XG4gICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICB0aGlzLmFkZE5hdGl2ZUZvbnRGYWNlKGUpO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGUubG9hZGVkO1xuICAgICAgICAgICAgICB9IGNhdGNoIChuKSB7XG4gICAgICAgICAgICAgICAgKDAsIGkud2FybikoXCJGYWlsZWQgdG8gbG9hZCBmb250ICdcIi5jb25jYXQoZS5mYW1pbHksIFwiJzogJ1wiKS5jb25jYXQobiwgXCInLlwiKSk7XG4gICAgICAgICAgICAgICAgdC5kaXNhYmxlRm9udEZhY2UgPSAhMDtcbiAgICAgICAgICAgICAgICB0aHJvdyBuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGUgPSB0LmNyZWF0ZUZvbnRGYWNlUnVsZSgpO1xuICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydFJ1bGUoZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1N5bmNGb250TG9hZGluZ1N1cHBvcnRlZCkgcmV0dXJuO1xuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoZSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9xdWV1ZUxvYWRpbmdDYWxsYmFjayhlKTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJlcGFyZUZvbnRMb2FkRXZlbnQodCwgbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzRm9udExvYWRpbmdBUElTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJF9kb2N1bWVudDtcbiAgICAgICAgICBjb25zdCB0ID0gISEoKF90aGlzJF9kb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50KSAhPT0gbnVsbCAmJiBfdGhpcyRfZG9jdW1lbnQgIT09IHZvaWQgMCAmJiBfdGhpcyRfZG9jdW1lbnQuZm9udHMpO1xuICAgICAgICAgIHJldHVybiAoMCwgaS5zaGFkb3cpKHRoaXMsIFwiaXNGb250TG9hZGluZ0FQSVN1cHBvcnRlZFwiLCB0KTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaXNTeW5jRm9udExvYWRpbmdTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgbGV0IHQgPSAhMTtcbiAgICAgICAgICAoaS5pc05vZGVKUyB8fCBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBuYXZpZ2F0b3IgJiYgL01vemlsbGFcXC81LjAuKj9ydjpcXGQrLio/IEdlY2tvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSAmJiAodCA9ICEwKTtcbiAgICAgICAgICByZXR1cm4gKDAsIGkuc2hhZG93KSh0aGlzLCBcImlzU3luY0ZvbnRMb2FkaW5nU3VwcG9ydGVkXCIsIHQpO1xuICAgICAgICB9XG4gICAgICAgIF9xdWV1ZUxvYWRpbmdDYWxsYmFjayh0KSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBsb2FkaW5nUmVxdWVzdHM6IGVcbiAgICAgICAgICAgIH0gPSB0aGlzLFxuICAgICAgICAgICAgbiA9IHtcbiAgICAgICAgICAgICAgZG9uZTogITEsXG4gICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZVJlcXVlc3QoKSB7XG4gICAgICAgICAgICAgICAgKDAsIGkuYXNzZXJ0KSghbi5kb25lLCBcImNvbXBsZXRlUmVxdWVzdCgpIGNhbm5vdCBiZSBjYWxsZWQgdHdpY2UuXCIpO1xuICAgICAgICAgICAgICAgIG4uZG9uZSA9ICEwO1xuICAgICAgICAgICAgICAgIGZvciAoOyBlLmxlbmd0aCA+IDAgJiYgZVswXS5kb25lOykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQodC5jYWxsYmFjaywgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjYWxsYmFjazogdFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBlLnB1c2gobik7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IF9sb2FkVGVzdEZvbnQoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IGF0b2IoXCJUMVJVVHdBTEFJQUFBd0F3UTBaR0lESHRaZzRBQUFPWUFBQUFnVVpHVkUxbGt6WndBQUFFSEFBQUFCeEhSRVZHQUJRQUZRQUFCRGdBQUFBZVQxTXZNbFlOWXdrQUFBRWdBQUFBWUdOdFlYQUJEUUxVQUFBQ05BQUFBVUpvWldGay94VkZEUUFBQUx3QUFBQTJhR2hsWVFka0Erb0FBQUQwQUFBQUpHaHRkSGdENkFBQUFBQUVXQUFBQUFadFlYaHdBQUpRQUFBQUFSZ0FBQUFHYm1GdFpWam1kSDRBQUFHQUFBQUFzWEJ2YzNUL2hnQXpBQUFEZUFBQUFDQUFBUUFBQUFFQUFMWlJGc1JmRHp6MUFBc0Q2QUFBQUFET0JPVExBQUFBQU00S0hEd0FBQUFBQStnRElRQUFBQWdBQWdBQUFBQUFBQUFCQUFBRElRQUFBRm9ENkFBQUFBQUQ2QUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBVUFBQUFnQUFBQVFENkFIMEFBVUFBQUtLQXJ3QUFBQ01Bb29DdkFBQUFlQUFNUUVDQUFBQ0FBWUpBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUZCbVJXUUF3QUF1QUM0RElQODRBRm9ESVFBQUFBQUFBUUFBQUFBQUFBQUFBQ0FBSUFBQkFBQUFEZ0N1QUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFBQUFFQUFRQUFBQUVBQUFBQUFBSUFBUUFBQUFFQUFBQUFBQU1BQVFBQUFBRUFBQUFBQUFRQUFRQUFBQUVBQUFBQUFBVUFBUUFBQUFFQUFBQUFBQVlBQVFBQUFBTUFBUVFKQUFBQUFnQUJBQU1BQVFRSkFBRUFBZ0FCQUFNQUFRUUpBQUlBQWdBQkFBTUFBUVFKQUFNQUFnQUJBQU1BQVFRSkFBUUFBZ0FCQUFNQUFRUUpBQVVBQWdBQkFBTUFBUVFKQUFZQUFnQUJXQUJZQUFBQUFBQUFBd0FBQUFNQUFBQWNBQUVBQUFBQUFEd0FBd0FCQUFBQUhBQUVBQ0FBQUFBRUFBUUFBUUFBQUM3Ly93QUFBQzcvLy8vVEFBRUFBQUFBQUFBQkJnQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFBQUFEL2d3QXlBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFRRUFBRUJBUUpZQUFFQkFTSDREd0Q0R3dIRUF2Z2NBL2dYQkl3TUFZdUwrbno1dFFYa0Q1ajNDQkxuRVFBQ0FRRUJJVmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWVdGaFlXRmhZV0ZoWUFBQUJBUUFBRHdBQ0FRRUVFL3QzRG92NmZBSDZmQVQrZlBwOCtud0hEb3NNQ3ZtMUN2bTFEQXo2ZkJRQUFBQUFBQUFCQUFBQUFNbUpiekVBQUFBQXpnVGpGUUFBQUFET0JPUXBBQUVBQUFBQUFBQUFEQUFVQUFRQUFBQUJBQUFBQWdBQkFBQUFBQUFBQUFBRDZBQUFBQUFBQUE9PVwiKTtcbiAgICAgICAgICByZXR1cm4gKDAsIGkuc2hhZG93KSh0aGlzLCBcIl9sb2FkVGVzdEZvbnRcIiwgdCk7XG4gICAgICAgIH1cbiAgICAgICAgX3ByZXBhcmVGb250TG9hZEV2ZW50KHQsIGUpIHtcbiAgICAgICAgICBmdW5jdGlvbiBpbnQzMih0LCBlKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5jaGFyQ29kZUF0KGUpIDw8IDI0IHwgdC5jaGFyQ29kZUF0KGUgKyAxKSA8PCAxNiB8IHQuY2hhckNvZGVBdChlICsgMikgPDwgOCB8IDI1NSAmIHQuY2hhckNvZGVBdChlICsgMyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZ1bmN0aW9uIHNwbGljZVN0cmluZyh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgICByZXR1cm4gdC5zdWJzdHJpbmcoMCwgZSkgKyBpICsgdC5zdWJzdHJpbmcoZSArIG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgbiwgcjtcbiAgICAgICAgICBjb25zdCBzID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICBzLndpZHRoID0gMTtcbiAgICAgICAgICBzLmhlaWdodCA9IDE7XG4gICAgICAgICAgY29uc3QgYSA9IHMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICAgIGxldCBvID0gMDtcbiAgICAgICAgICBjb25zdCBsID0gXCJsdFwiLmNvbmNhdChEYXRlLm5vdygpKS5jb25jYXQodGhpcy5sb2FkVGVzdEZvbnRJZCsrKTtcbiAgICAgICAgICBsZXQgYyA9IHRoaXMuX2xvYWRUZXN0Rm9udDtcbiAgICAgICAgICBjID0gc3BsaWNlU3RyaW5nKGMsIDk3NiwgbC5sZW5ndGgsIGwpO1xuICAgICAgICAgIGNvbnN0IGggPSAxNDgyMTg0NzkyO1xuICAgICAgICAgIGxldCBkID0gaW50MzIoYywgMTYpO1xuICAgICAgICAgIGZvciAobiA9IDAsIHIgPSBsLmxlbmd0aCAtIDM7IG4gPCByOyBuICs9IDQpIGQgPSBkIC0gaCArIGludDMyKGwsIG4pIHwgMDtcbiAgICAgICAgICBuIDwgbC5sZW5ndGggJiYgKGQgPSBkIC0gaCArIGludDMyKGwgKyBcIlhYWFwiLCBuKSB8IDApO1xuICAgICAgICAgIGMgPSBzcGxpY2VTdHJpbmcoYywgMTYsIDQsICgwLCBpLnN0cmluZzMyKShkKSk7XG4gICAgICAgICAgY29uc3QgdSA9IFwiQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6XFxcIlwiLmNvbmNhdChsLCBcIlxcXCI7c3JjOlwiLCBcInVybChkYXRhOmZvbnQvb3BlbnR5cGU7YmFzZTY0LFwiLmNvbmNhdChidG9hKGMpLCBcIik7XCIpLCBcIn1cIik7XG4gICAgICAgICAgdGhpcy5pbnNlcnRSdWxlKHUpO1xuICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgIHAuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgcC5zdHlsZS53aWR0aCA9IHAuc3R5bGUuaGVpZ2h0ID0gXCIxMHB4XCI7XG4gICAgICAgICAgcC5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcbiAgICAgICAgICBwLnN0eWxlLnRvcCA9IHAuc3R5bGUubGVmdCA9IFwiMHB4XCI7XG4gICAgICAgICAgZm9yIChjb25zdCBlIG9mIFt0LmxvYWRlZE5hbWUsIGxdKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgICAgICB0LnRleHRDb250ZW50ID0gXCJIaVwiO1xuICAgICAgICAgICAgdC5zdHlsZS5mb250RmFtaWx5ID0gZTtcbiAgICAgICAgICAgIHAuYXBwZW5kKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZChwKTtcbiAgICAgICAgICAhZnVuY3Rpb24gaXNGb250UmVhZHkodCwgZSkge1xuICAgICAgICAgICAgaWYgKCsrbyA+IDMwKSB7XG4gICAgICAgICAgICAgICgwLCBpLndhcm4pKFwiTG9hZCB0ZXN0IGZvbnQgbmV2ZXIgbG9hZGVkLlwiKTtcbiAgICAgICAgICAgICAgZSgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhLmZvbnQgPSBcIjMwcHggXCIgKyB0O1xuICAgICAgICAgICAgYS5maWxsVGV4dChcIi5cIiwgMCwgMjApO1xuICAgICAgICAgICAgYS5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkuZGF0YVszXSA+IDAgPyBlKCkgOiBzZXRUaW1lb3V0KGlzRm9udFJlYWR5LmJpbmQobnVsbCwgdCwgZSkpO1xuICAgICAgICAgIH0obCwgKCkgPT4ge1xuICAgICAgICAgICAgcC5yZW1vdmUoKTtcbiAgICAgICAgICAgIGUuY29tcGxldGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBlLkZvbnRGYWNlT2JqZWN0ID0gY2xhc3MgRm9udEZhY2VPYmplY3Qge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGlzRXZhbFN1cHBvcnRlZDogbiA9ICEwLFxuICAgICAgICAgICAgZGlzYWJsZUZvbnRGYWNlOiBpID0gITEsXG4gICAgICAgICAgICBpZ25vcmVFcnJvcnM6IHIgPSAhMSxcbiAgICAgICAgICAgIGluc3BlY3RGb250OiBzID0gbnVsbFxuICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgIHRoaXMuY29tcGlsZWRHbHlwaHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBpbiB0KSB0aGlzW2VdID0gdFtlXTtcbiAgICAgICAgICB0aGlzLmlzRXZhbFN1cHBvcnRlZCA9ICExICE9PSBuO1xuICAgICAgICAgIHRoaXMuZGlzYWJsZUZvbnRGYWNlID0gITAgPT09IGk7XG4gICAgICAgICAgdGhpcy5pZ25vcmVFcnJvcnMgPSAhMCA9PT0gcjtcbiAgICAgICAgICB0aGlzLl9pbnNwZWN0Rm9udCA9IHM7XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlTmF0aXZlRm9udEZhY2UoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJF9pbnNwZWN0Rm9udDtcbiAgICAgICAgICBpZiAoIXRoaXMuZGF0YSB8fCB0aGlzLmRpc2FibGVGb250RmFjZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgbGV0IHQ7XG4gICAgICAgICAgaWYgKHRoaXMuY3NzRm9udEluZm8pIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB7XG4gICAgICAgICAgICAgIHdlaWdodDogdGhpcy5jc3NGb250SW5mby5mb250V2VpZ2h0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSAmJiAoZS5zdHlsZSA9IFwib2JsaXF1ZSBcIi5jb25jYXQodGhpcy5jc3NGb250SW5mby5pdGFsaWNBbmdsZSwgXCJkZWdcIikpO1xuICAgICAgICAgICAgdCA9IG5ldyBGb250RmFjZSh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksIHRoaXMuZGF0YSwgZSk7XG4gICAgICAgICAgfSBlbHNlIHQgPSBuZXcgRm9udEZhY2UodGhpcy5sb2FkZWROYW1lLCB0aGlzLmRhdGEsIHt9KTtcbiAgICAgICAgICAoX3RoaXMkX2luc3BlY3RGb250ID0gdGhpcy5faW5zcGVjdEZvbnQpID09PSBudWxsIHx8IF90aGlzJF9pbnNwZWN0Rm9udCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX2luc3BlY3RGb250LmNhbGwodGhpcywgdGhpcyk7XG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlRm9udEZhY2VSdWxlKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfaW5zcGVjdEZvbnQyO1xuICAgICAgICAgIGlmICghdGhpcy5kYXRhIHx8IHRoaXMuZGlzYWJsZUZvbnRGYWNlKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBjb25zdCB0ID0gKDAsIGkuYnl0ZXNUb1N0cmluZykodGhpcy5kYXRhKSxcbiAgICAgICAgICAgIGUgPSBcInVybChkYXRhOlwiLmNvbmNhdCh0aGlzLm1pbWV0eXBlLCBcIjtiYXNlNjQsXCIpLmNvbmNhdChidG9hKHQpLCBcIik7XCIpO1xuICAgICAgICAgIGxldCBuO1xuICAgICAgICAgIGlmICh0aGlzLmNzc0ZvbnRJbmZvKSB7XG4gICAgICAgICAgICBsZXQgdCA9IFwiZm9udC13ZWlnaHQ6IFwiLmNvbmNhdCh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRXZWlnaHQsIFwiO1wiKTtcbiAgICAgICAgICAgIHRoaXMuY3NzRm9udEluZm8uaXRhbGljQW5nbGUgJiYgKHQgKz0gXCJmb250LXN0eWxlOiBvYmxpcXVlIFwiLmNvbmNhdCh0aGlzLmNzc0ZvbnRJbmZvLml0YWxpY0FuZ2xlLCBcImRlZztcIikpO1xuICAgICAgICAgICAgbiA9IFwiQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6XFxcIlwiLmNvbmNhdCh0aGlzLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHksIFwiXFxcIjtcIikuY29uY2F0KHQsIFwic3JjOlwiKS5jb25jYXQoZSwgXCJ9XCIpO1xuICAgICAgICAgIH0gZWxzZSBuID0gXCJAZm9udC1mYWNlIHtmb250LWZhbWlseTpcXFwiXCIuY29uY2F0KHRoaXMubG9hZGVkTmFtZSwgXCJcXFwiO3NyYzpcIikuY29uY2F0KGUsIFwifVwiKTtcbiAgICAgICAgICAoX3RoaXMkX2luc3BlY3RGb250MiA9IHRoaXMuX2luc3BlY3RGb250KSA9PT0gbnVsbCB8fCBfdGhpcyRfaW5zcGVjdEZvbnQyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfaW5zcGVjdEZvbnQyLmNhbGwodGhpcywgdGhpcywgZSk7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UGF0aEdlbmVyYXRvcih0LCBlKSB7XG4gICAgICAgICAgaWYgKHZvaWQgMCAhPT0gdGhpcy5jb21waWxlZEdseXBoc1tlXSkgcmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV07XG4gICAgICAgICAgbGV0IG47XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG4gPSB0LmdldCh0aGlzLmxvYWRlZE5hbWUgKyBcIl9wYXRoX1wiICsgZSk7XG4gICAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlnbm9yZUVycm9ycykgdGhyb3cgdDtcbiAgICAgICAgICAgICgwLCBpLndhcm4pKFwiZ2V0UGF0aEdlbmVyYXRvciAtIGlnbm9yaW5nIGNoYXJhY3RlcjogXFxcIlwiLmNvbmNhdCh0LCBcIlxcXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdID0gZnVuY3Rpb24gKHQsIGUpIHt9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5pc0V2YWxTdXBwb3J0ZWQgJiYgaS5GZWF0dXJlVGVzdC5pc0V2YWxTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBuKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSB2b2lkIDAgIT09IGUuYXJncyA/IGUuYXJncy5qb2luKFwiLFwiKSA6IFwiXCI7XG4gICAgICAgICAgICAgIHQucHVzaChcImMuXCIsIGUuY21kLCBcIihcIiwgbiwgXCIpO1xcblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBpbGVkR2x5cGhzW2VdID0gbmV3IEZ1bmN0aW9uKFwiY1wiLCBcInNpemVcIiwgdC5qb2luKFwiXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGlsZWRHbHlwaHNbZV0gPSBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIG4pIHtcbiAgICAgICAgICAgICAgXCJzY2FsZVwiID09PSBpLmNtZCAmJiAoaS5hcmdzID0gW2UsIC1lXSk7XG4gICAgICAgICAgICAgIHRbaS5jbWRdLmFwcGx5KHQsIGkuYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5Ob2RlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkgPSBlLk5vZGVGaWx0ZXJGYWN0b3J5ID0gZS5Ob2RlQ2FudmFzRmFjdG9yeSA9IGUuTm9kZUNNYXBSZWFkZXJGYWN0b3J5ID0gdm9pZCAwO1xuICAgICAgbigyKTtcbiAgICAgIG4oOTMpO1xuICAgICAgbigxMDEpO1xuICAgICAgbigxMDIpO1xuICAgICAgbigxMDUpO1xuICAgICAgbigxMDcpO1xuICAgICAgbigxMDkpO1xuICAgICAgbigxMTMpO1xuICAgICAgbigxMTYpO1xuICAgICAgbigxMjMpO1xuICAgICAgdmFyIGkgPSBuKDE2OCksXG4gICAgICAgIHIgPSBuKDEpO1xuICAgICAgIWZ1bmN0aW9uIGNoZWNrRE9NTWF0cml4KCkge1xuICAgICAgICBpZiAoIWdsb2JhbFRoaXMuRE9NTWF0cml4ICYmIHIuaXNOb2RlSlMpIHRyeSB7XG4gICAgICAgICAgZ2xvYmFsVGhpcy5ET01NYXRyaXggPSBPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdjYW52YXMnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH0oKSk7XG4gICAgICAgIH0gY2F0Y2ggKHQpIHtcbiAgICAgICAgICAoMCwgci53YXJuKShcIkNhbm5vdCBwb2x5ZmlsbCBgRE9NTWF0cml4YCwgcmVuZGVyaW5nIG1heSBiZSBicm9rZW46IFxcXCJcIi5jb25jYXQodCwgXCJcXFwiLlwiKSk7XG4gICAgICAgIH1cbiAgICAgIH0oKTtcbiAgICAgICFmdW5jdGlvbiBjaGVja1BhdGgyRCgpIHtcbiAgICAgICAgaWYgKCFnbG9iYWxUaGlzLlBhdGgyRCAmJiByLmlzTm9kZUpTKSB0cnkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOiB0XG4gICAgICAgICAgICB9ID0gX193ZWJwYWNrX3JlcXVpcmVfXyhPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdjYW52YXMnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH0oKSkpLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwb2x5ZmlsbFBhdGgyRDogZVxuICAgICAgICAgICAgfSA9IF9fd2VicGFja19yZXF1aXJlX18oT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAncGF0aDJkLXBvbHlmaWxsJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKTtcbiAgICAgICAgICBnbG9iYWxUaGlzLkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCA9IHQ7XG4gICAgICAgICAgZShnbG9iYWxUaGlzKTtcbiAgICAgICAgfSBjYXRjaCAodCkge1xuICAgICAgICAgICgwLCByLndhcm4pKFwiQ2Fubm90IHBvbHlmaWxsIGBQYXRoMkRgLCByZW5kZXJpbmcgbWF5IGJlIGJyb2tlbjogXFxcIlwiLmNvbmNhdCh0LCBcIlxcXCIuXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSgpO1xuICAgICAgY29uc3QgZmV0Y2hEYXRhID0gZnVuY3Rpb24gZmV0Y2hEYXRhKHQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChlLCBuKSA9PiB7XG4gICAgICAgICAgT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnZnMnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH0oKSkodCwgKHQsIGkpID0+IHtcbiAgICAgICAgICAgICF0ICYmIGkgPyBlKG5ldyBVaW50OEFycmF5KGkpKSA6IG4obmV3IEVycm9yKHQpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgY2xhc3MgTm9kZUZpbHRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VGaWx0ZXJGYWN0b3J5IHt9XG4gICAgICBlLk5vZGVGaWx0ZXJGYWN0b3J5ID0gTm9kZUZpbHRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBOb2RlQ2FudmFzRmFjdG9yeSBleHRlbmRzIGkuQmFzZUNhbnZhc0ZhY3Rvcnkge1xuICAgICAgICBfY3JlYXRlQ2FudmFzKHQsIGUpIHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnY2FudmFzJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKHQsIGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLk5vZGVDYW52YXNGYWN0b3J5ID0gTm9kZUNhbnZhc0ZhY3Rvcnk7XG4gICAgICBjbGFzcyBOb2RlQ01hcFJlYWRlckZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VDTWFwUmVhZGVyRmFjdG9yeSB7XG4gICAgICAgIF9mZXRjaERhdGEodCwgZSkge1xuICAgICAgICAgIHJldHVybiBmZXRjaERhdGEodCkudGhlbih0ID0+ICh7XG4gICAgICAgICAgICBjTWFwRGF0YTogdCxcbiAgICAgICAgICAgIGNvbXByZXNzaW9uVHlwZTogZVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5Ob2RlQ01hcFJlYWRlckZhY3RvcnkgPSBOb2RlQ01hcFJlYWRlckZhY3Rvcnk7XG4gICAgICBjbGFzcyBOb2RlU3RhbmRhcmRGb250RGF0YUZhY3RvcnkgZXh0ZW5kcyBpLkJhc2VTdGFuZGFyZEZvbnREYXRhRmFjdG9yeSB7XG4gICAgICAgIF9mZXRjaERhdGEodCkge1xuICAgICAgICAgIHJldHVybiBmZXRjaERhdGEodCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5ID0gTm9kZVN0YW5kYXJkRm9udERhdGFGYWN0b3J5O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLkNhbnZhc0dyYXBoaWNzID0gdm9pZCAwO1xuICAgICAgbigyKTtcbiAgICAgIG4oOTMpO1xuICAgICAgbigxMDEpO1xuICAgICAgbigxMDIpO1xuICAgICAgbigxMDUpO1xuICAgICAgbigxMDcpO1xuICAgICAgbigxMDkpO1xuICAgICAgbigxMTMpO1xuICAgICAgbigxMTYpO1xuICAgICAgbigxMjMpO1xuICAgICAgbig4OSk7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2NyksXG4gICAgICAgIHMgPSBuKDE3MyksXG4gICAgICAgIGEgPSBuKDE3NCk7XG4gICAgICBjb25zdCBvID0gNDA5NixcbiAgICAgICAgbCA9IDE2O1xuICAgICAgY2xhc3MgQ2FjaGVkQ2FudmFzZXMge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdGhpcy5jYW52YXNGYWN0b3J5ID0gdDtcbiAgICAgICAgICB0aGlzLmNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRDYW52YXModCwgZSwgbikge1xuICAgICAgICAgIGxldCBpO1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHRoaXMuY2FjaGVbdF0pIHtcbiAgICAgICAgICAgIGkgPSB0aGlzLmNhY2hlW3RdO1xuICAgICAgICAgICAgdGhpcy5jYW52YXNGYWN0b3J5LnJlc2V0KGksIGUsIG4pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpID0gdGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShlLCBuKTtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVbdF0gPSBpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUodCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlW3RdO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFyKCkge1xuICAgICAgICAgIGZvciAoY29uc3QgdCBpbiB0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdGhpcy5jYWNoZVt0XTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzRmFjdG9yeS5kZXN0cm95KGUpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2FjaGVbdF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBkcmF3SW1hZ2VBdEludGVnZXJDb29yZHModCwgZSwgbiwgaSwgcywgYSwgbywgbCwgYywgaCkge1xuICAgICAgICBjb25zdCBbZCwgdSwgcCwgZiwgZywgbV0gPSAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KTtcbiAgICAgICAgaWYgKDAgPT09IHUgJiYgMCA9PT0gcCkge1xuICAgICAgICAgIGNvbnN0IHIgPSBvICogZCArIGcsXG4gICAgICAgICAgICBiID0gTWF0aC5yb3VuZChyKSxcbiAgICAgICAgICAgIHYgPSBsICogZiArIG0sXG4gICAgICAgICAgICB5ID0gTWF0aC5yb3VuZCh2KSxcbiAgICAgICAgICAgIEEgPSAobyArIGMpICogZCArIGcsXG4gICAgICAgICAgICBfID0gTWF0aC5hYnMoTWF0aC5yb3VuZChBKSAtIGIpIHx8IDEsXG4gICAgICAgICAgICBTID0gKGwgKyBoKSAqIGYgKyBtLFxuICAgICAgICAgICAgRSA9IE1hdGguYWJzKE1hdGgucm91bmQoUykgLSB5KSB8fCAxO1xuICAgICAgICAgIHQuc2V0VHJhbnNmb3JtKE1hdGguc2lnbihkKSwgMCwgMCwgTWF0aC5zaWduKGYpLCBiLCB5KTtcbiAgICAgICAgICB0LmRyYXdJbWFnZShlLCBuLCBpLCBzLCBhLCAwLCAwLCBfLCBFKTtcbiAgICAgICAgICB0LnNldFRyYW5zZm9ybShkLCB1LCBwLCBmLCBnLCBtKTtcbiAgICAgICAgICByZXR1cm4gW18sIEVdO1xuICAgICAgICB9XG4gICAgICAgIGlmICgwID09PSBkICYmIDAgPT09IGYpIHtcbiAgICAgICAgICBjb25zdCByID0gbCAqIHAgKyBnLFxuICAgICAgICAgICAgYiA9IE1hdGgucm91bmQociksXG4gICAgICAgICAgICB2ID0gbyAqIHUgKyBtLFxuICAgICAgICAgICAgeSA9IE1hdGgucm91bmQodiksXG4gICAgICAgICAgICBBID0gKGwgKyBoKSAqIHAgKyBnLFxuICAgICAgICAgICAgXyA9IE1hdGguYWJzKE1hdGgucm91bmQoQSkgLSBiKSB8fCAxLFxuICAgICAgICAgICAgUyA9IChvICsgYykgKiB1ICsgbSxcbiAgICAgICAgICAgIEUgPSBNYXRoLmFicyhNYXRoLnJvdW5kKFMpIC0geSkgfHwgMTtcbiAgICAgICAgICB0LnNldFRyYW5zZm9ybSgwLCBNYXRoLnNpZ24odSksIE1hdGguc2lnbihwKSwgMCwgYiwgeSk7XG4gICAgICAgICAgdC5kcmF3SW1hZ2UoZSwgbiwgaSwgcywgYSwgMCwgMCwgRSwgXyk7XG4gICAgICAgICAgdC5zZXRUcmFuc2Zvcm0oZCwgdSwgcCwgZiwgZywgbSk7XG4gICAgICAgICAgcmV0dXJuIFtFLCBfXTtcbiAgICAgICAgfVxuICAgICAgICB0LmRyYXdJbWFnZShlLCBuLCBpLCBzLCBhLCBvLCBsLCBjLCBoKTtcbiAgICAgICAgcmV0dXJuIFtNYXRoLmh5cG90KGQsIHUpICogYywgTWF0aC5oeXBvdChwLCBmKSAqIGhdO1xuICAgICAgfVxuICAgICAgY2xhc3MgQ2FudmFzRXh0cmFTdGF0ZSB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHtcbiAgICAgICAgICB0aGlzLmFscGhhSXNTaGFwZSA9ICExO1xuICAgICAgICAgIHRoaXMuZm9udFNpemUgPSAwO1xuICAgICAgICAgIHRoaXMuZm9udFNpemVTY2FsZSA9IDE7XG4gICAgICAgICAgdGhpcy50ZXh0TWF0cml4ID0gaS5JREVOVElUWV9NQVRSSVg7XG4gICAgICAgICAgdGhpcy50ZXh0TWF0cml4U2NhbGUgPSAxO1xuICAgICAgICAgIHRoaXMuZm9udE1hdHJpeCA9IGkuRk9OVF9JREVOVElUWV9NQVRSSVg7XG4gICAgICAgICAgdGhpcy5sZWFkaW5nID0gMDtcbiAgICAgICAgICB0aGlzLnggPSAwO1xuICAgICAgICAgIHRoaXMueSA9IDA7XG4gICAgICAgICAgdGhpcy5saW5lWCA9IDA7XG4gICAgICAgICAgdGhpcy5saW5lWSA9IDA7XG4gICAgICAgICAgdGhpcy5jaGFyU3BhY2luZyA9IDA7XG4gICAgICAgICAgdGhpcy53b3JkU3BhY2luZyA9IDA7XG4gICAgICAgICAgdGhpcy50ZXh0SFNjYWxlID0gMTtcbiAgICAgICAgICB0aGlzLnRleHRSZW5kZXJpbmdNb2RlID0gaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMO1xuICAgICAgICAgIHRoaXMudGV4dFJpc2UgPSAwO1xuICAgICAgICAgIHRoaXMuZmlsbENvbG9yID0gXCIjMDAwMDAwXCI7XG4gICAgICAgICAgdGhpcy5zdHJva2VDb2xvciA9IFwiIzAwMDAwMFwiO1xuICAgICAgICAgIHRoaXMucGF0dGVybkZpbGwgPSAhMTtcbiAgICAgICAgICB0aGlzLmZpbGxBbHBoYSA9IDE7XG4gICAgICAgICAgdGhpcy5zdHJva2VBbHBoYSA9IDE7XG4gICAgICAgICAgdGhpcy5saW5lV2lkdGggPSAxO1xuICAgICAgICAgIHRoaXMuYWN0aXZlU01hc2sgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNmZXJNYXBzID0gXCJub25lXCI7XG4gICAgICAgICAgdGhpcy5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLCAwLCB0LCBlXSk7XG4gICAgICAgIH1cbiAgICAgICAgY2xvbmUoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IE9iamVjdC5jcmVhdGUodGhpcyk7XG4gICAgICAgICAgdC5jbGlwQm94ID0gdGhpcy5jbGlwQm94LnNsaWNlKCk7XG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q3VycmVudFBvaW50KHQsIGUpIHtcbiAgICAgICAgICB0aGlzLnggPSB0O1xuICAgICAgICAgIHRoaXMueSA9IGU7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlUGF0aE1pbk1heCh0LCBlLCBuKSB7XG4gICAgICAgICAgW2UsIG5dID0gaS5VdGlsLmFwcGx5VHJhbnNmb3JtKFtlLCBuXSwgdCk7XG4gICAgICAgICAgdGhpcy5taW5YID0gTWF0aC5taW4odGhpcy5taW5YLCBlKTtcbiAgICAgICAgICB0aGlzLm1pblkgPSBNYXRoLm1pbih0aGlzLm1pblksIG4pO1xuICAgICAgICAgIHRoaXMubWF4WCA9IE1hdGgubWF4KHRoaXMubWF4WCwgZSk7XG4gICAgICAgICAgdGhpcy5tYXhZID0gTWF0aC5tYXgodGhpcy5tYXhZLCBuKTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVSZWN0TWluTWF4KHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gaS5VdGlsLmFwcGx5VHJhbnNmb3JtKGUsIHQpLFxuICAgICAgICAgICAgciA9IGkuVXRpbC5hcHBseVRyYW5zZm9ybShlLnNsaWNlKDIpLCB0KTtcbiAgICAgICAgICB0aGlzLm1pblggPSBNYXRoLm1pbih0aGlzLm1pblgsIG5bMF0sIHJbMF0pO1xuICAgICAgICAgIHRoaXMubWluWSA9IE1hdGgubWluKHRoaXMubWluWSwgblsxXSwgclsxXSk7XG4gICAgICAgICAgdGhpcy5tYXhYID0gTWF0aC5tYXgodGhpcy5tYXhYLCBuWzBdLCByWzBdKTtcbiAgICAgICAgICB0aGlzLm1heFkgPSBNYXRoLm1heCh0aGlzLm1heFksIG5bMV0sIHJbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNjYWxpbmdQYXRoTWluTWF4KHQsIGUpIHtcbiAgICAgICAgICBpLlV0aWwuc2NhbGVNaW5NYXgodCwgZSk7XG4gICAgICAgICAgdGhpcy5taW5YID0gTWF0aC5taW4odGhpcy5taW5YLCBlWzBdKTtcbiAgICAgICAgICB0aGlzLm1heFggPSBNYXRoLm1heCh0aGlzLm1heFgsIGVbMV0pO1xuICAgICAgICAgIHRoaXMubWluWSA9IE1hdGgubWluKHRoaXMubWluWSwgZVsyXSk7XG4gICAgICAgICAgdGhpcy5tYXhZID0gTWF0aC5tYXgodGhpcy5tYXhZLCBlWzNdKTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVDdXJ2ZVBhdGhNaW5NYXgodCwgZSwgbiwgciwgcywgYSwgbywgbCwgYywgaCkge1xuICAgICAgICAgIGNvbnN0IGQgPSBpLlV0aWwuYmV6aWVyQm91bmRpbmdCb3goZSwgbiwgciwgcywgYSwgbywgbCwgYyk7XG4gICAgICAgICAgaWYgKGgpIHtcbiAgICAgICAgICAgIGhbMF0gPSBNYXRoLm1pbihoWzBdLCBkWzBdLCBkWzJdKTtcbiAgICAgICAgICAgIGhbMV0gPSBNYXRoLm1heChoWzFdLCBkWzBdLCBkWzJdKTtcbiAgICAgICAgICAgIGhbMl0gPSBNYXRoLm1pbihoWzJdLCBkWzFdLCBkWzNdKTtcbiAgICAgICAgICAgIGhbM10gPSBNYXRoLm1heChoWzNdLCBkWzFdLCBkWzNdKTtcbiAgICAgICAgICB9IGVsc2UgdGhpcy51cGRhdGVSZWN0TWluTWF4KHQsIGQpO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhdGhCb3VuZGluZ0JveCgpIHtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogcy5QYXRoVHlwZS5GSUxMLFxuICAgICAgICAgICAgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICBjb25zdCBuID0gW3RoaXMubWluWCwgdGhpcy5taW5ZLCB0aGlzLm1heFgsIHRoaXMubWF4WV07XG4gICAgICAgICAgaWYgKHQgPT09IHMuUGF0aFR5cGUuU1RST0tFKSB7XG4gICAgICAgICAgICBlIHx8ICgwLCBpLnVucmVhY2hhYmxlKShcIlN0cm9rZSBib3VuZGluZyBib3ggbXVzdCBpbmNsdWRlIHRyYW5zZm9ybS5cIik7XG4gICAgICAgICAgICBjb25zdCB0ID0gaS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUpLFxuICAgICAgICAgICAgICByID0gdFswXSAqIHRoaXMubGluZVdpZHRoIC8gMixcbiAgICAgICAgICAgICAgcyA9IHRbMV0gKiB0aGlzLmxpbmVXaWR0aCAvIDI7XG4gICAgICAgICAgICBuWzBdIC09IHI7XG4gICAgICAgICAgICBuWzFdIC09IHM7XG4gICAgICAgICAgICBuWzJdICs9IHI7XG4gICAgICAgICAgICBuWzNdICs9IHM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZUNsaXBGcm9tUGF0aCgpIHtcbiAgICAgICAgICBjb25zdCB0ID0gaS5VdGlsLmludGVyc2VjdCh0aGlzLmNsaXBCb3gsIHRoaXMuZ2V0UGF0aEJvdW5kaW5nQm94KCkpO1xuICAgICAgICAgIHRoaXMuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0IHx8IFswLCAwLCAwLCAwXSk7XG4gICAgICAgIH1cbiAgICAgICAgaXNFbXB0eUNsaXAoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWluWCA9PT0gMSAvIDA7XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0KSB7XG4gICAgICAgICAgdGhpcy5jbGlwQm94ID0gdDtcbiAgICAgICAgICB0aGlzLm1pblggPSAxIC8gMDtcbiAgICAgICAgICB0aGlzLm1pblkgPSAxIC8gMDtcbiAgICAgICAgICB0aGlzLm1heFggPSAwO1xuICAgICAgICAgIHRoaXMubWF4WSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpIHtcbiAgICAgICAgICBsZXQgdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDogcy5QYXRoVHlwZS5GSUxMLFxuICAgICAgICAgICAgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gaS5VdGlsLmludGVyc2VjdCh0aGlzLmNsaXBCb3gsIHRoaXMuZ2V0UGF0aEJvdW5kaW5nQm94KHQsIGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHV0QmluYXJ5SW1hZ2VEYXRhKHQsIGUpIHtcbiAgICAgICAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIEltYWdlRGF0YSAmJiBlIGluc3RhbmNlb2YgSW1hZ2VEYXRhKSB7XG4gICAgICAgICAgdC5wdXRJbWFnZURhdGEoZSwgMCwgMCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG4gPSBlLmhlaWdodCxcbiAgICAgICAgICByID0gZS53aWR0aCxcbiAgICAgICAgICBzID0gbiAlIGwsXG4gICAgICAgICAgYSA9IChuIC0gcykgLyBsLFxuICAgICAgICAgIG8gPSAwID09PSBzID8gYSA6IGEgKyAxLFxuICAgICAgICAgIGMgPSB0LmNyZWF0ZUltYWdlRGF0YShyLCBsKTtcbiAgICAgICAgbGV0IGgsXG4gICAgICAgICAgZCA9IDA7XG4gICAgICAgIGNvbnN0IHUgPSBlLmRhdGEsXG4gICAgICAgICAgcCA9IGMuZGF0YTtcbiAgICAgICAgbGV0IGYsIGcsIG0sIGI7XG4gICAgICAgIGlmIChlLmtpbmQgPT09IGkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQKSB7XG4gICAgICAgICAgY29uc3QgZSA9IHUuYnl0ZUxlbmd0aCxcbiAgICAgICAgICAgIG4gPSBuZXcgVWludDMyQXJyYXkocC5idWZmZXIsIDAsIHAuYnl0ZUxlbmd0aCA+PiAyKSxcbiAgICAgICAgICAgIGIgPSBuLmxlbmd0aCxcbiAgICAgICAgICAgIHYgPSByICsgNyA+PiAzLFxuICAgICAgICAgICAgeSA9IDQyOTQ5NjcyOTUsXG4gICAgICAgICAgICBBID0gaS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbiA/IDQyNzgxOTAwODAgOiAyNTU7XG4gICAgICAgICAgZm9yIChmID0gMDsgZiA8IG87IGYrKykge1xuICAgICAgICAgICAgbSA9IGYgPCBhID8gbCA6IHM7XG4gICAgICAgICAgICBoID0gMDtcbiAgICAgICAgICAgIGZvciAoZyA9IDA7IGcgPCBtOyBnKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IGUgLSBkO1xuICAgICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHMgPSB0ID4gdiA/IHIgOiA4ICogdCAtIDcsXG4gICAgICAgICAgICAgICAgYSA9IC04ICYgcztcbiAgICAgICAgICAgICAgbGV0IG8gPSAwLFxuICAgICAgICAgICAgICAgIGwgPSAwO1xuICAgICAgICAgICAgICBmb3IgKDsgaSA8IGE7IGkgKz0gOCkge1xuICAgICAgICAgICAgICAgIGwgPSB1W2QrK107XG4gICAgICAgICAgICAgICAgbltoKytdID0gMTI4ICYgbCA/IHkgOiBBO1xuICAgICAgICAgICAgICAgIG5baCsrXSA9IDY0ICYgbCA/IHkgOiBBO1xuICAgICAgICAgICAgICAgIG5baCsrXSA9IDMyICYgbCA/IHkgOiBBO1xuICAgICAgICAgICAgICAgIG5baCsrXSA9IDE2ICYgbCA/IHkgOiBBO1xuICAgICAgICAgICAgICAgIG5baCsrXSA9IDggJiBsID8geSA6IEE7XG4gICAgICAgICAgICAgICAgbltoKytdID0gNCAmIGwgPyB5IDogQTtcbiAgICAgICAgICAgICAgICBuW2grK10gPSAyICYgbCA/IHkgOiBBO1xuICAgICAgICAgICAgICAgIG5baCsrXSA9IDEgJiBsID8geSA6IEE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yICg7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gbykge1xuICAgICAgICAgICAgICAgICAgbCA9IHVbZCsrXTtcbiAgICAgICAgICAgICAgICAgIG8gPSAxMjg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5baCsrXSA9IGwgJiBvID8geSA6IEE7XG4gICAgICAgICAgICAgICAgbyA+Pj0gMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7IGggPCBiOykgbltoKytdID0gMDtcbiAgICAgICAgICAgIHQucHV0SW1hZ2VEYXRhKGMsIDAsIGYgKiBsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZS5raW5kID09PSBpLkltYWdlS2luZC5SR0JBXzMyQlBQKSB7XG4gICAgICAgICAgZyA9IDA7XG4gICAgICAgICAgYiA9IHIgKiBsICogNDtcbiAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgYTsgZisrKSB7XG4gICAgICAgICAgICBwLnNldCh1LnN1YmFycmF5KGQsIGQgKyBiKSk7XG4gICAgICAgICAgICBkICs9IGI7XG4gICAgICAgICAgICB0LnB1dEltYWdlRGF0YShjLCAwLCBnKTtcbiAgICAgICAgICAgIGcgKz0gbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGYgPCBvKSB7XG4gICAgICAgICAgICBiID0gciAqIHMgKiA0O1xuICAgICAgICAgICAgcC5zZXQodS5zdWJhcnJheShkLCBkICsgYikpO1xuICAgICAgICAgICAgdC5wdXRJbWFnZURhdGEoYywgMCwgZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChlLmtpbmQgIT09IGkuSW1hZ2VLaW5kLlJHQl8yNEJQUCkgdGhyb3cgbmV3IEVycm9yKFwiYmFkIGltYWdlIGtpbmQ6IFwiLmNvbmNhdChlLmtpbmQpKTtcbiAgICAgICAgICBtID0gbDtcbiAgICAgICAgICBiID0gciAqIG07XG4gICAgICAgICAgZm9yIChmID0gMDsgZiA8IG87IGYrKykge1xuICAgICAgICAgICAgaWYgKGYgPj0gYSkge1xuICAgICAgICAgICAgICBtID0gcztcbiAgICAgICAgICAgICAgYiA9IHIgKiBtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaCA9IDA7XG4gICAgICAgICAgICBmb3IgKGcgPSBiOyBnLS07KSB7XG4gICAgICAgICAgICAgIHBbaCsrXSA9IHVbZCsrXTtcbiAgICAgICAgICAgICAgcFtoKytdID0gdVtkKytdO1xuICAgICAgICAgICAgICBwW2grK10gPSB1W2QrK107XG4gICAgICAgICAgICAgIHBbaCsrXSA9IDI1NTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQucHV0SW1hZ2VEYXRhKGMsIDAsIGYgKiBsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHB1dEJpbmFyeUltYWdlTWFzayh0LCBlKSB7XG4gICAgICAgIGlmIChlLmJpdG1hcCkge1xuICAgICAgICAgIHQuZHJhd0ltYWdlKGUuYml0bWFwLCAwLCAwKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IGUuaGVpZ2h0LFxuICAgICAgICAgIGkgPSBlLndpZHRoLFxuICAgICAgICAgIHIgPSBuICUgbCxcbiAgICAgICAgICBzID0gKG4gLSByKSAvIGwsXG4gICAgICAgICAgbyA9IDAgPT09IHIgPyBzIDogcyArIDEsXG4gICAgICAgICAgYyA9IHQuY3JlYXRlSW1hZ2VEYXRhKGksIGwpO1xuICAgICAgICBsZXQgaCA9IDA7XG4gICAgICAgIGNvbnN0IGQgPSBlLmRhdGEsXG4gICAgICAgICAgdSA9IGMuZGF0YTtcbiAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBvOyBlKyspIHtcbiAgICAgICAgICBjb25zdCBuID0gZSA8IHMgPyBsIDogcjtcbiAgICAgICAgICAoe1xuICAgICAgICAgICAgc3JjUG9zOiBoXG4gICAgICAgICAgfSA9ICgwLCBhLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKSh7XG4gICAgICAgICAgICBzcmM6IGQsXG4gICAgICAgICAgICBzcmNQb3M6IGgsXG4gICAgICAgICAgICBkZXN0OiB1LFxuICAgICAgICAgICAgd2lkdGg6IGksXG4gICAgICAgICAgICBoZWlnaHQ6IG4sXG4gICAgICAgICAgICBub25CbGFja0NvbG9yOiAwXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHQucHV0SW1hZ2VEYXRhKGMsIDAsIGUgKiBsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gY29weUN0eFN0YXRlKHQsIGUpIHtcbiAgICAgICAgY29uc3QgbiA9IFtcInN0cm9rZVN0eWxlXCIsIFwiZmlsbFN0eWxlXCIsIFwiZmlsbFJ1bGVcIiwgXCJnbG9iYWxBbHBoYVwiLCBcImxpbmVXaWR0aFwiLCBcImxpbmVDYXBcIiwgXCJsaW5lSm9pblwiLCBcIm1pdGVyTGltaXRcIiwgXCJnbG9iYWxDb21wb3NpdGVPcGVyYXRpb25cIiwgXCJmb250XCIsIFwiZmlsdGVyXCJdO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2Ygbikgdm9pZCAwICE9PSB0W2ldICYmIChlW2ldID0gdFtpXSk7XG4gICAgICAgIGlmICh2b2lkIDAgIT09IHQuc2V0TGluZURhc2gpIHtcbiAgICAgICAgICBlLnNldExpbmVEYXNoKHQuZ2V0TGluZURhc2goKSk7XG4gICAgICAgICAgZS5saW5lRGFzaE9mZnNldCA9IHQubGluZURhc2hPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHJlc2V0Q3R4VG9EZWZhdWx0KHQpIHtcbiAgICAgICAgdC5zdHJva2VTdHlsZSA9IHQuZmlsbFN0eWxlID0gXCIjMDAwMDAwXCI7XG4gICAgICAgIHQuZmlsbFJ1bGUgPSBcIm5vbnplcm9cIjtcbiAgICAgICAgdC5nbG9iYWxBbHBoYSA9IDE7XG4gICAgICAgIHQubGluZVdpZHRoID0gMTtcbiAgICAgICAgdC5saW5lQ2FwID0gXCJidXR0XCI7XG4gICAgICAgIHQubGluZUpvaW4gPSBcIm1pdGVyXCI7XG4gICAgICAgIHQubWl0ZXJMaW1pdCA9IDEwO1xuICAgICAgICB0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IFwic291cmNlLW92ZXJcIjtcbiAgICAgICAgdC5mb250ID0gXCIxMHB4IHNhbnMtc2VyaWZcIjtcbiAgICAgICAgaWYgKHZvaWQgMCAhPT0gdC5zZXRMaW5lRGFzaCkge1xuICAgICAgICAgIHQuc2V0TGluZURhc2goW10pO1xuICAgICAgICAgIHQubGluZURhc2hPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaS5pc05vZGVKUykge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGZpbHRlcjogZVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIFwibm9uZVwiICE9PSBlICYmIFwiXCIgIT09IGUgJiYgKHQuZmlsdGVyID0gXCJub25lXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBjb21wb3NlU01hc2tCYWNrZHJvcCh0LCBlLCBuLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0Lmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgcyA9IDM7IHMgPCByOyBzICs9IDQpIHtcbiAgICAgICAgICBjb25zdCByID0gdFtzXTtcbiAgICAgICAgICBpZiAoMCA9PT0gcikge1xuICAgICAgICAgICAgdFtzIC0gM10gPSBlO1xuICAgICAgICAgICAgdFtzIC0gMl0gPSBuO1xuICAgICAgICAgICAgdFtzIC0gMV0gPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAociA8IDI1NSkge1xuICAgICAgICAgICAgY29uc3QgYSA9IDI1NSAtIHI7XG4gICAgICAgICAgICB0W3MgLSAzXSA9IHRbcyAtIDNdICogciArIGUgKiBhID4+IDg7XG4gICAgICAgICAgICB0W3MgLSAyXSA9IHRbcyAtIDJdICogciArIG4gKiBhID4+IDg7XG4gICAgICAgICAgICB0W3MgLSAxXSA9IHRbcyAtIDFdICogciArIGkgKiBhID4+IDg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBjb21wb3NlU01hc2tBbHBoYSh0LCBlLCBuKSB7XG4gICAgICAgIGNvbnN0IGkgPSB0Lmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgciA9IDM7IHIgPCBpOyByICs9IDQpIHtcbiAgICAgICAgICBjb25zdCBpID0gbiA/IG5bdFtyXV0gOiB0W3JdO1xuICAgICAgICAgIGVbcl0gPSBlW3JdICogaSAqIC4wMDM5MjE1Njg2Mjc0NTA5OCB8IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGNvbXBvc2VTTWFza0x1bWlub3NpdHkodCwgZSwgbikge1xuICAgICAgICBjb25zdCBpID0gdC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IHIgPSAzOyByIDwgaTsgciArPSA0KSB7XG4gICAgICAgICAgY29uc3QgaSA9IDc3ICogdFtyIC0gM10gKyAxNTIgKiB0W3IgLSAyXSArIDI4ICogdFtyIC0gMV07XG4gICAgICAgICAgZVtyXSA9IG4gPyBlW3JdICogbltpID4+IDhdID4+IDggOiBlW3JdICogaSA+PiAxNjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gY29tcG9zZVNNYXNrKHQsIGUsIG4sIGkpIHtcbiAgICAgICAgY29uc3QgciA9IGlbMF0sXG4gICAgICAgICAgcyA9IGlbMV0sXG4gICAgICAgICAgYSA9IGlbMl0gLSByLFxuICAgICAgICAgIG8gPSBpWzNdIC0gcztcbiAgICAgICAgaWYgKDAgIT09IGEgJiYgMCAhPT0gbykge1xuICAgICAgICAgICFmdW5jdGlvbiBnZW5lcmljQ29tcG9zZVNNYXNrKHQsIGUsIG4sIGksIHIsIHMsIGEsIG8sIGwsIGMsIGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAhIXMsXG4gICAgICAgICAgICAgIHUgPSBkID8gc1swXSA6IDAsXG4gICAgICAgICAgICAgIHAgPSBkID8gc1sxXSA6IDAsXG4gICAgICAgICAgICAgIGYgPSBkID8gc1syXSA6IDAsXG4gICAgICAgICAgICAgIGcgPSBcIkx1bWlub3NpdHlcIiA9PT0gciA/IGNvbXBvc2VTTWFza0x1bWlub3NpdHkgOiBjb21wb3NlU01hc2tBbHBoYSxcbiAgICAgICAgICAgICAgbSA9IE1hdGgubWluKGksIE1hdGguY2VpbCgxMDQ4NTc2IC8gbikpO1xuICAgICAgICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCBpOyByICs9IG0pIHtcbiAgICAgICAgICAgICAgY29uc3QgcyA9IE1hdGgubWluKG0sIGkgLSByKSxcbiAgICAgICAgICAgICAgICBiID0gdC5nZXRJbWFnZURhdGEobyAtIGMsIHIgKyAobCAtIGgpLCBuLCBzKSxcbiAgICAgICAgICAgICAgICB2ID0gZS5nZXRJbWFnZURhdGEobywgciArIGwsIG4sIHMpO1xuICAgICAgICAgICAgICBkICYmIGNvbXBvc2VTTWFza0JhY2tkcm9wKGIuZGF0YSwgdSwgcCwgZik7XG4gICAgICAgICAgICAgIGcoYi5kYXRhLCB2LmRhdGEsIGEpO1xuICAgICAgICAgICAgICBlLnB1dEltYWdlRGF0YSh2LCBvLCByICsgbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfShlLmNvbnRleHQsIG4sIGEsIG8sIGUuc3VidHlwZSwgZS5iYWNrZHJvcCwgZS50cmFuc2Zlck1hcCwgciwgcywgZS5vZmZzZXRYLCBlLm9mZnNldFkpO1xuICAgICAgICAgIHQuc2F2ZSgpO1xuICAgICAgICAgIHQuZ2xvYmFsQWxwaGEgPSAxO1xuICAgICAgICAgIHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gXCJzb3VyY2Utb3ZlclwiO1xuICAgICAgICAgIHQuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgICAgIHQuZHJhd0ltYWdlKG4uY2FudmFzLCAwLCAwKTtcbiAgICAgICAgICB0LnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gZ2V0SW1hZ2VTbW9vdGhpbmdFbmFibGVkKHQsIGUpIHtcbiAgICAgICAgY29uc3QgbiA9IGkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0KTtcbiAgICAgICAgblswXSA9IE1hdGguZnJvdW5kKG5bMF0pO1xuICAgICAgICBuWzFdID0gTWF0aC5mcm91bmQoblsxXSk7XG4gICAgICAgIGNvbnN0IHMgPSBNYXRoLmZyb3VuZCgoZ2xvYmFsVGhpcy5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpICogci5QaXhlbHNQZXJJbmNoLlBERl9UT19DU1NfVU5JVFMpO1xuICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBlID8gZSA6IG5bMF0gPD0gcyB8fCBuWzFdIDw9IHM7XG4gICAgICB9XG4gICAgICBjb25zdCBjID0gW1wiYnV0dFwiLCBcInJvdW5kXCIsIFwic3F1YXJlXCJdLFxuICAgICAgICBoID0gW1wibWl0ZXJcIiwgXCJyb3VuZFwiLCBcImJldmVsXCJdLFxuICAgICAgICBkID0ge30sXG4gICAgICAgIHUgPSB7fTtcbiAgICAgIHZhciBfR3QgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfVnQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIENhbnZhc0dyYXBoaWNzIHtcbiAgICAgICAgY29uc3RydWN0b3IoX3QxMCwgX2U5LCBuLCBpLCByLCBzLCBhLCBvKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9WdCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9HdCk7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIG9wdGlvbmFsQ29udGVudENvbmZpZzogbCxcbiAgICAgICAgICAgIG1hcmtlZENvbnRlbnRTdGFjazogYyA9IG51bGxcbiAgICAgICAgICB9ID0gcztcbiAgICAgICAgICB0aGlzLmN0eCA9IF90MTA7XG4gICAgICAgICAgdGhpcy5jdXJyZW50ID0gbmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLCB0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLnN0YXRlU3RhY2sgPSBbXTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdDbGlwID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdFT0ZpbGwgPSAhMTtcbiAgICAgICAgICB0aGlzLnJlcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy54b2JqcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jb21tb25PYmpzID0gX2U5O1xuICAgICAgICAgIHRoaXMub2JqcyA9IG47XG4gICAgICAgICAgdGhpcy5jYW52YXNGYWN0b3J5ID0gaTtcbiAgICAgICAgICB0aGlzLmZpbHRlckZhY3RvcnkgPSByO1xuICAgICAgICAgIHRoaXMuZ3JvdXBTdGFjayA9IFtdO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc2luZ1R5cGUzID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmJhc2VUcmFuc2Zvcm0gPSBudWxsO1xuICAgICAgICAgIHRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrID0gW107XG4gICAgICAgICAgdGhpcy5ncm91cExldmVsID0gMDtcbiAgICAgICAgICB0aGlzLnNtYXNrU3RhY2sgPSBbXTtcbiAgICAgICAgICB0aGlzLnNtYXNrQ291bnRlciA9IDA7XG4gICAgICAgICAgdGhpcy50ZW1wU01hc2sgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc3VzcGVuZGVkQ3R4ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRWaXNpYmxlID0gITA7XG4gICAgICAgICAgdGhpcy5tYXJrZWRDb250ZW50U3RhY2sgPSBjIHx8IFtdO1xuICAgICAgICAgIHRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnID0gbDtcbiAgICAgICAgICB0aGlzLmNhY2hlZENhbnZhc2VzID0gbmV3IENhY2hlZENhbnZhc2VzKHRoaXMuY2FudmFzRmFjdG9yeSk7XG4gICAgICAgICAgdGhpcy5jYWNoZWRQYXR0ZXJucyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25DYW52YXNNYXAgPSBhO1xuICAgICAgICAgIHRoaXMudmlld3BvcnRTY2FsZSA9IDE7XG4gICAgICAgICAgdGhpcy5vdXRwdXRTY2FsZVggPSAxO1xuICAgICAgICAgIHRoaXMub3V0cHV0U2NhbGVZID0gMTtcbiAgICAgICAgICB0aGlzLnBhZ2VDb2xvcnMgPSBvO1xuICAgICAgICAgIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmcgPSBbLTEsIDBdO1xuICAgICAgICAgIHRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGggPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0T2JqZWN0KHQpIHtcbiAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIiA9PSB0eXBlb2YgdCA/IHQuc3RhcnRzV2l0aChcImdfXCIpID8gdGhpcy5jb21tb25PYmpzLmdldCh0KSA6IHRoaXMub2Jqcy5nZXQodCkgOiBlO1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luRHJhd2luZyh0KSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiBuLFxuICAgICAgICAgICAgdHJhbnNwYXJlbmN5OiBpID0gITEsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBzID0gbnVsbFxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLmN0eC5jYW52YXMud2lkdGgsXG4gICAgICAgICAgICBvID0gdGhpcy5jdHguY2FudmFzLmhlaWdodCxcbiAgICAgICAgICAgIGwgPSB0aGlzLmN0eC5maWxsU3R5bGU7XG4gICAgICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gcyB8fCBcIiNmZmZmZmZcIjtcbiAgICAgICAgICB0aGlzLmN0eC5maWxsUmVjdCgwLCAwLCBhLCBvKTtcbiAgICAgICAgICB0aGlzLmN0eC5maWxsU3R5bGUgPSBsO1xuICAgICAgICAgIGlmIChpKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoXCJ0cmFuc3BhcmVudFwiLCBhLCBvKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlQ3R4ID0gdGhpcy5jdHg7XG4gICAgICAgICAgICB0aGlzLnRyYW5zcGFyZW50Q2FudmFzID0gdC5jYW52YXM7XG4gICAgICAgICAgICB0aGlzLmN0eCA9IHQuY29udGV4dDtcbiAgICAgICAgICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICAgICAgICAgIHRoaXMuY3R4LnRyYW5zZm9ybSguLi4oMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmNvbXBvc2l0ZUN0eCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmN0eC5zYXZlKCk7XG4gICAgICAgICAgcmVzZXRDdHhUb0RlZmF1bHQodGhpcy5jdHgpO1xuICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICB0aGlzLmN0eC50cmFuc2Zvcm0oLi4uZSk7XG4gICAgICAgICAgICB0aGlzLm91dHB1dFNjYWxlWCA9IGVbMF07XG4gICAgICAgICAgICB0aGlzLm91dHB1dFNjYWxlWSA9IGVbMF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3R4LnRyYW5zZm9ybSguLi5uLnRyYW5zZm9ybSk7XG4gICAgICAgICAgdGhpcy52aWV3cG9ydFNjYWxlID0gbi5zY2FsZTtcbiAgICAgICAgICB0aGlzLmJhc2VUcmFuc2Zvcm0gPSAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhlY3V0ZU9wZXJhdG9yTGlzdCh0LCBlLCBuLCByKSB7XG4gICAgICAgICAgY29uc3QgcyA9IHQuYXJnc0FycmF5LFxuICAgICAgICAgICAgYSA9IHQuZm5BcnJheTtcbiAgICAgICAgICBsZXQgbyA9IGUgfHwgMDtcbiAgICAgICAgICBjb25zdCBsID0gcy5sZW5ndGg7XG4gICAgICAgICAgaWYgKGwgPT09IG8pIHJldHVybiBvO1xuICAgICAgICAgIGNvbnN0IGMgPSBsIC0gbyA+IDEwICYmIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgbixcbiAgICAgICAgICAgIGggPSBjID8gRGF0ZS5ub3coKSArIDE1IDogMDtcbiAgICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgICAgY29uc3QgdSA9IHRoaXMuY29tbW9uT2JqcyxcbiAgICAgICAgICAgIHAgPSB0aGlzLm9ianM7XG4gICAgICAgICAgbGV0IGY7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gciAmJiBvID09PSByLm5leHRCcmVha1BvaW50KSB7XG4gICAgICAgICAgICAgIHIuYnJlYWtJdChvLCBuKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmID0gYVtvXTtcbiAgICAgICAgICAgIGlmIChmICE9PSBpLk9QUy5kZXBlbmRlbmN5KSB0aGlzW2ZdLmFwcGx5KHRoaXMsIHNbb10pO2Vsc2UgZm9yIChjb25zdCB0IG9mIHNbb10pIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IHQuc3RhcnRzV2l0aChcImdfXCIpID8gdSA6IHA7XG4gICAgICAgICAgICAgIGlmICghZS5oYXModCkpIHtcbiAgICAgICAgICAgICAgICBlLmdldCh0LCBuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbysrO1xuICAgICAgICAgICAgaWYgKG8gPT09IGwpIHJldHVybiBvO1xuICAgICAgICAgICAgaWYgKGMgJiYgKytkID4gMTApIHtcbiAgICAgICAgICAgICAgaWYgKERhdGUubm93KCkgPiBoKSB7XG4gICAgICAgICAgICAgICAgbigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGQgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbmREcmF3aW5nKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0d0LCBfR3QyKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIHRoaXMuY2FjaGVkQ2FudmFzZXMuY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLmNhY2hlZFBhdHRlcm5zLmNsZWFyKCk7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX2NhY2hlZEJpdG1hcHNNYXAudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0LnZhbHVlcygpKSBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCAmJiBlIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQgJiYgKGUud2lkdGggPSBlLmhlaWdodCA9IDApO1xuICAgICAgICAgICAgdC5jbGVhcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9jYWNoZWRCaXRtYXBzTWFwLmNsZWFyKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVnQsIF9WdDIpLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgX3NjYWxlSW1hZ2UodCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSB0LndpZHRoLFxuICAgICAgICAgICAgaSA9IHQuaGVpZ2h0O1xuICAgICAgICAgIGxldCByLFxuICAgICAgICAgICAgcyxcbiAgICAgICAgICAgIGEgPSBNYXRoLm1heChNYXRoLmh5cG90KGVbMF0sIGVbMV0pLCAxKSxcbiAgICAgICAgICAgIG8gPSBNYXRoLm1heChNYXRoLmh5cG90KGVbMl0sIGVbM10pLCAxKSxcbiAgICAgICAgICAgIGwgPSBuLFxuICAgICAgICAgICAgYyA9IGksXG4gICAgICAgICAgICBoID0gXCJwcmVzY2FsZTFcIjtcbiAgICAgICAgICBmb3IgKDsgYSA+IDIgJiYgbCA+IDEgfHwgbyA+IDIgJiYgYyA+IDE7KSB7XG4gICAgICAgICAgICBsZXQgZSA9IGwsXG4gICAgICAgICAgICAgIG4gPSBjO1xuICAgICAgICAgICAgaWYgKGEgPiAyICYmIGwgPiAxKSB7XG4gICAgICAgICAgICAgIGUgPSBsID49IDE2Mzg0ID8gTWF0aC5mbG9vcihsIC8gMikgLSAxIHx8IDEgOiBNYXRoLmNlaWwobCAvIDIpO1xuICAgICAgICAgICAgICBhIC89IGwgLyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG8gPiAyICYmIGMgPiAxKSB7XG4gICAgICAgICAgICAgIG4gPSBjID49IDE2Mzg0ID8gTWF0aC5mbG9vcihjIC8gMikgLSAxIHx8IDEgOiBNYXRoLmNlaWwoYykgLyAyO1xuICAgICAgICAgICAgICBvIC89IGMgLyBuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKGgsIGUsIG4pO1xuICAgICAgICAgICAgcyA9IHIuY29udGV4dDtcbiAgICAgICAgICAgIHMuY2xlYXJSZWN0KDAsIDAsIGUsIG4pO1xuICAgICAgICAgICAgcy5kcmF3SW1hZ2UodCwgMCwgMCwgbCwgYywgMCwgMCwgZSwgbik7XG4gICAgICAgICAgICB0ID0gci5jYW52YXM7XG4gICAgICAgICAgICBsID0gZTtcbiAgICAgICAgICAgIGMgPSBuO1xuICAgICAgICAgICAgaCA9IFwicHJlc2NhbGUxXCIgPT09IGggPyBcInByZXNjYWxlMlwiIDogXCJwcmVzY2FsZTFcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltZzogdCxcbiAgICAgICAgICAgIHBhaW50V2lkdGg6IGwsXG4gICAgICAgICAgICBwYWludEhlaWdodDogY1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgX2NyZWF0ZU1hc2tDYW52YXModCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmN0eCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgd2lkdGg6IG4sXG4gICAgICAgICAgICAgIGhlaWdodDogYVxuICAgICAgICAgICAgfSA9IHQsXG4gICAgICAgICAgICBvID0gdGhpcy5jdXJyZW50LmZpbGxDb2xvcixcbiAgICAgICAgICAgIGwgPSB0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwsXG4gICAgICAgICAgICBjID0gKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkoZSk7XG4gICAgICAgICAgbGV0IGgsIGQsIHUsIHA7XG4gICAgICAgICAgaWYgKCh0LmJpdG1hcCB8fCB0LmRhdGEpICYmIHQuY291bnQgPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdC5iaXRtYXAgfHwgdC5kYXRhLmJ1ZmZlcjtcbiAgICAgICAgICAgIGQgPSBKU09OLnN0cmluZ2lmeShsID8gYyA6IFtjLnNsaWNlKDAsIDQpLCBvXSk7XG4gICAgICAgICAgICBoID0gdGhpcy5fY2FjaGVkQml0bWFwc01hcC5nZXQoZSk7XG4gICAgICAgICAgICBpZiAoIWgpIHtcbiAgICAgICAgICAgICAgaCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkQml0bWFwc01hcC5zZXQoZSwgaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuID0gaC5nZXQoZCk7XG4gICAgICAgICAgICBpZiAobiAmJiAhbCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNhbnZhczogbixcbiAgICAgICAgICAgICAgICBvZmZzZXRYOiBNYXRoLnJvdW5kKE1hdGgubWluKGNbMF0sIGNbMl0pICsgY1s0XSksXG4gICAgICAgICAgICAgICAgb2Zmc2V0WTogTWF0aC5yb3VuZChNYXRoLm1pbihjWzFdLCBjWzNdKSArIGNbNV0pXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1ID0gbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCF1KSB7XG4gICAgICAgICAgICBwID0gdGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoXCJtYXNrQ2FudmFzXCIsIG4sIGEpO1xuICAgICAgICAgICAgcHV0QmluYXJ5SW1hZ2VNYXNrKHAuY29udGV4dCwgdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBmID0gaS5VdGlsLnRyYW5zZm9ybShjLCBbMSAvIG4sIDAsIDAsIC0xIC8gYSwgMCwgMF0pO1xuICAgICAgICAgIGYgPSBpLlV0aWwudHJhbnNmb3JtKGYsIFsxLCAwLCAwLCAxLCAwLCAtYV0pO1xuICAgICAgICAgIGNvbnN0IGcgPSBpLlV0aWwuYXBwbHlUcmFuc2Zvcm0oWzAsIDBdLCBmKSxcbiAgICAgICAgICAgIG0gPSBpLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW24sIGFdLCBmKSxcbiAgICAgICAgICAgIGIgPSBpLlV0aWwubm9ybWFsaXplUmVjdChbZ1swXSwgZ1sxXSwgbVswXSwgbVsxXV0pLFxuICAgICAgICAgICAgdiA9IE1hdGgucm91bmQoYlsyXSAtIGJbMF0pIHx8IDEsXG4gICAgICAgICAgICB5ID0gTWF0aC5yb3VuZChiWzNdIC0gYlsxXSkgfHwgMSxcbiAgICAgICAgICAgIEEgPSB0aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhcImZpbGxDYW52YXNcIiwgdiwgeSksXG4gICAgICAgICAgICBfID0gQS5jb250ZXh0LFxuICAgICAgICAgICAgUyA9IE1hdGgubWluKGdbMF0sIG1bMF0pLFxuICAgICAgICAgICAgRSA9IE1hdGgubWluKGdbMV0sIG1bMV0pO1xuICAgICAgICAgIF8udHJhbnNsYXRlKC1TLCAtRSk7XG4gICAgICAgICAgXy50cmFuc2Zvcm0oLi4uZik7XG4gICAgICAgICAgaWYgKCF1KSB7XG4gICAgICAgICAgICB1ID0gdGhpcy5fc2NhbGVJbWFnZShwLmNhbnZhcywgKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKF8pKTtcbiAgICAgICAgICAgIHUgPSB1LmltZztcbiAgICAgICAgICAgIGggJiYgbCAmJiBoLnNldChkLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXy5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBnZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkoXyksIHQuaW50ZXJwb2xhdGUpO1xuICAgICAgICAgIGRyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhfLCB1LCAwLCAwLCB1LndpZHRoLCB1LmhlaWdodCwgMCwgMCwgbiwgYSk7XG4gICAgICAgICAgXy5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcInNvdXJjZS1pblwiO1xuICAgICAgICAgIGNvbnN0IHggPSBpLlV0aWwudHJhbnNmb3JtKCgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShfKSwgWzEsIDAsIDAsIDEsIC1TLCAtRV0pO1xuICAgICAgICAgIF8uZmlsbFN0eWxlID0gbCA/IG8uZ2V0UGF0dGVybihlLCB0aGlzLCB4LCBzLlBhdGhUeXBlLkZJTEwpIDogbztcbiAgICAgICAgICBfLmZpbGxSZWN0KDAsIDAsIG4sIGEpO1xuICAgICAgICAgIGlmIChoICYmICFsKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlZENhbnZhc2VzLmRlbGV0ZShcImZpbGxDYW52YXNcIik7XG4gICAgICAgICAgICBoLnNldChkLCBBLmNhbnZhcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYW52YXM6IEEuY2FudmFzLFxuICAgICAgICAgICAgb2Zmc2V0WDogTWF0aC5yb3VuZChTKSxcbiAgICAgICAgICAgIG9mZnNldFk6IE1hdGgucm91bmQoRSlcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHNldExpbmVXaWR0aCh0KSB7XG4gICAgICAgICAgdCAhPT0gdGhpcy5jdXJyZW50LmxpbmVXaWR0aCAmJiAodGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1swXSA9IC0xKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQubGluZVdpZHRoID0gdDtcbiAgICAgICAgICB0aGlzLmN0eC5saW5lV2lkdGggPSB0O1xuICAgICAgICB9XG4gICAgICAgIHNldExpbmVDYXAodCkge1xuICAgICAgICAgIHRoaXMuY3R4LmxpbmVDYXAgPSBjW3RdO1xuICAgICAgICB9XG4gICAgICAgIHNldExpbmVKb2luKHQpIHtcbiAgICAgICAgICB0aGlzLmN0eC5saW5lSm9pbiA9IGhbdF07XG4gICAgICAgIH1cbiAgICAgICAgc2V0TWl0ZXJMaW1pdCh0KSB7XG4gICAgICAgICAgdGhpcy5jdHgubWl0ZXJMaW1pdCA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0RGFzaCh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMuY3R4O1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IG4uc2V0TGluZURhc2gpIHtcbiAgICAgICAgICAgIG4uc2V0TGluZURhc2godCk7XG4gICAgICAgICAgICBuLmxpbmVEYXNoT2Zmc2V0ID0gZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0UmVuZGVyaW5nSW50ZW50KHQpIHt9XG4gICAgICAgIHNldEZsYXRuZXNzKHQpIHt9XG4gICAgICAgIHNldEdTdGF0ZSh0KSB7XG4gICAgICAgICAgZm9yIChjb25zdCBbZSwgbl0gb2YgdCkgc3dpdGNoIChlKSB7XG4gICAgICAgICAgICBjYXNlIFwiTFdcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRMaW5lV2lkdGgobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkxDXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0TGluZUNhcChuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTEpcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRMaW5lSm9pbihuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTUxcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRNaXRlckxpbWl0KG4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJEXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGFzaChuWzBdLCBuWzFdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiUklcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkZMXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0RmxhdG5lc3Mobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkZvbnRcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb250KG5bMF0sIG5bMV0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJDQVwiOlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuc3Ryb2tlQWxwaGEgPSBuO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjYVwiOlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuZmlsbEFscGhhID0gbjtcbiAgICAgICAgICAgICAgdGhpcy5jdHguZ2xvYmFsQWxwaGEgPSBuO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJCTVwiOlxuICAgICAgICAgICAgICB0aGlzLmN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBuO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTTWFza1wiOlxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2sgPSBuID8gdGhpcy50ZW1wU01hc2sgOiBudWxsO1xuICAgICAgICAgICAgICB0aGlzLnRlbXBTTWFzayA9IG51bGw7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tTTWFza1N0YXRlKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlRSXCI6XG4gICAgICAgICAgICAgIHRoaXMuY3R4LmZpbHRlciA9IHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHMgPSB0aGlzLmZpbHRlckZhY3RvcnkuYWRkRmlsdGVyKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgaW5TTWFza01vZGUoKSB7XG4gICAgICAgICAgcmV0dXJuICEhdGhpcy5zdXNwZW5kZWRDdHg7XG4gICAgICAgIH1cbiAgICAgICAgY2hlY2tTTWFza1N0YXRlKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmluU01hc2tNb2RlO1xuICAgICAgICAgIHRoaXMuY3VycmVudC5hY3RpdmVTTWFzayAmJiAhdCA/IHRoaXMuYmVnaW5TTWFza01vZGUoKSA6ICF0aGlzLmN1cnJlbnQuYWN0aXZlU01hc2sgJiYgdCAmJiB0aGlzLmVuZFNNYXNrTW9kZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luU01hc2tNb2RlKCkge1xuICAgICAgICAgIGlmICh0aGlzLmluU01hc2tNb2RlKSB0aHJvdyBuZXcgRXJyb3IoXCJiZWdpblNNYXNrTW9kZSBjYWxsZWQgd2hpbGUgYWxyZWFkeSBpbiBzbWFzayBtb2RlXCIpO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmN0eC5jYW52YXMud2lkdGgsXG4gICAgICAgICAgICBlID0gdGhpcy5jdHguY2FudmFzLmhlaWdodCxcbiAgICAgICAgICAgIG4gPSBcInNtYXNrR3JvdXBBdFwiICsgdGhpcy5ncm91cExldmVsLFxuICAgICAgICAgICAgaSA9IHRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKG4sIHQsIGUpO1xuICAgICAgICAgIHRoaXMuc3VzcGVuZGVkQ3R4ID0gdGhpcy5jdHg7XG4gICAgICAgICAgdGhpcy5jdHggPSBpLmNvbnRleHQ7XG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMuY3R4O1xuICAgICAgICAgIHMuc2V0VHJhbnNmb3JtKC4uLigwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuc3VzcGVuZGVkQ3R4KSk7XG4gICAgICAgICAgY29weUN0eFN0YXRlKHRoaXMuc3VzcGVuZGVkQ3R4LCBzKTtcbiAgICAgICAgICAhZnVuY3Rpb24gbWlycm9yQ29udGV4dE9wZXJhdGlvbnModCwgZSkge1xuICAgICAgICAgICAgaWYgKHQuX3JlbW92ZU1pcnJvcmluZykgdGhyb3cgbmV3IEVycm9yKFwiQ29udGV4dCBpcyBhbHJlYWR5IGZvcndhcmRpbmcgb3BlcmF0aW9ucy5cIik7XG4gICAgICAgICAgICB0Ll9fb3JpZ2luYWxTYXZlID0gdC5zYXZlO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsUmVzdG9yZSA9IHQucmVzdG9yZTtcbiAgICAgICAgICAgIHQuX19vcmlnaW5hbFJvdGF0ZSA9IHQucm90YXRlO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsU2NhbGUgPSB0LnNjYWxlO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsVHJhbnNsYXRlID0gdC50cmFuc2xhdGU7XG4gICAgICAgICAgICB0Ll9fb3JpZ2luYWxUcmFuc2Zvcm0gPSB0LnRyYW5zZm9ybTtcbiAgICAgICAgICAgIHQuX19vcmlnaW5hbFNldFRyYW5zZm9ybSA9IHQuc2V0VHJhbnNmb3JtO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsUmVzZXRUcmFuc2Zvcm0gPSB0LnJlc2V0VHJhbnNmb3JtO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsQ2xpcCA9IHQuY2xpcDtcbiAgICAgICAgICAgIHQuX19vcmlnaW5hbE1vdmVUbyA9IHQubW92ZVRvO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsTGluZVRvID0gdC5saW5lVG87XG4gICAgICAgICAgICB0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvID0gdC5iZXppZXJDdXJ2ZVRvO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsUmVjdCA9IHQucmVjdDtcbiAgICAgICAgICAgIHQuX19vcmlnaW5hbENsb3NlUGF0aCA9IHQuY2xvc2VQYXRoO1xuICAgICAgICAgICAgdC5fX29yaWdpbmFsQmVnaW5QYXRoID0gdC5iZWdpblBhdGg7XG4gICAgICAgICAgICB0Ll9yZW1vdmVNaXJyb3JpbmcgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHQuc2F2ZSA9IHQuX19vcmlnaW5hbFNhdmU7XG4gICAgICAgICAgICAgIHQucmVzdG9yZSA9IHQuX19vcmlnaW5hbFJlc3RvcmU7XG4gICAgICAgICAgICAgIHQucm90YXRlID0gdC5fX29yaWdpbmFsUm90YXRlO1xuICAgICAgICAgICAgICB0LnNjYWxlID0gdC5fX29yaWdpbmFsU2NhbGU7XG4gICAgICAgICAgICAgIHQudHJhbnNsYXRlID0gdC5fX29yaWdpbmFsVHJhbnNsYXRlO1xuICAgICAgICAgICAgICB0LnRyYW5zZm9ybSA9IHQuX19vcmlnaW5hbFRyYW5zZm9ybTtcbiAgICAgICAgICAgICAgdC5zZXRUcmFuc2Zvcm0gPSB0Ll9fb3JpZ2luYWxTZXRUcmFuc2Zvcm07XG4gICAgICAgICAgICAgIHQucmVzZXRUcmFuc2Zvcm0gPSB0Ll9fb3JpZ2luYWxSZXNldFRyYW5zZm9ybTtcbiAgICAgICAgICAgICAgdC5jbGlwID0gdC5fX29yaWdpbmFsQ2xpcDtcbiAgICAgICAgICAgICAgdC5tb3ZlVG8gPSB0Ll9fb3JpZ2luYWxNb3ZlVG87XG4gICAgICAgICAgICAgIHQubGluZVRvID0gdC5fX29yaWdpbmFsTGluZVRvO1xuICAgICAgICAgICAgICB0LmJlemllckN1cnZlVG8gPSB0Ll9fb3JpZ2luYWxCZXppZXJDdXJ2ZVRvO1xuICAgICAgICAgICAgICB0LnJlY3QgPSB0Ll9fb3JpZ2luYWxSZWN0O1xuICAgICAgICAgICAgICB0LmNsb3NlUGF0aCA9IHQuX19vcmlnaW5hbENsb3NlUGF0aDtcbiAgICAgICAgICAgICAgdC5iZWdpblBhdGggPSB0Ll9fb3JpZ2luYWxCZWdpblBhdGg7XG4gICAgICAgICAgICAgIGRlbGV0ZSB0Ll9yZW1vdmVNaXJyb3Jpbmc7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdC5zYXZlID0gZnVuY3Rpb24gY3R4U2F2ZSgpIHtcbiAgICAgICAgICAgICAgZS5zYXZlKCk7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbFNhdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LnJlc3RvcmUgPSBmdW5jdGlvbiBjdHhSZXN0b3JlKCkge1xuICAgICAgICAgICAgICBlLnJlc3RvcmUoKTtcbiAgICAgICAgICAgICAgdGhpcy5fX29yaWdpbmFsUmVzdG9yZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHQudHJhbnNsYXRlID0gZnVuY3Rpb24gY3R4VHJhbnNsYXRlKHQsIG4pIHtcbiAgICAgICAgICAgICAgZS50cmFuc2xhdGUodCwgbik7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbFRyYW5zbGF0ZSh0LCBuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LnNjYWxlID0gZnVuY3Rpb24gY3R4U2NhbGUodCwgbikge1xuICAgICAgICAgICAgICBlLnNjYWxlKHQsIG4pO1xuICAgICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxTY2FsZSh0LCBuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LnRyYW5zZm9ybSA9IGZ1bmN0aW9uIGN0eFRyYW5zZm9ybSh0LCBuLCBpLCByLCBzLCBhKSB7XG4gICAgICAgICAgICAgIGUudHJhbnNmb3JtKHQsIG4sIGksIHIsIHMsIGEpO1xuICAgICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxUcmFuc2Zvcm0odCwgbiwgaSwgciwgcywgYSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdC5zZXRUcmFuc2Zvcm0gPSBmdW5jdGlvbiBjdHhTZXRUcmFuc2Zvcm0odCwgbiwgaSwgciwgcywgYSkge1xuICAgICAgICAgICAgICBlLnNldFRyYW5zZm9ybSh0LCBuLCBpLCByLCBzLCBhKTtcbiAgICAgICAgICAgICAgdGhpcy5fX29yaWdpbmFsU2V0VHJhbnNmb3JtKHQsIG4sIGksIHIsIHMsIGEpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHQucmVzZXRUcmFuc2Zvcm0gPSBmdW5jdGlvbiBjdHhSZXNldFRyYW5zZm9ybSgpIHtcbiAgICAgICAgICAgICAgZS5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxSZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHQucm90YXRlID0gZnVuY3Rpb24gY3R4Um90YXRlKHQpIHtcbiAgICAgICAgICAgICAgZS5yb3RhdGUodCk7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbFJvdGF0ZSh0KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LmNsaXAgPSBmdW5jdGlvbiBjdHhSb3RhdGUodCkge1xuICAgICAgICAgICAgICBlLmNsaXAodCk7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbENsaXAodCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdC5tb3ZlVG8gPSBmdW5jdGlvbiAodCwgbikge1xuICAgICAgICAgICAgICBlLm1vdmVUbyh0LCBuKTtcbiAgICAgICAgICAgICAgdGhpcy5fX29yaWdpbmFsTW92ZVRvKHQsIG4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHQubGluZVRvID0gZnVuY3Rpb24gKHQsIG4pIHtcbiAgICAgICAgICAgICAgZS5saW5lVG8odCwgbik7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbExpbmVUbyh0LCBuKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LmJlemllckN1cnZlVG8gPSBmdW5jdGlvbiAodCwgbiwgaSwgciwgcywgYSkge1xuICAgICAgICAgICAgICBlLmJlemllckN1cnZlVG8odCwgbiwgaSwgciwgcywgYSk7XG4gICAgICAgICAgICAgIHRoaXMuX19vcmlnaW5hbEJlemllckN1cnZlVG8odCwgbiwgaSwgciwgcywgYSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdC5yZWN0ID0gZnVuY3Rpb24gKHQsIG4sIGksIHIpIHtcbiAgICAgICAgICAgICAgZS5yZWN0KHQsIG4sIGksIHIpO1xuICAgICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxSZWN0KHQsIG4sIGksIHIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHQuY2xvc2VQYXRoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBlLmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxDbG9zZVBhdGgoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0LmJlZ2luUGF0aCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgZS5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgICAgdGhpcy5fX29yaWdpbmFsQmVnaW5QYXRoKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0ocywgdGhpcy5zdXNwZW5kZWRDdHgpO1xuICAgICAgICAgIHRoaXMuc2V0R1N0YXRlKFtbXCJCTVwiLCBcInNvdXJjZS1vdmVyXCJdLCBbXCJjYVwiLCAxXSwgW1wiQ0FcIiwgMV1dKTtcbiAgICAgICAgfVxuICAgICAgICBlbmRTTWFza01vZGUoKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmluU01hc2tNb2RlKSB0aHJvdyBuZXcgRXJyb3IoXCJlbmRTTWFza01vZGUgY2FsbGVkIHdoaWxlIG5vdCBpbiBzbWFzayBtb2RlXCIpO1xuICAgICAgICAgIHRoaXMuY3R4Ll9yZW1vdmVNaXJyb3JpbmcoKTtcbiAgICAgICAgICBjb3B5Q3R4U3RhdGUodGhpcy5jdHgsIHRoaXMuc3VzcGVuZGVkQ3R4KTtcbiAgICAgICAgICB0aGlzLmN0eCA9IHRoaXMuc3VzcGVuZGVkQ3R4O1xuICAgICAgICAgIHRoaXMuc3VzcGVuZGVkQ3R4ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb21wb3NlKHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudC5hY3RpdmVTTWFzaykgcmV0dXJuO1xuICAgICAgICAgIGlmICh0KSB7XG4gICAgICAgICAgICB0WzBdID0gTWF0aC5mbG9vcih0WzBdKTtcbiAgICAgICAgICAgIHRbMV0gPSBNYXRoLmZsb29yKHRbMV0pO1xuICAgICAgICAgICAgdFsyXSA9IE1hdGguY2VpbCh0WzJdKTtcbiAgICAgICAgICAgIHRbM10gPSBNYXRoLmNlaWwodFszXSk7XG4gICAgICAgICAgfSBlbHNlIHQgPSBbMCwgMCwgdGhpcy5jdHguY2FudmFzLndpZHRoLCB0aGlzLmN0eC5jYW52YXMuaGVpZ2h0XTtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrO1xuICAgICAgICAgIGNvbXBvc2VTTWFzayh0aGlzLnN1c3BlbmRlZEN0eCwgZSwgdGhpcy5jdHgsIHQpO1xuICAgICAgICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICAgICAgICB0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICAgICAgdGhpcy5jdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuY3R4LmNhbnZhcy53aWR0aCwgdGhpcy5jdHguY2FudmFzLmhlaWdodCk7XG4gICAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgICAgIHNhdmUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaW5TTWFza01vZGUpIHtcbiAgICAgICAgICAgIGNvcHlDdHhTdGF0ZSh0aGlzLmN0eCwgdGhpcy5zdXNwZW5kZWRDdHgpO1xuICAgICAgICAgICAgdGhpcy5zdXNwZW5kZWRDdHguc2F2ZSgpO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLmN0eC5zYXZlKCk7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICB0aGlzLnN0YXRlU3RhY2sucHVzaCh0KTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0LmNsb25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdG9yZSgpIHtcbiAgICAgICAgICAwID09PSB0aGlzLnN0YXRlU3RhY2subGVuZ3RoICYmIHRoaXMuaW5TTWFza01vZGUgJiYgdGhpcy5lbmRTTWFza01vZGUoKTtcbiAgICAgICAgICBpZiAoMCAhPT0gdGhpcy5zdGF0ZVN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5zdGF0ZVN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5TTWFza01vZGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdXNwZW5kZWRDdHgucmVzdG9yZSgpO1xuICAgICAgICAgICAgICBjb3B5Q3R4U3RhdGUodGhpcy5zdXNwZW5kZWRDdHgsIHRoaXMuY3R4KTtcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLmN0eC5yZXN0b3JlKCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrU01hc2tTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzBdID0gLTE7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNmb3JtKHQsIGUsIG4sIGksIHIsIHMpIHtcbiAgICAgICAgICB0aGlzLmN0eC50cmFuc2Zvcm0odCwgZSwgbiwgaSwgciwgcyk7XG4gICAgICAgICAgdGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1swXSA9IC0xO1xuICAgICAgICAgIHRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGggPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0cnVjdFBhdGgodCwgZSwgbikge1xuICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLmN0eCxcbiAgICAgICAgICAgIGEgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgbGV0IG8sXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAgYyA9IGEueCxcbiAgICAgICAgICAgIGggPSBhLnk7XG4gICAgICAgICAgY29uc3QgZCA9ICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHMpLFxuICAgICAgICAgICAgdSA9IDAgPT09IGRbMF0gJiYgMCA9PT0gZFszXSB8fCAwID09PSBkWzFdICYmIDAgPT09IGRbMl0sXG4gICAgICAgICAgICBwID0gdSA/IG4uc2xpY2UoMCkgOiBudWxsO1xuICAgICAgICAgIGZvciAobGV0IG4gPSAwLCByID0gMCwgZiA9IHQubGVuZ3RoOyBuIDwgZjsgbisrKSBzd2l0Y2ggKDAgfCB0W25dKSB7XG4gICAgICAgICAgICBjYXNlIGkuT1BTLnJlY3RhbmdsZTpcbiAgICAgICAgICAgICAgYyA9IGVbcisrXTtcbiAgICAgICAgICAgICAgaCA9IGVbcisrXTtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IGVbcisrXSxcbiAgICAgICAgICAgICAgICBuID0gZVtyKytdLFxuICAgICAgICAgICAgICAgIGYgPSBjICsgdCxcbiAgICAgICAgICAgICAgICBnID0gaCArIG47XG4gICAgICAgICAgICAgIHMubW92ZVRvKGMsIGgpO1xuICAgICAgICAgICAgICBpZiAoMCA9PT0gdCB8fCAwID09PSBuKSBzLmxpbmVUbyhmLCBnKTtlbHNlIHtcbiAgICAgICAgICAgICAgICBzLmxpbmVUbyhmLCBoKTtcbiAgICAgICAgICAgICAgICBzLmxpbmVUbyhmLCBnKTtcbiAgICAgICAgICAgICAgICBzLmxpbmVUbyhjLCBnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB1IHx8IGEudXBkYXRlUmVjdE1pbk1heChkLCBbYywgaCwgZiwgZ10pO1xuICAgICAgICAgICAgICBzLmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaS5PUFMubW92ZVRvOlxuICAgICAgICAgICAgICBjID0gZVtyKytdO1xuICAgICAgICAgICAgICBoID0gZVtyKytdO1xuICAgICAgICAgICAgICBzLm1vdmVUbyhjLCBoKTtcbiAgICAgICAgICAgICAgdSB8fCBhLnVwZGF0ZVBhdGhNaW5NYXgoZCwgYywgaCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpLk9QUy5saW5lVG86XG4gICAgICAgICAgICAgIGMgPSBlW3IrK107XG4gICAgICAgICAgICAgIGggPSBlW3IrK107XG4gICAgICAgICAgICAgIHMubGluZVRvKGMsIGgpO1xuICAgICAgICAgICAgICB1IHx8IGEudXBkYXRlUGF0aE1pbk1heChkLCBjLCBoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGkuT1BTLmN1cnZlVG86XG4gICAgICAgICAgICAgIG8gPSBjO1xuICAgICAgICAgICAgICBsID0gaDtcbiAgICAgICAgICAgICAgYyA9IGVbciArIDRdO1xuICAgICAgICAgICAgICBoID0gZVtyICsgNV07XG4gICAgICAgICAgICAgIHMuYmV6aWVyQ3VydmVUbyhlW3JdLCBlW3IgKyAxXSwgZVtyICsgMl0sIGVbciArIDNdLCBjLCBoKTtcbiAgICAgICAgICAgICAgYS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCwgbywgbCwgZVtyXSwgZVtyICsgMV0sIGVbciArIDJdLCBlW3IgKyAzXSwgYywgaCwgcCk7XG4gICAgICAgICAgICAgIHIgKz0gNjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGkuT1BTLmN1cnZlVG8yOlxuICAgICAgICAgICAgICBvID0gYztcbiAgICAgICAgICAgICAgbCA9IGg7XG4gICAgICAgICAgICAgIHMuYmV6aWVyQ3VydmVUbyhjLCBoLCBlW3JdLCBlW3IgKyAxXSwgZVtyICsgMl0sIGVbciArIDNdKTtcbiAgICAgICAgICAgICAgYS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCwgbywgbCwgYywgaCwgZVtyXSwgZVtyICsgMV0sIGVbciArIDJdLCBlW3IgKyAzXSwgcCk7XG4gICAgICAgICAgICAgIGMgPSBlW3IgKyAyXTtcbiAgICAgICAgICAgICAgaCA9IGVbciArIDNdO1xuICAgICAgICAgICAgICByICs9IDQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpLk9QUy5jdXJ2ZVRvMzpcbiAgICAgICAgICAgICAgbyA9IGM7XG4gICAgICAgICAgICAgIGwgPSBoO1xuICAgICAgICAgICAgICBjID0gZVtyICsgMl07XG4gICAgICAgICAgICAgIGggPSBlW3IgKyAzXTtcbiAgICAgICAgICAgICAgcy5iZXppZXJDdXJ2ZVRvKGVbcl0sIGVbciArIDFdLCBjLCBoLCBjLCBoKTtcbiAgICAgICAgICAgICAgYS51cGRhdGVDdXJ2ZVBhdGhNaW5NYXgoZCwgbywgbCwgZVtyXSwgZVtyICsgMV0sIGMsIGgsIGMsIGgsIHApO1xuICAgICAgICAgICAgICByICs9IDQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpLk9QUy5jbG9zZVBhdGg6XG4gICAgICAgICAgICAgIHMuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHUgJiYgYS51cGRhdGVTY2FsaW5nUGF0aE1pbk1heChkLCBwKTtcbiAgICAgICAgICBhLnNldEN1cnJlbnRQb2ludChjLCBoKTtcbiAgICAgICAgfVxuICAgICAgICBjbG9zZVBhdGgoKSB7XG4gICAgICAgICAgdGhpcy5jdHguY2xvc2VQYXRoKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3Ryb2tlKCkge1xuICAgICAgICAgIGxldCB0ID0gIShhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSkgfHwgYXJndW1lbnRzWzBdO1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmN0eCxcbiAgICAgICAgICAgIG4gPSB0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3I7XG4gICAgICAgICAgZS5nbG9iYWxBbHBoYSA9IHRoaXMuY3VycmVudC5zdHJva2VBbHBoYTtcbiAgICAgICAgICBpZiAodGhpcy5jb250ZW50VmlzaWJsZSkgaWYgKFwib2JqZWN0XCIgPT0gdHlwZW9mIG4gJiYgbiAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgJiYgbi5nZXRQYXR0ZXJuKSB7XG4gICAgICAgICAgICBlLnNhdmUoKTtcbiAgICAgICAgICAgIGUuc3Ryb2tlU3R5bGUgPSBuLmdldFBhdHRlcm4oZSwgdGhpcywgKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpLCBzLlBhdGhUeXBlLlNUUk9LRSk7XG4gICAgICAgICAgICB0aGlzLnJlc2NhbGVBbmRTdHJva2UoITEpO1xuICAgICAgICAgICAgZS5yZXN0b3JlKCk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMucmVzY2FsZUFuZFN0cm9rZSghMCk7XG4gICAgICAgICAgdCAmJiB0aGlzLmNvbnN1bWVQYXRoKHRoaXMuY3VycmVudC5nZXRDbGlwcGVkUGF0aEJvdW5kaW5nQm94KCkpO1xuICAgICAgICAgIGUuZ2xvYmFsQWxwaGEgPSB0aGlzLmN1cnJlbnQuZmlsbEFscGhhO1xuICAgICAgICB9XG4gICAgICAgIGNsb3NlU3Ryb2tlKCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgdGhpcy5zdHJva2UoKTtcbiAgICAgICAgfVxuICAgICAgICBmaWxsKCkge1xuICAgICAgICAgIGxldCB0ID0gIShhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSkgfHwgYXJndW1lbnRzWzBdO1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmN0eCxcbiAgICAgICAgICAgIG4gPSB0aGlzLmN1cnJlbnQuZmlsbENvbG9yO1xuICAgICAgICAgIGxldCBpID0gITE7XG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudC5wYXR0ZXJuRmlsbCkge1xuICAgICAgICAgICAgZS5zYXZlKCk7XG4gICAgICAgICAgICBlLmZpbGxTdHlsZSA9IG4uZ2V0UGF0dGVybihlLCB0aGlzLCAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkoZSksIHMuUGF0aFR5cGUuRklMTCk7XG4gICAgICAgICAgICBpID0gITA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpO1xuICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRWaXNpYmxlICYmIG51bGwgIT09IGEpIGlmICh0aGlzLnBlbmRpbmdFT0ZpbGwpIHtcbiAgICAgICAgICAgIGUuZmlsbChcImV2ZW5vZGRcIik7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdFT0ZpbGwgPSAhMTtcbiAgICAgICAgICB9IGVsc2UgZS5maWxsKCk7XG4gICAgICAgICAgaSAmJiBlLnJlc3RvcmUoKTtcbiAgICAgICAgICB0ICYmIHRoaXMuY29uc3VtZVBhdGgoYSk7XG4gICAgICAgIH1cbiAgICAgICAgZW9GaWxsKCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0VPRmlsbCA9ICEwO1xuICAgICAgICAgIHRoaXMuZmlsbCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbGxTdHJva2UoKSB7XG4gICAgICAgICAgdGhpcy5maWxsKCExKTtcbiAgICAgICAgICB0aGlzLnN0cm9rZSghMSk7XG4gICAgICAgICAgdGhpcy5jb25zdW1lUGF0aCgpO1xuICAgICAgICB9XG4gICAgICAgIGVvRmlsbFN0cm9rZSgpIHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdFT0ZpbGwgPSAhMDtcbiAgICAgICAgICB0aGlzLmZpbGxTdHJva2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjbG9zZUZpbGxTdHJva2UoKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBhdGgoKTtcbiAgICAgICAgICB0aGlzLmZpbGxTdHJva2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjbG9zZUVPRmlsbFN0cm9rZSgpIHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdFT0ZpbGwgPSAhMDtcbiAgICAgICAgICB0aGlzLmNsb3NlUGF0aCgpO1xuICAgICAgICAgIHRoaXMuZmlsbFN0cm9rZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVuZFBhdGgoKSB7XG4gICAgICAgICAgdGhpcy5jb25zdW1lUGF0aCgpO1xuICAgICAgICB9XG4gICAgICAgIGNsaXAoKSB7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCA9IGQ7XG4gICAgICAgIH1cbiAgICAgICAgZW9DbGlwKCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0NsaXAgPSB1O1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luVGV4dCgpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQudGV4dE1hdHJpeCA9IGkuSURFTlRJVFlfTUFUUklYO1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGUgPSAxO1xuICAgICAgICAgIHRoaXMuY3VycmVudC54ID0gdGhpcy5jdXJyZW50LmxpbmVYID0gMDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQueSA9IHRoaXMuY3VycmVudC5saW5lWSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZW5kVGV4dCgpIHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5wZW5kaW5nVGV4dFBhdGhzLFxuICAgICAgICAgICAgZSA9IHRoaXMuY3R4O1xuICAgICAgICAgIGlmICh2b2lkIDAgIT09IHQpIHtcbiAgICAgICAgICAgIGUuc2F2ZSgpO1xuICAgICAgICAgICAgZS5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0KSB7XG4gICAgICAgICAgICAgIGUuc2V0VHJhbnNmb3JtKC4uLm4udHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgZS50cmFuc2xhdGUobi54LCBuLnkpO1xuICAgICAgICAgICAgICBuLmFkZFRvUGF0aChlLCBuLmZvbnRTaXplKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGUucmVzdG9yZSgpO1xuICAgICAgICAgICAgZS5jbGlwKCk7XG4gICAgICAgICAgICBlLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMucGVuZGluZ1RleHRQYXRocztcbiAgICAgICAgICB9IGVsc2UgZS5iZWdpblBhdGgoKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRDaGFyU3BhY2luZyh0KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmNoYXJTcGFjaW5nID0gdDtcbiAgICAgICAgfVxuICAgICAgICBzZXRXb3JkU3BhY2luZyh0KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LndvcmRTcGFjaW5nID0gdDtcbiAgICAgICAgfVxuICAgICAgICBzZXRIU2NhbGUodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0SFNjYWxlID0gdCAvIDEwMDtcbiAgICAgICAgfVxuICAgICAgICBzZXRMZWFkaW5nKHQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQubGVhZGluZyA9IC10O1xuICAgICAgICB9XG4gICAgICAgIHNldEZvbnQodCwgZSkge1xuICAgICAgICAgIHZhciBfbiRzeXN0ZW1Gb250SW5mbztcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5jb21tb25PYmpzLmdldCh0KSxcbiAgICAgICAgICAgIHIgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgaWYgKCFuKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBmaW5kIGZvbnQgZm9yIFwiLmNvbmNhdCh0KSk7XG4gICAgICAgICAgci5mb250TWF0cml4ID0gbi5mb250TWF0cml4IHx8IGkuRk9OVF9JREVOVElUWV9NQVRSSVg7XG4gICAgICAgICAgMCAhPT0gci5mb250TWF0cml4WzBdICYmIDAgIT09IHIuZm9udE1hdHJpeFszXSB8fCAoMCwgaS53YXJuKShcIkludmFsaWQgZm9udCBtYXRyaXggZm9yIGZvbnQgXCIgKyB0KTtcbiAgICAgICAgICBpZiAoZSA8IDApIHtcbiAgICAgICAgICAgIGUgPSAtZTtcbiAgICAgICAgICAgIHIuZm9udERpcmVjdGlvbiA9IC0xO1xuICAgICAgICAgIH0gZWxzZSByLmZvbnREaXJlY3Rpb24gPSAxO1xuICAgICAgICAgIHRoaXMuY3VycmVudC5mb250ID0gbjtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQuZm9udFNpemUgPSBlO1xuICAgICAgICAgIGlmIChuLmlzVHlwZTNGb250KSByZXR1cm47XG4gICAgICAgICAgY29uc3QgcyA9IG4ubG9hZGVkTmFtZSB8fCBcInNhbnMtc2VyaWZcIixcbiAgICAgICAgICAgIGEgPSAoKF9uJHN5c3RlbUZvbnRJbmZvID0gbi5zeXN0ZW1Gb250SW5mbykgPT09IG51bGwgfHwgX24kc3lzdGVtRm9udEluZm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9uJHN5c3RlbUZvbnRJbmZvLmNzcykgfHwgXCJcXFwiXCIuY29uY2F0KHMsIFwiXFxcIiwgXCIpLmNvbmNhdChuLmZhbGxiYWNrTmFtZSk7XG4gICAgICAgICAgbGV0IG8gPSBcIm5vcm1hbFwiO1xuICAgICAgICAgIG4uYmxhY2sgPyBvID0gXCI5MDBcIiA6IG4uYm9sZCAmJiAobyA9IFwiYm9sZFwiKTtcbiAgICAgICAgICBjb25zdCBsID0gbi5pdGFsaWMgPyBcIml0YWxpY1wiIDogXCJub3JtYWxcIjtcbiAgICAgICAgICBsZXQgYyA9IGU7XG4gICAgICAgICAgZSA8IDE2ID8gYyA9IDE2IDogZSA+IDEwMCAmJiAoYyA9IDEwMCk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmZvbnRTaXplU2NhbGUgPSBlIC8gYztcbiAgICAgICAgICB0aGlzLmN0eC5mb250ID0gXCJcIi5jb25jYXQobCwgXCIgXCIpLmNvbmNhdChvLCBcIiBcIikuY29uY2F0KGMsIFwicHggXCIpLmNvbmNhdChhKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRUZXh0UmVuZGVyaW5nTW9kZSh0KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LnRleHRSZW5kZXJpbmdNb2RlID0gdDtcbiAgICAgICAgfVxuICAgICAgICBzZXRUZXh0UmlzZSh0KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LnRleHRSaXNlID0gdDtcbiAgICAgICAgfVxuICAgICAgICBtb3ZlVGV4dCh0LCBlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LnggPSB0aGlzLmN1cnJlbnQubGluZVggKz0gdDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQueSA9IHRoaXMuY3VycmVudC5saW5lWSArPSBlO1xuICAgICAgICB9XG4gICAgICAgIHNldExlYWRpbmdNb3ZlVGV4dCh0LCBlKSB7XG4gICAgICAgICAgdGhpcy5zZXRMZWFkaW5nKC1lKTtcbiAgICAgICAgICB0aGlzLm1vdmVUZXh0KHQsIGUpO1xuICAgICAgICB9XG4gICAgICAgIHNldFRleHRNYXRyaXgodCwgZSwgbiwgaSwgciwgcykge1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0TWF0cml4ID0gW3QsIGUsIG4sIGksIHIsIHNdO1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0TWF0cml4U2NhbGUgPSBNYXRoLmh5cG90KHQsIGUpO1xuICAgICAgICAgIHRoaXMuY3VycmVudC54ID0gdGhpcy5jdXJyZW50LmxpbmVYID0gMDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQueSA9IHRoaXMuY3VycmVudC5saW5lWSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dExpbmUoKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlVGV4dCgwLCB0aGlzLmN1cnJlbnQubGVhZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgcGFpbnRDaGFyKHQsIGUsIG4sIHMpIHtcbiAgICAgICAgICBjb25zdCBhID0gdGhpcy5jdHgsXG4gICAgICAgICAgICBvID0gdGhpcy5jdXJyZW50LFxuICAgICAgICAgICAgbCA9IG8uZm9udCxcbiAgICAgICAgICAgIGMgPSBvLnRleHRSZW5kZXJpbmdNb2RlLFxuICAgICAgICAgICAgaCA9IG8uZm9udFNpemUgLyBvLmZvbnRTaXplU2NhbGUsXG4gICAgICAgICAgICBkID0gYyAmIGkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSyxcbiAgICAgICAgICAgIHUgPSAhIShjICYgaS5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHKSxcbiAgICAgICAgICAgIHAgPSBvLnBhdHRlcm5GaWxsICYmICFsLm1pc3NpbmdGaWxlO1xuICAgICAgICAgIGxldCBmO1xuICAgICAgICAgIChsLmRpc2FibGVGb250RmFjZSB8fCB1IHx8IHApICYmIChmID0gbC5nZXRQYXRoR2VuZXJhdG9yKHRoaXMuY29tbW9uT2JqcywgdCkpO1xuICAgICAgICAgIGlmIChsLmRpc2FibGVGb250RmFjZSB8fCBwKSB7XG4gICAgICAgICAgICBhLnNhdmUoKTtcbiAgICAgICAgICAgIGEudHJhbnNsYXRlKGUsIG4pO1xuICAgICAgICAgICAgYS5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGYoYSwgaCk7XG4gICAgICAgICAgICBzICYmIGEuc2V0VHJhbnNmb3JtKC4uLnMpO1xuICAgICAgICAgICAgZCAhPT0gaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMICYmIGQgIT09IGkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UgfHwgYS5maWxsKCk7XG4gICAgICAgICAgICBkICE9PSBpLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSAmJiBkICE9PSBpLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFIHx8IGEuc3Ryb2tlKCk7XG4gICAgICAgICAgICBhLnJlc3RvcmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZCAhPT0gaS5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMICYmIGQgIT09IGkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UgfHwgYS5maWxsVGV4dCh0LCBlLCBuKTtcbiAgICAgICAgICAgIGQgIT09IGkuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFICYmIGQgIT09IGkuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UgfHwgYS5zdHJva2VUZXh0KHQsIGUsIG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodSkge1xuICAgICAgICAgICAgKHRoaXMucGVuZGluZ1RleHRQYXRocyB8fCAodGhpcy5wZW5kaW5nVGV4dFBhdGhzID0gW10pKS5wdXNoKHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKShhKSxcbiAgICAgICAgICAgICAgeDogZSxcbiAgICAgICAgICAgICAgeTogbixcbiAgICAgICAgICAgICAgZm9udFNpemU6IGgsXG4gICAgICAgICAgICAgIGFkZFRvUGF0aDogZlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldCBpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCgpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb250ZXh0OiB0XG4gICAgICAgICAgfSA9IHRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKFwiaXNGb250U3VicGl4ZWxBQUVuYWJsZWRcIiwgMTAsIDEwKTtcbiAgICAgICAgICB0LnNjYWxlKDEuNSwgMSk7XG4gICAgICAgICAgdC5maWxsVGV4dChcIklcIiwgMCwgMTApO1xuICAgICAgICAgIGNvbnN0IGUgPSB0LmdldEltYWdlRGF0YSgwLCAwLCAxMCwgMTApLmRhdGE7XG4gICAgICAgICAgbGV0IG4gPSAhMTtcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMzsgdCA8IGUubGVuZ3RoOyB0ICs9IDQpIGlmIChlW3RdID4gMCAmJiBlW3RdIDwgMjU1KSB7XG4gICAgICAgICAgICBuID0gITA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICgwLCBpLnNoYWRvdykodGhpcywgXCJpc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZFwiLCBuKTtcbiAgICAgICAgfVxuICAgICAgICBzaG93VGV4dCh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuY3VycmVudCxcbiAgICAgICAgICAgIG4gPSBlLmZvbnQ7XG4gICAgICAgICAgaWYgKG4uaXNUeXBlM0ZvbnQpIHJldHVybiB0aGlzLnNob3dUeXBlM1RleHQodCk7XG4gICAgICAgICAgY29uc3QgYSA9IGUuZm9udFNpemU7XG4gICAgICAgICAgaWYgKDAgPT09IGEpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBvID0gdGhpcy5jdHgsXG4gICAgICAgICAgICBsID0gZS5mb250U2l6ZVNjYWxlLFxuICAgICAgICAgICAgYyA9IGUuY2hhclNwYWNpbmcsXG4gICAgICAgICAgICBoID0gZS53b3JkU3BhY2luZyxcbiAgICAgICAgICAgIGQgPSBlLmZvbnREaXJlY3Rpb24sXG4gICAgICAgICAgICB1ID0gZS50ZXh0SFNjYWxlICogZCxcbiAgICAgICAgICAgIHAgPSB0Lmxlbmd0aCxcbiAgICAgICAgICAgIGYgPSBuLnZlcnRpY2FsLFxuICAgICAgICAgICAgZyA9IGYgPyAxIDogLTEsXG4gICAgICAgICAgICBtID0gbi5kZWZhdWx0Vk1ldHJpY3MsXG4gICAgICAgICAgICBiID0gYSAqIGUuZm9udE1hdHJpeFswXSxcbiAgICAgICAgICAgIHYgPSBlLnRleHRSZW5kZXJpbmdNb2RlID09PSBpLlRleHRSZW5kZXJpbmdNb2RlLkZJTEwgJiYgIW4uZGlzYWJsZUZvbnRGYWNlICYmICFlLnBhdHRlcm5GaWxsO1xuICAgICAgICAgIG8uc2F2ZSgpO1xuICAgICAgICAgIG8udHJhbnNmb3JtKC4uLmUudGV4dE1hdHJpeCk7XG4gICAgICAgICAgby50cmFuc2xhdGUoZS54LCBlLnkgKyBlLnRleHRSaXNlKTtcbiAgICAgICAgICBkID4gMCA/IG8uc2NhbGUodSwgLTEpIDogby5zY2FsZSh1LCAxKTtcbiAgICAgICAgICBsZXQgeTtcbiAgICAgICAgICBpZiAoZS5wYXR0ZXJuRmlsbCkge1xuICAgICAgICAgICAgby5zYXZlKCk7XG4gICAgICAgICAgICBjb25zdCB0ID0gZS5maWxsQ29sb3IuZ2V0UGF0dGVybihvLCB0aGlzLCAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtSW52ZXJzZSkobyksIHMuUGF0aFR5cGUuRklMTCk7XG4gICAgICAgICAgICB5ID0gKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkobyk7XG4gICAgICAgICAgICBvLnJlc3RvcmUoKTtcbiAgICAgICAgICAgIG8uZmlsbFN0eWxlID0gdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IEEgPSBlLmxpbmVXaWR0aDtcbiAgICAgICAgICBjb25zdCBfID0gZS50ZXh0TWF0cml4U2NhbGU7XG4gICAgICAgICAgaWYgKDAgPT09IF8gfHwgMCA9PT0gQSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IGUudGV4dFJlbmRlcmluZ01vZGUgJiBpLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFX01BU0s7XG4gICAgICAgICAgICB0ICE9PSBpLlRleHRSZW5kZXJpbmdNb2RlLlNUUk9LRSAmJiB0ICE9PSBpLlRleHRSZW5kZXJpbmdNb2RlLkZJTExfU1RST0tFIHx8IChBID0gdGhpcy5nZXRTaW5nbGVQaXhlbFdpZHRoKCkpO1xuICAgICAgICAgIH0gZWxzZSBBIC89IF87XG4gICAgICAgICAgaWYgKDEgIT09IGwpIHtcbiAgICAgICAgICAgIG8uc2NhbGUobCwgbCk7XG4gICAgICAgICAgICBBIC89IGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIG8ubGluZVdpZHRoID0gQTtcbiAgICAgICAgICBpZiAobi5pc0ludmFsaWRQREZqc0ZvbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBbXTtcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0KSB7XG4gICAgICAgICAgICAgIG4ucHVzaChlLnVuaWNvZGUpO1xuICAgICAgICAgICAgICBpICs9IGUud2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvLmZpbGxUZXh0KG4uam9pbihcIlwiKSwgMCwgMCk7XG4gICAgICAgICAgICBlLnggKz0gaSAqIGIgKiB1O1xuICAgICAgICAgICAgby5yZXN0b3JlKCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IFMsXG4gICAgICAgICAgICBFID0gMDtcbiAgICAgICAgICBmb3IgKFMgPSAwOyBTIDwgcDsgKytTKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdFtTXTtcbiAgICAgICAgICAgIGlmIChcIm51bWJlclwiID09IHR5cGVvZiBlKSB7XG4gICAgICAgICAgICAgIEUgKz0gZyAqIGUgKiBhIC8gMWUzO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBpID0gITE7XG4gICAgICAgICAgICBjb25zdCByID0gKGUuaXNTcGFjZSA/IGggOiAwKSArIGMsXG4gICAgICAgICAgICAgIHMgPSBlLmZvbnRDaGFyLFxuICAgICAgICAgICAgICB1ID0gZS5hY2NlbnQ7XG4gICAgICAgICAgICBsZXQgcCxcbiAgICAgICAgICAgICAgQSxcbiAgICAgICAgICAgICAgXyA9IGUud2lkdGg7XG4gICAgICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gZS52bWV0cmljIHx8IG0sXG4gICAgICAgICAgICAgICAgbiA9IC0oZS52bWV0cmljID8gdFsxXSA6IC41ICogXykgKiBiLFxuICAgICAgICAgICAgICAgIGkgPSB0WzJdICogYjtcbiAgICAgICAgICAgICAgXyA9IHQgPyAtdFswXSA6IF87XG4gICAgICAgICAgICAgIHAgPSBuIC8gbDtcbiAgICAgICAgICAgICAgQSA9IChFICsgaSkgLyBsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcCA9IEUgLyBsO1xuICAgICAgICAgICAgICBBID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuLnJlbWVhc3VyZSAmJiBfID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gMWUzICogby5tZWFzdXJlVGV4dChzKS53aWR0aCAvIGEgKiBsO1xuICAgICAgICAgICAgICBpZiAoXyA8IHQgJiYgdGhpcy5pc0ZvbnRTdWJwaXhlbEFBRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBfIC8gdDtcbiAgICAgICAgICAgICAgICBpID0gITA7XG4gICAgICAgICAgICAgICAgby5zYXZlKCk7XG4gICAgICAgICAgICAgICAgby5zY2FsZShlLCAxKTtcbiAgICAgICAgICAgICAgICBwIC89IGU7XG4gICAgICAgICAgICAgIH0gZWxzZSBfICE9PSB0ICYmIChwICs9IChfIC0gdCkgLyAyZTMgKiBhIC8gbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jb250ZW50VmlzaWJsZSAmJiAoZS5pc0luRm9udCB8fCBuLm1pc3NpbmdGaWxlKSkgaWYgKHYgJiYgIXUpIG8uZmlsbFRleHQocywgcCwgQSk7ZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucGFpbnRDaGFyKHMsIHAsIEEsIHkpO1xuICAgICAgICAgICAgICBpZiAodSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBwICsgYSAqIHUub2Zmc2V0LnggLyBsLFxuICAgICAgICAgICAgICAgICAgZSA9IEEgLSBhICogdS5vZmZzZXQueSAvIGw7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWludENoYXIodS5mb250Q2hhciwgdCwgZSwgeSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgKz0gZiA/IF8gKiBiIC0gciAqIGQgOiBfICogYiArIHIgKiBkO1xuICAgICAgICAgICAgaSAmJiBvLnJlc3RvcmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZiA/IGUueSAtPSBFIDogZS54ICs9IEUgKiB1O1xuICAgICAgICAgIG8ucmVzdG9yZSgpO1xuICAgICAgICAgIHRoaXMuY29tcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHNob3dUeXBlM1RleHQodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmN0eCxcbiAgICAgICAgICAgIG4gPSB0aGlzLmN1cnJlbnQsXG4gICAgICAgICAgICByID0gbi5mb250LFxuICAgICAgICAgICAgcyA9IG4uZm9udFNpemUsXG4gICAgICAgICAgICBhID0gbi5mb250RGlyZWN0aW9uLFxuICAgICAgICAgICAgbyA9IHIudmVydGljYWwgPyAxIDogLTEsXG4gICAgICAgICAgICBsID0gbi5jaGFyU3BhY2luZyxcbiAgICAgICAgICAgIGMgPSBuLndvcmRTcGFjaW5nLFxuICAgICAgICAgICAgaCA9IG4udGV4dEhTY2FsZSAqIGEsXG4gICAgICAgICAgICBkID0gbi5mb250TWF0cml4IHx8IGkuRk9OVF9JREVOVElUWV9NQVRSSVgsXG4gICAgICAgICAgICB1ID0gdC5sZW5ndGg7XG4gICAgICAgICAgbGV0IHAsIGYsIGcsIG07XG4gICAgICAgICAgaWYgKCEobi50ZXh0UmVuZGVyaW5nTW9kZSA9PT0gaS5UZXh0UmVuZGVyaW5nTW9kZS5JTlZJU0lCTEUpICYmIDAgIT09IHMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmdbMF0gPSAtMTtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGggPSBudWxsO1xuICAgICAgICAgICAgZS5zYXZlKCk7XG4gICAgICAgICAgICBlLnRyYW5zZm9ybSguLi5uLnRleHRNYXRyaXgpO1xuICAgICAgICAgICAgZS50cmFuc2xhdGUobi54LCBuLnkpO1xuICAgICAgICAgICAgZS5zY2FsZShoLCBhKTtcbiAgICAgICAgICAgIGZvciAocCA9IDA7IHAgPCB1OyArK3ApIHtcbiAgICAgICAgICAgICAgZiA9IHRbcF07XG4gICAgICAgICAgICAgIGlmIChcIm51bWJlclwiID09IHR5cGVvZiBmKSB7XG4gICAgICAgICAgICAgICAgbSA9IG8gKiBmICogcyAvIDFlMztcbiAgICAgICAgICAgICAgICB0aGlzLmN0eC50cmFuc2xhdGUobSwgMCk7XG4gICAgICAgICAgICAgICAgbi54ICs9IG0gKiBoO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGEgPSAoZi5pc1NwYWNlID8gYyA6IDApICsgbCxcbiAgICAgICAgICAgICAgICB1ID0gci5jaGFyUHJvY09wZXJhdG9yTGlzdFtmLm9wZXJhdG9yTGlzdElkXTtcbiAgICAgICAgICAgICAgaWYgKCF1KSB7XG4gICAgICAgICAgICAgICAgKDAsIGkud2FybikoXCJUeXBlMyBjaGFyYWN0ZXIgXFxcIlwiLmNvbmNhdChmLm9wZXJhdG9yTGlzdElkLCBcIlxcXCIgaXMgbm90IGF2YWlsYWJsZS5cIikpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzaW5nVHlwZTMgPSBmO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgICAgICAgIGUuc2NhbGUocywgcyk7XG4gICAgICAgICAgICAgICAgZS50cmFuc2Zvcm0oLi4uZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlT3BlcmF0b3JMaXN0KHUpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGcgPSBpLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW2Yud2lkdGgsIDBdLCBkKVswXSAqIHMgKyBhO1xuICAgICAgICAgICAgICBlLnRyYW5zbGF0ZShnLCAwKTtcbiAgICAgICAgICAgICAgbi54ICs9IGcgKiBoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZS5yZXN0b3JlKCk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NpbmdUeXBlMyA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldENoYXJXaWR0aCh0LCBlKSB7fVxuICAgICAgICBzZXRDaGFyV2lkdGhBbmRCb3VuZHModCwgZSwgbiwgaSwgciwgcykge1xuICAgICAgICAgIHRoaXMuY3R4LnJlY3QobiwgaSwgciAtIG4sIHMgLSBpKTtcbiAgICAgICAgICB0aGlzLmN0eC5jbGlwKCk7XG4gICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0Q29sb3JOX1BhdHRlcm4odCkge1xuICAgICAgICAgIGxldCBlO1xuICAgICAgICAgIGlmIChcIlRpbGluZ1BhdHRlcm5cIiA9PT0gdFswXSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IHRbMV0sXG4gICAgICAgICAgICAgIGkgPSB0aGlzLmJhc2VUcmFuc2Zvcm0gfHwgKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodGhpcy5jdHgpLFxuICAgICAgICAgICAgICBhID0ge1xuICAgICAgICAgICAgICAgIGNyZWF0ZUNhbnZhc0dyYXBoaWNzOiB0ID0+IG5ldyBDYW52YXNHcmFwaGljcyh0LCB0aGlzLmNvbW1vbk9ianMsIHRoaXMub2JqcywgdGhpcy5jYW52YXNGYWN0b3J5LCB0aGlzLmZpbHRlckZhY3RvcnksIHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbmFsQ29udGVudENvbmZpZzogdGhpcy5vcHRpb25hbENvbnRlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICBtYXJrZWRDb250ZW50U3RhY2s6IHRoaXMubWFya2VkQ29udGVudFN0YWNrXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGUgPSBuZXcgcy5UaWxpbmdQYXR0ZXJuKHQsIG4sIHRoaXMuY3R4LCBhLCBpKTtcbiAgICAgICAgICB9IGVsc2UgZSA9IHRoaXMuX2dldFBhdHRlcm4odFsxXSwgdFsyXSk7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3Ryb2tlQ29sb3JOKCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5zdHJva2VDb2xvciA9IHRoaXMuZ2V0Q29sb3JOX1BhdHRlcm4oYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRGaWxsQ29sb3JOKCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5maWxsQ29sb3IgPSB0aGlzLmdldENvbG9yTl9QYXR0ZXJuKGFyZ3VtZW50cyk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LnBhdHRlcm5GaWxsID0gITA7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3Ryb2tlUkdCQ29sb3IodCwgZSwgbikge1xuICAgICAgICAgIGNvbnN0IHIgPSBpLlV0aWwubWFrZUhleENvbG9yKHQsIGUsIG4pO1xuICAgICAgICAgIHRoaXMuY3R4LnN0cm9rZVN0eWxlID0gcjtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQuc3Ryb2tlQ29sb3IgPSByO1xuICAgICAgICB9XG4gICAgICAgIHNldEZpbGxSR0JDb2xvcih0LCBlLCBuKSB7XG4gICAgICAgICAgY29uc3QgciA9IGkuVXRpbC5tYWtlSGV4Q29sb3IodCwgZSwgbik7XG4gICAgICAgICAgdGhpcy5jdHguZmlsbFN0eWxlID0gcjtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQuZmlsbENvbG9yID0gcjtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQucGF0dGVybkZpbGwgPSAhMTtcbiAgICAgICAgfVxuICAgICAgICBfZ2V0UGF0dGVybih0KSB7XG4gICAgICAgICAgbGV0IGUsXG4gICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLmNhY2hlZFBhdHRlcm5zLmhhcyh0KSkgZSA9IHRoaXMuY2FjaGVkUGF0dGVybnMuZ2V0KHQpO2Vsc2Uge1xuICAgICAgICAgICAgZSA9ICgwLCBzLmdldFNoYWRpbmdQYXR0ZXJuKSh0aGlzLmdldE9iamVjdCh0KSk7XG4gICAgICAgICAgICB0aGlzLmNhY2hlZFBhdHRlcm5zLnNldCh0LCBlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbiAmJiAoZS5tYXRyaXggPSBuKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfVxuICAgICAgICBzaGFkaW5nRmlsbCh0KSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRWaXNpYmxlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuY3R4O1xuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9nZXRQYXR0ZXJuKHQpO1xuICAgICAgICAgIGUuZmlsbFN0eWxlID0gbi5nZXRQYXR0ZXJuKGUsIHRoaXMsICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSwgcy5QYXRoVHlwZS5TSEFESU5HKTtcbiAgICAgICAgICBjb25zdCBhID0gKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybUludmVyc2UpKGUpO1xuICAgICAgICAgIGlmIChhKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBuXG4gICAgICAgICAgICAgIH0gPSBlLmNhbnZhcyxcbiAgICAgICAgICAgICAgW3IsIHMsIG8sIGxdID0gaS5VdGlsLmdldEF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KFswLCAwLCB0LCBuXSwgYSk7XG4gICAgICAgICAgICB0aGlzLmN0eC5maWxsUmVjdChyLCBzLCBvIC0gciwgbCAtIHMpO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLmN0eC5maWxsUmVjdCgtMWUxMCwgLTFlMTAsIDJlMTAsIDJlMTApO1xuICAgICAgICAgIHRoaXMuY29tcG9zZSh0aGlzLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveCgpKTtcbiAgICAgICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgICBiZWdpbklubGluZUltYWdlKCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIlNob3VsZCBub3QgY2FsbCBiZWdpbklubGluZUltYWdlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luSW1hZ2VEYXRhKCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIlNob3VsZCBub3QgY2FsbCBiZWdpbkltYWdlRGF0YVwiKTtcbiAgICAgICAgfVxuICAgICAgICBwYWludEZvcm1YT2JqZWN0QmVnaW4odCwgZSkge1xuICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgICAgIHRoaXMuYmFzZVRyYW5zZm9ybVN0YWNrLnB1c2godGhpcy5iYXNlVHJhbnNmb3JtKTtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodCkgJiYgNiA9PT0gdC5sZW5ndGggJiYgdGhpcy50cmFuc2Zvcm0oLi4udCk7XG4gICAgICAgICAgICB0aGlzLmJhc2VUcmFuc2Zvcm0gPSAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCk7XG4gICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gZVsyXSAtIGVbMF0sXG4gICAgICAgICAgICAgICAgbiA9IGVbM10gLSBlWzFdO1xuICAgICAgICAgICAgICB0aGlzLmN0eC5yZWN0KGVbMF0sIGVbMV0sIHQsIG4pO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQudXBkYXRlUmVjdE1pbk1heCgoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0aGlzLmN0eCksIGUpO1xuICAgICAgICAgICAgICB0aGlzLmNsaXAoKTtcbiAgICAgICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhaW50Rm9ybVhPYmplY3RFbmQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29udGVudFZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZSgpO1xuICAgICAgICAgICAgdGhpcy5iYXNlVHJhbnNmb3JtID0gdGhpcy5iYXNlVHJhbnNmb3JtU3RhY2sucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJlZ2luR3JvdXAodCkge1xuICAgICAgICAgIGlmICghdGhpcy5jb250ZW50VmlzaWJsZSkgcmV0dXJuO1xuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgIGlmICh0aGlzLmluU01hc2tNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmVuZFNNYXNrTW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmFjdGl2ZVNNYXNrID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuY3R4O1xuICAgICAgICAgIHQuaXNvbGF0ZWQgfHwgKDAsIGkuaW5mbykoXCJUT0RPOiBTdXBwb3J0IG5vbi1pc29sYXRlZCBncm91cHMuXCIpO1xuICAgICAgICAgIHQua25vY2tvdXQgJiYgKDAsIGkud2FybikoXCJLbm9ja291dCBncm91cHMgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgICAgICAgY29uc3QgbiA9ICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpO1xuICAgICAgICAgIHQubWF0cml4ICYmIGUudHJhbnNmb3JtKC4uLnQubWF0cml4KTtcbiAgICAgICAgICBpZiAoIXQuYmJveCkgdGhyb3cgbmV3IEVycm9yKFwiQm91bmRpbmcgYm94IGlzIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgICBsZXQgcyA9IGkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LmJib3gsICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKGUpKTtcbiAgICAgICAgICBjb25zdCBhID0gWzAsIDAsIGUuY2FudmFzLndpZHRoLCBlLmNhbnZhcy5oZWlnaHRdO1xuICAgICAgICAgIHMgPSBpLlV0aWwuaW50ZXJzZWN0KHMsIGEpIHx8IFswLCAwLCAwLCAwXTtcbiAgICAgICAgICBjb25zdCBsID0gTWF0aC5mbG9vcihzWzBdKSxcbiAgICAgICAgICAgIGMgPSBNYXRoLmZsb29yKHNbMV0pO1xuICAgICAgICAgIGxldCBoID0gTWF0aC5tYXgoTWF0aC5jZWlsKHNbMl0pIC0gbCwgMSksXG4gICAgICAgICAgICBkID0gTWF0aC5tYXgoTWF0aC5jZWlsKHNbM10pIC0gYywgMSksXG4gICAgICAgICAgICB1ID0gMSxcbiAgICAgICAgICAgIHAgPSAxO1xuICAgICAgICAgIGlmIChoID4gbykge1xuICAgICAgICAgICAgdSA9IGggLyBvO1xuICAgICAgICAgICAgaCA9IG87XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkID4gbykge1xuICAgICAgICAgICAgcCA9IGQgLyBvO1xuICAgICAgICAgICAgZCA9IG87XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY3VycmVudC5zdGFydE5ld1BhdGhBbmRDbGlwQm94KFswLCAwLCBoLCBkXSk7XG4gICAgICAgICAgbGV0IGYgPSBcImdyb3VwQXRcIiArIHRoaXMuZ3JvdXBMZXZlbDtcbiAgICAgICAgICB0LnNtYXNrICYmIChmICs9IFwiX3NtYXNrX1wiICsgdGhpcy5zbWFza0NvdW50ZXIrKyAlIDIpO1xuICAgICAgICAgIGNvbnN0IGcgPSB0aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhmLCBoLCBkKSxcbiAgICAgICAgICAgIG0gPSBnLmNvbnRleHQ7XG4gICAgICAgICAgbS5zY2FsZSgxIC8gdSwgMSAvIHApO1xuICAgICAgICAgIG0udHJhbnNsYXRlKC1sLCAtYyk7XG4gICAgICAgICAgbS50cmFuc2Zvcm0oLi4ubik7XG4gICAgICAgICAgaWYgKHQuc21hc2spIHRoaXMuc21hc2tTdGFjay5wdXNoKHtcbiAgICAgICAgICAgIGNhbnZhczogZy5jYW52YXMsXG4gICAgICAgICAgICBjb250ZXh0OiBtLFxuICAgICAgICAgICAgb2Zmc2V0WDogbCxcbiAgICAgICAgICAgIG9mZnNldFk6IGMsXG4gICAgICAgICAgICBzY2FsZVg6IHUsXG4gICAgICAgICAgICBzY2FsZVk6IHAsXG4gICAgICAgICAgICBzdWJ0eXBlOiB0LnNtYXNrLnN1YnR5cGUsXG4gICAgICAgICAgICBiYWNrZHJvcDogdC5zbWFzay5iYWNrZHJvcCxcbiAgICAgICAgICAgIHRyYW5zZmVyTWFwOiB0LnNtYXNrLnRyYW5zZmVyTWFwIHx8IG51bGwsXG4gICAgICAgICAgICBzdGFydFRyYW5zZm9ybUludmVyc2U6IG51bGxcbiAgICAgICAgICB9KTtlbHNlIHtcbiAgICAgICAgICAgIGUuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgICAgICAgZS50cmFuc2xhdGUobCwgYyk7XG4gICAgICAgICAgICBlLnNjYWxlKHUsIHApO1xuICAgICAgICAgICAgZS5zYXZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvcHlDdHhTdGF0ZShlLCBtKTtcbiAgICAgICAgICB0aGlzLmN0eCA9IG07XG4gICAgICAgICAgdGhpcy5zZXRHU3RhdGUoW1tcIkJNXCIsIFwic291cmNlLW92ZXJcIl0sIFtcImNhXCIsIDFdLCBbXCJDQVwiLCAxXV0pO1xuICAgICAgICAgIHRoaXMuZ3JvdXBTdGFjay5wdXNoKGUpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBMZXZlbCsrO1xuICAgICAgICB9XG4gICAgICAgIGVuZEdyb3VwKHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29udGVudFZpc2libGUpIHJldHVybjtcbiAgICAgICAgICB0aGlzLmdyb3VwTGV2ZWwtLTtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5jdHgsXG4gICAgICAgICAgICBuID0gdGhpcy5ncm91cFN0YWNrLnBvcCgpO1xuICAgICAgICAgIHRoaXMuY3R4ID0gbjtcbiAgICAgICAgICB0aGlzLmN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSAhMTtcbiAgICAgICAgICBpZiAodC5zbWFzaykge1xuICAgICAgICAgICAgdGhpcy50ZW1wU01hc2sgPSB0aGlzLnNtYXNrU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgICAgICAgY29uc3QgdCA9ICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtcbiAgICAgICAgICAgIHRoaXMucmVzdG9yZSgpO1xuICAgICAgICAgICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgICAgICAgICAgdGhpcy5jdHguc2V0VHJhbnNmb3JtKC4uLnQpO1xuICAgICAgICAgICAgY29uc3QgbiA9IGkuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwgMCwgZS5jYW52YXMud2lkdGgsIGUuY2FudmFzLmhlaWdodF0sIHQpO1xuICAgICAgICAgICAgdGhpcy5jdHguZHJhd0ltYWdlKGUuY2FudmFzLCAwLCAwKTtcbiAgICAgICAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zZShuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmVnaW5Bbm5vdGF0aW9uKHQsIGUsIG4sIHMsIGEpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9HdCwgX0d0MikuY2FsbCh0aGlzKTtcbiAgICAgICAgICByZXNldEN0eFRvRGVmYXVsdCh0aGlzLmN0eCk7XG4gICAgICAgICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuYmFzZVRyYW5zZm9ybSAmJiB0aGlzLmN0eC5zZXRUcmFuc2Zvcm0oLi4udGhpcy5iYXNlVHJhbnNmb3JtKTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlKSAmJiA0ID09PSBlLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgcyA9IGVbMl0gLSBlWzBdLFxuICAgICAgICAgICAgICBvID0gZVszXSAtIGVbMV07XG4gICAgICAgICAgICBpZiAoYSAmJiB0aGlzLmFubm90YXRpb25DYW52YXNNYXApIHtcbiAgICAgICAgICAgICAgKG4gPSBuLnNsaWNlKCkpWzRdIC09IGVbMF07XG4gICAgICAgICAgICAgIG5bNV0gLT0gZVsxXTtcbiAgICAgICAgICAgICAgKGUgPSBlLnNsaWNlKCkpWzBdID0gZVsxXSA9IDA7XG4gICAgICAgICAgICAgIGVbMl0gPSBzO1xuICAgICAgICAgICAgICBlWzNdID0gbztcbiAgICAgICAgICAgICAgY29uc3QgW2EsIGxdID0gaS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKCgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KSksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdmlld3BvcnRTY2FsZTogY1xuICAgICAgICAgICAgICAgIH0gPSB0aGlzLFxuICAgICAgICAgICAgICAgIGggPSBNYXRoLmNlaWwocyAqIHRoaXMub3V0cHV0U2NhbGVYICogYyksXG4gICAgICAgICAgICAgICAgZCA9IE1hdGguY2VpbChvICogdGhpcy5vdXRwdXRTY2FsZVkgKiBjKTtcbiAgICAgICAgICAgICAgdGhpcy5hbm5vdGF0aW9uQ2FudmFzID0gdGhpcy5jYW52YXNGYWN0b3J5LmNyZWF0ZShoLCBkKTtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbnZhczogdSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBwXG4gICAgICAgICAgICAgIH0gPSB0aGlzLmFubm90YXRpb25DYW52YXM7XG4gICAgICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbkNhbnZhc01hcC5zZXQodCwgdSk7XG4gICAgICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbkNhbnZhcy5zYXZlZEN0eCA9IHRoaXMuY3R4O1xuICAgICAgICAgICAgICB0aGlzLmN0eCA9IHA7XG4gICAgICAgICAgICAgIHRoaXMuY3R4LnNhdmUoKTtcbiAgICAgICAgICAgICAgdGhpcy5jdHguc2V0VHJhbnNmb3JtKGEsIDAsIDAsIC1sLCAwLCBvICogbCk7XG4gICAgICAgICAgICAgIHJlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc2V0Q3R4VG9EZWZhdWx0KHRoaXMuY3R4KTtcbiAgICAgICAgICAgICAgdGhpcy5jdHgucmVjdChlWzBdLCBlWzFdLCBzLCBvKTtcbiAgICAgICAgICAgICAgdGhpcy5jdHguY2xpcCgpO1xuICAgICAgICAgICAgICB0aGlzLmVuZFBhdGgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50ID0gbmV3IENhbnZhc0V4dHJhU3RhdGUodGhpcy5jdHguY2FudmFzLndpZHRoLCB0aGlzLmN0eC5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLnRyYW5zZm9ybSguLi5uKTtcbiAgICAgICAgICB0aGlzLnRyYW5zZm9ybSguLi5zKTtcbiAgICAgICAgfVxuICAgICAgICBlbmRBbm5vdGF0aW9uKCkge1xuICAgICAgICAgIGlmICh0aGlzLmFubm90YXRpb25DYW52YXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3R4LnJlc3RvcmUoKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1Z0LCBfVnQyKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5jdHggPSB0aGlzLmFubm90YXRpb25DYW52YXMuc2F2ZWRDdHg7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5hbm5vdGF0aW9uQ2FudmFzLnNhdmVkQ3R4O1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYW5ub3RhdGlvbkNhbnZhcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGFpbnRJbWFnZU1hc2tYT2JqZWN0KHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29udGVudFZpc2libGUpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBlID0gdC5jb3VudDtcbiAgICAgICAgICAodCA9IHRoaXMuZ2V0T2JqZWN0KHQuZGF0YSwgdCkpLmNvdW50ID0gZTtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5jdHgsXG4gICAgICAgICAgICBpID0gdGhpcy5wcm9jZXNzaW5nVHlwZTM7XG4gICAgICAgICAgaWYgKGkpIHtcbiAgICAgICAgICAgIHZvaWQgMCA9PT0gaS5jb21waWxlZCAmJiAoaS5jb21waWxlZCA9IGZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHQpIHtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogblxuICAgICAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICAgICAgaWYgKGUgPiAxZTMgfHwgbiA+IDFlMykgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIGNvbnN0IGkgPSBuZXcgVWludDhBcnJheShbMCwgMiwgNCwgMCwgMSwgMCwgNSwgNCwgOCwgMTAsIDAsIDgsIDAsIDIsIDEsIDBdKSxcbiAgICAgICAgICAgICAgICByID0gZSArIDE7XG4gICAgICAgICAgICAgIGxldCBzLFxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgICAgbyxcbiAgICAgICAgICAgICAgICBsID0gbmV3IFVpbnQ4QXJyYXkociAqIChuICsgMSkpO1xuICAgICAgICAgICAgICBjb25zdCBjID0gZSArIDcgJiAtODtcbiAgICAgICAgICAgICAgbGV0IGggPSBuZXcgVWludDhBcnJheShjICogbiksXG4gICAgICAgICAgICAgICAgZCA9IDA7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0LmRhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgdCA9IDEyODtcbiAgICAgICAgICAgICAgICBmb3IgKDsgdCA+IDA7KSB7XG4gICAgICAgICAgICAgICAgICBoW2QrK10gPSBlICYgdCA/IDAgOiAyNTU7XG4gICAgICAgICAgICAgICAgICB0ID4+PSAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZXQgdSA9IDA7XG4gICAgICAgICAgICAgIGQgPSAwO1xuICAgICAgICAgICAgICBpZiAoMCAhPT0gaFtkXSkge1xuICAgICAgICAgICAgICAgIGxbMF0gPSAxO1xuICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGEgPSAxOyBhIDwgZTsgYSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhbZF0gIT09IGhbZCArIDFdKSB7XG4gICAgICAgICAgICAgICAgICBsW2FdID0gaFtkXSA/IDIgOiAxO1xuICAgICAgICAgICAgICAgICAgKyt1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkKys7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKDAgIT09IGhbZF0pIHtcbiAgICAgICAgICAgICAgICBsW2FdID0gMjtcbiAgICAgICAgICAgICAgICArK3U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yIChzID0gMTsgcyA8IG47IHMrKykge1xuICAgICAgICAgICAgICAgIGQgPSBzICogYztcbiAgICAgICAgICAgICAgICBvID0gcyAqIHI7XG4gICAgICAgICAgICAgICAgaWYgKGhbZCAtIGNdICE9PSBoW2RdKSB7XG4gICAgICAgICAgICAgICAgICBsW29dID0gaFtkXSA/IDEgOiA4O1xuICAgICAgICAgICAgICAgICAgKyt1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgdCA9IChoW2RdID8gNCA6IDApICsgKGhbZCAtIGNdID8gOCA6IDApO1xuICAgICAgICAgICAgICAgIGZvciAoYSA9IDE7IGEgPCBlOyBhKyspIHtcbiAgICAgICAgICAgICAgICAgIHQgPSAodCA+PiAyKSArIChoW2QgKyAxXSA/IDQgOiAwKSArIChoW2QgLSBjICsgMV0gPyA4IDogMCk7XG4gICAgICAgICAgICAgICAgICBpZiAoaVt0XSkge1xuICAgICAgICAgICAgICAgICAgICBsW28gKyBhXSA9IGlbdF07XG4gICAgICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhbZCAtIGNdICE9PSBoW2RdKSB7XG4gICAgICAgICAgICAgICAgICBsW28gKyBhXSA9IGhbZF0gPyAyIDogNDtcbiAgICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHUgPiAxZTMpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGQgPSBjICogKG4gLSAxKTtcbiAgICAgICAgICAgICAgbyA9IHMgKiByO1xuICAgICAgICAgICAgICBpZiAoMCAhPT0gaFtkXSkge1xuICAgICAgICAgICAgICAgIGxbb10gPSA4O1xuICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGEgPSAxOyBhIDwgZTsgYSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhbZF0gIT09IGhbZCArIDFdKSB7XG4gICAgICAgICAgICAgICAgICBsW28gKyBhXSA9IGhbZF0gPyA0IDogODtcbiAgICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZCsrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICgwICE9PSBoW2RdKSB7XG4gICAgICAgICAgICAgICAgbFtvICsgYV0gPSA0O1xuICAgICAgICAgICAgICAgICsrdTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodSA+IDFlMykgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIGNvbnN0IHAgPSBuZXcgSW50MzJBcnJheShbMCwgciwgLTEsIDAsIC1yLCAwLCAwLCAwLCAxXSksXG4gICAgICAgICAgICAgICAgZiA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgICAgICAgZm9yIChzID0gMDsgdSAmJiBzIDw9IG47IHMrKykge1xuICAgICAgICAgICAgICAgIGxldCB0ID0gcyAqIHI7XG4gICAgICAgICAgICAgICAgY29uc3QgbiA9IHQgKyBlO1xuICAgICAgICAgICAgICAgIGZvciAoOyB0IDwgbiAmJiAhbFt0XTspIHQrKztcbiAgICAgICAgICAgICAgICBpZiAodCA9PT0gbikgY29udGludWU7XG4gICAgICAgICAgICAgICAgZi5tb3ZlVG8odCAlIHIsIHMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSB0O1xuICAgICAgICAgICAgICAgIGxldCBhID0gbFt0XTtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlID0gcFthXTtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgdCArPSBlO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIWxbdF0pO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IGxbdF07XG4gICAgICAgICAgICAgICAgICBpZiAoNSAhPT0gbiAmJiAxMCAhPT0gbikge1xuICAgICAgICAgICAgICAgICAgICBhID0gbjtcbiAgICAgICAgICAgICAgICAgICAgbFt0XSA9IDA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhID0gbiAmIDUxICogYSA+PiA0O1xuICAgICAgICAgICAgICAgICAgICBsW3RdICY9IGEgPj4gMiB8IGEgPDwgMjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGYubGluZVRvKHQgJSByLCB0IC8gciB8IDApO1xuICAgICAgICAgICAgICAgICAgbFt0XSB8fCAtLXU7XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoaSAhPT0gdCk7XG4gICAgICAgICAgICAgICAgLS1zO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGggPSBudWxsO1xuICAgICAgICAgICAgICBsID0gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdC5zYXZlKCk7XG4gICAgICAgICAgICAgICAgdC5zY2FsZSgxIC8gZSwgLTEgLyBuKTtcbiAgICAgICAgICAgICAgICB0LnRyYW5zbGF0ZSgwLCAtbik7XG4gICAgICAgICAgICAgICAgdC5maWxsKGYpO1xuICAgICAgICAgICAgICAgIHQuYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICAgICAgdC5yZXN0b3JlKCk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KHQpKTtcbiAgICAgICAgICAgIGlmIChpLmNvbXBpbGVkKSB7XG4gICAgICAgICAgICAgIGkuY29tcGlsZWQobik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgciA9IHRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCksXG4gICAgICAgICAgICBzID0gci5jYW52YXM7XG4gICAgICAgICAgbi5zYXZlKCk7XG4gICAgICAgICAgbi5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgMCwgMCk7XG4gICAgICAgICAgbi5kcmF3SW1hZ2Uocywgci5vZmZzZXRYLCByLm9mZnNldFkpO1xuICAgICAgICAgIG4ucmVzdG9yZSgpO1xuICAgICAgICAgIHRoaXMuY29tcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHBhaW50SW1hZ2VNYXNrWE9iamVjdFJlcGVhdCh0LCBlKSB7XG4gICAgICAgICAgbGV0IG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IDAsXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiAwLFxuICAgICAgICAgICAgYSA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ID8gYXJndW1lbnRzWzRdIDogdm9pZCAwLFxuICAgICAgICAgICAgbyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ID8gYXJndW1lbnRzWzVdIDogdm9pZCAwO1xuICAgICAgICAgIGlmICghdGhpcy5jb250ZW50VmlzaWJsZSkgcmV0dXJuO1xuICAgICAgICAgIHQgPSB0aGlzLmdldE9iamVjdCh0LmRhdGEsIHQpO1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLmN0eDtcbiAgICAgICAgICBsLnNhdmUoKTtcbiAgICAgICAgICBjb25zdCBjID0gKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkobCk7XG4gICAgICAgICAgbC50cmFuc2Zvcm0oZSwgbiwgcywgYSwgMCwgMCk7XG4gICAgICAgICAgY29uc3QgaCA9IHRoaXMuX2NyZWF0ZU1hc2tDYW52YXModCk7XG4gICAgICAgICAgbC5zZXRUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgaC5vZmZzZXRYIC0gY1s0XSwgaC5vZmZzZXRZIC0gY1s1XSk7XG4gICAgICAgICAgZm9yIChsZXQgdCA9IDAsIHIgPSBvLmxlbmd0aDsgdCA8IHI7IHQgKz0gMikge1xuICAgICAgICAgICAgY29uc3QgciA9IGkuVXRpbC50cmFuc2Zvcm0oYywgW2UsIG4sIHMsIGEsIG9bdF0sIG9bdCArIDFdXSksXG4gICAgICAgICAgICAgIFtkLCB1XSA9IGkuVXRpbC5hcHBseVRyYW5zZm9ybShbMCwgMF0sIHIpO1xuICAgICAgICAgICAgbC5kcmF3SW1hZ2UoaC5jYW52YXMsIGQsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsLnJlc3RvcmUoKTtcbiAgICAgICAgICB0aGlzLmNvbXBvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBwYWludEltYWdlTWFza1hPYmplY3RHcm91cCh0KSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRWaXNpYmxlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuY3R4LFxuICAgICAgICAgICAgbiA9IHRoaXMuY3VycmVudC5maWxsQ29sb3IsXG4gICAgICAgICAgICBpID0gdGhpcy5jdXJyZW50LnBhdHRlcm5GaWxsO1xuICAgICAgICAgIGZvciAoY29uc3QgYSBvZiB0KSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgZGF0YTogdCxcbiAgICAgICAgICAgICAgICB3aWR0aDogbyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGwsXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBjXG4gICAgICAgICAgICAgIH0gPSBhLFxuICAgICAgICAgICAgICBoID0gdGhpcy5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoXCJtYXNrQ2FudmFzXCIsIG8sIGwpLFxuICAgICAgICAgICAgICBkID0gaC5jb250ZXh0O1xuICAgICAgICAgICAgZC5zYXZlKCk7XG4gICAgICAgICAgICBwdXRCaW5hcnlJbWFnZU1hc2soZCwgdGhpcy5nZXRPYmplY3QodCwgYSkpO1xuICAgICAgICAgICAgZC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcInNvdXJjZS1pblwiO1xuICAgICAgICAgICAgZC5maWxsU3R5bGUgPSBpID8gbi5nZXRQYXR0ZXJuKGQsIHRoaXMsICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShlKSwgcy5QYXRoVHlwZS5GSUxMKSA6IG47XG4gICAgICAgICAgICBkLmZpbGxSZWN0KDAsIDAsIG8sIGwpO1xuICAgICAgICAgICAgZC5yZXN0b3JlKCk7XG4gICAgICAgICAgICBlLnNhdmUoKTtcbiAgICAgICAgICAgIGUudHJhbnNmb3JtKC4uLmMpO1xuICAgICAgICAgICAgZS5zY2FsZSgxLCAtMSk7XG4gICAgICAgICAgICBkcmF3SW1hZ2VBdEludGVnZXJDb29yZHMoZSwgaC5jYW52YXMsIDAsIDAsIG8sIGwsIDAsIC0xLCAxLCAxKTtcbiAgICAgICAgICAgIGUucmVzdG9yZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbXBvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBwYWludEltYWdlWE9iamVjdCh0KSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRWaXNpYmxlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0T2JqZWN0KHQpO1xuICAgICAgICAgIGUgPyB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUpIDogKDAsIGkud2FybikoXCJEZXBlbmRlbnQgaW1hZ2UgaXNuJ3QgcmVhZHkgeWV0XCIpO1xuICAgICAgICB9XG4gICAgICAgIHBhaW50SW1hZ2VYT2JqZWN0UmVwZWF0KHQsIGUsIG4sIHIpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29udGVudFZpc2libGUpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBzID0gdGhpcy5nZXRPYmplY3QodCk7XG4gICAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICAoMCwgaS53YXJuKShcIkRlcGVuZGVudCBpbWFnZSBpc24ndCByZWFkeSB5ZXRcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGEgPSBzLndpZHRoLFxuICAgICAgICAgICAgbyA9IHMuaGVpZ2h0LFxuICAgICAgICAgICAgbCA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IHQgPSAwLCBpID0gci5sZW5ndGg7IHQgPCBpOyB0ICs9IDIpIGwucHVzaCh7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IFtlLCAwLCAwLCBuLCByW3RdLCByW3QgKyAxXV0sXG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIHc6IGEsXG4gICAgICAgICAgICBoOiBvXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5wYWludElubGluZUltYWdlWE9iamVjdEdyb3VwKHMsIGwpO1xuICAgICAgICB9XG4gICAgICAgIGFwcGx5VHJhbnNmZXJNYXBzVG9DYW52YXModCkge1xuICAgICAgICAgIGlmIChcIm5vbmVcIiAhPT0gdGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcykge1xuICAgICAgICAgICAgdC5maWx0ZXIgPSB0aGlzLmN1cnJlbnQudHJhbnNmZXJNYXBzO1xuICAgICAgICAgICAgdC5kcmF3SW1hZ2UodC5jYW52YXMsIDAsIDApO1xuICAgICAgICAgICAgdC5maWx0ZXIgPSBcIm5vbmVcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHQuY2FudmFzO1xuICAgICAgICB9XG4gICAgICAgIGFwcGx5VHJhbnNmZXJNYXBzVG9CaXRtYXAodCkge1xuICAgICAgICAgIGlmIChcIm5vbmVcIiA9PT0gdGhpcy5jdXJyZW50LnRyYW5zZmVyTWFwcykgcmV0dXJuIHQuYml0bWFwO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgYml0bWFwOiBlLFxuICAgICAgICAgICAgICB3aWR0aDogbixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBpXG4gICAgICAgICAgICB9ID0gdCxcbiAgICAgICAgICAgIHIgPSB0aGlzLmNhY2hlZENhbnZhc2VzLmdldENhbnZhcyhcImlubGluZUltYWdlXCIsIG4sIGkpLFxuICAgICAgICAgICAgcyA9IHIuY29udGV4dDtcbiAgICAgICAgICBzLmZpbHRlciA9IHRoaXMuY3VycmVudC50cmFuc2Zlck1hcHM7XG4gICAgICAgICAgcy5kcmF3SW1hZ2UoZSwgMCwgMCk7XG4gICAgICAgICAgcy5maWx0ZXIgPSBcIm5vbmVcIjtcbiAgICAgICAgICByZXR1cm4gci5jYW52YXM7XG4gICAgICAgIH1cbiAgICAgICAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3QodCkge1xuICAgICAgICAgIGlmICghdGhpcy5jb250ZW50VmlzaWJsZSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IGUgPSB0LndpZHRoLFxuICAgICAgICAgICAgbiA9IHQuaGVpZ2h0LFxuICAgICAgICAgICAgcyA9IHRoaXMuY3R4O1xuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgIGlmICghaS5pc05vZGVKUykge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBmaWx0ZXI6IHRcbiAgICAgICAgICAgIH0gPSBzO1xuICAgICAgICAgICAgXCJub25lXCIgIT09IHQgJiYgXCJcIiAhPT0gdCAmJiAocy5maWx0ZXIgPSBcIm5vbmVcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMuc2NhbGUoMSAvIGUsIC0xIC8gbik7XG4gICAgICAgICAgbGV0IGE7XG4gICAgICAgICAgaWYgKHQuYml0bWFwKSBhID0gdGhpcy5hcHBseVRyYW5zZmVyTWFwc1RvQml0bWFwKHQpO2Vsc2UgaWYgKFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgSFRNTEVsZW1lbnQgJiYgdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8ICF0LmRhdGEpIGEgPSB0O2Vsc2Uge1xuICAgICAgICAgICAgY29uc3QgaSA9IHRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKFwiaW5saW5lSW1hZ2VcIiwgZSwgbikuY29udGV4dDtcbiAgICAgICAgICAgIHB1dEJpbmFyeUltYWdlRGF0YShpLCB0KTtcbiAgICAgICAgICAgIGEgPSB0aGlzLmFwcGx5VHJhbnNmZXJNYXBzVG9DYW52YXMoaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLl9zY2FsZUltYWdlKGEsICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm1JbnZlcnNlKShzKSk7XG4gICAgICAgICAgcy5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBnZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkocyksIHQuaW50ZXJwb2xhdGUpO1xuICAgICAgICAgIGRyYXdJbWFnZUF0SW50ZWdlckNvb3JkcyhzLCBvLmltZywgMCwgMCwgby5wYWludFdpZHRoLCBvLnBhaW50SGVpZ2h0LCAwLCAtbiwgZSwgbik7XG4gICAgICAgICAgdGhpcy5jb21wb3NlKCk7XG4gICAgICAgICAgdGhpcy5yZXN0b3JlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFpbnRJbmxpbmVJbWFnZVhPYmplY3RHcm91cCh0LCBlKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRWaXNpYmxlKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMuY3R4O1xuICAgICAgICAgIGxldCBpO1xuICAgICAgICAgIGlmICh0LmJpdG1hcCkgaSA9IHQuYml0bWFwO2Vsc2Uge1xuICAgICAgICAgICAgY29uc3QgZSA9IHQud2lkdGgsXG4gICAgICAgICAgICAgIG4gPSB0LmhlaWdodCxcbiAgICAgICAgICAgICAgciA9IHRoaXMuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKFwiaW5saW5lSW1hZ2VcIiwgZSwgbikuY29udGV4dDtcbiAgICAgICAgICAgIHB1dEJpbmFyeUltYWdlRGF0YShyLCB0KTtcbiAgICAgICAgICAgIGkgPSB0aGlzLmFwcGx5VHJhbnNmZXJNYXBzVG9DYW52YXMocik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBlKSB7XG4gICAgICAgICAgICBuLnNhdmUoKTtcbiAgICAgICAgICAgIG4udHJhbnNmb3JtKC4uLnQudHJhbnNmb3JtKTtcbiAgICAgICAgICAgIG4uc2NhbGUoMSwgLTEpO1xuICAgICAgICAgICAgZHJhd0ltYWdlQXRJbnRlZ2VyQ29vcmRzKG4sIGksIHQueCwgdC55LCB0LncsIHQuaCwgMCwgLTEsIDEsIDEpO1xuICAgICAgICAgICAgbi5yZXN0b3JlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29tcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHBhaW50U29saWRDb2xvckltYWdlTWFzaygpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb250ZW50VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5jdHguZmlsbFJlY3QoMCwgMCwgMSwgMSk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFya1BvaW50KHQpIHt9XG4gICAgICAgIG1hcmtQb2ludFByb3BzKHQsIGUpIHt9XG4gICAgICAgIGJlZ2luTWFya2VkQ29udGVudCh0KSB7XG4gICAgICAgICAgdGhpcy5tYXJrZWRDb250ZW50U3RhY2sucHVzaCh7XG4gICAgICAgICAgICB2aXNpYmxlOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luTWFya2VkQ29udGVudFByb3BzKHQsIGUpIHtcbiAgICAgICAgICBcIk9DXCIgPT09IHQgPyB0aGlzLm1hcmtlZENvbnRlbnRTdGFjay5wdXNoKHtcbiAgICAgICAgICAgIHZpc2libGU6IHRoaXMub3B0aW9uYWxDb250ZW50Q29uZmlnLmlzVmlzaWJsZShlKVxuICAgICAgICAgIH0pIDogdGhpcy5tYXJrZWRDb250ZW50U3RhY2sucHVzaCh7XG4gICAgICAgICAgICB2aXNpYmxlOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY29udGVudFZpc2libGUgPSB0aGlzLmlzQ29udGVudFZpc2libGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbmRNYXJrZWRDb250ZW50KCkge1xuICAgICAgICAgIHRoaXMubWFya2VkQ29udGVudFN0YWNrLnBvcCgpO1xuICAgICAgICAgIHRoaXMuY29udGVudFZpc2libGUgPSB0aGlzLmlzQ29udGVudFZpc2libGUoKTtcbiAgICAgICAgfVxuICAgICAgICBiZWdpbkNvbXBhdCgpIHt9XG4gICAgICAgIGVuZENvbXBhdCgpIHt9XG4gICAgICAgIGNvbnN1bWVQYXRoKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5jdXJyZW50LmlzRW1wdHlDbGlwKCk7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCAmJiB0aGlzLmN1cnJlbnQudXBkYXRlQ2xpcEZyb21QYXRoKCk7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCB8fCB0aGlzLmNvbXBvc2UodCk7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMuY3R4O1xuICAgICAgICAgIGlmICh0aGlzLnBlbmRpbmdDbGlwKSB7XG4gICAgICAgICAgICBlIHx8ICh0aGlzLnBlbmRpbmdDbGlwID09PSB1ID8gbi5jbGlwKFwiZXZlbm9kZFwiKSA6IG4uY2xpcCgpKTtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ0NsaXAgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmN1cnJlbnQuc3RhcnROZXdQYXRoQW5kQ2xpcEJveCh0aGlzLmN1cnJlbnQuY2xpcEJveCk7XG4gICAgICAgICAgbi5iZWdpblBhdGgoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRTaW5nbGVQaXhlbFdpZHRoKCkge1xuICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aCkge1xuICAgICAgICAgICAgY29uc3QgdCA9ICgwLCByLmdldEN1cnJlbnRUcmFuc2Zvcm0pKHRoaXMuY3R4KTtcbiAgICAgICAgICAgIGlmICgwID09PSB0WzFdICYmIDAgPT09IHRbMl0pIHRoaXMuX2NhY2hlZEdldFNpbmdsZVBpeGVsV2lkdGggPSAxIC8gTWF0aC5taW4oTWF0aC5hYnModFswXSksIE1hdGguYWJzKHRbM10pKTtlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IE1hdGguYWJzKHRbMF0gKiB0WzNdIC0gdFsyXSAqIHRbMV0pLFxuICAgICAgICAgICAgICAgIG4gPSBNYXRoLmh5cG90KHRbMF0sIHRbMl0pLFxuICAgICAgICAgICAgICAgIGkgPSBNYXRoLmh5cG90KHRbMV0sIHRbM10pO1xuICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRHZXRTaW5nbGVQaXhlbFdpZHRoID0gTWF0aC5tYXgobiwgaSkgLyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkR2V0U2luZ2xlUGl4ZWxXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBnZXRTY2FsZUZvclN0cm9raW5nKCkge1xuICAgICAgICAgIGlmICgtMSA9PT0gdGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1swXSkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGxpbmVXaWR0aDogdFxuICAgICAgICAgICAgICB9ID0gdGhpcy5jdXJyZW50LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYTogZSxcbiAgICAgICAgICAgICAgICBiOiBuLFxuICAgICAgICAgICAgICAgIGM6IGksXG4gICAgICAgICAgICAgICAgZDogclxuICAgICAgICAgICAgICB9ID0gdGhpcy5jdHguZ2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICBsZXQgcywgYTtcbiAgICAgICAgICAgIGlmICgwID09PSBuICYmIDAgPT09IGkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IE1hdGguYWJzKGUpLFxuICAgICAgICAgICAgICAgIGkgPSBNYXRoLmFicyhyKTtcbiAgICAgICAgICAgICAgaWYgKG4gPT09IGkpIHtcbiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gdCkgcyA9IGEgPSAxIC8gbjtlbHNlIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuICogdDtcbiAgICAgICAgICAgICAgICAgIHMgPSBhID0gZSA8IDEgPyAxIC8gZSA6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT09IHQpIHtcbiAgICAgICAgICAgICAgICBzID0gMSAvIG47XG4gICAgICAgICAgICAgICAgYSA9IDEgLyBpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBuICogdCxcbiAgICAgICAgICAgICAgICAgIHIgPSBpICogdDtcbiAgICAgICAgICAgICAgICBzID0gZSA8IDEgPyAxIC8gZSA6IDE7XG4gICAgICAgICAgICAgICAgYSA9IHIgPCAxID8gMSAvIHIgOiAxO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBvID0gTWF0aC5hYnMoZSAqIHIgLSBuICogaSksXG4gICAgICAgICAgICAgICAgbCA9IE1hdGguaHlwb3QoZSwgbiksXG4gICAgICAgICAgICAgICAgYyA9IE1hdGguaHlwb3QoaSwgcik7XG4gICAgICAgICAgICAgIGlmICgwID09PSB0KSB7XG4gICAgICAgICAgICAgICAgcyA9IGMgLyBvO1xuICAgICAgICAgICAgICAgIGEgPSBsIC8gbztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdCAqIG87XG4gICAgICAgICAgICAgICAgcyA9IGMgPiBlID8gYyAvIGUgOiAxO1xuICAgICAgICAgICAgICAgIGEgPSBsID4gZSA/IGwgLyBlIDogMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2FjaGVkU2NhbGVGb3JTdHJva2luZ1swXSA9IHM7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZWRTY2FsZUZvclN0cm9raW5nWzFdID0gYTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZFNjYWxlRm9yU3Ryb2tpbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmVzY2FsZUFuZFN0cm9rZSh0KSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBjdHg6IGVcbiAgICAgICAgICAgIH0gPSB0aGlzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsaW5lV2lkdGg6IG5cbiAgICAgICAgICAgIH0gPSB0aGlzLmN1cnJlbnQsXG4gICAgICAgICAgICBbaSwgcl0gPSB0aGlzLmdldFNjYWxlRm9yU3Ryb2tpbmcoKTtcbiAgICAgICAgICBlLmxpbmVXaWR0aCA9IG4gfHwgMTtcbiAgICAgICAgICBpZiAoMSA9PT0gaSAmJiAxID09PSByKSB7XG4gICAgICAgICAgICBlLnN0cm9rZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzID0gZS5nZXRMaW5lRGFzaCgpO1xuICAgICAgICAgIHQgJiYgZS5zYXZlKCk7XG4gICAgICAgICAgZS5zY2FsZShpLCByKTtcbiAgICAgICAgICBpZiAocy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gTWF0aC5tYXgoaSwgcik7XG4gICAgICAgICAgICBlLnNldExpbmVEYXNoKHMubWFwKGUgPT4gZSAvIHQpKTtcbiAgICAgICAgICAgIGUubGluZURhc2hPZmZzZXQgLz0gdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZS5zdHJva2UoKTtcbiAgICAgICAgICB0ICYmIGUucmVzdG9yZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29udGVudFZpc2libGUoKSB7XG4gICAgICAgICAgZm9yIChsZXQgdCA9IHRoaXMubWFya2VkQ29udGVudFN0YWNrLmxlbmd0aCAtIDE7IHQgPj0gMDsgdC0tKSBpZiAoIXRoaXMubWFya2VkQ29udGVudFN0YWNrW3RdLnZpc2libGUpIHJldHVybiAhMTtcbiAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9HdDIoKSB7XG4gICAgICAgIGZvciAoOyB0aGlzLnN0YXRlU3RhY2subGVuZ3RoIHx8IHRoaXMuaW5TTWFza01vZGU7KSB0aGlzLnJlc3RvcmUoKTtcbiAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgICBpZiAodGhpcy50cmFuc3BhcmVudENhbnZhcykge1xuICAgICAgICAgIHRoaXMuY3R4ID0gdGhpcy5jb21wb3NpdGVDdHg7XG4gICAgICAgICAgdGhpcy5jdHguc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuY3R4LnNldFRyYW5zZm9ybSgxLCAwLCAwLCAxLCAwLCAwKTtcbiAgICAgICAgICB0aGlzLmN0eC5kcmF3SW1hZ2UodGhpcy50cmFuc3BhcmVudENhbnZhcywgMCwgMCk7XG4gICAgICAgICAgdGhpcy5jdHgucmVzdG9yZSgpO1xuICAgICAgICAgIHRoaXMudHJhbnNwYXJlbnRDYW52YXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfVnQyKCkge1xuICAgICAgICBpZiAodGhpcy5wYWdlQ29sb3JzKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuZmlsdGVyRmFjdG9yeS5hZGRIQ01GaWx0ZXIodGhpcy5wYWdlQ29sb3JzLmZvcmVncm91bmQsIHRoaXMucGFnZUNvbG9ycy5iYWNrZ3JvdW5kKTtcbiAgICAgICAgICBpZiAoXCJub25lXCIgIT09IHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmN0eC5maWx0ZXI7XG4gICAgICAgICAgICB0aGlzLmN0eC5maWx0ZXIgPSB0O1xuICAgICAgICAgICAgdGhpcy5jdHguZHJhd0ltYWdlKHRoaXMuY3R4LmNhbnZhcywgMCwgMCk7XG4gICAgICAgICAgICB0aGlzLmN0eC5maWx0ZXIgPSBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5DYW52YXNHcmFwaGljcyA9IENhbnZhc0dyYXBoaWNzO1xuICAgICAgZm9yIChjb25zdCB0IGluIGkuT1BTKSB2b2lkIDAgIT09IENhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSAmJiAoQ2FudmFzR3JhcGhpY3MucHJvdG90eXBlW2kuT1BTW3RdXSA9IENhbnZhc0dyYXBoaWNzLnByb3RvdHlwZVt0XSk7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuVGlsaW5nUGF0dGVybiA9IGUuUGF0aFR5cGUgPSB2b2lkIDA7XG4gICAgICBlLmdldFNoYWRpbmdQYXR0ZXJuID0gZnVuY3Rpb24gZ2V0U2hhZGluZ1BhdHRlcm4odCkge1xuICAgICAgICBzd2l0Y2ggKHRbMF0pIHtcbiAgICAgICAgICBjYXNlIFwiUmFkaWFsQXhpYWxcIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybih0KTtcbiAgICAgICAgICBjYXNlIFwiTWVzaFwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBNZXNoU2hhZGluZ1BhdHRlcm4odCk7XG4gICAgICAgICAgY2FzZSBcIkR1bW15XCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3IER1bW15U2hhZGluZ1BhdHRlcm4oKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIElSIHR5cGU6IFwiLmNvbmNhdCh0WzBdKSk7XG4gICAgICB9O1xuICAgICAgbigyKTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTY3KTtcbiAgICAgIGNvbnN0IHMgPSB7XG4gICAgICAgIEZJTEw6IFwiRmlsbFwiLFxuICAgICAgICBTVFJPS0U6IFwiU3Ryb2tlXCIsXG4gICAgICAgIFNIQURJTkc6IFwiU2hhZGluZ1wiXG4gICAgICB9O1xuICAgICAgZS5QYXRoVHlwZSA9IHM7XG4gICAgICBmdW5jdGlvbiBhcHBseUJvdW5kaW5nQm94KHQsIGUpIHtcbiAgICAgICAgaWYgKCFlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IG4gPSBlWzJdIC0gZVswXSxcbiAgICAgICAgICBpID0gZVszXSAtIGVbMV0sXG4gICAgICAgICAgciA9IG5ldyBQYXRoMkQoKTtcbiAgICAgICAgci5yZWN0KGVbMF0sIGVbMV0sIG4sIGkpO1xuICAgICAgICB0LmNsaXAocik7XG4gICAgICB9XG4gICAgICBjbGFzcyBCYXNlU2hhZGluZ1BhdHRlcm4ge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID09PSBCYXNlU2hhZGluZ1BhdHRlcm4gJiYgKDAsIGkudW5yZWFjaGFibGUpKFwiQ2Fubm90IGluaXRpYWxpemUgQmFzZVNoYWRpbmdQYXR0ZXJuLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRQYXR0ZXJuKCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGF0dGVybmAgY2FsbGVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nUGF0dGVybiBleHRlbmRzIEJhc2VTaGFkaW5nUGF0dGVybiB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBzdXBlcigpO1xuICAgICAgICAgIHRoaXMuX3R5cGUgPSB0WzFdO1xuICAgICAgICAgIHRoaXMuX2Jib3ggPSB0WzJdO1xuICAgICAgICAgIHRoaXMuX2NvbG9yU3RvcHMgPSB0WzNdO1xuICAgICAgICAgIHRoaXMuX3AwID0gdFs0XTtcbiAgICAgICAgICB0aGlzLl9wMSA9IHRbNV07XG4gICAgICAgICAgdGhpcy5fcjAgPSB0WzZdO1xuICAgICAgICAgIHRoaXMuX3IxID0gdFs3XTtcbiAgICAgICAgICB0aGlzLm1hdHJpeCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgX2NyZWF0ZUdyYWRpZW50KHQpIHtcbiAgICAgICAgICBsZXQgZTtcbiAgICAgICAgICBcImF4aWFsXCIgPT09IHRoaXMuX3R5cGUgPyBlID0gdC5jcmVhdGVMaW5lYXJHcmFkaWVudCh0aGlzLl9wMFswXSwgdGhpcy5fcDBbMV0sIHRoaXMuX3AxWzBdLCB0aGlzLl9wMVsxXSkgOiBcInJhZGlhbFwiID09PSB0aGlzLl90eXBlICYmIChlID0gdC5jcmVhdGVSYWRpYWxHcmFkaWVudCh0aGlzLl9wMFswXSwgdGhpcy5fcDBbMV0sIHRoaXMuX3IwLCB0aGlzLl9wMVswXSwgdGhpcy5fcDFbMV0sIHRoaXMuX3IxKSk7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX2NvbG9yU3RvcHMpIGUuYWRkQ29sb3JTdG9wKHRbMF0sIHRbMV0pO1xuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9XG4gICAgICAgIGdldFBhdHRlcm4odCwgZSwgbiwgYSkge1xuICAgICAgICAgIGxldCBvO1xuICAgICAgICAgIGlmIChhID09PSBzLlNUUk9LRSB8fCBhID09PSBzLkZJTEwpIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBlLmN1cnJlbnQuZ2V0Q2xpcHBlZFBhdGhCb3VuZGluZ0JveChhLCAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KSkgfHwgWzAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgICBsID0gTWF0aC5jZWlsKHNbMl0gLSBzWzBdKSB8fCAxLFxuICAgICAgICAgICAgICBjID0gTWF0aC5jZWlsKHNbM10gLSBzWzFdKSB8fCAxLFxuICAgICAgICAgICAgICBoID0gZS5jYWNoZWRDYW52YXNlcy5nZXRDYW52YXMoXCJwYXR0ZXJuXCIsIGwsIGMsICEwKSxcbiAgICAgICAgICAgICAgZCA9IGguY29udGV4dDtcbiAgICAgICAgICAgIGQuY2xlYXJSZWN0KDAsIDAsIGQuY2FudmFzLndpZHRoLCBkLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgICAgZC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIGQucmVjdCgwLCAwLCBkLmNhbnZhcy53aWR0aCwgZC5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgICAgIGQudHJhbnNsYXRlKC1zWzBdLCAtc1sxXSk7XG4gICAgICAgICAgICBuID0gaS5VdGlsLnRyYW5zZm9ybShuLCBbMSwgMCwgMCwgMSwgc1swXSwgc1sxXV0pO1xuICAgICAgICAgICAgZC50cmFuc2Zvcm0oLi4uZS5iYXNlVHJhbnNmb3JtKTtcbiAgICAgICAgICAgIHRoaXMubWF0cml4ICYmIGQudHJhbnNmb3JtKC4uLnRoaXMubWF0cml4KTtcbiAgICAgICAgICAgIGFwcGx5Qm91bmRpbmdCb3goZCwgdGhpcy5fYmJveCk7XG4gICAgICAgICAgICBkLmZpbGxTdHlsZSA9IHRoaXMuX2NyZWF0ZUdyYWRpZW50KGQpO1xuICAgICAgICAgICAgZC5maWxsKCk7XG4gICAgICAgICAgICBvID0gdC5jcmVhdGVQYXR0ZXJuKGguY2FudmFzLCBcIm5vLXJlcGVhdFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHUgPSBuZXcgRE9NTWF0cml4KG4pO1xuICAgICAgICAgICAgby5zZXRUcmFuc2Zvcm0odSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5Qm91bmRpbmdCb3godCwgdGhpcy5fYmJveCk7XG4gICAgICAgICAgICBvID0gdGhpcy5fY3JlYXRlR3JhZGllbnQodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBkcmF3VHJpYW5nbGUodCwgZSwgbiwgaSwgciwgcywgYSwgbykge1xuICAgICAgICBjb25zdCBsID0gZS5jb29yZHMsXG4gICAgICAgICAgYyA9IGUuY29sb3JzLFxuICAgICAgICAgIGggPSB0LmRhdGEsXG4gICAgICAgICAgZCA9IDQgKiB0LndpZHRoO1xuICAgICAgICBsZXQgdTtcbiAgICAgICAgaWYgKGxbbiArIDFdID4gbFtpICsgMV0pIHtcbiAgICAgICAgICB1ID0gbjtcbiAgICAgICAgICBuID0gaTtcbiAgICAgICAgICBpID0gdTtcbiAgICAgICAgICB1ID0gcztcbiAgICAgICAgICBzID0gYTtcbiAgICAgICAgICBhID0gdTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobFtpICsgMV0gPiBsW3IgKyAxXSkge1xuICAgICAgICAgIHUgPSBpO1xuICAgICAgICAgIGkgPSByO1xuICAgICAgICAgIHIgPSB1O1xuICAgICAgICAgIHUgPSBhO1xuICAgICAgICAgIGEgPSBvO1xuICAgICAgICAgIG8gPSB1O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsW24gKyAxXSA+IGxbaSArIDFdKSB7XG4gICAgICAgICAgdSA9IG47XG4gICAgICAgICAgbiA9IGk7XG4gICAgICAgICAgaSA9IHU7XG4gICAgICAgICAgdSA9IHM7XG4gICAgICAgICAgcyA9IGE7XG4gICAgICAgICAgYSA9IHU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcCA9IChsW25dICsgZS5vZmZzZXRYKSAqIGUuc2NhbGVYLFxuICAgICAgICAgIGYgPSAobFtuICsgMV0gKyBlLm9mZnNldFkpICogZS5zY2FsZVksXG4gICAgICAgICAgZyA9IChsW2ldICsgZS5vZmZzZXRYKSAqIGUuc2NhbGVYLFxuICAgICAgICAgIG0gPSAobFtpICsgMV0gKyBlLm9mZnNldFkpICogZS5zY2FsZVksXG4gICAgICAgICAgYiA9IChsW3JdICsgZS5vZmZzZXRYKSAqIGUuc2NhbGVYLFxuICAgICAgICAgIHYgPSAobFtyICsgMV0gKyBlLm9mZnNldFkpICogZS5zY2FsZVk7XG4gICAgICAgIGlmIChmID49IHYpIHJldHVybjtcbiAgICAgICAgY29uc3QgeSA9IGNbc10sXG4gICAgICAgICAgQSA9IGNbcyArIDFdLFxuICAgICAgICAgIF8gPSBjW3MgKyAyXSxcbiAgICAgICAgICBTID0gY1thXSxcbiAgICAgICAgICBFID0gY1thICsgMV0sXG4gICAgICAgICAgeCA9IGNbYSArIDJdLFxuICAgICAgICAgIHcgPSBjW29dLFxuICAgICAgICAgIEMgPSBjW28gKyAxXSxcbiAgICAgICAgICBUID0gY1tvICsgMl0sXG4gICAgICAgICAgUCA9IE1hdGgucm91bmQoZiksXG4gICAgICAgICAgayA9IE1hdGgucm91bmQodik7XG4gICAgICAgIGxldCBNLCBSLCBJLCBELCBPLCBMLCBOLCBCO1xuICAgICAgICBmb3IgKGxldCB0ID0gUDsgdCA8PSBrOyB0KyspIHtcbiAgICAgICAgICBpZiAodCA8IG0pIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0IDwgZiA/IDAgOiAoZiAtIHQpIC8gKGYgLSBtKTtcbiAgICAgICAgICAgIE0gPSBwIC0gKHAgLSBnKSAqIGU7XG4gICAgICAgICAgICBSID0geSAtICh5IC0gUykgKiBlO1xuICAgICAgICAgICAgSSA9IEEgLSAoQSAtIEUpICogZTtcbiAgICAgICAgICAgIEQgPSBfIC0gKF8gLSB4KSAqIGU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlO1xuICAgICAgICAgICAgZSA9IHQgPiB2ID8gMSA6IG0gPT09IHYgPyAwIDogKG0gLSB0KSAvIChtIC0gdik7XG4gICAgICAgICAgICBNID0gZyAtIChnIC0gYikgKiBlO1xuICAgICAgICAgICAgUiA9IFMgLSAoUyAtIHcpICogZTtcbiAgICAgICAgICAgIEkgPSBFIC0gKEUgLSBDKSAqIGU7XG4gICAgICAgICAgICBEID0geCAtICh4IC0gVCkgKiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZTtcbiAgICAgICAgICBlID0gdCA8IGYgPyAwIDogdCA+IHYgPyAxIDogKGYgLSB0KSAvIChmIC0gdik7XG4gICAgICAgICAgTyA9IHAgLSAocCAtIGIpICogZTtcbiAgICAgICAgICBMID0geSAtICh5IC0gdykgKiBlO1xuICAgICAgICAgIE4gPSBBIC0gKEEgLSBDKSAqIGU7XG4gICAgICAgICAgQiA9IF8gLSAoXyAtIFQpICogZTtcbiAgICAgICAgICBjb25zdCBuID0gTWF0aC5yb3VuZChNYXRoLm1pbihNLCBPKSksXG4gICAgICAgICAgICBpID0gTWF0aC5yb3VuZChNYXRoLm1heChNLCBPKSk7XG4gICAgICAgICAgbGV0IHIgPSBkICogdCArIDQgKiBuO1xuICAgICAgICAgIGZvciAobGV0IHQgPSBuOyB0IDw9IGk7IHQrKykge1xuICAgICAgICAgICAgZSA9IChNIC0gdCkgLyAoTSAtIE8pO1xuICAgICAgICAgICAgZSA8IDAgPyBlID0gMCA6IGUgPiAxICYmIChlID0gMSk7XG4gICAgICAgICAgICBoW3IrK10gPSBSIC0gKFIgLSBMKSAqIGUgfCAwO1xuICAgICAgICAgICAgaFtyKytdID0gSSAtIChJIC0gTikgKiBlIHwgMDtcbiAgICAgICAgICAgIGhbcisrXSA9IEQgLSAoRCAtIEIpICogZSB8IDA7XG4gICAgICAgICAgICBoW3IrK10gPSAyNTU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBkcmF3RmlndXJlKHQsIGUsIG4pIHtcbiAgICAgICAgY29uc3QgaSA9IGUuY29vcmRzLFxuICAgICAgICAgIHIgPSBlLmNvbG9ycztcbiAgICAgICAgbGV0IHMsIGE7XG4gICAgICAgIHN3aXRjaCAoZS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImxhdHRpY2VcIjpcbiAgICAgICAgICAgIGNvbnN0IG8gPSBlLnZlcnRpY2VzUGVyUm93LFxuICAgICAgICAgICAgICBsID0gTWF0aC5mbG9vcihpLmxlbmd0aCAvIG8pIC0gMSxcbiAgICAgICAgICAgICAgYyA9IG8gLSAxO1xuICAgICAgICAgICAgZm9yIChzID0gMDsgcyA8IGw7IHMrKykge1xuICAgICAgICAgICAgICBsZXQgZSA9IHMgKiBvO1xuICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGM7IHMrKywgZSsrKSB7XG4gICAgICAgICAgICAgICAgZHJhd1RyaWFuZ2xlKHQsIG4sIGlbZV0sIGlbZSArIDFdLCBpW2UgKyBvXSwgcltlXSwgcltlICsgMV0sIHJbZSArIG9dKTtcbiAgICAgICAgICAgICAgICBkcmF3VHJpYW5nbGUodCwgbiwgaVtlICsgbyArIDFdLCBpW2UgKyAxXSwgaVtlICsgb10sIHJbZSArIG8gKyAxXSwgcltlICsgMV0sIHJbZSArIG9dKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInRyaWFuZ2xlc1wiOlxuICAgICAgICAgICAgZm9yIChzID0gMCwgYSA9IGkubGVuZ3RoOyBzIDwgYTsgcyArPSAzKSBkcmF3VHJpYW5nbGUodCwgbiwgaVtzXSwgaVtzICsgMV0sIGlbcyArIDJdLCByW3NdLCByW3MgKyAxXSwgcltzICsgMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgZmlndXJlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjbGFzcyBNZXNoU2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm4ge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICB0aGlzLl9jb29yZHMgPSB0WzJdO1xuICAgICAgICAgIHRoaXMuX2NvbG9ycyA9IHRbM107XG4gICAgICAgICAgdGhpcy5fZmlndXJlcyA9IHRbNF07XG4gICAgICAgICAgdGhpcy5fYm91bmRzID0gdFs1XTtcbiAgICAgICAgICB0aGlzLl9iYm94ID0gdFs3XTtcbiAgICAgICAgICB0aGlzLl9iYWNrZ3JvdW5kID0gdFs4XTtcbiAgICAgICAgICB0aGlzLm1hdHJpeCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgX2NyZWF0ZU1lc2hDYW52YXModCwgZSwgbikge1xuICAgICAgICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKHRoaXMuX2JvdW5kc1swXSksXG4gICAgICAgICAgICByID0gTWF0aC5mbG9vcih0aGlzLl9ib3VuZHNbMV0pLFxuICAgICAgICAgICAgcyA9IE1hdGguY2VpbCh0aGlzLl9ib3VuZHNbMl0pIC0gaSxcbiAgICAgICAgICAgIGEgPSBNYXRoLmNlaWwodGhpcy5fYm91bmRzWzNdKSAtIHIsXG4gICAgICAgICAgICBvID0gTWF0aC5taW4oTWF0aC5jZWlsKE1hdGguYWJzKHMgKiB0WzBdICogMS4xKSksIDNlMyksXG4gICAgICAgICAgICBsID0gTWF0aC5taW4oTWF0aC5jZWlsKE1hdGguYWJzKGEgKiB0WzFdICogMS4xKSksIDNlMyksXG4gICAgICAgICAgICBjID0gcyAvIG8sXG4gICAgICAgICAgICBoID0gYSAvIGwsXG4gICAgICAgICAgICBkID0ge1xuICAgICAgICAgICAgICBjb29yZHM6IHRoaXMuX2Nvb3JkcyxcbiAgICAgICAgICAgICAgY29sb3JzOiB0aGlzLl9jb2xvcnMsXG4gICAgICAgICAgICAgIG9mZnNldFg6IC1pLFxuICAgICAgICAgICAgICBvZmZzZXRZOiAtcixcbiAgICAgICAgICAgICAgc2NhbGVYOiAxIC8gYyxcbiAgICAgICAgICAgICAgc2NhbGVZOiAxIC8gaFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHUgPSBvICsgNCxcbiAgICAgICAgICAgIHAgPSBsICsgNCxcbiAgICAgICAgICAgIGYgPSBuLmdldENhbnZhcyhcIm1lc2hcIiwgdSwgcCwgITEpLFxuICAgICAgICAgICAgZyA9IGYuY29udGV4dCxcbiAgICAgICAgICAgIG0gPSBnLmNyZWF0ZUltYWdlRGF0YShvLCBsKTtcbiAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IG0uZGF0YTtcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuICs9IDQpIHtcbiAgICAgICAgICAgICAgdFtuXSA9IGVbMF07XG4gICAgICAgICAgICAgIHRbbiArIDFdID0gZVsxXTtcbiAgICAgICAgICAgICAgdFtuICsgMl0gPSBlWzJdO1xuICAgICAgICAgICAgICB0W24gKyAzXSA9IDI1NTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX2ZpZ3VyZXMpIGRyYXdGaWd1cmUobSwgdCwgZCk7XG4gICAgICAgICAgZy5wdXRJbWFnZURhdGEobSwgMiwgMik7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNhbnZhczogZi5jYW52YXMsXG4gICAgICAgICAgICBvZmZzZXRYOiBpIC0gMiAqIGMsXG4gICAgICAgICAgICBvZmZzZXRZOiByIC0gMiAqIGgsXG4gICAgICAgICAgICBzY2FsZVg6IGMsXG4gICAgICAgICAgICBzY2FsZVk6IGhcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGdldFBhdHRlcm4odCwgZSwgbiwgYSkge1xuICAgICAgICAgIGFwcGx5Qm91bmRpbmdCb3godCwgdGhpcy5fYmJveCk7XG4gICAgICAgICAgbGV0IG87XG4gICAgICAgICAgaWYgKGEgPT09IHMuU0hBRElORykgbyA9IGkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSgoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKSh0KSk7ZWxzZSB7XG4gICAgICAgICAgICBvID0gaS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGUuYmFzZVRyYW5zZm9ybSk7XG4gICAgICAgICAgICBpZiAodGhpcy5tYXRyaXgpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IGkuVXRpbC5zaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZSh0aGlzLm1hdHJpeCk7XG4gICAgICAgICAgICAgIG8gPSBbb1swXSAqIHRbMF0sIG9bMV0gKiB0WzFdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbCA9IHRoaXMuX2NyZWF0ZU1lc2hDYW52YXMobywgYSA9PT0gcy5TSEFESU5HID8gbnVsbCA6IHRoaXMuX2JhY2tncm91bmQsIGUuY2FjaGVkQ2FudmFzZXMpO1xuICAgICAgICAgIGlmIChhICE9PSBzLlNIQURJTkcpIHtcbiAgICAgICAgICAgIHQuc2V0VHJhbnNmb3JtKC4uLmUuYmFzZVRyYW5zZm9ybSk7XG4gICAgICAgICAgICB0aGlzLm1hdHJpeCAmJiB0LnRyYW5zZm9ybSguLi50aGlzLm1hdHJpeCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHQudHJhbnNsYXRlKGwub2Zmc2V0WCwgbC5vZmZzZXRZKTtcbiAgICAgICAgICB0LnNjYWxlKGwuc2NhbGVYLCBsLnNjYWxlWSk7XG4gICAgICAgICAgcmV0dXJuIHQuY3JlYXRlUGF0dGVybihsLmNhbnZhcywgXCJuby1yZXBlYXRcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIER1bW15U2hhZGluZ1BhdHRlcm4gZXh0ZW5kcyBCYXNlU2hhZGluZ1BhdHRlcm4ge1xuICAgICAgICBnZXRQYXR0ZXJuKCkge1xuICAgICAgICAgIHJldHVybiBcImhvdHBpbmtcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgYSA9IDEsXG4gICAgICAgIG8gPSAyO1xuICAgICAgY2xhc3MgVGlsaW5nUGF0dGVybiB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUsIG4sIGksIHIpIHtcbiAgICAgICAgICB0aGlzLm9wZXJhdG9yTGlzdCA9IHRbMl07XG4gICAgICAgICAgdGhpcy5tYXRyaXggPSB0WzNdIHx8IFsxLCAwLCAwLCAxLCAwLCAwXTtcbiAgICAgICAgICB0aGlzLmJib3ggPSB0WzRdO1xuICAgICAgICAgIHRoaXMueHN0ZXAgPSB0WzVdO1xuICAgICAgICAgIHRoaXMueXN0ZXAgPSB0WzZdO1xuICAgICAgICAgIHRoaXMucGFpbnRUeXBlID0gdFs3XTtcbiAgICAgICAgICB0aGlzLnRpbGluZ1R5cGUgPSB0WzhdO1xuICAgICAgICAgIHRoaXMuY29sb3IgPSBlO1xuICAgICAgICAgIHRoaXMuY3R4ID0gbjtcbiAgICAgICAgICB0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeSA9IGk7XG4gICAgICAgICAgdGhpcy5iYXNlVHJhbnNmb3JtID0gcjtcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVQYXR0ZXJuQ2FudmFzKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5vcGVyYXRvckxpc3QsXG4gICAgICAgICAgICBuID0gdGhpcy5iYm94LFxuICAgICAgICAgICAgcyA9IHRoaXMueHN0ZXAsXG4gICAgICAgICAgICBhID0gdGhpcy55c3RlcCxcbiAgICAgICAgICAgIG8gPSB0aGlzLnBhaW50VHlwZSxcbiAgICAgICAgICAgIGwgPSB0aGlzLnRpbGluZ1R5cGUsXG4gICAgICAgICAgICBjID0gdGhpcy5jb2xvcixcbiAgICAgICAgICAgIGggPSB0aGlzLmNhbnZhc0dyYXBoaWNzRmFjdG9yeTtcbiAgICAgICAgICAoMCwgaS5pbmZvKShcIlRpbGluZ1R5cGU6IFwiICsgbCk7XG4gICAgICAgICAgY29uc3QgZCA9IG5bMF0sXG4gICAgICAgICAgICB1ID0gblsxXSxcbiAgICAgICAgICAgIHAgPSBuWzJdLFxuICAgICAgICAgICAgZiA9IG5bM10sXG4gICAgICAgICAgICBnID0gaS5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKHRoaXMubWF0cml4KSxcbiAgICAgICAgICAgIG0gPSBpLlV0aWwuc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUodGhpcy5iYXNlVHJhbnNmb3JtKSxcbiAgICAgICAgICAgIGIgPSBbZ1swXSAqIG1bMF0sIGdbMV0gKiBtWzFdXSxcbiAgICAgICAgICAgIHYgPSB0aGlzLmdldFNpemVBbmRTY2FsZShzLCB0aGlzLmN0eC5jYW52YXMud2lkdGgsIGJbMF0pLFxuICAgICAgICAgICAgeSA9IHRoaXMuZ2V0U2l6ZUFuZFNjYWxlKGEsIHRoaXMuY3R4LmNhbnZhcy5oZWlnaHQsIGJbMV0pLFxuICAgICAgICAgICAgQSA9IHQuY2FjaGVkQ2FudmFzZXMuZ2V0Q2FudmFzKFwicGF0dGVyblwiLCB2LnNpemUsIHkuc2l6ZSwgITApLFxuICAgICAgICAgICAgXyA9IEEuY29udGV4dCxcbiAgICAgICAgICAgIFMgPSBoLmNyZWF0ZUNhbnZhc0dyYXBoaWNzKF8pO1xuICAgICAgICAgIFMuZ3JvdXBMZXZlbCA9IHQuZ3JvdXBMZXZlbDtcbiAgICAgICAgICB0aGlzLnNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dChTLCBvLCBjKTtcbiAgICAgICAgICBsZXQgRSA9IGQsXG4gICAgICAgICAgICB4ID0gdSxcbiAgICAgICAgICAgIHcgPSBwLFxuICAgICAgICAgICAgQyA9IGY7XG4gICAgICAgICAgaWYgKGQgPCAwKSB7XG4gICAgICAgICAgICBFID0gMDtcbiAgICAgICAgICAgIHcgKz0gTWF0aC5hYnMoZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh1IDwgMCkge1xuICAgICAgICAgICAgeCA9IDA7XG4gICAgICAgICAgICBDICs9IE1hdGguYWJzKHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfLnRyYW5zbGF0ZSgtdi5zY2FsZSAqIEUsIC15LnNjYWxlICogeCk7XG4gICAgICAgICAgUy50cmFuc2Zvcm0odi5zY2FsZSwgMCwgMCwgeS5zY2FsZSwgMCwgMCk7XG4gICAgICAgICAgXy5zYXZlKCk7XG4gICAgICAgICAgdGhpcy5jbGlwQmJveChTLCBFLCB4LCB3LCBDKTtcbiAgICAgICAgICBTLmJhc2VUcmFuc2Zvcm0gPSAoMCwgci5nZXRDdXJyZW50VHJhbnNmb3JtKShTLmN0eCk7XG4gICAgICAgICAgUy5leGVjdXRlT3BlcmF0b3JMaXN0KGUpO1xuICAgICAgICAgIFMuZW5kRHJhd2luZygpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjYW52YXM6IEEuY2FudmFzLFxuICAgICAgICAgICAgc2NhbGVYOiB2LnNjYWxlLFxuICAgICAgICAgICAgc2NhbGVZOiB5LnNjYWxlLFxuICAgICAgICAgICAgb2Zmc2V0WDogRSxcbiAgICAgICAgICAgIG9mZnNldFk6IHhcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGdldFNpemVBbmRTY2FsZSh0LCBlLCBuKSB7XG4gICAgICAgICAgdCA9IE1hdGguYWJzKHQpO1xuICAgICAgICAgIGNvbnN0IGkgPSBNYXRoLm1heChUaWxpbmdQYXR0ZXJuLk1BWF9QQVRURVJOX1NJWkUsIGUpO1xuICAgICAgICAgIGxldCByID0gTWF0aC5jZWlsKHQgKiBuKTtcbiAgICAgICAgICByID49IGkgPyByID0gaSA6IG4gPSByIC8gdDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NhbGU6IG4sXG4gICAgICAgICAgICBzaXplOiByXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjbGlwQmJveCh0LCBlLCBuLCBpLCBzKSB7XG4gICAgICAgICAgY29uc3QgYSA9IGkgLSBlLFxuICAgICAgICAgICAgbyA9IHMgLSBuO1xuICAgICAgICAgIHQuY3R4LnJlY3QoZSwgbiwgYSwgbyk7XG4gICAgICAgICAgdC5jdXJyZW50LnVwZGF0ZVJlY3RNaW5NYXgoKDAsIHIuZ2V0Q3VycmVudFRyYW5zZm9ybSkodC5jdHgpLCBbZSwgbiwgaSwgc10pO1xuICAgICAgICAgIHQuY2xpcCgpO1xuICAgICAgICAgIHQuZW5kUGF0aCgpO1xuICAgICAgICB9XG4gICAgICAgIHNldEZpbGxBbmRTdHJva2VTdHlsZVRvQ29udGV4dCh0LCBlLCBuKSB7XG4gICAgICAgICAgY29uc3QgciA9IHQuY3R4LFxuICAgICAgICAgICAgcyA9IHQuY3VycmVudDtcbiAgICAgICAgICBzd2l0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNhc2UgYTpcbiAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuY3R4O1xuICAgICAgICAgICAgICByLmZpbGxTdHlsZSA9IHQuZmlsbFN0eWxlO1xuICAgICAgICAgICAgICByLnN0cm9rZVN0eWxlID0gdC5zdHJva2VTdHlsZTtcbiAgICAgICAgICAgICAgcy5maWxsQ29sb3IgPSB0LmZpbGxTdHlsZTtcbiAgICAgICAgICAgICAgcy5zdHJva2VDb2xvciA9IHQuc3Ryb2tlU3R5bGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBvOlxuICAgICAgICAgICAgICBjb25zdCBsID0gaS5VdGlsLm1ha2VIZXhDb2xvcihuWzBdLCBuWzFdLCBuWzJdKTtcbiAgICAgICAgICAgICAgci5maWxsU3R5bGUgPSBsO1xuICAgICAgICAgICAgICByLnN0cm9rZVN0eWxlID0gbDtcbiAgICAgICAgICAgICAgcy5maWxsQ29sb3IgPSBsO1xuICAgICAgICAgICAgICBzLnN0cm9rZUNvbG9yID0gbDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgaS5Gb3JtYXRFcnJvcihcIlVuc3VwcG9ydGVkIHBhaW50IHR5cGU6IFwiLmNvbmNhdChlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldFBhdHRlcm4odCwgZSwgbiwgcikge1xuICAgICAgICAgIGxldCBhID0gbjtcbiAgICAgICAgICBpZiAociAhPT0gcy5TSEFESU5HKSB7XG4gICAgICAgICAgICBhID0gaS5VdGlsLnRyYW5zZm9ybShhLCBlLmJhc2VUcmFuc2Zvcm0pO1xuICAgICAgICAgICAgdGhpcy5tYXRyaXggJiYgKGEgPSBpLlV0aWwudHJhbnNmb3JtKGEsIHRoaXMubWF0cml4KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLmNyZWF0ZVBhdHRlcm5DYW52YXMoZSk7XG4gICAgICAgICAgbGV0IGwgPSBuZXcgRE9NTWF0cml4KGEpO1xuICAgICAgICAgIGwgPSBsLnRyYW5zbGF0ZShvLm9mZnNldFgsIG8ub2Zmc2V0WSk7XG4gICAgICAgICAgbCA9IGwuc2NhbGUoMSAvIG8uc2NhbGVYLCAxIC8gby5zY2FsZVkpO1xuICAgICAgICAgIGNvbnN0IGMgPSB0LmNyZWF0ZVBhdHRlcm4oby5jYW52YXMsIFwicmVwZWF0XCIpO1xuICAgICAgICAgIGMuc2V0VHJhbnNmb3JtKGwpO1xuICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfZGVmaW5lUHJvcGVydHkoVGlsaW5nUGF0dGVybiwgXCJNQVhfUEFUVEVSTl9TSVpFXCIsIDNlMyk7XG4gICAgICBlLlRpbGluZ1BhdHRlcm4gPSBUaWxpbmdQYXR0ZXJuO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLmNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBID0gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkE7XG4gICAgICBlLmNvbnZlcnRUb1JHQkEgPSBmdW5jdGlvbiBjb252ZXJ0VG9SR0JBKHQpIHtcbiAgICAgICAgc3dpdGNoICh0LmtpbmQpIHtcbiAgICAgICAgICBjYXNlIGkuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQOlxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHQpO1xuICAgICAgICAgIGNhc2UgaS5JbWFnZUtpbmQuUkdCXzI0QlBQOlxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEodCkge1xuICAgICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICAgICAgc3JjOiBlLFxuICAgICAgICAgICAgICAgICAgc3JjUG9zOiBuID0gMCxcbiAgICAgICAgICAgICAgICAgIGRlc3Q6IHIsXG4gICAgICAgICAgICAgICAgICBkZXN0UG9zOiBzID0gMCxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBhLFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBvXG4gICAgICAgICAgICAgICAgfSA9IHQsXG4gICAgICAgICAgICAgICAgbCA9IDA7XG4gICAgICAgICAgICAgIGNvbnN0IGMgPSBlLmxlbmd0aCA+PiAyLFxuICAgICAgICAgICAgICAgIGggPSBuZXcgVWludDMyQXJyYXkoZS5idWZmZXIsIG4sIGMpO1xuICAgICAgICAgICAgICBpZiAoaS5GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbikge1xuICAgICAgICAgICAgICAgIGZvciAoOyBsIDwgYyAtIDI7IGwgKz0gMywgcyArPSA0KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB0ID0gaFtsXSxcbiAgICAgICAgICAgICAgICAgICAgZSA9IGhbbCArIDFdLFxuICAgICAgICAgICAgICAgICAgICBuID0gaFtsICsgMl07XG4gICAgICAgICAgICAgICAgICByW3NdID0gNDI3ODE5MDA4MCB8IHQ7XG4gICAgICAgICAgICAgICAgICByW3MgKyAxXSA9IHQgPj4+IDI0IHwgZSA8PCA4IHwgNDI3ODE5MDA4MDtcbiAgICAgICAgICAgICAgICAgIHJbcyArIDJdID0gZSA+Pj4gMTYgfCBuIDw8IDE2IHwgNDI3ODE5MDA4MDtcbiAgICAgICAgICAgICAgICAgIHJbcyArIDNdID0gbiA+Pj4gOCB8IDQyNzgxOTAwODA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSA0ICogbCwgbiA9IGUubGVuZ3RoOyB0IDwgbjsgdCArPSAzKSByW3MrK10gPSBlW3RdIHwgZVt0ICsgMV0gPDwgOCB8IGVbdCArIDJdIDw8IDE2IHwgNDI3ODE5MDA4MDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKDsgbCA8IGMgLSAyOyBsICs9IDMsIHMgKz0gNCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IGhbbF0sXG4gICAgICAgICAgICAgICAgICAgIGUgPSBoW2wgKyAxXSxcbiAgICAgICAgICAgICAgICAgICAgbiA9IGhbbCArIDJdO1xuICAgICAgICAgICAgICAgICAgcltzXSA9IDI1NSB8IHQ7XG4gICAgICAgICAgICAgICAgICByW3MgKyAxXSA9IHQgPDwgMjQgfCBlID4+PiA4IHwgMjU1O1xuICAgICAgICAgICAgICAgICAgcltzICsgMl0gPSBlIDw8IDE2IHwgbiA+Pj4gMTYgfCAyNTU7XG4gICAgICAgICAgICAgICAgICByW3MgKyAzXSA9IG4gPDwgOCB8IDI1NTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdCA9IDQgKiBsLCBuID0gZS5sZW5ndGg7IHQgPCBuOyB0ICs9IDMpIHJbcysrXSA9IGVbdF0gPDwgMjQgfCBlW3QgKyAxXSA8PCAxNiB8IGVbdCArIDJdIDw8IDggfCAyNTU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzcmNQb3M6IG4sXG4gICAgICAgICAgICAgICAgZGVzdFBvczogc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH07XG4gICAgICBlLmdyYXlUb1JHQkEgPSBmdW5jdGlvbiBncmF5VG9SR0JBKHQsIGUpIHtcbiAgICAgICAgaWYgKGkuRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuKyspIGVbbl0gPSA2NTc5MyAqIHRbbl0gfCA0Mjc4MTkwMDgwO2Vsc2UgZm9yIChsZXQgbiA9IDAsIGkgPSB0Lmxlbmd0aDsgbiA8IGk7IG4rKykgZVtuXSA9IDE2ODQzMDA4ICogdFtuXSB8IDI1NTtcbiAgICAgIH07XG4gICAgICBuKDkzKTtcbiAgICAgIG4oMTAxKTtcbiAgICAgIG4oMTAyKTtcbiAgICAgIG4oMTA1KTtcbiAgICAgIG4oMTA3KTtcbiAgICAgIG4oMTA5KTtcbiAgICAgIG4oMTEzKTtcbiAgICAgIG4oMTE2KTtcbiAgICAgIG4oMTIzKTtcbiAgICAgIHZhciBpID0gbigxKTtcbiAgICAgIGZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHQpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBzcmM6IGUsXG4gICAgICAgICAgc3JjUG9zOiBuID0gMCxcbiAgICAgICAgICBkZXN0OiByLFxuICAgICAgICAgIHdpZHRoOiBzLFxuICAgICAgICAgIGhlaWdodDogYSxcbiAgICAgICAgICBub25CbGFja0NvbG9yOiBvID0gNDI5NDk2NzI5NSxcbiAgICAgICAgICBpbnZlcnNlRGVjb2RlOiBsID0gITFcbiAgICAgICAgfSA9IHQ7XG4gICAgICAgIGNvbnN0IGMgPSBpLkZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuID8gNDI3ODE5MDA4MCA6IDI1NSxcbiAgICAgICAgICBbaCwgZF0gPSBsID8gW28sIGNdIDogW2MsIG9dLFxuICAgICAgICAgIHUgPSBzID4+IDMsXG4gICAgICAgICAgcCA9IDcgJiBzLFxuICAgICAgICAgIGYgPSBlLmxlbmd0aDtcbiAgICAgICAgciA9IG5ldyBVaW50MzJBcnJheShyLmJ1ZmZlcik7XG4gICAgICAgIGxldCBnID0gMDtcbiAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCBhOyB0KyspIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgPSBuICsgdTsgbiA8IHQ7IG4rKykge1xuICAgICAgICAgICAgY29uc3QgdCA9IG4gPCBmID8gZVtuXSA6IDI1NTtcbiAgICAgICAgICAgIHJbZysrXSA9IDEyOCAmIHQgPyBkIDogaDtcbiAgICAgICAgICAgIHJbZysrXSA9IDY0ICYgdCA/IGQgOiBoO1xuICAgICAgICAgICAgcltnKytdID0gMzIgJiB0ID8gZCA6IGg7XG4gICAgICAgICAgICByW2crK10gPSAxNiAmIHQgPyBkIDogaDtcbiAgICAgICAgICAgIHJbZysrXSA9IDggJiB0ID8gZCA6IGg7XG4gICAgICAgICAgICByW2crK10gPSA0ICYgdCA/IGQgOiBoO1xuICAgICAgICAgICAgcltnKytdID0gMiAmIHQgPyBkIDogaDtcbiAgICAgICAgICAgIHJbZysrXSA9IDEgJiB0ID8gZCA6IGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgwID09PSBwKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCB0ID0gbiA8IGYgPyBlW24rK10gOiAyNTU7XG4gICAgICAgICAgZm9yIChsZXQgZSA9IDA7IGUgPCBwOyBlKyspIHJbZysrXSA9IHQgJiAxIDw8IDcgLSBlID8gZCA6IGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzcmNQb3M6IG4sXG4gICAgICAgICAgZGVzdFBvczogZ1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sICh0LCBlKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLkdsb2JhbFdvcmtlck9wdGlvbnMgPSB2b2lkIDA7XG4gICAgICBjb25zdCBuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIGUuR2xvYmFsV29ya2VyT3B0aW9ucyA9IG47XG4gICAgICBuLndvcmtlclBvcnQgPSBudWxsO1xuICAgICAgbi53b3JrZXJTcmMgPSBcIlwiO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9YdCwgXyR0LCBfS3Q7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuTWVzc2FnZUhhbmRsZXIgPSB2b2lkIDA7XG4gICAgICBuKDIpO1xuICAgICAgdmFyIGkgPSBuKDEpO1xuICAgICAgY29uc3QgciA9IDEsXG4gICAgICAgIHMgPSAyLFxuICAgICAgICBhID0gMSxcbiAgICAgICAgbyA9IDIsXG4gICAgICAgIGwgPSAzLFxuICAgICAgICBjID0gNCxcbiAgICAgICAgaCA9IDUsXG4gICAgICAgIGQgPSA2LFxuICAgICAgICB1ID0gNyxcbiAgICAgICAgcCA9IDg7XG4gICAgICBmdW5jdGlvbiB3cmFwUmVhc29uKHQpIHtcbiAgICAgICAgdCBpbnN0YW5jZW9mIEVycm9yIHx8IFwib2JqZWN0XCIgPT0gdHlwZW9mIHQgJiYgbnVsbCAhPT0gdCB8fCAoMCwgaS51bnJlYWNoYWJsZSkoJ3dyYXBSZWFzb246IEV4cGVjdGVkIFwicmVhc29uXCIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtcbiAgICAgICAgc3dpdGNoICh0Lm5hbWUpIHtcbiAgICAgICAgICBjYXNlIFwiQWJvcnRFeGNlcHRpb25cIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgaS5BYm9ydEV4Y2VwdGlvbih0Lm1lc3NhZ2UpO1xuICAgICAgICAgIGNhc2UgXCJNaXNzaW5nUERGRXhjZXB0aW9uXCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3IGkuTWlzc2luZ1BERkV4Y2VwdGlvbih0Lm1lc3NhZ2UpO1xuICAgICAgICAgIGNhc2UgXCJQYXNzd29yZEV4Y2VwdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBpLlBhc3N3b3JkRXhjZXB0aW9uKHQubWVzc2FnZSwgdC5jb2RlKTtcbiAgICAgICAgICBjYXNlIFwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uXCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3IGkuVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uKHQubWVzc2FnZSwgdC5zdGF0dXMpO1xuICAgICAgICAgIGNhc2UgXCJVbmtub3duRXJyb3JFeGNlcHRpb25cIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgaS5Vbmtub3duRXJyb3JFeGNlcHRpb24odC5tZXNzYWdlLCB0LmRldGFpbHMpO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IGkuVW5rbm93bkVycm9yRXhjZXB0aW9uKHQubWVzc2FnZSwgdC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5NZXNzYWdlSGFuZGxlciA9IChfWHQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKSwgXyR0ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCksIF9LdCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpLCBjbGFzcyBNZXNzYWdlSGFuZGxlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF90MTEsIF9lMTAsIF9uNikge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfS3QpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfJHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfWHQpO1xuICAgICAgICAgIHRoaXMuc291cmNlTmFtZSA9IF90MTE7XG4gICAgICAgICAgdGhpcy50YXJnZXROYW1lID0gX2UxMDtcbiAgICAgICAgICB0aGlzLmNvbU9iaiA9IF9uNjtcbiAgICAgICAgICB0aGlzLmNhbGxiYWNrSWQgPSAxO1xuICAgICAgICAgIHRoaXMuc3RyZWFtSWQgPSAxO1xuICAgICAgICAgIHRoaXMuc3RyZWFtU2lua3MgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuc3RyZWFtQ29udHJvbGxlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuYWN0aW9uSGFuZGxlciA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UgPSB0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0LmRhdGE7XG4gICAgICAgICAgICBpZiAoZS50YXJnZXROYW1lICE9PSB0aGlzLnNvdXJjZU5hbWUpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChlLnN0cmVhbSkge1xuICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF8kdCwgXyR0MikuY2FsbCh0aGlzLCBlKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUuY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IGUuY2FsbGJhY2tJZCxcbiAgICAgICAgICAgICAgICBuID0gdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtcbiAgICAgICAgICAgICAgaWYgKCFuKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmVzb2x2ZSBjYWxsYmFjayBcIi5jb25jYXQodCkpO1xuICAgICAgICAgICAgICBkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1t0XTtcbiAgICAgICAgICAgICAgaWYgKGUuY2FsbGJhY2sgPT09IHIpIG4ucmVzb2x2ZShlLmRhdGEpO2Vsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlLmNhbGxiYWNrICE9PSBzKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2VcIik7XG4gICAgICAgICAgICAgICAgbi5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dO1xuICAgICAgICAgICAgaWYgKCFpKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGFjdGlvbiBmcm9tIHdvcmtlcjogXCIuY29uY2F0KGUuYWN0aW9uKSk7XG4gICAgICAgICAgICBpZiAoZS5jYWxsYmFja0lkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLnNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgYSA9IGUuc291cmNlTmFtZTtcbiAgICAgICAgICAgICAgbmV3IFByb21pc2UoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB0KGkoZS5kYXRhKSk7XG4gICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBfbjYucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgc291cmNlTmFtZTogdCxcbiAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IGEsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogcixcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrSWQ6IGUuY2FsbGJhY2tJZCxcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICBfbjYucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgc291cmNlTmFtZTogdCxcbiAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IGEsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogcyxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrSWQ6IGUuY2FsbGJhY2tJZCxcbiAgICAgICAgICAgICAgICAgIHJlYXNvbjogd3JhcFJlYXNvbihpKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBlLnN0cmVhbUlkID8gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfWHQsIF9YdDIpLmNhbGwodGhpcywgZSkgOiBpKGUuZGF0YSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBfbjYuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIG9uKHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5hY3Rpb25IYW5kbGVyO1xuICAgICAgICAgIGlmIChuW3RdKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkIFxcXCJcIi5jb25jYXQodCwgXCJcXFwiXCIpKTtcbiAgICAgICAgICBuW3RdID0gZTtcbiAgICAgICAgfVxuICAgICAgICBzZW5kKHQsIGUsIG4pIHtcbiAgICAgICAgICB0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLnNvdXJjZU5hbWUsXG4gICAgICAgICAgICB0YXJnZXROYW1lOiB0aGlzLnRhcmdldE5hbWUsXG4gICAgICAgICAgICBhY3Rpb246IHQsXG4gICAgICAgICAgICBkYXRhOiBlXG4gICAgICAgICAgfSwgbik7XG4gICAgICAgIH1cbiAgICAgICAgc2VuZFdpdGhQcm9taXNlKHQsIGUsIG4pIHtcbiAgICAgICAgICBjb25zdCByID0gdGhpcy5jYWxsYmFja0lkKyssXG4gICAgICAgICAgICBzID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3JdID0gcztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLnNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgIHRhcmdldE5hbWU6IHRoaXMudGFyZ2V0TmFtZSxcbiAgICAgICAgICAgICAgYWN0aW9uOiB0LFxuICAgICAgICAgICAgICBjYWxsYmFja0lkOiByLFxuICAgICAgICAgICAgICBkYXRhOiBlXG4gICAgICAgICAgICB9LCBuKTtcbiAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICBzLnJlamVjdCh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHMucHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBzZW5kV2l0aFN0cmVhbSh0LCBlLCBuLCByKSB7XG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMuc3RyZWFtSWQrKyxcbiAgICAgICAgICAgIG8gPSB0aGlzLnNvdXJjZU5hbWUsXG4gICAgICAgICAgICBsID0gdGhpcy50YXJnZXROYW1lLFxuICAgICAgICAgICAgYyA9IHRoaXMuY29tT2JqO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgc3RhcnQ6IG4gPT4ge1xuICAgICAgICAgICAgICBjb25zdCBhID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICAgICAgdGhpcy5zdHJlYW1Db250cm9sbGVyc1tzXSA9IHtcbiAgICAgICAgICAgICAgICBjb250cm9sbGVyOiBuLFxuICAgICAgICAgICAgICAgIHN0YXJ0Q2FsbDogYSxcbiAgICAgICAgICAgICAgICBwdWxsQ2FsbDogbnVsbCxcbiAgICAgICAgICAgICAgICBjYW5jZWxDYWxsOiBudWxsLFxuICAgICAgICAgICAgICAgIGlzQ2xvc2VkOiAhMVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBvLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IGwsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiB0LFxuICAgICAgICAgICAgICAgIHN0cmVhbUlkOiBzLFxuICAgICAgICAgICAgICAgIGRhdGE6IGUsXG4gICAgICAgICAgICAgICAgZGVzaXJlZFNpemU6IG4uZGVzaXJlZFNpemVcbiAgICAgICAgICAgICAgfSwgcik7XG4gICAgICAgICAgICAgIHJldHVybiBhLnByb21pc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHVsbDogdCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgICAgICB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3NdLnB1bGxDYWxsID0gZTtcbiAgICAgICAgICAgICAgYy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogbyxcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiBsLFxuICAgICAgICAgICAgICAgIHN0cmVhbTogZCxcbiAgICAgICAgICAgICAgICBzdHJlYW1JZDogcyxcbiAgICAgICAgICAgICAgICBkZXNpcmVkU2l6ZTogdC5kZXNpcmVkU2l6ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIGUucHJvbWlzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYW5jZWw6IHQgPT4ge1xuICAgICAgICAgICAgICAoMCwgaS5hc3NlcnQpKHQgaW5zdGFuY2VvZiBFcnJvciwgXCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uXCIpO1xuICAgICAgICAgICAgICBjb25zdCBlID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICAgICAgdGhpcy5zdHJlYW1Db250cm9sbGVyc1tzXS5jYW5jZWxDYWxsID0gZTtcbiAgICAgICAgICAgICAgdGhpcy5zdHJlYW1Db250cm9sbGVyc1tzXS5pc0Nsb3NlZCA9ICEwO1xuICAgICAgICAgICAgICBjLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBvLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IGwsXG4gICAgICAgICAgICAgICAgc3RyZWFtOiBhLFxuICAgICAgICAgICAgICAgIHN0cmVhbUlkOiBzLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogd3JhcFJlYXNvbih0KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgcmV0dXJuIGUucHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBuKTtcbiAgICAgICAgfVxuICAgICAgICBkZXN0cm95KCkge1xuICAgICAgICAgIHRoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBmdW5jdGlvbiBfWHQyKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHQuc3RyZWFtSWQsXG4gICAgICAgICAgbiA9IHRoaXMuc291cmNlTmFtZSxcbiAgICAgICAgICByID0gdC5zb3VyY2VOYW1lLFxuICAgICAgICAgIHMgPSB0aGlzLmNvbU9iaixcbiAgICAgICAgICBhID0gdGhpcyxcbiAgICAgICAgICBvID0gdGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXSxcbiAgICAgICAgICBkID0ge1xuICAgICAgICAgICAgZW5xdWV1ZSh0KSB7XG4gICAgICAgICAgICAgIGxldCBhID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiAxLFxuICAgICAgICAgICAgICAgIG8gPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHZvaWQgMDtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgY29uc3QgbCA9IHRoaXMuZGVzaXJlZFNpemU7XG4gICAgICAgICAgICAgIHRoaXMuZGVzaXJlZFNpemUgLT0gYTtcbiAgICAgICAgICAgICAgaWYgKGwgPiAwICYmIHRoaXMuZGVzaXJlZFNpemUgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2lua0NhcGFiaWxpdHkgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVhZHkgPSB0aGlzLnNpbmtDYXBhYmlsaXR5LnByb21pc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogbixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiByLFxuICAgICAgICAgICAgICAgIHN0cmVhbTogYyxcbiAgICAgICAgICAgICAgICBzdHJlYW1JZDogZSxcbiAgICAgICAgICAgICAgICBjaHVuazogdFxuICAgICAgICAgICAgICB9LCBvKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbG9zZSgpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NhbmNlbGxlZCA9ICEwO1xuICAgICAgICAgICAgICAgIHMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgICAgc291cmNlTmFtZTogbixcbiAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IHIsXG4gICAgICAgICAgICAgICAgICBzdHJlYW06IGwsXG4gICAgICAgICAgICAgICAgICBzdHJlYW1JZDogZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBhLnN0cmVhbVNpbmtzW2VdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3IodCkge1xuICAgICAgICAgICAgICAoMCwgaS5hc3NlcnQpKHQgaW5zdGFuY2VvZiBFcnJvciwgXCJlcnJvciBtdXN0IGhhdmUgYSB2YWxpZCByZWFzb25cIik7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc0NhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDYW5jZWxsZWQgPSAhMDtcbiAgICAgICAgICAgICAgICBzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IG4sXG4gICAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiByLFxuICAgICAgICAgICAgICAgICAgc3RyZWFtOiBoLFxuICAgICAgICAgICAgICAgICAgc3RyZWFtSWQ6IGUsXG4gICAgICAgICAgICAgICAgICByZWFzb246IHdyYXBSZWFzb24odClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpbmtDYXBhYmlsaXR5OiBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpLFxuICAgICAgICAgICAgb25QdWxsOiBudWxsLFxuICAgICAgICAgICAgb25DYW5jZWw6IG51bGwsXG4gICAgICAgICAgICBpc0NhbmNlbGxlZDogITEsXG4gICAgICAgICAgICBkZXNpcmVkU2l6ZTogdC5kZXNpcmVkU2l6ZSxcbiAgICAgICAgICAgIHJlYWR5OiBudWxsXG4gICAgICAgICAgfTtcbiAgICAgICAgZC5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgIGQucmVhZHkgPSBkLnNpbmtDYXBhYmlsaXR5LnByb21pc2U7XG4gICAgICAgIHRoaXMuc3RyZWFtU2lua3NbZV0gPSBkO1xuICAgICAgICBuZXcgUHJvbWlzZShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIGUobyh0LmRhdGEsIGQpKTtcbiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICBzb3VyY2VOYW1lOiBuLFxuICAgICAgICAgICAgdGFyZ2V0TmFtZTogcixcbiAgICAgICAgICAgIHN0cmVhbTogcCxcbiAgICAgICAgICAgIHN0cmVhbUlkOiBlLFxuICAgICAgICAgICAgc3VjY2VzczogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICBzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHNvdXJjZU5hbWU6IG4sXG4gICAgICAgICAgICB0YXJnZXROYW1lOiByLFxuICAgICAgICAgICAgc3RyZWFtOiBwLFxuICAgICAgICAgICAgc3RyZWFtSWQ6IGUsXG4gICAgICAgICAgICByZWFzb246IHdyYXBSZWFzb24odClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfJHQyKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHQuc3RyZWFtSWQsXG4gICAgICAgICAgbiA9IHRoaXMuc291cmNlTmFtZSxcbiAgICAgICAgICByID0gdC5zb3VyY2VOYW1lLFxuICAgICAgICAgIHMgPSB0aGlzLmNvbU9iaixcbiAgICAgICAgICBmID0gdGhpcy5zdHJlYW1Db250cm9sbGVyc1tlXSxcbiAgICAgICAgICBnID0gdGhpcy5zdHJlYW1TaW5rc1tlXTtcbiAgICAgICAgc3dpdGNoICh0LnN0cmVhbSkge1xuICAgICAgICAgIGNhc2UgcDpcbiAgICAgICAgICAgIHQuc3VjY2VzcyA/IGYuc3RhcnRDYWxsLnJlc29sdmUoKSA6IGYuc3RhcnRDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIHU6XG4gICAgICAgICAgICB0LnN1Y2Nlc3MgPyBmLnB1bGxDYWxsLnJlc29sdmUoKSA6IGYucHVsbENhbGwucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgZDpcbiAgICAgICAgICAgIGlmICghZykge1xuICAgICAgICAgICAgICBzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBuLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IHIsXG4gICAgICAgICAgICAgICAgc3RyZWFtOiB1LFxuICAgICAgICAgICAgICAgIHN0cmVhbUlkOiBlLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICEwXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGcuZGVzaXJlZFNpemUgPD0gMCAmJiB0LmRlc2lyZWRTaXplID4gMCAmJiBnLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgICAgIGcuZGVzaXJlZFNpemUgPSB0LmRlc2lyZWRTaXplO1xuICAgICAgICAgICAgbmV3IFByb21pc2UoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgdmFyIF9nJG9uUHVsbDtcbiAgICAgICAgICAgICAgdCgoX2ckb25QdWxsID0gZy5vblB1bGwpID09PSBudWxsIHx8IF9nJG9uUHVsbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2ckb25QdWxsLmNhbGwoZykpO1xuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHMucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIHNvdXJjZU5hbWU6IG4sXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogcixcbiAgICAgICAgICAgICAgICBzdHJlYW06IHUsXG4gICAgICAgICAgICAgICAgc3RyZWFtSWQ6IGUsXG4gICAgICAgICAgICAgICAgc3VjY2VzczogITBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgICBzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBuLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IHIsXG4gICAgICAgICAgICAgICAgc3RyZWFtOiB1LFxuICAgICAgICAgICAgICAgIHN0cmVhbUlkOiBlLFxuICAgICAgICAgICAgICAgIHJlYXNvbjogd3JhcFJlYXNvbih0KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBjOlxuICAgICAgICAgICAgKDAsIGkuYXNzZXJ0KShmLCBcImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXJcIik7XG4gICAgICAgICAgICBpZiAoZi5pc0Nsb3NlZCkgYnJlYWs7XG4gICAgICAgICAgICBmLmNvbnRyb2xsZXIuZW5xdWV1ZSh0LmNodW5rKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgbDpcbiAgICAgICAgICAgICgwLCBpLmFzc2VydCkoZiwgXCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlclwiKTtcbiAgICAgICAgICAgIGlmIChmLmlzQ2xvc2VkKSBicmVhaztcbiAgICAgICAgICAgIGYuaXNDbG9zZWQgPSAhMDtcbiAgICAgICAgICAgIGYuY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfS3QsIF9LdDIpLmNhbGwodGhpcywgZiwgZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIGg6XG4gICAgICAgICAgICAoMCwgaS5hc3NlcnQpKGYsIFwiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXJcIik7XG4gICAgICAgICAgICBmLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbih0LnJlYXNvbikpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfS3QsIF9LdDIpLmNhbGwodGhpcywgZiwgZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIG86XG4gICAgICAgICAgICB0LnN1Y2Nlc3MgPyBmLmNhbmNlbENhbGwucmVzb2x2ZSgpIDogZi5jYW5jZWxDYWxsLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9LdCwgX0t0MikuY2FsbCh0aGlzLCBmLCBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgYTpcbiAgICAgICAgICAgIGlmICghZykgYnJlYWs7XG4gICAgICAgICAgICBuZXcgUHJvbWlzZShmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICB2YXIgX2ckb25DYW5jZWw7XG4gICAgICAgICAgICAgIGUoKF9nJG9uQ2FuY2VsID0gZy5vbkNhbmNlbCkgPT09IG51bGwgfHwgX2ckb25DYW5jZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nJG9uQ2FuY2VsLmNhbGwoZywgd3JhcFJlYXNvbih0LnJlYXNvbikpKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBzLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiBuLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IHIsXG4gICAgICAgICAgICAgICAgc3RyZWFtOiBvLFxuICAgICAgICAgICAgICAgIHN0cmVhbUlkOiBlLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICEwXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgcy5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogbixcbiAgICAgICAgICAgICAgICB0YXJnZXROYW1lOiByLFxuICAgICAgICAgICAgICAgIHN0cmVhbTogbyxcbiAgICAgICAgICAgICAgICBzdHJlYW1JZDogZSxcbiAgICAgICAgICAgICAgICByZWFzb246IHdyYXBSZWFzb24odClcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGcuc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24odC5yZWFzb24pKTtcbiAgICAgICAgICAgIGcuaXNDYW5jZWxsZWQgPSAhMDtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW2VdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgc3RyZWFtIGNhc2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIF9LdDIodCwgZSkge1xuICAgICAgICB2YXIgX3Qkc3RhcnRDYWxsLCBfdCRwdWxsQ2FsbCwgX3QkY2FuY2VsQ2FsbDtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFsoX3Qkc3RhcnRDYWxsID0gdC5zdGFydENhbGwpID09PSBudWxsIHx8IF90JHN0YXJ0Q2FsbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3Qkc3RhcnRDYWxsLnByb21pc2UsIChfdCRwdWxsQ2FsbCA9IHQucHVsbENhbGwpID09PSBudWxsIHx8IF90JHB1bGxDYWxsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdCRwdWxsQ2FsbC5wcm9taXNlLCAoX3QkY2FuY2VsQ2FsbCA9IHQuY2FuY2VsQ2FsbCkgPT09IG51bGwgfHwgX3QkY2FuY2VsQ2FsbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3QkY2FuY2VsQ2FsbC5wcm9taXNlXSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW2VdO1xuICAgICAgfVxuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9ZdCwgX0p0O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLk1ldGFkYXRhID0gdm9pZCAwO1xuICAgICAgdmFyIGkgPSBuKDEpO1xuICAgICAgZS5NZXRhZGF0YSA9IChfWXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKSwgX0p0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCksIGNsYXNzIE1ldGFkYXRhIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9ZdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0p0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgcGFyc2VkRGF0YTogZSxcbiAgICAgICAgICAgIHJhd0RhdGE6IG5cbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1l0LCBlKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0p0LCBuKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRSYXcoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSnQpO1xuICAgICAgICB9XG4gICAgICAgIGdldCh0KSB7XG4gICAgICAgICAgdmFyIF9jbGFzc1ByaXZhdGVGaWVsZEdldDg7XG4gICAgICAgICAgcmV0dXJuIChfY2xhc3NQcml2YXRlRmllbGRHZXQ4ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZdCkuZ2V0KHQpKSAhPT0gbnVsbCAmJiBfY2xhc3NQcml2YXRlRmllbGRHZXQ4ICE9PSB2b2lkIDAgPyBfY2xhc3NQcml2YXRlRmllbGRHZXQ4IDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXRBbGwoKSB7XG4gICAgICAgICAgcmV0dXJuICgwLCBpLm9iamVjdEZyb21NYXApKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWXQpKTtcbiAgICAgICAgfVxuICAgICAgICBoYXModCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1l0KS5oYXModCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9adCwgX3RlLCBfZWUsIF9uZSwgX2llO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLk9wdGlvbmFsQ29udGVudENvbmZpZyA9IHZvaWQgMDtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTY5KTtcbiAgICAgIGNvbnN0IHMgPSBTeW1ib2woXCJJTlRFUk5BTFwiKTtcbiAgICAgIHZhciBfUXQgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNsYXNzIE9wdGlvbmFsQ29udGVudEdyb3VwIHtcbiAgICAgICAgY29uc3RydWN0b3IodCwgZSkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9RdCwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm5hbWUgPSB0O1xuICAgICAgICAgIHRoaXMuaW50ZW50ID0gZTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgdmlzaWJsZSgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9RdCk7XG4gICAgICAgIH1cbiAgICAgICAgX3NldFZpc2libGUodCwgZSkge1xuICAgICAgICAgIHQgIT09IHMgJiYgKDAsIGkudW5yZWFjaGFibGUpKFwiSW50ZXJuYWwgbWV0aG9kIGBfc2V0VmlzaWJsZWAgY2FsbGVkLlwiKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1F0LCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5PcHRpb25hbENvbnRlbnRDb25maWcgPSAoX1p0ID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCksIF90ZSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpLCBfZWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKSwgX25lID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCksIF9pZSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpLCBjbGFzcyBPcHRpb25hbENvbnRlbnRDb25maWcge1xuICAgICAgICBjb25zdHJ1Y3RvcihfdDEyKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9pZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1p0LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3RlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgTWFwKClcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZWUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbmUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLm5hbWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY3JlYXRvciA9IG51bGw7XG4gICAgICAgICAgaWYgKG51bGwgIT09IF90MTIpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IF90MTIubmFtZTtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRvciA9IF90MTIuY3JlYXRvcjtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbmUsIF90MTIub3JkZXIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIF90MTIuZ3JvdXBzKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5zZXQoZS5pZCwgbmV3IE9wdGlvbmFsQ29udGVudEdyb3VwKGUubmFtZSwgZS5pbnRlbnQpKTtcbiAgICAgICAgICAgIGlmIChcIk9GRlwiID09PSBfdDEyLmJhc2VTdGF0ZSkgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLnZhbHVlcygpKSB0Ll9zZXRWaXNpYmxlKHMsICExKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBfdDEyLm9uKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5nZXQoZSkuX3NldFZpc2libGUocywgITApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIF90MTIub2ZmKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5nZXQoZSkuX3NldFZpc2libGUocywgITEpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9lZSwgdGhpcy5nZXRIYXNoKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpc1Zpc2libGUodCkge1xuICAgICAgICAgIGlmICgwID09PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5zaXplKSByZXR1cm4gITA7XG4gICAgICAgICAgaWYgKCF0KSB7XG4gICAgICAgICAgICAoMCwgaS53YXJuKShcIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGRlZmluZWQuXCIpO1xuICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXCJPQ0dcIiA9PT0gdC50eXBlKSB7XG4gICAgICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLmhhcyh0LmlkKSkge1xuICAgICAgICAgICAgICAoMCwgaS53YXJuKShcIk9wdGlvbmFsIGNvbnRlbnQgZ3JvdXAgbm90IGZvdW5kOiBcIi5jb25jYXQodC5pZCkpO1xuICAgICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90ZSkuZ2V0KHQuaWQpLnZpc2libGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcIk9DTURcIiA9PT0gdC50eXBlKSB7XG4gICAgICAgICAgICBpZiAodC5leHByZXNzaW9uKSByZXR1cm4gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfaWUsIF9pZTIpLmNhbGwodGhpcywgdC5leHByZXNzaW9uKTtcbiAgICAgICAgICAgIGlmICghdC5wb2xpY3kgfHwgXCJBbnlPblwiID09PSB0LnBvbGljeSkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdC5pZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLmhhcyhlKSkge1xuICAgICAgICAgICAgICAgICAgKDAsIGkud2FybikoXCJPcHRpb25hbCBjb250ZW50IGdyb3VwIG5vdCBmb3VuZDogXCIuY29uY2F0KGUpKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLmdldChlKS52aXNpYmxlKSByZXR1cm4gITA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFwiQWxsT25cIiA9PT0gdC5wb2xpY3kpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQuaWRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5oYXMoZSkpIHtcbiAgICAgICAgICAgICAgICAgICgwLCBpLndhcm4pKFwiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6IFwiLmNvbmNhdChlKSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90ZSkuZ2V0KGUpLnZpc2libGUpIHJldHVybiAhMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXCJBbnlPZmZcIiA9PT0gdC5wb2xpY3kpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQuaWRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5oYXMoZSkpIHtcbiAgICAgICAgICAgICAgICAgICgwLCBpLndhcm4pKFwiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6IFwiLmNvbmNhdChlKSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90ZSkuZ2V0KGUpLnZpc2libGUpIHJldHVybiAhMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXCJBbGxPZmZcIiA9PT0gdC5wb2xpY3kpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQuaWRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5oYXMoZSkpIHtcbiAgICAgICAgICAgICAgICAgICgwLCBpLndhcm4pKFwiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6IFwiLmNvbmNhdChlKSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5nZXQoZSkudmlzaWJsZSkgcmV0dXJuICExO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICgwLCBpLndhcm4pKFwiVW5rbm93biBvcHRpb25hbCBjb250ZW50IHBvbGljeSBcIi5jb25jYXQodC5wb2xpY3ksIFwiLlwiKSk7XG4gICAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgICAgfVxuICAgICAgICAgICgwLCBpLndhcm4pKFwiVW5rbm93biBncm91cCB0eXBlIFwiLmNvbmNhdCh0LnR5cGUsIFwiLlwiKSk7XG4gICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICB9XG4gICAgICAgIHNldFZpc2liaWxpdHkodCkge1xuICAgICAgICAgIGxldCBlID0gIShhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSkgfHwgYXJndW1lbnRzWzFdO1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5oYXModCkpIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLmdldCh0KS5fc2V0VmlzaWJsZShzLCAhIWUpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9adCwgbnVsbCk7XG4gICAgICAgICAgfSBlbHNlICgwLCBpLndhcm4pKFwiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6IFwiLmNvbmNhdCh0KSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGhhc0luaXRpYWxWaXNpYmlsaXR5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEhhc2goKSA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9lZSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0T3JkZXIoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpLnNpemUgPyBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25lKSA/IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbmUpLnNsaWNlKCkgOiBbLi4uX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90ZSkua2V5cygpXSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0R3JvdXBzKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5zaXplID4gMCA/ICgwLCBpLm9iamVjdEZyb21NYXApKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpKSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0R3JvdXAodCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5nZXQodCkgfHwgbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXRIYXNoKCkge1xuICAgICAgICAgIGlmIChudWxsICE9PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1p0KSkgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWnQpO1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgci5NdXJtdXJIYXNoM182NCgpO1xuICAgICAgICAgIGZvciAoY29uc3QgW2UsIG5dIG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGUpKSB0LnVwZGF0ZShcIlwiLmNvbmNhdChlLCBcIjpcIikuY29uY2F0KG4udmlzaWJsZSkpO1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1p0LCB0LmhleGRpZ2VzdCgpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBmdW5jdGlvbiBfaWUyKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHQubGVuZ3RoO1xuICAgICAgICBpZiAoZSA8IDIpIHJldHVybiAhMDtcbiAgICAgICAgY29uc3QgbiA9IHRbMF07XG4gICAgICAgIGZvciAobGV0IHIgPSAxOyByIDwgZTsgcisrKSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRbcl07XG4gICAgICAgICAgbGV0IHM7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHMgPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9pZSwgX2llMikuY2FsbCh0aGlzLCBlKTtlbHNlIHtcbiAgICAgICAgICAgIGlmICghX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90ZSkuaGFzKGUpKSB7XG4gICAgICAgICAgICAgICgwLCBpLndhcm4pKFwiT3B0aW9uYWwgY29udGVudCBncm91cCBub3QgZm91bmQ6IFwiLmNvbmNhdChlKSk7XG4gICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHMgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3RlKS5nZXQoZSkudmlzaWJsZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3dpdGNoIChuKSB7XG4gICAgICAgICAgICBjYXNlIFwiQW5kXCI6XG4gICAgICAgICAgICAgIGlmICghcykgcmV0dXJuICExO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJPclwiOlxuICAgICAgICAgICAgICBpZiAocykgcmV0dXJuICEwO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJOb3RcIjpcbiAgICAgICAgICAgICAgcmV0dXJuICFzO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJBbmRcIiA9PT0gbjtcbiAgICAgIH1cbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5QREZEYXRhVHJhbnNwb3J0U3RyZWFtID0gdm9pZCAwO1xuICAgICAgbig5Myk7XG4gICAgICBuKDEwMSk7XG4gICAgICBuKDEwMik7XG4gICAgICBuKDEwNSk7XG4gICAgICBuKDEwNyk7XG4gICAgICBuKDEwOSk7XG4gICAgICBuKDExMyk7XG4gICAgICBuKDExNik7XG4gICAgICBuKDEyMyk7XG4gICAgICBuKDg5KTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTY3KTtcbiAgICAgIGUuUERGRGF0YVRyYW5zcG9ydFN0cmVhbSA9IGNsYXNzIFBERkRhdGFUcmFuc3BvcnRTdHJlYW0ge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGxlbmd0aDogbixcbiAgICAgICAgICAgIGluaXRpYWxEYXRhOiByLFxuICAgICAgICAgICAgcHJvZ3Jlc3NpdmVEb25lOiBzID0gITEsXG4gICAgICAgICAgICBjb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZTogYSA9IG51bGwsXG4gICAgICAgICAgICBkaXNhYmxlUmFuZ2U6IG8gPSAhMSxcbiAgICAgICAgICAgIGRpc2FibGVTdHJlYW06IGwgPSAhMVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgICgwLCBpLmFzc2VydCkoZSwgJ1BERkRhdGFUcmFuc3BvcnRTdHJlYW0gLSBtaXNzaW5nIHJlcXVpcmVkIFwicGRmRGF0YVJhbmdlVHJhbnNwb3J0XCIgYXJndW1lbnQuJyk7XG4gICAgICAgICAgdGhpcy5fcXVldWVkQ2h1bmtzID0gW107XG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NpdmVEb25lID0gcztcbiAgICAgICAgICB0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSA9IGE7XG4gICAgICAgICAgaWYgKChyID09PSBudWxsIHx8IHIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHIubGVuZ3RoKSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSByIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiByLmJ5dGVMZW5ndGggPT09IHIuYnVmZmVyLmJ5dGVMZW5ndGggPyByLmJ1ZmZlciA6IG5ldyBVaW50OEFycmF5KHIpLmJ1ZmZlcjtcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlZENodW5rcy5wdXNoKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQgPSBlO1xuICAgICAgICAgIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkID0gIWw7XG4gICAgICAgICAgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCA9ICFvO1xuICAgICAgICAgIHRoaXMuX2NvbnRlbnRMZW5ndGggPSBuO1xuICAgICAgICAgIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9yYW5nZVJlYWRlcnMgPSBbXTtcbiAgICAgICAgICB0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUmFuZ2VMaXN0ZW5lcigodCwgZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25SZWNlaXZlRGF0YSh7XG4gICAgICAgICAgICAgIGJlZ2luOiB0LFxuICAgICAgICAgICAgICBjaHVuazogZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LmFkZFByb2dyZXNzTGlzdGVuZXIoKHQsIGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uUHJvZ3Jlc3Moe1xuICAgICAgICAgICAgICBsb2FkZWQ6IHQsXG4gICAgICAgICAgICAgIHRvdGFsOiBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLl9wZGZEYXRhUmFuZ2VUcmFuc3BvcnQuYWRkUHJvZ3Jlc3NpdmVSZWFkTGlzdGVuZXIodCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblJlY2VpdmVEYXRhKHtcbiAgICAgICAgICAgICAgY2h1bms6IHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hZGRQcm9ncmVzc2l2ZURvbmVMaXN0ZW5lcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblByb2dyZXNzaXZlRG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC50cmFuc3BvcnRSZWFkeSgpO1xuICAgICAgICB9XG4gICAgICAgIF9vblJlY2VpdmVEYXRhKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgYmVnaW46IGUsXG4gICAgICAgICAgICBjaHVuazogblxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIGNvbnN0IHIgPSBuIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiBuLmJ5dGVMZW5ndGggPT09IG4uYnVmZmVyLmJ5dGVMZW5ndGggPyBuLmJ1ZmZlciA6IG5ldyBVaW50OEFycmF5KG4pLmJ1ZmZlcjtcbiAgICAgICAgICBpZiAodm9pZCAwID09PSBlKSB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciA/IHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLl9lbnF1ZXVlKHIpIDogdGhpcy5fcXVldWVkQ2h1bmtzLnB1c2gocik7ZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fcmFuZ2VSZWFkZXJzLnNvbWUoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgaWYgKHQuX2JlZ2luICE9PSBlKSByZXR1cm4gITE7XG4gICAgICAgICAgICAgIHQuX2VucXVldWUocik7XG4gICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgKDAsIGkuYXNzZXJ0KSh0LCBcIl9vblJlY2VpdmVEYXRhIC0gbm8gYFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlcmAgaW5zdGFuY2UgZm91bmQuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhLCBfdGhpcyRfZnVsbFJlcXVlc3RSZWEyO1xuICAgICAgICAgIHJldHVybiAoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhID0gKF90aGlzJF9mdWxsUmVxdWVzdFJlYTIgPSB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMi5fbG9hZGVkKSAhPT0gbnVsbCAmJiBfdGhpcyRfZnVsbFJlcXVlc3RSZWEgIT09IHZvaWQgMCA/IF90aGlzJF9mdWxsUmVxdWVzdFJlYSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgX29uUHJvZ3Jlc3ModCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfcmFuZ2VSZWFkZXJzJCwgX3RoaXMkX3JhbmdlUmVhZGVycyQkLCBfdGhpcyRfZnVsbFJlcXVlc3RSZWEzLCBfdGhpcyRfZnVsbFJlcXVlc3RSZWE0O1xuICAgICAgICAgIHZvaWQgMCA9PT0gdC50b3RhbCA/IChfdGhpcyRfcmFuZ2VSZWFkZXJzJCA9IHRoaXMuX3JhbmdlUmVhZGVyc1swXSkgPT09IG51bGwgfHwgX3RoaXMkX3JhbmdlUmVhZGVycyQgPT09IHZvaWQgMCB8fCAoX3RoaXMkX3JhbmdlUmVhZGVycyQkID0gX3RoaXMkX3JhbmdlUmVhZGVycyQub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX3RoaXMkX3JhbmdlUmVhZGVycyQkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfcmFuZ2VSZWFkZXJzJCQuY2FsbChfdGhpcyRfcmFuZ2VSZWFkZXJzJCwge1xuICAgICAgICAgICAgbG9hZGVkOiB0LmxvYWRlZFxuICAgICAgICAgIH0pIDogKF90aGlzJF9mdWxsUmVxdWVzdFJlYTMgPSB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMyA9PT0gdm9pZCAwIHx8IChfdGhpcyRfZnVsbFJlcXVlc3RSZWE0ID0gX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMy5vblByb2dyZXNzKSA9PT0gbnVsbCB8fCBfdGhpcyRfZnVsbFJlcXVlc3RSZWE0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfZnVsbFJlcXVlc3RSZWE0LmNhbGwoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMywge1xuICAgICAgICAgICAgbG9hZGVkOiB0LmxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsOiB0LnRvdGFsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgX29uUHJvZ3Jlc3NpdmVEb25lKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfZnVsbFJlcXVlc3RSZWE1O1xuICAgICAgICAgIChfdGhpcyRfZnVsbFJlcXVlc3RSZWE1ID0gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpID09PSBudWxsIHx8IF90aGlzJF9mdWxsUmVxdWVzdFJlYTUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVxdWVzdFJlYTUucHJvZ3Jlc3NpdmVEb25lKCk7XG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3NpdmVEb25lID0gITA7XG4gICAgICAgIH1cbiAgICAgICAgX3JlbW92ZVJhbmdlUmVhZGVyKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5fcmFuZ2VSZWFkZXJzLmluZGV4T2YodCk7XG4gICAgICAgICAgZSA+PSAwICYmIHRoaXMuX3JhbmdlUmVhZGVycy5zcGxpY2UoZSwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RnVsbFJlYWRlcigpIHtcbiAgICAgICAgICAoMCwgaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwgXCJQREZEYXRhVHJhbnNwb3J0U3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuXCIpO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9xdWV1ZWRDaHVua3M7XG4gICAgICAgICAgdGhpcy5fcXVldWVkQ2h1bmtzID0gbnVsbDtcbiAgICAgICAgICByZXR1cm4gbmV3IFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SZWFkZXIodGhpcywgdCwgdGhpcy5fcHJvZ3Jlc3NpdmVEb25lLCB0aGlzLl9jb250ZW50RGlzcG9zaXRpb25GaWxlbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UmFuZ2VSZWFkZXIodCwgZSkge1xuICAgICAgICAgIGlmIChlIDw9IHRoaXMuX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgY29uc3QgbiA9IG5ldyBQREZEYXRhVHJhbnNwb3J0U3RyZWFtUmFuZ2VSZWFkZXIodGhpcywgdCwgZSk7XG4gICAgICAgICAgdGhpcy5fcGRmRGF0YVJhbmdlVHJhbnNwb3J0LnJlcXVlc3REYXRhUmFuZ2UodCwgZSk7XG4gICAgICAgICAgdGhpcy5fcmFuZ2VSZWFkZXJzLnB1c2gobik7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsQWxsUmVxdWVzdHModCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfZnVsbFJlcXVlc3RSZWE2O1xuICAgICAgICAgIChfdGhpcyRfZnVsbFJlcXVlc3RSZWE2ID0gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpID09PSBudWxsIHx8IF90aGlzJF9mdWxsUmVxdWVzdFJlYTYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVxdWVzdFJlYTYuY2FuY2VsKHQpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlYWRlcnMuc2xpY2UoMCkpIGUuY2FuY2VsKHQpO1xuICAgICAgICAgIHRoaXMuX3BkZkRhdGFSYW5nZVRyYW5zcG9ydC5hYm9ydCgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY2xhc3MgUERGRGF0YVRyYW5zcG9ydFN0cmVhbVJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUpIHtcbiAgICAgICAgICBsZXQgbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzJdICYmIGFyZ3VtZW50c1syXSxcbiAgICAgICAgICAgIGkgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IG51bGw7XG4gICAgICAgICAgdGhpcy5fc3RyZWFtID0gdDtcbiAgICAgICAgICB0aGlzLl9kb25lID0gbiB8fCAhMTtcbiAgICAgICAgICB0aGlzLl9maWxlbmFtZSA9ICgwLCByLmlzUGRmRmlsZSkoaSkgPyBpIDogbnVsbDtcbiAgICAgICAgICB0aGlzLl9xdWV1ZWRDaHVua3MgPSBlIHx8IFtdO1xuICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IDA7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3F1ZXVlZENodW5rcykgdGhpcy5fbG9hZGVkICs9IHQuYnl0ZUxlbmd0aDtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cyA9IFtdO1xuICAgICAgICAgIHRoaXMuX2hlYWRlcnNSZWFkeSA9IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgIHQuX2Z1bGxSZXF1ZXN0UmVhZGVyID0gdGhpcztcbiAgICAgICAgICB0aGlzLm9uUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIF9lbnF1ZXVlKHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuX2RvbmUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHQsXG4gICAgICAgICAgICAgICAgZG9uZTogITFcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgdGhpcy5fcXVldWVkQ2h1bmtzLnB1c2godCk7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZWQgKz0gdC5ieXRlTGVuZ3RoO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgaGVhZGVyc1JlYWR5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJzUmVhZHk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGZpbGVuYW1lKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9maWxlbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaXNSYW5nZVN1cHBvcnRlZCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1JhbmdlU3VwcG9ydGVkO1xuICAgICAgICB9XG4gICAgICAgIGdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc3RyZWFtLl9pc1N0cmVhbWluZ1N1cHBvcnRlZDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgY29udGVudExlbmd0aCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc3RyZWFtLl9jb250ZW50TGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIHJlYWQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3F1ZXVlZENodW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5fcXVldWVkQ2h1bmtzLnNoaWZ0KCksXG4gICAgICAgICAgICAgIGRvbmU6ICExXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5fZG9uZSkgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsXG4gICAgICAgICAgICBkb25lOiAhMFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdCA9IG5ldyBpLlByb21pc2VDYXBhYmlsaXR5KCk7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMucHVzaCh0KTtcbiAgICAgICAgICByZXR1cm4gdC5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGNhbmNlbCh0KSB7XG4gICAgICAgICAgdGhpcy5fZG9uZSA9ICEwO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cykgdC5yZXNvbHZlKHtcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsXG4gICAgICAgICAgICBkb25lOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcHJvZ3Jlc3NpdmVEb25lKCkge1xuICAgICAgICAgIHRoaXMuX2RvbmUgfHwgKHRoaXMuX2RvbmUgPSAhMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFBERkRhdGFUcmFuc3BvcnRTdHJlYW1SYW5nZVJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUsIG4pIHtcbiAgICAgICAgICB0aGlzLl9zdHJlYW0gPSB0O1xuICAgICAgICAgIHRoaXMuX2JlZ2luID0gZTtcbiAgICAgICAgICB0aGlzLl9lbmQgPSBuO1xuICAgICAgICAgIHRoaXMuX3F1ZXVlZENodW5rID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cyA9IFtdO1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMTtcbiAgICAgICAgICB0aGlzLm9uUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIF9lbnF1ZXVlKHQpIHtcbiAgICAgICAgICBpZiAoIXRoaXMuX2RvbmUpIHtcbiAgICAgICAgICAgIGlmICgwID09PSB0aGlzLl9yZXF1ZXN0cy5sZW5ndGgpIHRoaXMuX3F1ZXVlZENodW5rID0gdDtlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHMuc2hpZnQoKS5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICAgICAgICBkb25lOiAhMVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlc29sdmUoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgZG9uZTogITBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9kb25lID0gITA7XG4gICAgICAgICAgICB0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGFzeW5jIHJlYWQoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3F1ZXVlZENodW5rKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fcXVldWVkQ2h1bms7XG4gICAgICAgICAgICB0aGlzLl9xdWV1ZWRDaHVuayA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICAgICAgZG9uZTogITFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl9kb25lKSByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO1xuICAgICAgICAgIHJldHVybiB0LnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsKHQpIHtcbiAgICAgICAgICB0aGlzLl9kb25lID0gITA7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB0aGlzLl9zdHJlYW0uX3JlbW92ZVJhbmdlUmVhZGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuUERGRmV0Y2hTdHJlYW0gPSB2b2lkIDA7XG4gICAgICBuKDkzKTtcbiAgICAgIG4oMTAxKTtcbiAgICAgIG4oMTAyKTtcbiAgICAgIG4oMTA1KTtcbiAgICAgIG4oMTA3KTtcbiAgICAgIG4oMTA5KTtcbiAgICAgIG4oMTEzKTtcbiAgICAgIG4oMTE2KTtcbiAgICAgIG4oMTIzKTtcbiAgICAgIG4oODkpO1xuICAgICAgdmFyIGkgPSBuKDEpLFxuICAgICAgICByID0gbigxODEpO1xuICAgICAgZnVuY3Rpb24gY3JlYXRlRmV0Y2hPcHRpb25zKHQsIGUsIG4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgaGVhZGVyczogdCxcbiAgICAgICAgICBzaWduYWw6IG4uc2lnbmFsLFxuICAgICAgICAgIG1vZGU6IFwiY29yc1wiLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiBlID8gXCJpbmNsdWRlXCIgOiBcInNhbWUtb3JpZ2luXCIsXG4gICAgICAgICAgcmVkaXJlY3Q6IFwiZm9sbG93XCJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZUhlYWRlcnModCkge1xuICAgICAgICBjb25zdCBlID0gbmV3IEhlYWRlcnMoKTtcbiAgICAgICAgZm9yIChjb25zdCBuIGluIHQpIHtcbiAgICAgICAgICBjb25zdCBpID0gdFtuXTtcbiAgICAgICAgICB2b2lkIDAgIT09IGkgJiYgZS5hcHBlbmQobiwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBnZXRBcnJheUJ1ZmZlcih0KSB7XG4gICAgICAgIGlmICh0IGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIHQuYnVmZmVyO1xuICAgICAgICBpZiAodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSByZXR1cm4gdDtcbiAgICAgICAgKDAsIGkud2FybikoXCJnZXRBcnJheUJ1ZmZlciAtIHVuZXhwZWN0ZWQgZGF0YSBmb3JtYXQ6IFwiLmNvbmNhdCh0KSk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh0KS5idWZmZXI7XG4gICAgICB9XG4gICAgICBlLlBERkZldGNoU3RyZWFtID0gY2xhc3MgUERGRmV0Y2hTdHJlYW0ge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdGhpcy5zb3VyY2UgPSB0O1xuICAgICAgICAgIHRoaXMuaXNIdHRwID0gL15odHRwcz86L2kudGVzdCh0LnVybCk7XG4gICAgICAgICAgdGhpcy5odHRwSGVhZGVycyA9IHRoaXMuaXNIdHRwICYmIHQuaHR0cEhlYWRlcnMgfHwge307XG4gICAgICAgICAgdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhNywgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhODtcbiAgICAgICAgICByZXR1cm4gKF90aGlzJF9mdWxsUmVxdWVzdFJlYTcgPSAoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhOCA9IHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKSA9PT0gbnVsbCB8fCBfdGhpcyRfZnVsbFJlcXVlc3RSZWE4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfZnVsbFJlcXVlc3RSZWE4Ll9sb2FkZWQpICE9PSBudWxsICYmIF90aGlzJF9mdWxsUmVxdWVzdFJlYTcgIT09IHZvaWQgMCA/IF90aGlzJF9mdWxsUmVxdWVzdFJlYTcgOiAwO1xuICAgICAgICB9XG4gICAgICAgIGdldEZ1bGxSZWFkZXIoKSB7XG4gICAgICAgICAgKDAsIGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIFwiUERGRmV0Y2hTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS5cIik7XG4gICAgICAgICAgdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIgPSBuZXcgUERGRmV0Y2hTdHJlYW1SZWFkZXIodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyO1xuICAgICAgICB9XG4gICAgICAgIGdldFJhbmdlUmVhZGVyKHQsIGUpIHtcbiAgICAgICAgICBpZiAoZSA8PSB0aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpIHJldHVybiBudWxsO1xuICAgICAgICAgIGNvbnN0IG4gPSBuZXcgUERGRmV0Y2hTdHJlYW1SYW5nZVJlYWRlcih0aGlzLCB0LCBlKTtcbiAgICAgICAgICB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gobik7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsQWxsUmVxdWVzdHModCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfZnVsbFJlcXVlc3RSZWE5O1xuICAgICAgICAgIChfdGhpcyRfZnVsbFJlcXVlc3RSZWE5ID0gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIpID09PSBudWxsIHx8IF90aGlzJF9mdWxsUmVxdWVzdFJlYTkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVxdWVzdFJlYTkuY2FuY2VsKHQpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKSBlLmNhbmNlbCh0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNsYXNzIFBERkZldGNoU3RyZWFtUmVhZGVyIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHRoaXMuX3N0cmVhbSA9IHQ7XG4gICAgICAgICAgdGhpcy5fcmVhZGVyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9sb2FkZWQgPSAwO1xuICAgICAgICAgIHRoaXMuX2ZpbGVuYW1lID0gbnVsbDtcbiAgICAgICAgICBjb25zdCBlID0gdC5zb3VyY2U7XG4gICAgICAgICAgdGhpcy5fd2l0aENyZWRlbnRpYWxzID0gZS53aXRoQ3JlZGVudGlhbHMgfHwgITE7XG4gICAgICAgICAgdGhpcy5fY29udGVudExlbmd0aCA9IGUubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLl9kaXNhYmxlUmFuZ2UgPSBlLmRpc2FibGVSYW5nZSB8fCAhMTtcbiAgICAgICAgICB0aGlzLl9yYW5nZUNodW5rU2l6ZSA9IGUucmFuZ2VDaHVua1NpemU7XG4gICAgICAgICAgdGhpcy5fcmFuZ2VDaHVua1NpemUgfHwgdGhpcy5fZGlzYWJsZVJhbmdlIHx8ICh0aGlzLl9kaXNhYmxlUmFuZ2UgPSAhMCk7XG4gICAgICAgICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICAgIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkID0gIWUuZGlzYWJsZVN0cmVhbTtcbiAgICAgICAgICB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkID0gIWUuZGlzYWJsZVJhbmdlO1xuICAgICAgICAgIHRoaXMuX2hlYWRlcnMgPSBjcmVhdGVIZWFkZXJzKHRoaXMuX3N0cmVhbS5odHRwSGVhZGVycyk7XG4gICAgICAgICAgY29uc3QgbiA9IGUudXJsO1xuICAgICAgICAgIGZldGNoKG4sIGNyZWF0ZUZldGNoT3B0aW9ucyh0aGlzLl9oZWFkZXJzLCB0aGlzLl93aXRoQ3JlZGVudGlhbHMsIHRoaXMuX2Fib3J0Q29udHJvbGxlcikpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICBpZiAoISgwLCByLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMpKHQuc3RhdHVzKSkgdGhyb3cgKDAsIHIuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodC5zdGF0dXMsIG4pO1xuICAgICAgICAgICAgdGhpcy5fcmVhZGVyID0gdC5ib2R5LmdldFJlYWRlcigpO1xuICAgICAgICAgICAgdGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICAgICAgY29uc3QgZ2V0UmVzcG9uc2VIZWFkZXIgPSBlID0+IHQuaGVhZGVycy5nZXQoZSksXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbGxvd1JhbmdlUmVxdWVzdHM6IGUsXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGVkTGVuZ3RoOiBzXG4gICAgICAgICAgICAgIH0gPSAoMCwgci52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe1xuICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBnZXRSZXNwb25zZUhlYWRlcixcbiAgICAgICAgICAgICAgICBpc0h0dHA6IHRoaXMuX3N0cmVhbS5pc0h0dHAsXG4gICAgICAgICAgICAgICAgcmFuZ2VDaHVua1NpemU6IHRoaXMuX3JhbmdlQ2h1bmtTaXplLFxuICAgICAgICAgICAgICAgIGRpc2FibGVSYW5nZTogdGhpcy5fZGlzYWJsZVJhbmdlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCA9IGU7XG4gICAgICAgICAgICB0aGlzLl9jb250ZW50TGVuZ3RoID0gcyB8fCB0aGlzLl9jb250ZW50TGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5fZmlsZW5hbWUgPSAoMCwgci5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgICAhdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQgJiYgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCAmJiB0aGlzLmNhbmNlbChuZXcgaS5BYm9ydEV4Y2VwdGlvbihcIlN0cmVhbWluZyBpcyBkaXNhYmxlZC5cIikpO1xuICAgICAgICAgIH0pLmNhdGNoKHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCk7XG4gICAgICAgICAgdGhpcy5vblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaGVhZGVyc1JlYWR5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGdldCBmaWxlbmFtZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGNvbnRlbnRMZW5ndGgoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZDtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyByZWFkKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRvblByb2dyZXNzO1xuICAgICAgICAgIGF3YWl0IHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnByb21pc2U7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdmFsdWU6IHQsXG4gICAgICAgICAgICBkb25lOiBlXG4gICAgICAgICAgfSA9IGF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7XG4gICAgICAgICAgaWYgKGUpIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICAgIGRvbmU6IGVcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX2xvYWRlZCArPSB0LmJ5dGVMZW5ndGg7XG4gICAgICAgICAgKF90aGlzJG9uUHJvZ3Jlc3MgPSB0aGlzLm9uUHJvZ3Jlc3MpID09PSBudWxsIHx8IF90aGlzJG9uUHJvZ3Jlc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9uUHJvZ3Jlc3MuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICBsb2FkZWQ6IHRoaXMuX2xvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsOiB0aGlzLl9jb250ZW50TGVuZ3RoXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBnZXRBcnJheUJ1ZmZlcih0KSxcbiAgICAgICAgICAgIGRvbmU6ICExXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwodCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfcmVhZGVyO1xuICAgICAgICAgIChfdGhpcyRfcmVhZGVyID0gdGhpcy5fcmVhZGVyKSA9PT0gbnVsbCB8fCBfdGhpcyRfcmVhZGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfcmVhZGVyLmNhbmNlbCh0KTtcbiAgICAgICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgUERGRmV0Y2hTdHJlYW1SYW5nZVJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUsIG4pIHtcbiAgICAgICAgICB0aGlzLl9zdHJlYW0gPSB0O1xuICAgICAgICAgIHRoaXMuX3JlYWRlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fbG9hZGVkID0gMDtcbiAgICAgICAgICBjb25zdCBzID0gdC5zb3VyY2U7XG4gICAgICAgICAgdGhpcy5fd2l0aENyZWRlbnRpYWxzID0gcy53aXRoQ3JlZGVudGlhbHMgfHwgITE7XG4gICAgICAgICAgdGhpcy5fcmVhZENhcGFiaWxpdHkgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIHRoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkID0gIXMuZGlzYWJsZVN0cmVhbTtcbiAgICAgICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICAgICAgdGhpcy5faGVhZGVycyA9IGNyZWF0ZUhlYWRlcnModGhpcy5fc3RyZWFtLmh0dHBIZWFkZXJzKTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJzLmFwcGVuZChcIlJhbmdlXCIsIFwiYnl0ZXM9XCIuY29uY2F0KGUsIFwiLVwiKS5jb25jYXQobiAtIDEpKTtcbiAgICAgICAgICBjb25zdCBhID0gcy51cmw7XG4gICAgICAgICAgZmV0Y2goYSwgY3JlYXRlRmV0Y2hPcHRpb25zKHRoaXMuX2hlYWRlcnMsIHRoaXMuX3dpdGhDcmVkZW50aWFscywgdGhpcy5fYWJvcnRDb250cm9sbGVyKSkudGhlbih0ID0+IHtcbiAgICAgICAgICAgIGlmICghKDAsIHIudmFsaWRhdGVSZXNwb25zZVN0YXR1cykodC5zdGF0dXMpKSB0aHJvdyAoMCwgci5jcmVhdGVSZXNwb25zZVN0YXR1c0Vycm9yKSh0LnN0YXR1cywgYSk7XG4gICAgICAgICAgICB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB0aGlzLl9yZWFkZXIgPSB0LmJvZHkuZ2V0UmVhZGVyKCk7XG4gICAgICAgICAgfSkuY2F0Y2godGhpcy5fcmVhZENhcGFiaWxpdHkucmVqZWN0KTtcbiAgICAgICAgICB0aGlzLm9uUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgYXN5bmMgcmVhZCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkb25Qcm9ncmVzczI7XG4gICAgICAgICAgYXdhaXQgdGhpcy5fcmVhZENhcGFiaWxpdHkucHJvbWlzZTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICAgIGRvbmU6IGVcbiAgICAgICAgICB9ID0gYXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtcbiAgICAgICAgICBpZiAoZSkgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB0LFxuICAgICAgICAgICAgZG9uZTogZVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fbG9hZGVkICs9IHQuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAoX3RoaXMkb25Qcm9ncmVzczIgPSB0aGlzLm9uUHJvZ3Jlc3MpID09PSBudWxsIHx8IF90aGlzJG9uUHJvZ3Jlc3MyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRvblByb2dyZXNzMi5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgIGxvYWRlZDogdGhpcy5fbG9hZGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiBnZXRBcnJheUJ1ZmZlcih0KSxcbiAgICAgICAgICAgIGRvbmU6ICExXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwodCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfcmVhZGVyMjtcbiAgICAgICAgICAoX3RoaXMkX3JlYWRlcjIgPSB0aGlzLl9yZWFkZXIpID09PSBudWxsIHx8IF90aGlzJF9yZWFkZXIyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRfcmVhZGVyMi5jYW5jZWwodCk7XG4gICAgICAgICAgdGhpcy5fYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5jcmVhdGVSZXNwb25zZVN0YXR1c0Vycm9yID0gZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcih0LCBlKSB7XG4gICAgICAgIGlmICg0MDQgPT09IHQgfHwgMCA9PT0gdCAmJiBlLnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSkgcmV0dXJuIG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oJ01pc3NpbmcgUERGIFwiJyArIGUgKyAnXCIuJyk7XG4gICAgICAgIHJldHVybiBuZXcgaS5VbmV4cGVjdGVkUmVzcG9uc2VFeGNlcHRpb24oXCJVbmV4cGVjdGVkIHNlcnZlciByZXNwb25zZSAoXCIuY29uY2F0KHQsIFwiKSB3aGlsZSByZXRyaWV2aW5nIFBERiBcXFwiXCIpLmNvbmNhdChlLCBcIlxcXCIuXCIpLCB0KTtcbiAgICAgIH07XG4gICAgICBlLmV4dHJhY3RGaWxlbmFtZUZyb21IZWFkZXIgPSBmdW5jdGlvbiBleHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHQoXCJDb250ZW50LURpc3Bvc2l0aW9uXCIpO1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgIGxldCB0ID0gKDAsIHIuZ2V0RmlsZW5hbWVGcm9tQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKShlKTtcbiAgICAgICAgICBpZiAodC5pbmNsdWRlcyhcIiVcIikpIHRyeSB7XG4gICAgICAgICAgICB0ID0gZGVjb2RlVVJJQ29tcG9uZW50KHQpO1xuICAgICAgICAgIH0gY2F0Y2ggKF91bnVzZWQxMikge31cbiAgICAgICAgICBpZiAoKDAsIHMuaXNQZGZGaWxlKSh0KSkgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9O1xuICAgICAgZS52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uIHZhbGlkYXRlUmFuZ2VSZXF1ZXN0Q2FwYWJpbGl0aWVzKHQpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBnZXRSZXNwb25zZUhlYWRlcjogZSxcbiAgICAgICAgICBpc0h0dHA6IG4sXG4gICAgICAgICAgcmFuZ2VDaHVua1NpemU6IGksXG4gICAgICAgICAgZGlzYWJsZVJhbmdlOiByXG4gICAgICAgIH0gPSB0O1xuICAgICAgICBjb25zdCBzID0ge1xuICAgICAgICAgICAgYWxsb3dSYW5nZVJlcXVlc3RzOiAhMSxcbiAgICAgICAgICAgIHN1Z2dlc3RlZExlbmd0aDogdm9pZCAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhID0gcGFyc2VJbnQoZShcIkNvbnRlbnQtTGVuZ3RoXCIpLCAxMCk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihhKSkgcmV0dXJuIHM7XG4gICAgICAgIHMuc3VnZ2VzdGVkTGVuZ3RoID0gYTtcbiAgICAgICAgaWYgKGEgPD0gMiAqIGkpIHJldHVybiBzO1xuICAgICAgICBpZiAociB8fCAhbikgcmV0dXJuIHM7XG4gICAgICAgIGlmIChcImJ5dGVzXCIgIT09IGUoXCJBY2NlcHQtUmFuZ2VzXCIpKSByZXR1cm4gcztcbiAgICAgICAgaWYgKFwiaWRlbnRpdHlcIiAhPT0gKGUoXCJDb250ZW50LUVuY29kaW5nXCIpIHx8IFwiaWRlbnRpdHlcIikpIHJldHVybiBzO1xuICAgICAgICBzLmFsbG93UmFuZ2VSZXF1ZXN0cyA9ICEwO1xuICAgICAgICByZXR1cm4gcztcbiAgICAgIH07XG4gICAgICBlLnZhbGlkYXRlUmVzcG9uc2VTdGF0dXMgPSBmdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlU3RhdHVzKHQpIHtcbiAgICAgICAgcmV0dXJuIDIwMCA9PT0gdCB8fCAyMDYgPT09IHQ7XG4gICAgICB9O1xuICAgICAgdmFyIGkgPSBuKDEpLFxuICAgICAgICByID0gbigxODIpLFxuICAgICAgICBzID0gbigxNjcpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLmdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlciA9IGZ1bmN0aW9uIGdldEZpbGVuYW1lRnJvbUNvbnRlbnREaXNwb3NpdGlvbkhlYWRlcih0KSB7XG4gICAgICAgIGxldCBlID0gITAsXG4gICAgICAgICAgbiA9IHRvUGFyYW1SZWdFeHAoXCJmaWxlbmFtZVxcXFwqXCIsIFwiaVwiKS5leGVjKHQpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIG4gPSBuWzFdO1xuICAgICAgICAgIGxldCB0ID0gcmZjMjYxNnVucXVvdGUobik7XG4gICAgICAgICAgdCA9IHVuZXNjYXBlKHQpO1xuICAgICAgICAgIHQgPSByZmM1OTg3ZGVjb2RlKHQpO1xuICAgICAgICAgIHQgPSByZmMyMDQ3ZGVjb2RlKHQpO1xuICAgICAgICAgIHJldHVybiBmaXh1cEVuY29kaW5nKHQpO1xuICAgICAgICB9XG4gICAgICAgIG4gPSBmdW5jdGlvbiByZmMyMjMxZ2V0cGFyYW0odCkge1xuICAgICAgICAgIGNvbnN0IGUgPSBbXTtcbiAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICBjb25zdCBpID0gdG9QYXJhbVJlZ0V4cChcImZpbGVuYW1lXFxcXCooKD8hMFxcXFxkKVxcXFxkKykoXFxcXCo/KVwiLCBcImlnXCIpO1xuICAgICAgICAgIGZvciAoOyBudWxsICE9PSAobiA9IGkuZXhlYyh0KSk7KSB7XG4gICAgICAgICAgICBsZXQgWywgdCwgaSwgcl0gPSBuO1xuICAgICAgICAgICAgdCA9IHBhcnNlSW50KHQsIDEwKTtcbiAgICAgICAgICAgIGlmICh0IGluIGUpIHtcbiAgICAgICAgICAgICAgaWYgKDAgPT09IHQpIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGVbdF0gPSBbaSwgcl07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHIgPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGUubGVuZ3RoICYmIHQgaW4gZTsgKyt0KSB7XG4gICAgICAgICAgICBsZXQgW24sIGldID0gZVt0XTtcbiAgICAgICAgICAgIGkgPSByZmMyNjE2dW5xdW90ZShpKTtcbiAgICAgICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICAgIGkgPSB1bmVzY2FwZShpKTtcbiAgICAgICAgICAgICAgMCA9PT0gdCAmJiAoaSA9IHJmYzU5ODdkZWNvZGUoaSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgci5wdXNoKGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gci5qb2luKFwiXCIpO1xuICAgICAgICB9KHQpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHJldHVybiBmaXh1cEVuY29kaW5nKHJmYzIwNDdkZWNvZGUobikpO1xuICAgICAgICB9XG4gICAgICAgIG4gPSB0b1BhcmFtUmVnRXhwKFwiZmlsZW5hbWVcIiwgXCJpXCIpLmV4ZWModCk7XG4gICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgbiA9IG5bMV07XG4gICAgICAgICAgbGV0IHQgPSByZmMyNjE2dW5xdW90ZShuKTtcbiAgICAgICAgICB0ID0gcmZjMjA0N2RlY29kZSh0KTtcbiAgICAgICAgICByZXR1cm4gZml4dXBFbmNvZGluZyh0KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiB0b1BhcmFtUmVnRXhwKHQsIGUpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChcIig/Ol58OylcXFxccypcIiArIHQgKyAnXFxcXHMqPVxcXFxzKihbXlwiO1xcXFxzXVteO1xcXFxzXSp8XCIoPzpbXlwiXFxcXFxcXFxdfFxcXFxcXFxcXCI/KStcIj8pJywgZSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gdGV4dGRlY29kZSh0LCBuKSB7XG4gICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgIGlmICghL15bXFx4MDAtXFx4RkZdKyQvLnRlc3QobikpIHJldHVybiBuO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgciA9IG5ldyBUZXh0RGVjb2Rlcih0LCB7XG4gICAgICAgICAgICAgICAgICBmYXRhbDogITBcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzID0gKDAsIGkuc3RyaW5nVG9CeXRlcykobik7XG4gICAgICAgICAgICAgIG4gPSByLmRlY29kZShzKTtcbiAgICAgICAgICAgICAgZSA9ICExO1xuICAgICAgICAgICAgfSBjYXRjaCAoX3VudXNlZDEzKSB7fVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBmaXh1cEVuY29kaW5nKHQpIHtcbiAgICAgICAgICBpZiAoZSAmJiAvW1xceDgwLVxceGZmXS8udGVzdCh0KSkge1xuICAgICAgICAgICAgdCA9IHRleHRkZWNvZGUoXCJ1dGYtOFwiLCB0KTtcbiAgICAgICAgICAgIGUgJiYgKHQgPSB0ZXh0ZGVjb2RlKFwiaXNvLTg4NTktMVwiLCB0KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHJmYzI2MTZ1bnF1b3RlKHQpIHtcbiAgICAgICAgICBpZiAodC5zdGFydHNXaXRoKCdcIicpKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdC5zbGljZSgxKS5zcGxpdCgnXFxcXFwiJyk7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IGUubGVuZ3RoOyArK3QpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IGVbdF0uaW5kZXhPZignXCInKTtcbiAgICAgICAgICAgICAgaWYgKC0xICE9PSBuKSB7XG4gICAgICAgICAgICAgICAgZVt0XSA9IGVbdF0uc2xpY2UoMCwgbik7XG4gICAgICAgICAgICAgICAgZS5sZW5ndGggPSB0ICsgMTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlW3RdID0gZVt0XS5yZXBsYWNlQWxsKC9cXFxcKC4pL2csIFwiJDFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gZS5qb2luKCdcIicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiByZmM1OTg3ZGVjb2RlKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdC5pbmRleE9mKFwiJ1wiKTtcbiAgICAgICAgICBpZiAoLTEgPT09IGUpIHJldHVybiB0O1xuICAgICAgICAgIHJldHVybiB0ZXh0ZGVjb2RlKHQuc2xpY2UoMCwgZSksIHQuc2xpY2UoZSArIDEpLnJlcGxhY2UoL15bXiddKicvLCBcIlwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gcmZjMjA0N2RlY29kZSh0KSB7XG4gICAgICAgICAgcmV0dXJuICF0LnN0YXJ0c1dpdGgoXCI9P1wiKSB8fCAvW1xceDAwLVxceDE5XFx4ODAtXFx4ZmZdLy50ZXN0KHQpID8gdCA6IHQucmVwbGFjZUFsbCgvPVxcPyhbXFx3LV0qKVxcPyhbUXFCYl0pXFw/KCg/OlteP118XFw/KD8hPSkpKilcXD89L2csIGZ1bmN0aW9uICh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgICBpZiAoXCJxXCIgPT09IG4gfHwgXCJRXCIgPT09IG4pIHJldHVybiB0ZXh0ZGVjb2RlKGUsIGkgPSAoaSA9IGkucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpKS5yZXBsYWNlQWxsKC89KFswLTlhLWZBLUZdezJ9KS9nLCBmdW5jdGlvbiAodCwgZSkge1xuICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChlLCAxNikpO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaSA9IGF0b2IoaSk7XG4gICAgICAgICAgICB9IGNhdGNoIChfdW51c2VkMTQpIHt9XG4gICAgICAgICAgICByZXR1cm4gdGV4dGRlY29kZShlLCBpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH07XG4gICAgICBuKDg5KTtcbiAgICAgIG4oMTQ4KTtcbiAgICAgIHZhciBpID0gbigxKTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5QREZOZXR3b3JrU3RyZWFtID0gdm9pZCAwO1xuICAgICAgbig4OSk7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE4MSk7XG4gICAgICBjbGFzcyBOZXR3b3JrTWFuYWdlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAgICAgdGhpcy51cmwgPSB0O1xuICAgICAgICAgIHRoaXMuaXNIdHRwID0gL15odHRwcz86L2kudGVzdCh0KTtcbiAgICAgICAgICB0aGlzLmh0dHBIZWFkZXJzID0gdGhpcy5pc0h0dHAgJiYgZS5odHRwSGVhZGVycyB8fCBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gZS53aXRoQ3JlZGVudGlhbHMgfHwgITE7XG4gICAgICAgICAgdGhpcy5jdXJyWGhySWQgPSAwO1xuICAgICAgICAgIHRoaXMucGVuZGluZ1JlcXVlc3RzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0UmFuZ2UodCwgZSwgbikge1xuICAgICAgICAgIGNvbnN0IGkgPSB7XG4gICAgICAgICAgICBiZWdpbjogdCxcbiAgICAgICAgICAgIGVuZDogZVxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yIChjb25zdCB0IGluIG4pIGlbdF0gPSBuW3RdO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdEZ1bGwodCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVxdWVzdCh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpLFxuICAgICAgICAgICAgbiA9IHRoaXMuY3VyclhocklkKyssXG4gICAgICAgICAgICBpID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbbl0gPSB7XG4gICAgICAgICAgICAgIHhocjogZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBlLm9wZW4oXCJHRVRcIiwgdGhpcy51cmwpO1xuICAgICAgICAgIGUud2l0aENyZWRlbnRpYWxzID0gdGhpcy53aXRoQ3JlZGVudGlhbHM7XG4gICAgICAgICAgZm9yIChjb25zdCB0IGluIHRoaXMuaHR0cEhlYWRlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmh0dHBIZWFkZXJzW3RdO1xuICAgICAgICAgICAgdm9pZCAwICE9PSBuICYmIGUuc2V0UmVxdWVzdEhlYWRlcih0LCBuKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuaXNIdHRwICYmIFwiYmVnaW5cIiBpbiB0ICYmIFwiZW5kXCIgaW4gdCkge1xuICAgICAgICAgICAgZS5zZXRSZXF1ZXN0SGVhZGVyKFwiUmFuZ2VcIiwgXCJieXRlcz1cIi5jb25jYXQodC5iZWdpbiwgXCItXCIpLmNvbmNhdCh0LmVuZCAtIDEpKTtcbiAgICAgICAgICAgIGkuZXhwZWN0ZWRTdGF0dXMgPSAyMDY7XG4gICAgICAgICAgfSBlbHNlIGkuZXhwZWN0ZWRTdGF0dXMgPSAyMDA7XG4gICAgICAgICAgZS5yZXNwb25zZVR5cGUgPSBcImFycmF5YnVmZmVyXCI7XG4gICAgICAgICAgdC5vbkVycm9yICYmIChlLm9uZXJyb3IgPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgdC5vbkVycm9yKGUuc3RhdHVzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBlLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHRoaXMub25TdGF0ZUNoYW5nZS5iaW5kKHRoaXMsIG4pO1xuICAgICAgICAgIGUub25wcm9ncmVzcyA9IHRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMsIG4pO1xuICAgICAgICAgIGkub25IZWFkZXJzUmVjZWl2ZWQgPSB0Lm9uSGVhZGVyc1JlY2VpdmVkO1xuICAgICAgICAgIGkub25Eb25lID0gdC5vbkRvbmU7XG4gICAgICAgICAgaS5vbkVycm9yID0gdC5vbkVycm9yO1xuICAgICAgICAgIGkub25Qcm9ncmVzcyA9IHQub25Qcm9ncmVzcztcbiAgICAgICAgICBlLnNlbmQobnVsbCk7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgb25Qcm9ncmVzcyh0LCBlKSB7XG4gICAgICAgICAgdmFyIF9uJG9uUHJvZ3Jlc3M7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdO1xuICAgICAgICAgIG4gJiYgKChfbiRvblByb2dyZXNzID0gbi5vblByb2dyZXNzKSA9PT0gbnVsbCB8fCBfbiRvblByb2dyZXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbiRvblByb2dyZXNzLmNhbGwobiwgZSkpO1xuICAgICAgICB9XG4gICAgICAgIG9uU3RhdGVDaGFuZ2UodCwgZSkge1xuICAgICAgICAgIHZhciBfbiRvbkVycm9yMztcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF07XG4gICAgICAgICAgaWYgKCFuKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgciA9IG4ueGhyO1xuICAgICAgICAgIGlmIChyLnJlYWR5U3RhdGUgPj0gMiAmJiBuLm9uSGVhZGVyc1JlY2VpdmVkKSB7XG4gICAgICAgICAgICBuLm9uSGVhZGVyc1JlY2VpdmVkKCk7XG4gICAgICAgICAgICBkZWxldGUgbi5vbkhlYWRlcnNSZWNlaXZlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKDQgIT09IHIucmVhZHlTdGF0ZSkgcmV0dXJuO1xuICAgICAgICAgIGlmICghKHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHMpKSByZXR1cm47XG4gICAgICAgICAgZGVsZXRlIHRoaXMucGVuZGluZ1JlcXVlc3RzW3RdO1xuICAgICAgICAgIGlmICgwID09PSByLnN0YXR1cyAmJiB0aGlzLmlzSHR0cCkge1xuICAgICAgICAgICAgdmFyIF9uJG9uRXJyb3I7XG4gICAgICAgICAgICAoX24kb25FcnJvciA9IG4ub25FcnJvcikgPT09IG51bGwgfHwgX24kb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogX24kb25FcnJvci5jYWxsKG4sIHIuc3RhdHVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcyA9IHIuc3RhdHVzIHx8IDIwMDtcbiAgICAgICAgICBpZiAoISgyMDAgPT09IHMgJiYgMjA2ID09PSBuLmV4cGVjdGVkU3RhdHVzKSAmJiBzICE9PSBuLmV4cGVjdGVkU3RhdHVzKSB7XG4gICAgICAgICAgICB2YXIgX24kb25FcnJvcjI7XG4gICAgICAgICAgICAoX24kb25FcnJvcjIgPSBuLm9uRXJyb3IpID09PSBudWxsIHx8IF9uJG9uRXJyb3IyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbiRvbkVycm9yMi5jYWxsKG4sIHIuc3RhdHVzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYSA9IGZ1bmN0aW9uIGdldEFycmF5QnVmZmVyKHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnJlc3BvbnNlO1xuICAgICAgICAgICAgcmV0dXJuIFwic3RyaW5nXCIgIT0gdHlwZW9mIGUgPyBlIDogKDAsIGkuc3RyaW5nVG9CeXRlcykoZSkuYnVmZmVyO1xuICAgICAgICAgIH0ocik7XG4gICAgICAgICAgaWYgKDIwNiA9PT0gcykge1xuICAgICAgICAgICAgY29uc3QgdCA9IHIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LVJhbmdlXCIpLFxuICAgICAgICAgICAgICBlID0gL2J5dGVzIChcXGQrKS0oXFxkKylcXC8oXFxkKykvLmV4ZWModCk7XG4gICAgICAgICAgICBuLm9uRG9uZSh7XG4gICAgICAgICAgICAgIGJlZ2luOiBwYXJzZUludChlWzFdLCAxMCksXG4gICAgICAgICAgICAgIGNodW5rOiBhXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgYSA/IG4ub25Eb25lKHtcbiAgICAgICAgICAgIGJlZ2luOiAwLFxuICAgICAgICAgICAgY2h1bms6IGFcbiAgICAgICAgICB9KSA6IChfbiRvbkVycm9yMyA9IG4ub25FcnJvcikgPT09IG51bGwgfHwgX24kb25FcnJvcjMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9uJG9uRXJyb3IzLmNhbGwobiwgci5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIGdldFJlcXVlc3RYaHIodCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XS54aHI7XG4gICAgICAgIH1cbiAgICAgICAgaXNQZW5kaW5nUmVxdWVzdCh0KSB7XG4gICAgICAgICAgcmV0dXJuIHQgaW4gdGhpcy5wZW5kaW5nUmVxdWVzdHM7XG4gICAgICAgIH1cbiAgICAgICAgYWJvcnRSZXF1ZXN0KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5wZW5kaW5nUmVxdWVzdHNbdF0ueGhyO1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmdSZXF1ZXN0c1t0XTtcbiAgICAgICAgICBlLmFib3J0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuUERGTmV0d29ya1N0cmVhbSA9IGNsYXNzIFBERk5ldHdvcmtTdHJlYW0ge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdGhpcy5fc291cmNlID0gdDtcbiAgICAgICAgICB0aGlzLl9tYW5hZ2VyID0gbmV3IE5ldHdvcmtNYW5hZ2VyKHQudXJsLCB7XG4gICAgICAgICAgICBodHRwSGVhZGVyczogdC5odHRwSGVhZGVycyxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdC53aXRoQ3JlZGVudGlhbHNcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLl9yYW5nZUNodW5rU2l6ZSA9IHQucmFuZ2VDaHVua1NpemU7XG4gICAgICAgICAgdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBfb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLmluZGV4T2YodCk7XG4gICAgICAgICAgZSA+PSAwICYmIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMuc3BsaWNlKGUsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGdldEZ1bGxSZWFkZXIoKSB7XG4gICAgICAgICAgKDAsIGkuYXNzZXJ0KSghdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIsIFwiUERGTmV0d29ya1N0cmVhbS5nZXRGdWxsUmVhZGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLlwiKTtcbiAgICAgICAgICB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciA9IG5ldyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIodGhpcy5fbWFuYWdlciwgdGhpcy5fc291cmNlKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0UmFuZ2VSZWFkZXIodCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSBuZXcgUERGTmV0d29ya1N0cmVhbVJhbmdlUmVxdWVzdFJlYWRlcih0aGlzLl9tYW5hZ2VyLCB0LCBlKTtcbiAgICAgICAgICBuLm9uQ2xvc2VkID0gdGhpcy5fb25SYW5nZVJlcXVlc3RSZWFkZXJDbG9zZWQuYmluZCh0aGlzKTtcbiAgICAgICAgICB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2gobik7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsQWxsUmVxdWVzdHModCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfZnVsbFJlcXVlc3RSZWExMDtcbiAgICAgICAgICAoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTAgPSB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVxdWVzdFJlYTEwLmNhbmNlbCh0KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5fcmFuZ2VSZXF1ZXN0UmVhZGVycy5zbGljZSgwKSkgZS5jYW5jZWwodCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjbGFzcyBQREZOZXR3b3JrU3RyZWFtRnVsbFJlcXVlc3RSZWFkZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7XG4gICAgICAgICAgdGhpcy5fbWFuYWdlciA9IHQ7XG4gICAgICAgICAgY29uc3QgbiA9IHtcbiAgICAgICAgICAgIG9uSGVhZGVyc1JlY2VpdmVkOiB0aGlzLl9vbkhlYWRlcnNSZWNlaXZlZC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgb25Eb25lOiB0aGlzLl9vbkRvbmUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIG9uRXJyb3I6IHRoaXMuX29uRXJyb3IuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IHRoaXMuX29uUHJvZ3Jlc3MuYmluZCh0aGlzKVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fdXJsID0gZS51cmw7XG4gICAgICAgICAgdGhpcy5fZnVsbFJlcXVlc3RJZCA9IHQucmVxdWVzdEZ1bGwobik7XG4gICAgICAgICAgdGhpcy5faGVhZGVyc1JlY2VpdmVkQ2FwYWJpbGl0eSA9IG5ldyBpLlByb21pc2VDYXBhYmlsaXR5KCk7XG4gICAgICAgICAgdGhpcy5fZGlzYWJsZVJhbmdlID0gZS5kaXNhYmxlUmFuZ2UgfHwgITE7XG4gICAgICAgICAgdGhpcy5fY29udGVudExlbmd0aCA9IGUubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuX3JhbmdlQ2h1bmtTaXplID0gZS5yYW5nZUNodW5rU2l6ZTtcbiAgICAgICAgICB0aGlzLl9yYW5nZUNodW5rU2l6ZSB8fCB0aGlzLl9kaXNhYmxlUmFuZ2UgfHwgKHRoaXMuX2Rpc2FibGVSYW5nZSA9ICEwKTtcbiAgICAgICAgICB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCA9ICExO1xuICAgICAgICAgIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQgPSAhMTtcbiAgICAgICAgICB0aGlzLl9jYWNoZWRDaHVua3MgPSBbXTtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cyA9IFtdO1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMTtcbiAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9IHZvaWQgMDtcbiAgICAgICAgICB0aGlzLl9maWxlbmFtZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5vblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBfb25IZWFkZXJzUmVjZWl2ZWQoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2Z1bGxSZXF1ZXN0SWQsXG4gICAgICAgICAgICBlID0gdGhpcy5fbWFuYWdlci5nZXRSZXF1ZXN0WGhyKHQpLFxuICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXIgPSB0ID0+IGUuZ2V0UmVzcG9uc2VIZWFkZXIodCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGFsbG93UmFuZ2VSZXF1ZXN0czogbixcbiAgICAgICAgICAgICAgc3VnZ2VzdGVkTGVuZ3RoOiBpXG4gICAgICAgICAgICB9ID0gKDAsIHIudmFsaWRhdGVSYW5nZVJlcXVlc3RDYXBhYmlsaXRpZXMpKHtcbiAgICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFkZXI6IGdldFJlc3BvbnNlSGVhZGVyLFxuICAgICAgICAgICAgICBpc0h0dHA6IHRoaXMuX21hbmFnZXIuaXNIdHRwLFxuICAgICAgICAgICAgICByYW5nZUNodW5rU2l6ZTogdGhpcy5fcmFuZ2VDaHVua1NpemUsXG4gICAgICAgICAgICAgIGRpc2FibGVSYW5nZTogdGhpcy5fZGlzYWJsZVJhbmdlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBuICYmICh0aGlzLl9pc1JhbmdlU3VwcG9ydGVkID0gITApO1xuICAgICAgICAgIHRoaXMuX2NvbnRlbnRMZW5ndGggPSBpIHx8IHRoaXMuX2NvbnRlbnRMZW5ndGg7XG4gICAgICAgICAgdGhpcy5fZmlsZW5hbWUgPSAoMCwgci5leHRyYWN0RmlsZW5hbWVGcm9tSGVhZGVyKShnZXRSZXNwb25zZUhlYWRlcik7XG4gICAgICAgICAgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCAmJiB0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0KTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBfb25Eb25lKHQpIHtcbiAgICAgICAgICBpZiAodCkgaWYgKHRoaXMuX3JlcXVlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHZhbHVlOiB0LmNodW5rLFxuICAgICAgICAgICAgICBkb25lOiAhMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMuX2NhY2hlZENodW5rcy5wdXNoKHQuY2h1bmspO1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMDtcbiAgICAgICAgICBpZiAoISh0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLl9yZXF1ZXN0cykgdC5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgICAgZG9uZTogITBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX29uRXJyb3IodCkge1xuICAgICAgICAgIHRoaXMuX3N0b3JlZEVycm9yID0gKDAsIHIuY3JlYXRlUmVzcG9uc2VTdGF0dXNFcnJvcikodCwgdGhpcy5fdXJsKTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgICAgICBfb25Qcm9ncmVzcyh0KSB7XG4gICAgICAgICAgdmFyIF90aGlzJG9uUHJvZ3Jlc3MzO1xuICAgICAgICAgIChfdGhpcyRvblByb2dyZXNzMyA9IHRoaXMub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX3RoaXMkb25Qcm9ncmVzczMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9uUHJvZ3Jlc3MzLmNhbGwodGhpcywge1xuICAgICAgICAgICAgbG9hZGVkOiB0LmxvYWRlZCxcbiAgICAgICAgICAgIHRvdGFsOiB0Lmxlbmd0aENvbXB1dGFibGUgPyB0LnRvdGFsIDogdGhpcy5fY29udGVudExlbmd0aFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldCBmaWxlbmFtZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgY29udGVudExlbmd0aCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudExlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaGVhZGVyc1JlYWR5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgYXN5bmMgcmVhZCgpIHtcbiAgICAgICAgICBpZiAodGhpcy5fc3RvcmVkRXJyb3IpIHRocm93IHRoaXMuX3N0b3JlZEVycm9yO1xuICAgICAgICAgIGlmICh0aGlzLl9jYWNoZWRDaHVua3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuX2NhY2hlZENodW5rcy5zaGlmdCgpLFxuICAgICAgICAgICAgICBkb25lOiAhMVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuX2RvbmUpIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwLFxuICAgICAgICAgICAgZG9uZTogITBcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLnB1c2godCk7XG4gICAgICAgICAgcmV0dXJuIHQucHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwodCkge1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMDtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJzUmVjZWl2ZWRDYXBhYmlsaXR5LnJlamVjdCh0KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5fcmVxdWVzdHMpIHQucmVzb2x2ZSh7XG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwLFxuICAgICAgICAgICAgZG9uZTogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cy5sZW5ndGggPSAwO1xuICAgICAgICAgIHRoaXMuX21hbmFnZXIuaXNQZW5kaW5nUmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKSAmJiB0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9mdWxsUmVxdWVzdElkKTtcbiAgICAgICAgICB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFBERk5ldHdvcmtTdHJlYW1SYW5nZVJlcXVlc3RSZWFkZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlLCBuKSB7XG4gICAgICAgICAgdGhpcy5fbWFuYWdlciA9IHQ7XG4gICAgICAgICAgY29uc3QgaSA9IHtcbiAgICAgICAgICAgIG9uRG9uZTogdGhpcy5fb25Eb25lLmJpbmQodGhpcyksXG4gICAgICAgICAgICBvbkVycm9yOiB0aGlzLl9vbkVycm9yLmJpbmQodGhpcyksXG4gICAgICAgICAgICBvblByb2dyZXNzOiB0aGlzLl9vblByb2dyZXNzLmJpbmQodGhpcylcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX3VybCA9IHQudXJsO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3RJZCA9IHQucmVxdWVzdFJhbmdlKGUsIG4sIGkpO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3RzID0gW107XG4gICAgICAgICAgdGhpcy5fcXVldWVkQ2h1bmsgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMTtcbiAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9IHZvaWQgMDtcbiAgICAgICAgICB0aGlzLm9uUHJvZ3Jlc3MgPSBudWxsO1xuICAgICAgICAgIHRoaXMub25DbG9zZWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIF9jbG9zZSgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkb25DbG9zZWQ7XG4gICAgICAgICAgKF90aGlzJG9uQ2xvc2VkID0gdGhpcy5vbkNsb3NlZCkgPT09IG51bGwgfHwgX3RoaXMkb25DbG9zZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9uQ2xvc2VkLmNhbGwodGhpcywgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgX29uRG9uZSh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHQuY2h1bms7XG4gICAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RzLnNoaWZ0KCkucmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHZhbHVlOiBlLFxuICAgICAgICAgICAgICBkb25lOiAhMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMuX3F1ZXVlZENodW5rID0gZTtcbiAgICAgICAgICB0aGlzLl9kb25lID0gITA7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB0aGlzLl9jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIF9vbkVycm9yKHQpIHtcbiAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9ICgwLCByLmNyZWF0ZVJlc3BvbnNlU3RhdHVzRXJyb3IpKHQsIHRoaXMuX3VybCk7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlamVjdCh0aGlzLl9zdG9yZWRFcnJvcik7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB0aGlzLl9xdWV1ZWRDaHVuayA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgX29uUHJvZ3Jlc3ModCkge1xuICAgICAgICAgIHZhciBfdGhpcyRvblByb2dyZXNzNDtcbiAgICAgICAgICB0aGlzLmlzU3RyZWFtaW5nU3VwcG9ydGVkIHx8ICgoX3RoaXMkb25Qcm9ncmVzczQgPSB0aGlzLm9uUHJvZ3Jlc3MpID09PSBudWxsIHx8IF90aGlzJG9uUHJvZ3Jlc3M0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRvblByb2dyZXNzNC5jYWxsKHRoaXMsIHtcbiAgICAgICAgICAgIGxvYWRlZDogdC5sb2FkZWRcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyByZWFkKCkge1xuICAgICAgICAgIGlmICh0aGlzLl9zdG9yZWRFcnJvcikgdGhyb3cgdGhpcy5fc3RvcmVkRXJyb3I7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHRoaXMuX3F1ZXVlZENodW5rKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fcXVldWVkQ2h1bms7XG4gICAgICAgICAgICB0aGlzLl9xdWV1ZWRDaHVuayA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB2YWx1ZTogdCxcbiAgICAgICAgICAgICAgZG9uZTogITFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl9kb25lKSByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLl9yZXF1ZXN0cy5wdXNoKHQpO1xuICAgICAgICAgIHJldHVybiB0LnByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsKHQpIHtcbiAgICAgICAgICB0aGlzLl9kb25lID0gITA7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuX3JlcXVlc3RzKSB0LnJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICB0aGlzLl9tYW5hZ2VyLmlzUGVuZGluZ1JlcXVlc3QodGhpcy5fcmVxdWVzdElkKSAmJiB0aGlzLl9tYW5hZ2VyLmFib3J0UmVxdWVzdCh0aGlzLl9yZXF1ZXN0SWQpO1xuICAgICAgICAgIHRoaXMuX2Nsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5QREZOb2RlU3RyZWFtID0gdm9pZCAwO1xuICAgICAgbig4OSk7XG4gICAgICBuKDkzKTtcbiAgICAgIG4oMTAxKTtcbiAgICAgIG4oMTAyKTtcbiAgICAgIG4oMTA1KTtcbiAgICAgIG4oMTA3KTtcbiAgICAgIG4oMTA5KTtcbiAgICAgIG4oMTEzKTtcbiAgICAgIG4oMTE2KTtcbiAgICAgIG4oMTIzKTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTgxKTtcbiAgICAgIGNvbnN0IHMgPSAvXmZpbGU6XFwvXFwvXFwvW2EtekEtWl06XFwvLztcbiAgICAgIGUuUERGTm9kZVN0cmVhbSA9IGNsYXNzIFBERk5vZGVTdHJlYW0ge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdGhpcy5zb3VyY2UgPSB0O1xuICAgICAgICAgIHRoaXMudXJsID0gZnVuY3Rpb24gcGFyc2VVcmwodCkge1xuICAgICAgICAgICAgY29uc3QgZSA9IF9fd2VicGFja19yZXF1aXJlX18oT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAndXJsJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKSxcbiAgICAgICAgICAgICAgbiA9IGUucGFyc2UodCk7XG4gICAgICAgICAgICBpZiAoXCJmaWxlOlwiID09PSBuLnByb3RvY29sIHx8IG4uaG9zdCkgcmV0dXJuIG47XG4gICAgICAgICAgICBpZiAoL15bYS16XTpbL1xcXFxdL2kudGVzdCh0KSkgcmV0dXJuIGUucGFyc2UoXCJmaWxlOi8vL1wiLmNvbmNhdCh0KSk7XG4gICAgICAgICAgICBuLmhvc3QgfHwgKG4ucHJvdG9jb2wgPSBcImZpbGU6XCIpO1xuICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgICAgfSh0LnVybCk7XG4gICAgICAgICAgdGhpcy5pc0h0dHAgPSBcImh0dHA6XCIgPT09IHRoaXMudXJsLnByb3RvY29sIHx8IFwiaHR0cHM6XCIgPT09IHRoaXMudXJsLnByb3RvY29sO1xuICAgICAgICAgIHRoaXMuaXNGc1VybCA9IFwiZmlsZTpcIiA9PT0gdGhpcy51cmwucHJvdG9jb2w7XG4gICAgICAgICAgdGhpcy5odHRwSGVhZGVycyA9IHRoaXMuaXNIdHRwICYmIHQuaHR0cEhlYWRlcnMgfHwge307XG4gICAgICAgICAgdGhpcy5fZnVsbFJlcXVlc3RSZWFkZXIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgX3Byb2dyZXNzaXZlRGF0YUxlbmd0aCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTEsIF90aGlzJF9mdWxsUmVxdWVzdFJlYTEyO1xuICAgICAgICAgIHJldHVybiAoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTEgPSAoX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTIgPSB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcikgPT09IG51bGwgfHwgX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJF9mdWxsUmVxdWVzdFJlYTEyLl9sb2FkZWQpICE9PSBudWxsICYmIF90aGlzJF9mdWxsUmVxdWVzdFJlYTExICE9PSB2b2lkIDAgPyBfdGhpcyRfZnVsbFJlcXVlc3RSZWExMSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RnVsbFJlYWRlcigpIHtcbiAgICAgICAgICAoMCwgaS5hc3NlcnQpKCF0aGlzLl9mdWxsUmVxdWVzdFJlYWRlciwgXCJQREZOb2RlU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuXCIpO1xuICAgICAgICAgIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyID0gdGhpcy5pc0ZzVXJsID8gbmV3IFBERk5vZGVTdHJlYW1Gc0Z1bGxSZWFkZXIodGhpcykgOiBuZXcgUERGTm9kZVN0cmVhbUZ1bGxSZWFkZXIodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyO1xuICAgICAgICB9XG4gICAgICAgIGdldFJhbmdlUmVhZGVyKHQsIGUpIHtcbiAgICAgICAgICBpZiAoZSA8PSB0aGlzLl9wcm9ncmVzc2l2ZURhdGFMZW5ndGgpIHJldHVybiBudWxsO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmlzRnNVcmwgPyBuZXcgUERGTm9kZVN0cmVhbUZzUmFuZ2VSZWFkZXIodGhpcywgdCwgZSkgOiBuZXcgUERGTm9kZVN0cmVhbVJhbmdlUmVhZGVyKHRoaXMsIHQsIGUpO1xuICAgICAgICAgIHRoaXMuX3JhbmdlUmVxdWVzdFJlYWRlcnMucHVzaChuKTtcbiAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWxBbGxSZXF1ZXN0cyh0KSB7XG4gICAgICAgICAgdmFyIF90aGlzJF9mdWxsUmVxdWVzdFJlYTEzO1xuICAgICAgICAgIChfdGhpcyRfZnVsbFJlcXVlc3RSZWExMyA9IHRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyKSA9PT0gbnVsbCB8fCBfdGhpcyRfZnVsbFJlcXVlc3RSZWExMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkX2Z1bGxSZXF1ZXN0UmVhMTMuY2FuY2VsKHQpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKSBlLmNhbmNlbCh0KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNsYXNzIEJhc2VGdWxsUmVhZGVyIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHRoaXMuX3VybCA9IHQudXJsO1xuICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMTtcbiAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9IG51bGw7XG4gICAgICAgICAgdGhpcy5vblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICBjb25zdCBlID0gdC5zb3VyY2U7XG4gICAgICAgICAgdGhpcy5fY29udGVudExlbmd0aCA9IGUubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuX2xvYWRlZCA9IDA7XG4gICAgICAgICAgdGhpcy5fZmlsZW5hbWUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuX2Rpc2FibGVSYW5nZSA9IGUuZGlzYWJsZVJhbmdlIHx8ICExO1xuICAgICAgICAgIHRoaXMuX3JhbmdlQ2h1bmtTaXplID0gZS5yYW5nZUNodW5rU2l6ZTtcbiAgICAgICAgICB0aGlzLl9yYW5nZUNodW5rU2l6ZSB8fCB0aGlzLl9kaXNhYmxlUmFuZ2UgfHwgKHRoaXMuX2Rpc2FibGVSYW5nZSA9ICEwKTtcbiAgICAgICAgICB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCA9ICFlLmRpc2FibGVTdHJlYW07XG4gICAgICAgICAgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCA9ICFlLmRpc2FibGVSYW5nZTtcbiAgICAgICAgICB0aGlzLl9yZWFkYWJsZVN0cmVhbSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fcmVhZENhcGFiaWxpdHkgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaGVhZGVyc1JlYWR5KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGdldCBmaWxlbmFtZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGNvbnRlbnRMZW5ndGgoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZDtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyByZWFkKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRvblByb2dyZXNzNTtcbiAgICAgICAgICBhd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICAgIGlmICh0aGlzLl9kb25lKSByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5fc3RvcmVkRXJyb3IpIHRocm93IHRoaXMuX3N0b3JlZEVycm9yO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9yZWFkYWJsZVN0cmVhbS5yZWFkKCk7XG4gICAgICAgICAgaWYgKG51bGwgPT09IHQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRDYXBhYmlsaXR5ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fbG9hZGVkICs9IHQubGVuZ3RoO1xuICAgICAgICAgIChfdGhpcyRvblByb2dyZXNzNSA9IHRoaXMub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX3RoaXMkb25Qcm9ncmVzczUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9uUHJvZ3Jlc3M1LmNhbGwodGhpcywge1xuICAgICAgICAgICAgbG9hZGVkOiB0aGlzLl9sb2FkZWQsXG4gICAgICAgICAgICB0b3RhbDogdGhpcy5fY29udGVudExlbmd0aFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogbmV3IFVpbnQ4QXJyYXkodCkuYnVmZmVyLFxuICAgICAgICAgICAgZG9uZTogITFcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhbmNlbCh0KSB7XG4gICAgICAgICAgdGhpcy5fcmVhZGFibGVTdHJlYW0gPyB0aGlzLl9yZWFkYWJsZVN0cmVhbS5kZXN0cm95KHQpIDogdGhpcy5fZXJyb3IodCk7XG4gICAgICAgIH1cbiAgICAgICAgX2Vycm9yKHQpIHtcbiAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9IHQ7XG4gICAgICAgICAgdGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIF9zZXRSZWFkYWJsZVN0cmVhbSh0KSB7XG4gICAgICAgICAgdGhpcy5fcmVhZGFibGVTdHJlYW0gPSB0O1xuICAgICAgICAgIHQub24oXCJyZWFkYWJsZVwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICB0LmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuX2RvbmUgPSAhMDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0Lm9uKFwiZXJyb3JcIiwgdCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9lcnJvcih0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAhdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQgJiYgdGhpcy5faXNSYW5nZVN1cHBvcnRlZCAmJiB0aGlzLl9lcnJvcihuZXcgaS5BYm9ydEV4Y2VwdGlvbihcInN0cmVhbWluZyBpcyBkaXNhYmxlZFwiKSk7XG4gICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgJiYgdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIEJhc2VSYW5nZVJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB0aGlzLl91cmwgPSB0LnVybDtcbiAgICAgICAgICB0aGlzLl9kb25lID0gITE7XG4gICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgPSBudWxsO1xuICAgICAgICAgIHRoaXMub25Qcm9ncmVzcyA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fbG9hZGVkID0gMDtcbiAgICAgICAgICB0aGlzLl9yZWFkYWJsZVN0cmVhbSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fcmVhZENhcGFiaWxpdHkgPSBuZXcgaS5Qcm9taXNlQ2FwYWJpbGl0eSgpO1xuICAgICAgICAgIGNvbnN0IGUgPSB0LnNvdXJjZTtcbiAgICAgICAgICB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZCA9ICFlLmRpc2FibGVTdHJlYW07XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzU3RyZWFtaW5nU3VwcG9ydGVkKCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZDtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyByZWFkKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRvblByb2dyZXNzNjtcbiAgICAgICAgICBhd2FpdCB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICAgIGlmICh0aGlzLl9kb25lKSByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMCxcbiAgICAgICAgICAgIGRvbmU6ICEwXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5fc3RvcmVkRXJyb3IpIHRocm93IHRoaXMuX3N0b3JlZEVycm9yO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9yZWFkYWJsZVN0cmVhbS5yZWFkKCk7XG4gICAgICAgICAgaWYgKG51bGwgPT09IHQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRDYXBhYmlsaXR5ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlYWQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fbG9hZGVkICs9IHQubGVuZ3RoO1xuICAgICAgICAgIChfdGhpcyRvblByb2dyZXNzNiA9IHRoaXMub25Qcm9ncmVzcykgPT09IG51bGwgfHwgX3RoaXMkb25Qcm9ncmVzczYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9uUHJvZ3Jlc3M2LmNhbGwodGhpcywge1xuICAgICAgICAgICAgbG9hZGVkOiB0aGlzLl9sb2FkZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KHQpLmJ1ZmZlcixcbiAgICAgICAgICAgIGRvbmU6ICExXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjYW5jZWwodCkge1xuICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RyZWFtID8gdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0KSA6IHRoaXMuX2Vycm9yKHQpO1xuICAgICAgICB9XG4gICAgICAgIF9lcnJvcih0KSB7XG4gICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgPSB0O1xuICAgICAgICAgIHRoaXMuX3JlYWRDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBfc2V0UmVhZGFibGVTdHJlYW0odCkge1xuICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RyZWFtID0gdDtcbiAgICAgICAgICB0Lm9uKFwicmVhZGFibGVcIiwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVhZENhcGFiaWxpdHkucmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHQub24oXCJlbmRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgdC5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9kb25lID0gITA7XG4gICAgICAgICAgICB0aGlzLl9yZWFkQ2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5vbihcImVycm9yXCIsIHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZXJyb3IodCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgJiYgdGhpcy5fcmVhZGFibGVTdHJlYW0uZGVzdHJveSh0aGlzLl9zdG9yZWRFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RPcHRpb25zKHQsIGUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwcm90b2NvbDogdC5wcm90b2NvbCxcbiAgICAgICAgICBhdXRoOiB0LmF1dGgsXG4gICAgICAgICAgaG9zdDogdC5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB0LnBvcnQsXG4gICAgICAgICAgcGF0aDogdC5wYXRoLFxuICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICBoZWFkZXJzOiBlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjbGFzcyBQREZOb2RlU3RyZWFtRnVsbFJlYWRlciBleHRlbmRzIEJhc2VGdWxsUmVhZGVyIHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQpO1xuICAgICAgICAgIGNvbnN0IGhhbmRsZVJlc3BvbnNlID0gZSA9PiB7XG4gICAgICAgICAgICBpZiAoNDA0ID09PSBlLnN0YXR1c0NvZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oXCJNaXNzaW5nIFBERiBcXFwiXCIuY29uY2F0KHRoaXMuX3VybCwgXCJcXFwiLlwiKSk7XG4gICAgICAgICAgICAgIHRoaXMuX3N0b3JlZEVycm9yID0gdDtcbiAgICAgICAgICAgICAgdGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVqZWN0KHQpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9oZWFkZXJzQ2FwYWJpbGl0eS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbShlKTtcbiAgICAgICAgICAgIGNvbnN0IGdldFJlc3BvbnNlSGVhZGVyID0gdCA9PiB0aGlzLl9yZWFkYWJsZVN0cmVhbS5oZWFkZXJzW3QudG9Mb3dlckNhc2UoKV0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhbGxvd1JhbmdlUmVxdWVzdHM6IG4sXG4gICAgICAgICAgICAgICAgc3VnZ2VzdGVkTGVuZ3RoOiBzXG4gICAgICAgICAgICAgIH0gPSAoMCwgci52YWxpZGF0ZVJhbmdlUmVxdWVzdENhcGFiaWxpdGllcykoe1xuICAgICAgICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBnZXRSZXNwb25zZUhlYWRlcixcbiAgICAgICAgICAgICAgICBpc0h0dHA6IHQuaXNIdHRwLFxuICAgICAgICAgICAgICAgIHJhbmdlQ2h1bmtTaXplOiB0aGlzLl9yYW5nZUNodW5rU2l6ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlUmFuZ2U6IHRoaXMuX2Rpc2FibGVSYW5nZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQgPSBuO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudExlbmd0aCA9IHMgfHwgdGhpcy5fY29udGVudExlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuX2ZpbGVuYW1lID0gKDAsIHIuZXh0cmFjdEZpbGVuYW1lRnJvbUhlYWRlcikoZ2V0UmVzcG9uc2VIZWFkZXIpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdCA9IG51bGw7XG4gICAgICAgICAgaWYgKFwiaHR0cDpcIiA9PT0gdGhpcy5fdXJsLnByb3RvY29sKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdodHRwJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKTtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSBlLnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLCB0Lmh0dHBIZWFkZXJzKSwgaGFuZGxlUmVzcG9uc2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlID0gX193ZWJwYWNrX3JlcXVpcmVfXyhPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdodHRwcydcIik7IGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJzsgdGhyb3cgZTsgfSgpKSk7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gZS5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCwgdC5odHRwSGVhZGVycyksIGhhbmRsZVJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdC5vbihcImVycm9yXCIsIHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgPSB0O1xuICAgICAgICAgICAgdGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVqZWN0KHQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3QuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFBERk5vZGVTdHJlYW1SYW5nZVJlYWRlciBleHRlbmRzIEJhc2VSYW5nZVJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQsIGUsIG4pIHtcbiAgICAgICAgICBzdXBlcih0KTtcbiAgICAgICAgICB0aGlzLl9odHRwSGVhZGVycyA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgZSBpbiB0Lmh0dHBIZWFkZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBuID0gdC5odHRwSGVhZGVyc1tlXTtcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gbiAmJiAodGhpcy5faHR0cEhlYWRlcnNbZV0gPSBuKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5faHR0cEhlYWRlcnMuUmFuZ2UgPSBcImJ5dGVzPVwiLmNvbmNhdChlLCBcIi1cIikuY29uY2F0KG4gLSAxKTtcbiAgICAgICAgICBjb25zdCBoYW5kbGVSZXNwb25zZSA9IHQgPT4ge1xuICAgICAgICAgICAgaWYgKDQwNCAhPT0gdC5zdGF0dXNDb2RlKSB0aGlzLl9zZXRSZWFkYWJsZVN0cmVhbSh0KTtlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IG5ldyBpLk1pc3NpbmdQREZFeGNlcHRpb24oXCJNaXNzaW5nIFBERiBcXFwiXCIuY29uY2F0KHRoaXMuX3VybCwgXCJcXFwiLlwiKSk7XG4gICAgICAgICAgICAgIHRoaXMuX3N0b3JlZEVycm9yID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSBudWxsO1xuICAgICAgICAgIGlmIChcImh0dHA6XCIgPT09IHRoaXMuX3VybC5wcm90b2NvbCkge1xuICAgICAgICAgICAgY29uc3QgdCA9IF9fd2VicGFja19yZXF1aXJlX18oT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnaHR0cCdcIik7IGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJzsgdGhyb3cgZTsgfSgpKSk7XG4gICAgICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gdC5yZXF1ZXN0KGNyZWF0ZVJlcXVlc3RPcHRpb25zKHRoaXMuX3VybCwgdGhpcy5faHR0cEhlYWRlcnMpLCBoYW5kbGVSZXNwb25zZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKE9iamVjdChmdW5jdGlvbiB3ZWJwYWNrTWlzc2luZ01vZHVsZSgpIHsgdmFyIGUgPSBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ2h0dHBzJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKTtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3QgPSB0LnJlcXVlc3QoY3JlYXRlUmVxdWVzdE9wdGlvbnModGhpcy5fdXJsLCB0aGlzLl9odHRwSGVhZGVycyksIGhhbmRsZVJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdC5vbihcImVycm9yXCIsIHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmVkRXJyb3IgPSB0O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX3JlcXVlc3QuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFBERk5vZGVTdHJlYW1Gc0Z1bGxSZWFkZXIgZXh0ZW5kcyBCYXNlRnVsbFJlYWRlciB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBzdXBlcih0KTtcbiAgICAgICAgICBsZXQgZSA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLl91cmwucGF0aCk7XG4gICAgICAgICAgcy50ZXN0KHRoaXMuX3VybC5ocmVmKSAmJiAoZSA9IGUucmVwbGFjZSgvXlxcLy8sIFwiXCIpKTtcbiAgICAgICAgICBjb25zdCBuID0gX193ZWJwYWNrX3JlcXVpcmVfXyhPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdmcydcIik7IGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJzsgdGhyb3cgZTsgfSgpKSk7XG4gICAgICAgICAgbi5sc3RhdChlLCAodCwgcikgPT4ge1xuICAgICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgICAgXCJFTk9FTlRcIiA9PT0gdC5jb2RlICYmICh0ID0gbmV3IGkuTWlzc2luZ1BERkV4Y2VwdGlvbihcIk1pc3NpbmcgUERGIFxcXCJcIi5jb25jYXQoZSwgXCJcXFwiLlwiKSkpO1xuICAgICAgICAgICAgICB0aGlzLl9zdG9yZWRFcnJvciA9IHQ7XG4gICAgICAgICAgICAgIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlamVjdCh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRMZW5ndGggPSByLnNpemU7XG4gICAgICAgICAgICAgIHRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKG4uY3JlYXRlUmVhZFN0cmVhbShlKSk7XG4gICAgICAgICAgICAgIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgUERGTm9kZVN0cmVhbUZzUmFuZ2VSZWFkZXIgZXh0ZW5kcyBCYXNlUmFuZ2VSZWFkZXIge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlLCBuKSB7XG4gICAgICAgICAgc3VwZXIodCk7XG4gICAgICAgICAgbGV0IGkgPSBkZWNvZGVVUklDb21wb25lbnQodGhpcy5fdXJsLnBhdGgpO1xuICAgICAgICAgIHMudGVzdCh0aGlzLl91cmwuaHJlZikgJiYgKGkgPSBpLnJlcGxhY2UoL15cXC8vLCBcIlwiKSk7XG4gICAgICAgICAgY29uc3QgciA9IF9fd2VicGFja19yZXF1aXJlX18oT2JqZWN0KGZ1bmN0aW9uIHdlYnBhY2tNaXNzaW5nTW9kdWxlKCkgeyB2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnZnMnXCIpOyBlLmNvZGUgPSAnTU9EVUxFX05PVF9GT1VORCc7IHRocm93IGU7IH0oKSkpO1xuICAgICAgICAgIHRoaXMuX3NldFJlYWRhYmxlU3RyZWFtKHIuY3JlYXRlUmVhZFN0cmVhbShpLCB7XG4gICAgICAgICAgICBzdGFydDogZSxcbiAgICAgICAgICAgIGVuZDogbiAtIDFcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5TVkdHcmFwaGljcyA9IHZvaWQgMDtcbiAgICAgIG4oODQpO1xuICAgICAgbig4Nik7XG4gICAgICBuKDg3KTtcbiAgICAgIG4oOTMpO1xuICAgICAgbigxMDEpO1xuICAgICAgbigxMDIpO1xuICAgICAgbigxMDUpO1xuICAgICAgbigxMDcpO1xuICAgICAgbigxMDkpO1xuICAgICAgbigxMTMpO1xuICAgICAgbigxMTYpO1xuICAgICAgbigxMjMpO1xuICAgICAgbigyKTtcbiAgICAgIG4oODkpO1xuICAgICAgbigxODYpO1xuICAgICAgdmFyIGkgPSBuKDE2NyksXG4gICAgICAgIHIgPSBuKDEpO1xuICAgICAgY29uc3QgcyA9IFwibm9ybWFsXCIsXG4gICAgICAgIGEgPSBcIm5vcm1hbFwiLFxuICAgICAgICBvID0gXCIjMDAwMDAwXCIsXG4gICAgICAgIGwgPSBbXCJidXR0XCIsIFwicm91bmRcIiwgXCJzcXVhcmVcIl0sXG4gICAgICAgIGMgPSBbXCJtaXRlclwiLCBcInJvdW5kXCIsIFwiYmV2ZWxcIl0sXG4gICAgICAgIGNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uIGNyZWF0ZU9iamVjdFVSTCh0KSB7XG4gICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IFwiXCIsXG4gICAgICAgICAgICBuID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gJiYgYXJndW1lbnRzWzJdO1xuICAgICAgICAgIGlmIChVUkwuY3JlYXRlT2JqZWN0VVJMICYmIFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIEJsb2IgJiYgIW4pIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFt0XSwge1xuICAgICAgICAgICAgdHlwZTogZVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBjb25zdCBpID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwiO1xuICAgICAgICAgIGxldCByID0gXCJkYXRhOlwiLmNvbmNhdChlLCBcIjtiYXNlNjQsXCIpO1xuICAgICAgICAgIGZvciAobGV0IGUgPSAwLCBuID0gdC5sZW5ndGg7IGUgPCBuOyBlICs9IDMpIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSAyNTUgJiB0W2VdLFxuICAgICAgICAgICAgICBhID0gMjU1ICYgdFtlICsgMV0sXG4gICAgICAgICAgICAgIG8gPSAyNTUgJiB0W2UgKyAyXTtcbiAgICAgICAgICAgIHIgKz0gaVtzID4+IDJdICsgaVsoMyAmIHMpIDw8IDQgfCBhID4+IDRdICsgaVtlICsgMSA8IG4gPyAoMTUgJiBhKSA8PCAyIHwgbyA+PiA2IDogNjRdICsgaVtlICsgMiA8IG4gPyA2MyAmIG8gOiA2NF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9LFxuICAgICAgICBoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgVWludDhBcnJheShbMTM3LCA4MCwgNzgsIDcxLCAxMywgMTAsIDI2LCAxMF0pLFxuICAgICAgICAgICAgZSA9IG5ldyBJbnQzMkFycmF5KDI1Nik7XG4gICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCAyNTY7IHQrKykge1xuICAgICAgICAgICAgbGV0IG4gPSB0O1xuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCA4OyB0KyspIG4gPSAxICYgbiA/IDM5ODgyOTIzODQgXiBuID4+IDEgJiAyMTQ3NDgzNjQ3IDogbiA+PiAxICYgMjE0NzQ4MzY0NztcbiAgICAgICAgICAgIGVbdF0gPSBuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiB3cml0ZVBuZ0NodW5rKHQsIG4sIGksIHIpIHtcbiAgICAgICAgICAgIGxldCBzID0gcjtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBuLmxlbmd0aDtcbiAgICAgICAgICAgIGlbc10gPSBhID4+IDI0ICYgMjU1O1xuICAgICAgICAgICAgaVtzICsgMV0gPSBhID4+IDE2ICYgMjU1O1xuICAgICAgICAgICAgaVtzICsgMl0gPSBhID4+IDggJiAyNTU7XG4gICAgICAgICAgICBpW3MgKyAzXSA9IDI1NSAmIGE7XG4gICAgICAgICAgICBzICs9IDQ7XG4gICAgICAgICAgICBpW3NdID0gMjU1ICYgdC5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgaVtzICsgMV0gPSAyNTUgJiB0LmNoYXJDb2RlQXQoMSk7XG4gICAgICAgICAgICBpW3MgKyAyXSA9IDI1NSAmIHQuY2hhckNvZGVBdCgyKTtcbiAgICAgICAgICAgIGlbcyArIDNdID0gMjU1ICYgdC5jaGFyQ29kZUF0KDMpO1xuICAgICAgICAgICAgcyArPSA0O1xuICAgICAgICAgICAgaS5zZXQobiwgcyk7XG4gICAgICAgICAgICBzICs9IG4ubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgbyA9IGZ1bmN0aW9uIGNyYzMyKHQsIG4sIGkpIHtcbiAgICAgICAgICAgICAgbGV0IHIgPSAtMTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgcyA9IG47IHMgPCBpOyBzKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuID0gMjU1ICYgKHIgXiB0W3NdKTtcbiAgICAgICAgICAgICAgICByID0gciA+Pj4gOCBeIGVbbl07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIC0xIF4gcjtcbiAgICAgICAgICAgIH0oaSwgciArIDQsIHMpO1xuICAgICAgICAgICAgaVtzXSA9IG8gPj4gMjQgJiAyNTU7XG4gICAgICAgICAgICBpW3MgKyAxXSA9IG8gPj4gMTYgJiAyNTU7XG4gICAgICAgICAgICBpW3MgKyAyXSA9IG8gPj4gOCAmIDI1NTtcbiAgICAgICAgICAgIGlbcyArIDNdID0gMjU1ICYgbztcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCkge1xuICAgICAgICAgICAgbGV0IGUgPSB0Lmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IG4gPSA2NTUzNSxcbiAgICAgICAgICAgICAgaSA9IE1hdGguY2VpbChlIC8gbiksXG4gICAgICAgICAgICAgIHIgPSBuZXcgVWludDhBcnJheSgyICsgZSArIDUgKiBpICsgNCk7XG4gICAgICAgICAgICBsZXQgcyA9IDA7XG4gICAgICAgICAgICByW3MrK10gPSAxMjA7XG4gICAgICAgICAgICByW3MrK10gPSAxNTY7XG4gICAgICAgICAgICBsZXQgYSA9IDA7XG4gICAgICAgICAgICBmb3IgKDsgZSA+IG47KSB7XG4gICAgICAgICAgICAgIHJbcysrXSA9IDA7XG4gICAgICAgICAgICAgIHJbcysrXSA9IDI1NTtcbiAgICAgICAgICAgICAgcltzKytdID0gMjU1O1xuICAgICAgICAgICAgICByW3MrK10gPSAwO1xuICAgICAgICAgICAgICByW3MrK10gPSAwO1xuICAgICAgICAgICAgICByLnNldCh0LnN1YmFycmF5KGEsIGEgKyBuKSwgcyk7XG4gICAgICAgICAgICAgIHMgKz0gbjtcbiAgICAgICAgICAgICAgYSArPSBuO1xuICAgICAgICAgICAgICBlIC09IG47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByW3MrK10gPSAxO1xuICAgICAgICAgICAgcltzKytdID0gMjU1ICYgZTtcbiAgICAgICAgICAgIHJbcysrXSA9IGUgPj4gOCAmIDI1NTtcbiAgICAgICAgICAgIHJbcysrXSA9IDI1NSAmIH5lO1xuICAgICAgICAgICAgcltzKytdID0gKDY1NTM1ICYgfmUpID4+IDggJiAyNTU7XG4gICAgICAgICAgICByLnNldCh0LnN1YmFycmF5KGEpLCBzKTtcbiAgICAgICAgICAgIHMgKz0gdC5sZW5ndGggLSBhO1xuICAgICAgICAgICAgY29uc3QgbyA9IGZ1bmN0aW9uIGFkbGVyMzIodCwgZSwgbikge1xuICAgICAgICAgICAgICBsZXQgaSA9IDEsXG4gICAgICAgICAgICAgICAgciA9IDA7XG4gICAgICAgICAgICAgIGZvciAobGV0IHMgPSBlOyBzIDwgbjsgKytzKSB7XG4gICAgICAgICAgICAgICAgaSA9IChpICsgKDI1NSAmIHRbc10pKSAlIDY1NTIxO1xuICAgICAgICAgICAgICAgIHIgPSAociArIGkpICUgNjU1MjE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHIgPDwgMTYgfCBpO1xuICAgICAgICAgICAgfSh0LCAwLCB0Lmxlbmd0aCk7XG4gICAgICAgICAgICByW3MrK10gPSBvID4+IDI0ICYgMjU1O1xuICAgICAgICAgICAgcltzKytdID0gbyA+PiAxNiAmIDI1NTtcbiAgICAgICAgICAgIHJbcysrXSA9IG8gPj4gOCAmIDI1NTtcbiAgICAgICAgICAgIHJbcysrXSA9IDI1NSAmIG87XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZnVuY3Rpb24gZW5jb2RlKGUsIG4sIGksIHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBlLndpZHRoLFxuICAgICAgICAgICAgICBvID0gZS5oZWlnaHQ7XG4gICAgICAgICAgICBsZXQgbCwgYywgaDtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBlLmRhdGE7XG4gICAgICAgICAgICBzd2l0Y2ggKG4pIHtcbiAgICAgICAgICAgICAgY2FzZSByLkltYWdlS2luZC5HUkFZU0NBTEVfMUJQUDpcbiAgICAgICAgICAgICAgICBjID0gMDtcbiAgICAgICAgICAgICAgICBsID0gMTtcbiAgICAgICAgICAgICAgICBoID0gYSArIDcgPj4gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLkltYWdlS2luZC5SR0JfMjRCUFA6XG4gICAgICAgICAgICAgICAgYyA9IDI7XG4gICAgICAgICAgICAgICAgbCA9IDg7XG4gICAgICAgICAgICAgICAgaCA9IDMgKiBhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuSW1hZ2VLaW5kLlJHQkFfMzJCUFA6XG4gICAgICAgICAgICAgICAgYyA9IDY7XG4gICAgICAgICAgICAgICAgbCA9IDg7XG4gICAgICAgICAgICAgICAgaCA9IDQgKiBhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgZm9ybWF0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdSA9IG5ldyBVaW50OEFycmF5KCgxICsgaCkgKiBvKTtcbiAgICAgICAgICAgIGxldCBwID0gMCxcbiAgICAgICAgICAgICAgZiA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IG87ICsrdCkge1xuICAgICAgICAgICAgICB1W3ArK10gPSAwO1xuICAgICAgICAgICAgICB1LnNldChkLnN1YmFycmF5KGYsIGYgKyBoKSwgcCk7XG4gICAgICAgICAgICAgIGYgKz0gaDtcbiAgICAgICAgICAgICAgcCArPSBoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG4gPT09IHIuSW1hZ2VLaW5kLkdSQVlTQ0FMRV8xQlBQICYmIHMpIHtcbiAgICAgICAgICAgICAgcCA9IDA7XG4gICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgbzsgdCsrKSB7XG4gICAgICAgICAgICAgICAgcCsrO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgaDsgdCsrKSB1W3ArK10gXj0gMjU1O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBnID0gbmV3IFVpbnQ4QXJyYXkoW2EgPj4gMjQgJiAyNTUsIGEgPj4gMTYgJiAyNTUsIGEgPj4gOCAmIDI1NSwgMjU1ICYgYSwgbyA+PiAyNCAmIDI1NSwgbyA+PiAxNiAmIDI1NSwgbyA+PiA4ICYgMjU1LCAyNTUgJiBvLCBsLCBjLCAwLCAwLCAwXSksXG4gICAgICAgICAgICAgIG0gPSBmdW5jdGlvbiBkZWZsYXRlU3luYyh0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyLmlzTm9kZUpTKSByZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb25zLm5vZGUpID49IDggPyB0IDogQnVmZmVyLmZyb20odCksXG4gICAgICAgICAgICAgICAgICAgIG4gPSBPYmplY3QoZnVuY3Rpb24gd2VicGFja01pc3NpbmdNb2R1bGUoKSB7IHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICd6bGliJ1wiKTsgZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnOyB0aHJvdyBlOyB9KCkpKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogOVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBuIGluc3RhbmNlb2YgVWludDhBcnJheSA/IG4gOiBuZXcgVWludDhBcnJheShuKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh0KSB7XG4gICAgICAgICAgICAgICAgICAoMCwgci53YXJuKShcIk5vdCBjb21wcmVzc2luZyBQTkcgYmVjYXVzZSB6bGliLmRlZmxhdGVTeW5jIGlzIHVuYXZhaWxhYmxlOiBcIiArIHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmbGF0ZVN5bmNVbmNvbXByZXNzZWQodCk7XG4gICAgICAgICAgICAgIH0odSksXG4gICAgICAgICAgICAgIGIgPSB0Lmxlbmd0aCArIDM2ICsgZy5sZW5ndGggKyBtLmxlbmd0aCxcbiAgICAgICAgICAgICAgdiA9IG5ldyBVaW50OEFycmF5KGIpO1xuICAgICAgICAgICAgbGV0IHkgPSAwO1xuICAgICAgICAgICAgdi5zZXQodCwgeSk7XG4gICAgICAgICAgICB5ICs9IHQubGVuZ3RoO1xuICAgICAgICAgICAgd3JpdGVQbmdDaHVuayhcIklIRFJcIiwgZywgdiwgeSk7XG4gICAgICAgICAgICB5ICs9IDEyICsgZy5sZW5ndGg7XG4gICAgICAgICAgICB3cml0ZVBuZ0NodW5rKFwiSURBVEFcIiwgbSwgdiwgeSk7XG4gICAgICAgICAgICB5ICs9IDEyICsgbS5sZW5ndGg7XG4gICAgICAgICAgICB3cml0ZVBuZ0NodW5rKFwiSUVORFwiLCBuZXcgVWludDhBcnJheSgwKSwgdiwgeSk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlT2JqZWN0VVJMKHYsIFwiaW1hZ2UvcG5nXCIsIGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gY29udmVydEltZ0RhdGFUb1BuZyh0LCBlLCBuKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlKHQsIHZvaWQgMCA9PT0gdC5raW5kID8gci5JbWFnZUtpbmQuR1JBWVNDQUxFXzFCUFAgOiB0LmtpbmQsIGUsIG4pO1xuICAgICAgICAgIH07XG4gICAgICAgIH0oKTtcbiAgICAgIGNsYXNzIFNWR0V4dHJhU3RhdGUge1xuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICB0aGlzLmZvbnRTaXplU2NhbGUgPSAxO1xuICAgICAgICAgIHRoaXMuZm9udFdlaWdodCA9IGE7XG4gICAgICAgICAgdGhpcy5mb250U2l6ZSA9IDA7XG4gICAgICAgICAgdGhpcy50ZXh0TWF0cml4ID0gci5JREVOVElUWV9NQVRSSVg7XG4gICAgICAgICAgdGhpcy5mb250TWF0cml4ID0gci5GT05UX0lERU5USVRZX01BVFJJWDtcbiAgICAgICAgICB0aGlzLmxlYWRpbmcgPSAwO1xuICAgICAgICAgIHRoaXMudGV4dFJlbmRlcmluZ01vZGUgPSByLlRleHRSZW5kZXJpbmdNb2RlLkZJTEw7XG4gICAgICAgICAgdGhpcy50ZXh0TWF0cml4U2NhbGUgPSAxO1xuICAgICAgICAgIHRoaXMueCA9IDA7XG4gICAgICAgICAgdGhpcy55ID0gMDtcbiAgICAgICAgICB0aGlzLmxpbmVYID0gMDtcbiAgICAgICAgICB0aGlzLmxpbmVZID0gMDtcbiAgICAgICAgICB0aGlzLmNoYXJTcGFjaW5nID0gMDtcbiAgICAgICAgICB0aGlzLndvcmRTcGFjaW5nID0gMDtcbiAgICAgICAgICB0aGlzLnRleHRIU2NhbGUgPSAxO1xuICAgICAgICAgIHRoaXMudGV4dFJpc2UgPSAwO1xuICAgICAgICAgIHRoaXMuZmlsbENvbG9yID0gbztcbiAgICAgICAgICB0aGlzLnN0cm9rZUNvbG9yID0gXCIjMDAwMDAwXCI7XG4gICAgICAgICAgdGhpcy5maWxsQWxwaGEgPSAxO1xuICAgICAgICAgIHRoaXMuc3Ryb2tlQWxwaGEgPSAxO1xuICAgICAgICAgIHRoaXMubGluZVdpZHRoID0gMTtcbiAgICAgICAgICB0aGlzLmxpbmVKb2luID0gXCJcIjtcbiAgICAgICAgICB0aGlzLmxpbmVDYXAgPSBcIlwiO1xuICAgICAgICAgIHRoaXMubWl0ZXJMaW1pdCA9IDA7XG4gICAgICAgICAgdGhpcy5kYXNoQXJyYXkgPSBbXTtcbiAgICAgICAgICB0aGlzLmRhc2hQaGFzZSA9IDA7XG4gICAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNsaXBVcmwgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY2xpcEdyb3VwID0gbnVsbDtcbiAgICAgICAgICB0aGlzLm1hc2tJZCA9IFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgY2xvbmUoKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q3VycmVudFBvaW50KHQsIGUpIHtcbiAgICAgICAgICB0aGlzLnggPSB0O1xuICAgICAgICAgIHRoaXMueSA9IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIHBmKHQpIHtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodCkpIHJldHVybiB0LnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IGUgPSB0LnRvRml4ZWQoMTApO1xuICAgICAgICBsZXQgbiA9IGUubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKFwiMFwiICE9PSBlW25dKSByZXR1cm4gZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIG4tLTtcbiAgICAgICAgfSB3aGlsZSAoXCIwXCIgPT09IGVbbl0pO1xuICAgICAgICByZXR1cm4gZS5zdWJzdHJpbmcoMCwgXCIuXCIgPT09IGVbbl0gPyBuIDogbiArIDEpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcG0odCkge1xuICAgICAgICBpZiAoMCA9PT0gdFs0XSAmJiAwID09PSB0WzVdKSB7XG4gICAgICAgICAgaWYgKDAgPT09IHRbMV0gJiYgMCA9PT0gdFsyXSkgcmV0dXJuIDEgPT09IHRbMF0gJiYgMSA9PT0gdFszXSA/IFwiXCIgOiBcInNjYWxlKFwiLmNvbmNhdChwZih0WzBdKSwgXCIgXCIpLmNvbmNhdChwZih0WzNdKSwgXCIpXCIpO1xuICAgICAgICAgIGlmICh0WzBdID09PSB0WzNdICYmIHRbMV0gPT09IC10WzJdKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJyb3RhdGUoXCIuY29uY2F0KHBmKDE4MCAqIE1hdGguYWNvcyh0WzBdKSAvIE1hdGguUEkpLCBcIilcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKDEgPT09IHRbMF0gJiYgMCA9PT0gdFsxXSAmJiAwID09PSB0WzJdICYmIDEgPT09IHRbM10pIHJldHVybiBcInRyYW5zbGF0ZShcIi5jb25jYXQocGYodFs0XSksIFwiIFwiKS5jb25jYXQocGYodFs1XSksIFwiKVwiKTtcbiAgICAgICAgcmV0dXJuIFwibWF0cml4KFwiLmNvbmNhdChwZih0WzBdKSwgXCIgXCIpLmNvbmNhdChwZih0WzFdKSwgXCIgXCIpLmNvbmNhdChwZih0WzJdKSwgXCIgXCIpLmNvbmNhdChwZih0WzNdKSwgXCIgXCIpLmNvbmNhdChwZih0WzRdKSwgXCIgXCIpLmNvbmNhdChwZih0WzVdKSwgXCIpXCIpO1xuICAgICAgfVxuICAgICAgbGV0IGQgPSAwLFxuICAgICAgICB1ID0gMCxcbiAgICAgICAgcCA9IDA7XG4gICAgICBlLlNWR0dyYXBoaWNzID0gY2xhc3MgU1ZHR3JhcGhpY3Mge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0LCBlKSB7XG4gICAgICAgICAgbGV0IG4gPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSAmJiBhcmd1bWVudHNbMl07XG4gICAgICAgICAgKDAsIGkuZGVwcmVjYXRlZCkoXCJUaGUgU1ZHIGJhY2stZW5kIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIGFuZCAqbWF5KiBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXCIpO1xuICAgICAgICAgIHRoaXMuc3ZnRmFjdG9yeSA9IG5ldyBpLkRPTVNWR0ZhY3RvcnkoKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBuZXcgU1ZHRXh0cmFTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gci5JREVOVElUWV9NQVRSSVg7XG4gICAgICAgICAgdGhpcy50cmFuc2Zvcm1TdGFjayA9IFtdO1xuICAgICAgICAgIHRoaXMuZXh0cmFTdGFjayA9IFtdO1xuICAgICAgICAgIHRoaXMuY29tbW9uT2JqcyA9IHQ7XG4gICAgICAgICAgdGhpcy5vYmpzID0gZTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdDbGlwID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdFT0ZpbGwgPSAhMTtcbiAgICAgICAgICB0aGlzLmVtYmVkRm9udHMgPSAhMTtcbiAgICAgICAgICB0aGlzLmVtYmVkZGVkRm9udHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuY3NzU3R5bGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuZm9yY2VEYXRhU2NoZW1hID0gISFuO1xuICAgICAgICAgIHRoaXMuX29wZXJhdG9ySWRNYXBwaW5nID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCB0IGluIHIuT1BTKSB0aGlzLl9vcGVyYXRvcklkTWFwcGluZ1tyLk9QU1t0XV0gPSB0O1xuICAgICAgICB9XG4gICAgICAgIGdldE9iamVjdCh0KSB7XG4gICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIFwic3RyaW5nXCIgPT0gdHlwZW9mIHQgPyB0LnN0YXJ0c1dpdGgoXCJnX1wiKSA/IHRoaXMuY29tbW9uT2Jqcy5nZXQodCkgOiB0aGlzLm9ianMuZ2V0KHQpIDogZTtcbiAgICAgICAgfVxuICAgICAgICBzYXZlKCkge1xuICAgICAgICAgIHRoaXMudHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLnRyYW5zZm9ybU1hdHJpeCk7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICB0aGlzLmV4dHJhU3RhY2sucHVzaCh0KTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQgPSB0LmNsb25lKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdG9yZSgpIHtcbiAgICAgICAgICB0aGlzLnRyYW5zZm9ybU1hdHJpeCA9IHRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCk7XG4gICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5leHRyYVN0YWNrLnBvcCgpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0NsaXAgPSBudWxsO1xuICAgICAgICAgIHRoaXMudGdycCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZ3JvdXAodCkge1xuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgIHRoaXMuZXhlY3V0ZU9wVHJlZSh0KTtcbiAgICAgICAgICB0aGlzLnJlc3RvcmUoKTtcbiAgICAgICAgfVxuICAgICAgICBsb2FkRGVwZW5kZW5jaWVzKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdC5mbkFycmF5LFxuICAgICAgICAgICAgbiA9IHQuYXJnc0FycmF5O1xuICAgICAgICAgIGZvciAobGV0IHQgPSAwLCBpID0gZS5sZW5ndGg7IHQgPCBpOyB0KyspIGlmIChlW3RdID09PSByLk9QUy5kZXBlbmRlbmN5KSBmb3IgKGNvbnN0IGUgb2Ygblt0XSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IGUuc3RhcnRzV2l0aChcImdfXCIpID8gdGhpcy5jb21tb25PYmpzIDogdGhpcy5vYmpzLFxuICAgICAgICAgICAgICBuID0gbmV3IFByb21pc2UobiA9PiB7XG4gICAgICAgICAgICAgICAgdC5nZXQoZSwgbik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcy5wdXNoKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5jdXJyZW50LmRlcGVuZGVuY2llcyk7XG4gICAgICAgIH1cbiAgICAgICAgdHJhbnNmb3JtKHQsIGUsIG4sIGksIHMsIGEpIHtcbiAgICAgICAgICBjb25zdCBvID0gW3QsIGUsIG4sIGksIHMsIGFdO1xuICAgICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gci5VdGlsLnRyYW5zZm9ybSh0aGlzLnRyYW5zZm9ybU1hdHJpeCwgbyk7XG4gICAgICAgICAgdGhpcy50Z3JwID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBnZXRTVkcodCwgZSkge1xuICAgICAgICAgIHRoaXMudmlld3BvcnQgPSBlO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9pbml0aWFsaXplKGUpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmxvYWREZXBlbmRlbmNpZXModCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybU1hdHJpeCA9IHIuSURFTlRJVFlfTUFUUklYO1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlT3BUcmVlKHRoaXMuY29udmVydE9wTGlzdCh0KSk7XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb252ZXJ0T3BMaXN0KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5fb3BlcmF0b3JJZE1hcHBpbmcsXG4gICAgICAgICAgICBuID0gdC5hcmdzQXJyYXksXG4gICAgICAgICAgICBpID0gdC5mbkFycmF5LFxuICAgICAgICAgICAgciA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IHQgPSAwLCBzID0gaS5sZW5ndGg7IHQgPCBzOyB0KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBpW3RdO1xuICAgICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgICAgZm5JZDogcyxcbiAgICAgICAgICAgICAgZm46IGVbc10sXG4gICAgICAgICAgICAgIGFyZ3M6IG5bdF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gb3BMaXN0VG9UcmVlKHQpIHtcbiAgICAgICAgICAgIGxldCBlID0gW107XG4gICAgICAgICAgICBjb25zdCBuID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdCkgaWYgKFwic2F2ZVwiICE9PSBpLmZuKSBcInJlc3RvcmVcIiA9PT0gaS5mbiA/IGUgPSBuLnBvcCgpIDogZS5wdXNoKGkpO2Vsc2Uge1xuICAgICAgICAgICAgICBlLnB1c2goe1xuICAgICAgICAgICAgICAgIGZuSWQ6IDkyLFxuICAgICAgICAgICAgICAgIGZuOiBcImdyb3VwXCIsXG4gICAgICAgICAgICAgICAgaXRlbXM6IFtdXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBuLnB1c2goZSk7XG4gICAgICAgICAgICAgIGUgPSBlLmF0KC0xKS5pdGVtcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH0ocik7XG4gICAgICAgIH1cbiAgICAgICAgZXhlY3V0ZU9wVHJlZSh0KSB7XG4gICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBlLmZuLFxuICAgICAgICAgICAgICBuID0gZS5mbklkLFxuICAgICAgICAgICAgICBpID0gZS5hcmdzO1xuICAgICAgICAgICAgc3dpdGNoICgwIHwgbikge1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmJlZ2luVGV4dDpcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luVGV4dCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmRlcGVuZGVuY3k6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuc2V0TGVhZGluZzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldExlYWRpbmcoaSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuc2V0TGVhZGluZ01vdmVUZXh0OlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TGVhZGluZ01vdmVUZXh0KGlbMF0sIGlbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldEZvbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGb250KGkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNob3dUZXh0OlxuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNob3dTcGFjZWRUZXh0OlxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RleHQoaVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuZW5kVGV4dDpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFRleHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5tb3ZlVGV4dDpcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVUZXh0KGlbMF0sIGlbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldENoYXJTcGFjaW5nOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2hhclNwYWNpbmcoaVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuc2V0V29yZFNwYWNpbmc6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRXb3JkU3BhY2luZyhpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRIU2NhbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRIU2NhbGUoaVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuc2V0VGV4dE1hdHJpeDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRleHRNYXRyaXgoaVswXSwgaVsxXSwgaVsyXSwgaVszXSwgaVs0XSwgaVs1XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuc2V0VGV4dFJpc2U6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUZXh0UmlzZShpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRUZXh0UmVuZGVyaW5nTW9kZTpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRleHRSZW5kZXJpbmdNb2RlKGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldExpbmVXaWR0aDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldExpbmVXaWR0aChpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRMaW5lSm9pbjpcbiAgICAgICAgICAgICAgICB0aGlzLnNldExpbmVKb2luKGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldExpbmVDYXA6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMaW5lQ2FwKGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldE1pdGVyTGltaXQ6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNaXRlckxpbWl0KGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldEZpbGxSR0JDb2xvcjpcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpbGxSR0JDb2xvcihpWzBdLCBpWzFdLCBpWzJdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRTdHJva2VSR0JDb2xvcjpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0cm9rZVJHQkNvbG9yKGlbMF0sIGlbMV0sIGlbMl0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldFN0cm9rZUNvbG9yTjpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0cm9rZUNvbG9yTihpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRGaWxsQ29sb3JOOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsbENvbG9yTihpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zaGFkaW5nRmlsbDpcbiAgICAgICAgICAgICAgICB0aGlzLnNoYWRpbmdGaWxsKGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldERhc2g6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXNoKGlbMF0sIGlbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldFJlbmRlcmluZ0ludGVudDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJlbmRlcmluZ0ludGVudChpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5zZXRGbGF0bmVzczpcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZsYXRuZXNzKGlbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnNldEdTdGF0ZTpcbiAgICAgICAgICAgICAgICB0aGlzLnNldEdTdGF0ZShpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5maWxsOlxuICAgICAgICAgICAgICAgIHRoaXMuZmlsbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmVvRmlsbDpcbiAgICAgICAgICAgICAgICB0aGlzLmVvRmlsbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnN0cm9rZTpcbiAgICAgICAgICAgICAgICB0aGlzLnN0cm9rZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmZpbGxTdHJva2U6XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsU3Ryb2tlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuZW9GaWxsU3Ryb2tlOlxuICAgICAgICAgICAgICAgIHRoaXMuZW9GaWxsU3Ryb2tlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuY2xpcDpcbiAgICAgICAgICAgICAgICB0aGlzLmNsaXAoXCJub256ZXJvXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmVvQ2xpcDpcbiAgICAgICAgICAgICAgICB0aGlzLmNsaXAoXCJldmVub2RkXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnBhaW50U29saWRDb2xvckltYWdlTWFzazpcbiAgICAgICAgICAgICAgICB0aGlzLnBhaW50U29saWRDb2xvckltYWdlTWFzaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnBhaW50SW1hZ2VYT2JqZWN0OlxuICAgICAgICAgICAgICAgIHRoaXMucGFpbnRJbWFnZVhPYmplY3QoaVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMucGFpbnRJbmxpbmVJbWFnZVhPYmplY3Q6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChpWzBdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5wYWludEltYWdlTWFza1hPYmplY3Q6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWludEltYWdlTWFza1hPYmplY3QoaVswXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMucGFpbnRGb3JtWE9iamVjdEJlZ2luOlxuICAgICAgICAgICAgICAgIHRoaXMucGFpbnRGb3JtWE9iamVjdEJlZ2luKGlbMF0sIGlbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLnBhaW50Rm9ybVhPYmplY3RFbmQ6XG4gICAgICAgICAgICAgICAgdGhpcy5wYWludEZvcm1YT2JqZWN0RW5kKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuY2xvc2VQYXRoOlxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMuY2xvc2VTdHJva2U6XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZVN0cm9rZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmNsb3NlRmlsbFN0cm9rZTpcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRmlsbFN0cm9rZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmNsb3NlRU9GaWxsU3Ryb2tlOlxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VFT0ZpbGxTdHJva2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSByLk9QUy5uZXh0TGluZTpcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRMaW5lKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2Ugci5PUFMudHJhbnNmb3JtOlxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtKGlbMF0sIGlbMV0sIGlbMl0sIGlbM10sIGlbNF0sIGlbNV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmNvbnN0cnVjdFBhdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RQYXRoKGlbMF0sIGlbMV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIHIuT1BTLmVuZFBhdGg6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgOTI6XG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cChlLml0ZW1zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAoMCwgci53YXJuKShcIlVuaW1wbGVtZW50ZWQgb3BlcmF0b3IgXCIuY29uY2F0KHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0V29yZFNwYWNpbmcodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC53b3JkU3BhY2luZyA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0Q2hhclNwYWNpbmcodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5jaGFyU3BhY2luZyA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dExpbmUoKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlVGV4dCgwLCB0aGlzLmN1cnJlbnQubGVhZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGV4dE1hdHJpeCh0LCBlLCBuLCBpLCByLCBzKSB7XG4gICAgICAgICAgY29uc3QgYSA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICBhLnRleHRNYXRyaXggPSBhLmxpbmVNYXRyaXggPSBbdCwgZSwgbiwgaSwgciwgc107XG4gICAgICAgICAgYS50ZXh0TWF0cml4U2NhbGUgPSBNYXRoLmh5cG90KHQsIGUpO1xuICAgICAgICAgIGEueCA9IGEubGluZVggPSAwO1xuICAgICAgICAgIGEueSA9IGEubGluZVkgPSAwO1xuICAgICAgICAgIGEueGNvb3JkcyA9IFtdO1xuICAgICAgICAgIGEueWNvb3JkcyA9IFtdO1xuICAgICAgICAgIGEudHNwYW4gPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2Zzp0c3BhblwiKTtcbiAgICAgICAgICBhLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZm9udC1mYW1pbHlcIiwgYS5mb250RmFtaWx5KTtcbiAgICAgICAgICBhLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZm9udC1zaXplXCIsIFwiXCIuY29uY2F0KHBmKGEuZm9udFNpemUpLCBcInB4XCIpKTtcbiAgICAgICAgICBhLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieVwiLCBwZigtYS55KSk7XG4gICAgICAgICAgYS50eHRFbGVtZW50ID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6dGV4dFwiKTtcbiAgICAgICAgICBhLnR4dEVsZW1lbnQuYXBwZW5kKGEudHNwYW4pO1xuICAgICAgICB9XG4gICAgICAgIGJlZ2luVGV4dCgpIHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5jdXJyZW50O1xuICAgICAgICAgIHQueCA9IHQubGluZVggPSAwO1xuICAgICAgICAgIHQueSA9IHQubGluZVkgPSAwO1xuICAgICAgICAgIHQudGV4dE1hdHJpeCA9IHIuSURFTlRJVFlfTUFUUklYO1xuICAgICAgICAgIHQubGluZU1hdHJpeCA9IHIuSURFTlRJVFlfTUFUUklYO1xuICAgICAgICAgIHQudGV4dE1hdHJpeFNjYWxlID0gMTtcbiAgICAgICAgICB0LnRzcGFuID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6dHNwYW5cIik7XG4gICAgICAgICAgdC50eHRFbGVtZW50ID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6dGV4dFwiKTtcbiAgICAgICAgICB0LnR4dGdycCA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOmdcIik7XG4gICAgICAgICAgdC54Y29vcmRzID0gW107XG4gICAgICAgICAgdC55Y29vcmRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgbW92ZVRleHQodCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgbi54ID0gbi5saW5lWCArPSB0O1xuICAgICAgICAgIG4ueSA9IG4ubGluZVkgKz0gZTtcbiAgICAgICAgICBuLnhjb29yZHMgPSBbXTtcbiAgICAgICAgICBuLnljb29yZHMgPSBbXTtcbiAgICAgICAgICBuLnRzcGFuID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6dHNwYW5cIik7XG4gICAgICAgICAgbi50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZvbnQtZmFtaWx5XCIsIG4uZm9udEZhbWlseSk7XG4gICAgICAgICAgbi50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZvbnQtc2l6ZVwiLCBcIlwiLmNvbmNhdChwZihuLmZvbnRTaXplKSwgXCJweFwiKSk7XG4gICAgICAgICAgbi50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInlcIiwgcGYoLW4ueSkpO1xuICAgICAgICB9XG4gICAgICAgIHNob3dUZXh0KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5jdXJyZW50LFxuICAgICAgICAgICAgbiA9IGUuZm9udCxcbiAgICAgICAgICAgIGkgPSBlLmZvbnRTaXplO1xuICAgICAgICAgIGlmICgwID09PSBpKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgbCA9IGUuZm9udFNpemVTY2FsZSxcbiAgICAgICAgICAgIGMgPSBlLmNoYXJTcGFjaW5nLFxuICAgICAgICAgICAgaCA9IGUud29yZFNwYWNpbmcsXG4gICAgICAgICAgICBkID0gZS5mb250RGlyZWN0aW9uLFxuICAgICAgICAgICAgdSA9IGUudGV4dEhTY2FsZSAqIGQsXG4gICAgICAgICAgICBwID0gbi52ZXJ0aWNhbCxcbiAgICAgICAgICAgIGYgPSBwID8gMSA6IC0xLFxuICAgICAgICAgICAgZyA9IG4uZGVmYXVsdFZNZXRyaWNzLFxuICAgICAgICAgICAgbSA9IGkgKiBlLmZvbnRNYXRyaXhbMF07XG4gICAgICAgICAgbGV0IGIgPSAwO1xuICAgICAgICAgIGZvciAoY29uc3QgciBvZiB0KSB7XG4gICAgICAgICAgICBpZiAobnVsbCA9PT0gcikge1xuICAgICAgICAgICAgICBiICs9IGQgKiBoO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcIm51bWJlclwiID09IHR5cGVvZiByKSB7XG4gICAgICAgICAgICAgIGIgKz0gZiAqIHIgKiBpIC8gMWUzO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHQgPSAoci5pc1NwYWNlID8gaCA6IDApICsgYyxcbiAgICAgICAgICAgICAgcyA9IHIuZm9udENoYXI7XG4gICAgICAgICAgICBsZXQgYSxcbiAgICAgICAgICAgICAgbyxcbiAgICAgICAgICAgICAgdSA9IHIud2lkdGg7XG4gICAgICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgICBsZXQgdDtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IHIudm1ldHJpYyB8fCBnO1xuICAgICAgICAgICAgICB0ID0gci52bWV0cmljID8gZVsxXSA6IC41ICogdTtcbiAgICAgICAgICAgICAgdCA9IC10ICogbTtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IGVbMl0gKiBtO1xuICAgICAgICAgICAgICB1ID0gZSA/IC1lWzBdIDogdTtcbiAgICAgICAgICAgICAgYSA9IHQgLyBsO1xuICAgICAgICAgICAgICBvID0gKGIgKyBuKSAvIGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhID0gYiAvIGw7XG4gICAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHIuaXNJbkZvbnQgfHwgbi5taXNzaW5nRmlsZSkge1xuICAgICAgICAgICAgICBlLnhjb29yZHMucHVzaChlLnggKyBhKTtcbiAgICAgICAgICAgICAgcCAmJiBlLnljb29yZHMucHVzaCgtZS55ICsgbyk7XG4gICAgICAgICAgICAgIGUudHNwYW4udGV4dENvbnRlbnQgKz0gcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGIgKz0gcCA/IHUgKiBtIC0gdCAqIGQgOiB1ICogbSArIHQgKiBkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieFwiLCBlLnhjb29yZHMubWFwKHBmKS5qb2luKFwiIFwiKSk7XG4gICAgICAgICAgcCA/IGUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ5XCIsIGUueWNvb3Jkcy5tYXAocGYpLmpvaW4oXCIgXCIpKSA6IGUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ5XCIsIHBmKC1lLnkpKTtcbiAgICAgICAgICBwID8gZS55IC09IGIgOiBlLnggKz0gYiAqIHU7XG4gICAgICAgICAgZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZvbnQtZmFtaWx5XCIsIGUuZm9udEZhbWlseSk7XG4gICAgICAgICAgZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZvbnQtc2l6ZVwiLCBcIlwiLmNvbmNhdChwZihlLmZvbnRTaXplKSwgXCJweFwiKSk7XG4gICAgICAgICAgZS5mb250U3R5bGUgIT09IHMgJiYgZS50c3Bhbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZvbnQtc3R5bGVcIiwgZS5mb250U3R5bGUpO1xuICAgICAgICAgIGUuZm9udFdlaWdodCAhPT0gYSAmJiBlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZm9udC13ZWlnaHRcIiwgZS5mb250V2VpZ2h0KTtcbiAgICAgICAgICBjb25zdCB2ID0gZS50ZXh0UmVuZGVyaW5nTW9kZSAmIHIuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0VfTUFTSztcbiAgICAgICAgICBpZiAodiA9PT0gci5UZXh0UmVuZGVyaW5nTW9kZS5GSUxMIHx8IHYgPT09IHIuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UpIHtcbiAgICAgICAgICAgIGUuZmlsbENvbG9yICE9PSBvICYmIGUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmaWxsXCIsIGUuZmlsbENvbG9yKTtcbiAgICAgICAgICAgIGUuZmlsbEFscGhhIDwgMSAmJiBlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbC1vcGFjaXR5XCIsIGUuZmlsbEFscGhhKTtcbiAgICAgICAgICB9IGVsc2UgZS50ZXh0UmVuZGVyaW5nTW9kZSA9PT0gci5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSCA/IGUudHNwYW4uc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIikgOiBlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCBcIm5vbmVcIik7XG4gICAgICAgICAgaWYgKHYgPT09IHIuVGV4dFJlbmRlcmluZ01vZGUuU1RST0tFIHx8IHYgPT09IHIuVGV4dFJlbmRlcmluZ01vZGUuRklMTF9TVFJPS0UpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSAxIC8gKGUudGV4dE1hdHJpeFNjYWxlIHx8IDEpO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3Ryb2tlQXR0cmlidXRlcyhlLnRzcGFuLCB0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHkgPSBlLnRleHRNYXRyaXg7XG4gICAgICAgICAgaWYgKDAgIT09IGUudGV4dFJpc2UpIHtcbiAgICAgICAgICAgIHkgPSB5LnNsaWNlKCk7XG4gICAgICAgICAgICB5WzVdICs9IGUudGV4dFJpc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGUudHh0RWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInRyYW5zZm9ybVwiLCBcIlwiLmNvbmNhdChwbSh5KSwgXCIgc2NhbGUoXCIpLmNvbmNhdChwZih1KSwgXCIsIC0xKVwiKSk7XG4gICAgICAgICAgZS50eHRFbGVtZW50LnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsIFwieG1sOnNwYWNlXCIsIFwicHJlc2VydmVcIik7XG4gICAgICAgICAgZS50eHRFbGVtZW50LmFwcGVuZChlLnRzcGFuKTtcbiAgICAgICAgICBlLnR4dGdycC5hcHBlbmQoZS50eHRFbGVtZW50KTtcbiAgICAgICAgICB0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZChlLnR4dEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHNldExlYWRpbmdNb3ZlVGV4dCh0LCBlKSB7XG4gICAgICAgICAgdGhpcy5zZXRMZWFkaW5nKC1lKTtcbiAgICAgICAgICB0aGlzLm1vdmVUZXh0KHQsIGUpO1xuICAgICAgICB9XG4gICAgICAgIGFkZEZvbnRTdHlsZSh0KSB7XG4gICAgICAgICAgaWYgKCF0LmRhdGEpIHRocm93IG5ldyBFcnJvcignYWRkRm9udFN0eWxlOiBObyBmb250IGRhdGEgYXZhaWxhYmxlLCBlbnN1cmUgdGhhdCB0aGUgXCJmb250RXh0cmFQcm9wZXJ0aWVzXCIgQVBJIHBhcmFtZXRlciBpcyBzZXQuJyk7XG4gICAgICAgICAgaWYgKCF0aGlzLmNzc1N0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLmNzc1N0eWxlID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6c3R5bGVcIik7XG4gICAgICAgICAgICB0aGlzLmNzc1N0eWxlLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICAgICAgdGhpcy5kZWZzLmFwcGVuZCh0aGlzLmNzc1N0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZSA9IGNyZWF0ZU9iamVjdFVSTCh0LmRhdGEsIHQubWltZXR5cGUsIHRoaXMuZm9yY2VEYXRhU2NoZW1hKTtcbiAgICAgICAgICB0aGlzLmNzc1N0eWxlLnRleHRDb250ZW50ICs9IFwiQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiBcXFwiXCIuY29uY2F0KHQubG9hZGVkTmFtZSwgXCJcXFwiOyBzcmM6IHVybChcIikuY29uY2F0KGUsIFwiKTsgfVxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRGb250KHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5jdXJyZW50LFxuICAgICAgICAgICAgbiA9IHRoaXMuY29tbW9uT2Jqcy5nZXQodFswXSk7XG4gICAgICAgICAgbGV0IGkgPSB0WzFdO1xuICAgICAgICAgIGUuZm9udCA9IG47XG4gICAgICAgICAgaWYgKHRoaXMuZW1iZWRGb250cyAmJiAhbi5taXNzaW5nRmlsZSAmJiAhdGhpcy5lbWJlZGRlZEZvbnRzW24ubG9hZGVkTmFtZV0pIHtcbiAgICAgICAgICAgIHRoaXMuYWRkRm9udFN0eWxlKG4pO1xuICAgICAgICAgICAgdGhpcy5lbWJlZGRlZEZvbnRzW24ubG9hZGVkTmFtZV0gPSBuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLmZvbnRNYXRyaXggPSBuLmZvbnRNYXRyaXggfHwgci5GT05UX0lERU5USVRZX01BVFJJWDtcbiAgICAgICAgICBsZXQgcyA9IFwibm9ybWFsXCI7XG4gICAgICAgICAgbi5ibGFjayA/IHMgPSBcIjkwMFwiIDogbi5ib2xkICYmIChzID0gXCJib2xkXCIpO1xuICAgICAgICAgIGNvbnN0IGEgPSBuLml0YWxpYyA/IFwiaXRhbGljXCIgOiBcIm5vcm1hbFwiO1xuICAgICAgICAgIGlmIChpIDwgMCkge1xuICAgICAgICAgICAgaSA9IC1pO1xuICAgICAgICAgICAgZS5mb250RGlyZWN0aW9uID0gLTE7XG4gICAgICAgICAgfSBlbHNlIGUuZm9udERpcmVjdGlvbiA9IDE7XG4gICAgICAgICAgZS5mb250U2l6ZSA9IGk7XG4gICAgICAgICAgZS5mb250RmFtaWx5ID0gbi5sb2FkZWROYW1lO1xuICAgICAgICAgIGUuZm9udFdlaWdodCA9IHM7XG4gICAgICAgICAgZS5mb250U3R5bGUgPSBhO1xuICAgICAgICAgIGUudHNwYW4gPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2Zzp0c3BhblwiKTtcbiAgICAgICAgICBlLnRzcGFuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieVwiLCBwZigtZS55KSk7XG4gICAgICAgICAgZS54Y29vcmRzID0gW107XG4gICAgICAgICAgZS55Y29vcmRzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZW5kVGV4dCgpIHtcbiAgICAgICAgICB2YXIgX3QkdHh0RWxlbWVudDtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5jdXJyZW50O1xuICAgICAgICAgIGlmICh0LnRleHRSZW5kZXJpbmdNb2RlICYgci5UZXh0UmVuZGVyaW5nTW9kZS5BRERfVE9fUEFUSF9GTEFHICYmIChfdCR0eHRFbGVtZW50ID0gdC50eHRFbGVtZW50KSAhPT0gbnVsbCAmJiBfdCR0eHRFbGVtZW50ICE9PSB2b2lkIDAgJiYgX3QkdHh0RWxlbWVudC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHQuZWxlbWVudCA9IHQudHh0RWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuY2xpcChcIm5vbnplcm9cIik7XG4gICAgICAgICAgICB0aGlzLmVuZFBhdGgoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0TGluZVdpZHRoKHQpIHtcbiAgICAgICAgICB0ID4gMCAmJiAodGhpcy5jdXJyZW50LmxpbmVXaWR0aCA9IHQpO1xuICAgICAgICB9XG4gICAgICAgIHNldExpbmVDYXAodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5saW5lQ2FwID0gbFt0XTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMaW5lSm9pbih0KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmxpbmVKb2luID0gY1t0XTtcbiAgICAgICAgfVxuICAgICAgICBzZXRNaXRlckxpbWl0KHQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQubWl0ZXJMaW1pdCA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3Ryb2tlQWxwaGEodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5zdHJva2VBbHBoYSA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U3Ryb2tlUkdCQ29sb3IodCwgZSwgbikge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5zdHJva2VDb2xvciA9IHIuVXRpbC5tYWtlSGV4Q29sb3IodCwgZSwgbik7XG4gICAgICAgIH1cbiAgICAgICAgc2V0RmlsbEFscGhhKHQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQuZmlsbEFscGhhID0gdDtcbiAgICAgICAgfVxuICAgICAgICBzZXRGaWxsUkdCQ29sb3IodCwgZSwgbikge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5maWxsQ29sb3IgPSByLlV0aWwubWFrZUhleENvbG9yKHQsIGUsIG4pO1xuICAgICAgICAgIHRoaXMuY3VycmVudC50c3BhbiA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnRzcGFuXCIpO1xuICAgICAgICAgIHRoaXMuY3VycmVudC54Y29vcmRzID0gW107XG4gICAgICAgICAgdGhpcy5jdXJyZW50Lnljb29yZHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBzZXRTdHJva2VDb2xvck4odCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5zdHJva2VDb2xvciA9IHRoaXMuX21ha2VDb2xvck5fUGF0dGVybih0KTtcbiAgICAgICAgfVxuICAgICAgICBzZXRGaWxsQ29sb3JOKHQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQuZmlsbENvbG9yID0gdGhpcy5fbWFrZUNvbG9yTl9QYXR0ZXJuKHQpO1xuICAgICAgICB9XG4gICAgICAgIHNoYWRpbmdGaWxsKHQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICBoZWlnaHQ6IG5cbiAgICAgICAgICAgIH0gPSB0aGlzLnZpZXdwb3J0LFxuICAgICAgICAgICAgaSA9IHIuVXRpbC5pbnZlcnNlVHJhbnNmb3JtKHRoaXMudHJhbnNmb3JtTWF0cml4KSxcbiAgICAgICAgICAgIFtzLCBhLCBvLCBsXSA9IHIuVXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveChbMCwgMCwgZSwgbl0sIGkpLFxuICAgICAgICAgICAgYyA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnJlY3RcIik7XG4gICAgICAgICAgYy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInhcIiwgcyk7XG4gICAgICAgICAgYy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInlcIiwgYSk7XG4gICAgICAgICAgYy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIG8gLSBzKTtcbiAgICAgICAgICBjLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIGwgLSBhKTtcbiAgICAgICAgICBjLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCB0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCkpO1xuICAgICAgICAgIHRoaXMuY3VycmVudC5maWxsQWxwaGEgPCAxICYmIGMuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmaWxsLW9wYWNpdHlcIiwgdGhpcy5jdXJyZW50LmZpbGxBbHBoYSk7XG4gICAgICAgICAgdGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQoYyk7XG4gICAgICAgIH1cbiAgICAgICAgX21ha2VDb2xvck5fUGF0dGVybih0KSB7XG4gICAgICAgICAgcmV0dXJuIFwiVGlsaW5nUGF0dGVyblwiID09PSB0WzBdID8gdGhpcy5fbWFrZVRpbGluZ1BhdHRlcm4odCkgOiB0aGlzLl9tYWtlU2hhZGluZ1BhdHRlcm4odCk7XG4gICAgICAgIH1cbiAgICAgICAgX21ha2VUaWxpbmdQYXR0ZXJuKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdFsxXSxcbiAgICAgICAgICAgIG4gPSB0WzJdLFxuICAgICAgICAgICAgaSA9IHRbM10gfHwgci5JREVOVElUWV9NQVRSSVgsXG4gICAgICAgICAgICBbcywgYSwgbywgbF0gPSB0WzRdLFxuICAgICAgICAgICAgYyA9IHRbNV0sXG4gICAgICAgICAgICBoID0gdFs2XSxcbiAgICAgICAgICAgIGQgPSB0WzddLFxuICAgICAgICAgICAgdSA9IFwic2hhZGluZ1wiICsgcCsrLFxuICAgICAgICAgICAgW2YsIGcsIG0sIGJdID0gci5VdGlsLm5vcm1hbGl6ZVJlY3QoWy4uLnIuVXRpbC5hcHBseVRyYW5zZm9ybShbcywgYV0sIGkpLCAuLi5yLlV0aWwuYXBwbHlUcmFuc2Zvcm0oW28sIGxdLCBpKV0pLFxuICAgICAgICAgICAgW3YsIHldID0gci5VdGlsLnNpbmd1bGFyVmFsdWVEZWNvbXBvc2UyZFNjYWxlKGkpLFxuICAgICAgICAgICAgQSA9IGMgKiB2LFxuICAgICAgICAgICAgXyA9IGggKiB5LFxuICAgICAgICAgICAgUyA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnBhdHRlcm5cIik7XG4gICAgICAgICAgUy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImlkXCIsIHUpO1xuICAgICAgICAgIFMuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJwYXR0ZXJuVW5pdHNcIiwgXCJ1c2VyU3BhY2VPblVzZVwiKTtcbiAgICAgICAgICBTLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwid2lkdGhcIiwgQSk7XG4gICAgICAgICAgUy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImhlaWdodFwiLCBfKTtcbiAgICAgICAgICBTLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieFwiLCBcIlwiLmNvbmNhdChmKSk7XG4gICAgICAgICAgUy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInlcIiwgXCJcIi5jb25jYXQoZykpO1xuICAgICAgICAgIGNvbnN0IEUgPSB0aGlzLnN2ZyxcbiAgICAgICAgICAgIHggPSB0aGlzLnRyYW5zZm9ybU1hdHJpeCxcbiAgICAgICAgICAgIHcgPSB0aGlzLmN1cnJlbnQuZmlsbENvbG9yLFxuICAgICAgICAgICAgQyA9IHRoaXMuY3VycmVudC5zdHJva2VDb2xvcixcbiAgICAgICAgICAgIFQgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKG0gLSBmLCBiIC0gZyk7XG4gICAgICAgICAgdGhpcy5zdmcgPSBUO1xuICAgICAgICAgIHRoaXMudHJhbnNmb3JtTWF0cml4ID0gaTtcbiAgICAgICAgICBpZiAoMiA9PT0gZCkge1xuICAgICAgICAgICAgY29uc3QgdCA9IHIuVXRpbC5tYWtlSGV4Q29sb3IoLi4uZSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQuZmlsbENvbG9yID0gdDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zdHJva2VDb2xvciA9IHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZXhlY3V0ZU9wVHJlZSh0aGlzLmNvbnZlcnRPcExpc3QobikpO1xuICAgICAgICAgIHRoaXMuc3ZnID0gRTtcbiAgICAgICAgICB0aGlzLnRyYW5zZm9ybU1hdHJpeCA9IHg7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmZpbGxDb2xvciA9IHc7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LnN0cm9rZUNvbG9yID0gQztcbiAgICAgICAgICBTLmFwcGVuZChULmNoaWxkTm9kZXNbMF0pO1xuICAgICAgICAgIHRoaXMuZGVmcy5hcHBlbmQoUyk7XG4gICAgICAgICAgcmV0dXJuIFwidXJsKCNcIi5jb25jYXQodSwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIF9tYWtlU2hhZGluZ1BhdHRlcm4odCkge1xuICAgICAgICAgIFwic3RyaW5nXCIgPT0gdHlwZW9mIHQgJiYgKHQgPSB0aGlzLm9ianMuZ2V0KHQpKTtcbiAgICAgICAgICBzd2l0Y2ggKHRbMF0pIHtcbiAgICAgICAgICAgIGNhc2UgXCJSYWRpYWxBeGlhbFwiOlxuICAgICAgICAgICAgICBjb25zdCBlID0gXCJzaGFkaW5nXCIgKyBwKyssXG4gICAgICAgICAgICAgICAgbiA9IHRbM107XG4gICAgICAgICAgICAgIGxldCBpO1xuICAgICAgICAgICAgICBzd2l0Y2ggKHRbMV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXhpYWxcIjpcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0WzRdLFxuICAgICAgICAgICAgICAgICAgICByID0gdFs1XTtcbiAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2ZzpsaW5lYXJHcmFkaWVudFwiKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJpZFwiLCBlKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJncmFkaWVudFVuaXRzXCIsIFwidXNlclNwYWNlT25Vc2VcIik7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieDFcIiwgblswXSk7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieTFcIiwgblsxXSk7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieDJcIiwgclswXSk7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieTJcIiwgclsxXSk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwicmFkaWFsXCI6XG4gICAgICAgICAgICAgICAgICBjb25zdCBzID0gdFs0XSxcbiAgICAgICAgICAgICAgICAgICAgYSA9IHRbNV0sXG4gICAgICAgICAgICAgICAgICAgIG8gPSB0WzZdLFxuICAgICAgICAgICAgICAgICAgICBsID0gdFs3XTtcbiAgICAgICAgICAgICAgICAgIGkgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2ZzpyYWRpYWxHcmFkaWVudFwiKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJpZFwiLCBlKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJncmFkaWVudFVuaXRzXCIsIFwidXNlclNwYWNlT25Vc2VcIik7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiY3hcIiwgYVswXSk7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiY3lcIiwgYVsxXSk7XG4gICAgICAgICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiclwiLCBsKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmeFwiLCBzWzBdKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmeVwiLCBzWzFdKTtcbiAgICAgICAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmclwiLCBvKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIFJhZGlhbEF4aWFsIHR5cGU6IFwiLmNvbmNhdCh0WzFdKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yIChjb25zdCB0IG9mIG4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6c3RvcFwiKTtcbiAgICAgICAgICAgICAgICBlLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwib2Zmc2V0XCIsIHRbMF0pO1xuICAgICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJzdG9wLWNvbG9yXCIsIHRbMV0pO1xuICAgICAgICAgICAgICAgIGkuYXBwZW5kKGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuZGVmcy5hcHBlbmQoaSk7XG4gICAgICAgICAgICAgIHJldHVybiBcInVybCgjXCIuY29uY2F0KGUsIFwiKVwiKTtcbiAgICAgICAgICAgIGNhc2UgXCJNZXNoXCI6XG4gICAgICAgICAgICAgICgwLCByLndhcm4pKFwiVW5pbXBsZW1lbnRlZCBwYXR0ZXJuIE1lc2hcIik7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSBcIkR1bW15XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcImhvdHBpbmtcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gSVIgdHlwZTogXCIuY29uY2F0KHRbMF0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0RGFzaCh0LCBlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmRhc2hBcnJheSA9IHQ7XG4gICAgICAgICAgdGhpcy5jdXJyZW50LmRhc2hQaGFzZSA9IGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RydWN0UGF0aCh0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICBsZXQgaSA9IG4ueCxcbiAgICAgICAgICAgIHMgPSBuLnksXG4gICAgICAgICAgICBhID0gW10sXG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICBmb3IgKGNvbnN0IG4gb2YgdCkgc3dpdGNoICgwIHwgbikge1xuICAgICAgICAgICAgY2FzZSByLk9QUy5yZWN0YW5nbGU6XG4gICAgICAgICAgICAgIGkgPSBlW28rK107XG4gICAgICAgICAgICAgIHMgPSBlW28rK107XG4gICAgICAgICAgICAgIGNvbnN0IHQgPSBpICsgZVtvKytdLFxuICAgICAgICAgICAgICAgIG4gPSBzICsgZVtvKytdO1xuICAgICAgICAgICAgICBhLnB1c2goXCJNXCIsIHBmKGkpLCBwZihzKSwgXCJMXCIsIHBmKHQpLCBwZihzKSwgXCJMXCIsIHBmKHQpLCBwZihuKSwgXCJMXCIsIHBmKGkpLCBwZihuKSwgXCJaXCIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2Ugci5PUFMubW92ZVRvOlxuICAgICAgICAgICAgICBpID0gZVtvKytdO1xuICAgICAgICAgICAgICBzID0gZVtvKytdO1xuICAgICAgICAgICAgICBhLnB1c2goXCJNXCIsIHBmKGkpLCBwZihzKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSByLk9QUy5saW5lVG86XG4gICAgICAgICAgICAgIGkgPSBlW28rK107XG4gICAgICAgICAgICAgIHMgPSBlW28rK107XG4gICAgICAgICAgICAgIGEucHVzaChcIkxcIiwgcGYoaSksIHBmKHMpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHIuT1BTLmN1cnZlVG86XG4gICAgICAgICAgICAgIGkgPSBlW28gKyA0XTtcbiAgICAgICAgICAgICAgcyA9IGVbbyArIDVdO1xuICAgICAgICAgICAgICBhLnB1c2goXCJDXCIsIHBmKGVbb10pLCBwZihlW28gKyAxXSksIHBmKGVbbyArIDJdKSwgcGYoZVtvICsgM10pLCBwZihpKSwgcGYocykpO1xuICAgICAgICAgICAgICBvICs9IDY7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSByLk9QUy5jdXJ2ZVRvMjpcbiAgICAgICAgICAgICAgYS5wdXNoKFwiQ1wiLCBwZihpKSwgcGYocyksIHBmKGVbb10pLCBwZihlW28gKyAxXSksIHBmKGVbbyArIDJdKSwgcGYoZVtvICsgM10pKTtcbiAgICAgICAgICAgICAgaSA9IGVbbyArIDJdO1xuICAgICAgICAgICAgICBzID0gZVtvICsgM107XG4gICAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHIuT1BTLmN1cnZlVG8zOlxuICAgICAgICAgICAgICBpID0gZVtvICsgMl07XG4gICAgICAgICAgICAgIHMgPSBlW28gKyAzXTtcbiAgICAgICAgICAgICAgYS5wdXNoKFwiQ1wiLCBwZihlW29dKSwgcGYoZVtvICsgMV0pLCBwZihpKSwgcGYocyksIHBmKGkpLCBwZihzKSk7XG4gICAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHIuT1BTLmNsb3NlUGF0aDpcbiAgICAgICAgICAgICAgYS5wdXNoKFwiWlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYSA9IGEuam9pbihcIiBcIik7XG4gICAgICAgICAgaWYgKG4ucGF0aCAmJiB0Lmxlbmd0aCA+IDAgJiYgdFswXSAhPT0gci5PUFMucmVjdGFuZ2xlICYmIHRbMF0gIT09IHIuT1BTLm1vdmVUbykgYSA9IG4ucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBcImRcIikgKyBhO2Vsc2Uge1xuICAgICAgICAgICAgbi5wYXRoID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6cGF0aFwiKTtcbiAgICAgICAgICAgIHRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKG4ucGF0aCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG4ucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImRcIiwgYSk7XG4gICAgICAgICAgbi5wYXRoLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCBcIm5vbmVcIik7XG4gICAgICAgICAgbi5lbGVtZW50ID0gbi5wYXRoO1xuICAgICAgICAgIG4uc2V0Q3VycmVudFBvaW50KGksIHMpO1xuICAgICAgICB9XG4gICAgICAgIGVuZFBhdGgoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuY3VycmVudDtcbiAgICAgICAgICB0LnBhdGggPSBudWxsO1xuICAgICAgICAgIGlmICghdGhpcy5wZW5kaW5nQ2xpcCkgcmV0dXJuO1xuICAgICAgICAgIGlmICghdC5lbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdDbGlwID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZSA9IFwiY2xpcHBhdGhcIiArIGQrKyxcbiAgICAgICAgICAgIG4gPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2ZzpjbGlwUGF0aFwiKTtcbiAgICAgICAgICBuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaWRcIiwgZSk7XG4gICAgICAgICAgbi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInRyYW5zZm9ybVwiLCBwbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpO1xuICAgICAgICAgIGNvbnN0IGkgPSB0LmVsZW1lbnQuY2xvbmVOb2RlKCEwKTtcbiAgICAgICAgICBcImV2ZW5vZGRcIiA9PT0gdGhpcy5wZW5kaW5nQ2xpcCA/IGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJjbGlwLXJ1bGVcIiwgXCJldmVub2RkXCIpIDogaS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImNsaXAtcnVsZVwiLCBcIm5vbnplcm9cIik7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCA9IG51bGw7XG4gICAgICAgICAgbi5hcHBlbmQoaSk7XG4gICAgICAgICAgdGhpcy5kZWZzLmFwcGVuZChuKTtcbiAgICAgICAgICBpZiAodC5hY3RpdmVDbGlwVXJsKSB7XG4gICAgICAgICAgICB0LmNsaXBHcm91cCA9IG51bGw7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5leHRyYVN0YWNrKSB0LmNsaXBHcm91cCA9IG51bGw7XG4gICAgICAgICAgICBuLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiY2xpcC1wYXRoXCIsIHQuYWN0aXZlQ2xpcFVybCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHQuYWN0aXZlQ2xpcFVybCA9IFwidXJsKCNcIi5jb25jYXQoZSwgXCIpXCIpO1xuICAgICAgICAgIHRoaXMudGdycCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY2xpcCh0KSB7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nQ2xpcCA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgY2xvc2VQYXRoKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgaWYgKHQucGF0aCkge1xuICAgICAgICAgICAgY29uc3QgZSA9IFwiXCIuY29uY2F0KHQucGF0aC5nZXRBdHRyaWJ1dGVOUyhudWxsLCBcImRcIiksIFwiWlwiKTtcbiAgICAgICAgICAgIHQucGF0aC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImRcIiwgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldExlYWRpbmcodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC5sZWFkaW5nID0gLXQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGV4dFJpc2UodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0UmlzZSA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGV4dFJlbmRlcmluZ01vZGUodCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudC50ZXh0UmVuZGVyaW5nTW9kZSA9IHQ7XG4gICAgICAgIH1cbiAgICAgICAgc2V0SFNjYWxlKHQpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnQudGV4dEhTY2FsZSA9IHQgLyAxMDA7XG4gICAgICAgIH1cbiAgICAgICAgc2V0UmVuZGVyaW5nSW50ZW50KHQpIHt9XG4gICAgICAgIHNldEZsYXRuZXNzKHQpIHt9XG4gICAgICAgIHNldEdTdGF0ZSh0KSB7XG4gICAgICAgICAgZm9yIChjb25zdCBbZSwgbl0gb2YgdCkgc3dpdGNoIChlKSB7XG4gICAgICAgICAgICBjYXNlIFwiTFdcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRMaW5lV2lkdGgobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkxDXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0TGluZUNhcChuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTEpcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRMaW5lSm9pbihuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiTUxcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRNaXRlckxpbWl0KG4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJEXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0RGFzaChuWzBdLCBuWzFdKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiUklcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRSZW5kZXJpbmdJbnRlbnQobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkZMXCI6XG4gICAgICAgICAgICAgIHRoaXMuc2V0RmxhdG5lc3Mobik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkZvbnRcIjpcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb250KG4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJDQVwiOlxuICAgICAgICAgICAgICB0aGlzLnNldFN0cm9rZUFscGhhKG4pO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjYVwiOlxuICAgICAgICAgICAgICB0aGlzLnNldEZpbGxBbHBoYShuKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAoMCwgci53YXJuKShcIlVuaW1wbGVtZW50ZWQgZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciBcIi5jb25jYXQoZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaWxsKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgaWYgKHQuZWxlbWVudCkge1xuICAgICAgICAgICAgdC5lbGVtZW50LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCB0LmZpbGxDb2xvcik7XG4gICAgICAgICAgICB0LmVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmaWxsLW9wYWNpdHlcIiwgdC5maWxsQWxwaGEpO1xuICAgICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0cm9rZSgpIHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5jdXJyZW50O1xuICAgICAgICAgIGlmICh0LmVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFN0cm9rZUF0dHJpYnV0ZXModC5lbGVtZW50KTtcbiAgICAgICAgICAgIHQuZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZpbGxcIiwgXCJub25lXCIpO1xuICAgICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF9zZXRTdHJva2VBdHRyaWJ1dGVzKHQpIHtcbiAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogMTtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5jdXJyZW50O1xuICAgICAgICAgIGxldCBpID0gbi5kYXNoQXJyYXk7XG4gICAgICAgICAgMSAhPT0gZSAmJiBpLmxlbmd0aCA+IDAgJiYgKGkgPSBpLm1hcChmdW5jdGlvbiAodCkge1xuICAgICAgICAgICAgcmV0dXJuIGUgKiB0O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwic3Ryb2tlXCIsIG4uc3Ryb2tlQ29sb3IpO1xuICAgICAgICAgIHQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJzdHJva2Utb3BhY2l0eVwiLCBuLnN0cm9rZUFscGhhKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwic3Ryb2tlLW1pdGVybGltaXRcIiwgcGYobi5taXRlckxpbWl0KSk7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInN0cm9rZS1saW5lY2FwXCIsIG4ubGluZUNhcCk7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInN0cm9rZS1saW5lam9pblwiLCBuLmxpbmVKb2luKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwic3Ryb2tlLXdpZHRoXCIsIHBmKGUgKiBuLmxpbmVXaWR0aCkgKyBcInB4XCIpO1xuICAgICAgICAgIHQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJzdHJva2UtZGFzaGFycmF5XCIsIGkubWFwKHBmKS5qb2luKFwiIFwiKSk7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInN0cm9rZS1kYXNob2Zmc2V0XCIsIHBmKGUgKiBuLmRhc2hQaGFzZSkgKyBcInB4XCIpO1xuICAgICAgICB9XG4gICAgICAgIGVvRmlsbCgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkY3VycmVudCRlbGVtZW50O1xuICAgICAgICAgIChfdGhpcyRjdXJyZW50JGVsZW1lbnQgPSB0aGlzLmN1cnJlbnQuZWxlbWVudCkgPT09IG51bGwgfHwgX3RoaXMkY3VycmVudCRlbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjdXJyZW50JGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJmaWxsLXJ1bGVcIiwgXCJldmVub2RkXCIpO1xuICAgICAgICAgIHRoaXMuZmlsbCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbGxTdHJva2UoKSB7XG4gICAgICAgICAgdGhpcy5zdHJva2UoKTtcbiAgICAgICAgICB0aGlzLmZpbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBlb0ZpbGxTdHJva2UoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJGN1cnJlbnQkZWxlbWVudDI7XG4gICAgICAgICAgKF90aGlzJGN1cnJlbnQkZWxlbWVudDIgPSB0aGlzLmN1cnJlbnQuZWxlbWVudCkgPT09IG51bGwgfHwgX3RoaXMkY3VycmVudCRlbGVtZW50MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY3VycmVudCRlbGVtZW50Mi5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImZpbGwtcnVsZVwiLCBcImV2ZW5vZGRcIik7XG4gICAgICAgICAgdGhpcy5maWxsU3Ryb2tlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2xvc2VTdHJva2UoKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZVBhdGgoKTtcbiAgICAgICAgICB0aGlzLnN0cm9rZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNsb3NlRmlsbFN0cm9rZSgpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlUGF0aCgpO1xuICAgICAgICAgIHRoaXMuZmlsbFN0cm9rZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNsb3NlRU9GaWxsU3Ryb2tlKCkge1xuICAgICAgICAgIHRoaXMuY2xvc2VQYXRoKCk7XG4gICAgICAgICAgdGhpcy5lb0ZpbGxTdHJva2UoKTtcbiAgICAgICAgfVxuICAgICAgICBwYWludFNvbGlkQ29sb3JJbWFnZU1hc2soKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnJlY3RcIik7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInhcIiwgXCIwXCIpO1xuICAgICAgICAgIHQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ5XCIsIFwiMFwiKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwid2lkdGhcIiwgXCIxcHhcIik7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImhlaWdodFwiLCBcIjFweFwiKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCB0aGlzLmN1cnJlbnQuZmlsbENvbG9yKTtcbiAgICAgICAgICB0aGlzLl9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpLmFwcGVuZCh0KTtcbiAgICAgICAgfVxuICAgICAgICBwYWludEltYWdlWE9iamVjdCh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0T2JqZWN0KHQpO1xuICAgICAgICAgIGUgPyB0aGlzLnBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KGUpIDogKDAsIHIud2FybikoXCJEZXBlbmRlbnQgaW1hZ2Ugd2l0aCBvYmplY3QgSUQgXCIuY29uY2F0KHQsIFwiIGlzIG5vdCByZWFkeSB5ZXRcIikpO1xuICAgICAgICB9XG4gICAgICAgIHBhaW50SW5saW5lSW1hZ2VYT2JqZWN0KHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gdC53aWR0aCxcbiAgICAgICAgICAgIGkgPSB0LmhlaWdodCxcbiAgICAgICAgICAgIHIgPSBoKHQsIHRoaXMuZm9yY2VEYXRhU2NoZW1hLCAhIWUpLFxuICAgICAgICAgICAgcyA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnJlY3RcIik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInhcIiwgXCIwXCIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ5XCIsIFwiMFwiKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwid2lkdGhcIiwgcGYobikpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJoZWlnaHRcIiwgcGYoaSkpO1xuICAgICAgICAgIHRoaXMuY3VycmVudC5lbGVtZW50ID0gcztcbiAgICAgICAgICB0aGlzLmNsaXAoXCJub256ZXJvXCIpO1xuICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2ZzppbWFnZVwiKTtcbiAgICAgICAgICBhLnNldEF0dHJpYnV0ZU5TKFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCBcInhsaW5rOmhyZWZcIiwgcik7XG4gICAgICAgICAgYS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInhcIiwgXCIwXCIpO1xuICAgICAgICAgIGEuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ5XCIsIHBmKC1pKSk7XG4gICAgICAgICAgYS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIHBmKG4pICsgXCJweFwiKTtcbiAgICAgICAgICBhLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIHBmKGkpICsgXCJweFwiKTtcbiAgICAgICAgICBhLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwidHJhbnNmb3JtXCIsIFwic2NhbGUoXCIuY29uY2F0KHBmKDEgLyBuKSwgXCIgXCIpLmNvbmNhdChwZigtMSAvIGkpLCBcIilcIikpO1xuICAgICAgICAgIGUgPyBlLmFwcGVuZChhKSA6IHRoaXMuX2Vuc3VyZVRyYW5zZm9ybUdyb3VwKCkuYXBwZW5kKGEpO1xuICAgICAgICB9XG4gICAgICAgIHBhaW50SW1hZ2VNYXNrWE9iamVjdCh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuZ2V0T2JqZWN0KHQuZGF0YSwgdCk7XG4gICAgICAgICAgaWYgKGUuYml0bWFwKSB7XG4gICAgICAgICAgICAoMCwgci53YXJuKShcInBhaW50SW1hZ2VNYXNrWE9iamVjdDogSW1hZ2VCaXRtYXAgc3VwcG9ydCBpcyBub3QgaW1wbGVtZW50ZWQsIGVuc3VyZSB0aGF0IHRoZSBgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWRgIEFQSSBwYXJhbWV0ZXIgaXMgZGlzYWJsZWQuXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5jdXJyZW50LFxuICAgICAgICAgICAgaSA9IGUud2lkdGgsXG4gICAgICAgICAgICBzID0gZS5oZWlnaHQsXG4gICAgICAgICAgICBhID0gbi5maWxsQ29sb3I7XG4gICAgICAgICAgbi5tYXNrSWQgPSBcIm1hc2tcIiArIHUrKztcbiAgICAgICAgICBjb25zdCBvID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6bWFza1wiKTtcbiAgICAgICAgICBvLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaWRcIiwgbi5tYXNrSWQpO1xuICAgICAgICAgIGNvbnN0IGwgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudChcInN2ZzpyZWN0XCIpO1xuICAgICAgICAgIGwuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ4XCIsIFwiMFwiKTtcbiAgICAgICAgICBsLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwieVwiLCBcIjBcIik7XG4gICAgICAgICAgbC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIHBmKGkpKTtcbiAgICAgICAgICBsLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIHBmKHMpKTtcbiAgICAgICAgICBsLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiZmlsbFwiLCBhKTtcbiAgICAgICAgICBsLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwibWFza1wiLCBcInVybCgjXCIuY29uY2F0KG4ubWFza0lkLCBcIilcIikpO1xuICAgICAgICAgIHRoaXMuZGVmcy5hcHBlbmQobyk7XG4gICAgICAgICAgdGhpcy5fZW5zdXJlVHJhbnNmb3JtR3JvdXAoKS5hcHBlbmQobCk7XG4gICAgICAgICAgdGhpcy5wYWludElubGluZUltYWdlWE9iamVjdChlLCBvKTtcbiAgICAgICAgfVxuICAgICAgICBwYWludEZvcm1YT2JqZWN0QmVnaW4odCwgZSkge1xuICAgICAgICAgIEFycmF5LmlzQXJyYXkodCkgJiYgNiA9PT0gdC5sZW5ndGggJiYgdGhpcy50cmFuc2Zvcm0odFswXSwgdFsxXSwgdFsyXSwgdFszXSwgdFs0XSwgdFs1XSk7XG4gICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBlWzJdIC0gZVswXSxcbiAgICAgICAgICAgICAgbiA9IGVbM10gLSBlWzFdLFxuICAgICAgICAgICAgICBpID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6cmVjdFwiKTtcbiAgICAgICAgICAgIGkuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ4XCIsIGVbMF0pO1xuICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInlcIiwgZVsxXSk7XG4gICAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwid2lkdGhcIiwgcGYodCkpO1xuICAgICAgICAgICAgaS5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImhlaWdodFwiLCBwZihuKSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQuZWxlbWVudCA9IGk7XG4gICAgICAgICAgICB0aGlzLmNsaXAoXCJub256ZXJvXCIpO1xuICAgICAgICAgICAgdGhpcy5lbmRQYXRoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhaW50Rm9ybVhPYmplY3RFbmQoKSB7fVxuICAgICAgICBfaW5pdGlhbGl6ZSh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUodC53aWR0aCwgdC5oZWlnaHQpLFxuICAgICAgICAgICAgbiA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOmRlZnNcIik7XG4gICAgICAgICAgZS5hcHBlbmQobik7XG4gICAgICAgICAgdGhpcy5kZWZzID0gbjtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6Z1wiKTtcbiAgICAgICAgICBpLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwidHJhbnNmb3JtXCIsIHBtKHQudHJhbnNmb3JtKSk7XG4gICAgICAgICAgZS5hcHBlbmQoaSk7XG4gICAgICAgICAgdGhpcy5zdmcgPSBpO1xuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9XG4gICAgICAgIF9lbnN1cmVDbGlwR3JvdXAoKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnQuY2xpcEdyb3VwKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6Z1wiKTtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJjbGlwLXBhdGhcIiwgdGhpcy5jdXJyZW50LmFjdGl2ZUNsaXBVcmwpO1xuICAgICAgICAgICAgdGhpcy5zdmcuYXBwZW5kKHQpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmNsaXBHcm91cCA9IHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQuY2xpcEdyb3VwO1xuICAgICAgICB9XG4gICAgICAgIF9lbnN1cmVUcmFuc2Zvcm1Hcm91cCgpIHtcbiAgICAgICAgICBpZiAoIXRoaXMudGdycCkge1xuICAgICAgICAgICAgdGhpcy50Z3JwID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6Z1wiKTtcbiAgICAgICAgICAgIHRoaXMudGdycC5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInRyYW5zZm9ybVwiLCBwbSh0aGlzLnRyYW5zZm9ybU1hdHJpeCkpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LmFjdGl2ZUNsaXBVcmwgPyB0aGlzLl9lbnN1cmVDbGlwR3JvdXAoKS5hcHBlbmQodGhpcy50Z3JwKSA6IHRoaXMuc3ZnLmFwcGVuZCh0aGlzLnRncnApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy50Z3JwO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIGkgPSBuKDMpLFxuICAgICAgICByID0gbigxODcpLFxuICAgICAgICBzID0gbigxOTIpO1xuICAgICAgaSh7XG4gICAgICAgIHRhcmdldDogXCJBcnJheVwiLFxuICAgICAgICBwcm90bzogITBcbiAgICAgIH0sIHtcbiAgICAgICAgZ3JvdXA6IGZ1bmN0aW9uIGdyb3VwKHQpIHtcbiAgICAgICAgICByZXR1cm4gcih0aGlzLCB0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcyhcImdyb3VwXCIpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oOTkpLFxuICAgICAgICByID0gbigxNCksXG4gICAgICAgIHMgPSBuKDEzKSxcbiAgICAgICAgYSA9IG4oNDApLFxuICAgICAgICBvID0gbigxOCksXG4gICAgICAgIGwgPSBuKDY0KSxcbiAgICAgICAgYyA9IG4oMTg4KSxcbiAgICAgICAgaCA9IG4oMTA4KSxcbiAgICAgICAgZCA9IEFycmF5LFxuICAgICAgICB1ID0gcihbXS5wdXNoKTtcbiAgICAgIHQuZXhwb3J0cyA9IGZ1bmN0aW9uICh0LCBlLCBuLCByKSB7XG4gICAgICAgIGZvciAodmFyIHAsIGYsIGcsIG0gPSBhKHQpLCBiID0gcyhtKSwgdiA9IGkoZSwgbiksIHkgPSBjKG51bGwpLCBBID0gbChiKSwgXyA9IDA7IEEgPiBfOyBfKyspIHtcbiAgICAgICAgICBnID0gYltfXTtcbiAgICAgICAgICAoZiA9IG8odihnLCBfLCBtKSkpIGluIHkgPyB1KHlbZl0sIGcpIDogeVtmXSA9IFtnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAociAmJiAocCA9IHIobSkpICE9PSBkKSBmb3IgKGYgaW4geSkgeVtmXSA9IGgocCwgeVtmXSk7XG4gICAgICAgIHJldHVybiB5O1xuICAgICAgfTtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgdmFyIGksXG4gICAgICAgIHIgPSBuKDQ3KSxcbiAgICAgICAgcyA9IG4oMTg5KSxcbiAgICAgICAgYSA9IG4oNjYpLFxuICAgICAgICBvID0gbig1NSksXG4gICAgICAgIGwgPSBuKDE5MSksXG4gICAgICAgIGMgPSBuKDQzKSxcbiAgICAgICAgaCA9IG4oNTQpLFxuICAgICAgICBkID0gXCJwcm90b3R5cGVcIixcbiAgICAgICAgdSA9IFwic2NyaXB0XCIsXG4gICAgICAgIHAgPSBoKFwiSUVfUFJPVE9cIiksXG4gICAgICAgIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiBFbXB0eUNvbnN0cnVjdG9yKCkge30sXG4gICAgICAgIHNjcmlwdFRhZyA9IGZ1bmN0aW9uIHNjcmlwdFRhZyh0KSB7XG4gICAgICAgICAgcmV0dXJuIFwiPFwiICsgdSArIFwiPlwiICsgdCArIFwiPC9cIiArIHUgKyBcIj5cIjtcbiAgICAgICAgfSxcbiAgICAgICAgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgodCkge1xuICAgICAgICAgIHQud3JpdGUoc2NyaXB0VGFnKFwiXCIpKTtcbiAgICAgICAgICB0LmNsb3NlKCk7XG4gICAgICAgICAgdmFyIGUgPSB0LnBhcmVudFdpbmRvdy5PYmplY3Q7XG4gICAgICAgICAgdCA9IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH0sXG4gICAgICAgIF9OdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiBOdWxsUHJvdG9PYmplY3QoKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGkgPSBuZXcgQWN0aXZlWE9iamVjdChcImh0bWxmaWxlXCIpO1xuICAgICAgICAgIH0gY2F0Y2ggKHQpIHt9XG4gICAgICAgICAgX051bGxQcm90b09iamVjdCA9IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIGRvY3VtZW50ID8gZG9jdW1lbnQuZG9tYWluICYmIGkgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGkpIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHQsXG4gICAgICAgICAgICAgIGUgPSBjKFwiaWZyYW1lXCIpLFxuICAgICAgICAgICAgICBuID0gXCJqYXZhXCIgKyB1ICsgXCI6XCI7XG4gICAgICAgICAgICBlLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIGwuYXBwZW5kQ2hpbGQoZSk7XG4gICAgICAgICAgICBlLnNyYyA9IFN0cmluZyhuKTtcbiAgICAgICAgICAgICh0ID0gZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7XG4gICAgICAgICAgICB0LndyaXRlKHNjcmlwdFRhZyhcImRvY3VtZW50LkY9T2JqZWN0XCIpKTtcbiAgICAgICAgICAgIHQuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0LkY7XG4gICAgICAgICAgfSgpIDogTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChpKTtcbiAgICAgICAgICBmb3IgKHZhciB0ID0gYS5sZW5ndGg7IHQtLTspIGRlbGV0ZSBfTnVsbFByb3RvT2JqZWN0W2RdW2FbdF1dO1xuICAgICAgICAgIHJldHVybiBfTnVsbFByb3RvT2JqZWN0KCk7XG4gICAgICAgIH07XG4gICAgICBvW3BdID0gITA7XG4gICAgICB0LmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZSh0LCBlKSB7XG4gICAgICAgIHZhciBuO1xuICAgICAgICBpZiAobnVsbCAhPT0gdCkge1xuICAgICAgICAgIEVtcHR5Q29uc3RydWN0b3JbZF0gPSByKHQpO1xuICAgICAgICAgIG4gPSBuZXcgRW1wdHlDb25zdHJ1Y3RvcigpO1xuICAgICAgICAgIEVtcHR5Q29uc3RydWN0b3JbZF0gPSBudWxsO1xuICAgICAgICAgIG5bcF0gPSB0O1xuICAgICAgICB9IGVsc2UgbiA9IF9OdWxsUHJvdG9PYmplY3QoKTtcbiAgICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZSA/IG4gOiBzLmYobiwgZSk7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICB2YXIgaSA9IG4oNiksXG4gICAgICAgIHIgPSBuKDQ2KSxcbiAgICAgICAgcyA9IG4oNDUpLFxuICAgICAgICBhID0gbig0NyksXG4gICAgICAgIG8gPSBuKDEyKSxcbiAgICAgICAgbCA9IG4oMTkwKTtcbiAgICAgIGUuZiA9IGkgJiYgIXIgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModCwgZSkge1xuICAgICAgICBhKHQpO1xuICAgICAgICBmb3IgKHZhciBuLCBpID0gbyhlKSwgciA9IGwoZSksIGMgPSByLmxlbmd0aCwgaCA9IDA7IGMgPiBoOykgcy5mKHQsIG4gPSByW2grK10sIGlbbl0pO1xuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbig1OSksXG4gICAgICAgIHIgPSBuKDY2KTtcbiAgICAgIHQuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXModCkge1xuICAgICAgICByZXR1cm4gaSh0LCByKTtcbiAgICAgIH07XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigyNCk7XG4gICAgICB0LmV4cG9ydHMgPSBpKFwiZG9jdW1lbnRcIiwgXCJkb2N1bWVudEVsZW1lbnRcIik7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIHZhciBpID0gbigzNCksXG4gICAgICAgIHIgPSBuKDE4OCksXG4gICAgICAgIHMgPSBuKDQ1KS5mLFxuICAgICAgICBhID0gaShcInVuc2NvcGFibGVzXCIpLFxuICAgICAgICBvID0gQXJyYXkucHJvdG90eXBlO1xuICAgICAgbnVsbCA9PSBvW2FdICYmIHMobywgYSwge1xuICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICB2YWx1ZTogcihudWxsKVxuICAgICAgfSk7XG4gICAgICB0LmV4cG9ydHMgPSBmdW5jdGlvbiAodCkge1xuICAgICAgICBvW2FdW3RdID0gITA7XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLlhmYVRleHQgPSB2b2lkIDA7XG4gICAgICBuKDg5KTtcbiAgICAgIGNsYXNzIFhmYVRleHQge1xuICAgICAgICBzdGF0aWMgdGV4dENvbnRlbnQodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSBbXSxcbiAgICAgICAgICAgIG4gPSB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBlLFxuICAgICAgICAgICAgICBzdHlsZXM6IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgIWZ1bmN0aW9uIHdhbGsodCkge1xuICAgICAgICAgICAgaWYgKCF0KSByZXR1cm47XG4gICAgICAgICAgICBsZXQgbiA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCBpID0gdC5uYW1lO1xuICAgICAgICAgICAgaWYgKFwiI3RleHRcIiA9PT0gaSkgbiA9IHQudmFsdWU7ZWxzZSB7XG4gICAgICAgICAgICAgIHZhciBfdCRhdHRyaWJ1dGVzO1xuICAgICAgICAgICAgICBpZiAoIVhmYVRleHQuc2hvdWxkQnVpbGRUZXh0KGkpKSByZXR1cm47XG4gICAgICAgICAgICAgIHQgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwICYmIChfdCRhdHRyaWJ1dGVzID0gdC5hdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBfdCRhdHRyaWJ1dGVzICE9PSB2b2lkIDAgJiYgX3QkYXR0cmlidXRlcy50ZXh0Q29udGVudCA/IG4gPSB0LmF0dHJpYnV0ZXMudGV4dENvbnRlbnQgOiB0LnZhbHVlICYmIChuID0gdC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBudWxsICE9PSBuICYmIGUucHVzaCh7XG4gICAgICAgICAgICAgIHN0cjogblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodC5jaGlsZHJlbikgZm9yIChjb25zdCBlIG9mIHQuY2hpbGRyZW4pIHdhbGsoZSk7XG4gICAgICAgICAgfSh0KTtcbiAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgc2hvdWxkQnVpbGRUZXh0KHQpIHtcbiAgICAgICAgICByZXR1cm4gIShcInRleHRhcmVhXCIgPT09IHQgfHwgXCJpbnB1dFwiID09PSB0IHx8IFwib3B0aW9uXCIgPT09IHQgfHwgXCJzZWxlY3RcIiA9PT0gdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuWGZhVGV4dCA9IFhmYVRleHQ7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuVGV4dExheWVyUmVuZGVyVGFzayA9IHZvaWQgMDtcbiAgICAgIGUucmVuZGVyVGV4dExheWVyID0gZnVuY3Rpb24gcmVuZGVyVGV4dExheWVyKHQpIHtcbiAgICAgICAgaWYgKCF0LnRleHRDb250ZW50U291cmNlICYmICh0LnRleHRDb250ZW50IHx8IHQudGV4dENvbnRlbnRTdHJlYW0pKSB7XG4gICAgICAgICAgKDAsIHIuZGVwcmVjYXRlZCkoXCJUaGUgVGV4dExheWVyUmVuZGVyIGB0ZXh0Q29udGVudGAvYHRleHRDb250ZW50U3RyZWFtYCBwYXJhbWV0ZXJzIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwbGVhc2UgdXNlIGB0ZXh0Q29udGVudFNvdXJjZWAgaW5zdGVhZC5cIik7XG4gICAgICAgICAgdC50ZXh0Q29udGVudFNvdXJjZSA9IHQudGV4dENvbnRlbnQgfHwgdC50ZXh0Q29udGVudFN0cmVhbTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb250YWluZXI6IGUsXG4gICAgICAgICAgICB2aWV3cG9ydDogblxuICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgIGkgPSBnZXRDb21wdXRlZFN0eWxlKGUpLFxuICAgICAgICAgIHMgPSBpLmdldFByb3BlcnR5VmFsdWUoXCJ2aXNpYmlsaXR5XCIpLFxuICAgICAgICAgIGEgPSBwYXJzZUZsb2F0KGkuZ2V0UHJvcGVydHlWYWx1ZShcIi0tc2NhbGUtZmFjdG9yXCIpKTtcbiAgICAgICAgXCJ2aXNpYmxlXCIgPT09IHMgJiYgKCFhIHx8IE1hdGguYWJzKGEgLSBuLnNjYWxlKSA+IDFlLTUpICYmIGNvbnNvbGUuZXJyb3IoXCJUaGUgYC0tc2NhbGUtZmFjdG9yYCBDU1MtdmFyaWFibGUgbXVzdCBiZSBzZXQsIHRvIHRoZSBzYW1lIHZhbHVlIGFzIGB2aWV3cG9ydC5zY2FsZWAsIGVpdGhlciBvbiB0aGUgYGNvbnRhaW5lcmAtZWxlbWVudCBpdHNlbGYgb3IgaGlnaGVyIHVwIGluIHRoZSBET00uXCIpO1xuICAgICAgICBjb25zdCBvID0gbmV3IFRleHRMYXllclJlbmRlclRhc2sodCk7XG4gICAgICAgIG8uX3JlbmRlcigpO1xuICAgICAgICByZXR1cm4gbztcbiAgICAgIH07XG4gICAgICBlLnVwZGF0ZVRleHRMYXllciA9IGZ1bmN0aW9uIHVwZGF0ZVRleHRMYXllcih0KSB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgY29udGFpbmVyOiBlLFxuICAgICAgICAgIHZpZXdwb3J0OiBuLFxuICAgICAgICAgIHRleHREaXZzOiBpLFxuICAgICAgICAgIHRleHREaXZQcm9wZXJ0aWVzOiBzLFxuICAgICAgICAgIGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiBhLFxuICAgICAgICAgIG11c3RSb3RhdGU6IG8gPSAhMCxcbiAgICAgICAgICBtdXN0UmVzY2FsZTogbCA9ICEwXG4gICAgICAgIH0gPSB0O1xuICAgICAgICBvICYmICgwLCByLnNldExheWVyRGltZW5zaW9ucykoZSwge1xuICAgICAgICAgIHJvdGF0aW9uOiBuLnJvdGF0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIGNvbnN0IHQgPSBnZXRDdHgoMCwgYSksXG4gICAgICAgICAgICBlID0ge1xuICAgICAgICAgICAgICBwcmV2Rm9udFNpemU6IG51bGwsXG4gICAgICAgICAgICAgIHByZXZGb250RmFtaWx5OiBudWxsLFxuICAgICAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgICAgIHNjYWxlOiBuLnNjYWxlICogKGdsb2JhbFRoaXMuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogbnVsbCxcbiAgICAgICAgICAgICAgY3R4OiB0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBpKSB7XG4gICAgICAgICAgICBlLnByb3BlcnRpZXMgPSBzLmdldCh0KTtcbiAgICAgICAgICAgIGUuZGl2ID0gdDtcbiAgICAgICAgICAgIGxheW91dChlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBuKDg5KTtcbiAgICAgIG4oMik7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2Nyk7XG4gICAgICBjb25zdCBzID0gMzAsXG4gICAgICAgIGEgPSAuOCxcbiAgICAgICAgbyA9IG5ldyBNYXAoKTtcbiAgICAgIGZ1bmN0aW9uIGdldEN0eCh0LCBlKSB7XG4gICAgICAgIGxldCBuO1xuICAgICAgICBpZiAoZSAmJiBpLkZlYXR1cmVUZXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKSBuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh0LCB0KS5nZXRDb250ZXh0KFwiMmRcIiwge1xuICAgICAgICAgIGFscGhhOiAhMVxuICAgICAgICB9KTtlbHNlIHtcbiAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICAgICAgICBlLndpZHRoID0gZS5oZWlnaHQgPSB0O1xuICAgICAgICAgIG4gPSBlLmdldENvbnRleHQoXCIyZFwiLCB7XG4gICAgICAgICAgICBhbHBoYTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbjtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGFwcGVuZFRleHQodCwgZSwgbikge1xuICAgICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIiksXG4gICAgICAgICAgbCA9IHtcbiAgICAgICAgICAgIGFuZ2xlOiAwLFxuICAgICAgICAgICAgY2FudmFzV2lkdGg6IDAsXG4gICAgICAgICAgICBoYXNUZXh0OiBcIlwiICE9PSBlLnN0cixcbiAgICAgICAgICAgIGhhc0VPTDogZS5oYXNFT0wsXG4gICAgICAgICAgICBmb250U2l6ZTogMFxuICAgICAgICAgIH07XG4gICAgICAgIHQuX3RleHREaXZzLnB1c2gocik7XG4gICAgICAgIGNvbnN0IGMgPSBpLlV0aWwudHJhbnNmb3JtKHQuX3RyYW5zZm9ybSwgZS50cmFuc2Zvcm0pO1xuICAgICAgICBsZXQgaCA9IE1hdGguYXRhbjIoY1sxXSwgY1swXSk7XG4gICAgICAgIGNvbnN0IGQgPSBuW2UuZm9udE5hbWVdO1xuICAgICAgICBkLnZlcnRpY2FsICYmIChoICs9IE1hdGguUEkgLyAyKTtcbiAgICAgICAgY29uc3QgdSA9IE1hdGguaHlwb3QoY1syXSwgY1szXSksXG4gICAgICAgICAgcCA9IHUgKiBmdW5jdGlvbiBnZXRBc2NlbnQodCwgZSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IG8uZ2V0KHQpO1xuICAgICAgICAgICAgaWYgKG4pIHJldHVybiBuO1xuICAgICAgICAgICAgY29uc3QgaSA9IGdldEN0eChzLCBlKTtcbiAgICAgICAgICAgIGkuZm9udCA9IFwiXCIuY29uY2F0KHMsIFwicHggXCIpLmNvbmNhdCh0KTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBpLm1lYXN1cmVUZXh0KFwiXCIpO1xuICAgICAgICAgICAgbGV0IGwgPSByLmZvbnRCb3VuZGluZ0JveEFzY2VudCxcbiAgICAgICAgICAgICAgYyA9IE1hdGguYWJzKHIuZm9udEJvdW5kaW5nQm94RGVzY2VudCk7XG4gICAgICAgICAgICBpZiAobCkge1xuICAgICAgICAgICAgICBjb25zdCBlID0gbCAvIChsICsgYyk7XG4gICAgICAgICAgICAgIG8uc2V0KHQsIGUpO1xuICAgICAgICAgICAgICBpLmNhbnZhcy53aWR0aCA9IGkuY2FudmFzLmhlaWdodCA9IDA7XG4gICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaS5zdHJva2VTdHlsZSA9IFwicmVkXCI7XG4gICAgICAgICAgICBpLmNsZWFyUmVjdCgwLCAwLCBzLCBzKTtcbiAgICAgICAgICAgIGkuc3Ryb2tlVGV4dChcImdcIiwgMCwgMCk7XG4gICAgICAgICAgICBsZXQgaCA9IGkuZ2V0SW1hZ2VEYXRhKDAsIDAsIHMsIHMpLmRhdGE7XG4gICAgICAgICAgICBjID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IHQgPSBoLmxlbmd0aCAtIDEgLSAzOyB0ID49IDA7IHQgLT0gNCkgaWYgKGhbdF0gPiAwKSB7XG4gICAgICAgICAgICAgIGMgPSBNYXRoLmNlaWwodCAvIDQgLyBzKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpLmNsZWFyUmVjdCgwLCAwLCBzLCBzKTtcbiAgICAgICAgICAgIGkuc3Ryb2tlVGV4dChcIkFcIiwgMCwgcyk7XG4gICAgICAgICAgICBoID0gaS5nZXRJbWFnZURhdGEoMCwgMCwgcywgcykuZGF0YTtcbiAgICAgICAgICAgIGwgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgdCA9IDAsIGUgPSBoLmxlbmd0aDsgdCA8IGU7IHQgKz0gNCkgaWYgKGhbdF0gPiAwKSB7XG4gICAgICAgICAgICAgIGwgPSBzIC0gTWF0aC5mbG9vcih0IC8gNCAvIHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkuY2FudmFzLndpZHRoID0gaS5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgICAgICAgICAgIGlmIChsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBsIC8gKGwgKyBjKTtcbiAgICAgICAgICAgICAgby5zZXQodCwgZSk7XG4gICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgby5zZXQodCwgYSk7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICB9KGQuZm9udEZhbWlseSwgdC5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpO1xuICAgICAgICBsZXQgZiwgZztcbiAgICAgICAgaWYgKDAgPT09IGgpIHtcbiAgICAgICAgICBmID0gY1s0XTtcbiAgICAgICAgICBnID0gY1s1XSAtIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZiA9IGNbNF0gKyBwICogTWF0aC5zaW4oaCk7XG4gICAgICAgICAgZyA9IGNbNV0gLSBwICogTWF0aC5jb3MoaCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbSA9IFwiY2FsYyh2YXIoLS1zY2FsZS1mYWN0b3IpKlwiLFxuICAgICAgICAgIGIgPSByLnN0eWxlO1xuICAgICAgICBpZiAodC5fY29udGFpbmVyID09PSB0Ll9yb290Q29udGFpbmVyKSB7XG4gICAgICAgICAgYi5sZWZ0ID0gXCJcIi5jb25jYXQoKDEwMCAqIGYgLyB0Ll9wYWdlV2lkdGgpLnRvRml4ZWQoMiksIFwiJVwiKTtcbiAgICAgICAgICBiLnRvcCA9IFwiXCIuY29uY2F0KCgxMDAgKiBnIC8gdC5fcGFnZUhlaWdodCkudG9GaXhlZCgyKSwgXCIlXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGIubGVmdCA9IFwiXCIuY29uY2F0KG0pLmNvbmNhdChmLnRvRml4ZWQoMiksIFwicHgpXCIpO1xuICAgICAgICAgIGIudG9wID0gXCJcIi5jb25jYXQobSkuY29uY2F0KGcudG9GaXhlZCgyKSwgXCJweClcIik7XG4gICAgICAgIH1cbiAgICAgICAgYi5mb250U2l6ZSA9IFwiXCIuY29uY2F0KG0pLmNvbmNhdCh1LnRvRml4ZWQoMiksIFwicHgpXCIpO1xuICAgICAgICBiLmZvbnRGYW1pbHkgPSBkLmZvbnRGYW1pbHk7XG4gICAgICAgIGwuZm9udFNpemUgPSB1O1xuICAgICAgICByLnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJwcmVzZW50YXRpb25cIik7XG4gICAgICAgIHIudGV4dENvbnRlbnQgPSBlLnN0cjtcbiAgICAgICAgci5kaXIgPSBlLmRpcjtcbiAgICAgICAgdC5fZm9udEluc3BlY3RvckVuYWJsZWQgJiYgKHIuZGF0YXNldC5mb250TmFtZSA9IGUuZm9udE5hbWUpO1xuICAgICAgICAwICE9PSBoICYmIChsLmFuZ2xlID0gaCAqICgxODAgLyBNYXRoLlBJKSk7XG4gICAgICAgIGxldCB2ID0gITE7XG4gICAgICAgIGlmIChlLnN0ci5sZW5ndGggPiAxKSB2ID0gITA7ZWxzZSBpZiAoXCIgXCIgIT09IGUuc3RyICYmIGUudHJhbnNmb3JtWzBdICE9PSBlLnRyYW5zZm9ybVszXSkge1xuICAgICAgICAgIGNvbnN0IHQgPSBNYXRoLmFicyhlLnRyYW5zZm9ybVswXSksXG4gICAgICAgICAgICBuID0gTWF0aC5hYnMoZS50cmFuc2Zvcm1bM10pO1xuICAgICAgICAgIHQgIT09IG4gJiYgTWF0aC5tYXgodCwgbikgLyBNYXRoLm1pbih0LCBuKSA+IDEuNSAmJiAodiA9ICEwKTtcbiAgICAgICAgfVxuICAgICAgICB2ICYmIChsLmNhbnZhc1dpZHRoID0gZC52ZXJ0aWNhbCA/IGUuaGVpZ2h0IDogZS53aWR0aCk7XG4gICAgICAgIHQuX3RleHREaXZQcm9wZXJ0aWVzLnNldChyLCBsKTtcbiAgICAgICAgdC5faXNSZWFkYWJsZVN0cmVhbSAmJiB0Ll9sYXlvdXRUZXh0KHIpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gbGF5b3V0KHQpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZGl2OiBlLFxuICAgICAgICAgICAgc2NhbGU6IG4sXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBpLFxuICAgICAgICAgICAgY3R4OiByLFxuICAgICAgICAgICAgcHJldkZvbnRTaXplOiBzLFxuICAgICAgICAgICAgcHJldkZvbnRGYW1pbHk6IGFcbiAgICAgICAgICB9ID0gdCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdHlsZTogb1xuICAgICAgICAgIH0gPSBlO1xuICAgICAgICBsZXQgbCA9IFwiXCI7XG4gICAgICAgIGlmICgwICE9PSBpLmNhbnZhc1dpZHRoICYmIGkuaGFzVGV4dCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgZm9udEZhbWlseTogY1xuICAgICAgICAgICAgfSA9IG8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNhbnZhc1dpZHRoOiBoLFxuICAgICAgICAgICAgICBmb250U2l6ZTogZFxuICAgICAgICAgICAgfSA9IGk7XG4gICAgICAgICAgaWYgKHMgIT09IGQgfHwgYSAhPT0gYykge1xuICAgICAgICAgICAgci5mb250ID0gXCJcIi5jb25jYXQoZCAqIG4sIFwicHggXCIpLmNvbmNhdChjKTtcbiAgICAgICAgICAgIHQucHJldkZvbnRTaXplID0gZDtcbiAgICAgICAgICAgIHQucHJldkZvbnRGYW1pbHkgPSBjO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB3aWR0aDogdVxuICAgICAgICAgIH0gPSByLm1lYXN1cmVUZXh0KGUudGV4dENvbnRlbnQpO1xuICAgICAgICAgIHUgPiAwICYmIChsID0gXCJzY2FsZVgoXCIuY29uY2F0KGggKiBuIC8gdSwgXCIpXCIpKTtcbiAgICAgICAgfVxuICAgICAgICAwICE9PSBpLmFuZ2xlICYmIChsID0gXCJyb3RhdGUoXCIuY29uY2F0KGkuYW5nbGUsIFwiZGVnKSBcIikuY29uY2F0KGwpKTtcbiAgICAgICAgbC5sZW5ndGggPiAwICYmIChvLnRyYW5zZm9ybSA9IGwpO1xuICAgICAgfVxuICAgICAgY2xhc3MgVGV4dExheWVyUmVuZGVyVGFzayB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX2dsb2JhbFRoaXMkRm9udEluc3BlMjtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgdGV4dENvbnRlbnRTb3VyY2U6IGUsXG4gICAgICAgICAgICBjb250YWluZXI6IG4sXG4gICAgICAgICAgICB2aWV3cG9ydDogcyxcbiAgICAgICAgICAgIHRleHREaXZzOiBhLFxuICAgICAgICAgICAgdGV4dERpdlByb3BlcnRpZXM6IG8sXG4gICAgICAgICAgICB0ZXh0Q29udGVudEl0ZW1zU3RyOiBsLFxuICAgICAgICAgICAgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6IGNcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICB0aGlzLl90ZXh0Q29udGVudFNvdXJjZSA9IGU7XG4gICAgICAgICAgdGhpcy5faXNSZWFkYWJsZVN0cmVhbSA9IGUgaW5zdGFuY2VvZiBSZWFkYWJsZVN0cmVhbTtcbiAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9yb290Q29udGFpbmVyID0gbjtcbiAgICAgICAgICB0aGlzLl90ZXh0RGl2cyA9IGEgfHwgW107XG4gICAgICAgICAgdGhpcy5fdGV4dENvbnRlbnRJdGVtc1N0ciA9IGwgfHwgW107XG4gICAgICAgICAgdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQgPSBjO1xuICAgICAgICAgIHRoaXMuX2ZvbnRJbnNwZWN0b3JFbmFibGVkID0gISEoKF9nbG9iYWxUaGlzJEZvbnRJbnNwZTIgPSBnbG9iYWxUaGlzLkZvbnRJbnNwZWN0b3IpICE9PSBudWxsICYmIF9nbG9iYWxUaGlzJEZvbnRJbnNwZTIgIT09IHZvaWQgMCAmJiBfZ2xvYmFsVGhpcyRGb250SW5zcGUyLmVuYWJsZWQpO1xuICAgICAgICAgIHRoaXMuX3JlYWRlciA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fdGV4dERpdlByb3BlcnRpZXMgPSBvIHx8IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgICAgdGhpcy5fY2FuY2VsZWQgPSAhMTtcbiAgICAgICAgICB0aGlzLl9jYXBhYmlsaXR5ID0gbmV3IGkuUHJvbWlzZUNhcGFiaWxpdHkoKTtcbiAgICAgICAgICB0aGlzLl9sYXlvdXRUZXh0UGFyYW1zID0ge1xuICAgICAgICAgICAgcHJldkZvbnRTaXplOiBudWxsLFxuICAgICAgICAgICAgcHJldkZvbnRGYW1pbHk6IG51bGwsXG4gICAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgICBzY2FsZTogcy5zY2FsZSAqIChnbG9iYWxUaGlzLmRldmljZVBpeGVsUmF0aW8gfHwgMSksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBudWxsLFxuICAgICAgICAgICAgY3R4OiBnZXRDdHgoMCwgYylcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHBhZ2VXaWR0aDogaCxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IGQsXG4gICAgICAgICAgICBwYWdlWDogdSxcbiAgICAgICAgICAgIHBhZ2VZOiBwXG4gICAgICAgICAgfSA9IHMucmF3RGltcztcbiAgICAgICAgICB0aGlzLl90cmFuc2Zvcm0gPSBbMSwgMCwgMCwgLTEsIC11LCBwICsgZF07XG4gICAgICAgICAgdGhpcy5fcGFnZVdpZHRoID0gaDtcbiAgICAgICAgICB0aGlzLl9wYWdlSGVpZ2h0ID0gZDtcbiAgICAgICAgICAoMCwgci5zZXRMYXllckRpbWVuc2lvbnMpKG4sIHMpO1xuICAgICAgICAgIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xheW91dFRleHRQYXJhbXMgPSBudWxsO1xuICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgcHJvbWlzZSgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlO1xuICAgICAgICB9XG4gICAgICAgIGNhbmNlbCgpIHtcbiAgICAgICAgICB0aGlzLl9jYW5jZWxlZCA9ICEwO1xuICAgICAgICAgIGlmICh0aGlzLl9yZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRlci5jYW5jZWwobmV3IGkuQWJvcnRFeGNlcHRpb24oXCJUZXh0TGF5ZXIgdGFzayBjYW5jZWxsZWQuXCIpKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICAgICAgICB0aGlzLl9yZWFkZXIgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9jYXBhYmlsaXR5LnJlamVjdChuZXcgaS5BYm9ydEV4Y2VwdGlvbihcIlRleHRMYXllciB0YXNrIGNhbmNlbGxlZC5cIikpO1xuICAgICAgICB9XG4gICAgICAgIF9wcm9jZXNzSXRlbXModCwgZSkge1xuICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0KSBpZiAodm9pZCAwICE9PSBuLnN0cikge1xuICAgICAgICAgICAgdGhpcy5fdGV4dENvbnRlbnRJdGVtc1N0ci5wdXNoKG4uc3RyKTtcbiAgICAgICAgICAgIGFwcGVuZFRleHQodGhpcywgbiwgZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcImJlZ2luTWFya2VkQ29udGVudFByb3BzXCIgPT09IG4udHlwZSB8fCBcImJlZ2luTWFya2VkQ29udGVudFwiID09PSBuLnR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9jb250YWluZXI7XG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwibWFya2VkQ29udGVudFwiKTtcbiAgICAgICAgICAgIG51bGwgIT09IG4uaWQgJiYgdGhpcy5fY29udGFpbmVyLnNldEF0dHJpYnV0ZShcImlkXCIsIFwiXCIuY29uY2F0KG4uaWQpKTtcbiAgICAgICAgICAgIHQuYXBwZW5kKHRoaXMuX2NvbnRhaW5lcik7XG4gICAgICAgICAgfSBlbHNlIFwiZW5kTWFya2VkQ29udGVudFwiID09PSBuLnR5cGUgJiYgKHRoaXMuX2NvbnRhaW5lciA9IHRoaXMuX2NvbnRhaW5lci5wYXJlbnROb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBfbGF5b3V0VGV4dCh0KSB7XG4gICAgICAgICAgY29uc3QgZSA9IHRoaXMuX2xheW91dFRleHRQYXJhbXMucHJvcGVydGllcyA9IHRoaXMuX3RleHREaXZQcm9wZXJ0aWVzLmdldCh0KTtcbiAgICAgICAgICB0aGlzLl9sYXlvdXRUZXh0UGFyYW1zLmRpdiA9IHQ7XG4gICAgICAgICAgbGF5b3V0KHRoaXMuX2xheW91dFRleHRQYXJhbXMpO1xuICAgICAgICAgIGUuaGFzVGV4dCAmJiB0aGlzLl9jb250YWluZXIuYXBwZW5kKHQpO1xuICAgICAgICAgIGlmIChlLmhhc0VPTCkge1xuICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKTtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwicm9sZVwiLCBcInByZXNlbnRhdGlvblwiKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmQodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF9yZW5kZXIoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IG5ldyBpLlByb21pc2VDYXBhYmlsaXR5KCk7XG4gICAgICAgICAgbGV0IGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGlmICh0aGlzLl9pc1JlYWRhYmxlU3RyZWFtKSB7XG4gICAgICAgICAgICBjb25zdCBwdW1wID0gKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9yZWFkZXIucmVhZCgpLnRoZW4obiA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBpLFxuICAgICAgICAgICAgICAgICAgZG9uZTogclxuICAgICAgICAgICAgICAgIH0gPSBuO1xuICAgICAgICAgICAgICAgIGlmIChyKSB0LnJlc29sdmUoKTtlbHNlIHtcbiAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZSwgaS5zdHlsZXMpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0l0ZW1zKGkuaXRlbXMsIGUpO1xuICAgICAgICAgICAgICAgICAgcHVtcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSwgdC5yZWplY3QpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRlciA9IHRoaXMuX3RleHRDb250ZW50U291cmNlLmdldFJlYWRlcigpO1xuICAgICAgICAgICAgcHVtcCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RleHRDb250ZW50U291cmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vIFwidGV4dENvbnRlbnRTb3VyY2VcIiBwYXJhbWV0ZXIgc3BlY2lmaWVkLicpO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IGUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBuXG4gICAgICAgICAgICAgIH0gPSB0aGlzLl90ZXh0Q29udGVudFNvdXJjZTtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0l0ZW1zKGUsIG4pO1xuICAgICAgICAgICAgICB0LnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdC5wcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgZSA9IG51bGw7XG4gICAgICAgICAgICAhZnVuY3Rpb24gcmVuZGVyKHQpIHtcbiAgICAgICAgICAgICAgaWYgKHQuX2NhbmNlbGVkKSByZXR1cm47XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSB0Ll90ZXh0RGl2cyxcbiAgICAgICAgICAgICAgICBuID0gdC5fY2FwYWJpbGl0eTtcbiAgICAgICAgICAgICAgaWYgKGUubGVuZ3RoID4gMWU1KSBuLnJlc29sdmUoKTtlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXQuX2lzUmVhZGFibGVTdHJlYW0pIGZvciAoY29uc3QgbiBvZiBlKSB0Ll9sYXlvdXRUZXh0KG4pO1xuICAgICAgICAgICAgICAgIG4ucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KHRoaXMpO1xuICAgICAgICAgIH0sIHRoaXMuX2NhcGFiaWxpdHkucmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5UZXh0TGF5ZXJSZW5kZXJUYXNrID0gVGV4dExheWVyUmVuZGVyVGFzaztcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXIgPSB2b2lkIDA7XG4gICAgICBuKDEyNSk7XG4gICAgICBuKDEzNSk7XG4gICAgICBuKDEzNyk7XG4gICAgICBuKDE0MCk7XG4gICAgICBuKDE0Mik7XG4gICAgICBuKDE0NCk7XG4gICAgICBuKDE0Nik7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2MyksXG4gICAgICAgIHMgPSBuKDE2NCksXG4gICAgICAgIGEgPSBuKDE5NiksXG4gICAgICAgIG8gPSBuKDIwMSksXG4gICAgICAgIGwgPSBuKDE2NyksXG4gICAgICAgIGMgPSBuKDIwMik7XG4gICAgICB2YXIgX3JlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3NlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2FlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX29lID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2xlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2NlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2hlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2RlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3VlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3BlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX21lID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2JlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2dlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2ZlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBBbm5vdGF0aW9uRWRpdG9yTGF5ZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcihfdDEzKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9mZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9nZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9iZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9tZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3JlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfc2UsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2FlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX29lLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnBvaW50ZXJ1cC5iaW5kKHRoaXMpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2xlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnBvaW50ZXJkb3duLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfY2UsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBNYXAoKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9oZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZGUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3VlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAhMVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9wZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIHVpTWFuYWdlcjogX2UxMSxcbiAgICAgICAgICAgIHBhZ2VJbmRleDogX243LFxuICAgICAgICAgICAgZGl2OiBfaTQsXG4gICAgICAgICAgICBhY2Nlc3NpYmlsaXR5TWFuYWdlcjogX3I0LFxuICAgICAgICAgICAgYW5ub3RhdGlvbkxheWVyOiBzLFxuICAgICAgICAgICAgdmlld3BvcnQ6IGwsXG4gICAgICAgICAgICBsMTBuOiBoXG4gICAgICAgICAgfSA9IF90MTM7XG4gICAgICAgICAgY29uc3QgZCA9IFthLkZyZWVUZXh0RWRpdG9yLCBvLklua0VkaXRvciwgYy5TdGFtcEVkaXRvcl07XG4gICAgICAgICAgaWYgKCFBbm5vdGF0aW9uRWRpdG9yTGF5ZXIuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBBbm5vdGF0aW9uRWRpdG9yTGF5ZXIuX2luaXRpYWxpemVkID0gITA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgZCkgdC5pbml0aWFsaXplKGgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfZTExLnJlZ2lzdGVyRWRpdG9yVHlwZXMoZCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9wZSwgX2UxMSk7XG4gICAgICAgICAgdGhpcy5wYWdlSW5kZXggPSBfbjc7XG4gICAgICAgICAgdGhpcy5kaXYgPSBfaTQ7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9yZSwgX3I0KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2FlLCBzKTtcbiAgICAgICAgICB0aGlzLnZpZXdwb3J0ID0gbDtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5hZGRMYXllcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgICByZXR1cm4gMCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jZSkuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVUb29sYmFyKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS51cGRhdGVUb29sYmFyKHQpO1xuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZU1vZGUoKSB7XG4gICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmdldE1vZGUoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9mZSwgX2ZlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICBpZiAodCA9PT0gaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkspIHtcbiAgICAgICAgICAgIHRoaXMuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITEpO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2xpY2soKTtcbiAgICAgICAgICB9IGVsc2UgdGhpcy5lbmFibGVDbGljaygpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLnVuc2VsZWN0QWxsKCk7XG4gICAgICAgICAgaWYgKHQgIT09IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuTk9ORSkge1xuICAgICAgICAgICAgdGhpcy5kaXYuY2xhc3NMaXN0LnRvZ2dsZShcImZyZWVUZXh0RWRpdGluZ1wiLCB0ID09PSBpLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJpbmtFZGl0aW5nXCIsIHQgPT09IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJzdGFtcEVkaXRpbmdcIiwgdCA9PT0gaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUCk7XG4gICAgICAgICAgICB0aGlzLmRpdi5oaWRkZW4gPSAhMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWRkSW5rRWRpdG9ySWZOZWVkZWQodCkge1xuICAgICAgICAgIGlmICghdCAmJiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5nZXRNb2RlKCkgIT09IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LKSByZXR1cm47XG4gICAgICAgICAgaWYgKCF0KSBmb3IgKGNvbnN0IHQgb2YgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jZSkudmFsdWVzKCkpIGlmICh0LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgdC5zZXRJbkJhY2tncm91bmQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfZ2UsIF9nZTIpLmNhbGwodGhpcywge1xuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IDBcbiAgICAgICAgICB9KS5zZXRJbkJhY2tncm91bmQoKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRFZGl0aW5nU3RhdGUodCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLnNldEVkaXRpbmdTdGF0ZSh0KTtcbiAgICAgICAgfVxuICAgICAgICBhZGRDb21tYW5kcyh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuYWRkQ29tbWFuZHModCk7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlKCkge1xuICAgICAgICAgIHRoaXMuZGl2LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBcImF1dG9cIjtcbiAgICAgICAgICBjb25zdCB0ID0gbmV3IFNldCgpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2NlKS52YWx1ZXMoKSkge1xuICAgICAgICAgICAgZS5lbmFibGVFZGl0aW5nKCk7XG4gICAgICAgICAgICBlLmFubm90YXRpb25FbGVtZW50SWQgJiYgdC5hZGQoZS5hbm5vdGF0aW9uRWxlbWVudElkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2FlKSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IGUgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2FlKS5nZXRFZGl0YWJsZUFubm90YXRpb25zKCk7XG4gICAgICAgICAgZm9yIChjb25zdCBuIG9mIGUpIHtcbiAgICAgICAgICAgIG4uaGlkZSgpO1xuICAgICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmlzRGVsZXRlZEFubm90YXRpb25FbGVtZW50KG4uZGF0YS5pZCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHQuaGFzKG4uZGF0YS5pZCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZGVzZXJpYWxpemUobik7XG4gICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICB0aGlzLmFkZE9yUmVidWlsZChlKTtcbiAgICAgICAgICAgICAgZS5lbmFibGVFZGl0aW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpc2FibGUoKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF91ZSwgITApO1xuICAgICAgICAgIHRoaXMuZGl2LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBcIm5vbmVcIjtcbiAgICAgICAgICBjb25zdCB0ID0gbmV3IFNldCgpO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2NlKS52YWx1ZXMoKSkge1xuICAgICAgICAgICAgZS5kaXNhYmxlRWRpdGluZygpO1xuICAgICAgICAgICAgaWYgKGUuYW5ub3RhdGlvbkVsZW1lbnRJZCAmJiBudWxsID09PSBlLnNlcmlhbGl6ZSgpKSB7XG4gICAgICAgICAgICAgIHZhciBfdGhpcyRnZXRFZGl0YWJsZUFubm87XG4gICAgICAgICAgICAgIChfdGhpcyRnZXRFZGl0YWJsZUFubm8gPSB0aGlzLmdldEVkaXRhYmxlQW5ub3RhdGlvbihlLmFubm90YXRpb25FbGVtZW50SWQpKSA9PT0gbnVsbCB8fCBfdGhpcyRnZXRFZGl0YWJsZUFubm8gPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGdldEVkaXRhYmxlQW5uby5zaG93KCk7XG4gICAgICAgICAgICAgIGUucmVtb3ZlKCk7XG4gICAgICAgICAgICB9IGVsc2UgdC5hZGQoZS5hbm5vdGF0aW9uRWxlbWVudElkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYWUpKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9hZSkuZ2V0RWRpdGFibGVBbm5vdGF0aW9ucygpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIGUpIHtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGlkOiBlXG4gICAgICAgICAgICAgIH0gPSBuLmRhdGE7XG4gICAgICAgICAgICAgIHQuaGFzKGUpIHx8IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmlzRGVsZXRlZEFubm90YXRpb25FbGVtZW50KGUpIHx8IG4uc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9mZSwgX2ZlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICB0aGlzLmlzRW1wdHkgJiYgKHRoaXMuZGl2LmhpZGRlbiA9ICEwKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3VlLCAhMSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWRpdGFibGVBbm5vdGF0aW9uKHQpIHtcbiAgICAgICAgICB2YXIgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0OTtcbiAgICAgICAgICByZXR1cm4gKChfY2xhc3NQcml2YXRlRmllbGRHZXQ5ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9hZSkpID09PSBudWxsIHx8IF9jbGFzc1ByaXZhdGVGaWVsZEdldDkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDkuZ2V0RWRpdGFibGVBbm5vdGF0aW9uKHQpKSB8fCBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUVkaXRvcih0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuZ2V0QWN0aXZlKCkgIT09IHQgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuc2V0QWN0aXZlRWRpdG9yKHQpO1xuICAgICAgICB9XG4gICAgICAgIGVuYWJsZUNsaWNrKCkge1xuICAgICAgICAgIHRoaXMuZGl2LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2xlKSk7XG4gICAgICAgICAgdGhpcy5kaXYuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29lKSk7XG4gICAgICAgIH1cbiAgICAgICAgZGlzYWJsZUNsaWNrKCkge1xuICAgICAgICAgIHRoaXMuZGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2xlKSk7XG4gICAgICAgICAgdGhpcy5kaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29lKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXR0YWNoKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2NlKS5zZXQodC5pZCwgdCk7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgYW5ub3RhdGlvbkVsZW1lbnRJZDogZVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIGUgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuaXNEZWxldGVkQW5ub3RhdGlvbkVsZW1lbnQoZSkgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkucmVtb3ZlRGVsZXRlZEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICB9XG4gICAgICAgIGRldGFjaCh0KSB7XG4gICAgICAgICAgdmFyIF9jbGFzc1ByaXZhdGVGaWVsZEdldDEwO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfY2UpLmRlbGV0ZSh0LmlkKTtcbiAgICAgICAgICAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTAgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3JlKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTAgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDEwLnJlbW92ZVBvaW50ZXJJblRleHRMYXllcih0LmNvbnRlbnREaXYpO1xuICAgICAgICAgICFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3VlKSAmJiB0LmFubm90YXRpb25FbGVtZW50SWQgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuYWRkRGVsZXRlZEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZSh0KSB7XG4gICAgICAgICAgdGhpcy5kZXRhY2godCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkucmVtb3ZlRWRpdG9yKHQpO1xuICAgICAgICAgIHQuZGl2LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHQuZGl2LnN0eWxlLmRpc3BsYXkgPSBcIlwiO1xuICAgICAgICAgICAgdC5kaXYucmVtb3ZlKCk7XG4gICAgICAgICAgICB0LmlzQXR0YWNoZWRUb0RPTSA9ICExO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYm9keSAmJiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5mb2N1c01haW5Db250YWluZXIoKTtcbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2RlKSB8fCB0aGlzLmFkZElua0VkaXRvcklmTmVlZGVkKCExKTtcbiAgICAgICAgfVxuICAgICAgICBhZGQodCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX21lLCBfbWUyKS5jYWxsKHRoaXMsIHQpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmFkZEVkaXRvcih0KTtcbiAgICAgICAgICB0aGlzLmF0dGFjaCh0KTtcbiAgICAgICAgICBpZiAoIXQuaXNBdHRhY2hlZFRvRE9NKSB7XG4gICAgICAgICAgICBjb25zdCBlID0gdC5yZW5kZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmFwcGVuZChlKTtcbiAgICAgICAgICAgIHQuaXNBdHRhY2hlZFRvRE9NID0gITA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW92ZUVkaXRvckluRE9NKHQpO1xuICAgICAgICAgIHQub25jZUFkZGVkKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSh0KTtcbiAgICAgICAgfVxuICAgICAgICBtb3ZlRWRpdG9ySW5ET00odCkge1xuICAgICAgICAgIHZhciBfY2xhc3NQcml2YXRlRmllbGRHZXQxMTtcbiAgICAgICAgICAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTEgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3JlKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDExLm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsIHQuZGl2LCB0LmNvbnRlbnREaXYsICEwKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRPclJlYnVpbGQodCkge1xuICAgICAgICAgIHQubmVlZHNUb0JlUmVidWlsdCgpID8gdC5yZWJ1aWxkKCkgOiB0aGlzLmFkZCh0KTtcbiAgICAgICAgfVxuICAgICAgICBhZGRVbmRvYWJsZUVkaXRvcih0KSB7XG4gICAgICAgICAgdGhpcy5hZGRDb21tYW5kcyh7XG4gICAgICAgICAgICBjbWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRPclJlYnVpbGQodCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgICB0LnJlbW92ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11c3RFeGVjOiAhMVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGdldE5leHRJZCgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuZ2V0SWQoKTtcbiAgICAgICAgfVxuICAgICAgICBkZXNlcmlhbGl6ZSh0KSB7XG4gICAgICAgICAgdmFyIF90JGFubm90YXRpb25UeXBlO1xuICAgICAgICAgIHN3aXRjaCAoKF90JGFubm90YXRpb25UeXBlID0gdC5hbm5vdGF0aW9uVHlwZSkgIT09IG51bGwgJiYgX3QkYW5ub3RhdGlvblR5cGUgIT09IHZvaWQgMCA/IF90JGFubm90YXRpb25UeXBlIDogdC5hbm5vdGF0aW9uRWRpdG9yVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUOlxuICAgICAgICAgICAgICByZXR1cm4gYS5GcmVlVGV4dEVkaXRvci5kZXNlcmlhbGl6ZSh0LCB0aGlzLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKSk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuSU5LOlxuICAgICAgICAgICAgICByZXR1cm4gby5JbmtFZGl0b3IuZGVzZXJpYWxpemUodCwgdGhpcywgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JUeXBlLlNUQU1QOlxuICAgICAgICAgICAgICByZXR1cm4gYy5TdGFtcEVkaXRvci5kZXNlcmlhbGl6ZSh0LCB0aGlzLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHNldFNlbGVjdGVkKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5zZXRTZWxlY3RlZCh0KTtcbiAgICAgICAgfVxuICAgICAgICB0b2dnbGVTZWxlY3RlZCh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkudG9nZ2xlU2VsZWN0ZWQodCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNTZWxlY3RlZCh0KSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmlzU2VsZWN0ZWQodCk7XG4gICAgICAgIH1cbiAgICAgICAgdW5zZWxlY3QodCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLnVuc2VsZWN0KHQpO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJ1cCh0KSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgaXNNYWM6IGVcbiAgICAgICAgICB9ID0gaS5GZWF0dXJlVGVzdC5wbGF0Zm9ybTtcbiAgICAgICAgICBpZiAoISgwICE9PSB0LmJ1dHRvbiB8fCB0LmN0cmxLZXkgJiYgZSkgJiYgdC50YXJnZXQgPT09IHRoaXMuZGl2ICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaGUpKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2hlLCAhMSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3NlKSA/IF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2dlLCBfZ2UyKS5jYWxsKHRoaXMsIHQpIDogX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zZSwgITApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyZG93bih0KSB7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfaGUpKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2hlLCAhMSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlzTWFjOiBlXG4gICAgICAgICAgfSA9IGkuRmVhdHVyZVRlc3QucGxhdGZvcm07XG4gICAgICAgICAgaWYgKDAgIT09IHQuYnV0dG9uIHx8IHQuY3RybEtleSAmJiBlKSByZXR1cm47XG4gICAgICAgICAgaWYgKHQudGFyZ2V0ICE9PSB0aGlzLmRpdikgcmV0dXJuO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaGUsICEwKTtcbiAgICAgICAgICBjb25zdCBuID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuZ2V0QWN0aXZlKCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9zZSwgIW4gfHwgbi5pc0VtcHR5KCkpO1xuICAgICAgICB9XG4gICAgICAgIGRyb3AodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0LmRhdGFUcmFuc2Zlci5nZXREYXRhKFwidGV4dC9wbGFpblwiKSxcbiAgICAgICAgICAgIG4gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5nZXRFZGl0b3IoZSk7XG4gICAgICAgICAgaWYgKCFuKSByZXR1cm47XG4gICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSBcIm1vdmVcIjtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9tZSwgX21lMikuY2FsbCh0aGlzLCBuKTtcbiAgICAgICAgICBjb25zdCBpID0gdGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgICAgICByID0gdC5jbGllbnRYIC0gaS54LFxuICAgICAgICAgICAgcyA9IHQuY2xpZW50WSAtIGkueTtcbiAgICAgICAgICBuLnRyYW5zbGF0ZShyIC0gbi5zdGFydFgsIHMgLSBuLnN0YXJ0WSk7XG4gICAgICAgICAgdGhpcy5tb3ZlRWRpdG9ySW5ET00obik7XG4gICAgICAgICAgbi5kaXYuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBkcmFnb3Zlcih0KSB7XG4gICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGRlc3Ryb3koKSB7XG4gICAgICAgICAgdmFyIF9jbGFzc1ByaXZhdGVGaWVsZEdldDEyO1xuICAgICAgICAgICgoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTIgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5nZXRBY3RpdmUoKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDEyLnBhcmVudCkgPT09IHRoaXMgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSkuc2V0QWN0aXZlRWRpdG9yKG51bGwpO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2NlKS52YWx1ZXMoKSkge1xuICAgICAgICAgICAgdmFyIF9jbGFzc1ByaXZhdGVGaWVsZEdldDEzO1xuICAgICAgICAgICAgKF9jbGFzc1ByaXZhdGVGaWVsZEdldDEzID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9yZSkpID09PSBudWxsIHx8IF9jbGFzc1ByaXZhdGVGaWVsZEdldDEzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2xhc3NQcml2YXRlRmllbGRHZXQxMy5yZW1vdmVQb2ludGVySW5UZXh0TGF5ZXIodC5jb250ZW50RGl2KTtcbiAgICAgICAgICAgIHQuc2V0UGFyZW50KG51bGwpO1xuICAgICAgICAgICAgdC5pc0F0dGFjaGVkVG9ET00gPSAhMTtcbiAgICAgICAgICAgIHQuZGl2LnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmRpdiA9IG51bGw7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9jZSkuY2xlYXIoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5yZW1vdmVMYXllcih0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIodCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICB2aWV3cG9ydDogZVxuICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgIHRoaXMudmlld3BvcnQgPSBlO1xuICAgICAgICAgICgwLCBsLnNldExheWVyRGltZW5zaW9ucykodGhpcy5kaXYsIGUpO1xuICAgICAgICAgICgwLCBzLmJpbmRFdmVudHMpKHRoaXMsIHRoaXMuZGl2LCBbXCJkcmFnb3ZlclwiLCBcImRyb3BcIl0pO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5nZXRFZGl0b3JzKHRoaXMucGFnZUluZGV4KSkgdGhpcy5hZGQodCk7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgdmlld3BvcnQ6IGVcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5jb21taXRPclJlbW92ZSgpO1xuICAgICAgICAgIHRoaXMudmlld3BvcnQgPSBlO1xuICAgICAgICAgICgwLCBsLnNldExheWVyRGltZW5zaW9ucykodGhpcy5kaXYsIHtcbiAgICAgICAgICAgIHJvdGF0aW9uOiBlLnJvdGF0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHBhZ2VEaW1lbnNpb25zKCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHBhZ2VXaWR0aDogdCxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IGVcbiAgICAgICAgICB9ID0gdGhpcy52aWV3cG9ydC5yYXdEaW1zO1xuICAgICAgICAgIHJldHVybiBbdCwgZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9tZTIodCkge1xuICAgICAgICBpZiAodC5wYXJlbnQgIT09IHRoaXMpIHtcbiAgICAgICAgICB2YXIgX3QkcGFyZW50O1xuICAgICAgICAgIGlmICh0LmFubm90YXRpb25FbGVtZW50SWQpIHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcGUpLmFkZERlbGV0ZWRBbm5vdGF0aW9uRWxlbWVudCh0LmFubm90YXRpb25FbGVtZW50SWQpO1xuICAgICAgICAgICAgci5Bbm5vdGF0aW9uRWRpdG9yLmRlbGV0ZUFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgdC5hbm5vdGF0aW9uRWxlbWVudElkID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hdHRhY2godCk7XG4gICAgICAgICAgKF90JHBhcmVudCA9IHQucGFyZW50KSA9PT0gbnVsbCB8fCBfdCRwYXJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90JHBhcmVudC5kZXRhY2godCk7XG4gICAgICAgICAgdC5zZXRQYXJlbnQodGhpcyk7XG4gICAgICAgICAgaWYgKHQuZGl2ICYmIHQuaXNBdHRhY2hlZFRvRE9NKSB7XG4gICAgICAgICAgICB0LmRpdi5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmFwcGVuZCh0LmRpdik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfYmUyKHQpIHtcbiAgICAgICAgc3dpdGNoIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BlKS5nZXRNb2RlKCkpIHtcbiAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gbmV3IGEuRnJlZVRleHRFZGl0b3IodCk7XG4gICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JUeXBlLklOSzpcbiAgICAgICAgICAgIHJldHVybiBuZXcgby5JbmtFZGl0b3IodCk7XG4gICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JUeXBlLlNUQU1QOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBjLlN0YW1wRWRpdG9yKHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2dlMih0KSB7XG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLmdldE5leHRJZCgpLFxuICAgICAgICAgIG4gPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9iZSwgX2JlMikuY2FsbCh0aGlzLCB7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMsXG4gICAgICAgICAgICBpZDogZSxcbiAgICAgICAgICAgIHg6IHQub2Zmc2V0WCxcbiAgICAgICAgICAgIHk6IHQub2Zmc2V0WSxcbiAgICAgICAgICAgIHVpTWFuYWdlcjogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wZSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgbiAmJiB0aGlzLmFkZChuKTtcbiAgICAgICAgcmV0dXJuIG47XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfZmUyKCkge1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2RlLCAhMCk7XG4gICAgICAgIGZvciAoY29uc3QgdCBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2NlKS52YWx1ZXMoKSkgdC5pc0VtcHR5KCkgJiYgdC5yZW1vdmUoKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9kZSwgITEpO1xuICAgICAgfVxuICAgICAgX2RlZmluZVByb3BlcnR5KEFubm90YXRpb25FZGl0b3JMYXllciwgXCJfaW5pdGlhbGl6ZWRcIiwgITEpO1xuICAgICAgZS5Bbm5vdGF0aW9uRWRpdG9yTGF5ZXIgPSBBbm5vdGF0aW9uRWRpdG9yTGF5ZXI7XG4gICAgfSwgKHQsIGUsIG4pID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICB2YXIgX2NsYXNzMzA7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuRnJlZVRleHRFZGl0b3IgPSB2b2lkIDA7XG4gICAgICBuKDg5KTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTY0KSxcbiAgICAgICAgcyA9IG4oMTYzKSxcbiAgICAgICAgYSA9IG4oMTk3KTtcbiAgICAgIHZhciBfdmUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfeWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfQWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZTEyID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1NlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0VlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3hlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX3dlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0NlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1RlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1BlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1JlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2tlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0ZlID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0llID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX01lID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBGcmVlVGV4dEVkaXRvciBleHRlbmRzIHMuQW5ub3RhdGlvbkVkaXRvciB7XG4gICAgICAgIHN0YXRpYyBnZXQgX2tleWJvYXJkTWFuYWdlcigpIHtcbiAgICAgICAgICBjb25zdCB0ID0gRnJlZVRleHRFZGl0b3IucHJvdG90eXBlLFxuICAgICAgICAgICAgYXJyb3dDaGVja2VyID0gdCA9PiB0LmlzRW1wdHkoKSxcbiAgICAgICAgICAgIGUgPSByLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXIuVFJBTlNMQVRFX1NNQUxMLFxuICAgICAgICAgICAgbiA9IHIuQW5ub3RhdGlvbkVkaXRvclVJTWFuYWdlci5UUkFOU0xBVEVfQklHO1xuICAgICAgICAgIHJldHVybiAoMCwgaS5zaGFkb3cpKHRoaXMsIFwiX2tleWJvYXJkTWFuYWdlclwiLCBuZXcgci5LZXlib2FyZE1hbmFnZXIoW1tbXCJjdHJsK3NcIiwgXCJtYWMrbWV0YStzXCIsIFwiY3RybCtwXCIsIFwibWFjK21ldGErcFwiXSwgdC5jb21taXRPclJlbW92ZSwge1xuICAgICAgICAgICAgYnViYmxlczogITBcbiAgICAgICAgICB9XSwgW1tcImN0cmwrRW50ZXJcIiwgXCJtYWMrbWV0YStFbnRlclwiLCBcIkVzY2FwZVwiLCBcIm1hYytFc2NhcGVcIl0sIHQuY29tbWl0T3JSZW1vdmVdLCBbW1wiQXJyb3dMZWZ0XCIsIFwibWFjK0Fycm93TGVmdFwiXSwgdC5fdHJhbnNsYXRlRW1wdHksIHtcbiAgICAgICAgICAgIGFyZ3M6IFstZSwgMF0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcImN0cmwrQXJyb3dMZWZ0XCIsIFwibWFjK3NoaWZ0K0Fycm93TGVmdFwiXSwgdC5fdHJhbnNsYXRlRW1wdHksIHtcbiAgICAgICAgICAgIGFyZ3M6IFstbiwgMF0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcIkFycm93UmlnaHRcIiwgXCJtYWMrQXJyb3dSaWdodFwiXSwgdC5fdHJhbnNsYXRlRW1wdHksIHtcbiAgICAgICAgICAgIGFyZ3M6IFtlLCAwXSxcbiAgICAgICAgICAgIGNoZWNrZXI6IGFycm93Q2hlY2tlclxuICAgICAgICAgIH1dLCBbW1wiY3RybCtBcnJvd1JpZ2h0XCIsIFwibWFjK3NoaWZ0K0Fycm93UmlnaHRcIl0sIHQuX3RyYW5zbGF0ZUVtcHR5LCB7XG4gICAgICAgICAgICBhcmdzOiBbbiwgMF0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcIkFycm93VXBcIiwgXCJtYWMrQXJyb3dVcFwiXSwgdC5fdHJhbnNsYXRlRW1wdHksIHtcbiAgICAgICAgICAgIGFyZ3M6IFswLCAtZV0sXG4gICAgICAgICAgICBjaGVja2VyOiBhcnJvd0NoZWNrZXJcbiAgICAgICAgICB9XSwgW1tcImN0cmwrQXJyb3dVcFwiLCBcIm1hYytzaGlmdCtBcnJvd1VwXCJdLCB0Ll90cmFuc2xhdGVFbXB0eSwge1xuICAgICAgICAgICAgYXJnczogWzAsIC1uXSxcbiAgICAgICAgICAgIGNoZWNrZXI6IGFycm93Q2hlY2tlclxuICAgICAgICAgIH1dLCBbW1wiQXJyb3dEb3duXCIsIFwibWFjK0Fycm93RG93blwiXSwgdC5fdHJhbnNsYXRlRW1wdHksIHtcbiAgICAgICAgICAgIGFyZ3M6IFswLCBlXSxcbiAgICAgICAgICAgIGNoZWNrZXI6IGFycm93Q2hlY2tlclxuICAgICAgICAgIH1dLCBbW1wiY3RybCtBcnJvd0Rvd25cIiwgXCJtYWMrc2hpZnQrQXJyb3dEb3duXCJdLCB0Ll90cmFuc2xhdGVFbXB0eSwge1xuICAgICAgICAgICAgYXJnczogWzAsIG5dLFxuICAgICAgICAgICAgY2hlY2tlcjogYXJyb3dDaGVja2VyXG4gICAgICAgICAgfV1dKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RydWN0b3IoX3QxNCkge1xuICAgICAgICAgIHN1cGVyKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3QxNCksIHt9LCB7XG4gICAgICAgICAgICBuYW1lOiBcImZyZWVUZXh0RWRpdG9yXCJcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9NZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9JZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9GZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9rZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9SZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9QZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9UZSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3ZlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmVkaXRvckRpdkJsdXIuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF95ZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5lZGl0b3JEaXZGb2N1cy5iaW5kKHRoaXMpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0FlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmVkaXRvckRpdklucHV0LmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZTEyLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmVkaXRvckRpdktleWRvd24uYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9TZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0VlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3hlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiLmNvbmNhdCh0aGlzLmlkLCBcIi1lZGl0b3JcIilcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfd2UsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9DZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfU2UsIF90MTQuY29sb3IgfHwgRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvciB8fCBzLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3IpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfd2UsIF90MTQuZm9udFNpemUgfHwgRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRGb250U2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGluaXRpYWxpemUodCkge1xuICAgICAgICAgIHRoaXMuX2wxMG5Qcm9taXNlID0gbmV3IE1hcChbXCJmcmVlX3RleHQyX2RlZmF1bHRfY29udGVudFwiLCBcImVkaXRvcl9mcmVlX3RleHQyX2FyaWFfbGFiZWxcIl0ubWFwKGUgPT4gW2UsIHQuZ2V0KGUpXSkpO1xuICAgICAgICAgIGNvbnN0IGUgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5faW50ZXJuYWxQYWRkaW5nID0gcGFyc2VGbG9hdChlLmdldFByb3BlcnR5VmFsdWUoXCItLWZyZWV0ZXh0LXBhZGRpbmdcIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyB1cGRhdGVEZWZhdWx0UGFyYW1zKHQsIGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFOlxuICAgICAgICAgICAgICBGcmVlVGV4dEVkaXRvci5fZGVmYXVsdEZvbnRTaXplID0gZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfQ09MT1I6XG4gICAgICAgICAgICAgIEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Q29sb3IgPSBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVQYXJhbXModCwgZSkge1xuICAgICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkU6XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1RlLCBfVGUyKS5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUjpcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfUGUsIF9QZTIpLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BlcnRpZXNUb1VwZGF0ZSgpIHtcbiAgICAgICAgICByZXR1cm4gW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLkZSRUVURVhUX1NJWkUsIEZyZWVUZXh0RWRpdG9yLl9kZWZhdWx0Rm9udFNpemVdLCBbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUiwgRnJlZVRleHRFZGl0b3IuX2RlZmF1bHRDb2xvciB8fCBzLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdXTtcbiAgICAgICAgfVxuICAgICAgICBnZXQgcHJvcGVydGllc1RvVXBkYXRlKCkge1xuICAgICAgICAgIHJldHVybiBbW2kuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuRlJFRVRFWFRfU0laRSwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF93ZSldLCBbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9TZSldXTtcbiAgICAgICAgfVxuICAgICAgICBfdHJhbnNsYXRlRW1wdHkodCwgZSkge1xuICAgICAgICAgIHRoaXMuX3VpTWFuYWdlci50cmFuc2xhdGVTZWxlY3RlZEVkaXRvcnModCwgZSwgITApO1xuICAgICAgICB9XG4gICAgICAgIGdldEluaXRpYWxUcmFuc2xhdGlvbigpIHtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5wYXJlbnRTY2FsZTtcbiAgICAgICAgICByZXR1cm4gWy1GcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nICogdCwgLShGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nICsgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF93ZSkpICogdF07XG4gICAgICAgIH1cbiAgICAgICAgcmVidWlsZCgpIHtcbiAgICAgICAgICBzdXBlci5yZWJ1aWxkKCk7XG4gICAgICAgICAgbnVsbCAhPT0gdGhpcy5kaXYgJiYgKHRoaXMuaXNBdHRhY2hlZFRvRE9NIHx8IHRoaXMucGFyZW50LmFkZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZW5hYmxlRWRpdE1vZGUoKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5FZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRFZGl0aW5nU3RhdGUoITEpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQudXBkYXRlVG9vbGJhcihpLkFubm90YXRpb25FZGl0b3JUeXBlLkZSRUVURVhUKTtcbiAgICAgICAgICAgIHN1cGVyLmVuYWJsZUVkaXRNb2RlKCk7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlEaXYuY2xhc3NMaXN0LnJlbW92ZShcImVuYWJsZWRcIik7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGUgPSAhMDtcbiAgICAgICAgICAgIHRoaXMuZGl2LmRyYWdnYWJsZSA9ICExO1xuICAgICAgICAgICAgdGhpcy5kaXYucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JEaXYuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9lMTIpKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3llKSk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3ZlKSk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9BZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkaXNhYmxlRWRpdE1vZGUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNJbkVkaXRNb2RlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnNldEVkaXRpbmdTdGF0ZSghMCk7XG4gICAgICAgICAgICBzdXBlci5kaXNhYmxlRWRpdE1vZGUoKTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheURpdi5jbGFzc0xpc3QuYWRkKFwiZW5hYmxlZFwiKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LmNvbnRlbnRFZGl0YWJsZSA9ICExO1xuICAgICAgICAgICAgdGhpcy5kaXYuc2V0QXR0cmlidXRlKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeGUpKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmRyYWdnYWJsZSA9ICEwO1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JEaXYucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9lMTIpKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3llKSk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3ZlKSk7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9BZSkpO1xuICAgICAgICAgICAgdGhpcy5kaXYuZm9jdXMoe1xuICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiAhMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9ICExO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZGl2LmNsYXNzTGlzdC5hZGQoXCJmcmVlVGV4dEVkaXRpbmdcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvY3VzaW4odCkge1xuICAgICAgICAgIHN1cGVyLmZvY3VzaW4odCk7XG4gICAgICAgICAgdC50YXJnZXQgIT09IHRoaXMuZWRpdG9yRGl2ICYmIHRoaXMuZWRpdG9yRGl2LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgb25jZUFkZGVkKCkge1xuICAgICAgICAgIGlmICh0aGlzLndpZHRoKSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9NZSwgX01lMikuY2FsbCh0aGlzKTtlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRWRpdE1vZGUoKTtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlzRW1wdHkoKSB7XG4gICAgICAgICAgcmV0dXJuICF0aGlzLmVkaXRvckRpdiB8fCBcIlwiID09PSB0aGlzLmVkaXRvckRpdi5pbm5lclRleHQudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZSgpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9ICExO1xuICAgICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2V0RWRpdGluZ1N0YXRlKCEwKTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QuYWRkKFwiZnJlZVRleHRFZGl0aW5nXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdXBlci5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb21taXQoKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5FZGl0TW9kZSgpKSByZXR1cm47XG4gICAgICAgICAgc3VwZXIuY29tbWl0KCk7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlRWRpdE1vZGUoKTtcbiAgICAgICAgICBjb25zdCB0ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9FZSksXG4gICAgICAgICAgICBlID0gX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9FZSwgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfUmUsIF9SZTIpLmNhbGwodGhpcykudHJpbUVuZCgpKTtcbiAgICAgICAgICBpZiAodCA9PT0gZSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHNldFRleHQgPSB0ID0+IHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfRWUsIHQpO1xuICAgICAgICAgICAgaWYgKHQpIHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfRmUsIF9GZTIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgIHRoaXMucmVidWlsZCgpO1xuICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9rZSwgX2tlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5hZGRDb21tYW5kcyh7XG4gICAgICAgICAgICBjbWQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgc2V0VGV4dChlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bmRvOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldFRleHQodCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbXVzdEV4ZWM6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfa2UsIF9rZTIpLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgc2hvdWxkR2V0S2V5Ym9hcmRFdmVudHMoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaXNJbkVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZW50ZXJJbkVkaXRNb2RlKCkge1xuICAgICAgICAgIHRoaXMuZW5hYmxlRWRpdE1vZGUoKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGRibGNsaWNrKHQpIHtcbiAgICAgICAgICB0aGlzLmVudGVySW5FZGl0TW9kZSgpO1xuICAgICAgICB9XG4gICAgICAgIGtleWRvd24odCkge1xuICAgICAgICAgIHQudGFyZ2V0ID09PSB0aGlzLmRpdiAmJiBcIkVudGVyXCIgPT09IHQua2V5ICYmIHRoaXMuZW50ZXJJbkVkaXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWRpdG9yRGl2S2V5ZG93bih0KSB7XG4gICAgICAgICAgRnJlZVRleHRFZGl0b3IuX2tleWJvYXJkTWFuYWdlci5leGVjKHRoaXMsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGVkaXRvckRpdkZvY3VzKHQpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZyA9ICEwO1xuICAgICAgICB9XG4gICAgICAgIGVkaXRvckRpdkJsdXIodCkge1xuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nID0gITE7XG4gICAgICAgIH1cbiAgICAgICAgZWRpdG9yRGl2SW5wdXQodCkge1xuICAgICAgICAgIHRoaXMucGFyZW50LmRpdi5jbGFzc0xpc3QudG9nZ2xlKFwiZnJlZVRleHRFZGl0aW5nXCIsIHRoaXMuaXNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgICAgICBkaXNhYmxlRWRpdGluZygpIHtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdi5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsIFwiY29tbWVudFwiKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdi5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLW11bHRpbGluZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbmFibGVFZGl0aW5nKCkge1xuICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJ0ZXh0Ym94XCIpO1xuICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZShcImFyaWEtbXVsdGlsaW5lXCIsICEwKTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGl2KSByZXR1cm4gdGhpcy5kaXY7XG4gICAgICAgICAgbGV0IHQsIGU7XG4gICAgICAgICAgaWYgKHRoaXMud2lkdGgpIHtcbiAgICAgICAgICAgIHQgPSB0aGlzLng7XG4gICAgICAgICAgICBlID0gdGhpcy55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdXBlci5yZW5kZXIoKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgdGhpcy5lZGl0b3JEaXYuY2xhc3NOYW1lID0gXCJpbnRlcm5hbFwiO1xuICAgICAgICAgIHRoaXMuZWRpdG9yRGl2LnNldEF0dHJpYnV0ZShcImlkXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeGUpKTtcbiAgICAgICAgICB0aGlzLmVuYWJsZUVkaXRpbmcoKTtcbiAgICAgICAgICBGcmVlVGV4dEVkaXRvci5fbDEwblByb21pc2UuZ2V0KFwiZWRpdG9yX2ZyZWVfdGV4dDJfYXJpYV9sYWJlbFwiKS50aGVuKHQgPT4ge1xuICAgICAgICAgICAgdmFyIF90aGlzJGVkaXRvckRpdjtcbiAgICAgICAgICAgIHJldHVybiAoX3RoaXMkZWRpdG9yRGl2ID0gdGhpcy5lZGl0b3JEaXYpID09PSBudWxsIHx8IF90aGlzJGVkaXRvckRpdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZWRpdG9yRGl2LnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgRnJlZVRleHRFZGl0b3IuX2wxMG5Qcm9taXNlLmdldChcImZyZWVfdGV4dDJfZGVmYXVsdF9jb250ZW50XCIpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkZWRpdG9yRGl2MjtcbiAgICAgICAgICAgIHJldHVybiAoX3RoaXMkZWRpdG9yRGl2MiA9IHRoaXMuZWRpdG9yRGl2KSA9PT0gbnVsbCB8fCBfdGhpcyRlZGl0b3JEaXYyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRlZGl0b3JEaXYyLnNldEF0dHJpYnV0ZShcImRlZmF1bHQtY29udGVudFwiLCB0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGUgPSAhMDtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBzdHlsZTogblxuICAgICAgICAgIH0gPSB0aGlzLmVkaXRvckRpdjtcbiAgICAgICAgICBuLmZvbnRTaXplID0gXCJjYWxjKFwiLmNvbmNhdChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3dlKSwgXCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpXCIpO1xuICAgICAgICAgIG4uY29sb3IgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1NlKTtcbiAgICAgICAgICB0aGlzLmRpdi5hcHBlbmQodGhpcy5lZGl0b3JEaXYpO1xuICAgICAgICAgIHRoaXMub3ZlcmxheURpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgdGhpcy5vdmVybGF5RGl2LmNsYXNzTGlzdC5hZGQoXCJvdmVybGF5XCIsIFwiZW5hYmxlZFwiKTtcbiAgICAgICAgICB0aGlzLmRpdi5hcHBlbmQodGhpcy5vdmVybGF5RGl2KTtcbiAgICAgICAgICAoMCwgci5iaW5kRXZlbnRzKSh0aGlzLCB0aGlzLmRpdiwgW1wiZGJsY2xpY2tcIiwgXCJrZXlkb3duXCJdKTtcbiAgICAgICAgICBpZiAodGhpcy53aWR0aCkge1xuICAgICAgICAgICAgY29uc3QgW24sIGldID0gdGhpcy5wYXJlbnREaW1lbnNpb25zO1xuICAgICAgICAgICAgaWYgKHRoaXMuYW5ub3RhdGlvbkVsZW1lbnRJZCkge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJcbiAgICAgICAgICAgICAgfSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfQ2UpO1xuICAgICAgICAgICAgICBsZXQgW3MsIGFdID0gdGhpcy5nZXRJbml0aWFsVHJhbnNsYXRpb24oKTtcbiAgICAgICAgICAgICAgW3MsIGFdID0gdGhpcy5wYWdlVHJhbnNsYXRpb25Ub1NjcmVlbihzLCBhKTtcbiAgICAgICAgICAgICAgY29uc3QgW28sIGxdID0gdGhpcy5wYWdlRGltZW5zaW9ucyxcbiAgICAgICAgICAgICAgICBbYywgaF0gPSB0aGlzLnBhZ2VUcmFuc2xhdGlvbjtcbiAgICAgICAgICAgICAgbGV0IGQsIHU7XG4gICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5yb3RhdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgIGQgPSB0ICsgKHJbMF0gLSBjKSAvIG87XG4gICAgICAgICAgICAgICAgICB1ID0gZSArIHRoaXMuaGVpZ2h0IC0gKHJbMV0gLSBoKSAvIGw7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgICAgICAgZCA9IHQgKyAoclswXSAtIGMpIC8gbztcbiAgICAgICAgICAgICAgICAgIHUgPSBlIC0gKHJbMV0gLSBoKSAvIGw7XG4gICAgICAgICAgICAgICAgICBbcywgYV0gPSBbYSwgLXNdO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxODA6XG4gICAgICAgICAgICAgICAgICBkID0gdCAtIHRoaXMud2lkdGggKyAoclswXSAtIGMpIC8gbztcbiAgICAgICAgICAgICAgICAgIHUgPSBlIC0gKHJbMV0gLSBoKSAvIGw7XG4gICAgICAgICAgICAgICAgICBbcywgYV0gPSBbLXMsIC1hXTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjcwOlxuICAgICAgICAgICAgICAgICAgZCA9IHQgKyAoclswXSAtIGMgLSB0aGlzLmhlaWdodCAqIGwpIC8gbztcbiAgICAgICAgICAgICAgICAgIHUgPSBlICsgKHJbMV0gLSBoIC0gdGhpcy53aWR0aCAqIG8pIC8gbDtcbiAgICAgICAgICAgICAgICAgIFtzLCBhXSA9IFstYSwgc107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5zZXRBdChkICogbiwgdSAqIGksIHMsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2V0QXQodCAqIG4sIGUgKiBpLCB0aGlzLndpZHRoICogbiwgdGhpcy5oZWlnaHQgKiBpKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0ZlLCBfRmUyKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaXYuZHJhZ2dhYmxlID0gITA7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGUgPSAhMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXYuZHJhZ2dhYmxlID0gITE7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5jb250ZW50RWRpdGFibGUgPSAhMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGl2O1xuICAgICAgICB9XG4gICAgICAgIGdldCBjb250ZW50RGl2KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRvckRpdjtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZGVzZXJpYWxpemUodCwgZSwgbikge1xuICAgICAgICAgIGxldCByID0gbnVsbDtcbiAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIGEuRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEFwcGVhcmFuY2VEYXRhOiB7XG4gICAgICAgICAgICAgICAgICBmb250U2l6ZTogZSxcbiAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVjdDogcyxcbiAgICAgICAgICAgICAgICByb3RhdGlvbjogYSxcbiAgICAgICAgICAgICAgICBpZDogb1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0ZXh0Q29udGVudDogbCxcbiAgICAgICAgICAgICAgdGV4dFBvc2l0aW9uOiBjLFxuICAgICAgICAgICAgICBwYXJlbnQ6IHtcbiAgICAgICAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICAgICAgICBwYWdlTnVtYmVyOiBoXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICAgIGlmICghbCB8fCAwID09PSBsLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByID0gdCA9IHtcbiAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGU6IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQsXG4gICAgICAgICAgICAgIGNvbG9yOiBBcnJheS5mcm9tKG4pLFxuICAgICAgICAgICAgICBmb250U2l6ZTogZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGwuam9pbihcIlxcblwiKSxcbiAgICAgICAgICAgICAgcG9zaXRpb246IGMsXG4gICAgICAgICAgICAgIHBhZ2VJbmRleDogaCAtIDEsXG4gICAgICAgICAgICAgIHJlY3Q6IHMsXG4gICAgICAgICAgICAgIHJvdGF0aW9uOiBhLFxuICAgICAgICAgICAgICBpZDogbyxcbiAgICAgICAgICAgICAgZGVsZXRlZDogITFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHMgPSBzdXBlci5kZXNlcmlhbGl6ZSh0LCBlLCBuKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQocywgX3dlLCB0LmZvbnRTaXplKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQocywgX1NlLCBpLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQocywgX0VlLCB0LnZhbHVlKTtcbiAgICAgICAgICBzLmFubm90YXRpb25FbGVtZW50SWQgPSB0LmlkIHx8IG51bGw7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHMsIF9DZSwgcik7XG4gICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgc2VyaWFsaXplKCkge1xuICAgICAgICAgIGxldCB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gJiYgYXJndW1lbnRzWzBdO1xuICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkoKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgaWYgKHRoaXMuZGVsZXRlZCkgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhZ2VJbmRleDogdGhpcy5wYWdlSW5kZXgsXG4gICAgICAgICAgICBpZDogdGhpcy5hbm5vdGF0aW9uRWxlbWVudElkLFxuICAgICAgICAgICAgZGVsZXRlZDogITBcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IGUgPSBGcmVlVGV4dEVkaXRvci5faW50ZXJuYWxQYWRkaW5nICogdGhpcy5wYXJlbnRTY2FsZSxcbiAgICAgICAgICAgIG4gPSB0aGlzLmdldFJlY3QoZSwgZSksXG4gICAgICAgICAgICByID0gcy5Bbm5vdGF0aW9uRWRpdG9yLl9jb2xvck1hbmFnZXIuY29udmVydCh0aGlzLmlzQXR0YWNoZWRUb0RPTSA/IGdldENvbXB1dGVkU3R5bGUodGhpcy5lZGl0b3JEaXYpLmNvbG9yIDogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9TZSkpLFxuICAgICAgICAgICAgYSA9IHtcbiAgICAgICAgICAgICAgYW5ub3RhdGlvblR5cGU6IGkuQW5ub3RhdGlvbkVkaXRvclR5cGUuRlJFRVRFWFQsXG4gICAgICAgICAgICAgIGNvbG9yOiByLFxuICAgICAgICAgICAgICBmb250U2l6ZTogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF93ZSksXG4gICAgICAgICAgICAgIHZhbHVlOiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0VlKSxcbiAgICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCxcbiAgICAgICAgICAgICAgcmVjdDogbixcbiAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMucm90YXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKHQpIHJldHVybiBhO1xuICAgICAgICAgIGlmICh0aGlzLmFubm90YXRpb25FbGVtZW50SWQgJiYgIV9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0llLCBfSWUyKS5jYWxsKHRoaXMsIGEpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBhLmlkID0gdGhpcy5hbm5vdGF0aW9uRWxlbWVudElkO1xuICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfY2xhc3MzMCA9IEZyZWVUZXh0RWRpdG9yO1xuICAgICAgZnVuY3Rpb24gX1RlMih0KSB7XG4gICAgICAgIGNvbnN0IHNldEZvbnRzaXplID0gdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvckRpdi5zdHlsZS5mb250U2l6ZSA9IFwiY2FsYyhcIi5jb25jYXQodCwgXCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpXCIpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUoMCwgLSh0IC0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF93ZSkpICogdGhpcy5wYXJlbnRTY2FsZSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3dlLCB0KTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2tlLCBfa2UyKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfd2UpO1xuICAgICAgICB0aGlzLmFkZENvbW1hbmRzKHtcbiAgICAgICAgICBjbWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHNldEZvbnRzaXplKHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgc2V0Rm9udHNpemUoZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtdXN0RXhlYzogITAsXG4gICAgICAgICAgdHlwZTogaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9TSVpFLFxuICAgICAgICAgIG92ZXJ3cml0ZUlmU2FtZVR5cGU6ICEwLFxuICAgICAgICAgIGtlZXBVbmRvOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9QZTIodCkge1xuICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9TZSk7XG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZHMoe1xuICAgICAgICAgIGNtZDogKCkgPT4ge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9TZSwgdGhpcy5lZGl0b3JEaXYuc3R5bGUuY29sb3IgPSB0KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHVuZG86ICgpID0+IHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfU2UsIHRoaXMuZWRpdG9yRGl2LnN0eWxlLmNvbG9yID0gZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtdXN0RXhlYzogITAsXG4gICAgICAgICAgdHlwZTogaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5GUkVFVEVYVF9DT0xPUixcbiAgICAgICAgICBvdmVyd3JpdGVJZlNhbWVUeXBlOiAhMCxcbiAgICAgICAgICBrZWVwVW5kbzogITBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfUmUyKCkge1xuICAgICAgICBjb25zdCB0ID0gdGhpcy5lZGl0b3JEaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkaXZcIik7XG4gICAgICAgIGlmICgwID09PSB0Lmxlbmd0aCkgcmV0dXJuIHRoaXMuZWRpdG9yRGl2LmlubmVyVGV4dDtcbiAgICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG4gb2YgdCkgZS5wdXNoKG4uaW5uZXJUZXh0LnJlcGxhY2UoL1xcclxcbj98XFxuLywgXCJcIikpO1xuICAgICAgICByZXR1cm4gZS5qb2luKFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2tlMigpIHtcbiAgICAgICAgY29uc3QgW3QsIGVdID0gdGhpcy5wYXJlbnREaW1lbnNpb25zO1xuICAgICAgICBsZXQgbjtcbiAgICAgICAgaWYgKHRoaXMuaXNBdHRhY2hlZFRvRE9NKSBuID0gdGhpcy5kaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBjdXJyZW50TGF5ZXI6IHQsXG4gICAgICAgICAgICAgIGRpdjogZVxuICAgICAgICAgICAgfSA9IHRoaXMsXG4gICAgICAgICAgICBpID0gZS5zdHlsZS5kaXNwbGF5O1xuICAgICAgICAgIGUuc3R5bGUuZGlzcGxheSA9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgdC5kaXYuYXBwZW5kKHRoaXMuZGl2KTtcbiAgICAgICAgICBuID0gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICBlLnJlbW92ZSgpO1xuICAgICAgICAgIGUuc3R5bGUuZGlzcGxheSA9IGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm90YXRpb24gJSAxODAgPT0gdGhpcy5wYXJlbnRSb3RhdGlvbiAlIDE4MCkge1xuICAgICAgICAgIHRoaXMud2lkdGggPSBuLndpZHRoIC8gdDtcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IG4uaGVpZ2h0IC8gZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndpZHRoID0gbi5oZWlnaHQgLyB0O1xuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gbi53aWR0aCAvIGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maXhBbmRTZXRQb3NpdGlvbigpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0ZlMigpIHtcbiAgICAgICAgdGhpcy5lZGl0b3JEaXYucmVwbGFjZUNoaWxkcmVuKCk7XG4gICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0VlKSkgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRWUpLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgZS5hcHBlbmQodCA/IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckRpdi5hcHBlbmQoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9JZTIodCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdmFsdWU6IGUsXG4gICAgICAgICAgZm9udFNpemU6IG4sXG4gICAgICAgICAgY29sb3I6IGksXG4gICAgICAgICAgcmVjdDogcixcbiAgICAgICAgICBwYWdlSW5kZXg6IHNcbiAgICAgICAgfSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfQ2UpO1xuICAgICAgICByZXR1cm4gdC52YWx1ZSAhPT0gZSB8fCB0LmZvbnRTaXplICE9PSBuIHx8IHQucmVjdC5zb21lKCh0LCBlKSA9PiBNYXRoLmFicyh0IC0gcltlXSkgPj0gMSkgfHwgdC5jb2xvci5zb21lKCh0LCBlKSA9PiB0ICE9PSBpW2VdKSB8fCB0LnBhZ2VJbmRleCAhPT0gcztcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9NZTIoKSB7XG4gICAgICAgIGxldCB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gJiYgYXJndW1lbnRzWzBdO1xuICAgICAgICBpZiAoIXRoaXMuYW5ub3RhdGlvbkVsZW1lbnRJZCkgcmV0dXJuO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9rZSwgX2tlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKCF0ICYmICgwID09PSB0aGlzLndpZHRoIHx8IDAgPT09IHRoaXMuaGVpZ2h0KSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTWUsIF9NZTIpLmNhbGwodGhpcywgITApLCAwKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZSA9IF9jbGFzczMwLl9pbnRlcm5hbFBhZGRpbmcgKiB0aGlzLnBhcmVudFNjYWxlO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0NlKS5yZWN0ID0gdGhpcy5nZXRSZWN0KGUsIGUpO1xuICAgICAgfVxuICAgICAgX2RlZmluZVByb3BlcnR5KEZyZWVUZXh0RWRpdG9yLCBcIl9mcmVlVGV4dERlZmF1bHRDb250ZW50XCIsIFwiXCIpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KEZyZWVUZXh0RWRpdG9yLCBcIl9sMTBuUHJvbWlzZVwiLCB2b2lkIDApO1xuICAgICAgX2RlZmluZVByb3BlcnR5KEZyZWVUZXh0RWRpdG9yLCBcIl9pbnRlcm5hbFBhZGRpbmdcIiwgMCk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoRnJlZVRleHRFZGl0b3IsIFwiX2RlZmF1bHRDb2xvclwiLCBudWxsKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShGcmVlVGV4dEVkaXRvciwgXCJfZGVmYXVsdEZvbnRTaXplXCIsIDEwKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShGcmVlVGV4dEVkaXRvciwgXCJfdHlwZVwiLCBcImZyZWV0ZXh0XCIpO1xuICAgICAgZS5GcmVlVGV4dEVkaXRvciA9IEZyZWVUZXh0RWRpdG9yO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9yZTIsIF9hbiwgX29uLCBfbG4sIF9jbjtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5TdGFtcEFubm90YXRpb25FbGVtZW50ID0gZS5JbmtBbm5vdGF0aW9uRWxlbWVudCA9IGUuRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCA9IGUuQW5ub3RhdGlvbkxheWVyID0gdm9pZCAwO1xuICAgICAgbig4OSk7XG4gICAgICBuKDEyNSk7XG4gICAgICBuKDEzNSk7XG4gICAgICBuKDEzNyk7XG4gICAgICBuKDE0MCk7XG4gICAgICBuKDE0Mik7XG4gICAgICBuKDE0NCk7XG4gICAgICBuKDE0Nik7XG4gICAgICB2YXIgaSA9IG4oMSksXG4gICAgICAgIHIgPSBuKDE2NyksXG4gICAgICAgIHMgPSBuKDE2MiksXG4gICAgICAgIGEgPSBuKDE5OCksXG4gICAgICAgIG8gPSBuKDE5OSksXG4gICAgICAgIGwgPSBuKDIwMCk7XG4gICAgICBjb25zdCBjID0gMWUzLFxuICAgICAgICBoID0gbmV3IFdlYWtTZXQoKTtcbiAgICAgIGZ1bmN0aW9uIGdldFJlY3REaW1zKHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3aWR0aDogdFsyXSAtIHRbMF0sXG4gICAgICAgICAgaGVpZ2h0OiB0WzNdIC0gdFsxXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2xhc3MgQW5ub3RhdGlvbkVsZW1lbnRGYWN0b3J5IHtcbiAgICAgICAgc3RhdGljIGNyZWF0ZSh0KSB7XG4gICAgICAgICAgc3dpdGNoICh0LmRhdGEuYW5ub3RhdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5MSU5LOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5URVhUOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5XSURHRVQ6XG4gICAgICAgICAgICAgIHN3aXRjaCAodC5kYXRhLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJUeFwiOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkJ0blwiOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHQuZGF0YS5yYWRpb0J1dHRvbiA/IG5ldyBSYWRpb0J1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KHQpIDogdC5kYXRhLmNoZWNrQm94ID8gbmV3IENoZWNrYm94V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCkgOiBuZXcgUHVzaEJ1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDaFwiOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiU2lnXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvblR5cGUuUE9QVVA6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5GUkVFVEVYVDpcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGcmVlVGV4dEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25UeXBlLkxJTkU6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgTGluZUFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25UeXBlLlNRVUFSRTpcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5DSVJDTEU6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgQ2lyY2xlQW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvblR5cGUuUE9MWUxJTkU6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5DQVJFVDpcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDYXJldEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25UeXBlLklOSzpcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5QT0xZR09OOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uVHlwZS5ISUdITElHSFQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvblR5cGUuVU5ERVJMSU5FOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuZGVybGluZUFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25UeXBlLlNRVUlHR0xZOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvblR5cGUuU1RSSUtFT1VUOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb25FbGVtZW50KHQpO1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25UeXBlLlNUQU1QOlxuICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0YW1wQW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvblR5cGUuRklMRUFUVEFDSE1FTlQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCh0KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgQW5ub3RhdGlvbkVsZW1lbnQodCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgX0RlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICBjbGFzcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfRGUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogZSA9ICExLFxuICAgICAgICAgICAgaWdub3JlQm9yZGVyOiBuID0gITEsXG4gICAgICAgICAgICBjcmVhdGVRdWFkcmlsYXRlcmFsczogaSA9ICExXG4gICAgICAgICAgfSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgICAgICAgdGhpcy5pc1JlbmRlcmFibGUgPSBlO1xuICAgICAgICAgIHRoaXMuZGF0YSA9IHQuZGF0YTtcbiAgICAgICAgICB0aGlzLmxheWVyID0gdC5sYXllcjtcbiAgICAgICAgICB0aGlzLmxpbmtTZXJ2aWNlID0gdC5saW5rU2VydmljZTtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkTWFuYWdlciA9IHQuZG93bmxvYWRNYW5hZ2VyO1xuICAgICAgICAgIHRoaXMuaW1hZ2VSZXNvdXJjZXNQYXRoID0gdC5pbWFnZVJlc291cmNlc1BhdGg7XG4gICAgICAgICAgdGhpcy5yZW5kZXJGb3JtcyA9IHQucmVuZGVyRm9ybXM7XG4gICAgICAgICAgdGhpcy5zdmdGYWN0b3J5ID0gdC5zdmdGYWN0b3J5O1xuICAgICAgICAgIHRoaXMuYW5ub3RhdGlvblN0b3JhZ2UgPSB0LmFubm90YXRpb25TdG9yYWdlO1xuICAgICAgICAgIHRoaXMuZW5hYmxlU2NyaXB0aW5nID0gdC5lbmFibGVTY3JpcHRpbmc7XG4gICAgICAgICAgdGhpcy5oYXNKU0FjdGlvbnMgPSB0Lmhhc0pTQWN0aW9ucztcbiAgICAgICAgICB0aGlzLl9maWVsZE9iamVjdHMgPSB0LmZpZWxkT2JqZWN0cztcbiAgICAgICAgICB0aGlzLnBhcmVudCA9IHQucGFyZW50O1xuICAgICAgICAgIGUgJiYgKHRoaXMuY29udGFpbmVyID0gdGhpcy5fY3JlYXRlQ29udGFpbmVyKG4pKTtcbiAgICAgICAgICBpICYmIHRoaXMuX2NyZWF0ZVF1YWRyaWxhdGVyYWxzKCk7XG4gICAgICAgIH1cbiAgICAgICAgX2NyZWF0ZUNvbnRhaW5lcih0KSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBkYXRhOiBlLFxuICAgICAgICAgICAgICBwYXJlbnQ6IHtcbiAgICAgICAgICAgICAgICBwYWdlOiBuLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiByXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gPSB0aGlzLFxuICAgICAgICAgICAgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzZWN0aW9uXCIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwiZGF0YS1hbm5vdGF0aW9uLWlkXCIsIGUuaWQpO1xuICAgICAgICAgIHMuc3R5bGUuekluZGV4ID0gdGhpcy5wYXJlbnQuekluZGV4Kys7XG4gICAgICAgICAgdGhpcy5kYXRhLnBvcHVwUmVmICYmIHMuc2V0QXR0cmlidXRlKFwiYXJpYS1oYXNwb3B1cFwiLCBcImRpYWxvZ1wiKTtcbiAgICAgICAgICBlLm5vUm90YXRlICYmIHMuY2xhc3NMaXN0LmFkZChcIm5vcm90YXRlXCIpO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHBhZ2VXaWR0aDogYSxcbiAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IG8sXG4gICAgICAgICAgICBwYWdlWDogbCxcbiAgICAgICAgICAgIHBhZ2VZOiBjXG4gICAgICAgICAgfSA9IHIucmF3RGltcztcbiAgICAgICAgICBpZiAoIWUucmVjdCB8fCB0aGlzIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByb3RhdGlvbjogdFxuICAgICAgICAgICAgfSA9IGU7XG4gICAgICAgICAgICBlLmhhc093bkNhbnZhcyB8fCAwID09PSB0IHx8IHRoaXMuc2V0Um90YXRpb24odCwgcyk7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICB3aWR0aDogaCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBkXG4gICAgICAgICAgICB9ID0gZ2V0UmVjdERpbXMoZS5yZWN0KSxcbiAgICAgICAgICAgIHUgPSBpLlV0aWwubm9ybWFsaXplUmVjdChbZS5yZWN0WzBdLCBuLnZpZXdbM10gLSBlLnJlY3RbMV0gKyBuLnZpZXdbMV0sIGUucmVjdFsyXSwgbi52aWV3WzNdIC0gZS5yZWN0WzNdICsgbi52aWV3WzFdXSk7XG4gICAgICAgICAgaWYgKCF0ICYmIGUuYm9yZGVyU3R5bGUud2lkdGggPiAwKSB7XG4gICAgICAgICAgICBzLnN0eWxlLmJvcmRlcldpZHRoID0gXCJcIi5jb25jYXQoZS5ib3JkZXJTdHlsZS53aWR0aCwgXCJweFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBlLmJvcmRlclN0eWxlLmhvcml6b250YWxDb3JuZXJSYWRpdXMsXG4gICAgICAgICAgICAgIG4gPSBlLmJvcmRlclN0eWxlLnZlcnRpY2FsQ29ybmVyUmFkaXVzO1xuICAgICAgICAgICAgaWYgKHQgPiAwIHx8IG4gPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBcImNhbGMoXCIuY29uY2F0KHQsIFwicHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKSAvIGNhbGMoXCIpLmNvbmNhdChuLCBcInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlcIik7XG4gICAgICAgICAgICAgIHMuc3R5bGUuYm9yZGVyUmFkaXVzID0gZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyBpbnN0YW5jZW9mIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IFwiY2FsYyhcIi5jb25jYXQoaCwgXCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikpIC8gY2FsYyhcIikuY29uY2F0KGQsIFwicHggKiB2YXIoLS1zY2FsZS1mYWN0b3IpKVwiKTtcbiAgICAgICAgICAgICAgcy5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChlLmJvcmRlclN0eWxlLnN0eWxlKSB7XG4gICAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLlNPTElEOlxuICAgICAgICAgICAgICAgIHMuc3R5bGUuYm9yZGVyU3R5bGUgPSBcInNvbGlkXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uQm9yZGVyU3R5bGVUeXBlLkRBU0hFRDpcbiAgICAgICAgICAgICAgICBzLnN0eWxlLmJvcmRlclN0eWxlID0gXCJkYXNoZWRcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuQkVWRUxFRDpcbiAgICAgICAgICAgICAgICAoMCwgaS53YXJuKShcIlVuaW1wbGVtZW50ZWQgYm9yZGVyIHN0eWxlOiBiZXZlbGVkXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkJvcmRlclN0eWxlVHlwZS5JTlNFVDpcbiAgICAgICAgICAgICAgICAoMCwgaS53YXJuKShcIlVuaW1wbGVtZW50ZWQgYm9yZGVyIHN0eWxlOiBpbnNldFwiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25Cb3JkZXJTdHlsZVR5cGUuVU5ERVJMSU5FOlxuICAgICAgICAgICAgICAgIHMuc3R5bGUuYm9yZGVyQm90dG9tU3R5bGUgPSBcInNvbGlkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByID0gZS5ib3JkZXJDb2xvciB8fCBudWxsO1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9EZSwgITApO1xuICAgICAgICAgICAgICBzLnN0eWxlLmJvcmRlckNvbG9yID0gaS5VdGlsLm1ha2VIZXhDb2xvcigwIHwgclswXSwgMCB8IHJbMV0sIDAgfCByWzJdKTtcbiAgICAgICAgICAgIH0gZWxzZSBzLnN0eWxlLmJvcmRlcldpZHRoID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcy5zdHlsZS5sZWZ0ID0gMTAwICogKHVbMF0gLSBsKSAvIGEgKyBcIiVcIjtcbiAgICAgICAgICBzLnN0eWxlLnRvcCA9IDEwMCAqICh1WzFdIC0gYykgLyBvICsgXCIlXCI7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcm90YXRpb246IHBcbiAgICAgICAgICB9ID0gZTtcbiAgICAgICAgICBpZiAoZS5oYXNPd25DYW52YXMgfHwgMCA9PT0gcCkge1xuICAgICAgICAgICAgcy5zdHlsZS53aWR0aCA9IDEwMCAqIGggLyBhICsgXCIlXCI7XG4gICAgICAgICAgICBzLnN0eWxlLmhlaWdodCA9IDEwMCAqIGQgLyBvICsgXCIlXCI7XG4gICAgICAgICAgfSBlbHNlIHRoaXMuc2V0Um90YXRpb24ocCwgcyk7XG4gICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgc2V0Um90YXRpb24odCkge1xuICAgICAgICAgIGxldCBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgICBpZiAoIXRoaXMuZGF0YS5yZWN0KSByZXR1cm47XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBwYWdlV2lkdGg6IG4sXG4gICAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IGlcbiAgICAgICAgICAgIH0gPSB0aGlzLnBhcmVudC52aWV3cG9ydC5yYXdEaW1zLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB3aWR0aDogcixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBzXG4gICAgICAgICAgICB9ID0gZ2V0UmVjdERpbXModGhpcy5kYXRhLnJlY3QpO1xuICAgICAgICAgIGxldCBhLCBvO1xuICAgICAgICAgIGlmICh0ICUgMTgwID09IDApIHtcbiAgICAgICAgICAgIGEgPSAxMDAgKiByIC8gbjtcbiAgICAgICAgICAgIG8gPSAxMDAgKiBzIC8gaTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYSA9IDEwMCAqIHMgLyBuO1xuICAgICAgICAgICAgbyA9IDEwMCAqIHIgLyBpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlLnN0eWxlLndpZHRoID0gXCJcIi5jb25jYXQoYSwgXCIlXCIpO1xuICAgICAgICAgIGUuc3R5bGUuaGVpZ2h0ID0gXCJcIi5jb25jYXQobywgXCIlXCIpO1xuICAgICAgICAgIGUuc2V0QXR0cmlidXRlKFwiZGF0YS1tYWluLXJvdGF0aW9uXCIsICgzNjAgLSB0KSAlIDM2MCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IF9jb21tb25BY3Rpb25zKCkge1xuICAgICAgICAgIGNvbnN0IHNldENvbG9yID0gKHQsIGUsIG4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBuLmRldGFpbFt0XTtcbiAgICAgICAgICAgIG4udGFyZ2V0LnN0eWxlW2VdID0gYS5Db2xvckNvbnZlcnRlcnNbXCJcIi5jb25jYXQoaVswXSwgXCJfSFRNTFwiKV0oaS5zbGljZSgxKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gKDAsIGkuc2hhZG93KSh0aGlzLCBcIl9jb21tb25BY3Rpb25zXCIsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IHQgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBlID0gdC5kZXRhaWwuZGlzcGxheSAlIDIgPT0gMTtcbiAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUudmlzaWJpbGl0eSA9IGUgPyBcImhpZGRlblwiIDogXCJ2aXNpYmxlXCI7XG4gICAgICAgICAgICAgIHRoaXMuYW5ub3RhdGlvblN0b3JhZ2Uuc2V0VmFsdWUodGhpcy5kYXRhLmlkLCB7XG4gICAgICAgICAgICAgICAgaGlkZGVuOiBlLFxuICAgICAgICAgICAgICAgIHByaW50OiAwID09PSB0LmRldGFpbC5kaXNwbGF5IHx8IDMgPT09IHQuZGV0YWlsLmRpc3BsYXlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJpbnQ6IHQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCwge1xuICAgICAgICAgICAgICAgIHByaW50OiB0LmRldGFpbC5wcmludFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoaWRkZW46IHQgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS52aXNpYmlsaXR5ID0gdC5kZXRhaWwuaGlkZGVuID8gXCJoaWRkZW5cIiA6IFwidmlzaWJsZVwiO1xuICAgICAgICAgICAgICB0aGlzLmFubm90YXRpb25TdG9yYWdlLnNldFZhbHVlKHRoaXMuZGF0YS5pZCwge1xuICAgICAgICAgICAgICAgIGhpZGRlbjogdC5kZXRhaWwuaGlkZGVuXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvY3VzOiB0ID0+IHtcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0LnRhcmdldC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogITFcbiAgICAgICAgICAgICAgfSksIDApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVzZXJOYW1lOiB0ID0+IHtcbiAgICAgICAgICAgICAgdC50YXJnZXQudGl0bGUgPSB0LmRldGFpbC51c2VyTmFtZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWFkb25seTogdCA9PiB7XG4gICAgICAgICAgICAgIHQuZGV0YWlsLnJlYWRvbmx5ID8gdC50YXJnZXQuc2V0QXR0cmlidXRlKFwicmVhZG9ubHlcIiwgXCJcIikgOiB0LnRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoXCJyZWFkb25seVwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXF1aXJlZDogdCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3NldFJlcXVpcmVkKHQudGFyZ2V0LCB0LmRldGFpbC5yZXF1aXJlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYmdDb2xvcjogdCA9PiB7XG4gICAgICAgICAgICAgIHNldENvbG9yKFwiYmdDb2xvclwiLCBcImJhY2tncm91bmRDb2xvclwiLCB0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWxsQ29sb3I6IHQgPT4ge1xuICAgICAgICAgICAgICBzZXRDb2xvcihcImZpbGxDb2xvclwiLCBcImJhY2tncm91bmRDb2xvclwiLCB0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmZ0NvbG9yOiB0ID0+IHtcbiAgICAgICAgICAgICAgc2V0Q29sb3IoXCJmZ0NvbG9yXCIsIFwiY29sb3JcIiwgdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yOiB0ID0+IHtcbiAgICAgICAgICAgICAgc2V0Q29sb3IoXCJ0ZXh0Q29sb3JcIiwgXCJjb2xvclwiLCB0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogdCA9PiB7XG4gICAgICAgICAgICAgIHNldENvbG9yKFwiYm9yZGVyQ29sb3JcIiwgXCJib3JkZXJDb2xvclwiLCB0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdHJva2VDb2xvcjogdCA9PiB7XG4gICAgICAgICAgICAgIHNldENvbG9yKFwic3Ryb2tlQ29sb3JcIiwgXCJib3JkZXJDb2xvclwiLCB0KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb3RhdGlvbjogdCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSB0LmRldGFpbC5yb3RhdGlvbjtcbiAgICAgICAgICAgICAgdGhpcy5zZXRSb3RhdGlvbihlKTtcbiAgICAgICAgICAgICAgdGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5zZXRWYWx1ZSh0aGlzLmRhdGEuaWQsIHtcbiAgICAgICAgICAgICAgICByb3RhdGlvbjogZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBfZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KHQsIGUpIHtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5fY29tbW9uQWN0aW9ucztcbiAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMoZS5kZXRhaWwpKSB7XG4gICAgICAgICAgICBjb25zdCByID0gdFtpXSB8fCBuW2ldO1xuICAgICAgICAgICAgciA9PT0gbnVsbCB8fCByID09PSB2b2lkIDAgPyB2b2lkIDAgOiByKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlModCkge1xuICAgICAgICAgIGlmICghdGhpcy5lbmFibGVTY3JpcHRpbmcpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5hbm5vdGF0aW9uU3RvcmFnZS5nZXRSYXdWYWx1ZSh0aGlzLmRhdGEuaWQpO1xuICAgICAgICAgIGlmICghZSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IG4gPSB0aGlzLl9jb21tb25BY3Rpb25zO1xuICAgICAgICAgIGZvciAoY29uc3QgW2ksIHJdIG9mIE9iamVjdC5lbnRyaWVzKGUpKSB7XG4gICAgICAgICAgICBjb25zdCBzID0gbltpXTtcbiAgICAgICAgICAgIGlmIChzKSB7XG4gICAgICAgICAgICAgIHMoe1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgW2ldOiByXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGRlbGV0ZSBlW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfY3JlYXRlUXVhZHJpbGF0ZXJhbHMoKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lcikgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHF1YWRQb2ludHM6IHRcbiAgICAgICAgICB9ID0gdGhpcy5kYXRhO1xuICAgICAgICAgIGlmICghdCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IFtlLCBuLCBpLCByXSA9IHRoaXMuZGF0YS5yZWN0O1xuICAgICAgICAgIGlmICgxID09PSB0Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgWywge1xuICAgICAgICAgICAgICB4OiBzLFxuICAgICAgICAgICAgICB5OiBhXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgIHg6IG8sXG4gICAgICAgICAgICAgIHk6IGxcbiAgICAgICAgICAgIH1dID0gdFswXTtcbiAgICAgICAgICAgIGlmIChpID09PSBzICYmIHIgPT09IGEgJiYgZSA9PT0gbyAmJiBuID09PSBsKSByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHN0eWxlOiBzXG4gICAgICAgICAgfSA9IHRoaXMuY29udGFpbmVyO1xuICAgICAgICAgIGxldCBhO1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0RlKSkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogdCxcbiAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IGVcbiAgICAgICAgICAgIH0gPSBzO1xuICAgICAgICAgICAgcy5ib3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICBhID0gW1widXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCxcIiwgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiJywgJyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMSAxXCI+JywgXCI8ZyBmaWxsPVxcXCJ0cmFuc3BhcmVudFxcXCIgc3Ryb2tlPVxcXCJcIi5jb25jYXQodCwgXCJcXFwiIHN0cm9rZS13aWR0aD1cXFwiXCIpLmNvbmNhdChlLCBcIlxcXCI+XCIpXTtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJoYXNCb3JkZXJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG8gPSBpIC0gZSxcbiAgICAgICAgICAgIGwgPSByIC0gbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3ZnRmFjdG9yeTogY1xuICAgICAgICAgICAgfSA9IHRoaXMsXG4gICAgICAgICAgICBoID0gYy5jcmVhdGVFbGVtZW50KFwic3ZnXCIpO1xuICAgICAgICAgIGguY2xhc3NMaXN0LmFkZChcInF1YWRyaWxhdGVyYWxzQ29udGFpbmVyXCIpO1xuICAgICAgICAgIGguc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgMCk7XG4gICAgICAgICAgaC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgMCk7XG4gICAgICAgICAgY29uc3QgZCA9IGMuY3JlYXRlRWxlbWVudChcImRlZnNcIik7XG4gICAgICAgICAgaC5hcHBlbmQoZCk7XG4gICAgICAgICAgY29uc3QgdSA9IGMuY3JlYXRlRWxlbWVudChcImNsaXBQYXRoXCIpLFxuICAgICAgICAgICAgcCA9IFwiY2xpcHBhdGhfXCIuY29uY2F0KHRoaXMuZGF0YS5pZCk7XG4gICAgICAgICAgdS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBwKTtcbiAgICAgICAgICB1LnNldEF0dHJpYnV0ZShcImNsaXBQYXRoVW5pdHNcIiwgXCJvYmplY3RCb3VuZGluZ0JveFwiKTtcbiAgICAgICAgICBkLmFwcGVuZCh1KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IFssIHtcbiAgICAgICAgICAgIHg6IG4sXG4gICAgICAgICAgICB5OiBpXG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgeDogcyxcbiAgICAgICAgICAgIHk6IGhcbiAgICAgICAgICB9XSBvZiB0KSB7XG4gICAgICAgICAgICB2YXIgX2EzO1xuICAgICAgICAgICAgY29uc3QgdCA9IGMuY3JlYXRlRWxlbWVudChcInJlY3RcIiksXG4gICAgICAgICAgICAgIGQgPSAocyAtIGUpIC8gbyxcbiAgICAgICAgICAgICAgcCA9IChyIC0gaSkgLyBsLFxuICAgICAgICAgICAgICBmID0gKG4gLSBzKSAvIG8sXG4gICAgICAgICAgICAgIGcgPSAoaSAtIGgpIC8gbDtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwieFwiLCBkKTtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwieVwiLCBwKTtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgZik7XG4gICAgICAgICAgICB0LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBnKTtcbiAgICAgICAgICAgIHUuYXBwZW5kKHQpO1xuICAgICAgICAgICAgKF9hMyA9IGEpID09PSBudWxsIHx8IF9hMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EzLnB1c2goXCI8cmVjdCB2ZWN0b3ItZWZmZWN0PVxcXCJub24tc2NhbGluZy1zdHJva2VcXFwiIHg9XFxcIlwiLmNvbmNhdChkLCBcIlxcXCIgeT1cXFwiXCIpLmNvbmNhdChwLCBcIlxcXCIgd2lkdGg9XFxcIlwiKS5jb25jYXQoZiwgXCJcXFwiIGhlaWdodD1cXFwiXCIpLmNvbmNhdChnLCBcIlxcXCIvPlwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0RlKSkge1xuICAgICAgICAgICAgYS5wdXNoKFwiPC9nPjwvc3ZnPicpXCIpO1xuICAgICAgICAgICAgcy5iYWNrZ3JvdW5kSW1hZ2UgPSBhLmpvaW4oXCJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChoKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5jbGlwUGF0aCA9IFwidXJsKCNcIi5jb25jYXQocCwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIF9jcmVhdGVQb3B1cCgpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjb250YWluZXI6IHQsXG4gICAgICAgICAgICBkYXRhOiBlXG4gICAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwiZGlhbG9nXCIpO1xuICAgICAgICAgIGNvbnN0IG4gPSBuZXcgUG9wdXBBbm5vdGF0aW9uRWxlbWVudCh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiBlLmNvbG9yLFxuICAgICAgICAgICAgICB0aXRsZU9iajogZS50aXRsZU9iaixcbiAgICAgICAgICAgICAgbW9kaWZpY2F0aW9uRGF0ZTogZS5tb2RpZmljYXRpb25EYXRlLFxuICAgICAgICAgICAgICBjb250ZW50c09iajogZS5jb250ZW50c09iaixcbiAgICAgICAgICAgICAgcmljaFRleHQ6IGUucmljaFRleHQsXG4gICAgICAgICAgICAgIHBhcmVudFJlY3Q6IGUucmVjdCxcbiAgICAgICAgICAgICAgYm9yZGVyU3R5bGU6IDAsXG4gICAgICAgICAgICAgIGlkOiBcInBvcHVwX1wiLmNvbmNhdChlLmlkKSxcbiAgICAgICAgICAgICAgcm90YXRpb246IGUucm90YXRpb25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50LFxuICAgICAgICAgICAgZWxlbWVudHM6IFt0aGlzXVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucGFyZW50LmRpdi5hcHBlbmQobi5yZW5kZXIoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgICgwLCBpLnVucmVhY2hhYmxlKShcIkFic3RyYWN0IG1ldGhvZCBgQW5ub3RhdGlvbkVsZW1lbnQucmVuZGVyYCBjYWxsZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgX2dldEVsZW1lbnRzQnlOYW1lKHQpIHtcbiAgICAgICAgICBsZXQgZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzFdID8gYXJndW1lbnRzWzFdIDogbnVsbDtcbiAgICAgICAgICBjb25zdCBuID0gW107XG4gICAgICAgICAgaWYgKHRoaXMuX2ZpZWxkT2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgciA9IHRoaXMuX2ZpZWxkT2JqZWN0c1t0XTtcbiAgICAgICAgICAgIGlmIChyKSBmb3IgKGNvbnN0IHtcbiAgICAgICAgICAgICAgcGFnZTogdCxcbiAgICAgICAgICAgICAgaWQ6IHMsXG4gICAgICAgICAgICAgIGV4cG9ydFZhbHVlczogYVxuICAgICAgICAgICAgfSBvZiByKSB7XG4gICAgICAgICAgICAgIGlmICgtMSA9PT0gdCkgY29udGludWU7XG4gICAgICAgICAgICAgIGlmIChzID09PSBlKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgY29uc3QgciA9IFwic3RyaW5nXCIgPT0gdHlwZW9mIGEgPyBhIDogbnVsbCxcbiAgICAgICAgICAgICAgICBvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIltkYXRhLWVsZW1lbnQtaWQ9XFxcIlwiLmNvbmNhdChzLCBcIlxcXCJdXCIpKTtcbiAgICAgICAgICAgICAgIW8gfHwgaC5oYXMobykgPyBuLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiBzLFxuICAgICAgICAgICAgICAgIGV4cG9ydFZhbHVlOiByLFxuICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQ6IG9cbiAgICAgICAgICAgICAgfSkgOiAoMCwgaS53YXJuKShcIl9nZXRFbGVtZW50c0J5TmFtZSAtIGVsZW1lbnQgbm90IGFsbG93ZWQ6IFwiLmNvbmNhdChzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChjb25zdCBpIG9mIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgZXhwb3J0VmFsdWU6IHRcbiAgICAgICAgICAgICAgfSA9IGksXG4gICAgICAgICAgICAgIHIgPSBpLmdldEF0dHJpYnV0ZShcImRhdGEtZWxlbWVudC1pZFwiKTtcbiAgICAgICAgICAgIHIgIT09IGUgJiYgaC5oYXMoaSkgJiYgbi5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IHIsXG4gICAgICAgICAgICAgIGV4cG9ydFZhbHVlOiB0LFxuICAgICAgICAgICAgICBkb21FbGVtZW50OiBpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgc2hvdygpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcG9wdXA7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIgJiYgKHRoaXMuY29udGFpbmVyLmhpZGRlbiA9ICExKTtcbiAgICAgICAgICAoX3RoaXMkcG9wdXAgPSB0aGlzLnBvcHVwKSA9PT0gbnVsbCB8fCBfdGhpcyRwb3B1cCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcG9wdXAubWF5YmVTaG93KCk7XG4gICAgICAgIH1cbiAgICAgICAgaGlkZSgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcG9wdXAyO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyICYmICh0aGlzLmNvbnRhaW5lci5oaWRkZW4gPSAhMCk7XG4gICAgICAgICAgKF90aGlzJHBvcHVwMiA9IHRoaXMucG9wdXApID09PSBudWxsIHx8IF90aGlzJHBvcHVwMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcG9wdXAyLmZvcmNlSGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGFkZEhpZ2hsaWdodEFyZWEoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuZ2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSBmb3IgKGNvbnN0IGUgb2YgdCkgZS5jbGFzc0xpc3QuYWRkKFwiaGlnaGxpZ2h0QXJlYVwiKTtlbHNlIHQuY2xhc3NMaXN0LmFkZChcImhpZ2hsaWdodEFyZWFcIik7XG4gICAgICAgIH1cbiAgICAgICAgX2VkaXRPbkRvdWJsZUNsaWNrKCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGFubm90YXRpb25FZGl0b3JUeXBlOiB0LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpZDogZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gPSB0aGlzO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJkYmxjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkbGlua1NlcnZpY2UkZXZlO1xuICAgICAgICAgICAgKF90aGlzJGxpbmtTZXJ2aWNlJGV2ZSA9IHRoaXMubGlua1NlcnZpY2UuZXZlbnRCdXMpID09PSBudWxsIHx8IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbGlua1NlcnZpY2UkZXZlLmRpc3BhdGNoKFwic3dpdGNoYW5ub3RhdGlvbmVkaXRvcm1vZGVcIiwge1xuICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgIG1vZGU6IHQsXG4gICAgICAgICAgICAgIGVkaXRJZDogZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBfTGUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfT2UgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIExpbmtBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IoX3QxNSkge1xuICAgICAgICAgIGxldCBfZTEzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsO1xuICAgICAgICAgIHN1cGVyKF90MTUsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogITAsXG4gICAgICAgICAgICBpZ25vcmVCb3JkZXI6ICEhKF9lMTMgIT09IG51bGwgJiYgX2UxMyAhPT0gdm9pZCAwICYmIF9lMTMuaWdub3JlQm9yZGVyKSxcbiAgICAgICAgICAgIGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfT2UpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfTGUpO1xuICAgICAgICAgIHRoaXMuaXNUb29sdGlwT25seSA9IF90MTUuZGF0YS5pc1Rvb2x0aXBPbmx5O1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIGRhdGE6IHQsXG4gICAgICAgICAgICAgIGxpbmtTZXJ2aWNlOiBlXG4gICAgICAgICAgICB9ID0gdGhpcyxcbiAgICAgICAgICAgIG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgICBuLnNldEF0dHJpYnV0ZShcImRhdGEtZWxlbWVudC1pZFwiLCB0LmlkKTtcbiAgICAgICAgICBsZXQgaSA9ICExO1xuICAgICAgICAgIGlmICh0LnVybCkge1xuICAgICAgICAgICAgZS5hZGRMaW5rQXR0cmlidXRlcyhuLCB0LnVybCwgdC5uZXdXaW5kb3cpO1xuICAgICAgICAgICAgaSA9ICEwO1xuICAgICAgICAgIH0gZWxzZSBpZiAodC5hY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2JpbmROYW1lZEFjdGlvbihuLCB0LmFjdGlvbik7XG4gICAgICAgICAgICBpID0gITA7XG4gICAgICAgICAgfSBlbHNlIGlmICh0LmF0dGFjaG1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JpbmRBdHRhY2htZW50KG4sIHQuYXR0YWNobWVudCk7XG4gICAgICAgICAgICBpID0gITA7XG4gICAgICAgICAgfSBlbHNlIGlmICh0LnNldE9DR1N0YXRlKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9PZSwgX09lMikuY2FsbCh0aGlzLCBuLCB0LnNldE9DR1N0YXRlKTtcbiAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHQuZGVzdCkge1xuICAgICAgICAgICAgdGhpcy5fYmluZExpbmsobiwgdC5kZXN0KTtcbiAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHQuYWN0aW9ucyAmJiAodC5hY3Rpb25zLkFjdGlvbiB8fCB0LmFjdGlvbnNbXCJNb3VzZSBVcFwiXSB8fCB0LmFjdGlvbnNbXCJNb3VzZSBEb3duXCJdKSAmJiB0aGlzLmVuYWJsZVNjcmlwdGluZyAmJiB0aGlzLmhhc0pTQWN0aW9ucykge1xuICAgICAgICAgICAgICB0aGlzLl9iaW5kSlNBY3Rpb24obiwgdCk7XG4gICAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0LnJlc2V0Rm9ybSkge1xuICAgICAgICAgICAgICB0aGlzLl9iaW5kUmVzZXRGb3JtQWN0aW9uKG4sIHQucmVzZXRGb3JtKTtcbiAgICAgICAgICAgICAgaSA9ICEwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzVG9vbHRpcE9ubHkgJiYgIWkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fYmluZExpbmsobiwgXCJcIik7XG4gICAgICAgICAgICAgIGkgPSAhMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImxpbmtBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIGkgJiYgdGhpcy5jb250YWluZXIuYXBwZW5kKG4pO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBfYmluZExpbmsodCwgZSkge1xuICAgICAgICAgIHQuaHJlZiA9IHRoaXMubGlua1NlcnZpY2UuZ2V0RGVzdGluYXRpb25IYXNoKGUpO1xuICAgICAgICAgIHQub25jbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIGUgJiYgdGhpcy5saW5rU2VydmljZS5nb1RvRGVzdGluYXRpb24oZSk7XG4gICAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgICAgfTtcbiAgICAgICAgICAoZSB8fCBcIlwiID09PSBlKSAmJiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9MZSwgX0xlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBfYmluZE5hbWVkQWN0aW9uKHQsIGUpIHtcbiAgICAgICAgICB0LmhyZWYgPSB0aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybChcIlwiKTtcbiAgICAgICAgICB0Lm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxpbmtTZXJ2aWNlLmV4ZWN1dGVOYW1lZEFjdGlvbihlKTtcbiAgICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0xlLCBfTGUyKS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIF9iaW5kQXR0YWNobWVudCh0LCBlKSB7XG4gICAgICAgICAgdC5ocmVmID0gdGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoXCJcIik7XG4gICAgICAgICAgdC5vbmNsaWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF90aGlzJGRvd25sb2FkTWFuYWdlcjtcbiAgICAgICAgICAgIChfdGhpcyRkb3dubG9hZE1hbmFnZXIgPSB0aGlzLmRvd25sb2FkTWFuYWdlcikgPT09IG51bGwgfHwgX3RoaXMkZG93bmxvYWRNYW5hZ2VyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkb3dubG9hZE1hbmFnZXIub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLCBlLmNvbnRlbnQsIGUuZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgIH07XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTGUsIF9MZTIpLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgX2JpbmRKU0FjdGlvbih0LCBlKSB7XG4gICAgICAgICAgdC5ocmVmID0gdGhpcy5saW5rU2VydmljZS5nZXRBbmNob3JVcmwoXCJcIik7XG4gICAgICAgICAgY29uc3QgbiA9IG5ldyBNYXAoW1tcIkFjdGlvblwiLCBcIm9uY2xpY2tcIl0sIFtcIk1vdXNlIFVwXCIsIFwib25tb3VzZXVwXCJdLCBbXCJNb3VzZSBEb3duXCIsIFwib25tb3VzZWRvd25cIl1dKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMoZS5hY3Rpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgciA9IG4uZ2V0KGkpO1xuICAgICAgICAgICAgciAmJiAodFtyXSA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTI7XG4gICAgICAgICAgICAgIChfdGhpcyRsaW5rU2VydmljZSRldmUyID0gdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cykgPT09IG51bGwgfHwgX3RoaXMkbGlua1NlcnZpY2UkZXZlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbGlua1NlcnZpY2UkZXZlMi5kaXNwYXRjaChcImRpc3BhdGNoZXZlbnRpbnNhbmRib3hcIiwge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBlLmlkLFxuICAgICAgICAgICAgICAgICAgbmFtZTogaVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0Lm9uY2xpY2sgfHwgKHQub25jbGljayA9ICgpID0+ICExKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9MZSwgX0xlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBfYmluZFJlc2V0Rm9ybUFjdGlvbih0LCBlKSB7XG4gICAgICAgICAgY29uc3QgbiA9IHQub25jbGljaztcbiAgICAgICAgICBuIHx8ICh0LmhyZWYgPSB0aGlzLmxpbmtTZXJ2aWNlLmdldEFuY2hvclVybChcIlwiKSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTGUsIF9MZTIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgaWYgKHRoaXMuX2ZpZWxkT2JqZWN0cykgdC5vbmNsaWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTM7XG4gICAgICAgICAgICBuID09PSBudWxsIHx8IG4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG4oKTtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBmaWVsZHM6IHQsXG4gICAgICAgICAgICAgICAgcmVmczogcixcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBzXG4gICAgICAgICAgICAgIH0gPSBlLFxuICAgICAgICAgICAgICBhID0gW107XG4gICAgICAgICAgICBpZiAoMCAhPT0gdC5sZW5ndGggfHwgMCAhPT0gci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IG5ldyBTZXQocik7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX2ZpZWxkT2JqZWN0c1tuXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBuXG4gICAgICAgICAgICAgICAgfSBvZiB0KSBlLmFkZChuKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLl9maWVsZE9iamVjdHMpKSBmb3IgKGNvbnN0IG4gb2YgdCkgZS5oYXMobi5pZCkgPT09IHMgJiYgYS5wdXNoKG4pO1xuICAgICAgICAgICAgfSBlbHNlIGZvciAoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKHRoaXMuX2ZpZWxkT2JqZWN0cykpIGEucHVzaCguLi50KTtcbiAgICAgICAgICAgIGNvbnN0IG8gPSB0aGlzLmFubm90YXRpb25TdG9yYWdlLFxuICAgICAgICAgICAgICBsID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgYSkge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgaWQ6IGVcbiAgICAgICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgICAgIGwucHVzaChlKTtcbiAgICAgICAgICAgICAgc3dpdGNoICh0LnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5kZWZhdWx0VmFsdWUgfHwgXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgby5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJyYWRpb2J1dHRvblwiOlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdC5kZWZhdWx0VmFsdWUgPT09IHQuZXhwb3J0VmFsdWVzO1xuICAgICAgICAgICAgICAgICAgICBvLnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcImNvbWJvYm94XCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcImxpc3Rib3hcIjpcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbiA9IHQuZGVmYXVsdFZhbHVlIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIG8uc2V0VmFsdWUoZSwge1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1lbGVtZW50LWlkPVxcXCJcIi5jb25jYXQoZSwgXCJcXFwiXVwiKSk7XG4gICAgICAgICAgICAgIG4gJiYgKGguaGFzKG4pID8gbi5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcInJlc2V0Zm9ybVwiKSkgOiAoMCwgaS53YXJuKShcIl9iaW5kUmVzZXRGb3JtQWN0aW9uIC0gZWxlbWVudCBub3QgYWxsb3dlZDogXCIuY29uY2F0KGUpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNjcmlwdGluZyAmJiAoKF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTMgPSB0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKSA9PT0gbnVsbCB8fCBfdGhpcyRsaW5rU2VydmljZSRldmUzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRsaW5rU2VydmljZSRldmUzLmRpc3BhdGNoKFwiZGlzcGF0Y2hldmVudGluc2FuZGJveFwiLCB7XG4gICAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiYXBwXCIsXG4gICAgICAgICAgICAgICAgaWRzOiBsLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiUmVzZXRGb3JtXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICAgIH07ZWxzZSB7XG4gICAgICAgICAgICAoMCwgaS53YXJuKSgnX2JpbmRSZXNldEZvcm1BY3Rpb24gLSBcInJlc2V0Rm9ybVwiIGFjdGlvbiBub3Qgc3VwcG9ydGVkLCBlbnN1cmUgdGhhdCB0aGUgYGZpZWxkT2JqZWN0c2AgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLicpO1xuICAgICAgICAgICAgbiB8fCAodC5vbmNsaWNrID0gKCkgPT4gITEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0xlMigpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuc2V0QXR0cmlidXRlKFwiZGF0YS1pbnRlcm5hbC1saW5rXCIsIFwiXCIpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX09lMih0LCBlKSB7XG4gICAgICAgIHQuaHJlZiA9IHRoaXMubGlua1NlcnZpY2UuZ2V0QW5jaG9yVXJsKFwiXCIpO1xuICAgICAgICB0Lm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5saW5rU2VydmljZS5leGVjdXRlU2V0T0NHU3RhdGUoZSk7XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9O1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9MZSwgX0xlMikuY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIGNsYXNzIFRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdCRkYXRhJHRpdGxlT2JqLCBfdCRkYXRhJGNvbnRlbnRzT2JqLCBfdCRkYXRhJHJpY2hUZXh0O1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISEodC5kYXRhLnBvcHVwUmVmIHx8IChfdCRkYXRhJHRpdGxlT2JqID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqICE9PSB2b2lkIDAgJiYgX3QkZGF0YSR0aXRsZU9iai5zdHIgfHwgKF90JGRhdGEkY29udGVudHNPYmogPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmogIT09IHZvaWQgMCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqLnN0ciB8fCAoX3QkZGF0YSRyaWNoVGV4dCA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dCAhPT0gdm9pZCAwICYmIF90JGRhdGEkcmljaFRleHQuc3RyKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwidGV4dEFubm90YXRpb25cIik7XG4gICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG4gICAgICAgICAgdC5zcmMgPSB0aGlzLmltYWdlUmVzb3VyY2VzUGF0aCArIFwiYW5ub3RhdGlvbi1cIiArIHRoaXMuZGF0YS5uYW1lLnRvTG93ZXJDYXNlKCkgKyBcIi5zdmdcIjtcbiAgICAgICAgICB0LmFsdCA9IFwiW3t7dHlwZX19IEFubm90YXRpb25dXCI7XG4gICAgICAgICAgdC5kYXRhc2V0LmwxMG5JZCA9IFwidGV4dF9hbm5vdGF0aW9uX3R5cGVcIjtcbiAgICAgICAgICB0LmRhdGFzZXQubDEwbkFyZ3MgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLmRhdGEubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZGF0YS5wb3B1cFJlZiB8fCB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZCh0KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLmFsdGVybmF0aXZlVGV4dCAmJiAodGhpcy5jb250YWluZXIudGl0bGUgPSB0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgICAgc2hvd0VsZW1lbnRBbmRIaWRlQ2FudmFzKHQpIHtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhLmhhc093bkNhbnZhcykge1xuICAgICAgICAgICAgdmFyIF90JHByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIFwiQ0FOVkFTXCIgPT09ICgoX3QkcHJldmlvdXNTaWJsaW5nID0gdC5wcmV2aW91c1NpYmxpbmcpID09PSBudWxsIHx8IF90JHByZXZpb3VzU2libGluZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3QkcHJldmlvdXNTaWJsaW5nLm5vZGVOYW1lKSAmJiAodC5wcmV2aW91c1NpYmxpbmcuaGlkZGVuID0gITApO1xuICAgICAgICAgICAgdC5oaWRkZW4gPSAhMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgX2dldEtleU1vZGlmaWVyKHQpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpc1dpbjogZSxcbiAgICAgICAgICAgIGlzTWFjOiBuXG4gICAgICAgICAgfSA9IGkuRmVhdHVyZVRlc3QucGxhdGZvcm07XG4gICAgICAgICAgcmV0dXJuIGUgJiYgdC5jdHJsS2V5IHx8IG4gJiYgdC5tZXRhS2V5O1xuICAgICAgICB9XG4gICAgICAgIF9zZXRFdmVudExpc3RlbmVyKHQsIGUsIG4sIGkpIHtcbiAgICAgICAgICBlLmluY2x1ZGVzKFwibW91c2VcIikgPyB0LmFkZEV2ZW50TGlzdGVuZXIoZSwgdCA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkbGlua1NlcnZpY2UkZXZlNDtcbiAgICAgICAgICAgIChfdGhpcyRsaW5rU2VydmljZSRldmU0ID0gdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cykgPT09IG51bGwgfHwgX3RoaXMkbGlua1NlcnZpY2UkZXZlNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbGlua1NlcnZpY2UkZXZlNC5kaXNwYXRjaChcImRpc3BhdGNoZXZlbnRpbnNhbmRib3hcIiwge1xuICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmRhdGEuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbixcbiAgICAgICAgICAgICAgICB2YWx1ZTogaSh0KSxcbiAgICAgICAgICAgICAgICBzaGlmdDogdC5zaGlmdEtleSxcbiAgICAgICAgICAgICAgICBtb2RpZmllcjogdGhpcy5fZ2V0S2V5TW9kaWZpZXIodClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSkgOiB0LmFkZEV2ZW50TGlzdGVuZXIoZSwgdCA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkbGlua1NlcnZpY2UkZXZlNTtcbiAgICAgICAgICAgIChfdGhpcyRsaW5rU2VydmljZSRldmU1ID0gdGhpcy5saW5rU2VydmljZS5ldmVudEJ1cykgPT09IG51bGwgfHwgX3RoaXMkbGlua1NlcnZpY2UkZXZlNSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbGlua1NlcnZpY2UkZXZlNS5kaXNwYXRjaChcImRpc3BhdGNoZXZlbnRpbnNhbmRib3hcIiwge1xuICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmRhdGEuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogbixcbiAgICAgICAgICAgICAgICB2YWx1ZTogaSh0KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBfc2V0RXZlbnRMaXN0ZW5lcnModCwgZSwgbikge1xuICAgICAgICAgIGZvciAoY29uc3QgW2ksIHJdIG9mIGUpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyRkYXRhJGFjdGlvbnM7XG4gICAgICAgICAgICAoXCJBY3Rpb25cIiA9PT0gciB8fCAoKF90aGlzJGRhdGEkYWN0aW9ucyA9IHRoaXMuZGF0YS5hY3Rpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRkYXRhJGFjdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRhdGEkYWN0aW9uc1tyXSkpICYmIHRoaXMuX3NldEV2ZW50TGlzdGVuZXIodCwgaSwgciwgbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIF9zZXRCYWNrZ3JvdW5kQ29sb3IodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yIHx8IG51bGw7XG4gICAgICAgICAgdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBudWxsID09PSBlID8gXCJ0cmFuc3BhcmVudFwiIDogaS5VdGlsLm1ha2VIZXhDb2xvcihlWzBdLCBlWzFdLCBlWzJdKTtcbiAgICAgICAgfVxuICAgICAgICBfc2V0VGV4dFN0eWxlKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gW1wibGVmdFwiLCBcImNlbnRlclwiLCBcInJpZ2h0XCJdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmb250Q29sb3I6IG5cbiAgICAgICAgICAgIH0gPSB0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLFxuICAgICAgICAgICAgciA9IHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemUgfHwgOSxcbiAgICAgICAgICAgIHMgPSB0LnN0eWxlO1xuICAgICAgICAgIGxldCBhO1xuICAgICAgICAgIGNvbnN0IHJvdW5kVG9PbmVEZWNpbWFsID0gdCA9PiBNYXRoLnJvdW5kKDEwICogdCkgLyAxMDtcbiAgICAgICAgICBpZiAodGhpcy5kYXRhLm11bHRpTGluZSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IE1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdIC0gdGhpcy5kYXRhLnJlY3RbMV0gLSAyKSxcbiAgICAgICAgICAgICAgZSA9IHQgLyAoTWF0aC5yb3VuZCh0IC8gKGkuTElORV9GQUNUT1IgKiByKSkgfHwgMSk7XG4gICAgICAgICAgICBhID0gTWF0aC5taW4ociwgcm91bmRUb09uZURlY2ltYWwoZSAvIGkuTElORV9GQUNUT1IpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdCA9IE1hdGguYWJzKHRoaXMuZGF0YS5yZWN0WzNdIC0gdGhpcy5kYXRhLnJlY3RbMV0gLSAyKTtcbiAgICAgICAgICAgIGEgPSBNYXRoLm1pbihyLCByb3VuZFRvT25lRGVjaW1hbCh0IC8gaS5MSU5FX0ZBQ1RPUikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzLmZvbnRTaXplID0gXCJjYWxjKFwiLmNvbmNhdChhLCBcInB4ICogdmFyKC0tc2NhbGUtZmFjdG9yKSlcIik7XG4gICAgICAgICAgcy5jb2xvciA9IGkuVXRpbC5tYWtlSGV4Q29sb3IoblswXSwgblsxXSwgblsyXSk7XG4gICAgICAgICAgbnVsbCAhPT0gdGhpcy5kYXRhLnRleHRBbGlnbm1lbnQgJiYgKHMudGV4dEFsaWduID0gZVt0aGlzLmRhdGEudGV4dEFsaWdubWVudF0pO1xuICAgICAgICB9XG4gICAgICAgIF9zZXRSZXF1aXJlZCh0LCBlKSB7XG4gICAgICAgICAgZSA/IHQuc2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIiwgITApIDogdC5yZW1vdmVBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKTtcbiAgICAgICAgICB0LnNldEF0dHJpYnV0ZShcImFyaWEtcmVxdWlyZWRcIiwgZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFRleHRXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogdC5yZW5kZXJGb3JtcyB8fCAhdC5kYXRhLmhhc0FwcGVhcmFuY2UgJiYgISF0LmRhdGEuZmllbGRWYWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldFByb3BlcnR5T25TaWJsaW5ncyh0LCBlLCBuLCBpKSB7XG4gICAgICAgICAgY29uc3QgciA9IHRoaXMuYW5ub3RhdGlvblN0b3JhZ2U7XG4gICAgICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHQubmFtZSwgdC5pZCkpIHtcbiAgICAgICAgICAgIHMuZG9tRWxlbWVudCAmJiAocy5kb21FbGVtZW50W2VdID0gbik7XG4gICAgICAgICAgICByLnNldFZhbHVlKHMuaWQsIHtcbiAgICAgICAgICAgICAgW2ldOiBuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmFubm90YXRpb25TdG9yYWdlLFxuICAgICAgICAgICAgZSA9IHRoaXMuZGF0YS5pZDtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwidGV4dFdpZGdldEFubm90YXRpb25cIik7XG4gICAgICAgICAgbGV0IG4gPSBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLnJlbmRlckZvcm1zKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkZGF0YSR0ZXh0Q29udGVuO1xuICAgICAgICAgICAgY29uc3QgaSA9IHQuZ2V0VmFsdWUoZSwge1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5kYXRhLmZpZWxkVmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGV0IHIgPSBpLnZhbHVlIHx8IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBzID0gdC5nZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgIGNoYXJMaW1pdDogdGhpcy5kYXRhLm1heExlblxuICAgICAgICAgICAgfSkuY2hhckxpbWl0O1xuICAgICAgICAgICAgcyAmJiByLmxlbmd0aCA+IHMgJiYgKHIgPSByLnNsaWNlKDAsIHMpKTtcbiAgICAgICAgICAgIGxldCBhID0gaS5mb3JtYXR0ZWRWYWx1ZSB8fCAoKF90aGlzJGRhdGEkdGV4dENvbnRlbiA9IHRoaXMuZGF0YS50ZXh0Q29udGVudCkgPT09IG51bGwgfHwgX3RoaXMkZGF0YSR0ZXh0Q29udGVuID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkYXRhJHRleHRDb250ZW4uam9pbihcIlxcblwiKSkgfHwgbnVsbDtcbiAgICAgICAgICAgIGEgJiYgdGhpcy5kYXRhLmNvbWIgJiYgKGEgPSBhLnJlcGxhY2VBbGwoL1xccysvZywgXCJcIikpO1xuICAgICAgICAgICAgY29uc3QgbyA9IHtcbiAgICAgICAgICAgICAgdXNlclZhbHVlOiByLFxuICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZTogYSxcbiAgICAgICAgICAgICAgbGFzdENvbW1pdHRlZFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICBjb21taXRLZXk6IDFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLm11bHRpTGluZSkge1xuICAgICAgICAgICAgICB2YXIgX2E0O1xuICAgICAgICAgICAgICBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpO1xuICAgICAgICAgICAgICBuLnRleHRDb250ZW50ID0gKF9hNCA9IGEpICE9PSBudWxsICYmIF9hNCAhPT0gdm9pZCAwID8gX2E0IDogcjtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhLmRvTm90U2Nyb2xsICYmIChuLnN0eWxlLm92ZXJmbG93WSA9IFwiaGlkZGVuXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIF9hNTtcbiAgICAgICAgICAgICAgbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICAgICAgICAgICAgbi50eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICAgIG4uc2V0QXR0cmlidXRlKFwidmFsdWVcIiwgKF9hNSA9IGEpICE9PSBudWxsICYmIF9hNSAhPT0gdm9pZCAwID8gX2E1IDogcik7XG4gICAgICAgICAgICAgIHRoaXMuZGF0YS5kb05vdFNjcm9sbCAmJiAobi5zdHlsZS5vdmVyZmxvd1ggPSBcImhpZGRlblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0YS5oYXNPd25DYW52YXMgJiYgKG4uaGlkZGVuID0gITApO1xuICAgICAgICAgICAgaC5hZGQobik7XG4gICAgICAgICAgICBuLnNldEF0dHJpYnV0ZShcImRhdGEtZWxlbWVudC1pZFwiLCBlKTtcbiAgICAgICAgICAgIG4uZGlzYWJsZWQgPSB0aGlzLmRhdGEucmVhZE9ubHk7XG4gICAgICAgICAgICBuLm5hbWUgPSB0aGlzLmRhdGEuYmFzZUZpZWxkTmFtZSB8fCB0aGlzLmRhdGEuZmllbGROYW1lO1xuICAgICAgICAgICAgbi50YWJJbmRleCA9IGM7XG4gICAgICAgICAgICB0aGlzLl9zZXRSZXF1aXJlZChuLCB0aGlzLmRhdGEucmVxdWlyZWQpO1xuICAgICAgICAgICAgcyAmJiAobi5tYXhMZW5ndGggPSBzKTtcbiAgICAgICAgICAgIG4uYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIGkgPT4ge1xuICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaS50YXJnZXQudmFsdWVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuc2V0UHJvcGVydHlPblNpYmxpbmdzKG4sIFwidmFsdWVcIiwgaS50YXJnZXQudmFsdWUsIFwidmFsdWVcIik7XG4gICAgICAgICAgICAgIG8uZm9ybWF0dGVkVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBuLmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNldGZvcm1cIiwgdCA9PiB7XG4gICAgICAgICAgICAgIHZhciBfdGhpcyRkYXRhJGRlZmF1bHRGaWU7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSAoX3RoaXMkZGF0YSRkZWZhdWx0RmllID0gdGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlKSAhPT0gbnVsbCAmJiBfdGhpcyRkYXRhJGRlZmF1bHRGaWUgIT09IHZvaWQgMCA/IF90aGlzJGRhdGEkZGVmYXVsdEZpZSA6IFwiXCI7XG4gICAgICAgICAgICAgIG4udmFsdWUgPSBvLnVzZXJWYWx1ZSA9IGU7XG4gICAgICAgICAgICAgIG8uZm9ybWF0dGVkVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsZXQgYmx1ckxpc3RlbmVyID0gdCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZTogZVxuICAgICAgICAgICAgICB9ID0gbztcbiAgICAgICAgICAgICAgbnVsbCAhPSBlICYmICh0LnRhcmdldC52YWx1ZSA9IGUpO1xuICAgICAgICAgICAgICB0LnRhcmdldC5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5lbmFibGVTY3JpcHRpbmcgJiYgdGhpcy5oYXNKU0FjdGlvbnMpIHtcbiAgICAgICAgICAgICAgdmFyIF90aGlzJGRhdGEkYWN0aW9uczI7XG4gICAgICAgICAgICAgIG4uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIHQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldDogZVxuICAgICAgICAgICAgICAgIH0gPSB0O1xuICAgICAgICAgICAgICAgIG8udXNlclZhbHVlICYmIChlLnZhbHVlID0gby51c2VyVmFsdWUpO1xuICAgICAgICAgICAgICAgIG8ubGFzdENvbW1pdHRlZFZhbHVlID0gZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBvLmNvbW1pdEtleSA9IDE7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBuLmFkZEV2ZW50TGlzdGVuZXIoXCJ1cGRhdGVmcm9tc2FuZGJveFwiLCBuID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFbGVtZW50QW5kSGlkZUNhbnZhcyhuLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9uJGRldGFpbCR2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgby51c2VyVmFsdWUgPSAoX24kZGV0YWlsJHZhbHVlID0gbi5kZXRhaWwudmFsdWUpICE9PSBudWxsICYmIF9uJGRldGFpbCR2YWx1ZSAhPT0gdm9pZCAwID8gX24kZGV0YWlsJHZhbHVlIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgdC5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG8udXNlclZhbHVlLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIG4udGFyZ2V0LnZhbHVlID0gby51c2VyVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUobikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWU6IGlcbiAgICAgICAgICAgICAgICAgICAgfSA9IG4uZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICBvLmZvcm1hdHRlZFZhbHVlID0gaTtcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPSBpICYmIG4udGFyZ2V0ICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIChuLnRhcmdldC52YWx1ZSA9IGkpO1xuICAgICAgICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZTogaVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBzZWxSYW5nZSh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKC4uLnQuZGV0YWlsLnNlbFJhbmdlKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjaGFyTGltaXQ6IG4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFyTGltaXQ6IGlcbiAgICAgICAgICAgICAgICAgICAgICB9ID0gbi5kZXRhaWwsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiByXG4gICAgICAgICAgICAgICAgICAgICAgfSA9IG47XG4gICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgci5yZW1vdmVBdHRyaWJ1dGUoXCJtYXhMZW5ndGhcIik7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHIuc2V0QXR0cmlidXRlKFwibWF4TGVuZ3RoXCIsIGkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IG8udXNlclZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocyAmJiAhKHMubGVuZ3RoIDw9IGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTY7XG4gICAgICAgICAgICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICAgICAgICAgICAgci52YWx1ZSA9IG8udXNlclZhbHVlID0gcztcbiAgICAgICAgICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgKF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTYgPSB0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKSA9PT0gbnVsbCB8fCBfdGhpcyRsaW5rU2VydmljZSRldmU2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRsaW5rU2VydmljZSRldmU2LmRpc3BhdGNoKFwiZGlzcGF0Y2hldmVudGluc2FuZGJveFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiS2V5c3Ryb2tlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsQ29tbWl0OiAhMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0S2V5OiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxTdGFydDogci5zZWxlY3Rpb25TdGFydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsRW5kOiByLnNlbGVjdGlvbkVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goaSwgbik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBuLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHQgPT4ge1xuICAgICAgICAgICAgICAgIG8uY29tbWl0S2V5ID0gMTtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IC0xO1xuICAgICAgICAgICAgICAgIFwiRXNjYXBlXCIgPT09IHQua2V5ID8gbiA9IDAgOiBcIkVudGVyXCIgIT09IHQua2V5IHx8IHRoaXMuZGF0YS5tdWx0aUxpbmUgPyBcIlRhYlwiID09PSB0LmtleSAmJiAoby5jb21taXRLZXkgPSAzKSA6IG4gPSAyO1xuICAgICAgICAgICAgICAgIGlmICgtMSA9PT0gbikgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBpXG4gICAgICAgICAgICAgICAgfSA9IHQudGFyZ2V0O1xuICAgICAgICAgICAgICAgIGlmIChvLmxhc3RDb21taXR0ZWRWYWx1ZSAhPT0gaSkge1xuICAgICAgICAgICAgICAgICAgdmFyIF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTc7XG4gICAgICAgICAgICAgICAgICBvLmxhc3RDb21taXR0ZWRWYWx1ZSA9IGk7XG4gICAgICAgICAgICAgICAgICBvLnVzZXJWYWx1ZSA9IGk7XG4gICAgICAgICAgICAgICAgICAoX3RoaXMkbGlua1NlcnZpY2UkZXZlNyA9IHRoaXMubGlua1NlcnZpY2UuZXZlbnRCdXMpID09PSBudWxsIHx8IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTcuZGlzcGF0Y2goXCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogZSxcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIktleXN0cm9rZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpLFxuICAgICAgICAgICAgICAgICAgICAgIHdpbGxDb21taXQ6ICEwLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdEtleTogbixcbiAgICAgICAgICAgICAgICAgICAgICBzZWxTdGFydDogdC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgc2VsRW5kOiB0LnRhcmdldC5zZWxlY3Rpb25FbmRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgY29uc3QgaSA9IGJsdXJMaXN0ZW5lcjtcbiAgICAgICAgICAgICAgYmx1ckxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgbi5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCB0ID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMkbGlua1NlcnZpY2UkZXZlODtcbiAgICAgICAgICAgICAgICBpZiAoIXQucmVsYXRlZFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBuXG4gICAgICAgICAgICAgICAgfSA9IHQudGFyZ2V0O1xuICAgICAgICAgICAgICAgIG8udXNlclZhbHVlID0gbjtcbiAgICAgICAgICAgICAgICBvLmxhc3RDb21taXR0ZWRWYWx1ZSAhPT0gbiAmJiAoKF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTggPSB0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKSA9PT0gbnVsbCB8fCBfdGhpcyRsaW5rU2VydmljZSRldmU4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRsaW5rU2VydmljZSRldmU4LmRpc3BhdGNoKFwiZGlzcGF0Y2hldmVudGluc2FuZGJveFwiLCB7XG4gICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiS2V5c3Ryb2tlXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBuLFxuICAgICAgICAgICAgICAgICAgICB3aWxsQ29tbWl0OiAhMCxcbiAgICAgICAgICAgICAgICAgICAgY29tbWl0S2V5OiBvLmNvbW1pdEtleSxcbiAgICAgICAgICAgICAgICAgICAgc2VsU3RhcnQ6IHQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0LFxuICAgICAgICAgICAgICAgICAgICBzZWxFbmQ6IHQudGFyZ2V0LnNlbGVjdGlvbkVuZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBpKHQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgKChfdGhpcyRkYXRhJGFjdGlvbnMyID0gdGhpcy5kYXRhLmFjdGlvbnMpID09PSBudWxsIHx8IF90aGlzJGRhdGEkYWN0aW9uczIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRhdGEkYWN0aW9uczIuS2V5c3Ryb2tlKSAmJiBuLmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmVpbnB1dFwiLCB0ID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMkbGlua1NlcnZpY2UkZXZlOTtcbiAgICAgICAgICAgICAgICBvLmxhc3RDb21taXR0ZWRWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBuLFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGlcbiAgICAgICAgICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcixcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU3RhcnQ6IHMsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbkVuZDogYVxuICAgICAgICAgICAgICAgICAgfSA9IGk7XG4gICAgICAgICAgICAgICAgbGV0IGwgPSBzLFxuICAgICAgICAgICAgICAgICAgYyA9IGE7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0LmlucHV0VHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVdvcmRCYWNrd2FyZFwiOlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IHIuc3Vic3RyaW5nKDAsIHMpLm1hdGNoKC9cXHcqW15cXHddKiQvKTtcbiAgICAgICAgICAgICAgICAgICAgICB0ICYmIChsIC09IHRbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVdvcmRGb3J3YXJkXCI6XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gci5zdWJzdHJpbmcocykubWF0Y2goL15bXlxcd10qXFx3Ki8pO1xuICAgICAgICAgICAgICAgICAgICAgIHQgJiYgKGMgKz0gdFswXS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGVsZXRlQ29udGVudEJhY2t3YXJkXCI6XG4gICAgICAgICAgICAgICAgICAgIHMgPT09IGEgJiYgKGwgLT0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRlbGV0ZUNvbnRlbnRGb3J3YXJkXCI6XG4gICAgICAgICAgICAgICAgICAgIHMgPT09IGEgJiYgKGMgKz0gMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAoX3RoaXMkbGlua1NlcnZpY2UkZXZlOSA9IHRoaXMubGlua1NlcnZpY2UuZXZlbnRCdXMpID09PSBudWxsIHx8IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTkuZGlzcGF0Y2goXCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94XCIsIHtcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICBpZDogZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJLZXlzdHJva2VcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHIsXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZTogbiB8fCBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB3aWxsQ29tbWl0OiAhMSxcbiAgICAgICAgICAgICAgICAgICAgc2VsU3RhcnQ6IGwsXG4gICAgICAgICAgICAgICAgICAgIHNlbEVuZDogY1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMobiwgW1tcImZvY3VzXCIsIFwiRm9jdXNcIl0sIFtcImJsdXJcIiwgXCJCbHVyXCJdLCBbXCJtb3VzZWRvd25cIiwgXCJNb3VzZSBEb3duXCJdLCBbXCJtb3VzZWVudGVyXCIsIFwiTW91c2UgRW50ZXJcIl0sIFtcIm1vdXNlbGVhdmVcIiwgXCJNb3VzZSBFeGl0XCJdLCBbXCJtb3VzZXVwXCIsIFwiTW91c2UgVXBcIl1dLCB0ID0+IHQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJsdXJMaXN0ZW5lciAmJiBuLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIGJsdXJMaXN0ZW5lcik7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmNvbWIpIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9ICh0aGlzLmRhdGEucmVjdFsyXSAtIHRoaXMuZGF0YS5yZWN0WzBdKSAvIHM7XG4gICAgICAgICAgICAgIG4uY2xhc3NMaXN0LmFkZChcImNvbWJcIik7XG4gICAgICAgICAgICAgIG4uc3R5bGUubGV0dGVyU3BhY2luZyA9IFwiY2FsYyhcIi5jb25jYXQodCwgXCJweCAqIHZhcigtLXNjYWxlLWZhY3RvcikgLSAxY2gpXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgIG4udGV4dENvbnRlbnQgPSB0aGlzLmRhdGEuZmllbGRWYWx1ZTtcbiAgICAgICAgICAgIG4uc3R5bGUudmVydGljYWxBbGlnbiA9IFwibWlkZGxlXCI7XG4gICAgICAgICAgICBuLnN0eWxlLmRpc3BsYXkgPSBcInRhYmxlLWNlbGxcIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fc2V0VGV4dFN0eWxlKG4pO1xuICAgICAgICAgIHRoaXMuX3NldEJhY2tncm91bmRDb2xvcihuKTtcbiAgICAgICAgICB0aGlzLl9zZXREZWZhdWx0UHJvcGVydGllc0Zyb21KUyhuKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmQobik7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIFdpZGdldEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISF0LmRhdGEuaGFzT3duQ2FudmFzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIENoZWNrYm94V2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6IHQucmVuZGVyRm9ybXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuYW5ub3RhdGlvblN0b3JhZ2UsXG4gICAgICAgICAgICBlID0gdGhpcy5kYXRhLFxuICAgICAgICAgICAgbiA9IGUuaWQ7XG4gICAgICAgICAgbGV0IGkgPSB0LmdldFZhbHVlKG4sIHtcbiAgICAgICAgICAgIHZhbHVlOiBlLmV4cG9ydFZhbHVlID09PSBlLmZpZWxkVmFsdWVcbiAgICAgICAgICB9KS52YWx1ZTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PSB0eXBlb2YgaSkge1xuICAgICAgICAgICAgaSA9IFwiT2ZmXCIgIT09IGk7XG4gICAgICAgICAgICB0LnNldFZhbHVlKG4sIHtcbiAgICAgICAgICAgICAgdmFsdWU6IGlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiYnV0dG9uV2lkZ2V0QW5ub3RhdGlvblwiLCBcImNoZWNrQm94XCIpO1xuICAgICAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgICAgICAgaC5hZGQocik7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJkYXRhLWVsZW1lbnQtaWRcIiwgbik7XG4gICAgICAgICAgci5kaXNhYmxlZCA9IGUucmVhZE9ubHk7XG4gICAgICAgICAgdGhpcy5fc2V0UmVxdWlyZWQociwgdGhpcy5kYXRhLnJlcXVpcmVkKTtcbiAgICAgICAgICByLnR5cGUgPSBcImNoZWNrYm94XCI7XG4gICAgICAgICAgci5uYW1lID0gZS5iYXNlRmllbGROYW1lIHx8IGUuZmllbGROYW1lO1xuICAgICAgICAgIGkgJiYgci5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsICEwKTtcbiAgICAgICAgICByLnNldEF0dHJpYnV0ZShcImV4cG9ydFZhbHVlXCIsIGUuZXhwb3J0VmFsdWUpO1xuICAgICAgICAgIHIudGFiSW5kZXggPSBjO1xuICAgICAgICAgIHIuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCBpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgbmFtZTogcixcbiAgICAgICAgICAgICAgY2hlY2tlZDogc1xuICAgICAgICAgICAgfSA9IGkudGFyZ2V0O1xuICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuX2dldEVsZW1lbnRzQnlOYW1lKHIsIG4pKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSBzICYmIGkuZXhwb3J0VmFsdWUgPT09IGUuZXhwb3J0VmFsdWU7XG4gICAgICAgICAgICAgIGkuZG9tRWxlbWVudCAmJiAoaS5kb21FbGVtZW50LmNoZWNrZWQgPSBuKTtcbiAgICAgICAgICAgICAgdC5zZXRWYWx1ZShpLmlkLCB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IG5cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0LnNldFZhbHVlKG4sIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHIuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2V0Zm9ybVwiLCB0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBlLmRlZmF1bHRGaWVsZFZhbHVlIHx8IFwiT2ZmXCI7XG4gICAgICAgICAgICB0LnRhcmdldC5jaGVja2VkID0gbiA9PT0gZS5leHBvcnRWYWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodGhpcy5lbmFibGVTY3JpcHRpbmcgJiYgdGhpcy5oYXNKU0FjdGlvbnMpIHtcbiAgICAgICAgICAgIHIuYWRkRXZlbnRMaXN0ZW5lcihcInVwZGF0ZWZyb21zYW5kYm94XCIsIGUgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpID0ge1xuICAgICAgICAgICAgICAgIHZhbHVlKGUpIHtcbiAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LmNoZWNrZWQgPSBcIk9mZlwiICE9PSBlLmRldGFpbC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIHQuc2V0VmFsdWUobiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS50YXJnZXQuY2hlY2tlZFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50RnJvbVNhbmRib3goaSwgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50TGlzdGVuZXJzKHIsIFtbXCJjaGFuZ2VcIiwgXCJWYWxpZGF0ZVwiXSwgW1wiY2hhbmdlXCIsIFwiQWN0aW9uXCJdLCBbXCJmb2N1c1wiLCBcIkZvY3VzXCJdLCBbXCJibHVyXCIsIFwiQmx1clwiXSwgW1wibW91c2Vkb3duXCIsIFwiTW91c2UgRG93blwiXSwgW1wibW91c2VlbnRlclwiLCBcIk1vdXNlIEVudGVyXCJdLCBbXCJtb3VzZWxlYXZlXCIsIFwiTW91c2UgRXhpdFwiXSwgW1wibW91c2V1cFwiLCBcIk1vdXNlIFVwXCJdXSwgdCA9PiB0LnRhcmdldC5jaGVja2VkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKHIpO1xuICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKHIpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChyKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFJhZGlvQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6IHQucmVuZGVyRm9ybXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImJ1dHRvbldpZGdldEFubm90YXRpb25cIiwgXCJyYWRpb0J1dHRvblwiKTtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5hbm5vdGF0aW9uU3RvcmFnZSxcbiAgICAgICAgICAgIGUgPSB0aGlzLmRhdGEsXG4gICAgICAgICAgICBuID0gZS5pZDtcbiAgICAgICAgICBsZXQgaSA9IHQuZ2V0VmFsdWUobiwge1xuICAgICAgICAgICAgdmFsdWU6IGUuZmllbGRWYWx1ZSA9PT0gZS5idXR0b25WYWx1ZVxuICAgICAgICAgIH0pLnZhbHVlO1xuICAgICAgICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiBpKSB7XG4gICAgICAgICAgICBpID0gaSAhPT0gZS5idXR0b25WYWx1ZTtcbiAgICAgICAgICAgIHQuc2V0VmFsdWUobiwge1xuICAgICAgICAgICAgICB2YWx1ZTogaVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgICAgICAgaC5hZGQocik7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJkYXRhLWVsZW1lbnQtaWRcIiwgbik7XG4gICAgICAgICAgci5kaXNhYmxlZCA9IGUucmVhZE9ubHk7XG4gICAgICAgICAgdGhpcy5fc2V0UmVxdWlyZWQociwgdGhpcy5kYXRhLnJlcXVpcmVkKTtcbiAgICAgICAgICByLnR5cGUgPSBcInJhZGlvXCI7XG4gICAgICAgICAgci5uYW1lID0gZS5iYXNlRmllbGROYW1lIHx8IGUuZmllbGROYW1lO1xuICAgICAgICAgIGkgJiYgci5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsICEwKTtcbiAgICAgICAgICByLnRhYkluZGV4ID0gYztcbiAgICAgICAgICByLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIG5hbWU6IGksXG4gICAgICAgICAgICAgIGNoZWNrZWQ6IHJcbiAgICAgICAgICAgIH0gPSBlLnRhcmdldDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLl9nZXRFbGVtZW50c0J5TmFtZShpLCBuKSkgdC5zZXRWYWx1ZShlLmlkLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiAhMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0LnNldFZhbHVlKG4sIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHIuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2V0Zm9ybVwiLCB0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBlLmRlZmF1bHRGaWVsZFZhbHVlO1xuICAgICAgICAgICAgdC50YXJnZXQuY2hlY2tlZCA9IG51bGwgIT0gbiAmJiBuID09PSBlLmJ1dHRvblZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0aGlzLmVuYWJsZVNjcmlwdGluZyAmJiB0aGlzLmhhc0pTQWN0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgaSA9IGUuYnV0dG9uVmFsdWU7XG4gICAgICAgICAgICByLmFkZEV2ZW50TGlzdGVuZXIoXCJ1cGRhdGVmcm9tc2FuZGJveFwiLCBlID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgciA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCByID0gaSA9PT0gZS5kZXRhaWwudmFsdWU7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy5fZ2V0RWxlbWVudHNCeU5hbWUoZS50YXJnZXQubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IHIgJiYgaS5pZCA9PT0gbjtcbiAgICAgICAgICAgICAgICAgICAgaS5kb21FbGVtZW50ICYmIChpLmRvbUVsZW1lbnQuY2hlY2tlZCA9IGUpO1xuICAgICAgICAgICAgICAgICAgICB0LnNldFZhbHVlKGkuaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveChyLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRMaXN0ZW5lcnMociwgW1tcImNoYW5nZVwiLCBcIlZhbGlkYXRlXCJdLCBbXCJjaGFuZ2VcIiwgXCJBY3Rpb25cIl0sIFtcImZvY3VzXCIsIFwiRm9jdXNcIl0sIFtcImJsdXJcIiwgXCJCbHVyXCJdLCBbXCJtb3VzZWRvd25cIiwgXCJNb3VzZSBEb3duXCJdLCBbXCJtb3VzZWVudGVyXCIsIFwiTW91c2UgRW50ZXJcIl0sIFtcIm1vdXNlbGVhdmVcIiwgXCJNb3VzZSBFeGl0XCJdLCBbXCJtb3VzZXVwXCIsIFwiTW91c2UgVXBcIl1dLCB0ID0+IHQudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3Iocik7XG4gICAgICAgICAgdGhpcy5fc2V0RGVmYXVsdFByb3BlcnRpZXNGcm9tSlMocik7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kKHIpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgUHVzaEJ1dHRvbldpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgTGlua0Fubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlnbm9yZUJvcmRlcjogdC5kYXRhLmhhc0FwcGVhcmFuY2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgY29uc3QgdCA9IHN1cGVyLnJlbmRlcigpO1xuICAgICAgICAgIHQuY2xhc3NMaXN0LmFkZChcImJ1dHRvbldpZGdldEFubm90YXRpb25cIiwgXCJwdXNoQnV0dG9uXCIpO1xuICAgICAgICAgIHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQgJiYgKHQudGl0bGUgPSB0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KTtcbiAgICAgICAgICBjb25zdCBlID0gdC5sYXN0Q2hpbGQ7XG4gICAgICAgICAgaWYgKHRoaXMuZW5hYmxlU2NyaXB0aW5nICYmIHRoaXMuaGFzSlNBY3Rpb25zICYmIGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKGUpO1xuICAgICAgICAgICAgZS5hZGRFdmVudExpc3RlbmVyKFwidXBkYXRlZnJvbXNhbmRib3hcIiwgdCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoRXZlbnRGcm9tU2FuZGJveCh7fSwgdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgc3VwZXIodCwge1xuICAgICAgICAgICAgaXNSZW5kZXJhYmxlOiB0LnJlbmRlckZvcm1zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJjaG9pY2VXaWRnZXRBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmFubm90YXRpb25TdG9yYWdlLFxuICAgICAgICAgICAgZSA9IHRoaXMuZGF0YS5pZCxcbiAgICAgICAgICAgIG4gPSB0LmdldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZGF0YS5maWVsZFZhbHVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2VsZWN0XCIpO1xuICAgICAgICAgIGguYWRkKGkpO1xuICAgICAgICAgIGkuc2V0QXR0cmlidXRlKFwiZGF0YS1lbGVtZW50LWlkXCIsIGUpO1xuICAgICAgICAgIGkuZGlzYWJsZWQgPSB0aGlzLmRhdGEucmVhZE9ubHk7XG4gICAgICAgICAgdGhpcy5fc2V0UmVxdWlyZWQoaSwgdGhpcy5kYXRhLnJlcXVpcmVkKTtcbiAgICAgICAgICBpLm5hbWUgPSB0aGlzLmRhdGEuYmFzZUZpZWxkTmFtZSB8fCB0aGlzLmRhdGEuZmllbGROYW1lO1xuICAgICAgICAgIGkudGFiSW5kZXggPSBjO1xuICAgICAgICAgIGxldCByID0gdGhpcy5kYXRhLmNvbWJvICYmIHRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCA+IDA7XG4gICAgICAgICAgaWYgKCF0aGlzLmRhdGEuY29tYm8pIHtcbiAgICAgICAgICAgIGkuc2l6ZSA9IHRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5tdWx0aVNlbGVjdCAmJiAoaS5tdWx0aXBsZSA9ICEwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwicmVzZXRmb3JtXCIsIHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZSA9IHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiBpLm9wdGlvbnMpIHQuc2VsZWN0ZWQgPSB0LnZhbHVlID09PSBlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLmRhdGEub3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJvcHRpb25cIik7XG4gICAgICAgICAgICBlLnRleHRDb250ZW50ID0gdC5kaXNwbGF5VmFsdWU7XG4gICAgICAgICAgICBlLnZhbHVlID0gdC5leHBvcnRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChuLnZhbHVlLmluY2x1ZGVzKHQuZXhwb3J0VmFsdWUpKSB7XG4gICAgICAgICAgICAgIGUuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwgITApO1xuICAgICAgICAgICAgICByID0gITE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpLmFwcGVuZChlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHMgPSBudWxsO1xuICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm9wdGlvblwiKTtcbiAgICAgICAgICAgIHQudmFsdWUgPSBcIiBcIjtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwiaGlkZGVuXCIsICEwKTtcbiAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIiwgITApO1xuICAgICAgICAgICAgaS5wcmVwZW5kKHQpO1xuICAgICAgICAgICAgcyA9ICgpID0+IHtcbiAgICAgICAgICAgICAgdC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgaS5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgcyk7XG4gICAgICAgICAgICAgIHMgPSBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGkuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBnZXRWYWx1ZSA9IHQgPT4ge1xuICAgICAgICAgICAgY29uc3QgZSA9IHQgPyBcInZhbHVlXCIgOiBcInRleHRDb250ZW50XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuLFxuICAgICAgICAgICAgICAgIG11bHRpcGxlOiByXG4gICAgICAgICAgICAgIH0gPSBpO1xuICAgICAgICAgICAgcmV0dXJuIHIgPyBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwobiwgdCA9PiB0LnNlbGVjdGVkKS5tYXAodCA9PiB0W2VdKSA6IC0xID09PSBuLnNlbGVjdGVkSW5kZXggPyBudWxsIDogbltuLnNlbGVjdGVkSW5kZXhdW2VdO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IGEgPSBnZXRWYWx1ZSghMSk7XG4gICAgICAgICAgY29uc3QgZ2V0SXRlbXMgPSB0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGUgPSB0LnRhcmdldC5vcHRpb25zO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChlLCB0ID0+ICh7XG4gICAgICAgICAgICAgIGRpc3BsYXlWYWx1ZTogdC50ZXh0Q29udGVudCxcbiAgICAgICAgICAgICAgZXhwb3J0VmFsdWU6IHQudmFsdWVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICh0aGlzLmVuYWJsZVNjcmlwdGluZyAmJiB0aGlzLmhhc0pTQWN0aW9ucykge1xuICAgICAgICAgICAgaS5hZGRFdmVudExpc3RlbmVyKFwidXBkYXRlZnJvbXNhbmRib3hcIiwgbiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHIgPSB7XG4gICAgICAgICAgICAgICAgdmFsdWUobikge1xuICAgICAgICAgICAgICAgICAgdmFyIF9zNTtcbiAgICAgICAgICAgICAgICAgIChfczUgPSBzKSA9PT0gbnVsbCB8fCBfczUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9zNSgpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgciA9IG4uZGV0YWlsLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvID0gbmV3IFNldChBcnJheS5pc0FycmF5KHIpID8gciA6IFtyXSk7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgaS5vcHRpb25zKSB0LnNlbGVjdGVkID0gby5oYXModC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdldFZhbHVlKCEwKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBhID0gZ2V0VmFsdWUoITEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVTZWxlY3Rpb24odCkge1xuICAgICAgICAgICAgICAgICAgaS5tdWx0aXBsZSA9ICEwO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVtb3ZlKG4pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBpLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHMgPSBuLmRldGFpbC5yZW1vdmU7XG4gICAgICAgICAgICAgICAgICByW3NdLnNlbGVjdGVkID0gITE7XG4gICAgICAgICAgICAgICAgICBpLnJlbW92ZShzKTtcbiAgICAgICAgICAgICAgICAgIGlmIChyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLTEgPT09IEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXguY2FsbChyLCB0ID0+IHQuc2VsZWN0ZWQpICYmIChyWzBdLnNlbGVjdGVkID0gITApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdC5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZXRWYWx1ZSghMCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBnZXRJdGVtcyhuKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBhID0gZ2V0VmFsdWUoITEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2xlYXIobikge1xuICAgICAgICAgICAgICAgICAgZm9yICg7IDAgIT09IGkubGVuZ3RoOykgaS5yZW1vdmUoMCk7XG4gICAgICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBhID0gZ2V0VmFsdWUoITEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5zZXJ0KG4pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbmRleDogcixcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWU6IHMsXG4gICAgICAgICAgICAgICAgICAgICAgZXhwb3J0VmFsdWU6IG9cbiAgICAgICAgICAgICAgICAgICAgfSA9IG4uZGV0YWlsLmluc2VydCxcbiAgICAgICAgICAgICAgICAgICAgbCA9IGkuY2hpbGRyZW5bcl0sXG4gICAgICAgICAgICAgICAgICAgIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgYy50ZXh0Q29udGVudCA9IHM7XG4gICAgICAgICAgICAgICAgICBjLnZhbHVlID0gbztcbiAgICAgICAgICAgICAgICAgIGwgPyBsLmJlZm9yZShjKSA6IGkuYXBwZW5kKGMpO1xuICAgICAgICAgICAgICAgICAgdC5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZXRWYWx1ZSghMCksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBnZXRJdGVtcyhuKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBhID0gZ2V0VmFsdWUoITEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXRlbXMobikge1xuICAgICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgICBpdGVtczogclxuICAgICAgICAgICAgICAgICAgfSA9IG4uZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgZm9yICg7IDAgIT09IGkubGVuZ3RoOykgaS5yZW1vdmUoMCk7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2Ygcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWU6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRWYWx1ZTogblxuICAgICAgICAgICAgICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgICAgICAgICAgICAgIHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwib3B0aW9uXCIpO1xuICAgICAgICAgICAgICAgICAgICByLnRleHRDb250ZW50ID0gZTtcbiAgICAgICAgICAgICAgICAgICAgci52YWx1ZSA9IG47XG4gICAgICAgICAgICAgICAgICAgIGkuYXBwZW5kKHIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaS5vcHRpb25zLmxlbmd0aCA+IDAgJiYgKGkub3B0aW9uc1swXS5zZWxlY3RlZCA9ICEwKTtcbiAgICAgICAgICAgICAgICAgIHQuc2V0VmFsdWUoZSwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ2V0VmFsdWUoITApLFxuICAgICAgICAgICAgICAgICAgICBpdGVtczogZ2V0SXRlbXMobilcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgYSA9IGdldFZhbHVlKCExKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGluZGljZXMobikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IG5ldyBTZXQobi5kZXRhaWwuaW5kaWNlcyk7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2Ygbi50YXJnZXQub3B0aW9ucykgdC5zZWxlY3RlZCA9IGkuaGFzKHQuaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgdC5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBnZXRWYWx1ZSghMClcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgYSA9IGdldFZhbHVlKCExKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVkaXRhYmxlKHQpIHtcbiAgICAgICAgICAgICAgICAgIHQudGFyZ2V0LmRpc2FibGVkID0gIXQuZGV0YWlsLmVkaXRhYmxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2hFdmVudEZyb21TYW5kYm94KHIsIG4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCBuID0+IHtcbiAgICAgICAgICAgICAgdmFyIF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTEwO1xuICAgICAgICAgICAgICBjb25zdCBpID0gZ2V0VmFsdWUoITApO1xuICAgICAgICAgICAgICB0LnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogaVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgbi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAoX3RoaXMkbGlua1NlcnZpY2UkZXZlMTAgPSB0aGlzLmxpbmtTZXJ2aWNlLmV2ZW50QnVzKSA9PT0gbnVsbCB8fCBfdGhpcyRsaW5rU2VydmljZSRldmUxMCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkbGlua1NlcnZpY2UkZXZlMTAuZGlzcGF0Y2goXCJkaXNwYXRjaGV2ZW50aW5zYW5kYm94XCIsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICBpZDogZSxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwiS2V5c3Ryb2tlXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogYSxcbiAgICAgICAgICAgICAgICAgIGNoYW5nZUV4OiBpLFxuICAgICAgICAgICAgICAgICAgd2lsbENvbW1pdDogITEsXG4gICAgICAgICAgICAgICAgICBjb21taXRLZXk6IDEsXG4gICAgICAgICAgICAgICAgICBrZXlEb3duOiAhMVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50TGlzdGVuZXJzKGksIFtbXCJmb2N1c1wiLCBcIkZvY3VzXCJdLCBbXCJibHVyXCIsIFwiQmx1clwiXSwgW1wibW91c2Vkb3duXCIsIFwiTW91c2UgRG93blwiXSwgW1wibW91c2VlbnRlclwiLCBcIk1vdXNlIEVudGVyXCJdLCBbXCJtb3VzZWxlYXZlXCIsIFwiTW91c2UgRXhpdFwiXSwgW1wibW91c2V1cFwiLCBcIk1vdXNlIFVwXCJdLCBbXCJpbnB1dFwiLCBcIkFjdGlvblwiXSwgW1wiaW5wdXRcIiwgXCJWYWxpZGF0ZVwiXV0sIHQgPT4gdC50YXJnZXQudmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSBpLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgdC5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBnZXRWYWx1ZSghMClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZGF0YS5jb21ibyAmJiB0aGlzLl9zZXRUZXh0U3R5bGUoaSk7XG4gICAgICAgICAgdGhpcy5fc2V0QmFja2dyb3VuZENvbG9yKGkpO1xuICAgICAgICAgIHRoaXMuX3NldERlZmF1bHRQcm9wZXJ0aWVzRnJvbUpTKGkpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChpKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFBvcHVwQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX2UkdGl0bGVPYmosIF9lJGNvbnRlbnRzT2JqLCBfZSRyaWNoVGV4dDtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBkYXRhOiBlLFxuICAgICAgICAgICAgZWxlbWVudHM6IG5cbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEhKChfZSR0aXRsZU9iaiA9IGUudGl0bGVPYmopICE9PSBudWxsICYmIF9lJHRpdGxlT2JqICE9PSB2b2lkIDAgJiYgX2UkdGl0bGVPYmouc3RyIHx8IChfZSRjb250ZW50c09iaiA9IGUuY29udGVudHNPYmopICE9PSBudWxsICYmIF9lJGNvbnRlbnRzT2JqICE9PSB2b2lkIDAgJiYgX2UkY29udGVudHNPYmouc3RyIHx8IChfZSRyaWNoVGV4dCA9IGUucmljaFRleHQpICE9PSBudWxsICYmIF9lJHJpY2hUZXh0ICE9PSB2b2lkIDAgJiYgX2UkcmljaFRleHQuc3RyKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZWxlbWVudHMgPSBuO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwicG9wdXBBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIGNvbnN0IHQgPSBuZXcgUG9wdXBFbGVtZW50KHtcbiAgICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lcixcbiAgICAgICAgICAgICAgY29sb3I6IHRoaXMuZGF0YS5jb2xvcixcbiAgICAgICAgICAgICAgdGl0bGVPYmo6IHRoaXMuZGF0YS50aXRsZU9iaixcbiAgICAgICAgICAgICAgbW9kaWZpY2F0aW9uRGF0ZTogdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGUsXG4gICAgICAgICAgICAgIGNvbnRlbnRzT2JqOiB0aGlzLmRhdGEuY29udGVudHNPYmosXG4gICAgICAgICAgICAgIHJpY2hUZXh0OiB0aGlzLmRhdGEucmljaFRleHQsXG4gICAgICAgICAgICAgIHJlY3Q6IHRoaXMuZGF0YS5yZWN0LFxuICAgICAgICAgICAgICBwYXJlbnRSZWN0OiB0aGlzLmRhdGEucGFyZW50UmVjdCB8fCBudWxsLFxuICAgICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50LFxuICAgICAgICAgICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50cyxcbiAgICAgICAgICAgICAgb3BlbjogdGhpcy5kYXRhLm9wZW5cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgbiBvZiB0aGlzLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICBuLnBvcHVwID0gdDtcbiAgICAgICAgICAgIGUucHVzaChuLmRhdGEuaWQpO1xuICAgICAgICAgICAgbi5hZGRIaWdobGlnaHRBcmVhKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29udGFpbmVyLnNldEF0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIiwgZS5qb2luKFwiLFwiKSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgX05lID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0JlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1VlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX0hlID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX1NlMiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgdmFyIF9idDIgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfV2UgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfR2UgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfVmUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfJGUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfWGUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfS2UgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfWWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfSmUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfUWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfWmUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfcWUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfemUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfamUgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIFBvcHVwRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX2plKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX3plKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX3FlKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfTmUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfQmUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2plLCBfamUyKS5iaW5kKHRoaXMpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1VlLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF96ZSwgX3plMikuYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9IZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfcWUsIF9xZTIpLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfU2UyLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2J0Miwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9XZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9HZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9WZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF8kZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9YZSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfS2UsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfWWUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfSmUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfUWUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfWmUsIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogZSxcbiAgICAgICAgICAgIGNvbG9yOiBuLFxuICAgICAgICAgICAgZWxlbWVudHM6IGksXG4gICAgICAgICAgICB0aXRsZU9iajogcyxcbiAgICAgICAgICAgIG1vZGlmaWNhdGlvbkRhdGU6IGEsXG4gICAgICAgICAgICBjb250ZW50c09iajogbyxcbiAgICAgICAgICAgIHJpY2hUZXh0OiBsLFxuICAgICAgICAgICAgcGFyZW50OiBjLFxuICAgICAgICAgICAgcmVjdDogaCxcbiAgICAgICAgICAgIHBhcmVudFJlY3Q6IGQsXG4gICAgICAgICAgICBvcGVuOiB1XG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9idDIsIGUpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfUWUsIHMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfV2UsIG8pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfSmUsIGwpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfVmUsIGMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfU2UyLCBuKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1llLCBoKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgXyRlLCBkKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0dlLCBpKTtcbiAgICAgICAgICBjb25zdCBwID0gci5QREZEYXRlU3RyaW5nLnRvRGF0ZU9iamVjdChhKTtcbiAgICAgICAgICBwICYmIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfTmUsIGMubDEwbi5nZXQoXCJhbm5vdGF0aW9uX2RhdGVfc3RyaW5nXCIsIHtcbiAgICAgICAgICAgIGRhdGU6IHAudG9Mb2NhbGVEYXRlU3RyaW5nKCksXG4gICAgICAgICAgICB0aW1lOiBwLnRvTG9jYWxlVGltZVN0cmluZygpXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHRoaXMudHJpZ2dlciA9IGkuZmxhdE1hcCh0ID0+IHQuZ2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy50cmlnZ2VyKSB7XG4gICAgICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0hlKSk7XG4gICAgICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfVWUpKTtcbiAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9CZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikuaGlkZGVuID0gITA7XG4gICAgICAgICAgdSAmJiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9xZSwgX3FlMikuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfS2UpKSByZXR1cm47XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICAgICAgdmlldzogdFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB2aWV3cG9ydDoge1xuICAgICAgICAgICAgICAgIHJhd0RpbXM6IHtcbiAgICAgICAgICAgICAgICAgIHBhZ2VXaWR0aDogZSxcbiAgICAgICAgICAgICAgICAgIHBhZ2VIZWlnaHQ6IG4sXG4gICAgICAgICAgICAgICAgICBwYWdlWDogcixcbiAgICAgICAgICAgICAgICAgIHBhZ2VZOiBzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9WZSksXG4gICAgICAgICAgICBhID0gX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9LZSwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSk7XG4gICAgICAgICAgYS5jbGFzc05hbWUgPSBcInBvcHVwXCI7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfU2UyKSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IGEuc3R5bGUub3V0bGluZUNvbG9yID0gaS5VdGlsLm1ha2VIZXhDb2xvciguLi5fY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1NlMikpO1xuICAgICAgICAgICAgaWYgKENTUy5zdXBwb3J0cyhcImJhY2tncm91bmQtY29sb3JcIiwgXCJjb2xvci1taXgoaW4gc3JnYiwgcmVkIDMwJSwgd2hpdGUpXCIpKSBhLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IFwiY29sb3ItbWl4KGluIHNyZ2IsIFwiLmNvbmNhdCh0LCBcIiAzMCUsIHdoaXRlKVwiKTtlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdCA9IC43O1xuICAgICAgICAgICAgICBhLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGkuVXRpbC5tYWtlSGV4Q29sb3IoLi4uX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9TZTIpLm1hcChlID0+IE1hdGguZmxvb3IodCAqICgyNTUgLSBlKSArIGUpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICAgICAgICBvLmNsYXNzTmFtZSA9IFwiaGVhZGVyXCI7XG4gICAgICAgICAgY29uc3QgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJoMVwiKTtcbiAgICAgICAgICBvLmFwcGVuZChjKTtcbiAgICAgICAgICAoe1xuICAgICAgICAgICAgZGlyOiBjLmRpcixcbiAgICAgICAgICAgIHN0cjogYy50ZXh0Q29udGVudFxuICAgICAgICAgIH0gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1FlKSk7XG4gICAgICAgICAgYS5hcHBlbmQobyk7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfTmUpKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7XG4gICAgICAgICAgICB0LmNsYXNzTGlzdC5hZGQoXCJwb3B1cERhdGVcIik7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX05lKS50aGVuKGUgPT4ge1xuICAgICAgICAgICAgICB0LnRleHRDb250ZW50ID0gZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgby5hcHBlbmQodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGggPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1dlKSxcbiAgICAgICAgICAgIGQgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0plKTtcbiAgICAgICAgICBpZiAoIShkICE9PSBudWxsICYmIGQgIT09IHZvaWQgMCAmJiBkLnN0cikgfHwgaCAhPT0gbnVsbCAmJiBoICE9PSB2b2lkIDAgJiYgaC5zdHIgJiYgaC5zdHIgIT09IGQuc3RyKSB7XG4gICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5fZm9ybWF0Q29udGVudHMoaCk7XG4gICAgICAgICAgICBhLmFwcGVuZCh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbC5YZmFMYXllci5yZW5kZXIoe1xuICAgICAgICAgICAgICB4ZmFIdG1sOiBkLmh0bWwsXG4gICAgICAgICAgICAgIGludGVudDogXCJyaWNoVGV4dFwiLFxuICAgICAgICAgICAgICBkaXY6IGFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYS5sYXN0Q2hpbGQuY2xhc3NMaXN0LmFkZChcInJpY2hUZXh0XCIsIFwicG9wdXBDb250ZW50XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgdSA9ICEhX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF8kZSksXG4gICAgICAgICAgICBwID0gdSA/IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfJGUpIDogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZZSk7XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfR2UpKSBpZiAoIXAgfHwgbnVsbCAhPT0gaS5VdGlsLmludGVyc2VjdCh0LmRhdGEucmVjdCwgcCkpIHtcbiAgICAgICAgICAgIHAgPSB0LmRhdGEucmVjdDtcbiAgICAgICAgICAgIHUgPSAhMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmID0gaS5VdGlsLm5vcm1hbGl6ZVJlY3QoW3BbMF0sIHRbM10gLSBwWzFdICsgdFsxXSwgcFsyXSwgdFszXSAtIHBbM10gKyB0WzFdXSksXG4gICAgICAgICAgICBnID0gdSA/IHBbMl0gLSBwWzBdICsgNSA6IDAsXG4gICAgICAgICAgICBtID0gZlswXSArIGcsXG4gICAgICAgICAgICBiID0gZlsxXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3R5bGU6IHZcbiAgICAgICAgICAgIH0gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0Mik7XG4gICAgICAgICAgdi5sZWZ0ID0gMTAwICogKG0gLSByKSAvIGUgKyBcIiVcIjtcbiAgICAgICAgICB2LnRvcCA9IDEwMCAqIChiIC0gcykgLyBuICsgXCIlXCI7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9idDIpLmFwcGVuZChhKTtcbiAgICAgICAgfVxuICAgICAgICBfZm9ybWF0Q29udGVudHModCkge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBzdHI6IGUsXG4gICAgICAgICAgICBkaXI6IG5cbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBjb25zdCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIik7XG4gICAgICAgICAgaS5jbGFzc0xpc3QuYWRkKFwicG9wdXBDb250ZW50XCIpO1xuICAgICAgICAgIGkuZGlyID0gbjtcbiAgICAgICAgICBjb25zdCByID0gZS5zcGxpdCgvKD86XFxyXFxuP3xcXG4pLyk7XG4gICAgICAgICAgZm9yIChsZXQgdCA9IDAsIGUgPSByLmxlbmd0aDsgdCA8IGU7ICsrdCkge1xuICAgICAgICAgICAgY29uc3QgbiA9IHJbdF07XG4gICAgICAgICAgICBpLmFwcGVuZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSk7XG4gICAgICAgICAgICB0IDwgZSAtIDEgJiYgaS5hcHBlbmQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yY2VIaWRlKCkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfWmUsIHRoaXMuaXNWaXNpYmxlKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1plKSAmJiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9idDIpLmhpZGRlbiA9ICEwKTtcbiAgICAgICAgfVxuICAgICAgICBtYXliZVNob3coKSB7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWmUpKSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1plLCAhMSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikuaGlkZGVuID0gITE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGdldCBpc1Zpc2libGUoKSB7XG4gICAgICAgICAgcmV0dXJuICExID09PSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikuaGlkZGVuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfcWUyKCkge1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1hlLCAhX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9YZSkpO1xuICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9YZSkpIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF96ZSwgX3plMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9qZSwgX2plMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSGUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3plMigpIHtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9LZSkgfHwgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlKSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1hlKSAmJiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0MikuY2xhc3NMaXN0LmFkZChcImZvY3VzZWRcIik7ZWxzZSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9idDIpLmhpZGRlbiA9ICExO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYnQyKS5zdHlsZS56SW5kZXggPSBwYXJzZUludChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0Mikuc3R5bGUuekluZGV4KSArIDFlMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2plMigpIHtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9idDIpLmNsYXNzTGlzdC5yZW1vdmUoXCJmb2N1c2VkXCIpO1xuICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWGUpICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9idDIpLmhpZGRlbiA9ICEwO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYnQyKS5zdHlsZS56SW5kZXggPSBwYXJzZUludChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2J0Mikuc3R5bGUuekluZGV4KSAtIDFlMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdCRkYXRhJHRpdGxlT2JqMiwgX3QkZGF0YSRjb250ZW50c09iajIsIF90JGRhdGEkcmljaFRleHQyO1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISEodC5kYXRhLnBvcHVwUmVmIHx8IChfdCRkYXRhJHRpdGxlT2JqMiA9IHQuZGF0YS50aXRsZU9iaikgIT09IG51bGwgJiYgX3QkZGF0YSR0aXRsZU9iajIgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHRpdGxlT2JqMi5zdHIgfHwgKF90JGRhdGEkY29udGVudHNPYmoyID0gdC5kYXRhLmNvbnRlbnRzT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqMiAhPT0gdm9pZCAwICYmIF90JGRhdGEkY29udGVudHNPYmoyLnN0ciB8fCAoX3QkZGF0YSRyaWNoVGV4dDIgPSB0LmRhdGEucmljaFRleHQpICE9PSBudWxsICYmIF90JGRhdGEkcmljaFRleHQyICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRyaWNoVGV4dDIuc3RyKSxcbiAgICAgICAgICAgIGlnbm9yZUJvcmRlcjogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gdC5kYXRhLnRleHRDb250ZW50O1xuICAgICAgICAgIHRoaXMudGV4dFBvc2l0aW9uID0gdC5kYXRhLnRleHRQb3NpdGlvbjtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25FZGl0b3JUeXBlID0gaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5GUkVFVEVYVDtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImZyZWVUZXh0QW5ub3RhdGlvblwiKTtcbiAgICAgICAgICBpZiAodGhpcy50ZXh0Q29udGVudCkge1xuICAgICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgICAgICB0LmNsYXNzTGlzdC5hZGQoXCJhbm5vdGF0aW9uVGV4dENvbnRlbnRcIik7XG4gICAgICAgICAgICB0LnNldEF0dHJpYnV0ZShcInJvbGVcIiwgXCJjb21tZW50XCIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMudGV4dENvbnRlbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgICAgICAgICAgICBuLnRleHRDb250ZW50ID0gZTtcbiAgICAgICAgICAgICAgdC5hcHBlbmQobik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZGF0YS5wb3B1cFJlZiB8fCB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgICAgICAgIHRoaXMuX2VkaXRPbkRvdWJsZUNsaWNrKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLkZyZWVUZXh0QW5ub3RhdGlvbkVsZW1lbnQgPSBGcmVlVGV4dEFubm90YXRpb25FbGVtZW50O1xuICAgICAgdmFyIF90biA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgTGluZUFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdmFyIF90JGRhdGEkdGl0bGVPYmozLCBfdCRkYXRhJGNvbnRlbnRzT2JqMywgX3QkZGF0YSRyaWNoVGV4dDM7XG4gICAgICAgICAgc3VwZXIodCwge1xuICAgICAgICAgICAgaXNSZW5kZXJhYmxlOiAhISh0LmRhdGEucG9wdXBSZWYgfHwgKF90JGRhdGEkdGl0bGVPYmozID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqMyAhPT0gdm9pZCAwICYmIF90JGRhdGEkdGl0bGVPYmozLnN0ciB8fCAoX3QkZGF0YSRjb250ZW50c09iajMgPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmozICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRjb250ZW50c09iajMuc3RyIHx8IChfdCRkYXRhJHJpY2hUZXh0MyA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dDMgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHJpY2hUZXh0My5zdHIpLFxuICAgICAgICAgICAgaWdub3JlQm9yZGVyOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF90biwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwibGluZUFubm90YXRpb25cIik7XG4gICAgICAgICAgY29uc3QgdCA9IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgd2lkdGg6IGUsXG4gICAgICAgICAgICAgIGhlaWdodDogblxuICAgICAgICAgICAgfSA9IGdldFJlY3REaW1zKHQucmVjdCksXG4gICAgICAgICAgICBpID0gdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZShlLCBuLCAhMCksXG4gICAgICAgICAgICByID0gX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF90biwgdGhpcy5zdmdGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoXCJzdmc6bGluZVwiKSk7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJ4MVwiLCB0LnJlY3RbMl0gLSB0LmxpbmVDb29yZGluYXRlc1swXSk7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJ5MVwiLCB0LnJlY3RbM10gLSB0LmxpbmVDb29yZGluYXRlc1sxXSk7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJ4MlwiLCB0LnJlY3RbMl0gLSB0LmxpbmVDb29yZGluYXRlc1syXSk7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJ5MlwiLCB0LnJlY3RbM10gLSB0LmxpbmVDb29yZGluYXRlc1szXSk7XG4gICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiwgdC5ib3JkZXJTdHlsZS53aWR0aCB8fCAxKTtcbiAgICAgICAgICByLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIHIuc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIGkuYXBwZW5kKHIpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChpKTtcbiAgICAgICAgICB0LnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdG4pO1xuICAgICAgICB9XG4gICAgICAgIGFkZEhpZ2hsaWdodEFyZWEoKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhpZ2hsaWdodEFyZWFcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBfZW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNsYXNzIFNxdWFyZUFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdmFyIF90JGRhdGEkdGl0bGVPYmo0LCBfdCRkYXRhJGNvbnRlbnRzT2JqNCwgX3QkZGF0YSRyaWNoVGV4dDQ7XG4gICAgICAgICAgc3VwZXIodCwge1xuICAgICAgICAgICAgaXNSZW5kZXJhYmxlOiAhISh0LmRhdGEucG9wdXBSZWYgfHwgKF90JGRhdGEkdGl0bGVPYmo0ID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqNCAhPT0gdm9pZCAwICYmIF90JGRhdGEkdGl0bGVPYmo0LnN0ciB8fCAoX3QkZGF0YSRjb250ZW50c09iajQgPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmo0ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRjb250ZW50c09iajQuc3RyIHx8IChfdCRkYXRhJHJpY2hUZXh0NCA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dDQgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHJpY2hUZXh0NC5zdHIpLFxuICAgICAgICAgICAgaWdub3JlQm9yZGVyOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9lbiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwic3F1YXJlQW5ub3RhdGlvblwiKTtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5kYXRhLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB3aWR0aDogZSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBuXG4gICAgICAgICAgICB9ID0gZ2V0UmVjdERpbXModC5yZWN0KSxcbiAgICAgICAgICAgIGkgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUsIG4sICEwKSxcbiAgICAgICAgICAgIHIgPSB0LmJvcmRlclN0eWxlLndpZHRoLFxuICAgICAgICAgICAgcyA9IF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfZW4sIHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOnJlY3RcIikpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwieFwiLCByIC8gMik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJ5XCIsIHIgLyAyKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGUgLSByKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBuIC0gcik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiwgciB8fCAxKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIGkuYXBwZW5kKHMpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChpKTtcbiAgICAgICAgICB0LnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZW4pO1xuICAgICAgICB9XG4gICAgICAgIGFkZEhpZ2hsaWdodEFyZWEoKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhpZ2hsaWdodEFyZWFcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBfbm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIGNsYXNzIENpcmNsZUFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdmFyIF90JGRhdGEkdGl0bGVPYmo1LCBfdCRkYXRhJGNvbnRlbnRzT2JqNSwgX3QkZGF0YSRyaWNoVGV4dDU7XG4gICAgICAgICAgc3VwZXIodCwge1xuICAgICAgICAgICAgaXNSZW5kZXJhYmxlOiAhISh0LmRhdGEucG9wdXBSZWYgfHwgKF90JGRhdGEkdGl0bGVPYmo1ID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqNSAhPT0gdm9pZCAwICYmIF90JGRhdGEkdGl0bGVPYmo1LnN0ciB8fCAoX3QkZGF0YSRjb250ZW50c09iajUgPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmo1ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRjb250ZW50c09iajUuc3RyIHx8IChfdCRkYXRhJHJpY2hUZXh0NSA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dDUgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHJpY2hUZXh0NS5zdHIpLFxuICAgICAgICAgICAgaWdub3JlQm9yZGVyOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9ubiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiY2lyY2xlQW5ub3RhdGlvblwiKTtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5kYXRhLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB3aWR0aDogZSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBuXG4gICAgICAgICAgICB9ID0gZ2V0UmVjdERpbXModC5yZWN0KSxcbiAgICAgICAgICAgIGkgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlKGUsIG4sICEwKSxcbiAgICAgICAgICAgIHIgPSB0LmJvcmRlclN0eWxlLndpZHRoLFxuICAgICAgICAgICAgcyA9IF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbm4sIHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGVFbGVtZW50KFwic3ZnOmVsbGlwc2VcIikpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwiY3hcIiwgZSAvIDIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwiY3lcIiwgbiAvIDIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwicnhcIiwgZSAvIDIgLSByIC8gMik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJyeVwiLCBuIC8gMiAtIHIgLyAyKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiLCByIHx8IDEpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwic3Ryb2tlXCIsIFwidHJhbnNwYXJlbnRcIik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIik7XG4gICAgICAgICAgaS5hcHBlbmQocyk7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuYXBwZW5kKGkpO1xuICAgICAgICAgIHQucG9wdXBSZWYgfHwgdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ubik7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGlnaGxpZ2h0QXJlYSgpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiaGlnaGxpZ2h0QXJlYVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIF9pbiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdCRkYXRhJHRpdGxlT2JqNiwgX3QkZGF0YSRjb250ZW50c09iajYsIF90JGRhdGEkcmljaFRleHQ2O1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISEodC5kYXRhLnBvcHVwUmVmIHx8IChfdCRkYXRhJHRpdGxlT2JqNiA9IHQuZGF0YS50aXRsZU9iaikgIT09IG51bGwgJiYgX3QkZGF0YSR0aXRsZU9iajYgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHRpdGxlT2JqNi5zdHIgfHwgKF90JGRhdGEkY29udGVudHNPYmo2ID0gdC5kYXRhLmNvbnRlbnRzT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqNiAhPT0gdm9pZCAwICYmIF90JGRhdGEkY29udGVudHNPYmo2LnN0ciB8fCAoX3QkZGF0YSRyaWNoVGV4dDYgPSB0LmRhdGEucmljaFRleHQpICE9PSBudWxsICYmIF90JGRhdGEkcmljaFRleHQ2ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRyaWNoVGV4dDYuc3RyKSxcbiAgICAgICAgICAgIGlnbm9yZUJvcmRlcjogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfaW4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lckNsYXNzTmFtZSA9IFwicG9seWxpbmVBbm5vdGF0aW9uXCI7XG4gICAgICAgICAgdGhpcy5zdmdFbGVtZW50TmFtZSA9IFwic3ZnOnBvbHlsaW5lXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jb250YWluZXJDbGFzc05hbWUpO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmRhdGEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICBoZWlnaHQ6IG5cbiAgICAgICAgICAgIH0gPSBnZXRSZWN0RGltcyh0LnJlY3QpLFxuICAgICAgICAgICAgaSA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSwgbiwgITApO1xuICAgICAgICAgIGxldCByID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBlIG9mIHQudmVydGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBlLnggLSB0LnJlY3RbMF0sXG4gICAgICAgICAgICAgIGkgPSB0LnJlY3RbM10gLSBlLnk7XG4gICAgICAgICAgICByLnB1c2gobiArIFwiLFwiICsgaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHIgPSByLmpvaW4oXCIgXCIpO1xuICAgICAgICAgIGNvbnN0IHMgPSBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2luLCB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCh0aGlzLnN2Z0VsZW1lbnROYW1lKSk7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJwb2ludHNcIiwgcik7XG4gICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utd2lkdGhcIiwgdC5ib3JkZXJTdHlsZS53aWR0aCB8fCAxKTtcbiAgICAgICAgICBzLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIHMuc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgIGkuYXBwZW5kKHMpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChpKTtcbiAgICAgICAgICB0LnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKHMsIHQpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBnZXRFbGVtZW50c1RvVHJpZ2dlclBvcHVwKCkge1xuICAgICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2luKTtcbiAgICAgICAgfVxuICAgICAgICBhZGRIaWdobGlnaHRBcmVhKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJoaWdobGlnaHRBcmVhXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjbGFzcyBQb2x5Z29uQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHN1cGVyKHQpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3NOYW1lID0gXCJwb2x5Z29uQW5ub3RhdGlvblwiO1xuICAgICAgICAgIHRoaXMuc3ZnRWxlbWVudE5hbWUgPSBcInN2Zzpwb2x5Z29uXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIENhcmV0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX3QkZGF0YSR0aXRsZU9iajcsIF90JGRhdGEkY29udGVudHNPYmo3LCBfdCRkYXRhJHJpY2hUZXh0NztcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEhKHQuZGF0YS5wb3B1cFJlZiB8fCAoX3QkZGF0YSR0aXRsZU9iajcgPSB0LmRhdGEudGl0bGVPYmopICE9PSBudWxsICYmIF90JGRhdGEkdGl0bGVPYmo3ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSR0aXRsZU9iajcuc3RyIHx8IChfdCRkYXRhJGNvbnRlbnRzT2JqNyA9IHQuZGF0YS5jb250ZW50c09iaikgIT09IG51bGwgJiYgX3QkZGF0YSRjb250ZW50c09iajcgIT09IHZvaWQgMCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqNy5zdHIgfHwgKF90JGRhdGEkcmljaFRleHQ3ID0gdC5kYXRhLnJpY2hUZXh0KSAhPT0gbnVsbCAmJiBfdCRkYXRhJHJpY2hUZXh0NyAhPT0gdm9pZCAwICYmIF90JGRhdGEkcmljaFRleHQ3LnN0ciksXG4gICAgICAgICAgICBpZ25vcmVCb3JkZXI6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJjYXJldEFubm90YXRpb25cIik7XG4gICAgICAgICAgdGhpcy5kYXRhLnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgX3JuID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICBjbGFzcyBJbmtBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdCRkYXRhJHRpdGxlT2JqOCwgX3QkZGF0YSRjb250ZW50c09iajgsIF90JGRhdGEkcmljaFRleHQ4O1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISEodC5kYXRhLnBvcHVwUmVmIHx8IChfdCRkYXRhJHRpdGxlT2JqOCA9IHQuZGF0YS50aXRsZU9iaikgIT09IG51bGwgJiYgX3QkZGF0YSR0aXRsZU9iajggIT09IHZvaWQgMCAmJiBfdCRkYXRhJHRpdGxlT2JqOC5zdHIgfHwgKF90JGRhdGEkY29udGVudHNPYmo4ID0gdC5kYXRhLmNvbnRlbnRzT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqOCAhPT0gdm9pZCAwICYmIF90JGRhdGEkY29udGVudHNPYmo4LnN0ciB8fCAoX3QkZGF0YSRyaWNoVGV4dDggPSB0LmRhdGEucmljaFRleHQpICE9PSBudWxsICYmIF90JGRhdGEkcmljaFRleHQ4ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRyaWNoVGV4dDguc3RyKSxcbiAgICAgICAgICAgIGlnbm9yZUJvcmRlcjogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfcm4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IFtdXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb250YWluZXJDbGFzc05hbWUgPSBcImlua0Fubm90YXRpb25cIjtcbiAgICAgICAgICB0aGlzLnN2Z0VsZW1lbnROYW1lID0gXCJzdmc6cG9seWxpbmVcIjtcbiAgICAgICAgICB0aGlzLmFubm90YXRpb25FZGl0b3JUeXBlID0gaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTks7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQodGhpcy5jb250YWluZXJDbGFzc05hbWUpO1xuICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLmRhdGEsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgICAgICBoZWlnaHQ6IG5cbiAgICAgICAgICAgIH0gPSBnZXRSZWN0RGltcyh0LnJlY3QpLFxuICAgICAgICAgICAgaSA9IHRoaXMuc3ZnRmFjdG9yeS5jcmVhdGUoZSwgbiwgITApO1xuICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0Lmlua0xpc3RzKSB7XG4gICAgICAgICAgICBsZXQgbiA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IGkueCAtIHQucmVjdFswXSxcbiAgICAgICAgICAgICAgICByID0gdC5yZWN0WzNdIC0gaS55O1xuICAgICAgICAgICAgICBuLnB1c2goXCJcIi5jb25jYXQoZSwgXCIsXCIpLmNvbmNhdChyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuID0gbi5qb2luKFwiIFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLnN2Z0ZhY3RvcnkuY3JlYXRlRWxlbWVudCh0aGlzLnN2Z0VsZW1lbnROYW1lKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcm4pLnB1c2gocik7XG4gICAgICAgICAgICByLnNldEF0dHJpYnV0ZShcInBvaW50c1wiLCBuKTtcbiAgICAgICAgICAgIHIuc2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIsIHQuYm9yZGVyU3R5bGUud2lkdGggfHwgMSk7XG4gICAgICAgICAgICByLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLCBcInRyYW5zcGFyZW50XCIpO1xuICAgICAgICAgICAgci5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwidHJhbnNwYXJlbnRcIik7XG4gICAgICAgICAgICB0LnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKHIsIHQpO1xuICAgICAgICAgICAgaS5hcHBlbmQocik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZChpKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWxlbWVudHNUb1RyaWdnZXJQb3B1cCgpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ybik7XG4gICAgICAgIH1cbiAgICAgICAgYWRkSGlnaGxpZ2h0QXJlYSgpIHtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiaGlnaGxpZ2h0QXJlYVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZS5JbmtBbm5vdGF0aW9uRWxlbWVudCA9IElua0Fubm90YXRpb25FbGVtZW50O1xuICAgICAgY2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX3QkZGF0YSR0aXRsZU9iajksIF90JGRhdGEkY29udGVudHNPYmo5LCBfdCRkYXRhJHJpY2hUZXh0OTtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEhKHQuZGF0YS5wb3B1cFJlZiB8fCAoX3QkZGF0YSR0aXRsZU9iajkgPSB0LmRhdGEudGl0bGVPYmopICE9PSBudWxsICYmIF90JGRhdGEkdGl0bGVPYmo5ICE9PSB2b2lkIDAgJiYgX3QkZGF0YSR0aXRsZU9iajkuc3RyIHx8IChfdCRkYXRhJGNvbnRlbnRzT2JqOSA9IHQuZGF0YS5jb250ZW50c09iaikgIT09IG51bGwgJiYgX3QkZGF0YSRjb250ZW50c09iajkgIT09IHZvaWQgMCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqOS5zdHIgfHwgKF90JGRhdGEkcmljaFRleHQ5ID0gdC5kYXRhLnJpY2hUZXh0KSAhPT0gbnVsbCAmJiBfdCRkYXRhJHJpY2hUZXh0OSAhPT0gdm9pZCAwICYmIF90JGRhdGEkcmljaFRleHQ5LnN0ciksXG4gICAgICAgICAgICBpZ25vcmVCb3JkZXI6ICEwLFxuICAgICAgICAgICAgY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuZGF0YS5wb3B1cFJlZiB8fCB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJoaWdobGlnaHRBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgVW5kZXJsaW5lQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX3QkZGF0YSR0aXRsZU9iajEwLCBfdCRkYXRhJGNvbnRlbnRzT2JqMTAsIF90JGRhdGEkcmljaFRleHQxMDtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEhKHQuZGF0YS5wb3B1cFJlZiB8fCAoX3QkZGF0YSR0aXRsZU9iajEwID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqMTAgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHRpdGxlT2JqMTAuc3RyIHx8IChfdCRkYXRhJGNvbnRlbnRzT2JqMTAgPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmoxMCAhPT0gdm9pZCAwICYmIF90JGRhdGEkY29udGVudHNPYmoxMC5zdHIgfHwgKF90JGRhdGEkcmljaFRleHQxMCA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dDEwICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRyaWNoVGV4dDEwLnN0ciksXG4gICAgICAgICAgICBpZ25vcmVCb3JkZXI6ICEwLFxuICAgICAgICAgICAgY3JlYXRlUXVhZHJpbGF0ZXJhbHM6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuZGF0YS5wb3B1cFJlZiB8fCB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJ1bmRlcmxpbmVBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2xhc3MgU3F1aWdnbHlBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdCRkYXRhJHRpdGxlT2JqMTEsIF90JGRhdGEkY29udGVudHNPYmoxMSwgX3QkZGF0YSRyaWNoVGV4dDExO1xuICAgICAgICAgIHN1cGVyKHQsIHtcbiAgICAgICAgICAgIGlzUmVuZGVyYWJsZTogISEodC5kYXRhLnBvcHVwUmVmIHx8IChfdCRkYXRhJHRpdGxlT2JqMTEgPSB0LmRhdGEudGl0bGVPYmopICE9PSBudWxsICYmIF90JGRhdGEkdGl0bGVPYmoxMSAhPT0gdm9pZCAwICYmIF90JGRhdGEkdGl0bGVPYmoxMS5zdHIgfHwgKF90JGRhdGEkY29udGVudHNPYmoxMSA9IHQuZGF0YS5jb250ZW50c09iaikgIT09IG51bGwgJiYgX3QkZGF0YSRjb250ZW50c09iajExICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRjb250ZW50c09iajExLnN0ciB8fCAoX3QkZGF0YSRyaWNoVGV4dDExID0gdC5kYXRhLnJpY2hUZXh0KSAhPT0gbnVsbCAmJiBfdCRkYXRhJHJpY2hUZXh0MTEgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHJpY2hUZXh0MTEuc3RyKSxcbiAgICAgICAgICAgIGlnbm9yZUJvcmRlcjogITAsXG4gICAgICAgICAgICBjcmVhdGVRdWFkcmlsYXRlcmFsczogITBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgdGhpcy5kYXRhLnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcInNxdWlnZ2x5QW5ub3RhdGlvblwiKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFN0cmlrZU91dEFubm90YXRpb25FbGVtZW50IGV4dGVuZHMgQW5ub3RhdGlvbkVsZW1lbnQge1xuICAgICAgICBjb25zdHJ1Y3Rvcih0KSB7XG4gICAgICAgICAgdmFyIF90JGRhdGEkdGl0bGVPYmoxMiwgX3QkZGF0YSRjb250ZW50c09iajEyLCBfdCRkYXRhJHJpY2hUZXh0MTI7XG4gICAgICAgICAgc3VwZXIodCwge1xuICAgICAgICAgICAgaXNSZW5kZXJhYmxlOiAhISh0LmRhdGEucG9wdXBSZWYgfHwgKF90JGRhdGEkdGl0bGVPYmoxMiA9IHQuZGF0YS50aXRsZU9iaikgIT09IG51bGwgJiYgX3QkZGF0YSR0aXRsZU9iajEyICE9PSB2b2lkIDAgJiYgX3QkZGF0YSR0aXRsZU9iajEyLnN0ciB8fCAoX3QkZGF0YSRjb250ZW50c09iajEyID0gdC5kYXRhLmNvbnRlbnRzT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqMTIgIT09IHZvaWQgMCAmJiBfdCRkYXRhJGNvbnRlbnRzT2JqMTIuc3RyIHx8IChfdCRkYXRhJHJpY2hUZXh0MTIgPSB0LmRhdGEucmljaFRleHQpICE9PSBudWxsICYmIF90JGRhdGEkcmljaFRleHQxMiAhPT0gdm9pZCAwICYmIF90JGRhdGEkcmljaFRleHQxMi5zdHIpLFxuICAgICAgICAgICAgaWdub3JlQm9yZGVyOiAhMCxcbiAgICAgICAgICAgIGNyZWF0ZVF1YWRyaWxhdGVyYWxzOiAhMFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcigpIHtcbiAgICAgICAgICB0aGlzLmRhdGEucG9wdXBSZWYgfHwgdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwic3RyaWtlb3V0QW5ub3RhdGlvblwiKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNsYXNzIFN0YW1wQW5ub3RhdGlvbkVsZW1lbnQgZXh0ZW5kcyBBbm5vdGF0aW9uRWxlbWVudCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKHQpIHtcbiAgICAgICAgICB2YXIgX3QkZGF0YSR0aXRsZU9iajEzLCBfdCRkYXRhJGNvbnRlbnRzT2JqMTMsIF90JGRhdGEkcmljaFRleHQxMztcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEhKHQuZGF0YS5wb3B1cFJlZiB8fCAoX3QkZGF0YSR0aXRsZU9iajEzID0gdC5kYXRhLnRpdGxlT2JqKSAhPT0gbnVsbCAmJiBfdCRkYXRhJHRpdGxlT2JqMTMgIT09IHZvaWQgMCAmJiBfdCRkYXRhJHRpdGxlT2JqMTMuc3RyIHx8IChfdCRkYXRhJGNvbnRlbnRzT2JqMTMgPSB0LmRhdGEuY29udGVudHNPYmopICE9PSBudWxsICYmIF90JGRhdGEkY29udGVudHNPYmoxMyAhPT0gdm9pZCAwICYmIF90JGRhdGEkY29udGVudHNPYmoxMy5zdHIgfHwgKF90JGRhdGEkcmljaFRleHQxMyA9IHQuZGF0YS5yaWNoVGV4dCkgIT09IG51bGwgJiYgX3QkZGF0YSRyaWNoVGV4dDEzICE9PSB2b2lkIDAgJiYgX3QkZGF0YSRyaWNoVGV4dDEzLnN0ciksXG4gICAgICAgICAgICBpZ25vcmVCb3JkZXI6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJzdGFtcEFubm90YXRpb25cIik7XG4gICAgICAgICAgdGhpcy5kYXRhLnBvcHVwUmVmIHx8IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLlN0YW1wQW5ub3RhdGlvbkVsZW1lbnQgPSBTdGFtcEFubm90YXRpb25FbGVtZW50O1xuICAgICAgdmFyIF9zbiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpO1xuICAgICAgY2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uRWxlbWVudCBleHRlbmRzIEFubm90YXRpb25FbGVtZW50IHtcbiAgICAgICAgY29uc3RydWN0b3IodCkge1xuICAgICAgICAgIHZhciBfdGhpcyRsaW5rU2VydmljZSRldmUxMTtcbiAgICAgICAgICBzdXBlcih0LCB7XG4gICAgICAgICAgICBpc1JlbmRlcmFibGU6ICEwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3NuLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgZmlsZW5hbWU6IGUsXG4gICAgICAgICAgICBjb250ZW50OiBuXG4gICAgICAgICAgfSA9IHRoaXMuZGF0YS5maWxlO1xuICAgICAgICAgIHRoaXMuZmlsZW5hbWUgPSAoMCwgci5nZXRGaWxlbmFtZUZyb21VcmwpKGUsICEwKTtcbiAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBuO1xuICAgICAgICAgIChfdGhpcyRsaW5rU2VydmljZSRldmUxMSA9IHRoaXMubGlua1NlcnZpY2UuZXZlbnRCdXMpID09PSBudWxsIHx8IF90aGlzJGxpbmtTZXJ2aWNlJGV2ZTExID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRsaW5rU2VydmljZSRldmUxMS5kaXNwYXRjaChcImZpbGVhdHRhY2htZW50YW5ub3RhdGlvblwiLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICBmaWxlbmFtZTogZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgdmFyIF90aGlzJGRhdGEkdGl0bGVPYmosIF90aGlzJGRhdGEkY29udGVudHNPYjtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiZmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uXCIpO1xuICAgICAgICAgIGxldCB0O1xuICAgICAgICAgIGlmICh0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSkgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7ZWxzZSB7XG4gICAgICAgICAgICB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbiAgICAgICAgICAgIHQuc3JjID0gXCJcIi5jb25jYXQodGhpcy5pbWFnZVJlc291cmNlc1BhdGgsIFwiYW5ub3RhdGlvbi1cIikuY29uY2F0KC9wYXBlcmNsaXAvaS50ZXN0KHRoaXMuZGF0YS5uYW1lKSA/IFwicGFwZXJjbGlwXCIgOiBcInB1c2hwaW5cIiwgXCIuc3ZnXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0LmNsYXNzTGlzdC5hZGQoXCJwb3B1cFRyaWdnZXJBcmVhXCIpO1xuICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcImRibGNsaWNrXCIsIHRoaXMuX2Rvd25sb2FkLmJpbmQodGhpcykpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfc24sIHQpO1xuICAgICAgICAgICF0aGlzLmRhdGEucG9wdXBSZWYgJiYgKCgoX3RoaXMkZGF0YSR0aXRsZU9iaiA9IHRoaXMuZGF0YS50aXRsZU9iaikgPT09IG51bGwgfHwgX3RoaXMkZGF0YSR0aXRsZU9iaiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkZGF0YSR0aXRsZU9iai5zdHIpIHx8ICgoX3RoaXMkZGF0YSRjb250ZW50c09iID0gdGhpcy5kYXRhLmNvbnRlbnRzT2JqKSA9PT0gbnVsbCB8fCBfdGhpcyRkYXRhJGNvbnRlbnRzT2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRhdGEkY29udGVudHNPYi5zdHIpIHx8IHRoaXMuZGF0YS5yaWNoVGV4dCkgJiYgdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmQodCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGdldEVsZW1lbnRzVG9UcmlnZ2VyUG9wdXAoKSB7XG4gICAgICAgICAgcmV0dXJuIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfc24pO1xuICAgICAgICB9XG4gICAgICAgIGFkZEhpZ2hsaWdodEFyZWEoKSB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZChcImhpZ2hsaWdodEFyZWFcIik7XG4gICAgICAgIH1cbiAgICAgICAgX2Rvd25sb2FkKCkge1xuICAgICAgICAgIHZhciBfdGhpcyRkb3dubG9hZE1hbmFnZXIyO1xuICAgICAgICAgIChfdGhpcyRkb3dubG9hZE1hbmFnZXIyID0gdGhpcy5kb3dubG9hZE1hbmFnZXIpID09PSBudWxsIHx8IF90aGlzJGRvd25sb2FkTWFuYWdlcjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGRvd25sb2FkTWFuYWdlcjIub3Blbk9yRG93bmxvYWREYXRhKHRoaXMuY29udGFpbmVyLCB0aGlzLmNvbnRlbnQsIHRoaXMuZmlsZW5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlLkFubm90YXRpb25MYXllciA9IChfcmUyID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCksIF9hbiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha01hcCgpLCBfb24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKSwgX2xuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCksIF9jbiA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpLCBjbGFzcyBBbm5vdGF0aW9uTGF5ZXIge1xuICAgICAgICBjb25zdHJ1Y3RvcihfdDE2KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9jbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9sbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3JlMiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9hbiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9vbiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbmV3IE1hcCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGRpdjogX2UxNCxcbiAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlNYW5hZ2VyOiBfbjgsXG4gICAgICAgICAgICBhbm5vdGF0aW9uQ2FudmFzTWFwOiBfaTUsXG4gICAgICAgICAgICBsMTBuOiBfcjUsXG4gICAgICAgICAgICBwYWdlOiBzLFxuICAgICAgICAgICAgdmlld3BvcnQ6IGFcbiAgICAgICAgICB9ID0gX3QxNjtcbiAgICAgICAgICB0aGlzLmRpdiA9IF9lMTQ7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9yZTIsIF9uOCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9hbiwgX2k1KTtcbiAgICAgICAgICB0aGlzLmwxMG4gPSBfcjU7XG4gICAgICAgICAgdGhpcy5wYWdlID0gcztcbiAgICAgICAgICB0aGlzLnZpZXdwb3J0ID0gYTtcbiAgICAgICAgICB0aGlzLnpJbmRleCA9IDA7XG4gICAgICAgICAgdGhpcy5sMTBuIHx8ICh0aGlzLmwxMG4gPSBvLk51bGxMMTBuKTtcbiAgICAgICAgfVxuICAgICAgICBhc3luYyByZW5kZXIodCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgYW5ub3RhdGlvbnM6IGVcbiAgICAgICAgICAgIH0gPSB0LFxuICAgICAgICAgICAgbiA9IHRoaXMuZGl2O1xuICAgICAgICAgICgwLCByLnNldExheWVyRGltZW5zaW9ucykobiwgdGhpcy52aWV3cG9ydCk7XG4gICAgICAgICAgY29uc3QgYSA9IG5ldyBNYXAoKSxcbiAgICAgICAgICAgIG8gPSB7XG4gICAgICAgICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgICAgICAgIGxheWVyOiBuLFxuICAgICAgICAgICAgICBsaW5rU2VydmljZTogdC5saW5rU2VydmljZSxcbiAgICAgICAgICAgICAgZG93bmxvYWRNYW5hZ2VyOiB0LmRvd25sb2FkTWFuYWdlcixcbiAgICAgICAgICAgICAgaW1hZ2VSZXNvdXJjZXNQYXRoOiB0LmltYWdlUmVzb3VyY2VzUGF0aCB8fCBcIlwiLFxuICAgICAgICAgICAgICByZW5kZXJGb3JtczogITEgIT09IHQucmVuZGVyRm9ybXMsXG4gICAgICAgICAgICAgIHN2Z0ZhY3Rvcnk6IG5ldyByLkRPTVNWR0ZhY3RvcnkoKSxcbiAgICAgICAgICAgICAgYW5ub3RhdGlvblN0b3JhZ2U6IHQuYW5ub3RhdGlvblN0b3JhZ2UgfHwgbmV3IHMuQW5ub3RhdGlvblN0b3JhZ2UoKSxcbiAgICAgICAgICAgICAgZW5hYmxlU2NyaXB0aW5nOiAhMCA9PT0gdC5lbmFibGVTY3JpcHRpbmcsXG4gICAgICAgICAgICAgIGhhc0pTQWN0aW9uczogdC5oYXNKU0FjdGlvbnMsXG4gICAgICAgICAgICAgIGZpZWxkT2JqZWN0czogdC5maWVsZE9iamVjdHMsXG4gICAgICAgICAgICAgIHBhcmVudDogdGhpcyxcbiAgICAgICAgICAgICAgZWxlbWVudHM6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIGUpIHtcbiAgICAgICAgICAgIGlmICh0Lm5vSFRNTCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCBlID0gdC5hbm5vdGF0aW9uVHlwZSA9PT0gaS5Bbm5vdGF0aW9uVHlwZS5QT1BVUDtcbiAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBhLmdldCh0LmlkKTtcbiAgICAgICAgICAgICAgaWYgKCFlKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgby5lbGVtZW50cyA9IGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGUsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBuXG4gICAgICAgICAgICAgIH0gPSBnZXRSZWN0RGltcyh0LnJlY3QpO1xuICAgICAgICAgICAgICBpZiAoZSA8PSAwIHx8IG4gPD0gMCkgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvLmRhdGEgPSB0O1xuICAgICAgICAgICAgY29uc3QgbiA9IEFubm90YXRpb25FbGVtZW50RmFjdG9yeS5jcmVhdGUobyk7XG4gICAgICAgICAgICBpZiAoIW4uaXNSZW5kZXJhYmxlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmICghZSAmJiB0LnBvcHVwUmVmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGUgPSBhLmdldCh0LnBvcHVwUmVmKTtcbiAgICAgICAgICAgICAgZSA/IGUucHVzaChuKSA6IGEuc2V0KHQucG9wdXBSZWYsIFtuXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuLmFubm90YXRpb25FZGl0b3JUeXBlID4gMCAmJiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29uKS5zZXQobi5kYXRhLmlkLCBuKTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBuLnJlbmRlcigpO1xuICAgICAgICAgICAgdC5oaWRkZW4gJiYgKHIuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCIpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfbG4sIF9sbjIpLmNhbGwodGhpcywgciwgdC5pZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2NuLCBfY24yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIGF3YWl0IHRoaXMubDEwbi50cmFuc2xhdGUobik7XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgdmlld3BvcnQ6IGVcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5kaXY7XG4gICAgICAgICAgdGhpcy52aWV3cG9ydCA9IGU7XG4gICAgICAgICAgKDAsIHIuc2V0TGF5ZXJEaW1lbnNpb25zKShuLCB7XG4gICAgICAgICAgICByb3RhdGlvbjogZS5yb3RhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2NuLCBfY24yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIG4uaGlkZGVuID0gITE7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWRpdGFibGVBbm5vdGF0aW9ucygpIHtcbiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX29uKS52YWx1ZXMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0RWRpdGFibGVBbm5vdGF0aW9uKHQpIHtcbiAgICAgICAgICByZXR1cm4gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9vbikuZ2V0KHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGZ1bmN0aW9uIF9sbjIodCwgZSkge1xuICAgICAgICB2YXIgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTQ7XG4gICAgICAgIGNvbnN0IG4gPSB0LmZpcnN0Q2hpbGQgfHwgdDtcbiAgICAgICAgbi5pZCA9IFwiXCIuY29uY2F0KHIuQW5ub3RhdGlvblByZWZpeCkuY29uY2F0KGUpO1xuICAgICAgICB0aGlzLmRpdi5hcHBlbmQodCk7XG4gICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQxNCA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfcmUyKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDE0Lm1vdmVFbGVtZW50SW5ET00odGhpcy5kaXYsIHQsIG4sICExKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9jbjIoKSB7XG4gICAgICAgIGlmICghX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9hbikpIHJldHVybjtcbiAgICAgICAgY29uc3QgdCA9IHRoaXMuZGl2O1xuICAgICAgICBmb3IgKGNvbnN0IFtlLCBuXSBvZiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2FuKSkge1xuICAgICAgICAgIGNvbnN0IGkgPSB0LnF1ZXJ5U2VsZWN0b3IoXCJbZGF0YS1hbm5vdGF0aW9uLWlkPVxcXCJcIi5jb25jYXQoZSwgXCJcXFwiXVwiKSk7XG4gICAgICAgICAgaWYgKCFpKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBmaXJzdENoaWxkOiByXG4gICAgICAgICAgfSA9IGk7XG4gICAgICAgICAgciA/IFwiQ0FOVkFTXCIgPT09IHIubm9kZU5hbWUgPyByLnJlcGxhY2VXaXRoKG4pIDogci5iZWZvcmUobikgOiBpLmFwcGVuZChuKTtcbiAgICAgICAgfVxuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2FuKS5jbGVhcigpO1xuICAgICAgfVxuICAgIH0sICh0LCBlKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLkNvbG9yQ29udmVydGVycyA9IHZvaWQgMDtcbiAgICAgIGZ1bmN0aW9uIG1ha2VDb2xvckNvbXAodCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigyNTUgKiBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCB0KSkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIik7XG4gICAgICB9XG4gICAgICBlLkNvbG9yQ29udmVydGVycyA9IGNsYXNzIENvbG9yQ29udmVydGVycyB7XG4gICAgICAgIHN0YXRpYyBDTVlLX0codCkge1xuICAgICAgICAgIGxldCBbZSwgbiwgaSwgcl0gPSB0O1xuICAgICAgICAgIHJldHVybiBbXCJHXCIsIDEgLSBNYXRoLm1pbigxLCAuMyAqIGUgKyAuNTkgKiBpICsgLjExICogbiArIHIpXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgR19DTVlLKHQpIHtcbiAgICAgICAgICBsZXQgW2VdID0gdDtcbiAgICAgICAgICByZXR1cm4gW1wiQ01ZS1wiLCAwLCAwLCAwLCAxIC0gZV07XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIEdfUkdCKHQpIHtcbiAgICAgICAgICBsZXQgW2VdID0gdDtcbiAgICAgICAgICByZXR1cm4gW1wiUkdCXCIsIGUsIGUsIGVdO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBHX0hUTUwodCkge1xuICAgICAgICAgIGxldCBbZV0gPSB0O1xuICAgICAgICAgIGNvbnN0IG4gPSBtYWtlQ29sb3JDb21wKGUpO1xuICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQobikuY29uY2F0KG4pLmNvbmNhdChuKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgUkdCX0codCkge1xuICAgICAgICAgIGxldCBbZSwgbiwgaV0gPSB0O1xuICAgICAgICAgIHJldHVybiBbXCJHXCIsIC4zICogZSArIC41OSAqIG4gKyAuMTEgKiBpXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgUkdCX0hUTUwodCkge1xuICAgICAgICAgIGxldCBbZSwgbiwgaV0gPSB0O1xuICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQobWFrZUNvbG9yQ29tcChlKSkuY29uY2F0KG1ha2VDb2xvckNvbXAobikpLmNvbmNhdChtYWtlQ29sb3JDb21wKGkpKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgVF9IVE1MKCkge1xuICAgICAgICAgIHJldHVybiBcIiMwMDAwMDAwMFwiO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBDTVlLX1JHQih0KSB7XG4gICAgICAgICAgbGV0IFtlLCBuLCBpLCByXSA9IHQ7XG4gICAgICAgICAgcmV0dXJuIFtcIlJHQlwiLCAxIC0gTWF0aC5taW4oMSwgZSArIHIpLCAxIC0gTWF0aC5taW4oMSwgaSArIHIpLCAxIC0gTWF0aC5taW4oMSwgbiArIHIpXTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgQ01ZS19IVE1MKHQpIHtcbiAgICAgICAgICBjb25zdCBlID0gdGhpcy5DTVlLX1JHQih0KS5zbGljZSgxKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5SR0JfSFRNTChlKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgUkdCX0NNWUsodCkge1xuICAgICAgICAgIGxldCBbZSwgbiwgaV0gPSB0O1xuICAgICAgICAgIGNvbnN0IHIgPSAxIC0gZSxcbiAgICAgICAgICAgIHMgPSAxIC0gbixcbiAgICAgICAgICAgIGEgPSAxIC0gaTtcbiAgICAgICAgICByZXR1cm4gW1wiQ01ZS1wiLCByLCBzLCBhLCBNYXRoLm1pbihyLCBzLCBhKV07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSwgKHQsIGUpID0+IHtcbiAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICAgICAgdmFsdWU6ICEwXG4gICAgICB9KTtcbiAgICAgIGUuTnVsbEwxMG4gPSB2b2lkIDA7XG4gICAgICBlLmdldEwxMG5GYWxsYmFjayA9IGdldEwxMG5GYWxsYmFjaztcbiAgICAgIGNvbnN0IG4gPSB7XG4gICAgICAgIG9mX3BhZ2VzOiBcIm9mIHt7cGFnZXNDb3VudH19XCIsXG4gICAgICAgIHBhZ2Vfb2ZfcGFnZXM6IFwiKHt7cGFnZU51bWJlcn19IG9mIHt7cGFnZXNDb3VudH19KVwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX2tiOiBcInt7c2l6ZV9rYn19IEtCICh7e3NpemVfYn19IGJ5dGVzKVwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX21iOiBcInt7c2l6ZV9tYn19IE1CICh7e3NpemVfYn19IGJ5dGVzKVwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX2RhdGVfc3RyaW5nOiBcInt7ZGF0ZX19LCB7e3RpbWV9fVwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV91bml0X2luY2hlczogXCJpblwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV91bml0X21pbGxpbWV0ZXJzOiBcIm1tXCIsXG4gICAgICAgIGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX29yaWVudGF0aW9uX3BvcnRyYWl0OiBcInBvcnRyYWl0XCIsXG4gICAgICAgIGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX29yaWVudGF0aW9uX2xhbmRzY2FwZTogXCJsYW5kc2NhcGVcIixcbiAgICAgICAgZG9jdW1lbnRfcHJvcGVydGllc19wYWdlX3NpemVfbmFtZV9hMzogXCJBM1wiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV9uYW1lX2E0OiBcIkE0XCIsXG4gICAgICAgIGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX25hbWVfbGV0dGVyOiBcIkxldHRlclwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX3BhZ2Vfc2l6ZV9uYW1lX2xlZ2FsOiBcIkxlZ2FsXCIsXG4gICAgICAgIGRvY3VtZW50X3Byb3BlcnRpZXNfcGFnZV9zaXplX2RpbWVuc2lvbl9zdHJpbmc6IFwie3t3aWR0aH19IMOXIHt7aGVpZ2h0fX0ge3t1bml0fX0gKHt7b3JpZW50YXRpb259fSlcIixcbiAgICAgICAgZG9jdW1lbnRfcHJvcGVydGllc19wYWdlX3NpemVfZGltZW5zaW9uX25hbWVfc3RyaW5nOiBcInt7d2lkdGh9fSDDlyB7e2hlaWdodH19IHt7dW5pdH19ICh7e25hbWV9fSwge3tvcmllbnRhdGlvbn19KVwiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX2xpbmVhcml6ZWRfeWVzOiBcIlllc1wiLFxuICAgICAgICBkb2N1bWVudF9wcm9wZXJ0aWVzX2xpbmVhcml6ZWRfbm86IFwiTm9cIixcbiAgICAgICAgYWRkaXRpb25hbF9sYXllcnM6IFwiQWRkaXRpb25hbCBMYXllcnNcIixcbiAgICAgICAgcGFnZV9sYW5kbWFyazogXCJQYWdlIHt7cGFnZX19XCIsXG4gICAgICAgIHRodW1iX3BhZ2VfdGl0bGU6IFwiUGFnZSB7e3BhZ2V9fVwiLFxuICAgICAgICB0aHVtYl9wYWdlX2NhbnZhczogXCJUaHVtYm5haWwgb2YgUGFnZSB7e3BhZ2V9fVwiLFxuICAgICAgICBmaW5kX3JlYWNoZWRfdG9wOiBcIlJlYWNoZWQgdG9wIG9mIGRvY3VtZW50LCBjb250aW51ZWQgZnJvbSBib3R0b21cIixcbiAgICAgICAgZmluZF9yZWFjaGVkX2JvdHRvbTogXCJSZWFjaGVkIGVuZCBvZiBkb2N1bWVudCwgY29udGludWVkIGZyb20gdG9wXCIsXG4gICAgICAgIFwiZmluZF9tYXRjaF9jb3VudFtvbmVdXCI6IFwie3tjdXJyZW50fX0gb2Yge3t0b3RhbH19IG1hdGNoXCIsXG4gICAgICAgIFwiZmluZF9tYXRjaF9jb3VudFtvdGhlcl1cIjogXCJ7e2N1cnJlbnR9fSBvZiB7e3RvdGFsfX0gbWF0Y2hlc1wiLFxuICAgICAgICBcImZpbmRfbWF0Y2hfY291bnRfbGltaXRbb25lXVwiOiBcIk1vcmUgdGhhbiB7e2xpbWl0fX0gbWF0Y2hcIixcbiAgICAgICAgXCJmaW5kX21hdGNoX2NvdW50X2xpbWl0W290aGVyXVwiOiBcIk1vcmUgdGhhbiB7e2xpbWl0fX0gbWF0Y2hlc1wiLFxuICAgICAgICBmaW5kX25vdF9mb3VuZDogXCJQaHJhc2Ugbm90IGZvdW5kXCIsXG4gICAgICAgIHBhZ2Vfc2NhbGVfd2lkdGg6IFwiUGFnZSBXaWR0aFwiLFxuICAgICAgICBwYWdlX3NjYWxlX2ZpdDogXCJQYWdlIEZpdFwiLFxuICAgICAgICBwYWdlX3NjYWxlX2F1dG86IFwiQXV0b21hdGljIFpvb21cIixcbiAgICAgICAgcGFnZV9zY2FsZV9hY3R1YWw6IFwiQWN0dWFsIFNpemVcIixcbiAgICAgICAgcGFnZV9zY2FsZV9wZXJjZW50OiBcInt7c2NhbGV9fSVcIixcbiAgICAgICAgbG9hZGluZ19lcnJvcjogXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBsb2FkaW5nIHRoZSBQREYuXCIsXG4gICAgICAgIGludmFsaWRfZmlsZV9lcnJvcjogXCJJbnZhbGlkIG9yIGNvcnJ1cHRlZCBQREYgZmlsZS5cIixcbiAgICAgICAgbWlzc2luZ19maWxlX2Vycm9yOiBcIk1pc3NpbmcgUERGIGZpbGUuXCIsXG4gICAgICAgIHVuZXhwZWN0ZWRfcmVzcG9uc2VfZXJyb3I6IFwiVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UuXCIsXG4gICAgICAgIHJlbmRlcmluZ19lcnJvcjogXCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZW5kZXJpbmcgdGhlIHBhZ2UuXCIsXG4gICAgICAgIGFubm90YXRpb25fZGF0ZV9zdHJpbmc6IFwie3tkYXRlfX0sIHt7dGltZX19XCIsXG4gICAgICAgIHByaW50aW5nX25vdF9zdXBwb3J0ZWQ6IFwiV2FybmluZzogUHJpbnRpbmcgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXCIsXG4gICAgICAgIHByaW50aW5nX25vdF9yZWFkeTogXCJXYXJuaW5nOiBUaGUgUERGIGlzIG5vdCBmdWxseSBsb2FkZWQgZm9yIHByaW50aW5nLlwiLFxuICAgICAgICB3ZWJfZm9udHNfZGlzYWJsZWQ6IFwiV2ViIGZvbnRzIGFyZSBkaXNhYmxlZDogdW5hYmxlIHRvIHVzZSBlbWJlZGRlZCBQREYgZm9udHMuXCIsXG4gICAgICAgIGZyZWVfdGV4dDJfZGVmYXVsdF9jb250ZW50OiBcIlN0YXJ0IHR5cGluZ+KAplwiLFxuICAgICAgICBlZGl0b3JfZnJlZV90ZXh0Ml9hcmlhX2xhYmVsOiBcIlRleHQgRWRpdG9yXCIsXG4gICAgICAgIGVkaXRvcl9pbmsyX2FyaWFfbGFiZWw6IFwiRHJhdyBFZGl0b3JcIixcbiAgICAgICAgZWRpdG9yX2lua19jYW52YXNfYXJpYV9sYWJlbDogXCJVc2VyLWNyZWF0ZWQgaW1hZ2VcIixcbiAgICAgICAgcHJpbnRfcHJvZ3Jlc3NfcGVyY2VudDogXCJ7e3Byb2dyZXNzfX0lXCJcbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBnZXRMMTBuRmFsbGJhY2sodCwgZSkge1xuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICBjYXNlIFwiZmluZF9tYXRjaF9jb3VudFwiOlxuICAgICAgICAgICAgdCA9IFwiZmluZF9tYXRjaF9jb3VudFtcIi5jb25jYXQoMSA9PT0gZS50b3RhbCA/IFwib25lXCIgOiBcIm90aGVyXCIsIFwiXVwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJmaW5kX21hdGNoX2NvdW50X2xpbWl0XCI6XG4gICAgICAgICAgICB0ID0gXCJmaW5kX21hdGNoX2NvdW50X2xpbWl0W1wiLmNvbmNhdCgxID09PSBlLmxpbWl0ID8gXCJvbmVcIiA6IFwib3RoZXJcIiwgXCJdXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuW3RdIHx8IFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBpID0ge1xuICAgICAgICBnZXRMYW5ndWFnZTogYXN5bmMgKCkgPT4gXCJlbi11c1wiLFxuICAgICAgICBnZXREaXJlY3Rpb246IGFzeW5jICgpID0+IFwibHRyXCIsXG4gICAgICAgIGFzeW5jIGdldCh0KSB7XG4gICAgICAgICAgbGV0IGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGZvcm1hdEwxMG5WYWx1ZSh0LCBlKSB7XG4gICAgICAgICAgICByZXR1cm4gZSA/IHQucmVwbGFjZUFsbCgvXFx7XFx7XFxzKihcXHcrKVxccypcXH1cXH0vZywgKHQsIG4pID0+IG4gaW4gZSA/IGVbbl0gOiBcInt7XCIgKyBuICsgXCJ9fVwiKSA6IHQ7XG4gICAgICAgICAgfShhcmd1bWVudHMubGVuZ3RoID4gMiAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1syXSA/IGFyZ3VtZW50c1syXSA6IGdldEwxMG5GYWxsYmFjayh0LCBlKSwgZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIHRyYW5zbGF0ZSh0KSB7fVxuICAgICAgfTtcbiAgICAgIGUuTnVsbEwxMG4gPSBpO1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLlhmYUxheWVyID0gdm9pZCAwO1xuICAgICAgbig4OSk7XG4gICAgICB2YXIgaSA9IG4oMTkzKTtcbiAgICAgIGUuWGZhTGF5ZXIgPSBjbGFzcyBYZmFMYXllciB7XG4gICAgICAgIHN0YXRpYyBzZXR1cFN0b3JhZ2UodCwgZSwgbiwgaSwgcikge1xuICAgICAgICAgIGNvbnN0IHMgPSBpLmdldFZhbHVlKGUsIHtcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3dpdGNoIChuLm5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxuICAgICAgICAgICAgICBudWxsICE9PSBzLnZhbHVlICYmICh0LnRleHRDb250ZW50ID0gcy52YWx1ZSk7XG4gICAgICAgICAgICAgIGlmIChcInByaW50XCIgPT09IHIpIGJyZWFrO1xuICAgICAgICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLCB0ID0+IHtcbiAgICAgICAgICAgICAgICBpLnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaW5wdXRcIjpcbiAgICAgICAgICAgICAgaWYgKFwicmFkaW9cIiA9PT0gbi5hdHRyaWJ1dGVzLnR5cGUgfHwgXCJjaGVja2JveFwiID09PSBuLmF0dHJpYnV0ZXMudHlwZSkge1xuICAgICAgICAgICAgICAgIHMudmFsdWUgPT09IG4uYXR0cmlidXRlcy54ZmFPbiA/IHQuc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCAhMCkgOiBzLnZhbHVlID09PSBuLmF0dHJpYnV0ZXMueGZhT2ZmICYmIHQucmVtb3ZlQXR0cmlidXRlKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoXCJwcmludFwiID09PSByKSBicmVhaztcbiAgICAgICAgICAgICAgICB0LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdCA9PiB7XG4gICAgICAgICAgICAgICAgICBpLnNldFZhbHVlKGUsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHQudGFyZ2V0LmNoZWNrZWQgPyB0LnRhcmdldC5nZXRBdHRyaWJ1dGUoXCJ4ZmFPblwiKSA6IHQudGFyZ2V0LmdldEF0dHJpYnV0ZShcInhmYU9mZlwiKVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gcy52YWx1ZSAmJiB0LnNldEF0dHJpYnV0ZShcInZhbHVlXCIsIHMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmIChcInByaW50XCIgPT09IHIpIGJyZWFrO1xuICAgICAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHQgPT4ge1xuICAgICAgICAgICAgICAgICAgaS5zZXRWYWx1ZShlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0LnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICAgICAgICAgIGlmIChudWxsICE9PSBzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCBzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHQgb2Ygbi5jaGlsZHJlbikgdC5hdHRyaWJ1dGVzLnZhbHVlID09PSBzLnZhbHVlID8gdC5hdHRyaWJ1dGVzLnNlbGVjdGVkID0gITAgOiB0LmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoXCJzZWxlY3RlZFwiKSAmJiBkZWxldGUgdC5hdHRyaWJ1dGVzLnNlbGVjdGVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHQuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSB0LnRhcmdldC5vcHRpb25zLFxuICAgICAgICAgICAgICAgICAgciA9IC0xID09PSBuLnNlbGVjdGVkSW5kZXggPyBcIlwiIDogbltuLnNlbGVjdGVkSW5kZXhdLnZhbHVlO1xuICAgICAgICAgICAgICAgIGkuc2V0VmFsdWUoZSwge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IHJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBzZXRBdHRyaWJ1dGVzKHQpIHtcbiAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgaHRtbDogZSxcbiAgICAgICAgICAgIGVsZW1lbnQ6IG4sXG4gICAgICAgICAgICBzdG9yYWdlOiBpID0gbnVsbCxcbiAgICAgICAgICAgIGludGVudDogcixcbiAgICAgICAgICAgIGxpbmtTZXJ2aWNlOiBzXG4gICAgICAgICAgfSA9IHQ7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBhXG4gICAgICAgICAgICB9ID0gbixcbiAgICAgICAgICAgIG8gPSBlIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICAgICAgXCJyYWRpb1wiID09PSBhLnR5cGUgJiYgKGEubmFtZSA9IFwiXCIuY29uY2F0KGEubmFtZSwgXCItXCIpLmNvbmNhdChyKSk7XG4gICAgICAgICAgZm9yIChjb25zdCBbdCwgbl0gb2YgT2JqZWN0LmVudHJpZXMoYSkpIGlmIChudWxsICE9IG4pIHN3aXRjaCAodCkge1xuICAgICAgICAgICAgY2FzZSBcImNsYXNzXCI6XG4gICAgICAgICAgICAgIG4ubGVuZ3RoICYmIGUuc2V0QXR0cmlidXRlKHQsIG4uam9pbihcIiBcIikpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkYXRhSWRcIjpcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaWRcIjpcbiAgICAgICAgICAgICAgZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWVsZW1lbnQtaWRcIiwgbik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZS5zdHlsZSwgbik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInRleHRDb250ZW50XCI6XG4gICAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBuO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICghbyB8fCBcImhyZWZcIiAhPT0gdCAmJiBcIm5ld1dpbmRvd1wiICE9PSB0KSAmJiBlLnNldEF0dHJpYnV0ZSh0LCBuKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbyAmJiBzLmFkZExpbmtBdHRyaWJ1dGVzKGUsIGEuaHJlZiwgYS5uZXdXaW5kb3cpO1xuICAgICAgICAgIGkgJiYgYS5kYXRhSWQgJiYgdGhpcy5zZXR1cFN0b3JhZ2UoZSwgYS5kYXRhSWQsIG4sIGkpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyByZW5kZXIodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSB0LmFubm90YXRpb25TdG9yYWdlLFxuICAgICAgICAgICAgbiA9IHQubGlua1NlcnZpY2UsXG4gICAgICAgICAgICByID0gdC54ZmFIdG1sLFxuICAgICAgICAgICAgcyA9IHQuaW50ZW50IHx8IFwiZGlzcGxheVwiLFxuICAgICAgICAgICAgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoci5uYW1lKTtcbiAgICAgICAgICByLmF0dHJpYnV0ZXMgJiYgdGhpcy5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgIGh0bWw6IGEsXG4gICAgICAgICAgICBlbGVtZW50OiByLFxuICAgICAgICAgICAgaW50ZW50OiBzLFxuICAgICAgICAgICAgbGlua1NlcnZpY2U6IG5cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBvID0gW1tyLCAtMSwgYV1dLFxuICAgICAgICAgICAgbCA9IHQuZGl2O1xuICAgICAgICAgIGwuYXBwZW5kKGEpO1xuICAgICAgICAgIGlmICh0LnZpZXdwb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBlID0gXCJtYXRyaXgoXCIuY29uY2F0KHQudmlld3BvcnQudHJhbnNmb3JtLmpvaW4oXCIsXCIpLCBcIilcIik7XG4gICAgICAgICAgICBsLnN0eWxlLnRyYW5zZm9ybSA9IGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIFwicmljaFRleHRcIiAhPT0gcyAmJiBsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwieGZhTGF5ZXIgeGZhRm9udFwiKTtcbiAgICAgICAgICBjb25zdCBjID0gW107XG4gICAgICAgICAgZm9yICg7IG8ubGVuZ3RoID4gMDspIHtcbiAgICAgICAgICAgIHZhciBfbCRhdHRyaWJ1dGVzO1xuICAgICAgICAgICAgY29uc3QgW3QsIHIsIGFdID0gby5hdCgtMSk7XG4gICAgICAgICAgICBpZiAociArIDEgPT09IHQuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIG8ucG9wKCk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbCA9IHQuY2hpbGRyZW5bKytvLmF0KC0xKVsxXV07XG4gICAgICAgICAgICBpZiAobnVsbCA9PT0gbCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIG5hbWU6IGhcbiAgICAgICAgICAgIH0gPSBsO1xuICAgICAgICAgICAgaWYgKFwiI3RleHRcIiA9PT0gaCkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7XG4gICAgICAgICAgICAgIGMucHVzaCh0KTtcbiAgICAgICAgICAgICAgYS5hcHBlbmQodCk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZCA9IGwgIT09IG51bGwgJiYgbCAhPT0gdm9pZCAwICYmIChfbCRhdHRyaWJ1dGVzID0gbC5hdHRyaWJ1dGVzKSAhPT0gbnVsbCAmJiBfbCRhdHRyaWJ1dGVzICE9PSB2b2lkIDAgJiYgX2wkYXR0cmlidXRlcy54bWxucyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhsLmF0dHJpYnV0ZXMueG1sbnMsIGgpIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudChoKTtcbiAgICAgICAgICAgIGEuYXBwZW5kKGQpO1xuICAgICAgICAgICAgbC5hdHRyaWJ1dGVzICYmIHRoaXMuc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgIGh0bWw6IGQsXG4gICAgICAgICAgICAgIGVsZW1lbnQ6IGwsXG4gICAgICAgICAgICAgIHN0b3JhZ2U6IGUsXG4gICAgICAgICAgICAgIGludGVudDogcyxcbiAgICAgICAgICAgICAgbGlua1NlcnZpY2U6IG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGwuY2hpbGRyZW4gJiYgbC5jaGlsZHJlbi5sZW5ndGggPiAwKSBvLnB1c2goW2wsIC0xLCBkXSk7ZWxzZSBpZiAobC52YWx1ZSkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobC52YWx1ZSk7XG4gICAgICAgICAgICAgIGkuWGZhVGV4dC5zaG91bGRCdWlsZFRleHQoaCkgJiYgYy5wdXNoKHQpO1xuICAgICAgICAgICAgICBkLmFwcGVuZCh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChjb25zdCB0IG9mIGwucXVlcnlTZWxlY3RvckFsbChcIi54ZmFOb25JbnRlcmFjdGl2ZSBpbnB1dCwgLnhmYU5vbkludGVyYWN0aXZlIHRleHRhcmVhXCIpKSB0LnNldEF0dHJpYnV0ZShcInJlYWRPbmx5XCIsICEwKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dERpdnM6IGNcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyB1cGRhdGUodCkge1xuICAgICAgICAgIGNvbnN0IGUgPSBcIm1hdHJpeChcIi5jb25jYXQodC52aWV3cG9ydC50cmFuc2Zvcm0uam9pbihcIixcIiksIFwiKVwiKTtcbiAgICAgICAgICB0LmRpdi5zdHlsZS50cmFuc2Zvcm0gPSBlO1xuICAgICAgICAgIHQuZGl2LmhpZGRlbiA9ICExO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sICh0LCBlLCBuKSA9PiB7XG4gICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgdmFyIF9jbGFzczQxO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgICAgIHZhbHVlOiAhMFxuICAgICAgfSk7XG4gICAgICBlLklua0VkaXRvciA9IHZvaWQgMDtcbiAgICAgIG4oODkpO1xuICAgICAgbigyKTtcbiAgICAgIHZhciBpID0gbigxKSxcbiAgICAgICAgciA9IG4oMTYzKSxcbiAgICAgICAgcyA9IG4oMTk3KSxcbiAgICAgICAgYSA9IG4oMTY0KTtcbiAgICAgIHZhciBfaG4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZG4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfcG4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfZ24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfYm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfeW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfQW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbjkgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfU24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfRW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfeG4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfd24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIHZhciBfUGUzID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0NuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0ZuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0luID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0RuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0xuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0JuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2puID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX09uID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX05uID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1VuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1BuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0huID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2tuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX01uID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1JuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX3FuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX3puID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1huID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX0tuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1duID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX1RuID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICBjbGFzcyBJbmtFZGl0b3IgZXh0ZW5kcyByLkFubm90YXRpb25FZGl0b3Ige1xuICAgICAgICBjb25zdHJ1Y3RvcihfdDE3KSB7XG4gICAgICAgICAgc3VwZXIoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdDE3KSwge30sIHtcbiAgICAgICAgICAgIG5hbWU6IFwiaW5rRWRpdG9yXCJcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Ubik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Xbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Lbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Ybik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF96bik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9xbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Sbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Nbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9rbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Ibik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Qbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Vbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Obik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Pbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9qbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Cbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Mbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Ebik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Jbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Gbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9Dbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9QZTMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfd24pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9obiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9kbiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF91biwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5jYW52YXNDb250ZXh0TWVudS5iaW5kKHRoaXMpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3BuLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNhbnZhc1BvaW50ZXJtb3ZlLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZm4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FudmFzUG9pbnRlcmxlYXZlLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfZ24sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FudmFzUG9pbnRlcnVwLmJpbmQodGhpcylcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbW4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FudmFzUG9pbnRlcmRvd24uYmluZCh0aGlzKVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF9ibiwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbmV3IFBhdGgyRCgpXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3ZuLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAhMVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjKHRoaXMsIF95biwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogITFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfQW4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICExXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX245LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX1NuLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX0VuLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX3huLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb2xvciA9IF90MTcuY29sb3IgfHwgbnVsbDtcbiAgICAgICAgICB0aGlzLnRoaWNrbmVzcyA9IF90MTcudGhpY2tuZXNzIHx8IG51bGw7XG4gICAgICAgICAgdGhpcy5vcGFjaXR5ID0gX3QxNy5vcGFjaXR5IHx8IG51bGw7XG4gICAgICAgICAgdGhpcy5wYXRocyA9IFtdO1xuICAgICAgICAgIHRoaXMuYmV6aWVyUGF0aDJEID0gW107XG4gICAgICAgICAgdGhpcy5hbGxSYXdQYXRocyA9IFtdO1xuICAgICAgICAgIHRoaXMuY3VycmVudFBhdGggPSBbXTtcbiAgICAgICAgICB0aGlzLnNjYWxlRmFjdG9yID0gMTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uWCA9IHRoaXMudHJhbnNsYXRpb25ZID0gMDtcbiAgICAgICAgICB0aGlzLnggPSAwO1xuICAgICAgICAgIHRoaXMueSA9IDA7XG4gICAgICAgICAgdGhpcy5fd2lsbEtlZXBBc3BlY3RSYXRpbyA9ICEwO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBpbml0aWFsaXplKHQpIHtcbiAgICAgICAgICB0aGlzLl9sMTBuUHJvbWlzZSA9IG5ldyBNYXAoW1wiZWRpdG9yX2lua19jYW52YXNfYXJpYV9sYWJlbFwiLCBcImVkaXRvcl9pbmsyX2FyaWFfbGFiZWxcIl0ubWFwKGUgPT4gW2UsIHQuZ2V0KGUpXSkpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyB1cGRhdGVEZWZhdWx0UGFyYW1zKHQsIGUpIHtcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTOlxuICAgICAgICAgICAgICBJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3MgPSBlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfQ09MT1I6XG4gICAgICAgICAgICAgIElua0VkaXRvci5fZGVmYXVsdENvbG9yID0gZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6XG4gICAgICAgICAgICAgIElua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkgPSBlIC8gMTAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVQYXJhbXModCwgZSkge1xuICAgICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICAgICAgY2FzZSBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1M6XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3duLCBfd24yKS5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfQ09MT1I6XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BlMywgX1BlNCkuY2FsbCh0aGlzLCBlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFk6XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0NuLCBfQ24yKS5jYWxsKHRoaXMsIGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZ2V0IGRlZmF1bHRQcm9wZXJ0aWVzVG9VcGRhdGUoKSB7XG4gICAgICAgICAgcmV0dXJuIFtbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLCBJbmtFZGl0b3IuX2RlZmF1bHRUaGlja25lc3NdLCBbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfQ09MT1IsIElua0VkaXRvci5fZGVmYXVsdENvbG9yIHx8IHIuQW5ub3RhdGlvbkVkaXRvci5fZGVmYXVsdExpbmVDb2xvcl0sIFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19PUEFDSVRZLCBNYXRoLnJvdW5kKDEwMCAqIElua0VkaXRvci5fZGVmYXVsdE9wYWNpdHkpXV07XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IHByb3BlcnRpZXNUb1VwZGF0ZSgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkb3BhY2l0eTtcbiAgICAgICAgICByZXR1cm4gW1tpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19USElDS05FU1MsIHRoaXMudGhpY2tuZXNzIHx8IElua0VkaXRvci5fZGVmYXVsdFRoaWNrbmVzc10sIFtpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUiwgdGhpcy5jb2xvciB8fCBJbmtFZGl0b3IuX2RlZmF1bHRDb2xvciB8fCByLkFubm90YXRpb25FZGl0b3IuX2RlZmF1bHRMaW5lQ29sb3JdLCBbaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfT1BBQ0lUWSwgTWF0aC5yb3VuZCgxMDAgKiAoKF90aGlzJG9wYWNpdHkgPSB0aGlzLm9wYWNpdHkpICE9PSBudWxsICYmIF90aGlzJG9wYWNpdHkgIT09IHZvaWQgMCA/IF90aGlzJG9wYWNpdHkgOiBJbmtFZGl0b3IuX2RlZmF1bHRPcGFjaXR5KSldXTtcbiAgICAgICAgfVxuICAgICAgICByZWJ1aWxkKCkge1xuICAgICAgICAgIHN1cGVyLnJlYnVpbGQoKTtcbiAgICAgICAgICBpZiAobnVsbCAhPT0gdGhpcy5kaXYpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYW52YXMpIHtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfa24sIF9rbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX01uLCBfTW4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQXR0YWNoZWRUb0RPTSkge1xuICAgICAgICAgICAgICB0aGlzLnBhcmVudC5hZGQodGhpcyk7XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1JuLCBfUm4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVG4sIF9UbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlbW92ZSgpIHtcbiAgICAgICAgICBpZiAobnVsbCAhPT0gdGhpcy5jYW52YXMpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFbXB0eSgpIHx8IHRoaXMuY29tbWl0KCk7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHRoaXMuY2FudmFzLmhlaWdodCA9IDA7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmUoKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzID0gbnVsbDtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbjkpLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbjksIG51bGwpO1xuICAgICAgICAgICAgc3VwZXIucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFBhcmVudCh0KSB7XG4gICAgICAgICAgIXRoaXMucGFyZW50ICYmIHQgPyB0aGlzLl91aU1hbmFnZXIucmVtb3ZlU2hvdWxkUmVzY2FsZSh0aGlzKSA6IHRoaXMucGFyZW50ICYmIG51bGwgPT09IHQgJiYgdGhpcy5fdWlNYW5hZ2VyLmFkZFNob3VsZFJlc2NhbGUodGhpcyk7XG4gICAgICAgICAgc3VwZXIuc2V0UGFyZW50KHQpO1xuICAgICAgICB9XG4gICAgICAgIG9uU2NhbGVDaGFuZ2luZygpIHtcbiAgICAgICAgICBjb25zdCBbdCwgZV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnMsXG4gICAgICAgICAgICBuID0gdGhpcy53aWR0aCAqIHQsXG4gICAgICAgICAgICBpID0gdGhpcy5oZWlnaHQgKiBlO1xuICAgICAgICAgIHRoaXMuc2V0RGltZW5zaW9ucyhuLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBlbmFibGVFZGl0TW9kZSgpIHtcbiAgICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdm4pICYmIG51bGwgIT09IHRoaXMuY2FudmFzKSB7XG4gICAgICAgICAgICBzdXBlci5lbmFibGVFZGl0TW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5kaXYuZHJhZ2dhYmxlID0gITE7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9tbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkaXNhYmxlRWRpdE1vZGUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNJbkVkaXRNb2RlKCkgJiYgbnVsbCAhPT0gdGhpcy5jYW52YXMpIHtcbiAgICAgICAgICAgIHN1cGVyLmRpc2FibGVFZGl0TW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5kaXYuZHJhZ2dhYmxlID0gIXRoaXMuaXNFbXB0eSgpO1xuICAgICAgICAgICAgdGhpcy5kaXYuY2xhc3NMaXN0LnJlbW92ZShcImVkaXRpbmdcIik7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9tbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbmNlQWRkZWQoKSB7XG4gICAgICAgICAgdGhpcy5kaXYuZHJhZ2dhYmxlID0gIXRoaXMuaXNFbXB0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGlzRW1wdHkoKSB7XG4gICAgICAgICAgcmV0dXJuIDAgPT09IHRoaXMucGF0aHMubGVuZ3RoIHx8IDEgPT09IHRoaXMucGF0aHMubGVuZ3RoICYmIDAgPT09IHRoaXMucGF0aHNbMF0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdCgpIHtcbiAgICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdm4pKSB7XG4gICAgICAgICAgICBzdXBlci5jb21taXQoKTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0aW5nID0gITE7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVFZGl0TW9kZSgpO1xuICAgICAgICAgICAgdGhpcy5zZXRJbkZvcmVncm91bmQoKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfdm4sICEwKTtcbiAgICAgICAgICAgIHRoaXMuZGl2LmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1RuLCBfVG4yKS5jYWxsKHRoaXMsICEwKTtcbiAgICAgICAgICAgIHRoaXMubWFrZVJlc2l6YWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuYWRkSW5rRWRpdG9ySWZOZWVkZWQoITApO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQubW92ZUVkaXRvckluRE9NKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaXYuZm9jdXMoe1xuICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiAhMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvY3VzaW4odCkge1xuICAgICAgICAgIHN1cGVyLmZvY3VzaW4odCk7XG4gICAgICAgICAgdGhpcy5lbmFibGVFZGl0TW9kZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNhbnZhc1BvaW50ZXJkb3duKHQpIHtcbiAgICAgICAgICBpZiAoMCA9PT0gdC5idXR0b24gJiYgdGhpcy5pc0luRWRpdE1vZGUoKSAmJiAhX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF92bikpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5Gb3JlZ3JvdW5kKCk7XG4gICAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBcIm1vdXNlXCIgIT09IHQudHlwZSAmJiB0aGlzLmRpdi5mb2N1cygpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfRG4sIF9EbjIpLmNhbGwodGhpcywgdC5vZmZzZXRYLCB0Lm9mZnNldFkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYW52YXNDb250ZXh0TWVudSh0KSB7XG4gICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNhbnZhc1BvaW50ZXJtb3ZlKHQpIHtcbiAgICAgICAgICB0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTG4sIF9MbjIpLmNhbGwodGhpcywgdC5vZmZzZXRYLCB0Lm9mZnNldFkpO1xuICAgICAgICB9XG4gICAgICAgIGNhbnZhc1BvaW50ZXJ1cCh0KSB7XG4gICAgICAgICAgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX0huLCBfSG4yKS5jYWxsKHRoaXMsIHQpO1xuICAgICAgICB9XG4gICAgICAgIGNhbnZhc1BvaW50ZXJsZWF2ZSh0KSB7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfSG4sIF9IbjIpLmNhbGwodGhpcywgdCk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUmVzaXphYmxlKCkge1xuICAgICAgICAgIHJldHVybiAhdGhpcy5pc0VtcHR5KCkgJiYgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF92bik7XG4gICAgICAgIH1cbiAgICAgICAgcmVuZGVyKCkge1xuICAgICAgICAgIGlmICh0aGlzLmRpdikgcmV0dXJuIHRoaXMuZGl2O1xuICAgICAgICAgIGxldCB0LCBlO1xuICAgICAgICAgIGlmICh0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICB0ID0gdGhpcy54O1xuICAgICAgICAgICAgZSA9IHRoaXMueTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3VwZXIucmVuZGVyKCk7XG4gICAgICAgICAgSW5rRWRpdG9yLl9sMTBuUHJvbWlzZS5nZXQoXCJlZGl0b3JfaW5rMl9hcmlhX2xhYmVsXCIpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICB2YXIgX3RoaXMkZGl2NjtcbiAgICAgICAgICAgIHJldHVybiAoX3RoaXMkZGl2NiA9IHRoaXMuZGl2KSA9PT0gbnVsbCB8fCBfdGhpcyRkaXY2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRkaXY2LnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgW24sIGksIHIsIHNdID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfRm4sIF9GbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgdGhpcy5zZXRBdChuLCBpLCAwLCAwKTtcbiAgICAgICAgICB0aGlzLnNldERpbXMociwgcyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfa24sIF9rbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgaWYgKHRoaXMud2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuLCBpXSA9IHRoaXMucGFyZW50RGltZW5zaW9ucztcbiAgICAgICAgICAgIHRoaXMuc2V0QXNwZWN0UmF0aW8odGhpcy53aWR0aCAqIG4sIHRoaXMuaGVpZ2h0ICogaSk7XG4gICAgICAgICAgICB0aGlzLnNldEF0KHQgKiBuLCBlICogaSwgdGhpcy53aWR0aCAqIG4sIHRoaXMuaGVpZ2h0ICogaSk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0FuLCAhMCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9SbiwgX1JuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RGltcyh0aGlzLndpZHRoICogbiwgdGhpcy5oZWlnaHQgKiBpKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BuLCBfUG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kaXYuY2xhc3NMaXN0LmFkZChcImRpc2FibGVkXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpdi5jbGFzc0xpc3QuYWRkKFwiZWRpdGluZ1wiKTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRWRpdE1vZGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTW4sIF9NbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGl2O1xuICAgICAgICB9XG4gICAgICAgIHNldERpbWVuc2lvbnModCwgZSkge1xuICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLnJvdW5kKHQpLFxuICAgICAgICAgICAgaSA9IE1hdGgucm91bmQoZSk7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfU24pID09PSBuICYmIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfRW4pID09PSBpKSByZXR1cm47XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9Tbiwgbik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9FbiwgaSk7XG4gICAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgY29uc3QgW3IsIHNdID0gdGhpcy5wYXJlbnREaW1lbnNpb25zO1xuICAgICAgICAgIHRoaXMud2lkdGggPSB0IC8gcjtcbiAgICAgICAgICB0aGlzLmhlaWdodCA9IGUgLyBzO1xuICAgICAgICAgIHRoaXMuZml4QW5kU2V0UG9zaXRpb24oKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3ZuKSAmJiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9xbiwgX3FuMikuY2FsbCh0aGlzLCB0LCBlKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9SbiwgX1JuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9QbiwgX1BuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS52aXNpYmlsaXR5ID0gXCJ2aXNpYmxlXCI7XG4gICAgICAgICAgdGhpcy5maXhEaW1zKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGRlc2VyaWFsaXplKHQsIGUsIG4pIHtcbiAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIHMuSW5rQW5ub3RhdGlvbkVsZW1lbnQpIHJldHVybiBudWxsO1xuICAgICAgICAgIGNvbnN0IGEgPSBzdXBlci5kZXNlcmlhbGl6ZSh0LCBlLCBuKTtcbiAgICAgICAgICBhLnRoaWNrbmVzcyA9IHQudGhpY2tuZXNzO1xuICAgICAgICAgIGEuY29sb3IgPSBpLlV0aWwubWFrZUhleENvbG9yKC4uLnQuY29sb3IpO1xuICAgICAgICAgIGEub3BhY2l0eSA9IHQub3BhY2l0eTtcbiAgICAgICAgICBjb25zdCBbbywgbF0gPSBhLnBhZ2VEaW1lbnNpb25zLFxuICAgICAgICAgICAgYyA9IGEud2lkdGggKiBvLFxuICAgICAgICAgICAgaCA9IGEuaGVpZ2h0ICogbCxcbiAgICAgICAgICAgIGQgPSBhLnBhcmVudFNjYWxlLFxuICAgICAgICAgICAgdSA9IHQudGhpY2tuZXNzIC8gMjtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQoYSwgX3ZuLCAhMCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KGEsIF9TbiwgTWF0aC5yb3VuZChjKSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KGEsIF9FbiwgTWF0aC5yb3VuZChoKSk7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgcGF0aHM6IHAsXG4gICAgICAgICAgICByZWN0OiBmLFxuICAgICAgICAgICAgcm90YXRpb246IGdcbiAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBmb3IgKGxldCB7XG4gICAgICAgICAgICBiZXppZXI6IHRcbiAgICAgICAgICB9IG9mIHApIHtcbiAgICAgICAgICAgIHQgPSBfY2xhc3NTdGF0aWNQcml2YXRlTWV0aG9kR2V0KElua0VkaXRvciwgSW5rRWRpdG9yLCBfJG4pLmNhbGwoSW5rRWRpdG9yLCB0LCBmLCBnKTtcbiAgICAgICAgICAgIGNvbnN0IGUgPSBbXTtcbiAgICAgICAgICAgIGEucGF0aHMucHVzaChlKTtcbiAgICAgICAgICAgIGxldCBuID0gZCAqICh0WzBdIC0gdSksXG4gICAgICAgICAgICAgIGkgPSBkICogKHRbMV0gLSB1KTtcbiAgICAgICAgICAgIGZvciAobGV0IHIgPSAyLCBzID0gdC5sZW5ndGg7IHIgPCBzOyByICs9IDYpIHtcbiAgICAgICAgICAgICAgY29uc3QgcyA9IGQgKiAodFtyXSAtIHUpLFxuICAgICAgICAgICAgICAgIGEgPSBkICogKHRbciArIDFdIC0gdSksXG4gICAgICAgICAgICAgICAgbyA9IGQgKiAodFtyICsgMl0gLSB1KSxcbiAgICAgICAgICAgICAgICBsID0gZCAqICh0W3IgKyAzXSAtIHUpLFxuICAgICAgICAgICAgICAgIGMgPSBkICogKHRbciArIDRdIC0gdSksXG4gICAgICAgICAgICAgICAgaCA9IGQgKiAodFtyICsgNV0gLSB1KTtcbiAgICAgICAgICAgICAgZS5wdXNoKFtbbiwgaV0sIFtzLCBhXSwgW28sIGxdLCBbYywgaF1dKTtcbiAgICAgICAgICAgICAgbiA9IGM7XG4gICAgICAgICAgICAgIGkgPSBoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgciA9IF9jbGFzc1N0YXRpY1ByaXZhdGVNZXRob2RHZXQodGhpcywgSW5rRWRpdG9yLCBfR24pLmNhbGwodGhpcywgZSk7XG4gICAgICAgICAgICBhLmJlemllclBhdGgyRC5wdXNoKHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldChhLCBfS24sIF9LbjIpLmNhbGwoYSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KGEsIF9kbiwgTWF0aC5tYXgoci5Bbm5vdGF0aW9uRWRpdG9yLk1JTl9TSVpFLCBtWzJdIC0gbVswXSkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldChhLCBfaG4sIE1hdGgubWF4KHIuQW5ub3RhdGlvbkVkaXRvci5NSU5fU0laRSwgbVszXSAtIG1bMV0pKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KGEsIF9xbiwgX3FuMikuY2FsbChhLCBjLCBoKTtcbiAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfVxuICAgICAgICBzZXJpYWxpemUoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSgpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBjb25zdCB0ID0gdGhpcy5nZXRSZWN0KDAsIDApLFxuICAgICAgICAgICAgZSA9IHIuQW5ub3RhdGlvbkVkaXRvci5fY29sb3JNYW5hZ2VyLmNvbnZlcnQodGhpcy5jdHguc3Ryb2tlU3R5bGUpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbm5vdGF0aW9uVHlwZTogaS5Bbm5vdGF0aW9uRWRpdG9yVHlwZS5JTkssXG4gICAgICAgICAgICBjb2xvcjogZSxcbiAgICAgICAgICAgIHRoaWNrbmVzczogdGhpcy50aGlja25lc3MsXG4gICAgICAgICAgICBvcGFjaXR5OiB0aGlzLm9wYWNpdHksXG4gICAgICAgICAgICBwYXRoczogX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfWG4sIF9YbjIpLmNhbGwodGhpcywgdGhpcy5zY2FsZUZhY3RvciAvIHRoaXMucGFyZW50U2NhbGUsIHRoaXMudHJhbnNsYXRpb25YLCB0aGlzLnRyYW5zbGF0aW9uWSwgdCksXG4gICAgICAgICAgICBwYWdlSW5kZXg6IHRoaXMucGFnZUluZGV4LFxuICAgICAgICAgICAgcmVjdDogdCxcbiAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX2NsYXNzNDEgPSBJbmtFZGl0b3I7XG4gICAgICBmdW5jdGlvbiBfd24yKHQpIHtcbiAgICAgICAgY29uc3QgZSA9IHRoaXMudGhpY2tuZXNzO1xuICAgICAgICB0aGlzLmFkZENvbW1hbmRzKHtcbiAgICAgICAgICBjbWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdDtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1RuLCBfVG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50aGlja25lc3MgPSBlO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfVG4sIF9UbjIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtdXN0RXhlYzogITAsXG4gICAgICAgICAgdHlwZTogaS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZS5JTktfVEhJQ0tORVNTLFxuICAgICAgICAgIG92ZXJ3cml0ZUlmU2FtZVR5cGU6ICEwLFxuICAgICAgICAgIGtlZXBVbmRvOiAhMFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9QZTQodCkge1xuICAgICAgICBjb25zdCBlID0gdGhpcy5jb2xvcjtcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kcyh7XG4gICAgICAgICAgY21kOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gdDtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BuLCBfUG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb2xvciA9IGU7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9QbiwgX1BuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG11c3RFeGVjOiAhMCxcbiAgICAgICAgICB0eXBlOiBpLkFubm90YXRpb25FZGl0b3JQYXJhbXNUeXBlLklOS19DT0xPUixcbiAgICAgICAgICBvdmVyd3JpdGVJZlNhbWVUeXBlOiAhMCxcbiAgICAgICAgICBrZWVwVW5kbzogITBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfQ24yKHQpIHtcbiAgICAgICAgdCAvPSAxMDA7XG4gICAgICAgIGNvbnN0IGUgPSB0aGlzLm9wYWNpdHk7XG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZHMoe1xuICAgICAgICAgIGNtZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGFjaXR5ID0gdDtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BuLCBfUG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGFjaXR5ID0gZTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BuLCBfUG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbXVzdEV4ZWM6ICEwLFxuICAgICAgICAgIHR5cGU6IGkuQW5ub3RhdGlvbkVkaXRvclBhcmFtc1R5cGUuSU5LX09QQUNJVFksXG4gICAgICAgICAgb3ZlcndyaXRlSWZTYW1lVHlwZTogITAsXG4gICAgICAgICAga2VlcFVuZG86ICEwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0ZuMigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBhcmVudFJvdGF0aW9uOiB0LFxuICAgICAgICAgIHBhcmVudERpbWVuc2lvbnM6IFtlLCBuXVxuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgc3dpdGNoICh0KSB7XG4gICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgIHJldHVybiBbMCwgbiwgbiwgZV07XG4gICAgICAgICAgY2FzZSAxODA6XG4gICAgICAgICAgICByZXR1cm4gW2UsIG4sIGUsIG5dO1xuICAgICAgICAgIGNhc2UgMjcwOlxuICAgICAgICAgICAgcmV0dXJuIFtlLCAwLCBuLCBlXTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFswLCAwLCBlLCBuXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0luMigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGN0eDogdCxcbiAgICAgICAgICBjb2xvcjogZSxcbiAgICAgICAgICBvcGFjaXR5OiBuLFxuICAgICAgICAgIHRoaWNrbmVzczogaSxcbiAgICAgICAgICBwYXJlbnRTY2FsZTogcixcbiAgICAgICAgICBzY2FsZUZhY3Rvcjogc1xuICAgICAgICB9ID0gdGhpcztcbiAgICAgICAgdC5saW5lV2lkdGggPSBpICogciAvIHM7XG4gICAgICAgIHQubGluZUNhcCA9IFwicm91bmRcIjtcbiAgICAgICAgdC5saW5lSm9pbiA9IFwicm91bmRcIjtcbiAgICAgICAgdC5taXRlckxpbWl0ID0gMTA7XG4gICAgICAgIHQuc3Ryb2tlU3R5bGUgPSBcIlwiLmNvbmNhdChlKS5jb25jYXQoKDAsIGEub3BhY2l0eVRvSGV4KShuKSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfRG4yKHQsIGUpIHtcbiAgICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdW4pKTtcbiAgICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsZWF2ZVwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2ZuKSk7XG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3BuKSk7XG4gICAgICAgIHRoaXMuY2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9nbikpO1xuICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9tbikpO1xuICAgICAgICB0aGlzLmlzRWRpdGluZyA9ICEwO1xuICAgICAgICBpZiAoIV9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfQW4pKSB7XG4gICAgICAgICAgdmFyIF90aGlzJG9wYWNpdHkyO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfQW4sICEwKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9SbiwgX1JuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICB0aGlzLnRoaWNrbmVzcyB8fCAodGhpcy50aGlja25lc3MgPSBfY2xhc3M0MS5fZGVmYXVsdFRoaWNrbmVzcyk7XG4gICAgICAgICAgdGhpcy5jb2xvciB8fCAodGhpcy5jb2xvciA9IF9jbGFzczQxLl9kZWZhdWx0Q29sb3IgfHwgci5Bbm5vdGF0aW9uRWRpdG9yLl9kZWZhdWx0TGluZUNvbG9yKTtcbiAgICAgICAgICAoX3RoaXMkb3BhY2l0eTIgPSB0aGlzLm9wYWNpdHkpICE9PSBudWxsICYmIF90aGlzJG9wYWNpdHkyICE9PSB2b2lkIDAgPyBfdGhpcyRvcGFjaXR5MiA6IHRoaXMub3BhY2l0eSA9IF9jbGFzczQxLl9kZWZhdWx0T3BhY2l0eTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRQYXRoLnB1c2goW3QsIGVdKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF95biwgITEpO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9JbiwgX0luMikuY2FsbCh0aGlzKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF94biwgKCkgPT4ge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX09uLCBfT24yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfeG4pICYmIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF94bikpO1xuICAgICAgICB9KTtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3huKSk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfTG4yKHQsIGUpIHtcbiAgICAgICAgY29uc3QgW24sIGldID0gdGhpcy5jdXJyZW50UGF0aC5hdCgtMSk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYXRoLmxlbmd0aCA+IDEgJiYgdCA9PT0gbiAmJiBlID09PSBpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmN1cnJlbnRQYXRoO1xuICAgICAgICBsZXQgcyA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYm4pO1xuICAgICAgICByLnB1c2goW3QsIGVdKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF95biwgITApO1xuICAgICAgICBpZiAoci5sZW5ndGggPD0gMikge1xuICAgICAgICAgIHMubW92ZVRvKC4uLnJbMF0pO1xuICAgICAgICAgIHMubGluZVRvKHQsIGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICgzID09PSByLmxlbmd0aCkge1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ibiwgcyA9IG5ldyBQYXRoMkQoKSk7XG4gICAgICAgICAgICBzLm1vdmVUbyguLi5yWzBdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfTm4sIF9ObjIpLmNhbGwodGhpcywgcywgLi4uci5hdCgtMyksIC4uLnIuYXQoLTIpLCB0LCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0JuMigpIHtcbiAgICAgICAgaWYgKDAgPT09IHRoaXMuY3VycmVudFBhdGgubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmN1cnJlbnRQYXRoLmF0KC0xKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ibikubGluZVRvKC4uLnQpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2puMih0LCBlKSB7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfeG4sIG51bGwpO1xuICAgICAgICB0ID0gTWF0aC5taW4oTWF0aC5tYXgodCwgMCksIHRoaXMuY2FudmFzLndpZHRoKTtcbiAgICAgICAgZSA9IE1hdGgubWluKE1hdGgubWF4KGUsIDApLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9MbiwgX0xuMikuY2FsbCh0aGlzLCB0LCBlKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfQm4sIF9CbjIpLmNhbGwodGhpcyk7XG4gICAgICAgIGxldCBuO1xuICAgICAgICBpZiAoMSAhPT0gdGhpcy5jdXJyZW50UGF0aC5sZW5ndGgpIG4gPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9VbiwgX1VuMikuY2FsbCh0aGlzKTtlbHNlIHtcbiAgICAgICAgICBjb25zdCBpID0gW3QsIGVdO1xuICAgICAgICAgIG4gPSBbW2ksIGkuc2xpY2UoKSwgaS5zbGljZSgpLCBpXV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfYm4pLFxuICAgICAgICAgIHIgPSB0aGlzLmN1cnJlbnRQYXRoO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYXRoID0gW107XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfYm4sIG5ldyBQYXRoMkQoKSk7XG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZHMoe1xuICAgICAgICAgIGNtZDogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxSYXdQYXRocy5wdXNoKHIpO1xuICAgICAgICAgICAgdGhpcy5wYXRocy5wdXNoKG4pO1xuICAgICAgICAgICAgdGhpcy5iZXppZXJQYXRoMkQucHVzaChpKTtcbiAgICAgICAgICAgIHRoaXMucmVidWlsZCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdW5kbzogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxSYXdQYXRocy5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMucGF0aHMucG9wKCk7XG4gICAgICAgICAgICB0aGlzLmJlemllclBhdGgyRC5wb3AoKTtcbiAgICAgICAgICAgIGlmICgwID09PSB0aGlzLnBhdGhzLmxlbmd0aCkgdGhpcy5yZW1vdmUoKTtlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcykge1xuICAgICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2tuLCBfa24yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX01uLCBfTW4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1RuLCBfVG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbXVzdEV4ZWM6ICEwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX09uMigpIHtcbiAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3luKSkgcmV0dXJuO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3luLCAhMSk7XG4gICAgICAgIGNvbnN0IHQgPSBNYXRoLmNlaWwodGhpcy50aGlja25lc3MgKiB0aGlzLnBhcmVudFNjYWxlKSxcbiAgICAgICAgICBlID0gdGhpcy5jdXJyZW50UGF0aC5zbGljZSgtMyksXG4gICAgICAgICAgbiA9IGUubWFwKHQgPT4gdFswXSksXG4gICAgICAgICAgaSA9IGUubWFwKHQgPT4gdFsxXSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgY3R4OiByXG4gICAgICAgICAgfSA9IChNYXRoLm1pbiguLi5uKSwgTWF0aC5tYXgoLi4ubiksIE1hdGgubWluKC4uLmkpLCBNYXRoLm1heCguLi5pKSwgdGhpcyk7XG4gICAgICAgIHIuc2F2ZSgpO1xuICAgICAgICByLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZm9yIChjb25zdCB0IG9mIHRoaXMuYmV6aWVyUGF0aDJEKSByLnN0cm9rZSh0KTtcbiAgICAgICAgci5zdHJva2UoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ibikpO1xuICAgICAgICByLnJlc3RvcmUoKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9ObjIodCwgZSwgbiwgaSwgciwgcywgYSkge1xuICAgICAgICBjb25zdCBvID0gKGUgKyBpKSAvIDIsXG4gICAgICAgICAgbCA9IChuICsgcikgLyAyLFxuICAgICAgICAgIGMgPSAoaSArIHMpIC8gMixcbiAgICAgICAgICBoID0gKHIgKyBhKSAvIDI7XG4gICAgICAgIHQuYmV6aWVyQ3VydmVUbyhvICsgMiAqIChpIC0gbykgLyAzLCBsICsgMiAqIChyIC0gbCkgLyAzLCBjICsgMiAqIChpIC0gYykgLyAzLCBoICsgMiAqIChyIC0gaCkgLyAzLCBjLCBoKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9VbjIoKSB7XG4gICAgICAgIGNvbnN0IHQgPSB0aGlzLmN1cnJlbnRQYXRoO1xuICAgICAgICBpZiAodC5sZW5ndGggPD0gMikgcmV0dXJuIFtbdFswXSwgdFswXSwgdC5hdCgtMSksIHQuYXQoLTEpXV07XG4gICAgICAgIGNvbnN0IGUgPSBbXTtcbiAgICAgICAgbGV0IG4sXG4gICAgICAgICAgW2ksIHJdID0gdFswXTtcbiAgICAgICAgZm9yIChuID0gMTsgbiA8IHQubGVuZ3RoIC0gMjsgbisrKSB7XG4gICAgICAgICAgY29uc3QgW3MsIGFdID0gdFtuXSxcbiAgICAgICAgICAgIFtvLCBsXSA9IHRbbiArIDFdLFxuICAgICAgICAgICAgYyA9IChzICsgbykgLyAyLFxuICAgICAgICAgICAgaCA9IChhICsgbCkgLyAyLFxuICAgICAgICAgICAgZCA9IFtpICsgMiAqIChzIC0gaSkgLyAzLCByICsgMiAqIChhIC0gcikgLyAzXSxcbiAgICAgICAgICAgIHUgPSBbYyArIDIgKiAocyAtIGMpIC8gMywgaCArIDIgKiAoYSAtIGgpIC8gM107XG4gICAgICAgICAgZS5wdXNoKFtbaSwgcl0sIGQsIHUsIFtjLCBoXV0pO1xuICAgICAgICAgIFtpLCByXSA9IFtjLCBoXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbcywgYV0gPSB0W25dLFxuICAgICAgICAgIFtvLCBsXSA9IHRbbiArIDFdLFxuICAgICAgICAgIGMgPSBbaSArIDIgKiAocyAtIGkpIC8gMywgciArIDIgKiAoYSAtIHIpIC8gM10sXG4gICAgICAgICAgaCA9IFtvICsgMiAqIChzIC0gbykgLyAzLCBsICsgMiAqIChhIC0gbCkgLyAzXTtcbiAgICAgICAgZS5wdXNoKFtbaSwgcl0sIGMsIGgsIFtvLCBsXV0pO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9QbjIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3puLCBfem4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9JbiwgX0luMikuY2FsbCh0aGlzKTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNhbnZhczogdCxcbiAgICAgICAgICBjdHg6IGVcbiAgICAgICAgfSA9IHRoaXM7XG4gICAgICAgIGUuc2V0VHJhbnNmb3JtKDEsIDAsIDAsIDEsIDAsIDApO1xuICAgICAgICBlLmNsZWFyUmVjdCgwLCAwLCB0LndpZHRoLCB0LmhlaWdodCk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3puLCBfem4yKS5jYWxsKHRoaXMpO1xuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5iZXppZXJQYXRoMkQpIGUuc3Ryb2tlKHQpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX0huMih0KSB7XG4gICAgICAgIHRoaXMuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVybGVhdmVcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9mbikpO1xuICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIiwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9wbikpO1xuICAgICAgICB0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZ24pKTtcbiAgICAgICAgdGhpcy5jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbW4pKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbnRleHRtZW51XCIsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdW4pKTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9qbiwgX2puMikuY2FsbCh0aGlzLCB0Lm9mZnNldFgsIHQub2Zmc2V0WSk7XG4gICAgICAgIHRoaXMuYWRkVG9Bbm5vdGF0aW9uU3RvcmFnZSgpO1xuICAgICAgICB0aGlzLnNldEluQmFja2dyb3VuZCgpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2tuMigpIHtcbiAgICAgICAgdGhpcy5jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHRoaXMuY2FudmFzLmhlaWdodCA9IDA7XG4gICAgICAgIHRoaXMuY2FudmFzLmNsYXNzTmFtZSA9IFwiaW5rRWRpdG9yQ2FudmFzXCI7XG4gICAgICAgIF9jbGFzczQxLl9sMTBuUHJvbWlzZS5nZXQoXCJlZGl0b3JfaW5rX2NhbnZhc19hcmlhX2xhYmVsXCIpLnRoZW4odCA9PiB7XG4gICAgICAgICAgdmFyIF90aGlzJGNhbnZhcztcbiAgICAgICAgICByZXR1cm4gKF90aGlzJGNhbnZhcyA9IHRoaXMuY2FudmFzKSA9PT0gbnVsbCB8fCBfdGhpcyRjYW52YXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGNhbnZhcy5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsIHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kaXYuYXBwZW5kKHRoaXMuY2FudmFzKTtcbiAgICAgICAgdGhpcy5jdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfTW4yKCkge1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX245LCBuZXcgUmVzaXplT2JzZXJ2ZXIodCA9PiB7XG4gICAgICAgICAgY29uc3QgZSA9IHRbMF0uY29udGVudFJlY3Q7XG4gICAgICAgICAgZS53aWR0aCAmJiBlLmhlaWdodCAmJiB0aGlzLnNldERpbWVuc2lvbnMoZS53aWR0aCwgZS5oZWlnaHQpO1xuICAgICAgICB9KSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbjkpLm9ic2VydmUodGhpcy5kaXYpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX1JuMigpIHtcbiAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0FuKSkgcmV0dXJuO1xuICAgICAgICBjb25zdCBbdCwgZV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnM7XG4gICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gTWF0aC5jZWlsKHRoaXMud2lkdGggKiB0KTtcbiAgICAgICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gTWF0aC5jZWlsKHRoaXMuaGVpZ2h0ICogZSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3puLCBfem4yKS5jYWxsKHRoaXMpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3FuMih0LCBlKSB7XG4gICAgICAgIGNvbnN0IG4gPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9XbiwgX1duMikuY2FsbCh0aGlzKSxcbiAgICAgICAgICBpID0gKHQgLSBuKSAvIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZG4pLFxuICAgICAgICAgIHIgPSAoZSAtIG4pIC8gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9obik7XG4gICAgICAgIHRoaXMuc2NhbGVGYWN0b3IgPSBNYXRoLm1pbihpLCByKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF96bjIoKSB7XG4gICAgICAgIGNvbnN0IHQgPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9XbiwgX1duMikuY2FsbCh0aGlzKSAvIDI7XG4gICAgICAgIHRoaXMuY3R4LnNldFRyYW5zZm9ybSh0aGlzLnNjYWxlRmFjdG9yLCAwLCAwLCB0aGlzLnNjYWxlRmFjdG9yLCB0aGlzLnRyYW5zbGF0aW9uWCAqIHRoaXMuc2NhbGVGYWN0b3IgKyB0LCB0aGlzLnRyYW5zbGF0aW9uWSAqIHRoaXMuc2NhbGVGYWN0b3IgKyB0KTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9Hbih0KSB7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgUGF0aDJEKCk7XG4gICAgICAgIGZvciAobGV0IG4gPSAwLCBpID0gdC5sZW5ndGg7IG4gPCBpOyBuKyspIHtcbiAgICAgICAgICBjb25zdCBbaSwgciwgcywgYV0gPSB0W25dO1xuICAgICAgICAgIDAgPT09IG4gJiYgZS5tb3ZlVG8oLi4uaSk7XG4gICAgICAgICAgZS5iZXppZXJDdXJ2ZVRvKHJbMF0sIHJbMV0sIHNbMF0sIHNbMV0sIGFbMF0sIGFbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX1ZuKHQsIGUsIG4pIHtcbiAgICAgICAgY29uc3QgW2ksIHIsIHMsIGFdID0gZTtcbiAgICAgICAgc3dpdGNoIChuKSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgZm9yIChsZXQgZSA9IDAsIG4gPSB0Lmxlbmd0aDsgZSA8IG47IGUgKz0gMikge1xuICAgICAgICAgICAgICB0W2VdICs9IGk7XG4gICAgICAgICAgICAgIHRbZSArIDFdID0gYSAtIHRbZSArIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgIGZvciAobGV0IGUgPSAwLCBuID0gdC5sZW5ndGg7IGUgPCBuOyBlICs9IDIpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IHRbZV07XG4gICAgICAgICAgICAgIHRbZV0gPSB0W2UgKyAxXSArIGk7XG4gICAgICAgICAgICAgIHRbZSArIDFdID0gbiArIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE4MDpcbiAgICAgICAgICAgIGZvciAobGV0IGUgPSAwLCBuID0gdC5sZW5ndGg7IGUgPCBuOyBlICs9IDIpIHtcbiAgICAgICAgICAgICAgdFtlXSA9IHMgLSB0W2VdO1xuICAgICAgICAgICAgICB0W2UgKyAxXSArPSByO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyNzA6XG4gICAgICAgICAgICBmb3IgKGxldCBlID0gMCwgbiA9IHQubGVuZ3RoOyBlIDwgbjsgZSArPSAyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG4gPSB0W2VdO1xuICAgICAgICAgICAgICB0W2VdID0gcyAtIHRbZSArIDFdO1xuICAgICAgICAgICAgICB0W2UgKyAxXSA9IGEgLSBuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgcm90YXRpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfJG4odCwgZSwgbikge1xuICAgICAgICBjb25zdCBbaSwgciwgcywgYV0gPSBlO1xuICAgICAgICBzd2l0Y2ggKG4pIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBmb3IgKGxldCBlID0gMCwgbiA9IHQubGVuZ3RoOyBlIDwgbjsgZSArPSAyKSB7XG4gICAgICAgICAgICAgIHRbZV0gLT0gaTtcbiAgICAgICAgICAgICAgdFtlICsgMV0gPSBhIC0gdFtlICsgMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDkwOlxuICAgICAgICAgICAgZm9yIChsZXQgZSA9IDAsIG4gPSB0Lmxlbmd0aDsgZSA8IG47IGUgKz0gMikge1xuICAgICAgICAgICAgICBjb25zdCBuID0gdFtlXTtcbiAgICAgICAgICAgICAgdFtlXSA9IHRbZSArIDFdIC0gcjtcbiAgICAgICAgICAgICAgdFtlICsgMV0gPSBuIC0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTgwOlxuICAgICAgICAgICAgZm9yIChsZXQgZSA9IDAsIG4gPSB0Lmxlbmd0aDsgZSA8IG47IGUgKz0gMikge1xuICAgICAgICAgICAgICB0W2VdID0gcyAtIHRbZV07XG4gICAgICAgICAgICAgIHRbZSArIDFdIC09IHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI3MDpcbiAgICAgICAgICAgIGZvciAobGV0IGUgPSAwLCBuID0gdC5sZW5ndGg7IGUgPCBuOyBlICs9IDIpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IHRbZV07XG4gICAgICAgICAgICAgIHRbZV0gPSBhIC0gdFtlICsgMV07XG4gICAgICAgICAgICAgIHRbZSArIDFdID0gcyAtIG47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCByb3RhdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9YbjIodCwgZSwgbiwgaSkge1xuICAgICAgICBjb25zdCByID0gW10sXG4gICAgICAgICAgcyA9IHRoaXMudGhpY2tuZXNzIC8gMixcbiAgICAgICAgICBhID0gdCAqIGUgKyBzLFxuICAgICAgICAgIG8gPSB0ICogbiArIHM7XG4gICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLnBhdGhzKSB7XG4gICAgICAgICAgY29uc3QgbiA9IFtdLFxuICAgICAgICAgICAgcyA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwLCByID0gZS5sZW5ndGg7IGkgPCByOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFtsLCBjLCBoLCBkXSA9IGVbaV0sXG4gICAgICAgICAgICAgIHUgPSB0ICogbFswXSArIGEsXG4gICAgICAgICAgICAgIHAgPSB0ICogbFsxXSArIG8sXG4gICAgICAgICAgICAgIGYgPSB0ICogY1swXSArIGEsXG4gICAgICAgICAgICAgIGcgPSB0ICogY1sxXSArIG8sXG4gICAgICAgICAgICAgIG0gPSB0ICogaFswXSArIGEsXG4gICAgICAgICAgICAgIGIgPSB0ICogaFsxXSArIG8sXG4gICAgICAgICAgICAgIHYgPSB0ICogZFswXSArIGEsXG4gICAgICAgICAgICAgIHkgPSB0ICogZFsxXSArIG87XG4gICAgICAgICAgICBpZiAoMCA9PT0gaSkge1xuICAgICAgICAgICAgICBuLnB1c2godSwgcCk7XG4gICAgICAgICAgICAgIHMucHVzaCh1LCBwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG4ucHVzaChmLCBnLCBtLCBiLCB2LCB5KTtcbiAgICAgICAgICAgIHMucHVzaChmLCBnKTtcbiAgICAgICAgICAgIGkgPT09IHIgLSAxICYmIHMucHVzaCh2LCB5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgIGJlemllcjogX2NsYXNzU3RhdGljUHJpdmF0ZU1ldGhvZEdldChfY2xhc3M0MSwgX2NsYXNzNDEsIF9WbikuY2FsbChfY2xhc3M0MSwgbiwgaSwgdGhpcy5yb3RhdGlvbiksXG4gICAgICAgICAgICBwb2ludHM6IF9jbGFzc1N0YXRpY1ByaXZhdGVNZXRob2RHZXQoX2NsYXNzNDEsIF9jbGFzczQxLCBfVm4pLmNhbGwoX2NsYXNzNDEsIHMsIGksIHRoaXMucm90YXRpb24pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfS24yKCkge1xuICAgICAgICBsZXQgdCA9IDEgLyAwLFxuICAgICAgICAgIGUgPSAtMSAvIDAsXG4gICAgICAgICAgbiA9IDEgLyAwLFxuICAgICAgICAgIHIgPSAtMSAvIDA7XG4gICAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnBhdGhzKSBmb3IgKGNvbnN0IFthLCBvLCBsLCBjXSBvZiBzKSB7XG4gICAgICAgICAgY29uc3QgcyA9IGkuVXRpbC5iZXppZXJCb3VuZGluZ0JveCguLi5hLCAuLi5vLCAuLi5sLCAuLi5jKTtcbiAgICAgICAgICB0ID0gTWF0aC5taW4odCwgc1swXSk7XG4gICAgICAgICAgbiA9IE1hdGgubWluKG4sIHNbMV0pO1xuICAgICAgICAgIGUgPSBNYXRoLm1heChlLCBzWzJdKTtcbiAgICAgICAgICByID0gTWF0aC5tYXgociwgc1szXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt0LCBuLCBlLCByXTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9XbjIoKSB7XG4gICAgICAgIHJldHVybiBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3ZuKSA/IE1hdGguY2VpbCh0aGlzLnRoaWNrbmVzcyAqIHRoaXMucGFyZW50U2NhbGUpIDogMDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9UbjIoKSB7XG4gICAgICAgIGxldCB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMF0gJiYgYXJndW1lbnRzWzBdO1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHJldHVybjtcbiAgICAgICAgaWYgKCFfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX3ZuKSkge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1BuLCBfUG4yKS5jYWxsKHRoaXMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfS24sIF9LbjIpLmNhbGwodGhpcyksXG4gICAgICAgICAgbiA9IF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX1duLCBfV24yKS5jYWxsKHRoaXMpO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX2RuLCBNYXRoLm1heChyLkFubm90YXRpb25FZGl0b3IuTUlOX1NJWkUsIGVbMl0gLSBlWzBdKSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfaG4sIE1hdGgubWF4KHIuQW5ub3RhdGlvbkVkaXRvci5NSU5fU0laRSwgZVszXSAtIGVbMV0pKTtcbiAgICAgICAgY29uc3QgaSA9IE1hdGguY2VpbChuICsgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9kbikgKiB0aGlzLnNjYWxlRmFjdG9yKSxcbiAgICAgICAgICBzID0gTWF0aC5jZWlsKG4gKyBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2huKSAqIHRoaXMuc2NhbGVGYWN0b3IpLFxuICAgICAgICAgIFthLCBvXSA9IHRoaXMucGFyZW50RGltZW5zaW9ucztcbiAgICAgICAgdGhpcy53aWR0aCA9IGkgLyBhO1xuICAgICAgICB0aGlzLmhlaWdodCA9IHMgLyBvO1xuICAgICAgICB0aGlzLnNldEFzcGVjdFJhdGlvKGksIHMpO1xuICAgICAgICBjb25zdCBsID0gdGhpcy50cmFuc2xhdGlvblgsXG4gICAgICAgICAgYyA9IHRoaXMudHJhbnNsYXRpb25ZO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uWCA9IC1lWzBdO1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uWSA9IC1lWzFdO1xuICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9SbiwgX1JuMikuY2FsbCh0aGlzKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfUG4sIF9QbjIpLmNhbGwodGhpcyk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfU24sIGkpO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX0VuLCBzKTtcbiAgICAgICAgdGhpcy5zZXREaW1zKGksIHMpO1xuICAgICAgICBjb25zdCBoID0gdCA/IG4gLyB0aGlzLnNjYWxlRmFjdG9yIC8gMiA6IDA7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKGwgLSB0aGlzLnRyYW5zbGF0aW9uWCAtIGgsIGMgLSB0aGlzLnRyYW5zbGF0aW9uWSAtIGgpO1xuICAgICAgfVxuICAgICAgX2RlZmluZVByb3BlcnR5KElua0VkaXRvciwgXCJfZGVmYXVsdENvbG9yXCIsIG51bGwpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KElua0VkaXRvciwgXCJfZGVmYXVsdE9wYWNpdHlcIiwgMSk7XG4gICAgICBfZGVmaW5lUHJvcGVydHkoSW5rRWRpdG9yLCBcIl9kZWZhdWx0VGhpY2tuZXNzXCIsIDEpO1xuICAgICAgX2RlZmluZVByb3BlcnR5KElua0VkaXRvciwgXCJfbDEwblByb21pc2VcIiwgdm9pZCAwKTtcbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShJbmtFZGl0b3IsIFwiX3R5cGVcIiwgXCJpbmtcIik7XG4gICAgICBlLklua0VkaXRvciA9IElua0VkaXRvcjtcbiAgICB9LCAodCwgZSwgbikgPT4ge1xuICAgICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgICB2YWx1ZTogITBcbiAgICAgIH0pO1xuICAgICAgZS5TdGFtcEVkaXRvciA9IHZvaWQgMDtcbiAgICAgIG4oMTQ4KTtcbiAgICAgIG4oMTUxKTtcbiAgICAgIHZhciBpID0gbigxNjMpLFxuICAgICAgICByID0gbigxKSxcbiAgICAgICAgcyA9IG4oMTY3KSxcbiAgICAgICAgYSA9IG4oMTk3KTtcbiAgICAgIHZhciBfWW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfSm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfUW4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfWm4gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfdGkgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtNYXAoKTtcbiAgICAgIHZhciBfbjEwID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2VpID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX25pID0gLyojX19QVVJFX18qL25ldyBXZWFrTWFwKCk7XG4gICAgICB2YXIgX2lpID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgICB2YXIgX2tuMyA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9zaSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9haSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9yaSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9vaSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgICAgdmFyIF9NbjMgPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICAgIGNsYXNzIFN0YW1wRWRpdG9yIGV4dGVuZHMgaS5Bbm5vdGF0aW9uRWRpdG9yIHtcbiAgICAgICAgY29uc3RydWN0b3IoX3QxOCkge1xuICAgICAgICAgIHN1cGVyKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3QxOCksIHt9LCB7XG4gICAgICAgICAgICBuYW1lOiBcInN0YW1wRWRpdG9yXCJcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEluaXRTcGVjKHRoaXMsIF9NbjMpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfb2kpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfcmkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfYWkpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfc2kpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyh0aGlzLCBfa24zKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlTWV0aG9kSW5pdFNwZWModGhpcywgX2lpKTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfWW4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfSm4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfUW4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfWm4sIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfdGksIHtcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyh0aGlzLCBfbjEwLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX2VpLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkSW5pdFNwZWModGhpcywgX25pLCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiAhMVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfWm4sIF90MTguYml0bWFwVXJsKTtcbiAgICAgICAgfVxuICAgICAgICByZW1vdmUoKSB7XG4gICAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pKSB7XG4gICAgICAgICAgICB2YXIgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTUsIF9jbGFzc1ByaXZhdGVGaWVsZEdldDE2O1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9ZbiwgbnVsbCk7XG4gICAgICAgICAgICB0aGlzLl91aU1hbmFnZXIuaW1hZ2VNYW5hZ2VyLmRlbGV0ZUlkKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pKTtcbiAgICAgICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQxNSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfdGkpKSA9PT0gbnVsbCB8fCBfY2xhc3NQcml2YXRlRmllbGRHZXQxNSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTUucmVtb3ZlKCk7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX3RpLCBudWxsKTtcbiAgICAgICAgICAgIChfY2xhc3NQcml2YXRlRmllbGRHZXQxNiA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbjEwKSkgPT09IG51bGwgfHwgX2NsYXNzUHJpdmF0ZUZpZWxkR2V0MTYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jbGFzc1ByaXZhdGVGaWVsZEdldDE2LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfbjEwLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3VwZXIucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVidWlsZCgpIHtcbiAgICAgICAgICBzdXBlci5yZWJ1aWxkKCk7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHRoaXMuZGl2KSB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0puKSAmJiBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9paSwgX2lpMikuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuaXNBdHRhY2hlZFRvRE9NIHx8IHRoaXMucGFyZW50LmFkZCh0aGlzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb25jZUFkZGVkKCkge1xuICAgICAgICAgIHRoaXMuZGl2LmRyYWdnYWJsZSA9ICEwO1xuICAgICAgICAgIHRoaXMucGFyZW50LmFkZFVuZG9hYmxlRWRpdG9yKHRoaXMpO1xuICAgICAgICAgIHRoaXMuZGl2LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNFbXB0eSgpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9RbikgJiYgbnVsbCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZbikgJiYgbnVsbCA9PT0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9abik7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0IGlzUmVzaXphYmxlKCkge1xuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgfVxuICAgICAgICByZW5kZXIoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGl2KSByZXR1cm4gdGhpcy5kaXY7XG4gICAgICAgICAgbGV0IHQsIGU7XG4gICAgICAgICAgaWYgKHRoaXMud2lkdGgpIHtcbiAgICAgICAgICAgIHQgPSB0aGlzLng7XG4gICAgICAgICAgICBlID0gdGhpcy55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdXBlci5yZW5kZXIoKTtcbiAgICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZbikpIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2tuMywgX2tuNCkuY2FsbCh0aGlzKTtlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGl2LmNsYXNzTGlzdC5hZGQoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfaWksIF9paTIpLmNhbGwodGhpcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLndpZHRoKSB7XG4gICAgICAgICAgICBjb25zdCBbbiwgaV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnM7XG4gICAgICAgICAgICB0aGlzLnNldEF0KHQgKiBuLCBlICogaSwgdGhpcy53aWR0aCAqIG4sIHRoaXMuaGVpZ2h0ICogaSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLmRpdjtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgZGVzZXJpYWxpemUodCwgZSwgbikge1xuICAgICAgICAgIGlmICh0IGluc3RhbmNlb2YgYS5TdGFtcEFubm90YXRpb25FbGVtZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICBjb25zdCBpID0gc3VwZXIuZGVzZXJpYWxpemUodCwgZSwgbiksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJlY3Q6IHIsXG4gICAgICAgICAgICAgIGJpdG1hcFVybDogcyxcbiAgICAgICAgICAgICAgYml0bWFwSWQ6IG8sXG4gICAgICAgICAgICAgIGlzU3ZnOiBsXG4gICAgICAgICAgICB9ID0gdDtcbiAgICAgICAgICBvICYmIG4uaW1hZ2VNYW5hZ2VyLmlzVmFsaWRJZChvKSA/IF9jbGFzc1ByaXZhdGVGaWVsZFNldChpLCBfSm4sIG8pIDogX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KGksIF9abiwgcyk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KGksIF9uaSwgbCk7XG4gICAgICAgICAgY29uc3QgW2MsIGhdID0gaS5wYWdlRGltZW5zaW9ucztcbiAgICAgICAgICBpLndpZHRoID0gKHJbMl0gLSByWzBdKSAvIGM7XG4gICAgICAgICAgaS5oZWlnaHQgPSAoclszXSAtIHJbMV0pIC8gaDtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICBzZXJpYWxpemUoKSB7XG4gICAgICAgICAgbGV0IHQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSAmJiBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgICBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsO1xuICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkoKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgY29uc3QgbiA9IHtcbiAgICAgICAgICAgIGFubm90YXRpb25UeXBlOiByLkFubm90YXRpb25FZGl0b3JUeXBlLlNUQU1QLFxuICAgICAgICAgICAgYml0bWFwSWQ6IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pLFxuICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLnBhZ2VJbmRleCxcbiAgICAgICAgICAgIHJlY3Q6IHRoaXMuZ2V0UmVjdCgwLCAwKSxcbiAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uLFxuICAgICAgICAgICAgaXNTdmc6IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbmkpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgbi5iaXRtYXBVcmwgPSBfY2xhc3NQcml2YXRlTWV0aG9kR2V0KHRoaXMsIF9vaSwgX29pMikuY2FsbCh0aGlzLCAhMCk7XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG51bGwgPT09IGUpIHJldHVybiBuO1xuICAgICAgICAgIGUuc3RhbXBzIHx8IChlLnN0YW1wcyA9IG5ldyBNYXAoKSk7XG4gICAgICAgICAgY29uc3QgaSA9IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfbmkpID8gKG4ucmVjdFsyXSAtIG4ucmVjdFswXSkgKiAobi5yZWN0WzNdIC0gbi5yZWN0WzFdKSA6IG51bGw7XG4gICAgICAgICAgaWYgKGUuc3RhbXBzLmhhcyhfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0puKSkpIHtcbiAgICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25pKSkge1xuICAgICAgICAgICAgICBjb25zdCB0ID0gZS5zdGFtcHMuZ2V0KF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pKTtcbiAgICAgICAgICAgICAgaWYgKGkgPiB0LmFyZWEpIHtcbiAgICAgICAgICAgICAgICB0LmFyZWEgPSBpO1xuICAgICAgICAgICAgICAgIHQuc2VyaWFsaXplZC5iaXRtYXAuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0LnNlcmlhbGl6ZWQuYml0bWFwID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfb2ksIF9vaTIpLmNhbGwodGhpcywgITEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGUuc3RhbXBzLnNldChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX0puKSwge1xuICAgICAgICAgICAgICBhcmVhOiBpLFxuICAgICAgICAgICAgICBzZXJpYWxpemVkOiBuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG4uYml0bWFwID0gX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfb2ksIF9vaTIpLmNhbGwodGhpcywgITEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX2lpMigpIHtcbiAgICAgICAgaWYgKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pKSB7XG4gICAgICAgICAgdGhpcy5fdWlNYW5hZ2VyLmltYWdlTWFuYWdlci5nZXRGcm9tSWQoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9KbikpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICBpZiAodCkge1xuICAgICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1luLCB0LmJpdG1hcCk7XG4gICAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX2tuMywgX2tuNCkuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9abikpIHtcbiAgICAgICAgICBjb25zdCB0ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9abik7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9abiwgbnVsbCk7XG4gICAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9RbiwgdGhpcy5fdWlNYW5hZ2VyLmltYWdlTWFuYWdlci5nZXRGcm9tVXJsKHQpLnRoZW4odCA9PiB7XG4gICAgICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRTZXQodGhpcywgX1FuLCBudWxsKTtcbiAgICAgICAgICAgIGlmICh0KSB7XG4gICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgYml0bWFwOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfWW4pLnZhbHVlLFxuICAgICAgICAgICAgICAgIGlkOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfSm4pLnZhbHVlLFxuICAgICAgICAgICAgICAgIGlzU3ZnOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfbmkpLnZhbHVlXG4gICAgICAgICAgICAgIH0gPSB0KTtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfa24zLCBfa240KS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSBlbHNlIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICAgICAgICB0LnR5cGUgPSBcImZpbGVcIjtcbiAgICAgICAgdC5hY2NlcHQgPSBcImltYWdlLypcIjtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9RbiwgbmV3IFByb21pc2UoZSA9PiB7XG4gICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfUW4sIG51bGwpO1xuICAgICAgICAgICAgaWYgKHQuZmlsZXMgJiYgMCAhPT0gdC5maWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgZSA9IGF3YWl0IHRoaXMuX3VpTWFuYWdlci5pbWFnZU1hbmFnZXIuZ2V0RnJvbUZpbGUodC5maWxlc1swXSk7XG4gICAgICAgICAgICAgIGlmICghZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgYml0bWFwOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfWW4pLnZhbHVlLFxuICAgICAgICAgICAgICAgIGlkOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfSm4pLnZhbHVlLFxuICAgICAgICAgICAgICAgIGlzU3ZnOiBfY2xhc3NQcml2YXRlRmllbGREZXN0cnVjdHVyZVNldCh0aGlzLCBfbmkpLnZhbHVlXG4gICAgICAgICAgICAgIH0gPSBlKTtcbiAgICAgICAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfa24zLCBfa240KS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSBlbHNlIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgICAgICBlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdC5hZGRFdmVudExpc3RlbmVyKFwiY2FuY2VsXCIsICgpID0+IHtcbiAgICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfUW4sIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0LmNsaWNrKCk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfa240KCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZGl2OiB0XG4gICAgICAgIH0gPSB0aGlzO1xuICAgICAgICBsZXQge1xuICAgICAgICAgIHdpZHRoOiBlLFxuICAgICAgICAgIGhlaWdodDogblxuICAgICAgICB9ID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9Zbik7XG4gICAgICAgIGNvbnN0IFtpLCByXSA9IHRoaXMucGFnZURpbWVuc2lvbnMsXG4gICAgICAgICAgcyA9IC43NTtcbiAgICAgICAgaWYgKHRoaXMud2lkdGgpIHtcbiAgICAgICAgICBlID0gdGhpcy53aWR0aCAqIGk7XG4gICAgICAgICAgbiA9IHRoaXMuaGVpZ2h0ICogcjtcbiAgICAgICAgfSBlbHNlIGlmIChlID4gcyAqIGkgfHwgbiA+IHMgKiByKSB7XG4gICAgICAgICAgY29uc3QgdCA9IE1hdGgubWluKHMgKiBpIC8gZSwgcyAqIHIgLyBuKTtcbiAgICAgICAgICBlICo9IHQ7XG4gICAgICAgICAgbiAqPSB0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFthLCBvXSA9IHRoaXMucGFyZW50RGltZW5zaW9ucztcbiAgICAgICAgdGhpcy5zZXREaW1zKGUgKiBhIC8gaSwgbiAqIG8gLyByKTtcbiAgICAgICAgY29uc3QgbCA9IF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfdGksIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIikpO1xuICAgICAgICB0LmFwcGVuZChsKTtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfcmksIF9yaTIpLmNhbGwodGhpcywgZSwgbik7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX01uMywgX01uNCkuY2FsbCh0aGlzKTtcbiAgICAgICAgdC5jbGFzc0xpc3QucmVtb3ZlKFwibG9hZGluZ1wiKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9zaTIodCwgZSkge1xuICAgICAgICBjb25zdCBbbiwgaV0gPSB0aGlzLnBhcmVudERpbWVuc2lvbnM7XG4gICAgICAgIHRoaXMud2lkdGggPSB0IC8gbjtcbiAgICAgICAgdGhpcy5oZWlnaHQgPSBlIC8gaTtcbiAgICAgICAgdGhpcy5zZXREaW1zKHQsIGUpO1xuICAgICAgICB0aGlzLmZpeEFuZFNldFBvc2l0aW9uKCk7XG4gICAgICAgIG51bGwgIT09IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfZWkpICYmIGNsZWFyVGltZW91dChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX2VpKSk7XG4gICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfZWksIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVGaWVsZFNldCh0aGlzLCBfZWksIG51bGwpO1xuICAgICAgICAgIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3JpLCBfcmkyKS5jYWxsKHRoaXMsIHQsIGUpO1xuICAgICAgICB9LCAyMDApKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9haTIodCwgZSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgd2lkdGg6IG4sXG4gICAgICAgICAgaGVpZ2h0OiBpXG4gICAgICAgIH0gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1luKTtcbiAgICAgICAgbGV0IHIgPSBuLFxuICAgICAgICAgIHMgPSBpLFxuICAgICAgICAgIGEgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1luKTtcbiAgICAgICAgZm9yICg7IHIgPiAyICogdCB8fCBzID4gMiAqIGU7KSB7XG4gICAgICAgICAgY29uc3QgbiA9IHIsXG4gICAgICAgICAgICBpID0gcztcbiAgICAgICAgICByID4gMiAqIHQgJiYgKHIgPSByID49IDE2Mzg0ID8gTWF0aC5mbG9vcihyIC8gMikgLSAxIDogTWF0aC5jZWlsKHIgLyAyKSk7XG4gICAgICAgICAgcyA+IDIgKiBlICYmIChzID0gcyA+PSAxNjM4NCA/IE1hdGguZmxvb3IocyAvIDIpIC0gMSA6IE1hdGguY2VpbChzIC8gMikpO1xuICAgICAgICAgIGNvbnN0IG8gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHIsIHMpO1xuICAgICAgICAgIG8uZ2V0Q29udGV4dChcIjJkXCIpLmRyYXdJbWFnZShhLCAwLCAwLCBuLCBpLCAwLCAwLCByLCBzKTtcbiAgICAgICAgICBhID0gby50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9yaTIodCwgZSkge1xuICAgICAgICBjb25zdCBuID0gX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF90aSk7XG4gICAgICAgIGlmICghbiB8fCBuLndpZHRoID09PSB0ICYmIG4uaGVpZ2h0ID09PSBlKSByZXR1cm47XG4gICAgICAgIG4ud2lkdGggPSB0O1xuICAgICAgICBuLmhlaWdodCA9IGU7XG4gICAgICAgIGNvbnN0IGkgPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25pKSA/IF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWW4pIDogX2NsYXNzUHJpdmF0ZU1ldGhvZEdldCh0aGlzLCBfYWksIF9haTIpLmNhbGwodGhpcywgdCwgZSksXG4gICAgICAgICAgciA9IG4uZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgICByLmZpbHRlciA9IHRoaXMuX3VpTWFuYWdlci5oY21GaWx0ZXI7XG4gICAgICAgIHIuZHJhd0ltYWdlKGksIDAsIDAsIGkud2lkdGgsIGkuaGVpZ2h0LCAwLCAwLCB0LCBlKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF9vaTIodCkge1xuICAgICAgICBpZiAodCkge1xuICAgICAgICAgIGlmIChfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX25pKSkge1xuICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3VpTWFuYWdlci5pbWFnZU1hbmFnZXIuZ2V0U3ZnVXJsKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfSm4pKTtcbiAgICAgICAgICAgIGlmICh0KSByZXR1cm4gdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIHdpZHRoOiB0LndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0LmhlaWdodFxuICAgICAgICAgIH0gPSBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1luKSk7XG4gICAgICAgICAgdC5nZXRDb250ZXh0KFwiMmRcIikuZHJhd0ltYWdlKF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWW4pLCAwLCAwKTtcbiAgICAgICAgICByZXR1cm4gdC50b0RhdGFVUkwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9uaSkpIHtcbiAgICAgICAgICBjb25zdCBbdCwgZV0gPSB0aGlzLnBhZ2VEaW1lbnNpb25zLFxuICAgICAgICAgICAgbiA9IE1hdGgucm91bmQodGhpcy53aWR0aCAqIHQgKiBzLlBpeGVsc1BlckluY2guUERGX1RPX0NTU19VTklUUyksXG4gICAgICAgICAgICBpID0gTWF0aC5yb3VuZCh0aGlzLmhlaWdodCAqIGUgKiBzLlBpeGVsc1BlckluY2guUERGX1RPX0NTU19VTklUUyksXG4gICAgICAgICAgICByID0gbmV3IE9mZnNjcmVlbkNhbnZhcyhuLCBpKTtcbiAgICAgICAgICByLmdldENvbnRleHQoXCIyZFwiKS5kcmF3SW1hZ2UoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZbiksIDAsIDAsIF9jbGFzc1ByaXZhdGVGaWVsZEdldCh0aGlzLCBfWW4pLndpZHRoLCBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX1luKS5oZWlnaHQsIDAsIDAsIG4sIGkpO1xuICAgICAgICAgIHJldHVybiByLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUoX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHRoaXMsIF9ZbikpO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX01uNCgpIHtcbiAgICAgICAgX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHRoaXMsIF9uMTAsIG5ldyBSZXNpemVPYnNlcnZlcih0ID0+IHtcbiAgICAgICAgICBjb25zdCBlID0gdFswXS5jb250ZW50UmVjdDtcbiAgICAgICAgICBlLndpZHRoICYmIGUuaGVpZ2h0ICYmIF9jbGFzc1ByaXZhdGVNZXRob2RHZXQodGhpcywgX3NpLCBfc2kyKS5jYWxsKHRoaXMsIGUud2lkdGgsIGUuaGVpZ2h0KTtcbiAgICAgICAgfSkpO1xuICAgICAgICBfY2xhc3NQcml2YXRlRmllbGRHZXQodGhpcywgX24xMCkub2JzZXJ2ZSh0aGlzLmRpdik7XG4gICAgICB9XG4gICAgICBfZGVmaW5lUHJvcGVydHkoU3RhbXBFZGl0b3IsIFwiX3R5cGVcIiwgXCJzdGFtcFwiKTtcbiAgICAgIGUuU3RhbXBFZGl0b3IgPSBTdGFtcEVkaXRvcjtcbiAgICB9XSxcbiAgICBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcbiAgZnVuY3Rpb24gX193X3BkZmpzX3JlcXVpcmVfXyh0KSB7XG4gICAgdmFyIGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bdF07XG4gICAgaWYgKHZvaWQgMCAhPT0gZSkgcmV0dXJuIGUuZXhwb3J0cztcbiAgICB2YXIgbiA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1t0XSA9IHtcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfTtcbiAgICBfX3dlYnBhY2tfbW9kdWxlc19fW3RdLmNhbGwobi5leHBvcnRzLCBuLCBuLmV4cG9ydHMsIF9fd19wZGZqc19yZXF1aXJlX18pO1xuICAgIHJldHVybiBuLmV4cG9ydHM7XG4gIH1cbiAgdmFyIF9fbmVzdGVkX3dlYnBhY2tfZXhwb3J0c19fID0ge307XG4gICgoKSA9PiB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICB2YXIgdCA9IF9fbmVzdGVkX3dlYnBhY2tfZXhwb3J0c19fO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIl9fZXNNb2R1bGVcIiwge1xuICAgICAgdmFsdWU6ICEwXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiQWJvcnRFeGNlcHRpb25cIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuQWJvcnRFeGNlcHRpb247XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiQW5ub3RhdGlvbkVkaXRvckxheWVyXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBzLkFubm90YXRpb25FZGl0b3JMYXllcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJBbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5Bbm5vdGF0aW9uRWRpdG9yUGFyYW1zVHlwZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJBbm5vdGF0aW9uRWRpdG9yVHlwZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5Bbm5vdGF0aW9uRWRpdG9yVHlwZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJBbm5vdGF0aW9uRWRpdG9yVUlNYW5hZ2VyXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBhLkFubm90YXRpb25FZGl0b3JVSU1hbmFnZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiQW5ub3RhdGlvbkxheWVyXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBvLkFubm90YXRpb25MYXllcjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJBbm5vdGF0aW9uTW9kZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5Bbm5vdGF0aW9uTW9kZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJDTWFwQ29tcHJlc3Npb25UeXBlXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBlLkNNYXBDb21wcmVzc2lvblR5cGU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiRmVhdHVyZVRlc3RcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuRmVhdHVyZVRlc3Q7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiR2xvYmFsV29ya2VyT3B0aW9uc1wiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gbC5HbG9iYWxXb3JrZXJPcHRpb25zO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIkltYWdlS2luZFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5JbWFnZUtpbmQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiSW52YWxpZFBERkV4Y2VwdGlvblwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5JbnZhbGlkUERGRXhjZXB0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIk1pc3NpbmdQREZFeGNlcHRpb25cIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuTWlzc2luZ1BERkV4Y2VwdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJPUFNcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuT1BTO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIlBERkRhdGFSYW5nZVRyYW5zcG9ydFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gbi5QREZEYXRhUmFuZ2VUcmFuc3BvcnQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiUERGRGF0ZVN0cmluZ1wiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gaS5QREZEYXRlU3RyaW5nO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIlBERldvcmtlclwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gbi5QREZXb3JrZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiUGFzc3dvcmRSZXNwb25zZXNcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuUGFzc3dvcmRSZXNwb25zZXM7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiUGVybWlzc2lvbkZsYWdcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuUGVybWlzc2lvbkZsYWc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiUGl4ZWxzUGVySW5jaFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gaS5QaXhlbHNQZXJJbmNoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIlByb21pc2VDYXBhYmlsaXR5XCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBlLlByb21pc2VDYXBhYmlsaXR5O1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcIlJlbmRlcmluZ0NhbmNlbGxlZEV4Y2VwdGlvblwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gaS5SZW5kZXJpbmdDYW5jZWxsZWRFeGNlcHRpb247XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiU1ZHR3JhcGhpY3NcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIG4uU1ZHR3JhcGhpY3M7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBlLlVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJVdGlsXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBlLlV0aWw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiVmVyYm9zaXR5TGV2ZWxcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuVmVyYm9zaXR5TGV2ZWw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiWGZhTGF5ZXJcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGMuWGZhTGF5ZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiYnVpbGRcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIG4uYnVpbGQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiY3JlYXRlVmFsaWRBYnNvbHV0ZVVybFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5jcmVhdGVWYWxpZEFic29sdXRlVXJsO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcImdldERvY3VtZW50XCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBuLmdldERvY3VtZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcImdldEZpbGVuYW1lRnJvbVVybFwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gaS5nZXRGaWxlbmFtZUZyb21Vcmw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiZ2V0UGRmRmlsZW5hbWVGcm9tVXJsXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBpLmdldFBkZkZpbGVuYW1lRnJvbVVybDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJnZXRYZmFQYWdlVmlld3BvcnRcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGkuZ2V0WGZhUGFnZVZpZXdwb3J0O1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcImlzRGF0YVNjaGVtZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gaS5pc0RhdGFTY2hlbWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwiaXNQZGZGaWxlXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBpLmlzUGRmRmlsZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJsb2FkU2NyaXB0XCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBpLmxvYWRTY3JpcHQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwibm9ybWFsaXplVW5pY29kZVwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gZS5ub3JtYWxpemVVbmljb2RlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInJlbmRlclRleHRMYXllclwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gci5yZW5kZXJUZXh0TGF5ZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwic2V0TGF5ZXJEaW1lbnNpb25zXCIsIHtcbiAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBpLnNldExheWVyRGltZW5zaW9ucztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJzaGFkb3dcIiwge1xuICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGUuc2hhZG93O1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBcInVwZGF0ZVRleHRMYXllclwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gci51cGRhdGVUZXh0TGF5ZXI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwidmVyc2lvblwiLCB7XG4gICAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gbi52ZXJzaW9uO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBlID0gX193X3BkZmpzX3JlcXVpcmVfXygxKSxcbiAgICAgIG4gPSBfX3dfcGRmanNfcmVxdWlyZV9fKDEyNCksXG4gICAgICBpID0gX193X3BkZmpzX3JlcXVpcmVfXygxNjcpLFxuICAgICAgciA9IF9fd19wZGZqc19yZXF1aXJlX18oMTk0KSxcbiAgICAgIHMgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE5NSksXG4gICAgICBhID0gX193X3BkZmpzX3JlcXVpcmVfXygxNjQpLFxuICAgICAgbyA9IF9fd19wZGZqc19yZXF1aXJlX18oMTk3KSxcbiAgICAgIGwgPSBfX3dfcGRmanNfcmVxdWlyZV9fKDE3NSksXG4gICAgICBjID0gX193X3BkZmpzX3JlcXVpcmVfXygyMDApO1xuICB9KSgpO1xuICByZXR1cm4gX19uZXN0ZWRfd2VicGFja19leHBvcnRzX187XG59KSgpKTtcblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9wZGYuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIHRyeVRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNvbnN0cnVjdG9yLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBpc0NvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanNcIik7XG52YXIgdHJ5VG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RyeS10by1zdHJpbmcuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ29uc3RydWN0b3IoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmICh0eXBlb2YgYXJndW1lbnQgPT0gJ29iamVjdCcgfHwgaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgJFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArICRTdHJpbmcoYXJndW1lbnQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xudmFyIGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIikuZik7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5pZiAoQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkge1xuICBkZWZpbmVQcm9wZXJ0eShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjaGFyQXQgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzXCIpLmNoYXJBdCk7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZHZhbmNlc3RyaW5naW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFMsIGluZGV4LCB1bmljb2RlKSB7XG4gIHJldHVybiBpbmRleCArICh1bmljb2RlID8gY2hhckF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGlzUHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUHJvdG90eXBlKSB7XG4gIGlmIChpc1Byb3RvdHlwZU9mKFByb3RvdHlwZSwgaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93ICRUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93ICRUeXBlRXJyb3IoJFN0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1iYXNpYy1kZXRlY3Rpb24uanMiOigobW9kdWxlKT0+e2V2YWwoIlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXR5cGVkLWFycmF5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBBcnJheUJ1ZmZlciAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRGF0YVZpZXcgIT0gJ3VuZGVmaW5lZCc7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWJhc2ljLWRldGVjdGlvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItbm9uLWV4dGVuc2libGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLy8gRkYyNi0gYnVnOiBBcnJheUJ1ZmZlcnMgYXJlIG5vbi1leHRlbnNpYmxlLCBidXQgT2JqZWN0LmlzRXh0ZW5zaWJsZSBkb2VzIG5vdCByZXBvcnQgaXRcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig4KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWlzZXh0ZW5zaWJsZSwgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBpZiAoT2JqZWN0LmlzRXh0ZW5zaWJsZShidWZmZXIpKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoYnVmZmVyLCAnYScsIHsgdmFsdWU6IDggfSk7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ub24tZXh0ZW5zaWJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1iYXNpYy1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItYmFzaWMtZGV0ZWN0aW9uLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzXCIpO1xudmFyIHRyeVRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdWlkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKTtcblxudmFyIGVuZm9yY2VJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5lbmZvcmNlO1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBJbnQ4QXJyYXkgPSBnbG9iYWwuSW50OEFycmF5O1xudmFyIEludDhBcnJheVByb3RvdHlwZSA9IEludDhBcnJheSAmJiBJbnQ4QXJyYXkucHJvdG90eXBlO1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5ID0gZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5O1xudmFyIFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlID0gVWludDhDbGFtcGVkQXJyYXkgJiYgVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlO1xudmFyIFR5cGVkQXJyYXkgPSBJbnQ4QXJyYXkgJiYgZ2V0UHJvdG90eXBlT2YoSW50OEFycmF5KTtcbnZhciBUeXBlZEFycmF5UHJvdG90eXBlID0gSW50OEFycmF5UHJvdG90eXBlICYmIGdldFByb3RvdHlwZU9mKEludDhBcnJheVByb3RvdHlwZSk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciBUWVBFRF9BUlJBWV9UQUcgPSB1aWQoJ1RZUEVEX0FSUkFZX1RBRycpO1xudmFyIFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SID0gJ1R5cGVkQXJyYXlDb25zdHJ1Y3Rvcic7XG4vLyBGaXhpbmcgbmF0aXZlIHR5cGVkIGFycmF5cyBpbiBPcGVyYSBQcmVzdG8gY3Jhc2hlcyB0aGUgYnJvd3Nlciwgc2VlICM1OTVcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gTkFUSVZFX0FSUkFZX0JVRkZFUiAmJiAhIXNldFByb3RvdHlwZU9mICYmIGNsYXNzb2YoZ2xvYmFsLm9wZXJhKSAhPT0gJ09wZXJhJztcbnZhciBUWVBFRF9BUlJBWV9UQUdfUkVRVUlSRUQgPSBmYWxzZTtcbnZhciBOQU1FLCBDb25zdHJ1Y3RvciwgUHJvdG90eXBlO1xuXG52YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QgPSB7XG4gIEludDhBcnJheTogMSxcbiAgVWludDhBcnJheTogMSxcbiAgVWludDhDbGFtcGVkQXJyYXk6IDEsXG4gIEludDE2QXJyYXk6IDIsXG4gIFVpbnQxNkFycmF5OiAyLFxuICBJbnQzMkFycmF5OiA0LFxuICBVaW50MzJBcnJheTogNCxcbiAgRmxvYXQzMkFycmF5OiA0LFxuICBGbG9hdDY0QXJyYXk6IDhcbn07XG5cbnZhciBCaWdJbnRBcnJheUNvbnN0cnVjdG9yc0xpc3QgPSB7XG4gIEJpZ0ludDY0QXJyYXk6IDgsXG4gIEJpZ1VpbnQ2NEFycmF5OiA4XG59O1xuXG52YXIgaXNWaWV3ID0gZnVuY3Rpb24gaXNWaWV3KGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gZmFsc2U7XG4gIHZhciBrbGFzcyA9IGNsYXNzb2YoaXQpO1xuICByZXR1cm4ga2xhc3MgPT09ICdEYXRhVmlldydcbiAgICB8fCBoYXNPd24oVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QsIGtsYXNzKVxuICAgIHx8IGhhc093bihCaWdJbnRBcnJheUNvbnN0cnVjdG9yc0xpc3QsIGtsYXNzKTtcbn07XG5cbnZhciBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlT2YoaXQpO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSkgcmV0dXJuO1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHByb3RvKTtcbiAgcmV0dXJuIChzdGF0ZSAmJiBoYXNPd24oc3RhdGUsIFRZUEVEX0FSUkFZX0NPTlNUUlVDVE9SKSkgPyBzdGF0ZVtUWVBFRF9BUlJBWV9DT05TVFJVQ1RPUl0gOiBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IocHJvdG8pO1xufTtcblxudmFyIGlzVHlwZWRBcnJheSA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGZhbHNlO1xuICB2YXIga2xhc3MgPSBjbGFzc29mKGl0KTtcbiAgcmV0dXJuIGhhc093bihUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpXG4gICAgfHwgaGFzT3duKEJpZ0ludEFycmF5Q29uc3RydWN0b3JzTGlzdCwga2xhc3MpO1xufTtcblxudmFyIGFUeXBlZEFycmF5ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc1R5cGVkQXJyYXkoaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IFR5cGVFcnJvcignVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Jyk7XG59O1xuXG52YXIgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIChDKSB7XG4gIGlmIChpc0NhbGxhYmxlKEMpICYmICghc2V0UHJvdG90eXBlT2YgfHwgaXNQcm90b3R5cGVPZihUeXBlZEFycmF5LCBDKSkpIHJldHVybiBDO1xuICB0aHJvdyBUeXBlRXJyb3IodHJ5VG9TdHJpbmcoQykgKyAnIGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yJyk7XG59O1xuXG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IGZ1bmN0aW9uIChLRVksIHByb3BlcnR5LCBmb3JjZWQsIG9wdGlvbnMpIHtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuO1xuICBpZiAoZm9yY2VkKSBmb3IgKHZhciBBUlJBWSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkge1xuICAgIHZhciBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgIGlmIChUeXBlZEFycmF5Q29uc3RydWN0b3IgJiYgaGFzT3duKFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIEtFWSkpIHRyeSB7XG4gICAgICBkZWxldGUgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZVtLRVldO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBvbGQgV2ViS2l0IGJ1ZyAtIHNvbWUgbWV0aG9kcyBhcmUgbm9uLWNvbmZpZ3VyYWJsZVxuICAgICAgdHJ5IHtcbiAgICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZVtLRVldID0gcHJvcGVydHk7XG4gICAgICB9IGNhdGNoIChlcnJvcjIpIHsgLyogZW1wdHkgKi8gfVxuICAgIH1cbiAgfVxuICBpZiAoIVR5cGVkQXJyYXlQcm90b3R5cGVbS0VZXSB8fCBmb3JjZWQpIHtcbiAgICBkZWZpbmVCdWlsdEluKFR5cGVkQXJyYXlQcm90b3R5cGUsIEtFWSwgZm9yY2VkID8gcHJvcGVydHlcbiAgICAgIDogTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyAmJiBJbnQ4QXJyYXlQcm90b3R5cGVbS0VZXSB8fCBwcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG5cbnZhciBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kID0gZnVuY3Rpb24gKEtFWSwgcHJvcGVydHksIGZvcmNlZCkge1xuICB2YXIgQVJSQVksIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbiAgaWYgKCFERVNDUklQVE9SUykgcmV0dXJuO1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICBpZiAoZm9yY2VkKSBmb3IgKEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBnbG9iYWxbQVJSQVldO1xuICAgICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciAmJiBoYXNPd24oVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBLRVkpKSB0cnkge1xuICAgICAgICBkZWxldGUgVHlwZWRBcnJheUNvbnN0cnVjdG9yW0tFWV07XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgfVxuICAgIGlmICghVHlwZWRBcnJheVtLRVldIHx8IGZvcmNlZCkge1xuICAgICAgLy8gVjggfiBDaHJvbWUgNDktNTAgYCVUeXBlZEFycmF5JWAgbWV0aG9kcyBhcmUgbm9uLXdyaXRhYmxlIG5vbi1jb25maWd1cmFibGVcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkZWZpbmVCdWlsdEluKFR5cGVkQXJyYXksIEtFWSwgZm9yY2VkID8gcHJvcGVydHkgOiBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIFR5cGVkQXJyYXlbS0VZXSB8fCBwcm9wZXJ0eSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gICAgfSBlbHNlIHJldHVybjtcbiAgfVxuICBmb3IgKEFSUkFZIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gZ2xvYmFsW0FSUkFZXTtcbiAgICBpZiAoVHlwZWRBcnJheUNvbnN0cnVjdG9yICYmICghVHlwZWRBcnJheUNvbnN0cnVjdG9yW0tFWV0gfHwgZm9yY2VkKSkge1xuICAgICAgZGVmaW5lQnVpbHRJbihUeXBlZEFycmF5Q29uc3RydWN0b3IsIEtFWSwgcHJvcGVydHkpO1xuICAgIH1cbiAgfVxufTtcblxuZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gIENvbnN0cnVjdG9yID0gZ2xvYmFsW05BTUVdO1xuICBQcm90b3R5cGUgPSBDb25zdHJ1Y3RvciAmJiBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIGlmIChQcm90b3R5cGUpIGVuZm9yY2VJbnRlcm5hbFN0YXRlKFByb3RvdHlwZSlbVFlQRURfQVJSQVlfQ09OU1RSVUNUT1JdID0gQ29uc3RydWN0b3I7XG4gIGVsc2UgTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyA9IGZhbHNlO1xufVxuXG5mb3IgKE5BTUUgaW4gQmlnSW50QXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gIENvbnN0cnVjdG9yID0gZ2xvYmFsW05BTUVdO1xuICBQcm90b3R5cGUgPSBDb25zdHJ1Y3RvciAmJiBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIGlmIChQcm90b3R5cGUpIGVuZm9yY2VJbnRlcm5hbFN0YXRlKFByb3RvdHlwZSlbVFlQRURfQVJSQVlfQ09OU1RSVUNUT1JdID0gQ29uc3RydWN0b3I7XG59XG5cbi8vIFdlYktpdCBidWcgLSB0eXBlZCBhcnJheXMgY29uc3RydWN0b3JzIHByb3RvdHlwZSBpcyBPYmplY3QucHJvdG90eXBlXG5pZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfHwgIWlzQ2FsbGFibGUoVHlwZWRBcnJheSkgfHwgVHlwZWRBcnJheSA9PT0gRnVuY3Rpb24ucHJvdG90eXBlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3cgLS0gc2FmZVxuICBUeXBlZEFycmF5ID0gZnVuY3Rpb24gVHlwZWRBcnJheSgpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG4gIH07XG4gIGlmIChOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSBmb3IgKE5BTUUgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yc0xpc3QpIHtcbiAgICBpZiAoZ2xvYmFsW05BTUVdKSBzZXRQcm90b3R5cGVPZihnbG9iYWxbTkFNRV0sIFR5cGVkQXJyYXkpO1xuICB9XG59XG5cbmlmICghTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB8fCAhVHlwZWRBcnJheVByb3RvdHlwZSB8fCBUeXBlZEFycmF5UHJvdG90eXBlID09PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXkucHJvdG90eXBlO1xuICBpZiAoTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUykgZm9yIChOQU1FIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnNMaXN0KSB7XG4gICAgaWYgKGdsb2JhbFtOQU1FXSkgc2V0UHJvdG90eXBlT2YoZ2xvYmFsW05BTUVdLnByb3RvdHlwZSwgVHlwZWRBcnJheVByb3RvdHlwZSk7XG4gIH1cbn1cblxuLy8gV2ViS2l0IGJ1ZyAtIG9uZSBtb3JlIG9iamVjdCBpbiBVaW50OENsYW1wZWRBcnJheSBwcm90b3R5cGUgY2hhaW5cbmlmIChOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIGdldFByb3RvdHlwZU9mKFVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlKSAhPT0gVHlwZWRBcnJheVByb3RvdHlwZSkge1xuICBzZXRQcm90b3R5cGVPZihVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSwgVHlwZWRBcnJheVByb3RvdHlwZSk7XG59XG5cbmlmIChERVNDUklQVE9SUyAmJiAhaGFzT3duKFR5cGVkQXJyYXlQcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gIFRZUEVEX0FSUkFZX1RBR19SRVFVSVJFRCA9IHRydWU7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihUeXBlZEFycmF5UHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0KHRoaXMpID8gdGhpc1tUWVBFRF9BUlJBWV9UQUddIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfSk7XG4gIGZvciAoTkFNRSBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3JzTGlzdCkgaWYgKGdsb2JhbFtOQU1FXSkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShnbG9iYWxbTkFNRV0sIFRZUEVEX0FSUkFZX1RBRywgTkFNRSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6IE5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MsXG4gIFRZUEVEX0FSUkFZX1RBRzogVFlQRURfQVJSQVlfVEFHX1JFUVVJUkVEICYmIFRZUEVEX0FSUkFZX1RBRyxcbiAgYVR5cGVkQXJyYXk6IGFUeXBlZEFycmF5LFxuICBhVHlwZWRBcnJheUNvbnN0cnVjdG9yOiBhVHlwZWRBcnJheUNvbnN0cnVjdG9yLFxuICBleHBvcnRUeXBlZEFycmF5TWV0aG9kOiBleHBvcnRUeXBlZEFycmF5TWV0aG9kLFxuICBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOiBleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kLFxuICBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I6IGdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixcbiAgaXNWaWV3OiBpc1ZpZXcsXG4gIGlzVHlwZWRBcnJheTogaXNUeXBlZEFycmF5LFxuICBUeXBlZEFycmF5OiBUeXBlZEFycmF5LFxuICBUeXBlZEFycmF5UHJvdG90eXBlOiBUeXBlZEFycmF5UHJvdG90eXBlXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIE5BVElWRV9BUlJBWV9CVUZGRVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLWJhc2ljLWRldGVjdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1iYXNpYy1kZXRlY3Rpb24uanNcIik7XG52YXIgRnVuY3Rpb25OYW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdElucyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW5zICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGFuSW5zdGFuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qc1wiKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXguanNcIik7XG52YXIgSUVFRTc1NCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pZWVlNzU0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWVlZTc1NC5qc1wiKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1wiKS5mKTtcbnZhciBhcnJheUZpbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktZmlsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZpbGwuanNcIik7XG52YXIgYXJyYXlTbGljZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUuanNcIik7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG5cbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5QUk9QRVI7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuQ09ORklHVVJBQkxFO1xudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG52YXIgREFUQV9WSUVXID0gJ0RhdGFWaWV3JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoJztcbnZhciBXUk9OR19JTkRFWCA9ICdXcm9uZyBpbmRleCc7XG52YXIgZ2V0SW50ZXJuYWxBcnJheUJ1ZmZlclN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoQVJSQVlfQlVGRkVSKTtcbnZhciBnZXRJbnRlcm5hbERhdGFWaWV3U3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihEQVRBX1ZJRVcpO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBOYXRpdmVBcnJheUJ1ZmZlciA9IGdsb2JhbFtBUlJBWV9CVUZGRVJdO1xudmFyICRBcnJheUJ1ZmZlciA9IE5hdGl2ZUFycmF5QnVmZmVyO1xudmFyIEFycmF5QnVmZmVyUHJvdG90eXBlID0gJEFycmF5QnVmZmVyICYmICRBcnJheUJ1ZmZlcltQUk9UT1RZUEVdO1xudmFyICREYXRhVmlldyA9IGdsb2JhbFtEQVRBX1ZJRVddO1xudmFyIERhdGFWaWV3UHJvdG90eXBlID0gJERhdGFWaWV3ICYmICREYXRhVmlld1tQUk9UT1RZUEVdO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG52YXIgQXJyYXkgPSBnbG9iYWwuQXJyYXk7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xudmFyIGZpbGwgPSB1bmN1cnJ5VGhpcyhhcnJheUZpbGwpO1xudmFyIHJldmVyc2UgPSB1bmN1cnJ5VGhpcyhbXS5yZXZlcnNlKTtcblxudmFyIHBhY2tJRUVFNzU0ID0gSUVFRTc1NC5wYWNrO1xudmFyIHVucGFja0lFRUU3NTQgPSBJRUVFNzU0LnVucGFjaztcblxudmFyIHBhY2tJbnQ4ID0gZnVuY3Rpb24gKG51bWJlcikge1xuICByZXR1cm4gW251bWJlciAmIDB4RkZdO1xufTtcblxudmFyIHBhY2tJbnQxNiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIFtudW1iZXIgJiAweEZGLCBudW1iZXIgPj4gOCAmIDB4RkZdO1xufTtcblxudmFyIHBhY2tJbnQzMiA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIFtudW1iZXIgJiAweEZGLCBudW1iZXIgPj4gOCAmIDB4RkYsIG51bWJlciA+PiAxNiAmIDB4RkYsIG51bWJlciA+PiAyNCAmIDB4RkZdO1xufTtcblxudmFyIHVucGFja0ludDMyID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyWzNdIDw8IDI0IHwgYnVmZmVyWzJdIDw8IDE2IHwgYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF07XG59O1xuXG52YXIgcGFja0Zsb2F0MzIgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIHJldHVybiBwYWNrSUVFRTc1NChudW1iZXIsIDIzLCA0KTtcbn07XG5cbnZhciBwYWNrRmxvYXQ2NCA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KG51bWJlciwgNTIsIDgpO1xufTtcblxudmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChDb25zdHJ1Y3Rvciwga2V5LCBnZXRJbnRlcm5hbFN0YXRlKSB7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihDb25zdHJ1Y3RvcltQUk9UT1RZUEVdLCBrZXksIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgZ2V0ID0gZnVuY3Rpb24gKHZpZXcsIGNvdW50LCBpbmRleCwgaXNMaXR0bGVFbmRpYW4pIHtcbiAgdmFyIHN0b3JlID0gZ2V0SW50ZXJuYWxEYXRhVmlld1N0YXRlKHZpZXcpO1xuICB2YXIgaW50SW5kZXggPSB0b0luZGV4KGluZGV4KTtcbiAgdmFyIGJvb2xJc0xpdHRsZUVuZGlhbiA9ICEhaXNMaXR0bGVFbmRpYW47XG4gIGlmIChpbnRJbmRleCArIGNvdW50ID4gc3RvcmUuYnl0ZUxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcihXUk9OR19JTkRFWCk7XG4gIHZhciBieXRlcyA9IHN0b3JlLmJ5dGVzO1xuICB2YXIgc3RhcnQgPSBpbnRJbmRleCArIHN0b3JlLmJ5dGVPZmZzZXQ7XG4gIHZhciBwYWNrID0gYXJyYXlTbGljZShieXRlcywgc3RhcnQsIHN0YXJ0ICsgY291bnQpO1xuICByZXR1cm4gYm9vbElzTGl0dGxlRW5kaWFuID8gcGFjayA6IHJldmVyc2UocGFjayk7XG59O1xuXG52YXIgc2V0ID0gZnVuY3Rpb24gKHZpZXcsIGNvdW50LCBpbmRleCwgY29udmVyc2lvbiwgdmFsdWUsIGlzTGl0dGxlRW5kaWFuKSB7XG4gIHZhciBzdG9yZSA9IGdldEludGVybmFsRGF0YVZpZXdTdGF0ZSh2aWV3KTtcbiAgdmFyIGludEluZGV4ID0gdG9JbmRleChpbmRleCk7XG4gIHZhciBwYWNrID0gY29udmVyc2lvbigrdmFsdWUpO1xuICB2YXIgYm9vbElzTGl0dGxlRW5kaWFuID0gISFpc0xpdHRsZUVuZGlhbjtcbiAgaWYgKGludEluZGV4ICsgY291bnQgPiBzdG9yZS5ieXRlTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIGJ5dGVzID0gc3RvcmUuYnl0ZXM7XG4gIHZhciBzdGFydCA9IGludEluZGV4ICsgc3RvcmUuYnl0ZU9mZnNldDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSBieXRlc1tzdGFydCArIGldID0gcGFja1tib29sSXNMaXR0bGVFbmRpYW4gPyBpIDogY291bnQgLSBpIC0gMV07XG59O1xuXG5pZiAoIU5BVElWRV9BUlJBWV9CVUZGRVIpIHtcbiAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCBBcnJheUJ1ZmZlclByb3RvdHlwZSk7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0b0luZGV4KGxlbmd0aCk7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBBUlJBWV9CVUZGRVIsXG4gICAgICBieXRlczogZmlsbChBcnJheShieXRlTGVuZ3RoKSwgMCksXG4gICAgICBieXRlTGVuZ3RoOiBieXRlTGVuZ3RoXG4gICAgfSk7XG4gICAgaWYgKCFERVNDUklQVE9SUykge1xuICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aDtcbiAgICAgIHRoaXMuZGV0YWNoZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgQXJyYXlCdWZmZXJQcm90b3R5cGUgPSAkQXJyYXlCdWZmZXJbUFJPVE9UWVBFXTtcblxuICAkRGF0YVZpZXcgPSBmdW5jdGlvbiBEYXRhVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsIERhdGFWaWV3UHJvdG90eXBlKTtcbiAgICBhbkluc3RhbmNlKGJ1ZmZlciwgQXJyYXlCdWZmZXJQcm90b3R5cGUpO1xuICAgIHZhciBidWZmZXJTdGF0ZSA9IGdldEludGVybmFsQXJyYXlCdWZmZXJTdGF0ZShidWZmZXIpO1xuICAgIHZhciBidWZmZXJMZW5ndGggPSBidWZmZXJTdGF0ZS5ieXRlTGVuZ3RoO1xuICAgIHZhciBvZmZzZXQgPSB0b0ludGVnZXJPckluZmluaXR5KGJ5dGVPZmZzZXQpO1xuICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGJ1ZmZlckxlbmd0aCkgdGhyb3cgUmFuZ2VFcnJvcignV3Jvbmcgb2Zmc2V0Jyk7XG4gICAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPT09IHVuZGVmaW5lZCA/IGJ1ZmZlckxlbmd0aCAtIG9mZnNldCA6IHRvTGVuZ3RoKGJ5dGVMZW5ndGgpO1xuICAgIGlmIChvZmZzZXQgKyBieXRlTGVuZ3RoID4gYnVmZmVyTGVuZ3RoKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgICB0eXBlOiBEQVRBX1ZJRVcsXG4gICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgsXG4gICAgICBieXRlT2Zmc2V0OiBvZmZzZXQsXG4gICAgICBieXRlczogYnVmZmVyU3RhdGUuYnl0ZXNcbiAgICB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgIHRoaXMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7XG4gICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuICB9O1xuXG4gIERhdGFWaWV3UHJvdG90eXBlID0gJERhdGFWaWV3W1BST1RPVFlQRV07XG5cbiAgaWYgKERFU0NSSVBUT1JTKSB7XG4gICAgYWRkR2V0dGVyKCRBcnJheUJ1ZmZlciwgJ2J5dGVMZW5ndGgnLCBnZXRJbnRlcm5hbEFycmF5QnVmZmVyU3RhdGUpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsICdidWZmZXInLCBnZXRJbnRlcm5hbERhdGFWaWV3U3RhdGUpO1xuICAgIGFkZEdldHRlcigkRGF0YVZpZXcsICdieXRlTGVuZ3RoJywgZ2V0SW50ZXJuYWxEYXRhVmlld1N0YXRlKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCAnYnl0ZU9mZnNldCcsIGdldEludGVybmFsRGF0YVZpZXdTdGF0ZSk7XG4gIH1cblxuICBkZWZpbmVCdWlsdElucyhEYXRhVmlld1Byb3RvdHlwZSwge1xuICAgIGdldEludDg6IGZ1bmN0aW9uIGdldEludDgoYnl0ZU9mZnNldCkge1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXSA8PCAyNCA+PiAyNDtcbiAgICB9LFxuICAgIGdldFVpbnQ4OiBmdW5jdGlvbiBnZXRVaW50OChieXRlT2Zmc2V0KSB7XG4gICAgICByZXR1cm4gZ2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQpWzBdO1xuICAgIH0sXG4gICAgZ2V0SW50MTY6IGZ1bmN0aW9uIGdldEludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlKTtcbiAgICAgIHJldHVybiAoYnl0ZXNbMV0gPDwgOCB8IGJ5dGVzWzBdKSA8PCAxNiA+PiAxNjtcbiAgICB9LFxuICAgIGdldFVpbnQxNjogZnVuY3Rpb24gZ2V0VWludDE2KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlKTtcbiAgICAgIHJldHVybiBieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF07XG4gICAgfSxcbiAgICBnZXRJbnQzMjogZnVuY3Rpb24gZ2V0SW50MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0ludDMyKGdldCh0aGlzLCA0LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlKSk7XG4gICAgfSxcbiAgICBnZXRVaW50MzI6IGZ1bmN0aW9uIGdldFVpbnQzMihieXRlT2Zmc2V0IC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICByZXR1cm4gdW5wYWNrSW50MzIoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogZmFsc2UpKSA+Pj4gMDtcbiAgICB9LFxuICAgIGdldEZsb2F0MzI6IGZ1bmN0aW9uIGdldEZsb2F0MzIoYnl0ZU9mZnNldCAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogZmFsc2UpLCAyMyk7XG4gICAgfSxcbiAgICBnZXRGbG9hdDY0OiBmdW5jdGlvbiBnZXRGbG9hdDY0KGJ5dGVPZmZzZXQgLyogLCBsaXR0bGVFbmRpYW4gKi8pIHtcbiAgICAgIHJldHVybiB1bnBhY2tJRUVFNzU0KGdldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlKSwgNTIpO1xuICAgIH0sXG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJbnQ4LCB2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXRVaW50ODogZnVuY3Rpb24gc2V0VWludDgoYnl0ZU9mZnNldCwgdmFsdWUpIHtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSW50OCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0SW50MTY6IGZ1bmN0aW9uIHNldEludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgMiwgYnl0ZU9mZnNldCwgcGFja0ludDE2LCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiBmYWxzZSk7XG4gICAgfSxcbiAgICBzZXRVaW50MTY6IGZ1bmN0aW9uIHNldFVpbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJbnQxNiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogZmFsc2UpO1xuICAgIH0sXG4gICAgc2V0SW50MzI6IGZ1bmN0aW9uIHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0ludDMyLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiBmYWxzZSk7XG4gICAgfSxcbiAgICBzZXRVaW50MzI6IGZ1bmN0aW9uIHNldFVpbnQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJbnQzMiwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogZmFsc2UpO1xuICAgIH0sXG4gICAgc2V0RmxvYXQzMjogZnVuY3Rpb24gc2V0RmxvYXQzMihieXRlT2Zmc2V0LCB2YWx1ZSAvKiAsIGxpdHRsZUVuZGlhbiAqLykge1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tGbG9hdDMyLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiBmYWxzZSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDY0OiBmdW5jdGlvbiBzZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIHZhbHVlIC8qICwgbGl0dGxlRW5kaWFuICovKSB7XG4gICAgICBzZXQodGhpcywgOCwgYnl0ZU9mZnNldCwgcGFja0Zsb2F0NjQsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IGZhbHNlKTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgdmFyIElOQ09SUkVDVF9BUlJBWV9CVUZGRVJfTkFNRSA9IFBST1BFUl9GVU5DVElPTl9OQU1FICYmIE5hdGl2ZUFycmF5QnVmZmVyLm5hbWUgIT09IEFSUkFZX0JVRkZFUjtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tbmV3IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG4gIGlmICghZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIE5hdGl2ZUFycmF5QnVmZmVyKDEpO1xuICB9KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIG5ldyBOYXRpdmVBcnJheUJ1ZmZlcigtMSk7XG4gIH0pIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgTmF0aXZlQXJyYXlCdWZmZXIoKTtcbiAgICBuZXcgTmF0aXZlQXJyYXlCdWZmZXIoMS41KTtcbiAgICBuZXcgTmF0aXZlQXJyYXlCdWZmZXIoTmFOKTtcbiAgICByZXR1cm4gTmF0aXZlQXJyYXlCdWZmZXIubGVuZ3RoICE9IDEgfHwgSU5DT1JSRUNUX0FSUkFZX0JVRkZFUl9OQU1FICYmICFDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRTtcbiAgfSkpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xuICAgICRBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uIEFycmF5QnVmZmVyKGxlbmd0aCkge1xuICAgICAgYW5JbnN0YW5jZSh0aGlzLCBBcnJheUJ1ZmZlclByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gbmV3IE5hdGl2ZUFycmF5QnVmZmVyKHRvSW5kZXgobGVuZ3RoKSk7XG4gICAgfTtcblxuICAgICRBcnJheUJ1ZmZlcltQUk9UT1RZUEVdID0gQXJyYXlCdWZmZXJQcm90b3R5cGU7XG5cbiAgICBmb3IgKHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhOYXRpdmVBcnJheUJ1ZmZlciksIGogPSAwLCBrZXk7IGtleXMubGVuZ3RoID4gajspIHtcbiAgICAgIGlmICghKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KCRBcnJheUJ1ZmZlciwga2V5LCBOYXRpdmVBcnJheUJ1ZmZlcltrZXldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBBcnJheUJ1ZmZlclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICRBcnJheUJ1ZmZlcjtcbiAgfSBlbHNlIGlmIChJTkNPUlJFQ1RfQVJSQVlfQlVGRkVSX05BTUUgJiYgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTmF0aXZlQXJyYXlCdWZmZXIsICduYW1lJywgQVJSQVlfQlVGRkVSKTtcbiAgfVxuXG4gIC8vIFdlYktpdCBidWcgLSB0aGUgc2FtZSBwYXJlbnQgcHJvdG90eXBlIGZvciB0eXBlZCBhcnJheXMgYW5kIGRhdGEgdmlld1xuICBpZiAoc2V0UHJvdG90eXBlT2YgJiYgZ2V0UHJvdG90eXBlT2YoRGF0YVZpZXdQcm90b3R5cGUpICE9PSBPYmplY3RQcm90b3R5cGUpIHtcbiAgICBzZXRQcm90b3R5cGVPZihEYXRhVmlld1Byb3RvdHlwZSwgT2JqZWN0UHJvdG90eXBlKTtcbiAgfVxuXG4gIC8vIGlPUyBTYWZhcmkgNy54IGJ1Z1xuICB2YXIgdGVzdFZpZXcgPSBuZXcgJERhdGFWaWV3KG5ldyAkQXJyYXlCdWZmZXIoMikpO1xuICB2YXIgJHNldEludDggPSB1bmN1cnJ5VGhpcyhEYXRhVmlld1Byb3RvdHlwZS5zZXRJbnQ4KTtcbiAgdGVzdFZpZXcuc2V0SW50OCgwLCAyMTQ3NDgzNjQ4KTtcbiAgdGVzdFZpZXcuc2V0SW50OCgxLCAyMTQ3NDgzNjQ5KTtcbiAgaWYgKHRlc3RWaWV3LmdldEludDgoMCkgfHwgIXRlc3RWaWV3LmdldEludDgoMSkpIGRlZmluZUJ1aWx0SW5zKERhdGFWaWV3UHJvdG90eXBlLCB7XG4gICAgc2V0SW50ODogZnVuY3Rpb24gc2V0SW50OChieXRlT2Zmc2V0LCB2YWx1ZSkge1xuICAgICAgJHNldEludDgodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKSB7XG4gICAgICAkc2V0SW50OCh0aGlzLCBieXRlT2Zmc2V0LCB2YWx1ZSA8PCAyNCA+PiAyNCk7XG4gICAgfVxuICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoJEFycmF5QnVmZmVyLCBBUlJBWV9CVUZGRVIpO1xuc2V0VG9TdHJpbmdUYWcoJERhdGFWaWV3LCBEQVRBX1ZJRVcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXJyYXlCdWZmZXI6ICRBcnJheUJ1ZmZlcixcbiAgRGF0YVZpZXc6ICREYXRhVmlld1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXIuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZmlsbC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsbGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWxsXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCA9IDAsIGVuZCA9IEBsZW5ndGggKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGxlbmd0aCk7XG4gIHZhciBlbmQgPSBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkO1xuICB2YXIgZW5kUG9zID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiB0b0Fic29sdXRlSW5kZXgoZW5kLCBsZW5ndGgpO1xuICB3aGlsZSAoZW5kUG9zID4gaW5kZXgpIE9baW5kZXgrK10gPSB2YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZpbGwuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIGxpc3QpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGxpc3QpO1xuICB2YXIgcmVzdWx0ID0gbmV3IENvbnN0cnVjdG9yKGxlbmd0aCk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgcmVzdWx0W2luZGV4XSA9IGxpc3RbaW5kZXgrK107XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20tY29uc3RydWN0b3ItYW5kLWxpc3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG52YXIgY2FsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG52YXIgY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nLmpzXCIpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanNcIik7XG52YXIgaXNDb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzXCIpO1xudmFyIGdldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qc1wiKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qc1wiKTtcblxudmFyICRBcnJheSA9IEFycmF5O1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LmZyb21cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gIHZhciBJU19DT05TVFJVQ1RPUiA9IGlzQ29uc3RydWN0b3IodGhpcyk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIGlmIChtYXBwaW5nKSBtYXBmbiA9IGJpbmQobWFwZm4sIGFyZ3VtZW50c0xlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChPKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvciwgbmV4dCwgdmFsdWU7XG4gIC8vIGlmIHRoZSB0YXJnZXQgaXMgbm90IGl0ZXJhYmxlIG9yIGl0J3MgYW4gYXJyYXkgd2l0aCB0aGUgZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBhIHNpbXBsZSBjYXNlXG4gIGlmIChpdGVyYXRvck1ldGhvZCAmJiAhKHRoaXMgPT09ICRBcnJheSAmJiBpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlcmF0b3JNZXRob2QpKSkge1xuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoTywgaXRlcmF0b3JNZXRob2QpO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMoKSA6IFtdO1xuICAgIGZvciAoOyEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlO1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgdmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICByZXN1bHQgPSBJU19DT05TVFJVQ1RPUiA/IG5ldyB0aGlzKGxlbmd0aCkgOiAkQXJyYXkobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgdmFsdWUgPSBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdO1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG52YXIgSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZmluZExhc3QsIGZpbmRMYXN0SW5kZXggfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19GSU5EX0xBU1RfSU5ERVggPSBUWVBFID09IDE7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQpO1xuICAgIHZhciBpbmRleCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIHdoaWxlIChpbmRleC0tID4gMCkge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiB2YWx1ZTsgLy8gZmluZExhc3RcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gaW5kZXg7IC8vIGZpbmRMYXN0SW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfTEFTVF9JTkRFWCA/IC0xIDogdW5kZWZpbmVkO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZExhc3RgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuICBmaW5kTGFzdDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0SW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maW5kLWZyb20tbGFzdFxuICBmaW5kTGFzdEluZGV4OiBjcmVhdGVNZXRob2QoMSlcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUuanNcIik7XG5cbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyUmVqZWN0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIElTX0ZJTFRFUl9SRUpFQ1QgPSBUWVBFID09IDc7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCk7XG4gICAgdmFyIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHNlbGYpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSIHx8IElTX0ZJTFRFUl9SRUpFQ1QgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclxuICAgICAgICB9IGVsc2Ugc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIC8vIGV2ZXJ5XG4gICAgICAgICAgY2FzZSA3OiBwdXNoKHRhcmdldCwgdmFsdWUpOyAgICAgIC8vIGZpbHRlclJlamVjdFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuICBmb3JFYWNoOiBjcmVhdGVNZXRob2QoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc29tZVxuICBzb21lOiBjcmVhdGVNZXRob2QoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhcbiAgZmluZEluZGV4OiBjcmVhdGVNZXRob2QoNiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyUmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4gIGZpbHRlclJlamVjdDogY3JlYXRlTWV0aG9kKDcpXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSwgYXJndW1lbnQpIHtcbiAgdmFyIG1ldGhvZCA9IFtdW01FVEhPRF9OQU1FXTtcbiAgcmV0dXJuICEhbWV0aG9kICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jYWxsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4gMTsgfSwgMSk7XG4gIH0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNldC1sZW5ndGguanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1hcnJheSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBTYWZhcmkgPCAxMyBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBpbiB0aGlzIGNhc2VcbnZhciBTSUxFTlRfT05fTk9OX1dSSVRBQkxFX0xFTkdUSF9TRVQgPSBERVNDUklQVE9SUyAmJiAhZnVuY3Rpb24gKCkge1xuICAvLyBtYWtlcyBubyBzZW5zZSB3aXRob3V0IHByb3BlciBzdHJpY3QgbW9kZSBzdXBwb3J0XG4gIGlmICh0aGlzICE9PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwgJ2xlbmd0aCcsIHsgd3JpdGFibGU6IGZhbHNlIH0pLmxlbmd0aCA9IDE7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICB9XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gU0lMRU5UX09OX05PTl9XUklUQUJMRV9MRU5HVEhfU0VUID8gZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICBpZiAoaXNBcnJheShPKSAmJiAhZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sICdsZW5ndGgnKS53cml0YWJsZSkge1xuICAgIHRocm93ICRUeXBlRXJyb3IoJ0Nhbm5vdCBzZXQgcmVhZCBvbmx5IC5sZW5ndGgnKTtcbiAgfSByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59IDogZnVuY3Rpb24gKE8sIGxlbmd0aCkge1xuICByZXR1cm4gTy5sZW5ndGggPSBsZW5ndGg7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNldC1sZW5ndGguanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2Utc2ltcGxlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qc1wiKTtcblxudmFyICRBcnJheSA9IEFycmF5O1xudmFyIG1heCA9IE1hdGgubWF4O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIGsgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gIHZhciBmaW4gPSB0b0Fic29sdXRlSW5kZXgoZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQsIGxlbmd0aCk7XG4gIHZhciByZXN1bHQgPSAkQXJyYXkobWF4KGZpbiAtIGssIDApKTtcbiAgZm9yICh2YXIgbiA9IDA7IGsgPCBmaW47IGsrKywgbisrKSBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIG4sIE9ba10pO1xuICByZXN1bHQubGVuZ3RoID0gbjtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2Utc2ltcGxlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoW10uc2xpY2UpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNvcnQuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGFycmF5U2xpY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2Utc2ltcGxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2Utc2ltcGxlLmpzXCIpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG52YXIgbWVyZ2VTb3J0ID0gZnVuY3Rpb24gKGFycmF5LCBjb21wYXJlZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgdmFyIG1pZGRsZSA9IGZsb29yKGxlbmd0aCAvIDIpO1xuICByZXR1cm4gbGVuZ3RoIDwgOCA/IGluc2VydGlvblNvcnQoYXJyYXksIGNvbXBhcmVmbikgOiBtZXJnZShcbiAgICBhcnJheSxcbiAgICBtZXJnZVNvcnQoYXJyYXlTbGljZShhcnJheSwgMCwgbWlkZGxlKSwgY29tcGFyZWZuKSxcbiAgICBtZXJnZVNvcnQoYXJyYXlTbGljZShhcnJheSwgbWlkZGxlKSwgY29tcGFyZWZuKSxcbiAgICBjb21wYXJlZm5cbiAgKTtcbn07XG5cbnZhciBpbnNlcnRpb25Tb3J0ID0gZnVuY3Rpb24gKGFycmF5LCBjb21wYXJlZm4pIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgdmFyIGkgPSAxO1xuICB2YXIgZWxlbWVudCwgajtcblxuICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgIGogPSBpO1xuICAgIGVsZW1lbnQgPSBhcnJheVtpXTtcbiAgICB3aGlsZSAoaiAmJiBjb21wYXJlZm4oYXJyYXlbaiAtIDFdLCBlbGVtZW50KSA+IDApIHtcbiAgICAgIGFycmF5W2pdID0gYXJyYXlbLS1qXTtcbiAgICB9XG4gICAgaWYgKGogIT09IGkrKykgYXJyYXlbal0gPSBlbGVtZW50O1xuICB9IHJldHVybiBhcnJheTtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIChhcnJheSwgbGVmdCwgcmlnaHQsIGNvbXBhcmVmbikge1xuICB2YXIgbGxlbmd0aCA9IGxlZnQubGVuZ3RoO1xuICB2YXIgcmxlbmd0aCA9IHJpZ2h0Lmxlbmd0aDtcbiAgdmFyIGxpbmRleCA9IDA7XG4gIHZhciByaW5kZXggPSAwO1xuXG4gIHdoaWxlIChsaW5kZXggPCBsbGVuZ3RoIHx8IHJpbmRleCA8IHJsZW5ndGgpIHtcbiAgICBhcnJheVtsaW5kZXggKyByaW5kZXhdID0gKGxpbmRleCA8IGxsZW5ndGggJiYgcmluZGV4IDwgcmxlbmd0aClcbiAgICAgID8gY29tcGFyZWZuKGxlZnRbbGluZGV4XSwgcmlnaHRbcmluZGV4XSkgPD0gMCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdXG4gICAgICA6IGxpbmRleCA8IGxsZW5ndGggPyBsZWZ0W2xpbmRleCsrXSA6IHJpZ2h0W3JpbmRleCsrXTtcbiAgfSByZXR1cm4gYXJyYXk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlU29ydDtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zb3J0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtYXJyYXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qc1wiKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyICRBcnJheSA9IEFycmF5O1xuXG4vLyBhIHBhcnQgb2YgYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmIChpc0NvbnN0cnVjdG9yKEMpICYmIChDID09PSAkQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGVsc2UgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gJEFycmF5IDogQztcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYXJyYXlTcGVjaWVzQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanNcIik7XG5cbi8vIGBBcnJheVNwZWNpZXNDcmVhdGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheXNwZWNpZXNjcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICByZXR1cm4gbmV3IChhcnJheVNwZWNpZXNDb25zdHJ1Y3RvcihvcmlnaW5hbEFycmF5KSkobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXRvLXJldmVyc2VkLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xuXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtY2hhbmdlLWFycmF5LWJ5LWNvcHkvI3NlYy1hcnJheS5wcm90b3R5cGUudG9SZXZlcnNlZFxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWNoYW5nZS1hcnJheS1ieS1jb3B5LyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b1JldmVyc2VkXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBDKSB7XG4gIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIEEgPSBuZXcgQyhsZW4pO1xuICB2YXIgayA9IDA7XG4gIGZvciAoOyBrIDwgbGVuOyBrKyspIEFba10gPSBPW2xlbiAtIGsgLSAxXTtcbiAgcmV0dXJuIEE7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXRvLXJldmVyc2VkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXdpdGguanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWNoYW5nZS1hcnJheS1ieS1jb3B5LyNzZWMtYXJyYXkucHJvdG90eXBlLndpdGhcbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jaGFuZ2UtYXJyYXktYnktY29weS8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUud2l0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgQywgaW5kZXgsIHZhbHVlKSB7XG4gIHZhciBsZW4gPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgdmFyIHJlbGF0aXZlSW5kZXggPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgdmFyIGFjdHVhbEluZGV4ID0gcmVsYXRpdmVJbmRleCA8IDAgPyBsZW4gKyByZWxhdGl2ZUluZGV4IDogcmVsYXRpdmVJbmRleDtcbiAgaWYgKGFjdHVhbEluZGV4ID49IGxlbiB8fCBhY3R1YWxJbmRleCA8IDApIHRocm93ICRSYW5nZUVycm9yKCdJbmNvcnJlY3QgaW5kZXgnKTtcbiAgdmFyIEEgPSBuZXcgQyhsZW4pO1xuICB2YXIgayA9IDA7XG4gIGZvciAoOyBrIDwgbGVuOyBrKyspIEFba10gPSBrID09PSBhY3R1YWxJbmRleCA/IHZhbHVlIDogT1trXTtcbiAgcmV0dXJuIEE7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXdpdGguanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBpdGVyYXRvckNsb3NlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanNcIik7XG5cbi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIEVOVFJJRVMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gRU5UUklFUyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWZyb20sIG5vLXRocm93LWxpdGVyYWwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBjbGFzc29mUmF3ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSAkT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb2xsZWN0aW9uLXdlYWsuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdElucyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW5zICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucy5qc1wiKTtcbnZhciBnZXRXZWFrRGF0YSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YS5qc1wiKS5nZXRXZWFrRGF0YSk7XG52YXIgYW5JbnN0YW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1pbnN0YW5jZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBpdGVyYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzXCIpO1xudmFyIEFycmF5SXRlcmF0aW9uTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzXCIpO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGludGVybmFsU3RhdGVHZXR0ZXJGb3IgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcjtcbnZhciBmaW5kID0gQXJyYXlJdGVyYXRpb25Nb2R1bGUuZmluZDtcbnZhciBmaW5kSW5kZXggPSBBcnJheUl0ZXJhdGlvbk1vZHVsZS5maW5kSW5kZXg7XG52YXIgc3BsaWNlID0gdW5jdXJyeVRoaXMoW10uc3BsaWNlKTtcbnZhciBpZCA9IDA7XG5cbi8vIGZhbGxiYWNrIGZvciB1bmNhdWdodCBmcm96ZW4ga2V5c1xudmFyIHVuY2F1Z2h0RnJvemVuU3RvcmUgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmZyb3plbiB8fCAoc3RhdGUuZnJvemVuID0gbmV3IFVuY2F1Z2h0RnJvemVuU3RvcmUoKSk7XG59O1xuXG52YXIgVW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lbnRyaWVzID0gW107XG59O1xuXG52YXIgZmluZFVuY2F1Z2h0RnJvemVuID0gZnVuY3Rpb24gKHN0b3JlLCBrZXkpIHtcbiAgcmV0dXJuIGZpbmQoc3RvcmUuZW50cmllcywgZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gIH0pO1xufTtcblxuVW5jYXVnaHRGcm96ZW5TdG9yZS5wcm90b3R5cGUgPSB7XG4gIGdldDogZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgcmV0dXJuIGVudHJ5WzFdO1xuICB9LFxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gISFmaW5kVW5jYXVnaHRGcm96ZW4odGhpcywga2V5KTtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBlbnRyeSA9IGZpbmRVbmNhdWdodEZyb3plbih0aGlzLCBrZXkpO1xuICAgIGlmIChlbnRyeSkgZW50cnlbMV0gPSB2YWx1ZTtcbiAgICBlbHNlIHRoaXMuZW50cmllcy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0sXG4gICdkZWxldGUnOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4KHRoaXMuZW50cmllcywgZnVuY3Rpb24gKGl0KSB7XG4gICAgICByZXR1cm4gaXRbMF0gPT09IGtleTtcbiAgICB9KTtcbiAgICBpZiAofmluZGV4KSBzcGxpY2UodGhpcy5lbnRyaWVzLCBpbmRleCwgMSk7XG4gICAgcmV0dXJuICEhfmluZGV4O1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0Q29uc3RydWN0b3I6IGZ1bmN0aW9uICh3cmFwcGVyLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVAsIEFEREVSKSB7XG4gICAgdmFyIENvbnN0cnVjdG9yID0gd3JhcHBlcihmdW5jdGlvbiAodGhhdCwgaXRlcmFibGUpIHtcbiAgICAgIGFuSW5zdGFuY2UodGhhdCwgUHJvdG90eXBlKTtcbiAgICAgIHNldEludGVybmFsU3RhdGUodGhhdCwge1xuICAgICAgICB0eXBlOiBDT05TVFJVQ1RPUl9OQU1FLFxuICAgICAgICBpZDogaWQrKyxcbiAgICAgICAgZnJvemVuOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpdGVyYWJsZSkpIGl0ZXJhdGUoaXRlcmFibGUsIHRoYXRbQURERVJdLCB7IHRoYXQ6IHRoYXQsIEFTX0VOVFJJRVM6IElTX01BUCB9KTtcbiAgICB9KTtcblxuICAgIHZhciBQcm90b3R5cGUgPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbiAgICB2YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IGludGVybmFsU3RhdGVHZXR0ZXJGb3IoQ09OU1RSVUNUT1JfTkFNRSk7XG5cbiAgICB2YXIgZGVmaW5lID0gZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhhdCk7XG4gICAgICB2YXIgZGF0YSA9IGdldFdlYWtEYXRhKGFuT2JqZWN0KGtleSksIHRydWUpO1xuICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHVuY2F1Z2h0RnJvemVuU3RvcmUoc3RhdGUpLnNldChrZXksIHZhbHVlKTtcbiAgICAgIGVsc2UgZGF0YVtzdGF0ZS5pZF0gPSB2YWx1ZTtcbiAgICAgIHJldHVybiB0aGF0O1xuICAgIH07XG5cbiAgICBkZWZpbmVCdWlsdElucyhQcm90b3R5cGUsIHtcbiAgICAgIC8vIGB7IFdlYWtNYXAsIFdlYWtTZXQgfS5wcm90b3R5cGUuZGVsZXRlKGtleSlgIG1ldGhvZHNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuZGVsZXRlXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQucHJvdG90eXBlLmRlbGV0ZVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKVsnZGVsZXRlJ10oa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgaGFzT3duKGRhdGEsIHN0YXRlLmlkKSAmJiBkZWxldGUgZGF0YVtzdGF0ZS5pZF07XG4gICAgICB9LFxuICAgICAgLy8gYHsgV2Vha01hcCwgV2Vha1NldCB9LnByb3RvdHlwZS5oYXMoa2V5KWAgbWV0aG9kc1xuICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrbWFwLnByb3RvdHlwZS5oYXNcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha3NldC5wcm90b3R5cGUuaGFzXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFpc09iamVjdChrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBkYXRhID0gZ2V0V2Vha0RhdGEoa2V5KTtcbiAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKS5oYXMoa2V5KTtcbiAgICAgICAgcmV0dXJuIGRhdGEgJiYgaGFzT3duKGRhdGEsIHN0YXRlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGRlZmluZUJ1aWx0SW5zKFByb3RvdHlwZSwgSVNfTUFQID8ge1xuICAgICAgLy8gYFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpYCBtZXRob2RcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtd2Vha21hcC5wcm90b3R5cGUuZ2V0XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGtleSkpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IGdldFdlYWtEYXRhKGtleSk7XG4gICAgICAgICAgaWYgKGRhdGEgPT09IHRydWUpIHJldHVybiB1bmNhdWdodEZyb3plblN0b3JlKHN0YXRlKS5nZXQoa2V5KTtcbiAgICAgICAgICByZXR1cm4gZGF0YSA/IGRhdGFbc3RhdGUuaWRdIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gYFdlYWtNYXAucHJvdG90eXBlLnNldChrZXksIHZhbHVlKWAgbWV0aG9kXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWttYXAucHJvdG90eXBlLnNldFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZGVmaW5lKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0gOiB7XG4gICAgICAvLyBgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKWAgbWV0aG9kXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXdlYWtzZXQucHJvdG90eXBlLmFkZFxuICAgICAgYWRkOiBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRlZmluZSh0aGlzLCB2YWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1cbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi13ZWFrLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGlzRm9yY2VkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciBJbnRlcm5hbE1ldGFkYXRhTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEuanNcIik7XG52YXIgaXRlcmF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qc1wiKTtcbnZhciBhbkluc3RhbmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUl9OQU1FLCB3cmFwcGVyLCBjb21tb24pIHtcbiAgdmFyIElTX01BUCA9IENPTlNUUlVDVE9SX05BTUUuaW5kZXhPZignTWFwJykgIT09IC0xO1xuICB2YXIgSVNfV0VBSyA9IENPTlNUUlVDVE9SX05BTUUuaW5kZXhPZignV2VhaycpICE9PSAtMTtcbiAgdmFyIEFEREVSID0gSVNfTUFQID8gJ3NldCcgOiAnYWRkJztcbiAgdmFyIE5hdGl2ZUNvbnN0cnVjdG9yID0gZ2xvYmFsW0NPTlNUUlVDVE9SX05BTUVdO1xuICB2YXIgTmF0aXZlUHJvdG90eXBlID0gTmF0aXZlQ29uc3RydWN0b3IgJiYgTmF0aXZlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICB2YXIgQ29uc3RydWN0b3IgPSBOYXRpdmVDb25zdHJ1Y3RvcjtcbiAgdmFyIGV4cG9ydGVkID0ge307XG5cbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgICB2YXIgdW5jdXJyaWVkTmF0aXZlTWV0aG9kID0gdW5jdXJyeVRoaXMoTmF0aXZlUHJvdG90eXBlW0tFWV0pO1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvdG90eXBlLCBLRVksXG4gICAgICBLRVkgPT0gJ2FkZCcgPyBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICAgICAgdW5jdXJyaWVkTmF0aXZlTWV0aG9kKHRoaXMsIHZhbHVlID09PSAwID8gMCA6IHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9IDogS0VZID09ICdkZWxldGUnID8gZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3Qoa2V5KSA/IGZhbHNlIDogdW5jdXJyaWVkTmF0aXZlTWV0aG9kKHRoaXMsIGtleSA9PT0gMCA/IDAgOiBrZXkpO1xuICAgICAgfSA6IEtFWSA9PSAnZ2V0JyA/IGZ1bmN0aW9uIGdldChrZXkpIHtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGtleSkgPyB1bmRlZmluZWQgOiB1bmN1cnJpZWROYXRpdmVNZXRob2QodGhpcywga2V5ID09PSAwID8gMCA6IGtleSk7XG4gICAgICB9IDogS0VZID09ICdoYXMnID8gZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3Qoa2V5KSA/IGZhbHNlIDogdW5jdXJyaWVkTmF0aXZlTWV0aG9kKHRoaXMsIGtleSA9PT0gMCA/IDAgOiBrZXkpO1xuICAgICAgfSA6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICAgIHVuY3VycmllZE5hdGl2ZU1ldGhvZCh0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgdmFyIFJFUExBQ0UgPSBpc0ZvcmNlZChcbiAgICBDT05TVFJVQ1RPUl9OQU1FLFxuICAgICFpc0NhbGxhYmxlKE5hdGl2ZUNvbnN0cnVjdG9yKSB8fCAhKElTX1dFQUsgfHwgTmF0aXZlUHJvdG90eXBlLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpLmVudHJpZXMoKS5uZXh0KCk7XG4gICAgfSkpXG4gICk7XG5cbiAgaWYgKFJFUExBQ0UpIHtcbiAgICAvLyBjcmVhdGUgY29sbGVjdGlvbiBjb25zdHJ1Y3RvclxuICAgIENvbnN0cnVjdG9yID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIENPTlNUUlVDVE9SX05BTUUsIElTX01BUCwgQURERVIpO1xuICAgIEludGVybmFsTWV0YWRhdGFNb2R1bGUuZW5hYmxlKCk7XG4gIH0gZWxzZSBpZiAoaXNGb3JjZWQoQ09OU1RSVUNUT1JfTkFNRSwgdHJ1ZSkpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgQ29uc3RydWN0b3IoKTtcbiAgICAvLyBlYXJseSBpbXBsZW1lbnRhdGlvbnMgbm90IHN1cHBvcnRzIGNoYWluaW5nXG4gICAgdmFyIEhBU05UX0NIQUlOSU5HID0gaW5zdGFuY2VbQURERVJdKElTX1dFQUsgPyB7fSA6IC0wLCAxKSAhPSBpbnN0YW5jZTtcbiAgICAvLyBWOCB+IENocm9taXVtIDQwLSB3ZWFrLWNvbGxlY3Rpb25zIHRocm93cyBvbiBwcmltaXRpdmVzLCBidXQgc2hvdWxkIHJldHVybiBmYWxzZVxuICAgIHZhciBUSFJPV1NfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuaGFzKDEpOyB9KTtcbiAgICAvLyBtb3N0IGVhcmx5IGltcGxlbWVudGF0aW9ucyBkb2Vzbid0IHN1cHBvcnRzIGl0ZXJhYmxlcywgbW9zdCBtb2Rlcm4gLSBub3QgY2xvc2UgaXQgY29ycmVjdGx5XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgIHZhciBBQ0NFUFRfSVRFUkFCTEVTID0gY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkgeyBuZXcgTmF0aXZlQ29uc3RydWN0b3IoaXRlcmFibGUpOyB9KTtcbiAgICAvLyBmb3IgZWFybHkgaW1wbGVtZW50YXRpb25zIC0wIGFuZCArMCBub3QgdGhlIHNhbWVcbiAgICB2YXIgQlVHR1lfWkVSTyA9ICFJU19XRUFLICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFY4IH4gQ2hyb21pdW0gNDItIGZhaWxzIG9ubHkgd2l0aCA1KyBlbGVtZW50c1xuICAgICAgdmFyICRpbnN0YW5jZSA9IG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpO1xuICAgICAgdmFyIGluZGV4ID0gNTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSAkaW5zdGFuY2VbQURERVJdKGluZGV4LCBpbmRleCk7XG4gICAgICByZXR1cm4gISRpbnN0YW5jZS5oYXMoLTApO1xuICAgIH0pO1xuXG4gICAgaWYgKCFBQ0NFUFRfSVRFUkFCTEVTKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IHdyYXBwZXIoZnVuY3Rpb24gKGR1bW15LCBpdGVyYWJsZSkge1xuICAgICAgICBhbkluc3RhbmNlKGR1bW15LCBOYXRpdmVQcm90b3R5cGUpO1xuICAgICAgICB2YXIgdGhhdCA9IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBOYXRpdmVDb25zdHJ1Y3RvcigpLCBkdW1teSwgQ29uc3RydWN0b3IpO1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGl0ZXJhYmxlKSkgaXRlcmF0ZShpdGVyYWJsZSwgdGhhdFtBRERFUl0sIHsgdGhhdDogdGhhdCwgQVNfRU5UUklFUzogSVNfTUFQIH0pO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gTmF0aXZlUHJvdG90eXBlO1xuICAgICAgTmF0aXZlUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG4gICAgfVxuXG4gICAgaWYgKFRIUk9XU19PTl9QUklNSVRJVkVTIHx8IEJVR0dZX1pFUk8pIHtcbiAgICAgIGZpeE1ldGhvZCgnZGVsZXRlJyk7XG4gICAgICBmaXhNZXRob2QoJ2hhcycpO1xuICAgICAgSVNfTUFQICYmIGZpeE1ldGhvZCgnZ2V0Jyk7XG4gICAgfVxuXG4gICAgaWYgKEJVR0dZX1pFUk8gfHwgSEFTTlRfQ0hBSU5JTkcpIGZpeE1ldGhvZChBRERFUik7XG5cbiAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIHNob3VsZCBub3QgY29udGFpbnMgLmNsZWFyIG1ldGhvZFxuICAgIGlmIChJU19XRUFLICYmIE5hdGl2ZVByb3RvdHlwZS5jbGVhcikgZGVsZXRlIE5hdGl2ZVByb3RvdHlwZS5jbGVhcjtcbiAgfVxuXG4gIGV4cG9ydGVkW0NPTlNUUlVDVE9SX05BTUVdID0gQ29uc3RydWN0b3I7XG4gICQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6IENvbnN0cnVjdG9yICE9IE5hdGl2ZUNvbnN0cnVjdG9yIH0sIGV4cG9ydGVkKTtcblxuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgQ09OU1RSVUNUT1JfTkFNRSk7XG5cbiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKENvbnN0cnVjdG9yLCBDT05TVFJVQ1RPUl9OQU1FLCBJU19NQVApO1xuXG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBvd25LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL293bi1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgTUFUQ0ggPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHZhciByZWdleHAgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgIHRyeSB7XG4gICAgICByZWdleHBbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gICAgfSBjYXRjaCAoZXJyb3IyKSB7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gZmFsc2U7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIEYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0LmpzIjooKG1vZHVsZSk9PntldmFsKCJcbi8vIGBDcmVhdGVJdGVyUmVzdWx0T2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlaXRlcnJlc3VsdG9iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIGRvbmUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiBkb25lIH07XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiOigobW9kdWxlKT0+e2V2YWwoIlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHRvUHJvcGVydHlLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9Qcm9wZXJ0eUtleShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgbWFrZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanNcIik7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBtYWtlQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbi5qc1wiKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgb3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSBkZWZpbmVCdWlsdEluKHRhcmdldCwga2V5LCBzcmNba2V5XSwgb3B0aW9ucyk7XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBkZWZpbmVQcm9wZXJ0eShnbG9iYWwsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVsZXRlLXByb3BlcnR5LW9yLXRocm93LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0cnlUb1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90cnktdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qc1wiKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIFApIHtcbiAgaWYgKCFkZWxldGUgT1tQXSkgdGhyb3cgJFR5cGVFcnJvcignQ2Fubm90IGRlbGV0ZSBwcm9wZXJ0eSAnICsgdHJ5VG9TdHJpbmcoUCkgKyAnIG9mICcgKyB0cnlUb1N0cmluZyhPKSk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlbGV0ZS1wcm9wZXJ0eS1vci10aHJvdy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPSA3O1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIjooKG1vZHVsZSk9PntldmFsKCJcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3Rcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBJU19IVE1MRERBID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGw6IGRvY3VtZW50QWxsLFxuICBJU19IVE1MRERBOiBJU19IVE1MRERBXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWFsbC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvZXMtbm90LWV4Y2VlZC1zYWZlLWludGVnZXIuanMiOigobW9kdWxlKT0+e2V2YWwoIlxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDB4MUZGRkZGRkZGRkZGRkY7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID4gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgJFR5cGVFcnJvcignTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20tZXhjZXB0aW9uLWNvbnN0YW50cy5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSW5kZXhTaXplRXJyb3I6IHsgczogJ0lOREVYX1NJWkVfRVJSJywgYzogMSwgbTogMSB9LFxuICBET01TdHJpbmdTaXplRXJyb3I6IHsgczogJ0RPTVNUUklOR19TSVpFX0VSUicsIGM6IDIsIG06IDAgfSxcbiAgSGllcmFyY2h5UmVxdWVzdEVycm9yOiB7IHM6ICdISUVSQVJDSFlfUkVRVUVTVF9FUlInLCBjOiAzLCBtOiAxIH0sXG4gIFdyb25nRG9jdW1lbnRFcnJvcjogeyBzOiAnV1JPTkdfRE9DVU1FTlRfRVJSJywgYzogNCwgbTogMSB9LFxuICBJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6IHsgczogJ0lOVkFMSURfQ0hBUkFDVEVSX0VSUicsIGM6IDUsIG06IDEgfSxcbiAgTm9EYXRhQWxsb3dlZEVycm9yOiB7IHM6ICdOT19EQVRBX0FMTE9XRURfRVJSJywgYzogNiwgbTogMCB9LFxuICBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjogeyBzOiAnTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSJywgYzogNywgbTogMSB9LFxuICBOb3RGb3VuZEVycm9yOiB7IHM6ICdOT1RfRk9VTkRfRVJSJywgYzogOCwgbTogMSB9LFxuICBOb3RTdXBwb3J0ZWRFcnJvcjogeyBzOiAnTk9UX1NVUFBPUlRFRF9FUlInLCBjOiA5LCBtOiAxIH0sXG4gIEluVXNlQXR0cmlidXRlRXJyb3I6IHsgczogJ0lOVVNFX0FUVFJJQlVURV9FUlInLCBjOiAxMCwgbTogMSB9LFxuICBJbnZhbGlkU3RhdGVFcnJvcjogeyBzOiAnSU5WQUxJRF9TVEFURV9FUlInLCBjOiAxMSwgbTogMSB9LFxuICBTeW50YXhFcnJvcjogeyBzOiAnU1lOVEFYX0VSUicsIGM6IDEyLCBtOiAxIH0sXG4gIEludmFsaWRNb2RpZmljYXRpb25FcnJvcjogeyBzOiAnSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSJywgYzogMTMsIG06IDEgfSxcbiAgTmFtZXNwYWNlRXJyb3I6IHsgczogJ05BTUVTUEFDRV9FUlInLCBjOiAxNCwgbTogMSB9LFxuICBJbnZhbGlkQWNjZXNzRXJyb3I6IHsgczogJ0lOVkFMSURfQUNDRVNTX0VSUicsIGM6IDE1LCBtOiAxIH0sXG4gIFZhbGlkYXRpb25FcnJvcjogeyBzOiAnVkFMSURBVElPTl9FUlInLCBjOiAxNiwgbTogMCB9LFxuICBUeXBlTWlzbWF0Y2hFcnJvcjogeyBzOiAnVFlQRV9NSVNNQVRDSF9FUlInLCBjOiAxNywgbTogMSB9LFxuICBTZWN1cml0eUVycm9yOiB7IHM6ICdTRUNVUklUWV9FUlInLCBjOiAxOCwgbTogMSB9LFxuICBOZXR3b3JrRXJyb3I6IHsgczogJ05FVFdPUktfRVJSJywgYzogMTksIG06IDEgfSxcbiAgQWJvcnRFcnJvcjogeyBzOiAnQUJPUlRfRVJSJywgYzogMjAsIG06IDEgfSxcbiAgVVJMTWlzbWF0Y2hFcnJvcjogeyBzOiAnVVJMX01JU01BVENIX0VSUicsIGM6IDIxLCBtOiAxIH0sXG4gIFF1b3RhRXhjZWVkZWRFcnJvcjogeyBzOiAnUVVPVEFfRVhDRUVERURfRVJSJywgYzogMjIsIG06IDEgfSxcbiAgVGltZW91dEVycm9yOiB7IHM6ICdUSU1FT1VUX0VSUicsIGM6IDIzLCBtOiAxIH0sXG4gIEludmFsaWROb2RlVHlwZUVycm9yOiB7IHM6ICdJTlZBTElEX05PREVfVFlQRV9FUlInLCBjOiAyNCwgbTogMSB9LFxuICBEYXRhQ2xvbmVFcnJvcjogeyBzOiAnREFUQV9DTE9ORV9FUlInLCBjOiAyNSwgbTogMSB9XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1leGNlcHRpb24tY29uc3RhbnRzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiOigobW9kdWxlKT0+e2V2YWwoIlxuLy8gaXRlcmFibGUgRE9NIGNvbGxlY3Rpb25zXG4vLyBmbGFnIC0gYGl0ZXJhYmxlYCBpbnRlcmZhY2UgLSAnZW50cmllcycsICdrZXlzJywgJ3ZhbHVlcycsICdmb3JFYWNoJyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IDAsXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IDAsXG4gIENTU1ZhbHVlTGlzdDogMCxcbiAgQ2xpZW50UmVjdExpc3Q6IDAsXG4gIERPTVJlY3RMaXN0OiAwLFxuICBET01TdHJpbmdMaXN0OiAwLFxuICBET01Ub2tlbkxpc3Q6IDEsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiAwLFxuICBGaWxlTGlzdDogMCxcbiAgSFRNTEFsbENvbGxlY3Rpb246IDAsXG4gIEhUTUxDb2xsZWN0aW9uOiAwLFxuICBIVE1MRm9ybUVsZW1lbnQ6IDAsXG4gIEhUTUxTZWxlY3RFbGVtZW50OiAwLFxuICBNZWRpYUxpc3Q6IDAsXG4gIE1pbWVUeXBlQXJyYXk6IDAsXG4gIE5hbWVkTm9kZU1hcDogMCxcbiAgTm9kZUxpc3Q6IDEsXG4gIFBhaW50UmVxdWVzdExpc3Q6IDAsXG4gIFBsdWdpbjogMCxcbiAgUGx1Z2luQXJyYXk6IDAsXG4gIFNWR0xlbmd0aExpc3Q6IDAsXG4gIFNWR051bWJlckxpc3Q6IDAsXG4gIFNWR1BhdGhTZWdMaXN0OiAwLFxuICBTVkdQb2ludExpc3Q6IDAsXG4gIFNWR1N0cmluZ0xpc3Q6IDAsXG4gIFNWR1RyYW5zZm9ybUxpc3Q6IDAsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IDAsXG4gIFN0eWxlU2hlZXRMaXN0OiAwLFxuICBUZXh0VHJhY2tDdWVMaXN0OiAwLFxuICBUZXh0VHJhY2tMaXN0OiAwLFxuICBUb3VjaExpc3Q6IDBcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20tdG9rZW4tbGlzdC1wcm90b3R5cGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLy8gaW4gb2xkIFdlYktpdCB2ZXJzaW9ucywgYGVsZW1lbnQuY2xhc3NMaXN0YCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgZ2xvYmFsIGBET01Ub2tlbkxpc3RgXG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanNcIik7XG5cbnZhciBjbGFzc0xpc3QgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ3NwYW4nKS5jbGFzc0xpc3Q7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gY2xhc3NMaXN0ICYmIGNsYXNzTGlzdC5jb25zdHJ1Y3RvciAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVRva2VuTGlzdFByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSA/IHVuZGVmaW5lZCA6IERPTVRva2VuTGlzdFByb3RvdHlwZTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20tdG9rZW4tbGlzdC1wcm90b3R5cGUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVzZXJBZ2VudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzXCIpO1xuXG52YXIgZmlyZWZveCA9IHVzZXJBZ2VudC5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS9pKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIWZpcmVmb3ggJiYgK2ZpcmVmb3hbMV07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIElTX0RFTk8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtZGVuby5qc1wiKTtcbnZhciBJU19OT0RFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gIUlTX0RFTk8gJiYgIUlTX05PREVcbiAgJiYgdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0J1xuICAmJiB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCc7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8uanMiOigobW9kdWxlKT0+e2V2YWwoIlxuLyogZ2xvYmFsIERlbm8gLS0gRGVubyBjYXNlICovXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBEZW5vID09ICdvYmplY3QnICYmIERlbm8gJiYgdHlwZW9mIERlbm8udmVyc2lvbiA9PSAnb2JqZWN0JztcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtZGVuby5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgVUEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvTVNJRXxUcmlkZW50Ly50ZXN0KFVBKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLXBlYmJsZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdXNlckFnZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gL2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHVzZXJBZ2VudCkgJiYgdHlwZW9mIFBlYmJsZSAhPSAndW5kZWZpbmVkJztcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLXBlYmJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1c2VyQWdlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qc1wiKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZG9zL25vLXZ1bG5lcmFibGUgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSAvKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgcHJvY2VzcyAhPSAndW5kZWZpbmVkJyAmJiBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtd2Vib3Mtd2Via2l0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1c2VyQWdlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHVzZXJBZ2VudCk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudC5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHVzZXJBZ2VudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzXCIpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERlbm8gPSBnbG9iYWwuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtd2Via2l0LXZlcnNpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVzZXJBZ2VudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzXCIpO1xuXG52YXIgd2Via2l0ID0gdXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFxcLyhcXGQrKVxcLi8pO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICEhd2Via2l0ICYmICt3ZWJraXRbMV07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXdlYmtpdC12ZXJzaW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiOigobW9kdWxlKT0+e2V2YWwoIlxuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xuXG52YXIgJEVycm9yID0gRXJyb3I7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xuXG52YXIgVEVTVCA9IChmdW5jdGlvbiAoYXJnKSB7IHJldHVybiBTdHJpbmcoJEVycm9yKGFyZykuc3RhY2spOyB9KSgnenhjYXNkJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSAtLSBzYWZlXG52YXIgVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZID0gL1xcblxccyphdCBbXjpdKjpbXlxcbl0qLztcbnZhciBJU19WOF9PUl9DSEFLUkFfU1RBQ0sgPSBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlkudGVzdChURVNUKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RhY2ssIGRyb3BFbnRyaWVzKSB7XG4gIGlmIChJU19WOF9PUl9DSEFLUkFfU1RBQ0sgJiYgdHlwZW9mIHN0YWNrID09ICdzdHJpbmcnICYmICEkRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UpIHtcbiAgICB3aGlsZSAoZHJvcEVudHJpZXMtLSkgc3RhY2sgPSByZXBsYWNlKHN0YWNrLCBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlksICcnKTtcbiAgfSByZXR1cm4gc3RhY2s7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWNsZWFyLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG52YXIgY2xlYXJFcnJvclN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWNsZWFyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXIuanNcIik7XG52YXIgRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qc1wiKTtcblxuLy8gbm9uLXN0YW5kYXJkIFY4XG52YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXJyb3IsIEMsIHN0YWNrLCBkcm9wRW50cmllcykge1xuICBpZiAoRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUpIHtcbiAgICBpZiAoY2FwdHVyZVN0YWNrVHJhY2UpIGNhcHR1cmVTdGFja1RyYWNlKGVycm9yLCBDKTtcbiAgICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywgY2xlYXJFcnJvclN0YWNrKHN0YWNrLCBkcm9wRW50cmllcykpO1xuICB9XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbGFibGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVycm9yID0gRXJyb3IoJ2EnKTtcbiAgaWYgKCEoJ3N0YWNrJyBpbiBlcnJvcikpIHJldHVybiB0cnVlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgNykpO1xuICByZXR1cm4gZXJyb3Iuc3RhY2sgIT09IDc7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci10by1zdHJpbmcuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzXCIpO1xuXG52YXIgbmF0aXZlRXJyb3JUb1N0cmluZyA9IEVycm9yLnByb3RvdHlwZS50b1N0cmluZztcblxudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGlmIChERVNDUklQVE9SUykge1xuICAgIC8vIENocm9tZSAzMi0gaW5jb3JyZWN0bHkgY2FsbCBhY2Nlc3NvclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIHZhciBvYmplY3QgPSBjcmVhdGUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnbmFtZScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcyA9PT0gb2JqZWN0O1xuICAgIH0gfSkpO1xuICAgIGlmIChuYXRpdmVFcnJvclRvU3RyaW5nLmNhbGwob2JqZWN0KSAhPT0gJ3RydWUnKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBGRjEwLSBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgbm9uLXN0cmluZ3NcbiAgcmV0dXJuIG5hdGl2ZUVycm9yVG9TdHJpbmcuY2FsbCh7IG1lc3NhZ2U6IDEsIG5hbWU6IDIgfSkgIT09ICcyOiAxJ1xuICAgIC8vIElFOCBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgZGVmYXVsdHNcbiAgICB8fCBuYXRpdmVFcnJvclRvU3RyaW5nLmNhbGwoe30pICE9PSAnRXJyb3InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gSU5DT1JSRUNUX1RPX1NUUklORyA/IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICB2YXIgTyA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgbmFtZSA9IG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50KE8ubmFtZSwgJ0Vycm9yJyk7XG4gIHZhciBtZXNzYWdlID0gbm9ybWFsaXplU3RyaW5nQXJndW1lbnQoTy5tZXNzYWdlKTtcbiAgcmV0dXJuICFuYW1lID8gbWVzc2FnZSA6ICFtZXNzYWdlID8gbmFtZSA6IG5hbWUgKyAnOiAnICsgbWVzc2FnZTtcbn0gOiBuYXRpdmVFcnJvclRvU3RyaW5nO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXRvLXN0cmluZy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKS5mKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5LmpzXCIpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzXCIpO1xudmFyIGlzRm9yY2VkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qc1wiKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgICAgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5kb250Q2FsbEdldFNldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiOigobW9kdWxlKT0+e2V2YWwoIlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgbW92ZWQgdG8gZW50cnkgcG9pbnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xudmFyIHJlZ2V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjLCBGT1JDRUQsIFNIQU0pIHtcbiAgdmFyIFNZTUJPTCA9IHdlbGxLbm93blN5bWJvbChLRVkpO1xuXG4gIHZhciBERUxFR0FURVNfVE9fU1lNQk9MID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTdHJpbmcgbWV0aG9kcyBjYWxsIHN5bWJvbC1uYW1lZCBSZWdFcCBtZXRob2RzXG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9O1xuICAgIHJldHVybiAnJ1tLRVldKE8pICE9IDc7XG4gIH0pO1xuXG4gIHZhciBERUxFR0FURVNfVE9fRVhFQyA9IERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBTeW1ib2wtbmFtZWQgUmVnRXhwIG1ldGhvZHMgY2FsbCAuZXhlY1xuICAgIHZhciBleGVjQ2FsbGVkID0gZmFsc2U7XG4gICAgdmFyIHJlID0gL2EvO1xuXG4gICAgaWYgKEtFWSA9PT0gJ3NwbGl0Jykge1xuICAgICAgLy8gV2UgY2FuJ3QgdXNlIHJlYWwgcmVnZXggaGVyZSBzaW5jZSBpdCBjYXVzZXMgZGVvcHRpbWl6YXRpb25cbiAgICAgIC8vIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGluIFY4XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzA2XG4gICAgICByZSA9IHt9O1xuICAgICAgLy8gUmVnRXhwW0BAc3BsaXRdIGRvZXNuJ3QgY2FsbCB0aGUgcmVnZXgncyBleGVjIG1ldGhvZCwgYnV0IGZpcnN0IGNyZWF0ZXNcbiAgICAgIC8vIGEgbmV3IG9uZS4gV2UgbmVlZCB0byByZXR1cm4gdGhlIHBhdGNoZWQgcmVnZXggd2hlbiBjcmVhdGluZyB0aGUgbmV3IG9uZS5cbiAgICAgIHJlLmNvbnN0cnVjdG9yID0ge307XG4gICAgICByZS5jb25zdHJ1Y3RvcltTUEVDSUVTXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlOyB9O1xuICAgICAgcmUuZmxhZ3MgPSAnJztcbiAgICAgIHJlW1NZTUJPTF0gPSAvLi9bU1lNQk9MXTtcbiAgICB9XG5cbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG5cbiAgICByZVtTWU1CT0xdKCcnKTtcbiAgICByZXR1cm4gIWV4ZWNDYWxsZWQ7XG4gIH0pO1xuXG4gIGlmIChcbiAgICAhREVMRUdBVEVTX1RPX1NZTUJPTCB8fFxuICAgICFERUxFR0FURVNfVE9fRVhFQyB8fFxuICAgIEZPUkNFRFxuICApIHtcbiAgICB2YXIgdW5jdXJyaWVkTmF0aXZlUmVnRXhwTWV0aG9kID0gdW5jdXJyeVRoaXMoLy4vW1NZTUJPTF0pO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgdmFyIHVuY3VycmllZE5hdGl2ZU1ldGhvZCA9IHVuY3VycnlUaGlzKG5hdGl2ZU1ldGhvZCk7XG4gICAgICB2YXIgJGV4ZWMgPSByZWdleHAuZXhlYztcbiAgICAgIGlmICgkZXhlYyA9PT0gcmVnZXhwRXhlYyB8fCAkZXhlYyA9PT0gUmVnRXhwUHJvdG90eXBlLmV4ZWMpIHtcbiAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgLy8gVGhlIG5hdGl2ZSBTdHJpbmcgbWV0aG9kIGFscmVhZHkgZGVsZWdhdGVzIHRvIEBAbWV0aG9kICh0aGlzXG4gICAgICAgICAgLy8gcG9seWZpbGxlZCBmdW5jdGlvbiksIGxlYXNpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuY3VycmllZE5hdGl2ZVJlZ0V4cE1ldGhvZChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5jdXJyaWVkTmF0aXZlTWV0aG9kKHN0ciwgcmVnZXhwLCBhcmcyKSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZG9uZTogZmFsc2UgfTtcbiAgICB9KTtcblxuICAgIGRlZmluZUJ1aWx0SW4oU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBtZXRob2RzWzBdKTtcbiAgICBkZWZpbmVCdWlsdEluKFJlZ0V4cFByb3RvdHlwZSwgU1lNQk9MLCBtZXRob2RzWzFdKTtcbiAgfVxuXG4gIGlmIChTSEFNKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoUmVnRXhwUHJvdG90eXBlW1NZTUJPTF0sICdzaGFtJywgdHJ1ZSk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmxhdHRlbi1pbnRvLWFycmF5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWFycmF5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanNcIik7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qc1wiKTtcbnZhciBkb2VzTm90RXhjZWVkU2FmZUludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvZXMtbm90LWV4Y2VlZC1zYWZlLWludGVnZXIuanNcIik7XG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG5cbi8vIGBGbGF0dGVuSW50b0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtZmxhdE1hcC8jc2VjLUZsYXR0ZW5JbnRvQXJyYXlcbnZhciBmbGF0dGVuSW50b0FycmF5ID0gZnVuY3Rpb24gKHRhcmdldCwgb3JpZ2luYWwsIHNvdXJjZSwgc291cmNlTGVuLCBzdGFydCwgZGVwdGgsIG1hcHBlciwgdGhpc0FyZykge1xuICB2YXIgdGFyZ2V0SW5kZXggPSBzdGFydDtcbiAgdmFyIHNvdXJjZUluZGV4ID0gMDtcbiAgdmFyIG1hcEZuID0gbWFwcGVyID8gYmluZChtYXBwZXIsIHRoaXNBcmcpIDogZmFsc2U7XG4gIHZhciBlbGVtZW50LCBlbGVtZW50TGVuO1xuXG4gIHdoaWxlIChzb3VyY2VJbmRleCA8IHNvdXJjZUxlbikge1xuICAgIGlmIChzb3VyY2VJbmRleCBpbiBzb3VyY2UpIHtcbiAgICAgIGVsZW1lbnQgPSBtYXBGbiA/IG1hcEZuKHNvdXJjZVtzb3VyY2VJbmRleF0sIHNvdXJjZUluZGV4LCBvcmlnaW5hbCkgOiBzb3VyY2Vbc291cmNlSW5kZXhdO1xuXG4gICAgICBpZiAoZGVwdGggPiAwICYmIGlzQXJyYXkoZWxlbWVudCkpIHtcbiAgICAgICAgZWxlbWVudExlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKGVsZW1lbnQpO1xuICAgICAgICB0YXJnZXRJbmRleCA9IGZsYXR0ZW5JbnRvQXJyYXkodGFyZ2V0LCBvcmlnaW5hbCwgZWxlbWVudCwgZWxlbWVudExlbiwgdGFyZ2V0SW5kZXgsIGRlcHRoIC0gMSkgLSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9lc05vdEV4Y2VlZFNhZmVJbnRlZ2VyKHRhcmdldEluZGV4ICsgMSk7XG4gICAgICAgIHRhcmdldFt0YXJnZXRJbmRleF0gPSBlbGVtZW50O1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRJbmRleCsrO1xuICAgIH1cbiAgICBzb3VyY2VJbmRleCsrO1xuICB9XG4gIHJldHVybiB0YXJnZXRJbmRleDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdHRlbkludG9BcnJheTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mbGF0dGVuLWludG8tYXJyYXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnJlZXppbmcuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUsIGVzL25vLW9iamVjdC1wcmV2ZW50ZXh0ZW5zaW9ucyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZyZWV6aW5nLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBOQVRJVkVfQklORCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzXCIpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYXBwbHkgPSBGdW5jdGlvblByb3RvdHlwZS5hcHBseTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCA9PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmFwcGx5IHx8IChOQVRJVkVfQklORCA/IGNhbGwuYmluZChhcHBseSkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGFwcGx5LCBhcmd1bWVudHMpO1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qc1wiKTtcbnZhciBhQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanNcIik7XG52YXIgTkFUSVZFX0JJTkQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qc1wiKTtcblxudmFyIGJpbmQgPSB1bmN1cnJ5VGhpcyh1bmN1cnJ5VGhpcy5iaW5kKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCkge1xuICBhQ2FsbGFibGUoZm4pO1xuICByZXR1cm4gdGhhdCA9PT0gdW5kZWZpbmVkID8gZm4gOiBOQVRJVkVfQklORCA/IGJpbmQoZm4sIHRoYXQpIDogZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBOQVRJVkVfQklORCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzXCIpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgaGFzT3duID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXCIpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3Nvci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgY2xhc3NvZlJhdyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jbGFzc29mLXJhdyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgLy8gTmFzaG9ybiBidWc6XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMjhcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTEzMFxuICBpZiAoY2xhc3NvZlJhdyhmbikgPT09ICdGdW5jdGlvbicpIHJldHVybiB1bmN1cnJ5VGhpcyhmbik7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBOQVRJVkVfQklORCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzXCIpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIik7XG52YXIgZ2V0TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzXCIpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgcmV0dXJuIGdldE1ldGhvZChpdCwgSVRFUkFUT1IpXG4gICAgfHwgZ2V0TWV0aG9kKGl0LCAnQEBpdGVyYXRvcicpXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciB0cnlUb1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90cnktdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qc1wiKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qc1wiKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50LCB1c2luZ0l0ZXJhdG9yKSB7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZ2V0SXRlcmF0b3JNZXRob2QoYXJndW1lbnQpIDogdXNpbmdJdGVyYXRvcjtcbiAgaWYgKGFDYWxsYWJsZShpdGVyYXRvck1ldGhvZCkpIHJldHVybiBhbk9iamVjdChjYWxsKGl0ZXJhdG9yTWV0aG9kLCBhcmd1bWVudCkpO1xuICB0aHJvdyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtanNvbi1yZXBsYWNlci1mdW5jdGlvbi5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtYXJyYXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jbGFzc29mLXJhdyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocmVwbGFjZXIpIHtcbiAgaWYgKGlzQ2FsbGFibGUocmVwbGFjZXIpKSByZXR1cm4gcmVwbGFjZXI7XG4gIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJldHVybjtcbiAgdmFyIHJhd0xlbmd0aCA9IHJlcGxhY2VyLmxlbmd0aDtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByYXdMZW5ndGg7IGkrKykge1xuICAgIHZhciBlbGVtZW50ID0gcmVwbGFjZXJbaV07XG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09ICdzdHJpbmcnKSBwdXNoKGtleXMsIGVsZW1lbnQpO1xuICAgIGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09ICdudW1iZXInIHx8IGNsYXNzb2YoZWxlbWVudCkgPT0gJ051bWJlcicgfHwgY2xhc3NvZihlbGVtZW50KSA9PSAnU3RyaW5nJykgcHVzaChrZXlzLCB0b1N0cmluZyhlbGVtZW50KSk7XG4gIH1cbiAgdmFyIGtleXNMZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIHJvb3QgPSB0cnVlO1xuICByZXR1cm4gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICBpZiAocm9vdCkge1xuICAgICAgcm9vdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheSh0aGlzKSkgcmV0dXJuIHZhbHVlO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5c0xlbmd0aDsgaisrKSBpZiAoa2V5c1tqXSA9PT0ga2V5KSByZXR1cm4gdmFsdWU7XG4gIH07XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1qc29uLXJlcGxhY2VyLWZ1bmN0aW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzXCIpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1zdWJzdGl0dXRpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG5cbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSAtLSBzYWZlXG52YXIgU1VCU1RJVFVUSU9OX1NZTUJPTFMgPSAvXFwkKFskJidgXXxcXGR7MSwyfXw8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkezEsMn0pL2c7XG5cbi8vIGBHZXRTdWJzdGl0dXRpb25gIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRzdWJzdGl0dXRpb25cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1hdGNoZWQsIHN0ciwgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlbWVudCkge1xuICB2YXIgdGFpbFBvcyA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICB2YXIgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEO1xuICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MUztcbiAgfVxuICByZXR1cm4gcmVwbGFjZShyZXBsYWNlbWVudCwgc3ltYm9scywgZnVuY3Rpb24gKG1hdGNoLCBjaCkge1xuICAgIHZhciBjYXB0dXJlO1xuICAgIHN3aXRjaCAoY2hhckF0KGNoLCAwKSkge1xuICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICBjYXNlICdgJzogcmV0dXJuIHN0cmluZ1NsaWNlKHN0ciwgMCwgcG9zaXRpb24pO1xuICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0cmluZ1NsaWNlKHN0ciwgdGFpbFBvcyk7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbc3RyaW5nU2xpY2UoY2gsIDEsIC0xKV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2hhckF0KGNoLCAxKSA6IGNhcHR1cmVzW2YgLSAxXSArIGNoYXJBdChjaCwgMSk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgfVxuICAgIHJldHVybiBjYXB0dXJlID09PSB1bmRlZmluZWQgPyAnJyA6IGNhcHR1cmU7XG4gIH0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyI6KGZ1bmN0aW9uKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyl7ZXZhbCgiXG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIF9fd2VicGFja19yZXF1aXJlX18uZyA9PSAnb2JqZWN0JyAmJiBfX3dlYnBhY2tfcmVxdWlyZV9fLmcpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCB0aGlzIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIjooKG1vZHVsZSk9PntldmFsKCJcbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzIjooKG1vZHVsZSk9PntldmFsKCJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBzYWZlXG4gICAgYXJndW1lbnRzLmxlbmd0aCA9PSAxID8gY29uc29sZS5lcnJvcihhKSA6IGNvbnNvbGUuZXJyb3IoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdldEJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanNcIik7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWVlZTc1NC5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG4vLyBJRUVFNzU0IGNvbnZlcnNpb25zIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvaWVlZTc1NFxudmFyICRBcnJheSA9IEFycmF5O1xudmFyIGFicyA9IE1hdGguYWJzO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxudmFyIHBhY2sgPSBmdW5jdGlvbiAobnVtYmVyLCBtYW50aXNzYUxlbmd0aCwgYnl0ZXMpIHtcbiAgdmFyIGJ1ZmZlciA9ICRBcnJheShieXRlcyk7XG4gIHZhciBleHBvbmVudExlbmd0aCA9IGJ5dGVzICogOCAtIG1hbnRpc3NhTGVuZ3RoIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBleHBvbmVudExlbmd0aCkgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBydCA9IG1hbnRpc3NhTGVuZ3RoID09PSAyMyA/IHBvdygyLCAtMjQpIC0gcG93KDIsIC03NykgOiAwO1xuICB2YXIgc2lnbiA9IG51bWJlciA8IDAgfHwgbnVtYmVyID09PSAwICYmIDEgLyBudW1iZXIgPCAwID8gMSA6IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBleHBvbmVudCwgbWFudGlzc2EsIGM7XG4gIG51bWJlciA9IGFicyhudW1iZXIpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICBpZiAobnVtYmVyICE9IG51bWJlciB8fCBudW1iZXIgPT09IEluZmluaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBtYW50aXNzYSA9IG51bWJlciAhPSBudW1iZXIgPyAxIDogMDtcbiAgICBleHBvbmVudCA9IGVNYXg7XG4gIH0gZWxzZSB7XG4gICAgZXhwb25lbnQgPSBmbG9vcihsb2cobnVtYmVyKSAvIExOMik7XG4gICAgYyA9IHBvdygyLCAtZXhwb25lbnQpO1xuICAgIGlmIChudW1iZXIgKiBjIDwgMSkge1xuICAgICAgZXhwb25lbnQtLTtcbiAgICAgIGMgKj0gMjtcbiAgICB9XG4gICAgaWYgKGV4cG9uZW50ICsgZUJpYXMgPj0gMSkge1xuICAgICAgbnVtYmVyICs9IHJ0IC8gYztcbiAgICB9IGVsc2Uge1xuICAgICAgbnVtYmVyICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmIChudW1iZXIgKiBjID49IDIpIHtcbiAgICAgIGV4cG9uZW50Kys7XG4gICAgICBjIC89IDI7XG4gICAgfVxuICAgIGlmIChleHBvbmVudCArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG1hbnRpc3NhID0gMDtcbiAgICAgIGV4cG9uZW50ID0gZU1heDtcbiAgICB9IGVsc2UgaWYgKGV4cG9uZW50ICsgZUJpYXMgPj0gMSkge1xuICAgICAgbWFudGlzc2EgPSAobnVtYmVyICogYyAtIDEpICogcG93KDIsIG1hbnRpc3NhTGVuZ3RoKTtcbiAgICAgIGV4cG9uZW50ID0gZXhwb25lbnQgKyBlQmlhcztcbiAgICB9IGVsc2Uge1xuICAgICAgbWFudGlzc2EgPSBudW1iZXIgKiBwb3coMiwgZUJpYXMgLSAxKSAqIHBvdygyLCBtYW50aXNzYUxlbmd0aCk7XG4gICAgICBleHBvbmVudCA9IDA7XG4gICAgfVxuICB9XG4gIHdoaWxlIChtYW50aXNzYUxlbmd0aCA+PSA4KSB7XG4gICAgYnVmZmVyW2luZGV4KytdID0gbWFudGlzc2EgJiAyNTU7XG4gICAgbWFudGlzc2EgLz0gMjU2O1xuICAgIG1hbnRpc3NhTGVuZ3RoIC09IDg7XG4gIH1cbiAgZXhwb25lbnQgPSBleHBvbmVudCA8PCBtYW50aXNzYUxlbmd0aCB8IG1hbnRpc3NhO1xuICBleHBvbmVudExlbmd0aCArPSBtYW50aXNzYUxlbmd0aDtcbiAgd2hpbGUgKGV4cG9uZW50TGVuZ3RoID4gMCkge1xuICAgIGJ1ZmZlcltpbmRleCsrXSA9IGV4cG9uZW50ICYgMjU1O1xuICAgIGV4cG9uZW50IC89IDI1NjtcbiAgICBleHBvbmVudExlbmd0aCAtPSA4O1xuICB9XG4gIGJ1ZmZlclstLWluZGV4XSB8PSBzaWduICogMTI4O1xuICByZXR1cm4gYnVmZmVyO1xufTtcblxudmFyIHVucGFjayA9IGZ1bmN0aW9uIChidWZmZXIsIG1hbnRpc3NhTGVuZ3RoKSB7XG4gIHZhciBieXRlcyA9IGJ1ZmZlci5sZW5ndGg7XG4gIHZhciBleHBvbmVudExlbmd0aCA9IGJ5dGVzICogOCAtIG1hbnRpc3NhTGVuZ3RoIC0gMTtcbiAgdmFyIGVNYXggPSAoMSA8PCBleHBvbmVudExlbmd0aCkgLSAxO1xuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDE7XG4gIHZhciBuQml0cyA9IGV4cG9uZW50TGVuZ3RoIC0gNztcbiAgdmFyIGluZGV4ID0gYnl0ZXMgLSAxO1xuICB2YXIgc2lnbiA9IGJ1ZmZlcltpbmRleC0tXTtcbiAgdmFyIGV4cG9uZW50ID0gc2lnbiAmIDEyNztcbiAgdmFyIG1hbnRpc3NhO1xuICBzaWduID4+PSA3O1xuICB3aGlsZSAobkJpdHMgPiAwKSB7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCAqIDI1NiArIGJ1ZmZlcltpbmRleC0tXTtcbiAgICBuQml0cyAtPSA4O1xuICB9XG4gIG1hbnRpc3NhID0gZXhwb25lbnQgJiAoMSA8PCAtbkJpdHMpIC0gMTtcbiAgZXhwb25lbnQgPj49IC1uQml0cztcbiAgbkJpdHMgKz0gbWFudGlzc2FMZW5ndGg7XG4gIHdoaWxlIChuQml0cyA+IDApIHtcbiAgICBtYW50aXNzYSA9IG1hbnRpc3NhICogMjU2ICsgYnVmZmVyW2luZGV4LS1dO1xuICAgIG5CaXRzIC09IDg7XG4gIH1cbiAgaWYgKGV4cG9uZW50ID09PSAwKSB7XG4gICAgZXhwb25lbnQgPSAxIC0gZUJpYXM7XG4gIH0gZWxzZSBpZiAoZXhwb25lbnQgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbWFudGlzc2EgPyBOYU4gOiBzaWduID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gIH0gZWxzZSB7XG4gICAgbWFudGlzc2EgPSBtYW50aXNzYSArIHBvdygyLCBtYW50aXNzYUxlbmd0aCk7XG4gICAgZXhwb25lbnQgPSBleHBvbmVudCAtIGVCaWFzO1xuICB9IHJldHVybiAoc2lnbiA/IC0xIDogMSkgKiBtYW50aXNzYSAqIHBvdygyLCBleHBvbmVudCAtIG1hbnRpc3NhTGVuZ3RoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwYWNrOiBwYWNrLFxuICB1bnBhY2s6IHVucGFja1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZWVlNzU0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhJE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzXCIpO1xuXG4vLyBtYWtlcyBzdWJjbGFzc2luZyB3b3JrIGNvcnJlY3QgZm9yIHdyYXBwZWQgYnVpbHQtaW5zXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgkdGhpcywgZHVtbXksIFdyYXBwZXIpIHtcbiAgdmFyIE5ld1RhcmdldCwgTmV3VGFyZ2V0UHJvdG90eXBlO1xuICBpZiAoXG4gICAgLy8gaXQgY2FuIHdvcmsgb25seSB3aXRoIG5hdGl2ZSBgc2V0UHJvdG90eXBlT2ZgXG4gICAgc2V0UHJvdG90eXBlT2YgJiZcbiAgICAvLyB3ZSBoYXZlbid0IGNvbXBsZXRlbHkgY29ycmVjdCBwcmUtRVM2IHdheSBmb3IgZ2V0dGluZyBgbmV3LnRhcmdldGAsIHNvIHVzZSB0aGlzXG4gICAgaXNDYWxsYWJsZShOZXdUYXJnZXQgPSBkdW1teS5jb25zdHJ1Y3RvcikgJiZcbiAgICBOZXdUYXJnZXQgIT09IFdyYXBwZXIgJiZcbiAgICBpc09iamVjdChOZXdUYXJnZXRQcm90b3R5cGUgPSBOZXdUYXJnZXQucHJvdG90eXBlKSAmJlxuICAgIE5ld1RhcmdldFByb3RvdHlwZSAhPT0gV3JhcHBlci5wcm90b3R5cGVcbiAgKSBzZXRQcm90b3R5cGVPZigkdGhpcywgTmV3VGFyZ2V0UHJvdG90eXBlKTtcbiAgcmV0dXJuICR0aGlzO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIHN0b3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qc1wiKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvbi50b1N0cmluZyk7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zdGFsbC1lcnJvci1jYXVzZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG5cbi8vIGBJbnN0YWxsRXJyb3JDYXVzZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtZXJyb3ItY2F1c2UvI3NlYy1lcnJvcm9iamVjdHMtaW5zdGFsbC1lcnJvci1jYXVzZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgb3B0aW9ucykge1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NhdXNlJyBpbiBvcHRpb25zKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sICdjYXVzZScsIG9wdGlvbnMuY2F1c2UpO1xuICB9XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIikuZik7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNFeHRlcm5hbE1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsLmpzXCIpO1xudmFyIGlzRXh0ZW5zaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtaXMtZXh0ZW5zaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1leHRlbnNpYmxlLmpzXCIpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy91aWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanNcIik7XG52YXIgRlJFRVpJTkcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnJlZXppbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mcmVlemluZy5qc1wiKTtcblxudmFyIFJFUVVJUkVEID0gZmFsc2U7XG52YXIgTUVUQURBVEEgPSB1aWQoJ21ldGEnKTtcbnZhciBpZCA9IDA7XG5cbnZhciBzZXRNZXRhZGF0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBkZWZpbmVQcm9wZXJ0eShpdCwgTUVUQURBVEEsIHsgdmFsdWU6IHtcbiAgICBvYmplY3RJRDogJ08nICsgaWQrKywgLy8gb2JqZWN0IElEXG4gICAgd2Vha0RhdGE6IHt9ICAgICAgICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gfSk7XG59O1xuXG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBhIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXNPd24oaXQsIE1FVEFEQVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhZGF0YShpdCk7XG4gIC8vIHJldHVybiBvYmplY3QgSURcbiAgfSByZXR1cm4gaXRbTUVUQURBVEFdLm9iamVjdElEO1xufTtcblxudmFyIGdldFdlYWtEYXRhID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXNPd24oaXQsIE1FVEFEQVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhZGF0YShpdCk7XG4gIC8vIHJldHVybiB0aGUgc3RvcmUgb2Ygd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQURBVEFdLndlYWtEYXRhO1xufTtcblxuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaSU5HICYmIFJFUVVJUkVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhc093bihpdCwgTUVUQURBVEEpKSBzZXRNZXRhZGF0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cbnZhciBlbmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gIG1ldGEuZW5hYmxlID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuICBSRVFVSVJFRCA9IHRydWU7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mO1xuICB2YXIgc3BsaWNlID0gdW5jdXJyeVRoaXMoW10uc3BsaWNlKTtcbiAgdmFyIHRlc3QgPSB7fTtcbiAgdGVzdFtNRVRBREFUQV0gPSAxO1xuXG4gIC8vIHByZXZlbnQgZXhwb3Npbmcgb2YgbWV0YWRhdGEga2V5XG4gIGlmIChnZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QpLmxlbmd0aCkge1xuICAgIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZiA9IGZ1bmN0aW9uIChpdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGdldE93blByb3BlcnR5TmFtZXMoaXQpO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAocmVzdWx0W2ldID09PSBNRVRBREFUQSkge1xuICAgICAgICAgIHNwbGljZShyZXN1bHQsIGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgICQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgZ2V0T3duUHJvcGVydHlOYW1lczogZ2V0T3duUHJvcGVydHlOYW1lc0V4dGVybmFsTW9kdWxlLmZcbiAgICB9KTtcbiAgfVxufTtcblxudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5hYmxlOiBlbmFibGUsXG4gIGZhc3RLZXk6IGZhc3RLZXksXG4gIGdldFdlYWtEYXRhOiBnZXRXZWFrRGF0YSxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5oaWRkZW5LZXlzW01FVEFEQVRBXSA9IHRydWU7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtbWV0YWRhdGEuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIE5BVElWRV9XRUFLX01BUCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qc1wiKTtcbnZhciBzaGFyZWRLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanNcIik7XG52YXIgaGlkZGVuS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oaWRkZW4ta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzXCIpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNhcnJheVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJndW1lbnQpID09ICdBcnJheSc7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWJpZy1pbnQtYXJyYXkuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBrbGFzcyA9IGNsYXNzb2YoaXQpO1xuICByZXR1cm4ga2xhc3MgPT0gJ0JpZ0ludDY0QXJyYXknIHx8IGtsYXNzID09ICdCaWdVaW50NjRBcnJheSc7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWJpZy1pbnQtYXJyYXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICRkb2N1bWVudEFsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb2N1bWVudC1hbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1hbGwuanNcIik7XG5cbnZhciBkb2N1bWVudEFsbCA9ICRkb2N1bWVudEFsbC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxubW9kdWxlLmV4cG9ydHMgPSAkZG9jdW1lbnRBbGwuSVNfSFRNTEREQSA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jbGFzc29mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qc1wiKTtcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBpbnNwZWN0U291cmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanNcIik7XG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIGVtcHR5ID0gW107XG52YXIgY29uc3RydWN0ID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdjb25zdHJ1Y3QnKTtcbnZhciBjb25zdHJ1Y3RvclJlZ0V4cCA9IC9eXFxzKig/OmNsYXNzfGZ1bmN0aW9uKVxcYi87XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKGNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMpO1xudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSAhY29uc3RydWN0b3JSZWdFeHAuZXhlYyhub29wKTtcblxudmFyIGlzQ29uc3RydWN0b3JNb2Rlcm4gPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdHJ1Y3Qobm9vcCwgZW1wdHksIGFyZ3VtZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBpc0NvbnN0cnVjdG9yTGVnYWN5ID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHN3aXRjaCAoY2xhc3NvZihhcmd1bWVudCkpIHtcbiAgICBjYXNlICdBc3luY0Z1bmN0aW9uJzpcbiAgICBjYXNlICdHZW5lcmF0b3JGdW5jdGlvbic6XG4gICAgY2FzZSAnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbic6IHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIC8vIHdlIGNhbid0IGNoZWNrIC5wcm90b3R5cGUgc2luY2UgY29uc3RydWN0b3JzIHByb2R1Y2VkIGJ5IC5iaW5kIGhhdmVuJ3QgaXRcbiAgICAvLyBgRnVuY3Rpb24jdG9TdHJpbmdgIHRocm93cyBvbiBzb21lIGJ1aWx0LWl0IGZ1bmN0aW9uIGluIHNvbWUgbGVnYWN5IGVuZ2luZXNcbiAgICAvLyAoZm9yIGV4YW1wbGUsIGBET01RdWFkYCBhbmQgc2ltaWxhciBpbiBGRjQxLSlcbiAgICByZXR1cm4gSU5DT1JSRUNUX1RPX1NUUklORyB8fCAhIWV4ZWMoY29uc3RydWN0b3JSZWdFeHAsIGluc3BlY3RTb3VyY2UoYXJndW1lbnQpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuaXNDb25zdHJ1Y3RvckxlZ2FjeS5zaGFtID0gdHJ1ZTtcblxuLy8gYElzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9ICFjb25zdHJ1Y3QgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgY2FsbGVkO1xuICByZXR1cm4gaXNDb25zdHJ1Y3Rvck1vZGVybihpc0NvbnN0cnVjdG9yTW9kZXJuLmNhbGwpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oT2JqZWN0KVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKGZ1bmN0aW9uICgpIHsgY2FsbGVkID0gdHJ1ZTsgfSlcbiAgICB8fCBjYWxsZWQ7XG59KSA/IGlzQ29uc3RydWN0b3JMZWdhY3kgOiBpc0NvbnN0cnVjdG9yTW9kZXJuO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogaXNDYWxsYWJsZShkZXRlY3Rpb24pID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWludGVncmFsLW51bWJlci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgSXNJbnRlZ3JhbE51bWJlcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzaW50ZWdyYWxudW1iZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1udW1iZXItaXNpbnRlZ2VyIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTnVtYmVyLmlzSW50ZWdlciB8fCBmdW5jdGlvbiBpc0ludGVnZXIoaXQpIHtcbiAgcmV0dXJuICFpc09iamVjdChpdCkgJiYgaXNGaW5pdGUoaXQpICYmIGZsb29yKGl0KSA9PT0gaXQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWludGVncmFsLW51bWJlci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyICRkb2N1bWVudEFsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb2N1bWVudC1hbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1hbGwuanNcIik7XG5cbnZhciBkb2N1bWVudEFsbCA9ICRkb2N1bWVudEFsbC5hbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gJGRvY3VtZW50QWxsLklTX0hUTUxEREEgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCkgfHwgaXQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiOigobW9kdWxlKT0+e2V2YWwoIlxubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuXG4vLyBgSXNSZWdFeHBgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc3JlZ2V4cFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGlzUmVnRXhwO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmICgoaXNSZWdFeHAgPSBpdFtNQVRDSF0pICE9PSB1bmRlZmluZWQgPyAhIWlzUmVnRXhwIDogY2xhc3NvZihpdCkgPT0gJ1JlZ0V4cCcpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzXCIpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBiaW5kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciB0cnlUb1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90cnktdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qc1wiKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgaXNQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBnZXRJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtaXRlcmF0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3IuanNcIik7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanNcIik7XG52YXIgaXRlcmF0b3JDbG9zZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlLmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFJlc3VsdCA9IGZ1bmN0aW9uIChzdG9wcGVkLCByZXN1bHQpIHtcbiAgdGhpcy5zdG9wcGVkID0gc3RvcHBlZDtcbiAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG59O1xuXG52YXIgUmVzdWx0UHJvdG90eXBlID0gUmVzdWx0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIHVuYm91bmRGdW5jdGlvbiwgb3B0aW9ucykge1xuICB2YXIgdGhhdCA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aGF0O1xuICB2YXIgQVNfRU5UUklFUyA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5BU19FTlRSSUVTKTtcbiAgdmFyIElTX1JFQ09SRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19SRUNPUkQpO1xuICB2YXIgSVNfSVRFUkFUT1IgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfSVRFUkFUT1IpO1xuICB2YXIgSU5URVJSVVBURUQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSU5URVJSVVBURUQpO1xuICB2YXIgZm4gPSBiaW5kKHVuYm91bmRGdW5jdGlvbiwgdGhhdCk7XG4gIHZhciBpdGVyYXRvciwgaXRlckZuLCBpbmRleCwgbGVuZ3RoLCByZXN1bHQsIG5leHQsIHN0ZXA7XG5cbiAgdmFyIHN0b3AgPSBmdW5jdGlvbiAoY29uZGl0aW9uKSB7XG4gICAgaWYgKGl0ZXJhdG9yKSBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAnbm9ybWFsJywgY29uZGl0aW9uKTtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh0cnVlLCBjb25kaXRpb24pO1xuICB9O1xuXG4gIHZhciBjYWxsRm4gPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoQVNfRU5UUklFUykge1xuICAgICAgYW5PYmplY3QodmFsdWUpO1xuICAgICAgcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWVbMF0sIHZhbHVlWzFdLCBzdG9wKSA6IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSk7XG4gICAgfSByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZSwgc3RvcCkgOiBmbih2YWx1ZSk7XG4gIH07XG5cbiAgaWYgKElTX1JFQ09SRCkge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGUuaXRlcmF0b3I7XG4gIH0gZWxzZSBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAoIWl0ZXJGbikgdGhyb3cgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhpdGVyYWJsZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuICAgIC8vIG9wdGltaXNhdGlvbiBmb3IgYXJyYXkgaXRlcmF0b3JzXG4gICAgaWYgKGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyRm4pKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoaXRlcmFibGUpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICByZXN1bHQgPSBjYWxsRm4oaXRlcmFibGVbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlLCBpdGVyRm4pO1xuICB9XG5cbiAgbmV4dCA9IElTX1JFQ09SRCA/IGl0ZXJhYmxlLm5leHQgOiBpdGVyYXRvci5uZXh0O1xuICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gY2FsbEZuKHN0ZXAudmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAndGhyb3cnLCBlcnJvcik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyIGdldE1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGNhbGwoaW5uZXJSZXN1bHQsIGl0ZXJhdG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICBpbm5lclJlc3VsdCA9IGVycm9yO1xuICB9XG4gIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgaWYgKGlubmVyRXJyb3IpIHRocm93IGlubmVyUmVzdWx0O1xuICBhbk9iamVjdChpbm5lclJlc3VsdCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qc1wiKS5JdGVyYXRvclByb3RvdHlwZSk7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0LCBFTlVNRVJBQkxFX05FWFQpIHtcbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIEl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigrIUVOVU1FUkFCTEVfTkVYVCwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBGdW5jdGlvbk5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY3JlYXRlLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcbnZhciBJdGVyYXRvcnNDb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanNcIik7XG5cbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5QUk9QRVI7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuQ09ORklHVVJBQkxFO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gSXRlcmF0b3JzQ29yZS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gSXRlcmF0b3JzQ29yZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG52YXIgRU5UUklFUyA9ICdlbnRyaWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYWJsZSwgTkFNRSwgSXRlcmF0b3JDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblxuICB2YXIgZ2V0SXRlcmF0aW9uTWV0aG9kID0gZnVuY3Rpb24gKEtJTkQpIHtcbiAgICBpZiAoS0lORCA9PT0gREVGQVVMVCAmJiBkZWZhdWx0SXRlcmF0b3IpIHJldHVybiBkZWZhdWx0SXRlcmF0b3I7XG4gICAgaWYgKCFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PSAnQXJyYXknID8gSXRlcmFibGVQcm90b3R5cGUuZW50cmllcyB8fCBuYXRpdmVJdGVyYXRvciA6IG5hdGl2ZUl0ZXJhdG9yO1xuICB2YXIgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBtZXRob2RzLCBLRVk7XG5cbiAgLy8gZml4IG5hdGl2ZVxuICBpZiAoYW55TmF0aXZlSXRlcmF0b3IpIHtcbiAgICBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihhbnlOYXRpdmVJdGVyYXRvci5jYWxsKG5ldyBJdGVyYWJsZSgpKSk7XG4gICAgaWYgKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgaWYgKCFJU19QVVJFICYmIGdldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSkgIT09IEl0ZXJhdG9yUHJvdG90eXBlKSB7XG4gICAgICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgIHNldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSXRlcmF0b3JQcm90b3R5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0NhbGxhYmxlKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0pKSB7XG4gICAgICAgICAgZGVmaW5lQnVpbHRJbihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheS5wcm90b3R5cGUueyB2YWx1ZXMsIEBAaXRlcmF0b3IgfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKFBST1BFUl9GVU5DVElPTl9OQU1FICYmIERFRkFVTFQgPT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIGlmICghSVNfUFVSRSAmJiBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEl0ZXJhYmxlUHJvdG90eXBlLCAnbmFtZScsIFZBTFVFUyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBjYWxsKG5hdGl2ZUl0ZXJhdG9yLCB0aGlzKTsgfTtcbiAgICB9XG4gIH1cblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgZGVmaW5lQnVpbHRJbihJdGVyYWJsZVByb3RvdHlwZSwgS0VZLCBtZXRob2RzW0tFWV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSAkKHsgdGFyZ2V0OiBOQU1FLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB9LCBtZXRob2RzKTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBkZWZpbmVCdWlsdEluKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yLCB7IG5hbWU6IERFRkFVTFQgfSk7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanNcIik7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJWAgb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWtleXMgLS0gc2FmZSAqL1xuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG52YXIgTkVXX0lURVJBVE9SX1BST1RPVFlQRSA9ICFpc09iamVjdChJdGVyYXRvclByb3RvdHlwZSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgdGVzdCA9IHt9O1xuICAvLyBGRjQ0LSBsZWdhY3kgaXRlcmF0b3JzIGNhc2VcbiAgcmV0dXJuIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXS5jYWxsKHRlc3QpICE9PSB0ZXN0O1xufSk7XG5cbmlmIChORVdfSVRFUkFUT1JfUFJPVE9UWVBFKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuZWxzZSBpZiAoSVNfUFVSRSkgSXRlcmF0b3JQcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1AQGl0ZXJhdG9yXG5pZiAoIWlzQ2FsbGFibGUoSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICBkZWZpbmVCdWlsdEluKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEl0ZXJhdG9yUHJvdG90eXBlOiBJdGVyYXRvclByb3RvdHlwZSxcbiAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogQlVHR1lfU0FGQVJJX0lURVJBVE9SU1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanMiOigobW9kdWxlKT0+e2V2YWwoIlxubW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanNcIikuQ09ORklHVVJBQkxFKTtcbnZhciBpbnNwZWN0U291cmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanNcIik7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzXCIpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYWtlLWJ1aWx0LWluLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hcC1oZWxwZXJzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXAgLS0gc2FmZVxudmFyIE1hcFByb3RvdHlwZSA9IE1hcC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWFwIC0tIHNhZmVcbiAgTWFwOiBNYXAsXG4gIHNldDogdW5jdXJyeVRoaXMoTWFwUHJvdG90eXBlLnNldCksXG4gIGdldDogdW5jdXJyeVRoaXMoTWFwUHJvdG90eXBlLmdldCksXG4gIGhhczogdW5jdXJyeVRoaXMoTWFwUHJvdG90eXBlLmhhcyksXG4gIHJlbW92ZTogdW5jdXJyeVRoaXMoTWFwUHJvdG90eXBlWydkZWxldGUnXSksXG4gIHByb3RvOiBNYXBQcm90b3R5cGVcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWFwLWhlbHBlcnMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC10cnVuYy5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG52YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBNYXRoLnRydW5jYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbWF0aC50cnVuY1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW1hdGgtdHJ1bmMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLnRydW5jIHx8IGZ1bmN0aW9uIHRydW5jKHgpIHtcbiAgdmFyIG4gPSAreDtcbiAgcmV0dXJuIChuID4gMCA/IGZsb29yIDogY2VpbCkobik7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtdHJ1bmMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWljcm90YXNrLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIikuZik7XG52YXIgbWFjcm90YXNrID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90YXNrICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGFzay5qc1wiKS5zZXQpO1xudmFyIFF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3F1ZXVlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcXVldWUuanNcIik7XG52YXIgSVNfSU9TID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLmpzXCIpO1xudmFyIElTX0lPU19QRUJCTEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtaW9zLXBlYmJsZS5qc1wiKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy13ZWJvcy13ZWJraXQuanNcIik7XG52YXIgSVNfTk9ERSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzXCIpO1xuXG52YXIgTXV0YXRpb25PYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG4vLyBOb2RlLmpzIDExIHNob3dzIEV4cGVyaW1lbnRhbFdhcm5pbmcgb24gZ2V0dGluZyBgcXVldWVNaWNyb3Rhc2tgXG52YXIgcXVldWVNaWNyb3Rhc2tEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ3F1ZXVlTWljcm90YXNrJyk7XG52YXIgbWljcm90YXNrID0gcXVldWVNaWNyb3Rhc2tEZXNjcmlwdG9yICYmIHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvci52YWx1ZTtcbnZhciBub3RpZnksIHRvZ2dsZSwgbm9kZSwgcHJvbWlzZSwgdGhlbjtcblxuLy8gbW9kZXJuIGVuZ2luZXMgaGF2ZSBxdWV1ZU1pY3JvdGFzayBtZXRob2RcbmlmICghbWljcm90YXNrKSB7XG4gIHZhciBxdWV1ZSA9IG5ldyBRdWV1ZSgpO1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoSVNfTk9ERSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChmbiA9IHF1ZXVlLmdldCgpKSB0cnkge1xuICAgICAgZm4oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHF1ZXVlLmhlYWQpIG5vdGlmeSgpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgLy8gYWxzbyBleGNlcHQgV2ViT1MgV2Via2l0IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84OThcbiAgaWYgKCFJU19JT1MgJiYgIUlTX05PREUgJiYgIUlTX1dFQk9TX1dFQktJVCAmJiBNdXRhdGlvbk9ic2VydmVyICYmIGRvY3VtZW50KSB7XG4gICAgdG9nZ2xlID0gdHJ1ZTtcbiAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoIUlTX0lPU19QRUJCTEUgJiYgUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAvLyB3b3JrYXJvdW5kIG9mIFdlYktpdCB+IGlPUyBTYWZhcmkgMTAuMSBidWdcbiAgICBwcm9taXNlLmNvbnN0cnVjdG9yID0gUHJvbWlzZTtcbiAgICB0aGVuID0gYmluZChwcm9taXNlLnRoZW4sIHByb21pc2UpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIE5vZGUuanMgd2l0aG91dCBwcm9taXNlc1xuICB9IGVsc2UgaWYgKElTX05PREUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdlXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIC8vIGB3ZWJwYWNrYCBkZXYgc2VydmVyIGJ1ZyBvbiBJRSBnbG9iYWwgbWV0aG9kcyAtIHVzZSBiaW5kKGZuLCBnbG9iYWwpXG4gICAgbWFjcm90YXNrID0gYmluZChtYWNyb3Rhc2ssIGdsb2JhbCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbWFjcm90YXNrKGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgbWljcm90YXNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKCFxdWV1ZS5oZWFkKSBub3RpZnkoKTtcbiAgICBxdWV1ZS5hZGQoZm4pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pY3JvdGFzaztcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9taWNyb3Rhc2suanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyAkVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhQ2FsbGFibGUocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUNhbGxhYmxlKHJlamVjdCk7XG59O1xuXG4vLyBgTmV3UHJvbWlzZUNhcGFiaWxpdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1uZXdwcm9taXNlY2FwYWJpbGl0eVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm9ybWFsaXplLXN0cmluZy1hcmd1bWVudC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgJGRlZmF1bHQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID09PSB1bmRlZmluZWQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICcnIDogJGRlZmF1bHQgOiB0b1N0cmluZyhhcmd1bWVudCk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm90LWEtcmVnZXhwLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBpc1JlZ0V4cCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1yZWdleHAgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNSZWdFeHAoaXQpKSB7XG4gICAgdGhyb3cgJFR5cGVFcnJvcihcIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9uc1wiKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25vdC1hLXJlZ2V4cC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIHRyaW0gPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3N0cmluZy10cmltICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanNcIikudHJpbSk7XG52YXIgd2hpdGVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93aGl0ZXNwYWNlcy5qc1wiKTtcblxudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgJHBhcnNlRmxvYXQgPSBnbG9iYWwucGFyc2VGbG9hdDtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIElURVJBVE9SID0gU3ltYm9sICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGT1JDRUQgPSAxIC8gJHBhcnNlRmxvYXQod2hpdGVzcGFjZXMgKyAnLTAnKSAhPT0gLUluZmluaXR5XG4gIC8vIE1TIEVkZ2UgMTgtIGJyb2tlbiB3aXRoIGJveGVkIHN5bWJvbHNcbiAgfHwgKElURVJBVE9SICYmICFmYWlscyhmdW5jdGlvbiAoKSB7ICRwYXJzZUZsb2F0KE9iamVjdChJVEVSQVRPUikpOyB9KSk7XG5cbi8vIGBwYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VmbG9hdC1zdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEID8gZnVuY3Rpb24gcGFyc2VGbG9hdChzdHJpbmcpIHtcbiAgdmFyIHRyaW1tZWRTdHJpbmcgPSB0cmltKHRvU3RyaW5nKHN0cmluZykpO1xuICB2YXIgcmVzdWx0ID0gJHBhcnNlRmxvYXQodHJpbW1lZFN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgY2hhckF0KHRyaW1tZWRTdHJpbmcsIDApID09ICctJyA/IC0wIDogcmVzdWx0O1xufSA6ICRwYXJzZUZsb2F0O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL251bWJlci1wYXJzZS1mbG9hdC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItcGFyc2UtaW50LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciB0cmltID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zdHJpbmctdHJpbSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLmpzXCIpLnRyaW0pO1xudmFyIHdoaXRlc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanNcIik7XG5cbnZhciAkcGFyc2VJbnQgPSBnbG9iYWwucGFyc2VJbnQ7XG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBJVEVSQVRPUiA9IFN5bWJvbCAmJiBTeW1ib2wuaXRlcmF0b3I7XG52YXIgaGV4ID0gL15bKy1dPzB4L2k7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKGhleC5leGVjKTtcbnZhciBGT1JDRUQgPSAkcGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMHgxNicpICE9PSAyMlxuICAvLyBNUyBFZGdlIDE4LSBicm9rZW4gd2l0aCBib3hlZCBzeW1ib2xzXG4gIHx8IChJVEVSQVRPUiAmJiAhZmFpbHMoZnVuY3Rpb24gKCkgeyAkcGFyc2VJbnQoT2JqZWN0KElURVJBVE9SKSk7IH0pKTtcblxuLy8gYHBhcnNlSW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgpIHtcbiAgdmFyIFMgPSB0cmltKHRvU3RyaW5nKHN0cmluZykpO1xuICByZXR1cm4gJHBhcnNlSW50KFMsIChyYWRpeCA+Pj4gMCkgfHwgKGV4ZWMoaGV4LCBTKSA/IDE2IDogMTApKTtcbn0gOiAkcGFyc2VJbnQ7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWludC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtYXNzaWduLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgb2JqZWN0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3Qta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qc1wiKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanNcIik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9IDcgfHwgb2JqZWN0S2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT0gYWxwaGFiZXQ7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICB2YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mO1xuICB3aGlsZSAoYXJndW1lbnRzTGVuZ3RoID4gaW5kZXgpIHtcbiAgICB2YXIgUyA9IEluZGV4ZWRPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTtcbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChvYmplY3RLZXlzKFMpLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoUykpIDogb2JqZWN0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZSwgUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG4vKiBnbG9iYWwgQWN0aXZlWE9iamVjdCAtLSBvbGQgSUUsIFdTSCAqL1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qc1wiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiKTtcbnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanNcIik7XG52YXIgaHRtbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9odG1sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qc1wiKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qc1wiKTtcbnZhciBzaGFyZWRLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc2hhcmVkLWtleSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanNcIik7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgYWN0aXZlWERvY3VtZW50ID0gbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJ1xuICAgID8gZG9jdW1lbnQuZG9tYWluICYmIGFjdGl2ZVhEb2N1bWVudFxuICAgICAgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgLy8gb2xkIElFXG4gICAgICA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpXG4gICAgOiBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCk7IC8vIFdTSFxuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtY3JlYXRlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXNNb2R1bGUuZihyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qc1wiKTtcbnZhciBvYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanNcIik7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnRpZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgJiYgIVY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBwcm9wcyA9IHRvSW5kZXhlZE9iamVjdChQcm9wZXJ0aWVzKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXkgPSBrZXlzW2luZGV4KytdLCBwcm9wc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLGV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIElFOF9ET01fREVGSU5FID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanNcIik7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIik7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanNcIik7XG52YXIgaGFzT3duID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXCIpO1xudmFyIElFOF9ET01fREVGSU5FID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanNcIik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLWV4dGVybmFsLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmUgKi9cbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanNcIikuZik7XG52YXIgYXJyYXlTbGljZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUuanNcIik7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5TmFtZXMoaXQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBhcnJheVNsaWNlKHdpbmRvd05hbWVzKTtcbiAgfVxufTtcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIGNsYXNzb2YoaXQpID09ICdXaW5kb3cnXG4gICAgPyBnZXRXaW5kb3dOYW1lcyhpdClcbiAgICA6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzKHRvSW5kZXhlZE9iamVjdChpdCkpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy1leHRlcm5hbC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanNcIik7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsZXhwb3J0cyk9PntldmFsKCJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaGFzT3duID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzXCIpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXIuanNcIik7XG5cbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xudmFyIE9iamVjdFByb3RvdHlwZSA9ICRPYmplY3QucHJvdG90eXBlO1xuXG4vLyBgT2JqZWN0LmdldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldHByb3RvdHlwZW9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gJE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIChPKSB7XG4gIHZhciBvYmplY3QgPSB0b09iamVjdChPKTtcbiAgaWYgKGhhc093bihvYmplY3QsIElFX1BST1RPKSkgcmV0dXJuIG9iamVjdFtJRV9QUk9UT107XG4gIHZhciBjb25zdHJ1Y3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgaWYgKGlzQ2FsbGFibGUoY29uc3RydWN0b3IpICYmIG9iamVjdCBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgJE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1leHRlbnNpYmxlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG52YXIgQVJSQVlfQlVGRkVSX05PTl9FWFRFTlNJQkxFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ub24tZXh0ZW5zaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci1ub24tZXh0ZW5zaWJsZS5qc1wiKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyICRpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlO1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSBmYWlscyhmdW5jdGlvbiAoKSB7ICRpc0V4dGVuc2libGUoMSk7IH0pO1xuXG4vLyBgT2JqZWN0LmlzRXh0ZW5zaWJsZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5pc2V4dGVuc2libGVcbm1vZHVsZS5leHBvcnRzID0gKEZBSUxTX09OX1BSSU1JVElWRVMgfHwgQVJSQVlfQlVGRkVSX05PTl9FWFRFTlNJQkxFKSA/IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZShpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoQVJSQVlfQlVGRkVSX05PTl9FWFRFTlNJQkxFICYmIGNsYXNzb2YoaXQpID09ICdBcnJheUJ1ZmZlcicpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICRpc0V4dGVuc2libGUgPyAkaXNFeHRlbnNpYmxlKGl0KSA6IHRydWU7XG59IDogJGlzRXh0ZW5zaWJsZTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtZXh0ZW5zaWJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qc1wiKTtcbnZhciBpbmRleE9mID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzXCIpLmluZGV4T2YpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qc1wiKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qc1wiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsZXhwb3J0cyk9PntldmFsKCJcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvIC0tIHNhZmUgKi9cbnZhciB1bmN1cnJ5VGhpc0FjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3Nvci5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUuanNcIik7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBDT1JSRUNUX1NFVFRFUiA9IGZhbHNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB2YXIgc2V0dGVyO1xuICB0cnkge1xuICAgIHNldHRlciA9IHVuY3VycnlUaGlzQWNjZXNzb3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycsICdzZXQnKTtcbiAgICBzZXR0ZXIodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIGFuT2JqZWN0KE8pO1xuICAgIGFQb3NzaWJsZVByb3RvdHlwZShwcm90byk7XG4gICAgaWYgKENPUlJFQ1RfU0VUVEVSKSBzZXR0ZXIoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgT3JkaW5hcnlUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9yZGluYXJ5dG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAocHJlZiA9PT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKGlzQ2FsbGFibGUoZm4gPSBpbnB1dC52YWx1ZU9mKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHByZWYgIT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2V0QnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xuXG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGNvbmNhdChrZXlzLCBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpKSA6IGtleXM7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiOigobW9kdWxlKT0+e2V2YWwoIlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGVycm9yOiBmYWxzZSwgdmFsdWU6IGV4ZWMoKSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCB2YWx1ZTogZXJyb3IgfTtcbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wZXJmb3JtLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1mb3JjZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcIik7XG52YXIgaW5zcGVjdFNvdXJjZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xudmFyIElTX0JST1dTRVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3Nlci5qc1wiKTtcbnZhciBJU19ERU5PID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1kZW5vICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8uanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBWOF9WRVJTSU9OID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanNcIik7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFNVQkNMQVNTSU5HID0gZmFsc2U7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcblxudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gaXNGb3JjZWQoJ1Byb21pc2UnLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSA9IGluc3BlY3RTb3VyY2UoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgdmFyIEdMT0JBTF9DT1JFX0pTX1BST01JU0UgPSBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSAhPT0gU3RyaW5nKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gIC8vIFdlIG5lZWQgUHJvbWlzZSN7IGNhdGNoLCBmaW5hbGx5IH0gaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICEoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10pKSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgY2FuJ3QgdXNlIEBAc3BlY2llcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKCFWOF9WRVJTSU9OIHx8IFY4X1ZFUlNJT04gPCA1MSB8fCAhL25hdGl2ZSBjb2RlLy50ZXN0KFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFKSkge1xuICAgIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSBuZXcgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUoMSk7IH0pO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgICB9O1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICAgIFNVQkNMQVNTSU5HID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZTtcbiAgICBpZiAoIVNVQkNMQVNTSU5HKSByZXR1cm4gdHJ1ZTtcbiAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICB9IHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiAoSVNfQlJPV1NFUiB8fCBJU19ERU5PKSAmJiAhTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDT05TVFJVQ1RPUjogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IsXG4gIFJFSkVDVElPTl9FVkVOVDogTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5ULFxuICBTVUJDTEFTU0lORzogU1VCQ0xBU1NJTkdcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsLlByb21pc2U7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbi5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanNcIik7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qc1wiKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKS5DT05TVFJVQ1RPUik7XG5cbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfHwgIWNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbihmdW5jdGlvbiAoaXRlcmFibGUpIHtcbiAgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLmFsbChpdGVyYWJsZSkudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm94eS1hY2Nlc3Nvci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpLmYpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUYXJnZXQsIFNvdXJjZSwga2V5KSB7XG4gIGtleSBpbiBUYXJnZXQgfHwgZGVmaW5lUHJvcGVydHkoVGFyZ2V0LCBrZXksIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBTb3VyY2Vba2V5XTsgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIChpdCkgeyBTb3VyY2Vba2V5XSA9IGl0OyB9XG4gIH0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm94eS1hY2Nlc3Nvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9xdWV1ZS5qcyI6KChtb2R1bGUpPT57ZXZhbCgiXG52YXIgUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGVhZCA9IG51bGw7XG4gIHRoaXMudGFpbCA9IG51bGw7XG59O1xuXG5RdWV1ZS5wcm90b3R5cGUgPSB7XG4gIGFkZDogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZW50cnkgPSB7IGl0ZW06IGl0ZW0sIG5leHQ6IG51bGwgfTtcbiAgICB2YXIgdGFpbCA9IHRoaXMudGFpbDtcbiAgICBpZiAodGFpbCkgdGFpbC5uZXh0ID0gZW50cnk7XG4gICAgZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJ5ID0gdGhpcy5oZWFkO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgdmFyIG5leHQgPSB0aGlzLmhlYWQgPSBlbnRyeS5uZXh0O1xuICAgICAgaWYgKG5leHQgPT09IG51bGwpIHRoaXMudGFpbCA9IG51bGw7XG4gICAgICByZXR1cm4gZW50cnkuaXRlbTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUXVldWU7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcXVldWUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG52YXIgcmVnZXhwRXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZXhlYyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHBleGVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChSLCBTKSB7XG4gIHZhciBleGVjID0gUi5leGVjO1xuICBpZiAoaXNDYWxsYWJsZShleGVjKSkge1xuICAgIHZhciByZXN1bHQgPSBjYWxsKGV4ZWMsIFIsIFMpO1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIGFuT2JqZWN0KHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoY2xhc3NvZihSKSA9PT0gJ1JlZ0V4cCcpIHJldHVybiBjYWxsKHJlZ2V4cEV4ZWMsIFIsIFMpO1xuICB0aHJvdyAkVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1lbXB0eS1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCwgcmVnZXhwL25vLWxhenktZW5kcyAtLSB0ZXN0aW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tdXNlbGVzcy1xdWFudGlmaWVyIC0tIHRlc3RpbmcgKi9cbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgcmVnZXhwRmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzLmpzXCIpO1xudmFyIHN0aWNreUhlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzLmpzXCIpO1xudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGdldEludGVybmFsU3RhdGUgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIikuZ2V0KTtcbnZhciBVTlNVUFBPUlRFRF9ET1RfQUxMID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLWRvdC1hbGwuanNcIik7XG52YXIgVU5TVVBQT1JURURfTkNHID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnLmpzXCIpO1xuXG52YXIgbmF0aXZlUmVwbGFjZSA9IHNoYXJlZCgnbmF0aXZlLXN0cmluZy1yZXBsYWNlJywgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKTtcbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xudmFyIHBhdGNoZWRFeGVjID0gbmF0aXZlRXhlYztcbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGluZGV4T2YgPSB1bmN1cnJ5VGhpcygnJy5pbmRleE9mKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIGNhbGwobmF0aXZlRXhlYywgcmUxLCAnYScpO1xuICBjYWxsKG5hdGl2ZUV4ZWMsIHJlMiwgJ2EnKTtcbiAgcmV0dXJuIHJlMS5sYXN0SW5kZXggIT09IDAgfHwgcmUyLmxhc3RJbmRleCAhPT0gMDtcbn0pKCk7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5CUk9LRU5fQ0FSRVQ7XG5cbi8vIG5vbnBhcnRpY2lwYXRpbmcgY2FwdHVyaW5nIGdyb3VwLCBjb3BpZWQgZnJvbSBlczUtc2hpbSdzIFN0cmluZyNzcGxpdCBwYXRjaC5cbnZhciBOUENHX0lOQ0xVREVEID0gLygpPz8vLmV4ZWMoJycpWzFdICE9PSB1bmRlZmluZWQ7XG5cbnZhciBQQVRDSCA9IFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORyB8fCBOUENHX0lOQ0xVREVEIHx8IFVOU1VQUE9SVEVEX1kgfHwgVU5TVVBQT1JURURfRE9UX0FMTCB8fCBVTlNVUFBPUlRFRF9OQ0c7XG5cbmlmIChQQVRDSCkge1xuICBwYXRjaGVkRXhlYyA9IGZ1bmN0aW9uIGV4ZWMoc3RyaW5nKSB7XG4gICAgdmFyIHJlID0gdGhpcztcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHJlKTtcbiAgICB2YXIgc3RyID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICB2YXIgcmF3ID0gc3RhdGUucmF3O1xuICAgIHZhciByZXN1bHQsIHJlQ29weSwgbGFzdEluZGV4LCBtYXRjaCwgaSwgb2JqZWN0LCBncm91cDtcblxuICAgIGlmIChyYXcpIHtcbiAgICAgIHJhdy5sYXN0SW5kZXggPSByZS5sYXN0SW5kZXg7XG4gICAgICByZXN1bHQgPSBjYWxsKHBhdGNoZWRFeGVjLCByYXcsIHN0cik7XG4gICAgICByZS5sYXN0SW5kZXggPSByYXcubGFzdEluZGV4O1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICB2YXIgZ3JvdXBzID0gc3RhdGUuZ3JvdXBzO1xuICAgIHZhciBzdGlja3kgPSBVTlNVUFBPUlRFRF9ZICYmIHJlLnN0aWNreTtcbiAgICB2YXIgZmxhZ3MgPSBjYWxsKHJlZ2V4cEZsYWdzLCByZSk7XG4gICAgdmFyIHNvdXJjZSA9IHJlLnNvdXJjZTtcbiAgICB2YXIgY2hhcnNBZGRlZCA9IDA7XG4gICAgdmFyIHN0ckNvcHkgPSBzdHI7XG5cbiAgICBpZiAoc3RpY2t5KSB7XG4gICAgICBmbGFncyA9IHJlcGxhY2UoZmxhZ3MsICd5JywgJycpO1xuICAgICAgaWYgKGluZGV4T2YoZmxhZ3MsICdnJykgPT09IC0xKSB7XG4gICAgICAgIGZsYWdzICs9ICdnJztcbiAgICAgIH1cblxuICAgICAgc3RyQ29weSA9IHN0cmluZ1NsaWNlKHN0ciwgcmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIGNoYXJBdChzdHIsIHJlLmxhc3RJbmRleCAtIDEpICE9PSAnXFxuJykpIHtcbiAgICAgICAgc291cmNlID0gJyg/OiAnICsgc291cmNlICsgJyknO1xuICAgICAgICBzdHJDb3B5ID0gJyAnICsgc3RyQ29weTtcbiAgICAgICAgY2hhcnNBZGRlZCsrO1xuICAgICAgfVxuICAgICAgLy8gXig/ICsgcnggKyApIGlzIG5lZWRlZCwgaW4gY29tYmluYXRpb24gd2l0aCBzb21lIHN0ciBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXig/OicgKyBzb3VyY2UgKyAnKScsIGZsYWdzKTtcbiAgICB9XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyBzb3VyY2UgKyAnJCg/IVxcXFxzKScsIGZsYWdzKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBjYWxsKG5hdGl2ZUV4ZWMsIHN0aWNreSA/IHJlQ29weSA6IHJlLCBzdHJDb3B5KTtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5pbnB1dCA9IHN0cmluZ1NsaWNlKG1hdGNoLmlucHV0LCBjaGFyc0FkZGVkKTtcbiAgICAgICAgbWF0Y2hbMF0gPSBzdHJpbmdTbGljZShtYXRjaFswXSwgY2hhcnNBZGRlZCk7XG4gICAgICAgIG1hdGNoLmluZGV4ID0gcmUubGFzdEluZGV4O1xuICAgICAgICByZS5sYXN0SW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgfSBlbHNlIHJlLmxhc3RJbmRleCA9IDA7XG4gICAgfSBlbHNlIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgJiYgbWF0Y2gpIHtcbiAgICAgIHJlLmxhc3RJbmRleCA9IHJlLmdsb2JhbCA/IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoIDogbGFzdEluZGV4O1xuICAgIH1cbiAgICBpZiAoTlBDR19JTkNMVURFRCAmJiBtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYFxuICAgICAgLy8gZm9yIE5QQ0csIGxpa2UgSUU4LiBOT1RFOiBUaGlzIGRvZXNuJ3Qgd29yayBmb3IgLyguPyk/L1xuICAgICAgY2FsbChuYXRpdmVSZXBsYWNlLCBtYXRjaFswXSwgcmVDb3B5LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMjsgaSsrKSB7XG4gICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKSBtYXRjaFtpXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoICYmIGdyb3Vwcykge1xuICAgICAgbWF0Y2guZ3JvdXBzID0gb2JqZWN0ID0gY3JlYXRlKG51bGwpO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBncm91cCA9IGdyb3Vwc1tpXTtcbiAgICAgICAgb2JqZWN0W2dyb3VwWzBdXSA9IG1hdGNoW2dyb3VwWzFdXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZmxhZ3Ncbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IGFuT2JqZWN0KHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIGlmICh0aGF0Lmhhc0luZGljZXMpIHJlc3VsdCArPSAnZCc7XG4gIGlmICh0aGF0Lmdsb2JhbCkgcmVzdWx0ICs9ICdnJztcbiAgaWYgKHRoYXQuaWdub3JlQ2FzZSkgcmVzdWx0ICs9ICdpJztcbiAgaWYgKHRoYXQubXVsdGlsaW5lKSByZXN1bHQgKz0gJ20nO1xuICBpZiAodGhhdC5kb3RBbGwpIHJlc3VsdCArPSAncyc7XG4gIGlmICh0aGF0LnVuaWNvZGUpIHJlc3VsdCArPSAndSc7XG4gIGlmICh0aGF0LnVuaWNvZGVTZXRzKSByZXN1bHQgKz0gJ3YnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZ2V0LWZsYWdzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIHJlZ0V4cEZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qc1wiKTtcblxudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIpIHtcbiAgdmFyIGZsYWdzID0gUi5mbGFncztcbiAgcmV0dXJuIGZsYWdzID09PSB1bmRlZmluZWQgJiYgISgnZmxhZ3MnIGluIFJlZ0V4cFByb3RvdHlwZSkgJiYgIWhhc093bihSLCAnZmxhZ3MnKSAmJiBpc1Byb3RvdHlwZU9mKFJlZ0V4cFByb3RvdHlwZSwgUilcbiAgICA/IGNhbGwocmVnRXhwRmxhZ3MsIFIpIDogZmxhZ3M7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1nZXQtZmxhZ3MuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgJFJlZ0V4cCA9IGdsb2JhbC5SZWdFeHA7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUgPSAkUmVnRXhwKCdhJywgJ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ2FiY2QnKSAhPSBudWxsO1xufSk7XG5cbi8vIFVDIEJyb3dzZXIgYnVnXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTAwOFxudmFyIE1JU1NFRF9TVElDS1kgPSBVTlNVUFBPUlRFRF9ZIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEkUmVnRXhwKCdhJywgJ3knKS5zdGlja3k7XG59KTtcblxudmFyIEJST0tFTl9DQVJFVCA9IFVOU1VQUE9SVEVEX1kgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03NzM2ODdcbiAgdmFyIHJlID0gJFJlZ0V4cCgnXnInLCAnZ3knKTtcbiAgcmUubGFzdEluZGV4ID0gMjtcbiAgcmV0dXJuIHJlLmV4ZWMoJ3N0cicpICE9IG51bGw7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEJST0tFTl9DQVJFVDogQlJPS0VOX0NBUkVULFxuICBNSVNTRURfU1RJQ0tZOiBNSVNTRURfU1RJQ0tZLFxuICBVTlNVUFBPUlRFRF9ZOiBVTlNVUFBPUlRFRF9ZXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xuXG4vLyBiYWJlbC1taW5pZnkgYW5kIENsb3N1cmUgQ29tcGlsZXIgdHJhbnNwaWxlcyBSZWdFeHAoJy4nLCAncycpIC0+IC8uL3MgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxudmFyICRSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gJFJlZ0V4cCgnLicsICdzJyk7XG4gIHJldHVybiAhKHJlLmRvdEFsbCAmJiByZS5leGVjKCdcXG4nKSAmJiByZS5mbGFncyA9PT0gJ3MnKTtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcoPzxhPmIpJywgJ2cnKSAtPiAvKD88YT5iKS9nIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciAkUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcblxubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciByZSA9ICRSZWdFeHAoJyg/PGE+YiknLCAnZycpO1xuICByZXR1cm4gcmUuZXhlYygnYicpLmdyb3Vwcy5hICE9PSAnYicgfHxcbiAgICAnYicucmVwbGFjZShyZSwgJyQ8YT5jJykgIT09ICdiYyc7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtbmNnLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qc1wiKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtaGVscGVycy5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc2V0IC0tIHNhZmVcbnZhciBTZXRQcm90b3R5cGUgPSBTZXQucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXNldCAtLSBzYWZlXG4gIFNldDogU2V0LFxuICBhZGQ6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5hZGQpLFxuICBoYXM6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZS5oYXMpLFxuICByZW1vdmU6IHVuY3VycnlUaGlzKFNldFByb3RvdHlwZVsnZGVsZXRlJ10pLFxuICBwcm90bzogU2V0UHJvdG90eXBlXG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1oZWxwZXJzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SX05BTUUpIHtcbiAgdmFyIENvbnN0cnVjdG9yID0gZ2V0QnVpbHRJbihDT05TVFJVQ1RPUl9OQU1FKTtcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgQ29uc3RydWN0b3IgJiYgIUNvbnN0cnVjdG9yW1NQRUNJRVNdKSB7XG4gICAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKENvbnN0cnVjdG9yLCBTUEVDSUVTLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB9KTtcbiAgfVxufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpLmYpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgVEFHLCBTVEFUSUMpIHtcbiAgaWYgKHRhcmdldCAmJiAhU1RBVElDKSB0YXJnZXQgPSB0YXJnZXQucHJvdG90eXBlO1xuICBpZiAodGFyZ2V0ICYmICFoYXNPd24odGFyZ2V0LCBUT19TVFJJTkdfVEFHKSkge1xuICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwgVE9fU1RSSU5HX1RBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBUQUcgfSk7XG4gIH1cbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qc1wiKTtcbnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdWlkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzXCIpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qc1wiKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBzdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanNcIik7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zMi4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMi4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgYUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCBpc051bGxPclVuZGVmaW5lZChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID8gZGVmYXVsdENvbnN0cnVjdG9yIDogYUNvbnN0cnVjdG9yKFMpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgY2hhckNvZGVBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJDb2RlQXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlck9ySW5maW5pdHkocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gY2hhckNvZGVBdChTLCBwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gY2hhckF0KFMsIHBvc2l0aW9uKVxuICAgICAgICAgIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gc3RyaW5nU2xpY2UoUywgcG9zaXRpb24sIHBvc2l0aW9uICsgMilcbiAgICAgICAgICA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWkuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzL2Jsb2IvbWFzdGVyL3B1bnljb2RlLmpzXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xuXG52YXIgbWF4SW50ID0gMjE0NzQ4MzY0NzsgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxudmFyIGJhc2UgPSAzNjtcbnZhciB0TWluID0gMTtcbnZhciB0TWF4ID0gMjY7XG52YXIgc2tldyA9IDM4O1xudmFyIGRhbXAgPSA3MDA7XG52YXIgaW5pdGlhbEJpYXMgPSA3MjtcbnZhciBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxudmFyIGRlbGltaXRlciA9ICctJzsgLy8gJ1xceDJEJ1xudmFyIHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx1MDA3RV0vOyAvLyBub24tQVNDSUkgY2hhcnNcbnZhciByZWdleFNlcGFyYXRvcnMgPSAvWy5cXHUzMDAyXFx1RkYwRVxcdUZGNjFdL2c7IC8vIFJGQyAzNDkwIHNlcGFyYXRvcnNcbnZhciBPVkVSRkxPV19FUlJPUiA9ICdPdmVyZmxvdzogaW5wdXQgbmVlZHMgd2lkZXIgaW50ZWdlcnMgdG8gcHJvY2Vzcyc7XG52YXIgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcyhyZWdleFNlcGFyYXRvcnMuZXhlYyk7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgY2hhckNvZGVBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJDb2RlQXQpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xudmFyIHRvTG93ZXJDYXNlID0gdW5jdXJyeVRoaXMoJycudG9Mb3dlckNhc2UpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtZXJpYyBjb2RlIHBvaW50cyBvZiBlYWNoIFVuaWNvZGVcbiAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgcGFpciBvZiBzdXJyb2dhdGUgaGFsdmVzIChlYWNoIG9mIHdoaWNoXG4gKiBVQ1MtMiBleHBvc2VzIGFzIHNlcGFyYXRlIGNoYXJhY3RlcnMpIGludG8gYSBzaW5nbGUgY29kZSBwb2ludCxcbiAqIG1hdGNoaW5nIFVURi0xNi5cbiAqL1xudmFyIHVjczJkZWNvZGUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGNvdW50ZXIgPSAwO1xuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgd2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBjaGFyQ29kZUF0KHN0cmluZywgY291bnRlcisrKTtcbiAgICBpZiAodmFsdWUgPj0gMHhEODAwICYmIHZhbHVlIDw9IDB4REJGRiAmJiBjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgICAvLyBJdCdzIGEgaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyLlxuICAgICAgdmFyIGV4dHJhID0gY2hhckNvZGVBdChzdHJpbmcsIGNvdW50ZXIrKyk7XG4gICAgICBpZiAoKGV4dHJhICYgMHhGQzAwKSA9PSAweERDMDApIHsgLy8gTG93IHN1cnJvZ2F0ZS5cbiAgICAgICAgcHVzaChvdXRwdXQsICgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuICAgICAgICAvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cbiAgICAgICAgcHVzaChvdXRwdXQsIHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwdXNoKG91dHB1dCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKi9cbnZhciBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbiAoZGlnaXQpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNik7XG59O1xuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiAoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG4gIHZhciBrID0gMDtcbiAgZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcbiAgZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuICB3aGlsZSAoZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxKSB7XG4gICAgZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuICAgIGsgKz0gYmFzZTtcbiAgfVxuICByZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG4gIGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cbiAgLy8gQ2FjaGUgdGhlIGxlbmd0aC5cbiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuICB2YXIgbiA9IGluaXRpYWxOO1xuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuICB2YXIgaSwgY3VycmVudFZhbHVlO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7IC8vIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cbiAgdmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7IC8vIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIHB1c2gob3V0cHV0LCBkZWxpbWl0ZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBlbmNvZGluZyBsb29wOlxuICB3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHQgbGFyZ2VyIG9uZTpcbiAgICB2YXIgbSA9IG1heEludDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcbiAgICAgICAgbSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuICAgIHZhciBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG4gICAgaWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcbiAgICAgIHRocm93ICRSYW5nZUVycm9yKE9WRVJGTE9XX0VSUk9SKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcbiAgICAgICAgdGhyb3cgJFJhbmdlRXJyb3IoT1ZFUkZMT1dfRVJST1IpO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICB2YXIgcSA9IGRlbHRhO1xuICAgICAgICB2YXIgayA9IGJhc2U7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgdmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuICAgICAgICAgIGlmIChxIDwgdCkgYnJlYWs7XG4gICAgICAgICAgdmFyIHFNaW51c1QgPSBxIC0gdDtcbiAgICAgICAgICB2YXIgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgICAgIHB1c2gob3V0cHV0LCBmcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCkpKTtcbiAgICAgICAgICBxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuICAgICAgICAgIGsgKz0gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1c2gob3V0cHV0LCBmcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEpKSk7XG4gICAgICAgIGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG4gICAgICAgIGRlbHRhID0gMDtcbiAgICAgICAgaGFuZGxlZENQQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWx0YSsrO1xuICAgIG4rKztcbiAgfVxuICByZXR1cm4gam9pbihvdXRwdXQsICcnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBlbmNvZGVkID0gW107XG4gIHZhciBsYWJlbHMgPSBzcGxpdChyZXBsYWNlKHRvTG93ZXJDYXNlKGlucHV0KSwgcmVnZXhTZXBhcmF0b3JzLCAnXFx1MDAyRScpLCAnLicpO1xuICB2YXIgaSwgbGFiZWw7XG4gIGZvciAoaSA9IDA7IGkgPCBsYWJlbHMubGVuZ3RoOyBpKyspIHtcbiAgICBsYWJlbCA9IGxhYmVsc1tpXTtcbiAgICBwdXNoKGVuY29kZWQsIGV4ZWMocmVnZXhOb25BU0NJSSwgbGFiZWwpID8gJ3huLS0nICsgZW5jb2RlKGxhYmVsKSA6IGxhYmVsKTtcbiAgfVxuICByZXR1cm4gam9pbihlbmNvZGVkLCAnLicpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXJlcGVhdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIik7XG5cbnZhciAkUmFuZ2VFcnJvciA9IFJhbmdlRXJyb3I7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGVhdGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwZWF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJlcGVhdChjb3VudCkge1xuICB2YXIgc3RyID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIG4gPSB0b0ludGVnZXJPckluZmluaXR5KGNvdW50KTtcbiAgaWYgKG4gPCAwIHx8IG4gPT0gSW5maW5pdHkpIHRocm93ICRSYW5nZUVycm9yKCdXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMnKTtcbiAgZm9yICg7biA+IDA7IChuID4+Pj0gMSkgJiYgKHN0ciArPSBzdHIpKSBpZiAobiAmIDEpIHJlc3VsdCArPSBzdHI7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1yZXBlYXQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZW5kLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkdHJpbUVuZCA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS5qc1wiKS5lbmQpO1xudmFyIGZvcmNlZFN0cmluZ1RyaW1NZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZm9yY2VkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZm9yY2VkLmpzXCIpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1FbmQsIHRyaW1SaWdodCB9YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltZW5kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jU3RyaW5nLnByb3RvdHlwZS50cmltcmlnaHRcbm1vZHVsZS5leHBvcnRzID0gZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCgndHJpbUVuZCcpID8gZnVuY3Rpb24gdHJpbUVuZCgpIHtcbiAgcmV0dXJuICR0cmltRW5kKHRoaXMpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1wcm90b3R5cGUtdHJpbXN0YXJ0LXRyaW1lbmQgLS0gc2FmZVxufSA6ICcnLnRyaW1FbmQ7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZW5kLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzXCIpLlBST1BFUik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciB3aGl0ZXNwYWNlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93aGl0ZXNwYWNlcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzXCIpO1xuXG52YXIgbm9uID0gJ1xcdTIwMEJcXHUwMDg1XFx1MTgwRSc7XG5cbi8vIGNoZWNrIHRoYXQgYSBtZXRob2Qgd29ya3Mgd2l0aCB0aGUgY29ycmVjdCBsaXN0XG4vLyBvZiB3aGl0ZXNwYWNlcyBhbmQgaGFzIGEgY29ycmVjdCBuYW1lXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICByZXR1cm4gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXSgpXG4gICAgICB8fCBub25bTUVUSE9EX05BTUVdKCkgIT09IG5vblxuICAgICAgfHwgKFBST1BFUl9GVU5DVElPTl9OQU1FICYmIHdoaXRlc3BhY2VzW01FVEhPRF9OQU1FXS5uYW1lICE9PSBNRVRIT0RfTkFNRSk7XG4gIH0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgd2hpdGVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93aGl0ZXNwYWNlcy5qc1wiKTtcblxudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBsdHJpbSA9IFJlZ0V4cCgnXlsnICsgd2hpdGVzcGFjZXMgKyAnXSsnKTtcbnZhciBydHJpbSA9IFJlZ0V4cCgnKF58W14nICsgd2hpdGVzcGFjZXMgKyAnXSlbJyArIHdoaXRlc3BhY2VzICsgJ10rJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSByZXBsYWNlKHN0cmluZywgbHRyaW0sICcnKTtcbiAgICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHJlcGxhY2Uoc3RyaW5nLCBydHJpbSwgJyQxJyk7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1MZWZ0LCB0cmltU3RhcnQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbXN0YXJ0XG4gIHN0YXJ0OiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbVJpZ2h0LCB0cmltRW5kIH1gIG1ldGhvZHNcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1lbmRcbiAgZW5kOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1gIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuICB0cmltOiBjcmVhdGVNZXRob2QoMylcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RydWN0dXJlZC1jbG9uZS1wcm9wZXItdHJhbnNmZXIuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBWOCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzXCIpO1xudmFyIElTX0JST1dTRVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtYnJvd3Nlci5qc1wiKTtcbnZhciBJU19ERU5PID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1kZW5vICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWRlbm8uanNcIik7XG52YXIgSVNfTk9ERSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzXCIpO1xuXG52YXIgc3RydWN0dXJlZENsb25lID0gZ2xvYmFsLnN0cnVjdHVyZWRDbG9uZTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIXN0cnVjdHVyZWRDbG9uZSAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBwcmV2ZW50IFY4IEFycmF5QnVmZmVyRGV0YWNoaW5nIHByb3RlY3RvciBjZWxsIGludmFsaWRhdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoKElTX0RFTk8gJiYgVjggPiA5MikgfHwgKElTX05PREUgJiYgVjggPiA5NCkgfHwgKElTX0JST1dTRVIgJiYgVjggPiA5NykpIHJldHVybiBmYWxzZTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig4KTtcbiAgdmFyIGNsb25lID0gc3RydWN0dXJlZENsb25lKGJ1ZmZlciwgeyB0cmFuc2ZlcjogW2J1ZmZlcl0gfSk7XG4gIHJldHVybiBidWZmZXIuYnl0ZUxlbmd0aCAhPSAwIHx8IGNsb25lLmJ5dGVMZW5ndGggIT0gODtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cnVjdHVyZWQtY2xvbmUtcHJvcGVyLXRyYW5zZmVyLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgpO1xuICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAvLyBgZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzYCBwb2x5ZmlsbCBzeW1ib2xzIGNvbnZlcnRlZCB0byBvYmplY3QgYXJlIG5vdCBTeW1ib2wgaW5zdGFuY2VzXG4gIC8vIG5iOiBEbyBub3QgY2FsbCBgU3RyaW5nYCBkaXJlY3RseSB0byBhdm9pZCB0aGlzIGJlaW5nIG9wdGltaXplZCBvdXQgdG8gYHN5bWJvbCsnJ2Agd2hpY2ggd2lsbCxcbiAgLy8gb2YgY291cnNlLCBmYWlsLlxuICByZXR1cm4gISRTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90YXNrLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGFwcGx5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkuanNcIik7XG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGh0bWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaHRtbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanNcIik7XG52YXIgYXJyYXlTbGljZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zbGljZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzXCIpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qc1wiKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qc1wiKTtcbnZhciBJU19JT1MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MuanNcIik7XG52YXIgSVNfTk9ERSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzXCIpO1xuXG52YXIgc2V0ID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhciA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgRnVuY3Rpb24gPSBnbG9iYWwuRnVuY3Rpb247XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyICRsb2NhdGlvbiwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG5cbmZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVubyB0aHJvd3MgYSBSZWZlcmVuY2VFcnJvciBvbiBgbG9jYXRpb25gIGFjY2VzcyB3aXRob3V0IGAtLWxvY2F0aW9uYCBmbGFnXG4gICRsb2NhdGlvbiA9IGdsb2JhbC5sb2NhdGlvbjtcbn0pO1xuXG52YXIgcnVuID0gZnVuY3Rpb24gKGlkKSB7XG4gIGlmIChoYXNPd24ocXVldWUsIGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG5cbnZhciBydW5uZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBydW4oaWQpO1xuICB9O1xufTtcblxudmFyIGV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuKGV2ZW50LmRhdGEpO1xufTtcblxudmFyIGdsb2JhbFBvc3RNZXNzYWdlRGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgLy8gb2xkIGVuZ2luZXMgaGF2ZSBub3QgbG9jYXRpb24ub3JpZ2luXG4gIGdsb2JhbC5wb3N0TWVzc2FnZShTdHJpbmcoaWQpLCAkbG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgJGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShoYW5kbGVyKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGZuID0gaXNDYWxsYWJsZShoYW5kbGVyKSA/IGhhbmRsZXIgOiBGdW5jdGlvbihoYW5kbGVyKTtcbiAgICB2YXIgYXJncyA9IGFycmF5U2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgYXBwbHkoZm4sIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXIgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAoSVNfTk9ERSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3cocnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICAvLyBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzYyNFxuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsICYmICFJU19JT1MpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyO1xuICAgIGRlZmVyID0gYmluZChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0KTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoXG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiZcbiAgICBpc0NhbGxhYmxlKGdsb2JhbC5wb3N0TWVzc2FnZSkgJiZcbiAgICAhZ2xvYmFsLmltcG9ydFNjcmlwdHMgJiZcbiAgICAkbG9jYXRpb24gJiYgJGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKGdsb2JhbFBvc3RNZXNzYWdlRGVmZXIpXG4gICkge1xuICAgIGRlZmVyID0gZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlcjtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4oaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KHJ1bm5lcihpZCksIDApO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBjbGVhcjogY2xlYXJcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdGFzay5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xuXG4vLyBgdGhpc051bWJlclZhbHVlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdGhpc251bWJlcnZhbHVlXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKDEuMC52YWx1ZU9mKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGludGVnZXIsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1iaWctaW50LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1wcmltaXRpdmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanNcIik7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgVG9CaWdJbnRgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2JpZ2ludFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIHByaW0gPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ251bWJlcicpO1xuICBpZiAodHlwZW9mIHByaW0gPT0gJ251bWJlcicpIHRocm93ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnRcIik7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1iaWdpbnQgLS0gc2FmZVxuICByZXR1cm4gQmlnSW50KHByaW0pO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1iaWctaW50LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxuLy8gYFRvSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIDA7XG4gIHZhciBudW1iZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGl0KTtcbiAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKG51bWJlcik7XG4gIGlmIChudW1iZXIgIT09IGxlbmd0aCkgdGhyb3cgJFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCBvciBpbmRleCcpO1xuICByZXR1cm4gbGVuZ3RoO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0cnVuYyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9tYXRoLXRydW5jICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC10cnVuYy5qc1wiKTtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IHRydW5jKG51bWJlcik7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gYXJndW1lbnQgPiAwID8gbWluKHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIik7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2Zmc2V0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b1Bvc2l0aXZlSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1wb3NpdGl2ZS1pbnRlZ2VyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlci5qc1wiKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIEJZVEVTKSB7XG4gIHZhciBvZmZzZXQgPSB0b1Bvc2l0aXZlSW50ZWdlcihpdCk7XG4gIGlmIChvZmZzZXQgJSBCWVRFUykgdGhyb3cgJFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCcpO1xuICByZXR1cm4gb2Zmc2V0O1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vZmZzZXQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcG9zaXRpdmUtaW50ZWdlci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHJlc3VsdCA9IHRvSW50ZWdlck9ySW5maW5pdHkoaXQpO1xuICBpZiAocmVzdWx0IDwgMCkgdGhyb3cgJFJhbmdlRXJyb3IoXCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDBcIik7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXBvc2l0aXZlLWludGVnZXIuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBpc1N5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanNcIik7XG52YXIgZ2V0TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzXCIpO1xudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1wcmltaXRpdmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanNcIik7XG52YXIgaXNTeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzXCIpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIik7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nJyk7XG4gIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXVpbnQ4LWNsYW1wZWQuanMiOigobW9kdWxlKT0+e2V2YWwoIlxudmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHZhbHVlID0gcm91bmQoaXQpO1xuICByZXR1cm4gdmFsdWUgPCAwID8gMCA6IHZhbHVlID4gMHhGRiA/IDB4RkYgOiB2YWx1ZSAmIDB4RkY7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXVpbnQ4LWNsYW1wZWQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LW5vZGUtcmVxdWlyZS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgSVNfTk9ERSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIHNhZmVcbiAgICBpZiAoSVNfTk9ERSkgcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZShcIicgKyBuYW1lICsgJ1wiKScpKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LW5vZGUtcmVxdWlyZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIjooKG1vZHVsZSk9PntldmFsKCJcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLXdyYXBwZXJzLmpzXCIpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUuanNcIik7XG52YXIgQXJyYXlCdWZmZXJNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLmpzXCIpO1xudmFyIGFuSW5zdGFuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qc1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzXCIpO1xudmFyIGlzSW50ZWdyYWxOdW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtaW50ZWdyYWwtbnVtYmVyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtaW50ZWdyYWwtbnVtYmVyLmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXguanNcIik7XG52YXIgdG9PZmZzZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2Zmc2V0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2Zmc2V0LmpzXCIpO1xudmFyIHRvVWludDhDbGFtcGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXVpbnQ4LWNsYW1wZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by11aW50OC1jbGFtcGVkLmpzXCIpO1xudmFyIHRvUHJvcGVydHlLZXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBpc1N5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanNcIik7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGlzUHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzXCIpLmYpO1xudmFyIHR5cGVkQXJyYXlGcm9tID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWZyb20gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLmpzXCIpO1xudmFyIGZvckVhY2ggPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qc1wiKS5mb3JFYWNoKTtcbnZhciBzZXRTcGVjaWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXNwZWNpZXMuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIik7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzXCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzXCIpO1xuXG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xudmFyIEFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXJNb2R1bGUuQXJyYXlCdWZmZXI7XG52YXIgQXJyYXlCdWZmZXJQcm90b3R5cGUgPSBBcnJheUJ1ZmZlci5wcm90b3R5cGU7XG52YXIgRGF0YVZpZXcgPSBBcnJheUJ1ZmZlck1vZHVsZS5EYXRhVmlldztcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTO1xudmFyIFRZUEVEX0FSUkFZX1RBRyA9IEFycmF5QnVmZmVyVmlld0NvcmUuVFlQRURfQVJSQVlfVEFHO1xudmFyIFR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLlR5cGVkQXJyYXk7XG52YXIgVHlwZWRBcnJheVByb3RvdHlwZSA9IEFycmF5QnVmZmVyVmlld0NvcmUuVHlwZWRBcnJheVByb3RvdHlwZTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xudmFyIGlzVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuaXNUeXBlZEFycmF5O1xudmFyIEJZVEVTX1BFUl9FTEVNRU5UID0gJ0JZVEVTX1BFUl9FTEVNRU5UJztcbnZhciBXUk9OR19MRU5HVEggPSAnV3JvbmcgbGVuZ3RoJztcblxudmFyIGZyb21MaXN0ID0gZnVuY3Rpb24gKEMsIGxpc3QpIHtcbiAgYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihDKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICB2YXIgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSByZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoaXQsIGtleSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpW2tleV07XG4gICAgfVxuICB9KTtcbn07XG5cbnZhciBpc0FycmF5QnVmZmVyID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBrbGFzcztcbiAgcmV0dXJuIGlzUHJvdG90eXBlT2YoQXJyYXlCdWZmZXJQcm90b3R5cGUsIGl0KSB8fCAoa2xhc3MgPSBjbGFzc29mKGl0KSkgPT0gJ0FycmF5QnVmZmVyJyB8fCBrbGFzcyA9PSAnU2hhcmVkQXJyYXlCdWZmZXInO1xufTtcblxudmFyIGlzVHlwZWRBcnJheUluZGV4ID0gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7XG4gIHJldHVybiBpc1R5cGVkQXJyYXkodGFyZ2V0KVxuICAgICYmICFpc1N5bWJvbChrZXkpXG4gICAgJiYga2V5IGluIHRhcmdldFxuICAgICYmIGlzSW50ZWdyYWxOdW1iZXIoK2tleSlcbiAgICAmJiBrZXkgPj0gMDtcbn07XG5cbnZhciB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSB7XG4gIGtleSA9IHRvUHJvcGVydHlLZXkoa2V5KTtcbiAgcmV0dXJuIGlzVHlwZWRBcnJheUluZGV4KHRhcmdldCwga2V5KVxuICAgID8gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDIsIHRhcmdldFtrZXldKVxuICAgIDogbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbn07XG5cbnZhciB3cmFwcGVkRGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcikge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChpc1R5cGVkQXJyYXlJbmRleCh0YXJnZXQsIGtleSlcbiAgICAmJiBpc09iamVjdChkZXNjcmlwdG9yKVxuICAgICYmIGhhc093bihkZXNjcmlwdG9yLCAndmFsdWUnKVxuICAgICYmICFoYXNPd24oZGVzY3JpcHRvciwgJ2dldCcpXG4gICAgJiYgIWhhc093bihkZXNjcmlwdG9yLCAnc2V0JylcbiAgICAvLyBUT0RPOiBhZGQgdmFsaWRhdGlvbiBkZXNjcmlwdG9yIHcvbyBjYWxsaW5nIGFjY2Vzc29yc1xuICAgICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZVxuICAgICYmICghaGFzT3duKGRlc2NyaXB0b3IsICd3cml0YWJsZScpIHx8IGRlc2NyaXB0b3Iud3JpdGFibGUpXG4gICAgJiYgKCFoYXNPd24oZGVzY3JpcHRvciwgJ2VudW1lcmFibGUnKSB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUpXG4gICkge1xuICAgIHRhcmdldFtrZXldID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9IHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZGVzY3JpcHRvcik7XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgaWYgKCFOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKSB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmYgPSB3cmFwcGVkR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAgIGRlZmluZVByb3BlcnR5TW9kdWxlLmYgPSB3cmFwcGVkRGVmaW5lUHJvcGVydHk7XG4gICAgYWRkR2V0dGVyKFR5cGVkQXJyYXlQcm90b3R5cGUsICdidWZmZXInKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVPZmZzZXQnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2J5dGVMZW5ndGgnKTtcbiAgICBhZGRHZXR0ZXIoVHlwZWRBcnJheVByb3RvdHlwZSwgJ2xlbmd0aCcpO1xuICB9XG5cbiAgJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGZvcmNlZDogIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfSwge1xuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogd3JhcHBlZEdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgICBkZWZpbmVQcm9wZXJ0eTogd3JhcHBlZERlZmluZVByb3BlcnR5XG4gIH0pO1xuXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsIHdyYXBwZXIsIENMQU1QRUQpIHtcbiAgICB2YXIgQllURVMgPSBUWVBFLm1hdGNoKC9cXGQrLylbMF0gLyA4O1xuICAgIHZhciBDT05TVFJVQ1RPUl9OQU1FID0gVFlQRSArIChDTEFNUEVEID8gJ0NsYW1wZWQnIDogJycpICsgJ0FycmF5JztcbiAgICB2YXIgR0VUVEVSID0gJ2dldCcgKyBUWVBFO1xuICAgIHZhciBTRVRURVIgPSAnc2V0JyArIFRZUEU7XG4gICAgdmFyIE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IGdsb2JhbFtDT05TVFJVQ1RPUl9OQU1FXTtcbiAgICB2YXIgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuICAgIHZhciBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3IgJiYgVHlwZWRBcnJheUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgICB2YXIgZXhwb3J0ZWQgPSB7fTtcblxuICAgIHZhciBnZXR0ZXIgPSBmdW5jdGlvbiAodGhhdCwgaW5kZXgpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIHJldHVybiBkYXRhLnZpZXdbR0VUVEVSXShpbmRleCAqIEJZVEVTICsgZGF0YS5ieXRlT2Zmc2V0LCB0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIHNldHRlciA9IGZ1bmN0aW9uICh0aGF0LCBpbmRleCwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGF0KTtcbiAgICAgIGRhdGEudmlld1tTRVRURVJdKGluZGV4ICogQllURVMgKyBkYXRhLmJ5dGVPZmZzZXQsIENMQU1QRUQgPyB0b1VpbnQ4Q2xhbXBlZCh2YWx1ZSkgOiB2YWx1ZSwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBhZGRFbGVtZW50ID0gZnVuY3Rpb24gKHRoYXQsIGluZGV4KSB7XG4gICAgICBuYXRpdmVEZWZpbmVQcm9wZXJ0eSh0aGF0LCBpbmRleCwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0dGVyKHRoaXMsIGluZGV4KTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gc2V0dGVyKHRoaXMsIGluZGV4LCB2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBpZiAoIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MpIHtcbiAgICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3RvciA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGRhdGEsIG9mZnNldCwgJGxlbmd0aCkge1xuICAgICAgICBhbkluc3RhbmNlKHRoYXQsIFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBieXRlT2Zmc2V0ID0gMDtcbiAgICAgICAgdmFyIGJ1ZmZlciwgYnl0ZUxlbmd0aCwgbGVuZ3RoO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSB7XG4gICAgICAgICAgbGVuZ3RoID0gdG9JbmRleChkYXRhKTtcbiAgICAgICAgICBieXRlTGVuZ3RoID0gbGVuZ3RoICogQllURVM7XG4gICAgICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVMZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgICBidWZmZXIgPSBkYXRhO1xuICAgICAgICAgIGJ5dGVPZmZzZXQgPSB0b09mZnNldChvZmZzZXQsIEJZVEVTKTtcbiAgICAgICAgICB2YXIgJGxlbiA9IGRhdGEuYnl0ZUxlbmd0aDtcbiAgICAgICAgICBpZiAoJGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoJGxlbiAlIEJZVEVTKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gJGxlbiAtIGJ5dGVPZmZzZXQ7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCA8IDApIHRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZiAoYnl0ZUxlbmd0aCArIGJ5dGVPZmZzZXQgPiAkbGVuKSB0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmIChpc1R5cGVkQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2FsbCh0eXBlZEFycmF5RnJvbSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIHtcbiAgICAgICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgICAgICBieXRlT2Zmc2V0OiBieXRlT2Zmc2V0LFxuICAgICAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICAgICAgdmlldzogbmV3IERhdGFWaWV3KGJ1ZmZlcilcbiAgICAgICAgfSk7XG4gICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgVHlwZWRBcnJheSk7XG4gICAgICBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKFR5cGVkQXJyYXlQcm90b3R5cGUpO1xuICAgIH0gZWxzZSBpZiAoVFlQRURfQVJSQVlTX0NPTlNUUlVDVE9SU19SRVFVSVJFU19XUkFQUEVSUykge1xuICAgICAgVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gd3JhcHBlcihmdW5jdGlvbiAoZHVtbXksIGRhdGEsIHR5cGVkQXJyYXlPZmZzZXQsICRsZW5ndGgpIHtcbiAgICAgICAgYW5JbnN0YW5jZShkdW1teSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlKTtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRJZlJlcXVpcmVkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIWlzT2JqZWN0KGRhdGEpKSByZXR1cm4gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcih0b0luZGV4KGRhdGEpKTtcbiAgICAgICAgICBpZiAoaXNBcnJheUJ1ZmZlcihkYXRhKSkgcmV0dXJuICRsZW5ndGggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKGRhdGEsIHRvT2Zmc2V0KHR5cGVkQXJyYXlPZmZzZXQsIEJZVEVTKSwgJGxlbmd0aClcbiAgICAgICAgICAgIDogdHlwZWRBcnJheU9mZnNldCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhLCB0b09mZnNldCh0eXBlZEFycmF5T2Zmc2V0LCBCWVRFUykpXG4gICAgICAgICAgICAgIDogbmV3IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcihkYXRhKTtcbiAgICAgICAgICBpZiAoaXNUeXBlZEFycmF5KGRhdGEpKSByZXR1cm4gZnJvbUxpc3QoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgICByZXR1cm4gY2FsbCh0eXBlZEFycmF5RnJvbSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBkYXRhKTtcbiAgICAgICAgfSgpLCBkdW1teSwgVHlwZWRBcnJheUNvbnN0cnVjdG9yKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKFR5cGVkQXJyYXlDb25zdHJ1Y3RvciwgVHlwZWRBcnJheSk7XG4gICAgICBmb3JFYWNoKGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yKSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gVHlwZWRBcnJheUNvbnN0cnVjdG9yKSkge1xuICAgICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3IsIGtleSwgTmF0aXZlVHlwZWRBcnJheUNvbnN0cnVjdG9yW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFR5cGVkQXJyYXlDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGU7XG4gICAgfVxuXG4gICAgaWYgKFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZS5jb25zdHJ1Y3RvciAhPT0gVHlwZWRBcnJheUNvbnN0cnVjdG9yKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yUHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBUeXBlZEFycmF5Q29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSkuVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG4gICAgaWYgKFRZUEVEX0FSUkFZX1RBRykge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSwgVFlQRURfQVJSQVlfVEFHLCBDT05TVFJVQ1RPUl9OQU1FKTtcbiAgICB9XG5cbiAgICB2YXIgRk9SQ0VEID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yICE9IE5hdGl2ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcblxuICAgIGV4cG9ydGVkW0NPTlNUUlVDVE9SX05BTUVdID0gVHlwZWRBcnJheUNvbnN0cnVjdG9yO1xuXG4gICAgJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGZvcmNlZDogRk9SQ0VELCBzaGFtOiAhTkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUyB9LCBleHBvcnRlZCk7XG5cbiAgICBpZiAoIShCWVRFU19QRVJfRUxFTUVOVCBpbiBUeXBlZEFycmF5Q29uc3RydWN0b3IpKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoVHlwZWRBcnJheUNvbnN0cnVjdG9yLCBCWVRFU19QRVJfRUxFTUVOVCwgQllURVMpO1xuICAgIH1cblxuICAgIGlmICghKEJZVEVTX1BFUl9FTEVNRU5UIGluIFR5cGVkQXJyYXlDb25zdHJ1Y3RvclByb3RvdHlwZSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShUeXBlZEFycmF5Q29uc3RydWN0b3JQcm90b3R5cGUsIEJZVEVTX1BFUl9FTEVNRU5ULCBCWVRFUyk7XG4gICAgfVxuXG4gICAgc2V0U3BlY2llcyhDT05TVFJVQ1RPUl9OQU1FKTtcbiAgfTtcbn0gZWxzZSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3RvcnMtcmVxdWlyZS13cmFwcGVycy5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXcgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qc1wiKTtcbnZhciBOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTKTtcblxudmFyIEFycmF5QnVmZmVyID0gZ2xvYmFsLkFycmF5QnVmZmVyO1xudmFyIEludDhBcnJheSA9IGdsb2JhbC5JbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gIU5BVElWRV9BUlJBWV9CVUZGRVJfVklFV1MgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgSW50OEFycmF5KDEpO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgbmV3IEludDhBcnJheSgtMSk7XG59KSB8fCAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBuZXcgSW50OEFycmF5KCk7XG4gIG5ldyBJbnQ4QXJyYXkobnVsbCk7XG4gIG5ldyBJbnQ4QXJyYXkoMS41KTtcbiAgbmV3IEludDhBcnJheShpdGVyYWJsZSk7XG59LCB0cnVlKSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIFNhZmFyaSAoMTErKSBidWcgLSBhIHJlYXNvbiB3aHkgZXZlbiBTYWZhcmkgMTMgc2hvdWxkIGxvYWQgYSB0eXBlZCBhcnJheSBwb2x5ZmlsbFxuICByZXR1cm4gbmV3IEludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMiksIDEsIHVuZGVmaW5lZCkubGVuZ3RoICE9PSAxO1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3JzLXJlcXVpcmUtd3JhcHBlcnMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktZnJvbS5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG52YXIgY2FsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qc1wiKTtcbnZhciBhQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY29uc3RydWN0b3IuanNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgZ2V0SXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLmpzXCIpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXCIpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanNcIik7XG52YXIgaXNCaWdJbnRBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1iaWctaW50LWFycmF5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYmlnLWludC1hcnJheS5qc1wiKTtcbnZhciBhVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKS5hVHlwZWRBcnJheUNvbnN0cnVjdG9yKTtcbnZhciB0b0JpZ0ludCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1iaWctaW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYmlnLWludC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKHNvdXJjZSAvKiAsIG1hcGZuLCB0aGlzQXJnICovKSB7XG4gIHZhciBDID0gYUNvbnN0cnVjdG9yKHRoaXMpO1xuICB2YXIgTyA9IHRvT2JqZWN0KHNvdXJjZSk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgaSwgbGVuZ3RoLCByZXN1bHQsIHRoaXNJc0JpZ0ludEFycmF5LCB2YWx1ZSwgc3RlcCwgaXRlcmF0b3IsIG5leHQ7XG4gIGlmIChpdGVyYXRvck1ldGhvZCAmJiAhaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkge1xuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoTywgaXRlcmF0b3JNZXRob2QpO1xuICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgIE8gPSBbXTtcbiAgICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgIE8ucHVzaChzdGVwLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgaWYgKG1hcHBpbmcgJiYgYXJndW1lbnRzTGVuZ3RoID4gMikge1xuICAgIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzWzJdKTtcbiAgfVxuICBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgcmVzdWx0ID0gbmV3IChhVHlwZWRBcnJheUNvbnN0cnVjdG9yKEMpKShsZW5ndGgpO1xuICB0aGlzSXNCaWdJbnRBcnJheSA9IGlzQmlnSW50QXJyYXkocmVzdWx0KTtcbiAgZm9yIChpID0gMDsgbGVuZ3RoID4gaTsgaSsrKSB7XG4gICAgdmFsdWUgPSBtYXBwaW5nID8gbWFwZm4oT1tpXSwgaSkgOiBPW2ldO1xuICAgIC8vIEZGMzAtIHR5cGVkIGFycmF5cyBkb2Vzbid0IHByb3Blcmx5IGNvbnZlcnQgb2JqZWN0cyB0byB0eXBlZCBhcnJheSB2YWx1ZXNcbiAgICByZXN1bHRbaV0gPSB0aGlzSXNCaWdJbnRBcnJheSA/IHRvQmlnSW50KHZhbHVlKSA6ICt2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1mcm9tLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcmVsYXRpdmUtdXJsLXN0eWxlIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciB1cmwgPSBuZXcgVVJMKCdiP2E9MSZiPTImYz0zJywgJ2h0dHA6Ly9hJyk7XG4gIHZhciBwYXJhbXMgPSB1cmwuc2VhcmNoUGFyYW1zO1xuICB2YXIgcGFyYW1zMiA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdXJsLnBhdGhuYW1lID0gJ2MlMjBkJztcbiAgcGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICBwYXJhbXNbJ2RlbGV0ZSddKCdiJyk7XG4gICAgcmVzdWx0ICs9IGtleSArIHZhbHVlO1xuICB9KTtcbiAgcGFyYW1zMlsnZGVsZXRlJ10oJ2EnLCAyKTtcbiAgLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbiAgcGFyYW1zMlsnZGVsZXRlJ10oJ2InLCB1bmRlZmluZWQpO1xuICByZXR1cm4gKElTX1BVUkUgJiYgKCF1cmwudG9KU09OIHx8ICFwYXJhbXMyLmhhcygnYScsIDEpIHx8IHBhcmFtczIuaGFzKCdhJywgMikgfHwgIXBhcmFtczIuaGFzKCdhJywgdW5kZWZpbmVkKSB8fCBwYXJhbXMyLmhhcygnYicpKSlcbiAgICB8fCAoIXBhcmFtcy5zaXplICYmIChJU19QVVJFIHx8ICFERVNDUklQVE9SUykpXG4gICAgfHwgIXBhcmFtcy5zb3J0XG4gICAgfHwgdXJsLmhyZWYgIT09ICdodHRwOi8vYS9jJTIwZD9hPTEmYz0zJ1xuICAgIHx8IHBhcmFtcy5nZXQoJ2MnKSAhPT0gJzMnXG4gICAgfHwgU3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoJz9hPTEnKSkgIT09ICdhPTEnXG4gICAgfHwgIXBhcmFtc1tJVEVSQVRPUl1cbiAgICAvLyB0aHJvd3MgaW4gRWRnZVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYUBiJykudXNlcm5hbWUgIT09ICdhJ1xuICAgIHx8IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygnYT1iJykpLmdldCgnYScpICE9PSAnYidcbiAgICAvLyBub3QgcHVueWNvZGVkIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwOi8v0YLQtdGB0YInKS5ob3N0ICE9PSAneG4tLWUxYXliYydcbiAgICAvLyBub3QgZXNjYXBlZCBpbiBDaHJvbWUgNjItXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL2Ej0LEnKS5oYXNoICE9PSAnIyVEMCVCMSdcbiAgICAvLyBmYWlscyBpbiBDaHJvbWUgNjYtXG4gICAgfHwgcmVzdWx0ICE9PSAnYTFjMydcbiAgICAvLyB0aHJvd3MgaW4gU2FmYXJpXG4gICAgfHwgbmV3IFVSTCgnaHR0cDovL3gnLCB1bmRlZmluZWQpLmhvc3QgIT09ICd4Jztcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MXG4gICYmICFTeW1ib2wuc2hhbVxuICAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT0gNDI7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIjooKG1vZHVsZSk9PntldmFsKCJcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXNzZWQsIHJlcXVpcmVkKSB7XG4gIGlmIChwYXNzZWQgPCByZXF1aXJlZCkgdGhyb3cgJFR5cGVFcnJvcignTm90IGVub3VnaCBhcmd1bWVudHMnKTtcbiAgcmV0dXJuIHBhc3NlZDtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgaGFzT3duID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXCIpO1xudmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy91aWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanNcIik7XG52YXIgTkFUSVZFX1NZTUJPTCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzXCIpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanMiOigobW9kdWxlKT0+e2V2YWwoIlxuLy8gYSBzdHJpbmcgb2YgYWxsIHZhbGlkIHVuaWNvZGUgd2hpdGVzcGFjZXNcbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyJyArXG4gICdcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd3JhcC1lcnJvci1jb25zdHJ1Y3Rvci13aXRoLWNhdXNlLmpzIjooKG1vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanNcIik7XG52YXIgcHJveHlBY2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9wcm94eS1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb3h5LWFjY2Vzc29yLmpzXCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzXCIpO1xudmFyIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzXCIpO1xudmFyIGluc3RhbGxFcnJvckNhdXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlLmpzXCIpO1xudmFyIGluc3RhbGxFcnJvclN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoRlVMTF9OQU1FLCB3cmFwcGVyLCBGT1JDRUQsIElTX0FHR1JFR0FURV9FUlJPUikge1xuICB2YXIgU1RBQ0tfVFJBQ0VfTElNSVQgPSAnc3RhY2tUcmFjZUxpbWl0JztcbiAgdmFyIE9QVElPTlNfUE9TSVRJT04gPSBJU19BR0dSRUdBVEVfRVJST1IgPyAyIDogMTtcbiAgdmFyIHBhdGggPSBGVUxMX05BTUUuc3BsaXQoJy4nKTtcbiAgdmFyIEVSUk9SX05BTUUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gIHZhciBPcmlnaW5hbEVycm9yID0gZ2V0QnVpbHRJbi5hcHBseShudWxsLCBwYXRoKTtcblxuICBpZiAoIU9yaWdpbmFsRXJyb3IpIHJldHVybjtcblxuICB2YXIgT3JpZ2luYWxFcnJvclByb3RvdHlwZSA9IE9yaWdpbmFsRXJyb3IucHJvdG90eXBlO1xuXG4gIC8vIFY4IDkuMy0gYnVnIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTEyMDA2XG4gIGlmICghSVNfUFVSRSAmJiBoYXNPd24oT3JpZ2luYWxFcnJvclByb3RvdHlwZSwgJ2NhdXNlJykpIGRlbGV0ZSBPcmlnaW5hbEVycm9yUHJvdG90eXBlLmNhdXNlO1xuXG4gIGlmICghRk9SQ0VEKSByZXR1cm4gT3JpZ2luYWxFcnJvcjtcblxuICB2YXIgQmFzZUVycm9yID0gZ2V0QnVpbHRJbignRXJyb3InKTtcblxuICB2YXIgV3JhcHBlZEVycm9yID0gd3JhcHBlcihmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBtZXNzYWdlID0gbm9ybWFsaXplU3RyaW5nQXJndW1lbnQoSVNfQUdHUkVHQVRFX0VSUk9SID8gYiA6IGEsIHVuZGVmaW5lZCk7XG4gICAgdmFyIHJlc3VsdCA9IElTX0FHR1JFR0FURV9FUlJPUiA/IG5ldyBPcmlnaW5hbEVycm9yKGEpIDogbmV3IE9yaWdpbmFsRXJyb3IoKTtcbiAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkocmVzdWx0LCAnbWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgIGluc3RhbGxFcnJvclN0YWNrKHJlc3VsdCwgV3JhcHBlZEVycm9yLCByZXN1bHQuc3RhY2ssIDIpO1xuICAgIGlmICh0aGlzICYmIGlzUHJvdG90eXBlT2YoT3JpZ2luYWxFcnJvclByb3RvdHlwZSwgdGhpcykpIGluaGVyaXRJZlJlcXVpcmVkKHJlc3VsdCwgdGhpcywgV3JhcHBlZEVycm9yKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IE9QVElPTlNfUE9TSVRJT04pIGluc3RhbGxFcnJvckNhdXNlKHJlc3VsdCwgYXJndW1lbnRzW09QVElPTlNfUE9TSVRJT05dKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICBXcmFwcGVkRXJyb3IucHJvdG90eXBlID0gT3JpZ2luYWxFcnJvclByb3RvdHlwZTtcblxuICBpZiAoRVJST1JfTkFNRSAhPT0gJ0Vycm9yJykge1xuICAgIGlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoV3JhcHBlZEVycm9yLCBCYXNlRXJyb3IpO1xuICAgIGVsc2UgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhXcmFwcGVkRXJyb3IsIEJhc2VFcnJvciwgeyBuYW1lOiB0cnVlIH0pO1xuICB9IGVsc2UgaWYgKERFU0NSSVBUT1JTICYmIFNUQUNLX1RSQUNFX0xJTUlUIGluIE9yaWdpbmFsRXJyb3IpIHtcbiAgICBwcm94eUFjY2Vzc29yKFdyYXBwZWRFcnJvciwgT3JpZ2luYWxFcnJvciwgU1RBQ0tfVFJBQ0VfTElNSVQpO1xuICAgIHByb3h5QWNjZXNzb3IoV3JhcHBlZEVycm9yLCBPcmlnaW5hbEVycm9yLCAncHJlcGFyZVN0YWNrVHJhY2UnKTtcbiAgfVxuXG4gIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoV3JhcHBlZEVycm9yLCBPcmlnaW5hbEVycm9yKTtcblxuICBpZiAoIUlTX1BVUkUpIHRyeSB7XG4gICAgLy8gU2FmYXJpIDEzLSBidWc6IFdlYkFzc2VtYmx5IGVycm9ycyBkb2VzIG5vdCBoYXZlIGEgcHJvcGVyIGAubmFtZWBcbiAgICBpZiAoT3JpZ2luYWxFcnJvclByb3RvdHlwZS5uYW1lICE9PSBFUlJPUl9OQU1FKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoT3JpZ2luYWxFcnJvclByb3RvdHlwZSwgJ25hbWUnLCBFUlJPUl9OQU1FKTtcbiAgICB9XG4gICAgT3JpZ2luYWxFcnJvclByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFdyYXBwZWRFcnJvcjtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gIHJldHVybiBXcmFwcGVkRXJyb3I7XG59O1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dyYXAtZXJyb3ItY29uc3RydWN0b3Itd2l0aC1jYXVzZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLmNvbnN0cnVjdG9yLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgYXJyYXlCdWZmZXJNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLmpzXCIpO1xudmFyIHNldFNwZWNpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qc1wiKTtcblxudmFyIEFSUkFZX0JVRkZFUiA9ICdBcnJheUJ1ZmZlcic7XG52YXIgQXJyYXlCdWZmZXIgPSBhcnJheUJ1ZmZlck1vZHVsZVtBUlJBWV9CVUZGRVJdO1xudmFyIE5hdGl2ZUFycmF5QnVmZmVyID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl07XG5cbi8vIGBBcnJheUJ1ZmZlcmAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlidWZmZXItY29uc3RydWN0b3JcbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6IE5hdGl2ZUFycmF5QnVmZmVyICE9PSBBcnJheUJ1ZmZlciB9LCB7XG4gIEFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlclxufSk7XG5cbnNldFNwZWNpZXMoQVJSQVlfQlVGRkVSKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXktYnVmZmVyLmNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuc2xpY2UuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBBcnJheUJ1ZmZlck1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXIuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanNcIik7XG5cbnZhciBBcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyTW9kdWxlLkFycmF5QnVmZmVyO1xudmFyIERhdGFWaWV3ID0gQXJyYXlCdWZmZXJNb2R1bGUuRGF0YVZpZXc7XG52YXIgRGF0YVZpZXdQcm90b3R5cGUgPSBEYXRhVmlldy5wcm90b3R5cGU7XG52YXIgbmF0aXZlQXJyYXlCdWZmZXJTbGljZSA9IHVuY3VycnlUaGlzKEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSk7XG52YXIgZ2V0VWludDggPSB1bmN1cnJ5VGhpcyhEYXRhVmlld1Byb3RvdHlwZS5nZXRVaW50OCk7XG52YXIgc2V0VWludDggPSB1bmN1cnJ5VGhpcyhEYXRhVmlld1Byb3RvdHlwZS5zZXRVaW50OCk7XG5cbnZhciBJTkNPUlJFQ1RfU0xJQ0UgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhbmV3IEFycmF5QnVmZmVyKDIpLnNsaWNlKDEsIHVuZGVmaW5lZCkuYnl0ZUxlbmd0aDtcbn0pO1xuXG4vLyBgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlidWZmZXIucHJvdG90eXBlLnNsaWNlXG4kKHsgdGFyZ2V0OiAnQXJyYXlCdWZmZXInLCBwcm90bzogdHJ1ZSwgdW5zYWZlOiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9TTElDRSB9LCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgaWYgKG5hdGl2ZUFycmF5QnVmZmVyU2xpY2UgJiYgZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuYXRpdmVBcnJheUJ1ZmZlclNsaWNlKGFuT2JqZWN0KHRoaXMpLCBzdGFydCk7IC8vIEZGIGZpeFxuICAgIH1cbiAgICB2YXIgbGVuZ3RoID0gYW5PYmplY3QodGhpcykuYnl0ZUxlbmd0aDtcbiAgICB2YXIgZmlyc3QgPSB0b0Fic29sdXRlSW5kZXgoc3RhcnQsIGxlbmd0aCk7XG4gICAgdmFyIGZpbiA9IHRvQWJzb2x1dGVJbmRleChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZCwgbGVuZ3RoKTtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IChzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgQXJyYXlCdWZmZXIpKSh0b0xlbmd0aChmaW4gLSBmaXJzdCkpO1xuICAgIHZhciB2aWV3U291cmNlID0gbmV3IERhdGFWaWV3KHRoaXMpO1xuICAgIHZhciB2aWV3VGFyZ2V0ID0gbmV3IERhdGFWaWV3KHJlc3VsdCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoZmlyc3QgPCBmaW4pIHtcbiAgICAgIHNldFVpbnQ4KHZpZXdUYXJnZXQsIGluZGV4KyssIGdldFVpbnQ4KHZpZXdTb3VyY2UsIGZpcnN0KyspKTtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS1idWZmZXIuc2xpY2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmF0LmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanNcIik7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanNcIik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuYXRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgYXQ6IGZ1bmN0aW9uIGF0KGluZGV4KSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIHJlbGF0aXZlSW5kZXggPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgICB2YXIgayA9IHJlbGF0aXZlSW5kZXggPj0gMCA/IHJlbGF0aXZlSW5kZXggOiBsZW4gKyByZWxhdGl2ZUluZGV4O1xuICAgIHJldHVybiAoayA8IDAgfHwgayA+PSBsZW4pID8gdW5kZWZpbmVkIDogT1trXTtcbiAgfVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2F0Jyk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmF0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWxhc3QtaW5kZXguanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgJGZpbmRMYXN0SW5kZXggPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24tZnJvbS1sYXN0LmpzXCIpLmZpbmRMYXN0SW5kZXgpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzXCIpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRMYXN0SW5kZXhgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZGxhc3RpbmRleFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUgfSwge1xuICBmaW5kTGFzdEluZGV4OiBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kTGFzdEluZGV4KHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2ZpbmRMYXN0SW5kZXgnKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1sYXN0LWluZGV4LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWxhc3QuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgJGZpbmRMYXN0ID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24tZnJvbS1sYXN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdC5qc1wiKS5maW5kTGFzdCk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanNcIik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmluZExhc3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZGxhc3RcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmluZExhc3Q6IGZ1bmN0aW9uIGZpbmRMYXN0KGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kTGFzdCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdmaW5kTGFzdCcpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLWxhc3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGZsYXR0ZW5JbnRvQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmxhdHRlbi1pbnRvLWFycmF5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmxhdHRlbi1pbnRvLWFycmF5LmpzXCIpO1xudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qc1wiKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qc1wiKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mbGF0TWFwYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZsYXRtYXBcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgZmxhdE1hcDogZnVuY3Rpb24gZmxhdE1hcChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcyk7XG4gICAgdmFyIHNvdXJjZUxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHZhciBBO1xuICAgIGFDYWxsYWJsZShjYWxsYmFja2ZuKTtcbiAgICBBID0gYXJyYXlTcGVjaWVzQ3JlYXRlKE8sIDApO1xuICAgIEEubGVuZ3RoID0gZmxhdHRlbkludG9BcnJheShBLCBPLCBPLCBzb3VyY2VMZW4sIDAsIDEsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZsYXQtbWFwLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciAkaW5jbHVkZXMgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanNcIikuaW5jbHVkZXMpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanNcIik7XG5cbi8vIEZGOTkrIGJ1Z1xudmFyIEJST0tFTl9PTl9TUEFSU0UgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1wcm90b3R5cGUtaW5jbHVkZXMgLS0gZGV0ZWN0aW9uXG4gIHJldHVybiAhQXJyYXkoMSkuaW5jbHVkZXMoKTtcbn0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCUk9LRU5fT05fU1BBUlNFIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2luY2x1ZGVzJyk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyI6KChtb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG52YXIgZGVmaW5lUHJvcGVydHkgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpLmYpO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWRlZmluZS5qc1wiKTtcbnZhciBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0LmpzXCIpO1xudmFyIElTX1BVUkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtcHVyZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGluZGV4LCBmYWxzZSk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh0YXJnZXRbaW5kZXhdLCBmYWxzZSk7XG4gIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KFtpbmRleCwgdGFyZ2V0W2luZGV4XV0sIGZhbHNlKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZXVubWFwcGVkYXJndW1lbnRzb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxudmFyIHZhbHVlcyA9IEl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG4vLyBWOCB+IENocm9tZSA0NS0gYnVnXG5pZiAoIUlTX1BVUkUgJiYgREVTQ1JJUFRPUlMgJiYgdmFsdWVzLm5hbWUgIT09ICd2YWx1ZXMnKSB0cnkge1xuICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZXMsICduYW1lJywgeyB2YWx1ZTogJ3ZhbHVlcycgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xudmFyIHNldEFycmF5TGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXNldC1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zZXQtbGVuZ3RoLmpzXCIpO1xudmFyIGRvZXNOb3RFeGNlZWRTYWZlSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb2VzLW5vdC1leGNlZWQtc2FmZS1pbnRlZ2VyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9lcy1ub3QtZXhjZWVkLXNhZmUtaW50ZWdlci5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG52YXIgSU5DT1JSRUNUX1RPX0xFTkdUSCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFtdLnB1c2guY2FsbCh7IGxlbmd0aDogMHgxMDAwMDAwMDAgfSwgMSkgIT09IDQyOTQ5NjcyOTc7XG59KTtcblxuLy8gVjggYW5kIFNhZmFyaSA8PSAxNS40LCBGRiA8IDIzIHRocm93cyBJbnRlcm5hbEVycm9yXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xMjY4MVxudmFyIHByb3BlckVycm9yT25Ob25Xcml0YWJsZUxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoW10sICdsZW5ndGgnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KS5wdXNoKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yO1xuICB9XG59O1xuXG52YXIgRk9SQ0VEID0gSU5DT1JSRUNUX1RPX0xFTkdUSCB8fCAhcHJvcGVyRXJyb3JPbk5vbldyaXRhYmxlTGVuZ3RoKCk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucHVzaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5wdXNoXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgcHVzaDogZnVuY3Rpb24gcHVzaChpdGVtKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgbGVuID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBkb2VzTm90RXhjZWVkU2FmZUludGVnZXIobGVuICsgYXJnQ291bnQpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJnQ291bnQ7IGkrKykge1xuICAgICAgT1tsZW5dID0gYXJndW1lbnRzW2ldO1xuICAgICAgbGVuKys7XG4gICAgfVxuICAgIHNldEFycmF5TGVuZ3RoKE8sIGxlbik7XG4gICAgcmV0dXJuIGxlbjtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNvcnQuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcbnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanNcIik7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qc1wiKTtcbnZhciBkZWxldGVQcm9wZXJ0eU9yVGhyb3cgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVsZXRlLXByb3BlcnR5LW9yLXRocm93ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVsZXRlLXByb3BlcnR5LW9yLXRocm93LmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGludGVybmFsU29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc29ydC5qc1wiKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzXCIpO1xudmFyIEZGID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1mZi12ZXJzaW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24uanNcIik7XG52YXIgSUVfT1JfRURHRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pZS1vci1lZGdlLmpzXCIpO1xudmFyIFY4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanNcIik7XG52YXIgV0VCS0lUID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS13ZWJraXQtdmVyc2lvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS13ZWJraXQtdmVyc2lvbi5qc1wiKTtcblxudmFyIHRlc3QgPSBbXTtcbnZhciBuYXRpdmVTb3J0ID0gdW5jdXJyeVRoaXModGVzdC5zb3J0KTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXModGVzdC5wdXNoKTtcblxuLy8gSUU4LVxudmFyIEZBSUxTX09OX1VOREVGSU5FRCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdGVzdC5zb3J0KHVuZGVmaW5lZCk7XG59KTtcbi8vIFY4IGJ1Z1xudmFyIEZBSUxTX09OX05VTEwgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHRlc3Quc29ydChudWxsKTtcbn0pO1xuLy8gT2xkIFdlYktpdFxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdzb3J0Jyk7XG5cbnZhciBTVEFCTEVfU09SVCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGZlYXR1cmUgZGV0ZWN0aW9uIGNhbiBiZSB0b28gc2xvdywgc28gY2hlY2sgZW5naW5lcyB2ZXJzaW9uc1xuICBpZiAoVjgpIHJldHVybiBWOCA8IDcwO1xuICBpZiAoRkYgJiYgRkYgPiAzKSByZXR1cm47XG4gIGlmIChJRV9PUl9FREdFKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFdFQktJVCkgcmV0dXJuIFdFQktJVCA8IDYwMztcblxuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjb2RlLCBjaHIsIHZhbHVlLCBpbmRleDtcblxuICAvLyBnZW5lcmF0ZSBhbiBhcnJheSB3aXRoIG1vcmUgNTEyIGVsZW1lbnRzIChDaGFrcmEgYW5kIG9sZCBWOCBmYWlscyBvbmx5IGluIHRoaXMgY2FzZSlcbiAgZm9yIChjb2RlID0gNjU7IGNvZGUgPCA3NjsgY29kZSsrKSB7XG4gICAgY2hyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTtcblxuICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgY2FzZSA2NjogY2FzZSA2OTogY2FzZSA3MDogY2FzZSA3MjogdmFsdWUgPSAzOyBicmVhaztcbiAgICAgIGNhc2UgNjg6IGNhc2UgNzE6IHZhbHVlID0gNDsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB2YWx1ZSA9IDI7XG4gICAgfVxuXG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDc7IGluZGV4KyspIHtcbiAgICAgIHRlc3QucHVzaCh7IGs6IGNociArIGluZGV4LCB2OiB2YWx1ZSB9KTtcbiAgICB9XG4gIH1cblxuICB0ZXN0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGIudiAtIGEudjsgfSk7XG5cbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgdGVzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjaHIgPSB0ZXN0W2luZGV4XS5rLmNoYXJBdCgwKTtcbiAgICBpZiAocmVzdWx0LmNoYXJBdChyZXN1bHQubGVuZ3RoIC0gMSkgIT09IGNocikgcmVzdWx0ICs9IGNocjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgIT09ICdER0JFRkhBQ0lKSyc7XG59KTtcblxudmFyIEZPUkNFRCA9IEZBSUxTX09OX1VOREVGSU5FRCB8fCAhRkFJTFNfT05fTlVMTCB8fCAhU1RSSUNUX01FVEhPRCB8fCAhU1RBQkxFX1NPUlQ7XG5cbnZhciBnZXRTb3J0Q29tcGFyZSA9IGZ1bmN0aW9uIChjb21wYXJlZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgaWYgKHkgPT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xO1xuICAgIGlmICh4ID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xuICAgIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgcmV0dXJuICtjb21wYXJlZm4oeCwgeSkgfHwgMDtcbiAgICByZXR1cm4gdG9TdHJpbmcoeCkgPiB0b1N0cmluZyh5KSA/IDEgOiAtMTtcbiAgfTtcbn07XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb3J0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBzb3J0OiBmdW5jdGlvbiBzb3J0KGNvbXBhcmVmbikge1xuICAgIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgYUNhbGxhYmxlKGNvbXBhcmVmbik7XG5cbiAgICB2YXIgYXJyYXkgPSB0b09iamVjdCh0aGlzKTtcblxuICAgIGlmIChTVEFCTEVfU09SVCkgcmV0dXJuIGNvbXBhcmVmbiA9PT0gdW5kZWZpbmVkID8gbmF0aXZlU29ydChhcnJheSkgOiBuYXRpdmVTb3J0KGFycmF5LCBjb21wYXJlZm4pO1xuXG4gICAgdmFyIGl0ZW1zID0gW107XG4gICAgdmFyIGFycmF5TGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoYXJyYXkpO1xuICAgIHZhciBpdGVtc0xlbmd0aCwgaW5kZXg7XG5cbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheUxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGluZGV4IGluIGFycmF5KSBwdXNoKGl0ZW1zLCBhcnJheVtpbmRleF0pO1xuICAgIH1cblxuICAgIGludGVybmFsU29ydChpdGVtcywgZ2V0U29ydENvbXBhcmUoY29tcGFyZWZuKSk7XG5cbiAgICBpdGVtc0xlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKGl0ZW1zKTtcbiAgICBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAoaW5kZXggPCBpdGVtc0xlbmd0aCkgYXJyYXlbaW5kZXhdID0gaXRlbXNbaW5kZXgrK107XG4gICAgd2hpbGUgKGluZGV4IDwgYXJyYXlMZW5ndGgpIGRlbGV0ZVByb3BlcnR5T3JUaHJvdyhhcnJheSwgaW5kZXgrKyk7XG5cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS51bnNjb3BhYmxlcy5mbGF0LW1hcC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIHRoaXMgbWV0aG9kIHdhcyBhZGRlZCB0byB1bnNjb3BhYmxlcyBhZnRlciBpbXBsZW1lbnRhdGlvblxuLy8gaW4gcG9wdWxhciBlbmdpbmVzLCBzbyBpdCdzIG1vdmVkIHRvIGEgc2VwYXJhdGUgbW9kdWxlXG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanNcIik7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2ZsYXRNYXAnKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkudW5zY29wYWJsZXMuZmxhdC1tYXAuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LndpdGguanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgYXJyYXlXaXRoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXdpdGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS13aXRoLmpzXCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xuXG52YXIgJEFycmF5ID0gQXJyYXk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUud2l0aGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS53aXRoXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gICd3aXRoJzogZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgIHJldHVybiBhcnJheVdpdGgodG9JbmRleGVkT2JqZWN0KHRoaXMpLCAkQXJyYXksIGluZGV4LCB2YWx1ZSk7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS53aXRoLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5lcnJvci5jYXVzZS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBmdW5jdGlvbnMgYC5sZW5ndGhgICovXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBhcHBseSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzXCIpO1xudmFyIHdyYXBFcnJvckNvbnN0cnVjdG9yV2l0aENhdXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dyYXAtZXJyb3ItY29uc3RydWN0b3Itd2l0aC1jYXVzZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dyYXAtZXJyb3ItY29uc3RydWN0b3Itd2l0aC1jYXVzZS5qc1wiKTtcblxudmFyIFdFQl9BU1NFTUJMWSA9ICdXZWJBc3NlbWJseSc7XG52YXIgV2ViQXNzZW1ibHkgPSBnbG9iYWxbV0VCX0FTU0VNQkxZXTtcblxudmFyIEZPUkNFRCA9IEVycm9yKCdlJywgeyBjYXVzZTogNyB9KS5jYXVzZSAhPT0gNztcblxudmFyIGV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyID0gZnVuY3Rpb24gKEVSUk9SX05BTUUsIHdyYXBwZXIpIHtcbiAgdmFyIE8gPSB7fTtcbiAgT1tFUlJPUl9OQU1FXSA9IHdyYXBFcnJvckNvbnN0cnVjdG9yV2l0aENhdXNlKEVSUk9SX05BTUUsIHdyYXBwZXIsIEZPUkNFRCk7XG4gICQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBhcml0eTogMSwgZm9yY2VkOiBGT1JDRUQgfSwgTyk7XG59O1xuXG52YXIgZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlciA9IGZ1bmN0aW9uIChFUlJPUl9OQU1FLCB3cmFwcGVyKSB7XG4gIGlmIChXZWJBc3NlbWJseSAmJiBXZWJBc3NlbWJseVtFUlJPUl9OQU1FXSkge1xuICAgIHZhciBPID0ge307XG4gICAgT1tFUlJPUl9OQU1FXSA9IHdyYXBFcnJvckNvbnN0cnVjdG9yV2l0aENhdXNlKFdFQl9BU1NFTUJMWSArICcuJyArIEVSUk9SX05BTUUsIHdyYXBwZXIsIEZPUkNFRCk7XG4gICAgJCh7IHRhcmdldDogV0VCX0FTU0VNQkxZLCBzdGF0OiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgYXJpdHk6IDEsIGZvcmNlZDogRk9SQ0VEIH0sIE8pO1xuICB9XG59O1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW5hdGl2ZWVycm9yXG5leHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcignRXJyb3InLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gRXJyb3IobWVzc2FnZSkgeyByZXR1cm4gYXBwbHkoaW5pdCwgdGhpcywgYXJndW1lbnRzKTsgfTtcbn0pO1xuZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoJ0V2YWxFcnJvcicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBFdmFsRXJyb3IobWVzc2FnZSkgeyByZXR1cm4gYXBwbHkoaW5pdCwgdGhpcywgYXJndW1lbnRzKTsgfTtcbn0pO1xuZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoJ1JhbmdlRXJyb3InLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gUmFuZ2VFcnJvcihtZXNzYWdlKSB7IHJldHVybiBhcHBseShpbml0LCB0aGlzLCBhcmd1bWVudHMpOyB9O1xufSk7XG5leHBvcnRHbG9iYWxFcnJvckNhdXNlV3JhcHBlcignUmVmZXJlbmNlRXJyb3InLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gUmVmZXJlbmNlRXJyb3IobWVzc2FnZSkgeyByZXR1cm4gYXBwbHkoaW5pdCwgdGhpcywgYXJndW1lbnRzKTsgfTtcbn0pO1xuZXhwb3J0R2xvYmFsRXJyb3JDYXVzZVdyYXBwZXIoJ1N5bnRheEVycm9yJywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFN5bnRheEVycm9yKG1lc3NhZ2UpIHsgcmV0dXJuIGFwcGx5KGluaXQsIHRoaXMsIGFyZ3VtZW50cyk7IH07XG59KTtcbmV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCdUeXBlRXJyb3InLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gVHlwZUVycm9yKG1lc3NhZ2UpIHsgcmV0dXJuIGFwcGx5KGluaXQsIHRoaXMsIGFyZ3VtZW50cyk7IH07XG59KTtcbmV4cG9ydEdsb2JhbEVycm9yQ2F1c2VXcmFwcGVyKCdVUklFcnJvcicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVUklFcnJvcihtZXNzYWdlKSB7IHJldHVybiBhcHBseShpbml0LCB0aGlzLCBhcmd1bWVudHMpOyB9O1xufSk7XG5leHBvcnRXZWJBc3NlbWJseUVycm9yQ2F1c2VXcmFwcGVyKCdDb21waWxlRXJyb3InLCBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gQ29tcGlsZUVycm9yKG1lc3NhZ2UpIHsgcmV0dXJuIGFwcGx5KGluaXQsIHRoaXMsIGFyZ3VtZW50cyk7IH07XG59KTtcbmV4cG9ydFdlYkFzc2VtYmx5RXJyb3JDYXVzZVdyYXBwZXIoJ0xpbmtFcnJvcicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBMaW5rRXJyb3IobWVzc2FnZSkgeyByZXR1cm4gYXBwbHkoaW5pdCwgdGhpcywgYXJndW1lbnRzKTsgfTtcbn0pO1xuZXhwb3J0V2ViQXNzZW1ibHlFcnJvckNhdXNlV3JhcHBlcignUnVudGltZUVycm9yJywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFJ1bnRpbWVFcnJvcihtZXNzYWdlKSB7IHJldHVybiBhcHBseShpbml0LCB0aGlzLCBhcmd1bWVudHMpOyB9O1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmVycm9yLmNhdXNlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5nbG9iYWwtdGhpcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xuXG4vLyBgZ2xvYmFsVGhpc2Agb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdsb2JhbHRoaXNcbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogZ2xvYmFsLmdsb2JhbFRoaXMgIT09IGdsb2JhbCB9LCB7XG4gIGdsb2JhbFRoaXM6IGdsb2JhbFxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmdsb2JhbC10aGlzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBhcHBseSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGlzU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qc1wiKTtcbnZhciBhcnJheVNsaWNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2UuanNcIik7XG52YXIgZ2V0UmVwbGFjZXJGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtanNvbi1yZXBsYWNlci1mdW5jdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1qc29uLXJlcGxhY2VyLWZ1bmN0aW9uLmpzXCIpO1xudmFyIE5BVElWRV9TWU1CT0wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanNcIik7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRzdHJpbmdpZnkgPSBnZXRCdWlsdEluKCdKU09OJywgJ3N0cmluZ2lmeScpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIG51bWJlclRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxudmFyIHRlc3RlciA9IC9bXFx1RDgwMC1cXHVERkZGXS9nO1xudmFyIGxvdyA9IC9eW1xcdUQ4MDAtXFx1REJGRl0kLztcbnZhciBoaSA9IC9eW1xcdURDMDAtXFx1REZGRl0kLztcblxudmFyIFdST05HX1NZTUJPTFNfQ09OVkVSU0lPTiA9ICFOQVRJVkVfU1lNQk9MIHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIHJldHVybiAkc3RyaW5naWZ5KFtzeW1ib2xdKSAhPSAnW251bGxdJ1xuICAgIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAgIHx8ICRzdHJpbmdpZnkoeyBhOiBzeW1ib2wgfSkgIT0gJ3t9J1xuICAgIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gICAgfHwgJHN0cmluZ2lmeShPYmplY3Qoc3ltYm9sKSkgIT0gJ3t9Jztcbn0pO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC13ZWxsLWZvcm1lZC1zdHJpbmdpZnlcbnZhciBJTExfRk9STUVEX1VOSUNPREUgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAkc3RyaW5naWZ5KCdcXHVERjA2XFx1RDgzNCcpICE9PSAnXCJcXFxcdWRmMDZcXFxcdWQ4MzRcIidcbiAgICB8fCAkc3RyaW5naWZ5KCdcXHVERUFEJykgIT09ICdcIlxcXFx1ZGVhZFwiJztcbn0pO1xuXG52YXIgc3RyaW5naWZ5V2l0aFN5bWJvbHNGaXggPSBmdW5jdGlvbiAoaXQsIHJlcGxhY2VyKSB7XG4gIHZhciBhcmdzID0gYXJyYXlTbGljZShhcmd1bWVudHMpO1xuICB2YXIgJHJlcGxhY2VyID0gZ2V0UmVwbGFjZXJGdW5jdGlvbihyZXBsYWNlcik7XG4gIGlmICghaXNDYWxsYWJsZSgkcmVwbGFjZXIpICYmIChpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICBhcmdzWzFdID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAvLyBzb21lIG9sZCBpbXBsZW1lbnRhdGlvbnMgKGxpa2UgV2ViS2l0KSBjb3VsZCBwYXNzIG51bWJlcnMgYXMga2V5c1xuICAgIGlmIChpc0NhbGxhYmxlKCRyZXBsYWNlcikpIHZhbHVlID0gY2FsbCgkcmVwbGFjZXIsIHRoaXMsICRTdHJpbmcoa2V5KSwgdmFsdWUpO1xuICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIH07XG4gIHJldHVybiBhcHBseSgkc3RyaW5naWZ5LCBudWxsLCBhcmdzKTtcbn07XG5cbnZhciBmaXhJbGxGb3JtZWQgPSBmdW5jdGlvbiAobWF0Y2gsIG9mZnNldCwgc3RyaW5nKSB7XG4gIHZhciBwcmV2ID0gY2hhckF0KHN0cmluZywgb2Zmc2V0IC0gMSk7XG4gIHZhciBuZXh0ID0gY2hhckF0KHN0cmluZywgb2Zmc2V0ICsgMSk7XG4gIGlmICgoZXhlYyhsb3csIG1hdGNoKSAmJiAhZXhlYyhoaSwgbmV4dCkpIHx8IChleGVjKGhpLCBtYXRjaCkgJiYgIWV4ZWMobG93LCBwcmV2KSkpIHtcbiAgICByZXR1cm4gJ1xcXFx1JyArIG51bWJlclRvU3RyaW5nKGNoYXJDb2RlQXQobWF0Y2gsIDApLCAxNik7XG4gIH0gcmV0dXJuIG1hdGNoO1xufTtcblxuaWYgKCRzdHJpbmdpZnkpIHtcbiAgLy8gYEpTT04uc3RyaW5naWZ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1qc29uLnN0cmluZ2lmeVxuICAkKHsgdGFyZ2V0OiAnSlNPTicsIHN0YXQ6IHRydWUsIGFyaXR5OiAzLCBmb3JjZWQ6IFdST05HX1NZTUJPTFNfQ09OVkVSU0lPTiB8fCBJTExfRk9STUVEX1VOSUNPREUgfSwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gICAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgICAgdmFyIGFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cyk7XG4gICAgICB2YXIgcmVzdWx0ID0gYXBwbHkoV1JPTkdfU1lNQk9MU19DT05WRVJTSU9OID8gc3RyaW5naWZ5V2l0aFN5bWJvbHNGaXggOiAkc3RyaW5naWZ5LCBudWxsLCBhcmdzKTtcbiAgICAgIHJldHVybiBJTExfRk9STUVEX1VOSUNPREUgJiYgdHlwZW9mIHJlc3VsdCA9PSAnc3RyaW5nJyA/IHJlcGxhY2UocmVzdWx0LCB0ZXN0ZXIsIGZpeElsbEZvcm1lZCkgOiByZXN1bHQ7XG4gICAgfVxuICB9KTtcbn1cblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm1hdGguaHlwb3QuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLWh5cG90IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgJGh5cG90ID0gTWF0aC5oeXBvdDtcbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuXG4vLyBDaHJvbWUgNzcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05NTQ2XG52YXIgRk9SQ0VEID0gISEkaHlwb3QgJiYgJGh5cG90KEluZmluaXR5LCBOYU4pICE9PSBJbmZpbml0eTtcblxuLy8gYE1hdGguaHlwb3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLmh5cG90XG4kKHsgdGFyZ2V0OiAnTWF0aCcsIHN0YXQ6IHRydWUsIGFyaXR5OiAyLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIGh5cG90OiBmdW5jdGlvbiBoeXBvdCh2YWx1ZTEsIHZhbHVlMikge1xuICAgIHZhciBzdW0gPSAwO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGxhcmcgPSAwO1xuICAgIHZhciBhcmcsIGRpdjtcbiAgICB3aGlsZSAoaSA8IGFMZW4pIHtcbiAgICAgIGFyZyA9IGFicyhhcmd1bWVudHNbaSsrXSk7XG4gICAgICBpZiAobGFyZyA8IGFyZykge1xuICAgICAgICBkaXYgPSBsYXJnIC8gYXJnO1xuICAgICAgICBzdW0gPSBzdW0gKiBkaXYgKiBkaXYgKyAxO1xuICAgICAgICBsYXJnID0gYXJnO1xuICAgICAgfSBlbHNlIGlmIChhcmcgPiAwKSB7XG4gICAgICAgIGRpdiA9IGFyZyAvIGxhcmc7XG4gICAgICAgIHN1bSArPSBkaXYgKiBkaXY7XG4gICAgICB9IGVsc2Ugc3VtICs9IGFyZztcbiAgICB9XG4gICAgcmV0dXJuIGxhcmcgPT09IEluZmluaXR5ID8gSW5maW5pdHkgOiBsYXJnICogc3FydChzdW0pO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubWF0aC5oeXBvdC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMubnVtYmVyLnRvLWZpeGVkLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xudmFyIHRoaXNOdW1iZXJWYWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90aGlzLW51bWJlci12YWx1ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RoaXMtbnVtYmVyLXZhbHVlLmpzXCIpO1xudmFyICRyZXBlYXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLXJlcGVhdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1yZXBlYXQuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciByZXBlYXQgPSB1bmN1cnJ5VGhpcygkcmVwZWF0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciBuYXRpdmVUb0ZpeGVkID0gdW5jdXJyeVRoaXMoMS4wLnRvRml4ZWQpO1xuXG52YXIgcG93ID0gZnVuY3Rpb24gKHgsIG4sIGFjYykge1xuICByZXR1cm4gbiA9PT0gMCA/IGFjYyA6IG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYyk7XG59O1xuXG52YXIgbG9nID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIG4gPSAwO1xuICB2YXIgeDIgPSB4O1xuICB3aGlsZSAoeDIgPj0gNDA5Nikge1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSAoeDIgPj0gMikge1xuICAgIG4gKz0gMTtcbiAgICB4MiAvPSAyO1xuICB9IHJldHVybiBuO1xufTtcblxudmFyIG11bHRpcGx5ID0gZnVuY3Rpb24gKGRhdGEsIG4sIGMpIHtcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjMiA9IGM7XG4gIHdoaWxlICgrK2luZGV4IDwgNikge1xuICAgIGMyICs9IG4gKiBkYXRhW2luZGV4XTtcbiAgICBkYXRhW2luZGV4XSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xuXG52YXIgZGl2aWRlID0gZnVuY3Rpb24gKGRhdGEsIG4pIHtcbiAgdmFyIGluZGV4ID0gNjtcbiAgdmFyIGMgPSAwO1xuICB3aGlsZSAoLS1pbmRleCA+PSAwKSB7XG4gICAgYyArPSBkYXRhW2luZGV4XTtcbiAgICBkYXRhW2luZGV4XSA9IGZsb29yKGMgLyBuKTtcbiAgICBjID0gKGMgJSBuKSAqIDFlNztcbiAgfVxufTtcblxudmFyIGRhdGFUb1N0cmluZyA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHZhciBpbmRleCA9IDY7XG4gIHZhciBzID0gJyc7XG4gIHdoaWxlICgtLWluZGV4ID49IDApIHtcbiAgICBpZiAocyAhPT0gJycgfHwgaW5kZXggPT09IDAgfHwgZGF0YVtpbmRleF0gIT09IDApIHtcbiAgICAgIHZhciB0ID0gJFN0cmluZyhkYXRhW2luZGV4XSk7XG4gICAgICBzID0gcyA9PT0gJycgPyB0IDogcyArIHJlcGVhdCgnMCcsIDcgLSB0Lmxlbmd0aCkgKyB0O1xuICAgIH1cbiAgfSByZXR1cm4gcztcbn07XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuYXRpdmVUb0ZpeGVkKDAuMDAwMDgsIDMpICE9PSAnMC4wMDAnIHx8XG4gICAgbmF0aXZlVG9GaXhlZCgwLjksIDApICE9PSAnMScgfHxcbiAgICBuYXRpdmVUb0ZpeGVkKDEuMjU1LCAyKSAhPT0gJzEuMjUnIHx8XG4gICAgbmF0aXZlVG9GaXhlZCgxMDAwMDAwMDAwMDAwMDAwMTI4LjAsIDApICE9PSAnMTAwMDAwMDAwMDAwMDAwMDEyOCc7XG59KSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICBuYXRpdmVUb0ZpeGVkKHt9KTtcbn0pO1xuXG4vLyBgTnVtYmVyLnByb3RvdHlwZS50b0ZpeGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbnVtYmVyLnByb3RvdHlwZS50b2ZpeGVkXG4kKHsgdGFyZ2V0OiAnTnVtYmVyJywgcHJvdG86IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cykge1xuICAgIHZhciBudW1iZXIgPSB0aGlzTnVtYmVyVmFsdWUodGhpcyk7XG4gICAgdmFyIGZyYWN0RGlnaXRzID0gdG9JbnRlZ2VyT3JJbmZpbml0eShmcmFjdGlvbkRpZ2l0cyk7XG4gICAgdmFyIGRhdGEgPSBbMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgdmFyIHNpZ24gPSAnJztcbiAgICB2YXIgcmVzdWx0ID0gJzAnO1xuICAgIHZhciBlLCB6LCBqLCBrO1xuXG4gICAgLy8gVE9ETzogRVMyMDE4IGluY3JlYXNlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRvIDEwMCwgbmVlZCB0byBpbXByb3ZlIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgIGlmIChmcmFjdERpZ2l0cyA8IDAgfHwgZnJhY3REaWdpdHMgPiAyMCkgdGhyb3cgJFJhbmdlRXJyb3IoJ0luY29ycmVjdCBmcmFjdGlvbiBkaWdpdHMnKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChudW1iZXIgIT0gbnVtYmVyKSByZXR1cm4gJ05hTic7XG4gICAgaWYgKG51bWJlciA8PSAtMWUyMSB8fCBudW1iZXIgPj0gMWUyMSkgcmV0dXJuICRTdHJpbmcobnVtYmVyKTtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgc2lnbiA9ICctJztcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPiAxZS0yMSkge1xuICAgICAgZSA9IGxvZyhudW1iZXIgKiBwb3coMiwgNjksIDEpKSAtIDY5O1xuICAgICAgeiA9IGUgPCAwID8gbnVtYmVyICogcG93KDIsIC1lLCAxKSA6IG51bWJlciAvIHBvdygyLCBlLCAxKTtcbiAgICAgIHogKj0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgIGUgPSA1MiAtIGU7XG4gICAgICBpZiAoZSA+IDApIHtcbiAgICAgICAgbXVsdGlwbHkoZGF0YSwgMCwgeik7XG4gICAgICAgIGogPSBmcmFjdERpZ2l0cztcbiAgICAgICAgd2hpbGUgKGogPj0gNykge1xuICAgICAgICAgIG11bHRpcGx5KGRhdGEsIDFlNywgMCk7XG4gICAgICAgICAgaiAtPSA3O1xuICAgICAgICB9XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIHBvdygxMCwgaiwgMSksIDApO1xuICAgICAgICBqID0gZSAtIDE7XG4gICAgICAgIHdoaWxlIChqID49IDIzKSB7XG4gICAgICAgICAgZGl2aWRlKGRhdGEsIDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKGRhdGEsIDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIDEsIDEpO1xuICAgICAgICBkaXZpZGUoZGF0YSwgMik7XG4gICAgICAgIHJlc3VsdCA9IGRhdGFUb1N0cmluZyhkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpcGx5KGRhdGEsIDAsIHopO1xuICAgICAgICBtdWx0aXBseShkYXRhLCAxIDw8IC1lLCAwKTtcbiAgICAgICAgcmVzdWx0ID0gZGF0YVRvU3RyaW5nKGRhdGEpICsgcmVwZWF0KCcwJywgZnJhY3REaWdpdHMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZnJhY3REaWdpdHMgPiAwKSB7XG4gICAgICBrID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgIHJlc3VsdCA9IHNpZ24gKyAoayA8PSBmcmFjdERpZ2l0c1xuICAgICAgICA/ICcwLicgKyByZXBlYXQoJzAnLCBmcmFjdERpZ2l0cyAtIGspICsgcmVzdWx0XG4gICAgICAgIDogc3RyaW5nU2xpY2UocmVzdWx0LCAwLCBrIC0gZnJhY3REaWdpdHMpICsgJy4nICsgc3RyaW5nU2xpY2UocmVzdWx0LCBrIC0gZnJhY3REaWdpdHMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gc2lnbiArIHJlc3VsdDtcbiAgICB9IHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5hc3NpZ24uanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtYXNzaWduLmpzXCIpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgYXJpdHk6IDIsIGZvcmNlZDogT2JqZWN0LmFzc2lnbiAhPT0gYXNzaWduIH0sIHtcbiAgYXNzaWduOiBhc3NpZ25cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuaGFzLW93bi5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG5cbi8vIGBPYmplY3QuaGFzT3duYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0Lmhhc293blxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUgfSwge1xuICBoYXNPd246IGhhc093blxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5oYXMtb3duLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wYXJzZS1mbG9hdC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciAkcGFyc2VGbG9hdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9udW1iZXItcGFyc2UtZmxvYXQuanNcIik7XG5cbi8vIGBwYXJzZUZsb2F0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcGFyc2VmbG9hdC1zdHJpbmdcbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogcGFyc2VGbG9hdCAhPSAkcGFyc2VGbG9hdCB9LCB7XG4gIHBhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtZmxvYXQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnBhcnNlLWludC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciAkcGFyc2VJbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbnVtYmVyLXBhcnNlLWludCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL251bWJlci1wYXJzZS1pbnQuanNcIik7XG5cbi8vIGBwYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXBhcnNlaW50LXN0cmluZy1yYWRpeFxuJCh7IGdsb2JhbDogdHJ1ZSwgZm9yY2VkOiBwYXJzZUludCAhPSAkcGFyc2VJbnQgfSwge1xuICBwYXJzZUludDogJHBhcnNlSW50XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzXCIpO1xudmFyIHBlcmZvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcGVyZm9ybSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanNcIik7XG52YXIgaXRlcmF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qc1wiKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uLmpzXCIpO1xuXG4vLyBgUHJvbWlzZS5hbGxTZXR0bGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxzZXR0bGVkXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBhbGxTZXR0bGVkOiBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwocHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdmdWxmaWxsZWQnLCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAncmVqZWN0ZWQnLCByZWFzb246IGVycm9yIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1wiKTtcbnZhciBwZXJmb3JtID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3BlcmZvcm0gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wZXJmb3JtLmpzXCIpO1xudmFyIGl0ZXJhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXRlcmF0ZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUuanNcIik7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbi5qc1wiKTtcblxuLy8gYFByb21pc2UuYWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbGwuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2guanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKS5DT05TVFJVQ1RPUik7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanNcIik7XG52YXIgZ2V0QnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanNcIik7XG52YXIgaXNDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jYWxsYWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5jYXRjaFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiwgcmVhbDogdHJ1ZSB9LCB7XG4gICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjY2F0Y2hgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnY2F0Y2gnXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2NhdGNoJywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNhdGNoLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIElTX1BVUkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtcHVyZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanNcIik7XG52YXIgSVNfTk9ERSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgY2FsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanNcIik7XG52YXIgc2V0U3BlY2llcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtc3BlY2llcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzXCIpO1xudmFyIGFDYWxsYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jYWxsYWJsZS5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGFuSW5zdGFuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qc1wiKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanNcIik7XG52YXIgdGFzayA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdGFzayAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Rhc2suanNcIikuc2V0KTtcbnZhciBtaWNyb3Rhc2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbWljcm90YXNrICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWljcm90YXNrLmpzXCIpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzXCIpO1xudmFyIHBlcmZvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcGVyZm9ybSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanNcIik7XG52YXIgUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcXVldWUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9xdWV1ZS5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanNcIik7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanNcIik7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanNcIik7XG5cbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLkNPTlNUUlVDVE9SO1xudmFyIE5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5SRUpFQ1RJT05fRVZFTlQ7XG52YXIgTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkcgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uU1VCQ0xBU1NJTkc7XG52YXIgZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihQUk9NSVNFKTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvciA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcjtcbnZhciBQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG52YXIgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHk7XG5cbnZhciBESVNQQVRDSF9FVkVOVCA9ICEhKGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICYmIGdsb2JhbC5kaXNwYXRjaEV2ZW50KTtcbnZhciBVTkhBTkRMRURfUkVKRUNUSU9OID0gJ3VuaGFuZGxlZHJlamVjdGlvbic7XG52YXIgUkVKRUNUSU9OX0hBTkRMRUQgPSAncmVqZWN0aW9uaGFuZGxlZCc7XG52YXIgUEVORElORyA9IDA7XG52YXIgRlVMRklMTEVEID0gMTtcbnZhciBSRUpFQ1RFRCA9IDI7XG52YXIgSEFORExFRCA9IDE7XG52YXIgVU5IQU5ETEVEID0gMjtcblxudmFyIEludGVybmFsLCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgUHJvbWlzZVdyYXBwZXIsIG5hdGl2ZVRoZW47XG5cbi8vIGhlbHBlcnNcbnZhciBpc1RoZW5hYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciB0aGVuO1xuICByZXR1cm4gaXNPYmplY3QoaXQpICYmIGlzQ2FsbGFibGUodGhlbiA9IGl0LnRoZW4pID8gdGhlbiA6IGZhbHNlO1xufTtcblxudmFyIGNhbGxSZWFjdGlvbiA9IGZ1bmN0aW9uIChyZWFjdGlvbiwgc3RhdGUpIHtcbiAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gIHZhciBvayA9IHN0YXRlLnN0YXRlID09IEZVTEZJTExFRDtcbiAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gIHRyeSB7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgIHN0YXRlLnJlamVjdGlvbiA9IEhBTkRMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgIGNhbGwodGhlbiwgcmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufTtcblxudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChzdGF0ZSwgaXNSZWplY3QpIHtcbiAgaWYgKHN0YXRlLm5vdGlmaWVkKSByZXR1cm47XG4gIHN0YXRlLm5vdGlmaWVkID0gdHJ1ZTtcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVhY3Rpb25zID0gc3RhdGUucmVhY3Rpb25zO1xuICAgIHZhciByZWFjdGlvbjtcbiAgICB3aGlsZSAocmVhY3Rpb24gPSByZWFjdGlvbnMuZ2V0KCkpIHtcbiAgICAgIGNhbGxSZWFjdGlvbihyZWFjdGlvbiwgc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5ub3RpZmllZCA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhc3RhdGUucmVqZWN0aW9uKSBvblVuaGFuZGxlZChzdGF0ZSk7XG4gIH0pO1xufTtcblxudmFyIGRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAobmFtZSwgcHJvbWlzZSwgcmVhc29uKSB7XG4gIHZhciBldmVudCwgaGFuZGxlcjtcbiAgaWYgKERJU1BBVENIX0VWRU5UKSB7XG4gICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldmVudC5wcm9taXNlID0gcHJvbWlzZTtcbiAgICBldmVudC5yZWFzb24gPSByZWFzb247XG4gICAgZXZlbnQuaW5pdEV2ZW50KG5hbWUsIGZhbHNlLCB0cnVlKTtcbiAgICBnbG9iYWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH0gZWxzZSBldmVudCA9IHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiByZWFzb24gfTtcbiAgaWYgKCFOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgSVNfVU5IQU5ETEVEID0gaXNVbmhhbmRsZWQoc3RhdGUpO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKElTX1VOSEFORExFRCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChJU19OT0RFKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFVOSEFORExFRF9SRUpFQ1RJT04sIHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHN0YXRlLnJlamVjdGlvbiA9IElTX05PREUgfHwgaXNVbmhhbmRsZWQoc3RhdGUpID8gVU5IQU5ETEVEIDogSEFORExFRDtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gIH0pO1xufTtcblxudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5yZWplY3Rpb24gIT09IEhBTkRMRUQgJiYgIXN0YXRlLnBhcmVudDtcbn07XG5cbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjYWxsKHRhc2ssIGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIGlmIChJU19OT0RFKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChSRUpFQ1RJT05fSEFORExFRCwgcHJvbWlzZSwgc3RhdGUudmFsdWUpO1xuICB9KTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gKGZuLCBzdGF0ZSwgdW53cmFwKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmbihzdGF0ZSwgdmFsdWUsIHVud3JhcCk7XG4gIH07XG59O1xuXG52YXIgaW50ZXJuYWxSZWplY3QgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICBzdGF0ZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICBub3RpZnkoc3RhdGUsIHRydWUpO1xufTtcblxudmFyIGludGVybmFsUmVzb2x2ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHRyeSB7XG4gICAgaWYgKHN0YXRlLmZhY2FkZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIHZhciB0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSk7XG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBkb25lOiBmYWxzZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNhbGwodGhlbiwgdmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUikge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICBQcm9taXNlQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICBhQ2FsbGFibGUoZXhlY3V0b3IpO1xuICAgIGNhbGwoSW50ZXJuYWwsIHRoaXMpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpLCBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpbnRlcm5hbFJlamVjdChzdGF0ZSwgZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICBQcm9taXNlUHJvdG90eXBlID0gUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIHR5cGU6IFBST01JU0UsXG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIG5vdGlmaWVkOiBmYWxzZSxcbiAgICAgIHBhcmVudDogZmFsc2UsXG4gICAgICByZWFjdGlvbnM6IG5ldyBRdWV1ZSgpLFxuICAgICAgcmVqZWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0YXRlOiBQRU5ESU5HLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIGBQcm9taXNlLnByb3RvdHlwZS50aGVuYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS50aGVuXG4gIEludGVybmFsLnByb3RvdHlwZSA9IGRlZmluZUJ1aWx0SW4oUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIFByb21pc2VDb25zdHJ1Y3RvcikpO1xuICAgIHN0YXRlLnBhcmVudCA9IHRydWU7XG4gICAgcmVhY3Rpb24ub2sgPSBpc0NhbGxhYmxlKG9uRnVsZmlsbGVkKSA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICByZWFjdGlvbi5mYWlsID0gaXNDYWxsYWJsZShvblJlamVjdGVkKSAmJiBvblJlamVjdGVkO1xuICAgIHJlYWN0aW9uLmRvbWFpbiA9IElTX05PREUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc3RhdGUuc3RhdGUgPT0gUEVORElORykgc3RhdGUucmVhY3Rpb25zLmFkZChyZWFjdGlvbik7XG4gICAgZWxzZSBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbFJlYWN0aW9uKHJlYWN0aW9uLCBzdGF0ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gIH0pO1xuXG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUocHJvbWlzZSk7XG4gICAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbiAgICB0aGlzLnJlc29sdmUgPSBiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpO1xuICAgIHRoaXMucmVqZWN0ID0gYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpO1xuICB9O1xuXG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikgJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIG5hdGl2ZVRoZW4gPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLnRoZW47XG5cbiAgICBpZiAoIU5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HKSB7XG4gICAgICAvLyBtYWtlIGBQcm9taXNlI3RoZW5gIHJldHVybiBhIHBvbHlmaWxsZWQgYFByb21pc2VgIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBjYWxsKG5hdGl2ZVRoZW4sIHRoYXQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY0MFxuICAgICAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLy8gbWFrZSBgLmNvbnN0cnVjdG9yID09PSBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxuICAgIC8vIG1ha2UgYGluc3RhbmNlb2YgUHJvbWlzZWAgd29yayBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgc2V0UHJvdG90eXBlT2YoTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgfVxuICB9XG59XG5cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHkuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3Rvci5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGdldEJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanNcIik7XG52YXIgcHJvbWlzZVJlc29sdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBTYWZhcmkgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4MjlcbnZhciBOT05fR0VORVJJQyA9ICEhTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdGhlbmFibGUgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddLmNhbGwoeyB0aGVuOiBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLmZpbmFsbHlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgcHJvdG86IHRydWUsIHJlYWw6IHRydWUsIGZvcmNlZDogTk9OX0dFTkVSSUMgfSwge1xuICAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgICB2YXIgQyA9IHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBnZXRCdWlsdEluKCdQcm9taXNlJykpO1xuICAgIHZhciBpc0Z1bmN0aW9uID0gaXNDYWxsYWJsZShvbkZpbmFsbHkpO1xuICAgIHJldHVybiB0aGlzLnRoZW4oXG4gICAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseSxcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoZSkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICAgIH0gOiBvbkZpbmFsbHlcbiAgICApO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjZmluYWxseWAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG5pZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpKSB7XG4gIHZhciBtZXRob2QgPSBnZXRCdWlsdEluKCdQcm9taXNlJykucHJvdG90eXBlWydmaW5hbGx5J107XG4gIGlmIChOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2ZpbmFsbHknLCBtZXRob2QsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICB9XG59XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3Mgc3BsaXQgdG8gbW9kdWxlcyBsaXN0ZWQgYmVsb3dcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yLmpzXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC5qc1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvZXMucHJvbWlzZS5jYXRjaCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNhdGNoLmpzXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJhY2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlLmpzXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdC5qc1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmVzb2x2ZS5qc1wiKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzXCIpO1xudmFyIHBlcmZvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcGVyZm9ybSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanNcIik7XG52YXIgaXRlcmF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qc1wiKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uLmpzXCIpO1xuXG4vLyBgUHJvbWlzZS5yYWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yYWNlXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgY2FsbCgkcHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmFjZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZWplY3QuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgY2FsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qc1wiKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1wiKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKS5DT05TVFJVQ1RPUik7XG5cbi8vIGBQcm9taXNlLnJlamVjdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVqZWN0XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIGNhbGwoY2FwYWJpbGl0eS5yZWplY3QsIHVuZGVmaW5lZCwgcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmVqZWN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlc29sdmUuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZ2V0QnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3Rvci5qc1wiKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKS5DT05TVFJVQ1RPUik7XG52YXIgcHJvbWlzZVJlc29sdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzXCIpO1xuXG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKTtcbnZhciBDSEVDS19XUkFQUEVSID0gSVNfUFVSRSAmJiAhRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1I7XG5cbi8vIGBQcm9taXNlLnJlc29sdmVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlc29sdmVcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIHx8IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKENIRUNLX1dSQVBQRVIgJiYgdGhpcyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yV3JhcHBlciA/IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA6IHRoaXMsIHgpO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWZsZWN0LnRvLXN0cmluZy10YWcuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHsgUmVmbGVjdDoge30gfSk7XG5cbi8vIFJlZmxlY3RbQEB0b1N0cmluZ1RhZ10gcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVmbGVjdC1AQHRvc3RyaW5ndGFnXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuUmVmbGVjdCwgJ1JlZmxlY3QnLCB0cnVlKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVmbGVjdC50by1zdHJpbmctdGFnLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1mb3JjZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcIik7XG52YXIgaW5oZXJpdElmUmVxdWlyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW5oZXJpdC1pZi1yZXF1aXJlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQuanNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzXCIpLmYpO1xudmFyIGlzUHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgaXNSZWdFeHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtcmVnZXhwICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcmVnZXhwLmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBnZXRSZWdFeHBGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZ2V0LWZsYWdzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWdldC1mbGFncy5qc1wiKTtcbnZhciBzdGlja3lIZWxwZXJzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1zdGlja3ktaGVscGVycy5qc1wiKTtcbnZhciBwcm94eUFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3Byb3h5LWFjY2Vzc29yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJveHktYWNjZXNzb3IuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIikuZW5mb3JjZSk7XG52YXIgc2V0U3BlY2llcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtc3BlY2llcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1zcGVjaWVzLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xudmFyIFVOU1VQUE9SVEVEX0RPVF9BTEwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLWRvdC1hbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbC5qc1wiKTtcbnZhciBVTlNVUFBPUlRFRF9OQ0cgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLXVuc3VwcG9ydGVkLW5jZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1uY2cuanNcIik7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcbnZhciBOYXRpdmVSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IE5hdGl2ZVJlZ0V4cC5wcm90b3R5cGU7XG52YXIgU3ludGF4RXJyb3IgPSBnbG9iYWwuU3ludGF4RXJyb3I7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKFJlZ0V4cFByb3RvdHlwZS5leGVjKTtcbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzdHJpbmdJbmRleE9mID0gdW5jdXJyeVRoaXMoJycuaW5kZXhPZik7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG4vLyBUT0RPOiBVc2Ugb25seSBwcm9wZXIgUmVnRXhwSWRlbnRpZmllck5hbWVcbnZhciBJU19OQ0cgPSAvXlxcPzxbXlxcc1xcZCEjJSYqKzw9PkBeXVteXFxzISMlJiorPD0+QF5dKj4vO1xudmFyIHJlMSA9IC9hL2c7XG52YXIgcmUyID0gL2EvZztcblxuLy8gXCJuZXdcIiBzaG91bGQgY3JlYXRlIGEgbmV3IG9iamVjdCwgb2xkIHdlYmtpdCBidWdcbnZhciBDT1JSRUNUX05FVyA9IG5ldyBOYXRpdmVSZWdFeHAocmUxKSAhPT0gcmUxO1xuXG52YXIgTUlTU0VEX1NUSUNLWSA9IHN0aWNreUhlbHBlcnMuTUlTU0VEX1NUSUNLWTtcbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5VTlNVUFBPUlRFRF9ZO1xuXG52YXIgQkFTRV9GT1JDRUQgPSBERVNDUklQVE9SUyAmJlxuICAoIUNPUlJFQ1RfTkVXIHx8IE1JU1NFRF9TVElDS1kgfHwgVU5TVVBQT1JURURfRE9UX0FMTCB8fCBVTlNVUFBPUlRFRF9OQ0cgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHJlMltNQVRDSF0gPSBmYWxzZTtcbiAgICAvLyBSZWdFeHAgY29uc3RydWN0b3IgY2FuIGFsdGVyIGZsYWdzIGFuZCBJc1JlZ0V4cCB3b3JrcyBjb3JyZWN0IHdpdGggQEBtYXRjaFxuICAgIHJldHVybiBOYXRpdmVSZWdFeHAocmUxKSAhPSByZTEgfHwgTmF0aXZlUmVnRXhwKHJlMikgPT0gcmUyIHx8IE5hdGl2ZVJlZ0V4cChyZTEsICdpJykgIT0gJy9hL2knO1xuICB9KSk7XG5cbnZhciBoYW5kbGVEb3RBbGwgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBicmFja2V0cyA9IGZhbHNlO1xuICB2YXIgY2hyO1xuICBmb3IgKDsgaW5kZXggPD0gbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY2hyID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChjaHIgPT09ICdcXFxcJykge1xuICAgICAgcmVzdWx0ICs9IGNociArIGNoYXJBdChzdHJpbmcsICsraW5kZXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghYnJhY2tldHMgJiYgY2hyID09PSAnLicpIHtcbiAgICAgIHJlc3VsdCArPSAnW1xcXFxzXFxcXFNdJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNociA9PT0gJ1snKSB7XG4gICAgICAgIGJyYWNrZXRzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnXScpIHtcbiAgICAgICAgYnJhY2tldHMgPSBmYWxzZTtcbiAgICAgIH0gcmVzdWx0ICs9IGNocjtcbiAgICB9XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbnZhciBoYW5kbGVOQ0cgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBuYW1lZCA9IFtdO1xuICB2YXIgbmFtZXMgPSB7fTtcbiAgdmFyIGJyYWNrZXRzID0gZmFsc2U7XG4gIHZhciBuY2cgPSBmYWxzZTtcbiAgdmFyIGdyb3VwaWQgPSAwO1xuICB2YXIgZ3JvdXBuYW1lID0gJyc7XG4gIHZhciBjaHI7XG4gIGZvciAoOyBpbmRleCA8PSBsZW5ndGg7IGluZGV4KyspIHtcbiAgICBjaHIgPSBjaGFyQXQoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGNociA9PT0gJ1xcXFwnKSB7XG4gICAgICBjaHIgPSBjaHIgKyBjaGFyQXQoc3RyaW5nLCArK2luZGV4KTtcbiAgICB9IGVsc2UgaWYgKGNociA9PT0gJ10nKSB7XG4gICAgICBicmFja2V0cyA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWJyYWNrZXRzKSBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgY2hyID09PSAnWyc6XG4gICAgICAgIGJyYWNrZXRzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNociA9PT0gJygnOlxuICAgICAgICBpZiAoZXhlYyhJU19OQ0csIHN0cmluZ1NsaWNlKHN0cmluZywgaW5kZXggKyAxKSkpIHtcbiAgICAgICAgICBpbmRleCArPSAyO1xuICAgICAgICAgIG5jZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ICs9IGNocjtcbiAgICAgICAgZ3JvdXBpZCsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIGNhc2UgY2hyID09PSAnPicgJiYgbmNnOlxuICAgICAgICBpZiAoZ3JvdXBuYW1lID09PSAnJyB8fCBoYXNPd24obmFtZXMsIGdyb3VwbmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ0ludmFsaWQgY2FwdHVyZSBncm91cCBuYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgbmFtZXNbZ3JvdXBuYW1lXSA9IHRydWU7XG4gICAgICAgIG5hbWVkW25hbWVkLmxlbmd0aF0gPSBbZ3JvdXBuYW1lLCBncm91cGlkXTtcbiAgICAgICAgbmNnID0gZmFsc2U7XG4gICAgICAgIGdyb3VwbmFtZSA9ICcnO1xuICAgICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKG5jZykgZ3JvdXBuYW1lICs9IGNocjtcbiAgICBlbHNlIHJlc3VsdCArPSBjaHI7XG4gIH0gcmV0dXJuIFtyZXN1bHQsIG5hbWVkXTtcbn07XG5cbi8vIGBSZWdFeHBgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC1jb25zdHJ1Y3RvclxuaWYgKGlzRm9yY2VkKCdSZWdFeHAnLCBCQVNFX0ZPUkNFRCkpIHtcbiAgdmFyIFJlZ0V4cFdyYXBwZXIgPSBmdW5jdGlvbiBSZWdFeHAocGF0dGVybiwgZmxhZ3MpIHtcbiAgICB2YXIgdGhpc0lzUmVnRXhwID0gaXNQcm90b3R5cGVPZihSZWdFeHBQcm90b3R5cGUsIHRoaXMpO1xuICAgIHZhciBwYXR0ZXJuSXNSZWdFeHAgPSBpc1JlZ0V4cChwYXR0ZXJuKTtcbiAgICB2YXIgZmxhZ3NBcmVVbmRlZmluZWQgPSBmbGFncyA9PT0gdW5kZWZpbmVkO1xuICAgIHZhciBncm91cHMgPSBbXTtcbiAgICB2YXIgcmF3UGF0dGVybiA9IHBhdHRlcm47XG4gICAgdmFyIHJhd0ZsYWdzLCBkb3RBbGwsIHN0aWNreSwgaGFuZGxlZCwgcmVzdWx0LCBzdGF0ZTtcblxuICAgIGlmICghdGhpc0lzUmVnRXhwICYmIHBhdHRlcm5Jc1JlZ0V4cCAmJiBmbGFnc0FyZVVuZGVmaW5lZCAmJiBwYXR0ZXJuLmNvbnN0cnVjdG9yID09PSBSZWdFeHBXcmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGF0dGVybjtcbiAgICB9XG5cbiAgICBpZiAocGF0dGVybklzUmVnRXhwIHx8IGlzUHJvdG90eXBlT2YoUmVnRXhwUHJvdG90eXBlLCBwYXR0ZXJuKSkge1xuICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc291cmNlO1xuICAgICAgaWYgKGZsYWdzQXJlVW5kZWZpbmVkKSBmbGFncyA9IGdldFJlZ0V4cEZsYWdzKHJhd1BhdHRlcm4pO1xuICAgIH1cblxuICAgIHBhdHRlcm4gPSBwYXR0ZXJuID09PSB1bmRlZmluZWQgPyAnJyA6IHRvU3RyaW5nKHBhdHRlcm4pO1xuICAgIGZsYWdzID0gZmxhZ3MgPT09IHVuZGVmaW5lZCA/ICcnIDogdG9TdHJpbmcoZmxhZ3MpO1xuICAgIHJhd1BhdHRlcm4gPSBwYXR0ZXJuO1xuXG4gICAgaWYgKFVOU1VQUE9SVEVEX0RPVF9BTEwgJiYgJ2RvdEFsbCcgaW4gcmUxKSB7XG4gICAgICBkb3RBbGwgPSAhIWZsYWdzICYmIHN0cmluZ0luZGV4T2YoZmxhZ3MsICdzJykgPiAtMTtcbiAgICAgIGlmIChkb3RBbGwpIGZsYWdzID0gcmVwbGFjZShmbGFncywgL3MvZywgJycpO1xuICAgIH1cblxuICAgIHJhd0ZsYWdzID0gZmxhZ3M7XG5cbiAgICBpZiAoTUlTU0VEX1NUSUNLWSAmJiAnc3RpY2t5JyBpbiByZTEpIHtcbiAgICAgIHN0aWNreSA9ICEhZmxhZ3MgJiYgc3RyaW5nSW5kZXhPZihmbGFncywgJ3knKSA+IC0xO1xuICAgICAgaWYgKHN0aWNreSAmJiBVTlNVUFBPUlRFRF9ZKSBmbGFncyA9IHJlcGxhY2UoZmxhZ3MsIC95L2csICcnKTtcbiAgICB9XG5cbiAgICBpZiAoVU5TVVBQT1JURURfTkNHKSB7XG4gICAgICBoYW5kbGVkID0gaGFuZGxlTkNHKHBhdHRlcm4pO1xuICAgICAgcGF0dGVybiA9IGhhbmRsZWRbMF07XG4gICAgICBncm91cHMgPSBoYW5kbGVkWzFdO1xuICAgIH1cblxuICAgIHJlc3VsdCA9IGluaGVyaXRJZlJlcXVpcmVkKE5hdGl2ZVJlZ0V4cChwYXR0ZXJuLCBmbGFncyksIHRoaXNJc1JlZ0V4cCA/IHRoaXMgOiBSZWdFeHBQcm90b3R5cGUsIFJlZ0V4cFdyYXBwZXIpO1xuXG4gICAgaWYgKGRvdEFsbCB8fCBzdGlja3kgfHwgZ3JvdXBzLmxlbmd0aCkge1xuICAgICAgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZShyZXN1bHQpO1xuICAgICAgaWYgKGRvdEFsbCkge1xuICAgICAgICBzdGF0ZS5kb3RBbGwgPSB0cnVlO1xuICAgICAgICBzdGF0ZS5yYXcgPSBSZWdFeHBXcmFwcGVyKGhhbmRsZURvdEFsbChwYXR0ZXJuKSwgcmF3RmxhZ3MpO1xuICAgICAgfVxuICAgICAgaWYgKHN0aWNreSkgc3RhdGUuc3RpY2t5ID0gdHJ1ZTtcbiAgICAgIGlmIChncm91cHMubGVuZ3RoKSBzdGF0ZS5ncm91cHMgPSBncm91cHM7XG4gICAgfVxuXG4gICAgaWYgKHBhdHRlcm4gIT09IHJhd1BhdHRlcm4pIHRyeSB7XG4gICAgICAvLyBmYWlscyBpbiBvbGQgZW5naW5lcywgYnV0IHdlIGhhdmUgbm8gYWx0ZXJuYXRpdmVzIGZvciB1bnN1cHBvcnRlZCByZWdleCBzeW50YXhcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShyZXN1bHQsICdzb3VyY2UnLCByYXdQYXR0ZXJuID09PSAnJyA/ICcoPzopJyA6IHJhd1BhdHRlcm4pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgZm9yICh2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoTmF0aXZlUmVnRXhwKSwgaW5kZXggPSAwOyBrZXlzLmxlbmd0aCA+IGluZGV4Oykge1xuICAgIHByb3h5QWNjZXNzb3IoUmVnRXhwV3JhcHBlciwgTmF0aXZlUmVnRXhwLCBrZXlzW2luZGV4KytdKTtcbiAgfVxuXG4gIFJlZ0V4cFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlZ0V4cFdyYXBwZXI7XG4gIFJlZ0V4cFdyYXBwZXIucHJvdG90eXBlID0gUmVnRXhwUHJvdG90eXBlO1xuICBkZWZpbmVCdWlsdEluKGdsb2JhbCwgJ1JlZ0V4cCcsIFJlZ0V4cFdyYXBwZXIsIHsgY29uc3RydWN0b3I6IHRydWUgfSk7XG59XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC1AQHNwZWNpZXNcbnNldFNwZWNpZXMoJ1JlZ0V4cCcpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuY29uc3RydWN0b3IuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5kb3QtYWxsLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgVU5TVVBQT1JURURfRE9UX0FMTCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtdW5zdXBwb3J0ZWQtZG90LWFsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC11bnN1cHBvcnRlZC1kb3QtYWxsLmpzXCIpO1xudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzXCIpO1xudmFyIGdldEludGVybmFsU3RhdGUgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIikuZ2V0KTtcblxudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsYCBnZXR0ZXJcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0LXJlZ2V4cC5wcm90b3R5cGUuZG90YWxsXG5pZiAoREVTQ1JJUFRPUlMgJiYgVU5TVVBQT1JURURfRE9UX0FMTCkge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZG90QWxsJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGRvdEFsbCgpIHtcbiAgICAgIGlmICh0aGlzID09PSBSZWdFeHBQcm90b3R5cGUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAvLyBXZSBjYW4ndCB1c2UgSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IgYmVjYXVzZVxuICAgICAgLy8gd2UgZG9uJ3QgYWRkIG1ldGFkYXRhIGZvciByZWdleHBzIGNyZWF0ZWQgYnkgYSBsaXRlcmFsLlxuICAgICAgaWYgKGNsYXNzb2YodGhpcykgPT09ICdSZWdFeHAnKSB7XG4gICAgICAgIHJldHVybiAhIWdldEludGVybmFsU3RhdGUodGhpcykuZG90QWxsO1xuICAgICAgfVxuICAgICAgdGhyb3cgJFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBSZWdFeHAgcmVxdWlyZWQnKTtcbiAgICB9XG4gIH0pO1xufVxuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZG90LWFsbC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZXhlYyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZXhlYyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzXCIpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5leGVjYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS5leGVjXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5mbGFncy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcbnZhciByZWdFeHBGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZmxhZ3MgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZmxhZ3MuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ2QnKSAtPiAvLi9kIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBJTkRJQ0VTX1NVUFBPUlQgPSB0cnVlO1xuICB0cnkge1xuICAgIFJlZ0V4cCgnLicsICdkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgSU5ESUNFU19TVVBQT1JUID0gZmFsc2U7XG4gIH1cblxuICB2YXIgTyA9IHt9O1xuICAvLyBtb2Rlcm4gVjggYnVnXG4gIHZhciBjYWxscyA9ICcnO1xuICB2YXIgZXhwZWN0ZWQgPSBJTkRJQ0VTX1NVUFBPUlQgPyAnZGdpbXN5JyA6ICdnaW1zeSc7XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChrZXksIGNocikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxscyArPSBjaHI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IH0pO1xuICB9O1xuXG4gIHZhciBwYWlycyA9IHtcbiAgICBkb3RBbGw6ICdzJyxcbiAgICBnbG9iYWw6ICdnJyxcbiAgICBpZ25vcmVDYXNlOiAnaScsXG4gICAgbXVsdGlsaW5lOiAnbScsXG4gICAgc3RpY2t5OiAneSdcbiAgfTtcblxuICBpZiAoSU5ESUNFU19TVVBQT1JUKSBwYWlycy5oYXNJbmRpY2VzID0gJ2QnO1xuXG4gIGZvciAodmFyIGtleSBpbiBwYWlycykgYWRkR2V0dGVyKGtleSwgcGFpcnNba2V5XSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHBQcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKE8pO1xuXG4gIHJldHVybiByZXN1bHQgIT09IGV4cGVjdGVkIHx8IGNhbGxzICE9PSBleHBlY3RlZDtcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5mbGFncy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIG1vdmVkIHRvIGVudHJ5IHBvaW50c1xuX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vbW9kdWxlcy9lcy5yZWdleHAuZXhlYyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiKTtcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xuXG52YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBleGVjQ2FsbGVkID0gZmFsc2U7XG4gIHZhciByZSA9IC9bYWNdLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBleGVjQ2FsbGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gLy4vLmV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHJlLnRlc3QoJ2FiYycpID09PSB0cnVlICYmIGV4ZWNDYWxsZWQ7XG59KCk7XG5cbnZhciBuYXRpdmVUZXN0ID0gLy4vLnRlc3Q7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLnRlc3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLnRlc3RcbiQoeyB0YXJnZXQ6ICdSZWdFeHAnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhREVMRUdBVEVTX1RPX0VYRUMgfSwge1xuICB0ZXN0OiBmdW5jdGlvbiAoUykge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHN0cmluZyA9IHRvU3RyaW5nKFMpO1xuICAgIHZhciBleGVjID0gUi5leGVjO1xuICAgIGlmICghaXNDYWxsYWJsZShleGVjKSkgcmV0dXJuIGNhbGwobmF0aXZlVGVzdCwgUiwgc3RyaW5nKTtcbiAgICB2YXIgcmVzdWx0ID0gY2FsbChleGVjLCBSLCBzdHJpbmcpO1xuICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICBhbk9iamVjdChyZXN1bHQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzXCIpLlBST1BFUik7XG52YXIgZGVmaW5lQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyICR0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBnZXRSZWdFeHBGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZ2V0LWZsYWdzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWdldC1mbGFncy5qc1wiKTtcblxudmFyIFRPX1NUUklORyA9ICd0b1N0cmluZyc7XG52YXIgUmVnRXhwUHJvdG90eXBlID0gUmVnRXhwLnByb3RvdHlwZTtcbnZhciBuYXRpdmVUb1N0cmluZyA9IFJlZ0V4cFByb3RvdHlwZVtUT19TVFJJTkddO1xuXG52YXIgTk9UX0dFTkVSSUMgPSBmYWlscyhmdW5jdGlvbiAoKSB7IHJldHVybiBuYXRpdmVUb1N0cmluZy5jYWxsKHsgc291cmNlOiAnYScsIGZsYWdzOiAnYicgfSkgIT0gJy9hL2InOyB9KTtcbi8vIEZGNDQtIFJlZ0V4cCN0b1N0cmluZyBoYXMgYSB3cm9uZyBuYW1lXG52YXIgSU5DT1JSRUNUX05BTUUgPSBQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBuYXRpdmVUb1N0cmluZy5uYW1lICE9IFRPX1NUUklORztcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoTk9UX0dFTkVSSUMgfHwgSU5DT1JSRUNUX05BTUUpIHtcbiAgZGVmaW5lQnVpbHRJbihSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHBhdHRlcm4gPSAkdG9TdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciBmbGFncyA9ICR0b1N0cmluZyhnZXRSZWdFeHBGbGFncyhSKSk7XG4gICAgcmV0dXJuICcvJyArIHBhdHRlcm4gKyAnLycgKyBmbGFncztcbiAgfSwgeyB1bnNhZmU6IHRydWUgfSk7XG59XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5hdC1hbHRlcm5hdGl2ZS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIik7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1zdHJpbmctcHJvdG90eXBlLWF0IC0tIHNhZmVcbiAgcmV0dXJuICftoYLtvrcnLmF0KC0yKSAhPT0gJ1xcdUQ4NDInO1xufSk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5hdFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIGF0OiBmdW5jdGlvbiBhdChpbmRleCkge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgdmFyIGxlbiA9IFMubGVuZ3RoO1xuICAgIHZhciByZWxhdGl2ZUluZGV4ID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gICAgdmFyIGsgPSByZWxhdGl2ZUluZGV4ID49IDAgPyByZWxhdGl2ZUluZGV4IDogbGVuICsgcmVsYXRpdmVJbmRleDtcbiAgICByZXR1cm4gKGsgPCAwIHx8IGsgPj0gbGVuKSA/IHVuZGVmaW5lZCA6IGNoYXJBdChTLCBrKTtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5hdC1hbHRlcm5hdGl2ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmVuZHMtd2l0aC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpLmYpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgbm90QVJlZ0V4cCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9ub3QtYS1yZWdleHAgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3QtYS1yZWdleHAuanNcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIik7XG52YXIgY29ycmVjdElzUmVnRXhwTG9naWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYy5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS1lbmRzd2l0aCAtLSBzYWZlXG52YXIgbmF0aXZlRW5kc1dpdGggPSB1bmN1cnJ5VGhpcygnJy5lbmRzV2l0aCk7XG52YXIgc2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgbWluID0gTWF0aC5taW47XG5cbnZhciBDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyA9IGNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdlbmRzV2l0aCcpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvcHVsbC83MDJcbnZhciBNRE5fUE9MWUZJTExfQlVHID0gIUlTX1BVUkUgJiYgIUNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDICYmICEhZnVuY3Rpb24gKCkge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAnZW5kc1dpdGgnKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGU7XG59KCk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5lbmRzd2l0aFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFNRE5fUE9MWUZJTExfQlVHICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyB9LCB7XG4gIGVuZHNXaXRoOiBmdW5jdGlvbiBlbmRzV2l0aChzZWFyY2hTdHJpbmcgLyogLCBlbmRQb3NpdGlvbiA9IEBsZW5ndGggKi8pIHtcbiAgICB2YXIgdGhhdCA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgIG5vdEFSZWdFeHAoc2VhcmNoU3RyaW5nKTtcbiAgICB2YXIgZW5kUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbGVuID0gdGhhdC5sZW5ndGg7XG4gICAgdmFyIGVuZCA9IGVuZFBvc2l0aW9uID09PSB1bmRlZmluZWQgPyBsZW4gOiBtaW4odG9MZW5ndGgoZW5kUG9zaXRpb24pLCBsZW4pO1xuICAgIHZhciBzZWFyY2ggPSB0b1N0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiBuYXRpdmVFbmRzV2l0aFxuICAgICAgPyBuYXRpdmVFbmRzV2l0aCh0aGF0LCBzZWFyY2gsIGVuZClcbiAgICAgIDogc2xpY2UodGhhdCwgZW5kIC0gc2VhcmNoLmxlbmd0aCwgZW5kKSA9PT0gc2VhcmNoO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmVuZHMtd2l0aC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBub3RBUmVnRXhwID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25vdC1hLXJlZ2V4cCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25vdC1hLXJlZ2V4cC5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgY29ycmVjdElzUmVnRXhwTG9naWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYy5qc1wiKTtcblxudmFyIHN0cmluZ0luZGV4T2YgPSB1bmN1cnJ5VGhpcygnJy5pbmRleE9mKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogIWNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdpbmNsdWRlcycpIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5zdHJpbmdJbmRleE9mKFxuICAgICAgdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSksXG4gICAgICB0b1N0cmluZyhub3RBUmVnRXhwKHNlYXJjaFN0cmluZykpLFxuICAgICAgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgY2hhckF0ID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qc1wiKS5jaGFyQXQpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lLmpzXCIpO1xudmFyIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QuanNcIik7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogdG9TdHJpbmcoaXRlcmF0ZWQpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xuLy8gYCVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHBvaW50LCBmYWxzZSk7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgY2FsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbC5qc1wiKTtcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qc1wiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzXCIpO1xudmFyIGdldE1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qc1wiKTtcbnZhciBhZHZhbmNlU3RyaW5nSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleC5qc1wiKTtcbnZhciByZWdFeHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanNcIik7XG5cbi8vIEBAbWF0Y2ggbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdtYXRjaCcsIGZ1bmN0aW9uIChNQVRDSCwgbmF0aXZlTWF0Y2gsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLm1hdGNoYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUubWF0Y2hcbiAgICBmdW5jdGlvbiBtYXRjaChyZWdleHApIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciBtYXRjaGVyID0gaXNOdWxsT3JVbmRlZmluZWQocmVnZXhwKSA/IHVuZGVmaW5lZCA6IGdldE1ldGhvZChyZWdleHAsIE1BVENIKTtcbiAgICAgIHJldHVybiBtYXRjaGVyID8gY2FsbChtYXRjaGVyLCByZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXSh0b1N0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAbWF0Y2hcbiAgICBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgICB2YXIgcnggPSBhbk9iamVjdCh0aGlzKTtcbiAgICAgIHZhciBTID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWF0Y2gsIHJ4LCBTKTtcblxuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICBpZiAoIXJ4Lmdsb2JhbCkgcmV0dXJuIHJlZ0V4cEV4ZWMocngsIFMpO1xuXG4gICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciBBID0gW107XG4gICAgICB2YXIgbiA9IDA7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgd2hpbGUgKChyZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKSkgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIG1hdGNoU3RyID0gdG9TdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgQVtuXSA9IG1hdGNoU3RyO1xuICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICcnKSByeC5sYXN0SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgdG9MZW5ndGgocngubGFzdEluZGV4KSwgZnVsbFVuaWNvZGUpO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgICByZXR1cm4gbiA9PT0gMCA/IG51bGwgOiBBO1xuICAgIH1cbiAgXTtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLWFsbC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qc1wiKTtcbnZhciBpc1JlZ0V4cCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1yZWdleHAgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIGdldE1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LW1ldGhvZC5qc1wiKTtcbnZhciBnZXRSZWdFeHBGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtZ2V0LWZsYWdzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWdldC1mbGFncy5qc1wiKTtcbnZhciBnZXRTdWJzdGl0dXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1zdWJzdGl0dXRpb24uanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcblxudmFyIFJFUExBQ0UgPSB3ZWxsS25vd25TeW1ib2woJ3JlcGxhY2UnKTtcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIGluZGV4T2YgPSB1bmN1cnJ5VGhpcygnJy5pbmRleE9mKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbnZhciBzdHJpbmdJbmRleE9mID0gZnVuY3Rpb24gKHN0cmluZywgc2VhcmNoVmFsdWUsIGZyb21JbmRleCkge1xuICBpZiAoZnJvbUluZGV4ID4gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIC0xO1xuICBpZiAoc2VhcmNoVmFsdWUgPT09ICcnKSByZXR1cm4gZnJvbUluZGV4O1xuICByZXR1cm4gaW5kZXhPZihzdHJpbmcsIHNlYXJjaFZhbHVlLCBmcm9tSW5kZXgpO1xufTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZWFsbFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlIH0sIHtcbiAgcmVwbGFjZUFsbDogZnVuY3Rpb24gcmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgIHZhciBJU19SRUdfRVhQLCBmbGFncywgcmVwbGFjZXIsIHN0cmluZywgc2VhcmNoU3RyaW5nLCBmdW5jdGlvbmFsUmVwbGFjZSwgc2VhcmNoTGVuZ3RoLCBhZHZhbmNlQnksIHJlcGxhY2VtZW50O1xuICAgIHZhciBwb3NpdGlvbiA9IDA7XG4gICAgdmFyIGVuZE9mTGFzdE1hdGNoID0gMDtcbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChzZWFyY2hWYWx1ZSkpIHtcbiAgICAgIElTX1JFR19FWFAgPSBpc1JlZ0V4cChzZWFyY2hWYWx1ZSk7XG4gICAgICBpZiAoSVNfUkVHX0VYUCkge1xuICAgICAgICBmbGFncyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2V0UmVnRXhwRmxhZ3Moc2VhcmNoVmFsdWUpKSk7XG4gICAgICAgIGlmICghfmluZGV4T2YoZmxhZ3MsICdnJykpIHRocm93ICRUeXBlRXJyb3IoJ2AucmVwbGFjZUFsbGAgZG9lcyBub3QgYWxsb3cgbm9uLWdsb2JhbCByZWdleGVzJyk7XG4gICAgICB9XG4gICAgICByZXBsYWNlciA9IGdldE1ldGhvZChzZWFyY2hWYWx1ZSwgUkVQTEFDRSk7XG4gICAgICBpZiAocmVwbGFjZXIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGwocmVwbGFjZXIsIHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChJU19QVVJFICYmIElTX1JFR19FWFApIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UodG9TdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdHJpbmcgPSB0b1N0cmluZyhPKTtcbiAgICBzZWFyY2hTdHJpbmcgPSB0b1N0cmluZyhzZWFyY2hWYWx1ZSk7XG4gICAgZnVuY3Rpb25hbFJlcGxhY2UgPSBpc0NhbGxhYmxlKHJlcGxhY2VWYWx1ZSk7XG4gICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gdG9TdHJpbmcocmVwbGFjZVZhbHVlKTtcbiAgICBzZWFyY2hMZW5ndGggPSBzZWFyY2hTdHJpbmcubGVuZ3RoO1xuICAgIGFkdmFuY2VCeSA9IG1heCgxLCBzZWFyY2hMZW5ndGgpO1xuICAgIHBvc2l0aW9uID0gc3RyaW5nSW5kZXhPZihzdHJpbmcsIHNlYXJjaFN0cmluZywgMCk7XG4gICAgd2hpbGUgKHBvc2l0aW9uICE9PSAtMSkge1xuICAgICAgcmVwbGFjZW1lbnQgPSBmdW5jdGlvbmFsUmVwbGFjZVxuICAgICAgICA/IHRvU3RyaW5nKHJlcGxhY2VWYWx1ZShzZWFyY2hTdHJpbmcsIHBvc2l0aW9uLCBzdHJpbmcpKVxuICAgICAgICA6IGdldFN1YnN0aXR1dGlvbihzZWFyY2hTdHJpbmcsIHN0cmluZywgcG9zaXRpb24sIFtdLCB1bmRlZmluZWQsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICByZXN1bHQgKz0gc3RyaW5nU2xpY2Uoc3RyaW5nLCBlbmRPZkxhc3RNYXRjaCwgcG9zaXRpb24pICsgcmVwbGFjZW1lbnQ7XG4gICAgICBlbmRPZkxhc3RNYXRjaCA9IHBvc2l0aW9uICsgc2VhcmNoTGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBzdHJpbmdJbmRleE9mKHN0cmluZywgc2VhcmNoU3RyaW5nLCBwb3NpdGlvbiArIGFkdmFuY2VCeSk7XG4gICAgfVxuICAgIGlmIChlbmRPZkxhc3RNYXRjaCA8IHN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSBzdHJpbmdTbGljZShzdHJpbmcsIGVuZE9mTGFzdE1hdGNoKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLWFsbC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgYXBwbHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1hcHBseS5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZC5qc1wiKTtcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIik7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanNcIik7XG52YXIgZ2V0TWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzXCIpO1xudmFyIGdldFN1YnN0aXR1dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LXN1YnN0aXR1dGlvbi5qc1wiKTtcbnZhciByZWdFeHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanNcIik7XG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG5cbnZhciBSRVBMQUNFID0gd2VsbEtub3duU3ltYm9sKCdyZXBsYWNlJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgY29uY2F0ID0gdW5jdXJyeVRoaXMoW10uY29uY2F0KTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgc3RyaW5nSW5kZXhPZiA9IHVuY3VycnlUaGlzKCcnLmluZGV4T2YpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG52YXIgbWF5YmVUb1N0cmluZyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/IGl0IDogU3RyaW5nKGl0KTtcbn07XG5cbi8vIElFIDw9IDExIHJlcGxhY2VzICQwIHdpdGggdGhlIHdob2xlIG1hdGNoLCBhcyBpZiBpdCB3YXMgJCZcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzYwMjQ2NjYvZ2V0dGluZy1pZS10by1yZXBsYWNlLWEtcmVnZXgtd2l0aC10aGUtbGl0ZXJhbC1zdHJpbmctMFxudmFyIFJFUExBQ0VfS0VFUFNfJDAgPSAoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL3ByZWZlci1lc2NhcGUtcmVwbGFjZW1lbnQtZG9sbGFyLWNoYXIgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuICdhJy5yZXBsYWNlKC8uLywgJyQwJykgPT09ICckMCc7XG59KSgpO1xuXG4vLyBTYWZhcmkgPD0gMTMuMC4zKD8pIHN1YnN0aXR1dGVzIG50aCBjYXB0dXJlIHdoZXJlIG4+bSB3aXRoIGFuIGVtcHR5IHN0cmluZ1xudmFyIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKC8uL1tSRVBMQUNFXSkge1xuICAgIHJldHVybiAvLi9bUkVQTEFDRV0oJ2EnLCAnJDAnKSA9PT0gJyc7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufSkoKTtcblxudmFyIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLXVzZWxlc3MtZG9sbGFyLXJlcGxhY2VtZW50cyAtLSBmYWxzZSBwb3NpdGl2ZVxuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIEBAcmVwbGFjZSBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ3JlcGxhY2UnLCBmdW5jdGlvbiAoXywgbmF0aXZlUmVwbGFjZSwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHZhciBVTlNBRkVfU1VCU1RJVFVURSA9IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID8gJyQnIDogJyQwJztcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBpc051bGxPclVuZGVmaW5lZChzZWFyY2hWYWx1ZSkgPyB1bmRlZmluZWQgOiBnZXRNZXRob2Qoc2VhcmNoVmFsdWUsIFJFUExBQ0UpO1xuICAgICAgcmV0dXJuIHJlcGxhY2VyXG4gICAgICAgID8gY2FsbChyZXBsYWNlciwgc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiBjYWxsKG5hdGl2ZVJlcGxhY2UsIHRvU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHJlcGxhY2VcbiAgICBmdW5jdGlvbiAoc3RyaW5nLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHRoaXMpO1xuICAgICAgdmFyIFMgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiByZXBsYWNlVmFsdWUgPT0gJ3N0cmluZycgJiZcbiAgICAgICAgc3RyaW5nSW5kZXhPZihyZXBsYWNlVmFsdWUsIFVOU0FGRV9TVUJTVElUVVRFKSA9PT0gLTEgJiZcbiAgICAgICAgc3RyaW5nSW5kZXhPZihyZXBsYWNlVmFsdWUsICckPCcpID09PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlUmVwbGFjZSwgcngsIFMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gaXNDYWxsYWJsZShyZXBsYWNlVmFsdWUpO1xuICAgICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gdG9TdHJpbmcocmVwbGFjZVZhbHVlKTtcblxuICAgICAgdmFyIGdsb2JhbCA9IHJ4Lmdsb2JhbDtcbiAgICAgIGlmIChnbG9iYWwpIHtcbiAgICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgICAgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUyk7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIGJyZWFrO1xuXG4gICAgICAgIHB1c2gocmVzdWx0cywgcmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuXG4gICAgICAgIHZhciBtYXRjaFN0ciA9IHRvU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhY2N1bXVsYXRlZFJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG5leHRTb3VyY2VQb3NpdGlvbiA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0c1tpXTtcblxuICAgICAgICB2YXIgbWF0Y2hlZCA9IHRvU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyT3JJbmZpbml0eShyZXN1bHQuaW5kZXgpLCBTLmxlbmd0aCksIDApO1xuICAgICAgICB2YXIgY2FwdHVyZXMgPSBbXTtcbiAgICAgICAgLy8gTk9URTogVGhpcyBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgIC8vICAgY2FwdHVyZXMgPSByZXN1bHQuc2xpY2UoMSkubWFwKG1heWJlVG9TdHJpbmcpXG4gICAgICAgIC8vIGJ1dCBmb3Igc29tZSByZWFzb24gYG5hdGl2ZVNsaWNlLmNhbGwocmVzdWx0LCAxLCByZXN1bHQubGVuZ3RoKWAgKGNhbGxlZCBpblxuICAgICAgICAvLyB0aGUgc2xpY2UgcG9seWZpbGwgd2hlbiBzbGljaW5nIG5hdGl2ZSBhcnJheXMpIFwiZG9lc24ndCB3b3JrXCIgaW4gc2FmYXJpIDkgYW5kXG4gICAgICAgIC8vIGNhdXNlcyBhIGNyYXNoIChodHRwczovL3Bhc3RlYmluLmNvbS9OMjFRemVRQSkgd2hlbiB0cnlpbmcgdG8gZGVidWcgaXQuXG4gICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgcmVzdWx0Lmxlbmd0aDsgaisrKSBwdXNoKGNhcHR1cmVzLCBtYXliZVRvU3RyaW5nKHJlc3VsdFtqXSkpO1xuICAgICAgICB2YXIgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91cHM7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICAgIHZhciByZXBsYWNlckFyZ3MgPSBjb25jYXQoW21hdGNoZWRdLCBjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHB1c2gocmVwbGFjZXJBcmdzLCBuYW1lZENhcHR1cmVzKTtcbiAgICAgICAgICB2YXIgcmVwbGFjZW1lbnQgPSB0b1N0cmluZyhhcHBseShyZXBsYWNlVmFsdWUsIHVuZGVmaW5lZCwgcmVwbGFjZXJBcmdzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgUywgcG9zaXRpb24sIGNhcHR1cmVzLCBuYW1lZENhcHR1cmVzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSBuZXh0U291cmNlUG9zaXRpb24pIHtcbiAgICAgICAgICBhY2N1bXVsYXRlZFJlc3VsdCArPSBzdHJpbmdTbGljZShTLCBuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIHN0cmluZ1NsaWNlKFMsIG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xufSwgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTIHx8ICFSRVBMQUNFX0tFRVBTXyQwIHx8IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zcGxpdC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhcHBseSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzXCIpO1xudmFyIGlzUmVnRXhwID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanNcIik7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanNcIik7XG52YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBnZXRNZXRob2QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanNcIik7XG52YXIgYXJyYXlTbGljZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zbGljZS1zaW1wbGUuanNcIik7XG52YXIgY2FsbFJlZ0V4cEV4ZWMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdC5qc1wiKTtcbnZhciByZWdleHBFeGVjID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanNcIik7XG52YXIgc3RpY2t5SGVscGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcblxudmFyIFVOU1VQUE9SVEVEX1kgPSBzdGlja3lIZWxwZXJzLlVOU1VQUE9SVEVEX1k7XG52YXIgTUFYX1VJTlQzMiA9IDB4RkZGRkZGRkY7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgJHB1c2ggPSBbXS5wdXNoO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKCRwdXNoKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxuLy8gQ2hyb21lIDUxIGhhcyBhIGJ1Z2d5IFwic3BsaXRcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIFJlZ0V4cCNleGVjICE9PSBuYXRpdmVFeGVjXG4vLyBXZWV4IEpTIGhhcyBmcm96ZW4gYnVpbHQtaW4gcHJvdG90eXBlcywgc28gdXNlIHRyeSAvIGNhdGNoIHdyYXBwZXJcbnZhciBTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciByZSA9IC8oPzopLztcbiAgdmFyIG9yaWdpbmFsRXhlYyA9IHJlLmV4ZWM7XG4gIHJlLmV4ZWMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcmlnaW5hbEV4ZWMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfTtcbiAgdmFyIHJlc3VsdCA9ICdhYicuc3BsaXQocmUpO1xuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAhPT0gMiB8fCByZXN1bHRbMF0gIT09ICdhJyB8fCByZXN1bHRbMV0gIT09ICdiJztcbn0pO1xuXG4vLyBAQHNwbGl0IGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygnc3BsaXQnLCBmdW5jdGlvbiAoU1BMSVQsIG5hdGl2ZVNwbGl0LCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgdmFyIGludGVybmFsU3BsaXQ7XG4gIGlmIChcbiAgICAnYWJiYycuc3BsaXQoLyhiKSovKVsxXSA9PSAnYycgfHxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWVtcHR5LWdyb3VwIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgJ3Rlc3QnLnNwbGl0KC8oPzopLywgLTEpLmxlbmd0aCAhPSA0IHx8XG4gICAgJ2FiJy5zcGxpdCgvKD86YWIpKi8pLmxlbmd0aCAhPSAyIHx8XG4gICAgJy4nLnNwbGl0KC8oLj8pKC4/KS8pLmxlbmd0aCAhPSA0IHx8XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1lbXB0eS1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgICcuJy5zcGxpdCgvKCkoKS8pLmxlbmd0aCA+IDEgfHxcbiAgICAnJy5zcGxpdCgvLj8vKS5sZW5ndGhcbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtzdHJpbmddO1xuICAgICAgLy8gSWYgYHNlcGFyYXRvcmAgaXMgbm90IGEgcmVnZXgsIHVzZSBuYXRpdmUgc3BsaXRcbiAgICAgIGlmICghaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICByZXR1cm4gY2FsbChuYXRpdmVTcGxpdCwgc3RyaW5nLCBzZXBhcmF0b3IsIGxpbSk7XG4gICAgICB9XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IGNhbGwocmVnZXhwRXhlYywgc2VwYXJhdG9yQ29weSwgc3RyaW5nKSkge1xuICAgICAgICBsYXN0SW5kZXggPSBzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleDtcbiAgICAgICAgaWYgKGxhc3RJbmRleCA+IGxhc3RMYXN0SW5kZXgpIHtcbiAgICAgICAgICBwdXNoKG91dHB1dCwgc3RyaW5nU2xpY2Uoc3RyaW5nLCBsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nLmxlbmd0aCkgYXBwbHkoJHB1c2gsIG91dHB1dCwgYXJyYXlTbGljZShtYXRjaCwgMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFleGVjKHNlcGFyYXRvckNvcHksICcnKSkgcHVzaChvdXRwdXQsICcnKTtcbiAgICAgIH0gZWxzZSBwdXNoKG91dHB1dCwgc3RyaW5nU2xpY2Uoc3RyaW5nLCBsYXN0TGFzdEluZGV4KSk7XG4gICAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbSA/IGFycmF5U2xpY2Uob3V0cHV0LCAwLCBsaW0pIDogb3V0cHV0O1xuICAgIH07XG4gIC8vIENoYWtyYSwgVjhcbiAgfSBlbHNlIGlmICgnMCcuc3BsaXQodW5kZWZpbmVkLCAwKS5sZW5ndGgpIHtcbiAgICBpbnRlcm5hbFNwbGl0ID0gZnVuY3Rpb24gKHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIHJldHVybiBzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCAmJiBsaW1pdCA9PT0gMCA/IFtdIDogY2FsbChuYXRpdmVTcGxpdCwgdGhpcywgc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfTtcbiAgfSBlbHNlIGludGVybmFsU3BsaXQgPSBuYXRpdmVTcGxpdDtcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3BsaXRcbiAgICBmdW5jdGlvbiBzcGxpdChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgc3BsaXR0ZXIgPSBpc051bGxPclVuZGVmaW5lZChzZXBhcmF0b3IpID8gdW5kZWZpbmVkIDogZ2V0TWV0aG9kKHNlcGFyYXRvciwgU1BMSVQpO1xuICAgICAgcmV0dXJuIHNwbGl0dGVyXG4gICAgICAgID8gY2FsbChzcGxpdHRlciwgc2VwYXJhdG9yLCBPLCBsaW1pdClcbiAgICAgICAgOiBjYWxsKGludGVybmFsU3BsaXQsIHRvU3RyaW5nKE8pLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzcGxpdFxuICAgIC8vXG4gICAgLy8gTk9URTogVGhpcyBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydFxuICAgIC8vIHRoZSAneScgZmxhZy5cbiAgICBmdW5jdGlvbiAoc3RyaW5nLCBsaW1pdCkge1xuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QodGhpcyk7XG4gICAgICB2YXIgUyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKGludGVybmFsU3BsaXQsIHJ4LCBTLCBsaW1pdCwgaW50ZXJuYWxTcGxpdCAhPT0gbmF0aXZlU3BsaXQpO1xuXG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHJ4LCBSZWdFeHApO1xuXG4gICAgICB2YXIgdW5pY29kZU1hdGNoaW5nID0gcngudW5pY29kZTtcbiAgICAgIHZhciBmbGFncyA9IChyeC5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4LnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKFVOU1VQUE9SVEVEX1kgPyAnZycgOiAneScpO1xuXG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgUyBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgdmFyIHNwbGl0dGVyID0gbmV3IEMoVU5TVVBQT1JURURfWSA/ICdeKD86JyArIHJ4LnNvdXJjZSArICcpJyA6IHJ4LCBmbGFncyk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChTLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKSA9PT0gbnVsbCA/IFtTXSA6IFtdO1xuICAgICAgdmFyIHAgPSAwO1xuICAgICAgdmFyIHEgPSAwO1xuICAgICAgdmFyIEEgPSBbXTtcbiAgICAgIHdoaWxlIChxIDwgUy5sZW5ndGgpIHtcbiAgICAgICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gVU5TVVBQT1JURURfWSA/IDAgOiBxO1xuICAgICAgICB2YXIgeiA9IGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBVTlNVUFBPUlRFRF9ZID8gc3RyaW5nU2xpY2UoUywgcSkgOiBTKTtcbiAgICAgICAgdmFyIGU7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB6ID09PSBudWxsIHx8XG4gICAgICAgICAgKGUgPSBtaW4odG9MZW5ndGgoc3BsaXR0ZXIubGFzdEluZGV4ICsgKFVOU1VQUE9SVEVEX1kgPyBxIDogMCkpLCBTLmxlbmd0aCkpID09PSBwXG4gICAgICAgICkge1xuICAgICAgICAgIHEgPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgcSwgdW5pY29kZU1hdGNoaW5nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdXNoKEEsIHN0cmluZ1NsaWNlKFMsIHAsIHEpKTtcbiAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gei5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHB1c2goQSwgeltpXSk7XG4gICAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHEgPSBwID0gZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcHVzaChBLCBzdHJpbmdTbGljZShTLCBwKSk7XG4gICAgICByZXR1cm4gQTtcbiAgICB9XG4gIF07XG59LCAhU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDLCBVTlNVUFBPUlRFRF9ZKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc3RhcnRzLXdpdGguanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKS5mKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIG5vdEFSZWdFeHAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbm90LWEtcmVnZXhwICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm90LWEtcmVnZXhwLmpzXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzXCIpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1pcy1yZWdleHAtbG9naWMuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1wcm90b3R5cGUtc3RhcnRzd2l0aCAtLSBzYWZlXG52YXIgbmF0aXZlU3RhcnRzV2l0aCA9IHVuY3VycnlUaGlzKCcnLnN0YXJ0c1dpdGgpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG52YXIgQ09SUkVDVF9JU19SRUdFWFBfTE9HSUMgPSBjb3JyZWN0SXNSZWdFeHBMb2dpYygnc3RhcnRzV2l0aCcpO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvcHVsbC83MDJcbnZhciBNRE5fUE9MWUZJTExfQlVHID0gIUlTX1BVUkUgJiYgIUNPUlJFQ1RfSVNfUkVHRVhQX0xPR0lDICYmICEhZnVuY3Rpb24gKCkge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihTdHJpbmcucHJvdG90eXBlLCAnc3RhcnRzV2l0aCcpO1xuICByZXR1cm4gZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci53cml0YWJsZTtcbn0oKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuc3RhcnRzd2l0aFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFNRE5fUE9MWUZJTExfQlVHICYmICFDT1JSRUNUX0lTX1JFR0VYUF9MT0dJQyB9LCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgdmFyIHRoYXQgPSB0b1N0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKTtcbiAgICBub3RBUmVnRXhwKHNlYXJjaFN0cmluZyk7XG4gICAgdmFyIGluZGV4ID0gdG9MZW5ndGgobWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpO1xuICAgIHZhciBzZWFyY2ggPSB0b1N0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiBuYXRpdmVTdGFydHNXaXRoXG4gICAgICA/IG5hdGl2ZVN0YXJ0c1dpdGgodGhhdCwgc2VhcmNoLCBpbmRleClcbiAgICAgIDogc3RyaW5nU2xpY2UodGhhdCwgaW5kZXgsIGluZGV4ICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5zdGFydHMtd2l0aC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0tZW5kLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbGluZSBmcm9tIGBjb3JlLWpzQDRgXG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9tb2R1bGVzL2VzLnN0cmluZy50cmltLXJpZ2h0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLXJpZ2h0LmpzXCIpO1xudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIHRyaW1FbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZW5kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0tZW5kLmpzXCIpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS50cmltRW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltZW5kXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLXByb3RvdHlwZS10cmltc3RhcnQtdHJpbWVuZCAtLSBzYWZlXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIG5hbWU6ICd0cmltRW5kJywgZm9yY2VkOiAnJy50cmltRW5kICE9PSB0cmltRW5kIH0sIHtcbiAgdHJpbUVuZDogdHJpbUVuZFxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLWVuZC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0tcmlnaHQuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgdHJpbUVuZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zdHJpbmctdHJpbS1lbmQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS1lbmQuanNcIik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnRyaW1SaWdodGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXN0cmluZy1wcm90b3R5cGUtdHJpbWxlZnQtdHJpbXJpZ2h0IC0tIHNhZmVcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgbmFtZTogJ3RyaW1FbmQnLCBmb3JjZWQ6ICcnLnRyaW1SaWdodCAhPT0gdHJpbUVuZCB9LCB7XG4gIHRyaW1SaWdodDogdHJpbUVuZFxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy50cmltLXJpZ2h0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciAkdHJpbSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLXRyaW0gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctdHJpbS5qc1wiKS50cmltKTtcbnZhciBmb3JjZWRTdHJpbmdUcmltTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy10cmltLWZvcmNlZC5qc1wiKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ1RyaW1NZXRob2QoJ3RyaW0nKSB9LCB7XG4gIHRyaW06IGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMpO1xuICB9XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnRyaW0uanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCIvLyBgU3ltYm9sLnByb3RvdHlwZS5kZXNjcmlwdGlvbmAgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN5bWJvbC5wcm90b3R5cGUuZGVzY3JpcHRpb25cblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgaGFzT3duID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzXCIpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzXCIpO1xuXG52YXIgTmF0aXZlU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBTeW1ib2xQcm90b3R5cGUgPSBOYXRpdmVTeW1ib2wgJiYgTmF0aXZlU3ltYm9sLnByb3RvdHlwZTtcblxuaWYgKERFU0NSSVBUT1JTICYmIGlzQ2FsbGFibGUoTmF0aXZlU3ltYm9sKSAmJiAoISgnZGVzY3JpcHRpb24nIGluIFN5bWJvbFByb3RvdHlwZSkgfHxcbiAgLy8gU2FmYXJpIDEyIGJ1Z1xuICBOYXRpdmVTeW1ib2woKS5kZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkXG4pKSB7XG4gIHZhciBFbXB0eVN0cmluZ0Rlc2NyaXB0aW9uU3RvcmUgPSB7fTtcbiAgLy8gd3JhcCBTeW1ib2wgY29uc3RydWN0b3IgZm9yIGNvcnJlY3Qgd29yayB3aXRoIHVuZGVmaW5lZCBkZXNjcmlwdGlvblxuICB2YXIgU3ltYm9sV3JhcHBlciA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICB2YXIgZGVzY3JpcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoIDwgMSB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvU3RyaW5nKGFyZ3VtZW50c1swXSk7XG4gICAgdmFyIHJlc3VsdCA9IGlzUHJvdG90eXBlT2YoU3ltYm9sUHJvdG90eXBlLCB0aGlzKVxuICAgICAgPyBuZXcgTmF0aXZlU3ltYm9sKGRlc2NyaXB0aW9uKVxuICAgICAgLy8gaW4gRWRnZSAxMywgU3RyaW5nKFN5bWJvbCh1bmRlZmluZWQpKSA9PT0gJ1N5bWJvbCh1bmRlZmluZWQpJ1xuICAgICAgOiBkZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkID8gTmF0aXZlU3ltYm9sKCkgOiBOYXRpdmVTeW1ib2woZGVzY3JpcHRpb24pO1xuICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gJycpIEVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZVtyZXN1bHRdID0gdHJ1ZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoU3ltYm9sV3JhcHBlciwgTmF0aXZlU3ltYm9sKTtcbiAgU3ltYm9sV3JhcHBlci5wcm90b3R5cGUgPSBTeW1ib2xQcm90b3R5cGU7XG4gIFN5bWJvbFByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN5bWJvbFdyYXBwZXI7XG5cbiAgdmFyIE5BVElWRV9TWU1CT0wgPSBTdHJpbmcoTmF0aXZlU3ltYm9sKCd0ZXN0JykpID09ICdTeW1ib2wodGVzdCknO1xuICB2YXIgdGhpc1N5bWJvbFZhbHVlID0gdW5jdXJyeVRoaXMoU3ltYm9sUHJvdG90eXBlLnZhbHVlT2YpO1xuICB2YXIgc3ltYm9sRGVzY3JpcHRpdmVTdHJpbmcgPSB1bmN1cnJ5VGhpcyhTeW1ib2xQcm90b3R5cGUudG9TdHJpbmcpO1xuICB2YXIgcmVnZXhwID0gL15TeW1ib2xcXCgoLiopXFwpW14pXSskLztcbiAgdmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbiAgdmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihTeW1ib2xQcm90b3R5cGUsICdkZXNjcmlwdGlvbicsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBkZXNjcmlwdGlvbigpIHtcbiAgICAgIHZhciBzeW1ib2wgPSB0aGlzU3ltYm9sVmFsdWUodGhpcyk7XG4gICAgICBpZiAoaGFzT3duKEVtcHR5U3RyaW5nRGVzY3JpcHRpb25TdG9yZSwgc3ltYm9sKSkgcmV0dXJuICcnO1xuICAgICAgdmFyIHN0cmluZyA9IHN5bWJvbERlc2NyaXB0aXZlU3RyaW5nKHN5bWJvbCk7XG4gICAgICB2YXIgZGVzYyA9IE5BVElWRV9TWU1CT0wgPyBzdHJpbmdTbGljZShzdHJpbmcsIDcsIC0xKSA6IHJlcGxhY2Uoc3RyaW5nLCByZWdleHAsICckMScpO1xuICAgICAgcmV0dXJuIGRlc2MgPT09ICcnID8gdW5kZWZpbmVkIDogZGVzYztcbiAgICB9XG4gIH0pO1xuXG4gICQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgIFN5bWJvbDogU3ltYm9sV3JhcHBlclxuICB9KTtcbn1cblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3ltYm9sLmRlc2NyaXB0aW9uLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5hdC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlLmpzXCIpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UuanNcIik7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qc1wiKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xuXG4vLyBgJVR5cGVkQXJyYXklLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuYXRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ2F0JywgZnVuY3Rpb24gYXQoaW5kZXgpIHtcbiAgdmFyIE8gPSBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICB2YXIgcmVsYXRpdmVJbmRleCA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICB2YXIgayA9IHJlbGF0aXZlSW5kZXggPj0gMCA/IHJlbGF0aXZlSW5kZXggOiBsZW4gKyByZWxhdGl2ZUluZGV4O1xuICByZXR1cm4gKGsgPCAwIHx8IGsgPj0gbGVuKSA/IHVuZGVmaW5lZCA6IE9ba107XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuYXQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbGwuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKTtcbnZhciAkZmlsbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1maWxsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZmlsbC5qc1wiKTtcbnZhciB0b0JpZ0ludCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1iaWctaW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYmlnLWludC5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcbnZhciBzbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxuLy8gVjggfiBDaHJvbWUgPCA1OSwgU2FmYXJpIDwgMTQuMSwgRkYgPCA1NSwgRWRnZSA8PTE4XG52YXIgQ09OVkVSU0lPTl9CVUcgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBjb3VudCA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby10eXBlZC1hcnJheXMgLS0gc2FmZVxuICBuZXcgSW50OEFycmF5KDIpLmZpbGwoeyB2YWx1ZU9mOiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb3VudCsrOyB9IH0pO1xuICByZXR1cm4gY291bnQgIT09IDE7XG59KTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmlsbGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZmlsbFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmlsbCcsIGZ1bmN0aW9uIGZpbGwodmFsdWUgLyogLCBzdGFydCwgZW5kICovKSB7XG4gIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIGFjdHVhbFZhbHVlID0gc2xpY2UoY2xhc3NvZih0aGlzKSwgMCwgMykgPT09ICdCaWcnID8gdG9CaWdJbnQodmFsdWUpIDogK3ZhbHVlO1xuICByZXR1cm4gY2FsbCgkZmlsbCwgdGhpcywgYWN0dWFsVmFsdWUsIGxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIGxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQpO1xufSwgQ09OVkVSU0lPTl9CVUcpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maWxsLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5maW5kLWxhc3QtaW5kZXguanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKTtcbnZhciAkZmluZExhc3RJbmRleCA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi1mcm9tLWxhc3QuanNcIikuZmluZExhc3RJbmRleCk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmluZExhc3RJbmRleGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuZmluZGxhc3RpbmRleFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnZmluZExhc3RJbmRleCcsIGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgocHJlZGljYXRlIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZpbmRMYXN0SW5kZXgoYVR5cGVkQXJyYXkodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmZpbmQtbGFzdC1pbmRleC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC1sYXN0LmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUuanNcIik7XG52YXIgJGZpbmRMYXN0ID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24tZnJvbS1sYXN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLWZyb20tbGFzdC5qc1wiKS5maW5kTGFzdCk7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuZmluZExhc3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLmZpbmRsYXN0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdmaW5kTGFzdCcsIGZ1bmN0aW9uIGZpbmRMYXN0KHByZWRpY2F0ZSAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmaW5kTGFzdChhVHlwZWRBcnJheSh0aGlzKSwgcHJlZGljYXRlLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuZmluZC1sYXN0LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS5pbnQzMi1hcnJheS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qc1wiKTtcblxuLy8gYEludDMyQXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdJbnQzMicsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuaW50MzItYXJyYXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDgtYXJyYXkuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IuanNcIik7XG5cbi8vIGBJbnQ4QXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdJbnQ4JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDhBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LmludDgtYXJyYXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNldC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanNcIik7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xudmFyIHRvT2Zmc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9mZnNldCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9mZnNldC5qc1wiKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbnZhciBSYW5nZUVycm9yID0gZ2xvYmFsLlJhbmdlRXJyb3I7XG52YXIgSW50OEFycmF5ID0gZ2xvYmFsLkludDhBcnJheTtcbnZhciBJbnQ4QXJyYXlQcm90b3R5cGUgPSBJbnQ4QXJyYXkgJiYgSW50OEFycmF5LnByb3RvdHlwZTtcbnZhciAkc2V0ID0gSW50OEFycmF5UHJvdG90eXBlICYmIEludDhBcnJheVByb3RvdHlwZS5zZXQ7XG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG5cbnZhciBXT1JLU19XSVRIX09CSkVDVFNfQU5EX0dFTkVSSUNfT05fVFlQRURfQVJSQVlTID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXR5cGVkLWFycmF5cyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICB2YXIgYXJyYXkgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoMik7XG4gIGNhbGwoJHNldCwgYXJyYXksIHsgbGVuZ3RoOiAxLCAwOiAzIH0sIDEpO1xuICByZXR1cm4gYXJyYXlbMV0gIT09IDM7XG59KTtcblxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTEyOTQgYW5kIG90aGVyXG52YXIgVE9fT0JKRUNUX0JVRyA9IFdPUktTX1dJVEhfT0JKRUNUU19BTkRfR0VORVJJQ19PTl9UWVBFRF9BUlJBWVMgJiYgQXJyYXlCdWZmZXJWaWV3Q29yZS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFycmF5ID0gbmV3IEludDhBcnJheSgyKTtcbiAgYXJyYXkuc2V0KDEpO1xuICBhcnJheS5zZXQoJzInLCAxKTtcbiAgcmV0dXJuIGFycmF5WzBdICE9PSAwIHx8IGFycmF5WzFdICE9PSAyO1xufSk7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnNldGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc2V0XG5leHBvcnRUeXBlZEFycmF5TWV0aG9kKCdzZXQnLCBmdW5jdGlvbiBzZXQoYXJyYXlMaWtlIC8qICwgb2Zmc2V0ICovKSB7XG4gIGFUeXBlZEFycmF5KHRoaXMpO1xuICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDEpO1xuICB2YXIgc3JjID0gdG9JbmRleGVkT2JqZWN0KGFycmF5TGlrZSk7XG4gIGlmIChXT1JLU19XSVRIX09CSkVDVFNfQU5EX0dFTkVSSUNfT05fVFlQRURfQVJSQVlTKSByZXR1cm4gY2FsbCgkc2V0LCB0aGlzLCBzcmMsIG9mZnNldCk7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgdmFyIGxlbiA9IGxlbmd0aE9mQXJyYXlMaWtlKHNyYyk7XG4gIHZhciBpbmRleCA9IDA7XG4gIGlmIChsZW4gKyBvZmZzZXQgPiBsZW5ndGgpIHRocm93IFJhbmdlRXJyb3IoJ1dyb25nIGxlbmd0aCcpO1xuICB3aGlsZSAoaW5kZXggPCBsZW4pIHRoaXNbb2Zmc2V0ICsgaW5kZXhdID0gc3JjW2luZGV4KytdO1xufSwgIVdPUktTX1dJVEhfT0JKRUNUU19BTkRfR0VORVJJQ19PTl9UWVBFRF9BUlJBWVMgfHwgVE9fT0JKRUNUX0JVRyk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNldC5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkuc29ydC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtY2xhdXNlLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xudmFyIGludGVybmFsU29ydCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1zb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc29ydC5qc1wiKTtcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlLmpzXCIpO1xudmFyIEZGID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS1mZi12ZXJzaW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWZmLXZlcnNpb24uanNcIik7XG52YXIgSUVfT1JfRURHRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbmdpbmUtaXMtaWUtb3ItZWRnZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS1pcy1pZS1vci1lZGdlLmpzXCIpO1xudmFyIFY4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanNcIik7XG52YXIgV0VCS0lUID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VuZ2luZS13ZWJraXQtdmVyc2lvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS13ZWJraXQtdmVyc2lvbi5qc1wiKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIFVpbnQxNkFycmF5ID0gZ2xvYmFsLlVpbnQxNkFycmF5O1xudmFyIG5hdGl2ZVNvcnQgPSBVaW50MTZBcnJheSAmJiB1bmN1cnJ5VGhpcyhVaW50MTZBcnJheS5wcm90b3R5cGUuc29ydCk7XG5cbi8vIFdlYktpdFxudmFyIEFDQ0VQVF9JTkNPUlJFQ1RfQVJHVU1FTlRTID0gISFuYXRpdmVTb3J0ICYmICEoZmFpbHMoZnVuY3Rpb24gKCkge1xuICBuYXRpdmVTb3J0KG5ldyBVaW50MTZBcnJheSgyKSwgbnVsbCk7XG59KSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIG5hdGl2ZVNvcnQobmV3IFVpbnQxNkFycmF5KDIpLCB7fSk7XG59KSk7XG5cbnZhciBTVEFCTEVfU09SVCA9ICEhbmF0aXZlU29ydCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBmZWF0dXJlIGRldGVjdGlvbiBjYW4gYmUgdG9vIHNsb3csIHNvIGNoZWNrIGVuZ2luZXMgdmVyc2lvbnNcbiAgaWYgKFY4KSByZXR1cm4gVjggPCA3NDtcbiAgaWYgKEZGKSByZXR1cm4gRkYgPCA2NztcbiAgaWYgKElFX09SX0VER0UpIHJldHVybiB0cnVlO1xuICBpZiAoV0VCS0lUKSByZXR1cm4gV0VCS0lUIDwgNjAyO1xuXG4gIHZhciBhcnJheSA9IG5ldyBVaW50MTZBcnJheSg1MTYpO1xuICB2YXIgZXhwZWN0ZWQgPSBBcnJheSg1MTYpO1xuICB2YXIgaW5kZXgsIG1vZDtcblxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA1MTY7IGluZGV4KyspIHtcbiAgICBtb2QgPSBpbmRleCAlIDQ7XG4gICAgYXJyYXlbaW5kZXhdID0gNTE1IC0gaW5kZXg7XG4gICAgZXhwZWN0ZWRbaW5kZXhdID0gaW5kZXggLSAyICogbW9kICsgMztcbiAgfVxuXG4gIG5hdGl2ZVNvcnQoYXJyYXksIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIChhIC8gNCB8IDApIC0gKGIgLyA0IHwgMCk7XG4gIH0pO1xuXG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDUxNjsgaW5kZXgrKykge1xuICAgIGlmIChhcnJheVtpbmRleF0gIT09IGV4cGVjdGVkW2luZGV4XSkgcmV0dXJuIHRydWU7XG4gIH1cbn0pO1xuXG52YXIgZ2V0U29ydENvbXBhcmUgPSBmdW5jdGlvbiAoY29tcGFyZWZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoeCwgeSkge1xuICAgIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgcmV0dXJuICtjb21wYXJlZm4oeCwgeSkgfHwgMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmICh5ICE9PSB5KSByZXR1cm4gLTE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoeCAhPT0geCkgcmV0dXJuIDE7XG4gICAgaWYgKHggPT09IDAgJiYgeSA9PT0gMCkgcmV0dXJuIDEgLyB4ID4gMCAmJiAxIC8geSA8IDAgPyAxIDogLTE7XG4gICAgcmV0dXJuIHggPiB5O1xuICB9O1xufTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUuc29ydFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnc29ydCcsIGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKSB7XG4gIGlmIChjb21wYXJlZm4gIT09IHVuZGVmaW5lZCkgYUNhbGxhYmxlKGNvbXBhcmVmbik7XG4gIGlmIChTVEFCTEVfU09SVCkgcmV0dXJuIG5hdGl2ZVNvcnQodGhpcywgY29tcGFyZWZuKTtcblxuICByZXR1cm4gaW50ZXJuYWxTb3J0KGFUeXBlZEFycmF5KHRoaXMpLCBnZXRTb3J0Q29tcGFyZShjb21wYXJlZm4pKTtcbn0sICFTVEFCTEVfU09SVCB8fCBBQ0NFUFRfSU5DT1JSRUNUX0FSR1VNRU5UUyk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnNvcnQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnRvLWxvY2FsZS1zdHJpbmcuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBhcHBseSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzXCIpO1xudmFyIEFycmF5QnVmZmVyVmlld0NvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUuanNcIik7XG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBhcnJheVNsaWNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2UuanNcIik7XG5cbnZhciBJbnQ4QXJyYXkgPSBnbG9iYWwuSW50OEFycmF5O1xudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyICR0b0xvY2FsZVN0cmluZyA9IFtdLnRvTG9jYWxlU3RyaW5nO1xuXG4vLyBpT1MgU2FmYXJpIDYueCBmYWlscyBoZXJlXG52YXIgVE9fTE9DQUxFX1NUUklOR19CVUcgPSAhIUludDhBcnJheSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICR0b0xvY2FsZVN0cmluZy5jYWxsKG5ldyBJbnQ4QXJyYXkoMSkpO1xufSk7XG5cbnZhciBGT1JDRUQgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbMSwgMl0udG9Mb2NhbGVTdHJpbmcoKSAhPSBuZXcgSW50OEFycmF5KFsxLCAyXSkudG9Mb2NhbGVTdHJpbmcoKTtcbn0pIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIEludDhBcnJheS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwgMl0pO1xufSk7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b2xvY2FsZXN0cmluZ1xuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndG9Mb2NhbGVTdHJpbmcnLCBmdW5jdGlvbiB0b0xvY2FsZVN0cmluZygpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgICR0b0xvY2FsZVN0cmluZyxcbiAgICBUT19MT0NBTEVfU1RSSU5HX0JVRyA/IGFycmF5U2xpY2UoYVR5cGVkQXJyYXkodGhpcykpIDogYVR5cGVkQXJyYXkodGhpcyksXG4gICAgYXJyYXlTbGljZShhcmd1bWVudHMpXG4gICk7XG59LCBGT1JDRUQpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1sb2NhbGUtc3RyaW5nLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1yZXZlcnNlZC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhcnJheVRvUmV2ZXJzZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktdG8tcmV2ZXJzZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS10by1yZXZlcnNlZC5qc1wiKTtcbnZhciBBcnJheUJ1ZmZlclZpZXdDb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LWJ1ZmZlci12aWV3LWNvcmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlLmpzXCIpO1xuXG52YXIgYVR5cGVkQXJyYXkgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmFUeXBlZEFycmF5O1xudmFyIGV4cG9ydFR5cGVkQXJyYXlNZXRob2QgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmV4cG9ydFR5cGVkQXJyYXlNZXRob2Q7XG52YXIgZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3I7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnRvUmV2ZXJzZWRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0ldHlwZWRhcnJheSUucHJvdG90eXBlLnRvcmV2ZXJzZWRcbmV4cG9ydFR5cGVkQXJyYXlNZXRob2QoJ3RvUmV2ZXJzZWQnLCBmdW5jdGlvbiB0b1JldmVyc2VkKCkge1xuICByZXR1cm4gYXJyYXlUb1JldmVyc2VkKGFUeXBlZEFycmF5KHRoaXMpLCBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IodGhpcykpO1xufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnRvLXJldmVyc2VkLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1zb3J0ZWQuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgYUNhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzXCIpO1xudmFyIGFycmF5RnJvbUNvbnN0cnVjdG9yQW5kTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1mcm9tLWNvbnN0cnVjdG9yLWFuZC1saXN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS1jb25zdHJ1Y3Rvci1hbmQtbGlzdC5qc1wiKTtcblxudmFyIGFUeXBlZEFycmF5ID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5hVHlwZWRBcnJheTtcbnZhciBnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBBcnJheUJ1ZmZlclZpZXdDb3JlLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcjtcbnZhciBleHBvcnRUeXBlZEFycmF5TWV0aG9kID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5leHBvcnRUeXBlZEFycmF5TWV0aG9kO1xudmFyIHNvcnQgPSB1bmN1cnJ5VGhpcyhBcnJheUJ1ZmZlclZpZXdDb3JlLlR5cGVkQXJyYXlQcm90b3R5cGUuc29ydCk7XG5cbi8vIGAlVHlwZWRBcnJheSUucHJvdG90eXBlLnRvU29ydGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXR5cGVkYXJyYXklLnByb3RvdHlwZS50b3NvcnRlZFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgndG9Tb3J0ZWQnLCBmdW5jdGlvbiB0b1NvcnRlZChjb21wYXJlRm4pIHtcbiAgaWYgKGNvbXBhcmVGbiAhPT0gdW5kZWZpbmVkKSBhQ2FsbGFibGUoY29tcGFyZUZuKTtcbiAgdmFyIE8gPSBhVHlwZWRBcnJheSh0aGlzKTtcbiAgdmFyIEEgPSBhcnJheUZyb21Db25zdHJ1Y3RvckFuZExpc3QoZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKE8pLCBPKTtcbiAgcmV0dXJuIHNvcnQoQSwgY29tcGFyZUZuKTtcbn0pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS50by1zb3J0ZWQuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnVpbnQzMi1hcnJheS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qc1wiKTtcblxuLy8gYFVpbnQzMkFycmF5YCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10eXBlZGFycmF5LW9iamVjdHNcbmNyZWF0ZVR5cGVkQXJyYXlDb25zdHJ1Y3RvcignVWludDMyJywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDMyLWFycmF5LmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy50eXBlZC1hcnJheS51aW50OC1hcnJheS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBjcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90eXBlZC1hcnJheS1jb25zdHJ1Y3Rvci5qc1wiKTtcblxuLy8gYFVpbnQ4QXJyYXlgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXR5cGVkYXJyYXktb2JqZWN0c1xuY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yKCdVaW50OCcsIGZ1bmN0aW9uIChpbml0KSB7XG4gIHJldHVybiBmdW5jdGlvbiBVaW50OEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtYXJyYXkuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LnVpbnQ4LWNsYW1wZWQtYXJyYXkuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgY3JlYXRlVHlwZWRBcnJheUNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3R5cGVkLWFycmF5LWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHlwZWQtYXJyYXktY29uc3RydWN0b3IuanNcIik7XG5cbi8vIGBVaW50OENsYW1wZWRBcnJheWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdHlwZWRhcnJheS1vYmplY3RzXG5jcmVhdGVUeXBlZEFycmF5Q29uc3RydWN0b3IoJ1VpbnQ4JywgZnVuY3Rpb24gKGluaXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59LCB0cnVlKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkudWludDgtY2xhbXBlZC1hcnJheS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMudHlwZWQtYXJyYXkud2l0aC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBhcnJheVdpdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktd2l0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXdpdGguanNcIik7XG52YXIgQXJyYXlCdWZmZXJWaWV3Q29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1idWZmZXItdmlldy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktYnVmZmVyLXZpZXctY29yZS5qc1wiKTtcbnZhciBpc0JpZ0ludEFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWJpZy1pbnQtYXJyYXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1iaWctaW50LWFycmF5LmpzXCIpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanNcIik7XG52YXIgdG9CaWdJbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tYmlnLWludCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWJpZy1pbnQuanNcIik7XG5cbnZhciBhVHlwZWRBcnJheSA9IEFycmF5QnVmZmVyVmlld0NvcmUuYVR5cGVkQXJyYXk7XG52YXIgZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yID0gQXJyYXlCdWZmZXJWaWV3Q29yZS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3I7XG52YXIgZXhwb3J0VHlwZWRBcnJheU1ldGhvZCA9IEFycmF5QnVmZmVyVmlld0NvcmUuZXhwb3J0VHlwZWRBcnJheU1ldGhvZDtcblxudmFyIFBST1BFUl9PUkRFUiA9ICEhZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsLCBlcy9uby10eXBlZC1hcnJheXMsIGVzL25vLWFycmF5LXByb3RvdHlwZS13aXRoIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gICAgbmV3IEludDhBcnJheSgxKVsnd2l0aCddKDIsIHsgdmFsdWVPZjogZnVuY3Rpb24gKCkgeyB0aHJvdyA4OyB9IH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIHNvbWUgZWFybHkgaW1wbGVtZW50YXRpb25zLCBsaWtlIFdlYktpdCwgZG9lcyBub3QgZm9sbG93IHRoZSBmaW5hbCBzZW1hbnRpY1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNoYW5nZS1hcnJheS1ieS1jb3B5L3B1bGwvODZcbiAgICByZXR1cm4gZXJyb3IgPT09IDg7XG4gIH1cbn0oKTtcblxuLy8gYCVUeXBlZEFycmF5JS5wcm90b3R5cGUud2l0aGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSV0eXBlZGFycmF5JS5wcm90b3R5cGUud2l0aFxuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCgnd2l0aCcsIHsgJ3dpdGgnOiBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gIHZhciBPID0gYVR5cGVkQXJyYXkodGhpcyk7XG4gIHZhciByZWxhdGl2ZUluZGV4ID0gdG9JbnRlZ2VyT3JJbmZpbml0eShpbmRleCk7XG4gIHZhciBhY3R1YWxWYWx1ZSA9IGlzQmlnSW50QXJyYXkoTykgPyB0b0JpZ0ludCh2YWx1ZSkgOiArdmFsdWU7XG4gIHJldHVybiBhcnJheVdpdGgoTywgZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKE8pLCByZWxhdGl2ZUluZGV4LCBhY3R1YWxWYWx1ZSk7XG59IH1bJ3dpdGgnXSwgIVBST1BFUl9PUkRFUik7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnR5cGVkLWFycmF5LndpdGguanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLndlYWstbWFwLmNvbnN0cnVjdG9yLmpzIjooKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxudmFyIEZSRUVaSU5HID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZyZWV6aW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnJlZXppbmcuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanNcIik7XG52YXIgSW50ZXJuYWxNZXRhZGF0YU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbnRlcm5hbC1tZXRhZGF0YSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLW1ldGFkYXRhLmpzXCIpO1xudmFyIGNvbGxlY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29sbGVjdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvbGxlY3Rpb24uanNcIik7XG52YXIgY29sbGVjdGlvbldlYWsgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29sbGVjdGlvbi13ZWFrICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29sbGVjdGlvbi13ZWFrLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKS5lbmZvcmNlKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24uanNcIik7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWlzYXJyYXkgLS0gc2FmZVxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2V4dGVuc2libGUgLS0gc2FmZVxudmFyIGlzRXh0ZW5zaWJsZSA9ICRPYmplY3QuaXNFeHRlbnNpYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc2Zyb3plbiAtLSBzYWZlXG52YXIgaXNGcm96ZW4gPSAkT2JqZWN0LmlzRnJvemVuO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pc3NlYWxlZCAtLSBzYWZlXG52YXIgaXNTZWFsZWQgPSAkT2JqZWN0LmlzU2VhbGVkO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1mcmVlemUgLS0gc2FmZVxudmFyIGZyZWV6ZSA9ICRPYmplY3QuZnJlZXplO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZWFsIC0tIHNhZmVcbnZhciBzZWFsID0gJE9iamVjdC5zZWFsO1xuXG52YXIgRlJPWkVOID0ge307XG52YXIgU0VBTEVEID0ge307XG52YXIgSVNfSUUxMSA9ICFnbG9iYWwuQWN0aXZlWE9iamVjdCAmJiAnQWN0aXZlWE9iamVjdCcgaW4gZ2xvYmFsO1xudmFyIEludGVybmFsV2Vha01hcDtcblxudmFyIHdyYXBwZXIgPSBmdW5jdGlvbiAoaW5pdCkge1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgfTtcbn07XG5cbi8vIGBXZWFrTWFwYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy13ZWFrbWFwLWNvbnN0cnVjdG9yXG52YXIgJFdlYWtNYXAgPSBjb2xsZWN0aW9uKCdXZWFrTWFwJywgd3JhcHBlciwgY29sbGVjdGlvbldlYWspO1xudmFyIFdlYWtNYXBQcm90b3R5cGUgPSAkV2Vha01hcC5wcm90b3R5cGU7XG52YXIgbmF0aXZlU2V0ID0gdW5jdXJyeVRoaXMoV2Vha01hcFByb3RvdHlwZS5zZXQpO1xuXG4vLyBDaGFrcmEgRWRnZSBidWc6IGFkZGluZyBmcm96ZW4gYXJyYXlzIHRvIFdlYWtNYXAgdW5mcmVlemUgdGhlbVxudmFyIGhhc01TRWRnZUZyZWV6aW5nQnVnID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gRlJFRVpJTkcgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBmcm96ZW5BcnJheSA9IGZyZWV6ZShbXSk7XG4gICAgbmF0aXZlU2V0KG5ldyAkV2Vha01hcCgpLCBmcm96ZW5BcnJheSwgMSk7XG4gICAgcmV0dXJuICFpc0Zyb3plbihmcm96ZW5BcnJheSk7XG4gIH0pO1xufTtcblxuLy8gSUUxMSBXZWFrTWFwIGZyb3plbiBrZXlzIGZpeFxuLy8gV2UgY2FuJ3QgdXNlIGZlYXR1cmUgZGV0ZWN0aW9uIGJlY2F1c2UgaXQgY3Jhc2ggc29tZSBvbGQgSUUgYnVpbGRzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNDg1XG5pZiAoTkFUSVZFX1dFQUtfTUFQKSBpZiAoSVNfSUUxMSkge1xuICBJbnRlcm5hbFdlYWtNYXAgPSBjb2xsZWN0aW9uV2Vhay5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCAnV2Vha01hcCcsIHRydWUpO1xuICBJbnRlcm5hbE1ldGFkYXRhTW9kdWxlLmVuYWJsZSgpO1xuICB2YXIgbmF0aXZlRGVsZXRlID0gdW5jdXJyeVRoaXMoV2Vha01hcFByb3RvdHlwZVsnZGVsZXRlJ10pO1xuICB2YXIgbmF0aXZlSGFzID0gdW5jdXJyeVRoaXMoV2Vha01hcFByb3RvdHlwZS5oYXMpO1xuICB2YXIgbmF0aXZlR2V0ID0gdW5jdXJyeVRoaXMoV2Vha01hcFByb3RvdHlwZS5nZXQpO1xuICBkZWZpbmVCdWlsdElucyhXZWFrTWFwUHJvdG90eXBlLCB7XG4gICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmIChpc09iamVjdChrZXkpICYmICFpc0V4dGVuc2libGUoa2V5KSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICAgICAgaWYgKCFzdGF0ZS5mcm96ZW4pIHN0YXRlLmZyb3plbiA9IG5ldyBJbnRlcm5hbFdlYWtNYXAoKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZURlbGV0ZSh0aGlzLCBrZXkpIHx8IHN0YXRlLmZyb3plblsnZGVsZXRlJ10oa2V5KTtcbiAgICAgIH0gcmV0dXJuIG5hdGl2ZURlbGV0ZSh0aGlzLCBrZXkpO1xuICAgIH0sXG4gICAgaGFzOiBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgICBpZiAoaXNPYmplY3Qoa2V5KSAmJiAhaXNFeHRlbnNpYmxlKGtleSkpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gZW5mb3JjZUludGVybmFsU3RhdGUodGhpcyk7XG4gICAgICAgIGlmICghc3RhdGUuZnJvemVuKSBzdGF0ZS5mcm96ZW4gPSBuZXcgSW50ZXJuYWxXZWFrTWFwKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVIYXModGhpcywga2V5KSB8fCBzdGF0ZS5mcm96ZW4uaGFzKGtleSk7XG4gICAgICB9IHJldHVybiBuYXRpdmVIYXModGhpcywga2V5KTtcbiAgICB9LFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KGtleSkge1xuICAgICAgaWYgKGlzT2JqZWN0KGtleSkgJiYgIWlzRXh0ZW5zaWJsZShrZXkpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoIXN0YXRlLmZyb3plbikgc3RhdGUuZnJvemVuID0gbmV3IEludGVybmFsV2Vha01hcCgpO1xuICAgICAgICByZXR1cm4gbmF0aXZlSGFzKHRoaXMsIGtleSkgPyBuYXRpdmVHZXQodGhpcywga2V5KSA6IHN0YXRlLmZyb3plbi5nZXQoa2V5KTtcbiAgICAgIH0gcmV0dXJuIG5hdGl2ZUdldCh0aGlzLCBrZXkpO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGlzT2JqZWN0KGtleSkgJiYgIWlzRXh0ZW5zaWJsZShrZXkpKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgICAgICBpZiAoIXN0YXRlLmZyb3plbikgc3RhdGUuZnJvemVuID0gbmV3IEludGVybmFsV2Vha01hcCgpO1xuICAgICAgICBuYXRpdmVIYXModGhpcywga2V5KSA/IG5hdGl2ZVNldCh0aGlzLCBrZXksIHZhbHVlKSA6IHN0YXRlLmZyb3plbi5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2UgbmF0aXZlU2V0KHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9KTtcbi8vIENoYWtyYSBFZGdlIGZyb3plbiBrZXlzIGZpeFxufSBlbHNlIGlmIChoYXNNU0VkZ2VGcmVlemluZ0J1ZygpKSB7XG4gIGRlZmluZUJ1aWx0SW5zKFdlYWtNYXBQcm90b3R5cGUsIHtcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgYXJyYXlJbnRlZ3JpdHlMZXZlbDtcbiAgICAgIGlmIChpc0FycmF5KGtleSkpIHtcbiAgICAgICAgaWYgKGlzRnJvemVuKGtleSkpIGFycmF5SW50ZWdyaXR5TGV2ZWwgPSBGUk9aRU47XG4gICAgICAgIGVsc2UgaWYgKGlzU2VhbGVkKGtleSkpIGFycmF5SW50ZWdyaXR5TGV2ZWwgPSBTRUFMRUQ7XG4gICAgICB9XG4gICAgICBuYXRpdmVTZXQodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoYXJyYXlJbnRlZ3JpdHlMZXZlbCA9PSBGUk9aRU4pIGZyZWV6ZShrZXkpO1xuICAgICAgaWYgKGFycmF5SW50ZWdyaXR5TGV2ZWwgPT0gU0VBTEVEKSBzZWFsKGtleSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0pO1xufVxuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy53ZWFrLW1hcC5jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMud2Vhay1tYXAuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHJlcGxhY2VkIHRvIG1vZHVsZSBiZWxvd1xuX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vbW9kdWxlcy9lcy53ZWFrLW1hcC5jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy53ZWFrLW1hcC5jb25zdHJ1Y3Rvci5qc1wiKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMud2Vhay1tYXAuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBET01JdGVyYWJsZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanNcIik7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZS5qc1wiKTtcbnZhciBBcnJheUl0ZXJhdG9yTWV0aG9kcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9yTWV0aG9kcy52YWx1ZXM7XG5cbnZhciBoYW5kbGVQcm90b3R5cGUgPSBmdW5jdGlvbiAoQ29sbGVjdGlvblByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKSB7XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdICE9PSBBcnJheVZhbHVlcykgdHJ5IHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSA9IEFycmF5VmFsdWVzO1xuICAgIH1cbiAgICBpZiAoIUNvbGxlY3Rpb25Qcm90b3R5cGVbVE9fU1RSSU5HX1RBR10pIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCBDT0xMRUNUSU9OX05BTUUpO1xuICAgIH1cbiAgICBpZiAoRE9NSXRlcmFibGVzW0NPTExFQ1RJT05fTkFNRV0pIGZvciAodmFyIE1FVEhPRF9OQU1FIGluIEFycmF5SXRlcmF0b3JNZXRob2RzKSB7XG4gICAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICAgIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSAhPT0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKSB0cnkge1xuICAgICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoQ29sbGVjdGlvblByb3RvdHlwZSwgTUVUSE9EX05BTUUsIEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW01FVEhPRF9OQU1FXSA9IEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgaGFuZGxlUHJvdG90eXBlKGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdICYmIGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdLnByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKTtcbn1cblxuaGFuZGxlUHJvdG90eXBlKERPTVRva2VuTGlzdFByb3RvdHlwZSwgJ0RPTVRva2VuTGlzdCcpO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi5jb25zdHJ1Y3Rvci5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciB0cnlOb2RlUmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90cnktbm9kZS1yZXF1aXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LW5vZGUtcmVxdWlyZS5qc1wiKTtcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGNyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qc1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIikuZik7XG52YXIgZGVmaW5lQnVpbHRJbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4uanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgYW5JbnN0YW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1pbnN0YW5jZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBlcnJvclRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Vycm9yLXRvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXRvLXN0cmluZy5qc1wiKTtcbnZhciBub3JtYWxpemVTdHJpbmdBcmd1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm9ybWFsaXplLXN0cmluZy1hcmd1bWVudC5qc1wiKTtcbnZhciBET01FeGNlcHRpb25Db25zdGFudHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9tLWV4Y2VwdGlvbi1jb25zdGFudHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20tZXhjZXB0aW9uLWNvbnN0YW50cy5qc1wiKTtcbnZhciBjbGVhckVycm9yU3RhY2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhci5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgRE9NX0VYQ0VQVElPTiA9ICdET01FeGNlcHRpb24nO1xudmFyIERBVEFfQ0xPTkVfRVJSID0gJ0RBVEFfQ0xPTkVfRVJSJztcbnZhciBFcnJvciA9IGdldEJ1aWx0SW4oJ0Vycm9yJyk7XG4vLyBOb2RlSlMgPCAxNy4wIGRvZXMgbm90IGV4cG9zZSBgRE9NRXhjZXB0aW9uYCB0byBnbG9iYWxcbnZhciBOYXRpdmVET01FeGNlcHRpb24gPSBnZXRCdWlsdEluKERPTV9FWENFUFRJT04pIHx8IChmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gTm9kZUpTIDwgMTUuMCBkb2VzIG5vdCBleHBvc2UgYE1lc3NhZ2VDaGFubmVsYCB0byBnbG9iYWxcbiAgICB2YXIgTWVzc2FnZUNoYW5uZWwgPSBnZXRCdWlsdEluKCdNZXNzYWdlQ2hhbm5lbCcpIHx8IHRyeU5vZGVSZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpLk1lc3NhZ2VDaGFubmVsO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby13ZWFrLW1hcCwgdW5pY29ybi9yZXF1aXJlLXBvc3QtbWVzc2FnZS10YXJnZXQtb3JpZ2luIC0tIHNhZmVcbiAgICBuZXcgTWVzc2FnZUNoYW5uZWwoKS5wb3J0MS5wb3N0TWVzc2FnZShuZXcgV2Vha01hcCgpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IubmFtZSA9PSBEQVRBX0NMT05FX0VSUiAmJiBlcnJvci5jb2RlID09IDI1KSByZXR1cm4gZXJyb3IuY29uc3RydWN0b3I7XG4gIH1cbn0pKCk7XG52YXIgTmF0aXZlRE9NRXhjZXB0aW9uUHJvdG90eXBlID0gTmF0aXZlRE9NRXhjZXB0aW9uICYmIE5hdGl2ZURPTUV4Y2VwdGlvbi5wcm90b3R5cGU7XG52YXIgRXJyb3JQcm90b3R5cGUgPSBFcnJvci5wcm90b3R5cGU7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihET01fRVhDRVBUSU9OKTtcbnZhciBIQVNfU1RBQ0sgPSAnc3RhY2snIGluIEVycm9yKERPTV9FWENFUFRJT04pO1xuXG52YXIgY29kZUZvciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBoYXNPd24oRE9NRXhjZXB0aW9uQ29uc3RhbnRzLCBuYW1lKSAmJiBET01FeGNlcHRpb25Db25zdGFudHNbbmFtZV0ubSA/IERPTUV4Y2VwdGlvbkNvbnN0YW50c1tuYW1lXS5jIDogMDtcbn07XG5cbnZhciAkRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24gRE9NRXhjZXB0aW9uKCkge1xuICBhbkluc3RhbmNlKHRoaXMsIERPTUV4Y2VwdGlvblByb3RvdHlwZSk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWVzc2FnZSA9IG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50KGFyZ3VtZW50c0xlbmd0aCA8IDEgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMF0pO1xuICB2YXIgbmFtZSA9IG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50KGFyZ3VtZW50c0xlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV0sICdFcnJvcicpO1xuICB2YXIgY29kZSA9IGNvZGVGb3IobmFtZSk7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IERPTV9FWENFUFRJT04sXG4gICAgbmFtZTogbmFtZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGNvZGU6IGNvZGVcbiAgfSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgfVxuICBpZiAoSEFTX1NUQUNLKSB7XG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSk7XG4gICAgZXJyb3IubmFtZSA9IERPTV9FWENFUFRJT047XG4gICAgZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0YWNrJywgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIGNsZWFyRXJyb3JTdGFjayhlcnJvci5zdGFjaywgMSkpKTtcbiAgfVxufTtcblxudmFyIERPTUV4Y2VwdGlvblByb3RvdHlwZSA9ICRET01FeGNlcHRpb24ucHJvdG90eXBlID0gY3JlYXRlKEVycm9yUHJvdG90eXBlKTtcblxudmFyIGNyZWF0ZUdldHRlckRlc2NyaXB0b3IgPSBmdW5jdGlvbiAoZ2V0KSB7XG4gIHJldHVybiB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZ2V0OiBnZXQgfTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBjcmVhdGVHZXR0ZXJEZXNjcmlwdG9yKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKVtrZXldO1xuICB9KTtcbn07XG5cbmlmIChERVNDUklQVE9SUykge1xuICAvLyBgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb2RlYCBnZXR0ZXJcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKERPTUV4Y2VwdGlvblByb3RvdHlwZSwgJ2NvZGUnLCBnZXR0ZXJGb3IoJ2NvZGUnKSk7XG4gIC8vIGBET01FeGNlcHRpb24ucHJvdG90eXBlLm1lc3NhZ2VgIGdldHRlclxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoRE9NRXhjZXB0aW9uUHJvdG90eXBlLCAnbWVzc2FnZScsIGdldHRlckZvcignbWVzc2FnZScpKTtcbiAgLy8gYERPTUV4Y2VwdGlvbi5wcm90b3R5cGUubmFtZWAgZ2V0dGVyXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihET01FeGNlcHRpb25Qcm90b3R5cGUsICduYW1lJywgZ2V0dGVyRm9yKCduYW1lJykpO1xufVxuXG5kZWZpbmVQcm9wZXJ0eShET01FeGNlcHRpb25Qcm90b3R5cGUsICdjb25zdHJ1Y3RvcicsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAkRE9NRXhjZXB0aW9uKSk7XG5cbi8vIEZGMzYtIERPTUV4Y2VwdGlvbiBpcyBhIGZ1bmN0aW9uLCBidXQgY2FuJ3QgYmUgY29uc3RydWN0ZWRcbnZhciBJTkNPUlJFQ1RfQ09OU1RSVUNUT1IgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhKG5ldyBOYXRpdmVET01FeGNlcHRpb24oKSBpbnN0YW5jZW9mIEVycm9yKTtcbn0pO1xuXG4vLyBTYWZhcmkgMTAuMSAvIENocm9tZSAzMi0gLyBJRTgtIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgYnVnc1xudmFyIElOQ09SUkVDVF9UT19TVFJJTkcgPSBJTkNPUlJFQ1RfQ09OU1RSVUNUT1IgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gRXJyb3JQcm90b3R5cGUudG9TdHJpbmcgIT09IGVycm9yVG9TdHJpbmcgfHwgU3RyaW5nKG5ldyBOYXRpdmVET01FeGNlcHRpb24oMSwgMikpICE9PSAnMjogMSc7XG59KTtcblxuLy8gRGVubyAxLjYuMy0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb2RlIGp1c3QgbWlzc2VkXG52YXIgSU5DT1JSRUNUX0NPREUgPSBJTkNPUlJFQ1RfQ09OU1RSVUNUT1IgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IE5hdGl2ZURPTUV4Y2VwdGlvbigxLCAnRGF0YUNsb25lRXJyb3InKS5jb2RlICE9PSAyNTtcbn0pO1xuXG4vLyBEZW5vIDEuNi4zLSBET01FeGNlcHRpb24gY29uc3RhbnRzIGp1c3QgbWlzc2VkXG52YXIgTUlTU0VEX0NPTlNUQU5UUyA9IElOQ09SUkVDVF9DT05TVFJVQ1RPUlxuICB8fCBOYXRpdmVET01FeGNlcHRpb25bREFUQV9DTE9ORV9FUlJdICE9PSAyNVxuICB8fCBOYXRpdmVET01FeGNlcHRpb25Qcm90b3R5cGVbREFUQV9DTE9ORV9FUlJdICE9PSAyNTtcblxudmFyIEZPUkNFRF9DT05TVFJVQ1RPUiA9IElTX1BVUkUgPyBJTkNPUlJFQ1RfVE9fU1RSSU5HIHx8IElOQ09SUkVDVF9DT0RFIHx8IE1JU1NFRF9DT05TVEFOVFMgOiBJTkNPUlJFQ1RfQ09OU1RSVUNUT1I7XG5cbi8vIGBET01FeGNlcHRpb25gIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2lkbC1ET01FeGNlcHRpb25cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9DT05TVFJVQ1RPUiB9LCB7XG4gIERPTUV4Y2VwdGlvbjogRk9SQ0VEX0NPTlNUUlVDVE9SID8gJERPTUV4Y2VwdGlvbiA6IE5hdGl2ZURPTUV4Y2VwdGlvblxufSk7XG5cbnZhciBQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uID0gZ2V0QnVpbHRJbihET01fRVhDRVBUSU9OKTtcbnZhciBQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uUHJvdG90eXBlID0gUG9seWZpbGxlZERPTUV4Y2VwdGlvbi5wcm90b3R5cGU7XG5cbmlmIChJTkNPUlJFQ1RfVE9fU1RSSU5HICYmIChJU19QVVJFIHx8IE5hdGl2ZURPTUV4Y2VwdGlvbiA9PT0gUG9seWZpbGxlZERPTUV4Y2VwdGlvbikpIHtcbiAgZGVmaW5lQnVpbHRJbihQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uUHJvdG90eXBlLCAndG9TdHJpbmcnLCBlcnJvclRvU3RyaW5nKTtcbn1cblxuaWYgKElOQ09SUkVDVF9DT0RFICYmIERFU0NSSVBUT1JTICYmIE5hdGl2ZURPTUV4Y2VwdGlvbiA9PT0gUG9seWZpbGxlZERPTUV4Y2VwdGlvbikge1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUG9seWZpbGxlZERPTUV4Y2VwdGlvblByb3RvdHlwZSwgJ2NvZGUnLCBjcmVhdGVHZXR0ZXJEZXNjcmlwdG9yKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY29kZUZvcihhbk9iamVjdCh0aGlzKS5uYW1lKTtcbiAgfSkpO1xufVxuXG4vLyBgRE9NRXhjZXB0aW9uYCBjb25zdGFudHNcbmZvciAodmFyIGtleSBpbiBET01FeGNlcHRpb25Db25zdGFudHMpIGlmIChoYXNPd24oRE9NRXhjZXB0aW9uQ29uc3RhbnRzLCBrZXkpKSB7XG4gIHZhciBjb25zdGFudCA9IERPTUV4Y2VwdGlvbkNvbnN0YW50c1trZXldO1xuICB2YXIgY29uc3RhbnROYW1lID0gY29uc3RhbnQucztcbiAgdmFyIGRlc2NyaXB0b3IgPSBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoNiwgY29uc3RhbnQuYyk7XG4gIGlmICghaGFzT3duKFBvbHlmaWxsZWRET01FeGNlcHRpb24sIGNvbnN0YW50TmFtZSkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uLCBjb25zdGFudE5hbWUsIGRlc2NyaXB0b3IpO1xuICB9XG4gIGlmICghaGFzT3duKFBvbHlmaWxsZWRET01FeGNlcHRpb25Qcm90b3R5cGUsIGNvbnN0YW50TmFtZSkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uUHJvdG90eXBlLCBjb25zdGFudE5hbWUsIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tZXhjZXB0aW9uLmNvbnN0cnVjdG9yLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi5zdGFjay5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGdldEJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gKF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKS5mKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgYW5JbnN0YW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1pbnN0YW5jZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzXCIpO1xudmFyIGluaGVyaXRJZlJlcXVpcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2luaGVyaXQtaWYtcmVxdWlyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmhlcml0LWlmLXJlcXVpcmVkLmpzXCIpO1xudmFyIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25vcm1hbGl6ZS1zdHJpbmctYXJndW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzXCIpO1xudmFyIERPTUV4Y2VwdGlvbkNvbnN0YW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb20tZXhjZXB0aW9uLWNvbnN0YW50cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1leGNlcHRpb24tY29uc3RhbnRzLmpzXCIpO1xudmFyIGNsZWFyRXJyb3JTdGFjayA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWNsZWFyLmpzXCIpO1xudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgSVNfUFVSRSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1wdXJlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qc1wiKTtcblxudmFyIERPTV9FWENFUFRJT04gPSAnRE9NRXhjZXB0aW9uJztcbnZhciBFcnJvciA9IGdldEJ1aWx0SW4oJ0Vycm9yJyk7XG52YXIgTmF0aXZlRE9NRXhjZXB0aW9uID0gZ2V0QnVpbHRJbihET01fRVhDRVBUSU9OKTtcblxudmFyICRET01FeGNlcHRpb24gPSBmdW5jdGlvbiBET01FeGNlcHRpb24oKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgRE9NRXhjZXB0aW9uUHJvdG90eXBlKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtZXNzYWdlID0gbm9ybWFsaXplU3RyaW5nQXJndW1lbnQoYXJndW1lbnRzTGVuZ3RoIDwgMSA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1swXSk7XG4gIHZhciBuYW1lID0gbm9ybWFsaXplU3RyaW5nQXJndW1lbnQoYXJndW1lbnRzTGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXSwgJ0Vycm9yJyk7XG4gIHZhciB0aGF0ID0gbmV3IE5hdGl2ZURPTUV4Y2VwdGlvbihtZXNzYWdlLCBuYW1lKTtcbiAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSk7XG4gIGVycm9yLm5hbWUgPSBET01fRVhDRVBUSU9OO1xuICBkZWZpbmVQcm9wZXJ0eSh0aGF0LCAnc3RhY2snLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgY2xlYXJFcnJvclN0YWNrKGVycm9yLnN0YWNrLCAxKSkpO1xuICBpbmhlcml0SWZSZXF1aXJlZCh0aGF0LCB0aGlzLCAkRE9NRXhjZXB0aW9uKTtcbiAgcmV0dXJuIHRoYXQ7XG59O1xuXG52YXIgRE9NRXhjZXB0aW9uUHJvdG90eXBlID0gJERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBOYXRpdmVET01FeGNlcHRpb24ucHJvdG90eXBlO1xuXG52YXIgRVJST1JfSEFTX1NUQUNLID0gJ3N0YWNrJyBpbiBFcnJvcihET01fRVhDRVBUSU9OKTtcbnZhciBET01fRVhDRVBUSU9OX0hBU19TVEFDSyA9ICdzdGFjaycgaW4gbmV3IE5hdGl2ZURPTUV4Y2VwdGlvbigxLCAyKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGRlc2NyaXB0b3IgPSBOYXRpdmVET01FeGNlcHRpb24gJiYgREVTQ1JJUFRPUlMgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsIERPTV9FWENFUFRJT04pO1xuXG4vLyBCdW4gfiAwLjEuMSBET01FeGNlcHRpb24gaGF2ZSBpbmNvcnJlY3QgZGVzY3JpcHRvciBhbmQgd2UgY2FuJ3QgcmVkZWZpbmUgaXRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9KYXJyZWQtU3VtbmVyL2J1bi9pc3N1ZXMvMzk5XG52YXIgQlVHR1lfREVTQ1JJUFRPUiA9ICEhZGVzY3JpcHRvciAmJiAhKGRlc2NyaXB0b3Iud3JpdGFibGUgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUpO1xuXG52YXIgRk9SQ0VEX0NPTlNUUlVDVE9SID0gRVJST1JfSEFTX1NUQUNLICYmICFCVUdHWV9ERVNDUklQVE9SICYmICFET01fRVhDRVBUSU9OX0hBU19TVEFDSztcblxuLy8gYERPTUV4Y2VwdGlvbmAgY29uc3RydWN0b3IgcGF0Y2ggZm9yIGAuc3RhY2tgIHdoZXJlIGl0J3MgcmVxdWlyZWRcbi8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jZXMtRE9NRXhjZXB0aW9uLXNwZWNpYWxuZXNzXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZm9yY2VkOiBJU19QVVJFIHx8IEZPUkNFRF9DT05TVFJVQ1RPUiB9LCB7IC8vIFRPRE86IGZpeCBleHBvcnQgbG9naWNcbiAgRE9NRXhjZXB0aW9uOiBGT1JDRURfQ09OU1RSVUNUT1IgPyAkRE9NRXhjZXB0aW9uIDogTmF0aXZlRE9NRXhjZXB0aW9uXG59KTtcblxudmFyIFBvbHlmaWxsZWRET01FeGNlcHRpb24gPSBnZXRCdWlsdEluKERPTV9FWENFUFRJT04pO1xudmFyIFBvbHlmaWxsZWRET01FeGNlcHRpb25Qcm90b3R5cGUgPSBQb2x5ZmlsbGVkRE9NRXhjZXB0aW9uLnByb3RvdHlwZTtcblxuaWYgKFBvbHlmaWxsZWRET01FeGNlcHRpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgIT09IFBvbHlmaWxsZWRET01FeGNlcHRpb24pIHtcbiAgaWYgKCFJU19QVVJFKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoUG9seWZpbGxlZERPTUV4Y2VwdGlvblByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIFBvbHlmaWxsZWRET01FeGNlcHRpb24pKTtcbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiBET01FeGNlcHRpb25Db25zdGFudHMpIGlmIChoYXNPd24oRE9NRXhjZXB0aW9uQ29uc3RhbnRzLCBrZXkpKSB7XG4gICAgdmFyIGNvbnN0YW50ID0gRE9NRXhjZXB0aW9uQ29uc3RhbnRzW2tleV07XG4gICAgdmFyIGNvbnN0YW50TmFtZSA9IGNvbnN0YW50LnM7XG4gICAgaWYgKCFoYXNPd24oUG9seWZpbGxlZERPTUV4Y2VwdGlvbiwgY29uc3RhbnROYW1lKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkoUG9seWZpbGxlZERPTUV4Y2VwdGlvbiwgY29uc3RhbnROYW1lLCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoNiwgY29uc3RhbnQuYykpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi5zdGFjay5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1leGNlcHRpb24udG8tc3RyaW5nLXRhZy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBnZXRCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xuXG52YXIgRE9NX0VYQ0VQVElPTiA9ICdET01FeGNlcHRpb24nO1xuXG4vLyBgRE9NRXhjZXB0aW9uLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXWAgcHJvcGVydHlcbnNldFRvU3RyaW5nVGFnKGdldEJ1aWx0SW4oRE9NX0VYQ0VQVElPTiksIERPTV9FWENFUFRJT04pO1xuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWV4Y2VwdGlvbi50by1zdHJpbmctdGFnLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuc2VsZi5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciAkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2V4cG9ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBJTkNPUlJFQ1RfVkFMVUUgPSBnbG9iYWwuc2VsZiAhPT0gZ2xvYmFsO1xuXG4vLyBgc2VsZmAgZ2V0dGVyXG4vLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93aW5kb3ctb2JqZWN0Lmh0bWwjZG9tLXNlbGZcbnRyeSB7XG4gIGlmIChERVNDUklQVE9SUykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnc2VsZicpO1xuICAgIC8vIHNvbWUgZW5naW5lcyBoYXZlIGBzZWxmYCwgYnV0IHdpdGggaW5jb3JyZWN0IGRlc2NyaXB0b3JcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby9pc3N1ZXMvMTU3NjVcbiAgICBpZiAoSU5DT1JSRUNUX1ZBTFVFIHx8ICFkZXNjcmlwdG9yIHx8ICFkZXNjcmlwdG9yLmdldCB8fCAhZGVzY3JpcHRvci5lbnVtZXJhYmxlKSB7XG4gICAgICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoZ2xvYmFsLCAnc2VsZicsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBzZWxmKCkge1xuICAgICAgICAgIHJldHVybiBnbG9iYWw7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gc2VsZih2YWx1ZSkge1xuICAgICAgICAgIGlmICh0aGlzICE9PSBnbG9iYWwpIHRocm93ICRUeXBlRXJyb3IoJ0lsbGVnYWwgaW52b2NhdGlvbicpO1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwgJ3NlbGYnLCB7XG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSAkKHsgZ2xvYmFsOiB0cnVlLCBzaW1wbGU6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX1ZBTFVFIH0sIHtcbiAgICBzZWxmOiBnbG9iYWxcbiAgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5zZWxmLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuc3RydWN0dXJlZC1jbG9uZS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZ2V0QnVpbHRpbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanNcIik7XG52YXIgdW5jdXJyeVRoaXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzXCIpO1xudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKTtcbnZhciBpc0NhbGxhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanNcIik7XG52YXIgaXNDb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyIGlzU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qc1wiKTtcbnZhciBpdGVyYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzXCIpO1xudmFyIGhhc093biA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qc1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanNcIik7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzXCIpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzXCIpO1xudmFyIGdldFJlZ0V4cEZsYWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlZ2V4cC1nZXQtZmxhZ3MgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZ2V0LWZsYWdzLmpzXCIpO1xudmFyIE1hcEhlbHBlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvbWFwLWhlbHBlcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYXAtaGVscGVycy5qc1wiKTtcbnZhciBTZXRIZWxwZXJzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC1oZWxwZXJzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWhlbHBlcnMuanNcIik7XG52YXIgRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qc1wiKTtcbnZhciBQUk9QRVJfVFJBTlNGRVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RydWN0dXJlZC1jbG9uZS1wcm9wZXItdHJhbnNmZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJ1Y3R1cmVkLWNsb25lLXByb3Blci10cmFuc2Zlci5qc1wiKTtcblxudmFyIE9iamVjdCA9IGdsb2JhbC5PYmplY3Q7XG52YXIgQXJyYXkgPSBnbG9iYWwuQXJyYXk7XG52YXIgRGF0ZSA9IGdsb2JhbC5EYXRlO1xudmFyIEVycm9yID0gZ2xvYmFsLkVycm9yO1xudmFyIEV2YWxFcnJvciA9IGdsb2JhbC5FdmFsRXJyb3I7XG52YXIgUmFuZ2VFcnJvciA9IGdsb2JhbC5SYW5nZUVycm9yO1xudmFyIFJlZmVyZW5jZUVycm9yID0gZ2xvYmFsLlJlZmVyZW5jZUVycm9yO1xudmFyIFN5bnRheEVycm9yID0gZ2xvYmFsLlN5bnRheEVycm9yO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgVVJJRXJyb3IgPSBnbG9iYWwuVVJJRXJyb3I7XG52YXIgUGVyZm9ybWFuY2VNYXJrID0gZ2xvYmFsLlBlcmZvcm1hbmNlTWFyaztcbnZhciBXZWJBc3NlbWJseSA9IGdsb2JhbC5XZWJBc3NlbWJseTtcbnZhciBDb21waWxlRXJyb3IgPSBXZWJBc3NlbWJseSAmJiBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IgfHwgRXJyb3I7XG52YXIgTGlua0Vycm9yID0gV2ViQXNzZW1ibHkgJiYgV2ViQXNzZW1ibHkuTGlua0Vycm9yIHx8IEVycm9yO1xudmFyIFJ1bnRpbWVFcnJvciA9IFdlYkFzc2VtYmx5ICYmIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciB8fCBFcnJvcjtcbnZhciBET01FeGNlcHRpb24gPSBnZXRCdWlsdGluKCdET01FeGNlcHRpb24nKTtcbnZhciBNYXAgPSBNYXBIZWxwZXJzLk1hcDtcbnZhciBtYXBIYXMgPSBNYXBIZWxwZXJzLmhhcztcbnZhciBtYXBHZXQgPSBNYXBIZWxwZXJzLmdldDtcbnZhciBtYXBTZXQgPSBNYXBIZWxwZXJzLnNldDtcbnZhciBTZXQgPSBTZXRIZWxwZXJzLlNldDtcbnZhciBzZXRBZGQgPSBTZXRIZWxwZXJzLmFkZDtcbnZhciBvYmplY3RLZXlzID0gZ2V0QnVpbHRpbignT2JqZWN0JywgJ2tleXMnKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgdGhpc0Jvb2xlYW5WYWx1ZSA9IHVuY3VycnlUaGlzKHRydWUudmFsdWVPZik7XG52YXIgdGhpc051bWJlclZhbHVlID0gdW5jdXJyeVRoaXMoMS4wLnZhbHVlT2YpO1xudmFyIHRoaXNTdHJpbmdWYWx1ZSA9IHVuY3VycnlUaGlzKCcnLnZhbHVlT2YpO1xudmFyIHRoaXNUaW1lVmFsdWUgPSB1bmN1cnJ5VGhpcyhEYXRlLnByb3RvdHlwZS5nZXRUaW1lKTtcbnZhciBQRVJGT1JNQU5DRV9NQVJLID0gdWlkKCdzdHJ1Y3R1cmVkQ2xvbmUnKTtcbnZhciBEQVRBX0NMT05FX0VSUk9SID0gJ0RhdGFDbG9uZUVycm9yJztcbnZhciBUUkFOU0ZFUlJJTkcgPSAnVHJhbnNmZXJyaW5nJztcblxudmFyIGNoZWNrQmFzaWNTZW1hbnRpYyA9IGZ1bmN0aW9uIChzdHJ1Y3R1cmVkQ2xvbmVJbXBsZW1lbnRhdGlvbikge1xuICByZXR1cm4gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2V0MSA9IG5ldyBnbG9iYWwuU2V0KFs3XSk7XG4gICAgdmFyIHNldDIgPSBzdHJ1Y3R1cmVkQ2xvbmVJbXBsZW1lbnRhdGlvbihzZXQxKTtcbiAgICB2YXIgbnVtYmVyID0gc3RydWN0dXJlZENsb25lSW1wbGVtZW50YXRpb24oT2JqZWN0KDcpKTtcbiAgICByZXR1cm4gc2V0MiA9PSBzZXQxIHx8ICFzZXQyLmhhcyg3KSB8fCB0eXBlb2YgbnVtYmVyICE9ICdvYmplY3QnIHx8IG51bWJlciAhPSA3O1xuICB9KSAmJiBzdHJ1Y3R1cmVkQ2xvbmVJbXBsZW1lbnRhdGlvbjtcbn07XG5cbnZhciBjaGVja0Vycm9yc0Nsb25pbmcgPSBmdW5jdGlvbiAoc3RydWN0dXJlZENsb25lSW1wbGVtZW50YXRpb24sICRFcnJvcikge1xuICByZXR1cm4gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZXJyb3IgPSBuZXcgJEVycm9yKCk7XG4gICAgdmFyIHRlc3QgPSBzdHJ1Y3R1cmVkQ2xvbmVJbXBsZW1lbnRhdGlvbih7IGE6IGVycm9yLCBiOiBlcnJvciB9KTtcbiAgICByZXR1cm4gISh0ZXN0ICYmIHRlc3QuYSA9PT0gdGVzdC5iICYmIHRlc3QuYSBpbnN0YW5jZW9mICRFcnJvciAmJiB0ZXN0LmEuc3RhY2sgPT09IGVycm9yLnN0YWNrKTtcbiAgfSk7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL2h0bWwvcHVsbC81NzQ5XG52YXIgY2hlY2tOZXdFcnJvcnNDbG9uaW5nU2VtYW50aWMgPSBmdW5jdGlvbiAoc3RydWN0dXJlZENsb25lSW1wbGVtZW50YXRpb24pIHtcbiAgcmV0dXJuICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRlc3QgPSBzdHJ1Y3R1cmVkQ2xvbmVJbXBsZW1lbnRhdGlvbihuZXcgZ2xvYmFsLkFnZ3JlZ2F0ZUVycm9yKFsxXSwgUEVSRk9STUFOQ0VfTUFSSywgeyBjYXVzZTogMyB9KSk7XG4gICAgcmV0dXJuIHRlc3QubmFtZSAhPSAnQWdncmVnYXRlRXJyb3InIHx8IHRlc3QuZXJyb3JzWzBdICE9IDEgfHwgdGVzdC5tZXNzYWdlICE9IFBFUkZPUk1BTkNFX01BUksgfHwgdGVzdC5jYXVzZSAhPSAzO1xuICB9KTtcbn07XG5cbi8vIEZGOTQrLCBTYWZhcmkgMTUuNCssIENocm9tZSA5OCssIE5vZGVKUyAxNy4wKywgRGVubyAxLjEzK1xuLy8gRkY8MTAzIGFuZCBTYWZhcmkgaW1wbGVtZW50YXRpb25zIGNhbid0IGNsb25lIGVycm9yc1xuLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NjYwNFxuLy8gRkYxMDMgY2FuIGNsb25lIGVycm9ycywgYnV0IGAuc3RhY2tgIG9mIGNsb25lIGlzIGFuIGVtcHR5IHN0cmluZ1xuLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3ODc2MlxuLy8gRkYxMDQrIGZpeGVkIGl0IG9uIHVzdWFsIGVycm9ycywgYnV0IG5vdCBvbiBET01FeGNlcHRpb25zXG4vLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc3MzIxXG4vLyBDaHJvbWUgPDEwMiByZXR1cm5zIGBudWxsYCBpZiBjbG9uZWQgb2JqZWN0IGNvbnRhaW5zIG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gb25lIGVycm9yXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xMjU0MlxuLy8gTm9kZUpTIGltcGxlbWVudGF0aW9uIGNhbid0IGNsb25lIERPTUV4Y2VwdGlvbnNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDEwMzhcbi8vIG9ubHkgRkYxMDMrIHN1cHBvcnRzIG5ldyAoaHRtbC81NzQ5KSBlcnJvciBjbG9uaW5nIHNlbWFudGljXG52YXIgbmF0aXZlU3RydWN0dXJlZENsb25lID0gZ2xvYmFsLnN0cnVjdHVyZWRDbG9uZTtcblxudmFyIEZPUkNFRF9SRVBMQUNFTUVOVCA9IElTX1BVUkVcbiAgfHwgIWNoZWNrRXJyb3JzQ2xvbmluZyhuYXRpdmVTdHJ1Y3R1cmVkQ2xvbmUsIEVycm9yKVxuICB8fCAhY2hlY2tFcnJvcnNDbG9uaW5nKG5hdGl2ZVN0cnVjdHVyZWRDbG9uZSwgRE9NRXhjZXB0aW9uKVxuICB8fCAhY2hlY2tOZXdFcnJvcnNDbG9uaW5nU2VtYW50aWMobmF0aXZlU3RydWN0dXJlZENsb25lKTtcblxuLy8gQ2hyb21lIDgyKywgU2FmYXJpIDE0LjErLCBEZW5vIDEuMTErXG4vLyBDaHJvbWUgNzgtODEgaW1wbGVtZW50YXRpb24gc3dhcHMgYC5uYW1lYCBhbmQgYC5tZXNzYWdlYCBvZiBjbG9uZWQgYERPTUV4Y2VwdGlvbmBcbi8vIENocm9tZSByZXR1cm5zIGBudWxsYCBpZiBjbG9uZWQgb2JqZWN0IGNvbnRhaW5zIG11bHRpcGxlIHJlZmVyZW5jZXMgdG8gb25lIGVycm9yXG4vLyBTYWZhcmkgMTQuMSBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGNsb25lIHNvbWUgYFJlZ0V4cGAgZmxhZ3MsIHNvIHJlcXVpcmVzIGEgd29ya2Fyb3VuZFxuLy8gU2FmYXJpIGltcGxlbWVudGF0aW9uIGNhbid0IGNsb25lIGVycm9yc1xuLy8gRGVubyAxLjItMS4xMCBpbXBsZW1lbnRhdGlvbnMgdG9vIG5haXZlXG4vLyBOb2RlSlMgMTYuMCsgZG9lcyBub3QgaGF2ZSBgUGVyZm9ybWFuY2VNYXJrYCBjb25zdHJ1Y3RvclxuLy8gTm9kZUpTIDwxNy4yIHN0cnVjdHVyZWQgY2xvbmluZyBpbXBsZW1lbnRhdGlvbiBmcm9tIGBwZXJmb3JtYW5jZS5tYXJrYCBpcyB0b28gbmFpdmVcbi8vIGFuZCBjYW4ndCBjbG9uZSwgZm9yIGV4YW1wbGUsIGBSZWdFeHBgIG9yIHNvbWUgYm94ZWQgcHJpbWl0aXZlc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy80MDg0MFxuLy8gbm8gb25lIG9mIHRob3NlIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0cyBuZXcgKGh0bWwvNTc0OSkgZXJyb3IgY2xvbmluZyBzZW1hbnRpY1xudmFyIHN0cnVjdHVyZWRDbG9uZUZyb21NYXJrID0gIW5hdGl2ZVN0cnVjdHVyZWRDbG9uZSAmJiBjaGVja0Jhc2ljU2VtYW50aWMoZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBuZXcgUGVyZm9ybWFuY2VNYXJrKFBFUkZPUk1BTkNFX01BUkssIHsgZGV0YWlsOiB2YWx1ZSB9KS5kZXRhaWw7XG59KTtcblxudmFyIG5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUgPSBjaGVja0Jhc2ljU2VtYW50aWMobmF0aXZlU3RydWN0dXJlZENsb25lKSB8fCBzdHJ1Y3R1cmVkQ2xvbmVGcm9tTWFyaztcblxudmFyIHRocm93VW5jbG9uZWFibGUgPSBmdW5jdGlvbiAodHlwZSkge1xuICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdVbmNsb25lYWJsZSB0eXBlOiAnICsgdHlwZSwgREFUQV9DTE9ORV9FUlJPUik7XG59O1xuXG52YXIgdGhyb3dVbnBvbHlmaWxsYWJsZSA9IGZ1bmN0aW9uICh0eXBlLCBhY3Rpb24pIHtcbiAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbigoYWN0aW9uIHx8ICdDbG9uaW5nJykgKyAnIG9mICcgKyB0eXBlICsgJyBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiB0aGlzIGVuZ2luZScsIERBVEFfQ0xPTkVfRVJST1IpO1xufTtcblxudmFyIHRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUgPSBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgaWYgKCFuYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKSB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICByZXR1cm4gbmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSh2YWx1ZSk7XG59O1xuXG52YXIgY3JlYXRlRGF0YVRyYW5zZmVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZGF0YVRyYW5zZmVyO1xuICB0cnkge1xuICAgIGRhdGFUcmFuc2ZlciA9IG5ldyBnbG9iYWwuRGF0YVRyYW5zZmVyKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGFUcmFuc2ZlciA9IG5ldyBnbG9iYWwuQ2xpcGJvYXJkRXZlbnQoJycpLmNsaXBib2FyZERhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IyKSB7IC8qIGVtcHR5ICovIH1cbiAgfVxuICByZXR1cm4gZGF0YVRyYW5zZmVyICYmIGRhdGFUcmFuc2Zlci5pdGVtcyAmJiBkYXRhVHJhbnNmZXIuZmlsZXMgPyBkYXRhVHJhbnNmZXIgOiBudWxsO1xufTtcblxudmFyIGNsb25lQnVmZmVyID0gZnVuY3Rpb24gKHZhbHVlLCBtYXAsICR0eXBlKSB7XG4gIGlmIChtYXBIYXMobWFwLCB2YWx1ZSkpIHJldHVybiBtYXBHZXQobWFwLCB2YWx1ZSk7XG5cbiAgdmFyIHR5cGUgPSAkdHlwZSB8fCBjbGFzc29mKHZhbHVlKTtcbiAgdmFyIGNsb25lLCBsZW5ndGgsIG9wdGlvbnMsIHNvdXJjZSwgdGFyZ2V0LCBpO1xuXG4gIGlmICh0eXBlID09PSAnU2hhcmVkQXJyYXlCdWZmZXInKSB7XG4gICAgaWYgKG5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUpIGNsb25lID0gbmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSh2YWx1ZSk7XG4gICAgLy8gU2hhcmVkQXJyYXlCdWZmZXIgc2hvdWxkIHVzZSBzaGFyZWQgbWVtb3J5LCB3ZSBjYW4ndCBwb2x5ZmlsbCBpdCwgc28gcmV0dXJuIHRoZSBvcmlnaW5hbFxuICAgIGVsc2UgY2xvbmUgPSB2YWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgRGF0YVZpZXcgPSBnbG9iYWwuRGF0YVZpZXc7XG5cbiAgICAvLyBgQXJyYXlCdWZmZXIjc2xpY2VgIGlzIG5vdCBhdmFpbGFibGUgaW4gSUUxMFxuICAgIC8vIGBBcnJheUJ1ZmZlciNzbGljZWAgYW5kIGBEYXRhVmlld2AgYXJlIG5vdCBhdmFpbGFibGUgaW4gb2xkIEZGXG4gICAgaWYgKCFEYXRhVmlldyAmJiB0eXBlb2YgdmFsdWUuc2xpY2UgIT0gJ2Z1bmN0aW9uJykgdGhyb3dVbnBvbHlmaWxsYWJsZSgnQXJyYXlCdWZmZXInKTtcbiAgICAvLyBkZXRhY2hlZCBidWZmZXJzIHRocm93cyBpbiBgRGF0YVZpZXdgIGFuZCBgLnNsaWNlYFxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlLnNsaWNlID09ICdmdW5jdGlvbicgJiYgIXZhbHVlLnJlc2l6YWJsZSkge1xuICAgICAgICBjbG9uZSA9IHZhbHVlLnNsaWNlKDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVuZ3RoID0gdmFsdWUuYnl0ZUxlbmd0aDtcbiAgICAgICAgb3B0aW9ucyA9ICdtYXhCeXRlTGVuZ3RoJyBpbiB2YWx1ZSA/IHsgbWF4Qnl0ZUxlbmd0aDogdmFsdWUubWF4Qnl0ZUxlbmd0aCB9IDogdW5kZWZpbmVkO1xuICAgICAgICBjbG9uZSA9IG5ldyBBcnJheUJ1ZmZlcihsZW5ndGgsIG9wdGlvbnMpO1xuICAgICAgICBzb3VyY2UgPSBuZXcgRGF0YVZpZXcodmFsdWUpO1xuICAgICAgICB0YXJnZXQgPSBuZXcgRGF0YVZpZXcoY2xvbmUpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB0YXJnZXQuc2V0VWludDgoaSwgc291cmNlLmdldFVpbnQ4KGkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCdBcnJheUJ1ZmZlciBpcyBkZXRhY2hlZCcsIERBVEFfQ0xPTkVfRVJST1IpO1xuICAgIH1cbiAgfVxuXG4gIG1hcFNldChtYXAsIHZhbHVlLCBjbG9uZSk7XG5cbiAgcmV0dXJuIGNsb25lO1xufTtcblxudmFyIGNsb25lVmlldyA9IGZ1bmN0aW9uICh2YWx1ZSwgdHlwZSwgb2Zmc2V0LCBsZW5ndGgsIG1hcCkge1xuICB2YXIgQyA9IGdsb2JhbFt0eXBlXTtcbiAgLy8gaW4gc29tZSBvbGQgZW5naW5lcyBsaWtlIFNhZmFyaSA5LCB0eXBlb2YgQyBpcyAnb2JqZWN0J1xuICAvLyBvbiBVaW50OENsYW1wZWRBcnJheSBvciBzb21lIG90aGVyIGNvbnN0cnVjdG9yc1xuICBpZiAoIWlzT2JqZWN0KEMpKSB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICByZXR1cm4gbmV3IEMoY2xvbmVCdWZmZXIodmFsdWUuYnVmZmVyLCBtYXApLCBvZmZzZXQsIGxlbmd0aCk7XG59O1xuXG52YXIgUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAob2JqZWN0LCB0eXBlLCBtZXRhZGF0YSkge1xuICB0aGlzLm9iamVjdCA9IG9iamVjdDtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5tZXRhZGF0YSA9IG1ldGFkYXRhO1xufTtcblxudmFyIHN0cnVjdHVyZWRDbG9uZUludGVybmFsID0gZnVuY3Rpb24gKHZhbHVlLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycykge1xuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB0aHJvd1VuY2xvbmVhYmxlKCdTeW1ib2wnKTtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgLy8gZWZmZWN0aXZlbHkgcHJlc2VydmVzIGNpcmN1bGFyIHJlZmVyZW5jZXNcbiAgaWYgKG1hcCkge1xuICAgIGlmIChtYXBIYXMobWFwLCB2YWx1ZSkpIHJldHVybiBtYXBHZXQobWFwLCB2YWx1ZSk7XG4gIH0gZWxzZSBtYXAgPSBuZXcgTWFwKCk7XG5cbiAgdmFyIHR5cGUgPSBjbGFzc29mKHZhbHVlKTtcbiAgdmFyIEMsIG5hbWUsIGNsb25lZCwgZGF0YVRyYW5zZmVyLCBpLCBsZW5ndGgsIGtleXMsIGtleTtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdBcnJheSc6XG4gICAgICBjbG9uZWQgPSBBcnJheShsZW5ndGhPZkFycmF5TGlrZSh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIGNsb25lZCA9IHt9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnTWFwJzpcbiAgICAgIGNsb25lZCA9IG5ldyBNYXAoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1NldCc6XG4gICAgICBjbG9uZWQgPSBuZXcgU2V0KCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdSZWdFeHAnOlxuICAgICAgLy8gaW4gdGhpcyBibG9jayBiZWNhdXNlIG9mIGEgU2FmYXJpIDE0LjEgYnVnXG4gICAgICAvLyBvbGQgRkYgZG9lcyBub3QgY2xvbmUgcmVnZXhlcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBzbyBnZXQgdGhlIHNvdXJjZSBhbmQgZmxhZ3MgZGlyZWN0bHlcbiAgICAgIGNsb25lZCA9IG5ldyBSZWdFeHAodmFsdWUuc291cmNlLCBnZXRSZWdFeHBGbGFncyh2YWx1ZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRXJyb3InOlxuICAgICAgbmFtZSA9IHZhbHVlLm5hbWU7XG4gICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgY2FzZSAnQWdncmVnYXRlRXJyb3InOlxuICAgICAgICAgIGNsb25lZCA9IGdldEJ1aWx0aW4oJ0FnZ3JlZ2F0ZUVycm9yJykoW10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdFdmFsRXJyb3InOlxuICAgICAgICAgIGNsb25lZCA9IEV2YWxFcnJvcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdSYW5nZUVycm9yJzpcbiAgICAgICAgICBjbG9uZWQgPSBSYW5nZUVycm9yKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1JlZmVyZW5jZUVycm9yJzpcbiAgICAgICAgICBjbG9uZWQgPSBSZWZlcmVuY2VFcnJvcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdTeW50YXhFcnJvcic6XG4gICAgICAgICAgY2xvbmVkID0gU3ludGF4RXJyb3IoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVHlwZUVycm9yJzpcbiAgICAgICAgICBjbG9uZWQgPSBUeXBlRXJyb3IoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVVJJRXJyb3InOlxuICAgICAgICAgIGNsb25lZCA9IFVSSUVycm9yKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0NvbXBpbGVFcnJvcic6XG4gICAgICAgICAgY2xvbmVkID0gQ29tcGlsZUVycm9yKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0xpbmtFcnJvcic6XG4gICAgICAgICAgY2xvbmVkID0gTGlua0Vycm9yKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1J1bnRpbWVFcnJvcic6XG4gICAgICAgICAgY2xvbmVkID0gUnVudGltZUVycm9yKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2xvbmVkID0gRXJyb3IoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RPTUV4Y2VwdGlvbic6XG4gICAgICBjbG9uZWQgPSBuZXcgRE9NRXhjZXB0aW9uKHZhbHVlLm1lc3NhZ2UsIHZhbHVlLm5hbWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnQXJyYXlCdWZmZXInOlxuICAgIGNhc2UgJ1NoYXJlZEFycmF5QnVmZmVyJzpcbiAgICAgIGNsb25lZCA9IHRyYW5zZmVycmVkQnVmZmVyc1xuICAgICAgICA/IG5ldyBQbGFjZWhvbGRlcih2YWx1ZSwgdHlwZSlcbiAgICAgICAgOiBjbG9uZUJ1ZmZlcih2YWx1ZSwgbWFwLCB0eXBlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RhdGFWaWV3JzpcbiAgICBjYXNlICdJbnQ4QXJyYXknOlxuICAgIGNhc2UgJ1VpbnQ4QXJyYXknOlxuICAgIGNhc2UgJ1VpbnQ4Q2xhbXBlZEFycmF5JzpcbiAgICBjYXNlICdJbnQxNkFycmF5JzpcbiAgICBjYXNlICdVaW50MTZBcnJheSc6XG4gICAgY2FzZSAnSW50MzJBcnJheSc6XG4gICAgY2FzZSAnVWludDMyQXJyYXknOlxuICAgIGNhc2UgJ0Zsb2F0MTZBcnJheSc6XG4gICAgY2FzZSAnRmxvYXQzMkFycmF5JzpcbiAgICBjYXNlICdGbG9hdDY0QXJyYXknOlxuICAgIGNhc2UgJ0JpZ0ludDY0QXJyYXknOlxuICAgIGNhc2UgJ0JpZ1VpbnQ2NEFycmF5JzpcbiAgICAgIGxlbmd0aCA9IHR5cGUgPT09ICdEYXRhVmlldycgPyB2YWx1ZS5ieXRlTGVuZ3RoIDogdmFsdWUubGVuZ3RoO1xuICAgICAgY2xvbmVkID0gdHJhbnNmZXJyZWRCdWZmZXJzXG4gICAgICAgID8gbmV3IFBsYWNlaG9sZGVyKHZhbHVlLCB0eXBlLCB7IG9mZnNldDogdmFsdWUuYnl0ZU9mZnNldCwgbGVuZ3RoOiBsZW5ndGggfSlcbiAgICAgICAgOiBjbG9uZVZpZXcodmFsdWUsIHR5cGUsIHZhbHVlLmJ5dGVPZmZzZXQsIGxlbmd0aCwgbWFwKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RPTVF1YWQnOlxuICAgICAgdHJ5IHtcbiAgICAgICAgY2xvbmVkID0gbmV3IERPTVF1YWQoXG4gICAgICAgICAgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodmFsdWUucDEsIG1hcCwgdHJhbnNmZXJyZWRCdWZmZXJzKSxcbiAgICAgICAgICBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh2YWx1ZS5wMiwgbWFwLCB0cmFuc2ZlcnJlZEJ1ZmZlcnMpLFxuICAgICAgICAgIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHZhbHVlLnAzLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycyksXG4gICAgICAgICAgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodmFsdWUucDQsIG1hcCwgdHJhbnNmZXJyZWRCdWZmZXJzKVxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY2xvbmVkID0gdHJ5TmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSh2YWx1ZSwgdHlwZSk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICdGaWxlJzpcbiAgICAgIGlmIChuYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKSB0cnkge1xuICAgICAgICBjbG9uZWQgPSBuYXRpdmVSZXN0cmljdGVkU3RydWN0dXJlZENsb25lKHZhbHVlKTtcbiAgICAgICAgLy8gTm9kZUpTIDIwLjAuMCBidWcsIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDc2MTJcbiAgICAgICAgaWYgKGNsYXNzb2YoY2xvbmVkKSAhPT0gdHlwZSkgY2xvbmVkID0gdW5kZWZpbmVkO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgICAgaWYgKCFjbG9uZWQpIHRyeSB7XG4gICAgICAgIGNsb25lZCA9IG5ldyBGaWxlKFt2YWx1ZV0sIHZhbHVlLm5hbWUsIHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICAgIGlmICghY2xvbmVkKSB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnRmlsZUxpc3QnOlxuICAgICAgZGF0YVRyYW5zZmVyID0gY3JlYXRlRGF0YVRyYW5zZmVyKCk7XG4gICAgICBpZiAoZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgIGZvciAoaSA9IDAsIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKHZhbHVlKTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh2YWx1ZVtpXSwgbWFwLCB0cmFuc2ZlcnJlZEJ1ZmZlcnMpKTtcbiAgICAgICAgfVxuICAgICAgICBjbG9uZWQgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICB9IGVsc2UgY2xvbmVkID0gdHJ5TmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSh2YWx1ZSwgdHlwZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdJbWFnZURhdGEnOlxuICAgICAgLy8gU2FmYXJpIDkgSW1hZ2VEYXRhIGlzIGEgY29uc3RydWN0b3IsIGJ1dCB0eXBlb2YgSW1hZ2VEYXRhIGlzICdvYmplY3QnXG4gICAgICB0cnkge1xuICAgICAgICBjbG9uZWQgPSBuZXcgSW1hZ2VEYXRhKFxuICAgICAgICAgIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHZhbHVlLmRhdGEsIG1hcCwgdHJhbnNmZXJyZWRCdWZmZXJzKSxcbiAgICAgICAgICB2YWx1ZS53aWR0aCxcbiAgICAgICAgICB2YWx1ZS5oZWlnaHQsXG4gICAgICAgICAgeyBjb2xvclNwYWNlOiB2YWx1ZS5jb2xvclNwYWNlIH1cbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNsb25lZCA9IHRyeU5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUodmFsdWUsIHR5cGUpO1xuICAgICAgfSBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKG5hdGl2ZVJlc3RyaWN0ZWRTdHJ1Y3R1cmVkQ2xvbmUpIHtcbiAgICAgICAgY2xvbmVkID0gbmF0aXZlUmVzdHJpY3RlZFN0cnVjdHVyZWRDbG9uZSh2YWx1ZSk7XG4gICAgICB9IGVsc2Ugc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgICAgICAgLy8gY2FuIGJlIGEgM3JkIHBhcnR5IHBvbHlmaWxsXG4gICAgICAgICAgY2xvbmVkID0gT2JqZWN0KHZhbHVlLnZhbHVlT2YoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Jvb2xlYW4nOlxuICAgICAgICAgIGNsb25lZCA9IE9iamVjdCh0aGlzQm9vbGVhblZhbHVlKHZhbHVlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ051bWJlcic6XG4gICAgICAgICAgY2xvbmVkID0gT2JqZWN0KHRoaXNOdW1iZXJWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgICAgIGNsb25lZCA9IE9iamVjdCh0aGlzU3RyaW5nVmFsdWUodmFsdWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgY2xvbmVkID0gbmV3IERhdGUodGhpc1RpbWVWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdCbG9iJzpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY2xvbmVkID0gdmFsdWUuc2xpY2UoMCwgdmFsdWUuc2l6ZSwgdmFsdWUudHlwZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93VW5wb2x5ZmlsbGFibGUodHlwZSk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSAnRE9NUG9pbnQnOlxuICAgICAgICBjYXNlICdET01Qb2ludFJlYWRPbmx5JzpcbiAgICAgICAgICBDID0gZ2xvYmFsW3R5cGVdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZWQgPSBDLmZyb21Qb2ludFxuICAgICAgICAgICAgICA/IEMuZnJvbVBvaW50KHZhbHVlKVxuICAgICAgICAgICAgICA6IG5ldyBDKHZhbHVlLngsIHZhbHVlLnksIHZhbHVlLnosIHZhbHVlLncpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RPTVJlY3QnOlxuICAgICAgICBjYXNlICdET01SZWN0UmVhZE9ubHknOlxuICAgICAgICAgIEMgPSBnbG9iYWxbdHlwZV07XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNsb25lZCA9IEMuZnJvbVJlY3RcbiAgICAgICAgICAgICAgPyBDLmZyb21SZWN0KHZhbHVlKVxuICAgICAgICAgICAgICA6IG5ldyBDKHZhbHVlLngsIHZhbHVlLnksIHZhbHVlLndpZHRoLCB2YWx1ZS5oZWlnaHQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RPTU1hdHJpeCc6XG4gICAgICAgIGNhc2UgJ0RPTU1hdHJpeFJlYWRPbmx5JzpcbiAgICAgICAgICBDID0gZ2xvYmFsW3R5cGVdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZWQgPSBDLmZyb21NYXRyaXhcbiAgICAgICAgICAgICAgPyBDLmZyb21NYXRyaXgodmFsdWUpXG4gICAgICAgICAgICAgIDogbmV3IEModmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICAgICAgICAgIH0gYnJlYWs7XG4gICAgICAgIGNhc2UgJ0F1ZGlvRGF0YSc6XG4gICAgICAgIGNhc2UgJ1ZpZGVvRnJhbWUnOlxuICAgICAgICAgIGlmICghaXNDYWxsYWJsZSh2YWx1ZS5jbG9uZSkpIHRocm93VW5wb2x5ZmlsbGFibGUodHlwZSk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNsb25lZCA9IHZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93VW5jbG9uZWFibGUodHlwZSk7XG4gICAgICAgICAgfSBicmVhaztcbiAgICAgICAgY2FzZSAnQ3JvcFRhcmdldCc6XG4gICAgICAgIGNhc2UgJ0NyeXB0b0tleSc6XG4gICAgICAgIGNhc2UgJ0ZpbGVTeXN0ZW1EaXJlY3RvcnlIYW5kbGUnOlxuICAgICAgICBjYXNlICdGaWxlU3lzdGVtRmlsZUhhbmRsZSc6XG4gICAgICAgIGNhc2UgJ0ZpbGVTeXN0ZW1IYW5kbGUnOlxuICAgICAgICBjYXNlICdHUFVDb21waWxhdGlvbkluZm8nOlxuICAgICAgICBjYXNlICdHUFVDb21waWxhdGlvbk1lc3NhZ2UnOlxuICAgICAgICBjYXNlICdJbWFnZUJpdG1hcCc6XG4gICAgICAgIGNhc2UgJ1JUQ0NlcnRpZmljYXRlJzpcbiAgICAgICAgY2FzZSAnV2ViQXNzZW1ibHkuTW9kdWxlJzpcbiAgICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUpO1xuICAgICAgICAgIC8vIGJyZWFrIG9taXR0ZWRcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvd1VuY2xvbmVhYmxlKHR5cGUpO1xuICAgICAgfVxuICB9XG5cbiAgbWFwU2V0KG1hcCwgdmFsdWUsIGNsb25lZCk7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnQXJyYXknOlxuICAgIGNhc2UgJ09iamVjdCc6XG4gICAgICBrZXlzID0gb2JqZWN0S2V5cyh2YWx1ZSk7XG4gICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShrZXlzKTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KGNsb25lZCwga2V5LCBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbCh2YWx1ZVtrZXldLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycykpO1xuICAgICAgfSBicmVhaztcbiAgICBjYXNlICdNYXAnOlxuICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAodiwgaykge1xuICAgICAgICBtYXBTZXQoY2xvbmVkLCBzdHJ1Y3R1cmVkQ2xvbmVJbnRlcm5hbChrLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycyksIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHYsIG1hcCwgdHJhbnNmZXJyZWRCdWZmZXJzKSk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1NldCc6XG4gICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHNldEFkZChjbG9uZWQsIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHYsIG1hcCwgdHJhbnNmZXJyZWRCdWZmZXJzKSk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0Vycm9yJzpcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShjbG9uZWQsICdtZXNzYWdlJywgc3RydWN0dXJlZENsb25lSW50ZXJuYWwodmFsdWUubWVzc2FnZSwgbWFwLCB0cmFuc2ZlcnJlZEJ1ZmZlcnMpKTtcbiAgICAgIGlmIChoYXNPd24odmFsdWUsICdjYXVzZScpKSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShjbG9uZWQsICdjYXVzZScsIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHZhbHVlLmNhdXNlLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycykpO1xuICAgICAgfVxuICAgICAgaWYgKG5hbWUgPT0gJ0FnZ3JlZ2F0ZUVycm9yJykge1xuICAgICAgICBjbG9uZWQuZXJyb3JzID0gc3RydWN0dXJlZENsb25lSW50ZXJuYWwodmFsdWUuZXJyb3JzLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycyk7XG4gICAgICB9IC8vIGJyZWFrIG9taXR0ZWRcbiAgICBjYXNlICdET01FeGNlcHRpb24nOlxuICAgICAgaWYgKEVSUk9SX1NUQUNLX0lOU1RBTExBQkxFKSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShjbG9uZWQsICdzdGFjaycsIHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHZhbHVlLnN0YWNrLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycykpO1xuICAgICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb25lZDtcbn07XG5cbnZhciByZXBsYWNlUGxhY2Vob2xkZXJzID0gZnVuY3Rpb24gKHZhbHVlLCBtYXApIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgaWYgKG1hcEhhcyhtYXAsIHZhbHVlKSkgcmV0dXJuIG1hcEdldChtYXAsIHZhbHVlKTtcblxuICB2YXIgdHlwZSwgb2JqZWN0LCBtZXRhZGF0YSwgaSwgbGVuZ3RoLCBrZXlzLCBrZXksIHJlcGxhY2VtZW50O1xuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFBsYWNlaG9sZGVyKSB7XG4gICAgdHlwZSA9IHZhbHVlLnR5cGU7XG4gICAgb2JqZWN0ID0gdmFsdWUub2JqZWN0O1xuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdBcnJheUJ1ZmZlcic6XG4gICAgICBjYXNlICdTaGFyZWRBcnJheUJ1ZmZlcic6XG4gICAgICAgIHJlcGxhY2VtZW50ID0gY2xvbmVCdWZmZXIob2JqZWN0LCBtYXAsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RhdGFWaWV3JzpcbiAgICAgIGNhc2UgJ0ludDhBcnJheSc6XG4gICAgICBjYXNlICdVaW50OEFycmF5JzpcbiAgICAgIGNhc2UgJ1VpbnQ4Q2xhbXBlZEFycmF5JzpcbiAgICAgIGNhc2UgJ0ludDE2QXJyYXknOlxuICAgICAgY2FzZSAnVWludDE2QXJyYXknOlxuICAgICAgY2FzZSAnSW50MzJBcnJheSc6XG4gICAgICBjYXNlICdVaW50MzJBcnJheSc6XG4gICAgICBjYXNlICdGbG9hdDE2QXJyYXknOlxuICAgICAgY2FzZSAnRmxvYXQzMkFycmF5JzpcbiAgICAgIGNhc2UgJ0Zsb2F0NjRBcnJheSc6XG4gICAgICBjYXNlICdCaWdJbnQ2NEFycmF5JzpcbiAgICAgIGNhc2UgJ0JpZ1VpbnQ2NEFycmF5JzpcbiAgICAgICAgbWV0YWRhdGEgPSB2YWx1ZS5tZXRhZGF0YTtcbiAgICAgICAgcmVwbGFjZW1lbnQgPSBjbG9uZVZpZXcob2JqZWN0LCB0eXBlLCBtZXRhZGF0YS5vZmZzZXQsIG1ldGFkYXRhLmxlbmd0aCwgbWFwKTtcbiAgICB9XG4gIH0gZWxzZSBzd2l0Y2ggKGNsYXNzb2YodmFsdWUpKSB7XG4gICAgY2FzZSAnQXJyYXknOlxuICAgIGNhc2UgJ09iamVjdCc6XG4gICAgICBrZXlzID0gb2JqZWN0S2V5cyh2YWx1ZSk7XG4gICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShrZXlzKTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIHZhbHVlW2tleV0gPSByZXBsYWNlUGxhY2Vob2xkZXJzKHZhbHVlW2tleV0sIG1hcCk7XG4gICAgICB9IGJyZWFrO1xuICAgIGNhc2UgJ01hcCc6XG4gICAgICByZXBsYWNlbWVudCA9IG5ldyBNYXAoKTtcbiAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKHYsIGspIHtcbiAgICAgICAgbWFwU2V0KHJlcGxhY2VtZW50LCByZXBsYWNlUGxhY2Vob2xkZXJzKGssIG1hcCksIHJlcGxhY2VQbGFjZWhvbGRlcnModiwgbWFwKSk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1NldCc6XG4gICAgICByZXBsYWNlbWVudCA9IG5ldyBTZXQoKTtcbiAgICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgc2V0QWRkKHJlcGxhY2VtZW50LCByZXBsYWNlUGxhY2Vob2xkZXJzKHYsIG1hcCkpO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdFcnJvcic6XG4gICAgICB2YWx1ZS5tZXNzYWdlID0gcmVwbGFjZVBsYWNlaG9sZGVycyh2YWx1ZS5tZXNzYWdlLCBtYXApO1xuICAgICAgaWYgKGhhc093bih2YWx1ZSwgJ2NhdXNlJykpIHtcbiAgICAgICAgdmFsdWUuY2F1c2UgPSByZXBsYWNlUGxhY2Vob2xkZXJzKHZhbHVlLmNhdXNlLCBtYXApO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlLm5hbWUgPT0gJ0FnZ3JlZ2F0ZUVycm9yJykge1xuICAgICAgICB2YWx1ZS5lcnJvcnMgPSByZXBsYWNlUGxhY2Vob2xkZXJzKHZhbHVlLmVycm9ycywgbWFwKTtcbiAgICAgIH0gLy8gYnJlYWsgb21pdHRlZFxuICAgIGNhc2UgJ0RPTUV4Y2VwdGlvbic6XG4gICAgICBpZiAoRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUpIHtcbiAgICAgICAgdmFsdWUuc3RhY2sgPSByZXBsYWNlUGxhY2Vob2xkZXJzKHZhbHVlLnN0YWNrLCBtYXApO1xuICAgICAgfVxuICB9XG5cbiAgbWFwU2V0KG1hcCwgdmFsdWUsIHJlcGxhY2VtZW50IHx8IHZhbHVlKTtcblxuICByZXR1cm4gcmVwbGFjZW1lbnQgfHwgdmFsdWU7XG59O1xuXG52YXIgdHJ5VG9UcmFuc2ZlciA9IGZ1bmN0aW9uIChyYXdUcmFuc2ZlciwgbWFwKSB7XG4gIGlmICghaXNPYmplY3QocmF3VHJhbnNmZXIpKSB0aHJvdyBUeXBlRXJyb3IoJ1RyYW5zZmVyIG9wdGlvbiBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgc2VxdWVuY2UnKTtcblxuICB2YXIgdHJhbnNmZXIgPSBbXTtcblxuICBpdGVyYXRlKHJhd1RyYW5zZmVyLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBwdXNoKHRyYW5zZmVyLCBhbk9iamVjdCh2YWx1ZSkpO1xuICB9KTtcblxuICB2YXIgaSA9IDA7XG4gIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZSh0cmFuc2Zlcik7XG4gIHZhciBidWZmZXJzID0gW107XG4gIHZhciB2YWx1ZSwgdHlwZSwgQywgdHJhbnNmZXJyZWQsIGNhbnZhcywgY29udGV4dDtcblxuICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgIHZhbHVlID0gdHJhbnNmZXJbaSsrXTtcblxuICAgIHR5cGUgPSBjbGFzc29mKHZhbHVlKTtcblxuICAgIGlmICh0eXBlID09PSAnQXJyYXlCdWZmZXInKSB7XG4gICAgICBwdXNoKGJ1ZmZlcnMsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChtYXBIYXMobWFwLCB2YWx1ZSkpIHRocm93IG5ldyBET01FeGNlcHRpb24oJ0R1cGxpY2F0ZSB0cmFuc2ZlcmFibGUnLCBEQVRBX0NMT05FX0VSUk9SKTtcblxuICAgIGlmIChQUk9QRVJfVFJBTlNGRVIpIHtcbiAgICAgIHRyYW5zZmVycmVkID0gbmF0aXZlU3RydWN0dXJlZENsb25lKHZhbHVlLCB7IHRyYW5zZmVyOiBbdmFsdWVdIH0pO1xuICAgIH0gZWxzZSBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ0ltYWdlQml0bWFwJzpcbiAgICAgICAgQyA9IGdsb2JhbC5PZmZzY3JlZW5DYW52YXM7XG4gICAgICAgIGlmICghaXNDb25zdHJ1Y3RvcihDKSkgdGhyb3dVbnBvbHlmaWxsYWJsZSh0eXBlLCBUUkFOU0ZFUlJJTkcpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNhbnZhcyA9IG5ldyBDKHZhbHVlLndpZHRoLCB2YWx1ZS5oZWlnaHQpO1xuICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnYml0bWFwcmVuZGVyZXInKTtcbiAgICAgICAgICBjb250ZXh0LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKHZhbHVlKTtcbiAgICAgICAgICB0cmFuc2ZlcnJlZCA9IGNhbnZhcy50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0F1ZGlvRGF0YSc6XG4gICAgICBjYXNlICdWaWRlb0ZyYW1lJzpcbiAgICAgICAgaWYgKCFpc0NhbGxhYmxlKHZhbHVlLmNsb25lKSB8fCAhaXNDYWxsYWJsZSh2YWx1ZS5jbG9zZSkpIHRocm93VW5wb2x5ZmlsbGFibGUodHlwZSwgVFJBTlNGRVJSSU5HKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0cmFuc2ZlcnJlZCA9IHZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgdmFsdWUuY2xvc2UoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ01lZGlhU291cmNlSGFuZGxlJzpcbiAgICAgIGNhc2UgJ01lc3NhZ2VQb3J0JzpcbiAgICAgIGNhc2UgJ09mZnNjcmVlbkNhbnZhcyc6XG4gICAgICBjYXNlICdSZWFkYWJsZVN0cmVhbSc6XG4gICAgICBjYXNlICdUcmFuc2Zvcm1TdHJlYW0nOlxuICAgICAgY2FzZSAnV3JpdGFibGVTdHJlYW0nOlxuICAgICAgICB0aHJvd1VucG9seWZpbGxhYmxlKHR5cGUsIFRSQU5TRkVSUklORyk7XG4gICAgfVxuXG4gICAgaWYgKHRyYW5zZmVycmVkID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBET01FeGNlcHRpb24oJ1RoaXMgb2JqZWN0IGNhbm5vdCBiZSB0cmFuc2ZlcnJlZDogJyArIHR5cGUsIERBVEFfQ0xPTkVfRVJST1IpO1xuXG4gICAgbWFwU2V0KG1hcCwgdmFsdWUsIHRyYW5zZmVycmVkKTtcbiAgfVxuXG4gIHJldHVybiBidWZmZXJzO1xufTtcblxudmFyIHRyeVRvVHJhbnNmZXJCdWZmZXJzID0gZnVuY3Rpb24gKHRyYW5zZmVyLCBtYXApIHtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UodHJhbnNmZXIpO1xuICB2YXIgdmFsdWUsIHRyYW5zZmVycmVkO1xuXG4gIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgdmFsdWUgPSB0cmFuc2ZlcltpKytdO1xuXG4gICAgaWYgKG1hcEhhcyhtYXAsIHZhbHVlKSkgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbignRHVwbGljYXRlIHRyYW5zZmVyYWJsZScsIERBVEFfQ0xPTkVfRVJST1IpO1xuXG4gICAgaWYgKFBST1BFUl9UUkFOU0ZFUikge1xuICAgICAgdHJhbnNmZXJyZWQgPSBuYXRpdmVTdHJ1Y3R1cmVkQ2xvbmUodmFsdWUsIHsgdHJhbnNmZXI6IFt2YWx1ZV0gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghaXNDYWxsYWJsZSh2YWx1ZS50cmFuc2ZlcikpIHRocm93VW5wb2x5ZmlsbGFibGUoJ0FycmF5QnVmZmVyJywgVFJBTlNGRVJSSU5HKTtcbiAgICAgIHRyYW5zZmVycmVkID0gdmFsdWUudHJhbnNmZXIoKTtcbiAgICB9XG5cbiAgICBtYXBTZXQobWFwLCB2YWx1ZSwgdHJhbnNmZXJyZWQpO1xuICB9XG59O1xuXG4vLyBgc3RydWN0dXJlZENsb25lYCBtZXRob2Rcbi8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N0cnVjdHVyZWQtZGF0YS5odG1sI2RvbS1zdHJ1Y3R1cmVkY2xvbmVcbiQoeyBnbG9iYWw6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHNoYW06ICFQUk9QRVJfVFJBTlNGRVIsIGZvcmNlZDogRk9SQ0VEX1JFUExBQ0VNRU5UIH0sIHtcbiAgc3RydWN0dXJlZENsb25lOiBmdW5jdGlvbiBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUgLyogLCB7IHRyYW5zZmVyIH0gKi8pIHtcbiAgICB2YXIgb3B0aW9ucyA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpID4gMSAmJiAhaXNOdWxsT3JVbmRlZmluZWQoYXJndW1lbnRzWzFdKSA/IGFuT2JqZWN0KGFyZ3VtZW50c1sxXSkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHRyYW5zZmVyID0gb3B0aW9ucyA/IG9wdGlvbnMudHJhbnNmZXIgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHRyYW5zZmVycmVkQnVmZmVycyA9IGZhbHNlO1xuICAgIHZhciBtYXAsIGJ1ZmZlcnM7XG5cbiAgICBpZiAodHJhbnNmZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgYnVmZmVycyA9IHRyeVRvVHJhbnNmZXIodHJhbnNmZXIsIG1hcCk7XG4gICAgICB0cmFuc2ZlcnJlZEJ1ZmZlcnMgPSAhIWxlbmd0aE9mQXJyYXlMaWtlKGJ1ZmZlcnMpO1xuICAgIH1cblxuICAgIHZhciBjbG9uZSA9IHN0cnVjdHVyZWRDbG9uZUludGVybmFsKHZhbHVlLCBtYXAsIHRyYW5zZmVycmVkQnVmZmVycyk7XG5cbiAgICAvLyBzaW5jZSBvZiBhbiBpc3N1ZSB3aXRoIGNsb25pbmcgdmlld3Mgb2YgdHJhbnNmZXJyZWQgYnVmZmVycywgd2UgYSBmb3JjZWQgdG8gdHJhbnNmZXIgLyBjbG9uZSB0aGVtIGluIDIgc3RlcHNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTI2NVxuICAgIGlmICh0cmFuc2ZlcnJlZEJ1ZmZlcnMpIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHRyeVRvVHJhbnNmZXJCdWZmZXJzKHRyYW5zZmVyLCBtYXApO1xuICAgICAgY2xvbmUgPSByZXBsYWNlUGxhY2Vob2xkZXJzKGNsb25lLCBtYXApO1xuICAgIH1cblxuICAgIHJldHVybiBjbG9uZTtcbiAgfVxufSk7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5zdHJ1Y3R1cmVkLWNsb25lLmpzPyIpfSksIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3IuanMiOigobW9kdWxlLF9fdW51c2VkX3dlYnBhY2tfZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKT0+e2V2YWwoIlxuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanNcIik7XG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzXCIpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanNcIik7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qc1wiKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3Rvci5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG52YXIgYW5JbnN0YW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1pbnN0YW5jZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzXCIpO1xudmFyIGlzQ2FsbGFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgYmluZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanNcIik7XG52YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jbGFzc29mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xudmFyICR0b1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanNcIik7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIGdldEl0ZXJhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qc1wiKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qc1wiKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aC5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBhcnJheVNvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktc29ydCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNvcnQuanNcIik7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBVUkxfU0VBUkNIX1BBUkFNUyA9ICdVUkxTZWFyY2hQYXJhbXMnO1xudmFyIFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SID0gVVJMX1NFQVJDSF9QQVJBTVMgKyAnSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoVVJMX1NFQVJDSF9QQVJBTVMpO1xudmFyIGdldEludGVybmFsSXRlcmF0b3JTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBBdm9pZCBOb2RlSlMgZXhwZXJpbWVudGFsIHdhcm5pbmdcbnZhciBzYWZlR2V0QnVpbHRJbiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghREVTQ1JJUFRPUlMpIHJldHVybiBnbG9iYWxbbmFtZV07XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgbmFtZSk7XG4gIHJldHVybiBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG59O1xuXG52YXIgbmF0aXZlRmV0Y2ggPSBzYWZlR2V0QnVpbHRJbignZmV0Y2gnKTtcbnZhciBOYXRpdmVSZXF1ZXN0ID0gc2FmZUdldEJ1aWx0SW4oJ1JlcXVlc3QnKTtcbnZhciBIZWFkZXJzID0gc2FmZUdldEJ1aWx0SW4oJ0hlYWRlcnMnKTtcbnZhciBSZXF1ZXN0UHJvdG90eXBlID0gTmF0aXZlUmVxdWVzdCAmJiBOYXRpdmVSZXF1ZXN0LnByb3RvdHlwZTtcbnZhciBIZWFkZXJzUHJvdG90eXBlID0gSGVhZGVycyAmJiBIZWFkZXJzLnByb3RvdHlwZTtcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgZGVjb2RlVVJJQ29tcG9uZW50ID0gZ2xvYmFsLmRlY29kZVVSSUNvbXBvbmVudDtcbnZhciBlbmNvZGVVUklDb21wb25lbnQgPSBnbG9iYWwuZW5jb2RlVVJJQ29tcG9uZW50O1xudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc2hpZnQgPSB1bmN1cnJ5VGhpcyhbXS5zaGlmdCk7XG52YXIgc3BsaWNlID0gdW5jdXJyeVRoaXMoW10uc3BsaWNlKTtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxudmFyIHBsdXMgPSAvXFwrL2c7XG52YXIgc2VxdWVuY2VzID0gQXJyYXkoNCk7XG5cbnZhciBwZXJjZW50U2VxdWVuY2UgPSBmdW5jdGlvbiAoYnl0ZXMpIHtcbiAgcmV0dXJuIHNlcXVlbmNlc1tieXRlcyAtIDFdIHx8IChzZXF1ZW5jZXNbYnl0ZXMgLSAxXSA9IFJlZ0V4cCgnKCg/OiVbXFxcXGRhLWZdezJ9KXsnICsgYnl0ZXMgKyAnfSknLCAnZ2knKSk7XG59O1xuXG52YXIgcGVyY2VudERlY29kZSA9IGZ1bmN0aW9uIChzZXF1ZW5jZSkge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc2VxdWVuY2UpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBzZXF1ZW5jZTtcbiAgfVxufTtcblxudmFyIGRlc2VyaWFsaXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciByZXN1bHQgPSByZXBsYWNlKGl0LCBwbHVzLCAnICcpO1xuICB2YXIgYnl0ZXMgPSA0O1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB3aGlsZSAoYnl0ZXMpIHtcbiAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCBwZXJjZW50U2VxdWVuY2UoYnl0ZXMtLSksIHBlcmNlbnREZWNvZGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuXG52YXIgZmluZCA9IC9bIScoKX5dfCUyMC9nO1xuXG52YXIgcmVwbGFjZW1lbnRzID0ge1xuICAnISc6ICclMjEnLFxuICBcIidcIjogJyUyNycsXG4gICcoJzogJyUyOCcsXG4gICcpJzogJyUyOScsXG4gICd+JzogJyU3RScsXG4gICclMjAnOiAnKydcbn07XG5cbnZhciByZXBsYWNlciA9IGZ1bmN0aW9uIChtYXRjaCkge1xuICByZXR1cm4gcmVwbGFjZW1lbnRzW21hdGNoXTtcbn07XG5cbnZhciBzZXJpYWxpemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHJlcGxhY2UoZW5jb2RlVVJJQ29tcG9uZW50KGl0KSwgZmluZCwgcmVwbGFjZXIpO1xufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBJdGVyYXRvcihwYXJhbXMsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IsXG4gICAgaXRlcmF0b3I6IGdldEl0ZXJhdG9yKGdldEludGVybmFsUGFyYW1zU3RhdGUocGFyYW1zKS5lbnRyaWVzKSxcbiAgICBraW5kOiBraW5kXG4gIH0pO1xufSwgJ0l0ZXJhdG9yJywgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlKHRoaXMpO1xuICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gIHZhciBzdGVwID0gc3RhdGUuaXRlcmF0b3IubmV4dCgpO1xuICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuICBpZiAoIXN0ZXAuZG9uZSkge1xuICAgIHN0ZXAudmFsdWUgPSBraW5kID09PSAna2V5cycgPyBlbnRyeS5rZXkgOiBraW5kID09PSAndmFsdWVzJyA/IGVudHJ5LnZhbHVlIDogW2VudHJ5LmtleSwgZW50cnkudmFsdWVdO1xuICB9IHJldHVybiBzdGVwO1xufSwgdHJ1ZSk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNTdGF0ZSA9IGZ1bmN0aW9uIChpbml0KSB7XG4gIHRoaXMuZW50cmllcyA9IFtdO1xuICB0aGlzLnVybCA9IG51bGw7XG5cbiAgaWYgKGluaXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkgdGhpcy5wYXJzZU9iamVjdChpbml0KTtcbiAgICBlbHNlIHRoaXMucGFyc2VRdWVyeSh0eXBlb2YgaW5pdCA9PSAnc3RyaW5nJyA/IGNoYXJBdChpbml0LCAwKSA9PT0gJz8nID8gc3RyaW5nU2xpY2UoaW5pdCwgMSkgOiBpbml0IDogJHRvU3RyaW5nKGluaXQpKTtcbiAgfVxufTtcblxuVVJMU2VhcmNoUGFyYW1zU3RhdGUucHJvdG90eXBlID0ge1xuICB0eXBlOiBVUkxfU0VBUkNIX1BBUkFNUyxcbiAgYmluZFVSTDogZnVuY3Rpb24gKHVybCkge1xuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMudXBkYXRlKCk7XG4gIH0sXG4gIHBhcnNlT2JqZWN0OiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2Qob2JqZWN0KTtcbiAgICB2YXIgaXRlcmF0b3IsIG5leHQsIHN0ZXAsIGVudHJ5SXRlcmF0b3IsIGVudHJ5TmV4dCwgZmlyc3QsIHNlY29uZDtcblxuICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihvYmplY3QsIGl0ZXJhdG9yTWV0aG9kKTtcbiAgICAgIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICAgICAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgICAgIGVudHJ5SXRlcmF0b3IgPSBnZXRJdGVyYXRvcihhbk9iamVjdChzdGVwLnZhbHVlKSk7XG4gICAgICAgIGVudHJ5TmV4dCA9IGVudHJ5SXRlcmF0b3IubmV4dDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChmaXJzdCA9IGNhbGwoZW50cnlOZXh0LCBlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgIChzZWNvbmQgPSBjYWxsKGVudHJ5TmV4dCwgZW50cnlJdGVyYXRvcikpLmRvbmUgfHxcbiAgICAgICAgICAhY2FsbChlbnRyeU5leHQsIGVudHJ5SXRlcmF0b3IpLmRvbmVcbiAgICAgICAgKSB0aHJvdyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNlcXVlbmNlIHdpdGggbGVuZ3RoIDInKTtcbiAgICAgICAgcHVzaCh0aGlzLmVudHJpZXMsIHsga2V5OiAkdG9TdHJpbmcoZmlyc3QudmFsdWUpLCB2YWx1ZTogJHRvU3RyaW5nKHNlY29uZC52YWx1ZSkgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGZvciAodmFyIGtleSBpbiBvYmplY3QpIGlmIChoYXNPd24ob2JqZWN0LCBrZXkpKSB7XG4gICAgICBwdXNoKHRoaXMuZW50cmllcywgeyBrZXk6IGtleSwgdmFsdWU6ICR0b1N0cmluZyhvYmplY3Rba2V5XSkgfSk7XG4gICAgfVxuICB9LFxuICBwYXJzZVF1ZXJ5OiBmdW5jdGlvbiAocXVlcnkpIHtcbiAgICBpZiAocXVlcnkpIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3BsaXQocXVlcnksICcmJyk7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIGF0dHJpYnV0ZSwgZW50cnk7XG4gICAgICB3aGlsZSAoaW5kZXggPCBhdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2luZGV4KytdO1xuICAgICAgICBpZiAoYXR0cmlidXRlLmxlbmd0aCkge1xuICAgICAgICAgIGVudHJ5ID0gc3BsaXQoYXR0cmlidXRlLCAnPScpO1xuICAgICAgICAgIHB1c2godGhpcy5lbnRyaWVzLCB7XG4gICAgICAgICAgICBrZXk6IGRlc2VyaWFsaXplKHNoaWZ0KGVudHJ5KSksXG4gICAgICAgICAgICB2YWx1ZTogZGVzZXJpYWxpemUoam9pbihlbnRyeSwgJz0nKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJpZXMgPSB0aGlzLmVudHJpZXM7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBwdXNoKHJlc3VsdCwgc2VyaWFsaXplKGVudHJ5LmtleSkgKyAnPScgKyBzZXJpYWxpemUoZW50cnkudmFsdWUpKTtcbiAgICB9IHJldHVybiBqb2luKHJlc3VsdCwgJyYnKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5wYXJzZVF1ZXJ5KHRoaXMudXJsLnF1ZXJ5KTtcbiAgfSxcbiAgdXBkYXRlVVJMOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMudXJsKSB0aGlzLnVybC51cGRhdGUoKTtcbiAgfVxufTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtc2AgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLXVybHNlYXJjaHBhcmFtc1xudmFyIFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yID0gZnVuY3Rpb24gVVJMU2VhcmNoUGFyYW1zKC8qIGluaXQgKi8pIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpO1xuICB2YXIgaW5pdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgc3RhdGUgPSBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIG5ldyBVUkxTZWFyY2hQYXJhbXNTdGF0ZShpbml0KSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IHN0YXRlLmVudHJpZXMubGVuZ3RoO1xufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuZGVmaW5lQnVpbHRJbnMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCB7XG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmFwcGVuZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1hcHBlbmRcbiAgYXBwZW5kOiBmdW5jdGlvbiBhcHBlbmQobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDIpO1xuICAgIHB1c2goc3RhdGUuZW50cmllcywgeyBrZXk6ICR0b1N0cmluZyhuYW1lKSwgdmFsdWU6ICR0b1N0cmluZyh2YWx1ZSkgfSk7XG4gICAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5sZW5ndGgrKztcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZGVsZXRlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWRlbGV0ZVxuICAnZGVsZXRlJzogZnVuY3Rpb24gKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWx1ZSA9ICR2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJHZhbHVlIDogJHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICBpZiAoZW50cnkua2V5ID09PSBrZXkgJiYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgZW50cnkudmFsdWUgPT09IHZhbHVlKSkge1xuICAgICAgICBzcGxpY2UoZW50cmllcywgaW5kZXgsIDEpO1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICB9IGVsc2UgaW5kZXgrKztcbiAgICB9XG4gICAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5zaXplID0gZW50cmllcy5sZW5ndGg7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmdldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1nZXRcbiAgZ2V0OiBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSByZXR1cm4gZW50cmllc1tpbmRleF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRBbGxgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0YWxsXG4gIGdldEFsbDogZnVuY3Rpb24gZ2V0QWxsKG5hbWUpIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleF0ua2V5ID09PSBrZXkpIHB1c2gocmVzdWx0LCBlbnRyaWVzW2luZGV4XS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmhhc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1oYXNcbiAgaGFzOiBmdW5jdGlvbiBoYXMobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgdmFyIHZhbHVlID0gJHZhbHVlID09PSB1bmRlZmluZWQgPyAkdmFsdWUgOiAkdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5ICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zZXRcbiAgc2V0OiBmdW5jdGlvbiBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciB2YWwgPSAkdG9TdHJpbmcodmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGlmIChmb3VuZCkgc3BsaWNlKGVudHJpZXMsIGluZGV4LS0sIDEpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgZW50cnkudmFsdWUgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkgcHVzaChlbnRyaWVzLCB7IGtleToga2V5LCB2YWx1ZTogdmFsIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zb3J0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNvcnRcbiAgc29ydDogZnVuY3Rpb24gc29ydCgpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIGFycmF5U29ydChzdGF0ZS5lbnRyaWVzLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEua2V5ID4gYi5rZXkgPyAxIDogLTE7XG4gICAgfSk7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFjaywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBib3VuZEZ1bmN0aW9uKGVudHJ5LnZhbHVlLCBlbnRyeS5rZXksIHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAna2V5cycpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICd2YWx1ZXMnKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAnZW50cmllcycpO1xuICB9XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2RcbmRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCBJVEVSQVRPUiwgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmVudHJpZXMsIHsgbmFtZTogJ2VudHJpZXMnIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHNlYXJjaHBhcmFtcy1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbmRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUykgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3NpemUnLCB7XG4gIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzLmxlbmd0aDtcbiAgfSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsIFVSTF9TRUFSQ0hfUEFSQU1TKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGZvcmNlZDogIVVTRV9OQVRJVkVfVVJMIH0sIHtcbiAgVVJMU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvclxufSk7XG5cbi8vIFdyYXAgYGZldGNoYCBhbmQgYFJlcXVlc3RgIGZvciBjb3JyZWN0IHdvcmsgd2l0aCBwb2x5ZmlsbGVkIGBVUkxTZWFyY2hQYXJhbXNgXG5pZiAoIVVTRV9OQVRJVkVfVVJMICYmIGlzQ2FsbGFibGUoSGVhZGVycykpIHtcbiAgdmFyIGhlYWRlcnNIYXMgPSB1bmN1cnJ5VGhpcyhIZWFkZXJzUHJvdG90eXBlLmhhcyk7XG4gIHZhciBoZWFkZXJzU2V0ID0gdW5jdXJyeVRoaXMoSGVhZGVyc1Byb3RvdHlwZS5zZXQpO1xuXG4gIHZhciB3cmFwUmVxdWVzdE9wdGlvbnMgPSBmdW5jdGlvbiAoaW5pdCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkge1xuICAgICAgdmFyIGJvZHkgPSBpbml0LmJvZHk7XG4gICAgICB2YXIgaGVhZGVycztcbiAgICAgIGlmIChjbGFzc29mKGJvZHkpID09PSBVUkxfU0VBUkNIX1BBUkFNUykge1xuICAgICAgICBoZWFkZXJzID0gaW5pdC5oZWFkZXJzID8gbmV3IEhlYWRlcnMoaW5pdC5oZWFkZXJzKSA6IG5ldyBIZWFkZXJzKCk7XG4gICAgICAgIGlmICghaGVhZGVyc0hhcyhoZWFkZXJzLCAnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgICBoZWFkZXJzU2V0KGhlYWRlcnMsICdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlKGluaXQsIHtcbiAgICAgICAgICBib2R5OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgJHRvU3RyaW5nKGJvZHkpKSxcbiAgICAgICAgICBoZWFkZXJzOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgaGVhZGVycylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSByZXR1cm4gaW5pdDtcbiAgfTtcblxuICBpZiAoaXNDYWxsYWJsZShuYXRpdmVGZXRjaCkpIHtcbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBkb250Q2FsbEdldFNldDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICAgIGZldGNoOiBmdW5jdGlvbiBmZXRjaChpbnB1dCAvKiAsIGluaXQgKi8pIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUZldGNoKGlucHV0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHdyYXBSZXF1ZXN0T3B0aW9ucyhhcmd1bWVudHNbMV0pIDoge30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGlzQ2FsbGFibGUoTmF0aXZlUmVxdWVzdCkpIHtcbiAgICB2YXIgUmVxdWVzdENvbnN0cnVjdG9yID0gZnVuY3Rpb24gUmVxdWVzdChpbnB1dCAvKiAsIGluaXQgKi8pIHtcbiAgICAgIGFuSW5zdGFuY2UodGhpcywgUmVxdWVzdFByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gbmV3IE5hdGl2ZVJlcXVlc3QoaW5wdXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gd3JhcFJlcXVlc3RPcHRpb25zKGFyZ3VtZW50c1sxXSkgOiB7fSk7XG4gICAgfTtcblxuICAgIFJlcXVlc3RQcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZXF1ZXN0Q29uc3RydWN0b3I7XG4gICAgUmVxdWVzdENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFJlcXVlc3RQcm90b3R5cGU7XG5cbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZG9udENhbGxHZXRTZXQ6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBSZXF1ZXN0OiBSZXF1ZXN0Q29uc3RydWN0b3JcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVVJMU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvcixcbiAgZ2V0U3RhdGU6IGdldEludGVybmFsUGFyYW1zU3RhdGVcbn07XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzXCIpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBhcHBlbmQgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuYXBwZW5kKTtcbnZhciAkZGVsZXRlID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlWydkZWxldGUnXSk7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG5cbnBhcmFtc1snZGVsZXRlJ10oJ2EnLCAxKTtcbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxucGFyYW1zWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG5cbmlmIChwYXJhbXMgKyAnJyAhPT0gJ2E9MicpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRkZWxldGUodGhpcywgbmFtZSk7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICh2LCBrKSB7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogaywgdmFsdWU6IHYgfSk7XG4gICAgfSk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBkaW5kZXggPSAwO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBlbnRyaWVzTGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChmb3VuZCB8fCBlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICRkZWxldGUodGhpcywgZW50cnkua2V5KTtcbiAgICAgIH0gZWxzZSBkaW5kZXgrKztcbiAgICB9XG4gICAgd2hpbGUgKGRpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tkaW5kZXgrK107XG4gICAgICBpZiAoIShlbnRyeS5rZXkgPT09IGtleSAmJiBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSBhcHBlbmQodGhpcywgZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7XG4gICAgfVxuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgdG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLmpzXCIpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzXCIpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBnZXRBbGwgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZ2V0QWxsKTtcbnZhciAkaGFzID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmhhcyk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MScpO1xuXG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbmlmIChwYXJhbXMuaGFzKCdhJywgMikgfHwgIXBhcmFtcy5oYXMoJ2EnLCB1bmRlZmluZWQpKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnaGFzJywgZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkaGFzKHRoaXMsIG5hbWUpO1xuICAgIHZhciB2YWx1ZXMgPSBnZXRBbGwodGhpcywgbmFtZSk7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh2YWx1ZXNbaW5kZXgrK10gPT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICB9IHJldHVybiBmYWxzZTtcbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanM/Iil9KSwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgcmVwbGFjZWQgdG8gbW9kdWxlIGJlbG93XG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3RvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3IuanNcIik7XG5cblxuLy8jIHNvdXJjZVVSTD13ZWJwYWNrOi8vYmFiZWwvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUuanMiOigoX191bnVzZWRfd2VicGFja19tb2R1bGUsX191bnVzZWRfd2VicGFja19leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pPT57ZXZhbCgiXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciB1bmN1cnJ5VGhpcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanNcIik7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3Nvci5qc1wiKTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2l6ZWAgZ2V0dGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3VybC9wdWxsLzczNFxuaWYgKERFU0NSSVBUT1JTICYmICEoJ3NpemUnIGluIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSkpIHtcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKCkgeyBjb3VudCsrOyB9KTtcbiAgICAgIHJldHVybiBjb3VudDtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5cbi8vIyBzb3VyY2VVUkw9d2VicGFjazovL2JhYmVsLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3Rvci5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanNcIik7XG52YXIgJCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9leHBvcnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIik7XG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzXCIpO1xudmFyIHVuY3VycnlUaGlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qc1wiKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzXCIpO1xudmFyIGFuSW5zdGFuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1pbnN0YW5jZS5qc1wiKTtcbnZhciBoYXNPd24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanNcIik7XG52YXIgYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24gKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtYXNzaWduLmpzXCIpO1xudmFyIGFycmF5RnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hcnJheS1mcm9tICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS5qc1wiKTtcbnZhciBhcnJheVNsaWNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlLXNpbXBsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLXNpbXBsZS5qc1wiKTtcbnZhciBjb2RlQXQgPSAoX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzXCIpLmNvZGVBdCk7XG52YXIgdG9BU0NJSSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWkuanNcIik7XG52YXIgJHRvU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLXN0cmluZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzXCIpO1xudmFyIFVSTFNlYXJjaFBhcmFtc01vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5jb25zdHJ1Y3Rvci5qc1wiKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanNcIik7XG5cbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxVUkxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKCdVUkwnKTtcbnZhciBVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuVVJMU2VhcmNoUGFyYW1zO1xudmFyIGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuZ2V0U3RhdGU7XG5cbnZhciBOYXRpdmVVUkwgPSBnbG9iYWwuVVJMO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgcGFyc2VJbnQgPSBnbG9iYWwucGFyc2VJbnQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKC8uLy5leGVjKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG52YXIgbnVtYmVyVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xudmFyIHBvcCA9IHVuY3VycnlUaGlzKFtdLnBvcCk7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzaGlmdCA9IHVuY3VycnlUaGlzKFtdLnNoaWZ0KTtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciB0b0xvd2VyQ2FzZSA9IHVuY3VycnlUaGlzKCcnLnRvTG93ZXJDYXNlKTtcbnZhciB1bnNoaWZ0ID0gdW5jdXJyeVRoaXMoW10udW5zaGlmdCk7XG5cbnZhciBJTlZBTElEX0FVVEhPUklUWSA9ICdJbnZhbGlkIGF1dGhvcml0eSc7XG52YXIgSU5WQUxJRF9TQ0hFTUUgPSAnSW52YWxpZCBzY2hlbWUnO1xudmFyIElOVkFMSURfSE9TVCA9ICdJbnZhbGlkIGhvc3QnO1xudmFyIElOVkFMSURfUE9SVCA9ICdJbnZhbGlkIHBvcnQnO1xuXG52YXIgQUxQSEEgPSAvW2Etel0vaTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tb2JzY3VyZS1yYW5nZSAtLSBzYWZlXG52YXIgQUxQSEFOVU1FUklDID0gL1tcXGQrLS5hLXpdL2k7XG52YXIgRElHSVQgPSAvXFxkLztcbnZhciBIRVhfU1RBUlQgPSAvXjB4L2k7XG52YXIgT0NUID0gL15bMC03XSskLztcbnZhciBERUMgPSAvXlxcZCskLztcbnZhciBIRVggPSAvXltcXGRhLWZdKyQvaTtcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1jb250cm9sLWNoYXJhY3RlciAtLSBzYWZlICovXG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCA9IC9bXFwwXFx0XFxuXFxyICMlLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQgPSAvW1xcMFxcdFxcblxcciAjLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIExFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSA9IC9eW1xcdTAwMDAtXFx1MDAyMF0rLztcbnZhciBUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFID0gLyhefFteXFx1MDAwMC1cXHUwMDIwXSlbXFx1MDAwMC1cXHUwMDIwXSskLztcbnZhciBUQUJfQU5EX05FV19MSU5FID0gL1tcXHRcXG5cXHJdL2c7XG4vKiBlc2xpbnQtZW5hYmxlIHJlZ2V4cC9uby1jb250cm9sLWNoYXJhY3RlciAtLSBzYWZlICovXG52YXIgRU9GO1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2lwdjQtbnVtYmVyLXBhcnNlclxudmFyIHBhcnNlSVB2NCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgcGFydHMgPSBzcGxpdChpbnB1dCwgJy4nKTtcbiAgdmFyIHBhcnRzTGVuZ3RoLCBudW1iZXJzLCBpbmRleCwgcGFydCwgcmFkaXgsIG51bWJlciwgaXB2NDtcbiAgaWYgKHBhcnRzLmxlbmd0aCAmJiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9PSAnJykge1xuICAgIHBhcnRzLmxlbmd0aC0tO1xuICB9XG4gIHBhcnRzTGVuZ3RoID0gcGFydHMubGVuZ3RoO1xuICBpZiAocGFydHNMZW5ndGggPiA0KSByZXR1cm4gaW5wdXQ7XG4gIG51bWJlcnMgPSBbXTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcGFydHNMZW5ndGg7IGluZGV4KyspIHtcbiAgICBwYXJ0ID0gcGFydHNbaW5kZXhdO1xuICAgIGlmIChwYXJ0ID09ICcnKSByZXR1cm4gaW5wdXQ7XG4gICAgcmFkaXggPSAxMDtcbiAgICBpZiAocGFydC5sZW5ndGggPiAxICYmIGNoYXJBdChwYXJ0LCAwKSA9PSAnMCcpIHtcbiAgICAgIHJhZGl4ID0gZXhlYyhIRVhfU1RBUlQsIHBhcnQpID8gMTYgOiA4O1xuICAgICAgcGFydCA9IHN0cmluZ1NsaWNlKHBhcnQsIHJhZGl4ID09IDggPyAxIDogMik7XG4gICAgfVxuICAgIGlmIChwYXJ0ID09PSAnJykge1xuICAgICAgbnVtYmVyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFleGVjKHJhZGl4ID09IDEwID8gREVDIDogcmFkaXggPT0gOCA/IE9DVCA6IEhFWCwgcGFydCkpIHJldHVybiBpbnB1dDtcbiAgICAgIG51bWJlciA9IHBhcnNlSW50KHBhcnQsIHJhZGl4KTtcbiAgICB9XG4gICAgcHVzaChudW1iZXJzLCBudW1iZXIpO1xuICB9XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHBhcnRzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgbnVtYmVyID0gbnVtYmVyc1tpbmRleF07XG4gICAgaWYgKGluZGV4ID09IHBhcnRzTGVuZ3RoIC0gMSkge1xuICAgICAgaWYgKG51bWJlciA+PSBwb3coMjU2LCA1IC0gcGFydHNMZW5ndGgpKSByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA+IDI1NSkgcmV0dXJuIG51bGw7XG4gIH1cbiAgaXB2NCA9IHBvcChudW1iZXJzKTtcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBpcHY0ICs9IG51bWJlcnNbaW5kZXhdICogcG93KDI1NiwgMyAtIGluZGV4KTtcbiAgfVxuICByZXR1cm4gaXB2NDtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1pcHY2LXBhcnNlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbnZhciBwYXJzZUlQdjYgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIGFkZHJlc3MgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gIHZhciBwaWVjZUluZGV4ID0gMDtcbiAgdmFyIGNvbXByZXNzID0gbnVsbDtcbiAgdmFyIHBvaW50ZXIgPSAwO1xuICB2YXIgdmFsdWUsIGxlbmd0aCwgbnVtYmVyc1NlZW4sIGlwdjRQaWVjZSwgbnVtYmVyLCBzd2Fwcywgc3dhcDtcblxuICB2YXIgY2hyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjaGFyQXQoaW5wdXQsIHBvaW50ZXIpO1xuICB9O1xuXG4gIGlmIChjaHIoKSA9PSAnOicpIHtcbiAgICBpZiAoY2hhckF0KGlucHV0LCAxKSAhPSAnOicpIHJldHVybjtcbiAgICBwb2ludGVyICs9IDI7XG4gICAgcGllY2VJbmRleCsrO1xuICAgIGNvbXByZXNzID0gcGllY2VJbmRleDtcbiAgfVxuICB3aGlsZSAoY2hyKCkpIHtcbiAgICBpZiAocGllY2VJbmRleCA9PSA4KSByZXR1cm47XG4gICAgaWYgKGNocigpID09ICc6Jykge1xuICAgICAgaWYgKGNvbXByZXNzICE9PSBudWxsKSByZXR1cm47XG4gICAgICBwb2ludGVyKys7XG4gICAgICBwaWVjZUluZGV4Kys7XG4gICAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFsdWUgPSBsZW5ndGggPSAwO1xuICAgIHdoaWxlIChsZW5ndGggPCA0ICYmIGV4ZWMoSEVYLCBjaHIoKSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKiAxNiArIHBhcnNlSW50KGNocigpLCAxNik7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBsZW5ndGgrKztcbiAgICB9XG4gICAgaWYgKGNocigpID09ICcuJykge1xuICAgICAgaWYgKGxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICBwb2ludGVyIC09IGxlbmd0aDtcbiAgICAgIGlmIChwaWVjZUluZGV4ID4gNikgcmV0dXJuO1xuICAgICAgbnVtYmVyc1NlZW4gPSAwO1xuICAgICAgd2hpbGUgKGNocigpKSB7XG4gICAgICAgIGlwdjRQaWVjZSA9IG51bGw7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA+IDApIHtcbiAgICAgICAgICBpZiAoY2hyKCkgPT0gJy4nICYmIG51bWJlcnNTZWVuIDwgNCkgcG9pbnRlcisrO1xuICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXhlYyhESUdJVCwgY2hyKCkpKSByZXR1cm47XG4gICAgICAgIHdoaWxlIChleGVjKERJR0lULCBjaHIoKSkpIHtcbiAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChjaHIoKSwgMTApO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPT09IG51bGwpIGlwdjRQaWVjZSA9IG51bWJlcjtcbiAgICAgICAgICBlbHNlIGlmIChpcHY0UGllY2UgPT0gMCkgcmV0dXJuO1xuICAgICAgICAgIGVsc2UgaXB2NFBpZWNlID0gaXB2NFBpZWNlICogMTAgKyBudW1iZXI7XG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA+IDI1NSkgcmV0dXJuO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgICBhZGRyZXNzW3BpZWNlSW5kZXhdID0gYWRkcmVzc1twaWVjZUluZGV4XSAqIDI1NiArIGlwdjRQaWVjZTtcbiAgICAgICAgbnVtYmVyc1NlZW4rKztcbiAgICAgICAgaWYgKG51bWJlcnNTZWVuID09IDIgfHwgbnVtYmVyc1NlZW4gPT0gNCkgcGllY2VJbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKG51bWJlcnNTZWVuICE9IDQpIHJldHVybjtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY2hyKCkgPT0gJzonKSB7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBpZiAoIWNocigpKSByZXR1cm47XG4gICAgfSBlbHNlIGlmIChjaHIoKSkgcmV0dXJuO1xuICAgIGFkZHJlc3NbcGllY2VJbmRleCsrXSA9IHZhbHVlO1xuICB9XG4gIGlmIChjb21wcmVzcyAhPT0gbnVsbCkge1xuICAgIHN3YXBzID0gcGllY2VJbmRleCAtIGNvbXByZXNzO1xuICAgIHBpZWNlSW5kZXggPSA3O1xuICAgIHdoaWxlIChwaWVjZUluZGV4ICE9IDAgJiYgc3dhcHMgPiAwKSB7XG4gICAgICBzd2FwID0gYWRkcmVzc1twaWVjZUluZGV4XTtcbiAgICAgIGFkZHJlc3NbcGllY2VJbmRleC0tXSA9IGFkZHJlc3NbY29tcHJlc3MgKyBzd2FwcyAtIDFdO1xuICAgICAgYWRkcmVzc1tjb21wcmVzcyArIC0tc3dhcHNdID0gc3dhcDtcbiAgICB9XG4gIH0gZWxzZSBpZiAocGllY2VJbmRleCAhPSA4KSByZXR1cm47XG4gIHJldHVybiBhZGRyZXNzO1xufTtcblxudmFyIGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlID0gZnVuY3Rpb24gKGlwdjYpIHtcbiAgdmFyIG1heEluZGV4ID0gbnVsbDtcbiAgdmFyIG1heExlbmd0aCA9IDE7XG4gIHZhciBjdXJyU3RhcnQgPSBudWxsO1xuICB2YXIgY3Vyckxlbmd0aCA9IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIGZvciAoOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICBpZiAoaXB2NltpbmRleF0gIT09IDApIHtcbiAgICAgIGlmIChjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIG1heEluZGV4ID0gY3VyclN0YXJ0O1xuICAgICAgICBtYXhMZW5ndGggPSBjdXJyTGVuZ3RoO1xuICAgICAgfVxuICAgICAgY3VyclN0YXJ0ID0gbnVsbDtcbiAgICAgIGN1cnJMZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyclN0YXJ0ID09PSBudWxsKSBjdXJyU3RhcnQgPSBpbmRleDtcbiAgICAgICsrY3Vyckxlbmd0aDtcbiAgICB9XG4gIH1cbiAgaWYgKGN1cnJMZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICBtYXhJbmRleCA9IGN1cnJTdGFydDtcbiAgICBtYXhMZW5ndGggPSBjdXJyTGVuZ3RoO1xuICB9XG4gIHJldHVybiBtYXhJbmRleDtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaG9zdC1zZXJpYWxpemluZ1xudmFyIHNlcmlhbGl6ZUhvc3QgPSBmdW5jdGlvbiAoaG9zdCkge1xuICB2YXIgcmVzdWx0LCBpbmRleCwgY29tcHJlc3MsIGlnbm9yZTA7XG4gIC8vIGlwdjRcbiAgaWYgKHR5cGVvZiBob3N0ID09ICdudW1iZXInKSB7XG4gICAgcmVzdWx0ID0gW107XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDsgaW5kZXgrKykge1xuICAgICAgdW5zaGlmdChyZXN1bHQsIGhvc3QgJSAyNTYpO1xuICAgICAgaG9zdCA9IGZsb29yKGhvc3QgLyAyNTYpO1xuICAgIH0gcmV0dXJuIGpvaW4ocmVzdWx0LCAnLicpO1xuICAvLyBpcHY2XG4gIH0gZWxzZSBpZiAodHlwZW9mIGhvc3QgPT0gJ29iamVjdCcpIHtcbiAgICByZXN1bHQgPSAnJztcbiAgICBjb21wcmVzcyA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlKGhvc3QpO1xuICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICAgIGlmIChpZ25vcmUwICYmIGhvc3RbaW5kZXhdID09PSAwKSBjb250aW51ZTtcbiAgICAgIGlmIChpZ25vcmUwKSBpZ25vcmUwID0gZmFsc2U7XG4gICAgICBpZiAoY29tcHJlc3MgPT09IGluZGV4KSB7XG4gICAgICAgIHJlc3VsdCArPSBpbmRleCA/ICc6JyA6ICc6Oic7XG4gICAgICAgIGlnbm9yZTAgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IG51bWJlclRvU3RyaW5nKGhvc3RbaW5kZXhdLCAxNik7XG4gICAgICAgIGlmIChpbmRleCA8IDcpIHJlc3VsdCArPSAnOic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnWycgKyByZXN1bHQgKyAnXSc7XG4gIH0gcmV0dXJuIGhvc3Q7XG59O1xuXG52YXIgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCA9IHt9O1xudmFyIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCwge1xuICAnICc6IDEsICdcIic6IDEsICc8JzogMSwgJz4nOiAxLCAnYCc6IDFcbn0pO1xudmFyIHBhdGhQZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyMnOiAxLCAnPyc6IDEsICd7JzogMSwgJ30nOiAxXG59KTtcbnZhciB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIHBhdGhQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcvJzogMSwgJzonOiAxLCAnOyc6IDEsICc9JzogMSwgJ0AnOiAxLCAnWyc6IDEsICdcXFxcJzogMSwgJ10nOiAxLCAnXic6IDEsICd8JzogMVxufSk7XG5cbnZhciBwZXJjZW50RW5jb2RlID0gZnVuY3Rpb24gKGNociwgc2V0KSB7XG4gIHZhciBjb2RlID0gY29kZUF0KGNociwgMCk7XG4gIHJldHVybiBjb2RlID4gMHgyMCAmJiBjb2RlIDwgMHg3RiAmJiAhaGFzT3duKHNldCwgY2hyKSA/IGNociA6IGVuY29kZVVSSUNvbXBvbmVudChjaHIpO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzcGVjaWFsLXNjaGVtZVxudmFyIHNwZWNpYWxTY2hlbWVzID0ge1xuICBmdHA6IDIxLFxuICBmaWxlOiBudWxsLFxuICBodHRwOiA4MCxcbiAgaHR0cHM6IDQ0MyxcbiAgd3M6IDgwLFxuICB3c3M6IDQ0M1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN3aW5kb3dzLWRyaXZlLWxldHRlclxudmFyIGlzV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZywgbm9ybWFsaXplZCkge1xuICB2YXIgc2Vjb25kO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA9PSAyICYmIGV4ZWMoQUxQSEEsIGNoYXJBdChzdHJpbmcsIDApKVxuICAgICYmICgoc2Vjb25kID0gY2hhckF0KHN0cmluZywgMSkpID09ICc6JyB8fCAoIW5vcm1hbGl6ZWQgJiYgc2Vjb25kID09ICd8JykpO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzdGFydC13aXRoLWEtd2luZG93cy1kcml2ZS1sZXR0ZXJcbnZhciBzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgdGhpcmQ7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID4gMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihzdHJpbmdTbGljZShzdHJpbmcsIDAsIDIpKSAmJiAoXG4gICAgc3RyaW5nLmxlbmd0aCA9PSAyIHx8XG4gICAgKCh0aGlyZCA9IGNoYXJBdChzdHJpbmcsIDIpKSA9PT0gJy8nIHx8IHRoaXJkID09PSAnXFxcXCcgfHwgdGhpcmQgPT09ICc/JyB8fCB0aGlyZCA9PT0gJyMnKVxuICApO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzaW5nbGUtZG90LXBhdGgtc2VnbWVudFxudmFyIGlzU2luZ2xlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuJyB8fCB0b0xvd2VyQ2FzZShzZWdtZW50KSA9PT0gJyUyZSc7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvdWJsZS1kb3QtcGF0aC1zZWdtZW50XG52YXIgaXNEb3VibGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICBzZWdtZW50ID0gdG9Mb3dlckNhc2Uoc2VnbWVudCk7XG4gIHJldHVybiBzZWdtZW50ID09PSAnLi4nIHx8IHNlZ21lbnQgPT09ICclMmUuJyB8fCBzZWdtZW50ID09PSAnLiUyZScgfHwgc2VnbWVudCA9PT0gJyUyZSUyZSc7XG59O1xuXG4vLyBTdGF0ZXM6XG52YXIgU0NIRU1FX1NUQVJUID0ge307XG52YXIgU0NIRU1FID0ge307XG52YXIgTk9fU0NIRU1FID0ge307XG52YXIgU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFkgPSB7fTtcbnZhciBQQVRIX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFJFTEFUSVZFID0ge307XG52YXIgUkVMQVRJVkVfU0xBU0ggPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTID0ge307XG52YXIgU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVMgPSB7fTtcbnZhciBBVVRIT1JJVFkgPSB7fTtcbnZhciBIT1NUID0ge307XG52YXIgSE9TVE5BTUUgPSB7fTtcbnZhciBQT1JUID0ge307XG52YXIgRklMRSA9IHt9O1xudmFyIEZJTEVfU0xBU0ggPSB7fTtcbnZhciBGSUxFX0hPU1QgPSB7fTtcbnZhciBQQVRIX1NUQVJUID0ge307XG52YXIgUEFUSCA9IHt9O1xudmFyIENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEggPSB7fTtcbnZhciBRVUVSWSA9IHt9O1xudmFyIEZSQUdNRU5UID0ge307XG5cbnZhciBVUkxTdGF0ZSA9IGZ1bmN0aW9uICh1cmwsIGlzQmFzZSwgYmFzZSkge1xuICB2YXIgdXJsU3RyaW5nID0gJHRvU3RyaW5nKHVybCk7XG4gIHZhciBiYXNlU3RhdGUsIGZhaWx1cmUsIHNlYXJjaFBhcmFtcztcbiAgaWYgKGlzQmFzZSkge1xuICAgIGZhaWx1cmUgPSB0aGlzLnBhcnNlKHVybFN0cmluZyk7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2UgIT09IHVuZGVmaW5lZCkgYmFzZVN0YXRlID0gbmV3IFVSTFN0YXRlKGJhc2UsIHRydWUpO1xuICAgIGZhaWx1cmUgPSB0aGlzLnBhcnNlKHVybFN0cmluZywgbnVsbCwgYmFzZVN0YXRlKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgIHNlYXJjaFBhcmFtcyA9IGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcygpKTtcbiAgICBzZWFyY2hQYXJhbXMuYmluZFVSTCh0aGlzKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcyA9IHNlYXJjaFBhcmFtcztcbiAgfVxufTtcblxuVVJMU3RhdGUucHJvdG90eXBlID0ge1xuICB0eXBlOiAnVVJMJyxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtcGFyc2luZ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xuICBwYXJzZTogZnVuY3Rpb24gKGlucHV0LCBzdGF0ZU92ZXJyaWRlLCBiYXNlKSB7XG4gICAgdmFyIHVybCA9IHRoaXM7XG4gICAgdmFyIHN0YXRlID0gc3RhdGVPdmVycmlkZSB8fCBTQ0hFTUVfU1RBUlQ7XG4gICAgdmFyIHBvaW50ZXIgPSAwO1xuICAgIHZhciBidWZmZXIgPSAnJztcbiAgICB2YXIgc2VlbkF0ID0gZmFsc2U7XG4gICAgdmFyIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgdmFyIHNlZW5QYXNzd29yZFRva2VuID0gZmFsc2U7XG4gICAgdmFyIGNvZGVQb2ludHMsIGNociwgYnVmZmVyQ29kZVBvaW50cywgZmFpbHVyZTtcblxuICAgIGlucHV0ID0gJHRvU3RyaW5nKGlucHV0KTtcblxuICAgIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgdXJsLnNjaGVtZSA9ICcnO1xuICAgICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgIHVybC5ob3N0ID0gbnVsbDtcbiAgICAgIHVybC5wb3J0ID0gbnVsbDtcbiAgICAgIHVybC5wYXRoID0gW107XG4gICAgICB1cmwucXVlcnkgPSBudWxsO1xuICAgICAgdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gZmFsc2U7XG4gICAgICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIExFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSwgJycpO1xuICAgICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFLCAnJDEnKTtcbiAgICB9XG5cbiAgICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIFRBQl9BTkRfTkVXX0xJTkUsICcnKTtcblxuICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuXG4gICAgd2hpbGUgKHBvaW50ZXIgPD0gY29kZVBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGNociA9IGNvZGVQb2ludHNbcG9pbnRlcl07XG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgIGNhc2UgU0NIRU1FX1NUQVJUOlxuICAgICAgICAgIGlmIChjaHIgJiYgZXhlYyhBTFBIQSwgY2hyKSkge1xuICAgICAgICAgICAgYnVmZmVyICs9IHRvTG93ZXJDYXNlKGNocik7XG4gICAgICAgICAgICBzdGF0ZSA9IFNDSEVNRTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IE5PX1NDSEVNRTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTQ0hFTUU6XG4gICAgICAgICAgaWYgKGNociAmJiAoZXhlYyhBTFBIQU5VTUVSSUMsIGNocikgfHwgY2hyID09ICcrJyB8fCBjaHIgPT0gJy0nIHx8IGNociA9PSAnLicpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gdG9Mb3dlckNhc2UoY2hyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnOicpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIChcbiAgICAgICAgICAgICAgKHVybC5pc1NwZWNpYWwoKSAhPSBoYXNPd24oc3BlY2lhbFNjaGVtZXMsIGJ1ZmZlcikpIHx8XG4gICAgICAgICAgICAgIChidWZmZXIgPT0gJ2ZpbGUnICYmICh1cmwuaW5jbHVkZXNDcmVkZW50aWFscygpIHx8IHVybC5wb3J0ICE9PSBudWxsKSkgfHxcbiAgICAgICAgICAgICAgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnICYmICF1cmwuaG9zdClcbiAgICAgICAgICAgICkpIHJldHVybjtcbiAgICAgICAgICAgIHVybC5zY2hlbWUgPSBidWZmZXI7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIHNwZWNpYWxTY2hlbWVzW3VybC5zY2hlbWVdID09IHVybC5wb3J0KSB1cmwucG9ydCA9IG51bGw7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gRklMRTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsLmlzU3BlY2lhbCgpICYmIGJhc2UgJiYgYmFzZS5zY2hlbWUgPT0gdXJsLnNjaGVtZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmwuaXNTcGVjaWFsKCkpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PSAnLycpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIX09SX0FVVEhPUklUWTtcbiAgICAgICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIHN0YXRlID0gQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gTk9fU0NIRU1FO1xuICAgICAgICAgICAgcG9pbnRlciA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgTk9fU0NIRU1FOlxuICAgICAgICAgIGlmICghYmFzZSB8fCAoYmFzZS5jYW5ub3RCZUFCYXNlVVJMICYmIGNociAhPSAnIycpKSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgICAgaWYgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuc2NoZW1lID0gYmFzZS5zY2hlbWU7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RhdGUgPSBiYXNlLnNjaGVtZSA9PSAnZmlsZScgPyBGSUxFIDogUkVMQVRJVkU7XG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09ICcvJyAmJiBjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUkVMQVRJVkU7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSF9PUl9BVVRIT1JJVFk6XG4gICAgICAgICAgaWYgKGNociA9PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIFJFTEFUSVZFOlxuICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICBpZiAoY2hyID09IEVPRikge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICcvJyB8fCAoY2hyID09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFJFTEFUSVZFX1NMQVNIO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9IGJhc2UucXVlcnk7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnBhdGgubGVuZ3RoLS07XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUkVMQVRJVkVfU0xBU0g6XG4gICAgICAgICAgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiAoY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUzpcbiAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICAgIGlmIChjaHIgIT0gJy8nIHx8IGNoYXJBdChidWZmZXIsIHBvaW50ZXIgKyAxKSAhPSAnLycpIGNvbnRpbnVlO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTOlxuICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmIGNociAhPSAnXFxcXCcpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIEFVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09ICdAJykge1xuICAgICAgICAgICAgaWYgKHNlZW5BdCkgYnVmZmVyID0gJyU0MCcgKyBidWZmZXI7XG4gICAgICAgICAgICBzZWVuQXQgPSB0cnVlO1xuICAgICAgICAgICAgYnVmZmVyQ29kZVBvaW50cyA9IGFycmF5RnJvbShidWZmZXIpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXJDb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBjb2RlUG9pbnQgPSBidWZmZXJDb2RlUG9pbnRzW2ldO1xuICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID09ICc6JyAmJiAhc2VlblBhc3N3b3JkVG9rZW4pIHtcbiAgICAgICAgICAgICAgICBzZWVuUGFzc3dvcmRUb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGVuY29kZWRDb2RlUG9pbnRzID0gcGVyY2VudEVuY29kZShjb2RlUG9pbnQsIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgICAgIGlmIChzZWVuUGFzc3dvcmRUb2tlbikgdXJsLnBhc3N3b3JkICs9IGVuY29kZWRDb2RlUG9pbnRzO1xuICAgICAgICAgICAgICBlbHNlIHVybC51c2VybmFtZSArPSBlbmNvZGVkQ29kZVBvaW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT0gRU9GIHx8IGNociA9PSAnLycgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoc2VlbkF0ICYmIGJ1ZmZlciA9PSAnJykgcmV0dXJuIElOVkFMSURfQVVUSE9SSVRZO1xuICAgICAgICAgICAgcG9pbnRlciAtPSBhcnJheUZyb20oYnVmZmVyKS5sZW5ndGggKyAxO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEhPU1Q7XG4gICAgICAgICAgfSBlbHNlIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBIT1NUOlxuICAgICAgICBjYXNlIEhPU1ROQU1FOlxuICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIHVybC5zY2hlbWUgPT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09ICc6JyAmJiAhc2VlbkJyYWNrZXQpIHtcbiAgICAgICAgICAgIGlmIChidWZmZXIgPT0gJycpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFBPUlQ7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSA9PSBIT1NUTkFNRSkgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT0gRU9GIHx8IGNociA9PSAnLycgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIGJ1ZmZlciA9PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIGJ1ZmZlciA9PSAnJyAmJiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHJldHVybjtcbiAgICAgICAgICAgIGZhaWx1cmUgPSB1cmwucGFyc2VIb3N0KGJ1ZmZlcik7XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNociA9PSAnWycpIHNlZW5CcmFja2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGNociA9PSAnXScpIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQT1JUOlxuICAgICAgICAgIGlmIChleGVjKERJR0lULCBjaHIpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT0gRU9GIHx8IGNociA9PSAnLycgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpIHx8XG4gICAgICAgICAgICBzdGF0ZU92ZXJyaWRlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyICE9ICcnKSB7XG4gICAgICAgICAgICAgIHZhciBwb3J0ID0gcGFyc2VJbnQoYnVmZmVyLCAxMCk7XG4gICAgICAgICAgICAgIGlmIChwb3J0ID4gMHhGRkZGKSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgICAgICB1cmwucG9ydCA9ICh1cmwuaXNTcGVjaWFsKCkgJiYgcG9ydCA9PT0gc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0pID8gbnVsbCA6IHBvcnQ7XG4gICAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRTpcbiAgICAgICAgICB1cmwuc2NoZW1lID0gJ2ZpbGUnO1xuICAgICAgICAgIGlmIChjaHIgPT0gJy8nIHx8IGNociA9PSAnXFxcXCcpIHN0YXRlID0gRklMRV9TTEFTSDtcbiAgICAgICAgICBlbHNlIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09ICdmaWxlJykge1xuICAgICAgICAgICAgaWYgKGNociA9PSBFT0YpIHtcbiAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJz8nKSB7XG4gICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnIycpIHtcbiAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICghc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcihqb2luKGFycmF5U2xpY2UoY29kZVBvaW50cywgcG9pbnRlciksICcnKSkpIHtcbiAgICAgICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB1cmwuc2hvcnRlblBhdGgoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRV9TTEFTSDpcbiAgICAgICAgICBpZiAoY2hyID09ICcvJyB8fCBjaHIgPT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYmFzZSAmJiBiYXNlLnNjaGVtZSA9PSAnZmlsZScgJiYgIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoam9pbihhcnJheVNsaWNlKGNvZGVQb2ludHMsIHBvaW50ZXIpLCAnJykpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZS5wYXRoWzBdLCB0cnVlKSkgcHVzaCh1cmwucGF0aCwgYmFzZS5wYXRoWzBdKTtcbiAgICAgICAgICAgIGVsc2UgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIEZJTEVfSE9TVDpcbiAgICAgICAgICBpZiAoY2hyID09IEVPRiB8fCBjaHIgPT0gJy8nIHx8IGNociA9PSAnXFxcXCcgfHwgY2hyID09ICc/JyB8fCBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciA9PSAnJykge1xuICAgICAgICAgICAgICB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICAgIGlmICh1cmwuaG9zdCA9PSAnbG9jYWxob3N0JykgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIH0gY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIX1NUQVJUOlxuICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmIGNociAhPSAnXFxcXCcpIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyICE9IEVPRikge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgaWYgKGNociAhPSAnLycpIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNociA9PSBFT0YgfHwgY2hyID09ICcvJyB8fFxuICAgICAgICAgICAgKGNociA9PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSB8fFxuICAgICAgICAgICAgKCFzdGF0ZU92ZXJyaWRlICYmIChjaHIgPT0gJz8nIHx8IGNociA9PSAnIycpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGlzRG91YmxlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgdXJsLnNob3J0ZW5QYXRoKCk7XG4gICAgICAgICAgICAgIGlmIChjaHIgIT0gJy8nICYmICEoY2hyID09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzU2luZ2xlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgaWYgKGNociAhPSAnLycgJiYgIShjaHIgPT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkpIHtcbiAgICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09ICdmaWxlJyAmJiAhdXJsLnBhdGgubGVuZ3RoICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsLmhvc3QpIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gY2hhckF0KGJ1ZmZlciwgMCkgKyAnOic7IC8vIG5vcm1hbGl6ZSB3aW5kb3dzIGRyaXZlIGxldHRlclxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHB1c2godXJsLnBhdGgsIGJ1ZmZlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09ICdmaWxlJyAmJiAoY2hyID09IEVPRiB8fCBjaHIgPT0gJz8nIHx8IGNociA9PSAnIycpKSB7XG4gICAgICAgICAgICAgIHdoaWxlICh1cmwucGF0aC5sZW5ndGggPiAxICYmIHVybC5wYXRoWzBdID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNoaWZ0KHVybC5wYXRoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PSAnPycpIHtcbiAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PSAnIycpIHtcbiAgICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBwZXJjZW50RW5jb2RlKGNociwgcGF0aFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIOlxuICAgICAgICAgIGlmIChjaHIgPT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT0gRU9GKSB7XG4gICAgICAgICAgICB1cmwucGF0aFswXSArPSBwZXJjZW50RW5jb2RlKGNociwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFFVRVJZOlxuICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaHIgPT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT0gRU9GKSB7XG4gICAgICAgICAgICBpZiAoY2hyID09IFwiJ1wiICYmIHVybC5pc1NwZWNpYWwoKSkgdXJsLnF1ZXJ5ICs9ICclMjcnO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hyID09ICcjJykgdXJsLnF1ZXJ5ICs9ICclMjMnO1xuICAgICAgICAgICAgZWxzZSB1cmwucXVlcnkgKz0gcGVyY2VudEVuY29kZShjaHIsIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGUkFHTUVOVDpcbiAgICAgICAgICBpZiAoY2hyICE9IEVPRikgdXJsLmZyYWdtZW50ICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwb2ludGVyKys7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2hvc3QtcGFyc2luZ1xuICBwYXJzZUhvc3Q6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIHZhciByZXN1bHQsIGNvZGVQb2ludHMsIGluZGV4O1xuICAgIGlmIChjaGFyQXQoaW5wdXQsIDApID09ICdbJykge1xuICAgICAgaWYgKGNoYXJBdChpbnB1dCwgaW5wdXQubGVuZ3RoIC0gMSkgIT0gJ10nKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY2KHN0cmluZ1NsaWNlKGlucHV0LCAxLCAtMSkpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgLy8gb3BhcXVlIGhvc3RcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU3BlY2lhbCgpKSB7XG4gICAgICBpZiAoZXhlYyhGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5ULCBpbnB1dCkpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICByZXN1bHQgPSAnJztcbiAgICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY29kZVBvaW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpbmRleF0sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5ob3N0ID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dCA9IHRvQVNDSUkoaW5wdXQpO1xuICAgICAgaWYgKGV4ZWMoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCwgaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY0KGlucHV0KTtcbiAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2Nhbm5vdC1oYXZlLWEtdXNlcm5hbWUtcGFzc3dvcmQtcG9ydFxuICBjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaG9zdCB8fCB0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgdGhpcy5zY2hlbWUgPT0gJ2ZpbGUnO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2luY2x1ZGUtY3JlZGVudGlhbHNcbiAgaW5jbHVkZXNDcmVkZW50aWFsczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJuYW1lICE9ICcnIHx8IHRoaXMucGFzc3dvcmQgIT0gJyc7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXMtc3BlY2lhbFxuICBpc1NwZWNpYWw6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaGFzT3duKHNwZWNpYWxTY2hlbWVzLCB0aGlzLnNjaGVtZSk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc2hvcnRlbi1hLXVybHMtcGF0aFxuICBzaG9ydGVuUGF0aDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXRoID0gdGhpcy5wYXRoO1xuICAgIHZhciBwYXRoU2l6ZSA9IHBhdGgubGVuZ3RoO1xuICAgIGlmIChwYXRoU2l6ZSAmJiAodGhpcy5zY2hlbWUgIT0gJ2ZpbGUnIHx8IHBhdGhTaXplICE9IDEgfHwgIWlzV2luZG93c0RyaXZlTGV0dGVyKHBhdGhbMF0sIHRydWUpKSkge1xuICAgICAgcGF0aC5sZW5ndGgtLTtcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC11cmwtc2VyaWFsaXplclxuICBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXJsID0gdGhpcztcbiAgICB2YXIgc2NoZW1lID0gdXJsLnNjaGVtZTtcbiAgICB2YXIgdXNlcm5hbWUgPSB1cmwudXNlcm5hbWU7XG4gICAgdmFyIHBhc3N3b3JkID0gdXJsLnBhc3N3b3JkO1xuICAgIHZhciBob3N0ID0gdXJsLmhvc3Q7XG4gICAgdmFyIHBvcnQgPSB1cmwucG9ydDtcbiAgICB2YXIgcGF0aCA9IHVybC5wYXRoO1xuICAgIHZhciBxdWVyeSA9IHVybC5xdWVyeTtcbiAgICB2YXIgZnJhZ21lbnQgPSB1cmwuZnJhZ21lbnQ7XG4gICAgdmFyIG91dHB1dCA9IHNjaGVtZSArICc6JztcbiAgICBpZiAoaG9zdCAhPT0gbnVsbCkge1xuICAgICAgb3V0cHV0ICs9ICcvLyc7XG4gICAgICBpZiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSkge1xuICAgICAgICBvdXRwdXQgKz0gdXNlcm5hbWUgKyAocGFzc3dvcmQgPyAnOicgKyBwYXNzd29yZCA6ICcnKSArICdAJztcbiAgICAgIH1cbiAgICAgIG91dHB1dCArPSBzZXJpYWxpemVIb3N0KGhvc3QpO1xuICAgICAgaWYgKHBvcnQgIT09IG51bGwpIG91dHB1dCArPSAnOicgKyBwb3J0O1xuICAgIH0gZWxzZSBpZiAoc2NoZW1lID09ICdmaWxlJykgb3V0cHV0ICs9ICcvLyc7XG4gICAgb3V0cHV0ICs9IHVybC5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgam9pbihwYXRoLCAnLycpIDogJyc7XG4gICAgaWYgKHF1ZXJ5ICE9PSBudWxsKSBvdXRwdXQgKz0gJz8nICsgcXVlcnk7XG4gICAgaWYgKGZyYWdtZW50ICE9PSBudWxsKSBvdXRwdXQgKz0gJyMnICsgZnJhZ21lbnQ7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhyZWZcbiAgc2V0SHJlZjogZnVuY3Rpb24gKGhyZWYpIHtcbiAgICB2YXIgZmFpbHVyZSA9IHRoaXMucGFyc2UoaHJlZik7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy51cGRhdGUoKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLW9yaWdpblxuICBnZXRPcmlnaW46IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2NoZW1lID0gdGhpcy5zY2hlbWU7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgaWYgKHNjaGVtZSA9PSAnYmxvYicpIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IFVSTENvbnN0cnVjdG9yKHNjaGVtZS5wYXRoWzBdKS5vcmlnaW47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgfVxuICAgIGlmIChzY2hlbWUgPT0gJ2ZpbGUnIHx8ICF0aGlzLmlzU3BlY2lhbCgpKSByZXR1cm4gJ251bGwnO1xuICAgIHJldHVybiBzY2hlbWUgKyAnOi8vJyArIHNlcmlhbGl6ZUhvc3QodGhpcy5ob3N0KSArIChwb3J0ICE9PSBudWxsID8gJzonICsgcG9ydCA6ICcnKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gIGdldFByb3RvY29sOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1lICsgJzonO1xuICB9LFxuICBzZXRQcm90b2NvbDogZnVuY3Rpb24gKHByb3RvY29sKSB7XG4gICAgdGhpcy5wYXJzZSgkdG9TdHJpbmcocHJvdG9jb2wpICsgJzonLCBTQ0hFTUVfU1RBUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgZ2V0VXNlcm5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZTtcbiAgfSxcbiAgc2V0VXNlcm5hbWU6IGZ1bmN0aW9uICh1c2VybmFtZSkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyh1c2VybmFtZSkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy51c2VybmFtZSA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy51c2VybmFtZSArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmRcbiAgZ2V0UGFzc3dvcmQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZDtcbiAgfSxcbiAgc2V0UGFzc3dvcmQ6IGZ1bmN0aW9uIChwYXNzd29yZCkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyhwYXNzd29yZCkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy5wYXNzd29yZCA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5wYXNzd29yZCArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICBnZXRIb3N0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJ1xuICAgICAgOiBwb3J0ID09PSBudWxsID8gc2VyaWFsaXplSG9zdChob3N0KVxuICAgICAgOiBzZXJpYWxpemVIb3N0KGhvc3QpICsgJzonICsgcG9ydDtcbiAgfSxcbiAgc2V0SG9zdDogZnVuY3Rpb24gKGhvc3QpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0LCBIT1NUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gIGdldEhvc3RuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJyA6IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gIH0sXG4gIHNldEhvc3RuYW1lOiBmdW5jdGlvbiAoaG9zdG5hbWUpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0bmFtZSwgSE9TVE5BTUUpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydFxuICBnZXRQb3J0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIHBvcnQgPT09IG51bGwgPyAnJyA6ICR0b1N0cmluZyhwb3J0KTtcbiAgfSxcbiAgc2V0UG9ydDogZnVuY3Rpb24gKHBvcnQpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkgcmV0dXJuO1xuICAgIHBvcnQgPSAkdG9TdHJpbmcocG9ydCk7XG4gICAgaWYgKHBvcnQgPT0gJycpIHRoaXMucG9ydCA9IG51bGw7XG4gICAgZWxzZSB0aGlzLnBhcnNlKHBvcnQsIFBPUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWVcbiAgZ2V0UGF0aG5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGF0aCA9IHRoaXMucGF0aDtcbiAgICByZXR1cm4gdGhpcy5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgam9pbihwYXRoLCAnLycpIDogJyc7XG4gIH0sXG4gIHNldFBhdGhuYW1lOiBmdW5jdGlvbiAocGF0aG5hbWUpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXRoID0gW107XG4gICAgdGhpcy5wYXJzZShwYXRobmFtZSwgUEFUSF9TVEFSVCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hcbiAgZ2V0U2VhcmNoOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyeTtcbiAgICByZXR1cm4gcXVlcnkgPyAnPycgKyBxdWVyeSA6ICcnO1xuICB9LFxuICBzZXRTZWFyY2g6IGZ1bmN0aW9uIChzZWFyY2gpIHtcbiAgICBzZWFyY2ggPSAkdG9TdHJpbmcoc2VhcmNoKTtcbiAgICBpZiAoc2VhcmNoID09ICcnKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCc/JyA9PSBjaGFyQXQoc2VhcmNoLCAwKSkgc2VhcmNoID0gc3RyaW5nU2xpY2Uoc2VhcmNoLCAxKTtcbiAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgIHRoaXMucGFyc2Uoc2VhcmNoLCBRVUVSWSk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNocGFyYW1zXG4gIGdldFNlYXJjaFBhcmFtczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFBhcmFtcy5mYWNhZGU7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gIGdldEhhc2g6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZnJhZ21lbnQgPSB0aGlzLmZyYWdtZW50O1xuICAgIHJldHVybiBmcmFnbWVudCA/ICcjJyArIGZyYWdtZW50IDogJyc7XG4gIH0sXG4gIHNldEhhc2g6IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgaGFzaCA9ICR0b1N0cmluZyhoYXNoKTtcbiAgICBpZiAoaGFzaCA9PSAnJykge1xuICAgICAgdGhpcy5mcmFnbWVudCA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgnIycgPT0gY2hhckF0KGhhc2gsIDApKSBoYXNoID0gc3RyaW5nU2xpY2UoaGFzaCwgMSk7XG4gICAgdGhpcy5mcmFnbWVudCA9ICcnO1xuICAgIHRoaXMucGFyc2UoaGFzaCwgRlJBR01FTlQpO1xuICB9LFxuICB1cGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2hQYXJhbXMuc2VyaWFsaXplKCkgfHwgbnVsbDtcbiAgfVxufTtcblxuLy8gYFVSTGAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLWNsYXNzXG52YXIgVVJMQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBVUkwodXJsIC8qICwgYmFzZSAqLykge1xuICB2YXIgdGhhdCA9IGFuSW5zdGFuY2UodGhpcywgVVJMUHJvdG90eXBlKTtcbiAgdmFyIGJhc2UgPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKSA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBzdGF0ZSA9IHNldEludGVybmFsU3RhdGUodGhhdCwgbmV3IFVSTFN0YXRlKHVybCwgZmFsc2UsIGJhc2UpKTtcbiAgaWYgKCFERVNDUklQVE9SUykge1xuICAgIHRoYXQuaHJlZiA9IHN0YXRlLnNlcmlhbGl6ZSgpO1xuICAgIHRoYXQub3JpZ2luID0gc3RhdGUuZ2V0T3JpZ2luKCk7XG4gICAgdGhhdC5wcm90b2NvbCA9IHN0YXRlLmdldFByb3RvY29sKCk7XG4gICAgdGhhdC51c2VybmFtZSA9IHN0YXRlLmdldFVzZXJuYW1lKCk7XG4gICAgdGhhdC5wYXNzd29yZCA9IHN0YXRlLmdldFBhc3N3b3JkKCk7XG4gICAgdGhhdC5ob3N0ID0gc3RhdGUuZ2V0SG9zdCgpO1xuICAgIHRoYXQuaG9zdG5hbWUgPSBzdGF0ZS5nZXRIb3N0bmFtZSgpO1xuICAgIHRoYXQucG9ydCA9IHN0YXRlLmdldFBvcnQoKTtcbiAgICB0aGF0LnBhdGhuYW1lID0gc3RhdGUuZ2V0UGF0aG5hbWUoKTtcbiAgICB0aGF0LnNlYXJjaCA9IHN0YXRlLmdldFNlYXJjaCgpO1xuICAgIHRoYXQuc2VhcmNoUGFyYW1zID0gc3RhdGUuZ2V0U2VhcmNoUGFyYW1zKCk7XG4gICAgdGhhdC5oYXNoID0gc3RhdGUuZ2V0SGFzaCgpO1xuICB9XG59O1xuXG52YXIgVVJMUHJvdG90eXBlID0gVVJMQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG52YXIgYWNjZXNzb3JEZXNjcmlwdG9yID0gZnVuY3Rpb24gKGdldHRlciwgc2V0dGVyKSB7XG4gIHJldHVybiB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKVtnZXR0ZXJdKCk7XG4gICAgfSxcbiAgICBzZXQ6IHNldHRlciAmJiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpW3NldHRlcl0odmFsdWUpO1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfTtcbn07XG5cbmlmIChERVNDUklQVE9SUykge1xuICAvLyBgVVJMLnByb3RvdHlwZS5ocmVmYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaHJlZlxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaHJlZicsIGFjY2Vzc29yRGVzY3JpcHRvcignc2VyaWFsaXplJywgJ3NldEhyZWYnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLm9yaWdpbmAgZ2V0dGVyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1vcmlnaW5cbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ29yaWdpbicsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0T3JpZ2luJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wcm90b2NvbGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwcm90b2NvbCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UHJvdG9jb2wnLCAnc2V0UHJvdG9jb2wnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnVzZXJuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3VzZXJuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRVc2VybmFtZScsICdzZXRVc2VybmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucGFzc3dvcmRgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXNzd29yZFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncGFzc3dvcmQnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBhc3N3b3JkJywgJ3NldFBhc3N3b3JkJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0YCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaG9zdCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SG9zdCcsICdzZXRIb3N0JykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5ob3N0bmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdob3N0bmFtZScsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SG9zdG5hbWUnLCAnc2V0SG9zdG5hbWUnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnBvcnRgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wb3J0XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwb3J0JywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQb3J0JywgJ3NldFBvcnQnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnBhdGhuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3BhdGhuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQYXRobmFtZScsICdzZXRQYXRobmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdzZWFyY2gnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFNlYXJjaCcsICdzZXRTZWFyY2gnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnNlYXJjaFBhcmFtc2AgZ2V0dGVyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hwYXJhbXNcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3NlYXJjaFBhcmFtcycsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0U2VhcmNoUGFyYW1zJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5oYXNoYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaGFzaFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaGFzaCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0SGFzaCcsICdzZXRIYXNoJykpO1xufVxuXG4vLyBgVVJMLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXRvanNvblxuZGVmaW5lQnVpbHRJbihVUkxQcm90b3R5cGUsICd0b0pTT04nLCBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnNlcmlhbGl6ZSgpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI1VSTC1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbmRlZmluZUJ1aWx0SW4oVVJMUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbmlmIChOYXRpdmVVUkwpIHtcbiAgdmFyIG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5jcmVhdGVPYmplY3RVUkw7XG4gIHZhciBuYXRpdmVSZXZva2VPYmplY3RVUkwgPSBOYXRpdmVVUkwucmV2b2tlT2JqZWN0VVJMO1xuICAvLyBgVVJMLmNyZWF0ZU9iamVjdFVSTGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvY3JlYXRlT2JqZWN0VVJMXG4gIGlmIChuYXRpdmVDcmVhdGVPYmplY3RVUkwpIGRlZmluZUJ1aWx0SW4oVVJMQ29uc3RydWN0b3IsICdjcmVhdGVPYmplY3RVUkwnLCBiaW5kKG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCwgTmF0aXZlVVJMKSk7XG4gIC8vIGBVUkwucmV2b2tlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9yZXZva2VPYmplY3RVUkxcbiAgaWYgKG5hdGl2ZVJldm9rZU9iamVjdFVSTCkgZGVmaW5lQnVpbHRJbihVUkxDb25zdHJ1Y3RvciwgJ3Jldm9rZU9iamVjdFVSTCcsIGJpbmQobmF0aXZlUmV2b2tlT2JqZWN0VVJMLCBOYXRpdmVVUkwpKTtcbn1cblxuc2V0VG9TdHJpbmdUYWcoVVJMQ29uc3RydWN0b3IsICdVUkwnKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGZvcmNlZDogIVVTRV9OQVRJVkVfVVJMLCBzaGFtOiAhREVTQ1JJUFRPUlMgfSwge1xuICBVUkw6IFVSTENvbnN0cnVjdG9yXG59KTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3Rvci5qcz8iKX0pLCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qcyI6KChfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3VudXNlZF93ZWJwYWNrX2V4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk9PntldmFsKCJcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgcmVwbGFjZWQgdG8gbW9kdWxlIGJlbG93XG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9tb2R1bGVzL3dlYi51cmwuY29uc3RydWN0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3Rvci5qc1wiKTtcblxuXG4vLyMgc291cmNlVVJMPXdlYnBhY2s6Ly9iYWJlbC8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qcz8iKX0pfSk7dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXz17fTtmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKXt2YXIgY2FjaGVkTW9kdWxlPV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07aWYoY2FjaGVkTW9kdWxlIT09dW5kZWZpbmVkKXtyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHN9dmFyIG1vZHVsZT1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdPXtpZDptb2R1bGVJZCxsb2FkZWQ6ZmFsc2UsZXhwb3J0czp7fX07X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cyxtb2R1bGUsbW9kdWxlLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk7bW9kdWxlLmxvYWRlZD10cnVlO3JldHVybiBtb2R1bGUuZXhwb3J0c30oKCk9PntfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE89e319KSgpOygoKT0+e19fd2VicGFja19yZXF1aXJlX18ubj0obW9kdWxlKT0+e3ZhciBnZXR0ZXI9bW9kdWxlJiZtb2R1bGUuX19lc01vZHVsZT8oKT0+KG1vZHVsZVsnZGVmYXVsdCddKTooKT0+KG1vZHVsZSk7X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlcix7YTpnZXR0ZXJ9KTtyZXR1cm4gZ2V0dGVyfX0pKCk7KCgpPT57X193ZWJwYWNrX3JlcXVpcmVfXy5kPShleHBvcnRzLGRlZmluaXRpb24pPT57Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbil7aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sa2V5KSYmIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLGtleSkpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLGtleSx7ZW51bWVyYWJsZTp0cnVlLGdldDpkZWZpbml0aW9uW2tleV19KX19fX0pKCk7KCgpPT57X193ZWJwYWNrX3JlcXVpcmVfXy5nPShmdW5jdGlvbigpe2lmKHR5cGVvZiBnbG9iYWxUaGlzPT09J29iamVjdCcpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKX1jYXRjaChlKXtpZih0eXBlb2Ygd2luZG93PT09J29iamVjdCcpcmV0dXJuIHdpbmRvd319KSgpfSkoKTsoKCk9PntfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZD0obW9kdWxlKT0+e21vZHVsZT1PYmplY3QuY3JlYXRlKG1vZHVsZSk7aWYoIW1vZHVsZS5jaGlsZHJlbiltb2R1bGUuY2hpbGRyZW49W107T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwnZXhwb3J0cycse2VudW1lcmFibGU6dHJ1ZSxzZXQ6KCk9Pnt0aHJvdyBuZXcgRXJyb3IoJ0VTIE1vZHVsZXMgbWF5IG5vdCBhc3NpZ24gbW9kdWxlLmV4cG9ydHMgb3IgZXhwb3J0cy4qLCBVc2UgRVNNIGV4cG9ydCBzeW50YXgsIGluc3RlYWQ6ICcrbW9kdWxlLmlkKTt9fSk7cmV0dXJuIG1vZHVsZX19KSgpOygoKT0+e19fd2VicGFja19yZXF1aXJlX18ubz0ob2JqLHByb3ApPT4oT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaixwcm9wKSl9KSgpOygoKT0+e19fd2VicGFja19yZXF1aXJlX18ucj0oZXhwb3J0cyk9PntpZih0eXBlb2YgU3ltYm9sIT09J3VuZGVmaW5lZCcmJlN5bWJvbC50b1N0cmluZ1RhZyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTonTW9kdWxlJ30pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCdfX2VzTW9kdWxlJyx7dmFsdWU6dHJ1ZX0pfX0pKCk7dmFyIF9fd2VicGFja19leHBvcnRzX189X193ZWJwYWNrX3JlcXVpcmVfXygiLi9wZGYuanMiKX0pKCk7",p=`data:text/javascript;base64,${S}`,M=`data:text/javascript;base64,${s}`;class J{constructor(I,g={},C={}){c(this,"container",null);c(this,"wrapper",null);c(this,"wrapperMain",null);c(this,"options",{});c(this,"requestOptions",{});c(this,"pdfDocument",null);this.container=I,this.options={staticFileUrl:"https://unpkg.com/pdfjs-dist@3.1.81/",...g},this.requestOptions=C,this.createWrapper()}createWrapper(){this.wrapper=document.createElement("div"),this.wrapper.className="vue-office-pdf",this.wrapper.setAttribute("style","text-align: center;overflow-y: auto;"),this.container.appendChild(this.wrapper)}createWrapperMain(){this.wrapperMain=document.createElement("div"),this.wrapperMain.className="vue-office-pdf-wrapper",this.wrapperMain.setAttribute("style","background: gray; padding: 30px 0;position: relative;"),this.wrapper.appendChild(this.wrapperMain)}createCanvas(I){let g=this.wrapperMain.querySelectorAll("canvas");if(g[I-1])return[g[I-1],g[I-1].getContext("2d")];const C=document.createElement("canvas");return C.setAttribute("style","width:100%"),this.wrapperMain.appendChild(C),[C,C.getContext("2d")]}installPdfScript(){return Y(p).then(()=>{window.pdfjsLib.GlobalWorkerOptions.workerSrc=M})}checkPdfLib(){return window.pdfjsLib?Promise.resolve():this.installPdfScript()}getDocument(I){return window.pdfjsLib.getDocument({url:u(I),cMapUrl:`${this.options.staticFileUrl.endsWith("/")?this.options.staticFileUrl:this.options.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...L(this.options,["width","staticFileUrl"])}).promise}renderSinglePage(I){return this.pdfDocument.getPage(I).then(g=>{const C=g.getViewport({scale:2}),l=window.devicePixelRatio||1;let[b,A]=this.createCanvas(I);b.width=Math.floor(C.width*l),b.height=Math.floor(C.height*l);let G=Math.floor(C.width),X=Math.floor(C.height);if(this.options.width){let m=this.options.width/G;G=Math.floor(this.options.width),X=Math.floor(X*m)}let d=this.wrapperMain.getBoundingClientRect().width-20;if(G>d){let m=d/G;G=Math.floor(d),X=Math.floor(X*m)}b.style.width=G+"px",b.style.height=X+"px";const W=l!==1?[l,0,0,l,0,0]:null;return g.render({canvasContext:A,transform:W,viewport:C}).promise.then(()=>{if(this.pdfDocument.numPages>I)return this.renderSinglePage(I+1)})})}renderPage(){if(!this.wrapperMain)this.createWrapperMain();else{let I=this.wrapperMain.querySelectorAll("canvas");if(I.length>this.pdfDocument.numPages)for(let g=I.length-1;g>=this.pdfDocument.numPages;g--)this.wrapperMain.removeChild(I[g])}return this.renderSinglePage(1)}clearAllCanvas(){this.wrapperMain&&(this.wrapper.removeChild(this.wrapperMain),this.wrapperMain=null)}setOptions(I){this.options=I}setRequestOptions(I){this.requestOptions=I}preview(I){return new Promise((g,C)=>{if(!I){this.clearAllCanvas(),C(new Error("预览地址不能为空"));return}this.checkPdfLib().then(l=>{this.getDocument(I).then(b=>{this.pdfDocument=b,this.renderPage().then(A=>{g()}).catch(A=>{this.clearAllCanvas(),C(A)})}).catch(b=>{this.clearAllCanvas(),C(b)})}).catch(l=>{this.clearAllCanvas(),C(l)})})}rerender(){return this.renderPage().then(I=>Promise.resolve()).catch(I=>(this.clearAllCanvas(),Promise.reject(I)))}save(I){this.pdfDocument&&this.pdfDocument._transport&&this.pdfDocument._transport.getData().then(g=>{i(I||`js-preview-pdf-${new Date().getTime()}.pdf`,g.buffer)})}destroy(){this.container.removeChild(this.wrapper),this.container=null,this.wrapper=null,this.wrapperMain=null,this.options={},this.requestOptions={},this.pdfDocument=null}}function F(Z,I,g){return new J(Z,I,g)}const z={init:F},U={__name:"JsPdfDemo",setup(Z){const I=N(null);return h(()=>{window.myPdfPreview=z.init(I.value),window.myPdfPreview.preview("/vue-office/examples/dist/static/test-files/test.pdf").then(g=>{console.log("excel preview done",window.myPdfPreview)}).catch(g=>{console.log("err",g)})}),(g,C)=>(R(),x("div",{ref_key:"dom",ref:I,style:{height:"calc(100vh - 50px)"}},null,512))}};export{U as default}; diff --git a/examples/dist/assets/PdfDemo-fded92f7.js b/examples/dist/assets/PdfDemo-fded92f7.js new file mode 100644 index 0000000..630d8b7 --- /dev/null +++ b/examples/dist/assets/PdfDemo-fded92f7.js @@ -0,0 +1 @@ +import{g as F,d as M,l as D}from"./url-de9b02cf.js";import{o as L}from"./omit-65aca3ae.js";import{d as N,_ as U,r as b,o as B,w as q,a as m,c as v,F as $,k as G,l as W,m as H,e as X,f as z,g as V,u as E}from"./index-b78d7be5.js";import{P as K,u as j}from"./PreviewWrapper-bc249492.js";const Y=`(()=>{"use strict";var e={7757:(e,t,r)=>{var n,a;function i(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){l(e,t),t.add(e)}function o(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r}function c(e,t,r){l(e,t),t.set(e,r)}function l(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function h(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,d(e,t,"get"))}function u(e,t,r){return function(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}(e,d(e,t,"set"),r),r}function d(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}r(5837),r(1703),r(9575),r(2472),r(8675),r(3105),r(3408),r(2958),r(3462),r(3824),r(2974),r(1439),r(7585),r(5315),r(3948),r(7658),r(8674),r(7727),r(4944),r(3792),r(9714),r(1550),r(4916),r(3123),r(1817),r(4723),r(6314),r(5306),r(7601),r(1299),r(7635),r(8264),r(7287),r(9743),r(2707),r(5581),r(7145),r(6699),r(2023),r(6755),r(285),r(1637),r(6229),r(7330),r(2062),r(8757),r(9135),r(4129),r(6977),r(1058),r(4603),r(8450),r(4678),r(9601),r(2262),r(2087),r(541),r(3210),r(5827),r(5438),r(8255),r(4197),r(5125),r(4506),r(5109),r(6495),r(8862),r(7852),r(7714),r(2801),r(1174),r(7922),e=r.hmd(e),n=globalThis,a=()=>(()=>{var e=[,(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.WorkerTask=t.WorkerMessageHandler=void 0,r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(143);var n=r(144),a=r(149),i=r(150),s=r(152),o=r(156),c=r(222),l=r(216),h=r(257),u=r(258);class d{constructor(e){this.name=e,this.terminated=!1,this._capability=new n.PromiseCapability}get finished(){return this._capability.promise}finish(){this._capability.resolve()}terminate(){this.terminated=!0}ensureNotTerminated(){if(this.terminated)throw new Error("Worker task was terminated")}}t.WorkerTask=d;class f{static setup(e,t){let r=!1;e.on("test",(function(t){r||(r=!0,e.send("test",t instanceof Uint8Array))})),e.on("configure",(function(e){(0,n.setVerbosityLevel)(e.verbosity)})),e.on("GetDocRequest",(function(e){return f.createDocumentHandler(e,t)}))}static createDocumentHandler(e,t){let r,f=!1,g=null;const p=new Set,m=(0,n.getVerbosityLevel)(),{docId:b,apiVersion:y}=e,w="3.9.179";if(y!==w)throw new Error('The API version "'.concat(y,'" does not match the Worker version "').concat(w,'".'));const v=[];for(const e in[])v.push(e);if(v.length)throw new Error("The \`Array.prototype\` contains unexpected enumerable properties: "+v.join(", ")+"; thus breaking e.g. \`for...in\` iteration of \`Array\`s.");const x=b+"_worker";let S=new h.MessageHandler(x,b,t);function A(){if(f)throw new Error("Worker was terminated")}function k(e){p.add(e)}function C(e){e.finish(),p.delete(e)}async function O(e){await r.ensureDoc("checkHeader"),await r.ensureDoc("parseStartXRef"),await r.ensureDoc("parse",[e]),await r.ensureDoc("checkFirstPage",[e]),await r.ensureDoc("checkLastPage",[e]);const t=await r.ensureDoc("isPureXfa");if(t){const e=new d("loadXfaFonts");k(e),await Promise.all([r.loadXfaFonts(S,e).catch((e=>{})).then((()=>C(e))),r.loadXfaImages()])}const[n,a]=await Promise.all([r.ensureDoc("numPages"),r.ensureDoc("fingerprints")]);return{numPages:n,fingerprints:a,htmlForXfa:t?await r.ensureDoc("htmlForXfa"):null}}return S.on("GetPage",(function(e){return r.getPage(e.pageIndex).then((function(e){return Promise.all([r.ensure(e,"rotate"),r.ensure(e,"ref"),r.ensure(e,"userUnit"),r.ensure(e,"view")]).then((function(e){let[t,r,n,a]=e;return{rotate:t,ref:r,userUnit:n,view:a}}))}))})),S.on("GetPageIndex",(function(e){const t=i.Ref.get(e.num,e.gen);return r.ensureCatalog("getPageIndex",[t])})),S.on("GetDestinations",(function(e){return r.ensureCatalog("destinations")})),S.on("GetDestination",(function(e){return r.ensureCatalog("getDestination",[e.id])})),S.on("GetPageLabels",(function(e){return r.ensureCatalog("pageLabels")})),S.on("GetPageLayout",(function(e){return r.ensureCatalog("pageLayout")})),S.on("GetPageMode",(function(e){return r.ensureCatalog("pageMode")})),S.on("GetViewerPreferences",(function(e){return r.ensureCatalog("viewerPreferences")})),S.on("GetOpenAction",(function(e){return r.ensureCatalog("openAction")})),S.on("GetAttachments",(function(e){return r.ensureCatalog("attachments")})),S.on("GetJavaScript",(function(e){return r.ensureCatalog("javaScript")})),S.on("GetDocJSActions",(function(e){return r.ensureCatalog("jsActions")})),S.on("GetPageJSActions",(function(e){let{pageIndex:t}=e;return r.getPage(t).then((function(e){return r.ensure(e,"jsActions")}))})),S.on("GetOutline",(function(e){return r.ensureCatalog("documentOutline")})),S.on("GetOptionalContentConfig",(function(e){return r.ensureCatalog("optionalContentConfig")})),S.on("GetPermissions",(function(e){return r.ensureCatalog("permissions")})),S.on("GetMetadata",(function(e){return Promise.all([r.ensureDoc("documentInfo"),r.ensureCatalog("metadata")])})),S.on("GetMarkInfo",(function(e){return r.ensureCatalog("markInfo")})),S.on("GetData",(function(e){return r.requestLoadedStream().then((function(e){return e.bytes}))})),S.on("GetAnnotations",(function(e){let{pageIndex:t,intent:n}=e;return r.getPage(t).then((function(e){const r=new d("GetAnnotations: page ".concat(t));return k(r),e.getAnnotationsData(S,r,n).then((e=>(C(r),e)),(e=>{throw C(r),e}))}))})),S.on("GetFieldObjects",(function(e){return r.ensureDoc("fieldObjects")})),S.on("HasJSActions",(function(e){return r.ensureDoc("hasJSActions")})),S.on("GetCalculationOrderIds",(function(e){return r.ensureDoc("calculationOrderIds")})),S.on("SaveDocument",(async function(e){let{isPureXfa:t,numPages:s,annotationStorage:c,filename:h}=e;const u=[r.requestLoadedStream(),r.ensureCatalog("acroForm"),r.ensureCatalog("acroFormRef"),r.ensureDoc("startXRef"),r.ensureDoc("linearization")],f=t?null:(0,a.getNewAnnotationsMap)(c),g=await r.ensureDoc("xref");if(f){const e=o.AnnotationFactory.generateImages(c.values(),g,r.evaluatorOptions.isOffscreenCanvasSupported);for(const[t,n]of f)u.push(r.getPage(t).then((r=>{const a=new d("Save (editor): page ".concat(t));return r.saveNewAnnotations(S,a,n,e).finally((function(){C(a)}))})))}if(t)u.push(r.serializeXfaData(c));else for(let e=0;ee.needAppearances)),m=a instanceof i.Dict&&a.get("XFA")||null;let b=null,y=!1;if(Array.isArray(m)){for(let e=0,t=m.length;e{"string"==typeof r&&(e[t]=(0,n.stringToPDFString)(r))})),w={rootRef:g.trailer.getRaw("Root")||null,encryptRef:g.trailer.getRaw("Encrypt")||null,newRef:g.getNewTemporaryRef(),infoRef:g.trailer.getRaw("Info")||null,info:e,fileIds:g.trailer.get("ID")||null,startXRef:c?o:null!==(v=g.lastXRefStreamPos)&&void 0!==v?v:o,filename:h}}return(0,l.incrementalUpdate)({originalData:r.bytes,xrefInfo:w,newRefs:d,xref:g,hasXfa:!!m,xfaDatasetsRef:b,hasXfaDatasetsEntry:y,needAppearances:p,acroFormRef:s,acroForm:a,xfaData:f}).finally((()=>{g.resetNewTemporaryRef()}))}))})),S.on("GetOperatorList",(function(e,t){const a=e.pageIndex;r.getPage(a).then((function(r){const i=new d("GetOperatorList: page ".concat(a));k(i);const s=m>=n.VerbosityLevel.INFOS?Date.now():0;r.getOperatorList({handler:S,sink:t,task:i,intent:e.intent,cacheKey:e.cacheKey,annotationStorage:e.annotationStorage}).then((function(e){C(i),s&&(0,n.info)("page=".concat(a+1," - getOperatorList: time=").concat(Date.now()-s,"ms, len=").concat(e.length)),t.close()}),(function(e){C(i),i.terminated||t.error(e)}))}))})),S.on("GetTextContent",(function(e,t){const{pageIndex:a,includeMarkedContent:i,disableNormalization:s}=e;r.getPage(a).then((function(e){const r=new d("GetTextContent: page "+a);k(r);const o=m>=n.VerbosityLevel.INFOS?Date.now():0;e.extractTextContent({handler:S,task:r,sink:t,includeMarkedContent:i,disableNormalization:s}).then((function(){C(r),o&&(0,n.info)("page=".concat(a+1," - getTextContent: time=")+(Date.now()-o)+"ms"),t.close()}),(function(e){C(r),r.terminated||t.error(e)}))}))})),S.on("GetStructTree",(function(e){return r.getPage(e.pageIndex).then((function(e){return r.ensure(e,"getStructTree")}))})),S.on("FontFallback",(function(e){return r.fontFallback(e.id,S)})),S.on("Cleanup",(function(e){return r.cleanup(!0)})),S.on("Terminate",(function(e){f=!0;const t=[];if(r){r.terminate(new n.AbortException("Worker was terminated."));const e=r.cleanup();t.push(e),r=null}else(0,c.clearGlobalCaches)();g&&g(new n.AbortException("Worker was terminated."));for(const e of p)t.push(e.finished),e.terminate();return Promise.all(t).then((function(){S.destroy(),S=null}))})),S.on("Ready",(function(t){!function(e){function t(e){A(),S.send("GetDoc",{pdfInfo:e})}function i(e){if(A(),e instanceof n.PasswordException){const t=new d("PasswordException: response ".concat(e.code));k(t),S.sendWithPromise("PasswordRequest",e).then((function(e){let{password:n}=e;C(t),r.updatePassword(n),o()})).catch((function(){C(t),S.send("DocException",e)}))}else e instanceof n.InvalidPDFException||e instanceof n.MissingPDFException||e instanceof n.UnexpectedResponseException||e instanceof n.UnknownErrorException?S.send("DocException",e):S.send("DocException",new n.UnknownErrorException(e.message,e.toString()))}function o(){A(),O(!1).then(t,(function(e){A(),e instanceof a.XRefParseException?r.requestLoadedStream().then((function(){A(),O(!0).then(t,i)})):i(e)}))}A(),function(e){let{data:t,password:r,disableAutoFetch:i,rangeChunkSize:o,length:c,docBaseUrl:l,enableXfa:h,evaluatorOptions:d}=e;const f={source:null,disableAutoFetch:i,docBaseUrl:l,docId:b,enableXfa:h,evaluatorOptions:d,handler:S,length:c,password:r,rangeChunkSize:o},p=new n.PromiseCapability;let m;if(t){try{f.source=t,m=new s.LocalPdfManager(f),p.resolve(m)}catch(e){p.reject(e)}return p.promise}let y,w=[];try{y=new u.PDFWorkerStream(S)}catch(e){return p.reject(e),p.promise}const v=y.getFullReader();v.headersReady.then((function(){if(v.isRangeSupported){f.source=y,f.length=v.contentLength,f.disableAutoFetch||(f.disableAutoFetch=v.isStreamingSupported),m=new s.NetworkPdfManager(f);for(const e of w)m.sendProgressiveData(e);w=[],p.resolve(m),g=null}})).catch((function(e){p.reject(e),g=null}));let x=0;return new Promise((function(e,t){v.read().then((function e(r){let{value:i,done:o}=r;try{if(A(),o)return m||function(){const e=(0,a.arrayBuffersToBytes)(w);c&&e.length!==c&&(0,n.warn)("reported HTTP length is different from actual");try{f.source=e,m=new s.LocalPdfManager(f),p.resolve(m)}catch(e){p.reject(e)}w=[]}(),void(g=null);x+=i.byteLength,v.isStreamingSupported||S.send("DocProgress",{loaded:x,total:Math.max(x,v.contentLength||0)}),m?m.sendProgressiveData(i):w.push(i),v.read().then(e,t)}catch(r){t(r)}}),t)})).catch((function(e){p.reject(e),g=null})),g=function(e){y.cancelAllRequests(e)},p.promise}(e).then((function(e){if(f)throw e.terminate(new n.AbortException("Worker was terminated.")),new Error("Worker was terminated");r=e,r.requestLoadedStream(!0).then((e=>{S.send("DataLoaded",{length:e.bytes.byteLength})}))})).then(o,i)}(e),e=null})),x}static initializeFromPort(e){const t=new h.MessageHandler("worker","main",e);f.setup(t,e),t.send("ready",null)}}t.WorkerMessageHandler=f,"undefined"==typeof window&&!n.isNodeJS&&"undefined"!=typeof self&&function(e){return"function"==typeof e.postMessage&&"onmessage"in e}(self)&&f.initializeFromPort(self)},(e,t,r)=>{var n=r(3),a=r(4),i=r(69),s=r(70),o="WebAssembly",c=a[o],l=7!==Error("e",{cause:7}).cause,h=function(e,t){var r={};r[e]=s(e,t,l),n({global:!0,constructor:!0,arity:1,forced:l},r)},u=function(e,t){if(c&&c[e]){var r={};r[e]=s(o+"."+e,t,l),n({target:o,stat:!0,constructor:!0,arity:1,forced:l},r)}};h("Error",(function(e){return function(t){return i(e,this,arguments)}})),h("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),h("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),h("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),h("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),h("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),h("URIError",(function(e){return function(t){return i(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},(e,t,r)=>{var n=r(4),a=r(5).f,i=r(44),s=r(48),o=r(38),c=r(56),l=r(68);e.exports=function(e,t){var r,h,u,d,f,g=e.target,p=e.global,m=e.stat;if(r=p?n:m?n[g]||o(g,{}):(n[g]||{}).prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=a(r,h))&&f.value:r[h],!l(p?h:g+(m?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;c(d,u)}(e.sham||u&&u.sham)&&i(d,"sham",!0),s(r,h,d,e)}}},function(e){var t=function(e){return e&&e.Math==Math&&e};e.exports=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof r.g&&r.g)||function(){return this}()||this||Function("return this")()},(e,t,r)=>{var n=r(6),a=r(8),i=r(10),s=r(11),o=r(12),c=r(18),l=r(39),h=r(42),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=o(e),t=c(t),h)try{return u(e,t)}catch(e){}if(l(e,t))return s(!a(i.f,e,t),e[t])}},(e,t,r)=>{var n=r(7);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},(e,t,r)=>{var n=r(9),a=Function.prototype.call;e.exports=n?a.bind(a):function(){return a.apply(a,arguments)}},(e,t,r)=>{var n=r(7);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},(e,t)=>{var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,a=n&&!r.call({1:2},1);t.f=a?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},(e,t,r)=>{var n=r(13),a=r(16);e.exports=function(e){return n(a(e))}},(e,t,r)=>{var n=r(14),a=r(7),i=r(15),s=Object,o=n("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o(e,""):s(e)}:s},(e,t,r)=>{var n=r(9),a=Function.prototype,i=a.call,s=n&&a.bind.bind(i,i);e.exports=n?s:function(e){return function(){return i.apply(e,arguments)}}},(e,t,r)=>{var n=r(14),a=n({}.toString),i=n("".slice);e.exports=function(e){return i(a(e),8,-1)}},(e,t,r)=>{var n=r(17),a=TypeError;e.exports=function(e){if(n(e))throw a("Can't call method on "+e);return e}},e=>{e.exports=function(e){return null==e}},(e,t,r)=>{var n=r(19),a=r(23);e.exports=function(e){var t=n(e,"string");return a(t)?t:t+""}},(e,t,r)=>{var n=r(8),a=r(20),i=r(23),s=r(30),o=r(33),c=r(34),l=TypeError,h=c("toPrimitive");e.exports=function(e,t){if(!a(e)||i(e))return e;var r,c=s(e,h);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!a(r)||i(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),o(e,t)}},(e,t,r)=>{var n=r(21),a=r(22),i=a.all;e.exports=a.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:n(e)||e===i}:function(e){return"object"==typeof e?null!==e:n(e)}},(e,t,r)=>{var n=r(22),a=n.all;e.exports=n.IS_HTMLDDA?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e}},e=>{var t="object"==typeof document&&document.all,r=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:r}},(e,t,r)=>{var n=r(24),a=r(21),i=r(25),s=r(26),o=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return a(t)&&i(t.prototype,o(e))}},(e,t,r)=>{var n=r(4),a=r(21);e.exports=function(e,t){return arguments.length<2?(r=n[e],a(r)?r:void 0):n[e]&&n[e][t];var r}},(e,t,r)=>{var n=r(14);e.exports=n({}.isPrototypeOf)},(e,t,r)=>{var n=r(27);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},(e,t,r)=>{var n=r(28),a=r(7),i=r(4).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol();return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},(e,t,r)=>{var n,a,i=r(4),s=r(29),o=i.process,c=i.Deno,l=o&&o.versions||c&&c.version,h=l&&l.v8;h&&(a=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!a&&s&&(!(n=s.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\\/(\\d+)/))&&(a=+n[1]),e.exports=a},e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},(e,t,r)=>{var n=r(31),a=r(17);e.exports=function(e,t){var r=e[t];return a(r)?void 0:n(r)}},(e,t,r)=>{var n=r(21),a=r(32),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a function")}},e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},(e,t,r)=>{var n=r(8),a=r(21),i=r(20),s=TypeError;e.exports=function(e,t){var r,o;if("string"===t&&a(r=e.toString)&&!i(o=n(r,e)))return o;if(a(r=e.valueOf)&&!i(o=n(r,e)))return o;if("string"!==t&&a(r=e.toString)&&!i(o=n(r,e)))return o;throw s("Can't convert object to primitive value")}},(e,t,r)=>{var n=r(4),a=r(35),i=r(39),s=r(41),o=r(27),c=r(26),l=n.Symbol,h=a("wks"),u=c?l.for||l:l&&l.withoutSetter||s;e.exports=function(e){return i(h,e)||(h[e]=o&&i(l,e)?l[e]:u("Symbol."+e)),h[e]}},(e,t,r)=>{var n=r(36),a=r(37);(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.31.1",mode:n?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},e=>{e.exports=!1},(e,t,r)=>{var n=r(4),a=r(38),i="__core-js_shared__",s=n[i]||a(i,{});e.exports=s},(e,t,r)=>{var n=r(4),a=Object.defineProperty;e.exports=function(e,t){try{a(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},(e,t,r)=>{var n=r(14),a=r(40),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(a(e),t)}},(e,t,r)=>{var n=r(16),a=Object;e.exports=function(e){return a(n(e))}},(e,t,r)=>{var n=r(14),a=0,i=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++a+i,36)}},(e,t,r)=>{var n=r(6),a=r(7),i=r(43);e.exports=!n&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},(e,t,r)=>{var n=r(4),a=r(20),i=n.document,s=a(i)&&a(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},(e,t,r)=>{var n=r(6),a=r(45),i=r(11);e.exports=n?function(e,t,r){return a.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},(e,t,r)=>{var n=r(6),a=r(42),i=r(46),s=r(47),o=r(18),c=TypeError,l=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?i?function(e,t,r){if(s(e),t=o(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&f in r&&!r[f]){var n=h(e,t);n&&n[f]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:u in r?r[u]:n[u],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=o(t),s(r),a)try{return l(e,t,r)}catch(e){}if("get"in r||"set"in r)throw c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},(e,t,r)=>{var n=r(6),a=r(7);e.exports=n&&a((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},(e,t,r)=>{var n=r(20),a=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not an object")}},(e,t,r)=>{var n=r(21),a=r(45),i=r(49),s=r(38);e.exports=function(e,t,r,o){o||(o={});var c=o.enumerable,l=void 0!==o.name?o.name:t;if(n(r)&&i(r,l,o),o.global)c?e[t]=r:s(t,r);else{try{o.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},(e,t,r)=>{var n=r(14),a=r(7),i=r(21),s=r(39),o=r(6),c=r(50).CONFIGURABLE,l=r(51),h=r(52),u=h.enforce,d=h.get,f=String,g=Object.defineProperty,p=n("".slice),m=n("".replace),b=n([].join),y=o&&!a((function(){return 8!==g((function(){}),"length",{value:8}).length})),w=String(String).split("String"),v=e.exports=function(e,t,r){"Symbol("===p(f(t),0,7)&&(t="["+m(f(t),/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!s(e,"name")||c&&e.name!==t)&&(o?g(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&s(r,"arity")&&e.length!==r.arity&&g(e,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?o&&g(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=b(w,"string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return i(this)&&d(this).source||l(this)}),"toString")},(e,t,r)=>{var n=r(6),a=r(39),i=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,o=a(i,"name"),c=o&&"something"===function(){}.name,l=o&&(!n||n&&s(i,"name").configurable);e.exports={EXISTS:o,PROPER:c,CONFIGURABLE:l}},(e,t,r)=>{var n=r(14),a=r(21),i=r(37),s=n(Function.toString);a(i.inspectSource)||(i.inspectSource=function(e){return s(e)}),e.exports=i.inspectSource},(e,t,r)=>{var n,a,i,s=r(53),o=r(4),c=r(20),l=r(44),h=r(39),u=r(37),d=r(54),f=r(55),g="Object already initialized",p=o.TypeError,m=o.WeakMap;if(s||u.state){var b=u.state||(u.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,n=function(e,t){if(b.has(e))throw p(g);return t.facade=e,b.set(e,t),t},a=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw p(g);return t.facade=e,l(e,y,t),t},a=function(e){return h(e,y)?e[y]:{}},i=function(e){return h(e,y)}}e.exports={set:n,get:a,has:i,enforce:function(e){return i(e)?a(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=a(t)).type!==e)throw p("Incompatible receiver, "+e+" required");return r}}}},(e,t,r)=>{var n=r(4),a=r(21),i=n.WeakMap;e.exports=a(i)&&/native code/.test(String(i))},(e,t,r)=>{var n=r(35),a=r(41),i=n("keys");e.exports=function(e){return i[e]||(i[e]=a(e))}},e=>{e.exports={}},(e,t,r)=>{var n=r(39),a=r(57),i=r(5),s=r(45);e.exports=function(e,t,r){for(var o=a(t),c=s.f,l=i.f,h=0;h{var n=r(24),a=r(14),i=r(58),s=r(67),o=r(47),c=a([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(o(e)),r=s.f;return r?c(t,r(e)):t}},(e,t,r)=>{var n=r(59),a=r(66).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},(e,t,r)=>{var n=r(14),a=r(39),i=r(12),s=r(60).indexOf,o=r(55),c=n([].push);e.exports=function(e,t){var r,n=i(e),l=0,h=[];for(r in n)!a(o,r)&&a(n,r)&&c(h,r);for(;t.length>l;)a(n,r=t[l++])&&(~s(h,r)||c(h,r));return h}},(e,t,r)=>{var n=r(12),a=r(61),i=r(64),s=function(e){return function(t,r,s){var o,c=n(t),l=i(c),h=a(s,l);if(e&&r!=r){for(;l>h;)if((o=c[h++])!=o)return!0}else for(;l>h;h++)if((e||h in c)&&c[h]===r)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},(e,t,r)=>{var n=r(62),a=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?a(r+t,0):i(r,t)}},(e,t,r)=>{var n=r(63);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},e=>{var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},(e,t,r)=>{var n=r(65);e.exports=function(e){return n(e.length)}},(e,t,r)=>{var n=r(62),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},(e,t)=>{t.f=Object.getOwnPropertySymbols},(e,t,r)=>{var n=r(7),a=r(21),i=/#|\\.prototype\\./,s=function(e,t){var r=c[o(e)];return r==h||r!=l&&(a(t)?n(t):!!t)},o=s.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},(e,t,r)=>{var n=r(9),a=Function.prototype,i=a.apply,s=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(i):function(){return s.apply(i,arguments)})},(e,t,r)=>{var n=r(24),a=r(39),i=r(44),s=r(25),o=r(71),c=r(56),l=r(74),h=r(75),u=r(76),d=r(80),f=r(81),g=r(6),p=r(36);e.exports=function(e,t,r,m){var b="stackTraceLimit",y=m?2:1,w=e.split("."),v=w[w.length-1],x=n.apply(null,w);if(x){var S=x.prototype;if(!p&&a(S,"cause")&&delete S.cause,!r)return x;var A=n("Error"),k=t((function(e,t){var r=u(m?t:e,void 0),n=m?new x(e):new x;return void 0!==r&&i(n,"message",r),f(n,k,n.stack,2),this&&s(S,this)&&h(n,this,k),arguments.length>y&&d(n,arguments[y]),n}));if(k.prototype=S,"Error"!==v?o?o(k,A):c(k,A,{name:!0}):g&&b in x&&(l(k,x,b),l(k,x,"prepareStackTrace")),c(k,x),!p)try{S.name!==v&&i(S,"name",v),S.constructor=k}catch(e){}return k}}},(e,t,r)=>{var n=r(72),a=r(47),i=r(73);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return a(r),i(n),t?e(r,n):r.__proto__=n,r}}():void 0)},(e,t,r)=>{var n=r(14),a=r(31);e.exports=function(e,t,r){try{return n(a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},(e,t,r)=>{var n=r(21),a=String,i=TypeError;e.exports=function(e){if("object"==typeof e||n(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},(e,t,r)=>{var n=r(45).f;e.exports=function(e,t,r){r in e||n(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}},(e,t,r)=>{var n=r(21),a=r(20),i=r(71);e.exports=function(e,t,r){var s,o;return i&&n(s=t.constructor)&&s!==r&&a(o=s.prototype)&&o!==r.prototype&&i(e,o),e}},(e,t,r)=>{var n=r(77);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},(e,t,r)=>{var n=r(78),a=String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},(e,t,r)=>{var n=r(79),a=r(21),i=r(15),s=r(34)("toStringTag"),o=Object,c="Arguments"==i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=o(e),s))?r:c?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},(e,t,r)=>{var n={};n[r(34)("toStringTag")]="z",e.exports="[object z]"===String(n)},(e,t,r)=>{var n=r(20),a=r(44);e.exports=function(e,t){n(t)&&"cause"in t&&a(e,"cause",t.cause)}},(e,t,r)=>{var n=r(44),a=r(82),i=r(83),s=Error.captureStackTrace;e.exports=function(e,t,r,o){i&&(s?s(e,t):n(e,"stack",a(r,o)))}},(e,t,r)=>{var n=r(14),a=Error,i=n("".replace),s=String(a("zxcasd").stack),o=/\\n\\s*at [^:]*:[^\\n]*/,c=o.test(s);e.exports=function(e,t){if(c&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=i(e,o,"");return e}},(e,t,r)=>{var n=r(7),a=r(11);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},(e,t,r)=>{var n=r(85),a=r(90).findLast,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLast",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},(e,t,r)=>{var n,a,i,s=r(86),o=r(6),c=r(4),l=r(21),h=r(20),u=r(39),d=r(78),f=r(32),g=r(44),p=r(48),m=r(87),b=r(25),y=r(88),w=r(71),v=r(34),x=r(41),S=r(52),A=S.enforce,k=S.get,C=c.Int8Array,O=C&&C.prototype,F=c.Uint8ClampedArray,I=F&&F.prototype,T=C&&y(C),M=O&&y(O),E=Object.prototype,P=c.TypeError,R=v("toStringTag"),N=x("TYPED_ARRAY_TAG"),D="TypedArrayConstructor",B=s&&!!w&&"Opera"!==d(c.opera),L=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},j={BigInt64Array:8,BigUint64Array:8},U=function(e){if(!h(e))return!1;var t=d(e);return u(_,t)||u(j,t)};for(n in _)(i=(a=c[n])&&a.prototype)?A(i)[D]=a:B=!1;for(n in j)(i=(a=c[n])&&a.prototype)&&(A(i)[D]=a);if((!B||!l(T)||T===Function.prototype)&&(T=function(){throw P("Incorrect invocation")},B))for(n in _)c[n]&&w(c[n],T);if((!B||!M||M===E)&&(M=T.prototype,B))for(n in _)c[n]&&w(c[n].prototype,M);if(B&&y(I)!==M&&w(I,M),o&&!u(M,R))for(n in L=!0,m(M,R,{configurable:!0,get:function(){return h(this)?this[N]:void 0}}),_)c[n]&&g(c[n],N,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:L&&N,aTypedArray:function(e){if(U(e))return e;throw P("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!w||b(T,e)))return e;throw P(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r,n){if(o){if(r)for(var a in _){var i=c[a];if(i&&u(i.prototype,e))try{delete i.prototype[e]}catch(r){try{i.prototype[e]=t}catch(e){}}}M[e]&&!r||p(M,e,r?t:B&&O[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(o){if(w){if(r)for(n in _)if((a=c[n])&&u(a,e))try{delete a[e]}catch(e){}if(T[e]&&!r)return;try{return p(T,e,r?t:B&&T[e]||t)}catch(e){}}for(n in _)!(a=c[n])||a[e]&&!r||p(a,e,t)}},getTypedArrayConstructor:function e(t){var r=y(t);if(h(r)){var n=k(r);return n&&u(n,D)?n[D]:e(r)}},isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(_,t)||u(j,t)},isTypedArray:U,TypedArray:T,TypedArrayPrototype:M}},e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},(e,t,r)=>{var n=r(49),a=r(45);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),a.f(e,t,r)}},(e,t,r)=>{var n=r(39),a=r(21),i=r(40),s=r(54),o=r(89),c=s("IE_PROTO"),l=Object,h=l.prototype;e.exports=o?l.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return a(r)&&t instanceof r?r.prototype:t instanceof l?h:null}},(e,t,r)=>{var n=r(7);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},(e,t,r)=>{var n=r(91),a=r(13),i=r(40),s=r(64),o=function(e){var t=1==e;return function(r,o,c){for(var l,h=i(r),u=a(h),d=n(o,c),f=s(u);f-- >0;)if(d(l=u[f],f,h))switch(e){case 0:return l;case 1:return f}return t?-1:void 0}};e.exports={findLast:o(0),findLastIndex:o(1)}},(e,t,r)=>{var n=r(92),a=r(31),i=r(9),s=n(n.bind);e.exports=function(e,t){return a(e),void 0===t?e:i?s(e,t):function(){return e.apply(t,arguments)}}},(e,t,r)=>{var n=r(15),a=r(14);e.exports=function(e){if("Function"===n(e))return a(e)}},(e,t,r)=>{var n=r(85),a=r(90).findLastIndex,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLastIndex",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},(e,t,r)=>{var n=r(4),a=r(8),i=r(85),s=r(64),o=r(95),c=r(40),l=r(7),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,g=i.aTypedArray,p=i.exportTypedArrayMethod,m=!l((function(){var e=new Uint8ClampedArray(2);return a(f,e,{length:1,0:3},1),3!==e[1]})),b=m&&i.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){g(this);var t=o(arguments.length>1?arguments[1]:void 0,1),r=c(e);if(m)return a(f,this,r,t);var n=this.length,i=s(r),l=0;if(i+t>n)throw h("Wrong length");for(;l{var n=r(96),a=RangeError;e.exports=function(e,t){var r=n(e);if(r%t)throw a("Wrong offset");return r}},(e,t,r)=>{var n=r(62),a=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw a("The argument can't be less than 0");return t}},(e,t,r)=>{var n=r(98),a=r(85),i=a.aTypedArray,s=a.exportTypedArrayMethod,o=a.getTypedArrayConstructor;s("toReversed",(function(){return n(i(this),o(this))}))},(e,t,r)=>{var n=r(64);e.exports=function(e,t){for(var r=n(e),a=new t(r),i=0;i{var n=r(85),a=r(14),i=r(31),s=r(100),o=n.aTypedArray,c=n.getTypedArrayConstructor,l=n.exportTypedArrayMethod,h=a(n.TypedArrayPrototype.sort);l("toSorted",(function(e){void 0!==e&&i(e);var t=o(this),r=s(c(t),t);return h(r,e)}))},(e,t,r)=>{var n=r(64);e.exports=function(e,t){for(var r=0,a=n(t),i=new e(a);a>r;)i[r]=t[r++];return i}},(e,t,r)=>{var n=r(102),a=r(85),i=r(103),s=r(62),o=r(104),c=a.aTypedArray,l=a.getTypedArrayConstructor,h=a.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();h("with",{with:function(e,t){var r=c(this),a=s(e),h=i(r)?o(t):+t;return n(r,l(r),a,h)}}.with,!u)},(e,t,r)=>{var n=r(64),a=r(62),i=RangeError;e.exports=function(e,t,r,s){var o=n(e),c=a(r),l=c<0?o+c:c;if(l>=o||l<0)throw i("Incorrect index");for(var h=new t(o),u=0;u{var n=r(78);e.exports=function(e){var t=n(e);return"BigInt64Array"==t||"BigUint64Array"==t}},(e,t,r)=>{var n=r(19),a=TypeError;e.exports=function(e){var t=n(e,"number");if("number"==typeof t)throw a("Can't convert number to bigint");return BigInt(t)}},(e,t,r)=>{var n=r(6),a=r(87),i=r(106),s=ArrayBuffer.prototype;n&&!("detached"in s)&&a(s,"detached",{configurable:!0,get:function(){return i(this)}})},(e,t,r)=>{var n=r(14),a=r(107),i=n(ArrayBuffer.prototype.slice);e.exports=function(e){if(0!==a(e))return!1;try{return i(e,0,0),!1}catch(e){return!0}}},(e,t,r)=>{var n=r(72),a=r(15),i=TypeError;e.exports=n(ArrayBuffer.prototype,"byteLength","get")||function(e){if("ArrayBuffer"!=a(e))throw i("ArrayBuffer expected");return e.byteLength}},(e,t,r)=>{var n=r(3),a=r(109);a&&n({target:"ArrayBuffer",proto:!0},{transfer:function(){return a(this,arguments.length?arguments[0]:void 0,!0)}})},(e,t,r)=>{var n=r(4),a=r(14),i=r(72),s=r(110),o=r(106),c=r(107),l=r(111),h=n.TypeError,u=n.structuredClone,d=n.ArrayBuffer,f=n.DataView,g=Math.min,p=d.prototype,m=f.prototype,b=a(p.slice),y=i(p,"resizable","get"),w=i(p,"maxByteLength","get"),v=a(m.getInt8),x=a(m.setInt8);e.exports=l&&function(e,t,r){var n=c(e),a=void 0===t?n:s(t),i=!y||!y(e);if(o(e))throw h("ArrayBuffer is detached");var l=u(e,{transfer:[e]});if(n==a&&(r||i))return l;if(n>=a&&(!r||i))return b(l,0,a);for(var p=r&&!i&&w?{maxByteLength:w(l)}:void 0,m=new d(a,p),S=new f(l),A=new f(m),k=g(a,n),C=0;C{var n=r(62),a=r(65),i=RangeError;e.exports=function(e){if(void 0===e)return 0;var t=n(e),r=a(t);if(t!==r)throw i("Wrong length or index");return r}},(e,t,r)=>{var n=r(4),a=r(7),i=r(28),s=r(112),o=r(113),c=r(114),l=n.structuredClone;e.exports=!!l&&!a((function(){if(o&&i>92||c&&i>94||s&&i>97)return!1;var e=new ArrayBuffer(8),t=l(e,{transfer:[e]});return 0!=e.byteLength||8!=t.byteLength}))},(e,t,r)=>{var n=r(113),a=r(114);e.exports=!n&&!a&&"object"==typeof window&&"object"==typeof document},e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},(e,t,r)=>{var n=r(15);e.exports="undefined"!=typeof process&&"process"==n(process)},(e,t,r)=>{var n=r(3),a=r(109);a&&n({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return a(this,arguments.length?arguments[0]:void 0,!1)}})},(e,t,r)=>{var n=r(3),a=r(117);n({target:"Set",proto:!0,real:!0,forced:!r(125)("difference")},{difference:a})},(e,t,r)=>{var n=r(118),a=r(119),i=r(120),s=r(123),o=r(124),c=r(121),l=r(122),h=a.has,u=a.remove;e.exports=function(e){var t=n(this),r=o(e),a=i(t);return s(t)<=r.size?c(t,(function(e){r.includes(e)&&u(a,e)})):l(r.getIterator(),(function(e){h(t,e)&&u(a,e)})),a}},(e,t,r)=>{var n=r(119).has;e.exports=function(e){return n(e),e}},(e,t,r)=>{var n=r(14),a=Set.prototype;e.exports={Set,add:n(a.add),has:n(a.has),remove:n(a.delete),proto:a}},(e,t,r)=>{var n=r(119),a=r(121),i=n.Set,s=n.add;e.exports=function(e){var t=new i;return a(e,(function(e){s(t,e)})),t}},(e,t,r)=>{var n=r(14),a=r(122),i=r(119),s=i.Set,o=i.proto,c=n(o.forEach),l=n(o.keys),h=l(new s).next;e.exports=function(e,t,r){return r?a(l(e),t,h):c(e,t)}},(e,t,r)=>{var n=r(8);e.exports=function(e,t,r){for(var a,i,s=r||e.next;!(a=n(s,e)).done;)if(void 0!==(i=t(a.value)))return i}},(e,t,r)=>{var n=r(72),a=r(119);e.exports=n(a.proto,"size","get")||function(e){return e.size}},(e,t,r)=>{var n=r(31),a=r(47),i=r(8),s=r(62),o=TypeError,c=Math.max,l=function(e,t,r,n){this.set=e,this.size=t,this.has=r,this.keys=n};l.prototype={getIterator:function(){return a(i(this.keys,this.set))},includes:function(e){return i(this.has,this.set,e)}},e.exports=function(e){a(e);var t=+e.size;if(t!=t)throw o("Invalid size");return new l(e,c(s(t),0),n(e.has),n(e.keys))}},(e,t,r)=>{var n=r(24);e.exports=function(e){try{return(new(n("Set")))[e]({size:0,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}),!0}catch(e){return!1}}},(e,t,r)=>{var n=r(3),a=r(7),i=r(127);n({target:"Set",proto:!0,real:!0,forced:!r(125)("intersection")||a((function(){return"3,2"!=Array.from(new Set([1,2,3]).intersection(new Set([3,2])))}))},{intersection:i})},(e,t,r)=>{var n=r(118),a=r(119),i=r(123),s=r(124),o=r(121),c=r(122),l=a.Set,h=a.add,u=a.has;e.exports=function(e){var t=n(this),r=s(e),a=new l;return i(t)>r.size?c(r.getIterator(),(function(e){u(t,e)&&h(a,e)})):o(t,(function(e){r.includes(e)&&h(a,e)})),a}},(e,t,r)=>{var n=r(3),a=r(129);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isDisjointFrom")},{isDisjointFrom:a})},(e,t,r)=>{var n=r(118),a=r(119).has,i=r(123),s=r(124),o=r(121),c=r(122),l=r(130);e.exports=function(e){var t=n(this),r=s(e);if(i(t)<=r.size)return!1!==o(t,(function(e){if(r.includes(e))return!1}),!0);var h=r.getIterator();return!1!==c(h,(function(e){if(a(t,e))return l(h,"normal",!1)}))}},(e,t,r)=>{var n=r(8),a=r(47),i=r(30);e.exports=function(e,t,r){var s,o;a(e);try{if(!(s=i(e,"return"))){if("throw"===t)throw r;return r}s=n(s,e)}catch(e){o=!0,s=e}if("throw"===t)throw r;if(o)throw s;return a(s),r}},(e,t,r)=>{var n=r(3),a=r(132);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isSubsetOf")},{isSubsetOf:a})},(e,t,r)=>{var n=r(118),a=r(123),i=r(121),s=r(124);e.exports=function(e){var t=n(this),r=s(e);return!(a(t)>r.size)&&!1!==i(t,(function(e){if(!r.includes(e))return!1}),!0)}},(e,t,r)=>{var n=r(3),a=r(134);n({target:"Set",proto:!0,real:!0,forced:!r(125)("isSupersetOf")},{isSupersetOf:a})},(e,t,r)=>{var n=r(118),a=r(119).has,i=r(123),s=r(124),o=r(122),c=r(130);e.exports=function(e){var t=n(this),r=s(e);if(i(t){var n=r(3),a=r(136);n({target:"Set",proto:!0,real:!0,forced:!r(125)("symmetricDifference")},{symmetricDifference:a})},(e,t,r)=>{var n=r(118),a=r(119),i=r(120),s=r(124),o=r(122),c=a.add,l=a.has,h=a.remove;e.exports=function(e){var t=n(this),r=s(e).getIterator(),a=i(t);return o(r,(function(e){l(t,e)?h(a,e):c(a,e)})),a}},(e,t,r)=>{var n=r(3),a=r(138);n({target:"Set",proto:!0,real:!0,forced:!r(125)("union")},{union:a})},(e,t,r)=>{var n=r(118),a=r(119).add,i=r(120),s=r(124),o=r(122);e.exports=function(e){var t=n(this),r=s(e).getIterator(),c=i(t);return o(r,(function(e){a(c,e)})),c}},(e,t,r)=>{var n=r(3),a=r(40),i=r(64),s=r(140),o=r(142);n({target:"Array",proto:!0,arity:1,forced:r(7)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=a(this),r=i(t),n=arguments.length;o(r+n);for(var c=0;c{var n=r(6),a=r(141),i=TypeError,s=Object.getOwnPropertyDescriptor,o=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=o?function(e,t){if(a(e)&&!s(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},(e,t,r)=>{var n=r(15);e.exports=Array.isArray||function(e){return"Array"==n(e)}},e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},(e,t,r)=>{var n=r(3),a=r(4),i=r(87),s=r(6),o=TypeError,c=Object.defineProperty,l=a.self!==a;try{if(s){var h=Object.getOwnPropertyDescriptor(a,"self");!l&&h&&h.get&&h.enumerable||i(a,"self",{get:function(){return a},set:function(e){if(this!==a)throw o("Illegal invocation");c(a,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else n({global:!0,simple:!0,forced:l},{self:a})}catch(e){}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.VerbosityLevel=t.Util=t.UnknownErrorException=t.UnexpectedResponseException=t.TextRenderingMode=t.RenderingIntentFlag=t.PromiseCapability=t.PermissionFlag=t.PasswordResponses=t.PasswordException=t.PageActionEventType=t.OPS=t.MissingPDFException=t.MAX_IMAGE_SIZE_TO_CACHE=t.LINE_FACTOR=t.LINE_DESCENT_FACTOR=t.InvalidPDFException=t.ImageKind=t.IDENTITY_MATRIX=t.FormatError=t.FeatureTest=t.FONT_IDENTITY_MATRIX=t.DocumentActionEventType=t.CMapCompressionType=t.BaseException=t.BASELINE_FACTOR=t.AnnotationType=t.AnnotationReplyType=t.AnnotationMode=t.AnnotationFlag=t.AnnotationFieldFlag=t.AnnotationEditorType=t.AnnotationEditorPrefix=t.AnnotationEditorParamsType=t.AnnotationBorderStyleType=t.AnnotationActionEventType=t.AbortException=void 0,t.assert=function(e,t){e||l(t)},t.bytesToString=g,t.createValidAbsoluteUrl=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!e)return null;try{if(r&&"string"==typeof e){if(r.addDefaultProtocol&&e.startsWith("www.")){const t=e.match(/\\./g);(null==t?void 0:t.length)>=2&&(e="http://".concat(e))}if(r.tryConvertEncoding)try{e=y(e)}catch(e){}}const n=t?new URL(e,t):new URL(e);if(function(e){switch(null==e?void 0:e.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}(n))return n}catch(e){}return null},t.getModificationDate=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date;return[e.getUTCFullYear().toString(),(e.getUTCMonth()+1).toString().padStart(2,"0"),e.getUTCDate().toString().padStart(2,"0"),e.getUTCHours().toString().padStart(2,"0"),e.getUTCMinutes().toString().padStart(2,"0"),e.getUTCSeconds().toString().padStart(2,"0")].join("")},t.getUuid=function(){var e,t;if("undefined"!=typeof crypto&&"function"==typeof(null===(e=crypto)||void 0===e?void 0:e.randomUUID))return crypto.randomUUID();const r=new Uint8Array(32);if("undefined"!=typeof crypto&&"function"==typeof(null===(t=crypto)||void 0===t?void 0:t.getRandomValues))crypto.getRandomValues(r);else for(let e=0;e<32;e++)r[e]=Math.floor(255*Math.random());return g(r)},t.getVerbosityLevel=function(){return s},t.info=function(e){s>=i.INFOS&&console.log("Info: ".concat(e))},t.isArrayBuffer=function(e){return"object"==typeof e&&void 0!==(null==e?void 0:e.byteLength)},t.isArrayEqual=function(e,t){if(e.length!==t.length)return!1;for(let r=0,n=e.length;rt?t.normalize("NFKC"):v.get(r)))},t.objectFromMap=function(e){const t=Object.create(null);for(const[r,n]of e)t[r]=n;return t},t.objectSize=function(e){return Object.keys(e).length},t.setVerbosityLevel=function(e){Number.isInteger(e)&&(s=e)},t.shadow=d,t.string32=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},t.stringToBytes=p,t.stringToPDFString=function(e){if(e[0]>="ï"){let t;if("þ"===e[0]&&"ÿ"===e[1]?t="utf-16be":"ÿ"===e[0]&&"þ"===e[1]?t="utf-16le":"ï"===e[0]&&"»"===e[1]&&"¿"===e[2]&&(t="utf-8"),t)try{const r=new TextDecoder(t,{fatal:!0}),n=p(e);return r.decode(n)}catch(e){o('stringToPDFString: "'.concat(e,'".'))}}const t=[];for(let r=0,n=e.length;r=i.WARNINGS&&console.log("Warning: ".concat(e))}function l(e){throw new Error(e)}function d(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return Object.defineProperty(e,t,{value:r,enumerable:!n,configurable:!0,writable:!1}),r}const f=function(){function e(t,r){this.constructor===e&&l("Cannot initialize BaseException."),this.message=t,this.name=r}return e.prototype=new Error,e.constructor=e,e}();function g(e){"object"==typeof e&&void 0!==(null==e?void 0:e.length)||l("Invalid argument for bytesToString");const t=e.length,r=8192;if(te.toString(16).padStart(2,"0")));t.Util=class{static makeHexColor(e,t,r){return"#".concat(m[e]).concat(m[t]).concat(m[r])}static scaleMinMax(e,t){let r;e[0]?(e[0]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[0],t[1]*=e[0],e[3]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[3],t[3]*=e[3]):(r=t[0],t[0]=t[2],t[2]=r,r=t[1],t[1]=t[3],t[3]=r,e[1]<0&&(r=t[2],t[2]=t[3],t[3]=r),t[2]*=e[1],t[3]*=e[1],e[2]<0&&(r=t[0],t[0]=t[1],t[1]=r),t[0]*=e[2],t[1]*=e[2]),t[0]+=e[4],t[1]+=e[4],t[2]+=e[5],t[3]+=e[5]}static transform(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}static applyTransform(e,t){return[e[0]*t[0]+e[1]*t[2]+t[4],e[0]*t[1]+e[1]*t[3]+t[5]]}static applyInverseTransform(e,t){const r=t[0]*t[3]-t[1]*t[2];return[(e[0]*t[3]-e[1]*t[2]+t[2]*t[5]-t[4]*t[3])/r,(-e[0]*t[1]+e[1]*t[0]+t[4]*t[1]-t[5]*t[0])/r]}static getAxialAlignedBoundingBox(e,t){const r=this.applyTransform(e,t),n=this.applyTransform(e.slice(2,4),t),a=this.applyTransform([e[0],e[3]],t),i=this.applyTransform([e[2],e[1]],t);return[Math.min(r[0],n[0],a[0],i[0]),Math.min(r[1],n[1],a[1],i[1]),Math.max(r[0],n[0],a[0],i[0]),Math.max(r[1],n[1],a[1],i[1])]}static inverseTransform(e){const t=e[0]*e[3]-e[1]*e[2];return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[4]*e[3])/t,(e[4]*e[1]-e[5]*e[0])/t]}static singularValueDecompose2dScale(e){const t=[e[0],e[2],e[1],e[3]],r=e[0]*t[0]+e[1]*t[2],n=e[0]*t[1]+e[1]*t[3],a=e[2]*t[0]+e[3]*t[2],i=e[2]*t[1]+e[3]*t[3],s=(r+i)/2,o=Math.sqrt((r+i)**2-4*(r*i-a*n))/2,c=s+o||1,l=s-o||1;return[Math.sqrt(c),Math.sqrt(l)]}static normalizeRect(e){const t=e.slice(0);return e[0]>e[2]&&(t[0]=e[2],t[2]=e[0]),e[1]>e[3]&&(t[1]=e[3],t[3]=e[1]),t}static intersect(e,t){const r=Math.max(Math.min(e[0],e[2]),Math.min(t[0],t[2])),n=Math.min(Math.max(e[0],e[2]),Math.max(t[0],t[2]));if(r>n)return null;const a=Math.max(Math.min(e[1],e[3]),Math.min(t[1],t[3])),i=Math.min(Math.max(e[1],e[3]),Math.max(t[1],t[3]));return a>i?null:[r,a,n,i]}static bezierBoundingBox(e,t,r,n,a,i,s,o){const c=[],l=[[],[]];let h,u,d,f,g,p,m,b;for(let l=0;l<2;++l)if(0===l?(u=6*e-12*r+6*a,h=-3*e+9*r-9*a+3*s,d=3*r-3*e):(u=6*t-12*n+6*i,h=-3*t+9*n-9*i+3*o,d=3*n-3*t),Math.abs(h)<1e-12){if(Math.abs(u)<1e-12)continue;f=-d/u,0{this.resolve=t=>{u(this,n,!0),e(t)},this.reject=e=>{u(this,n,!0),t(e)}}))}get settled(){return h(this,n)}});let w=null,v=null},(e,t,r)=>{var n=r(48),a=r(14),i=r(77),s=r(146),o=URLSearchParams,c=o.prototype,l=a(c.append),h=a(c.delete),u=a(c.forEach),d=a([].push),f=new o("a=1&a=2");f.delete("a",1),f+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=[];u(this,(function(e,t){d(n,{key:t,value:e})})),s(t,1);for(var a,o=i(e),c=i(r),f=0,g=0,p=!1,m=n.length;f{var t=TypeError;e.exports=function(e,r){if(e{var n=r(48),a=r(14),i=r(77),s=r(146),o=URLSearchParams,c=o.prototype,l=a(c.getAll),h=a(c.has);new o("a=1").has("a",2)&&n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=l(this,e);s(t,1);for(var a=i(r),o=0;o{var n=r(6),a=r(14),i=r(87),s=URLSearchParams.prototype,o=a(s.forEach);n&&!("size"in s)&&i(s,"size",{get:function(){var e=0;return o(this,(function(){e++})),e},configurable:!0,enumerable:!0})},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XRefParseException=t.XRefEntryException=t.ParserEOFException=t.PDF_VERSION_REGEXP=t.MissingDataException=void 0,t.arrayBuffersToBytes=function(e){const t=e.length;if(0===t)return new Uint8Array(0);if(1===t)return new Uint8Array(e[0]);let r=0;for(let n=0;n=0;t--){const n=s[t];if(n instanceof a.Dict)for(const t of n.getKeys()){const s=r[t];if(!s)continue;const o=[];d(n.getRaw(t),e,o,new a.RefSet),o.length>0&&(i[s]=o)}}if(t.has("A")){const r=[];d(t.get("A"),e,r,new a.RefSet),r.length>0&&(i.Action=r)}return(0,n.objectSize)(i)>0?i:null},t.encodeToXmlString=function(e){const t=[];let r=0;for(let n=0,a=e.length;n55295&&(a<57344||a>65533)&&n++,r=n+1}return 0===t.length?e:(r126||35===a||40===a||41===a||60===a||62===a||91===a||93===a||123===a||125===a||47===a||37===a)&&(r"\\n"===e?"\\\\n":"\\r"===e?"\\\\r":"\\\\".concat(e)))},t.getInheritableProperty=h,t.getLookupTableFactory=function(e){let t;return function(){return e&&(t=Object.create(null),e(t),e=null),t}},t.getNewAnnotationsMap=function(e){if(!e)return null;const t=new Map;for(const[r,a]of e){if(!r.startsWith(n.AnnotationEditorPrefix))continue;let e=t.get(a.pageIndex);e||(e=[],t.set(a.pageIndex,e)),e.push(a)}return t.size>0?t:null},t.getRotationMatrix=function(e,t,r){switch(e){case 90:return[0,1,-1,0,t,0];case 180:return[-1,0,0,-1,t,r];case 270:return[0,-1,1,0,0,r];default:throw new Error("Invalid rotation")}},t.isAscii=function(e){return/^[\\x00-\\x7F]*$/.test(e)},t.isWhiteSpace=function(e){return 32===e||9===e||13===e||10===e},t.log2=function(e){return e<=0?0:Math.ceil(Math.log2(e))},t.numberToString=function(e){if(Number.isInteger(e))return e.toString();const t=Math.round(100*e);return t%100==0?(t/100).toString():t%10==0?e.toFixed(1):e.toFixed(2)},t.parseXFAPath=function(e){const t=/(.+)\\[(\\d+)\\]$/;return e.split(".").map((e=>{const r=e.match(t);return r?{name:r[1],pos:parseInt(r[2],10)}:{name:e,pos:0}}))},t.readInt8=function(e,t){return e[t]<<24>>24},t.readUint16=function(e,t){return e[t]<<8|e[t+1]},t.readUint32=function(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0},t.recoverJsURL=function(e){const t=new RegExp("^\\\\s*("+["app.launchURL","window.open","xfa.host.gotoURL"].join("|").replaceAll(".","\\\\.")+")\\\\((?:'|\\")([^'\\"]*)(?:'|\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))","i").exec(e);if(null!=t&&t[2]){const e=t[2];let r=!1;return"true"===t[3]&&"app.launchURL"===t[1]&&(r=!0),{url:e,newWindow:r}}return null},t.stringToUTF16HexString=function(e){const t=[];for(let r=0,n=e.length;r>8&255).toString(16).padStart(2,"0"),(255&n).toString(16).padStart(2,"0"))}return t.join("")},t.stringToUTF16String=function(e){const t=[];arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&t.push("þÿ");for(let r=0,n=e.length;r>8&255),String.fromCharCode(255&n))}return t.join("")},t.toRomanNumerals=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,n.assert)(Number.isInteger(e)&&e>0,"The number should be a positive integer.");const r=[];let a;for(;e>=1e3;)e-=1e3,r.push("M");a=e/100|0,e%=100,r.push(u[a]),a=e/10|0,e%=10,r.push(u[10+a]),r.push(u[20+e]);const i=r.join("");return t?i.toLowerCase():i},t.validateCSSFont=function(e){const t=new Set(["100","200","300","400","500","600","700","800","900","1000","normal","bold","bolder","lighter"]),{fontFamily:r,fontWeight:n,italicAngle:a}=e;if(!g(r,!0))return!1;const i=n?n.toString():"";e.fontWeight=t.has(i)?i:"400";const s=parseFloat(a);return e.italicAngle=isNaN(s)||s<-90||s>90?"14":a.toString(),!0},t.validateFontName=g,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(2);var n=r(144),a=r(150),i=r(151);t.PDF_VERSION_REGEXP=/^[1-9]\\.\\d$/;class s extends n.BaseException{constructor(e,t){super("Missing data [".concat(e,", ").concat(t,")"),"MissingDataException"),this.begin=e,this.end=t}}t.MissingDataException=s;class o extends n.BaseException{constructor(e){super(e,"ParserEOFException")}}t.ParserEOFException=o;class c extends n.BaseException{constructor(e){super(e,"XRefEntryException")}}t.XRefEntryException=c;class l extends n.BaseException{constructor(e){super(e,"XRefParseException")}}function h(e){let t,{dict:r,key:n,getArray:i=!1,stopWhenFound:s=!0}=e;const o=new a.RefSet;for(;r instanceof a.Dict&&(!r.objId||!o.has(r.objId));){r.objId&&o.put(r.objId);const e=i?r.getArray(n):r.get(n);if(void 0!==e){if(s)return e;(t||(t=[])).push(e)}r=r.get("Parent")}return t}t.XRefParseException=l;const u=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];function d(e,t,r,s){if(!e)return;let o=null;if(e instanceof a.Ref){if(s.has(e))return;o=e,s.put(o),e=t.fetch(e)}if(Array.isArray(e))for(const n of e)d(n,t,r,s);else if(e instanceof a.Dict){if((0,a.isName)(e.get("S"),"JavaScript")){const t=e.get("JS");let a;t instanceof i.BaseStream?a=t.getString():"string"==typeof t&&(a=t),a&&(a=(0,n.stringToPDFString)(a).replaceAll("\\0","")),a&&r.push(a)}d(e.getRaw("Next"),t,r,s)}o&&s.remove(o)}const f={60:"<",62:">",38:"&",34:""",39:"'"};function g(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=/^("|').*("|')$/.exec(e);if(r&&r[1]===r[2]){if(new RegExp("[^\\\\\\\\]".concat(r[1])).test(e.slice(1,-1)))return t&&(0,n.warn)("FontFamily contains unescaped ".concat(r[1],": ").concat(e,".")),!1}else for(const r of e.split(/[ \\t]+/))if(/^(\\d|(-(\\d|-)))/.test(r)||!/^[\\w-\\\\]+$/.test(r))return t&&(0,n.warn)("FontFamily contains invalid : ".concat(e,".")),!1;return!0}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RefSetCache=t.RefSet=t.Ref=t.Name=t.EOF=t.Dict=t.Cmd=t.CIRCULAR_REF=void 0,t.clearPrimitiveCaches=function(){s=Object.create(null),o=Object.create(null),c=Object.create(null)},t.isCmd=function(e,t){return e instanceof h&&(void 0===t||e.cmd===t)},t.isDict=function(e,t){return e instanceof d&&(void 0===t||m(e.get("Type"),t))},t.isName=m,t.isRefsEqual=function(e,t){return e.num===t.num&&e.gen===t.gen},r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(144);const a=Symbol("CIRCULAR_REF");t.CIRCULAR_REF=a;const i=Symbol("EOF");t.EOF=i;let s=Object.create(null),o=Object.create(null),c=Object.create(null);class l{constructor(e){this.name=e}static get(e){var t;return(t=o)[e]||(t[e]=new l(e))}}t.Name=l;class h{constructor(e){this.cmd=e}static get(e){var t;return(t=s)[e]||(t[e]=new h(e))}}t.Cmd=h;const u=function(){return u};class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._map=Object.create(null),this.xref=e,this.objId=null,this.suppressEncryption=!1,this.__nonSerializable__=u}assignXref(e){this.xref=e}get size(){return Object.keys(this._map).length}get(e,t,r){let n=this._map[e];return void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref?this.xref.fetch(n,this.suppressEncryption):n}async getAsync(e,t,r){let n=this._map[e];return void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref?this.xref.fetchAsync(n,this.suppressEncryption):n}getArray(e,t,r){let n=this._map[e];if(void 0===n&&void 0!==t&&(n=this._map[t],void 0===n&&void 0!==r&&(n=this._map[r])),n instanceof f&&this.xref&&(n=this.xref.fetch(n,this.suppressEncryption)),Array.isArray(n)){n=n.slice();for(let e=0,t=n.length;e{(0,n.unreachable)("Should not call \`set\` on the empty dictionary.")},(0,n.shadow)(this,"empty",e)}static merge(e){let{xref:t,dictArray:r,mergeSubDicts:n=!1}=e;const a=new d(t),i=new Map;for(const e of r)if(e instanceof d)for(const[t,r]of Object.entries(e._map)){let e=i.get(t);if(void 0===e)e=[],i.set(t,e);else if(!(n&&r instanceof d))continue;e.push(r)}for(const[e,r]of i){if(1===r.length||!(r[0]instanceof d)){a._map[e]=r[0];continue}const n=new d(t);for(const e of r)for(const[t,r]of Object.entries(e._map))void 0===n._map[t]&&(n._map[t]=r);n.size>0&&(a._map[e]=n)}return i.clear(),a.size>0?a:d.empty}}t.Dict=d;class f{constructor(e,t){this.num=e,this.gen=t}toString(){return 0===this.gen?"".concat(this.num,"R"):"".concat(this.num,"R").concat(this.gen)}static fromString(e){const t=c[e];if(t)return t;const r=/^(\\d+)R(\\d*)$/.exec(e);return r&&"0"!==r[1]?c[e]=new f(parseInt(r[1]),r[2]?parseInt(r[2]):0):null}static get(e,t){var r;const n=0===t?"".concat(e,"R"):"".concat(e,"R").concat(t);return(r=c)[n]||(r[n]=new f(e,t))}}t.Ref=f;class g{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._set=new Set(null==e?void 0:e._set)}has(e){return this._set.has(e.toString())}put(e){this._set.add(e.toString())}remove(e){this._set.delete(e.toString())}[Symbol.iterator](){return this._set.values()}clear(){this._set.clear()}}t.RefSet=g;class p{constructor(){this._map=new Map}get size(){return this._map.size}get(e){return this._map.get(e.toString())}has(e){return this._map.has(e.toString())}put(e,t){this._map.set(e.toString(),t)}putAlias(e,t){this._map.set(e.toString(),this.get(t))}[Symbol.iterator](){return this._map.values()}clear(){this._map.clear()}}function m(e,t){return e instanceof l&&(void 0===t||e.name===t)}t.RefSetCache=p},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaseStream=void 0;var n=r(144);class a{constructor(){this.constructor===a&&(0,n.unreachable)("Cannot initialize BaseStream.")}get length(){(0,n.unreachable)("Abstract getter \`length\` accessed")}get isEmpty(){(0,n.unreachable)("Abstract getter \`isEmpty\` accessed")}get isDataLoaded(){return(0,n.shadow)(this,"isDataLoaded",!0)}getByte(){(0,n.unreachable)("Abstract method \`getByte\` called")}getBytes(e){(0,n.unreachable)("Abstract method \`getBytes\` called")}peekByte(){const e=this.getByte();return-1!==e&&this.pos--,e}peekBytes(e){const t=this.getBytes(e);return this.pos-=t.length,t}getUint16(){const e=this.getByte(),t=this.getByte();return-1===e||-1===t?-1:(e<<8)+t}getInt32(){return(this.getByte()<<24)+(this.getByte()<<16)+(this.getByte()<<8)+this.getByte()}getByteRange(e,t){(0,n.unreachable)("Abstract method \`getByteRange\` called")}getString(e){return(0,n.bytesToString)(this.getBytes(e))}skip(e){this.pos+=e||1}reset(){(0,n.unreachable)("Abstract method \`reset\` called")}moveStart(){(0,n.unreachable)("Abstract method \`moveStart\` called")}makeSubStream(e,t){(0,n.unreachable)("Abstract method \`makeSubStream\` called")}getBaseStreams(){return null}}t.BaseStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NetworkPdfManager=t.LocalPdfManager=void 0;var n=r(144),a=r(153),i=r(149),s=r(155),o=r(154);class c{constructor(e){var t;this.constructor===c&&(0,n.unreachable)("Cannot initialize BasePdfManager."),this._docBaseUrl=function(e){if(e){const t=(0,n.createValidAbsoluteUrl)(e);if(t)return t.href;(0,n.warn)('Invalid absolute docBaseUrl: "'.concat(e,'".'))}return null}(e.docBaseUrl),this._docId=e.docId,this._password=e.password,this.enableXfa=e.enableXfa,(t=e.evaluatorOptions).isOffscreenCanvasSupported&&(t.isOffscreenCanvasSupported=n.FeatureTest.isOffscreenCanvasSupported),this.evaluatorOptions=e.evaluatorOptions}get docId(){return this._docId}get password(){return this._password}get docBaseUrl(){const e=this.pdfDocument.catalog;return(0,n.shadow)(this,"docBaseUrl",e.baseUrl||this._docBaseUrl)}ensureDoc(e,t){return this.ensure(this.pdfDocument,e,t)}ensureXRef(e,t){return this.ensure(this.pdfDocument.xref,e,t)}ensureCatalog(e,t){return this.ensure(this.pdfDocument.catalog,e,t)}getPage(e){return this.pdfDocument.getPage(e)}fontFallback(e,t){return this.pdfDocument.fontFallback(e,t)}loadXfaFonts(e,t){return this.pdfDocument.loadXfaFonts(e,t)}loadXfaImages(){return this.pdfDocument.loadXfaImages()}serializeXfaData(e){return this.pdfDocument.serializeXfaData(e)}cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.pdfDocument.cleanup(e)}async ensure(e,t,r){(0,n.unreachable)("Abstract method \`ensure\` called")}requestRange(e,t){(0,n.unreachable)("Abstract method \`requestRange\` called")}requestLoadedStream(){(0,n.unreachable)("Abstract method \`requestLoadedStream\` called")}sendProgressiveData(e){(0,n.unreachable)("Abstract method \`sendProgressiveData\` called")}updatePassword(e){this._password=e}terminate(e){(0,n.unreachable)("Abstract method \`terminate\` called")}}t.LocalPdfManager=class extends c{constructor(e){super(e);const t=new o.Stream(e.source);this.pdfDocument=new s.PDFDocument(this,t),this._loadedStreamPromise=Promise.resolve(t)}async ensure(e,t,r){const n=e[t];return"function"==typeof n?n.apply(e,r):n}requestRange(e,t){return Promise.resolve()}requestLoadedStream(){return this._loadedStreamPromise}terminate(e){}},t.NetworkPdfManager=class extends c{constructor(e){super(e),this.streamManager=new a.ChunkedStreamManager(e.source,{msgHandler:e.handler,length:e.length,disableAutoFetch:e.disableAutoFetch,rangeChunkSize:e.rangeChunkSize}),this.pdfDocument=new s.PDFDocument(this,this.streamManager.getStream())}async ensure(e,t,r){try{const n=e[t];return"function"==typeof n?n.apply(e,r):n}catch(n){if(!(n instanceof i.MissingDataException))throw n;return await this.requestRange(n.begin,n.end),this.ensure(e,t,r)}}requestRange(e,t){return this.streamManager.requestRange(e,t)}requestLoadedStream(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.streamManager.requestAllChunks(e)}sendProgressiveData(e){this.streamManager.onReceiveData({chunk:e})}terminate(e){this.streamManager.abort(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ChunkedStreamManager=t.ChunkedStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(2);var n=r(149),a=r(144),i=r(154);class s extends i.Stream{constructor(e,t,r){super(new Uint8Array(e),0,e,null),this.chunkSize=t,this._loadedChunks=new Set,this.numChunks=Math.ceil(e/t),this.manager=r,this.progressiveDataLength=0,this.lastSuccessfulEnsureByteChunk=-1}getMissingChunks(){const e=[];for(let t=0,r=this.numChunks;t=this.end?this.numChunks:Math.floor(t/this.chunkSize);for(let e=r;ethis.numChunks)&&t!==this.lastSuccessfulEnsureByteChunk){if(!this._loadedChunks.has(t))throw new n.MissingDataException(e,e+1);this.lastSuccessfulEnsureByteChunk=t}}ensureRange(e,t){if(e>=t)return;if(t<=this.progressiveDataLength)return;const r=Math.floor(e/this.chunkSize);if(r>this.numChunks)return;const a=Math.min(Math.floor((t-1)/this.chunkSize)+1,this.numChunks);for(let i=r;i=this.end?-1:(e>=this.progressiveDataLength&&this.ensureByte(e),this.bytes[this.pos++])}getBytes(e){const t=this.bytes,r=this.pos,n=this.end;if(!e)return n>this.progressiveDataLength&&this.ensureRange(r,n),t.subarray(r,n);let a=r+e;return a>n&&(a=n),a>this.progressiveDataLength&&this.ensureRange(r,a),this.pos=a,t.subarray(r,a)}getByteRange(e,t){return e<0&&(e=0),t>this.end&&(t=this.end),t>this.progressiveDataLength&&this.ensureRange(e,t),this.bytes.subarray(e,t)}makeSubStream(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;function n(){}t?e+t>this.progressiveDataLength&&this.ensureRange(e,e+t):e>=this.progressiveDataLength&&this.ensureByte(e),n.prototype=Object.create(this),n.prototype.getMissingChunks=function(){const e=this.chunkSize,t=Math.floor(this.start/e),r=Math.floor((this.end-1)/e)+1,n=[];for(let e=t;e{const s=o=>{let{value:c,done:l}=o;try{if(l){const t=(0,n.arrayBuffersToBytes)(a);return a=null,void e(t)}i+=c.byteLength,r.isStreamingSupported&&this.onProgress({loaded:i}),a.push(c),r.read().then(s,t)}catch(e){t(e)}};r.read().then(s,t)})).then((t=>{this.aborted||this.onReceiveData({chunk:t,begin:e})}))}requestAllChunks(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0])){const e=this.stream.getMissingChunks();this._requestChunks(e)}return this._loadedStreamCapability.promise}_requestChunks(e){const t=this.currRequestId++,r=new Set;this._chunksNeededByRequest.set(t,r);for(const t of e)this.stream.hasChunk(t)||r.add(t);if(0===r.size)return Promise.resolve();const n=new a.PromiseCapability;this._promisesByRequest.set(t,n);const i=[];for(const e of r){let r=this._requestsByChunk.get(e);r||(r=[],this._requestsByChunk.set(e,r),i.push(e)),r.push(t)}if(i.length>0){const e=this.groupChunks(i);for(const t of e){const e=t.beginChunk*this.chunkSize,r=Math.min(t.endChunk*this.chunkSize,this.length);this.sendRequest(e,r).catch(n.reject)}}return n.promise.catch((e=>{if(!this.aborted)throw e}))}getStream(){return this.stream}requestRange(e,t){t=Math.min(t,this.length);const r=this.getBeginChunk(e),n=this.getEndChunk(t),a=[];for(let e=r;e0&&void 0!==arguments[0]?arguments[0]:[];const t=[];for(const r of e){const e=this.getBeginChunk(r.begin),n=this.getEndChunk(r.end);for(let r=e;r=0&&n+1!==i&&(t.push({beginChunk:r,endChunk:n+1}),r=i),a+1===e.length&&t.push({beginChunk:r,endChunk:i+1}),n=i}return t}onProgress(e){this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize+e.loaded,total:this.length})}onReceiveData(e){const t=e.chunk,r=void 0===e.begin,n=r?this.progressiveDataLength:e.begin,a=n+t.byteLength,i=Math.floor(n/this.chunkSize),s=a0||o.push(r)}}}if(!this.disableAutoFetch&&0===this._requestsByChunk.size){let e;if(1===this.stream.numChunksLoaded){const t=this.stream.numChunks-1;this.stream.hasChunk(t)||(e=t)}else e=this.stream.nextEmptyChunk(s);Number.isInteger(e)&&this._requestChunks([e])}for(const e of o){const t=this._promisesByRequest.get(e);this._promisesByRequest.delete(e),t.resolve()}this.msgHandler.send("DocProgress",{loaded:this.stream.numChunksLoaded*this.chunkSize,total:this.length})}onError(e){this._loadedStreamCapability.reject(e)}getBeginChunk(e){return Math.floor(e/this.chunkSize)}getEndChunk(e){return Math.floor((e-1)/this.chunkSize)+1}abort(e){this.aborted=!0,this.pdfNetworkStream&&this.pdfNetworkStream.cancelAllRequests(e);for(const t of this._promisesByRequest.values())t.reject(e)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StringStream=t.Stream=t.NullStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(151),a=r(144);class i extends n.BaseStream{constructor(e,t,r,n){super(),this.bytes=e instanceof Uint8Array?e:new Uint8Array(e),this.start=t||0,this.pos=this.start,this.end=t+r||this.bytes.length,this.dict=n}get length(){return this.end-this.start}get isEmpty(){return 0===this.length}getByte(){return this.pos>=this.end?-1:this.bytes[this.pos++]}getBytes(e){const t=this.bytes,r=this.pos,n=this.end;if(!e)return t.subarray(r,n);let a=r+e;return a>n&&(a=n),this.pos=a,t.subarray(r,a)}getByteRange(e,t){return e<0&&(e=0),t>this.end&&(t=this.end),this.bytes.subarray(e,t)}reset(){this.pos=this.start}moveStart(){this.start=this.pos}makeSubStream(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return new i(this.bytes.buffer,e,t,r)}}t.Stream=i,t.StringStream=class extends i{constructor(e){super((0,a.stringToBytes)(e))}},t.NullStream=class extends i{constructor(){super(new Uint8Array(0))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Page=t.PDFDocument=void 0,r(2),r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(156),i=r(149),c=r(150),l=r(201),h=r(151),u=r(218),d=r(220),f=r(222),g=r(255),p=r(166),m=r(154),b=r(226),y=r(214),w=r(163),v=r(168),x=r(225),S=r(216),A=r(227),k=r(256);const C=[0,0,612,792];var O=new WeakSet;class F{constructor(e){s(this,O);let{pdfManager:t,xref:r,pageIndex:n,pageDict:a,ref:i,globalIdFactory:o,fontCache:c,builtInCMapCache:l,standardFontDataCache:h,globalImageCache:u,systemFontCache:d,nonBlendModesSet:f,xfaFactory:g}=e;this.pdfManager=t,this.pageIndex=n,this.pageDict=a,this.xref=r,this.ref=i,this.fontCache=c,this.builtInCMapCache=l,this.standardFontDataCache=h,this.globalImageCache=u,this.systemFontCache=d,this.nonBlendModesSet=f,this.evaluatorOptions=t.evaluatorOptions,this.resourcesPromise=null,this.xfaFactory=g;const p={obj:0};this._localIdFactory=class extends o{static createObjId(){return"p".concat(n,"_").concat(++p.obj)}static getPageObjId(){return"p".concat(i.toString())}}}_getInheritableProperty(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=(0,i.getInheritableProperty)({dict:this.pageDict,key:e,getArray:t,stopWhenFound:!1});return Array.isArray(r)?1!==r.length&&r[0]instanceof c.Dict?c.Dict.merge({xref:this.xref,dictArray:r}):r[0]:r}get content(){return this.pageDict.getArray("Contents")}get resources(){const e=this._getInheritableProperty("Resources");return(0,n.shadow)(this,"resources",e instanceof c.Dict?e:c.Dict.empty)}_getBoundingBox(e){if(this.xfaData)return this.xfaData.bbox;let t=this._getInheritableProperty(e,!0);if(Array.isArray(t)&&4===t.length){if(t=n.Util.normalizeRect(t),t[2]-t[0]>0&&t[3]-t[1]>0)return t;(0,n.warn)("Empty, or invalid, /".concat(e," entry."))}return null}get mediaBox(){return(0,n.shadow)(this,"mediaBox",this._getBoundingBox("MediaBox")||C)}get cropBox(){return(0,n.shadow)(this,"cropBox",this._getBoundingBox("CropBox")||this.mediaBox)}get userUnit(){let e=this.pageDict.get("UserUnit");return("number"!=typeof e||e<=0)&&(e=1),(0,n.shadow)(this,"userUnit",e)}get view(){const{cropBox:e,mediaBox:t}=this;if(e!==t&&!(0,n.isArrayEqual)(e,t)){const r=n.Util.intersect(e,t);if(r&&r[2]-r[0]>0&&r[3]-r[1]>0)return(0,n.shadow)(this,"view",r);(0,n.warn)("Empty /CropBox and /MediaBox intersection.")}return(0,n.shadow)(this,"view",t)}get rotate(){let e=this._getInheritableProperty("Rotate")||0;return e%90!=0?e=0:e>=360?e%=360:e<0&&(e=(e%360+360)%360),(0,n.shadow)(this,"rotate",e)}_onSubStreamError(e,t){if(!this.evaluatorOptions.ignoreErrors)throw e;(0,n.warn)("getContentStream - ignoring sub-stream (".concat(t,'): "').concat(e,'".'))}getContentStream(){return this.pdfManager.ensure(this,"content").then((e=>e instanceof h.BaseStream?e:Array.isArray(e)?new v.StreamsSequenceStream(e,this._onSubStreamError.bind(this)):new m.NullStream))}get xfaData(){return(0,n.shadow)(this,"xfaData",this.xfaFactory?{bbox:this.xfaFactory.getBoundingBox(this.pageIndex)}:null)}async saveNewAnnotations(e,t,r,n){if(this.xfaFactory)throw new Error("XFA: Cannot save new annotations.");const i=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),s=new c.RefSet,l=new c.RefSet;o(this,O,I).call(this,r,s,l);const h=this.pageDict,u=this.annotations.filter((e=>!(e instanceof c.Ref&&s.has(e)))),d=await a.AnnotationFactory.saveNewAnnotations(i,t,r,n);for(const{ref:e}of d.annotations)e instanceof c.Ref&&!l.has(e)&&u.push(e);const f=h.get("Annots");h.set("Annots",u);const g=[];let p=null;this.xref.encrypt&&(p=this.xref.encrypt.createCipherTransform(this.ref.num,this.ref.gen)),await(0,S.writeObject)(this.ref,h,g,p),f&&h.set("Annots",f);const m=d.dependencies;return m.push({ref:this.ref,data:g.join("")},...d.annotations),m}save(e,t,r){const a=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions});return this._parsedAnnotations.then((function(e){const i=[];for(const s of e)s.mustBePrinted(r)&&i.push(s.save(a,t,r).catch((function(e){return(0,n.warn)('save - ignoring annotation data during "'.concat(t.name,'" task: "').concat(e,'".')),null})));return Promise.all(i).then((function(e){return e.filter((e=>!!e))}))}))}loadResources(e){return this.resourcesPromise||(this.resourcesPromise=this.pdfManager.ensure(this,"resources")),this.resourcesPromise.then((()=>new b.ObjectLoader(this.resources,e,this.xref).load()))}getOperatorList(e){let{handler:t,sink:r,task:s,intent:l,cacheKey:h,annotationStorage:u=null}=e;const d=this.getContentStream(),f=this.loadResources(["ColorSpace","ExtGState","Font","Pattern","Properties","Shading","XObject"]),g=new w.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}),p=this.xfaFactory?null:(0,i.getNewAnnotationsMap)(u);let m=null,b=Promise.resolve(null);if(p){let e;const t=p.get(this.pageIndex);if(t){const r=new Set;for(const{bitmapId:e,bitmap:n}of t)!e||n||r.has(e)||r.add(e);const{isOffscreenCanvasSupported:i}=this.evaluatorOptions;if(r.size>0){const s=t.slice();for(const[e,t]of u)e.startsWith(n.AnnotationEditorPrefix)&&t.bitmap&&r.has(t.bitmapId)&&s.push(t);e=a.AnnotationFactory.generateImages(s,this.xref,i)}else e=a.AnnotationFactory.generateImages(t,this.xref,i);m=new c.RefSet,o(this,O,I).call(this,t,m,null),b=a.AnnotationFactory.printNewAnnotations(g,s,t,e)}}const v=Promise.all([d,f]).then((e=>{let[n]=e;const a=new y.OperatorList(l,r);return t.send("StartRenderPage",{transparency:g.hasBlendModes(this.resources,this.nonBlendModesSet),pageIndex:this.pageIndex,cacheKey:h}),g.getOperatorList({stream:n,task:s,resources:this.resources,operatorList:a}).then((function(){return a}))}));return Promise.all([v,this._parsedAnnotations,b]).then((function(e){let[t,r,a]=e;if(a){r=r.filter((e=>!(e.ref&&m.has(e.ref))));for(let e=0,t=a.length;ee.ref&&(0,c.isRefsEqual)(e.ref,n.refToReplace)));i>=0&&(r.splice(i,1,n),a.splice(e--,1),t--)}}r=r.concat(a)}if(0===r.length||l&n.RenderingIntentFlag.ANNOTATIONS_DISABLE)return t.flush(!0),{length:t.totalLength};const i=!!(l&n.RenderingIntentFlag.ANNOTATIONS_FORMS),o=!!(l&n.RenderingIntentFlag.ANY),h=!!(l&n.RenderingIntentFlag.DISPLAY),d=!!(l&n.RenderingIntentFlag.PRINT),f=[];for(const e of r)(o||h&&e.mustBeViewed(u)||d&&e.mustBePrinted(u))&&f.push(e.getOperatorList(g,s,l,i,u).catch((function(e){return(0,n.warn)('getOperatorList - ignoring annotation data during "'.concat(s.name,'" task: "').concat(e,'".')),{opList:null,separateForm:!1,separateCanvas:!1}})));return Promise.all(f).then((function(e){let r=!1,n=!1;for(const{opList:a,separateForm:i,separateCanvas:s}of e)t.addOpList(a),r||(r=i),n||(n=s);return t.flush(!0,{form:r,canvas:n}),{length:t.totalLength}}))}))}extractTextContent(e){let{handler:t,task:r,includeMarkedContent:n,disableNormalization:a,sink:i}=e;const s=this.getContentStream(),o=this.loadResources(["ExtGState","Font","Properties","XObject"]);return Promise.all([s,o]).then((e=>{let[s]=e;return new w.PartialEvaluator({xref:this.xref,handler:t,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions}).getTextContent({stream:s,task:r,resources:this.resources,includeMarkedContent:n,disableNormalization:a,sink:i,viewBox:this.view})}))}async getStructTree(){const e=await this.pdfManager.ensureCatalog("structTreeRoot");return e?(await this.pdfManager.ensure(this,"_parseStructTree",[e])).serializable:null}_parseStructTree(e){const t=new x.StructTreePage(e,this.pageDict);return t.parse(),t}async getAnnotationsData(e,t,r){const a=await this._parsedAnnotations;if(0===a.length)return[];const i=[],s=[];let o;const c=!!(r&n.RenderingIntentFlag.ANY),l=!!(r&n.RenderingIntentFlag.DISPLAY),h=!!(r&n.RenderingIntentFlag.PRINT);for(const r of a){const a=c||l&&r.viewable;(a||h&&r.printable)&&i.push(r.data),r.hasTextContent&&a&&(o||(o=new w.PartialEvaluator({xref:this.xref,handler:e,pageIndex:this.pageIndex,idFactory:this._localIdFactory,fontCache:this.fontCache,builtInCMapCache:this.builtInCMapCache,standardFontDataCache:this.standardFontDataCache,globalImageCache:this.globalImageCache,systemFontCache:this.systemFontCache,options:this.evaluatorOptions})),s.push(r.extractTextContent(o,t,[-1/0,-1/0,1/0,1/0]).catch((function(e){(0,n.warn)('getAnnotationsData - ignoring textContent during "'.concat(t.name,'" task: "').concat(e,'".'))}))))}return await Promise.all(s),i}get annotations(){const e=this._getInheritableProperty("Annots");return(0,n.shadow)(this,"annotations",Array.isArray(e)?e:[])}get _parsedAnnotations(){const e=this.pdfManager.ensure(this,"annotations").then((()=>{const e=[];for(const t of this.annotations)e.push(a.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!1).catch((function(e){return(0,n.warn)('_parsedAnnotations: "'.concat(e,'".')),null})));return Promise.all(e).then((function(e){if(0===e.length)return e;const t=[];let r;for(const n of e)n&&(n instanceof a.PopupAnnotation?(r||(r=[])).push(n):t.push(n));return r&&t.push(...r),t}))}));return(0,n.shadow)(this,"_parsedAnnotations",e)}get jsActions(){const e=(0,i.collectActions)(this.xref,this.pageDict,n.PageActionEventType);return(0,n.shadow)(this,"jsActions",e)}}function I(e,t,r){for(const a of e)if(a.id){const e=c.Ref.fromString(a.id);if(!e){(0,n.warn)("A non-linked annotation cannot be modified: ".concat(a.id));continue}if(a.deleted){t.put(e);continue}null==r||r.put(e),a.ref=e,delete a.id}}t.Page=F;const T=new Uint8Array([37,80,68,70,45]),M=new Uint8Array([115,116,97,114,116,120,114,101,102]),E=new Uint8Array([101,110,100,111,98,106]);function P(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1024,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const a=t.length,i=e.peekBytes(r),s=i.length-a;if(s<=0)return!1;if(n){const r=a-1;let n=i.length-1;for(;n>=r;){let s=0;for(;s=a)return e.pos+=n-r,!0;n--}}else{let r=0;for(;r<=s;){let n=0;for(;n=a)return e.pos+=r,!0;r++}}return!1}t.PDFDocument=class{constructor(e,t){if(t.length<=0)throw new n.InvalidPDFException("The PDF file is empty, i.e. its size is zero bytes.");this.pdfManager=e,this.stream=t,this.xref=new k.XRef(t,e),this._pagePromises=new Map,this._version=null;const r={font:0};this._globalIdFactory=class{static getDocId(){return"g_".concat(e.docId)}static createFontId(){return"f"+ ++r.font}static createObjId(){(0,n.unreachable)("Abstract method \`createObjId\` called.")}static getPageObjId(){(0,n.unreachable)("Abstract method \`getPageObjId\` called.")}}}parse(e){this.xref.parse(e),this.catalog=new d.Catalog(this.pdfManager,this.xref)}get linearization(){let e=null;try{e=p.Linearization.create(this.stream)}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)(e)}return(0,n.shadow)(this,"linearization",e)}get startXRef(){const e=this.stream;let t=0;if(this.linearization)e.reset(),P(e,E)&&(t=e.pos+6-e.start);else{const r=1024,n=M.length;let a=!1,s=e.end;for(;!a&&s>0;)s-=r-n,s<0&&(s=0),e.pos=s,a=P(e,M,r,!0);if(a){let r;e.skip(9);do{r=e.getByte()}while((0,i.isWhiteSpace)(r));let n="";for(;r>=32&&r<=57;)n+=String.fromCharCode(r),r=e.getByte();t=parseInt(n,10),isNaN(t)&&(t=0)}}return(0,n.shadow)(this,"startXRef",t)}checkHeader(){const e=this.stream;if(e.reset(),!P(e,T))return;e.moveStart(),e.skip(T.length);let t,r="";for(;(t=e.getByte())>32&&r.length<7;)r+=String.fromCharCode(t);i.PDF_VERSION_REGEXP.test(r)?this._version=r:(0,n.warn)("Invalid PDF header version: ".concat(r))}parseStartXRef(){this.xref.setStartXRef(this.startXRef)}get numPages(){let e=0;return e=this.catalog.hasActualNumPages?this.catalog.numPages:this.xfaFactory?this.xfaFactory.getNumPages():this.linearization?this.linearization.numPages:this.catalog.numPages,(0,n.shadow)(this,"numPages",e)}_hasOnlyDocumentSignatures(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return!!Array.isArray(e)&&e.every((e=>{if(!((e=this.xref.fetchIfRef(e))instanceof c.Dict))return!1;if(e.has("Kids"))return++t>10?((0,n.warn)("_hasOnlyDocumentSignatures: maximum recursion depth reached"),!1):this._hasOnlyDocumentSignatures(e.get("Kids"),t);const r=(0,c.isName)(e.get("FT"),"Sig"),a=e.get("Rect"),i=Array.isArray(a)&&a.every((e=>0===e));return r&&i}))}get _xfaStreams(){const e=this.catalog.acroForm;if(!e)return null;const t=e.get("XFA"),r={"xdp:xdp":"",template:"",datasets:"",config:"",connectionSet:"",localeSet:"",stylesheet:"","/xdp:xdp":""};if(t instanceof h.BaseStream&&!t.isEmpty)return r["xdp:xdp"]=t,r;if(!Array.isArray(t)||0===t.length)return null;for(let e=0,n=t.length;e{p.set(e,t)}));const m=[];for(const[e,r]of p){const s=r.get("FontDescriptor");if(!(s instanceof c.Dict))continue;let o=s.get("FontFamily");o=o.replaceAll(/[ ]+(\\d)/g,"$1");const l={fontFamily:o,fontWeight:s.get("FontWeight"),italicAngle:-s.get("ItalicAngle")};(0,i.validateCSSFont)(l)&&m.push(u.handleSetFont(a,[c.Name.get(e),1],null,d,t,g,null,l).catch((function(e){return(0,n.warn)('loadXfaFonts: "'.concat(e,'".')),null})))}await Promise.all(m);const v=this.xfaFactory.setFonts(f);if(!v)return;h.ignoreErrors=!0,m.length=0,f.length=0;const x=new Set;for(const e of v)(0,l.getXfaFontName)("".concat(e,"-Regular"))||x.add(e);x.size&&v.push("PdfJS-Fallback");for(const e of v)if(!x.has(e))for(const r of[{name:"Regular",fontWeight:400,italicAngle:0},{name:"Bold",fontWeight:700,italicAngle:0},{name:"Italic",fontWeight:400,italicAngle:12},{name:"BoldItalic",fontWeight:700,italicAngle:12}]){const i="".concat(e,"-").concat(r.name),s=(0,l.getXfaFontDict)(i);m.push(u.handleSetFont(a,[c.Name.get(i),1],null,d,t,g,s,{fontFamily:e,fontWeight:r.fontWeight,italicAngle:r.italicAngle}).catch((function(e){return(0,n.warn)('loadXfaFonts: "'.concat(e,'".')),null})))}await Promise.all(m),this.xfaFactory.appendFonts(f,x)}async serializeXfaData(e){return this.xfaFactory?this.xfaFactory.serializeData(e):null}get version(){return this.catalog.version||this._version}get formInfo(){const e={hasFields:!1,hasAcroForm:!1,hasXfa:!1,hasSignatures:!1},t=this.catalog.acroForm;if(!t)return(0,n.shadow)(this,"formInfo",e);try{const r=t.get("Fields"),n=Array.isArray(r)&&r.length>0;e.hasFields=n;const a=t.get("XFA");e.hasXfa=Array.isArray(a)&&a.length>0||a instanceof h.BaseStream&&!a.isEmpty;const i=!!(1&t.get("SigFlags")),s=i&&this._hasOnlyDocumentSignatures(r);e.hasAcroForm=n&&!s,e.hasSignatures=i}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.warn)('Cannot fetch form information: "'.concat(e,'".'))}return(0,n.shadow)(this,"formInfo",e)}get documentInfo(){const e={PDFFormatVersion:this.version,Language:this.catalog.lang,EncryptFilterName:this.xref.encrypt?this.xref.encrypt.filterName:null,IsLinearized:!!this.linearization,IsAcroFormPresent:this.formInfo.hasAcroForm,IsXFAPresent:this.formInfo.hasXfa,IsCollectionPresent:!!this.catalog.collection,IsSignaturesPresent:this.formInfo.hasSignatures};let t;try{t=this.xref.trailer.get("Info")}catch(e){if(e instanceof i.MissingDataException)throw e;(0,n.info)("The document information dictionary is invalid.")}if(!(t instanceof c.Dict))return(0,n.shadow)(this,"documentInfo",e);for(const r of t.getKeys()){const a=t.get(r);switch(r){case"Title":case"Author":case"Subject":case"Keywords":case"Creator":case"Producer":case"CreationDate":case"ModDate":if("string"==typeof a){e[r]=(0,n.stringToPDFString)(a);continue}break;case"Trapped":if(a instanceof c.Name){e[r]=a;continue}break;default:let t;switch(typeof a){case"string":t=(0,n.stringToPDFString)(a);break;case"number":case"boolean":t=a;break;default:a instanceof c.Name&&(t=a)}if(void 0===t){(0,n.warn)('Bad value, for custom key "'.concat(r,'", in Info: ').concat(a,"."));continue}e.Custom||(e.Custom=Object.create(null)),e.Custom[r]=t;continue}(0,n.warn)('Bad value, for key "'.concat(r,'", in Info: ').concat(a,"."))}return(0,n.shadow)(this,"documentInfo",e)}get fingerprints(){function e(e){return"string"==typeof e&&e.length>0&&"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"!==e}function t(e){const t=[];for(const r of e){const e=r.toString(16);t.push(e.padStart(2,"0"))}return t.join("")}const r=this.xref.trailer.get("ID");let a,i;return Array.isArray(r)&&e(r[0])?(a=(0,n.stringToBytes)(r[0]),r[1]!==r[0]&&e(r[1])&&(i=(0,n.stringToBytes)(r[1]))):a=(0,u.calculateMD5)(this.stream.getByteRange(0,1024),0,1024),(0,n.shadow)(this,"fingerprints",[t(a),i?t(i):null])}async _getLinearizationPage(e){const{catalog:t,linearization:r,xref:a}=this,i=c.Ref.get(r.objectNumberFirst,0);try{const e=await a.fetchAsync(i);if(e instanceof c.Dict){let r=e.getRaw("Type");if(r instanceof c.Ref&&(r=await a.fetchAsync(r)),(0,c.isName)(r,"Page")||!e.has("Type")&&!e.has("Kids"))return t.pageKidsCountCache.has(i)||t.pageKidsCountCache.put(i,1),t.pageIndexCache.has(i)||t.pageIndexCache.put(i,0),[e,i]}throw new n.FormatError("The Linearization dictionary doesn't point to a valid Page dictionary.")}catch(r){return(0,n.warn)('_getLinearizationPage: "'.concat(r.message,'".')),t.getPageDict(e)}}getPage(e){const t=this._pagePromises.get(e);if(t)return t;const{catalog:r,linearization:n,xfaFactory:a}=this;let i;return i=a?Promise.resolve([c.Dict.empty,null]):(null==n?void 0:n.pageFirst)===e?this._getLinearizationPage(e):r.getPageDict(e),i=i.then((t=>{let[n,i]=t;return new F({pdfManager:this.pdfManager,xref:this.xref,pageIndex:e,pageDict:n,ref:i,globalIdFactory:this._globalIdFactory,fontCache:r.fontCache,builtInCMapCache:r.builtInCMapCache,standardFontDataCache:r.standardFontDataCache,globalImageCache:r.globalImageCache,systemFontCache:r.systemFontCache,nonBlendModesSet:r.nonBlendModesSet,xfaFactory:a})})),this._pagePromises.set(e,i),i}async checkFirstPage(){if(!(arguments.length>0&&void 0!==arguments[0]&&arguments[0]))try{await this.getPage(0)}catch(e){if(e instanceof i.XRefEntryException)throw this._pagePromises.delete(0),await this.cleanup(),new i.XRefParseException}}async checkLastPage(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{catalog:t,pdfManager:r}=this;let a;t.setActualNumPages();try{if(await Promise.all([r.ensureDoc("xfaFactory"),r.ensureDoc("linearization"),r.ensureCatalog("numPages")]),this.xfaFactory)return;if(a=this.linearization?this.linearization.numPages:t.numPages,!Number.isInteger(a))throw new n.FormatError("Page count is not an integer.");if(a<=1)return;await this.getPage(a-1)}catch(s){if(this._pagePromises.delete(a-1),await this.cleanup(),s instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;let o;(0,n.warn)("checkLastPage - invalid /Pages tree /Count: ".concat(a,"."));try{o=await t.getAllPageDicts(e)}catch(r){if(r instanceof i.XRefEntryException&&!e)throw new i.XRefParseException;return void t.setActualNumPages(1)}for(const[e,[n,a]]of o){let i;n instanceof Error?(i=Promise.reject(n),i.catch((()=>{}))):i=Promise.resolve(new F({pdfManager:r,xref:this.xref,pageIndex:e,pageDict:n,ref:a,globalIdFactory:this._globalIdFactory,fontCache:t.fontCache,builtInCMapCache:t.builtInCMapCache,standardFontDataCache:t.standardFontDataCache,globalImageCache:t.globalImageCache,systemFontCache:t.systemFontCache,nonBlendModesSet:t.nonBlendModesSet,xfaFactory:null})),this._pagePromises.set(e,i)}t.setActualNumPages(o.size)}}fontFallback(e,t){return this.catalog.fontFallback(e,t)}async cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.catalog?this.catalog.cleanup(e):(0,f.clearGlobalCaches)()}_collectFieldObjects(e,t,r){const i=this.xref.fetchIfRef(t);if(i.has("T")){const t=(0,n.stringToPDFString)(i.get("T"));e=""===e?t:"".concat(e,".").concat(t)}if(!i.has("Kids")&&/\\[\\d+\\]$/.test(e)&&(e=e.substring(0,e.lastIndexOf("["))),r.has(e)||r.set(e,[]),r.get(e).push(a.AnnotationFactory.create(this.xref,t,this.pdfManager,this._localIdFactory,!0).then((e=>null==e?void 0:e.getFieldObject())).catch((function(e){return(0,n.warn)('_collectFieldObjects: "'.concat(e,'".')),null}))),i.has("Kids")){const t=i.get("Kids");for(const n of t)this._collectFieldObjects(e,n,r)}}get fieldObjects(){if(!this.formInfo.hasFields)return(0,n.shadow)(this,"fieldObjects",Promise.resolve(null));const e=Object.create(null),t=new Map;for(const e of this.catalog.acroForm.get("Fields"))this._collectFieldObjects("",e,t);const r=[];for(const[n,a]of t)r.push(Promise.all(a).then((t=>{(t=t.filter((e=>!!e))).length>0&&(e[n]=t)})));return(0,n.shadow)(this,"fieldObjects",Promise.all(r).then((()=>e)))}get hasJSActions(){const e=this.pdfManager.ensureDoc("_parseHasJSActions");return(0,n.shadow)(this,"hasJSActions",e)}async _parseHasJSActions(){const[e,t]=await Promise.all([this.pdfManager.ensureCatalog("jsActions"),this.pdfManager.ensureDoc("fieldObjects")]);return!!e||!!t&&Object.values(t).some((e=>e.some((e=>null!==e.actions))))}get calculationOrderIds(){const e=this.catalog.acroForm;if(null==e||!e.has("CO"))return(0,n.shadow)(this,"calculationOrderIds",null);const t=e.get("CO");if(!Array.isArray(t)||0===t.length)return(0,n.shadow)(this,"calculationOrderIds",null);const r=[];for(const e of t)e instanceof c.Ref&&r.push(e.toString());return 0===r.length?(0,n.shadow)(this,"calculationOrderIds",null):(0,n.shadow)(this,"calculationOrderIds",r)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PopupAnnotation=t.MarkupAnnotation=t.AnnotationFactory=t.AnnotationBorderStyle=t.Annotation=void 0,t.getQuadPoints=v,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(157),r(159);var n=r(144),a=r(149),i=r(161),s=r(150),o=r(154),c=r(216),l=r(151),h=r(210),u=r(220),d=r(162),f=r(223),g=r(176),p=r(226),m=r(214),b=r(227);function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Uint8ClampedArray(3);if(!Array.isArray(e))return t;const r=t||new Uint8ClampedArray(3);switch(e.length){case 0:return null;case 1:return d.ColorSpace.singletons.gray.getRgbItem(e,0,r,0),r;case 3:return d.ColorSpace.singletons.rgb.getRgbItem(e,0,r,0),r;case 4:return d.ColorSpace.singletons.cmyk.getRgbItem(e,0,r,0),r;default:return t}}function w(e){return Array.from(e,(e=>e/255))}function v(e,t){const r=e.getArray("QuadPoints");if(!Array.isArray(r)||0===r.length||r.length%8>0)return null;const n=[];for(let e=0,a=r.length/8;et[2]||st[3]))return null;n.push([{x:a,y:o},{x:i,y:o},{x:a,y:s},{x:i,y:s}])}return n}function x(e,t,r){const[a,i,s,o]=n.Util.getAxialAlignedBoundingBox(t,r);if(a===s||i===o)return[1,0,0,1,e[0],e[1]];const c=(e[2]-e[0])/(s-a),l=(e[3]-e[1])/(o-i);return[c,0,0,l,e[0]-a*c,e[1]-i*l]}t.AnnotationFactory=class{static create(e,t,r,n,a){return Promise.all([r.ensureCatalog("acroForm"),r.ensureCatalog("baseUrl"),r.ensureCatalog("attachments"),r.ensureDoc("xfaDatasets"),a?this._getPageIndex(e,t,r):-1]).then((i=>{let[s,o,c,l,h]=i;return r.ensure(this,"_create",[e,t,r,n,s,c,l,a,h])}))}static _create(e,t,r,i,o){let c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,l=arguments.length>6?arguments[6]:void 0,h=arguments.length>7?arguments[7]:void 0,u=arguments.length>8&&void 0!==arguments[8]?arguments[8]:-1;const d=e.fetchIfRef(t);if(!(d instanceof s.Dict))return;const f=t instanceof s.Ref?t.toString():"annot_".concat(i.createObjId());let g=d.get("Subtype");g=g instanceof s.Name?g.name:null;const p=o instanceof s.Dict?o:s.Dict.empty,m={xref:e,ref:t,dict:d,subtype:g,id:f,pdfManager:r,acroForm:p,attachments:c,xfaDatasets:l,collectFields:h,needAppearances:!h&&!0===p.get("NeedAppearances"),pageIndex:u,evaluatorOptions:r.evaluatorOptions};switch(g){case"Link":return new E(m);case"Text":return new M(m);case"Widget":let e=(0,a.getInheritableProperty)({dict:d,key:"FT"});switch(e=e instanceof s.Name?e.name:null,e){case"Tx":return new O(m);case"Btn":return new F(m);case"Ch":return new I(m);case"Sig":return new T(m)}return(0,n.warn)('Unimplemented widget field type "'.concat(e,'", falling back to base field type.')),new C(m);case"Popup":return new P(m);case"FreeText":return new R(m);case"Line":return new N(m);case"Square":return new D(m);case"Circle":return new B(m);case"PolyLine":return new L(m);case"Polygon":return new _(m);case"Caret":return new j(m);case"Ink":return new U(m);case"Highlight":return new $(m);case"Underline":return new X(m);case"Squiggly":return new H(m);case"StrikeOut":return new q(m);case"Stamp":return new z(m);case"FileAttachment":return new G(m);default:return h||(g?(0,n.warn)('Unimplemented annotation type "'.concat(g,'", falling back to base annotation.')):(0,n.warn)("Annotation is missing the required /Subtype.")),new S(m)}}static async _getPageIndex(e,t,r){try{const n=await e.fetchIfRefAsync(t);if(!(n instanceof s.Dict))return-1;const a=n.getRaw("P");return a instanceof s.Ref?await r.ensureCatalog("getPageIndex",[a]):-1}catch(e){return(0,n.warn)('_getPageIndex: "'.concat(e,'".')),-1}}static generateImages(e,t,r){if(!r)return(0,n.warn)("generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images."),null;let a;for(const{bitmapId:r,bitmap:n}of e)n&&(a||(a=new Map),a.set(r,z.createImage(n,t)));return a}static async saveNewAnnotations(e,t,r,a){const i=e.xref;let o;const l=[],h=[],{isOffscreenCanvasSupported:u}=e.options;for(const d of r)if(!d.deleted)switch(d.annotationType){case n.AnnotationEditorType.FREETEXT:if(!o){const e=new s.Dict(i);e.set("BaseFont",s.Name.get("Helvetica")),e.set("Type",s.Name.get("Font")),e.set("Subtype",s.Name.get("Type1")),e.set("Encoding",s.Name.get("WinAnsiEncoding"));const t=[];o=i.getNewTemporaryRef(),await(0,c.writeObject)(o,e,t,null),l.push({ref:o,data:t.join("")})}h.push(R.createNewAnnotation(i,d,l,{evaluator:e,task:t,baseFontRef:o}));break;case n.AnnotationEditorType.INK:h.push(U.createNewAnnotation(i,d,l));break;case n.AnnotationEditorType.STAMP:if(!u)break;const r=await a.get(d.bitmapId);if(r.imageStream){const{imageStream:e,smaskStream:t}=r,n=[];if(t){const r=i.getNewTemporaryRef();await(0,c.writeObject)(r,t,n,null),l.push({ref:r,data:n.join("")}),e.dict.set("SMask",r),n.length=0}const a=r.imageRef=i.getNewTemporaryRef();await(0,c.writeObject)(a,e,n,null),l.push({ref:a,data:n.join("")}),r.imageStream=r.smaskStream=null}h.push(z.createNewAnnotation(i,d,l,{image:r}))}return{annotations:await Promise.all(h),dependencies:l}}static async printNewAnnotations(e,t,r,a){if(!r)return null;const{options:i,xref:s}=e,o=[];for(const c of r)if(!c.deleted)switch(c.annotationType){case n.AnnotationEditorType.FREETEXT:o.push(R.createNewPrintAnnotation(s,c,{evaluator:e,task:t,evaluatorOptions:i}));break;case n.AnnotationEditorType.INK:o.push(U.createNewPrintAnnotation(s,c,{evaluatorOptions:i}));break;case n.AnnotationEditorType.STAMP:if(!i.isOffscreenCanvasSupported)break;const r=await a.get(c.bitmapId);if(r.imageStream){const{imageStream:e,smaskStream:t}=r;t&&e.dict.set("SMask",t),r.imageRef=new g.JpegStream(e,e.length),r.imageStream=r.smaskStream=null}o.push(z.createNewPrintAnnotation(s,c,{image:r,evaluatorOptions:i}))}return Promise.all(o)}};class S{constructor(e){const{dict:t,xref:r}=e;this.setTitle(t.get("T")),this.setContents(t.get("Contents")),this.setModificationDate(t.get("M")),this.setFlags(t.get("F")),this.setRectangle(t.getArray("Rect")),this.setColor(t.getArray("C")),this.setBorderStyle(t),this.setAppearance(t),this.setOptionalContent(t);const i=t.get("MK");this.setBorderAndBackgroundColors(i),this.setRotation(i,t),this.ref=e.ref instanceof s.Ref?e.ref:null,this._streams=[],this.appearance&&this._streams.push(this.appearance);const o=!!(this.flags&n.AnnotationFlag.LOCKED),c=!!(this.flags&n.AnnotationFlag.LOCKEDCONTENTS);if(this.data={annotationFlags:this.flags,borderStyle:this.borderStyle,color:this.color,backgroundColor:this.backgroundColor,borderColor:this.borderColor,rotation:this.rotation,contentsObj:this._contents,hasAppearance:!!this.appearance,id:e.id,modificationDate:this.modificationDate,rect:this.rectangle,subtype:e.subtype,hasOwnCanvas:!1,noRotate:!!(this.flags&n.AnnotationFlag.NOROTATE),noHTML:o&&c},e.collectFields){const i=t.get("Kids");if(Array.isArray(i)){const e=[];for(const t of i)t instanceof s.Ref&&e.push(t.toString());0!==e.length&&(this.data.kidIds=e)}this.data.actions=(0,a.collectActions)(r,t,n.AnnotationActionEventType),this.data.fieldName=this._constructFieldName(t),this.data.pageIndex=e.pageIndex}this._isOffscreenCanvasSupported=e.evaluatorOptions.isOffscreenCanvasSupported,this._fallbackFontDict=null,this._needAppearances=!1}_hasFlag(e,t){return!!(e&t)}_isViewable(e){return!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)&&!this._hasFlag(e,n.AnnotationFlag.NOVIEW)}_isPrintable(e){return this._hasFlag(e,n.AnnotationFlag.PRINT)&&!this._hasFlag(e,n.AnnotationFlag.INVISIBLE)}mustBeViewed(e){var t;const r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.hidden;return void 0!==r?!r:this.viewable&&!this._hasFlag(this.flags,n.AnnotationFlag.HIDDEN)}mustBePrinted(e){var t;const r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.print;return void 0!==r?r:this.printable}get viewable(){return null!==this.data.quadPoints&&(0===this.flags||this._isViewable(this.flags))}get printable(){return null!==this.data.quadPoints&&0!==this.flags&&this._isPrintable(this.flags)}_parseStringHelper(e){const t="string"==typeof e?(0,n.stringToPDFString)(e):"";return{str:t,dir:t&&"rtl"===(0,h.bidi)(t).dir?"rtl":"ltr"}}setDefaultAppearance(e){const t=(0,a.getInheritableProperty)({dict:e.dict,key:"DA"})||e.acroForm.get("DA");this._defaultAppearance="string"==typeof t?t:"",this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance)}setTitle(e){this._title=this._parseStringHelper(e)}setContents(e){this._contents=this._parseStringHelper(e)}setModificationDate(e){this.modificationDate="string"==typeof e?e:null}setFlags(e){this.flags=Number.isInteger(e)&&e>0?e:0}hasFlag(e){return this._hasFlag(this.flags,e)}setRectangle(e){this.rectangle=Array.isArray(e)&&4===e.length?n.Util.normalizeRect(e):[0,0,0,0]}setColor(e){this.color=y(e)}setLineEndings(e){if(this.lineEndings=["None","None"],Array.isArray(e)&&2===e.length)for(let t=0;t<2;t++){const r=e[t];if(r instanceof s.Name)switch(r.name){case"None":continue;case"Square":case"Circle":case"Diamond":case"OpenArrow":case"ClosedArrow":case"Butt":case"ROpenArrow":case"RClosedArrow":case"Slash":this.lineEndings[t]=r.name;continue}(0,n.warn)("Ignoring invalid lineEnding: ".concat(r))}}setRotation(e,t){this.rotation=0;let r=e instanceof s.Dict?e.get("R")||0:t.get("Rotate")||0;Number.isInteger(r)&&0!==r&&(r%=360,r<0&&(r+=360),r%90==0&&(this.rotation=r))}setBorderAndBackgroundColors(e){e instanceof s.Dict?(this.borderColor=y(e.getArray("BC"),null),this.backgroundColor=y(e.getArray("BG"),null)):this.borderColor=this.backgroundColor=null}setBorderStyle(e){if(this.borderStyle=new A,e instanceof s.Dict)if(e.has("BS")){const t=e.get("BS"),r=t.get("Type");r&&!(0,s.isName)(r,"Border")||(this.borderStyle.setWidth(t.get("W"),this.rectangle),this.borderStyle.setStyle(t.get("S")),this.borderStyle.setDashArray(t.getArray("D")))}else if(e.has("Border")){const t=e.getArray("Border");Array.isArray(t)&&t.length>=3&&(this.borderStyle.setHorizontalCornerRadius(t[0]),this.borderStyle.setVerticalCornerRadius(t[1]),this.borderStyle.setWidth(t[2],this.rectangle),4===t.length&&this.borderStyle.setDashArray(t[3],!0))}else this.borderStyle.setWidth(0)}setAppearance(e){this.appearance=null;const t=e.get("AP");if(!(t instanceof s.Dict))return;const r=t.get("N");if(r instanceof l.BaseStream)return void(this.appearance=r);if(!(r instanceof s.Dict))return;const n=e.get("AS");if(!(n instanceof s.Name&&r.has(n.name)))return;const a=r.get(n.name);a instanceof l.BaseStream&&(this.appearance=a)}setOptionalContent(e){this.oc=null;const t=e.get("OC");t instanceof s.Name?(0,n.warn)("setOptionalContent: Support for /Name-entry is not implemented."):t instanceof s.Dict&&(this.oc=t)}loadResources(e,t){return t.dict.getAsync("Resources").then((t=>{if(t)return new p.ObjectLoader(t,e,t.xref).load().then((function(){return t}))}))}async getOperatorList(e,t,r,a,i){const c=this.data;let l=this.appearance;const h=!!(this.data.hasOwnCanvas&&r&n.RenderingIntentFlag.DISPLAY);if(!l){if(!h)return{opList:new m.OperatorList,separateForm:!1,separateCanvas:!1};l=new o.StringStream(""),l.dict=new s.Dict}const u=l.dict,d=await this.loadResources(["ExtGState","ColorSpace","Pattern","Shading","XObject","Font"],l),f=u.getArray("BBox")||[0,0,1,1],g=u.getArray("Matrix")||[1,0,0,1,0,0],p=x(c.rect,f,g),b=new m.OperatorList;let y;return this.oc&&(y=await e.parseMarkedContentProps(this.oc,null)),void 0!==y&&b.addOp(n.OPS.beginMarkedContentProps,["OC",y]),b.addOp(n.OPS.beginAnnotation,[c.id,c.rect,p,g,h]),await e.getOperatorList({stream:l,task:t,resources:d,operatorList:b,fallbackFontDict:this._fallbackFontDict}),b.addOp(n.OPS.endAnnotation,[]),void 0!==y&&b.addOp(n.OPS.endMarkedContent,[]),this.reset(),{opList:b,separateForm:!1,separateCanvas:h}}async save(e,t,r){return null}get hasTextContent(){return!1}async extractTextContent(e,t,r){if(!this.appearance)return;const a=await this.loadResources(["ExtGState","Font","Properties","XObject"],this.appearance),i=[],s=[];let o=null;const c={desiredSize:Math.Infinity,ready:!0,enqueue(e,t){for(const t of e.items)void 0!==t.str&&(o||(o=t.transform.slice(-2)),s.push(t.str),t.hasEOL&&(i.push(s.join("")),s.length=0))}};if(await e.getTextContent({stream:this.appearance,task:t,resources:a,includeMarkedContent:!0,sink:c,viewBox:r}),this.reset(),s.length&&i.push(s.join("")),i.length>1||i[0]){const e=this.appearance.dict,t=e.getArray("BBox")||[0,0,1,1],r=e.getArray("Matrix")||[1,0,0,1,0,0],a=this.data.rect,s=x(a,t,r);s[4]-=a[0],s[5]-=a[1],o=n.Util.applyTransform(o,s),o=n.Util.applyTransform(o,r),this.data.textPosition=o,this.data.textContent=i}}getFieldObject(){return this.data.kidIds?{id:this.data.id,actions:this.data.actions,name:this.data.fieldName,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,type:"",kidIds:this.data.kidIds,page:this.data.pageIndex,rotation:this.rotation}:null}reset(){for(const e of this._streams)e.reset()}_constructFieldName(e){if(!e.has("T")&&!e.has("Parent"))return(0,n.warn)("Unknown field name, falling back to empty field name."),"";if(!e.has("Parent"))return(0,n.stringToPDFString)(e.get("T"));const t=[];e.has("T")&&t.unshift((0,n.stringToPDFString)(e.get("T")));let r=e;const a=new s.RefSet;for(e.objId&&a.put(e.objId);r.has("Parent")&&(r=r.get("Parent"),r instanceof s.Dict&&(!r.objId||!a.has(r.objId)));)if(r.objId&&a.put(r.objId),r.has("T")){const e=(0,n.stringToPDFString)(r.get("T"));e.startsWith("#")||t.unshift(e)}return t.join(".")}}t.Annotation=S;class A{constructor(){this.width=1,this.style=n.AnnotationBorderStyleType.SOLID,this.dashArray=[3],this.horizontalCornerRadius=0,this.verticalCornerRadius=0}setWidth(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0,0];if(e instanceof s.Name)this.width=0;else if("number"==typeof e){if(e>0){const r=(t[2]-t[0])/2,a=(t[3]-t[1])/2;r>0&&a>0&&(e>r||e>a)&&((0,n.warn)("AnnotationBorderStyle.setWidth - ignoring width: ".concat(e)),e=1)}this.width=e}}setStyle(e){if(e instanceof s.Name)switch(e.name){case"S":this.style=n.AnnotationBorderStyleType.SOLID;break;case"D":this.style=n.AnnotationBorderStyleType.DASHED;break;case"B":this.style=n.AnnotationBorderStyleType.BEVELED;break;case"I":this.style=n.AnnotationBorderStyleType.INSET;break;case"U":this.style=n.AnnotationBorderStyleType.UNDERLINE}}setDashArray(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)&&e.length>0){let r=!0,n=!0;for(const t of e){if(!(+t>=0)){r=!1;break}t>0&&(n=!1)}r&&!n?(this.dashArray=e,t&&this.setStyle(s.Name.get("D"))):this.width=0}else e&&(this.width=0)}setHorizontalCornerRadius(e){Number.isInteger(e)&&(this.horizontalCornerRadius=e)}setVerticalCornerRadius(e){Number.isInteger(e)&&(this.verticalCornerRadius=e)}}t.AnnotationBorderStyle=A;class k extends S{constructor(e){super(e);const{dict:t}=e;if(t.has("IRT")){const e=t.getRaw("IRT");this.data.inReplyTo=e instanceof s.Ref?e.toString():null;const r=t.get("RT");this.data.replyType=r instanceof s.Name?r.name:n.AnnotationReplyType.REPLY}let r=null;if(this.data.replyType===n.AnnotationReplyType.GROUP){const e=t.get("IRT");this.setTitle(e.get("T")),this.data.titleObj=this._title,this.setContents(e.get("Contents")),this.data.contentsObj=this._contents,e.has("CreationDate")?(this.setCreationDate(e.get("CreationDate")),this.data.creationDate=this.creationDate):this.data.creationDate=null,e.has("M")?(this.setModificationDate(e.get("M")),this.data.modificationDate=this.modificationDate):this.data.modificationDate=null,r=e.getRaw("Popup"),e.has("C")?(this.setColor(e.getArray("C")),this.data.color=this.color):this.data.color=null}else this.data.titleObj=this._title,this.setCreationDate(t.get("CreationDate")),this.data.creationDate=this.creationDate,r=t.getRaw("Popup"),t.has("C")||(this.data.color=null);this.data.popupRef=r instanceof s.Ref?r.toString():null,t.has("RC")&&(this.data.richText=b.XFAFactory.getRichTextAsHtml(t.get("RC")))}setCreationDate(e){this.creationDate="string"==typeof e?e:null}_setDefaultAppearance(e){let{xref:t,extra:r,strokeColor:n,fillColor:a,blendMode:i,strokeAlpha:c,fillAlpha:l,pointsCallback:h}=e,u=Number.MAX_VALUE,d=Number.MAX_VALUE,f=Number.MIN_VALUE,g=Number.MIN_VALUE;const p=["q"];r&&p.push(r),n&&p.push("".concat(n[0]," ").concat(n[1]," ").concat(n[2]," RG")),a&&p.push("".concat(a[0]," ").concat(a[1]," ").concat(a[2]," rg"));let m=this.data.quadPoints;m||(m=[[{x:this.rectangle[0],y:this.rectangle[3]},{x:this.rectangle[2],y:this.rectangle[3]},{x:this.rectangle[0],y:this.rectangle[1]},{x:this.rectangle[2],y:this.rectangle[1]}]]);for(const e of m){const[t,r,n,a]=h(p,e);u=Math.min(u,t),f=Math.max(f,r),d=Math.min(d,n),g=Math.max(g,a)}p.push("Q");const b=new s.Dict(t),y=new s.Dict(t);y.set("Subtype",s.Name.get("Form"));const w=new o.StringStream(p.join(" "));w.dict=y,b.set("Fm0",w);const v=new s.Dict(t);i&&v.set("BM",s.Name.get(i)),"number"==typeof c&&v.set("CA",c),"number"==typeof l&&v.set("ca",l);const x=new s.Dict(t);x.set("GS0",v);const S=new s.Dict(t);S.set("ExtGState",x),S.set("XObject",b);const A=new s.Dict(t);A.set("Resources",S);const k=this.data.rect=[u,d,f,g];A.set("BBox",k),this.appearance=new o.StringStream("/GS0 gs /Fm0 Do"),this.appearance.dict=A,this._streams.push(this.appearance,w)}static async createNewAnnotation(e,t,r,n){const a=t.ref||e.getNewTemporaryRef(),i=await this.createNewAppearanceStream(t,e,n),s=[];let o;if(i){const n=e.getNewTemporaryRef();o=this.createNewDict(t,e,{apRef:n});const a=e.encrypt?e.encrypt.createCipherTransform(n.num,n.gen):null;await(0,c.writeObject)(n,i,s,a),r.push({ref:n,data:s.join("")})}else o=this.createNewDict(t,e,{});s.length=0;const l=e.encrypt?e.encrypt.createCipherTransform(a.num,a.gen):null;return await(0,c.writeObject)(a,o,s,l),{ref:a,data:s.join("")}}static async createNewPrintAnnotation(e,t,r){const n=await this.createNewAppearanceStream(t,e,r),a=this.createNewDict(t,e,{ap:n}),i=new this.prototype.constructor({dict:a,xref:e,evaluatorOptions:r.evaluatorOptions});return t.ref&&(i.ref=i.refToReplace=t.ref),i}}t.MarkupAnnotation=k;class C extends S{constructor(e){var t;super(e);const{dict:r,xref:i}=e,o=this.data;this._needAppearances=e.needAppearances,o.annotationType=n.AnnotationType.WIDGET,void 0===o.fieldName&&(o.fieldName=this._constructFieldName(r)),o.fieldName&&/\\[\\d+\\]$/.test(o.fieldName)&&!r.has("Kids")&&(o.baseFieldName=o.fieldName.substring(0,o.fieldName.lastIndexOf("["))),void 0===o.actions&&(o.actions=(0,a.collectActions)(i,r,n.AnnotationActionEventType));let c=(0,a.getInheritableProperty)({dict:r,key:"V",getArray:!0});o.fieldValue=this._decodeFormValue(c);const l=(0,a.getInheritableProperty)({dict:r,key:"DV",getArray:!0});if(o.defaultFieldValue=this._decodeFormValue(l),void 0===c&&e.xfaDatasets){const t=this._title.str;t&&(this._hasValueFromXFA=!0,o.fieldValue=c=e.xfaDatasets.getValue(t))}void 0===c&&null!==o.defaultFieldValue&&(o.fieldValue=o.defaultFieldValue),o.alternativeText=(0,n.stringToPDFString)(r.get("TU")||""),this.setDefaultAppearance(e),o.hasAppearance||(o.hasAppearance=this._needAppearances&&void 0!==o.fieldValue&&null!==o.fieldValue);const h=(0,a.getInheritableProperty)({dict:r,key:"FT"});o.fieldType=h instanceof s.Name?h.name:null;const u=(0,a.getInheritableProperty)({dict:r,key:"DR"}),d=e.acroForm.get("DR"),f=null===(t=this.appearance)||void 0===t?void 0:t.dict.get("Resources");this._fieldResources={localResources:u,acroFormResources:d,appearanceResources:f,mergedResources:s.Dict.merge({xref:i,dictArray:[u,f,d],mergeSubDicts:!0})},o.fieldFlags=(0,a.getInheritableProperty)({dict:r,key:"Ff"}),(!Number.isInteger(o.fieldFlags)||o.fieldFlags<0)&&(o.fieldFlags=0),o.readOnly=this.hasFieldFlag(n.AnnotationFieldFlag.READONLY),o.required=this.hasFieldFlag(n.AnnotationFieldFlag.REQUIRED),o.hidden=this._hasFlag(o.annotationFlags,n.AnnotationFlag.HIDDEN)}_decodeFormValue(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).map((e=>(0,n.stringToPDFString)(e))):e instanceof s.Name?(0,n.stringToPDFString)(e.name):"string"==typeof e?(0,n.stringToPDFString)(e):null}hasFieldFlag(e){return!!(this.data.fieldFlags&e)}getRotationMatrix(e){var t;let r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.rotation;if(void 0===r&&(r=this.rotation),0===r)return n.IDENTITY_MATRIX;const i=this.data.rect[2]-this.data.rect[0],s=this.data.rect[3]-this.data.rect[1];return(0,a.getRotationMatrix)(r,i,s)}getBorderAndBackgroundAppearances(e){var t;let r=null==e||null===(t=e.get(this.data.id))||void 0===t?void 0:t.rotation;if(void 0===r&&(r=this.rotation),!this.backgroundColor&&!this.borderColor)return"";const n=this.data.rect[2]-this.data.rect[0],a=this.data.rect[3]-this.data.rect[1],s=0===r||180===r?"0 0 ".concat(n," ").concat(a," re"):"0 0 ".concat(a," ").concat(n," re");let o="";return this.backgroundColor&&(o="".concat((0,i.getPdfColor)(this.backgroundColor,!0)," ").concat(s," f ")),this.borderColor&&(o+="".concat(this.borderStyle.width||1," w ").concat((0,i.getPdfColor)(this.borderColor,!1)," ").concat(s," S ")),o}async getOperatorList(e,t,r,a,i){if(a&&!(this instanceof T)&&!this.data.noHTML&&!this.data.hasOwnCanvas)return{opList:new m.OperatorList,separateForm:!0,separateCanvas:!1};if(!this._hasText)return super.getOperatorList(e,t,r,a,i);const s=await this._getAppearance(e,t,r,i);if(this.appearance&&null===s)return super.getOperatorList(e,t,r,a,i);const c=new m.OperatorList;if(!this._defaultAppearance||null===s)return{opList:c,separateForm:!1,separateCanvas:!1};const l=!!(this.data.hasOwnCanvas&&r&n.RenderingIntentFlag.DISPLAY),h=[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]],u=x(this.data.rect,h,[1,0,0,1,0,0]);let d;this.oc&&(d=await e.parseMarkedContentProps(this.oc,null)),void 0!==d&&c.addOp(n.OPS.beginMarkedContentProps,["OC",d]),c.addOp(n.OPS.beginAnnotation,[this.data.id,this.data.rect,u,this.getRotationMatrix(i),l]);const f=new o.StringStream(s);return await e.getOperatorList({stream:f,task:t,resources:this._fieldResources.mergedResources,operatorList:c}),c.addOp(n.OPS.endAnnotation,[]),void 0!==d&&c.addOp(n.OPS.endMarkedContent,[]),{opList:c,separateForm:!1,separateCanvas:l}}_getMKDict(e){const t=new s.Dict(null);return e&&t.set("R",e),this.borderColor&&t.set("BC",w(this.borderColor)),this.backgroundColor&&t.set("BG",w(this.backgroundColor)),t.size>0?t:null}amendSavedDict(e,t){}async save(e,t,r){var i;const l=null==r?void 0:r.get(this.data.id);let h=null==l?void 0:l.value,u=null==l?void 0:l.rotation;if(h===this.data.fieldValue||void 0===h){if(!this._hasValueFromXFA&&void 0===u)return null;h||(h=this.data.fieldValue)}if(void 0===u&&!this._hasValueFromXFA&&Array.isArray(h)&&Array.isArray(this.data.fieldValue)&&h.length===this.data.fieldValue.length&&h.every(((e,t)=>e===this.data.fieldValue[t])))return null;void 0===u&&(u=this.rotation);let d=null;if(!this._needAppearances&&(d=await this._getAppearance(e,t,n.RenderingIntentFlag.SAVE,r),null===d))return null;let f=!1;null!==(i=d)&&void 0!==i&&i.needAppearances&&(f=!0,d=null);const{xref:g}=e,p=g.fetchIfRef(this.ref);if(!(p instanceof s.Dict))return null;const m=new s.Dict(g);for(const e of p.getKeys())"AP"!==e&&m.set(e,p.getRaw(e));const b={path:this.data.fieldName,value:h},y=e=>(0,a.isAscii)(e)?e:(0,a.stringToUTF16String)(e,!0);m.set("V",Array.isArray(h)?h.map(y):y(h)),this.amendSavedDict(r,m);const w=this._getMKDict(u);w&&m.set("MK",w);const v=g.encrypt,x=v?v.createCipherTransform(this.ref.num,this.ref.gen):null,S=[],A=[{ref:this.ref,data:"",xfa:b,needAppearances:f}];if(null!==d){const e=g.getNewTemporaryRef(),t=new s.Dict(g);m.set("AP",t),t.set("N",e);let a=null;v&&(a=v.createCipherTransform(e.num,e.gen));const i=this._getSaveFieldResources(g),l=new o.StringStream(d),h=l.dict=new s.Dict(g);h.set("Subtype",s.Name.get("Form")),h.set("Resources",i),h.set("BBox",[0,0,this.data.rect[2]-this.data.rect[0],this.data.rect[3]-this.data.rect[1]]);const u=this.getRotationMatrix(r);u!==n.IDENTITY_MATRIX&&h.set("Matrix",u),await(0,c.writeObject)(e,l,S,a),A.push({ref:e,data:S.join(""),xfa:null,needAppearances:!1}),S.length=0}return m.set("M","D:".concat((0,n.getModificationDate)())),await(0,c.writeObject)(this.ref,m,S,x),A[0].data=S.join(""),A}async _getAppearance(e,t,r,s){if(this.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD))return null;const o=null==s?void 0:s.get(this.data.id);let c,l;if(o&&(c=o.formattedValue||o.value,l=o.rotation),void 0===l&&void 0===c&&!this._needAppearances&&(!this._hasValueFromXFA||this.appearance))return null;const h=this.getBorderAndBackgroundAppearances(s);if(void 0===c&&(c=this.data.fieldValue,!c))return"/Tx BMC q ".concat(h,"Q EMC");if(Array.isArray(c)&&1===c.length&&(c=c[0]),(0,n.assert)("string"==typeof c,"Expected \`value\` to be a string."),c=c.trim(),this.data.combo){const e=this.data.options.find((e=>{let{exportValue:t}=e;return c===t}));c=(null==e?void 0:e.displayValue)||c}if(""===c)return"/Tx BMC q ".concat(h,"Q EMC");void 0===l&&(l=this.rotation);let u,d=-1;this.data.multiLine?(u=c.split(/\\r\\n?|\\n/).map((e=>e.normalize("NFC"))),d=u.length):u=[c.replace(/\\r\\n?|\\n/,"").normalize("NFC")];let f=this.data.rect[3]-this.data.rect[1],g=this.data.rect[2]-this.data.rect[0];90!==l&&270!==l||([g,f]=[f,g]),this._defaultAppearance||(this.data.defaultAppearanceData=(0,i.parseDefaultAppearance)(this._defaultAppearance="/Helvetica 0 Tf 0 g"));let p,m,b,y=await C._getFontData(e,t,this.data.defaultAppearanceData,this._fieldResources.mergedResources);const w=[];let v=!1;for(const e of u){const t=y.encodeString(e);t.length>1&&(v=!0),w.push(t.join(""))}if(v&&r&n.RenderingIntentFlag.SAVE)return{needAppearances:!0};if(v&&this._isOffscreenCanvasSupported){const r=this.data.comb?"monospace":"sans-serif",n=new i.FakeUnicodeFont(e.xref,r),s=n.createFontResources(u.join("")),o=s.getRaw("Font");if(this._fieldResources.mergedResources.has("Font")){const e=this._fieldResources.mergedResources.get("Font");for(const t of o.getKeys())e.set(t,o.getRaw(t))}else this._fieldResources.mergedResources.set("Font",o);const l=n.fontName.name;y=await C._getFontData(e,t,{fontName:l,fontSize:0},s);for(let e=0,t=w.length;e2?"/Tx BMC q ".concat(h,"BT ")+p+" 1 0 0 1 ".concat((0,a.numberToString)(2)," ").concat((0,a.numberToString)(k)," Tm (").concat((0,a.escapeString)(w[0]),") Tj ET Q EMC"):"/Tx BMC q ".concat(h,"BT ")+p+" 1 0 0 1 0 0 Tm ".concat(this._renderText(w[0],y,m,g,A,{shift:0},2,k)," ET Q EMC")}static async _getFontData(e,t,r,n){const a=new m.OperatorList,i={font:null,clone(){return this}},{fontName:o,fontSize:c}=r;return await e.handleSetFont(n,[o&&s.Name.get(o),c],null,a,t,i,null),i.font}_getTextWidth(e,t){return t.charsToGlyphs(e).reduce(((e,t)=>e+t.width),0)/1e3}_computeFontSize(e,t,r,a,s){let{fontSize:o}=this.data.defaultAppearanceData,c=(o||12)*n.LINE_FACTOR,l=Math.round(e/c);if(!o){const h=e=>Math.floor(100*e)/100;if(-1===s){const i=this._getTextWidth(r,a);o=h(Math.min(e/n.LINE_FACTOR,i>t?t/i:1/0)),l=1}else{const i=r.split(/\\r\\n?|\\n/),u=[];for(const e of i){const t=a.encodeString(e).join(""),r=a.charsToGlyphs(t),n=a.getCharPositions(t);u.push({line:t,glyphs:r,positions:n})}const d=r=>{let n=0;for(const i of u)if(n+=this._splitLine(null,a,r,t,i).length*r,n>e)return!0;return!1};for(l=Math.max(l,s);c=e/l,o=h(c/n.LINE_FACTOR),d(o);)l++}const{fontName:u,fontColor:d}=this.data.defaultAppearanceData;this._defaultAppearance=(0,i.createDefaultAppearance)({fontSize:o,fontName:u,fontColor:d})}return[this._defaultAppearance,o,e/l]}_renderText(e,t,r,n,i,s,o,c){let l;l=1===i?(n-this._getTextWidth(e,t)*r)/2:2===i?n-this._getTextWidth(e,t)*r-o:o;const h=(0,a.numberToString)(l-s.shift);return s.shift=l,"".concat(h," ").concat(c=(0,a.numberToString)(c)," Td (").concat((0,a.escapeString)(e),") Tj")}_getSaveFieldResources(e){var t;const{localResources:r,appearanceResources:n,acroFormResources:a}=this._fieldResources,i=null===(t=this.data.defaultAppearanceData)||void 0===t?void 0:t.fontName;if(!i)return r||s.Dict.empty;for(const e of[r,n])if(e instanceof s.Dict){const t=e.get("Font");if(t instanceof s.Dict&&t.has(i))return e}if(a instanceof s.Dict){const t=a.get("Font");if(t instanceof s.Dict&&t.has(i)){const n=new s.Dict(e);n.set(i,t.getRaw(i));const a=new s.Dict(e);return a.set("Font",n),s.Dict.merge({xref:e,dictArray:[a,r],mergeSubDicts:!0})}}return r||s.Dict.empty}getFieldObject(){return null}}class O extends C{constructor(e){super(e),this.data.hasOwnCanvas=this.data.readOnly&&!this.data.noHTML,this._hasText=!0;const t=e.dict;"string"!=typeof this.data.fieldValue&&(this.data.fieldValue="");let r=(0,a.getInheritableProperty)({dict:t,key:"Q"});(!Number.isInteger(r)||r<0||r>2)&&(r=null),this.data.textAlignment=r;let i=(0,a.getInheritableProperty)({dict:t,key:"MaxLen"});(!Number.isInteger(i)||i<0)&&(i=0),this.data.maxLen=i,this.data.multiLine=this.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE),this.data.comb=this.hasFieldFlag(n.AnnotationFieldFlag.COMB)&&!this.hasFieldFlag(n.AnnotationFieldFlag.MULTILINE)&&!this.hasFieldFlag(n.AnnotationFieldFlag.PASSWORD)&&!this.hasFieldFlag(n.AnnotationFieldFlag.FILESELECT)&&0!==this.data.maxLen,this.data.doNotScroll=this.hasFieldFlag(n.AnnotationFieldFlag.DONOTSCROLL)}get hasTextContent(){return!!this.appearance&&!this._needAppearances}_getCombAppearance(e,t,r,n,i,s,o,c,l,h,u){const d=i/this.data.maxLen,f=this.getBorderAndBackgroundAppearances(u),g=[],p=t.getCharPositions(r);for(const[e,t]of p)g.push("(".concat((0,a.escapeString)(r.substring(e,t)),") Tj"));const m=g.join(" ".concat((0,a.numberToString)(d)," 0 Td "));return"/Tx BMC q ".concat(f,"BT ")+e+" 1 0 0 1 ".concat((0,a.numberToString)(o)," ").concat((0,a.numberToString)(c+l)," Tm ").concat(m," ET Q EMC")}_getMultilineAppearance(e,t,r,n,i,s,o,c,l,h,u,d){const f=[],g=i-2*c,p={shift:0};for(let e=0,a=t.length;e4&&void 0!==arguments[4]?arguments[4]:{};e=a.line||e;const i=a.glyphs||t.charsToGlyphs(e);if(i.length<=1)return[e];const s=a.positions||t.getCharPositions(e),o=r/1e3,c=[];let l=-1,h=-1,u=-1,d=0,f=0;for(let t=0,r=i.length;tn?(c.push(e.substring(d,r)),d=r,f=p,l=-1,u=-1):(f+=p,l=r,h=a,u=t):f+p>n?-1!==l?(c.push(e.substring(d,h)),d=h,t=u+1,l=-1,f=0):(c.push(e.substring(d,r)),d=r,f=p):f+=p}return d"Off"!==e));i.length=0,i.push("Off",e)}i.includes(this.data.fieldValue)||(this.data.fieldValue="Off"),this.data.exportValue=i[1];const o=r.get(this.data.exportValue);this.checkedAppearance=o instanceof l.BaseStream?o:null;const c=r.get("Off");this.uncheckedAppearance=c instanceof l.BaseStream?c:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"check"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict}_processRadioButton(e){this.data.fieldValue=this.data.buttonValue=null;const t=e.dict.get("Parent");if(t instanceof s.Dict){this.parent=e.dict.getRaw("Parent");const r=t.get("V");r instanceof s.Name&&(this.data.fieldValue=this._decodeFormValue(r))}const r=e.dict.get("AP");if(!(r instanceof s.Dict))return;const n=r.get("N");if(!(n instanceof s.Dict))return;for(const e of n.getKeys())if("Off"!==e){this.data.buttonValue=this._decodeFormValue(e);break}const a=n.get(this.data.buttonValue);this.checkedAppearance=a instanceof l.BaseStream?a:null;const i=n.get("Off");this.uncheckedAppearance=i instanceof l.BaseStream?i:null,this.checkedAppearance?this._streams.push(this.checkedAppearance):this._getDefaultCheckedAppearance(e,"disc"),this.uncheckedAppearance&&this._streams.push(this.uncheckedAppearance),this._fallbackFontDict=this.fallbackFontDict}_processPushButton(e){e.dict.has("A")||e.dict.has("AA")||this.data.alternativeText?(this.data.isTooltipOnly=!e.dict.has("A")&&!e.dict.has("AA"),u.Catalog.parseDestDictionary({destDict:e.dict,resultObj:this.data,docBaseUrl:e.pdfManager.docBaseUrl,docAttachments:e.attachments})):(0,n.warn)("Push buttons without action dictionaries are not supported")}getFieldObject(){let e,t="button";return this.data.checkBox?(t="checkbox",e=this.data.exportValue):this.data.radioButton&&(t="radiobutton",e=this.data.buttonValue),{id:this.data.id,value:this.data.fieldValue||"Off",defaultValue:this.data.defaultFieldValue,exportValues:e,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,hidden:this.data.hidden,actions:this.data.actions,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:t}}get fallbackFontDict(){const e=new s.Dict;return e.set("BaseFont",s.Name.get("ZapfDingbats")),e.set("Type",s.Name.get("FallbackType")),e.set("Subtype",s.Name.get("FallbackType")),e.set("Encoding",s.Name.get("ZapfDingbatsEncoding")),(0,n.shadow)(this,"fallbackFontDict",e)}}class I extends C{constructor(e){super(e);const{dict:t,xref:r}=e;this.indices=t.getArray("I"),this.hasIndices=Array.isArray(this.indices)&&this.indices.length>0,this.data.options=[];const i=(0,a.getInheritableProperty)({dict:t,key:"Opt"});if(Array.isArray(i))for(let e=0,t=i.length;e=0&&t0?this.data.fieldValue[0]:null;return{id:this.data.id,value:t,defaultValue:this.data.defaultFieldValue,editable:!this.data.readOnly,name:this.data.fieldName,rect:this.data.rect,numItems:this.data.fieldValue.length,multipleSelection:this.data.multiSelect,hidden:this.data.hidden,actions:this.data.actions,items:this.data.options,page:this.data.pageIndex,strokeColor:this.data.borderColor,fillColor:this.data.backgroundColor,rotation:this.rotation,type:e}}amendSavedDict(e,t){var r;if(!this.hasIndices)return;let n=null==e||null===(r=e.get(this.data.id))||void 0===r?void 0:r.value;Array.isArray(n)||(n=[n]);const a=[],{options:i}=this.data;for(let e=0,t=0,r=i.length;er&&(r=n,t=e)}[g,p]=this._computeFontSize(e,h-4,t,f,-1)}const m=p*n.LINE_FACTOR,b=(m-p)/2,y=Math.floor(l/m);let w=0;if(d.length>0){const e=Math.min(...d),t=Math.max(...d);w=Math.max(0,t-y+1),w>e&&(w=e)}const v=Math.min(w+y+1,u),x=["/Tx BMC q","1 1 ".concat(h," ").concat(l," re W n")];if(d.length){x.push("0.600006 0.756866 0.854904 rg");for(const e of d)w<=e&&e1)return null;e=t.join(""),T.push(e);let r=0;const n=y.charsToGlyphs(e);for(const e of n)r+=e.width*F;I=Math.max(I,r)}let M=1;I>A&&(M=A/I);let E=1;const P=n.LINE_FACTOR*d,R=(n.LINE_FACTOR-n.LINE_DESCENT_FACTOR)*d,N=P*O.length;N>k&&(E=k/N);const D=d*Math.min(M,E);let B,L,_;switch(g){case 0:_=[1,0,0,1],L=[f[0],f[1],A,k],B=[f[0],f[3]-R];break;case 90:_=[0,1,-1,0],L=[f[1],-f[2],A,k],B=[f[1],-f[0]-R];break;case 180:_=[-1,0,0,-1],L=[-f[2],-f[3],A,k],B=[-f[2],-f[1]-R];break;case 270:_=[0,-1,1,0],L=[-f[3],f[0],A,k],B=[-f[3],f[2]-R]}const j=["q","".concat(_.join(" ")," 0 0 cm"),"".concat(L.join(" ")," re W n"),"BT","".concat((0,i.getPdfColor)(u,!0)),"0 Tc /Helv ".concat((0,a.numberToString)(D)," Tf")];j.push("".concat(B.join(" ")," Td (").concat((0,a.escapeString)(T[0]),") Tj"));const U=(0,a.numberToString)(P);for(let e=1,t=T.length;e(e.push("".concat(a[0]," ").concat(a[1]," m"),"".concat(a[2]," ").concat(a[3]," l"),"S"),[t[0].x-l,t[1].x+l,t[3].y-l,t[1].y+l])})}}}class D extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.SQUARE,this.data.hasOwnCanvas=this.data.noRotate,!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA"),a=y(t.getArray("IC"),null),i=a?w(a):null,s=i?n:null;if(0===this.borderStyle.width&&!i)return;this._setDefaultAppearance({xref:r,extra:"".concat(this.borderStyle.width," w"),strokeColor:e,fillColor:i,strokeAlpha:n,fillAlpha:s,pointsCallback:(e,t)=>{const r=t[2].x+this.borderStyle.width/2,n=t[2].y+this.borderStyle.width/2,a=t[3].x-t[2].x-this.borderStyle.width,s=t[1].y-t[3].y-this.borderStyle.width;return e.push("".concat(r," ").concat(n," ").concat(a," ").concat(s," re")),i?e.push("B"):e.push("S"),[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class B extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.CIRCLE,!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA"),a=y(t.getArray("IC"),null),i=a?w(a):null,s=i?n:null;if(0===this.borderStyle.width&&!i)return;const o=4/3*Math.tan(Math.PI/8);this._setDefaultAppearance({xref:r,extra:"".concat(this.borderStyle.width," w"),strokeColor:e,fillColor:i,strokeAlpha:n,fillAlpha:s,pointsCallback:(e,t)=>{const r=t[0].x+this.borderStyle.width/2,n=t[0].y-this.borderStyle.width/2,a=t[3].x-this.borderStyle.width/2,s=t[3].y+this.borderStyle.width/2,c=r+(a-r)/2,l=n+(s-n)/2,h=(a-r)/2*o,u=(s-n)/2*o;return e.push("".concat(c," ").concat(s," m"),"".concat(c+h," ").concat(s," ").concat(a," ").concat(l+u," ").concat(a," ").concat(l," c"),"".concat(a," ").concat(l-u," ").concat(c+h," ").concat(n," ").concat(c," ").concat(n," c"),"".concat(c-h," ").concat(n," ").concat(r," ").concat(l-u," ").concat(r," ").concat(l," c"),"".concat(r," ").concat(l+u," ").concat(c-h," ").concat(s," ").concat(c," ").concat(s," c"),"h"),i?e.push("B"):e.push("S"),[t[0].x,t[1].x,t[3].y,t[1].y]}})}}}class L extends k{constructor(e){super(e);const{dict:t,xref:r}=e;this.data.annotationType=n.AnnotationType.POLYLINE,this.data.hasOwnCanvas=this.data.noRotate,this.data.vertices=[],this instanceof _||(this.setLineEndings(t.getArray("LE")),this.data.lineEndings=this.lineEndings);const a=t.getArray("Vertices");if(Array.isArray(a)){for(let e=0,t=a.length;e{const r=this.data.vertices;for(let t=0,n=r.length;t{for(const t of this.data.inkLists){for(let r=0,n=t.length;re.points))),f.set("F",4),f.set("Rotate",u);const g=new s.Dict(t);f.set("BS",g),g.set("W",d),f.set("C",Array.from(o,(e=>e/255))),f.set("CA",c);const p=new s.Dict(t);return f.set("AP",p),a?p.set("N",a):p.set("N",i),f}static async createNewAppearanceStream(e,t,r){const{color:n,rect:c,paths:l,thickness:h,opacity:u}=e,d=["".concat(h," w 1 J 1 j"),"".concat((0,i.getPdfColor)(n,!1))];1!==u&&d.push("/R0 gs");const f=[];for(const{bezier:e}of l){f.length=0,f.push("".concat((0,a.numberToString)(e[0])," ").concat((0,a.numberToString)(e[1])," m"));for(let t=2,r=e.length;t(e.push("".concat(t[0].x," ").concat(t[0].y," m"),"".concat(t[1].x," ").concat(t[1].y," l"),"".concat(t[3].x," ").concat(t[3].y," l"),"".concat(t[2].x," ").concat(t[2].y," l"),"f"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class X extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.UNDERLINE,this.data.quadPoints=v(t,null)){if(!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA");this._setDefaultAppearance({xref:r,extra:"[] 0 d 0.571 w",strokeColor:e,strokeAlpha:n,pointsCallback:(e,t)=>(e.push("".concat(t[2].x," ").concat(t[2].y+1.3," m"),"".concat(t[3].x," ").concat(t[3].y+1.3," l"),"S"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class H extends k{constructor(e){super(e);const{dict:t,xref:r}=e;if(this.data.annotationType=n.AnnotationType.SQUIGGLY,this.data.quadPoints=v(t,null)){if(!this.appearance){const e=this.color?w(this.color):[0,0,0],n=t.get("CA");this._setDefaultAppearance({xref:r,extra:"[] 0 d 1 w",strokeColor:e,strokeAlpha:n,pointsCallback:(e,t)=>{const r=(t[0].y-t[2].y)/6;let n=r,a=t[2].x;const i=t[2].y,s=t[3].x;e.push("".concat(a," ").concat(i+n," m"));do{a+=2,n=0===n?r:0,e.push("".concat(a," ").concat(i+n," l"))}while(a(e.push((t[0].x+t[2].x)/2+" "+(t[0].y+t[2].y)/2+" m",(t[1].x+t[3].x)/2+" "+(t[1].y+t[3].y)/2+" l","S"),[t[0].x,t[1].x,t[3].y,t[1].y])})}}else this.data.popupRef=null}}class z extends k{constructor(e){super(e),this.data.annotationType=n.AnnotationType.STAMP,this.data.hasOwnCanvas=this.data.noRotate}static async createImage(e,t){const{width:r,height:a}=e,i=new OffscreenCanvas(r,a),c=i.getContext("2d",{alpha:!0});c.drawImage(e,0,0);const l=c.getImageData(0,0,r,a).data,h=new Uint32Array(l.buffer),u=h.some(n.FeatureTest.isLittleEndian?e=>e>>>24!=255:e=>255!=(255&e));u&&(c.fillStyle="white",c.fillRect(0,0,r,a),c.drawImage(e,0,0));const d=i.convertToBlob({type:"image/jpeg",quality:1}).then((e=>e.arrayBuffer())),f=s.Name.get("XObject"),g=s.Name.get("Image"),p=new s.Dict(t);p.set("Type",f),p.set("Subtype",g),p.set("BitsPerComponent",8),p.set("ColorSpace",s.Name.get("DeviceRGB")),p.set("Filter",s.Name.get("DCTDecode")),p.set("BBox",[0,0,r,a]),p.set("Width",r),p.set("Height",a);let m=null;if(u){const e=new Uint8Array(h.length);if(n.FeatureTest.isLittleEndian)for(let t=0,r=h.length;t>>24;else for(let t=0,r=h.length;t{var n=r(4),a=r(6),i=r(87),s=r(158),o=r(7),c=n.RegExp,l=c.prototype;a&&o((function(){var e=!0;try{c(".","d")}catch(t){e=!1}var t={},r="",n=e?"dgimsy":"gimsy",a=function(e,n){Object.defineProperty(t,e,{get:function(){return r+=n,!0}})},i={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(i.hasIndices="d"),i)a(s,i[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(t)!==n||r!==n}))&&i(l,"flags",{configurable:!0,get:s})},(e,t,r)=>{var n=r(47);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},(e,t,r)=>{var n=r(3),a=r(40),i=r(64),s=r(140),o=r(160),c=r(142);n({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}()},{unshift:function(e){var t=a(this),r=i(t),n=arguments.length;if(n){c(r+n);for(var l=r;l--;){var h=l+n;l in t?t[h]=t[l]:o(t,h)}for(var u=0;u{var n=r(32),a=TypeError;e.exports=function(e,t){if(!delete e[t])throw a("Cannot delete property "+n(t)+" of "+n(e))}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FakeUnicodeFont=void 0,t.createDefaultAppearance=function(e){let{fontSize:t,fontName:r,fontColor:n}=e;return"/".concat((0,a.escapePDFName)(r)," ").concat(t," Tf ").concat(f(n,!0))},t.getPdfColor=f,t.parseAppearanceStream=function(e,t,r){return new d(e,t,r).parse()},t.parseDefaultAppearance=function(e){return new u(e).parse()},r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(150),a=r(149),i=r(144),s=r(162),o=r(163),c=r(209),l=r(207),h=r(154);class u extends o.EvaluatorPreprocessor{constructor(e){super(new h.StringStream(e))}parse(){const e={fn:0,args:[]},t={fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3)};try{for(;e.args.length=0,this.read(e);){if(0!==this.savedStatesDepth)continue;const{fn:r,args:a}=e;switch(0|r){case i.OPS.setFont:const[e,r]=a;e instanceof n.Name&&(t.fontName=e.name),"number"==typeof r&&r>0&&(t.fontSize=r);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(a,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(a,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(a,0,t.fontColor,0)}}}catch(e){(0,i.warn)('parseDefaultAppearance - ignoring errors: "'.concat(e,'".'))}return t}}class d extends o.EvaluatorPreprocessor{constructor(e,t,r){var n;super(e),this.stream=e,this.evaluatorOptions=t,this.xref=r,this.resources=null===(n=e.dict)||void 0===n?void 0:n.get("Resources")}parse(){const e={fn:0,args:[]};let t={scaleFactor:1,fontSize:0,fontName:"",fontColor:new Uint8ClampedArray(3),fillColorSpace:s.ColorSpace.singletons.gray},r=!1;const a=[];try{for(;e.args.length=0,!r&&this.read(e);){const{fn:o,args:c}=e;switch(0|o){case i.OPS.save:a.push({scaleFactor:t.scaleFactor,fontSize:t.fontSize,fontName:t.fontName,fontColor:t.fontColor.slice(),fillColorSpace:t.fillColorSpace});break;case i.OPS.restore:t=a.pop()||t;break;case i.OPS.setTextMatrix:t.scaleFactor*=Math.hypot(c[0],c[1]);break;case i.OPS.setFont:const[e,o]=c;e instanceof n.Name&&(t.fontName=e.name),"number"==typeof o&&o>0&&(t.fontSize=o*t.scaleFactor);break;case i.OPS.setFillColorSpace:t.fillColorSpace=s.ColorSpace.parse({cs:c[0],xref:this.xref,resources:this.resources,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:this._localColorSpaceCache});break;case i.OPS.setFillColor:t.fillColorSpace.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillRGBColor:s.ColorSpace.singletons.rgb.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillGray:s.ColorSpace.singletons.gray.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.setFillCMYKColor:s.ColorSpace.singletons.cmyk.getRgbItem(c,0,t.fontColor,0);break;case i.OPS.showText:case i.OPS.showSpacedText:case i.OPS.nextLineShowText:case i.OPS.nextLineSetSpacingShowText:r=!0}}}catch(e){(0,i.warn)('parseAppearanceStream - ignoring errors: "'.concat(e,'".'))}return this.stream.reset(),delete t.scaleFactor,delete t.fillColorSpace,t}get _localColorSpaceCache(){return(0,i.shadow)(this,"_localColorSpaceCache",new c.LocalColorSpaceCache)}get _pdfFunctionFactory(){const e=new l.PDFFunctionFactory({xref:this.xref,isEvalSupported:this.evaluatorOptions.isEvalSupported});return(0,i.shadow)(this,"_pdfFunctionFactory",e)}}function f(e,t){if(e[0]===e[1]&&e[1]===e[2]){const r=e[0]/255;return"".concat((0,a.numberToString)(r)," ").concat(t?"g":"G")}return Array.from(e,(e=>(0,a.numberToString)(e/255))).join(" ")+" "+(t?"rg":"RG")}class g{constructor(e,t){this.xref=e,this.widths=null,this.firstChar=1/0,this.lastChar=-1/0,this.fontFamily=t;const r=new OffscreenCanvas(1,1);this.ctxMeasure=r.getContext("2d"),g._fontNameId||(g._fontNameId=1),this.fontName=n.Name.get("InvalidPDFjsFont_".concat(t,"_").concat(g._fontNameId++))}get toUnicodeRef(){if(!g._toUnicodeRef){const e="/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo\\n<< /Registry (Adobe)\\n/Ordering (UCS) /Supplement 0 >> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000> \\nendcodespacerange\\n1 beginbfrange\\n<0000> <0000>\\nendbfrange\\nendcmap CMapName currentdict /CMap defineresource pop end end",t=g.toUnicodeStream=new h.StringStream(e),r=new n.Dict(this.xref);t.dict=r,r.set("Length",e.length),g._toUnicodeRef=this.xref.getNewPersistentRef(t)}return g._toUnicodeRef}get fontDescriptorRef(){if(!g._fontDescriptorRef){const e=new n.Dict(this.xref);e.set("Type",n.Name.get("FontDescriptor")),e.set("FontName",this.fontName),e.set("FontFamily","MyriadPro Regular"),e.set("FontBBox",[0,0,0,0]),e.set("FontStretch",n.Name.get("Normal")),e.set("FontWeight",400),e.set("ItalicAngle",0),g._fontDescriptorRef=this.xref.getNewPersistentRef(e)}return g._fontDescriptorRef}get descendantFontRef(){const e=new n.Dict(this.xref);e.set("BaseFont",this.fontName),e.set("Type",n.Name.get("Font")),e.set("Subtype",n.Name.get("CIDFontType0")),e.set("CIDToGIDMap",n.Name.get("Identity")),e.set("FirstChar",this.firstChar),e.set("LastChar",this.lastChar),e.set("FontDescriptor",this.fontDescriptorRef),e.set("DW",1e3);const t=[],r=[...this.widths.entries()].sort();let a=null,i=null;for(const[e,n]of r)a?e===a+i.length?i.push(n):(t.push(a,i),a=e,i=[n]):(a=e,i=[n]);a&&t.push(a,i),e.set("W",t);const s=new n.Dict(this.xref);return s.set("Ordering","Identity"),s.set("Registry","Adobe"),s.set("Supplement",0),e.set("CIDSystemInfo",s),this.xref.getNewPersistentRef(e)}get baseFontRef(){const e=new n.Dict(this.xref);return e.set("BaseFont",this.fontName),e.set("Type",n.Name.get("Font")),e.set("Subtype",n.Name.get("Type0")),e.set("Encoding",n.Name.get("Identity-H")),e.set("DescendantFonts",[this.descendantFontRef]),e.set("ToUnicode",this.toUnicodeRef),this.xref.getNewPersistentRef(e)}get resources(){const e=new n.Dict(this.xref),t=new n.Dict(this.xref);return t.set(this.fontName.name,this.baseFontRef),e.set("Font",t),e}_createContext(){return this.widths=new Map,this.ctxMeasure.font="1000px ".concat(this.fontFamily),this.ctxMeasure}createFontResources(e){const t=this._createContext();for(const r of e.split(/\\r\\n?|\\n/))for(const e of r.split("")){const r=e.charCodeAt(0);if(this.widths.has(r))continue;const n=t.measureText(e),a=Math.ceil(n.width);this.widths.set(r,a),this.firstChar=Math.min(r,this.firstChar),this.lastChar=Math.max(r,this.lastChar)}return this.resources}createAppearance(e,t,r,s,o,c){const l=this._createContext(),u=[];let d=-1/0;for(const t of e.split(/\\r\\n?|\\n/)){u.push(t);const e=l.measureText(t).width;d=Math.max(d,e);for(const e of t.split("")){const t=e.charCodeAt(0);let r=this.widths.get(t);if(void 0===r){const n=l.measureText(e);r=Math.ceil(n.width),this.widths.set(t,r),this.firstChar=Math.min(t,this.firstChar),this.lastChar=Math.max(t,this.lastChar)}}}d*=s/1e3;const[g,p,m,b]=t;let y=m-g,w=b-p;r%180!=0&&([y,w]=[w,y]);let v=1;d>y&&(v=y/d);let x=1;const S=i.LINE_FACTOR*s,A=i.LINE_DESCENT_FACTOR*s,k=S*u.length;k>w&&(x=w/k);const C=s*Math.min(v,x),O=["q","0 0 ".concat((0,a.numberToString)(y)," ").concat((0,a.numberToString)(w)," re W n"),"BT","1 0 0 1 0 ".concat((0,a.numberToString)(w+A)," Tm 0 Tc ").concat(f(o,!0)),"/".concat(this.fontName.name," ").concat((0,a.numberToString)(C)," Tf")],{resources:F}=this;if(1!==(c="number"==typeof c&&c>=0&&c<=1?c:1)){O.push("/R0 gs");const e=new n.Dict(this.xref),t=new n.Dict(this.xref);t.set("ca",c),t.set("CA",c),t.set("Type",n.Name.get("ExtGState")),e.set("R0",t),F.set("ExtGState",e)}const I=(0,a.numberToString)(S);for(const e of u)O.push("0 -".concat(I," Td <").concat((0,a.stringToUTF16HexString)(e),"> Tj"));O.push("ET","Q");const T=O.join("\\n"),M=new n.Dict(this.xref);if(M.set("Subtype",n.Name.get("Form")),M.set("Type",n.Name.get("XObject")),M.set("BBox",[0,0,y,w]),M.set("Length",T.length),M.set("Resources",F),r){const e=(0,a.getRotationMatrix)(r,y,w);M.set("Matrix",e)}const E=new h.StringStream(T);return E.dict=M,E}}t.FakeUnicodeFont=g},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ColorSpace=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(150),i=r(151),s=r(149);class o{constructor(e,t){this.constructor===o&&(0,n.unreachable)("Cannot initialize ColorSpace."),this.name=e,this.numComps=t}getRgb(e,t){const r=new Uint8ClampedArray(3);return this.getRgbItem(e,t,r,0),r}getRgbItem(e,t,r,a){(0,n.unreachable)("Should not call ColorSpace.getRgbItem")}getRgbBuffer(e,t,r,a,i,s,o){(0,n.unreachable)("Should not call ColorSpace.getRgbBuffer")}getOutputLength(e,t){(0,n.unreachable)("Should not call ColorSpace.getOutputLength")}isPassthrough(e){return!1}isDefaultDecode(e,t){return o.isDefaultDecode(e,this.numComps)}fillRgb(e,t,r,n,a,i,s,o,c){const l=t*r;let h=null;const u=1<u&&"DeviceGray"!==this.name&&"DeviceRGB"!==this.name){const t=s<=8?new Uint8Array(u):new Uint16Array(u);for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3?arguments[3]:void 0;if((e=t.fetchIfRef(e))instanceof a.Name)switch(e.name){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"Pattern":return new l(null);default:if(r instanceof a.Dict){const n=r.get("ColorSpace");if(n instanceof a.Dict){const s=n.get(e.name);if(s){if(s instanceof a.Name)return this._parse(s,t,r,i);e=s;break}}}throw new n.FormatError("Unrecognized ColorSpace: ".concat(e.name))}if(Array.isArray(e)){const a=t.fetchIfRef(e[0]).name;let s,o,u,d,f,b;switch(a){case"G":case"DeviceGray":return this.singletons.gray;case"RGB":case"DeviceRGB":return this.singletons.rgb;case"CMYK":case"DeviceCMYK":return this.singletons.cmyk;case"CalGray":return s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint"),b=s.get("Gamma"),new g(d,f,b);case"CalRGB":s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint"),b=s.getArray("Gamma");const y=s.getArray("Matrix");return new p(d,f,b,y);case"ICCBased":const w=t.fetchIfRef(e[1]).dict;o=w.get("N");const v=w.get("Alternate");if(v){const e=this._parse(v,t,r,i);if(e.numComps===o)return e;(0,n.warn)("ICCBased color space: Ignoring incorrect /Alternate entry.")}if(1===o)return this.singletons.gray;if(3===o)return this.singletons.rgb;if(4===o)return this.singletons.cmyk;break;case"Pattern":return u=e[1]||null,u&&(u=this._parse(u,t,r,i)),new l(u);case"I":case"Indexed":u=this._parse(e[1],t,r,i);const x=t.fetchIfRef(e[2])+1,S=t.fetchIfRef(e[3]);return new h(u,x,S);case"Separation":case"DeviceN":const A=t.fetchIfRef(e[1]);o=Array.isArray(A)?A.length:1,u=this._parse(e[2],t,r,i);const k=i.create(e[3]);return new c(o,u,k);case"Lab":s=t.fetchIfRef(e[1]),d=s.getArray("WhitePoint"),f=s.getArray("BlackPoint");const C=s.getArray("Range");return new m(d,f,C);default:throw new n.FormatError("Unimplemented ColorSpace object: ".concat(a))}}throw new n.FormatError("Unrecognized ColorSpace object: ".concat(e))}static isDefaultDecode(e,t){if(!Array.isArray(e))return!0;if(2*t!==e.length)return(0,n.warn)("The decode map is not the correct length"),!0;for(let t=0,r=e.length;t=.99554525?1:d(0,1,1.055*e**(1/2.4)-.055)}function d(e,t,r){return Math.max(e,Math.min(t,r))}function f(e){return e<0?-f(-e):e>8?((e+16)/116)**3:e*l}function g(n,o,l,g,p,m){const b=d(0,1,o[l]*m),y=d(0,1,o[l+1]*m),w=d(0,1,o[l+2]*m),v=1===b?1:b**n.GR,x=1===y?1:y**n.GG,S=1===w?1:w**n.GB,A=n.MXA*v+n.MXB*x+n.MXC*S,k=n.MYA*v+n.MYB*x+n.MYC*S,C=n.MZA*v+n.MZB*x+n.MZC*S,O=s;O[0]=A,O[1]=k,O[2]=C;const F=c;!function(r,n,a){if(1===r[0]&&1===r[2])return a[0]=n[0],a[1]=n[1],void(a[2]=n[2]);const s=a;h(e,n,s);const o=i;!function(e,t,r){r[0]=1*t[0]/e[0],r[1]=1*t[1]/e[1],r[2]=1*t[2]/e[2]}(r,s,o),h(t,o,a)}(n.whitePoint,O,F);const I=s;!function(e,t,r){if(0===e[0]&&0===e[1]&&0===e[2])return r[0]=t[0],r[1]=t[1],void(r[2]=t[2]);const n=f(0),a=(1-n)/(1-f(e[0])),i=1-a,s=(1-n)/(1-f(e[1])),o=1-s,c=(1-n)/(1-f(e[2])),l=1-c;r[0]=t[0]*a+i,r[1]=t[1]*s+o,r[2]=t[2]*c+l}(n.blackPoint,F,I);const T=c;!function(r,n,a){const s=a;h(e,n,s);const o=i;!function(e,t,r){r[0]=.95047*t[0]/e[0],r[1]=1*t[1]/e[1],r[2]=1.08883*t[2]/e[2]}(r,s,o),h(t,o,a)}(a,I,T);const M=s;h(r,T,M),g[p]=255*u(M[0]),g[p+1]=255*u(M[1]),g[p+2]=255*u(M[2])}return class extends o{constructor(e,t,r,a){if(super("CalRGB",3),!e)throw new n.FormatError("WhitePoint missing - required for color space CalRGB");t||(t=new Float32Array(3)),r||(r=new Float32Array([1,1,1])),a||(a=new Float32Array([1,0,0,0,1,0,0,0,1]));const i=e[0],s=e[1],o=e[2];this.whitePoint=e;const c=t[0],l=t[1],h=t[2];if(this.blackPoint=t,this.GR=r[0],this.GG=r[1],this.GB=r[2],this.MXA=a[0],this.MYA=a[1],this.MZA=a[2],this.MXB=a[3],this.MYB=a[4],this.MZB=a[5],this.MXC=a[6],this.MYC=a[7],this.MZC=a[8],i<0||o<0||1!==s)throw new n.FormatError("Invalid WhitePoint components for ".concat(this.name,", no fallback available"));(c<0||l<0||h<0)&&((0,n.info)("Invalid BlackPoint for ".concat(this.name," [").concat(c,", ").concat(l,", ").concat(h,"], falling back to default.")),this.blackPoint=new Float32Array(3)),(this.GR<0||this.GG<0||this.GB<0)&&((0,n.info)("Invalid Gamma [".concat(this.GR,", ").concat(this.GG,", ").concat(this.GB,"] for ").concat(this.name,", falling back to default.")),this.GR=this.GG=this.GB=1)}getRgbItem(e,t,r,n){g(this,e,t,r,n,1)}getRgbBuffer(e,t,r,n,a,i,s){const o=1/((1<=6/29?e**3:108/841*(e-4/29)}function t(e,t,r,n){return r+e*(n-r)/t}function r(r,n,a,i,s,o){let c=n[a],l=n[a+1],h=n[a+2];!1!==i&&(c=t(c,i,0,100),l=t(l,i,r.amin,r.amax),h=t(h,i,r.bmin,r.bmax)),l>r.amax?l=r.amax:lr.bmax?h=r.bmax:hthis.amax||this.bmin>this.bmax)&&((0,n.info)("Invalid Range, falling back to defaults"),this.amin=-100,this.amax=100,this.bmin=-100,this.bmax=100)}getRgbItem(e,t,n,a){r(this,e,t,!1,n,a)}getRgbBuffer(e,t,n,a,i,s,o){const c=(1<{Object.defineProperty(t,"__esModule",{value:!0}),t.PartialEvaluator=t.EvaluatorPreprocessor=void 0,r(139),r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(157),r(159);var n=r(144),a=r(164),s=r(150),o=r(184),c=r(187),l=r(191),h=r(200),u=r(201),d=r(192),f=r(207),g=r(166),p=r(209),m=r(154),b=r(151),y=r(210),w=r(162),v=r(168),x=r(188),S=r(211),A=r(189),k=r(149),C=r(195),O=r(190),F=r(212),I=r(213),T=r(214),M=r(215);const E=Object.freeze({maxImageSize:-1,disableFontFace:!1,ignoreErrors:!1,isEvalSupported:!0,isOffscreenCanvasSupported:!1,canvasMaxAreaInBytes:-1,fontExtraProperties:!1,useSystemFonts:!0,cMapUrl:null,standardFontDataUrl:null}),P=Promise.resolve();function R(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(Array.isArray(e)){for(const t of e){const e=R(t,!0);if(e)return e}return(0,n.warn)("Unsupported blend mode Array: ".concat(e)),"source-over"}if(!(e instanceof s.Name))return t?null:"source-over";switch(e.name){case"Normal":case"Compatible":return"source-over";case"Multiply":return"multiply";case"Screen":return"screen";case"Overlay":return"overlay";case"Darken":return"darken";case"Lighten":return"lighten";case"ColorDodge":return"color-dodge";case"ColorBurn":return"color-burn";case"HardLight":return"hard-light";case"SoftLight":return"soft-light";case"Difference":return"difference";case"Exclusion":return"exclusion";case"Hue":return"hue";case"Saturation":return"saturation";case"Color":return"color";case"Luminosity":return"luminosity"}return t?null:((0,n.warn)("Unsupported blend mode: ".concat(e.name)),"source-over")}function N(e){var t;e.fn===n.OPS.paintImageMaskXObject&&(null===(t=e.args[0])||void 0===t?void 0:t.count)>0&&e.args[0].count++}class D{constructor(){this.reset()}check(){return!(++this.checked0&&void 0!==arguments[0]?arguments[0]:null;const t=Object.create(this);return t.options=Object.assign(Object.create(null),this.options,e),t}hasBlendModes(e,t){if(!(e instanceof s.Dict))return!1;if(e.objId&&t.has(e.objId))return!1;const r=new s.RefSet(t);e.objId&&r.put(e.objId);const a=[e],i=this.xref;for(;a.length;){const e=a.shift(),o=e.get("ExtGState");if(o instanceof s.Dict)for(let e of o.getRawValues()){if(e instanceof s.Ref){if(r.has(e))continue;try{e=i.fetch(e)}catch(t){r.put(e),(0,n.info)('hasBlendModes - ignoring ExtGState: "'.concat(t,'".'));continue}}if(!(e instanceof s.Dict))continue;e.objId&&r.put(e.objId);const a=e.get("BM");if(a instanceof s.Name){if("Normal"!==a.name)return!0}else if(void 0!==a&&Array.isArray(a))for(const e of a)if(e instanceof s.Name&&"Normal"!==e.name)return!0}const c=e.get("XObject");if(c instanceof s.Dict)for(let e of c.getRawValues()){if(e instanceof s.Ref){if(r.has(e))continue;try{e=i.fetch(e)}catch(t){r.put(e),(0,n.info)('hasBlendModes - ignoring XObject: "'.concat(t,'".'));continue}}if(!(e instanceof b.BaseStream))continue;e.dict.objId&&r.put(e.dict.objId);const o=e.dict.get("Resources");!(o instanceof s.Dict)||o.objId&&r.has(o.objId)||(a.push(o),o.objId&&r.put(o.objId))}}for(const e of r)t.put(e);return!1}async fetchBuiltInCMap(e){const t=this.builtInCMapCache.get(e);if(t)return t;let r;if(null!==this.options.cMapUrl){const t="".concat(this.options.cMapUrl).concat(e,".bcmap"),a=await fetch(t);if(!a.ok)throw new Error('fetchBuiltInCMap: failed to fetch file "'.concat(t,'" with "').concat(a.statusText,'".'));r={cMapData:new Uint8Array(await a.arrayBuffer()),compressionType:n.CMapCompressionType.BINARY}}else r=await this.handler.sendWithPromise("FetchBuiltInCMap",{name:e});return r.compressionType!==n.CMapCompressionType.NONE&&this.builtInCMapCache.set(e,r),r}async fetchStandardFontData(e){const t=this.standardFontDataCache.get(e);if(t)return new m.Stream(t);if(this.options.useSystemFonts&&"Symbol"!==e&&"ZapfDingbats"!==e)return null;const r=(0,l.getFontNameToFileMap)()[e];let a;if(null!==this.options.standardFontDataUrl){const e="".concat(this.options.standardFontDataUrl).concat(r),t=await fetch(e);t.ok?a=await t.arrayBuffer():(0,n.warn)('fetchStandardFontData: failed to fetch file "'.concat(e,'" with "').concat(t.statusText,'".'))}else try{a=await this.handler.sendWithPromise("FetchStandardFontData",{filename:r})}catch(e){(0,n.warn)('fetchStandardFontData: failed to fetch file "'.concat(r,'" with "').concat(e,'".'))}return a?(this.standardFontDataCache.set(e,a),new m.Stream(a)):null}async buildFormXObject(e,t,r,a,i,o,c){const l=t.dict,h=l.getArray("Matrix");let u,d,f=l.getArray("BBox");f=Array.isArray(f)&&4===f.length?n.Util.normalizeRect(f):null,l.has("OC")&&(u=await this.parseMarkedContentProps(l.get("OC"),e)),void 0!==u&&a.addOp(n.OPS.beginMarkedContentProps,["OC",u]);const g=l.get("Group");if(g){d={matrix:h,bbox:f,smask:r,isolated:!1,knockout:!1};const t=g.get("S");let i=null;if((0,s.isName)(t,"Transparency")&&(d.isolated=g.get("I")||!1,d.knockout=g.get("K")||!1,g.has("CS"))){const t=g.getRaw("CS");i=w.ColorSpace.getCached(t,this.xref,c)||await this.parseColorSpace({cs:t,resources:e,localColorSpaceCache:c})}null!=r&&r.backdrop&&(i||(i=w.ColorSpace.singletons.rgb),r.backdrop=i.getRgb(r.backdrop,0)),a.addOp(n.OPS.beginGroup,[d])}const p=g?[h,null]:[h,f];return a.addOp(n.OPS.paintFormXObjectBegin,p),this.getOperatorList({stream:t,task:i,resources:l.get("Resources")||e,operatorList:a,initialState:o}).then((function(){a.addOp(n.OPS.paintFormXObjectEnd,[]),g&&a.addOp(n.OPS.endGroup,[d]),void 0!==u&&a.addOp(n.OPS.endMarkedContent,[])}))}_sendImgData(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=t?[t.bitmap||t.data.buffer]:null;return this.parsingType3Font||r?this.handler.send("commonobj",[e,"Image",t],n):this.handler.send("obj",[e,this.pageIndex,"Image",t],n)}async buildPaintImageXObject(e){let{resources:t,image:r,isInline:a=!1,operatorList:i,cacheKey:s,localImageCache:o,localColorSpaceCache:c}=e;const l=r.dict,h=l.objId,u=l.get("W","Width"),d=l.get("H","Height");if(!u||"number"!=typeof u||!d||"number"!=typeof d)return void(0,n.warn)("Image dimensions are missing, or not numbers.");const f=this.options.maxImageSize;if(-1!==f&&u*d>f){const e="Image exceeded maximum allowed size and was removed.";if(this.options.ignoreErrors)return void(0,n.warn)(e);throw new Error(e)}let g,p,m;if(l.has("OC")&&(g=await this.parseMarkedContentProps(l.get("OC"),t)),l.get("IM","ImageMask")){const e=l.get("I","Interpolate"),t=u+7>>3,a=r.getBytes(t*d),c=l.getArray("D","Decode");if(this.parsingType3Font){if(p=M.PDFImage.createRawMask({imgArray:a,width:u,height:d,imageIsFromDecodeStream:r instanceof v.DecodeStream,inverseDecode:(null==c?void 0:c[0])>0,interpolate:e}),p.cached=!!s,m=[p],i.addImageOps(n.OPS.paintImageMaskXObject,m,g),s){const e={fn:n.OPS.paintImageMaskXObject,args:m,optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}if(p=await M.PDFImage.createMask({imgArray:a,width:u,height:d,imageIsFromDecodeStream:r instanceof v.DecodeStream,inverseDecode:(null==c?void 0:c[0])>0,interpolate:e,isOffscreenCanvasSupported:this.options.isOffscreenCanvasSupported}),p.isSingleOpaquePixel){if(i.addImageOps(n.OPS.paintSolidColorImageMask,[],g),s){const e={fn:n.OPS.paintSolidColorImageMask,args:[],optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}const f="mask_".concat(this.idFactory.createObjId());if(i.addDependency(f),this._sendImgData(f,p),m=[{data:f,width:p.width,height:p.height,interpolate:p.interpolate,count:1}],i.addImageOps(n.OPS.paintImageMaskXObject,m,g),s){const e={fn:n.OPS.paintImageMaskXObject,args:m,optionalContent:g};o.set(s,h,e),h&&this._regionalImageCache.set(null,h,e)}return}if(a&&!l.has("SMask")&&!l.has("Mask")&&u+d<200){const e=new M.PDFImage({xref:this.xref,res:t,image:r,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:c});return p=await e.createImageData(!0,!1),i.isOffscreenCanvasSupported=this.options.isOffscreenCanvasSupported,void i.addImageOps(n.OPS.paintInlineImageXObject,[p],g)}let b="img_".concat(this.idFactory.createObjId()),y=!1;if(this.parsingType3Font?b="".concat(this.idFactory.getDocId(),"_type3_").concat(b):h&&(y=this.globalImageCache.shouldCache(h,this.pageIndex),y&&(b="".concat(this.idFactory.getDocId(),"_").concat(b))),i.addDependency(b),m=[b,u,d],M.PDFImage.buildImage({xref:this.xref,res:t,image:r,isInline:a,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:c}).then((async e=>{if(p=await e.createImageData(!1,this.options.isOffscreenCanvasSupported),s&&h&&y){const e=p.bitmap?p.width*p.height*4:p.data.length;this.globalImageCache.addByteSize(h,e)}return this._sendImgData(b,p,y)})).catch((e=>((0,n.warn)('Unable to decode image "'.concat(b,'": "').concat(e,'".')),this._sendImgData(b,null,y)))),i.addImageOps(n.OPS.paintImageXObject,m,g),s){const e={fn:n.OPS.paintImageXObject,args:m,optionalContent:g};o.set(s,h,e),h&&(this._regionalImageCache.set(null,h,e),y&&((0,n.assert)(!a,"Cannot cache an inline image globally."),this.globalImageCache.setData(h,{objId:b,fn:n.OPS.paintImageXObject,args:m,optionalContent:g,byteSize:0})))}}handleSMask(e,t,r,n,a,i){const s=e.get("G"),o={subtype:e.get("S").name,backdrop:e.get("BC")},c=e.get("TR");if((0,f.isPDFFunction)(c)){const e=this._pdfFunctionFactory.create(c),t=new Uint8Array(256),r=new Float32Array(1);for(let n=0;n<256;n++)r[0]=n/255,e(r,0,r,0),t[n]=255*r[0]|0;o.transferMap=t}return this.buildFormXObject(t,s,o,r,n,a.state.clone(),i)}handleTransferFunction(e){let t;if(Array.isArray(e))t=e;else{if(!(0,f.isPDFFunction)(e))return null;t=[e]}const r=[];let n=0,a=0;for(const e of t){const t=this.xref.fetchIfRef(e);if(n++,(0,s.isName)(t,"Identity")){r.push(null);continue}if(!(0,f.isPDFFunction)(t))return null;const i=this._pdfFunctionFactory.create(t),o=new Uint8Array(256),c=new Float32Array(1);for(let e=0;e<256;e++)c[0]=e/255,i(c,0,c,0),o[e]=255*c[0]|0;r.push(o),a++}return 1!==n&&4!==n||0===a?null:r}handleTilingType(e,t,r,a,i,o,c,l){const u=new T.OperatorList,d=s.Dict.merge({xref:this.xref,dictArray:[i.get("Resources"),r]});return this.getOperatorList({stream:a,task:c,resources:d,operatorList:u}).then((function(){const r=u.getIR(),n=(0,h.getTilingPatternIR)(r,i,t);o.addDependencies(u.dependencies),o.addOp(e,n),i.objId&&l.set(null,i.objId,{operatorListIR:r,dict:i})})).catch((e=>{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('handleTilingType - ignoring pattern: "'.concat(e,'".'))}}))}handleSetFont(e,t,r,n,a,i){let c=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null;const h=(null==t?void 0:t[0])instanceof s.Name?t[0].name:null;return this.loadFont(h,r,e,c,l).then((t=>t.font.isType3Font?t.loadType3Data(this,e,a).then((function(){return n.addDependencies(t.type3Dependencies),t})).catch((e=>new L({loadedName:"g_font_error",font:new o.ErrorFont("Type3 font load error: ".concat(e)),dict:t.font,evaluatorOptions:this.options}))):t)).then((e=>(i.font=e.font,e.send(this.handler),e.loadedName)))}handleText(e,t){const r=t.font,a=r.charsToGlyphs(e);return r.data&&(t.textRenderingMode&n.TextRenderingMode.ADD_TO_PATH_FLAG||"Pattern"===t.fillColorSpace.name||r.disableFontFace||this.options.disableFontFace)&&B.buildFontPaths(r,a,this.handler,this.options),a}ensureStateFont(e){if(e.font)return;const t=new n.FormatError("Missing setFont (Tf) operator before text rendering operator.");if(!this.options.ignoreErrors)throw t;(0,n.warn)('ensureStateFont: "'.concat(t,'".'))}async setGState(e){let{resources:t,gState:r,operatorList:a,cacheKey:i,task:o,stateManager:c,localGStateCache:l,localColorSpaceCache:h}=e;const u=r.objId;let d=!0;const f=[];let g=Promise.resolve();for(const e of r.getKeys()){const i=r.get(e);switch(e){case"Type":break;case"LW":case"LC":case"LJ":case"ML":case"D":case"RI":case"FL":case"CA":case"ca":f.push([e,i]);break;case"Font":d=!1,g=g.then((()=>this.handleSetFont(t,null,i[0],a,o,c.state).then((function(t){a.addDependency(t),f.push([e,[t,i[1]]])}))));break;case"BM":f.push([e,R(i)]);break;case"SMask":if((0,s.isName)(i,"None")){f.push([e,!1]);break}i instanceof s.Dict?(d=!1,g=g.then((()=>this.handleSMask(i,t,a,o,c,h))),f.push([e,!0])):(0,n.warn)("Unsupported SMask type");break;case"TR":const r=this.handleTransferFunction(i);f.push([e,r]);break;case"OP":case"op":case"OPM":case"BG":case"BG2":case"UCR":case"UCR2":case"TR2":case"HT":case"SM":case"SA":case"AIS":case"TK":(0,n.info)("graphic state operator "+e);break;default:(0,n.info)("Unknown graphic state operator "+e)}}return g.then((function(){f.length>0&&a.addOp(n.OPS.setGState,[f]),d&&l.set(i,u,f)}))}loadFont(e,t,r){var a;let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;const l=async()=>new L({loadedName:"g_font_error",font:new o.ErrorFont('Font "'.concat(e,'" is not available.')),dict:t,evaluatorOptions:this.options});let h;if(t)t instanceof s.Ref&&(h=t);else{const t=r.get("Font");t&&(h=t.getRaw(e))}if(h){if(this.parsingType3Font&&this.type3FontRefs.has(h))return l();if(this.fontCache.has(h))return this.fontCache.get(h);t=this.xref.fetchIfRef(h)}if(!(t instanceof s.Dict)){if(!this.options.ignoreErrors&&!this.parsingType3Font)return(0,n.warn)('Font "'.concat(e,'" is not available.')),l();(0,n.warn)('Font "'.concat(e,'" is not available -- attempting to fallback to a default font.')),t=i||B.fallbackFontDict}if(t.cacheKey&&this.fontCache.has(t.cacheKey))return this.fontCache.get(t.cacheKey);const u=new n.PromiseCapability;let d;try{d=this.preEvaluateFont(t),d.cssFontInfo=c}catch(e){return(0,n.warn)('loadFont - preEvaluateFont failed: "'.concat(e,'".')),l()}const{descriptor:f,hash:g}=d,p=h instanceof s.Ref;let m;if(g&&f instanceof s.Dict){const e=f.fontAliases||(f.fontAliases=Object.create(null));if(e[g]){const t=e[g].aliasRef;if(p&&t&&this.fontCache.has(t))return this.fontCache.putAlias(h,t),this.fontCache.get(h)}else e[g]={fontID:this.idFactory.createFontId()};p&&(e[g].aliasRef=h),m=e[g].fontID}else m=this.idFactory.createFontId();return(0,n.assert)(null===(a=m)||void 0===a?void 0:a.startsWith("f"),'The "fontID" must be (correctly) defined.'),p?this.fontCache.put(h,u.promise):(t.cacheKey="cacheKey_".concat(m),this.fontCache.put(t.cacheKey,u.promise)),t.loadedName="".concat(this.idFactory.getDocId(),"_").concat(m),this.translateFont(d).then((e=>{u.resolve(new L({loadedName:t.loadedName,font:e,dict:t,evaluatorOptions:this.options}))})).catch((e=>{(0,n.warn)('loadFont - translateFont failed: "'.concat(e,'".')),u.resolve(new L({loadedName:t.loadedName,font:new o.ErrorFont(e instanceof Error?e.message:e),dict:t,evaluatorOptions:this.options}))})),u.promise}buildPath(e,t,r){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const i=e.length-1;if(r||(r=[]),i<0||e.fnArray[i]!==n.OPS.constructPath){let i;switch(a&&((0,n.warn)('Encountered path operator "'.concat(t,'" inside of a text object.')),e.addOp(n.OPS.save,null)),t){case n.OPS.rectangle:const e=r[0]+r[2],t=r[1]+r[3];i=[Math.min(r[0],e),Math.max(r[0],e),Math.min(r[1],t),Math.max(r[1],t)];break;case n.OPS.moveTo:case n.OPS.lineTo:i=[r[0],r[0],r[1],r[1]];break;default:i=[1/0,-1/0,1/0,-1/0]}e.addOp(n.OPS.constructPath,[[t],r,i]),a&&e.addOp(n.OPS.restore,null)}else{const a=e.argsArray[i];a[0].push(t),a[1].push(...r);const s=a[2];switch(t){case n.OPS.rectangle:const e=r[0]+r[2],t=r[1]+r[3];s[0]=Math.min(s[0],r[0],e),s[1]=Math.max(s[1],r[0],e),s[2]=Math.min(s[2],r[1],t),s[3]=Math.max(s[3],r[1],t);break;case n.OPS.moveTo:case n.OPS.lineTo:s[0]=Math.min(s[0],r[0]),s[1]=Math.max(s[1],r[0]),s[2]=Math.min(s[2],r[1]),s[3]=Math.max(s[3],r[1])}}}parseColorSpace(e){let{cs:t,resources:r,localColorSpaceCache:a}=e;return w.ColorSpace.parseAsync({cs:t,xref:this.xref,resources:r,pdfFunctionFactory:this._pdfFunctionFactory,localColorSpaceCache:a}).catch((e=>{if(e instanceof n.AbortException)return null;if(this.options.ignoreErrors)return(0,n.warn)('parseColorSpace - ignoring ColorSpace: "'.concat(e,'".')),null;throw e}))}parseShading(e){let{shading:t,resources:r,localColorSpaceCache:n,localShadingPatternCache:a}=e,i=a.get(t);if(!i){const e=h.Pattern.parseShading(t,this.xref,r,this._pdfFunctionFactory,n).getIR();i="pattern_".concat(this.idFactory.createObjId()),this.parsingType3Font&&(i="".concat(this.idFactory.getDocId(),"_type3_").concat(i)),a.set(t,i),this.parsingType3Font?this.handler.send("commonobj",[i,"Pattern",e]):this.handler.send("obj",[i,this.pageIndex,"Pattern",e])}return i}handleColorN(e,t,r,a,i,o,c,l,u,d){const f=r.pop();if(f instanceof s.Name){const g=i.getRaw(f.name),p=g instanceof s.Ref&&u.getByRef(g);if(p)try{const n=a.base?a.base.getRgb(r,0):null,i=(0,h.getTilingPatternIR)(p.operatorListIR,p.dict,n);return void e.addOp(t,i)}catch(e){}const m=this.xref.fetchIfRef(g);if(m){const i=m instanceof b.BaseStream?m.dict:m,s=i.get("PatternType");if(1===s){const n=a.base?a.base.getRgb(r,0):null;return this.handleTilingType(t,n,o,m,i,e,c,u)}if(2===s){const r=i.get("Shading"),n=i.getArray("Matrix"),a=this.parseShading({shading:r,resources:o,localColorSpaceCache:l,localShadingPatternCache:d});return void e.addOp(t,["Shading",a,n])}throw new n.FormatError("Unknown PatternType: ".concat(s))}}throw new n.FormatError("Unknown PatternName: ".concat(f))}_parseVisibilityExpression(e,t,r){if(++t>10)return void(0,n.warn)("Visibility expression is too deeply nested");const a=e.length,i=this.xref.fetchIfRef(e[0]);if(!(a<2)&&i instanceof s.Name){switch(i.name){case"And":case"Or":case"Not":r.push(i.name);break;default:return void(0,n.warn)("Invalid operator ".concat(i.name," in visibility expression"))}for(let n=1;n0)return{type:"OCMD",expression:t}}const t=r.get("OCGs");if(Array.isArray(t)||t instanceof s.Dict){const e=[];if(Array.isArray(t))for(const r of t)e.push(r.toString());else e.push(t.objId);return{type:a,ids:e,policy:r.get("P")instanceof s.Name?r.get("P").name:null,expression:null}}if(t instanceof s.Ref)return{type:a,id:t.toString()}}return null}getOperatorList(e){let{stream:t,task:r,resources:a,operatorList:i,initialState:o=null,fallbackFontDict:c=null}=e;if(a||(a=s.Dict.empty),o||(o=new U),!i)throw new Error('getOperatorList: missing "operatorList" parameter');const l=this,h=this.xref;let u=!1;const d=new p.LocalImageCache,f=new p.LocalColorSpaceCache,g=new p.LocalGStateCache,m=new p.LocalTilingPatternCache,y=new Map,v=a.get("XObject")||s.Dict.empty,x=a.get("Pattern")||s.Dict.empty,S=new _(o),A=new $(t,h,S),k=new D;function C(e){for(let e=0,t=A.savedStatesDepth;e0&&i.addOp(n.OPS.setGState,[t]),e=null;continue}}return void p(new Promise((function(e,t){if(!R)throw new n.FormatError("GState must be referred to by name.");const o=a.get("ExtGState");if(!(o instanceof s.Dict))throw new n.FormatError("ExtGState should be a dictionary.");const c=o.get(E);if(!(c instanceof s.Dict))throw new n.FormatError("GState should be a dictionary.");l.setGState({resources:a,gState:c,operatorList:i,cacheKey:E,task:r,stateManager:S,localGStateCache:g,localColorSpaceCache:f}).then(e,t)})).catch((function(e){if(!(e instanceof n.AbortException)){if(!l.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring ExtGState: "'.concat(e,'".'))}})));case n.OPS.moveTo:case n.OPS.lineTo:case n.OPS.curveTo:case n.OPS.curveTo2:case n.OPS.curveTo3:case n.OPS.closePath:case n.OPS.rectangle:l.buildPath(i,t,e,u);continue;case n.OPS.markPoint:case n.OPS.markPointProps:case n.OPS.beginCompat:case n.OPS.endCompat:continue;case n.OPS.beginMarkedContentProps:if(!(e[0]instanceof s.Name)){(0,n.warn)("Expected name for beginMarkedContentProps arg0=".concat(e[0]));continue}if("OC"===e[0].name)return void p(l.parseMarkedContentProps(e[1],a).then((e=>{i.addOp(n.OPS.beginMarkedContentProps,["OC",e])})).catch((e=>{if(!(e instanceof n.AbortException)){if(!l.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring beginMarkedContentProps: "'.concat(e,'".'))}})));e=[e[0].name,e[1]instanceof s.Dict?e[1].get("MCID"):null];break;case n.OPS.beginMarkedContent:case n.OPS.endMarkedContent:default:if(null!==e){for(I=0,T=e.length;I{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('getOperatorList - ignoring errors during "'.concat(r.name,'" task: "').concat(e,'".')),C()}}))}getTextContent(e){let{stream:t,task:r,resources:a,stateManager:i=null,includeMarkedContent:o=!1,sink:c,seenStyles:l=new Set,viewBox:h,markedContentData:u=null,disableNormalization:d=!1}=e;a||(a=s.Dict.empty),i||(i=new _(new j)),o&&(u||(u={level:0}));const f={items:[],styles:Object.create(null)},g={initialized:!1,str:[],totalWidth:0,totalHeight:0,width:0,height:0,vertical:!1,prevTransform:null,textAdvanceScale:0,spaceInFlowMin:0,spaceInFlowMax:0,trackingSpaceMin:1/0,negativeSpaceMax:-1/0,notASpace:-1/0,transform:null,fontName:null,hasEOL:!1},m=[" "," "];let w=0;function v(e){const t=(w+1)%2,r=" "!==m[w]&&" "===m[t];return m[w]=e,w=t,r}function x(){return" "!==m[w]&&" "===m[(w+1)%2]}function S(){m[0]=m[1]=" ",w=0}const A=this,k=this.xref,C=[];let O=null;const F=new p.LocalImageCache,I=new p.LocalGStateCache,T=new $(t,k,i);let M;function E(e){let{width:t=0,height:r=0,transform:n=g.prevTransform,fontName:a=g.fontName}=e;f.items.push({str:" ",dir:"ltr",width:t,height:r,transform:n,fontName:a,hasEOL:!1})}function R(){const e=M.font,t=[M.fontSize*M.textHScale,0,0,M.fontSize,0,M.textRise];if(e.isType3Font&&(M.fontSize<=1||e.isCharBBox)&&!(0,n.isArrayEqual)(M.fontMatrix,n.FONT_IDENTITY_MATRIX)){const r=e.bbox[3]-e.bbox[1];r>0&&(t[3]*=r*M.fontMatrix[3])}return n.Util.transform(M.ctm,n.Util.transform(M.textMatrix,t))}function N(){if(g.initialized)return g;const{font:e,loadedName:t}=M;l.has(t)||(l.add(t),f.styles[t]={fontFamily:e.fallbackName,ascent:e.ascent,descent:e.descent,vertical:e.vertical}),g.fontName=t;const r=g.transform=R();e.vertical?(g.width=g.totalWidth=Math.hypot(r[0],r[1]),g.height=g.totalHeight=0,g.vertical=!0):(g.width=g.totalWidth=0,g.height=g.totalHeight=Math.hypot(r[2],r[3]),g.vertical=!1);const n=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),a=Math.hypot(M.ctm[0],M.ctm[1]);g.textAdvanceScale=a*n;const{fontSize:i}=M;return g.trackingSpaceMin=.102*i,g.notASpace=.03*i,g.negativeSpaceMax=-.2*i,g.spaceInFlowMin=.102*i,g.spaceInFlowMax=.6*i,g.hasEOL=!1,g.initialized=!0,g}function B(){if(!g.initialized)return;const e=Math.hypot(M.textLineMatrix[0],M.textLineMatrix[1]),t=Math.hypot(M.ctm[0],M.ctm[1])*e;t!==g.textAdvanceScale&&(g.vertical?(g.totalHeight+=g.height*g.textAdvanceScale,g.height=0):(g.totalWidth+=g.width*g.textAdvanceScale,g.width=0),g.textAdvanceScale=t)}function L(e,t){return A.loadFont(e,t,a).then((function(e){return e.font.isType3Font?e.loadType3Data(A,a,r).catch((function(){})).then((function(){return e})):e})).then((function(e){M.loadedName=e.loadedName,M.font=e.font,M.fontMatrix=e.font.fontMatrix||n.FONT_IDENTITY_MATRIX}))}function U(e,t,r){const n=Math.hypot(r[0],r[1]);return[(r[0]*e+r[1]*t)/n,(r[2]*e+r[3]*t)/n]}function X(e){var t;const r=R();let n=r[4],a=r[5];if(null!==(t=M.font)&&void 0!==t&&t.vertical){if(nh[2]||a+eh[3])return!1}else if(n+eh[2]||ah[3])return!1;if(!M.font||!g.prevTransform)return!0;let i=g.prevTransform[4],s=g.prevTransform[5];if(i===n&&s===a)return!0;let o=-1;switch(r[0]&&0===r[1]&&0===r[2]?o=r[0]>0?0:180:r[1]&&0===r[0]&&0===r[3]&&(o=r[1]>0?90:270),o){case 0:break;case 90:[n,a]=[a,n],[i,s]=[s,i];break;case 180:[n,a,i,s]=[-n,-a,-i,-s];break;case 270:[n,a]=[-a,-n],[i,s]=[-s,-i];break;default:[n,a]=U(n,a,r),[i,s]=U(i,s,g.prevTransform)}if(M.font.vertical){const e=(s-a)/g.textAdvanceScale,t=n-i,r=Math.sign(g.height);return e.5*g.width?(q(),!0):(S(),G(),!0):Math.abs(t)>g.width?(q(),!0):(e<=r*g.notASpace&&S(),e<=r*g.trackingSpaceMin?x()?(S(),G(),E({height:Math.abs(e)})):g.height+=e:z(e,g.prevTransform,r)||(0===g.str.length?(S(),E({height:Math.abs(e)})):g.height+=e),Math.abs(t)>.25*g.width&&G(),!0)}const c=(n-i)/g.textAdvanceScale,l=a-s,u=Math.sign(g.width);return c.5*g.height?(q(),!0):(S(),G(),!0):Math.abs(l)>g.height?(q(),!0):(c<=u*g.notASpace&&S(),c<=u*g.trackingSpaceMin?x()?(S(),G(),E({width:Math.abs(c)})):g.width+=c:z(c,g.prevTransform,u)||(0===g.str.length?(S(),E({width:Math.abs(c)})):g.width+=c),Math.abs(l)>.25*g.height&&G(),!0)}function H(e){let{chars:t,extraSpacing:r}=e;const n=M.font;if(!t){const e=M.charSpacing+r;return void(e&&(n.vertical?M.translateTextMatrix(0,-e):M.translateTextMatrix(e*M.textHScale,0)))}const a=n.charsToGlyphs(t),i=M.fontMatrix[0]*M.fontSize;for(let e=0,t=a.length;e0&&void 0!==arguments[0]&&arguments[0];const t=f.items.length;0===t||e&&t<10||(c.enqueue(f,t),f.items=[],f.styles=Object.create(null))}const V=new D;return new Promise((function e(t,g){const p=function(r){W(!0),Promise.all([r,c.ready]).then((function(){try{e(t,g)}catch(e){g(e)}}),g)};r.ensureNotTerminated(),V.reset();const m={};let y,w=[];for(;!(y=V.check())&&(w.length=0,m.args=w,T.read(m));){const e=M;M=i.state;const t=m.fn;switch(w=m.args,0|t){case n.OPS.setFont:var v=w[0].name,x=w[1];if(M.font&&v===M.fontName&&x===M.fontSize)break;return G(),M.fontName=v,M.fontSize=x,void p(L(v,null));case n.OPS.setTextRise:M.textRise=w[0];break;case n.OPS.setHScale:M.textHScale=w[0]/100;break;case n.OPS.setLeading:M.leading=w[0];break;case n.OPS.moveText:M.translateTextLineMatrix(w[0],w[1]),M.textMatrix=M.textLineMatrix.slice();break;case n.OPS.setLeadingMoveText:M.leading=-w[1],M.translateTextLineMatrix(w[0],w[1]),M.textMatrix=M.textLineMatrix.slice();break;case n.OPS.nextLine:M.carriageReturn();break;case n.OPS.setTextMatrix:M.setTextMatrix(w[0],w[1],w[2],w[3],w[4],w[5]),M.setTextLineMatrix(w[0],w[1],w[2],w[3],w[4],w[5]),B();break;case n.OPS.setCharSpacing:M.charSpacing=w[0];break;case n.OPS.setWordSpacing:M.wordSpacing=w[0];break;case n.OPS.beginText:M.textMatrix=n.IDENTITY_MATRIX.slice(),M.textLineMatrix=n.IDENTITY_MATRIX.slice();break;case n.OPS.showSpacedText:if(!i.state.font){A.ensureStateFont(i.state);continue}const t=(M.font.vertical?1:-1)*M.fontSize/1e3,g=w[0];for(let e=0,r=g.length;e0){const e=C.join("");C.length=0,H({chars:e,extraSpacing:0})}break;case n.OPS.showText:if(!i.state.font){A.ensureStateFont(i.state);continue}H({chars:w[0],extraSpacing:0});break;case n.OPS.nextLineShowText:if(!i.state.font){A.ensureStateFont(i.state);continue}M.carriageReturn(),H({chars:w[0],extraSpacing:0});break;case n.OPS.nextLineSetSpacingShowText:if(!i.state.font){A.ensureStateFont(i.state);continue}M.wordSpacing=w[0],M.charSpacing=w[1],M.carriageReturn(),H({chars:w[2],extraSpacing:0});break;case n.OPS.paintXObject:G(),O||(O=a.get("XObject")||s.Dict.empty);var S=w[0]instanceof s.Name,E=w[0].name;if(S&&F.getByName(E))break;return void p(new Promise((function(e,t){if(!S)throw new n.FormatError("XObject must be referred to by name.");let f=O.getRaw(E);if(f instanceof s.Ref){if(F.getByRef(f))return void e();if(A.globalImageCache.getData(f,A.pageIndex))return void e();f=k.fetch(f)}if(!(f instanceof b.BaseStream))throw new n.FormatError("XObject should be a stream");const g=f.dict.get("Subtype");if(!(g instanceof s.Name))throw new n.FormatError("XObject should have a Name subtype");if("Form"!==g.name)return F.set(E,f.dict.objId,!0),void e();const p=i.state.clone(),m=new _(p),y=f.dict.getArray("Matrix");Array.isArray(y)&&6===y.length&&m.transform(y),W();const w={enqueueInvoked:!1,enqueue(e,t){this.enqueueInvoked=!0,c.enqueue(e,t)},get desiredSize(){return c.desiredSize},get ready(){return c.ready}};A.getTextContent({stream:f,task:r,resources:f.dict.get("Resources")||a,stateManager:m,includeMarkedContent:o,sink:w,seenStyles:l,viewBox:h,markedContentData:u,disableNormalization:d}).then((function(){w.enqueueInvoked||F.set(E,f.dict.objId,!0),e()}),t)})).catch((function(e){if(!(e instanceof n.AbortException)){if(!A.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring XObject: "'.concat(e,'".'))}})));case n.OPS.setGState:if(S=w[0]instanceof s.Name,E=w[0].name,S&&I.getByName(E))break;return void p(new Promise((function(e,t){if(!S)throw new n.FormatError("GState must be referred to by name.");const r=a.get("ExtGState");if(!(r instanceof s.Dict))throw new n.FormatError("ExtGState should be a dictionary.");const i=r.get(E);if(!(i instanceof s.Dict))throw new n.FormatError("GState should be a dictionary.");const o=i.get("Font");o?(G(),M.fontName=null,M.fontSize=o[1],L(null,o[0]).then(e,t)):(I.set(E,i.objId,!0),e())})).catch((function(e){if(!(e instanceof n.AbortException)){if(!A.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring ExtGState: "'.concat(e,'".'))}})));case n.OPS.beginMarkedContent:G(),o&&(u.level++,f.items.push({type:"beginMarkedContent",tag:w[0]instanceof s.Name?w[0].name:null}));break;case n.OPS.beginMarkedContentProps:if(G(),o){u.level++;let e=null;w[1]instanceof s.Dict&&(e=w[1].get("MCID")),f.items.push({type:"beginMarkedContentProps",id:Number.isInteger(e)?"".concat(A.idFactory.getPageObjId(),"_mc").concat(e):null,tag:w[0]instanceof s.Name?w[0].name:null})}break;case n.OPS.endMarkedContent:if(G(),o){if(0===u.level)break;u.level--,f.items.push({type:"endMarkedContent"})}break;case n.OPS.restore:!e||e.font===M.font&&e.fontSize===M.fontSize&&e.fontName===M.fontName||G()}if(f.items.length>=c.desiredSize){y=!0;break}}y?p(P):(G(),W(),t())})).catch((e=>{if(!(e instanceof n.AbortException)){if(!this.options.ignoreErrors)throw e;(0,n.warn)('getTextContent - ignoring errors during "'.concat(r.name,'" task: "').concat(e,'".')),G(),W()}}))}extractDataStructures(e,t,r){const a=this.xref;let i;const o=this.readToUnicode(r.toUnicode||e.get("ToUnicode")||t.get("ToUnicode"));if(r.composite){const t=e.get("CIDSystemInfo");t instanceof s.Dict&&(r.cidSystemInfo={registry:(0,n.stringToPDFString)(t.get("Registry")),ordering:(0,n.stringToPDFString)(t.get("Ordering")),supplement:t.get("Supplement")});try{const t=e.get("CIDToGIDMap");t instanceof b.BaseStream&&(i=t.getBytes())}catch(e){if(!this.options.ignoreErrors)throw e;(0,n.warn)('extractDataStructures - ignoring CIDToGIDMap data: "'.concat(e,'".'))}}const h=[];let u,d=null;if(e.has("Encoding")){if(u=e.get("Encoding"),u instanceof s.Dict){if(d=u.get("BaseEncoding"),d=d instanceof s.Name?d.name:null,u.has("Differences")){const e=u.get("Differences");let t=0;for(const r of e){const e=a.fetchIfRef(r);if("number"==typeof e)t=e;else{if(!(e instanceof s.Name))throw new n.FormatError("Invalid entry in 'Differences' array: ".concat(e));h[t++]=e.name}}}}else if(u instanceof s.Name)d=u.name;else{const e="Encoding is not a Name nor a Dict";if(!this.options.ignoreErrors)throw new n.FormatError(e);(0,n.warn)(e)}"MacRomanEncoding"!==d&&"MacExpertEncoding"!==d&&"WinAnsiEncoding"!==d&&(d=null)}const f=!r.file||r.isInternalFont,g=(0,l.getSymbolsFonts)()[r.name];if(d&&f&&g&&(d=null),d)r.defaultEncoding=(0,c.getEncoding)(d);else{const e=!!(r.flags&x.FontFlags.Symbolic),t=!!(r.flags&x.FontFlags.Nonsymbolic);u=c.StandardEncoding,"TrueType"!==r.type||t||(u=c.WinAnsiEncoding),(e||g)&&(u=c.MacRomanEncoding,f&&(/Symbol/i.test(r.name)?u=c.SymbolSetEncoding:/Dingbats/i.test(r.name)?u=c.ZapfDingbatsEncoding:/Wingdings/i.test(r.name)&&(u=c.WinAnsiEncoding))),r.defaultEncoding=u}return r.differences=h,r.baseEncodingName=d,r.hasEncoding=!!d||h.length>0,r.dict=e,o.then((e=>(r.toUnicode=e,this.buildToUnicode(r)))).then((e=>(r.toUnicode=e,i&&(r.cidToGidMap=this.readCidToGidMap(i,e)),r)))}_simpleFontToUnicode(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];(0,n.assert)(!e.composite,"Must be a simple font.");const r=[],a=e.defaultEncoding.slice(),i=e.baseEncodingName,s=e.differences;for(const e in s){const t=s[e];".notdef"!==t&&(a[e]=t)}const o=(0,A.getGlyphsUnicode)();for(const n in a){let s=a[n];if(""===s)continue;let l=o[s];if(void 0!==l){r[n]=String.fromCharCode(l);continue}let h=0;switch(s[0]){case"G":3===s.length&&(h=parseInt(s.substring(1),16));break;case"g":5===s.length&&(h=parseInt(s.substring(1),16));break;case"C":case"c":if(s.length>=3&&s.length<=4){const r=s.substring(1);if(t){h=parseInt(r,16);break}if(h=+r,Number.isNaN(h)&&Number.isInteger(parseInt(r,16)))return this._simpleFontToUnicode(e,!0)}break;case"u":l=(0,O.getUnicodeForGlyph)(s,o),-1!==l&&(h=l);break;default:switch(s){case"f_h":case"f_t":case"T_h":r[n]=s.replaceAll("_","");continue}}if(h>0&&h<=1114111&&Number.isInteger(h)){if(i&&h===+n){const e=(0,c.getEncoding)(i);if(e&&(s=e[n])){r[n]=String.fromCharCode(o[s]);continue}}r[n]=String.fromCodePoint(h)}}return r}async buildToUnicode(e){var t;if(e.hasIncludedToUnicodeMap=(null===(t=e.toUnicode)||void 0===t?void 0:t.length)>0,e.hasIncludedToUnicodeMap)return!e.composite&&e.hasEncoding&&(e.fallbackToUnicode=this._simpleFontToUnicode(e)),e.toUnicode;if(!e.composite)return new d.ToUnicodeMap(this._simpleFontToUnicode(e));if(e.composite&&(e.cMap.builtInCMap&&!(e.cMap instanceof a.IdentityCMap)||"Adobe"===e.cidSystemInfo.registry&&("GB1"===e.cidSystemInfo.ordering||"CNS1"===e.cidSystemInfo.ordering||"Japan1"===e.cidSystemInfo.ordering||"Korea1"===e.cidSystemInfo.ordering))){const{registry:t,ordering:r}=e.cidSystemInfo,i=s.Name.get("".concat(t,"-").concat(r,"-UCS2")),o=await a.CMapFactory.create({encoding:i,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null}),c=[],l=[];return e.cMap.forEach((function(e,t){if(t>65535)throw new n.FormatError("Max size of CID is 65,535");const r=o.lookup(t);if(r){l.length=0;for(let e=0,t=r.length;e{if(e instanceof n.AbortException)return null;if(this.options.ignoreErrors)return(0,n.warn)('readToUnicode - ignoring ToUnicode data: "'.concat(e,'".')),null;throw e})):Promise.resolve(null):Promise.resolve(null)}readCidToGidMap(e,t){const r=[];for(let n=0,a=e.length;n>1;(0!==a||t.has(i))&&(r[i]=a)}return r}extractWidths(e,t,r){const n=this.xref;let a=[],i=0;const o=[];let c,l,h,u,d,f,g,p;if(r.composite){if(i=e.has("DW")?e.get("DW"):1e3,p=e.get("W"),p)for(l=0,h=p.length;l{if(i){const e=[];let t=g;for(const r of i)e[t++]=this.xref.fetchIfRef(r);r.widths=e}else r.widths=this.buildCharCodeToWidth(t.widths,r);return new o.Font(e,d,r)}))}i=new s.Dict(null),i.set("FontName",s.Name.get(f)),i.set("FontBBox",c.getArray("FontBBox")||[0,0,0,0])}let A=i.get("FontName"),k=c.get("BaseFont");"string"==typeof A&&(A=s.Name.get(A)),"string"==typeof k&&(k=s.Name.get(k));const C=null===(t=A)||void 0===t?void 0:t.name,O=null===(r=k)||void 0===r?void 0:r.name;if(w||C===O||((0,n.info)("The FontDescriptor's FontName is \\"".concat(C,'" but should be the same as the Font\\'s BaseFont "').concat(O,'".')),C&&O&&(O.startsWith(C)||!(0,l.isKnownFontName)(C)&&(0,l.isKnownFontName)(O))&&(A=null)),A||(A=k),!(A instanceof s.Name))throw new n.FormatError("invalid font name");let F,I,T,M,E;try{F=i.get("FontFile","FontFile2","FontFile3")}catch(e){if(!this.options.ignoreErrors)throw e;(0,n.warn)('translateFont - fetching "'.concat(A.name,'" font file: "').concat(e,'".')),F=new m.NullStream}let P=!1,R=null,N=null;if(F){if(F.dict){const e=F.dict.get("Subtype");e instanceof s.Name&&(I=e.name),T=F.dict.get("Length1"),M=F.dict.get("Length2"),E=F.dict.get("Length3")}}else if(y){const e=(0,u.getXfaFontName)(A.name);e&&(y.fontFamily="".concat(y.fontFamily,"-PdfJS-XFA"),y.metrics=e.metrics||null,R=e.factors||null,F=await this.fetchStandardFontData(e.name),P=!!F,h=c=(0,u.getXfaFontDict)(A.name),d=!0)}else if(!w){const e=(0,l.getStandardFontName)(A.name);e&&(F=await this.fetchStandardFontData(e),P=!!F),!P&&this.options.useSystemFonts&&(N=(0,S.getFontSubstitution)(this.systemFontCache,this.idFactory,this.options.standardFontDataUrl,A.name,e))}if(v={type:f,name:A.name,subtype:I,file:F,length1:T,length2:M,length3:E,isInternalFont:P,loadedName:h.loadedName,composite:d,fixedPitch:!1,fontMatrix:c.getArray("FontMatrix")||n.FONT_IDENTITY_MATRIX,firstChar:g,lastChar:p,toUnicode:b,bbox:i.getArray("FontBBox")||c.getArray("FontBBox"),ascent:i.get("Ascent"),descent:i.get("Descent"),xHeight:i.get("XHeight")||0,capHeight:i.get("CapHeight")||0,flags:i.get("Flags"),italicAngle:i.get("ItalicAngle")||0,isType3Font:w,cssFontInfo:y,scaleFactors:R,systemFontInfo:N},d){const e=h.get("Encoding");e instanceof s.Name&&(v.cidEncoding=e.name);const t=await a.CMapFactory.create({encoding:e,fetchBuiltInCMap:this._fetchBuiltInCMapBound,useCMap:null});v.cMap=t,v.vertical=v.cMap.vertical}return this.extractDataStructures(c,h,v).then((e=>(this.extractWidths(c,i,e),new o.Font(A.name,F,e))))}static buildFontPaths(e,t,r,a){function i(t){const i="".concat(e.loadedName,"_path_").concat(t);try{if(e.renderer.hasBuiltPath(t))return;r.send("commonobj",[i,"FontPath",e.renderer.getPathJs(t)])}catch(e){if(a.ignoreErrors)return void(0,n.warn)("buildFontPaths - ignoring ".concat(i,' glyph: "').concat(e,'".'));throw e}}for(const e of t){i(e.fontChar);const t=e.accent;(null==t?void 0:t.fontChar)&&i(t.fontChar)}}static get fallbackFontDict(){const e=new s.Dict;return e.set("BaseFont",s.Name.get("Helvetica")),e.set("Type",s.Name.get("FallbackType")),e.set("Subtype",s.Name.get("FallbackType")),e.set("Encoding",s.Name.get("WinAnsiEncoding")),(0,n.shadow)(this,"fallbackFontDict",e)}}t.PartialEvaluator=B;class L{constructor(e){let{loadedName:t,font:r,dict:n,evaluatorOptions:a}=e;this.loadedName=t,this.font=r,this.dict=n,this._evaluatorOptions=a||E,this.type3Loaded=null,this.type3Dependencies=r.isType3Font?new Set:null,this.sent=!1}send(e){this.sent||(this.sent=!0,e.send("commonobj",[this.loadedName,"Font",this.font.exportData(this._evaluatorOptions.fontExtraProperties)]))}fallback(e){this.font.data&&(this.font.disableFontFace=!0,B.buildFontPaths(this.font,this.font.glyphCacheValues,e,this._evaluatorOptions))}loadType3Data(e,t,r){if(this.type3Loaded)return this.type3Loaded;if(!this.font.isType3Font)throw new Error("Must be a Type3 font.");const a=e.clone({ignoreErrors:!1});a.parsingType3Font=!0;const i=new s.RefSet(e.type3FontRefs);this.dict.objId&&!i.has(this.dict.objId)&&i.put(this.dict.objId),a.type3FontRefs=i;const o=this.font,c=this.type3Dependencies;let l=Promise.resolve();const h=this.dict.get("CharProcs"),u=this.dict.get("Resources")||t,d=Object.create(null),f=n.Util.normalizeRect(o.bbox||[0,0,0,0]),g=f[2]-f[0],p=f[3]-f[1],m=Math.hypot(g,p);for(const e of h.getKeys())l=l.then((()=>{const t=h.get(e),i=new T.OperatorList;return a.getOperatorList({stream:t,task:r,resources:u,operatorList:i}).then((()=>{i.fnArray[0]===n.OPS.setCharWidthAndBounds&&this._removeType3ColorOperators(i,m),d[e]=i.getIR();for(const e of i.dependencies)c.add(e)})).catch((function(t){(0,n.warn)('Type3 font resource "'.concat(e,'" is not available.'));const r=new T.OperatorList;d[e]=r.getIR()}))}));return this.type3Loaded=l.then((()=>{o.charProcOperatorList=d,this._bbox&&(o.isCharBBox=!0,o.bbox=this._bbox)})),this.type3Loaded}_removeType3ColorOperators(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN;const r=n.Util.normalizeRect(e.argsArray[0].slice(2)),a=r[2]-r[0],i=r[3]-r[1],s=Math.hypot(a,i);0===a||0===i?(e.fnArray.splice(0,1),e.argsArray.splice(0,1)):(0===t||Math.round(s/t)>=10)&&(this._bbox||(this._bbox=[1/0,1/0,-1/0,-1/0]),this._bbox[0]=Math.min(this._bbox[0],r[0]),this._bbox[1]=Math.min(this._bbox[1],r[1]),this._bbox[2]=Math.max(this._bbox[2],r[2]),this._bbox[3]=Math.max(this._bbox[3],r[3]));let o=0,c=e.length;for(;o0&&void 0!==arguments[0]?arguments[0]:new U;this.state=e,this.stateStack=[]}save(){const e=this.state;this.stateStack.push(this.state),this.state=e.clone()}restore(){const e=this.stateStack.pop();e&&(this.state=e)}transform(e){this.state.ctm=n.Util.transform(this.state.ctm,e)}}class j{constructor(){this.ctm=new Float32Array(n.IDENTITY_MATRIX),this.fontName=null,this.fontSize=0,this.loadedName=null,this.font=null,this.fontMatrix=n.FONT_IDENTITY_MATRIX,this.textMatrix=n.IDENTITY_MATRIX.slice(),this.textLineMatrix=n.IDENTITY_MATRIX.slice(),this.charSpacing=0,this.wordSpacing=0,this.leading=0,this.textHScale=1,this.textRise=0}setTextMatrix(e,t,r,n,a,i){const s=this.textMatrix;s[0]=e,s[1]=t,s[2]=r,s[3]=n,s[4]=a,s[5]=i}setTextLineMatrix(e,t,r,n,a,i){const s=this.textLineMatrix;s[0]=e,s[1]=t,s[2]=r,s[3]=n,s[4]=a,s[5]=i}translateTextMatrix(e,t){const r=this.textMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}translateTextLineMatrix(e,t){const r=this.textLineMatrix;r[4]=r[0]*e+r[2]*t+r[4],r[5]=r[1]*e+r[3]*t+r[5]}carriageReturn(){this.translateTextLineMatrix(0,-this.leading),this.textMatrix=this.textLineMatrix.slice()}clone(){const e=Object.create(this);return e.textMatrix=this.textMatrix.slice(),e.textLineMatrix=this.textLineMatrix.slice(),e.fontMatrix=this.fontMatrix.slice(),e}}class U{constructor(){this.ctm=new Float32Array(n.IDENTITY_MATRIX),this.font=null,this.textRenderingMode=n.TextRenderingMode.FILL,this.fillColorSpace=w.ColorSpace.singletons.gray,this.strokeColorSpace=w.ColorSpace.singletons.gray}clone(){return Object.create(this)}}class \${static get opMap(){const e=(0,k.getLookupTableFactory)((function(e){e.w={id:n.OPS.setLineWidth,numArgs:1,variableArgs:!1},e.J={id:n.OPS.setLineCap,numArgs:1,variableArgs:!1},e.j={id:n.OPS.setLineJoin,numArgs:1,variableArgs:!1},e.M={id:n.OPS.setMiterLimit,numArgs:1,variableArgs:!1},e.d={id:n.OPS.setDash,numArgs:2,variableArgs:!1},e.ri={id:n.OPS.setRenderingIntent,numArgs:1,variableArgs:!1},e.i={id:n.OPS.setFlatness,numArgs:1,variableArgs:!1},e.gs={id:n.OPS.setGState,numArgs:1,variableArgs:!1},e.q={id:n.OPS.save,numArgs:0,variableArgs:!1},e.Q={id:n.OPS.restore,numArgs:0,variableArgs:!1},e.cm={id:n.OPS.transform,numArgs:6,variableArgs:!1},e.m={id:n.OPS.moveTo,numArgs:2,variableArgs:!1},e.l={id:n.OPS.lineTo,numArgs:2,variableArgs:!1},e.c={id:n.OPS.curveTo,numArgs:6,variableArgs:!1},e.v={id:n.OPS.curveTo2,numArgs:4,variableArgs:!1},e.y={id:n.OPS.curveTo3,numArgs:4,variableArgs:!1},e.h={id:n.OPS.closePath,numArgs:0,variableArgs:!1},e.re={id:n.OPS.rectangle,numArgs:4,variableArgs:!1},e.S={id:n.OPS.stroke,numArgs:0,variableArgs:!1},e.s={id:n.OPS.closeStroke,numArgs:0,variableArgs:!1},e.f={id:n.OPS.fill,numArgs:0,variableArgs:!1},e.F={id:n.OPS.fill,numArgs:0,variableArgs:!1},e["f*"]={id:n.OPS.eoFill,numArgs:0,variableArgs:!1},e.B={id:n.OPS.fillStroke,numArgs:0,variableArgs:!1},e["B*"]={id:n.OPS.eoFillStroke,numArgs:0,variableArgs:!1},e.b={id:n.OPS.closeFillStroke,numArgs:0,variableArgs:!1},e["b*"]={id:n.OPS.closeEOFillStroke,numArgs:0,variableArgs:!1},e.n={id:n.OPS.endPath,numArgs:0,variableArgs:!1},e.W={id:n.OPS.clip,numArgs:0,variableArgs:!1},e["W*"]={id:n.OPS.eoClip,numArgs:0,variableArgs:!1},e.BT={id:n.OPS.beginText,numArgs:0,variableArgs:!1},e.ET={id:n.OPS.endText,numArgs:0,variableArgs:!1},e.Tc={id:n.OPS.setCharSpacing,numArgs:1,variableArgs:!1},e.Tw={id:n.OPS.setWordSpacing,numArgs:1,variableArgs:!1},e.Tz={id:n.OPS.setHScale,numArgs:1,variableArgs:!1},e.TL={id:n.OPS.setLeading,numArgs:1,variableArgs:!1},e.Tf={id:n.OPS.setFont,numArgs:2,variableArgs:!1},e.Tr={id:n.OPS.setTextRenderingMode,numArgs:1,variableArgs:!1},e.Ts={id:n.OPS.setTextRise,numArgs:1,variableArgs:!1},e.Td={id:n.OPS.moveText,numArgs:2,variableArgs:!1},e.TD={id:n.OPS.setLeadingMoveText,numArgs:2,variableArgs:!1},e.Tm={id:n.OPS.setTextMatrix,numArgs:6,variableArgs:!1},e["T*"]={id:n.OPS.nextLine,numArgs:0,variableArgs:!1},e.Tj={id:n.OPS.showText,numArgs:1,variableArgs:!1},e.TJ={id:n.OPS.showSpacedText,numArgs:1,variableArgs:!1},e["'"]={id:n.OPS.nextLineShowText,numArgs:1,variableArgs:!1},e['"']={id:n.OPS.nextLineSetSpacingShowText,numArgs:3,variableArgs:!1},e.d0={id:n.OPS.setCharWidth,numArgs:2,variableArgs:!1},e.d1={id:n.OPS.setCharWidthAndBounds,numArgs:6,variableArgs:!1},e.CS={id:n.OPS.setStrokeColorSpace,numArgs:1,variableArgs:!1},e.cs={id:n.OPS.setFillColorSpace,numArgs:1,variableArgs:!1},e.SC={id:n.OPS.setStrokeColor,numArgs:4,variableArgs:!0},e.SCN={id:n.OPS.setStrokeColorN,numArgs:33,variableArgs:!0},e.sc={id:n.OPS.setFillColor,numArgs:4,variableArgs:!0},e.scn={id:n.OPS.setFillColorN,numArgs:33,variableArgs:!0},e.G={id:n.OPS.setStrokeGray,numArgs:1,variableArgs:!1},e.g={id:n.OPS.setFillGray,numArgs:1,variableArgs:!1},e.RG={id:n.OPS.setStrokeRGBColor,numArgs:3,variableArgs:!1},e.rg={id:n.OPS.setFillRGBColor,numArgs:3,variableArgs:!1},e.K={id:n.OPS.setStrokeCMYKColor,numArgs:4,variableArgs:!1},e.k={id:n.OPS.setFillCMYKColor,numArgs:4,variableArgs:!1},e.sh={id:n.OPS.shadingFill,numArgs:1,variableArgs:!1},e.BI={id:n.OPS.beginInlineImage,numArgs:0,variableArgs:!1},e.ID={id:n.OPS.beginImageData,numArgs:0,variableArgs:!1},e.EI={id:n.OPS.endInlineImage,numArgs:1,variableArgs:!1},e.Do={id:n.OPS.paintXObject,numArgs:1,variableArgs:!1},e.MP={id:n.OPS.markPoint,numArgs:1,variableArgs:!1},e.DP={id:n.OPS.markPointProps,numArgs:2,variableArgs:!1},e.BMC={id:n.OPS.beginMarkedContent,numArgs:1,variableArgs:!1},e.BDC={id:n.OPS.beginMarkedContentProps,numArgs:2,variableArgs:!1},e.EMC={id:n.OPS.endMarkedContent,numArgs:0,variableArgs:!1},e.BX={id:n.OPS.beginCompat,numArgs:0,variableArgs:!1},e.EX={id:n.OPS.endCompat,numArgs:0,variableArgs:!1},e.BM=null,e.BD=null,e.true=null,e.fa=null,e.fal=null,e.fals=null,e.false=null,e.nu=null,e.nul=null,e.null=null}));return(0,n.shadow)(this,"opMap",e())}constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new _;this.parser=new g.Parser({lexer:new g.Lexer(e,$.opMap),xref:t}),this.stateManager=r,this.nonProcessedArgs=[],this._isPathOp=!1,this._numInvalidPathOPS=0}get savedStatesDepth(){return this.stateManager.stateStack.length}read(e){let t=e.args;for(;;){const r=this.parser.getObj();if(r instanceof s.Cmd){const a=r.cmd,i=$.opMap[a];if(!i){(0,n.warn)('Unknown command "'.concat(a,'".'));continue}const s=i.id,o=i.numArgs;let c=null!==t?t.length:0;if(this._isPathOp||(this._numInvalidPathOPS=0),this._isPathOp=s>=n.OPS.moveTo&&s<=n.OPS.endPath,i.variableArgs)c>o&&(0,n.info)("Command ".concat(a,": expected [0, ").concat(o,"] args, but received ").concat(c," args."));else{if(c!==o){const e=this.nonProcessedArgs;for(;c>o;)e.push(t.shift()),c--;for(;c$.MAX_INVALID_PATH_OPS)throw new n.FormatError("Invalid ".concat(e));(0,n.warn)("Skipping ".concat(e)),null!==t&&(t.length=0);continue}}return this.preprocessCommand(s,t),e.fn=s,e.args=t,!0}if(r===s.EOF)return!1;if(null!==r&&(null===t&&(t=[]),t.push(r),t.length>33))throw new n.FormatError("Too many arguments")}}preprocessCommand(e,t){switch(0|e){case n.OPS.save:this.stateManager.save();break;case n.OPS.restore:this.stateManager.restore();break;case n.OPS.transform:this.stateManager.transform(t)}}}i($,"MAX_INVALID_PATH_OPS",10),t.EvaluatorPreprocessor=$},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.IdentityCMap=t.CMapFactory=t.CMap=void 0,r(139),r(2);var n=r(144),a=r(150),i=r(151),s=r(165),o=r(166),c=r(149),l=r(154);const h=["Adobe-GB1-UCS2","Adobe-CNS1-UCS2","Adobe-Japan1-UCS2","Adobe-Korea1-UCS2","78-EUC-H","78-EUC-V","78-H","78-RKSJ-H","78-RKSJ-V","78-V","78ms-RKSJ-H","78ms-RKSJ-V","83pv-RKSJ-H","90ms-RKSJ-H","90ms-RKSJ-V","90msp-RKSJ-H","90msp-RKSJ-V","90pv-RKSJ-H","90pv-RKSJ-V","Add-H","Add-RKSJ-H","Add-RKSJ-V","Add-V","Adobe-CNS1-0","Adobe-CNS1-1","Adobe-CNS1-2","Adobe-CNS1-3","Adobe-CNS1-4","Adobe-CNS1-5","Adobe-CNS1-6","Adobe-GB1-0","Adobe-GB1-1","Adobe-GB1-2","Adobe-GB1-3","Adobe-GB1-4","Adobe-GB1-5","Adobe-Japan1-0","Adobe-Japan1-1","Adobe-Japan1-2","Adobe-Japan1-3","Adobe-Japan1-4","Adobe-Japan1-5","Adobe-Japan1-6","Adobe-Korea1-0","Adobe-Korea1-1","Adobe-Korea1-2","B5-H","B5-V","B5pc-H","B5pc-V","CNS-EUC-H","CNS-EUC-V","CNS1-H","CNS1-V","CNS2-H","CNS2-V","ETHK-B5-H","ETHK-B5-V","ETen-B5-H","ETen-B5-V","ETenms-B5-H","ETenms-B5-V","EUC-H","EUC-V","Ext-H","Ext-RKSJ-H","Ext-RKSJ-V","Ext-V","GB-EUC-H","GB-EUC-V","GB-H","GB-V","GBK-EUC-H","GBK-EUC-V","GBK2K-H","GBK2K-V","GBKp-EUC-H","GBKp-EUC-V","GBT-EUC-H","GBT-EUC-V","GBT-H","GBT-V","GBTpc-EUC-H","GBTpc-EUC-V","GBpc-EUC-H","GBpc-EUC-V","H","HKdla-B5-H","HKdla-B5-V","HKdlb-B5-H","HKdlb-B5-V","HKgccs-B5-H","HKgccs-B5-V","HKm314-B5-H","HKm314-B5-V","HKm471-B5-H","HKm471-B5-V","HKscs-B5-H","HKscs-B5-V","Hankaku","Hiragana","KSC-EUC-H","KSC-EUC-V","KSC-H","KSC-Johab-H","KSC-Johab-V","KSC-V","KSCms-UHC-H","KSCms-UHC-HW-H","KSCms-UHC-HW-V","KSCms-UHC-V","KSCpc-EUC-H","KSCpc-EUC-V","Katakana","NWP-H","NWP-V","RKSJ-H","RKSJ-V","Roman","UniCNS-UCS2-H","UniCNS-UCS2-V","UniCNS-UTF16-H","UniCNS-UTF16-V","UniCNS-UTF32-H","UniCNS-UTF32-V","UniCNS-UTF8-H","UniCNS-UTF8-V","UniGB-UCS2-H","UniGB-UCS2-V","UniGB-UTF16-H","UniGB-UTF16-V","UniGB-UTF32-H","UniGB-UTF32-V","UniGB-UTF8-H","UniGB-UTF8-V","UniJIS-UCS2-H","UniJIS-UCS2-HW-H","UniJIS-UCS2-HW-V","UniJIS-UCS2-V","UniJIS-UTF16-H","UniJIS-UTF16-V","UniJIS-UTF32-H","UniJIS-UTF32-V","UniJIS-UTF8-H","UniJIS-UTF8-V","UniJIS2004-UTF16-H","UniJIS2004-UTF16-V","UniJIS2004-UTF32-H","UniJIS2004-UTF32-V","UniJIS2004-UTF8-H","UniJIS2004-UTF8-V","UniJISPro-UCS2-HW-V","UniJISPro-UCS2-V","UniJISPro-UTF8-V","UniJISX0213-UTF32-H","UniJISX0213-UTF32-V","UniJISX02132004-UTF32-H","UniJISX02132004-UTF32-V","UniKS-UCS2-H","UniKS-UCS2-V","UniKS-UTF16-H","UniKS-UTF16-V","UniKS-UTF32-H","UniKS-UTF32-V","UniKS-UTF8-H","UniKS-UTF8-V","V","WP-Symbol"],u=2**24-1;class d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.codespaceRanges=[[],[],[],[]],this.numCodespaceRanges=0,this._map=[],this.name="",this.vertical=!1,this.useCMap=null,this.builtInCMap=e}addCodespaceRange(e,t,r){this.codespaceRanges[e-1].push(t,r),this.numCodespaceRanges++}mapCidRange(e,t,r){if(t-e>u)throw new Error("mapCidRange - ignoring data above MAX_MAP_RANGE.");for(;e<=t;)this._map[e++]=r++}mapBfRange(e,t,r){if(t-e>u)throw new Error("mapBfRange - ignoring data above MAX_MAP_RANGE.");const n=r.length-1;for(;e<=t;){this._map[e++]=r;const t=r.charCodeAt(n)+1;r=t>255?r.substring(0,n-1)+String.fromCharCode(r.charCodeAt(n-1)+1)+"\\0":r.substring(0,n)+String.fromCharCode(t)}}mapBfRangeToArray(e,t,r){if(t-e>u)throw new Error("mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.");const n=r.length;let a=0;for(;e<=t&&a>>0;const s=a[i];for(let e=0,t=s.length;e=t&&n<=a)return r.charcode=n,void(r.length=i+1)}}r.charcode=0,r.length=1}getCharCodeLength(e){const t=this.codespaceRanges;for(let r=0,n=t.length;r=a&&e<=i)return r+1}}return 1}get length(){return this._map.length}get isIdentityCMap(){if("Identity-H"!==this.name&&"Identity-V"!==this.name)return!1;if(65536!==this._map.length)return!1;for(let e=0;e<65536;e++)if(this._map[e]!==e)return!1;return!0}}t.CMap=d;class f extends d{constructor(e,t){super(),this.vertical=e,this.addCodespaceRange(t,0,65535)}mapCidRange(e,t,r){(0,n.unreachable)("should not call mapCidRange")}mapBfRange(e,t,r){(0,n.unreachable)("should not call mapBfRange")}mapBfRangeToArray(e,t,r){(0,n.unreachable)("should not call mapBfRangeToArray")}mapOne(e,t){(0,n.unreachable)("should not call mapCidOne")}lookup(e){return Number.isInteger(e)&&e<=65535?e:void 0}contains(e){return Number.isInteger(e)&&e<=65535}forEach(e){for(let t=0;t<=65535;t++)e(t,t)}charCodeOf(e){return Number.isInteger(e)&&e<=65535?e:-1}getMap(){const e=new Array(65536);for(let t=0;t<=65535;t++)e[t]=t;return e}get length(){return 65536}get isIdentityCMap(){(0,n.unreachable)("should not access .isIdentityCMap")}}function g(e){let t=0;for(let r=0;r>>0}function p(e){if("string"!=typeof e)throw new n.FormatError("Malformed CMap: expected string.")}function m(e){if(!Number.isInteger(e))throw new n.FormatError("Malformed CMap: expected int.")}function b(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endbfchar"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=r;e.mapOne(n,i)}}function y(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endbfrange"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=g(r);if(r=t.getObj(),Number.isInteger(r)||"string"==typeof r){const t=Number.isInteger(r)?String.fromCharCode(r):r;e.mapBfRange(n,i,t)}else{if(!(0,a.isCmd)(r,"["))break;{r=t.getObj();const s=[];for(;!(0,a.isCmd)(r,"]")&&r!==a.EOF;)s.push(r),r=t.getObj();e.mapBfRangeToArray(n,i,s)}}}throw new n.FormatError("Invalid bf range.")}function w(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcidchar"))return;p(r);const n=g(r);r=t.getObj(),m(r);const i=r;e.mapOne(n,i)}}function v(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcidrange"))return;p(r);const n=g(r);r=t.getObj(),p(r);const i=g(r);r=t.getObj(),m(r);const s=r;e.mapCidRange(n,i,s)}}function x(e,t){for(;;){let r=t.getObj();if(r===a.EOF)break;if((0,a.isCmd)(r,"endcodespacerange"))return;if("string"!=typeof r)break;const n=g(r);if(r=t.getObj(),"string"!=typeof r)break;const i=g(r);e.addCodespaceRange(r.length,n,i)}throw new n.FormatError("Invalid codespace range.")}function S(e,t){const r=t.getObj();Number.isInteger(r)&&(e.vertical=!!r)}function A(e,t){const r=t.getObj();r instanceof a.Name&&(e.name=r.name)}async function k(e,t,r,i){let s,o;e:for(;;)try{const r=t.getObj();if(r===a.EOF)break;if(r instanceof a.Name)"WMode"===r.name?S(e,t):"CMapName"===r.name&&A(e,t),s=r;else if(r instanceof a.Cmd)switch(r.cmd){case"endcmap":break e;case"usecmap":s instanceof a.Name&&(o=s.name);break;case"begincodespacerange":x(e,t);break;case"beginbfchar":b(e,t);break;case"begincidchar":w(e,t);break;case"beginbfrange":y(e,t);break;case"begincidrange":v(e,t)}}catch(e){if(e instanceof c.MissingDataException)throw e;(0,n.warn)("Invalid cMap data: "+e);continue}return!i&&o&&(i=o),i?C(e,r,i):e}async function C(e,t,r){if(e.useCMap=await O(r,t),0===e.numCodespaceRanges){const t=e.useCMap.codespaceRanges;for(let r=0;rC(i,t,e)));if(a===n.CMapCompressionType.NONE){const e=new o.Lexer(new l.Stream(r));return k(i,e,t,null)}throw new Error('Invalid CMap "compressionType" value: '.concat(a))}t.IdentityCMap=f,t.CMapFactory=class{static async create(e){let{encoding:t,fetchBuiltInCMap:r,useCMap:n}=e;if(t instanceof a.Name)return O(t.name,r);if(t instanceof i.BaseStream){const e=await k(new d,new o.Lexer(t),r,n);return e.isIdentityCMap?O(e.name,r):e}throw new Error("Encoding required.")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BinaryCMapReader=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);function a(e,t){let r=0;for(let n=0;n<=t;n++)r=r<<8|e[n];return r>>>0}function i(e,t){return 1===t?String.fromCharCode(e[0],e[1]):3===t?String.fromCharCode(e[0],e[1],e[2],e[3]):String.fromCharCode(...e.subarray(0,t+1))}function s(e,t,r){let n=0;for(let a=r;a>=0;a--)n+=e[a]+t[a],e[a]=255&n,n>>=8}function o(e,t){let r=1;for(let n=t;n>=0&&r>0;n--)r+=e[n],e[n]=255&r,r>>=8}const c=16;class l{constructor(e){this.buffer=e,this.pos=0,this.end=e.length,this.tmpBuf=new Uint8Array(19)}readByte(){return this.pos>=this.end?-1:this.buffer[this.pos++]}readNumber(){let e,t=0;do{const r=this.readByte();if(r<0)throw new n.FormatError("unexpected EOF in bcmap");e=!(128&r),t=t<<7|127&r}while(!e);return t}readSigned(){const e=this.readNumber();return 1&e?~(e>>>1):e>>>1}readHex(e,t){e.set(this.buffer.subarray(this.pos,this.pos+t+1)),this.pos+=t+1}readHexNumber(e,t){let r;const a=this.tmpBuf;let i=0;do{const e=this.readByte();if(e<0)throw new n.FormatError("unexpected EOF in bcmap");r=!(128&e),a[i++]=127&e}while(!r);let s=t,o=0,c=0;for(;s>=0;){for(;c<8&&a.length>0;)o|=a[--i]<>=8,c-=8}}readHexSigned(e,t){this.readHexNumber(e,t);const r=1&e[t]?255:0;let n=0;for(let a=0;a<=t;a++)n=(1&n)<<8|e[a],e[a]=n>>1^r}readString(){const e=this.readNumber(),t=new Array(e);for(let r=0;r=0;){const e=y>>5;if(7===e){switch(31&y){case 0:n.readString();break;case 1:u=n.readString()}continue}const r=!!(16&y),l=15&y;if(l+1>c)throw new Error("BinaryCMapReader.process: Invalid dataSize.");const h=1,w=n.readNumber();switch(e){case 0:n.readHex(d,l),n.readHexNumber(f,l),s(f,d,l),t.addCodespaceRange(l+1,a(d,l),a(f,l));for(let e=1;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=t.Linearization=t.Lexer=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(150),i=r(149),s=r(154),o=r(167),c=r(169),l=r(170),h=r(172),u=r(173),d=r(176),f=r(179),g=r(181),p=r(182),m=r(183);class b{constructor(e){let{lexer:t,xref:r,allowStreams:n=!1,recoveryMode:a=!1}=e;this.lexer=t,this.xref=r,this.allowStreams=n,this.recoveryMode=a,this.imageCache=Object.create(null),this._imageId=0,this.refill()}refill(){this.buf1=this.lexer.getObj(),this.buf2=this.lexer.getObj()}shift(){this.buf2 instanceof a.Cmd&&"ID"===this.buf2.cmd?(this.buf1=this.buf2,this.buf2=null):(this.buf1=this.buf2,this.buf2=this.lexer.getObj())}tryShift(){try{return this.shift(),!0}catch(e){if(e instanceof i.MissingDataException)throw e;return!1}}getObj(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=this.buf1;if(this.shift(),t instanceof a.Cmd)switch(t.cmd){case"BI":return this.makeInlineImage(e);case"[":const r=[];for(;!(0,a.isCmd)(this.buf1,"]")&&this.buf1!==a.EOF;)r.push(this.getObj(e));if(this.buf1===a.EOF){if(this.recoveryMode)return r;throw new i.ParserEOFException("End of file inside array.")}return this.shift(),r;case"<<":const s=new a.Dict(this.xref);for(;!(0,a.isCmd)(this.buf1,">>")&&this.buf1!==a.EOF;){if(!(this.buf1 instanceof a.Name)){(0,n.info)("Malformed dictionary: key must be a name object"),this.shift();continue}const t=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;s.set(t,this.getObj(e))}if(this.buf1===a.EOF){if(this.recoveryMode)return s;throw new i.ParserEOFException("End of file inside dictionary.")}return(0,a.isCmd)(this.buf2,"stream")?this.allowStreams?this.makeStream(s,e):s:(this.shift(),s);default:return t}if(Number.isInteger(t)){if(Number.isInteger(this.buf1)&&(0,a.isCmd)(this.buf2,"R")){const e=a.Ref.get(t,this.buf1);return this.shift(),this.shift(),e}return t}return"string"==typeof t&&e?e.decryptString(t):t}findDefaultInlineStreamEnd(e){const{knownCommands:t}=this.lexer,r=e.pos;let o,c,l=0;for(;-1!==(o=e.getByte());)if(0===l)l=69===o?1:0;else if(1===l)l=73===o?2:0;else if(32===o||10===o||13===o){c=e.pos;const r=e.peekBytes(15),i=r.length;if(0===i)break;for(let e=0;e127)){l=0;break}if(2!==l)continue;if(!t){(0,n.warn)("findDefaultInlineStreamEnd - \`lexer.knownCommands\` is undefined.");continue}const h=new v(new s.Stream(r.slice()),t);h._hexStringWarn=()=>{};let u=0;for(;;){const e=h.getObj();if(e===a.EOF){l=0;break}if(e instanceof a.Cmd){const r=t[e.cmd];if(!r){l=0;break}if(r.variableArgs?u<=r.numArgs:u===r.numArgs)break;u=0}else u++}if(2===l)break}else l=0;-1===o&&((0,n.warn)("findDefaultInlineStreamEnd: Reached the end of the stream without finding a valid EI marker"),c&&((0,n.warn)('... trying to recover by using the last "EI" occurrence.'),e.skip(-(e.pos-c))));let h=4;return e.skip(-h),o=e.peekByte(),e.skip(h),(0,i.isWhiteSpace)(o)||h--,e.pos-h-r}findDCTDecodeInlineStreamEnd(e){const t=e.pos;let r,a,i=!1;for(;-1!==(r=e.getByte());)if(255===r){switch(e.getByte()){case 0:break;case 255:e.skip(-1);break;case 217:i=!0;break;case 192:case 193:case 194:case 195:case 197:case 198:case 199:case 201:case 202:case 203:case 205:case 206:case 207:case 196:case 204:case 218:case 219:case 220:case 221:case 222:case 223:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239:case 254:a=e.getUint16(),a>2?e.skip(a-2):e.skip(-2)}if(i)break}const s=e.pos-t;return-1===r?((0,n.warn)("Inline DCTDecode image stream: EOI marker not found, searching for /EI/ instead."),e.skip(-s),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),s)}findASCII85DecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte());)if(126===r){const t=e.pos;for(r=e.peekByte();(0,i.isWhiteSpace)(r);)e.skip(),r=e.peekByte();if(62===r){e.skip();break}if(e.pos>t){const t=e.peekBytes(2);if(69===t[0]&&73===t[1])break}}const a=e.pos-t;return-1===r?((0,n.warn)("Inline ASCII85Decode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-a),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),a)}findASCIIHexDecodeInlineStreamEnd(e){const t=e.pos;let r;for(;-1!==(r=e.getByte())&&62!==r;);const a=e.pos-t;return-1===r?((0,n.warn)("Inline ASCIIHexDecode image stream: EOD marker not found, searching for /EI/ instead."),e.skip(-a),this.findDefaultInlineStreamEnd(e)):(this.inlineStreamSkipEI(e),a)}inlineStreamSkipEI(e){let t,r=0;for(;-1!==(t=e.getByte());)if(0===r)r=69===t?1:0;else if(1===r)r=73===t?2:0;else if(2===r)break}makeInlineImage(e){const t=this.lexer,r=t.stream,i=Object.create(null);let s;for(;!(0,a.isCmd)(this.buf1,"ID")&&this.buf1!==a.EOF;){if(!(this.buf1 instanceof a.Name))throw new n.FormatError("Dictionary key must be a name object");const t=this.buf1.name;if(this.shift(),this.buf1===a.EOF)break;i[t]=this.getObj(e)}-1!==t.beginInlineImagePos&&(s=r.pos-t.beginInlineImagePos);const o=this.xref.fetchIfRef(i.F||i.Filter);let c;if(o instanceof a.Name)c=o.name;else if(Array.isArray(o)){const e=this.xref.fetchIfRef(o[0]);e instanceof a.Name&&(c=e.name)}const l=r.pos;let h,u;switch(c){case"DCT":case"DCTDecode":h=this.findDCTDecodeInlineStreamEnd(r);break;case"A85":case"ASCII85Decode":h=this.findASCII85DecodeInlineStreamEnd(r);break;case"AHx":case"ASCIIHexDecode":h=this.findASCIIHexDecodeInlineStreamEnd(r);break;default:h=this.findDefaultInlineStreamEnd(r)}if(h<1e3&&s>0){const e=r.pos;r.pos=t.beginInlineImagePos,u=function(e){const t=[],r=e.length;let n=0;for(;n=n)return r.pos+=s,r.pos-e;s++}r.pos+=i}return-1}makeStream(e,t){const r=this.lexer;let s=r.stream;r.skipToNextLine();const o=s.pos-1;let c=e.get("Length");if(Number.isInteger(c)||((0,n.info)('Bad length "'.concat(c&&c.toString(),'" in stream.')),c=0),s.pos=o+c,r.nextChar(),this.tryShift()&&(0,a.isCmd)(this.buf2,"endstream"))this.shift();else{const e=new Uint8Array([101,110,100,115,116,114,101,97,109]);let t=this._findStreamLength(o,e);if(t<0){const r=1;for(let a=1;a<=r;a++){const r=e.length-a,c=e.slice(0,r),l=this._findStreamLength(o,c);if(l>=0){const e=s.peekBytes(r+1)[r];if(!(0,i.isWhiteSpace)(e))break;(0,n.info)('Found "'.concat((0,n.bytesToString)(c),'" when searching for endstream command.')),t=l;break}}if(t<0)throw new n.FormatError("Missing endstream command.")}c=t,r.nextChar(),this.shift(),this.shift()}return this.shift(),s=s.makeSubStream(o,c,e),t&&(s=t.createStream(s,c)),s=this.filter(s,e,c),s.dict=e,s}filter(e,t,r){let i=t.get("F","Filter"),s=t.get("DP","DecodeParms");if(i instanceof a.Name)return Array.isArray(s)&&(0,n.warn)("/DecodeParms should not be an Array, when /Filter is a Name."),this.makeFilter(e,i.name,r,s);let o=r;if(Array.isArray(i)){const t=i,r=s;for(let c=0,l=t.length;c=48&&e<=57?15&e:e>=65&&e<=70||e>=97&&e<=102?9+(15&e):-1}class v{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.stream=e,this.nextChar(),this.strBuf=[],this.knownCommands=t,this._hexStringNumWarn=0,this.beginInlineImagePos=-1}nextChar(){return this.currentChar=this.stream.getByte()}peekChar(){return this.stream.peekByte()}getNumber(){let e=this.currentChar,t=!1,r=0,a=1;if(45===e?(a=-1,e=this.nextChar(),45===e&&(e=this.nextChar())):43===e&&(e=this.nextChar()),10===e||13===e)do{e=this.nextChar()}while(10===e||13===e);if(46===e&&(r=10,e=this.nextChar()),e<48||e>57){const t="Invalid number: ".concat(String.fromCharCode(e)," (charCode ").concat(e,")");if((0,i.isWhiteSpace)(e)||-1===e)return(0,n.info)('Lexer.getNumber - "'.concat(t,'".')),0;throw new n.FormatError(t)}let s=e-48,o=0,c=1;for(;(e=this.nextChar())>=0;)if(e>=48&&e<=57){const n=e-48;t?o=10*o+n:(0!==r&&(r*=10),s=10*s+n)}else if(46===e){if(0!==r)break;r=1}else if(45===e)(0,n.warn)("Badly formatted number: minus sign in the middle");else{if(69!==e&&101!==e)break;if(e=this.peekChar(),43===e||45===e)c=45===e?-1:1,this.nextChar();else if(e<48||e>57)break;t=!0}return 0!==r&&(s/=r),t&&(s*=10**(c*o)),a*s}getString(){let e=1,t=!1;const r=this.strBuf;r.length=0;let a=this.nextChar();for(;;){let i=!1;switch(0|a){case-1:(0,n.warn)("Unterminated string"),t=!0;break;case 40:++e,r.push("(");break;case 41:0==--e?(this.nextChar(),t=!0):r.push(")");break;case 92:switch(a=this.nextChar(),a){case-1:(0,n.warn)("Unterminated string"),t=!0;break;case 110:r.push("\\n");break;case 114:r.push("\\r");break;case 116:r.push("\\t");break;case 98:r.push("\\b");break;case 102:r.push("\\f");break;case 92:case 40:case 41:r.push(String.fromCharCode(a));break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:let e=15&a;a=this.nextChar(),i=!0,a>=48&&a<=55&&(e=(e<<3)+(15&a),a=this.nextChar(),a>=48&&a<=55&&(i=!1,e=(e<<3)+(15&a))),r.push(String.fromCharCode(e));break;case 13:10===this.peekChar()&&this.nextChar();break;case 10:break;default:r.push(String.fromCharCode(a))}break;default:r.push(String.fromCharCode(a))}if(t)break;i||(a=this.nextChar())}return r.join("")}getName(){let e,t;const r=this.strBuf;for(r.length=0;(e=this.nextChar())>=0&&!y[e];)if(35===e){if(e=this.nextChar(),y[e]){(0,n.warn)("Lexer_getName: NUMBER SIGN (#) should be followed by a hexadecimal number."),r.push("#");break}const a=w(e);if(-1!==a){t=e,e=this.nextChar();const i=w(e);if(-1===i){if((0,n.warn)("Lexer_getName: Illegal digit (".concat(String.fromCharCode(e),") in hexadecimal number.")),r.push("#",String.fromCharCode(t)),y[e])break;r.push(String.fromCharCode(e));continue}r.push(String.fromCharCode(a<<4|i))}else r.push("#",String.fromCharCode(e))}else r.push(String.fromCharCode(e));return r.length>127&&(0,n.warn)("Name token is longer than allowed by the spec: ".concat(r.length)),a.Name.get(r.join(""))}_hexStringWarn(e){5!=this._hexStringNumWarn++?this._hexStringNumWarn>5||(0,n.warn)("getHexString - ignoring invalid character: ".concat(e)):(0,n.warn)("getHexString - ignoring additional invalid characters.")}getHexString(){const e=this.strBuf;e.length=0;let t,r,a=this.currentChar,i=!0;for(this._hexStringNumWarn=0;;){if(a<0){(0,n.warn)("Unterminated hex string");break}if(62===a){this.nextChar();break}if(1!==y[a]){if(i){if(t=w(a),-1===t){this._hexStringWarn(a),a=this.nextChar();continue}}else{if(r=w(a),-1===r){this._hexStringWarn(a),a=this.nextChar();continue}e.push(String.fromCharCode(t<<4|r))}i=!i,a=this.nextChar()}else a=this.nextChar()}return e.join("")}getObj(){let e=!1,t=this.currentChar;for(;;){if(t<0)return a.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(1!==y[t])break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return this.getNumber();case 40:return this.getString();case 47:return this.getName();case 91:return this.nextChar(),a.Cmd.get("[");case 93:return this.nextChar(),a.Cmd.get("]");case 60:return t=this.nextChar(),60===t?(this.nextChar(),a.Cmd.get("<<")):this.getHexString();case 62:return t=this.nextChar(),62===t?(this.nextChar(),a.Cmd.get(">>")):a.Cmd.get(">");case 123:return this.nextChar(),a.Cmd.get("{");case 125:return this.nextChar(),a.Cmd.get("}");case 41:throw this.nextChar(),new n.FormatError("Illegal character: ".concat(t))}let r=String.fromCharCode(t);if(t<32||t>127){const e=this.peekChar();if(e>=32&&e<=127)return this.nextChar(),a.Cmd.get(r)}const i=this.knownCommands;let s=void 0!==(null==i?void 0:i[r]);for(;(t=this.nextChar())>=0&&!y[t];){const e=r+String.fromCharCode(t);if(s&&void 0===i[e])break;if(128===r.length)throw new n.FormatError("Command token too long: ".concat(r.length));r=e,s=void 0!==(null==i?void 0:i[r])}return"true"===r||"false"!==r&&("null"===r?null:("BI"===r&&(this.beginInlineImagePos=this.stream.pos),a.Cmd.get(r)))}skipToNextLine(){let e=this.currentChar;for(;e>=0;){if(13===e){e=this.nextChar(),10===e&&this.nextChar();break}if(10===e){this.nextChar();break}e=this.nextChar()}}}t.Lexer=v,t.Linearization=class{static create(e){function t(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=e.get(t);if(Number.isInteger(n)&&(r?n>=0:n>0))return n;throw new Error('The "'.concat(t,'" parameter in the linearization dictionary is invalid.'))}const r=new b({lexer:new v(e),xref:null}),n=r.getObj(),i=r.getObj(),s=r.getObj(),o=r.getObj();let c,l;if(!(Number.isInteger(n)&&Number.isInteger(i)&&(0,a.isCmd)(s,"obj")&&o instanceof a.Dict&&"number"==typeof(c=o.get("Linearized"))&&c>0))return null;if((l=t(o,"L"))!==e.length)throw new Error('The "L" parameter in the linearization dictionary does not equal the stream length.');return{length:l,hints:function(e){const t=e.get("H");let r;if(Array.isArray(t)&&(2===(r=t.length)||4===r)){for(let e=0;e0))throw new Error("Hint (".concat(e,") in the linearization dictionary is invalid."))}return t}throw new Error("Hint array in the linearization dictionary is invalid.")}(o),objectNumberFirst:t(o,"O"),endFirst:t(o,"E"),numPages:t(o,"N"),mainXRefEntriesOffset:t(o,"T"),pageFirst:o.has("P")?t(o,"P",!0):0}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Ascii85Stream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(149);class i extends n.DecodeStream{constructor(e,t){t&&(t*=.8),super(t),this.str=e,this.dict=e.dict,this.input=new Uint8Array(5)}readBlock(){const e=this.str;let t=e.getByte();for(;(0,a.isWhiteSpace)(t);)t=e.getByte();if(-1===t||126===t)return void(this.eof=!0);const r=this.bufferLength;let n,i;if(122===t){for(n=this.ensureBuffer(r+4),i=0;i<4;++i)n[r+i]=0;this.bufferLength+=4}else{const s=this.input;for(s[0]=t,i=1;i<5;++i){for(t=e.getByte();(0,a.isWhiteSpace)(t);)t=e.getByte();if(s[i]=t,-1===t||126===t)break}if(n=this.ensureBuffer(r+i-1),this.bufferLength+=i-1,i<5){for(;i<5;++i)s[i]=117;this.eof=!0}let o=0;for(i=0;i<5;++i)o=85*o+(s[i]-33);for(i=3;i>=0;--i)n[r+i]=255&o,o>>=8}}}t.Ascii85Stream=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StreamsSequenceStream=t.DecodeStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(151),a=r(154);const i=new Uint8Array(0);class s extends n.BaseStream{constructor(e){if(super(),this._rawMinBufferLength=e||0,this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=i,this.minBufferLength=512,e)for(;this.minBufferLengthn&&(r=n)}else{for(;!this.eof;)this.readBlock();r=this.bufferLength}return this.pos=r,this.buffer.subarray(t,r)}reset(){this.pos=0}makeSubStream(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(void 0===t)for(;!this.eof;)this.readBlock();else{const r=e+t;for(;this.bufferLength<=r&&!this.eof;)this.readBlock()}return new a.Stream(this.buffer,e,t,r)}getBaseStreams(){return this.str?this.str.getBaseStreams():null}}t.DecodeStream=s,t.StreamsSequenceStream=class extends s{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=0;for(const t of e)r+=t instanceof s?t._rawMinBufferLength:t.length;super(r),this.streams=e,this._onError=t}readBlock(){const e=this.streams;if(0===e.length)return void(this.eof=!0);const t=e.shift();let r;try{r=t.getBytes()}catch(e){var n;if(this._onError)return void this._onError(e,null===(n=t.dict)||void 0===n?void 0:n.objId);throw e}const a=this.bufferLength,i=a+r.length;this.ensureBuffer(i).set(r,a),this.bufferLength=i}getBaseStreams(){const e=[];for(const t of this.streams){const r=t.getBaseStreams();r&&e.push(...r)}return e.length>0?e:null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AsciiHexStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t){t&&(t*=.5),super(t),this.str=e,this.dict=e.dict,this.firstDigit=-1}readBlock(){const e=this.str.getBytes(8e3);if(!e.length)return void(this.eof=!0);const t=e.length+1>>1,r=this.ensureBuffer(this.bufferLength+t);let n=this.bufferLength,a=this.firstDigit;for(const t of e){let e;if(t>=48&&t<=57)e=15&t;else{if(!(t>=65&&t<=70||t>=97&&t<=102)){if(62===t){this.eof=!0;break}continue}e=9+(15&t)}a<0?a=e:(r[n++]=a<<4|e,a=-1)}a>=0&&this.eof&&(r[n++]=a<<4,a=-1),this.firstDigit=a,this.bufferLength=n}}t.AsciiHexStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxStream=void 0;var n=r(171),a=r(168),i=r(150);class s extends a.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,r instanceof i.Dict||(r=i.Dict.empty);const a={next:()=>e.getByte()};this.ccittFaxDecoder=new n.CCITTFaxDecoder(a,{K:r.get("K"),EndOfLine:r.get("EndOfLine"),EncodedByteAlign:r.get("EncodedByteAlign"),Columns:r.get("Columns"),Rows:r.get("Rows"),EndOfBlock:r.get("EndOfBlock"),BlackIs1:r.get("BlackIs1")})}readBlock(){for(;!this.eof;){const e=this.ccittFaxDecoder.readNextChar();if(-1===e)return void(this.eof=!0);this.ensureBuffer(this.bufferLength+1),this.buffer[this.bufferLength++]=e}}}t.CCITTFaxStream=s},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CCITTFaxDecoder=void 0,r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144);const a=-1,i=[[-1,-1],[-1,-1],[7,8],[7,7],[6,6],[6,6],[6,5],[6,5],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[4,0],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]],s=[[-1,-1],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[12,1984],[12,2048],[12,2112],[12,2176],[12,2240],[12,2304],[11,1856],[11,1856],[11,1920],[11,1920],[12,2368],[12,2432],[12,2496],[12,2560]],o=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[8,29],[8,29],[8,30],[8,30],[8,45],[8,45],[8,46],[8,46],[7,22],[7,22],[7,22],[7,22],[7,23],[7,23],[7,23],[7,23],[8,47],[8,47],[8,48],[8,48],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[6,13],[7,20],[7,20],[7,20],[7,20],[8,33],[8,33],[8,34],[8,34],[8,35],[8,35],[8,36],[8,36],[8,37],[8,37],[8,38],[8,38],[7,19],[7,19],[7,19],[7,19],[8,31],[8,31],[8,32],[8,32],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[6,12],[8,53],[8,53],[8,54],[8,54],[7,26],[7,26],[7,26],[7,26],[8,39],[8,39],[8,40],[8,40],[8,41],[8,41],[8,42],[8,42],[8,43],[8,43],[8,44],[8,44],[7,21],[7,21],[7,21],[7,21],[7,28],[7,28],[7,28],[7,28],[8,61],[8,61],[8,62],[8,62],[8,63],[8,63],[8,0],[8,0],[8,320],[8,320],[8,384],[8,384],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,10],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[5,11],[7,27],[7,27],[7,27],[7,27],[8,59],[8,59],[8,60],[8,60],[9,1472],[9,1536],[9,1600],[9,1728],[7,18],[7,18],[7,18],[7,18],[7,24],[7,24],[7,24],[7,24],[8,49],[8,49],[8,50],[8,50],[8,51],[8,51],[8,52],[8,52],[7,25],[7,25],[7,25],[7,25],[8,55],[8,55],[8,56],[8,56],[8,57],[8,57],[8,58],[8,58],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,192],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[6,1664],[8,448],[8,448],[8,512],[8,512],[9,704],[9,768],[8,640],[8,640],[8,576],[8,576],[9,832],[9,896],[9,960],[9,1024],[9,1088],[9,1152],[9,1216],[9,1280],[9,1344],[9,1408],[7,256],[7,256],[7,256],[7,256],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,2],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,128],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,8],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[5,9],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,16],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[6,17],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,4],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[4,5],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,14],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[6,15],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[5,64],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,6],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7],[4,7]],c=[[-1,-1],[-1,-1],[12,-2],[12,-2],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[-1,-1],[11,1792],[11,1792],[11,1792],[11,1792],[12,1984],[12,1984],[12,2048],[12,2048],[12,2112],[12,2112],[12,2176],[12,2176],[12,2240],[12,2240],[12,2304],[12,2304],[11,1856],[11,1856],[11,1856],[11,1856],[11,1920],[11,1920],[11,1920],[11,1920],[12,2368],[12,2368],[12,2432],[12,2432],[12,2496],[12,2496],[12,2560],[12,2560],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[10,18],[12,52],[12,52],[13,640],[13,704],[13,768],[13,832],[12,55],[12,55],[12,56],[12,56],[13,1280],[13,1344],[13,1408],[13,1472],[12,59],[12,59],[12,60],[12,60],[13,1536],[13,1600],[11,24],[11,24],[11,24],[11,24],[11,25],[11,25],[11,25],[11,25],[13,1664],[13,1728],[12,320],[12,320],[12,384],[12,384],[12,448],[12,448],[13,512],[13,576],[12,53],[12,53],[12,54],[12,54],[13,896],[13,960],[13,1024],[13,1088],[13,1152],[13,1216],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64],[10,64]],l=[[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[8,13],[11,23],[11,23],[12,50],[12,51],[12,44],[12,45],[12,46],[12,47],[12,57],[12,58],[12,61],[12,256],[10,16],[10,16],[10,16],[10,16],[10,17],[10,17],[10,17],[10,17],[12,48],[12,49],[12,62],[12,63],[12,30],[12,31],[12,32],[12,33],[12,40],[12,41],[11,22],[11,22],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[8,14],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,10],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[7,11],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[9,15],[12,128],[12,192],[12,26],[12,27],[12,28],[12,29],[11,19],[11,19],[11,20],[11,20],[12,34],[12,35],[12,36],[12,37],[12,38],[12,39],[11,21],[11,21],[12,42],[12,43],[10,0],[10,0],[10,0],[10,0],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12],[7,12]],h=[[-1,-1],[-1,-1],[-1,-1],[-1,-1],[6,9],[6,8],[5,7],[5,7],[4,6],[4,6],[4,6],[4,6],[4,5],[4,5],[4,5],[4,5],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[3,4],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,3],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2],[2,2]];t.CCITTFaxDecoder=class{constructor(e){var t;let r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e||"function"!=typeof e.next)throw new Error('CCITTFaxDecoder - invalid "source" parameter.');for(this.source=e,this.eof=!1,this.encoding=n.K||0,this.eoline=n.EndOfLine||!1,this.byteAlign=n.EncodedByteAlign||!1,this.columns=n.Columns||1728,this.rows=n.Rows||0,this.eoblock=null===(t=n.EndOfBlock)||void 0===t||t,this.black=n.BlackIs1||!1,this.codingLine=new Uint32Array(this.columns+1),this.refLine=new Uint32Array(this.columns+2),this.codingLine[0]=this.columns,this.codingPos=0,this.row=0,this.nextLine2D=this.encoding<0,this.inputBits=0,this.inputBuf=0,this.outputBits=0,this.rowsDone=!1;0===(r=this._lookBits(12));)this._eatBits(1);1===r&&this._eatBits(12),this.encoding>0&&(this.nextLine2D=!this._lookBits(1),this._eatBits(1))}readNextChar(){if(this.eof)return-1;const e=this.refLine,t=this.codingLine,r=this.columns;let i,s,o,c,l;if(0===this.outputBits){if(this.rowsDone&&(this.eof=!0),this.eof)return-1;let o,l,h;if(this.err=!1,this.nextLine2D){for(c=0;t[c]=64);do{l+=h=this._getWhiteCode()}while(h>=64)}else{do{o+=h=this._getWhiteCode()}while(h>=64);do{l+=h=this._getBlackCode()}while(h>=64)}for(this._addPixels(t[this.codingPos]+o,s),t[this.codingPos]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]0?--i:++i;e[i]<=t[this.codingPos]&&e[i]=64);else do{o+=h=this._getWhiteCode()}while(h>=64);this._addPixels(t[this.codingPos]+o,s),s^=1}let u=!1;if(this.byteAlign&&(this.inputBits&=-8),this.eoblock||this.row!==this.rows-1){if(o=this._lookBits(12),this.eoline)for(;o!==a&&1!==o;)this._eatBits(1),o=this._lookBits(12);else for(;0===o;)this._eatBits(1),o=this._lookBits(12);1===o?(this._eatBits(12),u=!0):o===a&&(this.eof=!0)}else this.rowsDone=!0;if(!this.eof&&this.encoding>0&&!this.rowsDone&&(this.nextLine2D=!this._lookBits(1),this._eatBits(1)),this.eoblock&&u&&this.byteAlign){if(o=this._lookBits(12),1===o){if(this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1)),this.encoding>=0)for(c=0;c<4;++c)o=this._lookBits(12),1!==o&&(0,n.info)("bad rtc code: "+o),this._eatBits(12),this.encoding>0&&(this._lookBits(1),this._eatBits(1));this.eof=!0}}else if(this.err&&this.eoline){for(;;){if(o=this._lookBits(13),o===a)return this.eof=!0,-1;if(o>>1==1)break;this._eatBits(1)}this._eatBits(12),this.encoding>0&&(this._eatBits(1),this.nextLine2D=!(1&o))}this.outputBits=t[0]>0?t[this.codingPos=0]:t[this.codingPos=1],this.row++}if(this.outputBits>=8)l=1&this.codingPos?0:255,this.outputBits-=8,0===this.outputBits&&t[this.codingPos]o?(l<<=o,1&this.codingPos||(l|=255>>8-o),this.outputBits-=o,o=0):(l<<=this.outputBits,1&this.codingPos||(l|=255>>8-this.outputBits),o-=this.outputBits,this.outputBits=0,t[this.codingPos]0&&(l<<=o,o=0))}while(o)}return this.black&&(l^=255),l}_addPixels(e,t){const r=this.codingLine;let a=this.codingPos;e>r[a]&&(e>this.columns&&((0,n.info)("row is wrong length"),this.err=!0,e=this.columns),1&a^t&&++a,r[a]=e),this.codingPos=a}_addPixelsNeg(e,t){const r=this.codingLine;let a=this.codingPos;if(e>r[a])e>this.columns&&((0,n.info)("row is wrong length"),this.err=!0,e=this.columns),1&a^t&&++a,r[a]=e;else if(e0&&e=i){const t=r[e-i];if(t[0]===n)return this._eatBits(n),[!0,t[1],!0]}}return[!1,0,!1]}_getTwoDimCode(){let e,t=0;if(this.eoblock){var r;if(t=this._lookBits(7),e=i[t],(null===(r=e)||void 0===r?void 0:r[0])>0)return this._eatBits(e[0]),e[1]}else{const e=this._findTableCode(1,7,i);if(e[0]&&e[2])return e[1]}return(0,n.info)("Bad two dim code"),a}_getWhiteCode(){let e,t=0;if(this.eoblock){if(t=this._lookBits(12),t===a)return 1;if(e=t>>5==0?s[t]:o[t>>3],e[0]>0)return this._eatBits(e[0]),e[1]}else{let e=this._findTableCode(1,9,o);if(e[0])return e[1];if(e=this._findTableCode(11,12,s),e[0])return e[1]}return(0,n.info)("bad white code"),this._eatBits(1),1}_getBlackCode(){let e,t;if(this.eoblock){if(e=this._lookBits(13),e===a)return 1;if(t=e>>7==0?c[e]:e>>9==0&&e>>7!=0?l[(e>>1)-64]:h[e>>7],t[0]>0)return this._eatBits(t[0]),t[1]}else{let e=this._findTableCode(2,6,h);if(e[0])return e[1];if(e=this._findTableCode(7,12,l,64),e[0])return e[1];if(e=this._findTableCode(10,13,c),e[0])return e[1]}return(0,n.info)("bad black code"),this._eatBits(1),1}_lookBits(e){let t;for(;this.inputBits>16-e;this.inputBuf=this.inputBuf<<8|t,this.inputBits+=8}return this.inputBuf>>this.inputBits-e&65535>>16-e}_eatBits(e){(this.inputBits-=e)<0&&(this.inputBits=0)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FlateStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(144);const i=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),o=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),c=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],l=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5];class h extends n.DecodeStream{constructor(e,t){super(t),this.str=e,this.dict=e.dict;const r=e.getByte(),n=e.getByte();if(-1===r||-1===n)throw new a.FormatError("Invalid header in flate stream: ".concat(r,", ").concat(n));if(8!=(15&r))throw new a.FormatError("Unknown compression method in flate stream: ".concat(r,", ").concat(n));if(((r<<8)+n)%31!=0)throw new a.FormatError("Bad FCHECK in flate stream: ".concat(r,", ").concat(n));if(32&n)throw new a.FormatError("FDICT bit set in flate stream: ".concat(r,", ").concat(n));this.codeSize=0,this.codeBuf=0}getBits(e){const t=this.str;let r,n=this.codeSize,i=this.codeBuf;for(;n>e,this.codeSize=n-=e,r}getCode(e){const t=this.str,r=e[0],n=e[1];let i,s=this.codeSize,o=this.codeBuf;for(;s>16,h=65535&c;if(l<1||s>l,this.codeSize=s-l,h}generateHuffmanTable(e){const t=e.length;let r,n=0;for(r=0;rn&&(n=e[r]);const a=1<>=1;for(r=e;r>=1,0===u){let t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");let n=t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");if(n|=t<<8,-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");let i=t;if(-1===(t=r.getByte()))throw new a.FormatError("Bad block header in flate stream");if(i|=t<<8,i!==(65535&~n)&&(0!==n||0!==i))throw new a.FormatError("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;const s=this.bufferLength,o=s+n;if(e=this.ensureBuffer(o),this.bufferLength=o,0===n)-1===r.peekByte()&&(this.eof=!0);else{const t=r.getBytes(n);e.set(t,s),t.length0;)u[o++]=g}n=this.generateHuffmanTable(u.subarray(0,e)),h=this.generateHuffmanTable(u.subarray(e,l))}}e=this.buffer;let d=e?e.length:0,f=this.bufferLength;for(;;){let r=this.getCode(n);if(r<256){f+1>=d&&(e=this.ensureBuffer(f+1),d=e.length),e[f++]=r;continue}if(256===r)return void(this.bufferLength=f);r-=257,r=s[r];let a=r>>16;a>0&&(a=this.getBits(a)),t=(65535&r)+a,r=this.getCode(h),r=o[r],a=r>>16,a>0&&(a=this.getBits(a));const i=(65535&r)+a;f+t>=d&&(e=this.ensureBuffer(f+t),d=e.length);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Stream=void 0,r(139);var n=r(151),a=r(168),i=r(150),s=r(174),o=r(144);class c extends a.DecodeStream{constructor(e,t,r){super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,o.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new s.Jbig2Image,t=[];if(this.params instanceof i.Dict){const e=this.params.get("JBIG2Globals");if(e instanceof n.BaseStream){const r=e.getBytes();t.push({data:r,start:0,end:r.length})}}t.push({data:this.bytes,start:0,end:this.bytes.length});const r=e.parseChunks(t),a=r.length;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Jbig2Image=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(144),a=r(149),i=r(175),s=r(171);class o extends n.BaseException{constructor(e){super("JBIG2 error: ".concat(e),"Jbig2Error")}}class c{getContexts(e){return e in this?this[e]:this[e]=new Int8Array(65536)}}class l{constructor(e,t,r){this.data=e,this.start=t,this.end=r}get decoder(){const e=new i.ArithmeticDecoder(this.data,this.start,this.end);return(0,n.shadow)(this,"decoder",e)}get contextCache(){const e=new c;return(0,n.shadow)(this,"contextCache",e)}}const h=2**31-1,u=-(2**31);function d(e,t,r){const n=e.getContexts(t);let a=1;function i(e){let t=0;for(let i=0;i>>0}const s=i(1),o=i(1)?i(1)?i(1)?i(1)?i(1)?i(32)+4436:i(12)+340:i(8)+84:i(6)+20:i(4)+4:i(2);let c;return 0===s?c=o:o>0&&(c=-o),c>=u&&c<=h?c:null}function f(e,t,r){const n=e.getContexts("IAID");let a=1;for(let e=0;e=O&&D=F)for(X=X<<1&y,m=0;m=0&&_=0&&(j=E[B][_],j&&(X|=j<=e?l<<=1:l=l<<1|k[o][c];for(g=0;g=S||c<0||c>=x?l<<=1:l=l<<1|n[o][c];const h=C.readBit(O,l);t[s]=h}}return k}function x(e,t,r,n,a,i,s,c,l,h,u,g,p,m,b,y,w,x,S){if(e&&t)throw new o("refinement with Huffman is not supported");const A=[];let k,C;for(k=0;k1&&(a=e?S.readBits(x):d(F,"IAIT",O));const i=s*I+a,T=e?m.symbolIDTable.decode(S):f(F,O,l),M=t&&(e?S.readBit():d(F,"IARI",O));let E=c[T],P=E[0].length,R=E.length;if(M){const e=d(F,"IARDW",O),t=d(F,"IARDH",O);P+=e,R+=t,E=v(P,R,b,E,(e>>1)+d(F,"IARDX",O),(t>>1)+d(F,"IARDY",O),!1,y,w)}const N=i-(1&g?0:R-1),D=n-(2&g?P-1:0);let B,L,_;if(h){for(B=0;B>5&7;const h=[31&c];let u=t+6;if(7===c){l=536870911&(0,a.readUint32)(e,u-1),u+=3;let t=l+7>>3;for(h[0]=e[u++];--t>0;)h.push(e[u++])}else if(5===c||6===c)throw new o("invalid referred-to flags");r.retainBits=h;let d=4;r.number<=256?d=1:r.number<=65536&&(d=2);const f=[];let p,m;for(p=0;p>>24&255,i[3]=t.height>>16&255,i[4]=t.height>>8&255,i[5]=255&t.height,p=u,m=e.length;p>2&3,e.huffmanDWSelector=t>>4&3,e.bitmapSizeSelector=t>>6&1,e.aggregationInstancesSelector=t>>7&1,e.bitmapCodingContextUsed=!!(256&t),e.bitmapCodingContextRetained=!!(512&t),e.template=t>>10&3,e.refinementTemplate=t>>12&1,u+=2,!e.huffman){for(h=0===e.template?4:1,c=[],l=0;l>2&3,d.stripSize=1<>4&3,d.transposed=!!(64&f),d.combinationOperator=f>>7&3,d.defaultPixelValue=f>>9&1,d.dsOffset=f<<17>>27,d.refinementTemplate=f>>15&1,d.huffman){const e=(0,a.readUint16)(n,u);u+=2,d.huffmanFS=3&e,d.huffmanDS=e>>2&3,d.huffmanDT=e>>4&3,d.huffmanRefinementDW=e>>6&3,d.huffmanRefinementDH=e>>8&3,d.huffmanRefinementDX=e>>10&3,d.huffmanRefinementDY=e>>12&3,d.huffmanRefinementSizeSelector=!!(16384&e)}if(d.refinement&&!d.refinementTemplate){for(c=[],l=0;l<2;l++)c.push({x:(0,a.readInt8)(n,u),y:(0,a.readInt8)(n,u+1)}),u+=2;d.refinementAt=c}d.numberOfSymbolInstances=(0,a.readUint32)(n,u),u+=4,s=[d,r.referredTo,n,u,i];break;case 16:const g={},p=n[u++];g.mmr=!!(1&p),g.template=p>>1&3,g.patternWidth=n[u++],g.patternHeight=n[u++],g.maxPatternIndex=(0,a.readUint32)(n,u),u+=4,s=[g,r.number,n,u,i];break;case 22:case 23:const m={};m.info=k(n,u),u+=C;const b=n[u++];m.mmr=!!(1&b),m.template=b>>1&3,m.enableSkip=!!(8&b),m.combinationOperator=b>>4&7,m.defaultPixelValue=b>>7&1,m.gridWidth=(0,a.readUint32)(n,u),u+=4,m.gridHeight=(0,a.readUint32)(n,u),u+=4,m.gridOffsetX=4294967295&(0,a.readUint32)(n,u),u+=4,m.gridOffsetY=4294967295&(0,a.readUint32)(n,u),u+=4,m.gridVectorX=(0,a.readUint16)(n,u),u+=2,m.gridVectorY=(0,a.readUint16)(n,u),u+=2,s=[m,r.referredTo,n,u,i];break;case 38:case 39:const y={};y.info=k(n,u),u+=C;const w=n[u++];if(y.mmr=!!(1&w),y.template=w>>1&3,y.prediction=!!(8&w),!y.mmr){for(h=0===y.template?4:1,c=[],l=0;l>2&1,v.combinationOperator=x>>3&3,v.requiresBuffer=!!(32&x),v.combinationOperatorOverride=!!(64&x),s=[v];break;case 49:case 50:case 51:case 62:break;case 53:s=[r.number,n,u,i];break;default:throw new o("segment type ".concat(r.typeName,"(").concat(r.type,") is not implemented"))}const d="on"+r.typeName;d in t&&t[d].apply(t,s)}function F(e,t){for(let r=0,n=e.length;r>3,r=new Uint8ClampedArray(t*e.height);e.defaultPixelValue&&r.fill(255),this.buffer=r}drawBitmap(e,t){const r=this.currentPageInfo,n=e.width,a=e.height,i=r.width+7>>3,s=r.combinationOperatorOverride?e.combinationOperator:r.combinationOperator,c=this.buffer,l=128>>(7&e.x);let h,u,d,f,g=e.y*i+(e.x>>3);switch(s){case 0:for(h=0;h>=1,d||(d=128,f++);g+=i}break;case 2:for(h=0;h>=1,d||(d=128,f++);g+=i}break;default:throw new o("operator ".concat(s," is not supported"))}}onImmediateGenericRegion(e,t,r,n){const a=e.info,i=new l(t,r,n),s=w(e.mmr,a.width,a.height,e.template,e.prediction,null,e.at,i);this.drawBitmap(a,s)}onImmediateLosslessGenericRegion(){this.onImmediateGenericRegion(...arguments)}onSymbolDictionary(e,t,r,n,i,s){let c,h;e.huffman&&(c=function(e,t,r){let n,a,i,s,c=0;switch(e.huffmanDHSelector){case 0:case 1:n=R(e.huffmanDHSelector+4);break;case 3:n=D(c,t,r),c++;break;default:throw new o("invalid Huffman DH selector")}switch(e.huffmanDWSelector){case 0:case 1:a=R(e.huffmanDWSelector+2);break;case 3:a=D(c,t,r),c++;break;default:throw new o("invalid Huffman DW selector")}return e.bitmapSizeSelector?(i=D(c,t,r),c++):i=R(1),s=e.aggregationInstancesSelector?D(c,t,r):R(1),{tableDeltaHeight:n,tableDeltaWidth:a,tableBitmapSize:i,tableAggregateInstances:s}}(e,r,this.customTables),h=new N(n,i,s));let u=this.symbols;u||(this.symbols=u={});const g=[];for(const e of r){const t=u[e];t&&g.push(...t)}const p=new l(n,i,s);u[t]=function(e,t,r,n,i,s,c,l,h,u,g,p){if(e&&t)throw new o("symbol refinement with Huffman is not supported");const m=[];let b=0,y=(0,a.log2)(r.length+n);const S=g.decoder,A=g.contextCache;let k,C;for(e&&(k=R(1),C=[],y=Math.max(y,1));m.length1)o=x(e,t,n,b,0,a,1,r.concat(m),y,0,0,1,0,s,h,u,g,0,p);else{const e=f(A,S,y),t=d(A,"IARDX",S),a=d(A,"IARDY",S);o=v(n,b,h,e=32){let r,n,s;switch(t){case 32:if(0===e)throw new o("no previous value in symbol ID table");n=a.readBits(2)+3,r=i[e-1].prefixLength;break;case 33:n=a.readBits(3)+3,r=0;break;case 34:n=a.readBits(7)+11,r=0;break;default:throw new o("invalid code length in symbol ID table")}for(s=0;s=0;y--)M=e?L(T,h,u,!0):w(!1,h,u,r,!1,null,F,m),I[y]=M;for(E=0;E=0;v--)R^=I[v][E][P],D|=R<>8,j=f+E*g-P*p>>8,_>=0&&_+k<=n&&j>=0&&j+C<=i)for(y=0;y=i))for($=b[t],U=B[y],v=0;v=0&&e>1&7),l=1+(n>>4&7),h=[];let u,d,f=i;do{u=o.readBits(c),d=o.readBits(l),h.push(new T([f,u,d,0])),f+=1<>t&1;if(t<=0)this.children[r]=new M(e);else{let n=this.children[r];n||(this.children[r]=n=new M(null)),n.buildTree(e,t-1)}}decodeNode(e){if(this.isLeaf){if(this.isOOB)return null;const t=e.readBits(this.rangeLength);return this.rangeLow+(this.isLowerRange?-t:t)}const t=this.children[e.readBit()];if(!t)throw new o("invalid Huffman data");return t.decodeNode(e)}}class E{constructor(e,t){t||this.assignPrefixCodes(e),this.rootNode=new M(null);for(let t=0,r=e.length;t0&&this.rootNode.buildTree(r,r.prefixLength-1)}}decode(e){return this.rootNode.decodeNode(e)}assignPrefixCodes(e){const t=e.length;let r=0;for(let n=0;n=this.end)throw new o("end of data while reading bit");this.currentByte=this.data[this.position++],this.shift=7}const e=this.currentByte>>this.shift&1;return this.shift--,e}readBits(e){let t,r=0;for(t=e-1;t>=0;t--)r|=this.readBit()<=this.end?-1:this.data[this.position++]}}function D(e,t,r){let n=0;for(let a=0,i=t.length;a>r&1,r--}if(n&&!l){const e=5;for(let t=0;t{Object.defineProperty(t,"__esModule",{value:!0}),t.ArithmeticDecoder=void 0;const r=[{qe:22017,nmps:1,nlps:1,switchFlag:1},{qe:13313,nmps:2,nlps:6,switchFlag:0},{qe:6145,nmps:3,nlps:9,switchFlag:0},{qe:2753,nmps:4,nlps:12,switchFlag:0},{qe:1313,nmps:5,nlps:29,switchFlag:0},{qe:545,nmps:38,nlps:33,switchFlag:0},{qe:22017,nmps:7,nlps:6,switchFlag:1},{qe:21505,nmps:8,nlps:14,switchFlag:0},{qe:18433,nmps:9,nlps:14,switchFlag:0},{qe:14337,nmps:10,nlps:14,switchFlag:0},{qe:12289,nmps:11,nlps:17,switchFlag:0},{qe:9217,nmps:12,nlps:18,switchFlag:0},{qe:7169,nmps:13,nlps:20,switchFlag:0},{qe:5633,nmps:29,nlps:21,switchFlag:0},{qe:22017,nmps:15,nlps:14,switchFlag:1},{qe:21505,nmps:16,nlps:14,switchFlag:0},{qe:20737,nmps:17,nlps:15,switchFlag:0},{qe:18433,nmps:18,nlps:16,switchFlag:0},{qe:14337,nmps:19,nlps:17,switchFlag:0},{qe:13313,nmps:20,nlps:18,switchFlag:0},{qe:12289,nmps:21,nlps:19,switchFlag:0},{qe:10241,nmps:22,nlps:19,switchFlag:0},{qe:9217,nmps:23,nlps:20,switchFlag:0},{qe:8705,nmps:24,nlps:21,switchFlag:0},{qe:7169,nmps:25,nlps:22,switchFlag:0},{qe:6145,nmps:26,nlps:23,switchFlag:0},{qe:5633,nmps:27,nlps:24,switchFlag:0},{qe:5121,nmps:28,nlps:25,switchFlag:0},{qe:4609,nmps:29,nlps:26,switchFlag:0},{qe:4353,nmps:30,nlps:27,switchFlag:0},{qe:2753,nmps:31,nlps:28,switchFlag:0},{qe:2497,nmps:32,nlps:29,switchFlag:0},{qe:2209,nmps:33,nlps:30,switchFlag:0},{qe:1313,nmps:34,nlps:31,switchFlag:0},{qe:1089,nmps:35,nlps:32,switchFlag:0},{qe:673,nmps:36,nlps:33,switchFlag:0},{qe:545,nmps:37,nlps:34,switchFlag:0},{qe:321,nmps:38,nlps:35,switchFlag:0},{qe:273,nmps:39,nlps:36,switchFlag:0},{qe:133,nmps:40,nlps:37,switchFlag:0},{qe:73,nmps:41,nlps:38,switchFlag:0},{qe:37,nmps:42,nlps:39,switchFlag:0},{qe:21,nmps:43,nlps:40,switchFlag:0},{qe:9,nmps:44,nlps:41,switchFlag:0},{qe:5,nmps:45,nlps:42,switchFlag:0},{qe:1,nmps:45,nlps:43,switchFlag:0},{qe:22017,nmps:46,nlps:46,switchFlag:0}];t.ArithmeticDecoder=class{constructor(e,t,r){this.data=e,this.bp=t,this.dataEnd=r,this.chigh=e[t],this.clow=0,this.byteIn(),this.chigh=this.chigh<<7&65535|this.clow>>9&127,this.clow=this.clow<<7&65535,this.ct-=7,this.a=32768}byteIn(){const e=this.data;let t=this.bp;255===e[t]?e[t+1]>143?(this.clow+=65280,this.ct=8):(t++,this.clow+=e[t]<<9,this.ct=7,this.bp=t):(t++,this.clow+=t65535&&(this.chigh+=this.clow>>16,this.clow&=65535)}readBit(e,t){let n=e[t]>>1,a=1&e[t];const i=r[n],s=i.qe;let o,c=this.a-s;if(this.chigh>15&1,this.clow=this.clow<<1&65535,this.ct--}while(0==(32768&c));return this.a=c,e[t]=n<<1|a,o}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.JpegStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(150),i=r(177),s=r(144);class o extends n.DecodeStream{constructor(e,t,r){let n;for(;-1!==(n=e.getByte());)if(255===n){e.skip(-1);break}super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,s.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e={decodeTransform:void 0,colorTransform:void 0},t=this.dict.getArray("D","Decode");if((this.forceRGBA||this.forceRGB)&&Array.isArray(t)){const r=this.dict.get("BPC","BitsPerComponent")||8,n=t.length,a=new Int32Array(n);let i=!1;const s=(1<{Object.defineProperty(t,"__esModule",{value:!0}),t.JpegImage=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(144),a=r(178),i=r(149);class s extends n.BaseException{constructor(e){super("JPEG error: ".concat(e),"JpegError")}}class o extends n.BaseException{constructor(e,t){super(e,"DNLMarkerError"),this.scanLines=t}}class c extends n.BaseException{constructor(e){super(e,"EOIMarkerError")}}const l=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),h=4017,u=799,d=3406,f=2276,g=1567,p=3784,m=5793,b=2896;function y(e,t){let r,n,a=0,i=16;for(;i>0&&!e[i-1];)i--;const s=[{children:[],index:0}];let o,c=s[0];for(r=0;r0;)c=s.pop();for(c.index++,s.push(c);s.length<=r;)s.push(o={children:[],index:0}),c.children[c.index]=o.children,c=o;a++}r+19&&void 0!==arguments[9]&&arguments[9];const m=r.mcusPerLine,b=r.progressive,y=t;let v=0,x=0;function S(){if(x>0)return x--,v>>x&1;if(v=e[t++],255===v){const n=e[t++];if(n){if(220===n&&p){t+=2;const n=(0,i.readUint16)(e,t);if(t+=2,n>0&&n!==r.scanLines)throw new o("Found DNL marker (0xFFDC) while parsing scan data",n)}else if(217===n){if(p){const e=M*(8===r.precision?8:0);if(e>0&&Math.round(r.scanLines/e)>=5)throw new o("Found EOI marker (0xFFD9) while parsing scan data, possibly caused by incorrect \`scanLines\` parameter",e)}throw new c("Found EOI marker (0xFFD9) while parsing scan data")}throw new s("unexpected marker ".concat((v<<8|n).toString(16)))}}return x=7,v>>>7}function k(e){let t=e;for(;;){switch(t=t[S()],typeof t){case"number":return t;case"object":continue}throw new s("invalid huffman sequence")}}function C(e){let t=0;for(;e>0;)t=t<<1|S(),e--;return t}function O(e){if(1===e)return 1===S()?1:-1;const t=C(e);return t>=1<0)return void I--;let r=u;const n=d;for(;r<=n;){const n=k(e.huffmanTableAC),a=15&n,i=n>>4;if(0===a){if(i<15){I=C(i)+(1<>4,0===a)o<15?(I=C(o)+(1<>4;if(0===n){if(i<15)break;a+=16;continue}a+=i;const s=l[a];e.blockData[t+s]=O(n),a++}};let U,$=0;const X=1===R?a[0].blocksPerLine*a[0].blocksPerColumn:m*r.mcusPerColumn;let H,q;for(;$<=X;){const r=h?Math.min(X-$,h):X;if(r>0){for(D=0;D0?"unexpected":"excessive";(0,n.warn)("decodeScan - ".concat(e," MCU data, current marker is: ").concat(U.invalid)),t=U.offset}if(!(U.marker>=65488&&U.marker<=65495))break;t+=2}return t-y}function x(e,t,r){const n=e.quantizationTable,a=e.blockData;let i,o,c,l,y,w,v,x,S,A,k,C,O,F,I,T,M;if(!n)throw new s("missing required Quantization Table.");for(let e=0;e<64;e+=8)S=a[t+e],A=a[t+e+1],k=a[t+e+2],C=a[t+e+3],O=a[t+e+4],F=a[t+e+5],I=a[t+e+6],T=a[t+e+7],S*=n[e],0!=(A|k|C|O|F|I|T)?(A*=n[e+1],k*=n[e+2],C*=n[e+3],O*=n[e+4],F*=n[e+5],I*=n[e+6],T*=n[e+7],i=m*S+128>>8,o=m*O+128>>8,c=k,l=I,y=b*(A-T)+128>>8,x=b*(A+T)+128>>8,w=C<<4,v=F<<4,i=i+o+1>>1,o=i-o,M=c*p+l*g+128>>8,c=c*g-l*p+128>>8,l=M,y=y+v+1>>1,v=y-v,x=x+w+1>>1,w=x-w,i=i+l+1>>1,l=i-l,o=o+c+1>>1,c=o-c,M=y*f+x*d+2048>>12,y=y*d-x*f+2048>>12,x=M,M=w*u+v*h+2048>>12,w=w*h-v*u+2048>>12,v=M,r[e]=i+x,r[e+7]=i-x,r[e+1]=o+v,r[e+6]=o-v,r[e+2]=c+w,r[e+5]=c-w,r[e+3]=l+y,r[e+4]=l-y):(M=m*S+512>>10,r[e]=M,r[e+1]=M,r[e+2]=M,r[e+3]=M,r[e+4]=M,r[e+5]=M,r[e+6]=M,r[e+7]=M);for(let e=0;e<8;++e)S=r[e],A=r[e+8],k=r[e+16],C=r[e+24],O=r[e+32],F=r[e+40],I=r[e+48],T=r[e+56],0!=(A|k|C|O|F|I|T)?(i=m*S+2048>>12,o=m*O+2048>>12,c=k,l=I,y=b*(A-T)+2048>>12,x=b*(A+T)+2048>>12,w=C,v=F,i=4112+(i+o+1>>1),o=i-o,M=c*p+l*g+2048>>12,c=c*g-l*p+2048>>12,l=M,y=y+v+1>>1,v=y-v,x=x+w+1>>1,w=x-w,i=i+l+1>>1,l=i-l,o=o+c+1>>1,c=o-c,M=y*f+x*d+2048>>12,y=y*d-x*f+2048>>12,x=M,M=w*u+v*h+2048>>12,w=w*h-v*u+2048>>12,v=M,S=i+x,T=i-x,A=o+v,I=o-v,k=c+w,F=c-w,C=l+y,O=l-y,S<16?S=0:S>=4080?S=255:S>>=4,A<16?A=0:A>=4080?A=255:A>>=4,k<16?k=0:k>=4080?k=255:k>>=4,C<16?C=0:C>=4080?C=255:C>>=4,O<16?O=0:O>=4080?O=255:O>>=4,F<16?F=0:F>=4080?F=255:F>>=4,I<16?I=0:I>=4080?I=255:I>>=4,T<16?T=0:T>=4080?T=255:T>>=4,a[t+e]=S,a[t+e+8]=A,a[t+e+16]=k,a[t+e+24]=C,a[t+e+32]=O,a[t+e+40]=F,a[t+e+48]=I,a[t+e+56]=T):(M=m*S+8192>>14,M=M<-2040?0:M>=2024?255:M+2056>>4,a[t+e]=M,a[t+e+8]=M,a[t+e+16]=M,a[t+e+24]=M,a[t+e+32]=M,a[t+e+40]=M,a[t+e+48]=M,a[t+e+56]=M)}function S(e,t){const r=t.blocksPerLine,n=t.blocksPerColumn,a=new Int16Array(64);for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:t;const n=e.length-1;let a=r=n)return null;const s=(0,i.readUint16)(e,t);if(s>=65472&&s<=65534)return{invalid:null,marker:s,offset:t};let o=(0,i.readUint16)(e,a);for(;!(o>=65472&&o<=65534);){if(++a>=n)return null;o=(0,i.readUint16)(e,a)}return{invalid:s.toString(16),marker:o,offset:a}}t.JpegImage=class{constructor(){let{decodeTransform:e=null,colorTransform:t=-1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._decodeTransform=e,this._colorTransform=t}parse(e){let{dnlScanLines:t=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};function r(){const t=(0,i.readUint16)(e,d);d+=2;let r=d+t-2;const a=A(e,r,d);null!=a&&a.invalid&&((0,n.warn)("readDataBlock - incorrect length, current marker is: "+a.invalid),r=a.offset);const s=e.subarray(d,r);return d+=s.length,s}function a(e){const t=Math.ceil(e.samplesPerLine/8/e.maxH),r=Math.ceil(e.scanLines/8/e.maxV);for(const n of e.components){const a=Math.ceil(Math.ceil(e.samplesPerLine/8)*n.h/e.maxH),i=Math.ceil(Math.ceil(e.scanLines/8)*n.v/e.maxV),s=t*n.h,o=r*n.v*64*(s+1);n.blockData=new Int16Array(o),n.blocksPerLine=a,n.blocksPerColumn=i}e.mcusPerLine=t,e.mcusPerColumn=r}let h,u,d=0,f=null,g=null,p=0;const m=[],b=[],w=[];let x=(0,i.readUint16)(e,d);if(d+=2,65496!==x)throw new s("SOI not found");x=(0,i.readUint16)(e,d),d+=2;e:for(;65497!==x;){let S,k,C;switch(x){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:const O=r();65504===x&&74===O[0]&&70===O[1]&&73===O[2]&&70===O[3]&&0===O[4]&&(f={version:{major:O[5],minor:O[6]},densityUnits:O[7],xDensity:O[8]<<8|O[9],yDensity:O[10]<<8|O[11],thumbWidth:O[12],thumbHeight:O[13],thumbData:O.subarray(14,14+3*O[12]*O[13])}),65518===x&&65===O[0]&&100===O[1]&&111===O[2]&&98===O[3]&&101===O[4]&&(g={version:O[5]<<8|O[6],flags0:O[7]<<8|O[8],flags1:O[9]<<8|O[10],transformCode:O[11]});break;case 65499:const F=(0,i.readUint16)(e,d);d+=2;const I=F+d-2;let T;for(;d>4==0)for(k=0;k<64;k++)T=l[k],r[T]=e[d++];else{if(t>>4!=1)throw new s("DQT - invalid table spec");for(k=0;k<64;k++)T=l[k],r[T]=(0,i.readUint16)(e,d),d+=2}m[15&t]=r}break;case 65472:case 65473:case 65474:if(h)throw new s("Only single frame JPEGs supported");d+=2,h={},h.extended=65473===x,h.progressive=65474===x,h.precision=e[d++];const M=(0,i.readUint16)(e,d);d+=2,h.scanLines=t||M,h.samplesPerLine=(0,i.readUint16)(e,d),d+=2,h.components=[],h.componentIds={};const E=e[d++];let P=0,R=0;for(S=0;S>4,n=15&e[d+1];P>4==0?w:b)[15&t]=y(r,a)}break;case 65501:d+=2,u=(0,i.readUint16)(e,d),d+=2;break;case 65498:const D=1==++p&&!t;d+=2;const B=e[d++],L=[];for(S=0;S>4],n.huffmanTableAC=b[15&a],L.push(n)}const _=e[d++],j=e[d++],U=e[d++];try{const t=v(e,d,h,L,u,_,j,U>>4,15&U,D);d+=t}catch(t){if(t instanceof o)return(0,n.warn)("".concat(t.message," -- attempting to re-parse the JPEG image.")),this.parse(e,{dnlScanLines:t.scanLines});if(t instanceof c){(0,n.warn)("".concat(t.message," -- ignoring the rest of the image data."));break e}throw t}break;case 65500:d+=4;break;case 65535:255!==e[d]&&d--;break;default:const $=A(e,d-2,d-3);if(null!=$&&$.invalid){(0,n.warn)("JpegImage.parse - unexpected data, current marker is: "+$.invalid),d=$.offset;break}if(!$||d>=e.length-1){(0,n.warn)("JpegImage.parse - reached the end of the image data without finding an EOI marker (0xFFD9).");break e}throw new s("JpegImage.parse - unknown marker: "+x.toString(16))}x=(0,i.readUint16)(e,d),d+=2}this.width=h.samplesPerLine,this.height=h.scanLines,this.jfif=f,this.adobe=g,this.components=[];for(const e of h.components){const t=m[e.quantizationId];t&&(e.quantizationTable=t),this.components.push({index:e.index,output:S(0,e),scaleX:e.h/h.maxH,scaleY:e.v/h.maxV,blocksPerLine:e.blocksPerLine,blocksPerColumn:e.blocksPerColumn})}this.numComponents=this.components.length}_getLinearizedBlockData(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.width/e,a=this.height/t;let i,s,o,c,l,h,u,d,f,g,p,m=0;const b=this.components.length,y=e*t*b,w=new Uint8ClampedArray(y),v=new Uint32Array(e),x=4294967288;let S;for(u=0;u>8)+A[f+1];return w}get _isColorConversionNeeded(){return this.adobe?!!this.adobe.transformCode:3===this.numComponents?0!==this._colorTransform&&(82!==this.components[0].index||71!==this.components[1].index||66!==this.components[2].index):1===this._colorTransform}_convertYccToRgb(e){let t,r,n;for(let a=0,i=e.length;a4)throw new s("Unsupported color mode");const c=this._getLinearizedBlockData(t,r,o);if(1===this.numComponents&&(n||i)){const e=c.length*(n?4:3),t=new Uint8ClampedArray(e);let r=0;if(n)(0,a.grayToRGBA)(c,new Uint32Array(t.buffer));else for(const e of c)t[r++]=e,t[r++]=e,t[r++]=e;return t}if(3===this.numComponents&&this._isColorConversionNeeded){if(n){const e=new Uint8ClampedArray(c.length/3*4);return this._convertYccToRgba(c,e)}return this._convertYccToRgb(c)}if(4===this.numComponents){if(this._isColorConversionNeeded)return n?this._convertYcckToRgba(c):i?this._convertYcckToRgb(c):this._convertYcckToCmyk(c);if(n)return this._convertCmykToRgba(c);if(i)return this._convertCmykToRgb(c)}return c}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.convertBlackAndWhiteToRGBA=a,t.convertToRGBA=function(e){switch(e.kind){case n.ImageKind.GRAYSCALE_1BPP:return a(e);case n.ImageKind.RGB_24BPP:return function(e){let{src:t,srcPos:r=0,dest:a,destPos:i=0,width:s,height:o}=e,c=0;const l=t.length>>2,h=new Uint32Array(t.buffer,r,l);if(n.FeatureTest.isLittleEndian){for(;c>>24|t<<8|4278190080,a[i+2]=t>>>16|r<<16|4278190080,a[i+3]=r>>>8|4278190080}for(let e=4*c,r=t.length;e>>8|255,a[i+2]=t<<16|r>>>16|255,a[i+3]=r<<8|255}for(let e=4*c,r=t.length;e>3,f=7&i,g=t.length;a=new Uint32Array(a.buffer);let p=0;for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.JpxStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(180),i=r(144);class s extends n.DecodeStream{constructor(e,t,r){super(t),this.stream=e,this.dict=e.dict,this.maybeLength=t,this.params=r}get bytes(){return(0,i.shadow)(this,"bytes",this.stream.getBytes(this.maybeLength))}ensureBuffer(e){}readBlock(){if(this.eof)return;const e=new a.JpxImage;e.parse(this.bytes);const t=e.width,r=e.height,n=e.componentsCount,i=e.tiles.length;if(1===i)this.buffer=e.tiles[0].items;else{const a=new Uint8ClampedArray(t*r*n);for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.JpxImage=void 0,r(139),r(2),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(149),s=r(175);class o extends n.BaseException{constructor(e){super("JPX error: ".concat(e),"JpxError")}}const c={LL:0,LH:1,HL:1,HH:2};function l(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz),e.x1=Math.ceil(t.Xsiz/e.XRsiz),e.y0=Math.ceil(t.YOsiz/e.YRsiz),e.y1=Math.ceil(t.Ysiz/e.YRsiz),e.width=e.x1-e.x0,e.height=e.y1-e.y0}function h(e,t){const r=e.SIZ,n=[];let a;const i=Math.ceil((r.Xsiz-r.XTOsiz)/r.XTsiz),s=Math.ceil((r.Ysiz-r.YTOsiz)/r.YTsiz);for(let e=0;e0?Math.min(n.xcb,a.PPx-1):Math.min(n.xcb,a.PPx),a.ycb_=r>0?Math.min(n.ycb,a.PPy-1):Math.min(n.ycb,a.PPy),a}function d(e,t,r){const n=1<t.trx0?Math.ceil(t.trx1/n)-Math.floor(t.trx0/n):0,l=t.try1>t.try0?Math.ceil(t.try1/a)-Math.floor(t.try0/a):0,h=c*l;t.precinctParameters={precinctWidth:n,precinctHeight:a,numprecinctswide:c,numprecinctshigh:l,numprecincts:h,precinctWidthInSubband:s,precinctHeightInSubband:o}}function f(e,t,r){const n=r.xcb_,a=r.ycb_,i=1<>n,c=t.tby0>>a,l=t.tbx1+i-1>>n,h=t.tby1+s-1>>a,u=t.resolution.precinctParameters,d=[],f=[];let g,p,m,b;for(p=c;pe.cbxMax&&(e.cbxMax=g),pe.cbyMax&&(e.cbyMax=p)):f[b]=e={cbxMin:g,cbyMin:p,cbxMax:g,cbyMax:p},m.precinct=e}t.codeblockParameters={codeblockWidth:n,codeblockHeight:a,numcodeblockwide:l-o+1,numcodeblockhigh:h-c+1},t.codeblocks=d,t.precincts=f}function g(e,t,r){const n=[],a=e.subbands;for(let e=0,r=a.length;ee.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[l],r=t.precinctParameters.numprecincts;for(;ue.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],r=t.precinctParameters.numprecincts;for(;ue.codingStyleParameters.decompositionLevelsCount)continue;const t=e.resolutions[c],r=t.precinctParameters.numprecincts;if(!(h>=r)){for(;s=0;--e){const r=t.resolutions[e],n=g*r.precinctParameters.precinctWidth,a=g*r.precinctParameters.precinctHeight;h=Math.min(h,n),u=Math.min(u,a),d=Math.max(d,r.precinctParameters.numprecinctswide),f=Math.max(f,r.precinctParameters.numprecinctshigh),l[e]={width:n,height:a},g<<=1}r=Math.min(r,h),n=Math.min(n,u),a=Math.max(a,d),i=Math.max(i,f),s[o]={resolutions:l,minWidth:h,minHeight:u,maxNumWide:d,maxNumHigh:f}}return{components:s,minWidth:r,minHeight:n,maxNumWide:a,maxNumHigh:i}}function S(e){const t=e.SIZ,r=e.currentTile.index,n=e.tiles[r],a=t.Csiz;for(let e=0;e>>c&(1<0;){const e=i.shift();c=e.codeblock,void 0===c.data&&(c.data=[]),c.data.push({data:t,start:r+s,end:r+s+e.dataLength,codingpasses:e.codingpasses}),s+=e.dataLength}}return s}function k(e,t,r,n,a,i,o,c,l){const h=n.tbx0,u=n.tby0,d=n.tbx1-n.tbx0,f=n.codeblocks,g="H"===n.type.charAt(0)?1:0,p="H"===n.type.charAt(1)?t:0;for(let r=0,m=f.length;r=i?L:L*(1<0?1-e:0));const p=t.subbands[n],m=c[p.type];k(i,r,0,p,g?1:2**(f+m-s)*(1+a/2048),h+s-1,g,u,d)}m.push({width:r,height:a,items:i})}const y=p.calculate(m,n.tcx0,n.tcy0);return{left:n.tcx0,top:n.tcy0,width:y.width,height:y.height,items:y.items}}function O(e,t){const r=e.SIZ.Csiz,n=e.tiles[t];for(let t=0;t>24&255,c>>16&255,c>>8&255,255&c);(0,n.warn)("Unsupported header type ".concat(c," (").concat(i,")."))}h&&(r+=l)}}parseImageProperties(e){let t=e.getByte();for(;t>=0;){const r=t;if(t=e.getByte(),65361==(r<<8|t)){e.skip(4);const t=e.getInt32()>>>0,r=e.getInt32()>>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0;e.skip(16);const i=e.getUint16();return this.width=t-n,this.height=r-a,this.componentsCount=i,void(this.bitsPerComponent=8)}}throw new o("No size marker found in JPX stream")}parseCodestream(e,t,r){const i={};let s=!1;try{let o=t;for(;o+1>5,u=[];r>3,t.mu=0):(t.epsilon=e[r]>>3,t.mu=(7&e[r])<<8|e[r+1],r+=2),u.push(t)}w.SPqcds=u,i.mainHeader?i.QCD=w:(i.currentTile.QCD=w,i.currentTile.QCC=[]);break;case 65373:p=(0,a.readUint16)(e,o);const v={};let x;switch(r=o+2,i.SIZ.Csiz<257?x=e[r++]:(x=(0,a.readUint16)(e,r),r+=2),c=e[r++],31&c){case 0:d=8,f=!0;break;case 1:d=16,f=!1;break;case 2:d=16,f=!0;break;default:throw new Error("Invalid SQcd value "+c)}for(v.noQuantization=8===d,v.scalarExpounded=f,v.guardBits=c>>5,u=[];r>3,t.mu=0):(t.epsilon=e[r]>>3,t.mu=(7&e[r])<<8|e[r+1],r+=2),u.push(t)}v.SPqcds=u,i.mainHeader?i.QCC[x]=v:i.currentTile.QCC[x]=v;break;case 65362:p=(0,a.readUint16)(e,o);const k={};r=o+2;const C=e[r++];k.entropyCoderWithCustomPrecincts=!!(1&C),k.sopMarkerUsed=!!(2&C),k.ephMarkerUsed=!!(4&C),k.progressionOrder=e[r++],k.layersCount=(0,a.readUint16)(e,r),r+=2,k.multipleComponentTransform=e[r++],k.decompositionLevelsCount=e[r++],k.xcb=2+(15&e[r++]),k.ycb=2+(15&e[r++]);const F=e[r++];if(k.selectiveArithmeticCodingBypass=!!(1&F),k.resetContextProbabilities=!!(2&F),k.terminationOnEachCodingPass=!!(4&F),k.verticallyStripe=!!(8&F),k.predictableTermination=!!(16&F),k.segmentationSymbolUsed=!!(32&F),k.reversibleTransformation=e[r++],k.entropyCoderWithCustomPrecincts){const t=[];for(;r>4})}k.precinctsSizes=t}const I=[];k.selectiveArithmeticCodingBypass&&I.push("selectiveArithmeticCodingBypass"),k.terminationOnEachCodingPass&&I.push("terminationOnEachCodingPass"),k.verticallyStripe&&I.push("verticallyStripe"),k.predictableTermination&&I.push("predictableTermination"),I.length>0&&(s=!0,(0,n.warn)("JPX: Unsupported COD options (".concat(I.join(", "),")."))),i.mainHeader?i.COD=k:(i.currentTile.COD=k,i.currentTile.COC=[]);break;case 65424:p=(0,a.readUint16)(e,o),g={},g.index=(0,a.readUint16)(e,o+2),g.length=(0,a.readUint32)(e,o+4),g.dataEnd=g.length+o-2,g.partIndex=e[o+8],g.partsCount=e[o+9],i.mainHeader=!1,0===g.partIndex&&(g.COD=i.COD,g.COC=i.COC.slice(0),g.QCD=i.QCD,g.QCC=i.QCC.slice(0)),i.currentTile=g;break;case 65427:g=i.currentTile,0===g.partIndex&&(O(i,g.index),S(i)),p=g.dataEnd-o,A(i,e,o,p);break;case 65363:(0,n.warn)("JPX: Codestream code 0xFF53 (COC) is not implemented.");case 65365:case 65367:case 65368:case 65380:p=(0,a.readUint16)(e,o);break;default:throw new Error("Unknown codestream code: "+t.toString(16))}o+=p}}catch(e){if(s||this.failOnCorruptedImage)throw new o(e.message);(0,n.warn)('JPX: Trying to recover from: "'.concat(e.message,'".'))}this.tiles=function(e){const t=e.SIZ,r=e.components,n=t.Csiz,a=[];for(let t=0,i=e.tiles.length;t>2);c[b++]=e+m>>h,c[b++]=e>>h,c[b++]=e+p>>h}else for(d=0;d>h,c[b++]=g-.34413*p-.71414*m>>h,c[b++]=g+1.772*p>>h;if(e)for(d=0,b=3;d>h}else for(let e=0;e>h,b+=n}a.push(l)}return a}(i),this.width=i.SIZ.Xsiz-i.SIZ.XOsiz,this.height=i.SIZ.Ysiz-i.SIZ.YOsiz,this.componentsCount=i.SIZ.Csiz}};class F{constructor(e,t){const r=(0,a.log2)(Math.max(e,t))+1;this.levels=[];for(let n=0;n>=1,t>>=1,n++}n--,r=this.levels[n],r.items[r.index]=a,this.currentLevel=n,delete this.value}incrementValue(){const e=this.levels[this.currentLevel];e.items[e.index]++}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];return e--,e<0?(this.value=r,!1):(this.currentLevel=e,t=this.levels[e],t.items[t.index]=r,!0)}}class I{constructor(e,t,r){const n=(0,a.log2)(Math.max(e,t))+1;this.levels=[];for(let a=0;ar)return this.currentLevel=n,this.propagateValues(),!1;e>>=1,t>>=1,n++}return this.currentLevel=n-1,!0}incrementValue(e){const t=this.levels[this.currentLevel];t.items[t.index]=e+1,this.propagateValues()}propagateValues(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];for(;--e>=0;)t=this.levels[e],t.items[t.index]=r}nextLevel(){let e=this.currentLevel,t=this.levels[e];const r=t.items[t.index];return t.items[t.index]=255,e--,!(e<0||(this.currentLevel=e,t=this.levels[e],t.items[t.index]=r,0))}}class T{constructor(e,t,r,n,a){let i;this.width=e,this.height=t,i="HH"===r?T.HHContextLabel:"HL"===r?T.HLContextLabel:T.LLAndLHContextsLabel,this.contextLabelTable=i;const s=e*t;let o;this.neighborsSignificance=new Uint8Array(s),this.coefficentsSign=new Uint8Array(s),o=a>14?new Uint32Array(s):a>6?new Uint16Array(s):new Uint8Array(s),this.coefficentsMagnitude=o,this.processingFlags=new Uint8Array(s);const c=new Uint8Array(s);if(0!==n)for(let e=0;e0,o=t+10&&(c=r-a,s&&(n[c-1]+=16),o&&(n[c+1]+=16),n[c]+=4),e+1=r)break;if(s[d]&=-2,n[d]||!i[d])continue;const g=c[i[d]];if(e.readBit(o,g)){const e=this.decodeSignBit(t,u,d);a[d]=e,n[d]=1,this.setNeighborsSignificance(t,u,d),s[d]|=2}l[d]++,s[d]|=1}}}decodeSignBit(e,t,r){const n=this.width,a=this.height,i=this.coefficentsMagnitude,s=this.coefficentsSign;let o,c,l,h,u,d;h=t>0&&0!==i[r-1],t+10&&0!==i[r-n],e+1=0?(u=9+o,d=this.decoder.readBit(this.contexts,u)):(u=9-o,d=1^this.decoder.readBit(this.contexts,u)),d}runMagnitudeRefinementPass(){const e=this.decoder,t=this.width,r=this.height,n=this.coefficentsMagnitude,a=this.neighborsSignificance,i=this.contexts,s=this.bitsDecoded,o=this.processingFlags,c=t*r,l=4*t;for(let r,h=0;h>1;let a,i,s,o;const c=-1.586134342059924,l=-.052980118572961,h=.882911075530934,u=.443506852043971,d=1.230174104914001;for(a=(t|=0)-3,i=n+4;i--;a+=2)e[a]*=.8128930661159609;for(a=t-2,s=u*e[a-1],i=n+3;i--&&(o=u*e[a+1],e[a]=d*e[a]-s-o,i--);a+=2)a+=2,s=u*e[a+1],e[a]=d*e[a]-s-o;for(a=t-1,s=h*e[a-1],i=n+2;i--&&(o=h*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=h*e[a+1],e[a]-=s+o;for(a=t,s=l*e[a-1],i=n+1;i--&&(o=l*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=l*e[a+1],e[a]-=s+o;if(0!==n)for(a=t+1,s=c*e[a-1],i=n;i--&&(o=c*e[a+1],e[a]-=s+o,i--);a+=2)a+=2,s=c*e[a+1],e[a]-=s+o}}class P extends M{filter(e,t,r){const n=r>>1;let a,i;for(a=t|=0,i=n+1;i--;a+=2)e[a]-=e[a-1]+e[a+1]+2>>2;for(a=t+1,i=n;i--;a+=2)e[a]+=e[a-1]+e[a+1]>>1}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LZWStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168);class a extends n.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,this.cachedData=0,this.bitsCached=0;const n=4096,a={earlyChange:r,codeLength:9,nextCode:258,dictionaryValues:new Uint8Array(n),dictionaryLengths:new Uint16Array(n),dictionaryPrevCodes:new Uint16Array(n),currentSequence:new Uint8Array(n),currentSequenceLength:0};for(let e=0;e<256;++e)a.dictionaryValues[e]=e,a.dictionaryLengths[e]=1;this.lzwState=a}readBits(e){let t=this.bitsCached,r=this.cachedData;for(;t>>t&(1<0;if(e<256)d[0]=e,f=1;else{if(!(e>=258)){if(256===e){h=9,s=258,f=0;continue}this.eof=!0,delete this.lzwState;break}if(e=0;t--)d[t]=o[r],r=l[r];else d[f++]=d[0]}if(a&&(l[s]=u,c[s]=c[u]+1,o[s]=d[0],s++,h=s+i&s+i-1?h:0|Math.min(Math.log(s+i)/.6931471805599453+1,12)),u=e,g+=f,n{Object.defineProperty(t,"__esModule",{value:!0}),t.PredictorStream=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(168),a=r(150),i=r(144);class s extends n.DecodeStream{constructor(e,t,r){if(super(t),!(r instanceof a.Dict))return e;const n=this.predictor=r.get("Predictor")||1;if(n<=1)return e;if(2!==n&&(n<10||n>15))throw new i.FormatError("Unsupported predictor: ".concat(n));this.readBlock=2===n?this.readBlockTiff:this.readBlockPng,this.str=e,this.dict=e.dict;const s=this.colors=r.get("Colors")||1,o=this.bits=r.get("BPC","BitsPerComponent")||8,c=this.columns=r.get("Columns")||1;return this.pixBytes=s*o+7>>3,this.rowBytes=c*s*o+7>>3,this}readBlockTiff(){const e=this.rowBytes,t=this.bufferLength,r=this.ensureBuffer(t+e),n=this.bits,a=this.colors,i=this.str.getBytes(e);if(this.eof=!i.length,this.eof)return;let s,o=0,c=0,l=0,h=0,u=t;if(1===n&&1===a)for(s=0;s>1,e^=e>>2,e^=e>>4,o=(1&e)<<7,r[u++]=e}else if(8===n){for(s=0;s>8&255,r[u++]=255&e}}else{const e=new Uint8Array(a+1),u=(1<>l-n)&u,l-=n,c=c<=8&&(r[f++]=c>>h-8&255,h-=8);h>0&&(r[f++]=(c<<8-h)+(o&(1<<8-h)-1))}this.bufferLength+=e}readBlockPng(){const e=this.rowBytes,t=this.pixBytes,r=this.str.getByte(),n=this.str.getBytes(e);if(this.eof=!n.length,this.eof)return;const a=this.bufferLength,s=this.ensureBuffer(a+e);let o=s.subarray(a-e,a);0===o.length&&(o=new Uint8Array(e));let c,l,h,u=a;switch(r){case 0:for(c=0;c>1)+n[c];for(;c>1)+n[c]&255,u++;break;case 4:for(c=0;c{Object.defineProperty(t,"__esModule",{value:!0}),t.RunLengthStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t){super(t),this.str=e,this.dict=e.dict}readBlock(){const e=this.str.getBytes(2);if(!e||e.length<2||128===e[0])return void(this.eof=!0);let t,r=this.bufferLength,n=e[0];if(n<128){if(t=this.ensureBuffer(r+n+1),t[r++]=e[1],n>0){const e=this.str.getBytes(n);t.set(e,r),r+=n}}else{n=257-n;const a=e[1];t=this.ensureBuffer(r+n+1);for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.Font=t.ErrorFont=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(157),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(185),i=r(188),s=r(190),o=r(189),c=r(187),l=r(191),h=r(192),u=r(193),d=r(194),f=r(195),g=r(196),p=r(164),m=r(197),b=r(149),y=r(154),w=r(198);const v=[[57344,63743],[1048576,1114109]],x=1e3,S=["ascent","bbox","black","bold","charProcOperatorList","composite","cssFontInfo","data","defaultVMetrics","defaultWidth","descent","fallbackName","fontMatrix","isInvalidPDFjsFont","isType3Font","italic","loadedName","mimetype","missingFile","name","remeasure","subtype","systemFontInfo","type","vertical"],A=["cMap","defaultEncoding","differences","isMonospace","isSerifFont","isSymbolicFont","seacMap","toFontChar","toUnicode","vmetrics","widths"];function k(e){if(!e.fontMatrix)return;if(e.fontMatrix[0]===n.FONT_IDENTITY_MATRIX[0])return;const t=.001/e.fontMatrix[0],r=e.widths;for(const e in r)r[e]*=t;e.defaultWidth*=t}function C(e){if(!e.fallbackToUnicode)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const t=[];for(const r in e.fallbackToUnicode)e.toUnicode.has(r)||(t[r]=e.fallbackToUnicode[r]);t.length>0&&e.toUnicode.amend(t)}class O{constructor(e,t,r,n,a,i,s,o,c){this.originalCharCode=e,this.fontChar=t,this.unicode=r,this.accent=n,this.width=a,this.vmetric=i,this.operatorListId=s,this.isSpace=o,this.isInFont=c}get category(){return(0,n.shadow)(this,"category",(0,s.getCharUnicodeCategory)(this.unicode),!0)}}function F(e,t){return(e<<8)+t}function I(e,t,r){e[t+1]=r,e[t]=r>>>8}function T(e,t){const r=(e<<8)+t;return 32768&r?r-65536:r}function M(e){return String.fromCharCode(e>>8&255,255&e)}function E(e){return e>32767?e=32767:e<-32768&&(e=-32768),String.fromCharCode(e>>8&255,255&e)}function P(e){const t=e.peekBytes(4);return"ttcf"===(0,n.bytesToString)(t)}function R(e,t){for(const r in t)e[+r]=t[r]}function N(e,t,r){const n=[];let a;for(let r=0,i=e.length;r2&&void 0!==arguments[2]&&arguments[2];switch(t.length){case 1:return t.charCodeAt(0);case 2:return t.charCodeAt(0)<<8|t.charCodeAt(1)}const a="Unsupported CID string (charCode ".concat(e,'): "').concat(t,'".');if(r)throw new n.FormatError(a);return(0,n.warn)(a),t}function _(e,t,r,a){const i=Object.create(null),s=new Map,o=[],c=new Set;let l=0,h=v[l][0],u=v[l][1];for(let f in e){f|=0;let g=e[f];if(!t(g))continue;if(h>u){if(l++,l>=v.length){(0,n.warn)("Ran out of space in font private use area.");break}h=v[l][0],u=v[l][1]}const p=h++;0===g&&(g=r);let m=a.get(f);"string"==typeof m&&(m=m.codePointAt(0)),!m||(d=m,v[0][0]<=d&&d<=v[0][1]||v[1][0]<=d&&d<=v[1][1])||c.has(g)||(s.set(m,g),c.add(g)),i[p]=g,o[f]=p}var d;return{toFontChar:o,charCodeToGlyphId:i,toUnicodeExtraMap:s,nextAvailableFontCharCode:h}}function j(e,t,r){const a=function(e,t,r){const n=[];for(const t in e)e[t]>=r||n.push({fontCharCode:0|t,glyphId:e[t]});if(t)for(const[e,a]of t)a>=r||n.push({fontCharCode:e,glyphId:a});0===n.length&&n.push({fontCharCode:0,glyphId:0}),n.sort((function(e,t){return e.fontCharCode-t.fontCharCode}));const a=[],i=n.length;for(let e=0;e65535?2:1;let s,o,c,l,h="\\0\\0"+M(i)+"\\0\\0"+(0,n.string32)(4+8*i);for(s=a.length-1;s>=0&&!(a[s][0]<=65535);--s);const u=s+1;a[s][0]<65535&&65535===a[s][1]&&(a[s][1]=65534);const d=a[s][1]<65535?1:0,f=u+d,g=m.OpenTypeFileBuilder.getSearchParams(f,2);let p,b,y,w,v="",x="",S="",A="",k="",C=0;for(s=0,o=u;s0&&(x+="ÿÿ",v+="ÿÿ",S+="\\0",A+="\\0\\0");const O="\\0\\0"+M(2*f)+M(g.range)+M(g.entry)+M(g.rangeShift)+x+"\\0\\0"+v+S+A+k;let F="",I="";if(i>1){for(h+="\\0\\0\\n"+(0,n.string32)(4+8*i+4+O.length),F="",s=0,o=a.length;se||!l)&&(l=e),h 123 are reserved for internal usage");c|=1<65535&&(h=65535)}else l=0,h=255;const d=e.bbox||[0,0,0,0],f=r.unitsPerEm||1/(e.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],g=e.ascentScaled?1:f/x,p=r.ascent||Math.round(g*(e.ascent||d[3]));let m=r.descent||Math.round(g*(e.descent||d[1]));m>0&&e.descent>0&&d[1]<0&&(m=-m);const b=r.yMax||p,y=-r.yMin||-m;return"\\0$ô\\0\\0\\0Š»\\0\\0\\0ŒŠ»\\0\\0ß\\x001\\0\\0\\0\\0"+String.fromCharCode(e.fixedPitch?9:0)+"\\0\\0\\0\\0\\0\\0"+(0,n.string32)(a)+(0,n.string32)(i)+(0,n.string32)(o)+(0,n.string32)(c)+"*21*"+M(e.italicAngle?1:0)+M(l||e.firstChar)+M(h||e.lastChar)+M(p)+M(m)+"\\0d"+M(b)+M(y)+"\\0\\0\\0\\0\\0\\0\\0\\0"+M(e.xHeight)+M(e.capHeight)+M(0)+M(l||e.firstChar)+"\\0"}function $(e){const t=Math.floor(65536*e.italicAngle);return"\\0\\0\\0"+(0,n.string32)(t)+"\\0\\0\\0\\0"+(0,n.string32)(e.fixedPitch?1:0)+"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"}function X(e){return e.replaceAll(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g,"").slice(0,63)}function H(e,t){t||(t=[[],[]]);const r=[t[0][0]||"Original licence",t[0][1]||e,t[0][2]||"Unknown",t[0][3]||"uniqueID",t[0][4]||e,t[0][5]||"Version 0.11",t[0][6]||X(e),t[0][7]||"Unknown",t[0][8]||"Unknown",t[0][9]||"Unknown"],n=[];let a,i,s,o,c;for(a=0,i=r.length;a=1&&t[3]>=1&&t[3]<=4}(e)?o?(r="CIDFontType0",a="CIDFontType0C"):(r="MMType1"===i?"MMType1":"Type1",a="Type1C"):((0,n.warn)("getFontFileType: Unable to detect correct font file Type/Subtype."),r=i,a=s),[r,a]}(t,r),o===this.type&&c===this.subtype||(0,n.info)("Inconsistent font file Type/SubType, expected: ".concat(this.type,"/").concat(this.subtype," but found: ").concat(o,"/").concat(c,"."));try{switch(o){case"MMType1":(0,n.info)("MMType1 font ("+e+"), falling back to Type1.");case"Type1":case"CIDFontType0":this.mimetype="font/opentype";const a="Type1C"===c||"CIDFontType0C"===c?new u.CFFFont(t,r):new w.Type1Font(e,t,r);k(r),d=this.convert(e,a,r);break;case"OpenType":case"TrueType":case"CIDFontType2":this.mimetype="font/opentype",d=this.checkAndRepair(e,t,r),this.isOpenType&&(k(r),o="OpenType");break;default:throw new n.FormatError("Font ".concat(o," is not supported"))}}catch(e){return(0,n.warn)(e),void this.fallbackToSystemFont(r)}C(r),this.data=d,this.type=o,this.subtype=c,this.fontMatrix=r.fontMatrix,this.widths=r.widths,this.defaultWidth=r.defaultWidth,this.toUnicode=r.toUnicode,this.seacMap=r.seacMap}get renderer(){const e=d.FontRendererFactory.create(this,i.SEAC_ANALYSIS_ENABLED);return(0,n.shadow)(this,"renderer",e)}exportData(){const e=arguments.length>0&&void 0!==arguments[0]&&arguments[0]?[...S,...A]:S,t=Object.create(null);let r,n;for(r of e)n=this[r],void 0!==n&&(t[r]=n);return t}fallbackToSystemFont(e){this.missingFile=!0;const{name:t,type:r}=this;let n=(0,i.normalizeFontName)(t);const a=(0,l.getStdFontMap)(),u=(0,l.getNonStdFontMap)(),d=!!a[n],g=!(!u[n]||!a[u[n]]);n=a[n]||u[n]||n;const p=(0,f.getFontBasicMetrics)()[n];p&&(isNaN(this.ascent)&&(this.ascent=p.ascent/x),isNaN(this.descent)&&(this.descent=p.descent/x),isNaN(this.capHeight)&&(this.capHeight=p.capHeight/x)),this.bold=/bold/gi.test(n),this.italic=/oblique|italic/gi.test(n),this.black=/Black/g.test(t);const m=/Narrow/g.test(t);if(this.remeasure=(!d||m)&&Object.keys(this.widths).length>0,(d||g)&&"CIDFontType2"===r&&this.cidEncoding.startsWith("Identity-")){const r=e.cidToGidMap,n=[];if(R(n,(0,l.getGlyphMapForStandardFonts)()),/Arial-?Black/i.test(t)?R(n,(0,l.getSupplementalGlyphMapForArialBlack)()):/Calibri/i.test(t)&&R(n,(0,l.getSupplementalGlyphMapForCalibri)()),r){for(const e in n){const t=n[e];void 0!==r[t]&&(n[+e]=r[t])}r.length!==this.toUnicode.length&&e.hasIncludedToUnicodeMap&&this.toUnicode instanceof h.IdentityToUnicodeMap&&this.toUnicode.forEach((function(e,t){const a=n[e];void 0===r[a]&&(n[+e]=t)}))}this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(e,t){n[+e]=t})),this.toFontChar=n,this.toUnicode=new h.ToUnicodeMap(n)}else if(/Symbol/i.test(n))this.toFontChar=N(c.SymbolSetEncoding,(0,o.getGlyphsUnicode)(),this.differences);else if(/Dingbats/i.test(n))this.toFontChar=N(c.ZapfDingbatsEncoding,(0,o.getDingbatsGlyphsUnicode)(),this.differences);else if(d){const e=N(this.defaultEncoding,(0,o.getGlyphsUnicode)(),this.differences);"CIDFontType2"!==r||this.cidEncoding.startsWith("Identity-")||this.toUnicode instanceof h.IdentityToUnicodeMap||this.toUnicode.forEach((function(t,r){e[+t]=r})),this.toFontChar=e}else{const e=(0,o.getGlyphsUnicode)(),r=[];this.toUnicode.forEach(((t,n)=>{if(!this.composite){const r=this.differences[t]||this.defaultEncoding[t],a=(0,s.getUnicodeForGlyph)(r,e);-1!==a&&(n=a)}r[+t]=n})),this.composite&&this.toUnicode instanceof h.IdentityToUnicodeMap&&/Tahoma|Verdana/i.test(t)&&R(r,(0,l.getGlyphMapForStandardFonts)()),this.toFontChar=r}C(e),this.loadedName=n.split("-")[0]}checkAndRepair(e,t,r){var s,l;const d=["OS/2","cmap","head","hhea","hmtx","maxp","name","post","loca","glyf","fpgm","prep","cvt ","CFF "];function f(e,t){const r=Object.create(null);r["OS/2"]=null,r.cmap=null,r.head=null,r.hhea=null,r.hmtx=null,r.maxp=null,r.name=null,r.post=null;for(let n=0;n>>0,n=e.getInt32()>>>0,a=e.getInt32()>>>0,i=e.pos;e.pos=e.start||0,e.skip(n);const s=e.getBytes(a);return e.pos=i,"head"===t&&(s[8]=s[9]=s[10]=s[11]=0,s[17]|=32),{tag:t,checksum:r,length:a,offset:n,data:s}}function w(e){return{version:e.getString(4),numTables:e.getUint16(),searchRange:e.getUint16(),entrySelector:e.getUint16(),rangeShift:e.getUint16()}}function v(e,t,r,n,a,i){const s={length:0,sizeOfInstructions:0};if(t<0||t>=e.length||r>e.length||r-t<=12)return s;const o=e.subarray(t,r),c=T(o[2],o[3]),l=T(o[4],o[5]),h=T(o[6],o[7]),u=T(o[8],o[9]);c>h&&(I(o,2,h),I(o,6,c)),l>u&&(I(o,4,u),I(o,8,l));const d=T(o[0],o[1]);if(d<0)return d<-1||(n.set(o,a),s.length=o.length),s;let f,g=10,p=0;for(f=0;fo.length?s:!i&&b>0?(n.set(o.subarray(0,m),a),n.set([0,0],a+m),n.set(o.subarray(y,v),a+m+2),v-=b,o.length-v>3&&(v=v+3&-4),s.length=v,s):o.length-v>3?(v=v+3&-4,n.set(o.subarray(0,v),a),s.length=v,s):(n.set(o,a),s.length=o.length,s)}function x(e){const r=(t.start||0)+e.offset;t.pos=r;const n=[[],[]],a=[],i=e.length,s=r+i;if(0!==t.getUint16()||i<6)return[n,a];const o=t.getUint16(),c=t.getUint16();let l,h;for(l=0;ls)continue;t.pos=i;const o=e.name;if(e.encoding){let r="";for(let n=0,a=e.length;n0&&(l+=e-1)}}else(m||y)&&((0,n.warn)("TT: nested FDEFs not allowed"),p=!0),m=!0,u=l,s=d.pop(),t.functionsDefined[s]={data:c,i:l};else if(!m&&!y)if(s=d.at(-1),isNaN(s))(0,n.info)("TT: CALL empty stack (or invalid entry).");else if(t.functionsUsed[s]=!0,s in t.functionsStackDeltas){const e=d.length+t.functionsStackDeltas[s];if(e<0)return(0,n.warn)("TT: CALL invalid functions stack delta."),void(t.hintsValid=!1);d.length=e}else if(s in t.functionsDefined&&!g.includes(s)){if(f.push({data:c,i:l,stackTop:d.length-1}),g.push(s),o=t.functionsDefined[s],!o)return(0,n.warn)("TT: CALL non-existent function"),void(t.hintsValid=!1);c=o.data,l=o.i}if(!m&&!y){let t=0;for(e<=142?t=S[e]:e>=192&&e<=223?t=-1:e>=224&&(t=-2),e>=113&&e<=117&&(a=d.pop(),isNaN(a)||(t=2*-a));t<0&&d.length>0;)d.pop(),t++;for(;t>0;)d.push(NaN),t--}}t.tooComplexToFollowFunctions=p;const w=[c];l>c.length&&w.push(new Uint8Array(l-c.length)),u>h&&((0,n.warn)("TT: complementing a missing function tail"),w.push(new Uint8Array([34,45]))),function(e,t){if(t.length>1){let r,n,a=0;for(r=0,n=t.length;r>>0,s=[];for(let t=0;t>>0);const o={ttcTag:t,majorVersion:r,minorVersion:a,numFonts:i,offsetTable:s};switch(r){case 1:return o;case 2:return o.dsigTag=e.getInt32()>>>0,o.dsigLength=e.getInt32()>>>0,o.dsigOffset=e.getInt32()>>>0,o}throw new n.FormatError("Invalid TrueType Collection majorVersion: ".concat(r,"."))}(e),i=t.split("+");let s;for(let c=0;c0||!(r.cMap instanceof p.IdentityCMap));if("OTTO"===C.version&&!t||!O.head||!O.hhea||!O.maxp||!O.post)return E=new y.Stream(O["CFF "].data),M=new u.CFFFont(E,r),k(r),this.convert(e,M,r);delete O.glyf,delete O.loca,delete O.fpgm,delete O.prep,delete O["cvt "],this.isOpenType=!0}if(!O.maxp)throw new n.FormatError('Required "maxp" table is not found');t.pos=(t.start||0)+O.maxp.offset;const X=t.getInt32(),q=t.getUint16();if((null===(s=r.scaleFactors)||void 0===s?void 0:s.length)===q&&R){const{scaleFactors:e}=r,t=F(O.head.data[50],O.head.data[51]),n=new g.GlyfTable({glyfTable:O.glyf.data,isGlyphLocationsLong:t,locaTable:O.loca.data,numGlyphs:q});n.scale(e);const{glyf:a,loca:i,isLocationLong:s}=n.write();O.glyf.data=a,O.loca.data=i,s!==!!t&&(O.head.data[50]=0,O.head.data[51]=s?1:0);const o=O.hmtx.data;for(let t=0;t>8&255,o[r+1]=255&n,I(o,r+2,Math.round(e[t]*T(o[r+2],o[r+3])))}}let z=q+1,G=!0;z>65535&&(G=!1,z=q,(0,n.warn)("Not enough space in glyfs to duplicate first glyph."));let W=0,V=0;X>=65536&&O.maxp.length>=22&&(t.pos+=8,t.getUint16()>2&&(O.maxp.data[14]=0,O.maxp.data[15]=2),t.pos+=4,W=t.getUint16(),t.pos+=4,V=t.getUint16()),O.maxp.data[4]=z>>8,O.maxp.data[5]=255&z;const K=function(e,t,r,a){const i={functionsDefined:[],functionsUsed:[],functionsStackDeltas:[],tooComplexToFollowFunctions:!1,hintsValid:!0};if(e&&A(e,i),t&&A(t,i),e&&function(e,t){if(!e.tooComplexToFollowFunctions)if(e.functionsDefined.length>t)(0,n.warn)("TT: more functions defined than expected"),e.hintsValid=!1;else for(let r=0,a=e.functionsUsed.length;rt)return(0,n.warn)("TT: invalid function id: "+r),void(e.hintsValid=!1);if(e.functionsUsed[r]&&!e.functionsDefined[r])return(0,n.warn)("TT: undefined function: "+r),void(e.hintsValid=!1)}}(i,a),r&&1&r.length){const e=new Uint8Array(r.length+1);e.set(r.data),r.data=e}return i.hintsValid}(O.fpgm,O.prep,O["cvt "],W);if(K||(delete O.fpgm,delete O.prep,delete O["cvt "]),function(e,t,r,a,i,s){if(!t)return void(r&&(r.data=null));e.pos=(e.start||0)+t.offset,e.pos+=4,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2,e.pos+=2;const o=e.getUint16();e.pos+=8,e.pos+=2;let c=e.getUint16();0!==o&&(2&F(a.data[44],a.data[45])||(t.data[22]=0,t.data[23]=0)),c>i&&((0,n.info)("The numOfMetrics (".concat(c,") should not be greater than the numGlyphs (").concat(i,").")),c=i,t.data[34]=(65280&c)>>8,t.data[35]=255&c);const l=i-c-(r.length-4*c>>1);if(l>0){const e=new Uint8Array(r.length+2*l);e.set(r.data),s&&(e[r.length]=r.data[2],e[r.length+1]=r.data[3]),r.data=e}}(t,O.hhea,O.hmtx,O.head,z,G),!O.head)throw new n.FormatError('Required "head" table is not found');!function(e,t,r){const a=e.data,i=function(e,t,r,n){return(e<<24)+(t<<16)+(r<<8)+n}(a[0],a[1],a[2],a[3]);i>>16!=1&&((0,n.info)("Attempting to fix invalid version in head table: "+i),a[0]=0,a[1]=1,a[2]=0,a[3]=0);const s=F(a[50],a[51]);if(s<0||s>1){(0,n.info)("Attempting to fix invalid indexToLocFormat in head table: "+s);const e=t+1;if(r===e<<1)a[50]=0,a[51]=0;else{if(r!==e<<2)throw new n.FormatError("Could not fix indexToLocFormat: "+s);a[50]=0,a[51]=1}}}(O.head,q,R?O.loca.length:0);let Y=Object.create(null);if(R){const e=F(O.head.data[50],O.head.data[51]),t=function(e,t,r,n,a,i,s){let o,c,l;n?(o=4,c=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]},l=function(e,t,r){e[t]=r>>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}):(o=2,c=function(e,t){return e[t]<<9|e[t+1]<<1},l=function(e,t,r){e[t]=r>>9&255,e[t+1]=r>>1&255});const h=i?r+1:r,u=o*(1+h),d=new Uint8Array(u);d.set(e.data.subarray(0,u)),e.data=d;const f=t.data,g=f.length,p=new Uint8Array(g);let m,b;const y=[];for(m=0,b=0;mg&&(e=g),y.push({index:m,offset:e,endOffset:0})}for(y.sort(((e,t)=>e.offset-t.offset)),m=0;me.index-t.index)),m=0;ms&&(s=e.sizeOfInstructions),x+=t,l(d,b,x)}if(0===x){const e=new Uint8Array([0,1,0,0,0,0,0,0,0,0,0,0,0,0,49,0]);for(m=0,b=o;mr+x?t.data=p.subarray(0,r+x):(t.data=new Uint8Array(r+x),t.data.set(p.subarray(0,x))),t.data.set(p.subarray(0,r),x),l(e.data,d.length-o,x+r)}else t.data=p.subarray(0,x);return{missingGlyphs:w,maxSizeOfInstructions:s}}(O.loca,O.glyf,q,e,K,G,V);Y=t.missingGlyphs,X>=65536&&O.maxp.length>=22&&(O.maxp.data[26]=t.maxSizeOfInstructions>>8,O.maxp.data[27]=255&t.maxSizeOfInstructions)}if(!O.hhea)throw new n.FormatError('Required "hhea" table is not found');0===O.hhea.data[10]&&0===O.hhea.data[11]&&(O.hhea.data[10]=255,O.hhea.data[11]=255);const J={unitsPerEm:F(O.head.data[18],O.head.data[19]),yMax:T(O.head.data[42],O.head.data[43]),yMin:T(O.head.data[38],O.head.data[39]),ascent:T(O.hhea.data[4],O.hhea.data[5]),descent:T(O.hhea.data[6],O.hhea.data[7]),lineGap:T(O.hhea.data[8],O.hhea.data[9])};this.ascent=J.ascent/J.unitsPerEm,this.descent=J.descent/J.unitsPerEm,this.lineGap=J.lineGap/J.unitsPerEm,null!==(l=this.cssFontInfo)&&void 0!==l&&l.lineHeight?(this.lineHeight=this.cssFontInfo.metrics.lineHeight,this.lineGap=this.cssFontInfo.metrics.lineGap):this.lineHeight=this.ascent-this.descent+this.lineGap,O.post&&function(e,r,a){const s=(t.start||0)+e.offset;t.pos=s;const o=s+e.length,c=t.getInt32();t.skip(28);let l,h,u=!0;switch(c){case 65536:l=i.MacStandardGlyphOrdering;break;case 131072:const e=t.getUint16();if(e!==a){u=!1;break}const s=[];for(h=0;h=32768){u=!1;break}s.push(e)}if(!u)break;const d=[],f=[];for(;t.pos65535)throw new n.FormatError("Max size of CID is 65,535");let i=-1;t?i=a:void 0!==e[a]&&(i=e[a]),i>=0&&i>>0;let d=!1;if((null===(h=c)||void 0===h?void 0:h.platformId)!==n||(null===(u=c)||void 0===u?void 0:u.encodingId)!==i){if(0!==n||0!==i&&1!==i&&3!==i)if(1===n&&0===i)d=!0;else if(3!==n||1!==i||!a&&c){if(r&&3===n&&0===i){d=!0;let r=!0;if(e>3;e.push(n),r=Math.max(n,r)}const n=[];for(let e=0;e<=r;e++)n.push({firstCode:t.getUint16(),entryCount:t.getUint16(),idDelta:T(t.getByte(),t.getByte()),idRangePos:t.pos+t.getUint16()});for(let r=0;r<256;r++)if(0===e[r])t.pos=n[0].idRangePos+2*r,m=t.getUint16(),g.push({charCode:r,glyphId:m});else{const a=n[e[r]];for(p=0;p>1;t.skip(6);const r=[];let n;for(n=0;n>1)-(e-n),i.offsetIndex=a,o=Math.max(o,a+i.end-i.start+1)):i.offsetIndex=-1}const c=[];for(p=0;p>>0;for(p=0;p>>0,r=t.getInt32()>>>0;let n=t.getInt32()>>>0;for(let t=e;t<=r;t++)g.push({charCode:t,glyphId:n++})}}}g.sort((function(e,t){return e.charCode-t.charCode}));for(let e=1;e=61440&&t<=61695&&(t&=255),Z[t]=e.glyphId}if(r.glyphNames&&(u.length||this.differences.length))for(let e=0;e<256;++e){if(!d&&void 0!==Z[e])continue;const t=this.differences[e]||u[e];if(!t)continue;const n=r.glyphNames.indexOf(t);n>0&&Q(n)&&(Z[e]=n)}}0===Z.length&&(Z[0]=0);let ee=z-1;if(G||(ee=0),!r.cssFontInfo){const e=_(Z,Q,ee,this.toUnicode);this.toFontChar=e.toFontChar,O.cmap={tag:"cmap",data:j(e.charCodeToGlyphId,e.toUnicodeExtraMap,z)},O["OS/2"]&&function(e,t){t.pos=(t.start||0)+e.offset;const r=t.getUint16();t.skip(60);const n=t.getUint16();return!(r<4&&768&n||t.getUint16()>t.getUint16()||(t.skip(6),0===t.getUint16()||(e.data[8]=e.data[9]=0,0)))}(O["OS/2"],t)||(O["OS/2"]={tag:"OS/2",data:U(r,e.charCodeToGlyphId,J)})}if(!R)try{E=new y.Stream(O["CFF "].data),M=new a.CFFParser(E,r,i.SEAC_ANALYSIS_ENABLED).parse(),M.duplicateFirstGlyph();const e=new a.CFFCompiler(M);O["CFF "].data=e.compile()}catch(e){(0,n.warn)("Failed to compile font "+r.loadedName)}if(O.name){const[t,n]=x(O.name);O.name.data=H(e,t),this.psName=t[0][6]||null,r.composite||function(e,t,r){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(e.hasEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;if(!t)return;if(0===r.length)return;if(e.defaultEncoding===c.WinAnsiEncoding)return;for(const e of r)if(!B(e))return;const n=c.WinAnsiEncoding,a=[],i=(0,o.getGlyphsUnicode)();for(const e in n){const t=n[e];if(""===t)continue;const r=i[t];void 0!==r&&(a[e]=String.fromCharCode(r))}a.length>0&&e.toUnicode.amend(a)}(r,this.isSymbolicFont,n)}else O.name={tag:"name",data:H(this.name)};const te=new m.OpenTypeFileBuilder(C.version);for(const e in O)te.addTable(e,O[e].data);return te.toArray()}convert(e,t,r){r.fixedPitch=!1,r.builtInEncoding&&function(e,t){if(e.isInternalFont)return;if(e.hasIncludedToUnicodeMap)return;if(t===e.defaultEncoding)return;if(e.toUnicode instanceof h.IdentityToUnicodeMap)return;const r=[],n=(0,o.getGlyphsUnicode)();for(const a in t){if(e.hasEncoding&&(e.baseEncodingName||void 0!==e.differences[a]))continue;const i=t[a],o=(0,s.getUnicodeForGlyph)(i,n);-1!==o&&(r[a]=String.fromCharCode(o))}r.length>0&&e.toUnicode.amend(r)}(r,r.builtInEncoding);let a=1;t instanceof u.CFFFont&&(a=t.numGlyphs-1);const l=t.getGlyphMapping(r);let d=null,f=l,g=null;r.cssFontInfo||(d=_(l,t.hasGlyphId.bind(t),a,this.toUnicode),this.toFontChar=d.toFontChar,f=d.charCodeToGlyphId,g=d.toUnicodeExtraMap);const p=t.numGlyphs;function b(e,t){let r=null;for(const n in e)t===e[n]&&(r||(r=[])).push(0|n);return r}function y(e,t){for(const r in e)if(t===e[r])return 0|r;return d.charCodeToGlyphId[d.nextAvailableFontCharCode]=t,d.nextAvailableFontCharCode++}const w=t.seacs;if(d&&i.SEAC_ANALYSIS_ENABLED&&null!=w&&w.length){const e=r.fontMatrix||n.FONT_IDENTITY_MATRIX,a=t.getCharset(),i=Object.create(null);for(let t in w){t|=0;const r=w[t],n=c.StandardEncoding[r[2]],s=c.StandardEncoding[r[3]],o=a.indexOf(n),h=a.indexOf(s);if(o<0||h<0)continue;const u={x:r[0]*e[0]+r[1]*e[2]+e[4],y:r[0]*e[1]+r[1]*e[3]+e[5]},f=b(l,t);if(f)for(const e of f){const t=d.charCodeToGlyphId,r=y(t,o),n=y(t,h);i[e]={baseFontCharCode:r,accentFontCharCode:n,accentOffset:u}}}r.seacMap=i}const v=1/(r.fontMatrix||n.FONT_IDENTITY_MATRIX)[0],x=new m.OpenTypeFileBuilder("OTTO");return x.addTable("CFF ",t.data),x.addTable("OS/2",U(r,f)),x.addTable("cmap",j(f,g,p)),x.addTable("head","\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0_<õ\\0\\0"+E(v)+"\\0\\0\\0\\0ž\\v~'\\0\\0\\0\\0ž\\v~'\\0\\0"+E(r.descent)+"ÿ"+E(r.ascent)+M(r.italicAngle?2:0)+"\\0\\0\\0\\0\\0\\0\\0"),x.addTable("hhea","\\0\\0\\0"+E(r.ascent)+E(r.descent)+"\\0\\0ÿÿ\\0\\0\\0\\0\\0\\0"+E(r.capHeight)+E(Math.tan(r.italicAngle)*r.xHeight)+"\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"+M(p)),x.addTable("hmtx",function(){const e=t.charstrings,r=t.cff?t.cff.widths:null;let n="\\0\\0\\0\\0";for(let t=1,a=p;t1&&void 0!==arguments[1]&&arguments[1],u=this._glyphCache[e];if((null===(t=u)||void 0===t?void 0:t.isSpace)===h)return u;let d=e;null!==(r=this.cMap)&&void 0!==r&&r.contains(e)&&(d=this.cMap.lookup(e),"string"==typeof d&&(d=L(e,d))),c=this.widths[d],"number"!=typeof c&&(c=this.defaultWidth);const f=null===(a=this.vmetrics)||void 0===a?void 0:a[d];let g=this.toUnicode.get(e)||e;"number"==typeof g&&(g=String.fromCharCode(g));let p=void 0!==this.toFontChar[e];if(o=this.toFontChar[e]||e,this.missingFile){const t=this.differences[e]||this.defaultEncoding[e];".notdef"!==t&&""!==t||"Type1"!==this.type||(o=32),o=(0,s.mapSpecialUnicodeValues)(o)}this.isType3Font&&(l=o);let m=null;if(null!==(i=this.seacMap)&&void 0!==i&&i[e]){p=!0;const t=this.seacMap[e];o=t.baseFontCharCode,m={fontChar:String.fromCodePoint(t.accentFontCharCode),offset:t.accentOffset}}let b="";return"number"==typeof o&&(o<=1114111?b=String.fromCodePoint(o):(0,n.warn)("charToGlyph - invalid fontCharCode: ".concat(o))),u=new O(e,b,g,m,c,f,l,h,p),this._glyphCache[e]=u}charsToGlyphs(e){let t=this._charsCache[e];if(t)return t;if(t=[],this.cMap){const r=Object.create(null),n=e.length;let a=0;for(;at.length%2==1,a=this.toUnicode instanceof h.IdentityToUnicodeMap?e=>this.toUnicode.charCodeOf(e):e=>this.toUnicode.charCodeOf(String.fromCodePoint(e));for(let i=0,s=e.length;i55295&&(s<57344||s>65533)&&i++,this.toUnicode){const e=a(s);if(-1!==e){n()&&(t.push(r.join("")),r.length=0);for(let t=(this.cMap?this.cMap.getCharCodeLength(e):1)-1;t>=0;t--)r.push(String.fromCharCode(e>>8*t&255));continue}}n()||(t.push(r.join("")),r.length=0),r.push(String.fromCodePoint(s))}return t.push(r.join("")),t}},t.ErrorFont=class{constructor(e){this.error=e,this.loadedName="g_font_error",this.missingFile=!0}charsToGlyphs(){return[]}encodeString(e){return[e]}exportData(){return{error:this.error}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CFFTopDict=t.CFFStrings=t.CFFStandardStrings=t.CFFPrivateDict=t.CFFParser=t.CFFIndex=t.CFFHeader=t.CFFFDSelect=t.CFFCompiler=t.CFFCharset=t.CFF=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(186),i=r(187);const s=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"];t.CFFStandardStrings=s;const o=[null,{id:"hstem",min:2,stackClearing:!0,stem:!0},null,{id:"vstem",min:2,stackClearing:!0,stem:!0},{id:"vmoveto",min:1,stackClearing:!0},{id:"rlineto",min:2,resetStack:!0},{id:"hlineto",min:1,resetStack:!0},{id:"vlineto",min:1,resetStack:!0},{id:"rrcurveto",min:6,resetStack:!0},null,{id:"callsubr",min:1,undefStack:!0},{id:"return",min:0,undefStack:!0},null,null,{id:"endchar",min:0,stackClearing:!0},null,null,null,{id:"hstemhm",min:2,stackClearing:!0,stem:!0},{id:"hintmask",min:0,stackClearing:!0},{id:"cntrmask",min:0,stackClearing:!0},{id:"rmoveto",min:2,stackClearing:!0},{id:"hmoveto",min:1,stackClearing:!0},{id:"vstemhm",min:2,stackClearing:!0,stem:!0},{id:"rcurveline",min:8,resetStack:!0},{id:"rlinecurve",min:8,resetStack:!0},{id:"vvcurveto",min:4,resetStack:!0},{id:"hhcurveto",min:4,resetStack:!0},null,{id:"callgsubr",min:1,undefStack:!0},{id:"vhcurveto",min:4,resetStack:!0},{id:"hvcurveto",min:4,resetStack:!0}],c=[null,null,null,{id:"and",min:2,stackDelta:-1},{id:"or",min:2,stackDelta:-1},{id:"not",min:1,stackDelta:0},null,null,null,{id:"abs",min:1,stackDelta:0},{id:"add",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]+e[t-1]}},{id:"sub",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]-e[t-1]}},{id:"div",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]/e[t-1]}},null,{id:"neg",min:1,stackDelta:0,stackFn(e,t){e[t-1]=-e[t-1]}},{id:"eq",min:2,stackDelta:-1},null,null,{id:"drop",min:1,stackDelta:-1},null,{id:"put",min:2,stackDelta:-2},{id:"get",min:1,stackDelta:0},{id:"ifelse",min:4,stackDelta:-3},{id:"random",min:0,stackDelta:1},{id:"mul",min:2,stackDelta:-1,stackFn(e,t){e[t-2]=e[t-2]*e[t-1]}},null,{id:"sqrt",min:1,stackDelta:0},{id:"dup",min:1,stackDelta:1},{id:"exch",min:2,stackDelta:0},{id:"index",min:2,stackDelta:0},{id:"roll",min:3,stackDelta:-2},null,null,null,{id:"hflex",min:7,resetStack:!0},{id:"flex",min:13,resetStack:!0},{id:"hflex1",min:9,resetStack:!0},{id:"flex1",min:11,resetStack:!0}];t.CFFParser=class{constructor(e,t,r){this.bytes=e.getBytes(),this.properties=t,this.seacAnalysisEnabled=!!r}parse(){const e=this.properties,t=new l;this.cff=t;const r=this.parseHeader(),n=this.parseIndex(r.endPos),a=this.parseIndex(n.endPos),i=this.parseIndex(a.endPos),s=this.parseIndex(i.endPos),o=this.parseDict(a.obj.get(0)),c=this.createDict(p,o,t.strings);t.header=r.obj,t.names=this.parseNameIndex(n.obj),t.strings=this.parseStringIndex(i.obj),t.topDict=c,t.globalSubrIndex=s.obj,this.parsePrivateDict(t.topDict),t.isCIDFont=c.hasName("ROS");const h=c.getByName("CharStrings"),u=this.parseIndex(h).obj,d=c.getByName("FontMatrix");d&&(e.fontMatrix=d);const f=c.getByName("FontBBox");let g,m;if(f&&(e.ascent=Math.max(f[3],f[1]),e.descent=Math.min(f[1],f[3]),e.ascentScaled=!0),t.isCIDFont){const e=this.parseIndex(c.getByName("FDArray")).obj;for(let r=0,n=e.count;r=t)throw new n.FormatError("Invalid CFF header");0!==r&&((0,n.info)("cff data is shifted"),e=e.subarray(r),this.bytes=e);const a=e[0],i=e[1],s=e[2],o=e[3];return{obj:new h(a,i,s,o),endPos:s}}parseDict(e){let t=0;function r(){let r=e[t++];return 30===r?function(){let r="";const n=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],a=e.length;for(;t>4,s=15&a;if(15===i)break;if(r+=n[i],15===s)break;r+=n[s]}return parseFloat(r)}():28===r?(r=e[t++],r=(r<<24|e[t++]<<16)>>16,r):29===r?(r=e[t++],r=r<<8|e[t++],r=r<<8|e[t++],r=r<<8|e[t++],r):r>=32&&r<=246?r-139:r>=247&&r<=250?256*(r-247)+e[t++]+108:r>=251&&r<=254?-256*(r-251)-e[t++]-108:((0,n.warn)('CFFParser_parseDict: "'+r+'" is a reserved command.'),NaN)}let a=[];const i=[];t=0;const s=e.length;for(;t10)return!1;let i=e.stackSize;const s=e.stack;let l=t.length;for(let h=0;h>16,h+=2,i++;else if(14===u){if(i>=4&&(i-=4,this.seacAnalysisEnabled))return e.seac=s.slice(i,i+4),!1;d=o[u]}else if(u>=32&&u<=246)s[i]=u-139,i++;else if(u>=247&&u<=254)s[i]=u<251?(u-247<<8)+t[h]+108:-(u-251<<8)-t[h]-108,h++,i++;else if(255===u)s[i]=(t[h]<<24|t[h+1]<<16|t[h+2]<<8|t[h+3])/65536,h+=4,i++;else if(19===u||20===u){if(e.hints+=i>>1,0===e.hints){t.copyWithin(h-1,h,-1),h-=1,l-=1;continue}h+=e.hints+7>>3,i%=2,d=o[u]}else{if(10===u||29===u){const t=10===u?r:a;if(!t)return d=o[u],(0,n.warn)("Missing subrsIndex for "+d.id),!1;let c=32768;t.count<1240?c=107:t.count<33900&&(c=1131);const l=s[--i]+c;if(l<0||l>=t.count||isNaN(l))return d=o[u],(0,n.warn)("Out of bounds subrIndex for "+d.id),!1;if(e.stackSize=i,e.callDepth++,!this.parseCharString(e,t.get(l),r,a))return!1;e.callDepth--,i=e.stackSize;continue}if(11===u)return e.stackSize=i,!0;if(0===u&&h===t.length)t[h-1]=14,d=o[14];else{if(9===u){t.copyWithin(h-1,h,-1),h-=1,l-=1;continue}d=o[u]}}if(d){if(d.stem&&(e.hints+=i>>1,3===u||23===u?e.hasVStems=!0:!e.hasVStems||1!==u&&18!==u||((0,n.warn)("CFF stem hints are in wrong order"),t[h-1]=1===u?3:23)),"min"in d&&!e.undefStack&&i=2&&d.stem?i%=2:i>1&&(0,n.warn)("Found too many parameters for stack-clearing command"),i>0&&(e.width=s[i-1])),"stackDelta"in d?("stackFn"in d&&d.stackFn(s,i),i+=d.stackDelta):d.stackClearing?i=0:d.resetStack?(i=0,e.undefStack=!1):d.undefStack&&(i=0,e.undefStack=!0,e.firstStackClearing=!1)}}return l=s.length&&((0,n.warn)("Invalid fd index for glyph index."),d=!1),d&&(g=s[t].privateDict,f=g.subrsIndex)}else r&&(f=r);if(d&&(d=this.parseCharString(u,h,f,a)),null!==u.width){const t=g.getByName("nominalWidthX");l[e]=t+u.width}else{const t=g.getByName("defaultWidthX");l[e]=t}null!==u.seac&&(c[e]=u.seac),d||t.set(e,new Uint8Array([14]))}return{charStrings:t,seacs:c,widths:l}}emptyPrivateDictionary(e){const t=this.createDict(b,[],e.strings);e.setByKey(18,[0,0]),e.privateDict=t}parsePrivateDict(e){if(!e.hasName("Private"))return void this.emptyPrivateDictionary(e);const t=e.getByName("Private");if(!Array.isArray(t)||2!==t.length)return void e.removeByName("Private");const r=t[0],n=t[1];if(0===r||n>=this.bytes.length)return void this.emptyPrivateDictionary(e);const a=n+r,i=this.bytes.subarray(n,a),s=this.parseDict(i),o=this.createDict(b,s,e.strings);if(e.privateDict=o,0===o.getByName("ExpansionFactor")&&o.setByName("ExpansionFactor",.06),!o.getByName("Subrs"))return;const c=o.getByName("Subrs"),l=n+c;if(0===c||l>=this.bytes.length)return void this.emptyPrivateDictionary(e);const h=this.parseIndex(l);o.subrsIndex=h.obj}parseCharsets(e,t,r,i){if(0===e)return new w(!0,y.ISO_ADOBE,a.ISOAdobeCharset);if(1===e)return new w(!0,y.EXPERT,a.ExpertCharset);if(2===e)return new w(!0,y.EXPERT_SUBSET,a.ExpertSubsetCharset);const s=this.bytes,o=e,c=s[e++],l=[i?0:".notdef"];let h,u,d;switch(t-=1,c){case 0:for(d=0;d=65535)return void(0,n.warn)("Not enough space in charstrings to duplicate first glyph.");const e=this.charStrings.get(0);this.charStrings.add(e),this.isCIDFont&&this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0])}hasGlyphId(e){return!(e<0||e>=this.charStrings.count)&&this.charStrings.get(e).length>0}}t.CFF=l;class h{constructor(e,t,r,n){this.major=e,this.minor=t,this.hdrSize=r,this.offSize=n}}t.CFFHeader=h;class u{constructor(){this.strings=[]}get(e){return e>=0&&e<=390?s[e]:e-391<=this.strings.length?this.strings[e-391]:s[0]}getSID(e){let t=s.indexOf(e);return-1!==t?t:(t=this.strings.indexOf(e),-1!==t?t+391:-1)}add(e){this.strings.push(e)}get count(){return this.strings.length}}t.CFFStrings=u;class d{constructor(){this.objects=[],this.length=0}add(e){this.length+=e.length,this.objects.push(e)}set(e,t){this.length+=t.length-this.objects[e].length,this.objects[e]=t}get(e){return this.objects[e]}get count(){return this.objects.length}}t.CFFIndex=d;class f{constructor(e,t){this.keyToNameMap=e.keyToNameMap,this.nameToKeyMap=e.nameToKeyMap,this.defaults=e.defaults,this.types=e.types,this.opcodes=e.opcodes,this.order=e.order,this.strings=t,this.values=Object.create(null)}setByKey(e,t){if(!(e in this.keyToNameMap))return!1;if(0===t.length)return!0;for(const r of t)if(isNaN(r))return(0,n.warn)('Invalid CFFDict value: "'.concat(t,'" for key "').concat(e,'".')),!0;const r=this.types[e];return"num"!==r&&"sid"!==r&&"offset"!==r||(t=t[0]),this.values[e]=t,!0}setByName(e,t){if(!(e in this.nameToKeyMap))throw new n.FormatError('Invalid dictionary name "'.concat(e,'"'));this.values[this.nameToKeyMap[e]]=t}hasName(e){return this.nameToKeyMap[e]in this.values}getByName(e){if(!(e in this.nameToKeyMap))throw new n.FormatError("Invalid dictionary name ".concat(e,'"'));const t=this.nameToKeyMap[e];return t in this.values?this.values[t]:this.defaults[t]}removeByName(e){delete this.values[this.nameToKeyMap[e]]}static createTables(e){const t={keyToNameMap:{},nameToKeyMap:{},defaults:{},types:{},opcodes:{},order:[]};for(const r of e){const e=Array.isArray(r[0])?(r[0][0]<<8)+r[0][1]:r[0];t.keyToNameMap[e]=r[1],t.nameToKeyMap[r[1]]=e,t.types[e]=r[2],t.defaults[e]=r[3],t.opcodes[e]=Array.isArray(r[0])?r[0]:[r[0]],t.order.push(e)}return t}}const g=[[[12,30],"ROS",["sid","sid","num"],null],[[12,20],"SyntheticBase","num",null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","num",0],[[12,2],"ItalicAngle","num",0],[[12,3],"UnderlinePosition","num",-100],[[12,4],"UnderlineThickness","num",50],[[12,5],"PaintType","num",0],[[12,6],"CharstringType","num",2],[[12,7],"FontMatrix",["num","num","num","num","num","num"],[.001,0,0,.001,0,0]],[13,"UniqueID","num",null],[5,"FontBBox",["num","num","num","num"],[0,0,0,0]],[[12,8],"StrokeWidth","num",0],[14,"XUID","array",null],[15,"charset","offset",0],[16,"Encoding","offset",0],[17,"CharStrings","offset",0],[18,"Private",["offset","offset"],null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","num",0],[[12,32],"CIDFontRevision","num",0],[[12,33],"CIDFontType","num",0],[[12,34],"CIDCount","num",8720],[[12,35],"UIDBase","num",null],[[12,37],"FDSelect","offset",null],[[12,36],"FDArray","offset",null],[[12,38],"FontName","sid",null]];class p extends f{static get tables(){return(0,n.shadow)(this,"tables",this.createTables(g))}constructor(e){super(p.tables,e),this.privateDict=null}}t.CFFTopDict=p;const m=[[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","num",.039625],[[12,10],"BlueShift","num",7],[[12,11],"BlueFuzz","num",1],[10,"StdHW","num",null],[11,"StdVW","num",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","num",0],[[12,17],"LanguageGroup","num",0],[[12,18],"ExpansionFactor","num",.06],[[12,19],"initialRandomSeed","num",0],[20,"defaultWidthX","num",0],[21,"nominalWidthX","num",0],[19,"Subrs","offset",null]];class b extends f{static get tables(){return(0,n.shadow)(this,"tables",this.createTables(m))}constructor(e){super(b.tables,e),this.subrsIndex=null}}t.CFFPrivateDict=b;const y={ISO_ADOBE:0,EXPERT:1,EXPERT_SUBSET:2};class w{constructor(e,t,r,n){this.predefined=e,this.format=t,this.charset=r,this.raw=n}}t.CFFCharset=w;class v{constructor(e,t,r,n){this.predefined=e,this.format=t,this.encoding=r,this.raw=n}}class x{constructor(e,t){this.format=e,this.fdSelect=t}getFDIndex(e){return e<0||e>=this.fdSelect.length?-1:this.fdSelect[e]}}t.CFFFDSelect=x;class S{constructor(){this.offsets=Object.create(null)}isTracking(e){return e in this.offsets}track(e,t){if(e in this.offsets)throw new n.FormatError("Already tracking location of ".concat(e));this.offsets[e]=t}offset(e){for(const t in this.offsets)this.offsets[t]+=e}setEntryLocation(e,t,r){if(!(e in this.offsets))throw new n.FormatError("Not tracking location of ".concat(e));const a=r.data,i=this.offsets[e];for(let e=0,r=t.length;e>24&255,a[o]=h>>16&255,a[c]=h>>8&255,a[l]=255&h}}}class A{constructor(e){this.cff=e}compile(){const e=this.cff,t={data:[],length:0,add(e){try{this.data.push(...e)}catch(t){this.data=this.data.concat(e)}this.length=this.data.length}},r=this.compileHeader(e.header);t.add(r);const a=this.compileNameIndex(e.names);if(t.add(a),e.isCIDFont&&e.topDict.hasName("FontMatrix")){const t=e.topDict.getByName("FontMatrix");e.topDict.removeByName("FontMatrix");for(const r of e.fdArray){let e=t.slice(0);r.hasName("FontMatrix")&&(e=n.Util.transform(e,r.getByName("FontMatrix"))),r.setByName("FontMatrix",e)}}const i=e.topDict.getByName("XUID");(null==i?void 0:i.length)>16&&e.topDict.removeByName("XUID"),e.topDict.setByName("charset",0);let s=this.compileTopDicts([e.topDict],t.length,e.isCIDFont);t.add(s.output);const o=s.trackers[0],c=this.compileStringIndex(e.strings.strings);t.add(c);const l=this.compileIndex(e.globalSubrIndex);if(t.add(l),e.encoding&&e.topDict.hasName("Encoding"))if(e.encoding.predefined)o.setEntryLocation("Encoding",[e.encoding.format],t);else{const r=this.compileEncoding(e.encoding);o.setEntryLocation("Encoding",[t.length],t),t.add(r)}const h=this.compileCharset(e.charset,e.charStrings.count,e.strings,e.isCIDFont);o.setEntryLocation("charset",[t.length],t),t.add(h);const u=this.compileCharStrings(e.charStrings);if(o.setEntryLocation("CharStrings",[t.length],t),t.add(u),e.isCIDFont){o.setEntryLocation("FDSelect",[t.length],t);const r=this.compileFDSelect(e.fdSelect);t.add(r),s=this.compileTopDicts(e.fdArray,t.length,!0),o.setEntryLocation("FDArray",[t.length],t),t.add(s.output);const n=s.trackers;this.compilePrivateDicts(e.fdArray,n,t)}return this.compilePrivateDicts([e.topDict],[o],t),t.add([0]),t.data}encodeNumber(e){return Number.isInteger(e)?this.encodeInteger(e):this.encodeFloat(e)}static get EncodeFloatRegExp(){return(0,n.shadow)(this,"EncodeFloatRegExp",/\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/)}encodeFloat(e){let t=e.toString();const r=A.EncodeFloatRegExp.exec(t);if(r){const n=parseFloat("1e"+((r[2]?+r[2]:0)+r[1].length));t=(Math.round(e*n)/n).toString()}let n,a,i="";for(n=0,a=t.length;n=-107&&e<=107?[e+139]:e>=108&&e<=1131?[247+((e-=108)>>8),255&e]:e>=-1131&&e<=-108?[251+((e=-e-108)>>8),255&e]:e>=-32768&&e<=32767?[28,e>>8&255,255&e]:[29,e>>24&255,e>>16&255,e>>8&255,255&e],t}compileHeader(e){return[e.major,e.minor,4,e.offSize]}compileNameIndex(e){const t=new d;for(const r of e){const e=Math.min(r.length,127);let a=new Array(e);for(let t=0;t"~"||"["===e||"]"===e||"("===e||")"===e||"{"===e||"}"===e||"<"===e||">"===e||"/"===e||"%"===e)&&(e="_"),a[t]=e}a=a.join(""),""===a&&(a="Bad_Font_Name"),t.add((0,n.stringToBytes)(a))}return this.compileIndex(t)}compileTopDicts(e,t,r){const n=[];let a=new d;for(const i of e){r&&(i.removeByName("CIDFontVersion"),i.removeByName("CIDFontRevision"),i.removeByName("CIDFontType"),i.removeByName("CIDCount"),i.removeByName("UIDBase"));const e=new S,s=this.compileDict(i,e);n.push(e),a.add(s),e.offset(t)}return a=this.compileIndex(a,n),{trackers:n,output:a}}compilePrivateDicts(e,t,r){for(let a=0,i=e.length;a>8&255,255&s]);else{i=new Uint8Array(1+2*s),i[0]=0;let t=0;const a=e.charset.length;let o=!1;for(let s=1;s>8&255,i[s+1]=255&c}}return this.compileTypedArray(i)}compileEncoding(e){return this.compileTypedArray(e.raw)}compileFDSelect(e){const t=e.format;let r,n;switch(t){case 0:for(r=new Uint8Array(1+e.fdSelect.length),r[0]=t,n=0;n>8&255,255&a,i];for(n=1;n>8&255,255&n,t),i=t)}const o=(s.length-3)/3;s[1]=o>>8&255,s[2]=255&o,s.push(n>>8&255,255&n),r=new Uint8Array(s)}return this.compileTypedArray(r)}compileTypedArray(e){return Array.from(e)}compileIndex(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=e.objects,n=r.length;if(0===n)return[0,0];const a=[n>>8&255,255&n];let i,s,o=1;for(i=0;i>8&255,255&c):3===s?a.push(c>>16&255,c>>8&255,255&c):a.push(c>>>24&255,c>>16&255,c>>8&255,255&c),r[i]&&(c+=r[i].length);for(i=0;i{Object.defineProperty(t,"__esModule",{value:!0}),t.ISOAdobeCharset=t.ExpertSubsetCharset=t.ExpertCharset=void 0,t.ISOAdobeCharset=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],t.ExpertCharset=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],t.ExpertSubsetCharset=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ZapfDingbatsEncoding=t.WinAnsiEncoding=t.SymbolSetEncoding=t.StandardEncoding=t.MacRomanEncoding=t.ExpertEncoding=void 0,t.getEncoding=function(e){switch(e){case"WinAnsiEncoding":return s;case"StandardEncoding":return i;case"MacRomanEncoding":return a;case"SymbolSetEncoding":return o;case"ZapfDingbatsEncoding":return c;case"ExpertEncoding":return r;case"MacExpertEncoding":return n;default:return null}};const r=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"];t.ExpertEncoding=r;const n=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","centoldstyle","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","","threequartersemdash","","questionsmall","","","","","Ethsmall","","","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","","","","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hypheninferior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","asuperior","centsuperior","","","","","Aacutesmall","Agravesmall","Acircumflexsmall","Adieresissmall","Atildesmall","Aringsmall","Ccedillasmall","Eacutesmall","Egravesmall","Ecircumflexsmall","Edieresissmall","Iacutesmall","Igravesmall","Icircumflexsmall","Idieresissmall","Ntildesmall","Oacutesmall","Ogravesmall","Ocircumflexsmall","Odieresissmall","Otildesmall","Uacutesmall","Ugravesmall","Ucircumflexsmall","Udieresissmall","","eightsuperior","fourinferior","threeinferior","sixinferior","eightinferior","seveninferior","Scaronsmall","","centinferior","twoinferior","","Dieresissmall","","Caronsmall","osuperior","fiveinferior","","commainferior","periodinferior","Yacutesmall","","dollarinferior","","","Thornsmall","","nineinferior","zeroinferior","Zcaronsmall","AEsmall","Oslashsmall","questiondownsmall","oneinferior","Lslashsmall","","","","","","","Cedillasmall","","","","","","OEsmall","figuredash","hyphensuperior","","","","","exclamdownsmall","","Ydieresissmall","","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","ninesuperior","zerosuperior","","esuperior","rsuperior","tsuperior","","","isuperior","ssuperior","dsuperior","","","","","","lsuperior","Ogoneksmall","Brevesmall","Macronsmall","bsuperior","nsuperior","msuperior","commasuperior","periodsuperior","Dotaccentsmall","Ringsmall","","","",""],a=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","space","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron"];t.MacRomanEncoding=a;const i=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls","","","",""];t.StandardEncoding=i;const s=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","bullet","Euro","bullet","quotesinglbase","florin","quotedblbase","ellipsis","dagger","daggerdbl","circumflex","perthousand","Scaron","guilsinglleft","OE","bullet","Zcaron","bullet","bullet","quoteleft","quoteright","quotedblleft","quotedblright","bullet","endash","emdash","tilde","trademark","scaron","guilsinglright","oe","bullet","zcaron","Ydieresis","space","exclamdown","cent","sterling","currency","yen","brokenbar","section","dieresis","copyright","ordfeminine","guillemotleft","logicalnot","hyphen","registered","macron","degree","plusminus","twosuperior","threesuperior","acute","mu","paragraph","periodcentered","cedilla","onesuperior","ordmasculine","guillemotright","onequarter","onehalf","threequarters","questiondown","Agrave","Aacute","Acircumflex","Atilde","Adieresis","Aring","AE","Ccedilla","Egrave","Eacute","Ecircumflex","Edieresis","Igrave","Iacute","Icircumflex","Idieresis","Eth","Ntilde","Ograve","Oacute","Ocircumflex","Otilde","Odieresis","multiply","Oslash","Ugrave","Uacute","Ucircumflex","Udieresis","Yacute","Thorn","germandbls","agrave","aacute","acircumflex","atilde","adieresis","aring","ae","ccedilla","egrave","eacute","ecircumflex","edieresis","igrave","iacute","icircumflex","idieresis","eth","ntilde","ograve","oacute","ocircumflex","otilde","odieresis","divide","oslash","ugrave","uacute","ucircumflex","udieresis","yacute","thorn","ydieresis"];t.WinAnsiEncoding=s;const o=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","universal","numbersign","existential","percent","ampersand","suchthat","parenleft","parenright","asteriskmath","plus","comma","minus","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","congruent","Alpha","Beta","Chi","Delta","Epsilon","Phi","Gamma","Eta","Iota","theta1","Kappa","Lambda","Mu","Nu","Omicron","Pi","Theta","Rho","Sigma","Tau","Upsilon","sigma1","Omega","Xi","Psi","Zeta","bracketleft","therefore","bracketright","perpendicular","underscore","radicalex","alpha","beta","chi","delta","epsilon","phi","gamma","eta","iota","phi1","kappa","lambda","mu","nu","omicron","pi","theta","rho","sigma","tau","upsilon","omega1","omega","xi","psi","zeta","braceleft","bar","braceright","similar","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Euro","Upsilon1","minute","lessequal","fraction","infinity","florin","club","diamond","heart","spade","arrowboth","arrowleft","arrowup","arrowright","arrowdown","degree","plusminus","second","greaterequal","multiply","proportional","partialdiff","bullet","divide","notequal","equivalence","approxequal","ellipsis","arrowvertex","arrowhorizex","carriagereturn","aleph","Ifraktur","Rfraktur","weierstrass","circlemultiply","circleplus","emptyset","intersection","union","propersuperset","reflexsuperset","notsubset","propersubset","reflexsubset","element","notelement","angle","gradient","registerserif","copyrightserif","trademarkserif","product","radical","dotmath","logicalnot","logicaland","logicalor","arrowdblboth","arrowdblleft","arrowdblup","arrowdblright","arrowdbldown","lozenge","angleleft","registersans","copyrightsans","trademarksans","summation","parenlefttp","parenleftex","parenleftbt","bracketlefttp","bracketleftex","bracketleftbt","bracelefttp","braceleftmid","braceleftbt","braceex","","angleright","integral","integraltp","integralex","integralbt","parenrighttp","parenrightex","parenrightbt","bracketrighttp","bracketrightex","bracketrightbt","bracerighttp","bracerightmid","bracerightbt",""];t.SymbolSetEncoding=o;const c=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","a1","a2","a202","a3","a4","a5","a119","a118","a117","a11","a12","a13","a14","a15","a16","a105","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a6","a7","a8","a9","a10","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","a40","a41","a42","a43","a44","a45","a46","a47","a48","a49","a50","a51","a52","a53","a54","a55","a56","a57","a58","a59","a60","a61","a62","a63","a64","a65","a66","a67","a68","a69","a70","a71","a72","a73","a74","a203","a75","a204","a76","a77","a78","a79","a81","a82","a83","a84","a97","a98","a99","a100","","a89","a90","a93","a94","a91","a92","a205","a85","a206","a86","a87","a88","a95","a96","","","","","","","","","","","","","","","","","","","","a101","a102","a103","a104","a106","a107","a108","a112","a111","a110","a109","a120","a121","a122","a123","a124","a125","a126","a127","a128","a129","a130","a131","a132","a133","a134","a135","a136","a137","a138","a139","a140","a141","a142","a143","a144","a145","a146","a147","a148","a149","a150","a151","a152","a153","a154","a155","a156","a157","a158","a159","a160","a161","a163","a164","a196","a165","a192","a166","a167","a168","a169","a170","a171","a172","a173","a162","a174","a175","a176","a177","a178","a179","a193","a180","a199","a181","a200","a182","","a201","a183","a184","a197","a185","a194","a198","a186","a195","a187","a188","a189","a190","a191",""];t.ZapfDingbatsEncoding=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SEAC_ANALYSIS_ENABLED=t.MacStandardGlyphOrdering=t.FontFlags=void 0,t.normalizeFontName=function(e){return e.replaceAll(/[,_]/g,"-").replaceAll(/\\s/g,"")},t.recoverGlyphName=c,t.type1FontGlyphMapping=function(e,t,r){const i=Object.create(null);let s,l,h;const u=!!(e.flags&o.Symbolic);if(e.isInternalFont)for(h=t,l=0;l=0?s:0;else if(e.baseEncodingName)for(h=(0,n.getEncoding)(e.baseEncodingName),l=0;l=0?s:0;else if(u)for(l in t)i[l]=t[l];else for(h=n.StandardEncoding,l=0;l=0?s:0;const d=e.differences;let f;if(d)for(l in d){const e=d[l];if(s=r.indexOf(e),-1===s){f||(f=(0,a.getGlyphsUnicode)());const t=c(e,f);t!==e&&(s=r.indexOf(t))}i[l]=s>=0?s:0}return i},r(157);var n=r(187),a=r(189),i=r(190),s=r(144);t.SEAC_ANALYSIS_ENABLED=!0;const o={FixedPitch:1,Serif:2,Symbolic:4,Script:8,Nonsymbolic:32,Italic:64,AllCap:65536,SmallCap:131072,ForceBold:262144};function c(e,t){if(void 0!==t[e])return e;const r=(0,i.getUnicodeForGlyph)(e,t);if(-1!==r)for(const e in t)if(t[e]===r)return e;return(0,s.info)("Unable to recover a standard glyph name for: "+e),e}t.FontFlags=o,t.MacStandardGlyphOrdering=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"]},(e,t,r)=>{r.r(t),r.d(t,{getDingbatsGlyphsUnicode:()=>i,getGlyphsUnicode:()=>a});var n=r(149);const a=(0,n.getLookupTableFactory)((function(e){e.A=65,e.AE=198,e.AEacute=508,e.AEmacron=482,e.AEsmall=63462,e.Aacute=193,e.Aacutesmall=63457,e.Abreve=258,e.Abreveacute=7854,e.Abrevecyrillic=1232,e.Abrevedotbelow=7862,e.Abrevegrave=7856,e.Abrevehookabove=7858,e.Abrevetilde=7860,e.Acaron=461,e.Acircle=9398,e.Acircumflex=194,e.Acircumflexacute=7844,e.Acircumflexdotbelow=7852,e.Acircumflexgrave=7846,e.Acircumflexhookabove=7848,e.Acircumflexsmall=63458,e.Acircumflextilde=7850,e.Acute=63177,e.Acutesmall=63412,e.Acyrillic=1040,e.Adblgrave=512,e.Adieresis=196,e.Adieresiscyrillic=1234,e.Adieresismacron=478,e.Adieresissmall=63460,e.Adotbelow=7840,e.Adotmacron=480,e.Agrave=192,e.Agravesmall=63456,e.Ahookabove=7842,e.Aiecyrillic=1236,e.Ainvertedbreve=514,e.Alpha=913,e.Alphatonos=902,e.Amacron=256,e.Amonospace=65313,e.Aogonek=260,e.Aring=197,e.Aringacute=506,e.Aringbelow=7680,e.Aringsmall=63461,e.Asmall=63329,e.Atilde=195,e.Atildesmall=63459,e.Aybarmenian=1329,e.B=66,e.Bcircle=9399,e.Bdotaccent=7682,e.Bdotbelow=7684,e.Becyrillic=1041,e.Benarmenian=1330,e.Beta=914,e.Bhook=385,e.Blinebelow=7686,e.Bmonospace=65314,e.Brevesmall=63220,e.Bsmall=63330,e.Btopbar=386,e.C=67,e.Caarmenian=1342,e.Cacute=262,e.Caron=63178,e.Caronsmall=63221,e.Ccaron=268,e.Ccedilla=199,e.Ccedillaacute=7688,e.Ccedillasmall=63463,e.Ccircle=9400,e.Ccircumflex=264,e.Cdot=266,e.Cdotaccent=266,e.Cedillasmall=63416,e.Chaarmenian=1353,e.Cheabkhasiancyrillic=1212,e.Checyrillic=1063,e.Chedescenderabkhasiancyrillic=1214,e.Chedescendercyrillic=1206,e.Chedieresiscyrillic=1268,e.Cheharmenian=1347,e.Chekhakassiancyrillic=1227,e.Cheverticalstrokecyrillic=1208,e.Chi=935,e.Chook=391,e.Circumflexsmall=63222,e.Cmonospace=65315,e.Coarmenian=1361,e.Csmall=63331,e.D=68,e.DZ=497,e.DZcaron=452,e.Daarmenian=1332,e.Dafrican=393,e.Dcaron=270,e.Dcedilla=7696,e.Dcircle=9401,e.Dcircumflexbelow=7698,e.Dcroat=272,e.Ddotaccent=7690,e.Ddotbelow=7692,e.Decyrillic=1044,e.Deicoptic=1006,e.Delta=8710,e.Deltagreek=916,e.Dhook=394,e.Dieresis=63179,e.DieresisAcute=63180,e.DieresisGrave=63181,e.Dieresissmall=63400,e.Digammagreek=988,e.Djecyrillic=1026,e.Dlinebelow=7694,e.Dmonospace=65316,e.Dotaccentsmall=63223,e.Dslash=272,e.Dsmall=63332,e.Dtopbar=395,e.Dz=498,e.Dzcaron=453,e.Dzeabkhasiancyrillic=1248,e.Dzecyrillic=1029,e.Dzhecyrillic=1039,e.E=69,e.Eacute=201,e.Eacutesmall=63465,e.Ebreve=276,e.Ecaron=282,e.Ecedillabreve=7708,e.Echarmenian=1333,e.Ecircle=9402,e.Ecircumflex=202,e.Ecircumflexacute=7870,e.Ecircumflexbelow=7704,e.Ecircumflexdotbelow=7878,e.Ecircumflexgrave=7872,e.Ecircumflexhookabove=7874,e.Ecircumflexsmall=63466,e.Ecircumflextilde=7876,e.Ecyrillic=1028,e.Edblgrave=516,e.Edieresis=203,e.Edieresissmall=63467,e.Edot=278,e.Edotaccent=278,e.Edotbelow=7864,e.Efcyrillic=1060,e.Egrave=200,e.Egravesmall=63464,e.Eharmenian=1335,e.Ehookabove=7866,e.Eightroman=8551,e.Einvertedbreve=518,e.Eiotifiedcyrillic=1124,e.Elcyrillic=1051,e.Elevenroman=8554,e.Emacron=274,e.Emacronacute=7702,e.Emacrongrave=7700,e.Emcyrillic=1052,e.Emonospace=65317,e.Encyrillic=1053,e.Endescendercyrillic=1186,e.Eng=330,e.Enghecyrillic=1188,e.Enhookcyrillic=1223,e.Eogonek=280,e.Eopen=400,e.Epsilon=917,e.Epsilontonos=904,e.Ercyrillic=1056,e.Ereversed=398,e.Ereversedcyrillic=1069,e.Escyrillic=1057,e.Esdescendercyrillic=1194,e.Esh=425,e.Esmall=63333,e.Eta=919,e.Etarmenian=1336,e.Etatonos=905,e.Eth=208,e.Ethsmall=63472,e.Etilde=7868,e.Etildebelow=7706,e.Euro=8364,e.Ezh=439,e.Ezhcaron=494,e.Ezhreversed=440,e.F=70,e.Fcircle=9403,e.Fdotaccent=7710,e.Feharmenian=1366,e.Feicoptic=996,e.Fhook=401,e.Fitacyrillic=1138,e.Fiveroman=8548,e.Fmonospace=65318,e.Fourroman=8547,e.Fsmall=63334,e.G=71,e.GBsquare=13191,e.Gacute=500,e.Gamma=915,e.Gammaafrican=404,e.Gangiacoptic=1002,e.Gbreve=286,e.Gcaron=486,e.Gcedilla=290,e.Gcircle=9404,e.Gcircumflex=284,e.Gcommaaccent=290,e.Gdot=288,e.Gdotaccent=288,e.Gecyrillic=1043,e.Ghadarmenian=1346,e.Ghemiddlehookcyrillic=1172,e.Ghestrokecyrillic=1170,e.Gheupturncyrillic=1168,e.Ghook=403,e.Gimarmenian=1331,e.Gjecyrillic=1027,e.Gmacron=7712,e.Gmonospace=65319,e.Grave=63182,e.Gravesmall=63328,e.Gsmall=63335,e.Gsmallhook=667,e.Gstroke=484,e.H=72,e.H18533=9679,e.H18543=9642,e.H18551=9643,e.H22073=9633,e.HPsquare=13259,e.Haabkhasiancyrillic=1192,e.Hadescendercyrillic=1202,e.Hardsigncyrillic=1066,e.Hbar=294,e.Hbrevebelow=7722,e.Hcedilla=7720,e.Hcircle=9405,e.Hcircumflex=292,e.Hdieresis=7718,e.Hdotaccent=7714,e.Hdotbelow=7716,e.Hmonospace=65320,e.Hoarmenian=1344,e.Horicoptic=1e3,e.Hsmall=63336,e.Hungarumlaut=63183,e.Hungarumlautsmall=63224,e.Hzsquare=13200,e.I=73,e.IAcyrillic=1071,e.IJ=306,e.IUcyrillic=1070,e.Iacute=205,e.Iacutesmall=63469,e.Ibreve=300,e.Icaron=463,e.Icircle=9406,e.Icircumflex=206,e.Icircumflexsmall=63470,e.Icyrillic=1030,e.Idblgrave=520,e.Idieresis=207,e.Idieresisacute=7726,e.Idieresiscyrillic=1252,e.Idieresissmall=63471,e.Idot=304,e.Idotaccent=304,e.Idotbelow=7882,e.Iebrevecyrillic=1238,e.Iecyrillic=1045,e.Ifraktur=8465,e.Igrave=204,e.Igravesmall=63468,e.Ihookabove=7880,e.Iicyrillic=1048,e.Iinvertedbreve=522,e.Iishortcyrillic=1049,e.Imacron=298,e.Imacroncyrillic=1250,e.Imonospace=65321,e.Iniarmenian=1339,e.Iocyrillic=1025,e.Iogonek=302,e.Iota=921,e.Iotaafrican=406,e.Iotadieresis=938,e.Iotatonos=906,e.Ismall=63337,e.Istroke=407,e.Itilde=296,e.Itildebelow=7724,e.Izhitsacyrillic=1140,e.Izhitsadblgravecyrillic=1142,e.J=74,e.Jaarmenian=1345,e.Jcircle=9407,e.Jcircumflex=308,e.Jecyrillic=1032,e.Jheharmenian=1355,e.Jmonospace=65322,e.Jsmall=63338,e.K=75,e.KBsquare=13189,e.KKsquare=13261,e.Kabashkircyrillic=1184,e.Kacute=7728,e.Kacyrillic=1050,e.Kadescendercyrillic=1178,e.Kahookcyrillic=1219,e.Kappa=922,e.Kastrokecyrillic=1182,e.Kaverticalstrokecyrillic=1180,e.Kcaron=488,e.Kcedilla=310,e.Kcircle=9408,e.Kcommaaccent=310,e.Kdotbelow=7730,e.Keharmenian=1364,e.Kenarmenian=1343,e.Khacyrillic=1061,e.Kheicoptic=998,e.Khook=408,e.Kjecyrillic=1036,e.Klinebelow=7732,e.Kmonospace=65323,e.Koppacyrillic=1152,e.Koppagreek=990,e.Ksicyrillic=1134,e.Ksmall=63339,e.L=76,e.LJ=455,e.LL=63167,e.Lacute=313,e.Lambda=923,e.Lcaron=317,e.Lcedilla=315,e.Lcircle=9409,e.Lcircumflexbelow=7740,e.Lcommaaccent=315,e.Ldot=319,e.Ldotaccent=319,e.Ldotbelow=7734,e.Ldotbelowmacron=7736,e.Liwnarmenian=1340,e.Lj=456,e.Ljecyrillic=1033,e.Llinebelow=7738,e.Lmonospace=65324,e.Lslash=321,e.Lslashsmall=63225,e.Lsmall=63340,e.M=77,e.MBsquare=13190,e.Macron=63184,e.Macronsmall=63407,e.Macute=7742,e.Mcircle=9410,e.Mdotaccent=7744,e.Mdotbelow=7746,e.Menarmenian=1348,e.Mmonospace=65325,e.Msmall=63341,e.Mturned=412,e.Mu=924,e.N=78,e.NJ=458,e.Nacute=323,e.Ncaron=327,e.Ncedilla=325,e.Ncircle=9411,e.Ncircumflexbelow=7754,e.Ncommaaccent=325,e.Ndotaccent=7748,e.Ndotbelow=7750,e.Nhookleft=413,e.Nineroman=8552,e.Nj=459,e.Njecyrillic=1034,e.Nlinebelow=7752,e.Nmonospace=65326,e.Nowarmenian=1350,e.Nsmall=63342,e.Ntilde=209,e.Ntildesmall=63473,e.Nu=925,e.O=79,e.OE=338,e.OEsmall=63226,e.Oacute=211,e.Oacutesmall=63475,e.Obarredcyrillic=1256,e.Obarreddieresiscyrillic=1258,e.Obreve=334,e.Ocaron=465,e.Ocenteredtilde=415,e.Ocircle=9412,e.Ocircumflex=212,e.Ocircumflexacute=7888,e.Ocircumflexdotbelow=7896,e.Ocircumflexgrave=7890,e.Ocircumflexhookabove=7892,e.Ocircumflexsmall=63476,e.Ocircumflextilde=7894,e.Ocyrillic=1054,e.Odblacute=336,e.Odblgrave=524,e.Odieresis=214,e.Odieresiscyrillic=1254,e.Odieresissmall=63478,e.Odotbelow=7884,e.Ogoneksmall=63227,e.Ograve=210,e.Ogravesmall=63474,e.Oharmenian=1365,e.Ohm=8486,e.Ohookabove=7886,e.Ohorn=416,e.Ohornacute=7898,e.Ohorndotbelow=7906,e.Ohorngrave=7900,e.Ohornhookabove=7902,e.Ohorntilde=7904,e.Ohungarumlaut=336,e.Oi=418,e.Oinvertedbreve=526,e.Omacron=332,e.Omacronacute=7762,e.Omacrongrave=7760,e.Omega=8486,e.Omegacyrillic=1120,e.Omegagreek=937,e.Omegaroundcyrillic=1146,e.Omegatitlocyrillic=1148,e.Omegatonos=911,e.Omicron=927,e.Omicrontonos=908,e.Omonospace=65327,e.Oneroman=8544,e.Oogonek=490,e.Oogonekmacron=492,e.Oopen=390,e.Oslash=216,e.Oslashacute=510,e.Oslashsmall=63480,e.Osmall=63343,e.Ostrokeacute=510,e.Otcyrillic=1150,e.Otilde=213,e.Otildeacute=7756,e.Otildedieresis=7758,e.Otildesmall=63477,e.P=80,e.Pacute=7764,e.Pcircle=9413,e.Pdotaccent=7766,e.Pecyrillic=1055,e.Peharmenian=1354,e.Pemiddlehookcyrillic=1190,e.Phi=934,e.Phook=420,e.Pi=928,e.Piwrarmenian=1363,e.Pmonospace=65328,e.Psi=936,e.Psicyrillic=1136,e.Psmall=63344,e.Q=81,e.Qcircle=9414,e.Qmonospace=65329,e.Qsmall=63345,e.R=82,e.Raarmenian=1356,e.Racute=340,e.Rcaron=344,e.Rcedilla=342,e.Rcircle=9415,e.Rcommaaccent=342,e.Rdblgrave=528,e.Rdotaccent=7768,e.Rdotbelow=7770,e.Rdotbelowmacron=7772,e.Reharmenian=1360,e.Rfraktur=8476,e.Rho=929,e.Ringsmall=63228,e.Rinvertedbreve=530,e.Rlinebelow=7774,e.Rmonospace=65330,e.Rsmall=63346,e.Rsmallinverted=641,e.Rsmallinvertedsuperior=694,e.S=83,e.SF010000=9484,e.SF020000=9492,e.SF030000=9488,e.SF040000=9496,e.SF050000=9532,e.SF060000=9516,e.SF070000=9524,e.SF080000=9500,e.SF090000=9508,e.SF100000=9472,e.SF110000=9474,e.SF190000=9569,e.SF200000=9570,e.SF210000=9558,e.SF220000=9557,e.SF230000=9571,e.SF240000=9553,e.SF250000=9559,e.SF260000=9565,e.SF270000=9564,e.SF280000=9563,e.SF360000=9566,e.SF370000=9567,e.SF380000=9562,e.SF390000=9556,e.SF400000=9577,e.SF410000=9574,e.SF420000=9568,e.SF430000=9552,e.SF440000=9580,e.SF450000=9575,e.SF460000=9576,e.SF470000=9572,e.SF480000=9573,e.SF490000=9561,e.SF500000=9560,e.SF510000=9554,e.SF520000=9555,e.SF530000=9579,e.SF540000=9578,e.Sacute=346,e.Sacutedotaccent=7780,e.Sampigreek=992,e.Scaron=352,e.Scarondotaccent=7782,e.Scaronsmall=63229,e.Scedilla=350,e.Schwa=399,e.Schwacyrillic=1240,e.Schwadieresiscyrillic=1242,e.Scircle=9416,e.Scircumflex=348,e.Scommaaccent=536,e.Sdotaccent=7776,e.Sdotbelow=7778,e.Sdotbelowdotaccent=7784,e.Seharmenian=1357,e.Sevenroman=8550,e.Shaarmenian=1351,e.Shacyrillic=1064,e.Shchacyrillic=1065,e.Sheicoptic=994,e.Shhacyrillic=1210,e.Shimacoptic=1004,e.Sigma=931,e.Sixroman=8549,e.Smonospace=65331,e.Softsigncyrillic=1068,e.Ssmall=63347,e.Stigmagreek=986,e.T=84,e.Tau=932,e.Tbar=358,e.Tcaron=356,e.Tcedilla=354,e.Tcircle=9417,e.Tcircumflexbelow=7792,e.Tcommaaccent=354,e.Tdotaccent=7786,e.Tdotbelow=7788,e.Tecyrillic=1058,e.Tedescendercyrillic=1196,e.Tenroman=8553,e.Tetsecyrillic=1204,e.Theta=920,e.Thook=428,e.Thorn=222,e.Thornsmall=63486,e.Threeroman=8546,e.Tildesmall=63230,e.Tiwnarmenian=1359,e.Tlinebelow=7790,e.Tmonospace=65332,e.Toarmenian=1337,e.Tonefive=444,e.Tonesix=388,e.Tonetwo=423,e.Tretroflexhook=430,e.Tsecyrillic=1062,e.Tshecyrillic=1035,e.Tsmall=63348,e.Twelveroman=8555,e.Tworoman=8545,e.U=85,e.Uacute=218,e.Uacutesmall=63482,e.Ubreve=364,e.Ucaron=467,e.Ucircle=9418,e.Ucircumflex=219,e.Ucircumflexbelow=7798,e.Ucircumflexsmall=63483,e.Ucyrillic=1059,e.Udblacute=368,e.Udblgrave=532,e.Udieresis=220,e.Udieresisacute=471,e.Udieresisbelow=7794,e.Udieresiscaron=473,e.Udieresiscyrillic=1264,e.Udieresisgrave=475,e.Udieresismacron=469,e.Udieresissmall=63484,e.Udotbelow=7908,e.Ugrave=217,e.Ugravesmall=63481,e.Uhookabove=7910,e.Uhorn=431,e.Uhornacute=7912,e.Uhorndotbelow=7920,e.Uhorngrave=7914,e.Uhornhookabove=7916,e.Uhorntilde=7918,e.Uhungarumlaut=368,e.Uhungarumlautcyrillic=1266,e.Uinvertedbreve=534,e.Ukcyrillic=1144,e.Umacron=362,e.Umacroncyrillic=1262,e.Umacrondieresis=7802,e.Umonospace=65333,e.Uogonek=370,e.Upsilon=933,e.Upsilon1=978,e.Upsilonacutehooksymbolgreek=979,e.Upsilonafrican=433,e.Upsilondieresis=939,e.Upsilondieresishooksymbolgreek=980,e.Upsilonhooksymbol=978,e.Upsilontonos=910,e.Uring=366,e.Ushortcyrillic=1038,e.Usmall=63349,e.Ustraightcyrillic=1198,e.Ustraightstrokecyrillic=1200,e.Utilde=360,e.Utildeacute=7800,e.Utildebelow=7796,e.V=86,e.Vcircle=9419,e.Vdotbelow=7806,e.Vecyrillic=1042,e.Vewarmenian=1358,e.Vhook=434,e.Vmonospace=65334,e.Voarmenian=1352,e.Vsmall=63350,e.Vtilde=7804,e.W=87,e.Wacute=7810,e.Wcircle=9420,e.Wcircumflex=372,e.Wdieresis=7812,e.Wdotaccent=7814,e.Wdotbelow=7816,e.Wgrave=7808,e.Wmonospace=65335,e.Wsmall=63351,e.X=88,e.Xcircle=9421,e.Xdieresis=7820,e.Xdotaccent=7818,e.Xeharmenian=1341,e.Xi=926,e.Xmonospace=65336,e.Xsmall=63352,e.Y=89,e.Yacute=221,e.Yacutesmall=63485,e.Yatcyrillic=1122,e.Ycircle=9422,e.Ycircumflex=374,e.Ydieresis=376,e.Ydieresissmall=63487,e.Ydotaccent=7822,e.Ydotbelow=7924,e.Yericyrillic=1067,e.Yerudieresiscyrillic=1272,e.Ygrave=7922,e.Yhook=435,e.Yhookabove=7926,e.Yiarmenian=1349,e.Yicyrillic=1031,e.Yiwnarmenian=1362,e.Ymonospace=65337,e.Ysmall=63353,e.Ytilde=7928,e.Yusbigcyrillic=1130,e.Yusbigiotifiedcyrillic=1132,e.Yuslittlecyrillic=1126,e.Yuslittleiotifiedcyrillic=1128,e.Z=90,e.Zaarmenian=1334,e.Zacute=377,e.Zcaron=381,e.Zcaronsmall=63231,e.Zcircle=9423,e.Zcircumflex=7824,e.Zdot=379,e.Zdotaccent=379,e.Zdotbelow=7826,e.Zecyrillic=1047,e.Zedescendercyrillic=1176,e.Zedieresiscyrillic=1246,e.Zeta=918,e.Zhearmenian=1338,e.Zhebrevecyrillic=1217,e.Zhecyrillic=1046,e.Zhedescendercyrillic=1174,e.Zhedieresiscyrillic=1244,e.Zlinebelow=7828,e.Zmonospace=65338,e.Zsmall=63354,e.Zstroke=437,e.a=97,e.aabengali=2438,e.aacute=225,e.aadeva=2310,e.aagujarati=2694,e.aagurmukhi=2566,e.aamatragurmukhi=2622,e.aarusquare=13059,e.aavowelsignbengali=2494,e.aavowelsigndeva=2366,e.aavowelsigngujarati=2750,e.abbreviationmarkarmenian=1375,e.abbreviationsigndeva=2416,e.abengali=2437,e.abopomofo=12570,e.abreve=259,e.abreveacute=7855,e.abrevecyrillic=1233,e.abrevedotbelow=7863,e.abrevegrave=7857,e.abrevehookabove=7859,e.abrevetilde=7861,e.acaron=462,e.acircle=9424,e.acircumflex=226,e.acircumflexacute=7845,e.acircumflexdotbelow=7853,e.acircumflexgrave=7847,e.acircumflexhookabove=7849,e.acircumflextilde=7851,e.acute=180,e.acutebelowcmb=791,e.acutecmb=769,e.acutecomb=769,e.acutedeva=2388,e.acutelowmod=719,e.acutetonecmb=833,e.acyrillic=1072,e.adblgrave=513,e.addakgurmukhi=2673,e.adeva=2309,e.adieresis=228,e.adieresiscyrillic=1235,e.adieresismacron=479,e.adotbelow=7841,e.adotmacron=481,e.ae=230,e.aeacute=509,e.aekorean=12624,e.aemacron=483,e.afii00208=8213,e.afii08941=8356,e.afii10017=1040,e.afii10018=1041,e.afii10019=1042,e.afii10020=1043,e.afii10021=1044,e.afii10022=1045,e.afii10023=1025,e.afii10024=1046,e.afii10025=1047,e.afii10026=1048,e.afii10027=1049,e.afii10028=1050,e.afii10029=1051,e.afii10030=1052;e.afii10031=1053,e.afii10032=1054,e.afii10033=1055,e.afii10034=1056,e.afii10035=1057,e.afii10036=1058,e.afii10037=1059,e.afii10038=1060,e.afii10039=1061,e.afii10040=1062,e.afii10041=1063,e.afii10042=1064,e.afii10043=1065,e.afii10044=1066,e.afii10045=1067,e.afii10046=1068,e.afii10047=1069,e.afii10048=1070,e.afii10049=1071,e.afii10050=1168,e.afii10051=1026,e.afii10052=1027,e.afii10053=1028,e.afii10054=1029,e.afii10055=1030,e.afii10056=1031,e.afii10057=1032,e.afii10058=1033,e.afii10059=1034,e.afii10060=1035,e.afii10061=1036,e.afii10062=1038,e.afii10063=63172,e.afii10064=63173,e.afii10065=1072,e.afii10066=1073,e.afii10067=1074,e.afii10068=1075,e.afii10069=1076,e.afii10070=1077,e.afii10071=1105,e.afii10072=1078,e.afii10073=1079,e.afii10074=1080,e.afii10075=1081,e.afii10076=1082,e.afii10077=1083,e.afii10078=1084,e.afii10079=1085,e.afii10080=1086,e.afii10081=1087,e.afii10082=1088,e.afii10083=1089,e.afii10084=1090,e.afii10085=1091,e.afii10086=1092,e.afii10087=1093,e.afii10088=1094,e.afii10089=1095,e.afii10090=1096,e.afii10091=1097,e.afii10092=1098,e.afii10093=1099,e.afii10094=1100,e.afii10095=1101,e.afii10096=1102,e.afii10097=1103,e.afii10098=1169,e.afii10099=1106,e.afii10100=1107,e.afii10101=1108,e.afii10102=1109,e.afii10103=1110,e.afii10104=1111,e.afii10105=1112,e.afii10106=1113,e.afii10107=1114,e.afii10108=1115,e.afii10109=1116,e.afii10110=1118,e.afii10145=1039,e.afii10146=1122,e.afii10147=1138,e.afii10148=1140,e.afii10192=63174,e.afii10193=1119,e.afii10194=1123,e.afii10195=1139,e.afii10196=1141,e.afii10831=63175,e.afii10832=63176,e.afii10846=1241,e.afii299=8206,e.afii300=8207,e.afii301=8205,e.afii57381=1642,e.afii57388=1548,e.afii57392=1632,e.afii57393=1633,e.afii57394=1634,e.afii57395=1635,e.afii57396=1636,e.afii57397=1637,e.afii57398=1638,e.afii57399=1639,e.afii57400=1640,e.afii57401=1641,e.afii57403=1563,e.afii57407=1567,e.afii57409=1569,e.afii57410=1570,e.afii57411=1571,e.afii57412=1572,e.afii57413=1573,e.afii57414=1574,e.afii57415=1575,e.afii57416=1576,e.afii57417=1577,e.afii57418=1578,e.afii57419=1579,e.afii57420=1580,e.afii57421=1581,e.afii57422=1582,e.afii57423=1583,e.afii57424=1584,e.afii57425=1585,e.afii57426=1586,e.afii57427=1587,e.afii57428=1588,e.afii57429=1589,e.afii57430=1590,e.afii57431=1591,e.afii57432=1592,e.afii57433=1593,e.afii57434=1594,e.afii57440=1600,e.afii57441=1601,e.afii57442=1602,e.afii57443=1603,e.afii57444=1604,e.afii57445=1605,e.afii57446=1606,e.afii57448=1608,e.afii57449=1609,e.afii57450=1610,e.afii57451=1611,e.afii57452=1612,e.afii57453=1613,e.afii57454=1614,e.afii57455=1615,e.afii57456=1616,e.afii57457=1617,e.afii57458=1618,e.afii57470=1607,e.afii57505=1700,e.afii57506=1662,e.afii57507=1670,e.afii57508=1688,e.afii57509=1711,e.afii57511=1657,e.afii57512=1672,e.afii57513=1681,e.afii57514=1722,e.afii57519=1746,e.afii57534=1749,e.afii57636=8362,e.afii57645=1470,e.afii57658=1475,e.afii57664=1488,e.afii57665=1489,e.afii57666=1490,e.afii57667=1491,e.afii57668=1492,e.afii57669=1493,e.afii57670=1494,e.afii57671=1495,e.afii57672=1496,e.afii57673=1497,e.afii57674=1498,e.afii57675=1499,e.afii57676=1500,e.afii57677=1501,e.afii57678=1502,e.afii57679=1503,e.afii57680=1504,e.afii57681=1505,e.afii57682=1506,e.afii57683=1507,e.afii57684=1508,e.afii57685=1509,e.afii57686=1510,e.afii57687=1511,e.afii57688=1512,e.afii57689=1513,e.afii57690=1514,e.afii57694=64298,e.afii57695=64299,e.afii57700=64331,e.afii57705=64287,e.afii57716=1520,e.afii57717=1521,e.afii57718=1522,e.afii57723=64309,e.afii57793=1460,e.afii57794=1461,e.afii57795=1462,e.afii57796=1467,e.afii57797=1464,e.afii57798=1463,e.afii57799=1456,e.afii57800=1458,e.afii57801=1457,e.afii57802=1459,e.afii57803=1474,e.afii57804=1473,e.afii57806=1465,e.afii57807=1468,e.afii57839=1469,e.afii57841=1471,e.afii57842=1472,e.afii57929=700,e.afii61248=8453,e.afii61289=8467,e.afii61352=8470,e.afii61573=8236,e.afii61574=8237,e.afii61575=8238,e.afii61664=8204,e.afii63167=1645,e.afii64937=701,e.agrave=224,e.agujarati=2693,e.agurmukhi=2565,e.ahiragana=12354,e.ahookabove=7843,e.aibengali=2448,e.aibopomofo=12574,e.aideva=2320,e.aiecyrillic=1237,e.aigujarati=2704,e.aigurmukhi=2576,e.aimatragurmukhi=2632,e.ainarabic=1593,e.ainfinalarabic=65226,e.aininitialarabic=65227,e.ainmedialarabic=65228,e.ainvertedbreve=515,e.aivowelsignbengali=2504,e.aivowelsigndeva=2376,e.aivowelsigngujarati=2760,e.akatakana=12450,e.akatakanahalfwidth=65393,e.akorean=12623,e.alef=1488,e.alefarabic=1575,e.alefdageshhebrew=64304,e.aleffinalarabic=65166,e.alefhamzaabovearabic=1571,e.alefhamzaabovefinalarabic=65156,e.alefhamzabelowarabic=1573,e.alefhamzabelowfinalarabic=65160,e.alefhebrew=1488,e.aleflamedhebrew=64335,e.alefmaddaabovearabic=1570,e.alefmaddaabovefinalarabic=65154,e.alefmaksuraarabic=1609,e.alefmaksurafinalarabic=65264,e.alefmaksurainitialarabic=65267,e.alefmaksuramedialarabic=65268,e.alefpatahhebrew=64302,e.alefqamatshebrew=64303,e.aleph=8501,e.allequal=8780,e.alpha=945,e.alphatonos=940,e.amacron=257,e.amonospace=65345,e.ampersand=38,e.ampersandmonospace=65286,e.ampersandsmall=63270,e.amsquare=13250,e.anbopomofo=12578,e.angbopomofo=12580,e.angbracketleft=12296,e.angbracketright=12297,e.angkhankhuthai=3674,e.angle=8736,e.anglebracketleft=12296,e.anglebracketleftvertical=65087,e.anglebracketright=12297,e.anglebracketrightvertical=65088,e.angleleft=9001,e.angleright=9002,e.angstrom=8491,e.anoteleia=903,e.anudattadeva=2386,e.anusvarabengali=2434,e.anusvaradeva=2306,e.anusvaragujarati=2690,e.aogonek=261,e.apaatosquare=13056,e.aparen=9372,e.apostrophearmenian=1370,e.apostrophemod=700,e.apple=63743,e.approaches=8784,e.approxequal=8776,e.approxequalorimage=8786,e.approximatelyequal=8773,e.araeaekorean=12686,e.araeakorean=12685,e.arc=8978,e.arighthalfring=7834,e.aring=229,e.aringacute=507,e.aringbelow=7681,e.arrowboth=8596,e.arrowdashdown=8675,e.arrowdashleft=8672,e.arrowdashright=8674,e.arrowdashup=8673,e.arrowdblboth=8660,e.arrowdbldown=8659,e.arrowdblleft=8656,e.arrowdblright=8658,e.arrowdblup=8657,e.arrowdown=8595,e.arrowdownleft=8601,e.arrowdownright=8600,e.arrowdownwhite=8681,e.arrowheaddownmod=709,e.arrowheadleftmod=706,e.arrowheadrightmod=707,e.arrowheadupmod=708,e.arrowhorizex=63719,e.arrowleft=8592,e.arrowleftdbl=8656,e.arrowleftdblstroke=8653,e.arrowleftoverright=8646,e.arrowleftwhite=8678,e.arrowright=8594,e.arrowrightdblstroke=8655,e.arrowrightheavy=10142,e.arrowrightoverleft=8644,e.arrowrightwhite=8680,e.arrowtableft=8676,e.arrowtabright=8677,e.arrowup=8593,e.arrowupdn=8597,e.arrowupdnbse=8616,e.arrowupdownbase=8616,e.arrowupleft=8598,e.arrowupleftofdown=8645,e.arrowupright=8599,e.arrowupwhite=8679,e.arrowvertex=63718,e.asciicircum=94,e.asciicircummonospace=65342,e.asciitilde=126,e.asciitildemonospace=65374,e.ascript=593,e.ascriptturned=594,e.asmallhiragana=12353,e.asmallkatakana=12449,e.asmallkatakanahalfwidth=65383,e.asterisk=42,e.asteriskaltonearabic=1645,e.asteriskarabic=1645,e.asteriskmath=8727,e.asteriskmonospace=65290,e.asterisksmall=65121,e.asterism=8258,e.asuperior=63209,e.asymptoticallyequal=8771,e.at=64,e.atilde=227,e.atmonospace=65312,e.atsmall=65131,e.aturned=592,e.aubengali=2452,e.aubopomofo=12576,e.audeva=2324,e.augujarati=2708,e.augurmukhi=2580,e.aulengthmarkbengali=2519,e.aumatragurmukhi=2636,e.auvowelsignbengali=2508,e.auvowelsigndeva=2380,e.auvowelsigngujarati=2764,e.avagrahadeva=2365,e.aybarmenian=1377,e.ayin=1506,e.ayinaltonehebrew=64288,e.ayinhebrew=1506,e.b=98,e.babengali=2476,e.backslash=92,e.backslashmonospace=65340,e.badeva=2348,e.bagujarati=2732,e.bagurmukhi=2604,e.bahiragana=12400,e.bahtthai=3647,e.bakatakana=12496,e.bar=124,e.barmonospace=65372,e.bbopomofo=12549,e.bcircle=9425,e.bdotaccent=7683,e.bdotbelow=7685,e.beamedsixteenthnotes=9836,e.because=8757,e.becyrillic=1073,e.beharabic=1576,e.behfinalarabic=65168,e.behinitialarabic=65169,e.behiragana=12409,e.behmedialarabic=65170,e.behmeeminitialarabic=64671,e.behmeemisolatedarabic=64520,e.behnoonfinalarabic=64621,e.bekatakana=12505,e.benarmenian=1378,e.bet=1489,e.beta=946,e.betasymbolgreek=976,e.betdagesh=64305,e.betdageshhebrew=64305,e.bethebrew=1489,e.betrafehebrew=64332,e.bhabengali=2477,e.bhadeva=2349,e.bhagujarati=2733,e.bhagurmukhi=2605,e.bhook=595,e.bihiragana=12403,e.bikatakana=12499,e.bilabialclick=664,e.bindigurmukhi=2562,e.birusquare=13105,e.blackcircle=9679,e.blackdiamond=9670,e.blackdownpointingtriangle=9660,e.blackleftpointingpointer=9668,e.blackleftpointingtriangle=9664,e.blacklenticularbracketleft=12304,e.blacklenticularbracketleftvertical=65083,e.blacklenticularbracketright=12305,e.blacklenticularbracketrightvertical=65084,e.blacklowerlefttriangle=9699,e.blacklowerrighttriangle=9698,e.blackrectangle=9644,e.blackrightpointingpointer=9658,e.blackrightpointingtriangle=9654,e.blacksmallsquare=9642,e.blacksmilingface=9787,e.blacksquare=9632,e.blackstar=9733,e.blackupperlefttriangle=9700,e.blackupperrighttriangle=9701,e.blackuppointingsmalltriangle=9652,e.blackuppointingtriangle=9650,e.blank=9251,e.blinebelow=7687,e.block=9608,e.bmonospace=65346,e.bobaimaithai=3610,e.bohiragana=12412,e.bokatakana=12508,e.bparen=9373,e.bqsquare=13251,e.braceex=63732,e.braceleft=123,e.braceleftbt=63731,e.braceleftmid=63730,e.braceleftmonospace=65371,e.braceleftsmall=65115,e.bracelefttp=63729,e.braceleftvertical=65079,e.braceright=125,e.bracerightbt=63742,e.bracerightmid=63741,e.bracerightmonospace=65373,e.bracerightsmall=65116,e.bracerighttp=63740,e.bracerightvertical=65080,e.bracketleft=91,e.bracketleftbt=63728,e.bracketleftex=63727,e.bracketleftmonospace=65339,e.bracketlefttp=63726,e.bracketright=93,e.bracketrightbt=63739,e.bracketrightex=63738,e.bracketrightmonospace=65341,e.bracketrighttp=63737,e.breve=728,e.brevebelowcmb=814,e.brevecmb=774,e.breveinvertedbelowcmb=815,e.breveinvertedcmb=785,e.breveinverteddoublecmb=865,e.bridgebelowcmb=810,e.bridgeinvertedbelowcmb=826,e.brokenbar=166,e.bstroke=384,e.bsuperior=63210,e.btopbar=387,e.buhiragana=12406,e.bukatakana=12502,e.bullet=8226,e.bulletinverse=9688,e.bulletoperator=8729,e.bullseye=9678,e.c=99,e.caarmenian=1390,e.cabengali=2458,e.cacute=263,e.cadeva=2330,e.cagujarati=2714,e.cagurmukhi=2586,e.calsquare=13192,e.candrabindubengali=2433,e.candrabinducmb=784,e.candrabindudeva=2305,e.candrabindugujarati=2689,e.capslock=8682,e.careof=8453,e.caron=711,e.caronbelowcmb=812,e.caroncmb=780,e.carriagereturn=8629,e.cbopomofo=12568,e.ccaron=269,e.ccedilla=231,e.ccedillaacute=7689,e.ccircle=9426,e.ccircumflex=265,e.ccurl=597,e.cdot=267,e.cdotaccent=267,e.cdsquare=13253,e.cedilla=184,e.cedillacmb=807,e.cent=162,e.centigrade=8451,e.centinferior=63199,e.centmonospace=65504,e.centoldstyle=63394,e.centsuperior=63200,e.chaarmenian=1401,e.chabengali=2459,e.chadeva=2331,e.chagujarati=2715,e.chagurmukhi=2587,e.chbopomofo=12564,e.cheabkhasiancyrillic=1213,e.checkmark=10003,e.checyrillic=1095,e.chedescenderabkhasiancyrillic=1215,e.chedescendercyrillic=1207,e.chedieresiscyrillic=1269,e.cheharmenian=1395,e.chekhakassiancyrillic=1228,e.cheverticalstrokecyrillic=1209,e.chi=967,e.chieuchacirclekorean=12919,e.chieuchaparenkorean=12823,e.chieuchcirclekorean=12905,e.chieuchkorean=12618,e.chieuchparenkorean=12809,e.chochangthai=3594,e.chochanthai=3592,e.chochingthai=3593,e.chochoethai=3596,e.chook=392,e.cieucacirclekorean=12918,e.cieucaparenkorean=12822,e.cieuccirclekorean=12904,e.cieuckorean=12616,e.cieucparenkorean=12808,e.cieucuparenkorean=12828,e.circle=9675,e.circlecopyrt=169,e.circlemultiply=8855,e.circleot=8857,e.circleplus=8853,e.circlepostalmark=12342,e.circlewithlefthalfblack=9680,e.circlewithrighthalfblack=9681,e.circumflex=710,e.circumflexbelowcmb=813,e.circumflexcmb=770,e.clear=8999,e.clickalveolar=450,e.clickdental=448,e.clicklateral=449,e.clickretroflex=451,e.club=9827,e.clubsuitblack=9827,e.clubsuitwhite=9831,e.cmcubedsquare=13220,e.cmonospace=65347,e.cmsquaredsquare=13216,e.coarmenian=1409,e.colon=58,e.colonmonetary=8353,e.colonmonospace=65306,e.colonsign=8353,e.colonsmall=65109,e.colontriangularhalfmod=721,e.colontriangularmod=720,e.comma=44,e.commaabovecmb=787,e.commaaboverightcmb=789,e.commaaccent=63171,e.commaarabic=1548,e.commaarmenian=1373,e.commainferior=63201,e.commamonospace=65292,e.commareversedabovecmb=788,e.commareversedmod=701,e.commasmall=65104,e.commasuperior=63202,e.commaturnedabovecmb=786,e.commaturnedmod=699,e.compass=9788,e.congruent=8773,e.contourintegral=8750,e.control=8963,e.controlACK=6,e.controlBEL=7,e.controlBS=8,e.controlCAN=24,e.controlCR=13,e.controlDC1=17,e.controlDC2=18,e.controlDC3=19,e.controlDC4=20,e.controlDEL=127,e.controlDLE=16,e.controlEM=25,e.controlENQ=5,e.controlEOT=4,e.controlESC=27,e.controlETB=23,e.controlETX=3,e.controlFF=12,e.controlFS=28,e.controlGS=29,e.controlHT=9,e.controlLF=10,e.controlNAK=21,e.controlNULL=0,e.controlRS=30,e.controlSI=15,e.controlSO=14,e.controlSOT=2,e.controlSTX=1,e.controlSUB=26,e.controlSYN=22,e.controlUS=31,e.controlVT=11,e.copyright=169,e.copyrightsans=63721,e.copyrightserif=63193,e.cornerbracketleft=12300,e.cornerbracketlefthalfwidth=65378,e.cornerbracketleftvertical=65089,e.cornerbracketright=12301,e.cornerbracketrighthalfwidth=65379,e.cornerbracketrightvertical=65090,e.corporationsquare=13183,e.cosquare=13255,e.coverkgsquare=13254,e.cparen=9374,e.cruzeiro=8354,e.cstretched=663,e.curlyand=8911,e.curlyor=8910,e.currency=164,e.cyrBreve=63185,e.cyrFlex=63186,e.cyrbreve=63188,e.cyrflex=63189,e.d=100,e.daarmenian=1380,e.dabengali=2470,e.dadarabic=1590,e.dadeva=2342,e.dadfinalarabic=65214,e.dadinitialarabic=65215,e.dadmedialarabic=65216,e.dagesh=1468,e.dageshhebrew=1468,e.dagger=8224,e.daggerdbl=8225,e.dagujarati=2726,e.dagurmukhi=2598,e.dahiragana=12384,e.dakatakana=12480,e.dalarabic=1583,e.dalet=1491,e.daletdagesh=64307,e.daletdageshhebrew=64307,e.dalethebrew=1491,e.dalfinalarabic=65194,e.dammaarabic=1615,e.dammalowarabic=1615,e.dammatanaltonearabic=1612,e.dammatanarabic=1612,e.danda=2404,e.dargahebrew=1447,e.dargalefthebrew=1447,e.dasiapneumatacyrilliccmb=1157,e.dblGrave=63187,e.dblanglebracketleft=12298,e.dblanglebracketleftvertical=65085,e.dblanglebracketright=12299,e.dblanglebracketrightvertical=65086,e.dblarchinvertedbelowcmb=811,e.dblarrowleft=8660,e.dblarrowright=8658,e.dbldanda=2405,e.dblgrave=63190,e.dblgravecmb=783,e.dblintegral=8748,e.dbllowline=8215,e.dbllowlinecmb=819,e.dbloverlinecmb=831,e.dblprimemod=698,e.dblverticalbar=8214,e.dblverticallineabovecmb=782,e.dbopomofo=12553,e.dbsquare=13256,e.dcaron=271,e.dcedilla=7697,e.dcircle=9427,e.dcircumflexbelow=7699,e.dcroat=273,e.ddabengali=2465,e.ddadeva=2337,e.ddagujarati=2721,e.ddagurmukhi=2593,e.ddalarabic=1672,e.ddalfinalarabic=64393,e.dddhadeva=2396,e.ddhabengali=2466,e.ddhadeva=2338,e.ddhagujarati=2722,e.ddhagurmukhi=2594,e.ddotaccent=7691,e.ddotbelow=7693,e.decimalseparatorarabic=1643,e.decimalseparatorpersian=1643,e.decyrillic=1076,e.degree=176,e.dehihebrew=1453,e.dehiragana=12391,e.deicoptic=1007,e.dekatakana=12487,e.deleteleft=9003,e.deleteright=8998,e.delta=948,e.deltaturned=397,e.denominatorminusonenumeratorbengali=2552,e.dezh=676,e.dhabengali=2471,e.dhadeva=2343,e.dhagujarati=2727,e.dhagurmukhi=2599,e.dhook=599,e.dialytikatonos=901,e.dialytikatonoscmb=836,e.diamond=9830,e.diamondsuitwhite=9826,e.dieresis=168,e.dieresisacute=63191,e.dieresisbelowcmb=804,e.dieresiscmb=776,e.dieresisgrave=63192,e.dieresistonos=901,e.dihiragana=12386,e.dikatakana=12482,e.dittomark=12291,e.divide=247,e.divides=8739,e.divisionslash=8725,e.djecyrillic=1106,e.dkshade=9619,e.dlinebelow=7695,e.dlsquare=13207,e.dmacron=273,e.dmonospace=65348,e.dnblock=9604,e.dochadathai=3598,e.dodekthai=3604,e.dohiragana=12393,e.dokatakana=12489,e.dollar=36;e.dollarinferior=63203,e.dollarmonospace=65284,e.dollaroldstyle=63268,e.dollarsmall=65129,e.dollarsuperior=63204,e.dong=8363,e.dorusquare=13094,e.dotaccent=729,e.dotaccentcmb=775,e.dotbelowcmb=803,e.dotbelowcomb=803,e.dotkatakana=12539,e.dotlessi=305,e.dotlessj=63166,e.dotlessjstrokehook=644,e.dotmath=8901,e.dottedcircle=9676,e.doubleyodpatah=64287,e.doubleyodpatahhebrew=64287,e.downtackbelowcmb=798,e.downtackmod=725,e.dparen=9375,e.dsuperior=63211,e.dtail=598,e.dtopbar=396,e.duhiragana=12389,e.dukatakana=12485,e.dz=499,e.dzaltone=675,e.dzcaron=454,e.dzcurl=677,e.dzeabkhasiancyrillic=1249,e.dzecyrillic=1109,e.dzhecyrillic=1119,e.e=101,e.eacute=233,e.earth=9793,e.ebengali=2447,e.ebopomofo=12572,e.ebreve=277,e.ecandradeva=2317,e.ecandragujarati=2701,e.ecandravowelsigndeva=2373,e.ecandravowelsigngujarati=2757,e.ecaron=283,e.ecedillabreve=7709,e.echarmenian=1381,e.echyiwnarmenian=1415,e.ecircle=9428,e.ecircumflex=234,e.ecircumflexacute=7871,e.ecircumflexbelow=7705,e.ecircumflexdotbelow=7879,e.ecircumflexgrave=7873,e.ecircumflexhookabove=7875,e.ecircumflextilde=7877,e.ecyrillic=1108,e.edblgrave=517,e.edeva=2319,e.edieresis=235,e.edot=279,e.edotaccent=279,e.edotbelow=7865,e.eegurmukhi=2575,e.eematragurmukhi=2631,e.efcyrillic=1092,e.egrave=232,e.egujarati=2703,e.eharmenian=1383,e.ehbopomofo=12573,e.ehiragana=12360,e.ehookabove=7867,e.eibopomofo=12575,e.eight=56,e.eightarabic=1640,e.eightbengali=2542,e.eightcircle=9319,e.eightcircleinversesansserif=10129,e.eightdeva=2414,e.eighteencircle=9329,e.eighteenparen=9349,e.eighteenperiod=9369,e.eightgujarati=2798,e.eightgurmukhi=2670,e.eighthackarabic=1640,e.eighthangzhou=12328,e.eighthnotebeamed=9835,e.eightideographicparen=12839,e.eightinferior=8328,e.eightmonospace=65304,e.eightoldstyle=63288,e.eightparen=9339,e.eightperiod=9359,e.eightpersian=1784,e.eightroman=8567,e.eightsuperior=8312,e.eightthai=3672,e.einvertedbreve=519,e.eiotifiedcyrillic=1125,e.ekatakana=12456,e.ekatakanahalfwidth=65396,e.ekonkargurmukhi=2676,e.ekorean=12628,e.elcyrillic=1083,e.element=8712,e.elevencircle=9322,e.elevenparen=9342,e.elevenperiod=9362,e.elevenroman=8570,e.ellipsis=8230,e.ellipsisvertical=8942,e.emacron=275,e.emacronacute=7703,e.emacrongrave=7701,e.emcyrillic=1084,e.emdash=8212,e.emdashvertical=65073,e.emonospace=65349,e.emphasismarkarmenian=1371,e.emptyset=8709,e.enbopomofo=12579,e.encyrillic=1085,e.endash=8211,e.endashvertical=65074,e.endescendercyrillic=1187,e.eng=331,e.engbopomofo=12581,e.enghecyrillic=1189,e.enhookcyrillic=1224,e.enspace=8194,e.eogonek=281,e.eokorean=12627,e.eopen=603,e.eopenclosed=666,e.eopenreversed=604,e.eopenreversedclosed=606,e.eopenreversedhook=605,e.eparen=9376,e.epsilon=949,e.epsilontonos=941,e.equal=61,e.equalmonospace=65309,e.equalsmall=65126,e.equalsuperior=8316,e.equivalence=8801,e.erbopomofo=12582,e.ercyrillic=1088,e.ereversed=600,e.ereversedcyrillic=1101,e.escyrillic=1089,e.esdescendercyrillic=1195,e.esh=643,e.eshcurl=646,e.eshortdeva=2318,e.eshortvowelsigndeva=2374,e.eshreversedloop=426,e.eshsquatreversed=645,e.esmallhiragana=12359,e.esmallkatakana=12455,e.esmallkatakanahalfwidth=65386,e.estimated=8494,e.esuperior=63212,e.eta=951,e.etarmenian=1384,e.etatonos=942,e.eth=240,e.etilde=7869,e.etildebelow=7707,e.etnahtafoukhhebrew=1425,e.etnahtafoukhlefthebrew=1425,e.etnahtahebrew=1425,e.etnahtalefthebrew=1425,e.eturned=477,e.eukorean=12641,e.euro=8364,e.evowelsignbengali=2503,e.evowelsigndeva=2375,e.evowelsigngujarati=2759,e.exclam=33,e.exclamarmenian=1372,e.exclamdbl=8252,e.exclamdown=161,e.exclamdownsmall=63393,e.exclammonospace=65281,e.exclamsmall=63265,e.existential=8707,e.ezh=658,e.ezhcaron=495,e.ezhcurl=659,e.ezhreversed=441,e.ezhtail=442,e.f=102,e.fadeva=2398,e.fagurmukhi=2654,e.fahrenheit=8457,e.fathaarabic=1614,e.fathalowarabic=1614,e.fathatanarabic=1611,e.fbopomofo=12552,e.fcircle=9429,e.fdotaccent=7711,e.feharabic=1601,e.feharmenian=1414,e.fehfinalarabic=65234,e.fehinitialarabic=65235,e.fehmedialarabic=65236,e.feicoptic=997,e.female=9792,e.ff=64256,e.f_f=64256,e.ffi=64259,e.f_f_i=64259,e.ffl=64260,e.f_f_l=64260,e.fi=64257,e.f_i=64257,e.fifteencircle=9326,e.fifteenparen=9346,e.fifteenperiod=9366,e.figuredash=8210,e.filledbox=9632,e.filledrect=9644,e.finalkaf=1498,e.finalkafdagesh=64314,e.finalkafdageshhebrew=64314,e.finalkafhebrew=1498,e.finalmem=1501,e.finalmemhebrew=1501,e.finalnun=1503,e.finalnunhebrew=1503,e.finalpe=1507,e.finalpehebrew=1507,e.finaltsadi=1509,e.finaltsadihebrew=1509,e.firsttonechinese=713,e.fisheye=9673,e.fitacyrillic=1139,e.five=53,e.fivearabic=1637,e.fivebengali=2539,e.fivecircle=9316,e.fivecircleinversesansserif=10126,e.fivedeva=2411,e.fiveeighths=8541,e.fivegujarati=2795,e.fivegurmukhi=2667,e.fivehackarabic=1637,e.fivehangzhou=12325,e.fiveideographicparen=12836,e.fiveinferior=8325,e.fivemonospace=65301,e.fiveoldstyle=63285,e.fiveparen=9336,e.fiveperiod=9356,e.fivepersian=1781,e.fiveroman=8564,e.fivesuperior=8309,e.fivethai=3669,e.fl=64258,e.f_l=64258,e.florin=402,e.fmonospace=65350,e.fmsquare=13209,e.fofanthai=3615,e.fofathai=3613,e.fongmanthai=3663,e.forall=8704,e.four=52,e.fourarabic=1636,e.fourbengali=2538,e.fourcircle=9315,e.fourcircleinversesansserif=10125,e.fourdeva=2410,e.fourgujarati=2794,e.fourgurmukhi=2666,e.fourhackarabic=1636,e.fourhangzhou=12324,e.fourideographicparen=12835,e.fourinferior=8324,e.fourmonospace=65300,e.fournumeratorbengali=2551,e.fouroldstyle=63284,e.fourparen=9335,e.fourperiod=9355,e.fourpersian=1780,e.fourroman=8563,e.foursuperior=8308,e.fourteencircle=9325,e.fourteenparen=9345,e.fourteenperiod=9365,e.fourthai=3668,e.fourthtonechinese=715,e.fparen=9377,e.fraction=8260,e.franc=8355,e.g=103,e.gabengali=2455,e.gacute=501,e.gadeva=2327,e.gafarabic=1711,e.gaffinalarabic=64403,e.gafinitialarabic=64404,e.gafmedialarabic=64405,e.gagujarati=2711,e.gagurmukhi=2583,e.gahiragana=12364,e.gakatakana=12460,e.gamma=947,e.gammalatinsmall=611,e.gammasuperior=736,e.gangiacoptic=1003,e.gbopomofo=12557,e.gbreve=287,e.gcaron=487,e.gcedilla=291,e.gcircle=9430,e.gcircumflex=285,e.gcommaaccent=291,e.gdot=289,e.gdotaccent=289,e.gecyrillic=1075,e.gehiragana=12370,e.gekatakana=12466,e.geometricallyequal=8785,e.gereshaccenthebrew=1436,e.gereshhebrew=1523,e.gereshmuqdamhebrew=1437,e.germandbls=223,e.gershayimaccenthebrew=1438,e.gershayimhebrew=1524,e.getamark=12307,e.ghabengali=2456,e.ghadarmenian=1394,e.ghadeva=2328,e.ghagujarati=2712,e.ghagurmukhi=2584,e.ghainarabic=1594,e.ghainfinalarabic=65230,e.ghaininitialarabic=65231,e.ghainmedialarabic=65232,e.ghemiddlehookcyrillic=1173,e.ghestrokecyrillic=1171,e.gheupturncyrillic=1169,e.ghhadeva=2394,e.ghhagurmukhi=2650,e.ghook=608,e.ghzsquare=13203,e.gihiragana=12366,e.gikatakana=12462,e.gimarmenian=1379,e.gimel=1490,e.gimeldagesh=64306,e.gimeldageshhebrew=64306,e.gimelhebrew=1490,e.gjecyrillic=1107,e.glottalinvertedstroke=446,e.glottalstop=660,e.glottalstopinverted=662,e.glottalstopmod=704,e.glottalstopreversed=661,e.glottalstopreversedmod=705,e.glottalstopreversedsuperior=740,e.glottalstopstroke=673,e.glottalstopstrokereversed=674,e.gmacron=7713,e.gmonospace=65351,e.gohiragana=12372,e.gokatakana=12468,e.gparen=9378,e.gpasquare=13228,e.gradient=8711,e.grave=96,e.gravebelowcmb=790,e.gravecmb=768,e.gravecomb=768,e.gravedeva=2387,e.gravelowmod=718,e.gravemonospace=65344,e.gravetonecmb=832,e.greater=62,e.greaterequal=8805,e.greaterequalorless=8923,e.greatermonospace=65310,e.greaterorequivalent=8819,e.greaterorless=8823,e.greateroverequal=8807,e.greatersmall=65125,e.gscript=609,e.gstroke=485,e.guhiragana=12368,e.guillemotleft=171,e.guillemotright=187,e.guilsinglleft=8249,e.guilsinglright=8250,e.gukatakana=12464,e.guramusquare=13080,e.gysquare=13257,e.h=104,e.haabkhasiancyrillic=1193,e.haaltonearabic=1729,e.habengali=2489,e.hadescendercyrillic=1203,e.hadeva=2361,e.hagujarati=2745,e.hagurmukhi=2617,e.haharabic=1581,e.hahfinalarabic=65186,e.hahinitialarabic=65187,e.hahiragana=12399,e.hahmedialarabic=65188,e.haitusquare=13098,e.hakatakana=12495,e.hakatakanahalfwidth=65418,e.halantgurmukhi=2637,e.hamzaarabic=1569,e.hamzalowarabic=1569,e.hangulfiller=12644,e.hardsigncyrillic=1098,e.harpoonleftbarbup=8636,e.harpoonrightbarbup=8640,e.hasquare=13258,e.hatafpatah=1458,e.hatafpatah16=1458,e.hatafpatah23=1458,e.hatafpatah2f=1458,e.hatafpatahhebrew=1458,e.hatafpatahnarrowhebrew=1458,e.hatafpatahquarterhebrew=1458,e.hatafpatahwidehebrew=1458,e.hatafqamats=1459,e.hatafqamats1b=1459,e.hatafqamats28=1459,e.hatafqamats34=1459,e.hatafqamatshebrew=1459,e.hatafqamatsnarrowhebrew=1459,e.hatafqamatsquarterhebrew=1459,e.hatafqamatswidehebrew=1459,e.hatafsegol=1457,e.hatafsegol17=1457,e.hatafsegol24=1457,e.hatafsegol30=1457,e.hatafsegolhebrew=1457,e.hatafsegolnarrowhebrew=1457,e.hatafsegolquarterhebrew=1457,e.hatafsegolwidehebrew=1457,e.hbar=295,e.hbopomofo=12559,e.hbrevebelow=7723,e.hcedilla=7721,e.hcircle=9431,e.hcircumflex=293,e.hdieresis=7719,e.hdotaccent=7715,e.hdotbelow=7717,e.he=1492,e.heart=9829,e.heartsuitblack=9829,e.heartsuitwhite=9825,e.hedagesh=64308,e.hedageshhebrew=64308,e.hehaltonearabic=1729,e.heharabic=1607,e.hehebrew=1492,e.hehfinalaltonearabic=64423,e.hehfinalalttwoarabic=65258,e.hehfinalarabic=65258,e.hehhamzaabovefinalarabic=64421,e.hehhamzaaboveisolatedarabic=64420,e.hehinitialaltonearabic=64424,e.hehinitialarabic=65259,e.hehiragana=12408,e.hehmedialaltonearabic=64425,e.hehmedialarabic=65260,e.heiseierasquare=13179,e.hekatakana=12504,e.hekatakanahalfwidth=65421,e.hekutaarusquare=13110,e.henghook=615,e.herutusquare=13113,e.het=1495,e.hethebrew=1495,e.hhook=614,e.hhooksuperior=689,e.hieuhacirclekorean=12923,e.hieuhaparenkorean=12827,e.hieuhcirclekorean=12909,e.hieuhkorean=12622,e.hieuhparenkorean=12813,e.hihiragana=12402,e.hikatakana=12498,e.hikatakanahalfwidth=65419,e.hiriq=1460,e.hiriq14=1460,e.hiriq21=1460,e.hiriq2d=1460,e.hiriqhebrew=1460,e.hiriqnarrowhebrew=1460,e.hiriqquarterhebrew=1460,e.hiriqwidehebrew=1460,e.hlinebelow=7830,e.hmonospace=65352,e.hoarmenian=1392,e.hohipthai=3627,e.hohiragana=12411,e.hokatakana=12507,e.hokatakanahalfwidth=65422,e.holam=1465,e.holam19=1465,e.holam26=1465,e.holam32=1465,e.holamhebrew=1465,e.holamnarrowhebrew=1465,e.holamquarterhebrew=1465,e.holamwidehebrew=1465,e.honokhukthai=3630,e.hookabovecomb=777,e.hookcmb=777,e.hookpalatalizedbelowcmb=801,e.hookretroflexbelowcmb=802,e.hoonsquare=13122,e.horicoptic=1001,e.horizontalbar=8213,e.horncmb=795,e.hotsprings=9832,e.house=8962,e.hparen=9379,e.hsuperior=688,e.hturned=613,e.huhiragana=12405,e.huiitosquare=13107,e.hukatakana=12501,e.hukatakanahalfwidth=65420,e.hungarumlaut=733,e.hungarumlautcmb=779,e.hv=405,e.hyphen=45,e.hypheninferior=63205,e.hyphenmonospace=65293,e.hyphensmall=65123,e.hyphensuperior=63206,e.hyphentwo=8208,e.i=105,e.iacute=237,e.iacyrillic=1103,e.ibengali=2439,e.ibopomofo=12583,e.ibreve=301,e.icaron=464,e.icircle=9432,e.icircumflex=238,e.icyrillic=1110,e.idblgrave=521,e.ideographearthcircle=12943,e.ideographfirecircle=12939,e.ideographicallianceparen=12863,e.ideographiccallparen=12858,e.ideographiccentrecircle=12965,e.ideographicclose=12294,e.ideographiccomma=12289,e.ideographiccommaleft=65380,e.ideographiccongratulationparen=12855,e.ideographiccorrectcircle=12963,e.ideographicearthparen=12847,e.ideographicenterpriseparen=12861,e.ideographicexcellentcircle=12957,e.ideographicfestivalparen=12864,e.ideographicfinancialcircle=12950,e.ideographicfinancialparen=12854,e.ideographicfireparen=12843,e.ideographichaveparen=12850,e.ideographichighcircle=12964,e.ideographiciterationmark=12293,e.ideographiclaborcircle=12952,e.ideographiclaborparen=12856,e.ideographicleftcircle=12967,e.ideographiclowcircle=12966,e.ideographicmedicinecircle=12969,e.ideographicmetalparen=12846,e.ideographicmoonparen=12842,e.ideographicnameparen=12852,e.ideographicperiod=12290,e.ideographicprintcircle=12958,e.ideographicreachparen=12867,e.ideographicrepresentparen=12857,e.ideographicresourceparen=12862,e.ideographicrightcircle=12968,e.ideographicsecretcircle=12953,e.ideographicselfparen=12866,e.ideographicsocietyparen=12851,e.ideographicspace=12288,e.ideographicspecialparen=12853,e.ideographicstockparen=12849,e.ideographicstudyparen=12859,e.ideographicsunparen=12848,e.ideographicsuperviseparen=12860,e.ideographicwaterparen=12844,e.ideographicwoodparen=12845,e.ideographiczero=12295,e.ideographmetalcircle=12942,e.ideographmooncircle=12938,e.ideographnamecircle=12948,e.ideographsuncircle=12944,e.ideographwatercircle=12940,e.ideographwoodcircle=12941,e.ideva=2311,e.idieresis=239,e.idieresisacute=7727,e.idieresiscyrillic=1253,e.idotbelow=7883,e.iebrevecyrillic=1239,e.iecyrillic=1077,e.ieungacirclekorean=12917,e.ieungaparenkorean=12821,e.ieungcirclekorean=12903,e.ieungkorean=12615,e.ieungparenkorean=12807,e.igrave=236,e.igujarati=2695,e.igurmukhi=2567,e.ihiragana=12356,e.ihookabove=7881,e.iibengali=2440,e.iicyrillic=1080,e.iideva=2312,e.iigujarati=2696,e.iigurmukhi=2568,e.iimatragurmukhi=2624,e.iinvertedbreve=523,e.iishortcyrillic=1081,e.iivowelsignbengali=2496,e.iivowelsigndeva=2368,e.iivowelsigngujarati=2752,e.ij=307,e.ikatakana=12452,e.ikatakanahalfwidth=65394,e.ikorean=12643,e.ilde=732,e.iluyhebrew=1452,e.imacron=299,e.imacroncyrillic=1251,e.imageorapproximatelyequal=8787,e.imatragurmukhi=2623,e.imonospace=65353,e.increment=8710,e.infinity=8734,e.iniarmenian=1387,e.integral=8747,e.integralbottom=8993,e.integralbt=8993,e.integralex=63733,e.integraltop=8992,e.integraltp=8992,e.intersection=8745,e.intisquare=13061,e.invbullet=9688,e.invcircle=9689,e.invsmileface=9787,e.iocyrillic=1105,e.iogonek=303,e.iota=953,e.iotadieresis=970,e.iotadieresistonos=912,e.iotalatin=617,e.iotatonos=943,e.iparen=9380,e.irigurmukhi=2674,e.ismallhiragana=12355,e.ismallkatakana=12451,e.ismallkatakanahalfwidth=65384,e.issharbengali=2554,e.istroke=616,e.isuperior=63213,e.iterationhiragana=12445,e.iterationkatakana=12541,e.itilde=297,e.itildebelow=7725,e.iubopomofo=12585,e.iucyrillic=1102,e.ivowelsignbengali=2495,e.ivowelsigndeva=2367,e.ivowelsigngujarati=2751,e.izhitsacyrillic=1141,e.izhitsadblgravecyrillic=1143,e.j=106,e.jaarmenian=1393,e.jabengali=2460,e.jadeva=2332,e.jagujarati=2716,e.jagurmukhi=2588,e.jbopomofo=12560,e.jcaron=496,e.jcircle=9433,e.jcircumflex=309,e.jcrossedtail=669,e.jdotlessstroke=607,e.jecyrillic=1112,e.jeemarabic=1580,e.jeemfinalarabic=65182,e.jeeminitialarabic=65183,e.jeemmedialarabic=65184,e.jeharabic=1688,e.jehfinalarabic=64395,e.jhabengali=2461,e.jhadeva=2333,e.jhagujarati=2717,e.jhagurmukhi=2589,e.jheharmenian=1403,e.jis=12292,e.jmonospace=65354,e.jparen=9381,e.jsuperior=690,e.k=107,e.kabashkircyrillic=1185,e.kabengali=2453,e.kacute=7729,e.kacyrillic=1082,e.kadescendercyrillic=1179,e.kadeva=2325,e.kaf=1499,e.kafarabic=1603,e.kafdagesh=64315,e.kafdageshhebrew=64315,e.kaffinalarabic=65242,e.kafhebrew=1499,e.kafinitialarabic=65243,e.kafmedialarabic=65244,e.kafrafehebrew=64333,e.kagujarati=2709,e.kagurmukhi=2581,e.kahiragana=12363,e.kahookcyrillic=1220,e.kakatakana=12459,e.kakatakanahalfwidth=65398,e.kappa=954,e.kappasymbolgreek=1008,e.kapyeounmieumkorean=12657,e.kapyeounphieuphkorean=12676,e.kapyeounpieupkorean=12664,e.kapyeounssangpieupkorean=12665,e.karoriisquare=13069,e.kashidaautoarabic=1600,e.kashidaautonosidebearingarabic=1600,e.kasmallkatakana=12533,e.kasquare=13188,e.kasraarabic=1616,e.kasratanarabic=1613,e.kastrokecyrillic=1183,e.katahiraprolongmarkhalfwidth=65392,e.kaverticalstrokecyrillic=1181,e.kbopomofo=12558,e.kcalsquare=13193,e.kcaron=489,e.kcedilla=311,e.kcircle=9434,e.kcommaaccent=311,e.kdotbelow=7731,e.keharmenian=1412,e.kehiragana=12369,e.kekatakana=12465,e.kekatakanahalfwidth=65401,e.kenarmenian=1391,e.kesmallkatakana=12534,e.kgreenlandic=312,e.khabengali=2454,e.khacyrillic=1093,e.khadeva=2326,e.khagujarati=2710,e.khagurmukhi=2582,e.khaharabic=1582,e.khahfinalarabic=65190,e.khahinitialarabic=65191,e.khahmedialarabic=65192,e.kheicoptic=999,e.khhadeva=2393,e.khhagurmukhi=2649,e.khieukhacirclekorean=12920,e.khieukhaparenkorean=12824,e.khieukhcirclekorean=12906,e.khieukhkorean=12619,e.khieukhparenkorean=12810,e.khokhaithai=3586,e.khokhonthai=3589,e.khokhuatthai=3587,e.khokhwaithai=3588,e.khomutthai=3675,e.khook=409,e.khorakhangthai=3590,e.khzsquare=13201,e.kihiragana=12365,e.kikatakana=12461,e.kikatakanahalfwidth=65399,e.kiroguramusquare=13077,e.kiromeetorusquare=13078,e.kirosquare=13076,e.kiyeokacirclekorean=12910,e.kiyeokaparenkorean=12814,e.kiyeokcirclekorean=12896,e.kiyeokkorean=12593,e.kiyeokparenkorean=12800,e.kiyeoksioskorean=12595;e.kjecyrillic=1116,e.klinebelow=7733,e.klsquare=13208,e.kmcubedsquare=13222,e.kmonospace=65355,e.kmsquaredsquare=13218,e.kohiragana=12371,e.kohmsquare=13248,e.kokaithai=3585,e.kokatakana=12467,e.kokatakanahalfwidth=65402,e.kooposquare=13086,e.koppacyrillic=1153,e.koreanstandardsymbol=12927,e.koroniscmb=835,e.kparen=9382,e.kpasquare=13226,e.ksicyrillic=1135,e.ktsquare=13263,e.kturned=670,e.kuhiragana=12367,e.kukatakana=12463,e.kukatakanahalfwidth=65400,e.kvsquare=13240,e.kwsquare=13246,e.l=108,e.labengali=2482,e.lacute=314,e.ladeva=2354,e.lagujarati=2738,e.lagurmukhi=2610,e.lakkhangyaothai=3653,e.lamaleffinalarabic=65276,e.lamalefhamzaabovefinalarabic=65272,e.lamalefhamzaaboveisolatedarabic=65271,e.lamalefhamzabelowfinalarabic=65274,e.lamalefhamzabelowisolatedarabic=65273,e.lamalefisolatedarabic=65275,e.lamalefmaddaabovefinalarabic=65270,e.lamalefmaddaaboveisolatedarabic=65269,e.lamarabic=1604,e.lambda=955,e.lambdastroke=411,e.lamed=1500,e.lameddagesh=64316,e.lameddageshhebrew=64316,e.lamedhebrew=1500,e.lamfinalarabic=65246,e.lamhahinitialarabic=64714,e.laminitialarabic=65247,e.lamjeeminitialarabic=64713,e.lamkhahinitialarabic=64715,e.lamlamhehisolatedarabic=65010,e.lammedialarabic=65248,e.lammeemhahinitialarabic=64904,e.lammeeminitialarabic=64716,e.largecircle=9711,e.lbar=410,e.lbelt=620,e.lbopomofo=12556,e.lcaron=318,e.lcedilla=316,e.lcircle=9435,e.lcircumflexbelow=7741,e.lcommaaccent=316,e.ldot=320,e.ldotaccent=320,e.ldotbelow=7735,e.ldotbelowmacron=7737,e.leftangleabovecmb=794,e.lefttackbelowcmb=792,e.less=60,e.lessequal=8804,e.lessequalorgreater=8922,e.lessmonospace=65308,e.lessorequivalent=8818,e.lessorgreater=8822,e.lessoverequal=8806,e.lesssmall=65124,e.lezh=622,e.lfblock=9612,e.lhookretroflex=621,e.lira=8356,e.liwnarmenian=1388,e.lj=457,e.ljecyrillic=1113,e.ll=63168,e.lladeva=2355,e.llagujarati=2739,e.llinebelow=7739,e.llladeva=2356,e.llvocalicbengali=2529,e.llvocalicdeva=2401,e.llvocalicvowelsignbengali=2531,e.llvocalicvowelsigndeva=2403,e.lmiddletilde=619,e.lmonospace=65356,e.lmsquare=13264,e.lochulathai=3628,e.logicaland=8743,e.logicalnot=172,e.logicalnotreversed=8976,e.logicalor=8744,e.lolingthai=3621,e.longs=383,e.lowlinecenterline=65102,e.lowlinecmb=818,e.lowlinedashed=65101,e.lozenge=9674,e.lparen=9383,e.lslash=322,e.lsquare=8467,e.lsuperior=63214,e.ltshade=9617,e.luthai=3622,e.lvocalicbengali=2444,e.lvocalicdeva=2316,e.lvocalicvowelsignbengali=2530,e.lvocalicvowelsigndeva=2402,e.lxsquare=13267,e.m=109,e.mabengali=2478,e.macron=175,e.macronbelowcmb=817,e.macroncmb=772,e.macronlowmod=717,e.macronmonospace=65507,e.macute=7743,e.madeva=2350,e.magujarati=2734,e.magurmukhi=2606,e.mahapakhhebrew=1444,e.mahapakhlefthebrew=1444,e.mahiragana=12414,e.maichattawalowleftthai=63637,e.maichattawalowrightthai=63636,e.maichattawathai=3659,e.maichattawaupperleftthai=63635,e.maieklowleftthai=63628,e.maieklowrightthai=63627,e.maiekthai=3656,e.maiekupperleftthai=63626,e.maihanakatleftthai=63620,e.maihanakatthai=3633,e.maitaikhuleftthai=63625,e.maitaikhuthai=3655,e.maitholowleftthai=63631,e.maitholowrightthai=63630,e.maithothai=3657,e.maithoupperleftthai=63629,e.maitrilowleftthai=63634,e.maitrilowrightthai=63633,e.maitrithai=3658,e.maitriupperleftthai=63632,e.maiyamokthai=3654,e.makatakana=12510,e.makatakanahalfwidth=65423,e.male=9794,e.mansyonsquare=13127,e.maqafhebrew=1470,e.mars=9794,e.masoracirclehebrew=1455,e.masquare=13187,e.mbopomofo=12551,e.mbsquare=13268,e.mcircle=9436,e.mcubedsquare=13221,e.mdotaccent=7745,e.mdotbelow=7747,e.meemarabic=1605,e.meemfinalarabic=65250,e.meeminitialarabic=65251,e.meemmedialarabic=65252,e.meemmeeminitialarabic=64721,e.meemmeemisolatedarabic=64584,e.meetorusquare=13133,e.mehiragana=12417,e.meizierasquare=13182,e.mekatakana=12513,e.mekatakanahalfwidth=65426,e.mem=1502,e.memdagesh=64318,e.memdageshhebrew=64318,e.memhebrew=1502,e.menarmenian=1396,e.merkhahebrew=1445,e.merkhakefulahebrew=1446,e.merkhakefulalefthebrew=1446,e.merkhalefthebrew=1445,e.mhook=625,e.mhzsquare=13202,e.middledotkatakanahalfwidth=65381,e.middot=183,e.mieumacirclekorean=12914,e.mieumaparenkorean=12818,e.mieumcirclekorean=12900,e.mieumkorean=12609,e.mieumpansioskorean=12656,e.mieumparenkorean=12804,e.mieumpieupkorean=12654,e.mieumsioskorean=12655,e.mihiragana=12415,e.mikatakana=12511,e.mikatakanahalfwidth=65424,e.minus=8722,e.minusbelowcmb=800,e.minuscircle=8854,e.minusmod=727,e.minusplus=8723,e.minute=8242,e.miribaarusquare=13130,e.mirisquare=13129,e.mlonglegturned=624,e.mlsquare=13206,e.mmcubedsquare=13219,e.mmonospace=65357,e.mmsquaredsquare=13215,e.mohiragana=12418,e.mohmsquare=13249,e.mokatakana=12514,e.mokatakanahalfwidth=65427,e.molsquare=13270,e.momathai=3617,e.moverssquare=13223,e.moverssquaredsquare=13224,e.mparen=9384,e.mpasquare=13227,e.mssquare=13235,e.msuperior=63215,e.mturned=623,e.mu=181,e.mu1=181,e.muasquare=13186,e.muchgreater=8811,e.muchless=8810,e.mufsquare=13196,e.mugreek=956,e.mugsquare=13197,e.muhiragana=12416,e.mukatakana=12512,e.mukatakanahalfwidth=65425,e.mulsquare=13205,e.multiply=215,e.mumsquare=13211,e.munahhebrew=1443,e.munahlefthebrew=1443,e.musicalnote=9834,e.musicalnotedbl=9835,e.musicflatsign=9837,e.musicsharpsign=9839,e.mussquare=13234,e.muvsquare=13238,e.muwsquare=13244,e.mvmegasquare=13241,e.mvsquare=13239,e.mwmegasquare=13247,e.mwsquare=13245,e.n=110,e.nabengali=2472,e.nabla=8711,e.nacute=324,e.nadeva=2344,e.nagujarati=2728,e.nagurmukhi=2600,e.nahiragana=12394,e.nakatakana=12490,e.nakatakanahalfwidth=65413,e.napostrophe=329,e.nasquare=13185,e.nbopomofo=12555,e.nbspace=160,e.ncaron=328,e.ncedilla=326,e.ncircle=9437,e.ncircumflexbelow=7755,e.ncommaaccent=326,e.ndotaccent=7749,e.ndotbelow=7751,e.nehiragana=12397,e.nekatakana=12493,e.nekatakanahalfwidth=65416,e.newsheqelsign=8362,e.nfsquare=13195,e.ngabengali=2457,e.ngadeva=2329,e.ngagujarati=2713,e.ngagurmukhi=2585,e.ngonguthai=3591,e.nhiragana=12435,e.nhookleft=626,e.nhookretroflex=627,e.nieunacirclekorean=12911,e.nieunaparenkorean=12815,e.nieuncieuckorean=12597,e.nieuncirclekorean=12897,e.nieunhieuhkorean=12598,e.nieunkorean=12596,e.nieunpansioskorean=12648,e.nieunparenkorean=12801,e.nieunsioskorean=12647,e.nieuntikeutkorean=12646,e.nihiragana=12395,e.nikatakana=12491,e.nikatakanahalfwidth=65414,e.nikhahitleftthai=63641,e.nikhahitthai=3661,e.nine=57,e.ninearabic=1641,e.ninebengali=2543,e.ninecircle=9320,e.ninecircleinversesansserif=10130,e.ninedeva=2415,e.ninegujarati=2799,e.ninegurmukhi=2671,e.ninehackarabic=1641,e.ninehangzhou=12329,e.nineideographicparen=12840,e.nineinferior=8329,e.ninemonospace=65305,e.nineoldstyle=63289,e.nineparen=9340,e.nineperiod=9360,e.ninepersian=1785,e.nineroman=8568,e.ninesuperior=8313,e.nineteencircle=9330,e.nineteenparen=9350,e.nineteenperiod=9370,e.ninethai=3673,e.nj=460,e.njecyrillic=1114,e.nkatakana=12531,e.nkatakanahalfwidth=65437,e.nlegrightlong=414,e.nlinebelow=7753,e.nmonospace=65358,e.nmsquare=13210,e.nnabengali=2467,e.nnadeva=2339,e.nnagujarati=2723,e.nnagurmukhi=2595,e.nnnadeva=2345,e.nohiragana=12398,e.nokatakana=12494,e.nokatakanahalfwidth=65417,e.nonbreakingspace=160,e.nonenthai=3603,e.nonuthai=3609,e.noonarabic=1606,e.noonfinalarabic=65254,e.noonghunnaarabic=1722,e.noonghunnafinalarabic=64415,e.nooninitialarabic=65255,e.noonjeeminitialarabic=64722,e.noonjeemisolatedarabic=64587,e.noonmedialarabic=65256,e.noonmeeminitialarabic=64725,e.noonmeemisolatedarabic=64590,e.noonnoonfinalarabic=64653,e.notcontains=8716,e.notelement=8713,e.notelementof=8713,e.notequal=8800,e.notgreater=8815,e.notgreaternorequal=8817,e.notgreaternorless=8825,e.notidentical=8802,e.notless=8814,e.notlessnorequal=8816,e.notparallel=8742,e.notprecedes=8832,e.notsubset=8836,e.notsucceeds=8833,e.notsuperset=8837,e.nowarmenian=1398,e.nparen=9385,e.nssquare=13233,e.nsuperior=8319,e.ntilde=241,e.nu=957,e.nuhiragana=12396,e.nukatakana=12492,e.nukatakanahalfwidth=65415,e.nuktabengali=2492,e.nuktadeva=2364,e.nuktagujarati=2748,e.nuktagurmukhi=2620,e.numbersign=35,e.numbersignmonospace=65283,e.numbersignsmall=65119,e.numeralsigngreek=884,e.numeralsignlowergreek=885,e.numero=8470,e.nun=1504,e.nundagesh=64320,e.nundageshhebrew=64320,e.nunhebrew=1504,e.nvsquare=13237,e.nwsquare=13243,e.nyabengali=2462,e.nyadeva=2334,e.nyagujarati=2718,e.nyagurmukhi=2590,e.o=111,e.oacute=243,e.oangthai=3629,e.obarred=629,e.obarredcyrillic=1257,e.obarreddieresiscyrillic=1259,e.obengali=2451,e.obopomofo=12571,e.obreve=335,e.ocandradeva=2321,e.ocandragujarati=2705,e.ocandravowelsigndeva=2377,e.ocandravowelsigngujarati=2761,e.ocaron=466,e.ocircle=9438,e.ocircumflex=244,e.ocircumflexacute=7889,e.ocircumflexdotbelow=7897,e.ocircumflexgrave=7891,e.ocircumflexhookabove=7893,e.ocircumflextilde=7895,e.ocyrillic=1086,e.odblacute=337,e.odblgrave=525,e.odeva=2323,e.odieresis=246,e.odieresiscyrillic=1255,e.odotbelow=7885,e.oe=339,e.oekorean=12634,e.ogonek=731,e.ogonekcmb=808,e.ograve=242,e.ogujarati=2707,e.oharmenian=1413,e.ohiragana=12362,e.ohookabove=7887,e.ohorn=417,e.ohornacute=7899,e.ohorndotbelow=7907,e.ohorngrave=7901,e.ohornhookabove=7903,e.ohorntilde=7905,e.ohungarumlaut=337,e.oi=419,e.oinvertedbreve=527,e.okatakana=12458,e.okatakanahalfwidth=65397,e.okorean=12631,e.olehebrew=1451,e.omacron=333,e.omacronacute=7763,e.omacrongrave=7761,e.omdeva=2384,e.omega=969,e.omega1=982,e.omegacyrillic=1121,e.omegalatinclosed=631,e.omegaroundcyrillic=1147,e.omegatitlocyrillic=1149,e.omegatonos=974,e.omgujarati=2768,e.omicron=959,e.omicrontonos=972,e.omonospace=65359,e.one=49,e.onearabic=1633,e.onebengali=2535,e.onecircle=9312,e.onecircleinversesansserif=10122,e.onedeva=2407,e.onedotenleader=8228,e.oneeighth=8539,e.onefitted=63196,e.onegujarati=2791,e.onegurmukhi=2663,e.onehackarabic=1633,e.onehalf=189,e.onehangzhou=12321,e.oneideographicparen=12832,e.oneinferior=8321,e.onemonospace=65297,e.onenumeratorbengali=2548,e.oneoldstyle=63281,e.oneparen=9332,e.oneperiod=9352,e.onepersian=1777,e.onequarter=188,e.oneroman=8560,e.onesuperior=185,e.onethai=3665,e.onethird=8531,e.oogonek=491,e.oogonekmacron=493,e.oogurmukhi=2579,e.oomatragurmukhi=2635,e.oopen=596,e.oparen=9386,e.openbullet=9702,e.option=8997,e.ordfeminine=170,e.ordmasculine=186,e.orthogonal=8735,e.oshortdeva=2322,e.oshortvowelsigndeva=2378,e.oslash=248,e.oslashacute=511,e.osmallhiragana=12361,e.osmallkatakana=12457,e.osmallkatakanahalfwidth=65387,e.ostrokeacute=511,e.osuperior=63216,e.otcyrillic=1151,e.otilde=245,e.otildeacute=7757,e.otildedieresis=7759,e.oubopomofo=12577,e.overline=8254,e.overlinecenterline=65098,e.overlinecmb=773,e.overlinedashed=65097,e.overlinedblwavy=65100,e.overlinewavy=65099,e.overscore=175,e.ovowelsignbengali=2507,e.ovowelsigndeva=2379,e.ovowelsigngujarati=2763,e.p=112,e.paampssquare=13184,e.paasentosquare=13099,e.pabengali=2474,e.pacute=7765,e.padeva=2346,e.pagedown=8671,e.pageup=8670,e.pagujarati=2730,e.pagurmukhi=2602,e.pahiragana=12401,e.paiyannoithai=3631,e.pakatakana=12497,e.palatalizationcyrilliccmb=1156,e.palochkacyrillic=1216,e.pansioskorean=12671,e.paragraph=182,e.parallel=8741,e.parenleft=40,e.parenleftaltonearabic=64830,e.parenleftbt=63725,e.parenleftex=63724,e.parenleftinferior=8333,e.parenleftmonospace=65288,e.parenleftsmall=65113,e.parenleftsuperior=8317,e.parenlefttp=63723,e.parenleftvertical=65077,e.parenright=41,e.parenrightaltonearabic=64831,e.parenrightbt=63736,e.parenrightex=63735,e.parenrightinferior=8334,e.parenrightmonospace=65289,e.parenrightsmall=65114,e.parenrightsuperior=8318,e.parenrighttp=63734,e.parenrightvertical=65078,e.partialdiff=8706,e.paseqhebrew=1472,e.pashtahebrew=1433,e.pasquare=13225,e.patah=1463,e.patah11=1463,e.patah1d=1463,e.patah2a=1463,e.patahhebrew=1463,e.patahnarrowhebrew=1463,e.patahquarterhebrew=1463,e.patahwidehebrew=1463,e.pazerhebrew=1441,e.pbopomofo=12550,e.pcircle=9439,e.pdotaccent=7767,e.pe=1508,e.pecyrillic=1087,e.pedagesh=64324,e.pedageshhebrew=64324,e.peezisquare=13115,e.pefinaldageshhebrew=64323,e.peharabic=1662,e.peharmenian=1402,e.pehebrew=1508,e.pehfinalarabic=64343,e.pehinitialarabic=64344,e.pehiragana=12410,e.pehmedialarabic=64345,e.pekatakana=12506,e.pemiddlehookcyrillic=1191,e.perafehebrew=64334,e.percent=37,e.percentarabic=1642,e.percentmonospace=65285,e.percentsmall=65130,e.period=46,e.periodarmenian=1417,e.periodcentered=183,e.periodhalfwidth=65377,e.periodinferior=63207,e.periodmonospace=65294,e.periodsmall=65106,e.periodsuperior=63208,e.perispomenigreekcmb=834,e.perpendicular=8869,e.perthousand=8240,e.peseta=8359,e.pfsquare=13194,e.phabengali=2475,e.phadeva=2347,e.phagujarati=2731,e.phagurmukhi=2603,e.phi=966,e.phi1=981,e.phieuphacirclekorean=12922,e.phieuphaparenkorean=12826,e.phieuphcirclekorean=12908,e.phieuphkorean=12621,e.phieuphparenkorean=12812,e.philatin=632,e.phinthuthai=3642,e.phisymbolgreek=981,e.phook=421,e.phophanthai=3614,e.phophungthai=3612,e.phosamphaothai=3616,e.pi=960,e.pieupacirclekorean=12915,e.pieupaparenkorean=12819,e.pieupcieuckorean=12662,e.pieupcirclekorean=12901,e.pieupkiyeokkorean=12658,e.pieupkorean=12610,e.pieupparenkorean=12805,e.pieupsioskiyeokkorean=12660,e.pieupsioskorean=12612,e.pieupsiostikeutkorean=12661,e.pieupthieuthkorean=12663,e.pieuptikeutkorean=12659,e.pihiragana=12404,e.pikatakana=12500,e.pisymbolgreek=982,e.piwrarmenian=1411,e.planckover2pi=8463,e.planckover2pi1=8463,e.plus=43,e.plusbelowcmb=799,e.pluscircle=8853,e.plusminus=177,e.plusmod=726,e.plusmonospace=65291,e.plussmall=65122,e.plussuperior=8314,e.pmonospace=65360,e.pmsquare=13272,e.pohiragana=12413,e.pointingindexdownwhite=9759,e.pointingindexleftwhite=9756,e.pointingindexrightwhite=9758,e.pointingindexupwhite=9757,e.pokatakana=12509,e.poplathai=3611,e.postalmark=12306,e.postalmarkface=12320,e.pparen=9387,e.precedes=8826,e.prescription=8478,e.primemod=697,e.primereversed=8245,e.product=8719,e.projective=8965,e.prolongedkana=12540,e.propellor=8984,e.propersubset=8834,e.propersuperset=8835,e.proportion=8759,e.proportional=8733,e.psi=968,e.psicyrillic=1137,e.psilipneumatacyrilliccmb=1158,e.pssquare=13232,e.puhiragana=12407,e.pukatakana=12503,e.pvsquare=13236,e.pwsquare=13242,e.q=113,e.qadeva=2392,e.qadmahebrew=1448,e.qafarabic=1602,e.qaffinalarabic=65238,e.qafinitialarabic=65239,e.qafmedialarabic=65240,e.qamats=1464,e.qamats10=1464,e.qamats1a=1464,e.qamats1c=1464,e.qamats27=1464,e.qamats29=1464,e.qamats33=1464,e.qamatsde=1464,e.qamatshebrew=1464,e.qamatsnarrowhebrew=1464,e.qamatsqatanhebrew=1464,e.qamatsqatannarrowhebrew=1464,e.qamatsqatanquarterhebrew=1464,e.qamatsqatanwidehebrew=1464,e.qamatsquarterhebrew=1464,e.qamatswidehebrew=1464,e.qarneyparahebrew=1439,e.qbopomofo=12561,e.qcircle=9440,e.qhook=672,e.qmonospace=65361,e.qof=1511,e.qofdagesh=64327,e.qofdageshhebrew=64327,e.qofhebrew=1511,e.qparen=9388,e.quarternote=9833,e.qubuts=1467,e.qubuts18=1467,e.qubuts25=1467,e.qubuts31=1467,e.qubutshebrew=1467,e.qubutsnarrowhebrew=1467,e.qubutsquarterhebrew=1467,e.qubutswidehebrew=1467,e.question=63,e.questionarabic=1567,e.questionarmenian=1374,e.questiondown=191,e.questiondownsmall=63423,e.questiongreek=894,e.questionmonospace=65311,e.questionsmall=63295,e.quotedbl=34,e.quotedblbase=8222,e.quotedblleft=8220,e.quotedblmonospace=65282,e.quotedblprime=12318,e.quotedblprimereversed=12317,e.quotedblright=8221,e.quoteleft=8216,e.quoteleftreversed=8219,e.quotereversed=8219,e.quoteright=8217,e.quoterightn=329,e.quotesinglbase=8218,e.quotesingle=39,e.quotesinglemonospace=65287,e.r=114,e.raarmenian=1404,e.rabengali=2480,e.racute=341,e.radeva=2352,e.radical=8730,e.radicalex=63717,e.radoverssquare=13230,e.radoverssquaredsquare=13231,e.radsquare=13229,e.rafe=1471,e.rafehebrew=1471,e.ragujarati=2736,e.ragurmukhi=2608,e.rahiragana=12425,e.rakatakana=12521,e.rakatakanahalfwidth=65431,e.ralowerdiagonalbengali=2545,e.ramiddlediagonalbengali=2544,e.ramshorn=612,e.ratio=8758,e.rbopomofo=12566,e.rcaron=345,e.rcedilla=343,e.rcircle=9441,e.rcommaaccent=343,e.rdblgrave=529,e.rdotaccent=7769,e.rdotbelow=7771,e.rdotbelowmacron=7773,e.referencemark=8251,e.reflexsubset=8838,e.reflexsuperset=8839,e.registered=174,e.registersans=63720,e.registerserif=63194,e.reharabic=1585,e.reharmenian=1408,e.rehfinalarabic=65198,e.rehiragana=12428,e.rekatakana=12524;e.rekatakanahalfwidth=65434,e.resh=1512,e.reshdageshhebrew=64328,e.reshhebrew=1512,e.reversedtilde=8765,e.reviahebrew=1431,e.reviamugrashhebrew=1431,e.revlogicalnot=8976,e.rfishhook=638,e.rfishhookreversed=639,e.rhabengali=2525,e.rhadeva=2397,e.rho=961,e.rhook=637,e.rhookturned=635,e.rhookturnedsuperior=693,e.rhosymbolgreek=1009,e.rhotichookmod=734,e.rieulacirclekorean=12913,e.rieulaparenkorean=12817,e.rieulcirclekorean=12899,e.rieulhieuhkorean=12608,e.rieulkiyeokkorean=12602,e.rieulkiyeoksioskorean=12649,e.rieulkorean=12601,e.rieulmieumkorean=12603,e.rieulpansioskorean=12652,e.rieulparenkorean=12803,e.rieulphieuphkorean=12607,e.rieulpieupkorean=12604,e.rieulpieupsioskorean=12651,e.rieulsioskorean=12605,e.rieulthieuthkorean=12606,e.rieultikeutkorean=12650,e.rieulyeorinhieuhkorean=12653,e.rightangle=8735,e.righttackbelowcmb=793,e.righttriangle=8895,e.rihiragana=12426,e.rikatakana=12522,e.rikatakanahalfwidth=65432,e.ring=730,e.ringbelowcmb=805,e.ringcmb=778,e.ringhalfleft=703,e.ringhalfleftarmenian=1369,e.ringhalfleftbelowcmb=796,e.ringhalfleftcentered=723,e.ringhalfright=702,e.ringhalfrightbelowcmb=825,e.ringhalfrightcentered=722,e.rinvertedbreve=531,e.rittorusquare=13137,e.rlinebelow=7775,e.rlongleg=636,e.rlonglegturned=634,e.rmonospace=65362,e.rohiragana=12429,e.rokatakana=12525,e.rokatakanahalfwidth=65435,e.roruathai=3619,e.rparen=9389,e.rrabengali=2524,e.rradeva=2353,e.rragurmukhi=2652,e.rreharabic=1681,e.rrehfinalarabic=64397,e.rrvocalicbengali=2528,e.rrvocalicdeva=2400,e.rrvocalicgujarati=2784,e.rrvocalicvowelsignbengali=2500,e.rrvocalicvowelsigndeva=2372,e.rrvocalicvowelsigngujarati=2756,e.rsuperior=63217,e.rtblock=9616,e.rturned=633,e.rturnedsuperior=692,e.ruhiragana=12427,e.rukatakana=12523,e.rukatakanahalfwidth=65433,e.rupeemarkbengali=2546,e.rupeesignbengali=2547,e.rupiah=63197,e.ruthai=3620,e.rvocalicbengali=2443,e.rvocalicdeva=2315,e.rvocalicgujarati=2699,e.rvocalicvowelsignbengali=2499,e.rvocalicvowelsigndeva=2371,e.rvocalicvowelsigngujarati=2755,e.s=115,e.sabengali=2488,e.sacute=347,e.sacutedotaccent=7781,e.sadarabic=1589,e.sadeva=2360,e.sadfinalarabic=65210,e.sadinitialarabic=65211,e.sadmedialarabic=65212,e.sagujarati=2744,e.sagurmukhi=2616,e.sahiragana=12373,e.sakatakana=12469,e.sakatakanahalfwidth=65403,e.sallallahoualayhewasallamarabic=65018,e.samekh=1505,e.samekhdagesh=64321,e.samekhdageshhebrew=64321,e.samekhhebrew=1505,e.saraaathai=3634,e.saraaethai=3649,e.saraaimaimalaithai=3652,e.saraaimaimuanthai=3651,e.saraamthai=3635,e.saraathai=3632,e.saraethai=3648,e.saraiileftthai=63622,e.saraiithai=3637,e.saraileftthai=63621,e.saraithai=3636,e.saraothai=3650,e.saraueeleftthai=63624,e.saraueethai=3639,e.saraueleftthai=63623,e.sarauethai=3638,e.sarauthai=3640,e.sarauuthai=3641,e.sbopomofo=12569,e.scaron=353,e.scarondotaccent=7783,e.scedilla=351,e.schwa=601,e.schwacyrillic=1241,e.schwadieresiscyrillic=1243,e.schwahook=602,e.scircle=9442,e.scircumflex=349,e.scommaaccent=537,e.sdotaccent=7777,e.sdotbelow=7779,e.sdotbelowdotaccent=7785,e.seagullbelowcmb=828,e.second=8243,e.secondtonechinese=714,e.section=167,e.seenarabic=1587,e.seenfinalarabic=65202,e.seeninitialarabic=65203,e.seenmedialarabic=65204,e.segol=1462,e.segol13=1462,e.segol1f=1462,e.segol2c=1462,e.segolhebrew=1462,e.segolnarrowhebrew=1462,e.segolquarterhebrew=1462,e.segoltahebrew=1426,e.segolwidehebrew=1462,e.seharmenian=1405,e.sehiragana=12379,e.sekatakana=12475,e.sekatakanahalfwidth=65406,e.semicolon=59,e.semicolonarabic=1563,e.semicolonmonospace=65307,e.semicolonsmall=65108,e.semivoicedmarkkana=12444,e.semivoicedmarkkanahalfwidth=65439,e.sentisquare=13090,e.sentosquare=13091,e.seven=55,e.sevenarabic=1639,e.sevenbengali=2541,e.sevencircle=9318,e.sevencircleinversesansserif=10128,e.sevendeva=2413,e.seveneighths=8542,e.sevengujarati=2797,e.sevengurmukhi=2669,e.sevenhackarabic=1639,e.sevenhangzhou=12327,e.sevenideographicparen=12838,e.seveninferior=8327,e.sevenmonospace=65303,e.sevenoldstyle=63287,e.sevenparen=9338,e.sevenperiod=9358,e.sevenpersian=1783,e.sevenroman=8566,e.sevensuperior=8311,e.seventeencircle=9328,e.seventeenparen=9348,e.seventeenperiod=9368,e.seventhai=3671,e.sfthyphen=173,e.shaarmenian=1399,e.shabengali=2486,e.shacyrillic=1096,e.shaddaarabic=1617,e.shaddadammaarabic=64609,e.shaddadammatanarabic=64606,e.shaddafathaarabic=64608,e.shaddakasraarabic=64610,e.shaddakasratanarabic=64607,e.shade=9618,e.shadedark=9619,e.shadelight=9617,e.shademedium=9618,e.shadeva=2358,e.shagujarati=2742,e.shagurmukhi=2614,e.shalshelethebrew=1427,e.shbopomofo=12565,e.shchacyrillic=1097,e.sheenarabic=1588,e.sheenfinalarabic=65206,e.sheeninitialarabic=65207,e.sheenmedialarabic=65208,e.sheicoptic=995,e.sheqel=8362,e.sheqelhebrew=8362,e.sheva=1456,e.sheva115=1456,e.sheva15=1456,e.sheva22=1456,e.sheva2e=1456,e.shevahebrew=1456,e.shevanarrowhebrew=1456,e.shevaquarterhebrew=1456,e.shevawidehebrew=1456,e.shhacyrillic=1211,e.shimacoptic=1005,e.shin=1513,e.shindagesh=64329,e.shindageshhebrew=64329,e.shindageshshindot=64300,e.shindageshshindothebrew=64300,e.shindageshsindot=64301,e.shindageshsindothebrew=64301,e.shindothebrew=1473,e.shinhebrew=1513,e.shinshindot=64298,e.shinshindothebrew=64298,e.shinsindot=64299,e.shinsindothebrew=64299,e.shook=642,e.sigma=963,e.sigma1=962,e.sigmafinal=962,e.sigmalunatesymbolgreek=1010,e.sihiragana=12375,e.sikatakana=12471,e.sikatakanahalfwidth=65404,e.siluqhebrew=1469,e.siluqlefthebrew=1469,e.similar=8764,e.sindothebrew=1474,e.siosacirclekorean=12916,e.siosaparenkorean=12820,e.sioscieuckorean=12670,e.sioscirclekorean=12902,e.sioskiyeokkorean=12666,e.sioskorean=12613,e.siosnieunkorean=12667,e.siosparenkorean=12806,e.siospieupkorean=12669,e.siostikeutkorean=12668,e.six=54,e.sixarabic=1638,e.sixbengali=2540,e.sixcircle=9317,e.sixcircleinversesansserif=10127,e.sixdeva=2412,e.sixgujarati=2796,e.sixgurmukhi=2668,e.sixhackarabic=1638,e.sixhangzhou=12326,e.sixideographicparen=12837,e.sixinferior=8326,e.sixmonospace=65302,e.sixoldstyle=63286,e.sixparen=9337,e.sixperiod=9357,e.sixpersian=1782,e.sixroman=8565,e.sixsuperior=8310,e.sixteencircle=9327,e.sixteencurrencydenominatorbengali=2553,e.sixteenparen=9347,e.sixteenperiod=9367,e.sixthai=3670,e.slash=47,e.slashmonospace=65295,e.slong=383,e.slongdotaccent=7835,e.smileface=9786,e.smonospace=65363,e.sofpasuqhebrew=1475,e.softhyphen=173,e.softsigncyrillic=1100,e.sohiragana=12381,e.sokatakana=12477,e.sokatakanahalfwidth=65407,e.soliduslongoverlaycmb=824,e.solidusshortoverlaycmb=823,e.sorusithai=3625,e.sosalathai=3624,e.sosothai=3595,e.sosuathai=3626,e.space=32,e.spacehackarabic=32,e.spade=9824,e.spadesuitblack=9824,e.spadesuitwhite=9828,e.sparen=9390,e.squarebelowcmb=827,e.squarecc=13252,e.squarecm=13213,e.squarediagonalcrosshatchfill=9641,e.squarehorizontalfill=9636,e.squarekg=13199,e.squarekm=13214,e.squarekmcapital=13262,e.squareln=13265,e.squarelog=13266,e.squaremg=13198,e.squaremil=13269,e.squaremm=13212,e.squaremsquared=13217,e.squareorthogonalcrosshatchfill=9638,e.squareupperlefttolowerrightfill=9639,e.squareupperrighttolowerleftfill=9640,e.squareverticalfill=9637,e.squarewhitewithsmallblack=9635,e.srsquare=13275,e.ssabengali=2487,e.ssadeva=2359,e.ssagujarati=2743,e.ssangcieuckorean=12617,e.ssanghieuhkorean=12677,e.ssangieungkorean=12672,e.ssangkiyeokkorean=12594,e.ssangnieunkorean=12645,e.ssangpieupkorean=12611,e.ssangsioskorean=12614,e.ssangtikeutkorean=12600,e.ssuperior=63218,e.sterling=163,e.sterlingmonospace=65505,e.strokelongoverlaycmb=822,e.strokeshortoverlaycmb=821,e.subset=8834,e.subsetnotequal=8842,e.subsetorequal=8838,e.succeeds=8827,e.suchthat=8715,e.suhiragana=12377,e.sukatakana=12473,e.sukatakanahalfwidth=65405,e.sukunarabic=1618,e.summation=8721,e.sun=9788,e.superset=8835,e.supersetnotequal=8843,e.supersetorequal=8839,e.svsquare=13276,e.syouwaerasquare=13180,e.t=116,e.tabengali=2468,e.tackdown=8868,e.tackleft=8867,e.tadeva=2340,e.tagujarati=2724,e.tagurmukhi=2596,e.taharabic=1591,e.tahfinalarabic=65218,e.tahinitialarabic=65219,e.tahiragana=12383,e.tahmedialarabic=65220,e.taisyouerasquare=13181,e.takatakana=12479,e.takatakanahalfwidth=65408,e.tatweelarabic=1600,e.tau=964,e.tav=1514,e.tavdages=64330,e.tavdagesh=64330,e.tavdageshhebrew=64330,e.tavhebrew=1514,e.tbar=359,e.tbopomofo=12554,e.tcaron=357,e.tccurl=680,e.tcedilla=355,e.tcheharabic=1670,e.tchehfinalarabic=64379,e.tchehinitialarabic=64380,e.tchehmedialarabic=64381,e.tcircle=9443,e.tcircumflexbelow=7793,e.tcommaaccent=355,e.tdieresis=7831,e.tdotaccent=7787,e.tdotbelow=7789,e.tecyrillic=1090,e.tedescendercyrillic=1197,e.teharabic=1578,e.tehfinalarabic=65174,e.tehhahinitialarabic=64674,e.tehhahisolatedarabic=64524,e.tehinitialarabic=65175,e.tehiragana=12390,e.tehjeeminitialarabic=64673,e.tehjeemisolatedarabic=64523,e.tehmarbutaarabic=1577,e.tehmarbutafinalarabic=65172,e.tehmedialarabic=65176,e.tehmeeminitialarabic=64676,e.tehmeemisolatedarabic=64526,e.tehnoonfinalarabic=64627,e.tekatakana=12486,e.tekatakanahalfwidth=65411,e.telephone=8481,e.telephoneblack=9742,e.telishagedolahebrew=1440,e.telishaqetanahebrew=1449,e.tencircle=9321,e.tenideographicparen=12841,e.tenparen=9341,e.tenperiod=9361,e.tenroman=8569,e.tesh=679,e.tet=1496,e.tetdagesh=64312,e.tetdageshhebrew=64312,e.tethebrew=1496,e.tetsecyrillic=1205,e.tevirhebrew=1435,e.tevirlefthebrew=1435,e.thabengali=2469,e.thadeva=2341,e.thagujarati=2725,e.thagurmukhi=2597,e.thalarabic=1584,e.thalfinalarabic=65196,e.thanthakhatlowleftthai=63640,e.thanthakhatlowrightthai=63639,e.thanthakhatthai=3660,e.thanthakhatupperleftthai=63638,e.theharabic=1579,e.thehfinalarabic=65178,e.thehinitialarabic=65179,e.thehmedialarabic=65180,e.thereexists=8707,e.therefore=8756,e.theta=952,e.theta1=977,e.thetasymbolgreek=977,e.thieuthacirclekorean=12921,e.thieuthaparenkorean=12825,e.thieuthcirclekorean=12907,e.thieuthkorean=12620,e.thieuthparenkorean=12811,e.thirteencircle=9324,e.thirteenparen=9344,e.thirteenperiod=9364,e.thonangmonthothai=3601,e.thook=429,e.thophuthaothai=3602,e.thorn=254,e.thothahanthai=3607,e.thothanthai=3600,e.thothongthai=3608,e.thothungthai=3606,e.thousandcyrillic=1154,e.thousandsseparatorarabic=1644,e.thousandsseparatorpersian=1644,e.three=51,e.threearabic=1635,e.threebengali=2537,e.threecircle=9314,e.threecircleinversesansserif=10124,e.threedeva=2409,e.threeeighths=8540,e.threegujarati=2793,e.threegurmukhi=2665,e.threehackarabic=1635,e.threehangzhou=12323,e.threeideographicparen=12834,e.threeinferior=8323,e.threemonospace=65299,e.threenumeratorbengali=2550,e.threeoldstyle=63283,e.threeparen=9334,e.threeperiod=9354,e.threepersian=1779,e.threequarters=190,e.threequartersemdash=63198,e.threeroman=8562,e.threesuperior=179,e.threethai=3667,e.thzsquare=13204,e.tihiragana=12385,e.tikatakana=12481,e.tikatakanahalfwidth=65409,e.tikeutacirclekorean=12912,e.tikeutaparenkorean=12816,e.tikeutcirclekorean=12898,e.tikeutkorean=12599,e.tikeutparenkorean=12802,e.tilde=732,e.tildebelowcmb=816,e.tildecmb=771,e.tildecomb=771,e.tildedoublecmb=864,e.tildeoperator=8764,e.tildeoverlaycmb=820,e.tildeverticalcmb=830,e.timescircle=8855,e.tipehahebrew=1430,e.tipehalefthebrew=1430,e.tippigurmukhi=2672,e.titlocyrilliccmb=1155,e.tiwnarmenian=1407,e.tlinebelow=7791,e.tmonospace=65364,e.toarmenian=1385,e.tohiragana=12392,e.tokatakana=12488,e.tokatakanahalfwidth=65412,e.tonebarextrahighmod=741,e.tonebarextralowmod=745,e.tonebarhighmod=742,e.tonebarlowmod=744,e.tonebarmidmod=743,e.tonefive=445,e.tonesix=389,e.tonetwo=424,e.tonos=900,e.tonsquare=13095,e.topatakthai=3599,e.tortoiseshellbracketleft=12308,e.tortoiseshellbracketleftsmall=65117,e.tortoiseshellbracketleftvertical=65081,e.tortoiseshellbracketright=12309,e.tortoiseshellbracketrightsmall=65118,e.tortoiseshellbracketrightvertical=65082,e.totaothai=3605,e.tpalatalhook=427,e.tparen=9391,e.trademark=8482,e.trademarksans=63722,e.trademarkserif=63195,e.tretroflexhook=648,e.triagdn=9660,e.triaglf=9668,e.triagrt=9658,e.triagup=9650,e.ts=678,e.tsadi=1510,e.tsadidagesh=64326,e.tsadidageshhebrew=64326,e.tsadihebrew=1510,e.tsecyrillic=1094,e.tsere=1461,e.tsere12=1461,e.tsere1e=1461,e.tsere2b=1461,e.tserehebrew=1461,e.tserenarrowhebrew=1461,e.tserequarterhebrew=1461,e.tserewidehebrew=1461,e.tshecyrillic=1115,e.tsuperior=63219,e.ttabengali=2463,e.ttadeva=2335,e.ttagujarati=2719,e.ttagurmukhi=2591,e.tteharabic=1657,e.ttehfinalarabic=64359,e.ttehinitialarabic=64360,e.ttehmedialarabic=64361,e.tthabengali=2464,e.tthadeva=2336,e.tthagujarati=2720,e.tthagurmukhi=2592,e.tturned=647,e.tuhiragana=12388,e.tukatakana=12484,e.tukatakanahalfwidth=65410,e.tusmallhiragana=12387,e.tusmallkatakana=12483,e.tusmallkatakanahalfwidth=65391,e.twelvecircle=9323,e.twelveparen=9343,e.twelveperiod=9363,e.twelveroman=8571,e.twentycircle=9331,e.twentyhangzhou=21316,e.twentyparen=9351,e.twentyperiod=9371,e.two=50,e.twoarabic=1634,e.twobengali=2536,e.twocircle=9313,e.twocircleinversesansserif=10123,e.twodeva=2408,e.twodotenleader=8229,e.twodotleader=8229,e.twodotleadervertical=65072,e.twogujarati=2792,e.twogurmukhi=2664,e.twohackarabic=1634,e.twohangzhou=12322,e.twoideographicparen=12833,e.twoinferior=8322,e.twomonospace=65298,e.twonumeratorbengali=2549,e.twooldstyle=63282,e.twoparen=9333,e.twoperiod=9353,e.twopersian=1778,e.tworoman=8561,e.twostroke=443,e.twosuperior=178,e.twothai=3666,e.twothirds=8532,e.u=117,e.uacute=250,e.ubar=649,e.ubengali=2441,e.ubopomofo=12584,e.ubreve=365,e.ucaron=468,e.ucircle=9444,e.ucircumflex=251,e.ucircumflexbelow=7799,e.ucyrillic=1091,e.udattadeva=2385,e.udblacute=369,e.udblgrave=533,e.udeva=2313,e.udieresis=252,e.udieresisacute=472,e.udieresisbelow=7795,e.udieresiscaron=474,e.udieresiscyrillic=1265,e.udieresisgrave=476,e.udieresismacron=470,e.udotbelow=7909,e.ugrave=249,e.ugujarati=2697,e.ugurmukhi=2569,e.uhiragana=12358,e.uhookabove=7911,e.uhorn=432,e.uhornacute=7913,e.uhorndotbelow=7921,e.uhorngrave=7915,e.uhornhookabove=7917,e.uhorntilde=7919,e.uhungarumlaut=369,e.uhungarumlautcyrillic=1267,e.uinvertedbreve=535,e.ukatakana=12454,e.ukatakanahalfwidth=65395,e.ukcyrillic=1145,e.ukorean=12636,e.umacron=363,e.umacroncyrillic=1263,e.umacrondieresis=7803,e.umatragurmukhi=2625,e.umonospace=65365,e.underscore=95,e.underscoredbl=8215,e.underscoremonospace=65343,e.underscorevertical=65075,e.underscorewavy=65103,e.union=8746,e.universal=8704,e.uogonek=371,e.uparen=9392,e.upblock=9600,e.upperdothebrew=1476,e.upsilon=965,e.upsilondieresis=971,e.upsilondieresistonos=944,e.upsilonlatin=650,e.upsilontonos=973,e.uptackbelowcmb=797,e.uptackmod=724,e.uragurmukhi=2675,e.uring=367,e.ushortcyrillic=1118,e.usmallhiragana=12357,e.usmallkatakana=12453,e.usmallkatakanahalfwidth=65385,e.ustraightcyrillic=1199,e.ustraightstrokecyrillic=1201,e.utilde=361,e.utildeacute=7801,e.utildebelow=7797,e.uubengali=2442,e.uudeva=2314,e.uugujarati=2698,e.uugurmukhi=2570,e.uumatragurmukhi=2626,e.uuvowelsignbengali=2498,e.uuvowelsigndeva=2370,e.uuvowelsigngujarati=2754,e.uvowelsignbengali=2497,e.uvowelsigndeva=2369,e.uvowelsigngujarati=2753,e.v=118,e.vadeva=2357,e.vagujarati=2741,e.vagurmukhi=2613,e.vakatakana=12535,e.vav=1493,e.vavdagesh=64309,e.vavdagesh65=64309,e.vavdageshhebrew=64309,e.vavhebrew=1493,e.vavholam=64331,e.vavholamhebrew=64331,e.vavvavhebrew=1520,e.vavyodhebrew=1521,e.vcircle=9445,e.vdotbelow=7807,e.vecyrillic=1074,e.veharabic=1700,e.vehfinalarabic=64363,e.vehinitialarabic=64364,e.vehmedialarabic=64365,e.vekatakana=12537,e.venus=9792,e.verticalbar=124,e.verticallineabovecmb=781,e.verticallinebelowcmb=809,e.verticallinelowmod=716,e.verticallinemod=712,e.vewarmenian=1406,e.vhook=651,e.vikatakana=12536,e.viramabengali=2509,e.viramadeva=2381,e.viramagujarati=2765,e.visargabengali=2435,e.visargadeva=2307,e.visargagujarati=2691,e.vmonospace=65366,e.voarmenian=1400,e.voicediterationhiragana=12446,e.voicediterationkatakana=12542,e.voicedmarkkana=12443,e.voicedmarkkanahalfwidth=65438,e.vokatakana=12538,e.vparen=9393,e.vtilde=7805,e.vturned=652,e.vuhiragana=12436,e.vukatakana=12532,e.w=119,e.wacute=7811,e.waekorean=12633,e.wahiragana=12431,e.wakatakana=12527,e.wakatakanahalfwidth=65436,e.wakorean=12632,e.wasmallhiragana=12430,e.wasmallkatakana=12526,e.wattosquare=13143,e.wavedash=12316,e.wavyunderscorevertical=65076,e.wawarabic=1608,e.wawfinalarabic=65262,e.wawhamzaabovearabic=1572,e.wawhamzaabovefinalarabic=65158,e.wbsquare=13277,e.wcircle=9446,e.wcircumflex=373,e.wdieresis=7813,e.wdotaccent=7815,e.wdotbelow=7817,e.wehiragana=12433,e.weierstrass=8472,e.wekatakana=12529,e.wekorean=12638,e.weokorean=12637,e.wgrave=7809,e.whitebullet=9702,e.whitecircle=9675,e.whitecircleinverse=9689,e.whitecornerbracketleft=12302,e.whitecornerbracketleftvertical=65091,e.whitecornerbracketright=12303,e.whitecornerbracketrightvertical=65092,e.whitediamond=9671,e.whitediamondcontainingblacksmalldiamond=9672,e.whitedownpointingsmalltriangle=9663;e.whitedownpointingtriangle=9661,e.whiteleftpointingsmalltriangle=9667,e.whiteleftpointingtriangle=9665,e.whitelenticularbracketleft=12310,e.whitelenticularbracketright=12311,e.whiterightpointingsmalltriangle=9657,e.whiterightpointingtriangle=9655,e.whitesmallsquare=9643,e.whitesmilingface=9786,e.whitesquare=9633,e.whitestar=9734,e.whitetelephone=9743,e.whitetortoiseshellbracketleft=12312,e.whitetortoiseshellbracketright=12313,e.whiteuppointingsmalltriangle=9653,e.whiteuppointingtriangle=9651,e.wihiragana=12432,e.wikatakana=12528,e.wikorean=12639,e.wmonospace=65367,e.wohiragana=12434,e.wokatakana=12530,e.wokatakanahalfwidth=65382,e.won=8361,e.wonmonospace=65510,e.wowaenthai=3623,e.wparen=9394,e.wring=7832,e.wsuperior=695,e.wturned=653,e.wynn=447,e.x=120,e.xabovecmb=829,e.xbopomofo=12562,e.xcircle=9447,e.xdieresis=7821,e.xdotaccent=7819,e.xeharmenian=1389,e.xi=958,e.xmonospace=65368,e.xparen=9395,e.xsuperior=739,e.y=121,e.yaadosquare=13134,e.yabengali=2479,e.yacute=253,e.yadeva=2351,e.yaekorean=12626,e.yagujarati=2735,e.yagurmukhi=2607,e.yahiragana=12420,e.yakatakana=12516,e.yakatakanahalfwidth=65428,e.yakorean=12625,e.yamakkanthai=3662,e.yasmallhiragana=12419,e.yasmallkatakana=12515,e.yasmallkatakanahalfwidth=65388,e.yatcyrillic=1123,e.ycircle=9448,e.ycircumflex=375,e.ydieresis=255,e.ydotaccent=7823,e.ydotbelow=7925,e.yeharabic=1610,e.yehbarreearabic=1746,e.yehbarreefinalarabic=64431,e.yehfinalarabic=65266,e.yehhamzaabovearabic=1574,e.yehhamzaabovefinalarabic=65162,e.yehhamzaaboveinitialarabic=65163,e.yehhamzaabovemedialarabic=65164,e.yehinitialarabic=65267,e.yehmedialarabic=65268,e.yehmeeminitialarabic=64733,e.yehmeemisolatedarabic=64600,e.yehnoonfinalarabic=64660,e.yehthreedotsbelowarabic=1745,e.yekorean=12630,e.yen=165,e.yenmonospace=65509,e.yeokorean=12629,e.yeorinhieuhkorean=12678,e.yerahbenyomohebrew=1450,e.yerahbenyomolefthebrew=1450,e.yericyrillic=1099,e.yerudieresiscyrillic=1273,e.yesieungkorean=12673,e.yesieungpansioskorean=12675,e.yesieungsioskorean=12674,e.yetivhebrew=1434,e.ygrave=7923,e.yhook=436,e.yhookabove=7927,e.yiarmenian=1397,e.yicyrillic=1111,e.yikorean=12642,e.yinyang=9775,e.yiwnarmenian=1410,e.ymonospace=65369,e.yod=1497,e.yoddagesh=64313,e.yoddageshhebrew=64313,e.yodhebrew=1497,e.yodyodhebrew=1522,e.yodyodpatahhebrew=64287,e.yohiragana=12424,e.yoikorean=12681,e.yokatakana=12520,e.yokatakanahalfwidth=65430,e.yokorean=12635,e.yosmallhiragana=12423,e.yosmallkatakana=12519,e.yosmallkatakanahalfwidth=65390,e.yotgreek=1011,e.yoyaekorean=12680,e.yoyakorean=12679,e.yoyakthai=3618,e.yoyingthai=3597,e.yparen=9396,e.ypogegrammeni=890,e.ypogegrammenigreekcmb=837,e.yr=422,e.yring=7833,e.ysuperior=696,e.ytilde=7929,e.yturned=654,e.yuhiragana=12422,e.yuikorean=12684,e.yukatakana=12518,e.yukatakanahalfwidth=65429,e.yukorean=12640,e.yusbigcyrillic=1131,e.yusbigiotifiedcyrillic=1133,e.yuslittlecyrillic=1127,e.yuslittleiotifiedcyrillic=1129,e.yusmallhiragana=12421,e.yusmallkatakana=12517,e.yusmallkatakanahalfwidth=65389,e.yuyekorean=12683,e.yuyeokorean=12682,e.yyabengali=2527,e.yyadeva=2399,e.z=122,e.zaarmenian=1382,e.zacute=378,e.zadeva=2395,e.zagurmukhi=2651,e.zaharabic=1592,e.zahfinalarabic=65222,e.zahinitialarabic=65223,e.zahiragana=12374,e.zahmedialarabic=65224,e.zainarabic=1586,e.zainfinalarabic=65200,e.zakatakana=12470,e.zaqefgadolhebrew=1429,e.zaqefqatanhebrew=1428,e.zarqahebrew=1432,e.zayin=1494,e.zayindagesh=64310,e.zayindageshhebrew=64310,e.zayinhebrew=1494,e.zbopomofo=12567,e.zcaron=382,e.zcircle=9449,e.zcircumflex=7825,e.zcurl=657,e.zdot=380,e.zdotaccent=380,e.zdotbelow=7827,e.zecyrillic=1079,e.zedescendercyrillic=1177,e.zedieresiscyrillic=1247,e.zehiragana=12380,e.zekatakana=12476,e.zero=48,e.zeroarabic=1632,e.zerobengali=2534,e.zerodeva=2406,e.zerogujarati=2790,e.zerogurmukhi=2662,e.zerohackarabic=1632,e.zeroinferior=8320,e.zeromonospace=65296,e.zerooldstyle=63280,e.zeropersian=1776,e.zerosuperior=8304,e.zerothai=3664,e.zerowidthjoiner=65279,e.zerowidthnonjoiner=8204,e.zerowidthspace=8203,e.zeta=950,e.zhbopomofo=12563,e.zhearmenian=1386,e.zhebrevecyrillic=1218,e.zhecyrillic=1078,e.zhedescendercyrillic=1175,e.zhedieresiscyrillic=1245,e.zihiragana=12376,e.zikatakana=12472,e.zinorhebrew=1454,e.zlinebelow=7829,e.zmonospace=65370,e.zohiragana=12382,e.zokatakana=12478,e.zparen=9397,e.zretroflexhook=656,e.zstroke=438,e.zuhiragana=12378,e.zukatakana=12474,e[".notdef"]=0,e.angbracketleftbig=9001,e.angbracketleftBig=9001,e.angbracketleftbigg=9001,e.angbracketleftBigg=9001,e.angbracketrightBig=9002,e.angbracketrightbig=9002,e.angbracketrightBigg=9002,e.angbracketrightbigg=9002,e.arrowhookleft=8618,e.arrowhookright=8617,e.arrowlefttophalf=8636,e.arrowleftbothalf=8637,e.arrownortheast=8599,e.arrownorthwest=8598,e.arrowrighttophalf=8640,e.arrowrightbothalf=8641,e.arrowsoutheast=8600,e.arrowsouthwest=8601,e.backslashbig=8726,e.backslashBig=8726,e.backslashBigg=8726,e.backslashbigg=8726,e.bardbl=8214,e.bracehtipdownleft=65079,e.bracehtipdownright=65079,e.bracehtipupleft=65080,e.bracehtipupright=65080,e.braceleftBig=123,e.braceleftbig=123,e.braceleftbigg=123,e.braceleftBigg=123,e.bracerightBig=125,e.bracerightbig=125,e.bracerightbigg=125,e.bracerightBigg=125,e.bracketleftbig=91,e.bracketleftBig=91,e.bracketleftbigg=91,e.bracketleftBigg=91,e.bracketrightBig=93,e.bracketrightbig=93,e.bracketrightbigg=93,e.bracketrightBigg=93,e.ceilingleftbig=8968,e.ceilingleftBig=8968,e.ceilingleftBigg=8968,e.ceilingleftbigg=8968,e.ceilingrightbig=8969,e.ceilingrightBig=8969,e.ceilingrightbigg=8969,e.ceilingrightBigg=8969,e.circledotdisplay=8857,e.circledottext=8857,e.circlemultiplydisplay=8855,e.circlemultiplytext=8855,e.circleplusdisplay=8853,e.circleplustext=8853,e.contintegraldisplay=8750,e.contintegraltext=8750,e.coproductdisplay=8720,e.coproducttext=8720,e.floorleftBig=8970,e.floorleftbig=8970,e.floorleftbigg=8970,e.floorleftBigg=8970,e.floorrightbig=8971,e.floorrightBig=8971,e.floorrightBigg=8971,e.floorrightbigg=8971,e.hatwide=770,e.hatwider=770,e.hatwidest=770,e.intercal=7488,e.integraldisplay=8747,e.integraltext=8747,e.intersectiondisplay=8898,e.intersectiontext=8898,e.logicalanddisplay=8743,e.logicalandtext=8743,e.logicalordisplay=8744,e.logicalortext=8744,e.parenleftBig=40,e.parenleftbig=40,e.parenleftBigg=40,e.parenleftbigg=40,e.parenrightBig=41,e.parenrightbig=41,e.parenrightBigg=41,e.parenrightbigg=41,e.prime=8242,e.productdisplay=8719,e.producttext=8719,e.radicalbig=8730,e.radicalBig=8730,e.radicalBigg=8730,e.radicalbigg=8730,e.radicalbt=8730,e.radicaltp=8730,e.radicalvertex=8730,e.slashbig=47,e.slashBig=47,e.slashBigg=47,e.slashbigg=47,e.summationdisplay=8721,e.summationtext=8721,e.tildewide=732,e.tildewider=732,e.tildewidest=732,e.uniondisplay=8899,e.unionmultidisplay=8846,e.unionmultitext=8846,e.unionsqdisplay=8852,e.unionsqtext=8852,e.uniontext=8899,e.vextenddouble=8741,e.vextendsingle=8739})),i=(0,n.getLookupTableFactory)((function(e){e.space=32,e.a1=9985,e.a2=9986,e.a202=9987,e.a3=9988,e.a4=9742,e.a5=9990,e.a119=9991,e.a118=9992,e.a117=9993,e.a11=9755,e.a12=9758,e.a13=9996,e.a14=9997,e.a15=9998,e.a16=9999,e.a105=1e4,e.a17=10001,e.a18=10002,e.a19=10003,e.a20=10004,e.a21=10005,e.a22=10006,e.a23=10007,e.a24=10008,e.a25=10009,e.a26=10010,e.a27=10011,e.a28=10012,e.a6=10013,e.a7=10014,e.a8=10015,e.a9=10016,e.a10=10017,e.a29=10018,e.a30=10019,e.a31=10020,e.a32=10021,e.a33=10022,e.a34=10023,e.a35=9733,e.a36=10025,e.a37=10026,e.a38=10027,e.a39=10028,e.a40=10029,e.a41=10030,e.a42=10031,e.a43=10032,e.a44=10033,e.a45=10034,e.a46=10035,e.a47=10036,e.a48=10037,e.a49=10038,e.a50=10039,e.a51=10040,e.a52=10041,e.a53=10042,e.a54=10043,e.a55=10044,e.a56=10045,e.a57=10046,e.a58=10047,e.a59=10048,e.a60=10049,e.a61=10050,e.a62=10051,e.a63=10052,e.a64=10053,e.a65=10054,e.a66=10055,e.a67=10056,e.a68=10057,e.a69=10058,e.a70=10059,e.a71=9679,e.a72=10061,e.a73=9632,e.a74=10063,e.a203=10064,e.a75=10065,e.a204=10066,e.a76=9650,e.a77=9660,e.a78=9670,e.a79=10070,e.a81=9687,e.a82=10072,e.a83=10073,e.a84=10074,e.a97=10075,e.a98=10076,e.a99=10077,e.a100=10078,e.a101=10081,e.a102=10082,e.a103=10083,e.a104=10084,e.a106=10085,e.a107=10086,e.a108=10087,e.a112=9827,e.a111=9830,e.a110=9829,e.a109=9824,e.a120=9312,e.a121=9313,e.a122=9314,e.a123=9315,e.a124=9316,e.a125=9317,e.a126=9318,e.a127=9319,e.a128=9320,e.a129=9321,e.a130=10102,e.a131=10103,e.a132=10104,e.a133=10105,e.a134=10106,e.a135=10107,e.a136=10108,e.a137=10109,e.a138=10110,e.a139=10111,e.a140=10112,e.a141=10113,e.a142=10114,e.a143=10115,e.a144=10116,e.a145=10117,e.a146=10118,e.a147=10119,e.a148=10120,e.a149=10121,e.a150=10122,e.a151=10123,e.a152=10124,e.a153=10125,e.a154=10126,e.a155=10127,e.a156=10128,e.a157=10129,e.a158=10130,e.a159=10131,e.a160=10132,e.a161=8594,e.a163=8596,e.a164=8597,e.a196=10136,e.a165=10137,e.a192=10138,e.a166=10139,e.a167=10140,e.a168=10141,e.a169=10142,e.a170=10143,e.a171=10144,e.a172=10145,e.a173=10146,e.a162=10147,e.a174=10148,e.a175=10149,e.a176=10150,e.a177=10151,e.a178=10152,e.a179=10153,e.a193=10154,e.a180=10155,e.a199=10156,e.a181=10157,e.a200=10158,e.a182=10159,e.a201=10161,e.a183=10162,e.a184=10163,e.a197=10164,e.a185=10165,e.a194=10166,e.a198=10167,e.a186=10168,e.a195=10169,e.a187=10170,e.a188=10171,e.a189=10172,e.a190=10173,e.a191=10174,e.a89=10088,e.a90=10089,e.a93=10090,e.a94=10091,e.a91=10092,e.a92=10093,e.a205=10094,e.a85=10095,e.a206=10096,e.a86=10097,e.a87=10098,e.a88=10099,e.a95=10100,e.a96=10101,e[".notdef"]=0}))},(e,t,r)=>{r.r(t),r.d(t,{clearUnicodeCaches:()=>u,getCharUnicodeCategory:()=>h,getUnicodeForGlyph:()=>i,getUnicodeRangeFor:()=>o,mapSpecialUnicodeValues:()=>a});const n=(0,r(149).getLookupTableFactory)((function(e){e[63721]=169,e[63193]=169,e[63720]=174,e[63194]=174,e[63722]=8482,e[63195]=8482,e[63729]=9127,e[63730]=9128,e[63731]=9129,e[63740]=9131,e[63741]=9132,e[63742]=9133,e[63726]=9121,e[63727]=9122,e[63728]=9123,e[63737]=9124,e[63738]=9125,e[63739]=9126,e[63723]=9115,e[63724]=9116,e[63725]=9117,e[63734]=9118,e[63735]=9119,e[63736]=9120}));function a(e){return e>=65520&&e<=65535?0:e>=62976&&e<=63743?n()[e]||e:173===e?45:e}function i(e,t){let r=t[e];if(void 0!==r)return r;if(!e)return-1;if("u"===e[0]){const t=e.length;let n;if(7===t&&"n"===e[1]&&"i"===e[2])n=e.substring(3);else{if(!(t>=5&&t<=7))return-1;n=e.substring(1)}if(n===n.toUpperCase()&&(r=parseInt(n,16),r>=0))return r}return-1}const s=[[0,127],[128,255],[256,383],[384,591],[592,687,7424,7551,7552,7615],[688,767,42752,42783],[768,879,7616,7679],[880,1023],[11392,11519],[1024,1279,1280,1327,11744,11775,42560,42655],[1328,1423],[1424,1535],[42240,42559],[1536,1791,1872,1919],[1984,2047],[2304,2431],[2432,2559],[2560,2687],[2688,2815],[2816,2943],[2944,3071],[3072,3199],[3200,3327],[3328,3455],[3584,3711],[3712,3839],[4256,4351,11520,11567],[6912,7039],[4352,4607],[7680,7935,11360,11391,42784,43007],[7936,8191],[8192,8303,11776,11903],[8304,8351],[8352,8399],[8400,8447],[8448,8527],[8528,8591],[8592,8703,10224,10239,10496,10623,11008,11263],[8704,8959,10752,11007,10176,10223,10624,10751],[8960,9215],[9216,9279],[9280,9311],[9312,9471],[9472,9599],[9600,9631],[9632,9727],[9728,9983],[9984,10175],[12288,12351],[12352,12447],[12448,12543,12784,12799],[12544,12591,12704,12735],[12592,12687],[43072,43135],[12800,13055],[13056,13311],[44032,55215],[55296,57343],[67840,67871],[19968,40959,11904,12031,12032,12255,12272,12287,13312,19903,131072,173791,12688,12703],[57344,63743],[12736,12783,63744,64255,194560,195103],[64256,64335],[64336,65023],[65056,65071],[65040,65055],[65104,65135],[65136,65279],[65280,65519],[65520,65535],[3840,4095],[1792,1871],[1920,1983],[3456,3583],[4096,4255],[4608,4991,4992,5023,11648,11743],[5024,5119],[5120,5759],[5760,5791],[5792,5887],[6016,6143],[6144,6319],[10240,10495],[40960,42127],[5888,5919,5920,5951,5952,5983,5984,6015],[66304,66351],[66352,66383],[66560,66639],[118784,119039,119040,119295,119296,119375],[119808,120831],[1044480,1048573],[65024,65039,917760,917999],[917504,917631],[6400,6479],[6480,6527],[6528,6623],[6656,6687],[11264,11359],[11568,11647],[19904,19967],[43008,43055],[65536,65663,65664,65791,65792,65855],[65856,65935],[66432,66463],[66464,66527],[66640,66687],[66688,66735],[67584,67647],[68096,68191],[119552,119647],[73728,74751,74752,74879],[119648,119679],[7040,7103],[7168,7247],[7248,7295],[43136,43231],[43264,43311],[43312,43359],[43520,43615],[65936,65999],[66e3,66047],[66208,66271,66176,66207,67872,67903],[127024,127135,126976,127023]];function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;if(-1!==t){const r=s[t];for(let n=0,a=r.length;n=r[n]&&e<=r[n+1])return t}for(let t=0,r=s.length;t=r[n]&&e<=r[n+1])return t}return-1}const c=new RegExp("^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$","u"),l=new Map;function h(e){const t=l.get(e);if(t)return t;const r=e.match(c),n={isWhitespace:!(null==r||!r[1]),isZeroWidthDiacritic:!(null==r||!r[2]),isInvisibleFormatMark:!(null==r||!r[3])};return l.set(e,n),n}function u(){l.clear()}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSerifFonts=t.getNonStdFontMap=t.getGlyphMapForStandardFonts=t.getFontNameToFileMap=void 0,t.getStandardFontName=function(e){const t=(0,a.normalizeFontName)(e);return i()[t]},t.getSymbolsFonts=t.getSupplementalGlyphMapForCalibri=t.getSupplementalGlyphMapForArialBlack=t.getStdFontMap=void 0,t.isKnownFontName=function(e){const t=(0,a.normalizeFontName)(e);return!!(i()[t]||o()[t]||c()[t]||l()[t])};var n=r(149),a=r(188);const i=(0,n.getLookupTableFactory)((function(e){e["Times-Roman"]="Times-Roman",e.Helvetica="Helvetica",e.Courier="Courier",e.Symbol="Symbol",e["Times-Bold"]="Times-Bold",e["Helvetica-Bold"]="Helvetica-Bold",e["Courier-Bold"]="Courier-Bold",e.ZapfDingbats="ZapfDingbats",e["Times-Italic"]="Times-Italic",e["Helvetica-Oblique"]="Helvetica-Oblique",e["Courier-Oblique"]="Courier-Oblique",e["Times-BoldItalic"]="Times-BoldItalic",e["Helvetica-BoldOblique"]="Helvetica-BoldOblique",e["Courier-BoldOblique"]="Courier-BoldOblique",e.ArialNarrow="Helvetica",e["ArialNarrow-Bold"]="Helvetica-Bold",e["ArialNarrow-BoldItalic"]="Helvetica-BoldOblique",e["ArialNarrow-Italic"]="Helvetica-Oblique",e.ArialBlack="Helvetica",e["ArialBlack-Bold"]="Helvetica-Bold",e["ArialBlack-BoldItalic"]="Helvetica-BoldOblique",e["ArialBlack-Italic"]="Helvetica-Oblique",e["Arial-Black"]="Helvetica",e["Arial-Black-Bold"]="Helvetica-Bold",e["Arial-Black-BoldItalic"]="Helvetica-BoldOblique",e["Arial-Black-Italic"]="Helvetica-Oblique",e.Arial="Helvetica",e["Arial-Bold"]="Helvetica-Bold",e["Arial-BoldItalic"]="Helvetica-BoldOblique",e["Arial-Italic"]="Helvetica-Oblique",e.ArialMT="Helvetica",e["Arial-BoldItalicMT"]="Helvetica-BoldOblique",e["Arial-BoldMT"]="Helvetica-Bold",e["Arial-ItalicMT"]="Helvetica-Oblique",e["Arial-BoldItalicMT-BoldItalic"]="Helvetica-BoldOblique",e["Arial-BoldMT-Bold"]="Helvetica-Bold",e["Arial-ItalicMT-Italic"]="Helvetica-Oblique",e.ArialUnicodeMS="Helvetica",e["ArialUnicodeMS-Bold"]="Helvetica-Bold",e["ArialUnicodeMS-BoldItalic"]="Helvetica-BoldOblique",e["ArialUnicodeMS-Italic"]="Helvetica-Oblique",e["Courier-BoldItalic"]="Courier-BoldOblique",e["Courier-Italic"]="Courier-Oblique",e.CourierNew="Courier",e["CourierNew-Bold"]="Courier-Bold",e["CourierNew-BoldItalic"]="Courier-BoldOblique",e["CourierNew-Italic"]="Courier-Oblique",e["CourierNewPS-BoldItalicMT"]="Courier-BoldOblique",e["CourierNewPS-BoldMT"]="Courier-Bold",e["CourierNewPS-ItalicMT"]="Courier-Oblique",e.CourierNewPSMT="Courier",e["Helvetica-BoldItalic"]="Helvetica-BoldOblique",e["Helvetica-Italic"]="Helvetica-Oblique",e["Symbol-Bold"]="Symbol",e["Symbol-BoldItalic"]="Symbol",e["Symbol-Italic"]="Symbol",e.TimesNewRoman="Times-Roman",e["TimesNewRoman-Bold"]="Times-Bold",e["TimesNewRoman-BoldItalic"]="Times-BoldItalic",e["TimesNewRoman-Italic"]="Times-Italic",e.TimesNewRomanPS="Times-Roman",e["TimesNewRomanPS-Bold"]="Times-Bold",e["TimesNewRomanPS-BoldItalic"]="Times-BoldItalic",e["TimesNewRomanPS-BoldItalicMT"]="Times-BoldItalic",e["TimesNewRomanPS-BoldMT"]="Times-Bold",e["TimesNewRomanPS-Italic"]="Times-Italic",e["TimesNewRomanPS-ItalicMT"]="Times-Italic",e.TimesNewRomanPSMT="Times-Roman",e["TimesNewRomanPSMT-Bold"]="Times-Bold",e["TimesNewRomanPSMT-BoldItalic"]="Times-BoldItalic",e["TimesNewRomanPSMT-Italic"]="Times-Italic"}));t.getStdFontMap=i;const s=(0,n.getLookupTableFactory)((function(e){e.Courier="FoxitFixed.pfb",e["Courier-Bold"]="FoxitFixedBold.pfb",e["Courier-BoldOblique"]="FoxitFixedBoldItalic.pfb",e["Courier-Oblique"]="FoxitFixedItalic.pfb",e.Helvetica="LiberationSans-Regular.ttf",e["Helvetica-Bold"]="LiberationSans-Bold.ttf",e["Helvetica-BoldOblique"]="LiberationSans-BoldItalic.ttf",e["Helvetica-Oblique"]="LiberationSans-Italic.ttf",e["Times-Roman"]="FoxitSerif.pfb",e["Times-Bold"]="FoxitSerifBold.pfb",e["Times-BoldItalic"]="FoxitSerifBoldItalic.pfb",e["Times-Italic"]="FoxitSerifItalic.pfb",e.Symbol="FoxitSymbol.pfb",e.ZapfDingbats="FoxitDingbats.pfb",e["LiberationSans-Regular"]="LiberationSans-Regular.ttf",e["LiberationSans-Bold"]="LiberationSans-Bold.ttf",e["LiberationSans-Italic"]="LiberationSans-Italic.ttf",e["LiberationSans-BoldItalic"]="LiberationSans-BoldItalic.ttf"}));t.getFontNameToFileMap=s;const o=(0,n.getLookupTableFactory)((function(e){e.Calibri="Helvetica",e["Calibri-Bold"]="Helvetica-Bold",e["Calibri-BoldItalic"]="Helvetica-BoldOblique",e["Calibri-Italic"]="Helvetica-Oblique",e.CenturyGothic="Helvetica",e["CenturyGothic-Bold"]="Helvetica-Bold",e["CenturyGothic-BoldItalic"]="Helvetica-BoldOblique",e["CenturyGothic-Italic"]="Helvetica-Oblique",e.ComicSansMS="Comic Sans MS",e["ComicSansMS-Bold"]="Comic Sans MS-Bold",e["ComicSansMS-BoldItalic"]="Comic Sans MS-BoldItalic",e["ComicSansMS-Italic"]="Comic Sans MS-Italic",e.Impact="Helvetica",e["ItcSymbol-Bold"]="Helvetica-Bold",e["ItcSymbol-BoldItalic"]="Helvetica-BoldOblique",e["ItcSymbol-Book"]="Helvetica",e["ItcSymbol-BookItalic"]="Helvetica-Oblique",e["ItcSymbol-Medium"]="Helvetica",e["ItcSymbol-MediumItalic"]="Helvetica-Oblique",e.LucidaConsole="Courier",e["LucidaConsole-Bold"]="Courier-Bold",e["LucidaConsole-BoldItalic"]="Courier-BoldOblique",e["LucidaConsole-Italic"]="Courier-Oblique",e["LucidaSans-Demi"]="Helvetica-Bold",e["MS-Gothic"]="MS Gothic",e["MS-Gothic-Bold"]="MS Gothic-Bold",e["MS-Gothic-BoldItalic"]="MS Gothic-BoldItalic",e["MS-Gothic-Italic"]="MS Gothic-Italic",e["MS-Mincho"]="MS Mincho",e["MS-Mincho-Bold"]="MS Mincho-Bold",e["MS-Mincho-BoldItalic"]="MS Mincho-BoldItalic",e["MS-Mincho-Italic"]="MS Mincho-Italic",e["MS-PGothic"]="MS PGothic",e["MS-PGothic-Bold"]="MS PGothic-Bold",e["MS-PGothic-BoldItalic"]="MS PGothic-BoldItalic",e["MS-PGothic-Italic"]="MS PGothic-Italic",e["MS-PMincho"]="MS PMincho",e["MS-PMincho-Bold"]="MS PMincho-Bold",e["MS-PMincho-BoldItalic"]="MS PMincho-BoldItalic",e["MS-PMincho-Italic"]="MS PMincho-Italic",e.NuptialScript="Times-Italic",e.SegoeUISymbol="Helvetica"}));t.getNonStdFontMap=o;const c=(0,n.getLookupTableFactory)((function(e){e["Adobe Jenson"]=!0,e["Adobe Text"]=!0,e.Albertus=!0,e.Aldus=!0,e.Alexandria=!0,e.Algerian=!0,e["American Typewriter"]=!0,e.Antiqua=!0,e.Apex=!0,e.Arno=!0,e.Aster=!0,e.Aurora=!0,e.Baskerville=!0,e.Bell=!0,e.Bembo=!0,e["Bembo Schoolbook"]=!0,e.Benguiat=!0,e["Berkeley Old Style"]=!0,e["Bernhard Modern"]=!0,e["Berthold City"]=!0,e.Bodoni=!0,e["Bauer Bodoni"]=!0,e["Book Antiqua"]=!0,e.Bookman=!0,e["Bordeaux Roman"]=!0,e["Californian FB"]=!0,e.Calisto=!0,e.Calvert=!0,e.Capitals=!0,e.Cambria=!0,e.Cartier=!0,e.Caslon=!0,e.Catull=!0,e.Centaur=!0,e["Century Old Style"]=!0,e["Century Schoolbook"]=!0,e.Chaparral=!0,e["Charis SIL"]=!0,e.Cheltenham=!0,e["Cholla Slab"]=!0,e.Clarendon=!0,e.Clearface=!0,e.Cochin=!0,e.Colonna=!0,e["Computer Modern"]=!0,e["Concrete Roman"]=!0,e.Constantia=!0,e["Cooper Black"]=!0,e.Corona=!0,e.Ecotype=!0,e.Egyptienne=!0,e.Elephant=!0,e.Excelsior=!0,e.Fairfield=!0,e["FF Scala"]=!0,e.Folkard=!0,e.Footlight=!0,e.FreeSerif=!0,e["Friz Quadrata"]=!0,e.Garamond=!0,e.Gentium=!0,e.Georgia=!0,e.Gloucester=!0,e["Goudy Old Style"]=!0,e["Goudy Schoolbook"]=!0,e["Goudy Pro Font"]=!0,e.Granjon=!0,e["Guardian Egyptian"]=!0,e.Heather=!0,e.Hercules=!0,e["High Tower Text"]=!0,e.Hiroshige=!0,e["Hoefler Text"]=!0,e["Humana Serif"]=!0,e.Imprint=!0,e["Ionic No. 5"]=!0,e.Janson=!0,e.Joanna=!0,e.Korinna=!0,e.Lexicon=!0,e.LiberationSerif=!0,e["Liberation Serif"]=!0,e["Linux Libertine"]=!0,e.Literaturnaya=!0,e.Lucida=!0,e["Lucida Bright"]=!0,e.Melior=!0,e.Memphis=!0,e.Miller=!0,e.Minion=!0,e.Modern=!0,e["Mona Lisa"]=!0,e["Mrs Eaves"]=!0,e["MS Serif"]=!0,e["Museo Slab"]=!0,e["New York"]=!0,e["Nimbus Roman"]=!0,e["NPS Rawlinson Roadway"]=!0,e.NuptialScript=!0,e.Palatino=!0,e.Perpetua=!0,e.Plantin=!0,e["Plantin Schoolbook"]=!0,e.Playbill=!0,e["Poor Richard"]=!0,e["Rawlinson Roadway"]=!0,e.Renault=!0,e.Requiem=!0,e.Rockwell=!0,e.Roman=!0,e["Rotis Serif"]=!0,e.Sabon=!0,e.Scala=!0,e.Seagull=!0,e.Sistina=!0,e.Souvenir=!0,e.STIX=!0,e["Stone Informal"]=!0,e["Stone Serif"]=!0,e.Sylfaen=!0,e.Times=!0,e.Trajan=!0,e["Trinité"]=!0,e["Trump Mediaeval"]=!0,e.Utopia=!0,e["Vale Type"]=!0,e["Bitstream Vera"]=!0,e["Vera Serif"]=!0,e.Versailles=!0,e.Wanted=!0,e.Weiss=!0,e["Wide Latin"]=!0,e.Windsor=!0,e.XITS=!0}));t.getSerifFonts=c;const l=(0,n.getLookupTableFactory)((function(e){e.Dingbats=!0,e.Symbol=!0,e.ZapfDingbats=!0,e.Wingdings=!0,e["Wingdings-Bold"]=!0,e["Wingdings-Regular"]=!0}));t.getSymbolsFonts=l;const h=(0,n.getLookupTableFactory)((function(e){e[2]=10,e[3]=32,e[4]=33,e[5]=34,e[6]=35,e[7]=36,e[8]=37,e[9]=38,e[10]=39,e[11]=40,e[12]=41,e[13]=42,e[14]=43,e[15]=44,e[16]=45,e[17]=46,e[18]=47,e[19]=48,e[20]=49,e[21]=50,e[22]=51,e[23]=52,e[24]=53,e[25]=54,e[26]=55,e[27]=56,e[28]=57,e[29]=58,e[30]=894,e[31]=60,e[32]=61,e[33]=62,e[34]=63,e[35]=64,e[36]=65,e[37]=66,e[38]=67,e[39]=68,e[40]=69,e[41]=70,e[42]=71,e[43]=72,e[44]=73,e[45]=74,e[46]=75,e[47]=76,e[48]=77,e[49]=78,e[50]=79,e[51]=80,e[52]=81,e[53]=82,e[54]=83,e[55]=84,e[56]=85,e[57]=86,e[58]=87,e[59]=88,e[60]=89,e[61]=90,e[62]=91,e[63]=92,e[64]=93,e[65]=94,e[66]=95,e[67]=96,e[68]=97,e[69]=98,e[70]=99,e[71]=100,e[72]=101,e[73]=102,e[74]=103,e[75]=104,e[76]=105,e[77]=106,e[78]=107,e[79]=108,e[80]=109,e[81]=110,e[82]=111,e[83]=112,e[84]=113,e[85]=114,e[86]=115,e[87]=116,e[88]=117,e[89]=118,e[90]=119,e[91]=120,e[92]=121,e[93]=122,e[94]=123,e[95]=124,e[96]=125,e[97]=126,e[98]=196,e[99]=197,e[100]=199,e[101]=201,e[102]=209,e[103]=214,e[104]=220,e[105]=225,e[106]=224,e[107]=226,e[108]=228,e[109]=227,e[110]=229,e[111]=231,e[112]=233,e[113]=232,e[114]=234,e[115]=235,e[116]=237,e[117]=236,e[118]=238,e[119]=239,e[120]=241,e[121]=243,e[122]=242,e[123]=244,e[124]=246,e[125]=245,e[126]=250,e[127]=249,e[128]=251,e[129]=252,e[130]=8224,e[131]=176,e[132]=162,e[133]=163,e[134]=167,e[135]=8226,e[136]=182,e[137]=223,e[138]=174,e[139]=169,e[140]=8482,e[141]=180,e[142]=168,e[143]=8800,e[144]=198,e[145]=216,e[146]=8734,e[147]=177,e[148]=8804,e[149]=8805,e[150]=165,e[151]=181,e[152]=8706,e[153]=8721,e[154]=8719,e[156]=8747,e[157]=170,e[158]=186,e[159]=8486,e[160]=230,e[161]=248,e[162]=191,e[163]=161,e[164]=172,e[165]=8730,e[166]=402,e[167]=8776,e[168]=8710,e[169]=171,e[170]=187,e[171]=8230,e[179]=8220,e[180]=8221,e[181]=8216,e[182]=8217,e[200]=193,e[203]=205,e[207]=211,e[210]=218,e[223]=711,e[224]=321,e[225]=322,e[226]=352,e[227]=353,e[228]=381,e[229]=382,e[233]=221,e[234]=253,e[252]=263,e[253]=268,e[254]=269,e[258]=258,e[260]=260,e[261]=261,e[265]=280,e[266]=281,e[267]=282,e[268]=283,e[269]=313,e[275]=323,e[276]=324,e[278]=328,e[283]=344,e[284]=345,e[285]=346,e[286]=347,e[292]=367,e[295]=377,e[296]=378,e[298]=380,e[305]=963,e[306]=964,e[307]=966,e[308]=8215,e[309]=8252,e[310]=8319,e[311]=8359,e[312]=8592,e[313]=8593,e[337]=9552,e[493]=1039,e[494]=1040,e[672]=1488,e[673]=1489,e[674]=1490,e[675]=1491,e[676]=1492,e[677]=1493,e[678]=1494,e[679]=1495,e[680]=1496,e[681]=1497,e[682]=1498,e[683]=1499,e[684]=1500,e[685]=1501,e[686]=1502,e[687]=1503,e[688]=1504,e[689]=1505,e[690]=1506,e[691]=1507,e[692]=1508,e[693]=1509,e[694]=1510,e[695]=1511,e[696]=1512,e[697]=1513,e[698]=1514,e[705]=1524,e[706]=8362,e[710]=64288,e[711]=64298,e[759]=1617,e[761]=1776,e[763]=1778,e[775]=1652,e[777]=1764,e[778]=1780,e[779]=1781,e[780]=1782,e[782]=771,e[783]=64726,e[786]=8363,e[788]=8532,e[790]=768,e[791]=769,e[792]=768,e[795]=803,e[797]=64336,e[798]=64337,e[799]=64342,e[800]=64343,e[801]=64344,e[802]=64345,e[803]=64362,e[804]=64363,e[805]=64364,e[2424]=7821,e[2425]=7822,e[2426]=7823,e[2427]=7824,e[2428]=7825,e[2429]=7826,e[2430]=7827,e[2433]=7682,e[2678]=8045,e[2679]=8046,e[2830]=1552,e[2838]=686,e[2840]=751,e[2842]=753,e[2843]=754,e[2844]=755,e[2846]=757,e[2856]=767,e[2857]=848,e[2858]=849,e[2862]=853,e[2863]=854,e[2864]=855,e[2865]=861,e[2866]=862,e[2906]=7460,e[2908]=7462,e[2909]=7463,e[2910]=7464,e[2912]=7466,e[2913]=7467,e[2914]=7468,e[2916]=7470,e[2917]=7471,e[2918]=7472,e[2920]=7474,e[2921]=7475,e[2922]=7476,e[2924]=7478,e[2925]=7479,e[2926]=7480,e[2928]=7482,e[2929]=7483,e[2930]=7484,e[2932]=7486,e[2933]=7487,e[2934]=7488,e[2936]=7490,e[2937]=7491,e[2938]=7492,e[2940]=7494,e[2941]=7495,e[2942]=7496,e[2944]=7498,e[2946]=7500,e[2948]=7502,e[2950]=7504,e[2951]=7505,e[2952]=7506,e[2954]=7508,e[2955]=7509,e[2956]=7510,e[2958]=7512,e[2959]=7513,e[2960]=7514,e[2962]=7516,e[2963]=7517,e[2964]=7518,e[2966]=7520,e[2967]=7521,e[2968]=7522,e[2970]=7524,e[2971]=7525,e[2972]=7526,e[2974]=7528,e[2975]=7529,e[2976]=7530,e[2978]=1537,e[2979]=1538,e[2980]=1539,e[2982]=1549,e[2983]=1551,e[2984]=1552,e[2986]=1554,e[2987]=1555,e[2988]=1556,e[2990]=1623,e[2991]=1624,e[2995]=1775,e[2999]=1791,e[3002]=64290,e[3003]=64291,e[3004]=64292,e[3006]=64294,e[3007]=64295,e[3008]=64296,e[3011]=1900,e[3014]=8223,e[3015]=8244,e[3017]=7532,e[3018]=7533,e[3019]=7534,e[3075]=7590,e[3076]=7591,e[3079]=7594,e[3080]=7595,e[3083]=7598,e[3084]=7599,e[3087]=7602,e[3088]=7603,e[3091]=7606,e[3092]=7607,e[3095]=7610,e[3096]=7611,e[3099]=7614,e[3100]=7615,e[3103]=7618,e[3104]=7619,e[3107]=8337,e[3108]=8338,e[3116]=1884,e[3119]=1885,e[3120]=1885,e[3123]=1886,e[3124]=1886,e[3127]=1887,e[3128]=1887,e[3131]=1888,e[3132]=1888,e[3135]=1889,e[3136]=1889,e[3139]=1890,e[3140]=1890,e[3143]=1891,e[3144]=1891,e[3147]=1892,e[3148]=1892,e[3153]=580,e[3154]=581,e[3157]=584,e[3158]=585,e[3161]=588,e[3162]=589,e[3165]=891,e[3166]=892,e[3169]=1274,e[3170]=1275,e[3173]=1278,e[3174]=1279,e[3181]=7622,e[3182]=7623,e[3282]=11799,e[3316]=578,e[3379]=42785,e[3393]=1159,e[3416]=8377}));t.getGlyphMapForStandardFonts=h;const u=(0,n.getLookupTableFactory)((function(e){e[227]=322,e[264]=261,e[291]=346}));t.getSupplementalGlyphMapForArialBlack=u;const d=(0,n.getLookupTableFactory)((function(e){e[1]=32,e[4]=65,e[5]=192,e[6]=193,e[9]=196,e[17]=66,e[18]=67,e[21]=268,e[24]=68,e[28]=69,e[29]=200,e[30]=201,e[32]=282,e[38]=70,e[39]=71,e[44]=72,e[47]=73,e[48]=204,e[49]=205,e[58]=74,e[60]=75,e[62]=76,e[68]=77,e[69]=78,e[75]=79,e[76]=210,e[80]=214,e[87]=80,e[89]=81,e[90]=82,e[92]=344,e[94]=83,e[97]=352,e[100]=84,e[104]=85,e[109]=220,e[115]=86,e[116]=87,e[121]=88,e[122]=89,e[124]=221,e[127]=90,e[129]=381,e[258]=97,e[259]=224,e[260]=225,e[263]=228,e[268]=261,e[271]=98,e[272]=99,e[273]=263,e[275]=269,e[282]=100,e[286]=101,e[287]=232,e[288]=233,e[290]=283,e[295]=281,e[296]=102,e[336]=103,e[346]=104,e[349]=105,e[350]=236,e[351]=237,e[361]=106,e[364]=107,e[367]=108,e[371]=322,e[373]=109,e[374]=110,e[381]=111,e[382]=242,e[383]=243,e[386]=246,e[393]=112,e[395]=113,e[396]=114,e[398]=345,e[400]=115,e[401]=347,e[403]=353,e[410]=116,e[437]=117,e[442]=252,e[448]=118,e[449]=119,e[454]=120,e[455]=121,e[457]=253,e[460]=122,e[462]=382,e[463]=380,e[853]=44,e[855]=58,e[856]=46,e[876]=47,e[878]=45,e[882]=45,e[894]=40,e[895]=41,e[896]=91,e[897]=93,e[923]=64,e[1004]=48,e[1005]=49,e[1006]=50,e[1007]=51,e[1008]=52,e[1009]=53,e[1010]=54,e[1011]=55,e[1012]=56,e[1013]=57,e[1081]=37,e[1085]=43,e[1086]=45}));t.getSupplementalGlyphMapForCalibri=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ToUnicodeMap=t.IdentityToUnicodeMap=void 0;var n=r(144);t.ToUnicodeMap=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._map=e}get length(){return this._map.length}forEach(e){for(const t in this._map)e(t,this._map[t].charCodeAt(0))}has(e){return void 0!==this._map[e]}get(e){return this._map[e]}charCodeOf(e){const t=this._map;if(t.length<=65536)return t.indexOf(e);for(const r in t)if(t[r]===e)return 0|r;return-1}amend(e){for(const t in e)this._map[t]=e[t]}},t.IdentityToUnicodeMap=class{constructor(e,t){this.firstChar=e,this.lastChar=t}get length(){return this.lastChar+1-this.firstChar}forEach(e){for(let t=this.firstChar,r=this.lastChar;t<=r;t++)e(t,t)}has(e){return this.firstChar<=e&&e<=this.lastChar}get(e){if(this.firstChar<=e&&e<=this.lastChar)return String.fromCharCode(e)}charCodeOf(e){return Number.isInteger(e)&&e>=this.firstChar&&e<=this.lastChar?e:-1}amend(e){(0,n.unreachable)("Should not call amend()")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CFFFont=void 0;var n=r(185),a=r(188),i=r(144);t.CFFFont=class{constructor(e,t){this.properties=t;const r=new n.CFFParser(e,t,a.SEAC_ANALYSIS_ENABLED);this.cff=r.parse(),this.cff.duplicateFirstGlyph();const s=new n.CFFCompiler(this.cff);this.seacs=this.cff.seacs;try{this.data=s.compile()}catch(r){(0,i.warn)("Failed to compile font "+t.loadedName),this.data=e}this._createBuiltInEncoding()}get numGlyphs(){return this.cff.charStrings.count}getCharset(){return this.cff.charset.charset}getGlyphMapping(){const e=this.cff,t=this.properties,{cidToGidMap:r,cMap:n}=t,i=e.charset.charset;let s,o;if(t.composite){let t,a;if((null==r?void 0:r.length)>0){t=Object.create(null);for(let e=0,n=r.length;e=0){const n=r[t];n&&(a[e]=n)}}a.length>0&&(this.properties.builtInEncoding=a)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontRendererFactory=void 0,r(139),r(157),r(159),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(185),i=r(189),s=r(187),o=r(154);function c(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}function l(e,t){return e[t]<<8|e[t+1]}function h(e,t){return(e[t]<<24|e[t+1]<<16)>>16}function u(e,t){return e[t]<<24>>24}function d(e,t){return h(e,t)/16384}function f(e){const t=e.length;let r=32768;return t<1240?r=107:t<33900&&(r=1131),r}function g(e,t,r){const a=1===l(e,t+2)?c(e,t+8):c(e,t+16),i=l(e,t+a);let s,o,h;if(4===i){l(e,t+a+2);const r=l(e,t+a+6)>>1;for(o=t+a+14,s=[],h=0;h>1;r0;)p.push({flags:c})}for(r=0;r>1,I=!0;break;case 4:u+=l.pop(),i(h,u),I=!0;break;case 5:for(;l.length>0;)h+=l.shift(),u+=l.shift(),o(h,u);break;case 6:for(;l.length>0&&(h+=l.shift(),o(h,u),0!==l.length);)u+=l.shift(),o(h,u);break;case 7:for(;l.length>0&&(u+=l.shift(),o(h,u),0!==l.length);)h+=l.shift(),o(h,u);break;case 8:for(;l.length>0;)w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);break;case 10:if(O=l.pop(),F=null,r.isCFFCIDFont){const e=r.fdSelect.getFDIndex(a);if(e>=0&&eMath.abs(u-t)?h+=l.shift():u+=l.shift(),c(w,x,v,S,h,u);break;default:throw new n.FormatError("unknown operator: 12 ".concat(T))}break;case 14:if(l.length>=4){const e=l.pop(),n=l.pop();u=l.pop(),h=l.pop(),t.push({cmd:"save"},{cmd:"translate",args:[h,u]});let a=m(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[e]]));y(r.glyphs[a.glyphId],t,r,a.glyphId),t.push({cmd:"restore"}),a=m(r.cmap,String.fromCharCode(r.glyphNameMap[s.StandardEncoding[n]])),y(r.glyphs[a.glyphId],t,r,a.glyphId)}return;case 19:case 20:d+=l.length>>1,p+=d+7>>3,I=!0;break;case 21:u+=l.pop(),h+=l.pop(),i(h,u),I=!0;break;case 22:h+=l.pop(),i(h,u),I=!0;break;case 24:for(;l.length>2;)w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);h+=l.shift(),u+=l.shift(),o(h,u);break;case 25:for(;l.length>6;)h+=l.shift(),u+=l.shift(),o(h,u);w=h+l.shift(),x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+l.shift(),c(w,x,v,S,h,u);break;case 26:for(l.length%2&&(h+=l.shift());l.length>0;)w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v,u=S+l.shift(),c(w,x,v,S,h,u);break;case 27:for(l.length%2&&(u+=l.shift());l.length>0;)w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S,c(w,x,v,S,h,u);break;case 28:l.push((g[p]<<24|g[p+1]<<16)>>16),p+=2;break;case 29:O=l.pop()+r.gsubrsBias,F=r.gsubrs[O],F&&e(F);break;case 30:for(;l.length>0&&(w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+(1===l.length?l.shift():0),c(w,x,v,S,h,u),0!==l.length);)w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),u=S+l.shift(),h=v+(1===l.length?l.shift():0),c(w,x,v,S,h,u);break;case 31:for(;l.length>0&&(w=h+l.shift(),x=u,v=w+l.shift(),S=x+l.shift(),u=S+l.shift(),h=v+(1===l.length?l.shift():0),c(w,x,v,S,h,u),0!==l.length);)w=h,x=u+l.shift(),v=w+l.shift(),S=x+l.shift(),h=v+l.shift(),u=S+(1===l.length?l.shift():0),c(w,x,v,S,h,u);break;default:if(T<32)throw new n.FormatError("unknown operator: ".concat(T));T<247?l.push(T-139):T<251?l.push(256*(T-247)+g[p++]+108):T<255?l.push(256*-(T-251)-g[p++]-108):(l.push((g[p]<<24|g[p+1]<<16|g[p+2]<<8|g[p+3])/65536),p+=4)}I&&(l.length=0)}}(e)}const w=[];class v{constructor(e){this.constructor===v&&(0,n.unreachable)("Cannot initialize CompiledFont."),this.fontMatrix=e,this.compiledGlyphs=Object.create(null),this.compiledCharCodeToGlyphId=Object.create(null)}getPathJs(e){const{charCode:t,glyphId:r}=m(this.cmap,e);let n=this.compiledGlyphs[r];if(!n)try{n=this.compileGlyph(this.glyphs[r],r),this.compiledGlyphs[r]=n}catch(e){throw this.compiledGlyphs[r]=w,void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r),e}return void 0===this.compiledCharCodeToGlyphId[t]&&(this.compiledCharCodeToGlyphId[t]=r),n}compileGlyph(e,t){if(!e||0===e.length||14===e[0])return w;let r=this.fontMatrix;if(this.isCFFCIDFont){const e=this.fdSelect.getFDIndex(t);e>=0&&e2*l(e,t));const i=[];let s=a(t,0);for(let r=n;r{Object.defineProperty(t,"__esModule",{value:!0}),t.getMetrics=t.getFontBasicMetrics=void 0;var n=r(149);const a=(0,n.getLookupTableFactory)((function(e){e.Courier=600,e["Courier-Bold"]=600,e["Courier-BoldOblique"]=600,e["Courier-Oblique"]=600,e.Helvetica=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=278,e.quotedbl=355,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=667,e.quoteright=222,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=278,e.semicolon=278,e.less=584,e.equal=584,e.greater=584,e.question=556,e.at=1015,e.A=667,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=500,e.K=667,e.L=556,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=278,e.backslash=278,e.bracketright=278,e.asciicircum=469,e.underscore=556,e.quoteleft=222,e.a=556,e.b=556,e.c=500,e.d=556,e.e=556,e.f=278,e.g=556,e.h=556,e.i=222,e.j=222,e.k=500,e.l=222,e.m=833,e.n=556,e.o=556,e.p=556,e.q=556,e.r=333,e.s=500,e.t=278,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=500,e.braceleft=334,e.bar=260,e.braceright=334,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=191,e.quotedblleft=333,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=537,e.bullet=350,e.quotesinglbase=222,e.quotedblbase=333,e.quotedblright=333,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=556,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=222,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=556,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=667,e.aacute=556,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=500,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=500,e.aring=556,e.Ncommaaccent=722,e.lacute=222,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=500,e.scedilla=500,e.iacute=278,e.lozenge=471,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=556,e.Amacron=667,e.rcaron=333,e.ccedilla=500,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=643,e.Umacron=722,e.uring=556,e.threesuperior=333,e.Ograve=778,e.Agrave=667,e.Abreve=667,e.multiply=584,e.uacute=556,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=500,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=260,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=333,e.omacron=556,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=222,e.tcaron=317,e.eogonek=556,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=556,e.zacute=500,e.iogonek=222,e.Oacute=778,e.oacute=556,e.amacron=556,e.sacute=500,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=333,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=556,e.Eogonek=667,e.dcroat=556,e.threequarters=834,e.Scedilla=667,e.lcaron=299,e.Kcommaaccent=667,e.Lacute=556,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=556,e.onehalf=834,e.lessequal=549,e.ocircumflex=556,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=556,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=556,e.Ccaron=722,e.ugrave=556,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=556,e.Rcommaaccent=722,e.Lcommaaccent=556,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=500,e.minus=584,e.Icircumflex=278,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=584,e.odieresis=556,e.udieresis=556,e.notequal=549,e.gcommaaccent=556,e.eth=556,e.zcaron=500,e.ncommaaccent=556,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-Bold"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=333,e.quotedbl=474,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=722,e.quoteright=278,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=333,e.semicolon=333,e.less=584,e.equal=584,e.greater=584,e.question=611,e.at=975,e.A=722,e.B=722,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=556,e.K=722,e.L=611,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=584,e.underscore=556,e.quoteleft=278,e.a=556,e.b=611,e.c=556,e.d=611,e.e=556,e.f=333,e.g=611,e.h=611,e.i=278,e.j=278,e.k=556,e.l=278,e.m=889,e.n=611,e.o=611,e.p=611,e.q=611,e.r=389,e.s=556,e.t=333,e.u=611,e.v=556,e.w=778,e.x=556,e.y=556,e.z=500,e.braceleft=389,e.bar=280,e.braceright=389,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=238,e.quotedblleft=500,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=611,e.fl=611,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=556,e.bullet=350,e.quotesinglbase=278,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=611,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=278,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=611,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=722,e.aacute=556,e.Ucircumflex=722,e.yacute=556,e.scommaaccent=556,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=611,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=556,e.aring=556,e.Ncommaaccent=722,e.lacute=278,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=556,e.scedilla=556,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=611,e.acircumflex=556,e.Amacron=722,e.rcaron=389,e.ccedilla=556,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=743,e.Umacron=722,e.uring=611,e.threesuperior=333,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=584,e.uacute=611,e.Tcaron=611,e.partialdiff=494,e.ydieresis=556,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=556,e.nacute=611,e.umacron=611,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=280,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=611,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=389,e.eogonek=556,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=556,e.zacute=500,e.iogonek=278,e.Oacute=778,e.oacute=611,e.amacron=556,e.sacute=556,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=611,e.twosuperior=333,e.Odieresis=778,e.mu=611,e.igrave=278,e.ohungarumlaut=611,e.Eogonek=667,e.dcroat=611,e.threequarters=834,e.Scedilla=667,e.lcaron=400,e.Kcommaaccent=722,e.Lacute=611,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=611,e.onehalf=834,e.lessequal=549,e.ocircumflex=611,e.ntilde=611,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=611,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=611,e.Ccaron=722,e.ugrave=611,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=611,e.Rcommaaccent=722,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=556,e.minus=584,e.Icircumflex=278,e.ncaron=611,e.tcommaaccent=333,e.logicalnot=584,e.odieresis=611,e.udieresis=611,e.notequal=549,e.gcommaaccent=611,e.eth=611,e.zcaron=500,e.ncommaaccent=611,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-BoldOblique"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=333,e.quotedbl=474,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=722,e.quoteright=278,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=333,e.semicolon=333,e.less=584,e.equal=584,e.greater=584,e.question=611,e.at=975,e.A=722,e.B=722,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=556,e.K=722,e.L=611,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=584,e.underscore=556,e.quoteleft=278,e.a=556,e.b=611,e.c=556,e.d=611,e.e=556,e.f=333,e.g=611,e.h=611,e.i=278,e.j=278,e.k=556,e.l=278,e.m=889,e.n=611,e.o=611,e.p=611,e.q=611,e.r=389,e.s=556,e.t=333,e.u=611,e.v=556,e.w=778,e.x=556,e.y=556,e.z=500,e.braceleft=389,e.bar=280,e.braceright=389,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=238,e.quotedblleft=500,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=611,e.fl=611,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=556,e.bullet=350,e.quotesinglbase=278,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=611,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=278,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=611,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=722,e.aacute=556,e.Ucircumflex=722,e.yacute=556,e.scommaaccent=556,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=611,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=556,e.aring=556,e.Ncommaaccent=722,e.lacute=278,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=556,e.scedilla=556,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=611,e.acircumflex=556,e.Amacron=722,e.rcaron=389,e.ccedilla=556,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=743,e.Umacron=722,e.uring=611,e.threesuperior=333,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=584,e.uacute=611,e.Tcaron=611,e.partialdiff=494,e.ydieresis=556,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=556,e.nacute=611,e.umacron=611,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=280,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=611,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=389,e.eogonek=556,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=556,e.zacute=500,e.iogonek=278,e.Oacute=778,e.oacute=611,e.amacron=556,e.sacute=556,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=611,e.twosuperior=333,e.Odieresis=778,e.mu=611,e.igrave=278,e.ohungarumlaut=611,e.Eogonek=667,e.dcroat=611,e.threequarters=834,e.Scedilla=667,e.lcaron=400,e.Kcommaaccent=722,e.Lacute=611,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=611,e.onehalf=834,e.lessequal=549,e.ocircumflex=611,e.ntilde=611,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=611,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=611,e.Ccaron=722,e.ugrave=611,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=611,e.Rcommaaccent=722,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=556,e.minus=584,e.Icircumflex=278,e.ncaron=611,e.tcommaaccent=333,e.logicalnot=584,e.odieresis=611,e.udieresis=611,e.notequal=549,e.gcommaaccent=611,e.eth=611,e.zcaron=500,e.ncommaaccent=611,e.onesuperior=333,e.imacron=278,e.Euro=556})),e["Helvetica-Oblique"]=(0,n.getLookupTableFactory)((function(e){e.space=278,e.exclam=278,e.quotedbl=355,e.numbersign=556,e.dollar=556,e.percent=889,e.ampersand=667,e.quoteright=222,e.parenleft=333,e.parenright=333,e.asterisk=389,e.plus=584,e.comma=278,e.hyphen=333,e.period=278,e.slash=278,e.zero=556,e.one=556,e.two=556,e.three=556,e.four=556,e.five=556,e.six=556,e.seven=556,e.eight=556,e.nine=556,e.colon=278,e.semicolon=278,e.less=584,e.equal=584,e.greater=584,e.question=556,e.at=1015,e.A=667,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=722,e.I=278,e.J=500,e.K=667,e.L=556,e.M=833,e.N=722,e.O=778,e.P=667,e.Q=778,e.R=722,e.S=667,e.T=611,e.U=722,e.V=667,e.W=944,e.X=667,e.Y=667,e.Z=611,e.bracketleft=278,e.backslash=278,e.bracketright=278,e.asciicircum=469,e.underscore=556,e.quoteleft=222,e.a=556,e.b=556,e.c=500,e.d=556,e.e=556,e.f=278,e.g=556,e.h=556,e.i=222,e.j=222,e.k=500,e.l=222,e.m=833,e.n=556,e.o=556,e.p=556,e.q=556,e.r=333,e.s=500,e.t=278,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=500,e.braceleft=334,e.bar=260,e.braceright=334,e.asciitilde=584,e.exclamdown=333,e.cent=556,e.sterling=556,e.fraction=167,e.yen=556,e.florin=556,e.section=556,e.currency=556,e.quotesingle=191,e.quotedblleft=333,e.guillemotleft=556,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=556,e.dagger=556,e.daggerdbl=556,e.periodcentered=278,e.paragraph=537,e.bullet=350,e.quotesinglbase=222,e.quotedblbase=333,e.quotedblright=333,e.guillemotright=556,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=611,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=370,e.Lslash=556,e.Oslash=778,e.OE=1e3,e.ordmasculine=365,e.ae=889,e.dotlessi=278,e.lslash=222,e.oslash=611,e.oe=944,e.germandbls=611,e.Idieresis=278,e.eacute=556,e.abreve=556,e.uhungarumlaut=556,e.ecaron=556,e.Ydieresis=667,e.divide=584,e.Yacute=667,e.Acircumflex=667,e.aacute=556,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=500,e.ecircumflex=556,e.Uring=722,e.Udieresis=722,e.aogonek=556,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=737,e.Emacron=667,e.ccaron=500,e.aring=556,e.Ncommaaccent=722,e.lacute=222,e.agrave=556,e.Tcommaaccent=611,e.Cacute=722,e.atilde=556,e.Edotaccent=667,e.scaron=500,e.scedilla=500,e.iacute=278,e.lozenge=471,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=556,e.Amacron=667,e.rcaron=333,e.ccedilla=500,e.Zdotaccent=611,e.Thorn=667,e.Omacron=778,e.Racute=722,e.Sacute=667,e.dcaron=643,e.Umacron=722,e.uring=556,e.threesuperior=333,e.Ograve=778,e.Agrave=667,e.Abreve=667,e.multiply=584,e.uacute=556,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=556,e.edieresis=556,e.cacute=500,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=278,e.plusminus=584,e.brokenbar=260,e.registered=737,e.Gbreve=778,e.Idotaccent=278,e.summation=600,e.Egrave=667,e.racute=333,e.omacron=556,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=222,e.tcaron=317,e.eogonek=556,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=556,e.zacute=500,e.iogonek=222,e.Oacute=778,e.oacute=556,e.amacron=556,e.sacute=500,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=333,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=556,e.Eogonek=667,e.dcroat=556,e.threequarters=834,e.Scedilla=667,e.lcaron=299,e.Kcommaaccent=667,e.Lacute=556,e.trademark=1e3,e.edotaccent=556,e.Igrave=278,e.Imacron=278,e.Lcaron=556,e.onehalf=834,e.lessequal=549,e.ocircumflex=556,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=556,e.gbreve=556,e.onequarter=834,e.Scaron=667,e.Scommaaccent=667,e.Ohungarumlaut=778,e.degree=400,e.ograve=556,e.Ccaron=722,e.ugrave=556,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=556,e.Rcommaaccent=722,e.Lcommaaccent=556,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=778,e.zdotaccent=500,e.Ecaron=667,e.Iogonek=278,e.kcommaaccent=500,e.minus=584,e.Icircumflex=278,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=584,e.odieresis=556,e.udieresis=556,e.notequal=549,e.gcommaaccent=556,e.eth=556,e.zcaron=500,e.ncommaaccent=556,e.onesuperior=333,e.imacron=278,e.Euro=556})),e.Symbol=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.universal=713,e.numbersign=500,e.existential=549,e.percent=833,e.ampersand=778,e.suchthat=439,e.parenleft=333,e.parenright=333,e.asteriskmath=500,e.plus=549,e.comma=250,e.minus=549,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=278,e.semicolon=278,e.less=549,e.equal=549,e.greater=549,e.question=444,e.congruent=549,e.Alpha=722,e.Beta=667,e.Chi=722,e.Delta=612,e.Epsilon=611,e.Phi=763,e.Gamma=603,e.Eta=722,e.Iota=333,e.theta1=631,e.Kappa=722,e.Lambda=686,e.Mu=889,e.Nu=722,e.Omicron=722,e.Pi=768,e.Theta=741,e.Rho=556,e.Sigma=592,e.Tau=611,e.Upsilon=690,e.sigma1=439,e.Omega=768,e.Xi=645,e.Psi=795,e.Zeta=611,e.bracketleft=333,e.therefore=863,e.bracketright=333,e.perpendicular=658,e.underscore=500,e.radicalex=500,e.alpha=631,e.beta=549,e.chi=549,e.delta=494,e.epsilon=439,e.phi=521,e.gamma=411,e.eta=603,e.iota=329,e.phi1=603,e.kappa=549,e.lambda=549,e.mu=576,e.nu=521,e.omicron=549,e.pi=549,e.theta=521,e.rho=549,e.sigma=603,e.tau=439,e.upsilon=576,e.omega1=713,e.omega=686,e.xi=493,e.psi=686,e.zeta=494,e.braceleft=480,e.bar=200,e.braceright=480,e.similar=549,e.Euro=750,e.Upsilon1=620,e.minute=247,e.lessequal=549,e.fraction=167,e.infinity=713,e.florin=500,e.club=753,e.diamond=753,e.heart=753,e.spade=753,e.arrowboth=1042,e.arrowleft=987,e.arrowup=603,e.arrowright=987,e.arrowdown=603,e.degree=400,e.plusminus=549,e.second=411,e.greaterequal=549,e.multiply=549,e.proportional=713,e.partialdiff=494,e.bullet=460,e.divide=549,e.notequal=549,e.equivalence=549,e.approxequal=549,e.ellipsis=1e3,e.arrowvertex=603,e.arrowhorizex=1e3,e.carriagereturn=658,e.aleph=823,e.Ifraktur=686,e.Rfraktur=795,e.weierstrass=987,e.circlemultiply=768,e.circleplus=768,e.emptyset=823,e.intersection=768,e.union=768,e.propersuperset=713,e.reflexsuperset=713,e.notsubset=713,e.propersubset=713,e.reflexsubset=713,e.element=713,e.notelement=713,e.angle=768,e.gradient=713,e.registerserif=790,e.copyrightserif=790,e.trademarkserif=890,e.product=823,e.radical=549,e.dotmath=250,e.logicalnot=713,e.logicaland=603,e.logicalor=603,e.arrowdblboth=1042,e.arrowdblleft=987,e.arrowdblup=603,e.arrowdblright=987,e.arrowdbldown=603,e.lozenge=494,e.angleleft=329,e.registersans=790,e.copyrightsans=790,e.trademarksans=786,e.summation=713,e.parenlefttp=384,e.parenleftex=384,e.parenleftbt=384,e.bracketlefttp=384,e.bracketleftex=384,e.bracketleftbt=384,e.bracelefttp=494,e.braceleftmid=494,e.braceleftbt=494,e.braceex=494,e.angleright=329,e.integral=274,e.integraltp=686,e.integralex=686,e.integralbt=686,e.parenrighttp=384,e.parenrightex=384,e.parenrightbt=384,e.bracketrighttp=384,e.bracketrightex=384,e.bracketrightbt=384,e.bracerighttp=494,e.bracerightmid=494,e.bracerightbt=494,e.apple=790})),e["Times-Roman"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=408,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=564,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=278,e.semicolon=278,e.less=564,e.equal=564,e.greater=564,e.question=444,e.at=921,e.A=722,e.B=667,e.C=667,e.D=722,e.E=611,e.F=556,e.G=722,e.H=722,e.I=333,e.J=389,e.K=722,e.L=611,e.M=889,e.N=722,e.O=722,e.P=556,e.Q=722,e.R=667,e.S=556,e.T=611,e.U=722,e.V=722,e.W=944,e.X=722,e.Y=722,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=469,e.underscore=500,e.quoteleft=333,e.a=444,e.b=500,e.c=444,e.d=500,e.e=444,e.f=333,e.g=500,e.h=500,e.i=278,e.j=278,e.k=500,e.l=278,e.m=778,e.n=500,e.o=500,e.p=500,e.q=500,e.r=333,e.s=389,e.t=278,e.u=500,e.v=500,e.w=722,e.x=500,e.y=500,e.z=444,e.braceleft=480,e.bar=200,e.braceright=480,e.asciitilde=541,e.exclamdown=333,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=180,e.quotedblleft=444,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=453,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=444,e.quotedblright=444,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=444,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=889,e.ordfeminine=276,e.Lslash=611,e.Oslash=722,e.OE=889,e.ordmasculine=310,e.ae=667,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=500,e.Idieresis=333,e.eacute=444,e.abreve=444,e.uhungarumlaut=500,e.ecaron=444,e.Ydieresis=722,e.divide=564,e.Yacute=722,e.Acircumflex=722,e.aacute=444,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=444,e.Uacute=722,e.uogonek=500,e.Edieresis=611,e.Dcroat=722,e.commaaccent=250,e.copyright=760,e.Emacron=611,e.ccaron=444,e.aring=444,e.Ncommaaccent=722,e.lacute=278,e.agrave=444,e.Tcommaaccent=611,e.Cacute=667,e.atilde=444,e.Edotaccent=611,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=471,e.Rcaron=667,e.Gcommaaccent=722,e.ucircumflex=500,e.acircumflex=444,e.Amacron=722,e.rcaron=333,e.ccedilla=444,e.Zdotaccent=611,e.Thorn=556,e.Omacron=722,e.Racute=667,e.Sacute=556,e.dcaron=588,e.Umacron=722,e.uring=500,e.threesuperior=300,e.Ograve=722,e.Agrave=722,e.Abreve=722,e.multiply=564,e.uacute=500,e.Tcaron=611,e.partialdiff=476,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=611,e.adieresis=444,e.edieresis=444,e.cacute=444,e.nacute=500,e.umacron=500,e.Ncaron=722,e.Iacute=333,e.plusminus=564,e.brokenbar=200,e.registered=760,e.Gbreve=722,e.Idotaccent=333,e.summation=600,e.Egrave=611,e.racute=333,e.omacron=500,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=326,e.eogonek=444,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=444,e.zacute=444,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=444,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=500,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=611,e.dcroat=500,e.threequarters=750,e.Scedilla=556,e.lcaron=344,e.Kcommaaccent=722,e.Lacute=611,e.trademark=980,e.edotaccent=444,e.Igrave=333,e.Imacron=333,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=500,e.Uhungarumlaut=722,e.Eacute=611,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=500,e.radical=453,e.Dcaron=722,e.rcommaaccent=333,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=667,e.Lcommaaccent=611,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=722,e.zdotaccent=444,e.Ecaron=611,e.Iogonek=333,e.kcommaaccent=500,e.minus=564,e.Icircumflex=333,e.ncaron=500,e.tcommaaccent=278,e.logicalnot=564,e.odieresis=500,e.udieresis=500,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=444,e.ncommaaccent=500,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-Bold"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=555,e.numbersign=500,e.dollar=500,e.percent=1e3,e.ampersand=833,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=570,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=570,e.equal=570,e.greater=570,e.question=500,e.at=930,e.A=722,e.B=667,e.C=722,e.D=722,e.E=667,e.F=611,e.G=778,e.H=778,e.I=389,e.J=500,e.K=778,e.L=667,e.M=944,e.N=722,e.O=778,e.P=611,e.Q=778,e.R=722,e.S=556,e.T=667,e.U=722,e.V=722,e.W=1e3,e.X=722,e.Y=722,e.Z=667,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=581,e.underscore=500,e.quoteleft=333,e.a=500,e.b=556,e.c=444,e.d=556,e.e=444,e.f=333,e.g=500,e.h=556,e.i=278,e.j=333,e.k=556,e.l=278,e.m=833,e.n=556,e.o=500,e.p=556,e.q=556,e.r=444,e.s=389,e.t=333,e.u=556,e.v=500,e.w=722,e.x=500,e.y=500,e.z=444,e.braceleft=394,e.bar=220,e.braceright=394,e.asciitilde=520,e.exclamdown=333,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=278,e.quotedblleft=500,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=540,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=1e3,e.ordfeminine=300,e.Lslash=667,e.Oslash=778,e.OE=1e3,e.ordmasculine=330,e.ae=722,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=556,e.Idieresis=389,e.eacute=444,e.abreve=500,e.uhungarumlaut=556,e.ecaron=444,e.Ydieresis=722,e.divide=570,e.Yacute=722,e.Acircumflex=722,e.aacute=500,e.Ucircumflex=722,e.yacute=500,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=747,e.Emacron=667,e.ccaron=444,e.aring=500,e.Ncommaaccent=722,e.lacute=278,e.agrave=500,e.Tcommaaccent=667,e.Cacute=722,e.atilde=500,e.Edotaccent=667,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=494,e.Rcaron=722,e.Gcommaaccent=778,e.ucircumflex=556,e.acircumflex=500,e.Amacron=722,e.rcaron=444,e.ccedilla=444,e.Zdotaccent=667,e.Thorn=611,e.Omacron=778,e.Racute=722,e.Sacute=556,e.dcaron=672,e.Umacron=722,e.uring=556,e.threesuperior=300,e.Ograve=778,e.Agrave=722,e.Abreve=722,e.multiply=570,e.uacute=556,e.Tcaron=667,e.partialdiff=494,e.ydieresis=500,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=389,e.plusminus=570,e.brokenbar=220,e.registered=747,e.Gbreve=778,e.Idotaccent=389,e.summation=600,e.Egrave=667,e.racute=444,e.omacron=500,e.Zacute=667,e.Zcaron=667,e.greaterequal=549,e.Eth=722,e.Ccedilla=722,e.lcommaaccent=278,e.tcaron=416,e.eogonek=444,e.Uogonek=722,e.Aacute=722,e.Adieresis=722,e.egrave=444,e.zacute=444,e.iogonek=278,e.Oacute=778,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=778,e.Ugrave=722,e.Delta=612,e.thorn=556,e.twosuperior=300,e.Odieresis=778,e.mu=556,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=667,e.dcroat=556,e.threequarters=750,e.Scedilla=556,e.lcaron=394,e.Kcommaaccent=778,e.Lacute=667,e.trademark=1e3,e.edotaccent=444,e.Igrave=389,e.Imacron=389,e.Lcaron=667,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=778,e.degree=400,e.ograve=500,e.Ccaron=722,e.ugrave=556,e.radical=549,e.Dcaron=722,e.rcommaaccent=444,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=722,e.Lcommaaccent=667,e.Atilde=722,e.Aogonek=722,e.Aring=722,e.Otilde=778,e.zdotaccent=444,e.Ecaron=667,e.Iogonek=389,e.kcommaaccent=556,e.minus=570,e.Icircumflex=389,e.ncaron=556,e.tcommaaccent=333,e.logicalnot=570,e.odieresis=500,e.udieresis=556,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=444,e.ncommaaccent=556,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-BoldItalic"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=389,e.quotedbl=555,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=570,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=570,e.equal=570,e.greater=570,e.question=500,e.at=832,e.A=667,e.B=667,e.C=667,e.D=722,e.E=667,e.F=667,e.G=722,e.H=778,e.I=389,e.J=500,e.K=667,e.L=611,e.M=889,e.N=722,e.O=722,e.P=611,e.Q=722,e.R=667,e.S=556,e.T=611,e.U=722,e.V=667,e.W=889,e.X=667,e.Y=611,e.Z=611,e.bracketleft=333,e.backslash=278,e.bracketright=333,e.asciicircum=570,e.underscore=500,e.quoteleft=333,e.a=500,e.b=500,e.c=444,e.d=500,e.e=444,e.f=333,e.g=500,e.h=556,e.i=278,e.j=278,e.k=500,e.l=278,e.m=778,e.n=556,e.o=500,e.p=500,e.q=500,e.r=389,e.s=389,e.t=278,e.u=556,e.v=444,e.w=667,e.x=500,e.y=444,e.z=389,e.braceleft=348,e.bar=220,e.braceright=348,e.asciitilde=570,e.exclamdown=389,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=278,e.quotedblleft=500,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=556,e.fl=556,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=500,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=500,e.quotedblright=500,e.guillemotright=500,e.ellipsis=1e3,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=1e3,e.AE=944,e.ordfeminine=266,e.Lslash=611,e.Oslash=722,e.OE=944,e.ordmasculine=300,e.ae=722,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=722,e.germandbls=500,e.Idieresis=389,e.eacute=444,e.abreve=500,e.uhungarumlaut=556,e.ecaron=444,e.Ydieresis=611,e.divide=570,e.Yacute=611,e.Acircumflex=667,e.aacute=500,e.Ucircumflex=722,e.yacute=444,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=556,e.Edieresis=667,e.Dcroat=722,e.commaaccent=250,e.copyright=747,e.Emacron=667,e.ccaron=444,e.aring=500,e.Ncommaaccent=722,e.lacute=278,e.agrave=500,e.Tcommaaccent=611,e.Cacute=667,e.atilde=500,e.Edotaccent=667,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=494,e.Rcaron=667,e.Gcommaaccent=722,e.ucircumflex=556,e.acircumflex=500,e.Amacron=667,e.rcaron=389,e.ccedilla=444,e.Zdotaccent=611,e.Thorn=611,e.Omacron=722,e.Racute=667,e.Sacute=556,e.dcaron=608,e.Umacron=722,e.uring=556,e.threesuperior=300,e.Ograve=722,e.Agrave=667,e.Abreve=667,e.multiply=570,e.uacute=556,e.Tcaron=611,e.partialdiff=494,e.ydieresis=444,e.Nacute=722,e.icircumflex=278,e.Ecircumflex=667,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=556,e.umacron=556,e.Ncaron=722,e.Iacute=389,e.plusminus=570,e.brokenbar=220,e.registered=747,e.Gbreve=722,e.Idotaccent=389,e.summation=600,e.Egrave=667,e.racute=389,e.omacron=500,e.Zacute=611,e.Zcaron=611,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=366,e.eogonek=444,e.Uogonek=722,e.Aacute=667,e.Adieresis=667,e.egrave=444,e.zacute=389,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=576,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=667,e.dcroat=500,e.threequarters=750,e.Scedilla=556,e.lcaron=382,e.Kcommaaccent=667,e.Lacute=611,e.trademark=1e3,e.edotaccent=444,e.Igrave=389,e.Imacron=389,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=556,e.Uhungarumlaut=722,e.Eacute=667,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=556,e.Scommaaccent=556,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=556,e.radical=549,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=722,e.otilde=500,e.Rcommaaccent=667,e.Lcommaaccent=611,e.Atilde=667,e.Aogonek=667,e.Aring=667,e.Otilde=722,e.zdotaccent=389,e.Ecaron=667,e.Iogonek=389,e.kcommaaccent=500,e.minus=606,e.Icircumflex=389,e.ncaron=556,e.tcommaaccent=278,e.logicalnot=606,e.odieresis=500,e.udieresis=556,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=389,e.ncommaaccent=556,e.onesuperior=300,e.imacron=278,e.Euro=500})),e["Times-Italic"]=(0,n.getLookupTableFactory)((function(e){e.space=250,e.exclam=333,e.quotedbl=420,e.numbersign=500,e.dollar=500,e.percent=833,e.ampersand=778,e.quoteright=333,e.parenleft=333,e.parenright=333,e.asterisk=500,e.plus=675,e.comma=250,e.hyphen=333,e.period=250,e.slash=278,e.zero=500,e.one=500,e.two=500,e.three=500,e.four=500,e.five=500,e.six=500,e.seven=500,e.eight=500,e.nine=500,e.colon=333,e.semicolon=333,e.less=675,e.equal=675,e.greater=675,e.question=500,e.at=920,e.A=611,e.B=611,e.C=667,e.D=722,e.E=611,e.F=611,e.G=722,e.H=722,e.I=333,e.J=444,e.K=667,e.L=556,e.M=833,e.N=667,e.O=722,e.P=611,e.Q=722,e.R=611,e.S=500,e.T=556,e.U=722,e.V=611,e.W=833,e.X=611,e.Y=556,e.Z=556,e.bracketleft=389,e.backslash=278,e.bracketright=389,e.asciicircum=422,e.underscore=500,e.quoteleft=333,e.a=500,e.b=500,e.c=444,e.d=500,e.e=444,e.f=278,e.g=500,e.h=500,e.i=278,e.j=278,e.k=444,e.l=278,e.m=722,e.n=500,e.o=500,e.p=500,e.q=500,e.r=389,e.s=389,e.t=278,e.u=500,e.v=444,e.w=667,e.x=444,e.y=444,e.z=389,e.braceleft=400,e.bar=275,e.braceright=400,e.asciitilde=541,e.exclamdown=389,e.cent=500,e.sterling=500,e.fraction=167,e.yen=500,e.florin=500,e.section=500,e.currency=500,e.quotesingle=214,e.quotedblleft=556,e.guillemotleft=500,e.guilsinglleft=333,e.guilsinglright=333,e.fi=500,e.fl=500,e.endash=500,e.dagger=500,e.daggerdbl=500,e.periodcentered=250,e.paragraph=523,e.bullet=350,e.quotesinglbase=333,e.quotedblbase=556,e.quotedblright=556,e.guillemotright=500,e.ellipsis=889,e.perthousand=1e3,e.questiondown=500,e.grave=333,e.acute=333,e.circumflex=333,e.tilde=333,e.macron=333,e.breve=333,e.dotaccent=333,e.dieresis=333,e.ring=333,e.cedilla=333,e.hungarumlaut=333,e.ogonek=333,e.caron=333,e.emdash=889,e.AE=889,e.ordfeminine=276,e.Lslash=556,e.Oslash=722,e.OE=944,e.ordmasculine=310,e.ae=667,e.dotlessi=278,e.lslash=278,e.oslash=500,e.oe=667,e.germandbls=500,e.Idieresis=333,e.eacute=444,e.abreve=500,e.uhungarumlaut=500,e.ecaron=444,e.Ydieresis=556,e.divide=675,e.Yacute=556,e.Acircumflex=611,e.aacute=500,e.Ucircumflex=722,e.yacute=444,e.scommaaccent=389,e.ecircumflex=444,e.Uring=722,e.Udieresis=722,e.aogonek=500,e.Uacute=722,e.uogonek=500,e.Edieresis=611,e.Dcroat=722,e.commaaccent=250,e.copyright=760,e.Emacron=611,e.ccaron=444,e.aring=500,e.Ncommaaccent=667,e.lacute=278,e.agrave=500,e.Tcommaaccent=556,e.Cacute=667,e.atilde=500,e.Edotaccent=611,e.scaron=389,e.scedilla=389,e.iacute=278,e.lozenge=471,e.Rcaron=611,e.Gcommaaccent=722,e.ucircumflex=500,e.acircumflex=500,e.Amacron=611,e.rcaron=389,e.ccedilla=444,e.Zdotaccent=556,e.Thorn=611,e.Omacron=722,e.Racute=611,e.Sacute=500,e.dcaron=544,e.Umacron=722,e.uring=500,e.threesuperior=300,e.Ograve=722,e.Agrave=611,e.Abreve=611,e.multiply=675,e.uacute=500,e.Tcaron=556,e.partialdiff=476,e.ydieresis=444,e.Nacute=667,e.icircumflex=278,e.Ecircumflex=611,e.adieresis=500,e.edieresis=444,e.cacute=444,e.nacute=500,e.umacron=500,e.Ncaron=667,e.Iacute=333,e.plusminus=675,e.brokenbar=275,e.registered=760,e.Gbreve=722,e.Idotaccent=333,e.summation=600,e.Egrave=611,e.racute=389,e.omacron=500,e.Zacute=556,e.Zcaron=556,e.greaterequal=549,e.Eth=722,e.Ccedilla=667,e.lcommaaccent=278,e.tcaron=300,e.eogonek=444,e.Uogonek=722,e.Aacute=611,e.Adieresis=611,e.egrave=444,e.zacute=389,e.iogonek=278,e.Oacute=722,e.oacute=500,e.amacron=500,e.sacute=389,e.idieresis=278,e.Ocircumflex=722,e.Ugrave=722,e.Delta=612,e.thorn=500,e.twosuperior=300,e.Odieresis=722,e.mu=500,e.igrave=278,e.ohungarumlaut=500,e.Eogonek=611,e.dcroat=500,e.threequarters=750,e.Scedilla=500,e.lcaron=300,e.Kcommaaccent=667,e.Lacute=556,e.trademark=980,e.edotaccent=444,e.Igrave=333,e.Imacron=333,e.Lcaron=611,e.onehalf=750,e.lessequal=549,e.ocircumflex=500,e.ntilde=500,e.Uhungarumlaut=722,e.Eacute=611,e.emacron=444,e.gbreve=500,e.onequarter=750,e.Scaron=500,e.Scommaaccent=500,e.Ohungarumlaut=722,e.degree=400,e.ograve=500,e.Ccaron=667,e.ugrave=500,e.radical=453,e.Dcaron=722,e.rcommaaccent=389,e.Ntilde=667,e.otilde=500,e.Rcommaaccent=611,e.Lcommaaccent=556,e.Atilde=611,e.Aogonek=611,e.Aring=611,e.Otilde=722,e.zdotaccent=389,e.Ecaron=611,e.Iogonek=333,e.kcommaaccent=444,e.minus=675,e.Icircumflex=333,e.ncaron=500,e.tcommaaccent=278,e.logicalnot=675,e.odieresis=500,e.udieresis=500,e.notequal=549,e.gcommaaccent=500,e.eth=500,e.zcaron=389,e.ncommaaccent=500,e.onesuperior=300,e.imacron=278,e.Euro=500})),e.ZapfDingbats=(0,n.getLookupTableFactory)((function(e){e.space=278,e.a1=974,e.a2=961,e.a202=974,e.a3=980,e.a4=719,e.a5=789,e.a119=790,e.a118=791,e.a117=690,e.a11=960,e.a12=939,e.a13=549,e.a14=855,e.a15=911,e.a16=933,e.a105=911,e.a17=945,e.a18=974,e.a19=755,e.a20=846,e.a21=762,e.a22=761,e.a23=571,e.a24=677,e.a25=763,e.a26=760,e.a27=759,e.a28=754,e.a6=494,e.a7=552,e.a8=537,e.a9=577,e.a10=692,e.a29=786,e.a30=788,e.a31=788,e.a32=790,e.a33=793,e.a34=794,e.a35=816,e.a36=823,e.a37=789,e.a38=841,e.a39=823,e.a40=833,e.a41=816,e.a42=831,e.a43=923,e.a44=744,e.a45=723,e.a46=749,e.a47=790,e.a48=792,e.a49=695,e.a50=776,e.a51=768,e.a52=792,e.a53=759,e.a54=707,e.a55=708,e.a56=682,e.a57=701,e.a58=826,e.a59=815,e.a60=789,e.a61=789,e.a62=707,e.a63=687,e.a64=696,e.a65=689,e.a66=786,e.a67=787,e.a68=713,e.a69=791,e.a70=785,e.a71=791,e.a72=873,e.a73=761,e.a74=762,e.a203=762,e.a75=759,e.a204=759,e.a76=892,e.a77=892,e.a78=788,e.a79=784,e.a81=438,e.a82=138,e.a83=277,e.a84=415,e.a97=392,e.a98=392,e.a99=668,e.a100=668,e.a89=390,e.a90=390,e.a93=317,e.a94=317,e.a91=276,e.a92=276,e.a205=509,e.a85=509,e.a206=410,e.a86=410,e.a87=234,e.a88=234,e.a95=334,e.a96=334,e.a101=732,e.a102=544,e.a103=544,e.a104=910,e.a106=667,e.a107=760,e.a108=760,e.a112=776,e.a111=595,e.a110=694,e.a109=626,e.a120=788,e.a121=788,e.a122=788,e.a123=788,e.a124=788,e.a125=788,e.a126=788,e.a127=788,e.a128=788,e.a129=788,e.a130=788,e.a131=788,e.a132=788,e.a133=788,e.a134=788,e.a135=788,e.a136=788,e.a137=788,e.a138=788,e.a139=788,e.a140=788,e.a141=788,e.a142=788,e.a143=788,e.a144=788,e.a145=788,e.a146=788,e.a147=788,e.a148=788,e.a149=788,e.a150=788,e.a151=788,e.a152=788,e.a153=788,e.a154=788,e.a155=788,e.a156=788,e.a157=788,e.a158=788,e.a159=788,e.a160=894,e.a161=838,e.a163=1016,e.a164=458,e.a196=748,e.a165=924,e.a192=748,e.a166=918,e.a167=927,e.a168=928,e.a169=928,e.a170=834,e.a171=873,e.a172=828,e.a173=924,e.a162=924,e.a174=917,e.a175=930,e.a176=931,e.a177=463,e.a178=883,e.a179=836,e.a193=836,e.a180=867,e.a199=867,e.a181=696,e.a200=696,e.a182=874,e.a201=874,e.a183=760,e.a184=946,e.a197=771,e.a185=865,e.a194=771,e.a198=888,e.a186=967,e.a195=888,e.a187=831,e.a188=873,e.a189=927,e.a190=970,e.a191=918}))}));t.getMetrics=a;const i=(0,n.getLookupTableFactory)((function(e){e.Courier={ascent:629,descent:-157,capHeight:562,xHeight:-426},e["Courier-Bold"]={ascent:629,descent:-157,capHeight:562,xHeight:439},e["Courier-Oblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426},e["Courier-BoldOblique"]={ascent:629,descent:-157,capHeight:562,xHeight:426},e.Helvetica={ascent:718,descent:-207,capHeight:718,xHeight:523},e["Helvetica-Bold"]={ascent:718,descent:-207,capHeight:718,xHeight:532},e["Helvetica-Oblique"]={ascent:718,descent:-207,capHeight:718,xHeight:523},e["Helvetica-BoldOblique"]={ascent:718,descent:-207,capHeight:718,xHeight:532},e["Times-Roman"]={ascent:683,descent:-217,capHeight:662,xHeight:450},e["Times-Bold"]={ascent:683,descent:-217,capHeight:676,xHeight:461},e["Times-Italic"]={ascent:683,descent:-217,capHeight:653,xHeight:441},e["Times-BoldItalic"]={ascent:683,descent:-217,capHeight:669,xHeight:462},e.Symbol={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN},e.ZapfDingbats={ascent:Math.NaN,descent:Math.NaN,capHeight:Math.NaN,xHeight:Math.NaN}}));t.getFontBasicMetrics=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.GlyfTable=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(157),t.GlyfTable=class{constructor(e){let{glyfTable:t,isGlyphLocationsLong:r,locaTable:a,numGlyphs:i}=e;this.glyphs=[];const s=new DataView(a.buffer,a.byteOffset,a.byteLength),o=new DataView(t.buffer,t.byteOffset,t.byteLength),c=r?4:2;let l=r?s.getUint32(0):2*s.getUint16(0),h=0;for(let e=0;ee+(t.getSize()+3&-4)),0)}write(){const e=this.getSize(),t=new DataView(new ArrayBuffer(e)),r=e>131070,n=r?4:2,a=new DataView(new ArrayBuffer((this.glyphs.length+1)*n));r?a.setUint32(0,0):a.setUint16(0,0);let i=0,s=0;for(const e of this.glyphs)i+=e.write(i,t),i=i+3&-4,s+=n,r?a.setUint32(s,i):a.setUint16(s,i>>1);return{isLocationLong:r,loca:new Uint8Array(a.buffer),glyf:new Uint8Array(t.buffer)}}scale(e){for(let t=0,r=this.glyphs.length;te+t.getSize()),0);return this.header.getSize()+e}write(e,t){if(!this.header)return 0;const r=e;if(e+=this.header.write(e,t),this.simple)e+=this.simple.write(e,t);else for(const r of this.composites)e+=r.write(e,t);return e-r}scale(e){if(!this.header)return;const t=(this.header.xMin+this.header.xMax)/2;if(this.header.scale(t,e),this.simple)this.simple.scale(t,e);else for(const r of this.composites)r.scale(t,e)}}class a{constructor(e){let{numberOfContours:t,xMin:r,yMin:n,xMax:a,yMax:i}=e;this.numberOfContours=t,this.xMin=r,this.yMin=n,this.xMax=a,this.yMax=i}static parse(e,t){return[10,new a({numberOfContours:t.getInt16(e),xMin:t.getInt16(e+2),yMin:t.getInt16(e+4),xMax:t.getInt16(e+6),yMax:t.getInt16(e+8)})]}getSize(){return 10}write(e,t){return t.setInt16(e,this.numberOfContours),t.setInt16(e+2,this.xMin),t.setInt16(e+4,this.yMin),t.setInt16(e+6,this.xMax),t.setInt16(e+8,this.yMax),10}scale(e,t){this.xMin=Math.round(e+(this.xMin-e)*t),this.xMax=Math.round(e+(this.xMax-e)*t)}}class i{constructor(e){let{flags:t,xCoordinates:r,yCoordinates:n}=e;this.xCoordinates=r,this.yCoordinates=n,this.flags=t}}class s{constructor(e){let{contours:t,instructions:r}=e;this.contours=t,this.instructions=r}static parse(e,t,r){const n=[];for(let a=0;a255?e+=2:o>0&&(e+=1),t=i,o=Math.abs(s-r),o>255?e+=2:o>0&&(e+=1),r=s}}return e}write(e,t){const r=e,n=[],a=[],i=[];let s=0,o=0;for(const r of this.contours){for(let e=0,t=r.xCoordinates.length;e=0?18:2,n.push(e)):n.push(l)}s=c;const h=r.yCoordinates[e];if(l=h-o,0===l)t|=32,a.push(0);else{const e=Math.abs(l);e<=255?(t|=l>=0?36:4,a.push(e)):a.push(l)}o=h,i.push(t)}t.setUint16(e,n.length-1),e+=2}t.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length);for(const r of i)t.setUint8(e++,r);for(let r=0,a=n.length;r=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(e+=2):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(e+=2),e}write(e,t){const r=e;return 2&this.flags?this.argument1>=-128&&this.argument1<=127&&this.argument2>=-128&&this.argument2<=127||(this.flags|=1):this.argument1>=0&&this.argument1<=255&&this.argument2>=0&&this.argument2<=255||(this.flags|=1),t.setUint16(e,this.flags),t.setUint16(e+2,this.glyphIndex),e+=4,1&this.flags?(2&this.flags?(t.setInt16(e,this.argument1),t.setInt16(e+2,this.argument2)):(t.setUint16(e,this.argument1),t.setUint16(e+2,this.argument2)),e+=4):(t.setUint8(e,this.argument1),t.setUint8(e+1,this.argument2),e+=2),256&this.flags&&(t.setUint16(e,this.instructions.length),e+=2,this.instructions.length&&(new Uint8Array(t.buffer,0,t.buffer.byteLength).set(this.instructions,e),e+=this.instructions.length)),e-r}scale(e,t){}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.OpenTypeFileBuilder=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(149),a=r(144);function i(e,t,r){e[t]=r>>8&255,e[t+1]=255&r}function s(e,t,r){e[t]=r>>24&255,e[t+1]=r>>16&255,e[t+2]=r>>8&255,e[t+3]=255&r}function o(e,t,r){if(r instanceof Uint8Array)e.set(r,t);else if("string"==typeof r)for(let n=0,a=r.length;nr;)r<<=1,n++;const a=r*t;return{range:a,entry:n,rangeShift:t*e-a}}toArray(){let e=this.sfnt;const t=this.tables,r=Object.keys(t);r.sort();const l=r.length;let h,u,d,f,g,p=12+16*l;const m=[p];for(h=0;h>>0,m.push(p);const b=new Uint8Array(p);for(h=0;h>>0;s(b,p+4,e),s(b,p+8,m[h]),s(b,p+12,t[g].length),p+=16}return b}addTable(e,t){if(e in this.tables)throw new Error("Table "+e+" already exists");this.tables[e]=t}}t.OpenTypeFileBuilder=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Font=void 0,r(139);var n=r(185),a=r(144),i=r(188),s=r(149),o=r(154),c=r(199);function l(e,t,r){const n=e.length,a=t.length,i=n-a;let o=r,c=!1;for(;o=a){for(o+=r;o=0&&(n[e]=a)}return(0,i.type1FontGlyphMapping)(e,n,r)}hasGlyphId(e){return!(e<0||e>=this.numGlyphs)&&(0===e||this.charstrings[e-1].charstring.length>0)}getSeacs(e){const t=[];for(let r=0,n=e.length;r0;e--)t[e]-=t[e-1];g.setByName(e,t)}s.topDict.privateDict=g;const m=new n.CFFIndex;for(u=0,d=a.length;u{Object.defineProperty(t,"__esModule",{value:!0}),t.Type1Parser=void 0,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(159);var n=r(187),a=r(149),i=r(154),s=r(144);const o=[4],c=[5],l=[6],h=[7],u=[8],d=[12,35],f=[14],g=[21],p=[22],m=[30],b=[31];class y{constructor(){this.width=0,this.lsb=0,this.flexing=!1,this.output=[],this.stack=[]}convert(e,t,r){const n=e.length;let a,i,y,w=!1;for(let v=0;vn)return!0;const a=n-e;for(let e=a;e>8&255,255&t):(t=65536*t|0,this.output.push(255,t>>24&255,t>>16&255,t>>8&255,255&t))}return this.output.push(...t),r?this.stack.splice(a,e):this.stack.length=0,!1}}function w(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function v(e,t,r){if(r>=e.length)return new Uint8Array(0);let n,a,i=0|t;for(n=0;n>8,i=52845*(t+i)+22719&65535}return o}function x(e){return 47===e||91===e||93===e||123===e||125===e||40===e||41===e}t.Type1Parser=class{constructor(e,t,r){if(t){const t=e.getBytes(),r=!((w(t[0])||(0,a.isWhiteSpace)(t[0]))&&w(t[1])&&w(t[2])&&w(t[3])&&w(t[4])&&w(t[5])&&w(t[6])&&w(t[7]));e=new i.Stream(r?v(t,55665,4):function(e,t,r){let n=55665;const a=e.length,i=new Uint8Array(a>>>1);let s,o;for(s=0,o=0;s>8,n=52845*(e+n)+22719&65535}}return i.slice(4,o)}(t))}this.seacAnalysisEnabled=!!r,this.stream=e,this.nextChar()}readNumberArray(){this.getToken();const e=[];for(;;){const t=this.getToken();if(null===t||"]"===t||"}"===t)break;e.push(parseFloat(t||0))}return e}readNumber(){const e=this.getToken();return parseFloat(e||0)}readInt(){const e=this.getToken();return 0|parseInt(e||0,10)}readBoolean(){return"true"===this.getToken()?1:0}nextChar(){return this.currentChar=this.stream.getByte()}prevChar(){return this.stream.skip(-2),this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(-1===t)return null;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,a.isWhiteSpace)(t))break;t=this.nextChar()}if(x(t))return this.nextChar(),String.fromCharCode(t);let r="";do{r+=String.fromCharCode(t),t=this.nextChar()}while(t>=0&&!(0,a.isWhiteSpace)(t)&&!x(t));return r}readCharStrings(e,t){return-1===t?e:v(e,4330,t)}extractFontProgram(e){const t=this.stream,r=[],n=[],a=Object.create(null);a.lenIV=4;const i={subrs:[],charstrings:[],properties:{privateData:a}};let s,o,c,l;for(;null!==(s=this.getToken());)if("/"===s)switch(s=this.getToken(),s){case"CharStrings":for(this.getToken(),this.getToken(),this.getToken(),this.getToken();s=this.getToken(),null!==s&&"end"!==s;){if("/"!==s)continue;const e=this.getToken();o=this.readInt(),this.getToken(),c=o>0?t.getBytes(o):new Uint8Array(0),l=i.properties.privateData.lenIV;const r=this.readCharStrings(c,l);this.nextChar(),s=this.getToken(),"noaccess"===s?this.getToken():"/"===s&&this.prevChar(),n.push({glyph:e,encoded:r})}break;case"Subrs":for(this.readInt(),this.getToken();"dup"===this.getToken();){const e=this.readInt();o=this.readInt(),this.getToken(),c=o>0?t.getBytes(o):new Uint8Array(0),l=i.properties.privateData.lenIV;const n=this.readCharStrings(c,l);this.nextChar(),s=this.getToken(),"noaccess"===s&&this.getToken(),r[e]=n}break;case"BlueValues":case"OtherBlues":case"FamilyBlues":case"FamilyOtherBlues":const e=this.readNumberArray();e.length>0&&e.length;break;case"StemSnapH":case"StemSnapV":i.properties.privateData[s]=this.readNumberArray();break;case"StdHW":case"StdVW":i.properties.privateData[s]=this.readNumberArray()[0];break;case"BlueShift":case"lenIV":case"BlueFuzz":case"BlueScale":case"LanguageGroup":i.properties.privateData[s]=this.readNumber();break;case"ExpansionFactor":i.properties.privateData[s]=this.readNumber()||.06;break;case"ForceBold":i.properties.privateData[s]=this.readBoolean()}for(const{encoded:t,glyph:a}of n){const n=new y,s=n.convert(t,r,this.seacAnalysisEnabled);let o=n.output;s&&(o=[14]);const c={glyphName:a,charstring:o,width:n.width,lsb:n.lsb,seac:n.seac};if(".notdef"===a?i.charstrings.unshift(c):i.charstrings.push(c),e.builtInEncoding){const t=e.builtInEncoding.indexOf(a);t>-1&&void 0===e.widths[t]&&t>=e.firstChar&&t<=e.lastChar&&(e.widths[t]=n.width)}}return i}extractFontHeader(e){let t;for(;null!==(t=this.getToken());)if("/"===t)switch(t=this.getToken(),t){case"FontMatrix":const r=this.readNumberArray();e.fontMatrix=r;break;case"Encoding":const a=this.getToken();let i;if(/^\\d+$/.test(a)){i=[];const e=0|parseInt(a,10);this.getToken();for(let r=0;r{Object.defineProperty(t,"__esModule",{value:!0}),t.Pattern=void 0,t.getTilingPatternIR=function(e,t,r){const a=t.getArray("Matrix"),i=n.Util.normalizeRect(t.getArray("BBox")),s=t.get("XStep"),o=t.get("YStep"),c=t.get("PaintType"),l=t.get("TilingType");if(i[2]-i[0]==0||i[3]-i[1]==0)throw new n.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(i,"]."));return["TilingPattern",r,e,a,i,s,o,c,l]},r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(159);var n=r(144),a=r(151),s=r(162),o=r(149);t.Pattern=class{constructor(){(0,n.unreachable)("Cannot initialize Pattern.")}static parseShading(e,t,r,i,s){const c=e instanceof a.BaseStream?e.dict:e,h=c.get("ShadingType");try{switch(h){case 2:case 3:return new l(c,t,r,i,s);case 4:case 5:case 6:case 7:return new d(e,t,r,i,s);default:throw new n.FormatError("Unsupported ShadingType: "+h)}}catch(e){if(e instanceof o.MissingDataException)throw e;return(0,n.warn)(e),new f}}};class c{constructor(){this.constructor===c&&(0,n.unreachable)("Cannot initialize BaseShading.")}getIR(){(0,n.unreachable)("Abstract method \`getIR\` called.")}}i(c,"SMALL_NUMBER",1e-6);class l extends c{constructor(e,t,r,a,i){super(),this.coordsArr=e.getArray("Coords"),this.shadingType=e.get("ShadingType");const o=s.ColorSpace.parse({cs:e.getRaw("CS")||e.getRaw("ColorSpace"),xref:t,resources:r,pdfFunctionFactory:a,localColorSpaceCache:i}),l=e.getArray("BBox");this.bbox=Array.isArray(l)&&4===l.length?n.Util.normalizeRect(l):null;let h=0,u=1;if(e.has("Domain")){const t=e.getArray("Domain");h=t[0],u=t[1]}let d=!1,f=!1;if(e.has("Extend")){const t=e.getArray("Extend");d=t[0],f=t[1]}if(!(3!==this.shadingType||d&&f)){const[e,t,r,a,i,s]=this.coordsArr,o=Math.hypot(e-a,t-i);r<=s+o&&s<=r+o&&(0,n.warn)("Unsupported radial gradient.")}this.extendStart=d,this.extendEnd=f;const g=e.getRaw("Function"),p=a.createFromArray(g),m=(u-h)/840,b=this.colorStops=[];if(h>=u||m<=0)return void(0,n.info)("Bad shading domain.");const y=new Float32Array(o.numComps),w=new Float32Array(1);let v,x=0;w[0]=h,p(w,0,y,0);let S=o.getRgb(y,0);const A=n.Util.makeHexColor(S[0],S[1],S[2]);b.push([0,A]);let k=1;w[0]=h+m,p(w,0,y,0);let C=o.getRgb(y,0),O=C[0]-S[0]+1,F=C[1]-S[1]+1,I=C[2]-S[2]+1,T=C[0]-S[0]-1,M=C[1]-S[1]-1,E=C[2]-S[2]-1;for(let e=2;e<840;e++){w[0]=h+e*m,p(w,0,y,0),v=o.getRgb(y,0);const t=e-x;if(O=Math.min(O,(v[0]-S[0]+1)/t),F=Math.min(F,(v[1]-S[1]+1)/t),I=Math.min(I,(v[2]-S[2]+1)/t),T=Math.max(T,(v[0]-S[0]-1)/t),M=Math.max(M,(v[1]-S[1]-1)/t),E=Math.max(E,(v[2]-S[2]-1)/t),!(T<=O&&M<=F&&E<=I)){const e=n.Util.makeHexColor(C[0],C[1],C[2]);b.push([k/840,e]),O=v[0]-C[0]+1,F=v[1]-C[1]+1,I=v[2]-C[2]+1,T=v[0]-C[0]-1,M=v[1]-C[1]-1,E=v[2]-C[2]-1,x=k,S=C}k=e,C=v}const P=n.Util.makeHexColor(C[0],C[1],C[2]);b.push([1,P]);let R="transparent";e.has("Background")&&(v=o.getRgb(e.get("Background"),0),R=n.Util.makeHexColor(v[0],v[1],v[2])),d||(b.unshift([0,R]),b[1][0]+=c.SMALL_NUMBER),f||(b.at(-1)[0]-=c.SMALL_NUMBER,b.push([1,R])),this.colorStops=b}getIR(){const e=this.coordsArr,t=this.shadingType;let r,a,i,s,o;return 2===t?(a=[e[0],e[1]],i=[e[2],e[3]],s=null,o=null,r="axial"):3===t?(a=[e[0],e[1]],i=[e[3],e[4]],s=e[2],o=e[5],r="radial"):(0,n.unreachable)("getPattern type unknown: ".concat(t)),["RadialAxial",r,this.bbox,this.colorStops,a,i,s,o]}}class h{constructor(e,t){this.stream=e,this.context=t,this.buffer=0,this.bufferLength=0;const r=t.numComps;this.tmpCompsBuf=new Float32Array(r);const n=t.colorSpace.numComps;this.tmpCsCompsBuf=t.colorFn?new Float32Array(n):this.tmpCompsBuf}get hasData(){if(this.stream.end)return this.stream.pos0)return!0;const e=this.stream.getByte();return!(e<0||(this.buffer=e,this.bufferLength=8,0))}readBits(e){let t=this.buffer,r=this.bufferLength;if(32===e){if(0===r)return(this.stream.getByte()<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte())>>>0;t=t<<24|this.stream.getByte()<<16|this.stream.getByte()<<8|this.stream.getByte();const e=this.stream.getByte();return this.buffer=e&(1<>r)>>>0}if(8===e&&0===r)return this.stream.getByte();for(;r>r}align(){this.buffer=0,this.bufferLength=0}readFlag(){return this.readBits(this.context.bitsPerFlag)}readCoordinate(){const e=this.context.bitsPerCoordinate,t=this.readBits(e),r=this.readBits(e),n=this.context.decode,a=e<32?1/((1<i?i:e,t=t>s?s:t,r=r{Object.defineProperty(t,"__esModule",{value:!0}),t.getXfaFontDict=function(e){const t=function(e){const t=d(e);if(!t)return null;const{baseWidths:r,baseMapping:n,factors:a}=t,i=a?r.map(((e,t)=>e*a[t])):r;let s,o=-2;const c=[];for(const[e,t]of n.map(((e,t)=>[e,t])).sort(((e,t)=>{let[r]=e,[n]=t;return r-n})))-1!==e&&(e===o+1?(s.push(i[t]),o+=1):(o=e,s=[i[t]],c.push(e,s)));return c}(e),r=new a.Dict(null);r.set("BaseFont",a.Name.get(e)),r.set("Type",a.Name.get("Font")),r.set("Subtype",a.Name.get("CIDFontType2")),r.set("Encoding",a.Name.get("Identity-H")),r.set("CIDToGIDMap",a.Name.get("Identity")),r.set("W",t),r.set("FirstChar",t[0]),r.set("LastChar",t.at(-2)+t.at(-1).length-1);const n=new a.Dict(null);r.set("FontDescriptor",n);const i=new a.Dict(null);return i.set("Ordering","Identity"),i.set("Registry","Adobe"),i.set("Supplement",0),r.set("CIDSystemInfo",i),r},t.getXfaFontName=d,r(139);var n=r(202),a=r(150),i=r(203),s=r(204),o=r(205),c=r(206),l=r(149),h=r(188);const u=(0,l.getLookupTableFactory)((function(e){e["MyriadPro-Regular"]=e["PdfJS-Fallback-Regular"]={name:"LiberationSans-Regular",factors:o.MyriadProRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:o.MyriadProRegularMetrics},e["MyriadPro-Bold"]=e["PdfJS-Fallback-Bold"]={name:"LiberationSans-Bold",factors:o.MyriadProBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:o.MyriadProBoldMetrics},e["MyriadPro-It"]=e["MyriadPro-Italic"]=e["PdfJS-Fallback-Italic"]={name:"LiberationSans-Italic",factors:o.MyriadProItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:o.MyriadProItalicMetrics},e["MyriadPro-BoldIt"]=e["MyriadPro-BoldItalic"]=e["PdfJS-Fallback-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:o.MyriadProBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:o.MyriadProBoldItalicMetrics},e.ArialMT=e.Arial=e["Arial-Regular"]={name:"LiberationSans-Regular",baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping},e["Arial-BoldMT"]=e["Arial-Bold"]={name:"LiberationSans-Bold",baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping},e["Arial-ItalicMT"]=e["Arial-Italic"]={name:"LiberationSans-Italic",baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping},e["Arial-BoldItalicMT"]=e["Arial-BoldItalic"]={name:"LiberationSans-BoldItalic",baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping},e["Calibri-Regular"]={name:"LiberationSans-Regular",factors:n.CalibriRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:n.CalibriRegularMetrics},e["Calibri-Bold"]={name:"LiberationSans-Bold",factors:n.CalibriBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:n.CalibriBoldMetrics},e["Calibri-Italic"]={name:"LiberationSans-Italic",factors:n.CalibriItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:n.CalibriItalicMetrics},e["Calibri-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:n.CalibriBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:n.CalibriBoldItalicMetrics},e["Segoeui-Regular"]={name:"LiberationSans-Regular",factors:c.SegoeuiRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:c.SegoeuiRegularMetrics},e["Segoeui-Bold"]={name:"LiberationSans-Bold",factors:c.SegoeuiBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:c.SegoeuiBoldMetrics},e["Segoeui-Italic"]={name:"LiberationSans-Italic",factors:c.SegoeuiItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:c.SegoeuiItalicMetrics},e["Segoeui-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:c.SegoeuiBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:c.SegoeuiBoldItalicMetrics},e["Helvetica-Regular"]=e.Helvetica={name:"LiberationSans-Regular",factors:i.HelveticaRegularFactors,baseWidths:s.LiberationSansRegularWidths,baseMapping:s.LiberationSansRegularMapping,metrics:i.HelveticaRegularMetrics},e["Helvetica-Bold"]={name:"LiberationSans-Bold",factors:i.HelveticaBoldFactors,baseWidths:s.LiberationSansBoldWidths,baseMapping:s.LiberationSansBoldMapping,metrics:i.HelveticaBoldMetrics},e["Helvetica-Italic"]={name:"LiberationSans-Italic",factors:i.HelveticaItalicFactors,baseWidths:s.LiberationSansItalicWidths,baseMapping:s.LiberationSansItalicMapping,metrics:i.HelveticaItalicMetrics},e["Helvetica-BoldItalic"]={name:"LiberationSans-BoldItalic",factors:i.HelveticaBoldItalicFactors,baseWidths:s.LiberationSansBoldItalicWidths,baseMapping:s.LiberationSansBoldItalicMapping,metrics:i.HelveticaBoldItalicMetrics}}));function d(e){const t=(0,h.normalizeFontName)(e);return u()[t]}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CalibriRegularMetrics=t.CalibriRegularFactors=t.CalibriItalicMetrics=t.CalibriItalicFactors=t.CalibriBoldMetrics=t.CalibriBoldItalicMetrics=t.CalibriBoldItalicFactors=t.CalibriBoldFactors=void 0,t.CalibriBoldFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.54657,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.73293,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.9121,.86943,.79795,.88198,.77958,.70864,.81055,.90399,.88653,.96017,.82577,.77892,.78257,.97507,1.54657,.97507,.85284,.89552,.90176,.88762,.8785,.75241,.8785,.90518,.95015,.77618,.8785,.88401,.91916,.86304,.88401,.91488,.8785,.8801,.8785,.8785,.91343,.7173,1.04106,.8785,.85075,.95794,.82616,.85162,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.12401,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.73293,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.9121,.86943,.86943,.86943,.86943,.86943,.85284,.87508,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.88762,.88762,.88762,.88762,.88762,.88762,.8715,.75241,.90518,.90518,.90518,.90518,.88401,.88401,.88401,.88401,.8785,.8785,.8801,.8801,.8801,.8801,.8801,.90747,.89049,.8785,.8785,.8785,.8785,.85162,.8785,.85162,.83908,.88762,.83908,.88762,.83908,.88762,.73293,.75241,.73293,.75241,.73293,.75241,.73293,.75241,.87289,.83016,.88506,.93125,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.73133,.90518,.81921,.77618,.81921,.77618,.81921,.77618,1,1,.87356,.8785,.91075,.89608,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76229,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.79468,.91926,.88175,.70823,.94903,.9121,.8785,1,1,.9121,.8785,.87802,.88656,.8785,.86943,.8801,.86943,.8801,.86943,.8801,.87402,.89291,.77958,.91343,1,1,.77958,.91343,.70864,.7173,.70864,.7173,.70864,.7173,.70864,.7173,1,1,.81055,.75841,.81055,1.06452,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.90399,.8785,.96017,.95794,.77892,.85162,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.88762,.77539,.8715,.87508,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70674,.98387,.94721,1.33431,1.45894,.95161,1.06303,.83908,.80352,.57184,.6965,.56289,.82001,.56029,.81235,1.02988,.83908,.7762,.68156,.80367,.73133,.78257,.87356,.86943,.95958,.75727,.89019,1.04924,.9121,.7648,.86943,.87356,.79795,.78275,.81055,.77892,.9762,.82577,.99819,.84896,.95958,.77892,.96108,1.01407,.89049,1.02988,.94211,.96108,.8936,.84021,.87842,.96399,.79109,.89049,1.00813,1.02988,.86077,.87445,.92099,.84723,.86513,.8801,.75638,.85714,.78216,.79586,.87965,.94211,.97747,.78287,.97926,.84971,1.02988,.94211,.8801,.94211,.84971,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90264,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.90518,1,1,1,1,1,1,1,1,1,1,1,1,.90548,1,1,1,1,1,1,.96017,.95794,.96017,.95794,.96017,.95794,.77892,.85162,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.92794,.87012,.87012,.87012,.89552,.89552,1.42259,.71143,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.93835,.83406,.91133,.84107,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90527,1.81055,.90527,1.81055,1.31006,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriBoldMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriBoldItalicFactors=[1.3877,1,1,1,.97801,.92482,.89552,.91133,.81988,.97566,.98152,.93548,.93548,1.2798,.85284,.92794,1,.96134,1.56239,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.82845,.82845,.85284,.85284,.85284,.75859,.92138,.83908,.7762,.71805,.87289,.73133,.7514,.81921,.87356,.95958,.59526,.75727,.69225,1.04924,.90872,.85938,.79795,.87068,.77958,.69766,.81055,.90399,.88653,.96068,.82577,.77892,.78257,.97507,1.529,.97507,.85284,.89552,.90176,.94908,.86411,.74012,.86411,.88323,.95015,.86411,.86331,.88401,.91916,.86304,.88401,.9039,.86331,.86331,.86411,.86411,.90464,.70852,1.04106,.86331,.84372,.95794,.82616,.84548,.79492,.88331,1.69808,.88331,.85284,.97801,.89552,.91133,.89552,.91133,1.7801,.89552,1.24487,1.13254,1.19129,.96839,.85284,.68787,.70645,.85592,.90747,1.01466,1.0088,.90323,1,1.07463,1,.91056,.75806,1.19118,.96839,.78864,.82845,.84133,.75859,.83908,.83908,.83908,.83908,.83908,.83908,.77539,.71805,.73133,.73133,.73133,.73133,.95958,.95958,.95958,.95958,.88506,.90872,.85938,.85938,.85938,.85938,.85938,.85284,.87068,.90399,.90399,.90399,.90399,.77892,.79795,.90807,.94908,.94908,.94908,.94908,.94908,.94908,.85887,.74012,.88323,.88323,.88323,.88323,.88401,.88401,.88401,.88401,.8785,.86331,.86331,.86331,.86331,.86331,.86331,.90747,.89049,.86331,.86331,.86331,.86331,.84548,.86411,.84548,.83908,.94908,.83908,.94908,.83908,.94908,.71805,.74012,.71805,.74012,.71805,.74012,.71805,.74012,.87289,.79538,.88506,.92726,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.73133,.88323,.81921,.86411,.81921,.86411,.81921,.86411,1,1,.87356,.86331,.91075,.8777,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.95958,.88401,.76467,.90167,.59526,.91916,1,1,.86304,.69225,.88401,1,1,.70424,.77312,.91926,.88175,.70823,.94903,.90872,.86331,1,1,.90872,.86331,.86906,.88116,.86331,.85938,.86331,.85938,.86331,.85938,.86331,.87402,.86549,.77958,.90464,1,1,.77958,.90464,.69766,.70852,.69766,.70852,.69766,.70852,.69766,.70852,1,1,.81055,.75841,.81055,1.06452,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.90399,.86331,.96068,.95794,.77892,.84548,.77892,.78257,.79492,.78257,.79492,.78257,.79492,.9297,.56892,.83908,.94908,.77539,.85887,.87068,.89049,1,1,.81055,1.04106,1.20528,1.20528,1,1.15543,.70088,.98387,.94721,1.33431,1.45894,.95161,1.48387,.83908,.80352,.57118,.6965,.56347,.79179,.55853,.80346,1.02988,.83908,.7762,.67174,.86036,.73133,.78257,.87356,.86441,.95958,.75727,.89019,1.04924,.90872,.74889,.85938,.87891,.79795,.7957,.81055,.77892,.97447,.82577,.97466,.87179,.95958,.77892,.94252,.95612,.8753,1.02988,.92733,.94252,.87411,.84021,.8728,.95612,.74081,.8753,1.02189,1.02988,.84814,.87445,.91822,.84723,.85668,.86331,.81344,.87581,.76422,.82046,.96057,.92733,.99375,.78022,.95452,.86015,1.02988,.92733,.86331,.92733,.86015,.73133,1,1,1,1,1,1,1,1,1,1,1,1,.90631,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.88323,1,1,1,1,1,1,1,1,1,1,1,1,.85174,1,1,1,1,1,1,.96068,.95794,.96068,.95794,.96068,.95794,.77892,.84548,1,1,.89552,.90527,1,.90363,.92794,.92794,.92794,.89807,.87012,.87012,.87012,.89552,.89552,1.42259,.71094,1.06152,1,1,1.03372,1.03372,.97171,1.4956,2.2807,.92972,.83406,.91133,.83326,.91133,1,1,1,.72021,1,1.23108,.83489,.88525,.88525,.81499,.90616,1.81055,.90527,1.81055,1.3107,1.53711,.94434,1.08696,1,.95018,.77192,.85284,.90747,1.17534,.69825,.9716,1.37077,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.08004,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,.90727,.90727,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriBoldItalicMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriItalicFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39543,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.72346,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89249,.84118,.77452,.85374,.75186,.67789,.79776,.88844,.85066,.94309,.77818,.7306,.76659,1.10369,1.38313,1.10369,1.06139,.89552,.8739,.9245,.9245,.83203,.9245,.85865,1.09842,.9245,.9245,1.03297,1.07692,.90918,1.03297,.94959,.9245,.92274,.9245,.9245,1.02933,.77832,1.20562,.9245,.8916,.98986,.86621,.89453,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.16359,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.72346,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89249,.84118,.84118,.84118,.84118,.84118,.85284,.84557,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.9245,.9245,.9245,.9245,.9245,.9245,.84843,.83203,.85865,.85865,.85865,.85865,.82601,.82601,.82601,.82601,.94469,.9245,.92274,.92274,.92274,.92274,.92274,.90747,.86651,.9245,.9245,.9245,.9245,.89453,.9245,.89453,.8675,.9245,.8675,.9245,.8675,.9245,.72346,.83203,.72346,.83203,.72346,.83203,.72346,.83203,.85193,.8875,.86477,.99034,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.73206,.85865,.81105,.9245,.81105,.9245,.81105,.9245,1,1,.86275,.9245,.90872,.93591,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77896,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.9375,.98156,.93407,.77261,1.11429,.89249,.9245,1,1,.89249,.9245,.92534,.86698,.9245,.84118,.92274,.84118,.92274,.84118,.92274,.8667,.86291,.75186,1.02933,1,1,.75186,1.02933,.67789,.77832,.67789,.77832,.67789,.77832,.67789,.77832,1,1,.79776,.97655,.79776,1.23023,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.88844,.9245,.94309,.98986,.7306,.89453,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.9245,.76318,.84843,.84557,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67009,.96334,.93695,1.35191,1.40909,.95161,1.48387,.8675,.90861,.6192,.7363,.64824,.82411,.56321,.85696,1.23516,.8675,.81552,.7286,.84134,.73206,.76659,.86275,.84369,.90685,.77892,.85871,1.02638,.89249,.75828,.84118,.85984,.77452,.76466,.79776,.7306,.90782,.77818,.903,.87291,.90685,.7306,.99058,1.03667,.94635,1.23516,.9849,.99058,.92393,.8916,.942,1.03667,.75026,.94635,1.0297,1.23516,.90918,.94048,.98217,.89746,.84153,.92274,.82507,.88832,.84438,.88178,1.03525,.9849,1.00225,.78086,.97248,.89404,1.23516,.9849,.92274,.9849,.89404,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.89693,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.85865,1,1,1,1,1,1,1,1,1,1,1,1,.90933,1,1,1,1,1,1,.94309,.98986,.94309,.98986,.94309,.98986,.7306,.89453,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.68994,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.97858,.82616,.91133,.83437,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90572,1.81055,.90749,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85284,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.CalibriItalicMetrics={lineHeight:1.2207,lineGap:.2207},t.CalibriRegularFactors=[1.3877,1,1,1,1.17223,1.1293,.89552,.91133,.80395,1.02269,1.15601,.91056,.91056,1.2798,.85284,.89807,1,.90861,1.39016,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.91133,.96309,.96309,.85284,.85284,.85284,.83319,.88071,.8675,.81552,.73834,.85193,.73206,.7522,.81105,.86275,.90685,.6377,.77892,.75593,1.02638,.89385,.85122,.77452,.86503,.75186,.68887,.79776,.88844,.85066,.94258,.77818,.7306,.76659,1.10369,1.39016,1.10369,1.06139,.89552,.8739,.86128,.94469,.8457,.94469,.89464,1.09842,.84636,.94469,1.03297,1.07692,.90918,1.03297,.95897,.94469,.9482,.94469,.94469,1.04692,.78223,1.20562,.94469,.90332,.98986,.86621,.90527,.79004,.94152,1.77256,.94152,.85284,.97801,.89552,.91133,.89552,.91133,1.91729,.89552,1.17889,1.13254,1.08707,.92098,.85284,.68787,.71353,.84737,.90747,1.0088,1.0044,.87683,1,1.09091,1,.92229,.739,1.15642,.92098,.76288,.80504,.80972,.75859,.8675,.8675,.8675,.8675,.8675,.8675,.76318,.73834,.73206,.73206,.73206,.73206,.90685,.90685,.90685,.90685,.86477,.89385,.85122,.85122,.85122,.85122,.85122,.85284,.85311,.88844,.88844,.88844,.88844,.7306,.77452,.86331,.86128,.86128,.86128,.86128,.86128,.86128,.8693,.8457,.89464,.89464,.89464,.89464,.82601,.82601,.82601,.82601,.94469,.94469,.9482,.9482,.9482,.9482,.9482,.90747,.86651,.94469,.94469,.94469,.94469,.90527,.94469,.90527,.8675,.86128,.8675,.86128,.8675,.86128,.73834,.8457,.73834,.8457,.73834,.8457,.73834,.8457,.85193,.92454,.86477,.9921,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.73206,.89464,.81105,.84636,.81105,.84636,.81105,.84636,1,1,.86275,.94469,.90872,.95786,.90685,.82601,.90685,.82601,.90685,.82601,.90685,1.03297,.90685,.82601,.77741,1.05611,.6377,1.07692,1,1,.90918,.75593,1.03297,1,1,.76032,.90452,.98156,1.11842,.77261,1.11429,.89385,.94469,1,1,.89385,.94469,.95877,.86901,.94469,.85122,.9482,.85122,.9482,.85122,.9482,.8667,.90016,.75186,1.04692,1,1,.75186,1.04692,.68887,.78223,.68887,.78223,.68887,.78223,.68887,.78223,1,1,.79776,.92188,.79776,1.23023,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.88844,.94469,.94258,.98986,.7306,.90527,.7306,.76659,.79004,.76659,.79004,.76659,.79004,1.09231,.54873,.8675,.86128,.76318,.8693,.85311,.86651,1,1,.79776,1.20562,1.18622,1.18622,1,1.1437,.67742,.96334,.93695,1.35191,1.40909,.95161,1.48387,.86686,.90861,.62267,.74359,.65649,.85498,.56963,.88254,1.23516,.8675,.81552,.75443,.84503,.73206,.76659,.86275,.85122,.90685,.77892,.85746,1.02638,.89385,.75657,.85122,.86275,.77452,.74171,.79776,.7306,.95165,.77818,.89772,.88831,.90685,.7306,.98142,1.02191,.96576,1.23516,.99018,.98142,.9236,.89258,.94035,1.02191,.78848,.96576,.9561,1.23516,.90918,.92578,.95424,.89746,.83969,.9482,.80113,.89442,.85208,.86155,.98022,.99018,1.00452,.81209,.99247,.89181,1.23516,.99018,.9482,.99018,.89181,.73206,1,1,1,1,1,1,1,1,1,1,1,1,.88844,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89464,1,1,1,1,1,1,1,1,1,1,1,1,.96766,1,1,1,1,1,1,.94258,.98986,.94258,.98986,.94258,.98986,.7306,.90527,1,1,.89552,.90527,1,.90186,1.12308,1.12308,1.12308,1.12308,1.2566,1.2566,1.2566,.89552,.89552,1.42259,.69043,1.03809,1,1,1.0176,1.0176,1.11523,1.4956,2.01462,.99331,.82616,.91133,.84286,.91133,1,1,1,.70508,1,1.23108,.79801,.84426,.84426,.774,.90527,1.81055,.90527,1.81055,1.28809,1.55469,.94434,1.07806,1,.97094,.7589,.85284,.90747,1.19658,.69825,.97622,1.33512,.90747,.90747,.85356,.90747,.90747,1.44947,.85284,.8941,.8941,.70572,.8,.70572,.70572,.70572,.70572,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.99862,.99862,1,1,1,1,1,1.0336,.91027,1,1,1,.99862,1,1,1,1,1,1,1,1,1,1,1,1,1.05859,1.05859,1,1,1,1.07185,.99413,.96334,1.08065,1,1,1,1,1,1,1,1,1,1,1],t.CalibriRegularMetrics={lineHeight:1.2207,lineGap:.2207}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HelveticaRegularMetrics=t.HelveticaRegularFactors=t.HelveticaItalicMetrics=t.HelveticaItalicFactors=t.HelveticaBoldMetrics=t.HelveticaBoldItalicMetrics=t.HelveticaBoldItalicFactors=t.HelveticaBoldFactors=void 0,t.HelveticaBoldFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.03374,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.00042,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.03828,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00034,.99977,1,.99997,1.00026,1.00078,1.00036,.99973,1.00013,1.0006,.99977,.99977,.99988,.85148,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,1.00069,1.00022,.99977,1.00001,.99984,1.00026,1.00001,1.00024,1.00001,.9999,1,1.0006,1.00001,1.00041,.99962,1.00026,1.0006,.99995,1.00041,.99942,.99973,.99927,1.00082,.99902,1.00026,1.00087,1.0006,1.00069,.99973,.99867,.99973,.9993,1.00026,1.00049,1.00056,1,.99988,.99935,.99995,.99954,1.00055,.99945,1.00032,1.0006,.99995,1.00026,.99995,1.00032,1.00001,1.00008,.99971,1.00019,.9994,1.00001,1.0006,1.00044,.99973,1.00023,1.00047,1,.99942,.99561,.99989,1.00035,.99977,1.00035,.99977,1.00019,.99944,1.00001,1.00021,.99926,1.00035,1.00035,.99942,1.00048,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.99989,1.00057,1.00001,.99936,1.00052,1.00012,.99996,1.00043,1,1.00035,.9994,.99976,1.00035,.99973,1.00052,1.00041,1.00119,1.00037,.99973,1.00002,.99986,1.00041,1.00041,.99902,.9996,1.00034,.99999,1.00026,.99999,1.00026,.99973,1.00052,.99973,1,.99973,1.00041,1.00075,.9994,1.0003,.99999,1,1.00041,.99955,1,.99915,.99973,.99973,1.00026,1.00119,.99955,.99973,1.0006,.99911,1.0006,1.00026,.99972,1.00026,.99902,1.00041,.99973,.99999,1,1,1.00038,1.0005,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,1.00047,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaBoldMetrics={lineHeight:1.2,lineGap:.2},t.HelveticaBoldItalicFactors=[.76116,1,1,1.0006,.99998,.99974,.99973,.99973,.99982,.99977,1.00087,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99998,1,1.00003,1.00003,1.00003,1.00026,.9999,.99977,.99977,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,.99973,.99977,1.00026,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,.99998,1.0006,.99998,1.00003,.99973,.99998,.99973,1.00026,.99973,1.00026,.99973,.99998,1.00026,1.00026,1.0006,1.0006,.99973,1.0006,.99982,1.00026,1.00026,1.00026,1.00026,.99959,.99973,.99998,1.00026,.99973,1.00022,.99973,.99973,1,.99959,1.00077,.99959,1.00003,.99998,.99973,.99973,.99973,.99973,1.00077,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.99973,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,.99977,.99977,.99977,.99977,.99977,.99977,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,.99973,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.00026,1.06409,1.00026,1.00026,1.00026,1.00026,1.00026,.99973,1.00026,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,1.0044,.99977,1.00026,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,.99977,1.00026,.99977,1.00026,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99971,.99973,.99973,1.0006,.99977,.99973,.99973,1.00026,1.0006,1.00026,1.0006,1.00026,1.01011,1.00026,.99999,1.00026,1.0006,.99977,1.00026,.99977,1.00026,.99977,1.00026,.9993,.9998,1.00026,1.00022,1.00026,1.00022,1.00026,1.00022,1.00026,1,1.00016,.99977,.99959,.99977,.99959,.99977,.99959,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00026,.99998,1.00026,.8121,1.00026,.99998,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,.99977,1.00026,1.00016,1.00022,1.00001,.99973,1.00001,1.00026,1,1.00026,1,1.00026,1,1.0006,.99973,.99977,.99973,1,.99982,1.00022,1.00026,1.00001,.99973,1.00026,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99977,1,1,1.00026,.99969,.99972,.99981,.9998,1.0006,.99977,.99977,1.00022,.91155,1.00001,1.00026,.99977,1.00022,1.0006,.99977,1.00001,.99999,.99977,.99966,1.00022,1.00032,1.00001,.99944,1.00026,1.00001,.99968,1.00001,1.00047,1,1.0006,1.00001,.99981,1.00101,1.00026,1.0006,.99948,.99981,1.00064,.99973,.99942,1.00101,1.00061,1.00026,1.00069,1.0006,1.00014,.99973,1.01322,.99973,1.00065,1.00026,1.00012,.99923,1,1.00064,1.00076,.99948,1.00055,1.00063,1.00007,.99943,1.0006,.99948,1.00026,.99948,.99943,1.00001,1.00001,1.00029,1.00038,1.00035,1.00001,1.0006,1.0006,.99973,.99978,1.00001,1.00057,.99989,.99967,.99964,.99967,.99977,.99999,.99977,1.00038,.99977,1.00001,.99973,1.00066,.99967,.99967,1.00041,.99998,.99999,.99977,1.00022,.99967,1.00001,.99977,1.00026,.99964,1.00031,1.00001,.99999,.99999,1,1.00023,1,1,.99999,1.00035,1.00001,.99999,.99973,.99977,.99999,1.00058,.99973,.99973,.99955,.9995,1.00026,1.00026,1.00032,.99989,1.00034,.99999,1.00026,1.00026,1.00026,.99973,.45998,.99973,1.00026,.99973,1.00001,.99999,.99982,.99994,.99996,1,1.00042,1.00044,1.00029,1.00023,.99973,.99973,1.00026,.99949,1.00002,.99973,1.0006,1.0006,1.0006,.99975,1.00026,1.00026,1.00032,.98685,.99973,1.00026,1,1,.99966,1.00044,1.00016,1.00022,1.00016,1.00022,1.00016,1.00022,1.00001,.99973,1,1,.99973,1,1,.99955,1.0006,1.0006,1.0006,1.0006,1,1,1,.99973,.99973,.99972,1,1,1.00106,.99999,.99998,.99998,.99999,.99998,1.66475,1,.99973,.99973,1,.99973,.99971,.99978,1,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00098,1,1,1,1.00049,1,1,.99972,1,1.20985,1.39713,1.00003,1.00031,1.00015,1,.99561,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.99972,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaBoldItalicMetrics={lineHeight:1.35,lineGap:.2},t.HelveticaItalicFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.0288,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,.99946,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.06311,.99973,1.00024,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,1.00041,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.89547,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,1.00001,1,1.00054,.99977,1.00084,1.00007,.99973,1.00013,.99924,1.00001,1.00001,.99945,.91221,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00001,.99999,.99977,.99933,1.00022,1.00054,1.00001,1.00065,1.00026,1.00001,1.0001,1.00001,1.00052,1,1.0006,1.00001,.99945,.99897,.99968,.99924,1.00036,.99945,.99949,1,1.0006,.99897,.99918,.99968,.99911,.99924,1,.99962,1.01487,1,1.0005,.99973,1.00012,1.00043,1,.99995,.99994,1.00036,.99947,1.00019,1.00063,1.00025,.99924,1.00036,.99973,1.00036,1.00025,1.00001,1.00001,1.00027,1.0001,1.00068,1.00001,1.0006,1.0006,1,1.00008,.99957,.99972,.9994,.99954,.99975,1.00051,1.00001,1.00019,1.00001,1.0001,.99986,1.00001,1.00001,1.00038,.99954,.99954,.9994,1.00066,.99999,.99977,1.00022,1.00054,1.00001,.99977,1.00026,.99975,1.0001,1.00001,.99993,.9995,.99955,1.00016,.99978,.99974,1.00019,1.00022,.99955,1.00053,.99973,1.00089,1.00005,.99967,1.00048,.99973,1.00002,1.00034,.99973,.99973,.99964,1.00006,1.00066,.99947,.99973,.98894,.99973,1,.44898,1,.99946,1,1.00039,1.00082,.99991,.99991,.99985,1.00022,1.00023,1.00061,1.00006,.99966,.99973,.99973,.99973,1.00019,1.0008,1,.99924,.99924,.99924,.99983,1.00044,.99973,.99964,.98332,1,.99973,1,1,.99962,.99895,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,1.00423,.99925,.99999,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1.00049,1,1.00245,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,1.00003,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,.99998,.99998,.99998,.99998,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaItalicMetrics={lineHeight:1.35,lineGap:.2},t.HelveticaRegularFactors=[.76116,1,1,1.0006,1.0006,1.00006,.99973,.99973,.99982,1.00001,1.00043,.99998,.99998,.99959,1.00003,1.0006,.99998,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.0006,1,1.00003,1.00003,1.00003,.99973,.99987,1.00001,1.00001,.99977,.99977,1.00001,1.00026,1.00022,.99977,1.0006,1,1.00001,.99973,.99999,.99977,1.00022,1.00001,1.00022,.99977,1.00001,1.00026,.99977,1.00001,1.00016,1.00001,1.00001,1.00026,1.0006,1.0006,1.0006,.99949,.99973,.99998,.99973,.99973,1,.99973,.99973,1.0006,.99973,.99973,.99924,.99924,1,.99924,.99999,.99973,.99973,.99973,.99973,.99998,1,1.0006,.99973,1,.99977,1,1,1,1.00005,1.0009,1.00005,1.00003,.99998,.99973,.99973,.99973,.99973,1.0009,.99973,.99998,1.00025,.99968,.99973,1.00003,1.00025,.60299,1.00024,1.06409,1,1,.99998,1,.9998,1.0006,.99998,1,.99936,.99973,1.00002,1.00002,1.00002,1.00026,1.00001,1.00001,1.00001,1.00001,1.00001,1.00001,1,.99977,1.00001,1.00001,1.00001,1.00001,1.0006,1.0006,1.0006,1.0006,.99977,.99977,1.00022,1.00022,1.00022,1.00022,1.00022,1.00003,1.00022,.99977,.99977,.99977,.99977,1.00001,1.00001,1.00026,.99973,.99973,.99973,.99973,.99973,.99973,.99982,1,.99973,.99973,.99973,.99973,1.0006,1.0006,1.0006,1.0006,.99973,.99973,.99973,.99973,.99973,.99973,.99973,1.06409,1.00026,.99973,.99973,.99973,.99973,1,.99973,1,1.00001,.99973,1.00001,.99973,1.00001,.99973,.99977,1,.99977,1,.99977,1,.99977,1,.99977,1.04596,.99977,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00001,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,.99977,.99973,.99977,.99973,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,1.0006,.99924,1.0006,1.0006,1.00019,1.00034,1,.99924,1.00001,1,1,.99973,.99924,.99973,.99924,.99973,1.02572,.99973,1.00005,.99973,.99924,.99977,.99973,.99977,.99973,.99977,.99973,.99999,.9998,.99973,1.00022,.99973,1.00022,.99973,1.00022,.99973,1,1.00016,.99977,.99998,.99977,.99998,.99977,.99998,1.00001,1,1.00001,1,1.00001,1,1.00001,1,1.00026,1.0006,1.00026,.84533,1.00026,1.0006,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,.99977,.99973,1.00016,.99977,1.00001,1,1.00001,1.00026,1,1.00026,1,1.00026,1,.99924,.99973,1.00001,.99973,1,.99982,1.00022,1.00026,1.00001,1,1.00026,1.0006,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99998,.99928,1,.99977,1.00013,1.00055,.99947,.99945,.99941,.99924,1.00001,1.00001,1.0004,.91621,1.00001,1.00026,.99977,1.00022,1.0006,1.00001,1.00005,.99999,.99977,1.00015,1.00022,.99977,1.00001,.99973,1.00026,1.00001,1.00019,1.00001,.99946,1,1.0006,1.00001,.99978,1.00045,.99973,.99924,1.00023,.99978,.99966,1,1.00065,1.00045,1.00019,.99973,.99973,.99924,1,1,.96499,1,1.00055,.99973,1.00008,1.00027,1,.9997,.99995,1.00023,.99933,1.00019,1.00015,1.00031,.99924,1.00023,.99973,1.00023,1.00031,1.00001,.99928,1.00029,1.00092,1.00035,1.00001,1.0006,1.0006,1,.99988,.99975,1,1.00082,.99561,.9996,1.00035,1.00001,.99962,1.00001,1.00092,.99964,1.00001,.99963,.99999,1.00035,1.00035,1.00082,.99962,.99999,.99977,1.00022,1.00035,1.00001,.99977,1.00026,.9996,.99967,1.00001,1.00034,1.00074,1.00054,1.00053,1.00063,.99971,.99962,1.00035,.99975,.99977,.99973,1.00043,.99953,1.0007,.99915,.99973,1.00008,.99892,1.00073,1.00073,1.00114,.99915,1.00073,.99955,.99973,1.00092,.99973,1,.99998,1,1.0003,1,1.00043,1.00001,.99969,1.0003,1,1.00035,1.00001,.9995,1,1.00092,.99973,.99973,.99973,1.0007,.9995,1,.99924,1.0006,.99924,.99972,1.00062,.99973,1.00114,1.00073,1,.99955,1,1,1.00047,.99968,1.00016,.99977,1.00016,.99977,1.00016,.99977,1.00001,1,1,1,.99973,1,1,.99955,.99924,.99924,.99924,.99924,.99998,.99998,.99998,.99973,.99973,.99972,1,1,1.00267,.99999,.99998,.99998,1,.99998,1.66475,1,.99973,.99973,1.00023,.99973,.99971,.99925,1.00023,1,.99991,.99984,1.00002,1.00002,1.00002,1.00002,1,1,1,1,1,1,1,.96329,1,1.20985,1.39713,1.00003,.8254,1.00015,1,1.00035,1.00027,1.00031,1.00031,.99915,1.00031,1.00031,.99999,1.00003,.99999,.99999,1.41144,1.6,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.41144,1.40579,1.40579,1.36625,.99999,1,.99861,.99861,1,1.00026,1.00026,1.00026,1.00026,.95317,.99999,.99999,.99999,.99999,1.40483,1,.99977,1.00054,1,1,.99953,.99962,1.00042,.9995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.HelveticaRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LiberationSansRegularWidths=t.LiberationSansRegularMapping=t.LiberationSansItalicWidths=t.LiberationSansItalicMapping=t.LiberationSansBoldWidths=t.LiberationSansBoldMapping=t.LiberationSansBoldItalicWidths=t.LiberationSansBoldItalicMapping=void 0,t.LiberationSansBoldWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,719,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,785,556,556,278,722,556,556,611,278,611,278,611,385,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,465,722,333,853,906,474,825,927,838,278,722,722,601,719,667,611,722,778,278,722,667,833,722,644,778,722,667,600,611,667,821,667,809,802,278,667,615,451,611,278,582,615,610,556,606,475,460,611,541,278,558,556,612,556,445,611,766,619,520,684,446,582,715,576,753,845,278,582,611,582,845,667,669,885,567,711,667,278,276,556,1094,1062,875,610,722,622,719,722,719,722,567,712,667,904,626,719,719,610,702,833,722,778,719,667,722,611,622,854,667,730,703,1005,1019,870,979,719,711,1031,719,556,618,615,417,635,556,709,497,615,615,500,635,740,604,611,604,611,556,490,556,875,556,615,581,833,844,729,854,615,552,854,583,556,556,611,417,552,556,278,281,278,969,906,611,500,615,556,604,778,611,487,447,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1094,556,885,489,1115,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],t.LiberationSansBoldMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansBoldItalicWidths=[365,0,333,278,333,474,556,556,889,722,238,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,584,333,556,556,556,556,280,556,333,737,370,556,584,737,552,400,549,333,333,333,576,556,278,333,333,365,556,834,834,834,611,722,722,722,722,722,722,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,278,278,611,611,611,611,611,611,611,549,611,611,611,611,611,556,611,556,722,556,722,556,722,556,722,556,722,556,722,556,722,556,722,740,722,611,667,556,667,556,667,556,667,556,667,556,778,611,778,611,778,611,778,611,722,611,722,611,278,278,278,278,278,278,278,278,278,278,782,556,556,278,722,556,556,611,278,611,278,611,396,611,479,611,278,722,611,722,611,722,611,708,723,611,778,611,778,611,778,611,1e3,944,722,389,722,389,722,389,667,556,667,556,667,556,667,556,611,333,611,479,611,333,722,611,722,611,722,611,722,611,722,611,722,611,944,778,667,556,667,611,500,611,500,611,500,278,556,722,556,1e3,889,778,611,667,556,611,333,333,333,333,333,333,333,333,333,333,333,333,722,333,854,906,473,844,930,847,278,722,722,610,671,667,611,722,778,278,722,667,833,722,657,778,718,667,590,611,667,822,667,829,781,278,667,620,479,611,278,591,620,621,556,610,479,492,611,558,278,566,556,603,556,450,611,712,605,532,664,409,591,704,578,773,834,278,591,611,591,834,667,667,886,614,719,667,278,278,556,1094,1042,854,622,719,677,719,722,708,722,614,722,667,927,643,719,719,615,687,833,722,778,719,667,722,611,677,781,667,729,708,979,989,854,1e3,708,719,1042,729,556,619,604,534,618,556,736,510,611,611,507,622,740,604,611,611,611,556,889,556,885,556,646,583,889,935,707,854,594,552,865,589,556,556,611,469,563,556,278,278,278,969,906,611,507,619,556,611,778,611,575,467,944,778,944,778,944,778,667,556,333,333,556,1e3,1e3,552,278,278,278,278,500,500,500,556,556,350,1e3,1e3,240,479,333,333,604,333,167,396,556,556,1104,556,885,516,1146,1e3,768,600,834,834,834,834,999,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,722,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,611,611,333,333,333,333,333,333,333,333,222,222,333,333,333,333,333,333,333,333],t.LiberationSansBoldItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansItalicWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,625,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,733,444,500,222,667,500,500,556,222,556,222,556,281,556,400,556,222,722,556,722,556,722,556,615,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,354,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,789,846,389,794,865,775,222,667,667,570,671,667,611,722,778,278,667,667,833,722,648,778,725,667,600,611,667,837,667,831,761,278,667,570,439,555,222,550,570,571,500,556,439,463,555,542,222,500,492,548,500,447,556,670,573,486,603,374,550,652,546,728,779,222,550,556,550,779,667,667,843,544,708,667,278,278,500,1066,982,844,589,715,639,724,667,651,667,544,704,667,917,614,715,715,589,686,833,722,778,725,667,722,611,639,795,667,727,673,920,923,805,886,651,694,1022,682,556,562,522,493,553,556,688,465,556,556,472,564,686,550,556,556,556,500,833,500,835,500,572,518,830,851,621,736,526,492,752,534,556,556,556,378,496,500,222,222,222,910,828,556,472,565,500,556,778,556,492,339,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1083,1e3,768,600,834,834,834,834,1e3,500,998,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,584,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],t.LiberationSansItalicMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],t.LiberationSansRegularWidths=[365,0,333,278,278,355,556,556,889,667,191,333,333,389,584,278,333,278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,584,333,556,556,556,556,260,556,333,737,370,556,584,737,552,400,549,333,333,333,576,537,278,333,333,365,556,834,834,834,611,667,667,667,667,667,667,1e3,722,667,667,667,667,278,278,278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,278,278,556,556,556,556,556,556,556,549,611,556,556,556,556,500,556,500,667,556,667,556,667,556,722,500,722,500,722,500,722,500,722,615,722,556,667,556,667,556,667,556,667,556,667,556,778,556,778,556,778,556,778,556,722,556,722,556,278,278,278,278,278,278,278,222,278,278,735,444,500,222,667,500,500,556,222,556,222,556,292,556,334,556,222,722,556,722,556,722,556,604,723,556,778,556,778,556,778,556,1e3,944,722,333,722,333,722,333,667,500,667,500,667,500,667,500,611,278,611,375,611,278,722,556,722,556,722,556,722,556,722,556,722,556,944,722,667,500,667,611,500,611,500,611,500,222,556,667,556,1e3,889,778,611,667,500,611,278,333,333,333,333,333,333,333,333,333,333,333,667,278,784,838,384,774,855,752,222,667,667,551,668,667,611,722,778,278,667,668,833,722,650,778,722,667,618,611,667,798,667,835,748,278,667,578,446,556,222,547,578,575,500,557,446,441,556,556,222,500,500,576,500,448,556,690,569,482,617,395,547,648,525,713,781,222,547,556,547,781,667,667,865,542,719,667,278,278,500,1057,1010,854,583,722,635,719,667,656,667,542,677,667,923,604,719,719,583,656,833,722,778,719,667,722,611,635,760,667,740,667,917,938,792,885,656,719,1010,722,556,573,531,365,583,556,669,458,559,559,438,583,688,552,556,542,556,500,458,500,823,500,573,521,802,823,625,719,521,510,750,542,556,556,556,365,510,500,222,278,222,906,812,556,438,559,500,552,778,556,489,411,944,722,944,722,944,722,667,500,333,333,556,1e3,1e3,552,222,222,222,222,333,333,333,556,556,350,1e3,1e3,188,354,333,333,500,333,167,365,556,556,1094,556,885,323,1073,1e3,768,600,834,834,834,834,1e3,500,1e3,500,1e3,500,500,494,612,823,713,584,549,713,979,719,274,549,549,583,549,549,604,584,604,604,708,625,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,708,729,604,604,354,354,1e3,990,990,990,990,494,604,604,604,604,354,1021,1052,917,750,750,531,656,594,510,500,750,750,500,500,333,333,333,333,333,333,333,333,222,222,294,294,324,324,316,328,398,285],t.LiberationSansRegularMapping=[-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,161,162,163,164,165,166,167,168,169,170,171,172,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,402,506,507,508,509,510,511,536,537,538,539,710,711,713,728,729,730,731,732,733,900,901,902,903,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1138,1139,1168,1169,7808,7809,7810,7811,7812,7813,7922,7923,8208,8209,8211,8212,8213,8215,8216,8217,8218,8219,8220,8221,8222,8224,8225,8226,8230,8240,8242,8243,8249,8250,8252,8254,8260,8319,8355,8356,8359,8364,8453,8467,8470,8482,8486,8494,8539,8540,8541,8542,8592,8593,8594,8595,8596,8597,8616,8706,8710,8719,8721,8722,8730,8734,8735,8745,8747,8776,8800,8801,8804,8805,8962,8976,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,9633,9642,9643,9644,9650,9658,9660,9668,9674,9675,9679,9688,9689,9702,9786,9787,9788,9792,9794,9824,9827,9829,9830,9834,9835,9836,61441,61442,61445,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MyriadProRegularMetrics=t.MyriadProRegularFactors=t.MyriadProItalicMetrics=t.MyriadProItalicFactors=t.MyriadProBoldMetrics=t.MyriadProBoldItalicMetrics=t.MyriadProBoldItalicFactors=t.MyriadProBoldFactors=void 0,t.MyriadProBoldFactors=[1.36898,1,1,.72706,.80479,.83734,.98894,.99793,.9897,.93884,.86209,.94292,.94292,1.16661,1.02058,.93582,.96694,.93582,1.19137,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.99793,.78076,.78076,1.02058,1.02058,1.02058,.72851,.78966,.90838,.83637,.82391,.96376,.80061,.86275,.8768,.95407,1.0258,.73901,.85022,.83655,1.0156,.95546,.92179,.87107,.92179,.82114,.8096,.89713,.94438,.95353,.94083,.91905,.90406,.9446,.94292,1.18777,.94292,1.02058,.89903,.90088,.94938,.97898,.81093,.97571,.94938,1.024,.9577,.95933,.98621,1.0474,.97455,.98981,.9672,.95933,.9446,.97898,.97407,.97646,.78036,1.10208,.95442,.95298,.97579,.9332,.94039,.938,.80687,1.01149,.80687,1.02058,.80479,.99793,.99793,.99793,.99793,1.01149,1.00872,.90088,.91882,1.0213,.8361,1.02058,.62295,.54324,.89022,1.08595,1,1,.90088,1,.97455,.93582,.90088,1,1.05686,.8361,.99642,.99642,.99642,.72851,.90838,.90838,.90838,.90838,.90838,.90838,.868,.82391,.80061,.80061,.80061,.80061,1.0258,1.0258,1.0258,1.0258,.97484,.95546,.92179,.92179,.92179,.92179,.92179,1.02058,.92179,.94438,.94438,.94438,.94438,.90406,.86958,.98225,.94938,.94938,.94938,.94938,.94938,.94938,.9031,.81093,.94938,.94938,.94938,.94938,.98621,.98621,.98621,.98621,.93969,.95933,.9446,.9446,.9446,.9446,.9446,1.08595,.9446,.95442,.95442,.95442,.95442,.94039,.97898,.94039,.90838,.94938,.90838,.94938,.90838,.94938,.82391,.81093,.82391,.81093,.82391,.81093,.82391,.81093,.96376,.84313,.97484,.97571,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.80061,.94938,.8768,.9577,.8768,.9577,.8768,.9577,1,1,.95407,.95933,.97069,.95933,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,1.0258,.98621,.887,1.01591,.73901,1.0474,1,1,.97455,.83655,.98981,1,1,.83655,.73977,.83655,.73903,.84638,1.033,.95546,.95933,1,1,.95546,.95933,.8271,.95417,.95933,.92179,.9446,.92179,.9446,.92179,.9446,.936,.91964,.82114,.97646,1,1,.82114,.97646,.8096,.78036,.8096,.78036,1,1,.8096,.78036,1,1,.89713,.77452,.89713,1.10208,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94438,.95442,.94083,.97579,.90406,.94039,.90406,.9446,.938,.9446,.938,.9446,.938,1,.99793,.90838,.94938,.868,.9031,.92179,.9446,1,1,.89713,1.10208,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90989,.9358,.91945,.83181,.75261,.87992,.82976,.96034,.83689,.97268,1.0078,.90838,.83637,.8019,.90157,.80061,.9446,.95407,.92436,1.0258,.85022,.97153,1.0156,.95546,.89192,.92179,.92361,.87107,.96318,.89713,.93704,.95638,.91905,.91709,.92796,1.0258,.93704,.94836,1.0373,.95933,1.0078,.95871,.94836,.96174,.92601,.9498,.98607,.95776,.95933,1.05453,1.0078,.98275,.9314,.95617,.91701,1.05993,.9446,.78367,.9553,1,.86832,1.0128,.95871,.99394,.87548,.96361,.86774,1.0078,.95871,.9446,.95871,.86774,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.94083,.97579,.94083,.97579,.94083,.97579,.90406,.94039,.96694,1,.89903,1,1,1,.93582,.93582,.93582,1,.908,.908,.918,.94219,.94219,.96544,1,1.285,1,1,.81079,.81079,1,1,.74854,1,1,1,1,.99793,1,1,1,.65,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.17173,1,.80535,.76169,1.02058,1.0732,1.05486,1,1,1.30692,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.16161,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProBoldMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProBoldItalicFactors=[1.36898,1,1,.66227,.80779,.81625,.97276,.97276,.97733,.92222,.83266,.94292,.94292,1.16148,1.02058,.93582,.96694,.93582,1.17337,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.97276,.78076,.78076,1.02058,1.02058,1.02058,.71541,.76813,.85576,.80591,.80729,.94299,.77512,.83655,.86523,.92222,.98621,.71743,.81698,.79726,.98558,.92222,.90637,.83809,.90637,.80729,.76463,.86275,.90699,.91605,.9154,.85308,.85458,.90531,.94292,1.21296,.94292,1.02058,.89903,1.18616,.99613,.91677,.78216,.91677,.90083,.98796,.9135,.92168,.95381,.98981,.95298,.95381,.93459,.92168,.91513,.92004,.91677,.95077,.748,1.04502,.91677,.92061,.94236,.89544,.89364,.9,.80687,.8578,.80687,1.02058,.80779,.97276,.97276,.97276,.97276,.8578,.99973,1.18616,.91339,1.08074,.82891,1.02058,.55509,.71526,.89022,1.08595,1,1,1.18616,1,.96736,.93582,1.18616,1,1.04864,.82711,.99043,.99043,.99043,.71541,.85576,.85576,.85576,.85576,.85576,.85576,.845,.80729,.77512,.77512,.77512,.77512,.98621,.98621,.98621,.98621,.95961,.92222,.90637,.90637,.90637,.90637,.90637,1.02058,.90251,.90699,.90699,.90699,.90699,.85458,.83659,.94951,.99613,.99613,.99613,.99613,.99613,.99613,.85811,.78216,.90083,.90083,.90083,.90083,.95381,.95381,.95381,.95381,.9135,.92168,.91513,.91513,.91513,.91513,.91513,1.08595,.91677,.91677,.91677,.91677,.91677,.89364,.92332,.89364,.85576,.99613,.85576,.99613,.85576,.99613,.80729,.78216,.80729,.78216,.80729,.78216,.80729,.78216,.94299,.76783,.95961,.91677,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.77512,.90083,.86523,.9135,.86523,.9135,.86523,.9135,1,1,.92222,.92168,.92222,.92168,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.98621,.95381,.86036,.97096,.71743,.98981,1,1,.95298,.79726,.95381,1,1,.79726,.6894,.79726,.74321,.81691,1.0006,.92222,.92168,1,1,.92222,.92168,.79464,.92098,.92168,.90637,.91513,.90637,.91513,.90637,.91513,.909,.87514,.80729,.95077,1,1,.80729,.95077,.76463,.748,.76463,.748,1,1,.76463,.748,1,1,.86275,.72651,.86275,1.04502,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.90699,.91677,.9154,.94236,.85458,.89364,.85458,.90531,.9,.90531,.9,.90531,.9,1,.97276,.85576,.99613,.845,.85811,.90251,.91677,1,1,.86275,1.04502,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.18616,1.00899,1.30628,.85576,.80178,.66862,.7927,.69323,.88127,.72459,.89711,.95381,.85576,.80591,.7805,.94729,.77512,.90531,.92222,.90637,.98621,.81698,.92655,.98558,.92222,.85359,.90637,.90976,.83809,.94523,.86275,.83509,.93157,.85308,.83392,.92346,.98621,.83509,.92886,.91324,.92168,.95381,.90646,.92886,.90557,.86847,.90276,.91324,.86842,.92168,.99531,.95381,.9224,.85408,.92699,.86847,1.0051,.91513,.80487,.93481,1,.88159,1.05214,.90646,.97355,.81539,.89398,.85923,.95381,.90646,.91513,.90646,.85923,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9154,.94236,.9154,.94236,.9154,.94236,.85458,.89364,.96694,1,.89903,1,1,1,.91782,.91782,.91782,1,.896,.896,.896,.9332,.9332,.95973,1,1.26,1,1,.80479,.80178,1,1,.85633,1,1,1,1,.97276,1,1,1,.698,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.14542,1,.79199,.78694,1.02058,1.03493,1.05486,1,1,1.23026,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.20006,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProBoldItalicMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProItalicFactors=[1.36898,1,1,.65507,.84943,.85639,.88465,.88465,.86936,.88307,.86948,.85283,.85283,1.06383,1.02058,.75945,.9219,.75945,1.17337,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.88465,.75945,.75945,1.02058,1.02058,1.02058,.69046,.70926,.85158,.77812,.76852,.89591,.70466,.76125,.80094,.86822,.83864,.728,.77212,.79475,.93637,.87514,.8588,.76013,.8588,.72421,.69866,.77598,.85991,.80811,.87832,.78112,.77512,.8562,1.0222,1.18417,1.0222,1.27014,.89903,1.15012,.93859,.94399,.846,.94399,.81453,1.0186,.94219,.96017,1.03075,1.02175,.912,1.03075,.96998,.96017,.93859,.94399,.94399,.95493,.746,1.12658,.94578,.91,.979,.882,.882,.83,.85034,.83537,.85034,1.02058,.70869,.88465,.88465,.88465,.88465,.83537,.90083,1.15012,.9161,.94565,.73541,1.02058,.53609,.69353,.79519,1.08595,1,1,1.15012,1,.91974,.75945,1.15012,1,.9446,.73361,.9005,.9005,.9005,.62864,.85158,.85158,.85158,.85158,.85158,.85158,.773,.76852,.70466,.70466,.70466,.70466,.83864,.83864,.83864,.83864,.90561,.87514,.8588,.8588,.8588,.8588,.8588,1.02058,.85751,.85991,.85991,.85991,.85991,.77512,.76013,.88075,.93859,.93859,.93859,.93859,.93859,.93859,.8075,.846,.81453,.81453,.81453,.81453,.82424,.82424,.82424,.82424,.9278,.96017,.93859,.93859,.93859,.93859,.93859,1.08595,.8562,.94578,.94578,.94578,.94578,.882,.94578,.882,.85158,.93859,.85158,.93859,.85158,.93859,.76852,.846,.76852,.846,.76852,.846,.76852,.846,.89591,.8544,.90561,.94399,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.70466,.81453,.80094,.94219,.80094,.94219,.80094,.94219,1,1,.86822,.96017,.86822,.96017,.83864,.82424,.83864,.82424,.83864,.82424,.83864,1.03075,.83864,.82424,.81402,1.02738,.728,1.02175,1,1,.912,.79475,1.03075,1,1,.79475,.83911,.79475,.66266,.80553,1.06676,.87514,.96017,1,1,.87514,.96017,.86865,.87396,.96017,.8588,.93859,.8588,.93859,.8588,.93859,.867,.84759,.72421,.95493,1,1,.72421,.95493,.69866,.746,.69866,.746,1,1,.69866,.746,1,1,.77598,.88417,.77598,1.12658,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.85991,.94578,.87832,.979,.77512,.882,.77512,.8562,.83,.8562,.83,.8562,.83,1,.88465,.85158,.93859,.773,.8075,.85751,.8562,1,1,.77598,1.12658,1.15012,1.15012,1.15012,1.15012,1.15012,1.15313,1.15012,1.15012,1.15012,1.08106,1.03901,.85158,.77025,.62264,.7646,.65351,.86026,.69461,.89947,1.03075,.85158,.77812,.76449,.88836,.70466,.8562,.86822,.8588,.83864,.77212,.85308,.93637,.87514,.82352,.8588,.85701,.76013,.89058,.77598,.8156,.82565,.78112,.77899,.89386,.83864,.8156,.9486,.92388,.96186,1.03075,.91123,.9486,.93298,.878,.93942,.92388,.84596,.96186,.95119,1.03075,.922,.88787,.95829,.88,.93559,.93859,.78815,.93758,1,.89217,1.03737,.91123,.93969,.77487,.85769,.86799,1.03075,.91123,.93859,.91123,.86799,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87832,.979,.87832,.979,.87832,.979,.77512,.882,.9219,1,.89903,1,1,1,.87321,.87321,.87321,1,1.027,1.027,1.027,.86847,.86847,.79121,1,1.124,1,1,.73572,.73572,1,1,.85034,1,1,1,1,.88465,1,1,1,.669,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.04828,1,.74948,.75187,1.02058,.98391,1.02119,1,1,1.06233,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05233,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProItalicMetrics={lineHeight:1.2,lineGap:.2},t.MyriadProRegularFactors=[1.36898,1,1,.76305,.82784,.94935,.89364,.92241,.89073,.90706,.98472,.85283,.85283,1.0664,1.02058,.74505,.9219,.74505,1.23456,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.92241,.74505,.74505,1.02058,1.02058,1.02058,.73002,.72601,.91755,.8126,.80314,.92222,.73764,.79726,.83051,.90284,.86023,.74,.8126,.84869,.96518,.91115,.8858,.79761,.8858,.74498,.73914,.81363,.89591,.83659,.89633,.85608,.8111,.90531,1.0222,1.22736,1.0222,1.27014,.89903,.90088,.86667,1.0231,.896,1.01411,.90083,1.05099,1.00512,.99793,1.05326,1.09377,.938,1.06226,1.00119,.99793,.98714,1.0231,1.01231,.98196,.792,1.19137,.99074,.962,1.01915,.926,.942,.856,.85034,.92006,.85034,1.02058,.69067,.92241,.92241,.92241,.92241,.92006,.9332,.90088,.91882,.93484,.75339,1.02058,.56866,.54324,.79519,1.08595,1,1,.90088,1,.95325,.74505,.90088,1,.97198,.75339,.91009,.91009,.91009,.66466,.91755,.91755,.91755,.91755,.91755,.91755,.788,.80314,.73764,.73764,.73764,.73764,.86023,.86023,.86023,.86023,.92915,.91115,.8858,.8858,.8858,.8858,.8858,1.02058,.8858,.89591,.89591,.89591,.89591,.8111,.79611,.89713,.86667,.86667,.86667,.86667,.86667,.86667,.86936,.896,.90083,.90083,.90083,.90083,.84224,.84224,.84224,.84224,.97276,.99793,.98714,.98714,.98714,.98714,.98714,1.08595,.89876,.99074,.99074,.99074,.99074,.942,1.0231,.942,.91755,.86667,.91755,.86667,.91755,.86667,.80314,.896,.80314,.896,.80314,.896,.80314,.896,.92222,.93372,.92915,1.01411,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.73764,.90083,.83051,1.00512,.83051,1.00512,.83051,1.00512,1,1,.90284,.99793,.90976,.99793,.86023,.84224,.86023,.84224,.86023,.84224,.86023,1.05326,.86023,.84224,.82873,1.07469,.74,1.09377,1,1,.938,.84869,1.06226,1,1,.84869,.83704,.84869,.81441,.85588,1.08927,.91115,.99793,1,1,.91115,.99793,.91887,.90991,.99793,.8858,.98714,.8858,.98714,.8858,.98714,.894,.91434,.74498,.98196,1,1,.74498,.98196,.73914,.792,.73914,.792,1,1,.73914,.792,1,1,.81363,.904,.81363,1.19137,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89591,.99074,.89633,1.01915,.8111,.942,.8111,.90531,.856,.90531,.856,.90531,.856,1,.92241,.91755,.86667,.788,.86936,.8858,.89876,1,1,.81363,1.19137,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90088,.90388,1.03901,.92138,.78105,.7154,.86169,.80513,.94007,.82528,.98612,1.06226,.91755,.8126,.81884,.92819,.73764,.90531,.90284,.8858,.86023,.8126,.91172,.96518,.91115,.83089,.8858,.87791,.79761,.89297,.81363,.88157,.89992,.85608,.81992,.94307,.86023,.88157,.95308,.98699,.99793,1.06226,.95817,.95308,.97358,.928,.98088,.98699,.92761,.99793,.96017,1.06226,.986,.944,.95978,.938,.96705,.98714,.80442,.98972,1,.89762,1.04552,.95817,.99007,.87064,.91879,.88888,1.06226,.95817,.98714,.95817,.88888,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.89633,1.01915,.89633,1.01915,.89633,1.01915,.8111,.942,.9219,1,.89903,1,1,1,.93173,.93173,.93173,1,1.06304,1.06304,1.06904,.89903,.89903,.80549,1,1.156,1,1,.76575,.76575,1,1,.72458,1,1,1,1,.92241,1,1,1,.619,1,1.36145,1,1,1,1,1,1,1,1,1,1,1,1.07257,1,.74705,.71119,1.02058,1.024,1.02119,1,1,1.1536,1.08595,1.08595,1,1.08595,1.08595,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.05638,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.MyriadProRegularMetrics={lineHeight:1.2,lineGap:.2}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SegoeuiRegularMetrics=t.SegoeuiRegularFactors=t.SegoeuiItalicMetrics=t.SegoeuiItalicFactors=t.SegoeuiBoldMetrics=t.SegoeuiBoldItalicMetrics=t.SegoeuiBoldItalicFactors=t.SegoeuiBoldFactors=void 0,t.SegoeuiBoldFactors=[1.76738,1,1,.99297,.9824,1.04016,1.06497,1.03424,.97529,1.17647,1.23203,1.1085,1.1085,1.16939,1.2107,.9754,1.21408,.9754,1.59578,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,1.03424,.81378,.81378,1.2107,1.2107,1.2107,.71703,.97847,.97363,.88776,.8641,1.02096,.79795,.85132,.914,1.06085,1.1406,.8007,.89858,.83693,1.14889,1.09398,.97489,.92094,.97489,.90399,.84041,.95923,1.00135,1,1.06467,.98243,.90996,.99361,1.1085,1.56942,1.1085,1.2107,.74627,.94282,.96752,1.01519,.86304,1.01359,.97278,1.15103,1.01359,.98561,1.02285,1.02285,1.00527,1.02285,1.0302,.99041,1.0008,1.01519,1.01359,1.02258,.79104,1.16862,.99041,.97454,1.02511,.99298,.96752,.95801,.94856,1.16579,.94856,1.2107,.9824,1.03424,1.03424,1,1.03424,1.16579,.8727,1.3871,1.18622,1.10818,1.04478,1.2107,1.18622,.75155,.94994,1.28826,1.21408,1.21408,.91056,1,.91572,.9754,.64663,1.18328,1.24866,1.04478,1.14169,1.15749,1.17389,.71703,.97363,.97363,.97363,.97363,.97363,.97363,.93506,.8641,.79795,.79795,.79795,.79795,1.1406,1.1406,1.1406,1.1406,1.02096,1.09398,.97426,.97426,.97426,.97426,.97426,1.2107,.97489,1.00135,1.00135,1.00135,1.00135,.90996,.92094,1.02798,.96752,.96752,.96752,.96752,.96752,.96752,.93136,.86304,.97278,.97278,.97278,.97278,1.02285,1.02285,1.02285,1.02285,.97122,.99041,1,1,1,1,1,1.28826,1.0008,.99041,.99041,.99041,.99041,.96752,1.01519,.96752,.97363,.96752,.97363,.96752,.97363,.96752,.8641,.86304,.8641,.86304,.8641,.86304,.8641,.86304,1.02096,1.03057,1.02096,1.03517,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.79795,.97278,.914,1.01359,.914,1.01359,.914,1.01359,1,1,1.06085,.98561,1.06085,1.00879,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,1.1406,1.02285,.97138,1.08692,.8007,1.02285,1,1,1.00527,.83693,1.02285,1,1,.83693,.9455,.83693,.90418,.83693,1.13005,1.09398,.99041,1,1,1.09398,.99041,.96692,1.09251,.99041,.97489,1.0008,.97489,1.0008,.97489,1.0008,.93994,.97931,.90399,1.02258,1,1,.90399,1.02258,.84041,.79104,.84041,.79104,.84041,.79104,.84041,.79104,1,1,.95923,1.07034,.95923,1.16862,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.00135,.99041,1.06467,1.02511,.90996,.96752,.90996,.99361,.95801,.99361,.95801,.99361,.95801,1.07733,1.03424,.97363,.96752,.93506,.93136,.97489,1.0008,1,1,.95923,1.16862,1.15103,1.15103,1.01173,1.03959,.75953,.81378,.79912,1.15103,1.21994,.95161,.87815,1.01149,.81525,.7676,.98167,1.01134,1.02546,.84097,1.03089,1.18102,.97363,.88776,.85134,.97826,.79795,.99361,1.06085,.97489,1.1406,.89858,1.0388,1.14889,1.09398,.86039,.97489,1.0595,.92094,.94793,.95923,.90996,.99346,.98243,1.02112,.95493,1.1406,.90996,1.03574,1.02597,1.0008,1.18102,1.06628,1.03574,1.0192,1.01932,1.00886,.97531,1.0106,1.0008,1.13189,1.18102,1.02277,.98683,1.0016,.99561,1.07237,1.0008,.90434,.99921,.93803,.8965,1.23085,1.06628,1.04983,.96268,1.0499,.98439,1.18102,1.06628,1.0008,1.06628,.98439,.79795,1,1,1,1,1,1,1,1,1,1,1,1,1.09466,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.97278,1,1,1,1,1,1,1,1,1,1,1,1,1.02065,1,1,1,1,1,1,1.06467,1.02511,1.06467,1.02511,1.06467,1.02511,.90996,.96752,1,1.21408,.89903,1,1,.75155,1.04394,1.04394,1.04394,1.04394,.98633,.98633,.98633,.73047,.73047,1.20642,.91211,1.25635,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.12454,.93503,1.03424,1.19687,1.03424,1,1,1,.771,1,1,1.15749,1.15749,1.15749,1.10948,.86279,.94434,.86279,.94434,.86182,1,1,1.16897,1,.96085,.90137,1.2107,1.18416,1.13973,.69825,.9716,2.10339,1.29004,1.29004,1.21172,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18874,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.09193,1.09193,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiBoldMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiBoldItalicFactors=[1.76738,1,1,.98946,1.03959,1.04016,1.02809,1.036,.97639,1.10953,1.23203,1.11144,1.11144,1.16939,1.21237,.9754,1.21261,.9754,1.59754,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,1.036,.81378,.81378,1.21237,1.21237,1.21237,.73541,.97847,.97363,.89723,.87897,1.0426,.79429,.85292,.91149,1.05815,1.1406,.79631,.90128,.83853,1.04396,1.10615,.97552,.94436,.97552,.88641,.80527,.96083,1.00135,1,1.06777,.9817,.91142,.99361,1.11144,1.57293,1.11144,1.21237,.74627,1.31818,1.06585,.97042,.83055,.97042,.93503,1.1261,.97042,.97922,1.14236,.94552,1.01054,1.14236,1.02471,.97922,.94165,.97042,.97042,1.0276,.78929,1.1261,.97922,.95874,1.02197,.98507,.96752,.97168,.95107,1.16579,.95107,1.21237,1.03959,1.036,1.036,1,1.036,1.16579,.87357,1.31818,1.18754,1.26781,1.05356,1.21237,1.18622,.79487,.94994,1.29004,1.24047,1.24047,1.31818,1,.91484,.9754,1.31818,1.1349,1.24866,1.05356,1.13934,1.15574,1.17389,.73541,.97363,.97363,.97363,.97363,.97363,.97363,.94385,.87897,.79429,.79429,.79429,.79429,1.1406,1.1406,1.1406,1.1406,1.0426,1.10615,.97552,.97552,.97552,.97552,.97552,1.21237,.97552,1.00135,1.00135,1.00135,1.00135,.91142,.94436,.98721,1.06585,1.06585,1.06585,1.06585,1.06585,1.06585,.96705,.83055,.93503,.93503,.93503,.93503,1.14236,1.14236,1.14236,1.14236,.93125,.97922,.94165,.94165,.94165,.94165,.94165,1.29004,.94165,.97922,.97922,.97922,.97922,.96752,.97042,.96752,.97363,1.06585,.97363,1.06585,.97363,1.06585,.87897,.83055,.87897,.83055,.87897,.83055,.87897,.83055,1.0426,1.0033,1.0426,.97042,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.79429,.93503,.91149,.97042,.91149,.97042,.91149,.97042,1,1,1.05815,.97922,1.05815,.97922,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,1.1406,1.14236,.97441,1.04302,.79631,1.01582,1,1,1.01054,.83853,1.14236,1,1,.83853,1.09125,.83853,.90418,.83853,1.19508,1.10615,.97922,1,1,1.10615,.97922,1.01034,1.10466,.97922,.97552,.94165,.97552,.94165,.97552,.94165,.91602,.91981,.88641,1.0276,1,1,.88641,1.0276,.80527,.78929,.80527,.78929,.80527,.78929,.80527,.78929,1,1,.96083,1.05403,.95923,1.16862,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.00135,.97922,1.06777,1.02197,.91142,.96752,.91142,.99361,.97168,.99361,.97168,.99361,.97168,1.23199,1.036,.97363,1.06585,.94385,.96705,.97552,.94165,1,1,.96083,1.1261,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,1.31818,.95161,1.27126,1.00811,.83284,.77702,.99137,.95253,1.0347,.86142,1.07205,1.14236,.97363,.89723,.86869,1.09818,.79429,.99361,1.05815,.97552,1.1406,.90128,1.06662,1.04396,1.10615,.84918,.97552,1.04694,.94436,.98015,.96083,.91142,1.00356,.9817,1.01945,.98999,1.1406,.91142,1.04961,.9898,1.00639,1.14236,1.07514,1.04961,.99607,1.02897,1.008,.9898,.95134,1.00639,1.11121,1.14236,1.00518,.97981,1.02186,1,1.08578,.94165,.99314,.98387,.93028,.93377,1.35125,1.07514,1.10687,.93491,1.04232,1.00351,1.14236,1.07514,.94165,1.07514,1.00351,.79429,1,1,1,1,1,1,1,1,1,1,1,1,1.09097,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.93503,1,1,1,1,1,1,1,1,1,1,1,1,.96609,1,1,1,1,1,1,1.06777,1.02197,1.06777,1.02197,1.06777,1.02197,.91142,.96752,1,1.21261,.89903,1,1,.75155,1.04745,1.04745,1.04745,1.04394,.98633,.98633,.98633,.72959,.72959,1.20502,.91406,1.26514,1.222,1.02956,1.03372,1.03372,.96039,1.24633,1,1.09125,.93327,1.03336,1.16541,1.036,1,1,1,.771,1,1,1.15574,1.15574,1.15574,1.15574,.86364,.94434,.86279,.94434,.86224,1,1,1.16798,1,.96085,.90068,1.21237,1.18416,1.13904,.69825,.9716,2.10339,1.29004,1.29004,1.21339,1.29004,1.29004,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18775,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.13269,1.13269,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiBoldItalicMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiItalicFactors=[1.76738,1,1,.98946,1.14763,1.05365,1.06234,.96927,.92586,1.15373,1.18414,.91349,.91349,1.07403,1.17308,.78383,1.20088,.78383,1.42531,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78383,.78383,1.17308,1.17308,1.17308,.77349,.94565,.94729,.85944,.88506,.9858,.74817,.80016,.88449,.98039,.95782,.69238,.89898,.83231,.98183,1.03989,.96924,.86237,.96924,.80595,.74524,.86091,.95402,.94143,.98448,.8858,.83089,.93285,1.0949,1.39016,1.0949,1.45994,.74627,1.04839,.97454,.97454,.87207,.97454,.87533,1.06151,.97454,1.00176,1.16484,1.08132,.98047,1.16484,1.02989,1.01054,.96225,.97454,.97454,1.06598,.79004,1.16344,1.00351,.94629,.9973,.91016,.96777,.9043,.91082,.92481,.91082,1.17308,.95748,.96927,.96927,1,.96927,.92481,.80597,1.04839,1.23393,1.1781,.9245,1.17308,1.20808,.63218,.94261,1.24822,1.09971,1.09971,1.04839,1,.85273,.78032,1.04839,1.09971,1.22326,.9245,1.09836,1.13525,1.15222,.70424,.94729,.94729,.94729,.94729,.94729,.94729,.85498,.88506,.74817,.74817,.74817,.74817,.95782,.95782,.95782,.95782,.9858,1.03989,.96924,.96924,.96924,.96924,.96924,1.17308,.96924,.95402,.95402,.95402,.95402,.83089,.86237,.88409,.97454,.97454,.97454,.97454,.97454,.97454,.92916,.87207,.87533,.87533,.87533,.87533,.93146,.93146,.93146,.93146,.93854,1.01054,.96225,.96225,.96225,.96225,.96225,1.24822,.8761,1.00351,1.00351,1.00351,1.00351,.96777,.97454,.96777,.94729,.97454,.94729,.97454,.94729,.97454,.88506,.87207,.88506,.87207,.88506,.87207,.88506,.87207,.9858,.95391,.9858,.97454,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.74817,.87533,.88449,.97454,.88449,.97454,.88449,.97454,1,1,.98039,1.00176,.98039,1.00176,.95782,.93146,.95782,.93146,.95782,.93146,.95782,1.16484,.95782,.93146,.84421,1.12761,.69238,1.08132,1,1,.98047,.83231,1.16484,1,1,.84723,1.04861,.84723,.78755,.83231,1.23736,1.03989,1.01054,1,1,1.03989,1.01054,.9857,1.03849,1.01054,.96924,.96225,.96924,.96225,.96924,.96225,.92383,.90171,.80595,1.06598,1,1,.80595,1.06598,.74524,.79004,.74524,.79004,.74524,.79004,.74524,.79004,1,1,.86091,1.02759,.85771,1.16344,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.95402,1.00351,.98448,.9973,.83089,.96777,.83089,.93285,.9043,.93285,.9043,.93285,.9043,1.31868,.96927,.94729,.97454,.85498,.92916,.96924,.8761,1,1,.86091,1.16344,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,1.04839,.81965,.81965,.94729,.78032,.71022,.90883,.84171,.99877,.77596,1.05734,1.2,.94729,.85944,.82791,.9607,.74817,.93285,.98039,.96924,.95782,.89898,.98316,.98183,1.03989,.78614,.96924,.97642,.86237,.86075,.86091,.83089,.90082,.8858,.97296,1.01284,.95782,.83089,1.0976,1.04,1.03342,1.2,1.0675,1.0976,.98205,1.03809,1.05097,1.04,.95364,1.03342,1.05401,1.2,1.02148,1.0119,1.04724,1.0127,1.02732,.96225,.8965,.97783,.93574,.94818,1.30679,1.0675,1.11826,.99821,1.0557,1.0326,1.2,1.0675,.96225,1.0675,1.0326,.74817,1,1,1,1,1,1,1,1,1,1,1,1,1.03754,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.87533,1,1,1,1,1,1,1,1,1,1,1,1,.98705,1,1,1,1,1,1,.98448,.9973,.98448,.9973,.98448,.9973,.83089,.96777,1,1.20088,.89903,1,1,.75155,.94945,.94945,.94945,.94945,1.12317,1.12317,1.12317,.67603,.67603,1.15621,.73584,1.21191,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87709,.96927,1.01473,.96927,1,1,1,.77295,1,1,1.09836,1.09836,1.09836,1.01522,.86321,.94434,.8649,.94434,.86182,1,1,1.083,1,.91578,.86438,1.17308,1.18416,1.14589,.69825,.97622,1.96791,1.24822,1.24822,1.17308,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.17984,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10742,1.10742,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiItalicMetrics={lineHeight:1.33008,lineGap:0},t.SegoeuiRegularFactors=[1.76738,1,1,.98594,1.02285,1.10454,1.06234,.96927,.92037,1.19985,1.2046,.90616,.90616,1.07152,1.1714,.78032,1.20088,.78032,1.40246,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.96927,.78032,.78032,1.1714,1.1714,1.1714,.80597,.94084,.96706,.85944,.85734,.97093,.75842,.79936,.88198,.9831,.95782,.71387,.86969,.84636,1.07796,1.03584,.96924,.83968,.96924,.82826,.79649,.85771,.95132,.93119,.98965,.88433,.8287,.93365,1.08612,1.3638,1.08612,1.45786,.74627,.80499,.91484,1.05707,.92383,1.05882,.9403,1.12654,1.05882,1.01756,1.09011,1.09011,.99414,1.09011,1.034,1.01756,1.05356,1.05707,1.05882,1.04399,.84863,1.21968,1.01756,.95801,1.00068,.91797,.96777,.9043,.90351,.92105,.90351,1.1714,.85337,.96927,.96927,.99912,.96927,.92105,.80597,1.2434,1.20808,1.05937,.90957,1.1714,1.20808,.75155,.94261,1.24644,1.09971,1.09971,.84751,1,.85273,.78032,.61584,1.05425,1.17914,.90957,1.08665,1.11593,1.14169,.73381,.96706,.96706,.96706,.96706,.96706,.96706,.86035,.85734,.75842,.75842,.75842,.75842,.95782,.95782,.95782,.95782,.97093,1.03584,.96924,.96924,.96924,.96924,.96924,1.1714,.96924,.95132,.95132,.95132,.95132,.8287,.83968,.89049,.91484,.91484,.91484,.91484,.91484,.91484,.93575,.92383,.9403,.9403,.9403,.9403,.8717,.8717,.8717,.8717,1.00527,1.01756,1.05356,1.05356,1.05356,1.05356,1.05356,1.24644,.95923,1.01756,1.01756,1.01756,1.01756,.96777,1.05707,.96777,.96706,.91484,.96706,.91484,.96706,.91484,.85734,.92383,.85734,.92383,.85734,.92383,.85734,.92383,.97093,1.0969,.97093,1.05882,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.75842,.9403,.88198,1.05882,.88198,1.05882,.88198,1.05882,1,1,.9831,1.01756,.9831,1.01756,.95782,.8717,.95782,.8717,.95782,.8717,.95782,1.09011,.95782,.8717,.84784,1.11551,.71387,1.09011,1,1,.99414,.84636,1.09011,1,1,.84636,1.0536,.84636,.94298,.84636,1.23297,1.03584,1.01756,1,1,1.03584,1.01756,1.00323,1.03444,1.01756,.96924,1.05356,.96924,1.05356,.96924,1.05356,.93066,.98293,.82826,1.04399,1,1,.82826,1.04399,.79649,.84863,.79649,.84863,.79649,.84863,.79649,.84863,1,1,.85771,1.17318,.85771,1.21968,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.95132,1.01756,.98965,1.00068,.8287,.96777,.8287,.93365,.9043,.93365,.9043,.93365,.9043,1.08571,.96927,.96706,.91484,.86035,.93575,.96924,.95923,1,1,.85771,1.21968,1.11437,1.11437,.93109,.91202,.60411,.84164,.55572,1.01173,.97361,.81818,.81818,.96635,.78032,.72727,.92366,.98601,1.03405,.77968,1.09799,1.2,.96706,.85944,.85638,.96491,.75842,.93365,.9831,.96924,.95782,.86969,.94152,1.07796,1.03584,.78437,.96924,.98715,.83968,.83491,.85771,.8287,.94492,.88433,.9287,1.0098,.95782,.8287,1.0625,.98248,1.03424,1.2,1.01071,1.0625,.95246,1.03809,1.04912,.98248,1.00221,1.03424,1.05443,1.2,1.04785,.99609,1.00169,1.05176,.99346,1.05356,.9087,1.03004,.95542,.93117,1.23362,1.01071,1.07831,1.02512,1.05205,1.03502,1.2,1.01071,1.05356,1.01071,1.03502,.75842,1,1,1,1,1,1,1,1,1,1,1,1,1.03719,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.9403,1,1,1,1,1,1,1,1,1,1,1,1,1.04021,1,1,1,1,1,1,.98965,1.00068,.98965,1.00068,.98965,1.00068,.8287,.96777,1,1.20088,.89903,1,1,.75155,1.03077,1.03077,1.03077,1.03077,1.13196,1.13196,1.13196,.67428,.67428,1.16039,.73291,1.20996,1.22135,1.06483,.94868,.94868,.95996,1.24633,1,1.07497,.87796,.96927,1.01518,.96927,1,1,1,.77295,1,1,1.10539,1.10539,1.11358,1.06967,.86279,.94434,.86279,.94434,.86182,1,1,1.083,1,.91578,.86507,1.1714,1.18416,1.14589,.69825,.97622,1.9697,1.24822,1.24822,1.17238,1.24822,1.24822,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.42603,1,.99862,.99862,1,.87025,.87025,.87025,.87025,1.18083,1.42603,1,1.42603,1.42603,.99862,1,1,1,1,1,1.2886,1.04315,1.15296,1.34163,1,1,1,1.10938,1.10938,1,1,1,1.05425,1.09971,1.09971,1.09971,1,1,1,1,1,1,1,1,1,1,1],t.SegoeuiRegularMetrics={lineHeight:1.33008,lineGap:0}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PostScriptEvaluator=t.PostScriptCompiler=t.PDFFunctionFactory=void 0,t.isPDFFunction=function(e){let t;if(e instanceof n.Dict)t=e;else{if(!(e instanceof o.BaseStream))return!1;t=e.dict}return t.has("FunctionType")},r(2),r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(159);var n=r(150),a=r(144),s=r(208),o=r(151),c=r(209);function l(e){if(!Array.isArray(e))return null;const t=e.length;for(let r=0;r>c)*h,l&=(1<r?e=r:e0&&(d=o[u-1]);let f=i[1];u>1,g=o.length>>1,p=new d(u),m=Object.create(null);let b=8192;const y=new Float32Array(g);return function(e,t,r,n){let a,i,s="";const o=y;for(a=0;ae&&(i=e)),h[a]=i}b>0&&(b--,m[s]=h),r.set(h,n)}}}class u{constructor(e){this.stack=e?Array.from(e):[]}push(e){if(this.stack.length>=u.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");this.stack.push(e)}pop(){if(this.stack.length<=0)throw new Error("PostScript function stack underflow.");return this.stack.pop()}copy(e){if(this.stack.length+e>=u.MAX_STACK_SIZE)throw new Error("PostScript function stack overflow.");const t=this.stack;for(let r=t.length-e,n=e-1;n>=0;n--,r++)t.push(t[r])}index(e){this.push(this.stack[this.stack.length-e-1])}roll(e,t){const r=this.stack,n=r.length-e,a=r.length-1,i=n+(t-Math.floor(t/e)*e);for(let e=n,t=a;e0?t.push(o<>c);break;case"ceiling":o=t.pop(),t.push(Math.ceil(o));break;case"copy":o=t.pop(),t.copy(o);break;case"cos":o=t.pop(),t.push(Math.cos(o%360/180*Math.PI));break;case"cvi":o=0|t.pop(),t.push(o);break;case"cvr":break;case"div":c=t.pop(),o=t.pop(),t.push(o/c);break;case"dup":t.copy(1);break;case"eq":c=t.pop(),o=t.pop(),t.push(o===c);break;case"exch":t.roll(2,1);break;case"exp":c=t.pop(),o=t.pop(),t.push(o**c);break;case"false":t.push(!1);break;case"floor":o=t.pop(),t.push(Math.floor(o));break;case"ge":c=t.pop(),o=t.pop(),t.push(o>=c);break;case"gt":c=t.pop(),o=t.pop(),t.push(o>c);break;case"idiv":c=t.pop(),o=t.pop(),t.push(o/c|0);break;case"index":o=t.pop(),t.index(o);break;case"le":c=t.pop(),o=t.pop(),t.push(o<=c);break;case"ln":o=t.pop(),t.push(Math.log(o));break;case"log":o=t.pop(),t.push(Math.log10(o));break;case"lt":c=t.pop(),o=t.pop(),t.push(o=t?new p(t):e.max<=t?e:new b(e,t)}class C{compile(e,t,r){const n=[],a=[],i=t.length>>1,s=r.length>>1;let o,c,l,h,u,d,f,m,b=0;for(let e=0;et.min&&(o.unshift("Math.max(",i,", "),o.push(")")),s{Object.defineProperty(t,"__esModule",{value:!0}),t.PostScriptParser=t.PostScriptLexer=void 0,r(139);var n=r(144),a=r(150),i=r(149);t.PostScriptParser=class{constructor(e){this.lexer=e,this.operators=[],this.token=null,this.prev=null}nextToken(){this.prev=this.token,this.token=this.lexer.getToken()}accept(e){return this.token.type===e&&(this.nextToken(),!0)}expect(e){if(this.accept(e))return!0;throw new n.FormatError("Unexpected symbol: found ".concat(this.token.type," expected ").concat(e,"."))}parse(){return this.nextToken(),this.expect(s.LBRACE),this.parseBlock(),this.expect(s.RBRACE),this.operators}parseBlock(){for(;;)if(this.accept(s.NUMBER))this.operators.push(this.prev.value);else if(this.accept(s.OPERATOR))this.operators.push(this.prev.value);else{if(!this.accept(s.LBRACE))return;this.parseCondition()}}parseCondition(){const e=this.operators.length;if(this.operators.push(null,null),this.parseBlock(),this.expect(s.RBRACE),this.accept(s.IF))this.operators[e]=this.operators.length,this.operators[e+1]="jz";else{if(!this.accept(s.LBRACE))throw new n.FormatError("PS Function: error parsing conditional.");{const t=this.operators.length;this.operators.push(null,null);const r=this.operators.length;this.parseBlock(),this.expect(s.RBRACE),this.expect(s.IFELSE),this.operators[t]=this.operators.length,this.operators[t+1]="j",this.operators[e]=r,this.operators[e+1]="jz"}}}};const s={LBRACE:0,RBRACE:1,NUMBER:2,OPERATOR:3,IF:4,IFELSE:5};class o{static get opCache(){return(0,n.shadow)(this,"opCache",Object.create(null))}constructor(e,t){this.type=e,this.value=t}static getOperator(e){var t;return(t=o.opCache)[e]||(t[e]=new o(s.OPERATOR,e))}static get LBRACE(){return(0,n.shadow)(this,"LBRACE",new o(s.LBRACE,"{"))}static get RBRACE(){return(0,n.shadow)(this,"RBRACE",new o(s.RBRACE,"}"))}static get IF(){return(0,n.shadow)(this,"IF",new o(s.IF,"IF"))}static get IFELSE(){return(0,n.shadow)(this,"IFELSE",new o(s.IFELSE,"IFELSE"))}}t.PostScriptLexer=class{constructor(e){this.stream=e,this.nextChar(),this.strBuf=[]}nextChar(){return this.currentChar=this.stream.getByte()}getToken(){let e=!1,t=this.currentChar;for(;;){if(t<0)return a.EOF;if(e)10!==t&&13!==t||(e=!1);else if(37===t)e=!0;else if(!(0,i.isWhiteSpace)(t))break;t=this.nextChar()}switch(0|t){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 43:case 45:case 46:return new o(s.NUMBER,this.getNumber());case 123:return this.nextChar(),o.LBRACE;case 125:return this.nextChar(),o.RBRACE}const r=this.strBuf;for(r.length=0,r[0]=String.fromCharCode(t);(t=this.nextChar())>=0&&(t>=65&&t<=90||t>=97&&t<=122);)r.push(String.fromCharCode(t));const n=r.join("");switch(n.toLowerCase()){case"if":return o.IF;case"ifelse":return o.IFELSE;default:return o.getOperator(n)}}getNumber(){let e=this.currentChar;const t=this.strBuf;for(t.length=0,t[0]=String.fromCharCode(e);(e=this.nextChar())>=0&&(e>=48&&e<=57||45===e||46===e);)t.push(String.fromCharCode(e));const r=parseFloat(t.join(""));if(isNaN(r))throw new n.FormatError("Invalid floating point number: ".concat(r));return r}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RegionalImageCache=t.LocalTilingPatternCache=t.LocalImageCache=t.LocalGStateCache=t.LocalFunctionCache=t.LocalColorSpaceCache=t.GlobalImageCache=void 0,r(2),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(144),a=r(150);class s{constructor(e){this.constructor===s&&(0,n.unreachable)("Cannot initialize BaseLocalCache."),this._onlyRefs=!0===(null==e?void 0:e.onlyRefs),this._onlyRefs||(this._nameRefMap=new Map,this._imageMap=new Map),this._imageCache=new a.RefSetCache}getByName(e){this._onlyRefs&&(0,n.unreachable)("Should not call \`getByName\` method.");const t=this._nameRefMap.get(e);return t?this.getByRef(t):this._imageMap.get(e)||null}getByRef(e){return this._imageCache.get(e)||null}set(e,t,r){(0,n.unreachable)("Abstract method \`set\` called.")}}t.LocalImageCache=class extends s{set(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e)throw new Error('LocalImageCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalColorSpaceCache=class extends s{set(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e&&!t)throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');if(t){if(this._imageCache.has(t))return;null!==e&&this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalFunctionCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('LocalFunctionCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}},t.LocalGStateCache=class extends s{set(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2?arguments[2]:void 0;if("string"!=typeof e)throw new Error('LocalGStateCache.set - expected "name" argument.');if(t){if(this._imageCache.has(t))return;this._nameRefMap.set(e,t),this._imageCache.put(t,r)}else this._imageMap.has(e)||this._imageMap.set(e,r)}},t.LocalTilingPatternCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('LocalTilingPatternCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}},t.RegionalImageCache=class extends s{constructor(e){super({onlyRefs:!0})}set(){let e=arguments.length>1?arguments[1]:void 0,t=arguments.length>2?arguments[2]:void 0;if(!e)throw new Error('RegionalImageCache.set - expected "ref" argument.');this._imageCache.has(e)||this._imageCache.put(e,t)}};class o{constructor(){this._refCache=new a.RefSetCache,this._imageCache=new a.RefSetCache}get _byteSize(){let e=0;for(const t of this._imageCache)e+=t.byteSize;return e}get _cacheLimitReached(){return!(this._imageCache.size0&&void 0!==arguments[0]&&arguments[0]||this._refCache.clear(),this._imageCache.clear()}}i(o,"NUM_PAGES_THRESHOLD",2),i(o,"MIN_IMAGES_TO_CACHE",10),i(o,"MAX_BYTE_SIZE",5*n.MAX_IMAGE_SIZE_TO_CACHE),t.GlobalImageCache=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.bidi=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],g=!0;const p=e.length;if(0===p||r)return u(e,g,r);d.length=p,f.length=p;let m,b,y=0;for(m=0;m4?(g=!0,t=0):(g=!1,t=1));const w=[];for(m=0;m=0&&"ET"===f[e];--e)f[e]="EN";for(let e=m+1;e0&&(t=f[m-1]);let r=S;e+1C&&s(C)&&(F=C);for(C=O;C>=F;--C){let e=-1;for(m=0,b=w.length;m=0&&(h(d,e,m),e=-1):e<0&&(e=m);e>=0&&h(d,e,w.length)}for(m=0,b=d.length;m"!==e||(d[m]="")}return u(d.join(""),g)};var n=r(144);const a=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],i=["AN","AN","AN","AN","AN","AN","ON","ON","AL","ET","ET","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AN","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","AL","AL","AL","AL","AL","AL"];function s(e){return 0!=(1&e)}function o(e){return 0==(1&e)}function c(e,t,r){let n,a;for(n=t,a=e.length;n2&&void 0!==arguments[2]&&arguments[2]?r="ttb":t||(r="rtl"),{str:e,dir:r}}const d=[],f=[]},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getFontSubstitution=function(e,t,r,d,f){const g=d=(0,n.normalizeFontName)(d);let p=e.get(g);if(p)return p;let m=l.get(d);if(!m)for(const[e,t]of h)if(d.startsWith(e)){d="".concat(t).concat(d.substring(e.length)),m=l.get(d);break}let b=!1;m||(m=l.get(f),b=!0);const y="".concat(t.getDocId(),"_s").concat(t.createFontId());if(!m){if(!(0,a.validateFontName)(d))return e.set(g,null),null;const t=/bold/gi.test(d),r=/oblique|italic/gi.test(d);return p={css:y,guessFallback:!0,loadedName:y,baseFontName:d,src:"local(".concat(d,")"),style:t&&r&&c||t&&s||r&&o||i},e.set(g,p),p}const w=[];b&&(0,a.validateFontName)(d)&&w.push("local(".concat(d,")"));const{style:v,ultimate:x}=u(m,w,r),S=null===x;return p={css:"".concat(y).concat(S?"":",".concat(x)),guessFallback:S,loadedName:y,baseFontName:d,src:w.join(","),style:v},e.set(g,p),p},r(139);var n=r(188),a=r(149);const i={style:"normal",weight:"normal"},s={style:"normal",weight:"bold"},o={style:"italic",weight:"normal"},c={style:"italic",weight:"bold"},l=new Map([["Times-Roman",{local:["Times New Roman","Times-Roman","Times","Liberation Serif","Nimbus Roman","Nimbus Roman L","Tinos","Thorndale","TeX Gyre Termes","FreeSerif","DejaVu Serif","Bitstream Vera Serif","Ubuntu"],style:i,ultimate:"serif"}],["Times-Bold",{alias:"Times-Roman",style:s,ultimate:"serif"}],["Times-Italic",{alias:"Times-Roman",style:o,ultimate:"serif"}],["Times-BoldItalic",{alias:"Times-Roman",style:c,ultimate:"serif"}],["Helvetica",{local:["Helvetica","Helvetica Neue","Arial","Arial Nova","Liberation Sans","Arimo","Nimbus Sans","Nimbus Sans L","A030","TeX Gyre Heros","FreeSans","DejaVu Sans","Albany","Bitstream Vera Sans","Arial Unicode MS","Microsoft Sans Serif","Apple Symbols","Cantarell"],path:"LiberationSans-Regular.ttf",style:i,ultimate:"sans-serif"}],["Helvetica-Bold",{alias:"Helvetica",path:"LiberationSans-Bold.ttf",style:s,ultimate:"sans-serif"}],["Helvetica-Oblique",{alias:"Helvetica",path:"LiberationSans-Italic.ttf",style:o,ultimate:"sans-serif"}],["Helvetica-BoldOblique",{alias:"Helvetica",path:"LiberationSans-BoldItalic.ttf",style:c,ultimate:"sans-serif"}],["Courier",{local:["Courier","Courier New","Liberation Mono","Nimbus Mono","Nimbus Mono L","Cousine","Cumberland","TeX Gyre Cursor","FreeMono"],style:i,ultimate:"monospace"}],["Courier-Bold",{alias:"Courier",style:s,ultimate:"monospace"}],["Courier-Oblique",{alias:"Courier",style:o,ultimate:"monospace"}],["Courier-BoldOblique",{alias:"Courier",style:c,ultimate:"monospace"}],["ArialBlack",{local:["Arial Black"],style:{style:"normal",weight:"900"},fallback:"Helvetica-Bold"}],["ArialBlack-Bold",{alias:"ArialBlack"}],["ArialBlack-Italic",{alias:"ArialBlack",style:{style:"italic",weight:"900"},fallback:"Helvetica-BoldOblique"}],["ArialBlack-BoldItalic",{alias:"ArialBlack-Italic"}],["ArialNarrow",{local:["Arial Narrow","Liberation Sans Narrow","Helvetica Condensed","Nimbus Sans Narrow","TeX Gyre Heros Cn"],style:i,fallback:"Helvetica"}],["ArialNarrow-Bold",{alias:"ArialNarrow",style:s,fallback:"Helvetica-Bold"}],["ArialNarrow-Italic",{alias:"ArialNarrow",style:o,fallback:"Helvetica-Oblique"}],["ArialNarrow-BoldItalic",{alias:"ArialNarrow",style:c,fallback:"Helvetica-BoldOblique"}],["Calibri",{local:["Calibri","Carlito"],style:i,fallback:"Helvetica"}],["Calibri-Bold",{alias:"Calibri",style:s,fallback:"Helvetica-Bold"}],["Calibri-Italic",{alias:"Calibri",style:o,fallback:"Helvetica-Oblique"}],["Calibri-BoldItalic",{alias:"Calibri",style:c,fallback:"Helvetica-BoldOblique"}],["Wingdings",{local:["Wingdings","URW Dingbats"],style:i}],["Wingdings-Regular",{alias:"Wingdings"}],["Wingdings-Bold",{alias:"Wingdings"}]]),h=new Map([["Arial-Black","ArialBlack"]]);function u(e,t,r){let{alias:n,local:a,path:i,fallback:h,style:d,ultimate:f}=e,g=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],p=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],m=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"";const b={style:null,ultimate:null};if(a){const e=m?" ".concat(m):"";for(const r of a)t.push("local(".concat(r).concat(e,")"))}if(n){const e=l.get(n),a=m||function(e){switch(e){case s:return"Bold";case o:return"Italic";case c:return"Bold Italic";default:if("bold"===(null==e?void 0:e.weight))return"Bold";if("italic"===(null==e?void 0:e.style))return"Italic"}return""}(d);Object.assign(b,u(e,t,r,g&&!h,p&&!i,a))}if(d&&(b.style=d),f&&(b.ultimate=f),g&&h){const e=l.get(h),{ultimate:n}=u(e,t,r,g,p&&!i,m);b.ultimate||(b.ultimate=n)}return p&&i&&r&&t.push("url(".concat(r).concat(i,")")),b}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ImageResizer=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);class a{constructor(e,t){this._imgData=e,this._isMask=t}static needsToBeResized(e,t){if(e<=this._goodSquareLength&&t<=this._goodSquareLength)return!1;const{MAX_DIM:r}=this;if(e>r||t>r)return!0;const n=e*t;return this._hasMaxArea?n>this.MAX_AREA:!(n(this.MAX_AREA=this._goodSquareLength**2)))}static get MAX_DIM(){return(0,n.shadow)(this,"MAX_DIM",this._guessMax(2048,65537,0,1))}static get MAX_AREA(){return this._hasMaxArea=!0,(0,n.shadow)(this,"MAX_AREA",this._guessMax(a._goodSquareLength,this.MAX_DIM,128,0)**2)}static set MAX_AREA(e){e>=0&&(this._hasMaxArea=!0,(0,n.shadow)(this,"MAX_AREA",e))}static setMaxArea(e){this._hasMaxArea||(this.MAX_AREA=e>>2)}static _areGoodDims(e,t){try{const r=new OffscreenCanvas(e,t),n=r.getContext("2d");n.fillRect(0,0,1,1);const a=n.getImageData(0,0,1,1).data[3];return r.width=r.height=1,0!==a}catch(e){return!1}}static _guessMax(e,t,r,n){for(;e+r+11&&void 0!==arguments[1]&&arguments[1])._createImage()}async _createImage(){const e=this._encodeBMP(),t=new Blob([e.buffer],{type:"image/bmp"}),r=createImageBitmap(t),{MAX_AREA:n,MAX_DIM:i}=a,{_imgData:s}=this,{width:o,height:c}=s,l=Math.max(o/i,c/i,Math.sqrt(o*c/n)),h=Math.max(l,2),u=Math.round(10*(l+1.25))/10/h,d=Math.floor(Math.log2(u)),f=new Array(d+2).fill(2);f[0]=h,f.splice(-1,1,u/(1<>3,n=r+3&-4;if(r!==n){const e=new Uint8Array(n*t);let a=0;for(let s=0,o=t*r;s{Object.defineProperty(t,"__esModule",{value:!0}),t.MurmurHash3_64=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144);const a=3285377520,i=4294901760,s=65535;t.MurmurHash3_64=class{constructor(e){this.h1=e?4294967295&e:a,this.h2=e?4294967295&e:a}update(e){let t,r;if("string"==typeof e){t=new Uint8Array(2*e.length),r=0;for(let n=0,a=e.length;n>>8,t[r++]=255&a)}}else{if(!(0,n.isArrayBuffer)(e))throw new Error("Wrong data format in MurmurHash3_64_update. Input must be a string or array.");t=e.slice(),r=t.byteLength}const a=r>>2,o=r-4*a,c=new Uint32Array(t.buffer,0,a);let l=0,h=0,u=this.h1,d=this.h2;const f=3432918353,g=461845907,p=11601,m=13715;for(let e=0;e>>17,l=l*g&i|l*m&s,u^=l,u=u<<13|u>>>19,u=5*u+3864292196):(h=c[e],h=h*f&i|h*p&s,h=h<<15|h>>>17,h=h*g&i|h*m&s,d^=h,d=d<<13|d>>>19,d=5*d+3864292196);switch(l=0,o){case 3:l^=t[4*a+2]<<16;case 2:l^=t[4*a+1]<<8;case 1:l^=t[4*a],l=l*f&i|l*p&s,l=l<<15|l>>>17,l=l*g&i|l*m&s,1&a?u^=l:d^=l}this.h1=u,this.h2=d}hexdigest(){let e=this.h1,t=this.h2;return e^=t>>>1,e=3981806797*e&i|36045*e&s,t=4283543511*t&i|(2950163797*(t<<16|e>>>16)&i)>>>16,e^=t>>>1,e=444984403*e&i|60499*e&s,t=3301882366*t&i|(3120437893*(t<<16|e>>>16)&i)>>>16,e^=t>>>1,(e>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorList=void 0,r(2),r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var a=r(144);function s(e,t,r,n,a){let i=e;for(let e=0,r=t.length-1;e1e3&&(h=Math.max(h,f),g+=d+2,f=0,d=0),u.push({transform:t,x:f,y:g,w:r.width,h:r.height}),f+=r.width+2,d=Math.max(d,r.height)}const p=Math.max(h,f)+1,m=g+d+1,b=new Uint8Array(p*m*4),y=p<<2;for(let e=0;e=0;)t[i-4]=t[i],t[i-3]=t[i+1],t[i-2]=t[i+2],t[i-1]=t[i+3],t[i+r]=t[i+r-4],t[i+r+1]=t[i+r-3],t[i+r+2]=t[i+r-2],t[i+r+3]=t[i+r-1],i-=y}const w={width:p,height:m};if(e.isOffscreenCanvasSupported){const e=new OffscreenCanvas(p,m);e.getContext("2d").putImageData(new ImageData(new Uint8ClampedArray(b.buffer),p,m),0,0),w.bitmap=e.transferToImageBitmap(),w.data=null}else w.kind=a.ImageKind.RGBA_32BPP,w.data=b;return r.splice(s,4*l,a.OPS.paintInlineImageXObjectGroup),n.splice(s,4*l,[w,u]),s+1})),s(o,[a.OPS.save,a.OPS.transform,a.OPS.paintImageMaskXObject,a.OPS.restore],null,(function(e,t){const r=e.fnArray,n=(t-(e.iCurr-3))%4;switch(n){case 0:return r[t]===a.OPS.save;case 1:return r[t]===a.OPS.transform;case 2:return r[t]===a.OPS.paintImageMaskXObject;case 3:return r[t]===a.OPS.restore}throw new Error("iterateImageMaskGroup - invalid pos: ".concat(n))}),(function(e,t){const r=e.fnArray,n=e.argsArray,i=e.iCurr,s=i-3,o=i-2,c=i-1;let l=Math.floor((t-s)/4);if(l<10)return t-(t-s)%4;let h,u,d=!1;const f=n[c][0],g=n[o][0],p=n[o][1],m=n[o][2],b=n[o][3];if(p===m){d=!0,h=o+4;let e=c+4;for(let t=1;t=4&&r[i-4]===r[s]&&r[i-3]===r[o]&&r[i-2]===r[c]&&r[i-1]===r[l]&&n[i-4][0]===h&&n[i-4][1]===u&&(d++,f-=5);let g=f+4;for(let e=1;e=r)break}n=(n||o)[e[t]],n&&!Array.isArray(n)?(i.iCurr=t,t++,!n.checkFn||(0,n.checkFn)(i)?(a=n,n=null):n=null):t++}this.state=n,this.match=a,this.lastProcessed=t}flush(){for(;this.match;){const e=this.queue.fnArray.length;this.lastProcessed=(0,this.match.processFn)(this.context,e),this.match=null,this.state=null,this._optimize()}}reset(){this.state=null,this.match=null,this.lastProcessed=0}}class h{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1?arguments[1]:void 0;this._streamSink=t,this.fnArray=[],this.argsArray=[],this.optimizer=!t||e&a.RenderingIntentFlag.OPLIST?new c(this):new l(this),this.dependencies=new Set,this._totalLength=0,this.weight=0,this._resolved=t?null:Promise.resolve()}set isOffscreenCanvasSupported(e){this.optimizer.isOffscreenCanvasSupported=e}get length(){return this.argsArray.length}get ready(){return this._resolved||this._streamSink.ready}get totalLength(){return this._totalLength+this.length}addOp(e,t){this.optimizer.push(e,t),this.weight++,this._streamSink&&(this.weight>=h.CHUNK_SIZE||this.weight>=h.CHUNK_SIZE_ABOUT&&(e===a.OPS.restore||e===a.OPS.endText))&&this.flush()}addImageOps(e,t,r){void 0!==r&&this.addOp(a.OPS.beginMarkedContentProps,["OC",r]),this.addOp(e,t),void 0!==r&&this.addOp(a.OPS.endMarkedContent,[])}addDependency(e){this.dependencies.has(e)||(this.dependencies.add(e),this.addOp(a.OPS.dependency,[e]))}addDependencies(e){for(const t of e)this.addDependency(t)}addOpList(e){if(e instanceof h){for(const t of e.dependencies)this.dependencies.add(t);for(let t=0,r=e.length;t0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.optimizer.flush();const r=this.length;this._totalLength+=r,this._streamSink.enqueue({fnArray:this.fnArray,argsArray:this.argsArray,lastChunk:e,separateAnnots:t,length:r},1,this._transfers),this.dependencies.clear(),this.fnArray.length=0,this.argsArray.length=0,this.weight=0,this.optimizer.reset()}}n=h,i(h,"CHUNK_SIZE",1e3),i(h,"CHUNK_SIZE_ABOUT",n.CHUNK_SIZE-5),t.OperatorList=h},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFImage=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(2);var n=r(144),a=r(178),i=r(151),s=r(162),o=r(168),c=r(212),l=r(176),h=r(180),u=r(150);function d(e,t,r,n){return(e=t+e*r)<0?e=0:e>n&&(e=n),e}function f(e,t,r,n,a,i){const s=a*i;let o;o=t<=8?new Uint8Array(s):t<=16?new Uint16Array(s):new Uint32Array(s);const c=r/a,l=n/i;let h,u,d,f,g=0;const p=new Uint16Array(a),m=r;for(h=0;h0&&Number.isInteger(a.height)&&a.height>0&&(a.width!==w||a.height!==v)&&((0,n.warn)("PDFImage - using the Width/Height of the image data, rather than the image dictionary."),w=a.width,v=a.height),w<1||v<1)throw new n.FormatError("Invalid image width: ".concat(w," or height: ").concat(v));this.width=w,this.height=v,this.interpolate=m.get("I","Interpolate"),this.imageMask=m.get("IM","ImageMask")||!1,this.matte=m.get("Matte")||!1;let x=a.bitsPerComponent;if(!x&&(x=m.get("BPC","BitsPerComponent"),!x)){if(!this.imageMask)throw new n.FormatError("Bits per component missing in image: ".concat(this.imageMask));x=1}if(this.bpc=x,!this.imageMask){let e=m.getRaw("CS")||m.getRaw("ColorSpace");if(!e)switch((0,n.info)("JPX images (which do not require color spaces)"),a.numComps){case 1:e=u.Name.get("DeviceGray");break;case 3:e=u.Name.get("DeviceRGB");break;case 4:e=u.Name.get("DeviceCMYK");break;default:throw new Error("JPX images with ".concat(a.numComps," color components not supported."))}this.colorSpace=s.ColorSpace.parse({cs:e,xref:t,resources:o?r:null,pdfFunctionFactory:f,localColorSpaceCache:p}),this.numComps=this.colorSpace.numComps}if(this.decode=m.getArray("D","Decode"),this.needsDecode=!1,this.decode&&(this.colorSpace&&!this.colorSpace.isDefaultDecode(this.decode,x)||d&&!s.ColorSpace.isDefaultDecode(this.decode,1))){var S;this.needsDecode=!0;const e=(1<>3)*n,c=t.byteLength;let l,h;if(!a||i&&o!==c?i?(l=new Uint8Array(o),l.set(t),l.fill(255,c)):l=new Uint8Array(t):l=t,i)for(h=0;h>7&1,s[d+1]=u>>6&1,s[d+2]=u>>5&1,s[d+3]=u>>4&1,s[d+4]=u>>3&1,s[d+5]=u>>2&1,s[d+6]=u>>1&1,s[d+7]=1&u,d+=8;if(d>=1}}else{let r=0;for(u=0,d=0,h=i;d>n;a<0?a=0:a>l&&(a=l),s[d]=a,u&=(1<o[n+1]){t=255;break}}c[u]=t}}}if(c)for(u=0,p=3,d=t*a;u0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const r=this.drawWidth,a=this.drawHeight,i={width:r,height:a,interpolate:this.interpolate,kind:0,data:null},s=this.numComps,o=this.width,h=this.height,u=this.bpc,d=o*s*u+7>>3,f=t&&c.ImageResizer.needsToBeResized(r,a);if(!e){let e;if("DeviceGray"===this.colorSpace.name&&1===u?e=n.ImageKind.GRAYSCALE_1BPP:"DeviceRGB"!==this.colorSpace.name||8!==u||this.needsDecode||(e=n.ImageKind.RGB_24BPP),e&&!this.smask&&!this.mask&&r===o&&a===h){const s=this.getImageBytes(h*d,{});if(t)return f?c.ImageResizer.createImage({data:s,kind:e,width:r,height:a,interpolate:this.interpolate},this.needsDecode):this.createBitmap(e,o,h,s);if(i.kind=e,i.data=s,this.needsDecode){(0,n.assert)(e===n.ImageKind.GRAYSCALE_1BPP,"PDFImage.createImageData: The image must be grayscale.");const t=i.data;for(let e=0,r=t.length;e>3,o=this.getImageBytes(a*s,{internal:!0}),c=this.getComponents(o);let l,h;if(1===i){if(h=r*a,this.needsDecode)for(l=0;l{Object.defineProperty(t,"__esModule",{value:!0}),t.incrementalUpdate=async function(e){let{originalData:t,xrefInfo:r,newRefs:o,xref:u=null,hasXfa:d=!1,xfaDatasetsRef:p=null,hasXfaDatasetsEntry:m=!1,needAppearances:b,acroFormRef:y=null,acroForm:w=null,xfaData:v=null}=e;await async function(e){let{xref:t,acroForm:r,acroFormRef:i,hasXfa:s,hasXfaDatasetsEntry:o,xfaDatasetsRef:c,needAppearances:h,newRefs:u}=e;if(!s||o||c||(0,n.warn)("XFA - Cannot save it"),!h&&(!s||!c||o))return;const d=new a.Dict(t);for(const e of r.getKeys())d.set(e,r.getRaw(e));if(s&&!o){const e=r.get("XFA").slice();e.splice(2,0,"datasets"),e.splice(3,0,c),d.set("XFA",e)}h&&d.set("NeedAppearances",!0);const f=t.encrypt;let g=null;f&&(g=f.createCipherTransform(i.num,i.gen));const p=[];await l(i,d,p,g),u.push({ref:i,data:p.join("")})}({xref:u,acroForm:w,acroFormRef:y,hasXfa:d,hasXfaDatasetsEntry:m,xfaDatasetsRef:p,needAppearances:b,newRefs:o}),d&&function(e){let{xfaData:t,xfaDatasetsRef:r,newRefs:a,xref:o}=e;null===t&&(t=function(e,t){const r=new s.SimpleXMLParser({hasAttributes:!0}).parseFromString(e);for(const{xfa:e}of t){if(!e)continue;const{path:t,value:a}=e;if(!t)continue;const o=(0,i.parseXFAPath)(t);let c=r.documentElement.searchNode(o,0);!c&&o.length>1&&(c=r.documentElement.searchNode([o.at(-1)],0)),c?c.childNodes=Array.isArray(a)?a.map((e=>new s.SimpleDOMNode("value",e))):[new s.SimpleDOMNode("#text",a)]:(0,n.warn)("Node not found for path: ".concat(t))}const a=[];return r.documentElement.dump(a),a.join("")}(o.fetchIfRef(r).getString(),a));const c=o.encrypt;c&&(t=c.createCipherTransform(r.num,r.gen).encryptString(t));const l="".concat(r.num," ").concat(r.gen," obj\\n<< /Type /EmbeddedFile /Length ").concat(t.length,">>\\nstream\\n")+t+"\\nendstream\\nendobj\\n";a.push({ref:r,data:l})}({xfaData:v,xfaDatasetsRef:p,newRefs:o,xref:u});const x=new a.Dict(null),S=r.newRef;let A,k;const C=t.at(-1);10===C||13===C?(A=[],k=t.length):(A=["\\n"],k=t.length+1),x.set("Size",S.num+1),x.set("Prev",r.startXRef),x.set("Type",a.Name.get("XRef")),null!==r.rootRef&&x.set("Root",r.rootRef),null!==r.infoRef&&x.set("Info",r.infoRef),null!==r.encryptRef&&x.set("Encrypt",r.encryptRef),o.push({ref:S,data:""}),o=o.sort(((e,t)=>e.ref.num-t.ref.num));const O=[[0,1,65535]],F=[0,1];let I=0;for(const{ref:e,data:t}of o)I=Math.max(I,k),O.push([1,k,Math.min(e.gen,65535)]),k+=t.length,F.push(e.num,1),A.push(t);if(x.set("Index",F),Array.isArray(r.fileIds)&&r.fileIds.length>0){const e=function(e,t){const r=Math.floor(Date.now()/1e3),a=t.filename||"",i=[r.toString(),a,e.toString()];let s=i.reduce(((e,t)=>e+t.length),0);for(const e of Object.values(t.info))i.push(e),s+=e.length;const o=new Uint8Array(s);let l=0;for(const e of i)g(e,l,o),l+=e.length;return(0,n.bytesToString)((0,c.calculateMD5)(o))}(k,r);x.set("ID",[r.fileIds[0],e])}const T=[1,Math.ceil(Math.log2(I)/8),2],M=(T[0]+T[1]+T[2])*O.length;x.set("W",T),x.set("Length",M),A.push("".concat(S.num," ").concat(S.gen," obj\\n")),await h(x,A,null),A.push(" stream\\n");const E=A.reduce(((e,t)=>e+t.length),0),P="\\nendstream\\nendobj\\nstartxref\\n".concat(k,"\\n%%EOF\\n"),R=new Uint8Array(t.length+E+M+P.length);R.set(t);let N=t.length;for(const e of A)g(e,N,R),N+=e.length;for(const[e,t,r]of O)N=f(e,T[0],N,R),N=f(t,T[1],N,R),N=f(r,T[2],N,R);return g(P,N,R),R},t.writeDict=h,t.writeObject=l,r(139),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115);var n=r(144),a=r(150),i=r(149),s=r(217),o=r(151),c=r(218);async function l(e,t,r,n){r.push("".concat(e.num," ").concat(e.gen," obj\\n")),t instanceof a.Dict?await h(t,r,n):t instanceof o.BaseStream&&await u(t,r,n),r.push("\\nendobj\\n")}async function h(e,t,r){t.push("<<");for(const n of e.getKeys())t.push(" /".concat((0,i.escapePDFName)(n)," ")),await d(e.getRaw(n),t,r);t.push(">>")}async function u(e,t,r){let i=e.getString();null!==r&&(i=r.encryptString(i));const{dict:s}=e,[o,c]=await Promise.all([s.getAsync("Filter"),s.getAsync("DecodeParms")]),l=Array.isArray(o)?await s.xref.fetchIfRefAsync(o[0]):o,u=(0,a.isName)(l,"FlateDecode");if("undefined"!=typeof CompressionStream&&(i.length>=256||u))try{const e=(0,n.stringToBytes)(i),t=new CompressionStream("deflate"),r=t.writable.getWriter();r.write(e),r.close();const l=await new Response(t.readable).arrayBuffer();let h,d;i=(0,n.bytesToString)(new Uint8Array(l)),o?u||(h=Array.isArray(o)?[a.Name.get("FlateDecode"),...o]:[a.Name.get("FlateDecode"),o],c&&(d=Array.isArray(c)?[null,...c]:[null,c])):h=a.Name.get("FlateDecode"),h&&s.set("Filter",h),d&&s.set("DecodeParms",d)}catch(e){(0,n.info)('writeStream - cannot compress data: "'.concat(e,'".'))}s.set("Length",i.length),await h(s,t,r),t.push(" stream\\n",i,"\\nendstream")}async function d(e,t,r){e instanceof a.Name?t.push("/".concat((0,i.escapePDFName)(e.name))):e instanceof a.Ref?t.push("".concat(e.num," ").concat(e.gen," R")):Array.isArray(e)?await async function(e,t,r){t.push("[");let n=!0;for(const a of e)n?n=!1:t.push(" "),await d(a,t,r);t.push("]")}(e,t,r):"string"==typeof e?(null!==r&&(e=r.encryptString(e)),t.push("(".concat((0,i.escapeString)(e),")"))):"number"==typeof e?t.push((0,i.numberToString)(e)):"boolean"==typeof e?t.push(e.toString()):e instanceof a.Dict?await h(e,t,r):e instanceof o.BaseStream?await u(e,t,r):null===e?t.push("null"):(0,n.warn)("Unhandled value in writer: ".concat(typeof e,", please file a bug."))}function f(e,t,r,n){for(let a=t+r-1;a>r-1;a--)n[a]=255&e,e>>=8;return r+t}function g(e,t,r){for(let n=0,a=e.length;n{Object.defineProperty(t,"__esModule",{value:!0}),t.XMLParserErrorCode=t.XMLParserBase=t.SimpleXMLParser=t.SimpleDOMNode=void 0,r(139);var n=r(149);const a={NoError:0,EndOfDocument:-1,UnterminatedCdat:-2,UnterminatedXmlDeclaration:-3,UnterminatedDoctypeDeclaration:-4,UnterminatedComment:-5,MalformedElement:-6,OutOfMemory:-7,UnterminatedAttributeValue:-8,UnterminatedElement:-9,ElementNeverBegun:-10};function i(e,t){const r=e[t];return" "===r||"\\n"===r||"\\r"===r||"\\t"===r}t.XMLParserErrorCode=a;class s{_resolveEntities(e){return e.replaceAll(/&([^;]+);/g,((e,t)=>{if("#x"===t.substring(0,2))return String.fromCodePoint(parseInt(t.substring(2),16));if("#"===t.substring(0,1))return String.fromCodePoint(parseInt(t.substring(1),10));switch(t){case"lt":return"<";case"gt":return">";case"amp":return"&";case"quot":return'"';case"apos":return"'"}return this.onResolveEntity(t)}))}_parseContent(e,t){const r=[];let n=t;function a(){for(;n"!==e[n]&&"/"!==e[n];)++n;const s=e.substring(t,n);for(a();n"!==e[n]&&"/"!==e[n]&&"?"!==e[n];){a();let t="",s="";for(;n"!==e[r]&&"?"!==e[r]&&"/"!==e[r];)++r;const n=e.substring(t,r);!function(){for(;r"!==e[r+1]);)++r;return{name:n,value:e.substring(a,r),parsed:r-t}}parseXml(e){let t=0;for(;t",r),t<0)return void this.onError(a.UnterminatedElement);this.onEndElement(e.substring(r,t)),r=t+1;break;case"?":++r;const n=this._parseProcessingInstruction(e,r);if("?>"!==e.substring(r+n.parsed,r+n.parsed+2))return void this.onError(a.UnterminatedXmlDeclaration);this.onPi(n.name,n.value),r+=n.parsed+2;break;case"!":if("--"===e.substring(r+1,r+3)){if(t=e.indexOf("--\\x3e",r+3),t<0)return void this.onError(a.UnterminatedComment);this.onComment(e.substring(r+3,t)),r=t+3}else if("[CDATA["===e.substring(r+1,r+8)){if(t=e.indexOf("]]>",r+8),t<0)return void this.onError(a.UnterminatedCdat);this.onCdata(e.substring(r+8,t)),r=t+3}else{if("DOCTYPE"!==e.substring(r+1,r+8))return void this.onError(a.MalformedElement);{const n=e.indexOf("[",r+8);let i=!1;if(t=e.indexOf(">",r+8),t<0)return void this.onError(a.UnterminatedDoctypeDeclaration);if(n>0&&t>n){if(t=e.indexOf("]>",r+8),t<0)return void this.onError(a.UnterminatedDoctypeDeclaration);i=!0}const s=e.substring(r+8,t+(i?1:0));this.onDoctype(s),r=t+(i?2:1)}}break;default:const i=this._parseContent(e,r);if(null===i)return void this.onError(a.MalformedElement);let s=!1;if("/>"===e.substring(r+i.parsed,r+i.parsed+2))s=!0;else if(">"!==e.substring(r+i.parsed,r+i.parsed+1))return void this.onError(a.UnterminatedElement);this.onBeginElement(i.name,i.attributes,s),r+=i.parsed+(s?2:1)}}else{for(;r0}searchNode(e,t){if(t>=e.length)return this;const r=e[t],n=[];let a=this;for(;;){var i;if(r.name===a.nodeName){if(0!==r.pos){if(0===n.length)return null;{const[i]=n.pop();let s=0;for(const n of i.childNodes)if(r.name===n.nodeName){if(s===r.pos)return n.searchNode(e,t+1);s++}return a.searchNode(e,t+1)}}{const r=a.searchNode(e,t+1);if(null!==r)return r}}if((null===(i=a.childNodes)||void 0===i?void 0:i.length)>0)n.push([a,0]),a=a.childNodes[0];else{if(0===n.length)return null;for(;0!==n.length;){const[e,t]=n.pop(),r=t+1;if(r");for(const t of this.childNodes)t.dump(e);e.push(""))}else this.nodeValue?e.push(">".concat((0,n.encodeToXmlString)(this.nodeValue),"")):e.push("/>")}else e.push((0,n.encodeToXmlString)(this.nodeValue))}}t.SimpleDOMNode=o,t.SimpleXMLParser=class extends s{constructor(e){let{hasAttributes:t=!1,lowerCaseName:r=!1}=e;super(),this._currentFragment=null,this._stack=null,this._errorCode=a.NoError,this._hasAttributes=t,this._lowerCaseName=r}parseFromString(e){if(this._currentFragment=[],this._stack=[],this._errorCode=a.NoError,this.parseXml(e),this._errorCode!==a.NoError)return;const[t]=this._currentFragment;return t?{documentElement:t}:void 0}onText(e){if(function(e){for(let t=0,r=e.length;t{Object.defineProperty(t,"__esModule",{value:!0}),t.calculateSHA256=t.calculateMD5=t.PDF20=t.PDF17=t.CipherTransformFactory=t.ARCFourCipher=t.AES256Cipher=t.AES128Cipher=void 0,t.calculateSHA384=u,t.calculateSHA512=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139);var n=r(144),a=r(150),i=r(219);class s{constructor(e){this.a=0,this.b=0;const t=new Uint8Array(256),r=e.length;for(let e=0;e<256;++e)t[e]=e;for(let n=0,a=0;n<256;++n){const i=t[n];a=a+i+e[n%r]&255,t[n]=t[a],t[a]=i}this.s=t}encryptBlock(e){let t=this.a,r=this.b;const n=this.s,a=e.length,i=new Uint8Array(a);for(let s=0;s>5&255,h[u++]=a>>13&255,h[u++]=a>>21&255,h[u++]=a>>>29&255,h[u++]=0,h[u++]=0,h[u++]=0;const g=new Int32Array(16);for(u=0;u>>32-o)|0,a=i}i=i+a|0,s=s+l|0,o=o+f|0,c=c+p|0}return new Uint8Array([255&i,i>>8&255,i>>16&255,i>>>24&255,255&s,s>>8&255,s>>16&255,s>>>24&255,255&o,o>>8&255,o>>16&255,o>>>24&255,255&c,c>>8&255,c>>16&255,c>>>24&255])}}();t.calculateMD5=o;class c{constructor(e,t){this.high=0|e,this.low=0|t}and(e){this.high&=e.high,this.low&=e.low}xor(e){this.high^=e.high,this.low^=e.low}or(e){this.high|=e.high,this.low|=e.low}shiftRight(e){e>=32?(this.low=this.high>>>e-32|0,this.high=0):(this.low=this.low>>>e|this.high<<32-e,this.high=this.high>>>e|0)}shiftLeft(e){e>=32?(this.high=this.low<>>32-e,this.low<<=e)}rotateRight(e){let t,r;32&e?(r=this.low,t=this.high):(t=this.low,r=this.high),e&=31,this.low=t>>>e|r<<32-e,this.high=r>>>e|t<<32-e}not(){this.high=~this.high,this.low=~this.low}add(e){const t=(this.low>>>0)+(e.low>>>0);let r=(this.high>>>0)+(e.high>>>0);t>4294967295&&(r+=1),this.low=0|t,this.high=0|r}copyTo(e,t){e[t]=this.high>>>24&255,e[t+1]=this.high>>16&255,e[t+2]=this.high>>8&255,e[t+3]=255&this.high,e[t+4]=this.low>>>24&255,e[t+5]=this.low>>16&255,e[t+6]=this.low>>8&255,e[t+7]=255&this.low}assign(e){this.high=e.high,this.low=e.low}}const l=function(){function e(e,t){return e>>>t|e<<32-t}function t(e,t,r){return e&t^~e&r}function r(e,t,r){return e&t^e&r^t&r}function n(t){return e(t,2)^e(t,13)^e(t,22)}function a(t){return e(t,6)^e(t,11)^e(t,25)}function i(t){return e(t,7)^e(t,18)^t>>>3}const s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];return function(o,c,l){let h=1779033703,u=3144134277,d=1013904242,f=2773480762,g=1359893119,p=2600822924,m=528734635,b=1541459225;const y=64*Math.ceil((l+9)/64),w=new Uint8Array(y);let v,x;for(v=0;v>>29&255,w[v++]=l>>21&255,w[v++]=l>>13&255,w[v++]=l>>5&255,w[v++]=l<<3&255;const A=new Uint32Array(64);for(v=0;v>>10)+A[x-7]+i(A[x-15])+A[x-16]|0;let o,c,l=h,y=u,S=d,C=f,O=g,F=p,I=m,T=b;for(x=0;x<64;++x)o=T+a(O)+t(O,F,I)+s[x]+A[x],c=n(l)+r(l,y,S),T=I,I=F,F=O,O=C+o|0,C=S,S=y,y=l,l=o+c|0;h=h+l|0,u=u+y|0,d=d+S|0,f=f+C|0,g=g+O|0,p=p+F|0,m=m+I|0,b=b+T|0}var k;return new Uint8Array([h>>24&255,h>>16&255,h>>8&255,255&h,u>>24&255,u>>16&255,u>>8&255,255&u,d>>24&255,d>>16&255,d>>8&255,255&d,f>>24&255,f>>16&255,f>>8&255,255&f,g>>24&255,g>>16&255,g>>8&255,255&g,p>>24&255,p>>16&255,p>>8&255,255&p,m>>24&255,m>>16&255,m>>8&255,255&m,b>>24&255,b>>16&255,b>>8&255,255&b])}}();t.calculateSHA256=l;const h=function(){function e(e,t,r,n,a){e.assign(t),e.and(r),a.assign(t),a.not(),a.and(n),e.xor(a)}function t(e,t,r,n,a){e.assign(t),e.and(r),a.assign(t),a.and(n),e.xor(a),a.assign(r),a.and(n),e.xor(a)}function r(e,t,r){e.assign(t),e.rotateRight(28),r.assign(t),r.rotateRight(34),e.xor(r),r.assign(t),r.rotateRight(39),e.xor(r)}function n(e,t,r){e.assign(t),e.rotateRight(14),r.assign(t),r.rotateRight(18),e.xor(r),r.assign(t),r.rotateRight(41),e.xor(r)}function a(e,t,r){e.assign(t),e.rotateRight(1),r.assign(t),r.rotateRight(8),e.xor(r),r.assign(t),r.shiftRight(7),e.xor(r)}function i(e,t,r){e.assign(t),e.rotateRight(19),r.assign(t),r.rotateRight(61),e.xor(r),r.assign(t),r.shiftRight(6),e.xor(r)}const s=[new c(1116352408,3609767458),new c(1899447441,602891725),new c(3049323471,3964484399),new c(3921009573,2173295548),new c(961987163,4081628472),new c(1508970993,3053834265),new c(2453635748,2937671579),new c(2870763221,3664609560),new c(3624381080,2734883394),new c(310598401,1164996542),new c(607225278,1323610764),new c(1426881987,3590304994),new c(1925078388,4068182383),new c(2162078206,991336113),new c(2614888103,633803317),new c(3248222580,3479774868),new c(3835390401,2666613458),new c(4022224774,944711139),new c(264347078,2341262773),new c(604807628,2007800933),new c(770255983,1495990901),new c(1249150122,1856431235),new c(1555081692,3175218132),new c(1996064986,2198950837),new c(2554220882,3999719339),new c(2821834349,766784016),new c(2952996808,2566594879),new c(3210313671,3203337956),new c(3336571891,1034457026),new c(3584528711,2466948901),new c(113926993,3758326383),new c(338241895,168717936),new c(666307205,1188179964),new c(773529912,1546045734),new c(1294757372,1522805485),new c(1396182291,2643833823),new c(1695183700,2343527390),new c(1986661051,1014477480),new c(2177026350,1206759142),new c(2456956037,344077627),new c(2730485921,1290863460),new c(2820302411,3158454273),new c(3259730800,3505952657),new c(3345764771,106217008),new c(3516065817,3606008344),new c(3600352804,1432725776),new c(4094571909,1467031594),new c(275423344,851169720),new c(430227734,3100823752),new c(506948616,1363258195),new c(659060556,3750685593),new c(883997877,3785050280),new c(958139571,3318307427),new c(1322822218,3812723403),new c(1537002063,2003034995),new c(1747873779,3602036899),new c(1955562222,1575990012),new c(2024104815,1125592928),new c(2227730452,2716904306),new c(2361852424,442776044),new c(2428436474,593698344),new c(2756734187,3733110249),new c(3204031479,2999351573),new c(3329325298,3815920427),new c(3391569614,3928383900),new c(3515267271,566280711),new c(3940187606,3454069534),new c(4118630271,4000239992),new c(116418474,1914138554),new c(174292421,2731055270),new c(289380356,3203993006),new c(460393269,320620315),new c(685471733,587496836),new c(852142971,1086792851),new c(1017036298,365543100),new c(1126000580,2618297676),new c(1288033470,3409855158),new c(1501505948,4234509866),new c(1607167915,987167468),new c(1816402316,1246189591)];return function(o,l,h){let u,d,f,g,p,m,b,y,w=arguments.length>3&&void 0!==arguments[3]&&arguments[3];w?(u=new c(3418070365,3238371032),d=new c(1654270250,914150663),f=new c(2438529370,812702999),g=new c(355462360,4144912697),p=new c(1731405415,4290775857),m=new c(2394180231,1750603025),b=new c(3675008525,1694076839),y=new c(1203062813,3204075428)):(u=new c(1779033703,4089235720),d=new c(3144134277,2227873595),f=new c(1013904242,4271175723),g=new c(2773480762,1595750129),p=new c(1359893119,2917565137),m=new c(2600822924,725511199),b=new c(528734635,4215389547),y=new c(1541459225,327033209));const v=128*Math.ceil((h+17)/128),x=new Uint8Array(v);let S,A;for(S=0;S>>29&255,x[S++]=h>>21&255,x[S++]=h>>13&255,x[S++]=h>>5&255,x[S++]=h<<3&255;const C=new Array(80);for(S=0;S<80;S++)C[S]=new c(0,0);let O=new c(0,0),F=new c(0,0),I=new c(0,0),T=new c(0,0),M=new c(0,0),E=new c(0,0),P=new c(0,0),R=new c(0,0);const N=new c(0,0),D=new c(0,0),B=new c(0,0),L=new c(0,0);let _,j;for(S=0;S=1;--e){r=i[13],i[13]=i[9],i[9]=i[5],i[5]=i[1],i[1]=r,r=i[14],n=i[10],i[14]=i[6],i[10]=i[2],i[6]=r,i[2]=n,r=i[15],n=i[11],a=i[7],i[15]=i[3],i[11]=r,i[7]=n,i[3]=a;for(let e=0;e<16;++e)i[e]=this._inv_s[i[e]];for(let r=0,n=16*e;r<16;++r,++n)i[r]^=t[n];for(let e=0;e<16;e+=4){const t=this._mix[i[e]],n=this._mix[i[e+1]],a=this._mix[i[e+2]],s=this._mix[i[e+3]];r=t^n>>>8^n<<24^a>>>16^a<<16^s>>>24^s<<8,i[e]=r>>>24&255,i[e+1]=r>>16&255,i[e+2]=r>>8&255,i[e+3]=255&r}}r=i[13],i[13]=i[9],i[9]=i[5],i[5]=i[1],i[1]=r,r=i[14],n=i[10],i[14]=i[6],i[10]=i[2],i[6]=r,i[2]=n,r=i[15],n=i[11],a=i[7],i[15]=i[3],i[11]=r,i[7]=n,i[3]=a;for(let e=0;e<16;++e)i[e]=this._inv_s[i[e]],i[e]^=t[e];return i}_encrypt(e,t){const r=this._s;let n,a,i;const s=new Uint8Array(16);s.set(e);for(let e=0;e<16;++e)s[e]^=t[e];for(let e=1;e=n;--r)if(e[r]!==t){t=0;break}o-=t,i[i.length-1]=e.subarray(0,16-t)}}const c=new Uint8Array(o);for(let e=0,t=0,r=i.length;e2&&void 0!==arguments[2]?arguments[2]:null;const n=e.length,a=this.buffer;let i=this.bufferPosition;if(r)this.iv=r;else{for(let t=0;i<16&&t=256&&(o=255&(27^o)));for(let t=0;t<4;++t)r[e]=n^=r[e-32],e++,r[e]=a^=r[e-32],e++,r[e]=i^=r[e-32],e++,r[e]=s^=r[e-32],e++}return r}}t.AES256Cipher=p;class m{checkOwnerPassword(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length);const s=l(i,0,i.length);return(0,n.isArrayEqual)(s,a)}checkUserPassword(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(t,e.length);const i=l(a,0,a.length);return(0,n.isArrayEqual)(i,r)}getOwnerKey(e,t,r,n){const a=new Uint8Array(e.length+56);a.set(e,0),a.set(t,e.length),a.set(r,e.length+t.length);const i=l(a,0,a.length);return new p(i).decryptBlock(n,!1,new Uint8Array(16))}getUserKey(e,t,r){const n=new Uint8Array(e.length+8);n.set(e,0),n.set(t,e.length);const a=l(n,0,n.length);return new p(a).decryptBlock(r,!1,new Uint8Array(16))}}t.PDF17=m;class b{_hash(e,t,r){let n=l(t,0,t.length).subarray(0,32),a=[0],i=0;for(;i<64||a.at(-1)>i-32;){const t=e.length+n.length+r.length,s=new Uint8Array(t);let o=0;s.set(e,o),o+=e.length,s.set(n,o),o+=n.length,s.set(r,o);const c=new Uint8Array(64*t);for(let e=0,r=0;e<64;e++,r+=t)c.set(s,r);a=new g(n.subarray(0,16)).encrypt(c,n.subarray(16,32));const d=a.slice(0,16).reduce(((e,t)=>e+t),0)%3;0===d?n=l(a,0,a.length):1===d?n=u(a,0,a.length):2===d&&(n=h(a,0,a.length)),i++}return n.subarray(0,32)}checkOwnerPassword(e,t,r,a){const i=new Uint8Array(e.length+56);i.set(e,0),i.set(t,e.length),i.set(r,e.length+t.length);const s=this._hash(e,i,r);return(0,n.isArrayEqual)(s,a)}checkUserPassword(e,t,r){const a=new Uint8Array(e.length+8);a.set(e,0),a.set(t,e.length);const i=this._hash(e,a,[]);return(0,n.isArrayEqual)(i,r)}getOwnerKey(e,t,r,n){const a=new Uint8Array(e.length+56);a.set(e,0),a.set(t,e.length),a.set(r,e.length+t.length);const i=this._hash(e,a,r);return new p(i).decryptBlock(n,!1,new Uint8Array(16))}getUserKey(e,t,r){const n=new Uint8Array(e.length+8);n.set(e,0),n.set(t,e.length);const a=this._hash(e,n,[]);return new p(a).decryptBlock(r,!1,new Uint8Array(16))}}t.PDF20=b;class y{constructor(e,t){this.StringCipherConstructor=e,this.StreamCipherConstructor=t}createStream(e,t){const r=new this.StreamCipherConstructor;return new i.DecryptStream(e,t,(function(e,t){return r.decryptBlock(e,t)}))}decryptString(e){const t=new this.StringCipherConstructor;let r=(0,n.stringToBytes)(e);return r=t.decryptBlock(r,!0),(0,n.bytesToString)(r)}encryptString(e){const t=new this.StringCipherConstructor;if(t instanceof f){const r=16-e.length%16;e+=String.fromCharCode(r).repeat(r);const a=new Uint8Array(16);if("undefined"!=typeof crypto)crypto.getRandomValues(a);else for(let e=0;e<16;e++)a[e]=Math.floor(256*Math.random());let i=(0,n.stringToBytes)(e);i=t.encrypt(i,a);const s=new Uint8Array(16+i.length);return s.set(a),s.set(i,16),(0,n.bytesToString)(s)}let r=(0,n.stringToBytes)(e);return r=t.encrypt(r),(0,n.bytesToString)(r)}}const w=function(){const e=new Uint8Array([40,191,78,94,78,117,138,65,100,0,78,86,255,250,1,8,46,46,0,182,208,104,62,128,47,12,169,254,100,83,105,122]);function t(t,r,n,a,i,c,l,h){const u=40+n.length+t.length,d=new Uint8Array(u);let f,g,p=0;if(r)for(g=Math.min(32,r.length);p>8&255,d[p++]=i>>16&255,d[p++]=i>>>24&255,f=0,g=t.length;f=4&&!h&&(d[p++]=255,d[p++]=255,d[p++]=255,d[p++]=255);let m=o(d,0,p);const b=l>>3;if(c>=3)for(f=0;f<50;++f)m=o(m,0,b);const y=m.subarray(0,b);let w,v;if(c>=3){for(p=0;p<32;++p)d[p]=e[p];for(f=0,g=t.length;f3&&void 0!==arguments[3]&&arguments[3];const a=new Uint8Array(r.length+9),i=r.length;let s;for(s=0;s>8&255,a[s++]=e>>16&255,a[s++]=255&t,a[s++]=t>>8&255,n&&(a[s++]=115,a[s++]=65,a[s++]=108,a[s++]=84),o(a,0,s).subarray(0,Math.min(r.length+5,16))}function c(e,t,r,o,c){if(!(t instanceof a.Name))throw new n.FormatError("Invalid crypt filter name.");const l=e.get(t.name);let h;if(null!=l&&(h=l.get("CFM")),!h||"None"===h.name)return function(){return new d};if("V2"===h.name)return function(){return new s(i(r,o,c,!1))};if("AESV2"===h.name)return function(){return new g(i(r,o,c,!0))};if("AESV3"===h.name)return function(){return new p(c)};throw new n.FormatError("Unknown crypto method")}return class{constructor(i,c,l){const h=i.get("Filter");if(!(0,a.isName)(h,"Standard"))throw new n.FormatError("unknown encryption method");this.filterName=h.name,this.dict=i;const u=i.get("V");if(!Number.isInteger(u)||1!==u&&2!==u&&4!==u&&5!==u)throw new n.FormatError("unsupported encryption algorithm");this.algorithm=u;let d=i.get("Length");if(!d)if(u<=3)d=40;else{const e=i.get("CF"),t=i.get("StmF");if(e instanceof a.Dict&&t instanceof a.Name){e.suppressEncryption=!0;const r=e.get(t.name);d=(null==r?void 0:r.get("Length"))||128,d<40&&(d<<=3)}}if(!Number.isInteger(d)||d<40||d%8!=0)throw new n.FormatError("invalid key length");const f=(0,n.stringToBytes)(i.get("O")),g=(0,n.stringToBytes)(i.get("U")),p=f.subarray(0,32),y=g.subarray(0,32),w=i.get("P"),v=i.get("R"),x=(4===u||5===u)&&!1!==i.get("EncryptMetadata");this.encryptMetadata=x;const S=(0,n.stringToBytes)(c);let A,k;if(l){if(6===v)try{l=(0,n.utf8StringToString)(l)}catch(e){(0,n.warn)("CipherTransformFactory: Unable to convert UTF8 encoded password.")}A=(0,n.stringToBytes)(l)}if(5!==u)k=t(S,A,p,y,w,v,d,x);else{const e=f.subarray(32,40),t=f.subarray(40,48),r=g.subarray(0,48),a=g.subarray(32,40),s=g.subarray(40,48),o=(0,n.stringToBytes)(i.get("OE")),c=(0,n.stringToBytes)(i.get("UE"));(0,n.stringToBytes)(i.get("Perms")),k=function(e,t,r,n,a,i,s,o,c,l,h,u){if(t){const e=Math.min(127,t.length);t=t.subarray(0,e)}else t=[];const d=6===e?new b:new m;return d.checkUserPassword(t,o,s)?d.getUserKey(t,c,h):t.length&&d.checkOwnerPassword(t,n,i,r)?d.getOwnerKey(t,a,i,l):null}(v,A,p,e,t,r,y,a,s,o,c)}if(!k&&!l)throw new n.PasswordException("No password given",n.PasswordResponses.NEED_PASSWORD);if(!k&&l){const r=function(t,r,n,a){const i=new Uint8Array(32);let c=0;const l=Math.min(32,t.length);for(;c>3;if(n>=3)for(h=0;h<50;++h)u=o(u,0,u.length);let f,g;if(n>=3){g=r;const e=new Uint8Array(d);for(h=19;h>=0;h--){for(let t=0;t=4){const e=i.get("CF");e instanceof a.Dict&&(e.suppressEncryption=!0),this.cf=e,this.stmf=i.get("StmF")||r,this.strf=i.get("StrF")||r,this.eff=i.get("EFF")||this.stmf}}createCipherTransform(e,t){if(4===this.algorithm||5===this.algorithm)return new y(c(this.cf,this.strf,e,t,this.encryptionKey),c(this.cf,this.stmf,e,t,this.encryptionKey));const r=i(e,t,this.encryptionKey,!1),n=function(){return new s(r)};return new y(n,n)}}}();t.CipherTransformFactory=w},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DecryptStream=void 0;var n=r(168);class a extends n.DecodeStream{constructor(e,t,r){super(t),this.str=e,this.dict=e.dict,this.decrypt=r,this.nextChunk=null,this.initialized=!1}readBlock(){var e;let t;if(this.initialized?t=this.nextChunk:(t=this.str.getBytes(512),this.initialized=!0),!t||0===t.length)return void(this.eof=!0);this.nextChunk=this.str.getBytes(512);const r=(null===(e=this.nextChunk)||void 0===e?void 0:e.length)>0;t=(0,this.decrypt)(t,!r);const n=this.bufferLength,a=n+t.length;this.ensureBuffer(a).set(t,n),this.bufferLength=a}}t.DecryptStream=a},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Catalog=void 0,r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var n=r(149),a=r(144),i=r(150),s=r(221),o=r(151),c=r(222),l=r(162),h=r(223),u=r(209),d=r(224),f=r(225);function g(e){return e instanceof i.Dict&&(e=e.get("D")),Array.isArray(e)?e:null}class p{constructor(e,t){if(this.pdfManager=e,this.xref=t,this._catDict=t.getCatalogObj(),!(this._catDict instanceof i.Dict))throw new a.FormatError("Catalog object is not a dictionary.");this.toplevelPagesDict,this._actualNumPages=null,this.fontCache=new i.RefSetCache,this.builtInCMapCache=new Map,this.standardFontDataCache=new Map,this.globalImageCache=new u.GlobalImageCache,this.pageKidsCountCache=new i.RefSetCache,this.pageIndexCache=new i.RefSetCache,this.nonBlendModesSet=new i.RefSet,this.systemFontCache=new Map}get version(){const e=this._catDict.get("Version");if(e instanceof i.Name){if(n.PDF_VERSION_REGEXP.test(e.name))return(0,a.shadow)(this,"version",e.name);(0,a.warn)("Invalid PDF catalog version: ".concat(e.name))}return(0,a.shadow)(this,"version",null)}get lang(){const e=this._catDict.get("Lang");return(0,a.shadow)(this,"lang","string"==typeof e?(0,a.stringToPDFString)(e):null)}get needsRendering(){const e=this._catDict.get("NeedsRendering");return(0,a.shadow)(this,"needsRendering","boolean"==typeof e&&e)}get collection(){let e=null;try{const t=this._catDict.get("Collection");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)("Cannot fetch Collection entry; assuming no collection is present.")}return(0,a.shadow)(this,"collection",e)}get acroForm(){let e=null;try{const t=this._catDict.get("AcroForm");t instanceof i.Dict&&t.size>0&&(e=t)}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)("Cannot fetch AcroForm entry; assuming no forms are present.")}return(0,a.shadow)(this,"acroForm",e)}get acroFormRef(){const e=this._catDict.getRaw("AcroForm");return(0,a.shadow)(this,"acroFormRef",e instanceof i.Ref?e:null)}get metadata(){const e=this._catDict.getRaw("Metadata");if(!(e instanceof i.Ref))return(0,a.shadow)(this,"metadata",null);let t=null;try{var r;const n=this.xref.fetch(e,!(null!==(r=this.xref.encrypt)&&void 0!==r&&r.encryptMetadata));if(n instanceof o.BaseStream&&n.dict instanceof i.Dict){const e=n.dict.get("Type"),r=n.dict.get("Subtype");if((0,i.isName)(e,"Metadata")&&(0,i.isName)(r,"XML")){const e=(0,a.stringToUTF8String)(n.getString());e&&(t=new d.MetadataParser(e).serializable)}}}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.info)('Skipping invalid Metadata: "'.concat(e,'".'))}return(0,a.shadow)(this,"metadata",t)}get markInfo(){let e=null;try{e=this._readMarkInfo()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read mark info.")}return(0,a.shadow)(this,"markInfo",e)}_readMarkInfo(){const e=this._catDict.get("MarkInfo");if(!(e instanceof i.Dict))return null;const t={Marked:!1,UserProperties:!1,Suspects:!1};for(const r in t){const n=e.get(r);"boolean"==typeof n&&(t[r]=n)}return t}get structTreeRoot(){let e=null;try{e=this._readStructTreeRoot()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable read to structTreeRoot info.")}return(0,a.shadow)(this,"structTreeRoot",e)}_readStructTreeRoot(){const e=this._catDict.get("StructTreeRoot");if(!(e instanceof i.Dict))return null;const t=new f.StructTreeRoot(e);return t.init(),t}get toplevelPagesDict(){const e=this._catDict.get("Pages");if(!(e instanceof i.Dict))throw new a.FormatError("Invalid top-level pages dictionary.");return(0,a.shadow)(this,"toplevelPagesDict",e)}get documentOutline(){let e=null;try{e=this._readDocumentOutline()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read document outline.")}return(0,a.shadow)(this,"documentOutline",e)}_readDocumentOutline(){let e=this._catDict.get("Outlines");if(!(e instanceof i.Dict))return null;if(e=e.getRaw("First"),!(e instanceof i.Ref))return null;const t={items:[]},r=[{obj:e,parent:t}],n=new i.RefSet;n.put(e);const s=this.xref,o=new Uint8ClampedArray(3);for(;r.length>0;){const t=r.shift(),c=s.fetchIfRef(t.obj);if(null===c)continue;if(!c.has("Title"))throw new a.FormatError("Invalid outline item encountered.");const h={url:null,dest:null,action:null};p.parseDestDictionary({destDict:c,resultObj:h,docBaseUrl:this.pdfManager.docBaseUrl,docAttachments:this.attachments});const u=c.get("Title"),d=c.get("F")||0,f=c.getArray("C"),g=c.get("Count");let m=o;!Array.isArray(f)||3!==f.length||0===f[0]&&0===f[1]&&0===f[2]||(m=l.ColorSpace.singletons.rgb.getRgb(f,0));const b={action:h.action,attachment:h.attachment,dest:h.dest,url:h.url,unsafeUrl:h.unsafeUrl,newWindow:h.newWindow,setOCGState:h.setOCGState,title:(0,a.stringToPDFString)(u),color:m,count:Number.isInteger(g)?g:void 0,bold:!!(2&d),italic:!!(1&d),items:[]};t.parent.items.push(b),e=c.getRaw("First"),e instanceof i.Ref&&!n.has(e)&&(r.push({obj:e,parent:b}),n.put(e)),e=c.getRaw("Next"),e instanceof i.Ref&&!n.has(e)&&(r.push({obj:e,parent:t.parent}),n.put(e))}return t.items.length>0?t.items:null}get permissions(){let e=null;try{e=this._readPermissions()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read permissions.")}return(0,a.shadow)(this,"permissions",e)}_readPermissions(){const e=this.xref.trailer.get("Encrypt");if(!(e instanceof i.Dict))return null;let t=e.get("P");if("number"!=typeof t)return null;t+=2**32;const r=[];for(const e in a.PermissionFlag){const n=a.PermissionFlag[e];t&n&&r.push(n)}return r}get optionalContentConfig(){let e=null;try{const t=this._catDict.get("OCProperties");if(!t)return(0,a.shadow)(this,"optionalContentConfig",null);const r=t.get("D");if(!r)return(0,a.shadow)(this,"optionalContentConfig",null);const n=t.get("OCGs");if(!Array.isArray(n))return(0,a.shadow)(this,"optionalContentConfig",null);const s=[],o=[];for(const e of n){if(!(e instanceof i.Ref))continue;o.push(e);const t=this.xref.fetchIfRef(e);s.push({id:e.toString(),name:"string"==typeof t.get("Name")?(0,a.stringToPDFString)(t.get("Name")):null,intent:"string"==typeof t.get("Intent")?(0,a.stringToPDFString)(t.get("Intent")):null})}e=this._readOptionalContentConfig(r,o),e.groups=s}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read optional content config: ".concat(e))}return(0,a.shadow)(this,"optionalContentConfig",e)}_readOptionalContentConfig(e,t){function r(e){const r=[];if(Array.isArray(e))for(const n of e)n instanceof i.Ref&&t.includes(n)&&r.push(n.toString());return r}function n(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!Array.isArray(e))return null;const n=[];for(const a of e){if(a instanceof i.Ref&&t.includes(a)){c.put(a),n.push(a.toString());continue}const e=s(a,r);e&&n.push(e)}if(r>0)return n;const a=[];for(const e of t)c.has(e)||a.push(e.toString());return a.length&&n.push({name:null,order:a}),n}function s(e,t){if(++t>l)return(0,a.warn)("parseNestedOrder - reached MAX_NESTED_LEVELS."),null;const r=o.fetchIfRef(e);if(!Array.isArray(r))return null;const i=o.fetchIfRef(r[0]);if("string"!=typeof i)return null;const s=n(r.slice(1),t);return s&&s.length?{name:(0,a.stringToPDFString)(i),order:s}:null}const o=this.xref,c=new i.RefSet,l=10;return{name:"string"==typeof e.get("Name")?(0,a.stringToPDFString)(e.get("Name")):null,creator:"string"==typeof e.get("Creator")?(0,a.stringToPDFString)(e.get("Creator")):null,baseState:e.get("BaseState")instanceof i.Name?e.get("BaseState").name:null,on:r(e.get("ON")),off:r(e.get("OFF")),order:n(e.get("Order")),groups:null}}setActualNumPages(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._actualNumPages=e}get hasActualNumPages(){return null!==this._actualNumPages}get _pagesCount(){const e=this.toplevelPagesDict.get("Count");if(!Number.isInteger(e))throw new a.FormatError("Page count in top-level pages dictionary is not an integer.");return(0,a.shadow)(this,"_pagesCount",e)}get numPages(){return this.hasActualNumPages?this._actualNumPages:this._pagesCount}get destinations(){const e=this._readDests(),t=Object.create(null);if(e instanceof s.NameTree)for(const[r,n]of e.getAll()){const e=g(n);e&&(t[(0,a.stringToPDFString)(r)]=e)}else e instanceof i.Dict&&e.forEach((function(e,r){const n=g(r);n&&(t[e]=n)}));return(0,a.shadow)(this,"destinations",t)}getDestination(e){const t=this._readDests();if(t instanceof s.NameTree){const r=g(t.get(e));if(r)return r;const n=this.destinations[e];if(n)return(0,a.warn)('Found "'.concat(e,'" at an incorrect position in the NameTree.')),n}else if(t instanceof i.Dict){const r=g(t.get(e));if(r)return r}return null}_readDests(){const e=this._catDict.get("Names");return null!=e&&e.has("Dests")?new s.NameTree(e.getRaw("Dests"),this.xref):this._catDict.has("Dests")?this._catDict.get("Dests"):void 0}get pageLabels(){let e=null;try{e=this._readPageLabels()}catch(e){if(e instanceof n.MissingDataException)throw e;(0,a.warn)("Unable to read page labels.")}return(0,a.shadow)(this,"pageLabels",e)}_readPageLabels(){const e=this._catDict.getRaw("PageLabels");if(!e)return null;const t=new Array(this.numPages);let r=null,o="";const c=new s.NumberTree(e,this.xref).getAll();let l="",h=1;for(let e=0,s=this.numPages;e=1))throw new a.FormatError("Invalid start in PageLabel dictionary.");h=e}else h=1}switch(r){case"D":l=h;break;case"R":case"r":l=(0,n.toRomanNumerals)(h,"r"===r);break;case"A":case"a":const e=26,t="a"===r?97:65,i=h-1;l=String.fromCharCode(t+i%e).repeat(Math.floor(i/e)+1);break;default:if(r)throw new a.FormatError('Invalid style "'.concat(r,'" in PageLabel dictionary.'));l=""}t[e]=o+l,h++}return t}get pageLayout(){const e=this._catDict.get("PageLayout");let t="";if(e instanceof i.Name)switch(e.name){case"SinglePage":case"OneColumn":case"TwoColumnLeft":case"TwoColumnRight":case"TwoPageLeft":case"TwoPageRight":t=e.name}return(0,a.shadow)(this,"pageLayout",t)}get pageMode(){const e=this._catDict.get("PageMode");let t="UseNone";if(e instanceof i.Name)switch(e.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"FullScreen":case"UseOC":case"UseAttachments":t=e.name}return(0,a.shadow)(this,"pageMode",t)}get viewerPreferences(){const e=this._catDict.get("ViewerPreferences");if(!(e instanceof i.Dict))return(0,a.shadow)(this,"viewerPreferences",null);let t=null;for(const r of e.getKeys()){const n=e.get(r);let s;switch(r){case"HideToolbar":case"HideMenubar":case"HideWindowUI":case"FitWindow":case"CenterWindow":case"DisplayDocTitle":case"PickTrayByPDFSize":"boolean"==typeof n&&(s=n);break;case"NonFullScreenPageMode":if(n instanceof i.Name)switch(n.name){case"UseNone":case"UseOutlines":case"UseThumbs":case"UseOC":s=n.name;break;default:s="UseNone"}break;case"Direction":if(n instanceof i.Name)switch(n.name){case"L2R":case"R2L":s=n.name;break;default:s="L2R"}break;case"ViewArea":case"ViewClip":case"PrintArea":case"PrintClip":if(n instanceof i.Name)switch(n.name){case"MediaBox":case"CropBox":case"BleedBox":case"TrimBox":case"ArtBox":s=n.name;break;default:s="CropBox"}break;case"PrintScaling":if(n instanceof i.Name)switch(n.name){case"None":case"AppDefault":s=n.name;break;default:s="AppDefault"}break;case"Duplex":if(n instanceof i.Name)switch(n.name){case"Simplex":case"DuplexFlipShortEdge":case"DuplexFlipLongEdge":s=n.name;break;default:s="None"}break;case"PrintPageRange":Array.isArray(n)&&n.length%2==0&&n.every(((e,t,r)=>Number.isInteger(e)&&e>0&&(0===t||e>=r[t-1])&&e<=this.numPages))&&(s=n);break;case"NumCopies":Number.isInteger(n)&&n>0&&(s=n);break;default:(0,a.warn)("Ignoring non-standard key in ViewerPreferences: ".concat(r,"."));continue}void 0!==s?(t||(t=Object.create(null)),t[r]=s):(0,a.warn)('Bad value, for key "'.concat(r,'", in ViewerPreferences: ').concat(n,"."))}return(0,a.shadow)(this,"viewerPreferences",t)}get openAction(){const e=this._catDict.get("OpenAction"),t=Object.create(null);if(e instanceof i.Dict){const r=new i.Dict(this.xref);r.set("A",e);const n={url:null,dest:null,action:null};p.parseDestDictionary({destDict:r,resultObj:n}),Array.isArray(n.dest)?t.dest=n.dest:n.action&&(t.action=n.action)}else Array.isArray(e)&&(t.dest=e);return(0,a.shadow)(this,"openAction",(0,a.objectSize)(t)>0?t:null)}get attachments(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("EmbeddedFiles")){const r=new s.NameTree(e.getRaw("EmbeddedFiles"),this.xref);for(const[e,n]of r.getAll()){const r=new h.FileSpec(n,this.xref);t||(t=Object.create(null)),t[(0,a.stringToPDFString)(e)]=r.serializable}}return(0,a.shadow)(this,"attachments",t)}get xfaImages(){const e=this._catDict.get("Names");let t=null;if(e instanceof i.Dict&&e.has("XFAImages")){const r=new s.NameTree(e.getRaw("XFAImages"),this.xref);for(const[e,n]of r.getAll())t||(t=new i.Dict(this.xref)),t.set((0,a.stringToPDFString)(e),n)}return(0,a.shadow)(this,"xfaImages",t)}_collectJavaScript(){const e=this._catDict.get("Names");let t=null;function r(e,r){if(!(r instanceof i.Dict))return;if(!(0,i.isName)(r.get("S"),"JavaScript"))return;let n=r.get("JS");if(n instanceof o.BaseStream)n=n.getString();else if("string"!=typeof n)return;n=(0,a.stringToPDFString)(n).replaceAll("\\0",""),(t||(t=new Map)).set(e,n)}if(e instanceof i.Dict&&e.has("JavaScript")){const t=new s.NameTree(e.getRaw("JavaScript"),this.xref);for(const[e,n]of t.getAll())r((0,a.stringToPDFString)(e),n)}const n=this._catDict.get("OpenAction");return n&&r("OpenAction",n),t}get javaScript(){const e=this._collectJavaScript();return(0,a.shadow)(this,"javaScript",e?[...e.values()]:null)}get jsActions(){const e=this._collectJavaScript();let t=(0,n.collectActions)(this.xref,this._catDict,a.DocumentActionEventType);if(e){t||(t=Object.create(null));for(const[r,n]of e)r in t?t[r].push(n):t[r]=[n]}return(0,a.shadow)(this,"jsActions",t)}async fontFallback(e,t){const r=await Promise.all(this.fontCache);for(const n of r)if(n.loadedName===e)return void n.fallback(t)}async cleanup(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];(0,c.clearGlobalCaches)(),this.globalImageCache.clear(e),this.pageKidsCountCache.clear(),this.pageIndexCache.clear(),this.nonBlendModesSet.clear();const t=await Promise.all(this.fontCache);for(const{dict:e}of t)delete e.cacheKey;this.fontCache.clear(),this.builtInCMapCache.clear(),this.standardFontDataCache.clear(),this.systemFontCache.clear()}async getPageDict(e){const t=[this.toplevelPagesDict],r=new i.RefSet,n=this._catDict.getRaw("Pages");n instanceof i.Ref&&r.put(n);const s=this.xref,o=this.pageKidsCountCache,c=this.pageIndexCache;let l=0;for(;t.length;){const n=t.pop();if(n instanceof i.Ref){const h=o.get(n);if(h>=0&&l+h<=e){l+=h;continue}if(r.has(n))throw new a.FormatError("Pages tree contains circular reference.");r.put(n);const u=await s.fetchAsync(n);if(u instanceof i.Dict){let t=u.getRaw("Type");if(t instanceof i.Ref&&(t=await s.fetchAsync(t)),(0,i.isName)(t,"Page")||!u.has("Kids")){if(o.has(n)||o.put(n,1),c.has(n)||c.put(n,l),l===e)return[u,n];l++;continue}}t.push(u);continue}if(!(n instanceof i.Dict))throw new a.FormatError("Page dictionary kid reference points to wrong type of object.");const{objId:h}=n;let u=n.getRaw("Count");if(u instanceof i.Ref&&(u=await s.fetchAsync(u)),Number.isInteger(u)&&u>=0&&(h&&!o.has(h)&&o.put(h,u),l+u<=e)){l+=u;continue}let d=n.getRaw("Kids");if(d instanceof i.Ref&&(d=await s.fetchAsync(d)),!Array.isArray(d)){let t=n.getRaw("Type");if(t instanceof i.Ref&&(t=await s.fetchAsync(t)),(0,i.isName)(t,"Page")||!n.has("Kids")){if(l===e)return[n,null];l++;continue}throw new a.FormatError("Page dictionary kids object is not an array.")}for(let e=d.length-1;e>=0;e--)t.push(d[e])}throw new Error("Page index ".concat(e," not found."))}async getAllPageDicts(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{ignoreErrors:t}=this.pdfManager.evaluatorOptions,r=[{currentNode:this.toplevelPagesDict,posInKids:0}],s=new i.RefSet,o=this._catDict.getRaw("Pages");o instanceof i.Ref&&s.put(o);const c=new Map,l=this.xref,h=this.pageIndexCache;let u=0;function d(e,t){t&&!h.has(t)&&h.put(t,u),c.set(u++,[e,t])}function f(r){if(r instanceof n.XRefEntryException&&!e)throw r;e&&t&&0===u&&((0,a.warn)('getAllPageDicts - Skipping invalid first page: "'.concat(r,'".')),r=i.Dict.empty),c.set(u++,[r,null])}for(;r.length>0;){const t=r.at(-1),{currentNode:n,posInKids:o}=t;let c=n.getRaw("Kids");if(c instanceof i.Ref)try{c=await l.fetchAsync(c)}catch(e){f(e);break}if(!Array.isArray(c)){f(new a.FormatError("Page dictionary kids object is not an array."));break}if(o>=c.length){r.pop();continue}const h=c[o];let u;if(h instanceof i.Ref){if(s.has(h)){f(new a.FormatError("Pages tree contains circular reference."));break}s.put(h);try{u=await l.fetchAsync(h)}catch(e){f(e);break}}else u=h;if(!(u instanceof i.Dict)){f(new a.FormatError("Page dictionary kid reference points to wrong type of object."));break}let g=u.getRaw("Type");if(g instanceof i.Ref)try{g=await l.fetchAsync(g)}catch(e){f(e);break}(0,i.isName)(g,"Page")||!u.has("Kids")?d(u,h instanceof i.Ref?h:null):r.push({currentNode:u,posInKids:0}),t.posInKids++}return c}getPageIndex(e){const t=this.pageIndexCache.get(e);if(void 0!==t)return Promise.resolve(t);const r=this.xref;let n=0;const s=t=>function(t){let n,s=0;return r.fetchAsync(t).then((function(r){if((0,i.isRefsEqual)(t,e)&&!(0,i.isDict)(r,"Page")&&!(r instanceof i.Dict&&!r.has("Type")&&r.has("Contents")))throw new a.FormatError("The reference does not point to a /Page dictionary.");if(!r)return null;if(!(r instanceof i.Dict))throw new a.FormatError("Node must be a dictionary.");return n=r.getRaw("Parent"),r.getAsync("Parent")})).then((function(e){if(!e)return null;if(!(e instanceof i.Dict))throw new a.FormatError("Parent must be a dictionary.");return e.getAsync("Kids")})).then((function(e){if(!e)return null;const o=[];let c=!1;for(const n of e){if(!(n instanceof i.Ref))throw new a.FormatError("Kid must be a reference.");if((0,i.isRefsEqual)(n,t)){c=!0;break}o.push(r.fetchAsync(n).then((function(e){if(!(e instanceof i.Dict))throw new a.FormatError("Kid node must be a dictionary.");e.has("Count")?s+=e.get("Count"):s++})))}if(!c)throw new a.FormatError("Kid reference not found in parent's kids.");return Promise.all(o).then((function(){return[s,n]}))}))}(t).then((t=>{if(!t)return this.pageIndexCache.put(e,n),n;const[r,a]=t;return n+=r,s(a)}));return s(e)}get baseUrl(){const e=this._catDict.get("URI");if(e instanceof i.Dict){const t=e.get("Base");if("string"==typeof t){const e=(0,a.createValidAbsoluteUrl)(t,null,{tryConvertEncoding:!0});if(e)return(0,a.shadow)(this,"baseUrl",e.href)}}return(0,a.shadow)(this,"baseUrl",null)}static parseDestDictionary(e){const t=e.destDict;if(!(t instanceof i.Dict))return void(0,a.warn)("parseDestDictionary: \`destDict\` must be a dictionary.");const r=e.resultObj;if("object"!=typeof r)return void(0,a.warn)("parseDestDictionary: \`resultObj\` must be an object.");const s=e.docBaseUrl||null,c=e.docAttachments||null;let l,h,u=t.get("A");if(u instanceof i.Dict||(t.has("Dest")?u=t.get("Dest"):(u=t.get("AA"),u instanceof i.Dict&&(u.has("D")?u=u.get("D"):u.has("U")&&(u=u.get("U"))))),u instanceof i.Dict){const e=u.get("S");if(!(e instanceof i.Name))return void(0,a.warn)("parseDestDictionary: Invalid type in Action dictionary.");const t=e.name;switch(t){case"ResetForm":const e=u.get("Flags"),s=0==(1&("number"==typeof e?e:0)),d=[],f=[];for(const e of u.get("Fields")||[])e instanceof i.Ref?f.push(e.toString()):"string"==typeof e&&d.push((0,a.stringToPDFString)(e));r.resetForm={fields:d,refs:f,include:s};break;case"URI":l=u.get("URI"),l instanceof i.Name&&(l="/"+l.name);break;case"GoTo":h=u.get("D");break;case"Launch":case"GoToR":const g=u.get("F");g instanceof i.Dict?l=g.get("F")||null:"string"==typeof g&&(l=g);let p=u.get("D");if(p&&(p instanceof i.Name&&(p=p.name),"string"==typeof l)){const e=l.split("#")[0];"string"==typeof p?l=e+"#"+p:Array.isArray(p)&&(l=e+"#"+JSON.stringify(p))}const m=u.get("NewWindow");"boolean"==typeof m&&(r.newWindow=m);break;case"GoToE":const b=u.get("T");let y;if(c&&b instanceof i.Dict){const e=b.get("R"),t=b.get("N");(0,i.isName)(e,"C")&&"string"==typeof t&&(y=c[(0,a.stringToPDFString)(t)])}y?r.attachment=y:(0,a.warn)('parseDestDictionary - unimplemented "GoToE" action.');break;case"Named":const w=u.get("N");w instanceof i.Name&&(r.action=w.name);break;case"SetOCGState":const v=u.get("State"),x=u.get("PreserveRB");if(!Array.isArray(v)||0===v.length)break;const S=[];for(const e of v)if(e instanceof i.Name)switch(e.name){case"ON":case"OFF":case"Toggle":S.push(e.name)}else e instanceof i.Ref&&S.push(e.toString());if(S.length!==v.length)break;r.setOCGState={state:S,preserveRB:"boolean"!=typeof x||x};break;case"JavaScript":const A=u.get("JS");let k;A instanceof o.BaseStream?k=A.getString():"string"==typeof A&&(k=A);const C=k&&(0,n.recoverJsURL)((0,a.stringToPDFString)(k));if(C){l=C.url,r.newWindow=C.newWindow;break}default:if("JavaScript"===t||"SubmitForm"===t)break;(0,a.warn)('parseDestDictionary - unsupported action: "'.concat(t,'".'))}}else t.has("Dest")&&(h=t.get("Dest"));if("string"==typeof l){const e=(0,a.createValidAbsoluteUrl)(l,s,{addDefaultProtocol:!0,tryConvertEncoding:!0});e&&(r.url=e.href),r.unsafeUrl=l}h&&(h instanceof i.Name&&(h=h.name),"string"==typeof h?r.dest=(0,a.stringToPDFString)(h):Array.isArray(h)&&(r.dest=h))}}t.Catalog=p},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NumberTree=t.NameTree=void 0,r(139);var n=r(150),a=r(144);class i{constructor(e,t,r){this.constructor===i&&(0,a.unreachable)("Cannot initialize NameOrNumberTree."),this.root=e,this.xref=t,this._type=r}getAll(){const e=new Map;if(!this.root)return e;const t=this.xref,r=new n.RefSet;r.put(this.root);const i=[this.root];for(;i.length>0;){const s=t.fetchIfRef(i.shift());if(!(s instanceof n.Dict))continue;if(s.has("Kids")){const e=s.get("Kids");if(!Array.isArray(e))continue;for(const t of e){if(r.has(t))throw new a.FormatError('Duplicate entry in "'.concat(this._type,'" tree.'));i.push(t),r.put(t)}continue}const o=s.get(this._type);if(Array.isArray(o))for(let r=0,n=o.length;r10)return(0,a.warn)('Search depth limit reached for "'.concat(this._type,'" tree.')),null;const i=r.get("Kids");if(!Array.isArray(i))return null;let s=0,o=i.length-1;for(;s<=o;){const n=s+o>>1,a=t.fetchIfRef(i[n]),c=a.get("Limits");if(et.fetchIfRef(c[1]))){r=a;break}s=n+1}}if(s>o)return null}const i=r.get(this._type);if(Array.isArray(i)){let r=0,n=i.length-2;for(;r<=n;){const a=r+n>>1,s=a+(1&a),o=t.fetchIfRef(i[s]);if(eo))return t.fetchIfRef(i[s+1]);r=s+2}}}return null}}t.NameTree=class extends i{constructor(e,t){super(e,t,"Names")}},t.NumberTree=class extends i{constructor(e,t){super(e,t,"Nums")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearGlobalCaches=function(){(0,n.clearPrimitiveCaches)(),(0,a.clearUnicodeCaches)()};var n=r(150),a=r(190)},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FileSpec=void 0;var n=r(144),a=r(151),i=r(150);function s(e){return e.has("UF")?e.get("UF"):e.has("F")?e.get("F"):e.has("Unix")?e.get("Unix"):e.has("Mac")?e.get("Mac"):e.has("DOS")?e.get("DOS"):null}t.FileSpec=class{constructor(e,t){e instanceof i.Dict&&(this.xref=t,this.root=e,e.has("FS")&&(this.fs=e.get("FS")),this.description=e.has("Desc")?(0,n.stringToPDFString)(e.get("Desc")):"",e.has("RF")&&(0,n.warn)("Related file specifications are not supported"),this.contentAvailable=!0,e.has("EF")||(this.contentAvailable=!1,(0,n.warn)("Non-embedded file specifications are not supported")))}get filename(){if(!this._filename&&this.root){const e=s(this.root)||"unnamed";this._filename=(0,n.stringToPDFString)(e).replaceAll("\\\\\\\\","\\\\").replaceAll("\\\\/","/").replaceAll("\\\\","/")}return this._filename}get content(){if(!this.contentAvailable)return null;!this.contentRef&&this.root&&(this.contentRef=s(this.root.get("EF")));let e=null;if(this.contentRef){const t=this.xref.fetchIfRef(this.contentRef);t instanceof a.BaseStream?e=t.getBytes():(0,n.warn)("Embedded file specification points to non-existing/invalid content")}else(0,n.warn)("Embedded file specification does not have a content");return e}get serializable(){return{filename:this.filename,content:this.content}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataParser=void 0,r(2),r(139);var n=r(217);t.MetadataParser=class{constructor(e){e=this._repair(e);const t=new n.SimpleXMLParser({lowerCaseName:!0}).parseFromString(e);this._metadataMap=new Map,this._data=e,t&&this._parse(t)}_repair(e){return e.replace(/^[^<]+/,"").replaceAll(/>\\\\376\\\\377([^<]+)/g,(function(e,t){const r=t.replaceAll(/\\\\([0-3])([0-7])([0-7])/g,(function(e,t,r,n){return String.fromCharCode(64*t+8*r+1*n)})).replaceAll(/&(amp|apos|gt|lt|quot);/g,(function(e,t){switch(t){case"amp":return"&";case"apos":return"'";case"gt":return">";case"lt":return"<";case"quot":return'"'}throw new Error("_repair: ".concat(t," isn't defined."))})),n=[">"];for(let e=0,t=r.length;e=32&&t<127&&60!==t&&62!==t&&38!==t?n.push(String.fromCharCode(t)):n.push("&#x"+(65536+t).toString(16).substring(1)+";")}return n.join("")}))}_getSequence(e){const t=e.nodeName;return"rdf:bag"!==t&&"rdf:seq"!==t&&"rdf:alt"!==t?null:e.childNodes.filter((e=>"rdf:li"===e.nodeName))}_parseArray(e){if(!e.hasChildNodes())return;const[t]=e.childNodes,r=this._getSequence(t)||[];this._metadataMap.set(e.nodeName,r.map((e=>e.textContent.trim())))}_parse(e){let t=e.documentElement;if("rdf:rdf"!==t.nodeName)for(t=t.firstChild;t&&"rdf:rdf"!==t.nodeName;)t=t.nextSibling;if(t&&"rdf:rdf"===t.nodeName&&t.hasChildNodes())for(const e of t.childNodes)if("rdf:description"===e.nodeName)for(const t of e.childNodes){const e=t.nodeName;switch(e){case"#text":continue;case"dc:creator":case"dc:subject":this._parseArray(t);continue}this._metadataMap.set(e,t.textContent.trim())}}get serializable(){return{parsedData:this._metadataMap,rawData:this._data}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StructTreeRoot=t.StructTreePage=void 0,r(139);var n=r(150),a=r(144),i=r(221);const s="PAGE_CONTENT",o="STREAM_CONTENT",c="OBJECT",l="ELEMENT";t.StructTreeRoot=class{constructor(e){this.dict=e,this.roleMap=new Map}init(){this.readRoleMap()}readRoleMap(){const e=this.dict.get("RoleMap");e instanceof n.Dict&&e.forEach(((e,t)=>{t instanceof n.Name&&this.roleMap.set(e,t.name)}))}};class h{constructor(e,t){this.tree=e,this.dict=t,this.kids=[],this.parseKids()}get role(){const e=this.dict.get("S"),t=e instanceof n.Name?e.name:"",{root:r}=this.tree;return r.roleMap.has(t)?r.roleMap.get(t):t}parseKids(){let e=null;const t=this.dict.getRaw("Pg");t instanceof n.Ref&&(e=t.toString());const r=this.dict.get("K");if(Array.isArray(r))for(const t of r){const r=this.parseKid(e,t);r&&this.kids.push(r)}else{const t=this.parseKid(e,r);t&&this.kids.push(t)}}parseKid(e,t){if(Number.isInteger(t))return this.tree.pageDict.objId!==e?null:new u({type:s,mcid:t,pageObjId:e});let r=null;if(t instanceof n.Ref?r=this.dict.xref.fetch(t):t instanceof n.Dict&&(r=t),!r)return null;const a=r.getRaw("Pg");a instanceof n.Ref&&(e=a.toString());const i=r.get("Type")instanceof n.Name?r.get("Type").name:null;return"MCR"===i?this.tree.pageDict.objId!==e?null:new u({type:o,refObjId:r.getRaw("Stm")instanceof n.Ref?r.getRaw("Stm").toString():null,pageObjId:e,mcid:r.get("MCID")}):"OBJR"===i?this.tree.pageDict.objId!==e?null:new u({type:c,refObjId:r.getRaw("Obj")instanceof n.Ref?r.getRaw("Obj").toString():null,pageObjId:e}):new u({type:l,dict:r})}}class u{constructor(e){let{type:t,dict:r=null,mcid:n=null,pageObjId:a=null,refObjId:i=null}=e;this.type=t,this.dict=r,this.mcid=n,this.pageObjId=a,this.refObjId=i,this.parentNode=null}}t.StructTreePage=class{constructor(e,t){this.root=e,this.rootDict=e?e.dict:null,this.pageDict=t,this.nodes=[]}parse(){if(!this.root||!this.rootDict)return;const e=this.rootDict.get("ParentTree");if(!e)return;const t=this.pageDict.get("StructParents");if(!Number.isInteger(t))return;const r=new i.NumberTree(e,this.rootDict.xref).get(t);if(!Array.isArray(r))return;const a=new Map;for(const e of r)e instanceof n.Ref&&this.addNode(this.rootDict.xref.fetch(e),a)}addNode(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(r>40)return(0,a.warn)("StructTree MAX_DEPTH reached."),null;if(t.has(e))return t.get(e);const i=new h(this,e);t.set(e,i);const s=e.get("P");if(!s||(0,n.isName)(s.get("Type"),"StructTreeRoot"))return this.addTopLevelNode(e,i)||t.delete(e),i;const o=this.addNode(s,t,r+1);if(!o)return i;let c=!1;for(const t of o.kids)t.type===l&&t.dict===e&&(t.parentNode=i,c=!0);return c||t.delete(e),i}addTopLevelNode(e,t){const r=this.rootDict.get("K");if(!r)return!1;if(r instanceof n.Dict)return r.objId===e.objId&&(this.nodes[0]=t,!0);if(!Array.isArray(r))return!0;let a=!1;for(let n=0;n2&&void 0!==arguments[2]?arguments[2]:0;if(n>40)return void(0,a.warn)("StructTree too deep to be fully serialized.");const i=Object.create(null);i.role=t.role,i.children=[],r.children.push(i);const h=t.dict.get("Alt");"string"==typeof h&&(i.alt=(0,a.stringToPDFString)(h));const u=t.dict.get("Lang");"string"==typeof u&&(i.lang=(0,a.stringToPDFString)(u));for(const r of t.kids){const t=r.type===l?r.parentNode:null;t?e(t,i,n+1):r.type===s||r.type===o?i.children.push({type:"content",id:"p".concat(r.pageObjId,"_mc").concat(r.mcid)}):r.type===c&&i.children.push({type:"object",id:r.refObjId})}}const t=Object.create(null);t.children=[],t.role="Root";for(const r of this.nodes)r&&e(r,t);return t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectLoader=void 0,r(139);var n=r(150),a=r(151),i=r(149),s=r(144);function o(e,t){if(e instanceof n.Dict)e=e.getRawValues();else if(e instanceof a.BaseStream)e=e.dict.getRawValues();else if(!Array.isArray(e))return;for(const i of e)((r=i)instanceof n.Ref||r instanceof n.Dict||r instanceof a.BaseStream||Array.isArray(r))&&t.push(i);var r}t.ObjectLoader=class{constructor(e,t,r){this.dict=e,this.keys=t,this.xref=r,this.refSet=null}async load(){if(this.xref.stream.isDataLoaded)return;const{keys:e,dict:t}=this;this.refSet=new n.RefSet;const r=[];for(const n of e){const e=t.getRaw(n);void 0!==e&&r.push(e)}return this._walk(r)}async _walk(e){const t=[],r=[];for(;e.length;){let c=e.pop();if(c instanceof n.Ref){if(this.refSet.has(c))continue;try{this.refSet.put(c),c=this.xref.fetch(c)}catch(e){if(!(e instanceof i.MissingDataException)){(0,s.warn)('ObjectLoader._walk - requesting all data: "'.concat(e,'".')),this.refSet=null;const{manager:t}=this.xref.stream;return t.requestAllChunks()}t.push(c),r.push({begin:e.begin,end:e.end})}}if(c instanceof a.BaseStream){const e=c.getBaseStreams();if(e){let n=!1;for(const t of e)t.isDataLoaded||(n=!0,r.push({begin:t.start,end:t.end}));n&&t.push(c)}}o(c,e)}if(r.length){await this.xref.stream.manager.requestRanges(r);for(const e of t)e instanceof n.Ref&&this.refSet.remove(e);return this._walk(t)}this.refSet=null}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XFAFactory=void 0,r(139);var n=r(228),a=r(229),i=r(242),s=r(238),o=r(237),c=r(144),l=r(243),h=r(253);class u{constructor(e){try{this.root=(new l.XFAParser).parse(u._createDocument(e));const t=new a.Binder(this.root);this.form=t.bind(),this.dataHandler=new i.DataHandler(this.root,t.getData()),this.form[n.$globalData].template=this.form}catch(e){(0,c.warn)("XFA - an error occurred during parsing and binding: ".concat(e))}}isValid(){return this.root&&this.form}_createPagesHelper(){const e=this.form[n.$toPages]();return new Promise(((t,r)=>{const n=()=>{try{const r=e.next();r.done?t(r.value):setTimeout(n,0)}catch(e){r(e)}};setTimeout(n,0)}))}async _createPages(){try{this.pages=await this._createPagesHelper(),this.dims=this.pages.children.map((e=>{const{width:t,height:r}=e.attributes.style;return[0,0,parseInt(t),parseInt(r)]}))}catch(e){(0,c.warn)("XFA - an error occurred during layout: ".concat(e))}}getBoundingBox(e){return this.dims[e]}async getNumPages(){return this.pages||await this._createPages(),this.dims.length}setImages(e){this.form[n.$globalData].images=e}setFonts(e){this.form[n.$globalData].fontFinder=new s.FontFinder(e);const t=[];for(let e of this.form[n.$globalData].usedTypefaces)e=(0,o.stripQuotes)(e),this.form[n.$globalData].fontFinder.find(e)||t.push(e);return t.length>0?t:null}appendFonts(e,t){this.form[n.$globalData].fontFinder.add(e,t)}async getPages(){this.pages||await this._createPages();const e=this.pages;return this.pages=null,e}serializeData(e){return this.dataHandler.serialize(e)}static _createDocument(e){return e["/xdp:xdp"]?Object.values(e).join(""):e["xdp:xdp"]}static getRichTextAsHtml(e){if(!e||"string"!=typeof e)return null;try{let t=new l.XFAParser(h.XhtmlNamespace,!0).parse(e);if(!["body","xhtml"].includes(t[n.$nodeName])){const e=h.XhtmlNamespace.body({});e[n.$appendChild](t),t=e}const r=t[n.$toHTML]();if(!r.success)return null;const{html:a}=r,{attributes:i}=a;return i&&(i.class&&(i.class=i.class.filter((e=>!e.startsWith("xfa")))),i.dir="auto"),{html:a,str:t[n.$text]()}}catch(e){(0,c.warn)("XFA - an error occurred during parsing of rich text: ".concat(e))}return null}}t.XFAFactory=u},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.$uid=t.$toStyle=t.$toString=t.$toPages=t.$toHTML=t.$text=t.$tabIndex=t.$setValue=t.$setSetAttributes=t.$setId=t.$searchNode=t.$root=t.$resolvePrototypes=t.$removeChild=t.$pushPara=t.$pushGlyphs=t.$popPara=t.$onText=t.$onChildCheck=t.$onChild=t.$nsAttributes=t.$nodeName=t.$namespaceId=t.$lastAttribute=t.$isUsable=t.$isTransparent=t.$isThereMoreWidth=t.$isSplittable=t.$isNsAgnostic=t.$isDescendent=t.$isDataValue=t.$isCDATAXml=t.$isBindable=t.$insertAt=t.$indexOf=t.$ids=t.$hasSettableValue=t.$globalData=t.$getTemplateRoot=t.$getSubformParent=t.$getRealChildrenByNameIt=t.$getParent=t.$getNextPage=t.$getExtra=t.$getDataValue=t.$getContainedChildren=t.$getChildrenByNameIt=t.$getChildrenByName=t.$getChildrenByClass=t.$getChildren=t.$getAvailableSpace=t.$getAttributes=t.$getAttributeIt=t.$flushHTML=t.$finalize=t.$extra=t.$dump=t.$data=t.$content=t.$consumed=t.$clone=t.$cleanup=t.$cleanPage=t.$clean=t.$childrenToHTML=t.$appendChild=t.$addHTML=t.$acceptWhitespace=void 0;const r=Symbol();t.$acceptWhitespace=r;const n=Symbol();t.$addHTML=n;const a=Symbol();t.$appendChild=a;const i=Symbol();t.$childrenToHTML=i;const s=Symbol();t.$clean=s;const o=Symbol();t.$cleanPage=o;const c=Symbol();t.$cleanup=c;const l=Symbol();t.$clone=l;const h=Symbol();t.$consumed=h;const u=Symbol("content");t.$content=u;const d=Symbol("data");t.$data=d;const f=Symbol();t.$dump=f;const g=Symbol("extra");t.$extra=g;const p=Symbol();t.$finalize=p;const m=Symbol();t.$flushHTML=m;const b=Symbol();t.$getAttributeIt=b;const y=Symbol();t.$getAttributes=y;const w=Symbol();t.$getAvailableSpace=w;const v=Symbol();t.$getChildrenByClass=v;const x=Symbol();t.$getChildrenByName=x;const S=Symbol();t.$getChildrenByNameIt=S;const A=Symbol();t.$getDataValue=A;const k=Symbol();t.$getExtra=k;const C=Symbol();t.$getRealChildrenByNameIt=C;const O=Symbol();t.$getChildren=O;const F=Symbol();t.$getContainedChildren=F;const I=Symbol();t.$getNextPage=I;const T=Symbol();t.$getSubformParent=T;const M=Symbol();t.$getParent=M;const E=Symbol();t.$getTemplateRoot=E;const P=Symbol();t.$globalData=P;const R=Symbol();t.$hasSettableValue=R;const N=Symbol();t.$ids=N;const D=Symbol();t.$indexOf=D;const B=Symbol();t.$insertAt=B;const L=Symbol();t.$isCDATAXml=L;const _=Symbol();t.$isBindable=_;const j=Symbol();t.$isDataValue=j;const U=Symbol();t.$isDescendent=U;const $=Symbol();t.$isNsAgnostic=$;const X=Symbol();t.$isSplittable=X;const H=Symbol();t.$isThereMoreWidth=H;const q=Symbol();t.$isTransparent=q;const z=Symbol();t.$isUsable=z;const G=Symbol();t.$lastAttribute=G;const W=Symbol("namespaceId");t.$namespaceId=W;const V=Symbol("nodeName");t.$nodeName=V;const K=Symbol();t.$nsAttributes=K;const Y=Symbol();t.$onChild=Y;const J=Symbol();t.$onChildCheck=J;const Z=Symbol();t.$onText=Z;const Q=Symbol();t.$pushGlyphs=Q;const ee=Symbol();t.$popPara=ee;const te=Symbol();t.$pushPara=te;const re=Symbol();t.$removeChild=re;const ne=Symbol("root");t.$root=ne;const ae=Symbol();t.$resolvePrototypes=ae;const ie=Symbol();t.$searchNode=ie;const se=Symbol();t.$setId=se;const oe=Symbol();t.$setSetAttributes=oe;const ce=Symbol();t.$setValue=ce;const le=Symbol();t.$tabIndex=le;const he=Symbol();t.$text=he;const ue=Symbol();t.$toPages=ue;const de=Symbol();t.$toHTML=de;const fe=Symbol();t.$toString=fe;const ge=Symbol();t.$toStyle=ge;const pe=Symbol("uid");t.$uid=pe},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Binder=void 0,r(139);var n=r(228),a=r(230),i=r(241),s=r(240),o=r(234),c=r(144);const l=o.NamespaceIds.datasets.id;function h(e){const t=new a.Text({});return t[n.$content]=e,t}t.Binder=class{constructor(e){var t;this.root=e,this.datasets=e.datasets,this.data=(null===(t=e.datasets)||void 0===t?void 0:t.data)||new s.XmlObject(o.NamespaceIds.datasets.id,"data"),this.emptyMerge=0===this.data[n.$getChildren]().length,this.root.form=this.form=e.template[n.$clone]()}_isConsumeData(){return!this.emptyMerge&&this._mergeMode}_isMatchTemplate(){return!this._isConsumeData()}bind(){return this._bindElement(this.form,this.data),this.form}getData(){return this.data}_bindValue(e,t,r){var i;if(e[n.$data]=t,e[n.$hasSettableValue]())if(t[n.$isDataValue]()){const r=t[n.$getDataValue]();e[n.$setValue](h(r))}else if(e instanceof a.Field&&"multiSelect"===(null===(i=e.ui)||void 0===i||null===(i=i.choiceList)||void 0===i?void 0:i.open)){const r=t[n.$getChildren]().map((e=>e[n.$content].trim())).join("\\n");e[n.$setValue](h(r))}else this._isConsumeData()&&(0,c.warn)("XFA - Nodes haven't the same type.");else!t[n.$isDataValue]()||this._isMatchTemplate()?this._bindElement(e,t):(0,c.warn)("XFA - Nodes haven't the same type.")}_findDataByNameToConsume(e,t,r,a){var i;if(!e)return null;let s,c;for(let a=0;a<3;a++){for(s=r[n.$getRealChildrenByNameIt](e,!1,!0);c=s.next().value,c;)if(t===c[n.$isDataValue]())return c;if(r[n.$namespaceId]===o.NamespaceIds.datasets.id&&"data"===r[n.$nodeName])break;r=r[n.$getParent]()}return a?(s=this.data[n.$getRealChildrenByNameIt](e,!0,!1),c=s.next().value,c||(s=this.data[n.$getAttributeIt](e,!0),c=s.next().value,null!==(i=c)&&void 0!==i&&i[n.$isDataValue]()?c:null)):null}_setProperties(e,t){if(e.hasOwnProperty("setProperty"))for(const{ref:r,target:o,connection:l}of e.setProperty.children){if(l)continue;if(!r)continue;const h=(0,i.searchNode)(this.root,t,r,!1,!1);if(!h){(0,c.warn)("XFA - Invalid reference: ".concat(r,"."));continue}const[u]=h;if(!u[n.$isDescendent](this.data)){(0,c.warn)("XFA - Invalid node: must be a data node.");continue}const d=(0,i.searchNode)(this.root,e,o,!1,!1);if(!d){(0,c.warn)("XFA - Invalid target: ".concat(o,"."));continue}const[f]=d;if(!f[n.$isDescendent](e)){(0,c.warn)("XFA - Invalid target: must be a property or subproperty.");continue}const g=f[n.$getParent]();if(f instanceof a.SetProperty||g instanceof a.SetProperty){(0,c.warn)("XFA - Invalid target: cannot be a setProperty or one of its properties.");continue}if(f instanceof a.BindItems||g instanceof a.BindItems){(0,c.warn)("XFA - Invalid target: cannot be a bindItems or one of its properties.");continue}const p=u[n.$text](),m=f[n.$nodeName];if(f instanceof s.XFAAttribute){const e=Object.create(null);e[m]=p;const t=Reflect.construct(Object.getPrototypeOf(g).constructor,[e]);g[m]=t[m]}else f.hasOwnProperty(n.$content)?(f[n.$data]=u,f[n.$content]=p,f[n.$finalize]()):(0,c.warn)("XFA - Invalid node to use in setProperty")}}_bindItems(e,t){if(!e.hasOwnProperty("items")||!e.hasOwnProperty("bindItems")||e.bindItems.isEmpty())return;for(const t of e.items.children)e[n.$removeChild](t);e.items.clear();const r=new a.Items({}),s=new a.Items({});e[n.$appendChild](r),e.items.push(r),e[n.$appendChild](s),e.items.push(s);for(const{ref:a,labelRef:o,valueRef:l,connection:u}of e.bindItems.children){if(u)continue;if(!a)continue;const e=(0,i.searchNode)(this.root,t,a,!1,!1);if(e)for(const t of e){if(!t[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid ref (".concat(a,"): must be a datasets child."));continue}const e=(0,i.searchNode)(this.root,t,o,!0,!1);if(!e){(0,c.warn)("XFA - Invalid label: ".concat(o,"."));continue}const[u]=e;if(!u[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid label: must be a datasets child.");continue}const d=(0,i.searchNode)(this.root,t,l,!0,!1);if(!d){(0,c.warn)("XFA - Invalid value: ".concat(l,"."));continue}const[f]=d;if(!f[n.$isDescendent](this.datasets)){(0,c.warn)("XFA - Invalid value: must be a datasets child.");continue}const g=h(u[n.$text]()),p=h(f[n.$text]());r[n.$appendChild](g),r.text.push(g),s[n.$appendChild](p),s.text.push(p)}else(0,c.warn)("XFA - Invalid reference: ".concat(a,"."))}}_bindOccurrences(e,t,r){let a;if(t.length>1&&(a=e[n.$clone](),a[n.$removeChild](a.occur),a.occur=null),this._bindValue(e,t[0],r),this._setProperties(e,t[0]),this._bindItems(e,t[0]),1===t.length)return;const i=e[n.$getParent](),s=e[n.$nodeName],o=i[n.$indexOf](e);for(let e=1,c=t.length;et.name===e.name)).length:r[a].children.length;const o=r[n.$indexOf](e)+1,c=t.initial-i;if(c){const t=e[n.$clone]();t[n.$removeChild](t.occur),t.occur=null,r[a].push(t),r[n.$insertAt](o,t);for(let e=1;e0)this._bindOccurrences(a,[e[0]],null);else if(this.emptyMerge){const e=t[n.$namespaceId]===l?-1:t[n.$namespaceId],r=a[n.$data]=new s.XmlObject(e,a.name||"root");t[n.$appendChild](r),this._bindElement(a,r)}continue}if(!a[n.$isBindable]())continue;let e=!1,o=null,h=null,u=null;if(a.bind){switch(a.bind.match){case"none":this._setAndBind(a,t);continue;case"global":e=!0;break;case"dataRef":if(!a.bind.ref){(0,c.warn)("XFA - ref is empty in node ".concat(a[n.$nodeName],".")),this._setAndBind(a,t);continue}h=a.bind.ref}a.bind.picture&&(o=a.bind.picture[n.$content])}const[d,f]=this._getOccurInfo(a);if(h){if(u=(0,i.searchNode)(this.root,t,h,!0,!1),null===u){if(u=(0,i.createDataNode)(this.data,t,h),!u)continue;this._isConsumeData()&&(u[n.$consumed]=!0),this._setAndBind(a,u);continue}this._isConsumeData()&&(u=u.filter((e=>!e[n.$consumed]))),u.length>f?u=u.slice(0,f):0===u.length&&(u=null),u&&this._isConsumeData()&&u.forEach((e=>{e[n.$consumed]=!0}))}else{if(!a.name){this._setAndBind(a,t);continue}if(this._isConsumeData()){const r=[];for(;r.length0?r:null}else{if(u=t[n.$getRealChildrenByNameIt](a.name,!1,this.emptyMerge).next().value,!u){if(0===d){r.push(a);continue}const e=t[n.$namespaceId]===l?-1:t[n.$namespaceId];u=a[n.$data]=new s.XmlObject(e,a.name),this.emptyMerge&&(u[n.$consumed]=!0),t[n.$appendChild](u),this._setAndBind(a,u);continue}this.emptyMerge&&(u[n.$consumed]=!0),u=[u]}}u?this._bindOccurrences(a,u,o):d>0?this._setAndBind(a,t):r.push(a)}r.forEach((e=>e[n.$getParent]()[n.$removeChild](e)))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Value=t.Text=t.TemplateNamespace=t.Template=t.SetProperty=t.Items=t.Field=t.BindItems=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139),r(231),r(145),r(147),r(148);var n=r(228),a=r(234),i=r(235),s=r(236),o=r(240),c=r(237),l=r(144),h=r(238),u=r(149),d=r(241);const f=a.NamespaceIds.template.id,g="http://www.w3.org/2000/svg",p=/^H(\\d+)$/,m=new Set(["image/gif","image/jpeg","image/jpg","image/pjpeg","image/png","image/apng","image/x-png","image/bmp","image/x-ms-bmp","image/tiff","image/tif","application/octet-stream"]),b=[[[66,77],"image/bmp"],[[255,216,255],"image/jpeg"],[[73,73,42,0],"image/tiff"],[[77,77,0,42],"image/tiff"],[[71,73,70,56,57,97],"image/gif"],[[137,80,78,71,13,10,26,10],"image/png"]];function y(e){if(!e||!e.border)return{w:0,h:0};const t=e.border[n.$getExtra]();return t?{w:t.widths[0]+t.widths[2]+t.insets[0]+t.insets[2],h:t.widths[1]+t.widths[3]+t.insets[1]+t.insets[3]}:{w:0,h:0}}function w(e){return e.margin&&(e.margin.topInset||e.margin.rightInset||e.margin.bottomInset||e.margin.leftInset)}function v(e,t){if(!e.value){const t=new Nt({});e[n.$appendChild](t),e.value=t}e.value[n.$setValue](t)}function*x(e){for(const t of e[n.$getChildren]())t instanceof vt?yield*t[n.$getContainedChildren]():yield t}function S(e){var t;return"error"===(null===(t=e.validate)||void 0===t?void 0:t.nullTest)}function A(e){for(;e;){if(!e.traversal)return void(e[n.$tabIndex]=e[n.$getParent]()[n.$tabIndex]);if(e[n.$tabIndex])return;let t=null;for(const r of e.traversal[n.$getChildren]())if("next"===r.operation){t=r;break}if(!t||!t.ref)return void(e[n.$tabIndex]=e[n.$getParent]()[n.$tabIndex]);const r=e[n.$getTemplateRoot]();e[n.$tabIndex]=++r[n.$tabIndex];const a=r[n.$searchNode](t.ref,e);if(!a)return;e=a[0]}}function k(e,t){const r=e.assist;if(r){const e=r[n.$toHTML]();e&&(t.title=e);const a=r.role.match(p);if(a){const e="heading",r=a[1];t.role=e,t["aria-level"]=r}}if("table"===e.layout)t.role="table";else if("row"===e.layout)t.role="row";else{var a;const r=e[n.$getParent]();"row"===r.layout&&(t.role="TH"===(null===(a=r.assist)||void 0===a?void 0:a.role)?"columnheader":"cell")}}function C(e){if(!e.assist)return null;const t=e.assist;return t.speak&&""!==t.speak[n.$content]?t.speak[n.$content]:t.toolTip?t.toolTip[n.$content]:null}function O(e){return c.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:Object.create(null)},children:[{name:"span",attributes:{style:Object.create(null)},value:e}]})}function F(e){const t=e[n.$getTemplateRoot]();null===t[n.$extra].firstUnsplittable&&(t[n.$extra].firstUnsplittable=e,t[n.$extra].noLayoutFailure=!0)}function I(e){const t=e[n.$getTemplateRoot]();t[n.$extra].firstUnsplittable===e&&(t[n.$extra].noLayoutFailure=!1)}function T(e){if(e[n.$extra])return!1;if(e[n.$extra]=Object.create(null),"auto"===e.targetType)return!1;const t=e[n.$getTemplateRoot]();let r=null;if(e.target){if(r=t[n.$searchNode](e.target,e[n.$getParent]()),!r)return!1;r=r[0]}const{currentPageArea:a,currentContentArea:i}=t[n.$extra];if("pageArea"===e.targetType)return r instanceof Qe||(r=null),e.startNew?(e[n.$extra].target=r||a,!0):!(!r||r===a||(e[n.$extra].target=r,0));r instanceof ee||(r=null);const s=r&&r[n.$getParent]();let o,c=s;if(e.startNew)if(r){const e=s.contentArea.children,t=e.indexOf(i),n=e.indexOf(r);-1!==t&&te,a[n.$extra].noLayoutFailure=!0;const o=t[n.$toHTML](r);e[n.$addHTML](o.html,o.bbox),a[n.$extra].noLayoutFailure=i,t[n.$getSubformParent]=s}class E extends o.StringObject{constructor(e){super(f,"appearanceFilter"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class P extends o.XFAObject{constructor(e){super(f,"arc",!0),this.circular=(0,c.getInteger)({data:e.circular,defaultValue:0,validate:e=>1===e}),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.startAngle=(0,c.getFloat)({data:e.startAngle,defaultValue:0,validate:e=>!0}),this.sweepAngle=(0,c.getFloat)({data:e.sweepAngle,defaultValue:360,validate:e=>!0}),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null,this.fill=null}[n.$toHTML](){var e;const t=this.edge||new ue({}),r=t[n.$toStyle](),a=Object.create(null);let i;"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)?Object.assign(a,this.fill[n.$toStyle]()):a.fill="transparent",a.strokeWidth=(0,s.measureToString)("visible"===t.presence?t.thickness:0),a.stroke=r.color;const o={xmlns:g,style:{width:"100%",height:"100%",overflow:"visible"}};if(360===this.sweepAngle)i={name:"ellipse",attributes:{xmlns:g,cx:"50%",cy:"50%",rx:"50%",ry:"50%",style:a}};else{const e=this.startAngle*Math.PI/180,t=this.sweepAngle*Math.PI/180,r=this.sweepAngle>180?1:0,[n,s,c,l]=[50*(1+Math.cos(e)),50*(1-Math.sin(e)),50*(1+Math.cos(e+t)),50*(1-Math.sin(e+t))];i={name:"path",attributes:{xmlns:g,d:"M ".concat(n," ").concat(s," A 50 50 0 ").concat(r," 0 ").concat(c," ").concat(l),vectorEffect:"non-scaling-stroke",style:a}},Object.assign(o,{viewBox:"0 0 100 100",preserveAspectRatio:"none"})}const l={name:"svg",children:[i],attributes:o};return w(this[n.$getParent]()[n.$getParent]())?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[l]}):(l.attributes.style.position="absolute",c.HTMLResult.success(l))}}class R extends o.XFAObject{constructor(e){super(f,"area",!0),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.id=e.id||"",this.name=e.name||"",this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.desc=null,this.extras=null,this.area=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}*[n.$getContainedChildren](){yield*x(this)}[n.$isTransparent](){return!0}[n.$isBindable](){return!0}[n.$addHTML](e,t){const[r,a,i,s]=t;this[n.$extra].width=Math.max(this[n.$extra].width,r+i),this[n.$extra].height=Math.max(this[n.$extra].height,a+s),this[n.$extra].children.push(e)}[n.$getAvailableSpace](){return this[n.$extra].availableSpace}[n.$toHTML](e){const t=(0,s.toStyle)(this,"position"),r={style:t,id:this[n.$uid],class:["xfaArea"]};(0,s.isPrintOnly)(this)&&r.class.push("xfaPrintOnly"),this.name&&(r.xfaName=this.name);const a=[];this[n.$extra]={children:a,width:0,height:0,availableSpace:e};const i=this[n.$childrenToHTML]({filter:new Set(["area","draw","field","exclGroup","subform","subformSet"]),include:!0});if(!i.success)return i.isBreak()?i:(delete this[n.$extra],c.HTMLResult.FAILURE);t.width=(0,s.measureToString)(this[n.$extra].width),t.height=(0,s.measureToString)(this[n.$extra].height);const o={name:"div",attributes:r,children:a},l=[this.x,this.y,this[n.$extra].width,this[n.$extra].height];return delete this[n.$extra],c.HTMLResult.success(o,l)}}class N extends o.XFAObject{constructor(e){super(f,"assist",!0),this.id=e.id||"",this.role=e.role||"",this.use=e.use||"",this.usehref=e.usehref||"",this.speak=null,this.toolTip=null}[n.$toHTML](){var e;return(null===(e=this.toolTip)||void 0===e?void 0:e[n.$content])||null}}class D extends o.XFAObject{constructor(e){super(f,"barcode",!0),this.charEncoding=(0,c.getKeyword)({data:e.charEncoding?e.charEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\\d{2}/)}),this.checksum=(0,c.getStringOption)(e.checksum,["none","1mod10","1mod10_1mod11","2mod10","auto"]),this.dataColumnCount=(0,c.getInteger)({data:e.dataColumnCount,defaultValue:-1,validate:e=>e>=0}),this.dataLength=(0,c.getInteger)({data:e.dataLength,defaultValue:-1,validate:e=>e>=0}),this.dataPrep=(0,c.getStringOption)(e.dataPrep,["none","flateCompress"]),this.dataRowCount=(0,c.getInteger)({data:e.dataRowCount,defaultValue:-1,validate:e=>e>=0}),this.endChar=e.endChar||"",this.errorCorrectionLevel=(0,c.getInteger)({data:e.errorCorrectionLevel,defaultValue:-1,validate:e=>e>=0&&e<=8}),this.id=e.id||"",this.moduleHeight=(0,c.getMeasurement)(e.moduleHeight,"5mm"),this.moduleWidth=(0,c.getMeasurement)(e.moduleWidth,"0.25mm"),this.printCheckDigit=(0,c.getInteger)({data:e.printCheckDigit,defaultValue:0,validate:e=>1===e}),this.rowColumnRatio=(0,c.getRatio)(e.rowColumnRatio),this.startChar=e.startChar||"",this.textLocation=(0,c.getStringOption)(e.textLocation,["below","above","aboveEmbedded","belowEmbedded","none"]),this.truncate=(0,c.getInteger)({data:e.truncate,defaultValue:0,validate:e=>1===e}),this.type=(0,c.getStringOption)(e.type?e.type.toLowerCase():"",["aztec","codabar","code2of5industrial","code2of5interleaved","code2of5matrix","code2of5standard","code3of9","code3of9extended","code11","code49","code93","code128","code128a","code128b","code128c","code128sscc","datamatrix","ean8","ean8add2","ean8add5","ean13","ean13add2","ean13add5","ean13pwcd","fim","logmars","maxicode","msi","pdf417","pdf417macro","plessey","postauscust2","postauscust3","postausreplypaid","postausstandard","postukrm4scc","postusdpbc","postusimb","postusstandard","postus5zip","qrcode","rfid","rss14","rss14expanded","rss14limited","rss14stacked","rss14stackedomni","rss14truncated","telepen","ucc128","ucc128random","ucc128sscc","upca","upcaadd2","upcaadd5","upcapwcd","upce","upceadd2","upceadd5","upcean2","upcean5","upsmaxicode"]),this.upsMode=(0,c.getStringOption)(e.upsMode,["usCarrier","internationalCarrier","secureSymbol","standardSymbol"]),this.use=e.use||"",this.usehref=e.usehref||"",this.wideNarrowRatio=(0,c.getRatio)(e.wideNarrowRatio),this.encrypt=null,this.extras=null}}class B extends o.XFAObject{constructor(e){super(f,"bind",!0),this.match=(0,c.getStringOption)(e.match,["once","dataRef","global","none"]),this.ref=e.ref||"",this.picture=null}}class L extends o.XFAObject{constructor(e){super(f,"bindItems"),this.connection=e.connection||"",this.labelRef=e.labelRef||"",this.ref=e.ref||"",this.valueRef=e.valueRef||""}}t.BindItems=L;class _ extends o.XFAObject{constructor(e){super(f,"bookend"),this.id=e.id||"",this.leader=e.leader||"",this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||""}}class j extends o.Option01{constructor(e){super(f,"boolean"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$toHTML](e){return O(1===this[n.$content]?"1":"0")}}class U extends o.XFAObject{constructor(e){super(f,"border",!0),this.break=(0,c.getStringOption)(e.break,["close","open"]),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new o.XFAObjectArray(4),this.edge=new o.XFAObjectArray(4),this.extras=null,this.fill=null,this.margin=null}[n.$getExtra](){if(!this[n.$extra]){const e=this.edge.children.slice();if(e.length<4){const t=e.at(-1)||new ue({});for(let r=e.length;r<4;r++)e.push(t)}const t=e.map((e=>e.thickness)),r=[0,0,0,0];this.margin&&(r[0]=this.margin.topInset,r[1]=this.margin.rightInset,r[2]=this.margin.bottomInset,r[3]=this.margin.leftInset),this[n.$extra]={widths:t,insets:r,edges:e}}return this[n.$extra]}[n.$toStyle](){var e;const{edges:t}=this[n.$getExtra](),r=t.map((e=>{const t=e[n.$toStyle]();return t.color||(t.color="#000000"),t})),a=Object.create(null);if(this.margin&&Object.assign(a,this.margin[n.$toStyle]()),"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)&&Object.assign(a,this.fill[n.$toStyle]()),this.corner.children.some((e=>0!==e.radius))){const e=this.corner.children.map((e=>e[n.$toStyle]()));if(2===e.length||3===e.length){const t=e.at(-1);for(let r=e.length;r<4;r++)e.push(t)}a.borderRadius=e.map((e=>e.radius)).join(" ")}switch(this.presence){case"invisible":case"hidden":a.borderStyle="";break;case"inactive":a.borderStyle="none";break;default:a.borderStyle=r.map((e=>e.style)).join(" ")}return a.borderWidth=r.map((e=>e.width)).join(" "),a.borderColor=r.map((e=>e.color)).join(" "),a}}class $ extends o.XFAObject{constructor(e){super(f,"break",!0),this.after=(0,c.getStringOption)(e.after,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.afterTarget=e.afterTarget||"",this.before=(0,c.getStringOption)(e.before,["auto","contentArea","pageArea","pageEven","pageOdd"]),this.beforeTarget=e.beforeTarget||"",this.bookendLeader=e.bookendLeader||"",this.bookendTrailer=e.bookendTrailer||"",this.id=e.id||"",this.overflowLeader=e.overflowLeader||"",this.overflowTarget=e.overflowTarget||"",this.overflowTrailer=e.overflowTrailer||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class X extends o.XFAObject{constructor(e){super(f,"breakAfter",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.target=e.target||"",this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}}class H extends o.XFAObject{constructor(e){super(f,"breakBefore",!0),this.id=e.id||"",this.leader=e.leader||"",this.startNew=(0,c.getInteger)({data:e.startNew,defaultValue:0,validate:e=>1===e}),this.target=e.target||"",this.targetType=(0,c.getStringOption)(e.targetType,["auto","contentArea","pageArea"]),this.trailer=e.trailer||"",this.use=e.use||"",this.usehref=e.usehref||"",this.script=null}[n.$toHTML](e){return this[n.$extra]={},c.HTMLResult.FAILURE}}class q extends o.XFAObject{constructor(e){super(f,"button",!0),this.highlight=(0,c.getStringOption)(e.highlight,["inverted","none","outline","push"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toHTML](e){const t=this[n.$getParent]()[n.$getParent](),r={name:"button",attributes:{id:this[n.$uid],class:["xfaButton"],style:{}},children:[]};for(const e of t.event.children){if("click"!==e.activity||!e.script)continue;const t=(0,u.recoverJsURL)(e.script[n.$content]);if(!t)continue;const a=(0,s.fixURL)(t.url);a&&r.children.push({name:"a",attributes:{id:"link"+this[n.$uid],href:a,newWindow:t.newWindow,class:["xfaLink"],style:{}},children:[]})}return c.HTMLResult.success(r)}}class z extends o.XFAObject{constructor(e){super(f,"calculate",!0),this.id=e.id||"",this.override=(0,c.getStringOption)(e.override,["disabled","error","ignore","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.script=null}}class G extends o.XFAObject{constructor(e){super(f,"caption",!0),this.id=e.id||"",this.placement=(0,c.getStringOption)(e.placement,["left","bottom","inline","right","top"]),this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.reserve=Math.ceil((0,c.getMeasurement)(e.reserve)),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.font=null,this.margin=null,this.para=null,this.value=null}[n.$setValue](e){v(this,e)}[n.$getExtra](e){if(!this[n.$extra]){let{width:t,height:r}=e;switch(this.placement){case"left":case"right":case"inline":t=this.reserve<=0?t:this.reserve;break;case"top":case"bottom":r=this.reserve<=0?r:this.reserve}this[n.$extra]=(0,s.layoutNode)(this,{width:t,height:r})}return this[n.$extra]}[n.$toHTML](e){if(!this.value)return c.HTMLResult.EMPTY;this[n.$pushPara]();const t=this.value[n.$toHTML](e).html;if(!t)return this[n.$popPara](),c.HTMLResult.EMPTY;const r=this.reserve;if(this.reserve<=0){const{w:t,h:r}=this[n.$getExtra](e);switch(this.placement){case"left":case"right":case"inline":this.reserve=t;break;case"top":case"bottom":this.reserve=r}}const a=[];"string"==typeof t?a.push({name:"#text",value:t}):a.push(t);const i=(0,s.toStyle)(this,"font","margin","visibility");switch(this.placement){case"left":case"right":this.reserve>0&&(i.width=(0,s.measureToString)(this.reserve));break;case"top":case"bottom":this.reserve>0&&(i.height=(0,s.measureToString)(this.reserve))}return(0,s.setPara)(this,null,t),this[n.$popPara](),this.reserve=r,c.HTMLResult.success({name:"div",attributes:{style:i,class:["xfaCaption"]},children:a})}}class W extends o.StringObject{constructor(e){super(f,"certificate"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class V extends o.XFAObject{constructor(e){super(f,"certificates",!0),this.credentialServerPolicy=(0,c.getStringOption)(e.credentialServerPolicy,["optional","required"]),this.id=e.id||"",this.url=e.url||"",this.urlPolicy=e.urlPolicy||"",this.use=e.use||"",this.usehref=e.usehref||"",this.encryption=null,this.issuers=null,this.keyUsage=null,this.oids=null,this.signing=null,this.subjectDNs=null}}class K extends o.XFAObject{constructor(e){super(f,"checkButton",!0),this.id=e.id||"",this.mark=(0,c.getStringOption)(e.mark,["default","check","circle","cross","diamond","square","star"]),this.shape=(0,c.getStringOption)(e.shape,["square","round"]),this.size=(0,c.getMeasurement)(e.size,"10pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)("margin"),a=(0,s.measureToString)(this.size);let i,o,l;r.width=r.height=a;const h=this[n.$getParent]()[n.$getParent](),u=h.items.children.length&&h.items.children[0][n.$toHTML]().html||[],d={on:(void 0!==u[0]?u[0]:"on").toString(),off:(void 0!==u[1]?u[1]:"off").toString()},f=((null===(t=h.value)||void 0===t?void 0:t[n.$text]())||"off")===d.on||void 0,g=h[n.$getSubformParent](),p=h[n.$uid];let m;var b,y;g instanceof Se?(l=g[n.$uid],i="radio",o="xfaRadio",m=(null===(b=g[n.$data])||void 0===b?void 0:b[n.$uid])||g[n.$uid]):(i="checkbox",o="xfaCheckbox",m=(null===(y=h[n.$data])||void 0===y?void 0:y[n.$uid])||h[n.$uid]);const w={name:"input",attributes:{class:[o],style:r,fieldId:p,dataId:m,type:i,checked:f,xfaOn:d.on,xfaOff:d.off,"aria-label":C(h),"aria-required":!1}};return l&&(w.attributes.name=l),S(h)&&(w.attributes["aria-required"]=!0,w.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[w]})}}class Y extends o.XFAObject{constructor(e){super(f,"choiceList",!0),this.commitOn=(0,c.getStringOption)(e.commitOn,["select","exit"]),this.id=e.id||"",this.open=(0,c.getStringOption)(e.open,["userControl","always","multiSelect","onEntry"]),this.textEntry=(0,c.getInteger)({data:e.textEntry,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t,r;const a=(0,s.toStyle)(this,"border","margin"),i=this[n.$getParent]()[n.$getParent](),o={fontSize:"calc(".concat((null===(t=i.font)||void 0===t?void 0:t.size)||10,"px * var(--scale-factor))")},l=[];if(i.items.children.length>0){var h;const e=i.items;let t=0,r=0;2===e.children.length&&(t=e.children[0].save,r=1-t);const a=e.children[t][n.$toHTML]().html,s=e.children[r][n.$toHTML]().html;let c=!1;const u=(null===(h=i.value)||void 0===h?void 0:h[n.$text]())||"";for(let e=0,t=a.length;ee>=0}),this.use=e.use||"",this.usehref=e.usehref||""}}class Q extends o.XFAObject{constructor(e){super(f,"connect",!0),this.connection=e.connection||"",this.id=e.id||"",this.ref=e.ref||"",this.usage=(0,c.getStringOption)(e.usage,["exportAndImport","exportOnly","importOnly"]),this.use=e.use||"",this.usehref=e.usehref||"",this.picture=null}}class ee extends o.XFAObject{constructor(e){super(f,"contentArea",!0),this.h=(0,c.getMeasurement)(e.h),this.id=e.id||"",this.name=e.name||"",this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=(0,c.getMeasurement)(e.w),this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.desc=null,this.extras=null}[n.$toHTML](e){const t={left:(0,s.measureToString)(this.x),top:(0,s.measureToString)(this.y),width:(0,s.measureToString)(this.w),height:(0,s.measureToString)(this.h)},r=["xfaContentarea"];return(0,s.isPrintOnly)(this)&&r.push("xfaPrintOnly"),c.HTMLResult.success({name:"div",children:[],attributes:{style:t,class:r,id:this[n.$uid]}})}}class te extends o.XFAObject{constructor(e){super(f,"corner",!0),this.id=e.id||"",this.inverted=(0,c.getInteger)({data:e.inverted,defaultValue:0,validate:e=>1===e}),this.join=(0,c.getStringOption)(e.join,["square","round"]),this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.radius=(0,c.getMeasurement)(e.radius),this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"visibility");return e.radius=(0,s.measureToString)("square"===this.join?0:this.radius),e}}class re extends o.ContentObject{constructor(e){super(f,"date"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class ne extends o.ContentObject{constructor(e){super(f,"dateTime"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class ae extends o.XFAObject{constructor(e){super(f,"dateTimeEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.picker=(0,c.getStringOption)(e.picker,["host","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)(this,"border","font","margin"),a=this[n.$getParent]()[n.$getParent](),i={name:"input",attributes:{type:"text",fieldId:a[n.$uid],dataId:(null===(t=a[n.$data])||void 0===t?void 0:t[n.$uid])||a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":C(a),"aria-required":!1}};return S(a)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class ie extends o.ContentObject{constructor(e){super(f,"decimal"),this.fracDigits=(0,c.getInteger)({data:e.fracDigits,defaultValue:2,validate:e=>!0}),this.id=e.id||"",this.leadDigits=(0,c.getInteger)({data:e.leadDigits,defaultValue:-1,validate:e=>!0}),this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class se extends o.XFAObject{constructor(e){super(f,"defaultUi",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class oe extends o.XFAObject{constructor(e){super(f,"desc",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}}class ce extends o.OptionObject{constructor(e){super(f,"digestMethod",["","SHA1","SHA256","SHA512","RIPEMD160"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class le extends o.XFAObject{constructor(e){super(f,"digestMethods",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.digestMethod=new o.XFAObjectArray}}class he extends o.XFAObject{constructor(e){super(f,"draw",!0),this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.border=null,this.caption=null,this.desc=null,this.extras=null,this.font=null,this.keep=null,this.margin=null,this.para=null,this.traversal=null,this.ui=null,this.value=null,this.setProperty=new o.XFAObjectArray}[n.$setValue](e){v(this,e)}[n.$toHTML](e){if(A(this),"hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this),this[n.$pushPara]();const t=this.w,r=this.h,{w:a,h:o,isBroken:l}=(0,s.layoutNode)(this,e);if(a&&""===this.w){if(l&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),c.HTMLResult.FAILURE;this.w=a}if(o&&""===this.h&&(this.h=o),F(this),!(0,i.checkDimensions)(this,e))return this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.FAILURE;I(this);const h=(0,s.toStyle)(this,"font","hAlign","dimensions","position","presence","rotate","anchorType","border","margin");(0,s.setMinMaxDimensions)(this,h),h.margin&&(h.padding=h.margin,delete h.margin);const u=["xfaDraw"];this.font&&u.push("xfaFont"),(0,s.isPrintOnly)(this)&&u.push("xfaPrintOnly");const d={style:h,id:this[n.$uid],class:u};this.name&&(d.xfaName=this.name);const f={name:"div",attributes:d,children:[]};k(this,d);const g=(0,s.computeBbox)(this,f,e),p=this.value?this.value[n.$toHTML](e).html:null;return null===p?(this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.success((0,s.createWrapper)(this,f),g)):(f.children.push(p),(0,s.setPara)(this,h,p),this.w=t,this.h=r,this[n.$popPara](),c.HTMLResult.success((0,s.createWrapper)(this,f),g))}}class ue extends o.XFAObject{constructor(e){super(f,"edge",!0),this.cap=(0,c.getStringOption)(e.cap,["square","butt","round"]),this.id=e.id||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.stroke=(0,c.getStringOption)(e.stroke,["solid","dashDot","dashDotDot","dashed","dotted","embossed","etched","lowered","raised"]),this.thickness=(0,c.getMeasurement)(e.thickness,"0.5pt"),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"visibility");if(Object.assign(e,{linecap:this.cap,width:(0,s.measureToString)(this.thickness),color:this.color?this.color[n.$toStyle]():"#000000",style:""}),"visible"!==this.presence)e.style="none";else switch(this.stroke){case"solid":e.style="solid";break;case"dashDot":case"dashDotDot":case"dashed":e.style="dashed";break;case"dotted":e.style="dotted";break;case"embossed":e.style="ridge";break;case"etched":e.style="groove";break;case"lowered":e.style="inset";break;case"raised":e.style="outset"}return e}}class de extends o.OptionObject{constructor(e){super(f,"encoding",["adbe.x509.rsa_sha1","adbe.pkcs7.detached","adbe.pkcs7.sha1"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class fe extends o.XFAObject{constructor(e){super(f,"encodings",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encoding=new o.XFAObjectArray}}class ge extends o.XFAObject{constructor(e){super(f,"encrypt",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=null}}class pe extends o.XFAObject{constructor(e){super(f,"encryptData",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["encrypt","decrypt"]),this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class me extends o.XFAObject{constructor(e){super(f,"encryption",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class be extends o.OptionObject{constructor(e){super(f,"encryptionMethod",["","AES256-CBC","TRIPLEDES-CBC","AES128-CBC","AES192-CBC"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ye extends o.XFAObject{constructor(e){super(f,"encryptionMethods",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.encryptionMethod=new o.XFAObjectArray}}class we extends o.XFAObject{constructor(e){super(f,"event",!0),this.activity=(0,c.getStringOption)(e.activity,["click","change","docClose","docReady","enter","exit","full","indexChange","initialize","mouseDown","mouseEnter","mouseExit","mouseUp","postExecute","postOpen","postPrint","postSave","postSign","postSubmit","preExecute","preOpen","prePrint","preSave","preSign","preSubmit","ready","validationState"]),this.id=e.id||"",this.listen=(0,c.getStringOption)(e.listen,["refOnly","refAndDescendents"]),this.name=e.name||"",this.ref=e.ref||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.encryptData=null,this.execute=null,this.script=null,this.signData=null,this.submit=null}}class ve extends o.ContentObject{constructor(e){super(f,"exData"),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.maxLength=(0,c.getInteger)({data:e.maxLength,defaultValue:-1,validate:e=>e>=-1}),this.name=e.name||"",this.rid=e.rid||"",this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["none","base64","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$isCDATAXml](){return"text/html"===this.contentType}[n.$onChild](e){return("text/html"===this.contentType&&e[n.$namespaceId]===a.NamespaceIds.xhtml.id||"text/xml"===this.contentType)&&(this[n.$content]=e,!0)}[n.$toHTML](e){return"text/html"===this.contentType&&this[n.$content]?this[n.$content][n.$toHTML](e):c.HTMLResult.EMPTY}}class xe extends o.XFAObject{constructor(e){super(f,"exObject",!0),this.archive=e.archive||"",this.classId=e.classId||"",this.codeBase=e.codeBase||"",this.codeType=e.codeType||"",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}}class Se extends o.XFAObject{constructor(e){super(f,"exclGroup",!0),this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),this.accessKey=e.accessKey||"",this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.border=null,this.calculate=null,this.caption=null,this.desc=null,this.extras=null,this.margin=null,this.para=null,this.traversal=null,this.validate=null,this.connect=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray}[n.$isBindable](){return!0}[n.$hasSettableValue](){return!0}[n.$setValue](e){for(const t of this.field.children){if(!t.value){const e=new Nt({});t[n.$appendChild](e),t.value=e}t.value[n.$setValue](e)}}[n.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}[n.$isSplittable](){var e;const t=this[n.$getSubformParent]();return!!t[n.$isSplittable]()&&(void 0!==this[n.$extra]._isSplittable?this[n.$extra]._isSplittable:"position"===this.layout||this.layout.includes("row")?(this[n.$extra]._isSplittable=!1,!1):!(null!==(e=t.layout)&&void 0!==e&&e.endsWith("-tb")&&0!==t[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}[n.$flushHTML](){return(0,i.flushHTML)(this)}[n.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[n.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[n.$toHTML](e){if(A(this),"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const t=[],r={id:this[n.$uid],class:[]};(0,s.setAccess)(this,r.class),this[n.$extra]||(this[n.$extra]=Object.create(null)),Object.assign(this[n.$extra],{children:t,attributes:r,attempt:0,line:null,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const a=this[n.$isSplittable]();if(a||F(this),!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const o=new Set(["field"]);if(this.layout.includes("row")){const e=this[n.$getSubformParent]().columnWidths;Array.isArray(e)&&e.length>0&&(this[n.$extra].columnWidths=e,this[n.$extra].currentColumn=0)}const l=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),h=["xfaExclgroup"],u=(0,s.layoutClass)(this);u&&h.push(u),(0,s.isPrintOnly)(this)&&h.push("xfaPrintOnly"),r.style=l,r.class=h,this.name&&(r.xfaName=this.name),this[n.$pushPara]();const d="lr-tb"===this.layout||"rl-tb"===this.layout,f=d?2:1;for(;this[n.$extra].attempte>=1||-1===e}),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.rotate=(0,c.getInteger)({data:e.rotate,defaultValue:0,validate:e=>e%90==0}),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.border=null,this.calculate=null,this.caption=null,this.desc=null,this.extras=null,this.font=null,this.format=null,this.items=new o.XFAObjectArray(2),this.keep=null,this.margin=null,this.para=null,this.traversal=null,this.ui=null,this.validate=null,this.value=null,this.bindItems=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray}[n.$isBindable](){return!0}[n.$setValue](e){v(this,e)}[n.$toHTML](e){var t,r;if(A(this),!this.ui){let e;switch(this.ui=new Pt({}),this.ui[n.$globalData]=this[n.$globalData],this[n.$appendChild](this.ui),this.items.children.length){case 0:e=new Ot({}),this.ui.textEdit=e;break;case 1:e=new K({}),this.ui.checkButton=e;break;case 2:e=new Y({}),this.ui.choiceList=e}this.ui[n.$appendChild](e)}if(!this.ui||"hidden"===this.presence||"inactive"===this.presence||0===this.h||0===this.w)return c.HTMLResult.EMPTY;this.caption&&delete this.caption[n.$extra],this[n.$pushPara]();const a=this.caption?this.caption[n.$toHTML](e).html:null,o=this.w,l=this.h;let u=0,d=0;this.margin&&(u=this.margin.leftInset+this.margin.rightInset,d=this.margin.topInset+this.margin.bottomInset);let f=null;if(""===this.w||""===this.h){let t=null,r=null,a=0,i=0;if(this.ui.checkButton)a=i=this.ui.checkButton.size;else{const{w:t,h:r}=(0,s.layoutNode)(this,e);null!==t?(a=t,i=r):i=(0,h.getMetrics)(this.font,!0).lineNoGap}if(f=y(this.ui[n.$getExtra]()),a+=f.w,i+=f.h,this.caption){const{w:s,h:o,isBroken:l}=this.caption[n.$getExtra](e);if(l&&this[n.$getSubformParent]()[n.$isThereMoreWidth]())return this[n.$popPara](),c.HTMLResult.FAILURE;switch(t=s,r=o,this.caption.placement){case"left":case"right":case"inline":t+=a;break;case"top":case"bottom":r+=i}}else t=a,r=i;t&&""===this.w&&(t+=u,this.w=Math.min(this.maxW<=0?1/0:this.maxW,this.minW+1e>=1&&e<=5}),this.appearanceFilter=null,this.certificates=null,this.digestMethods=null,this.encodings=null,this.encryptionMethods=null,this.handler=null,this.lockDocument=null,this.mdp=null,this.reasons=null,this.timeStamp=null}}class Ie extends o.ContentObject{constructor(e){super(f,"float"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseFloat(this[n.$content].trim());this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class Te extends o.XFAObject{constructor(e){super(f,"font",!0),this.baselineShift=(0,c.getMeasurement)(e.baselineShift),this.fontHorizontalScale=(0,c.getFloat)({data:e.fontHorizontalScale,defaultValue:100,validate:e=>e>=0}),this.fontVerticalScale=(0,c.getFloat)({data:e.fontVerticalScale,defaultValue:100,validate:e=>e>=0}),this.id=e.id||"",this.kerningMode=(0,c.getStringOption)(e.kerningMode,["none","pair"]),this.letterSpacing=(0,c.getMeasurement)(e.letterSpacing,"0"),this.lineThrough=(0,c.getInteger)({data:e.lineThrough,defaultValue:0,validate:e=>1===e||2===e}),this.lineThroughPeriod=(0,c.getStringOption)(e.lineThroughPeriod,["all","word"]),this.overline=(0,c.getInteger)({data:e.overline,defaultValue:0,validate:e=>1===e||2===e}),this.overlinePeriod=(0,c.getStringOption)(e.overlinePeriod,["all","word"]),this.posture=(0,c.getStringOption)(e.posture,["normal","italic"]),this.size=(0,c.getMeasurement)(e.size,"10pt"),this.typeface=e.typeface||"Courier",this.underline=(0,c.getInteger)({data:e.underline,defaultValue:0,validate:e=>1===e||2===e}),this.underlinePeriod=(0,c.getStringOption)(e.underlinePeriod,["all","word"]),this.use=e.use||"",this.usehref=e.usehref||"",this.weight=(0,c.getStringOption)(e.weight,["normal","bold"]),this.extras=null,this.fill=null}[n.$clean](e){super[n.$clean](e),this[n.$globalData].usedTypefaces.add(this.typeface)}[n.$toStyle](){const e=(0,s.toStyle)(this,"fill"),t=e.color;return t&&("#000000"===t?delete e.color:t.startsWith("#")||(e.background=t,e.backgroundClip="text",e.color="transparent")),this.baselineShift&&(e.verticalAlign=(0,s.measureToString)(this.baselineShift)),e.fontKerning="none"===this.kerningMode?"none":"normal",e.letterSpacing=(0,s.measureToString)(this.letterSpacing),0!==this.lineThrough&&(e.textDecoration="line-through",2===this.lineThrough&&(e.textDecorationStyle="double")),0!==this.overline&&(e.textDecoration="overline",2===this.overline&&(e.textDecorationStyle="double")),e.fontStyle=this.posture,e.fontSize=(0,s.measureToString)(.99*this.size),(0,s.setFontFamily)(this,this,this[n.$globalData].fontFinder,e),0!==this.underline&&(e.textDecoration="underline",2===this.underline&&(e.textDecorationStyle="double")),e.fontWeight=this.weight,e}}class Me extends o.XFAObject{constructor(e){super(f,"format",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null}}class Ee extends o.StringObject{constructor(e){super(f,"handler"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Pe extends o.XFAObject{constructor(e){super(f,"hyphenation"),this.excludeAllCaps=(0,c.getInteger)({data:e.excludeAllCaps,defaultValue:0,validate:e=>1===e}),this.excludeInitialCap=(0,c.getInteger)({data:e.excludeInitialCap,defaultValue:0,validate:e=>1===e}),this.hyphenate=(0,c.getInteger)({data:e.hyphenate,defaultValue:0,validate:e=>1===e}),this.id=e.id||"",this.pushCharacterCount=(0,c.getInteger)({data:e.pushCharacterCount,defaultValue:3,validate:e=>e>=0}),this.remainCharacterCount=(0,c.getInteger)({data:e.remainCharacterCount,defaultValue:3,validate:e=>e>=0}),this.use=e.use||"",this.usehref=e.usehref||"",this.wordCharacterCount=(0,c.getInteger)({data:e.wordCharacterCount,defaultValue:7,validate:e=>e>=0})}}class Re extends o.StringObject{constructor(e){super(f,"image"),this.aspect=(0,c.getStringOption)(e.aspect,["fit","actual","height","none","width"]),this.contentType=e.contentType||"",this.href=e.href||"",this.id=e.id||"",this.name=e.name||"",this.transferEncoding=(0,c.getStringOption)(e.transferEncoding,["base64","none","package"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$toHTML](){if(this.contentType&&!m.has(this.contentType.toLowerCase()))return c.HTMLResult.EMPTY;let e=this[n.$globalData].images&&this[n.$globalData].images.get(this.href);if(!e&&(this.href||!this[n.$content]))return c.HTMLResult.EMPTY;if(e||"base64"!==this.transferEncoding||(e=(0,l.stringToBytes)(atob(this[n.$content]))),!e)return c.HTMLResult.EMPTY;if(!this.contentType){for(const[t,r]of b)if(e.length>t.length&&t.every(((t,r)=>t===e[r]))){this.contentType=r;break}if(!this.contentType)return c.HTMLResult.EMPTY}const t=new Blob([e],{type:this.contentType});let r;switch(this.aspect){case"fit":case"actual":break;case"height":r={height:"100%",objectFit:"fill"};break;case"none":r={width:"100%",height:"100%",objectFit:"fill"};break;case"width":r={width:"100%",objectFit:"fill"}}const a=this[n.$getParent]();return c.HTMLResult.success({name:"img",attributes:{class:["xfaImage"],style:r,src:URL.createObjectURL(t),alt:a?C(a[n.$getParent]()):null}})}}class Ne extends o.XFAObject{constructor(e){super(f,"imageEdit",!0),this.data=(0,c.getStringOption)(e.data,["link","embed"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}[n.$toHTML](e){return"embed"===this.data?c.HTMLResult.success({name:"div",children:[],attributes:{}}):c.HTMLResult.EMPTY}}class De extends o.ContentObject{constructor(e){super(f,"integer"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=parseInt(this[n.$content].trim(),10);this[n.$content]=isNaN(e)?null:e}[n.$toHTML](e){return O(null!==this[n.$content]?this[n.$content].toString():"")}}class Be extends o.XFAObject{constructor(e){super(f,"issuers",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class Le extends o.XFAObject{constructor(e){super(f,"items",!0),this.id=e.id||"",this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.ref=e.ref||"",this.save=(0,c.getInteger)({data:e.save,defaultValue:0,validate:e=>1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}[n.$toHTML](){const e=[];for(const t of this[n.$getChildren]())e.push(t[n.$text]());return c.HTMLResult.success(e)}}t.Items=Le;class _e extends o.XFAObject{constructor(e){super(f,"keep",!0),this.id=e.id||"";const t=["none","contentArea","pageArea"];this.intact=(0,c.getStringOption)(e.intact,t),this.next=(0,c.getStringOption)(e.next,t),this.previous=(0,c.getStringOption)(e.previous,t),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}}class je extends o.XFAObject{constructor(e){super(f,"keyUsage");const t=["","yes","no"];this.crlSign=(0,c.getStringOption)(e.crlSign,t),this.dataEncipherment=(0,c.getStringOption)(e.dataEncipherment,t),this.decipherOnly=(0,c.getStringOption)(e.decipherOnly,t),this.digitalSignature=(0,c.getStringOption)(e.digitalSignature,t),this.encipherOnly=(0,c.getStringOption)(e.encipherOnly,t),this.id=e.id||"",this.keyAgreement=(0,c.getStringOption)(e.keyAgreement,t),this.keyCertSign=(0,c.getStringOption)(e.keyCertSign,t),this.keyEncipherment=(0,c.getStringOption)(e.keyEncipherment,t),this.nonRepudiation=(0,c.getStringOption)(e.nonRepudiation,t),this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Ue extends o.XFAObject{constructor(e){super(f,"line",!0),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.slope=(0,c.getStringOption)(e.slope,["\\\\","/"]),this.use=e.use||"",this.usehref=e.usehref||"",this.edge=null}[n.$toHTML](){const e=this[n.$getParent]()[n.$getParent](),t=this.edge||new ue({}),r=t[n.$toStyle](),a=Object.create(null),i="visible"===t.presence?t.thickness:0;a.strokeWidth=(0,s.measureToString)(i),a.stroke=r.color;let o,l,h,u,d="100%",f="100%";e.w<=i?([o,l,h,u]=["50%",0,"50%","100%"],d=a.strokeWidth):e.h<=i?([o,l,h,u]=[0,"50%","100%","50%"],f=a.strokeWidth):"\\\\"===this.slope?[o,l,h,u]=[0,0,"100%","100%"]:[o,l,h,u]=[0,"100%","100%",0];const p={name:"svg",children:[{name:"line",attributes:{xmlns:g,x1:o,y1:l,x2:h,y2:u,style:a}}],attributes:{xmlns:g,width:d,height:f,style:{overflow:"visible"}}};return w(e)?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[p]}):(p.attributes.style.position="absolute",c.HTMLResult.success(p))}}class $e extends o.XFAObject{constructor(e){super(f,"linear",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["toRight","toBottom","toLeft","toTop"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){return e=e?e[n.$toStyle]():"#FFFFFF","linear-gradient(".concat(this.type.replace(/([RBLT])/," $1").toLowerCase(),", ").concat(e,", ").concat(this.color?this.color[n.$toStyle]():"#000000",")")}}class Xe extends o.ContentObject{constructor(e){super(f,"lockDocument"),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){this[n.$content]=(0,c.getStringOption)(this[n.$content],["auto","0","1"])}}class He extends o.XFAObject{constructor(e){super(f,"manifest",!0),this.action=(0,c.getStringOption)(e.action,["include","all","exclude"]),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.ref=new o.XFAObjectArray}}class qe extends o.XFAObject{constructor(e){super(f,"margin",!0),this.bottomInset=(0,c.getMeasurement)(e.bottomInset,"0"),this.id=e.id||"",this.leftInset=(0,c.getMeasurement)(e.leftInset,"0"),this.rightInset=(0,c.getMeasurement)(e.rightInset,"0"),this.topInset=(0,c.getMeasurement)(e.topInset,"0"),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toStyle](){return{margin:(0,s.measureToString)(this.topInset)+" "+(0,s.measureToString)(this.rightInset)+" "+(0,s.measureToString)(this.bottomInset)+" "+(0,s.measureToString)(this.leftInset)}}}class ze extends o.XFAObject{constructor(e){super(f,"mdp"),this.id=e.id||"",this.permissions=(0,c.getInteger)({data:e.permissions,defaultValue:2,validate:e=>1===e||3===e}),this.signatureType=(0,c.getStringOption)(e.signatureType,["filler","author"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Ge extends o.XFAObject{constructor(e){super(f,"medium"),this.id=e.id||"",this.imagingBBox=(0,c.getBBox)(e.imagingBBox),this.long=(0,c.getMeasurement)(e.long),this.orientation=(0,c.getStringOption)(e.orientation,["portrait","landscape"]),this.short=(0,c.getMeasurement)(e.short),this.stock=e.stock||"",this.trayIn=(0,c.getStringOption)(e.trayIn,["auto","delegate","pageFront"]),this.trayOut=(0,c.getStringOption)(e.trayOut,["auto","delegate"]),this.use=e.use||"",this.usehref=e.usehref||""}}class We extends o.XFAObject{constructor(e){super(f,"message",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.text=new o.XFAObjectArray}}class Ve extends o.XFAObject{constructor(e){super(f,"numericEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t;const r=(0,s.toStyle)(this,"border","font","margin"),a=this[n.$getParent]()[n.$getParent](),i={name:"input",attributes:{type:"text",fieldId:a[n.$uid],dataId:(null===(t=a[n.$data])||void 0===t?void 0:t[n.$uid])||a[n.$uid],class:["xfaTextfield"],style:r,"aria-label":C(a),"aria-required":!1}};return S(a)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Ke extends o.XFAObject{constructor(e){super(f,"occur",!0),this.id=e.id||"",this.initial=""!==e.initial?(0,c.getInteger)({data:e.initial,defaultValue:"",validate:e=>!0}):"",this.max=""!==e.max?(0,c.getInteger)({data:e.max,defaultValue:1,validate:e=>!0}):"",this.min=""!==e.min?(0,c.getInteger)({data:e.min,defaultValue:1,validate:e=>!0}):"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$clean](){const e=this[n.$getParent](),t=this.min;""===this.min&&(this.min=e instanceof Qe||e instanceof et?0:1),""===this.max&&(this.max=""===t?e instanceof Qe||e instanceof et?-1:1:this.min),-1!==this.max&&this.max!0}),this.name=e.name||"",this.numbered=(0,c.getInteger)({data:e.numbered,defaultValue:1,validate:e=>!0}),this.oddOrEven=(0,c.getStringOption)(e.oddOrEven,["any","even","odd"]),this.pagePosition=(0,c.getStringOption)(e.pagePosition,["any","first","last","only","rest"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.desc=null,this.extras=null,this.medium=null,this.occur=null,this.area=new o.XFAObjectArray,this.contentArea=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.subform=new o.XFAObjectArray}[n.$isUsable](){return this[n.$extra]?!this.occur||-1===this.occur.max||this[n.$extra].numberOfUsee.oddOrEven===t&&e.pagePosition===r));return a||(a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&e.pagePosition===r)),a||(a=this.pageArea.children.find((e=>"any"===e.oddOrEven&&"any"===e.pagePosition)),a||this.pageArea.children[0]))}}class tt extends o.XFAObject{constructor(e){super(f,"para",!0),this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.lineHeight=e.lineHeight?(0,c.getMeasurement)(e.lineHeight,"0pt"):"",this.marginLeft=e.marginLeft?(0,c.getMeasurement)(e.marginLeft,"0pt"):"",this.marginRight=e.marginRight?(0,c.getMeasurement)(e.marginRight,"0pt"):"",this.orphans=(0,c.getInteger)({data:e.orphans,defaultValue:0,validate:e=>e>=0}),this.preserve=e.preserve||"",this.radixOffset=e.radixOffset?(0,c.getMeasurement)(e.radixOffset,"0pt"):"",this.spaceAbove=e.spaceAbove?(0,c.getMeasurement)(e.spaceAbove,"0pt"):"",this.spaceBelow=e.spaceBelow?(0,c.getMeasurement)(e.spaceBelow,"0pt"):"",this.tabDefault=e.tabDefault?(0,c.getMeasurement)(this.tabDefault):"",this.tabStops=(e.tabStops||"").trim().split(/\\s+/).map(((e,t)=>t%2==1?(0,c.getMeasurement)(e):e)),this.textIndent=e.textIndent?(0,c.getMeasurement)(e.textIndent,"0pt"):"",this.use=e.use||"",this.usehref=e.usehref||"",this.vAlign=(0,c.getStringOption)(e.vAlign,["top","bottom","middle"]),this.widows=(0,c.getInteger)({data:e.widows,defaultValue:0,validate:e=>e>=0}),this.hyphenation=null}[n.$toStyle](){const e=(0,s.toStyle)(this,"hAlign");return""!==this.marginLeft&&(e.paddingLeft=(0,s.measureToString)(this.marginLeft)),""!==this.marginRight&&(e.paddingight=(0,s.measureToString)(this.marginRight)),""!==this.spaceAbove&&(e.paddingTop=(0,s.measureToString)(this.spaceAbove)),""!==this.spaceBelow&&(e.paddingBottom=(0,s.measureToString)(this.spaceBelow)),""!==this.textIndent&&(e.textIndent=(0,s.measureToString)(this.textIndent),(0,s.fixTextIndent)(e)),this.lineHeight>0&&(e.lineHeight=(0,s.measureToString)(this.lineHeight)),""!==this.tabDefault&&(e.tabSize=(0,s.measureToString)(this.tabDefault)),this.tabStops.length,this.hyphenatation&&Object.assign(e,this.hyphenatation[n.$toStyle]()),e}}class rt extends o.XFAObject{constructor(e){super(f,"passwordEdit",!0),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.passwordChar=e.passwordChar||"*",this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.margin=null}}class nt extends o.XFAObject{constructor(e){super(f,"pattern",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["crossHatch","crossDiagonal","diagonalLeft","diagonalRight","horizontal","vertical"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){e=e?e[n.$toStyle]():"#FFFFFF";const t=this.color?this.color[n.$toStyle]():"#000000",r="repeating-linear-gradient",a="".concat(e,",").concat(e," 5px,").concat(t," 5px,").concat(t," 10px");switch(this.type){case"crossHatch":return"".concat(r,"(to top,").concat(a,") ").concat(r,"(to right,").concat(a,")");case"crossDiagonal":return"".concat(r,"(45deg,").concat(a,") ").concat(r,"(-45deg,").concat(a,")");case"diagonalLeft":return"".concat(r,"(45deg,").concat(a,")");case"diagonalRight":return"".concat(r,"(-45deg,").concat(a,")");case"horizontal":return"".concat(r,"(to top,").concat(a,")");case"vertical":return"".concat(r,"(to right,").concat(a,")")}return""}}class at extends o.StringObject{constructor(e){super(f,"picture"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class it extends o.XFAObject{constructor(e){super(f,"proto",!0),this.appearanceFilter=new o.XFAObjectArray,this.arc=new o.XFAObjectArray,this.area=new o.XFAObjectArray,this.assist=new o.XFAObjectArray,this.barcode=new o.XFAObjectArray,this.bindItems=new o.XFAObjectArray,this.bookend=new o.XFAObjectArray,this.boolean=new o.XFAObjectArray,this.border=new o.XFAObjectArray,this.break=new o.XFAObjectArray,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.button=new o.XFAObjectArray,this.calculate=new o.XFAObjectArray,this.caption=new o.XFAObjectArray,this.certificate=new o.XFAObjectArray,this.certificates=new o.XFAObjectArray,this.checkButton=new o.XFAObjectArray,this.choiceList=new o.XFAObjectArray,this.color=new o.XFAObjectArray,this.comb=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.contentArea=new o.XFAObjectArray,this.corner=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.dateTimeEdit=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.defaultUi=new o.XFAObjectArray,this.desc=new o.XFAObjectArray,this.digestMethod=new o.XFAObjectArray,this.digestMethods=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.edge=new o.XFAObjectArray,this.encoding=new o.XFAObjectArray,this.encodings=new o.XFAObjectArray,this.encrypt=new o.XFAObjectArray,this.encryptData=new o.XFAObjectArray,this.encryption=new o.XFAObjectArray,this.encryptionMethod=new o.XFAObjectArray,this.encryptionMethods=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.execute=new o.XFAObjectArray,this.extras=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.fill=new o.XFAObjectArray,this.filter=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.font=new o.XFAObjectArray,this.format=new o.XFAObjectArray,this.handler=new o.XFAObjectArray,this.hyphenation=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.imageEdit=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.issuers=new o.XFAObjectArray,this.items=new o.XFAObjectArray,this.keep=new o.XFAObjectArray,this.keyUsage=new o.XFAObjectArray,this.line=new o.XFAObjectArray,this.linear=new o.XFAObjectArray,this.lockDocument=new o.XFAObjectArray,this.manifest=new o.XFAObjectArray,this.margin=new o.XFAObjectArray,this.mdp=new o.XFAObjectArray,this.medium=new o.XFAObjectArray,this.message=new o.XFAObjectArray,this.numericEdit=new o.XFAObjectArray,this.occur=new o.XFAObjectArray,this.oid=new o.XFAObjectArray,this.oids=new o.XFAObjectArray,this.overflow=new o.XFAObjectArray,this.pageArea=new o.XFAObjectArray,this.pageSet=new o.XFAObjectArray,this.para=new o.XFAObjectArray,this.passwordEdit=new o.XFAObjectArray,this.pattern=new o.XFAObjectArray,this.picture=new o.XFAObjectArray,this.radial=new o.XFAObjectArray,this.reason=new o.XFAObjectArray,this.reasons=new o.XFAObjectArray,this.rectangle=new o.XFAObjectArray,this.ref=new o.XFAObjectArray,this.script=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray,this.signData=new o.XFAObjectArray,this.signature=new o.XFAObjectArray,this.signing=new o.XFAObjectArray,this.solid=new o.XFAObjectArray,this.speak=new o.XFAObjectArray,this.stipple=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray,this.subjectDN=new o.XFAObjectArray,this.subjectDNs=new o.XFAObjectArray,this.submit=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.textEdit=new o.XFAObjectArray,this.time=new o.XFAObjectArray,this.timeStamp=new o.XFAObjectArray,this.toolTip=new o.XFAObjectArray,this.traversal=new o.XFAObjectArray,this.traverse=new o.XFAObjectArray,this.ui=new o.XFAObjectArray,this.validate=new o.XFAObjectArray,this.value=new o.XFAObjectArray,this.variables=new o.XFAObjectArray}}class st extends o.XFAObject{constructor(e){super(f,"radial",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["toEdge","toCenter"]),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){e=e?e[n.$toStyle]():"#FFFFFF";const t=this.color?this.color[n.$toStyle]():"#000000";return"radial-gradient(circle at center, ".concat("toEdge"===this.type?"".concat(e,",").concat(t):"".concat(t,",").concat(e),")")}}class ot extends o.StringObject{constructor(e){super(f,"reason"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ct extends o.XFAObject{constructor(e){super(f,"reasons",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.reason=new o.XFAObjectArray}}class lt extends o.XFAObject{constructor(e){super(f,"rectangle",!0),this.hand=(0,c.getStringOption)(e.hand,["even","left","right"]),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.corner=new o.XFAObjectArray(4),this.edge=new o.XFAObjectArray(4),this.fill=null}[n.$toHTML](){var e;const t=this.edge.children.length?this.edge.children[0]:new ue({}),r=t[n.$toStyle](),a=Object.create(null);"visible"===(null===(e=this.fill)||void 0===e?void 0:e.presence)?Object.assign(a,this.fill[n.$toStyle]()):a.fill="transparent",a.strokeWidth=(0,s.measureToString)("visible"===t.presence?t.thickness:0),a.stroke=r.color;const i=(this.corner.children.length?this.corner.children[0]:new te({}))[n.$toStyle](),o={name:"svg",children:[{name:"rect",attributes:{xmlns:g,width:"100%",height:"100%",x:0,y:0,rx:i.radius,ry:i.radius,style:a}}],attributes:{xmlns:g,style:{overflow:"visible"},width:"100%",height:"100%"}};return w(this[n.$getParent]()[n.$getParent]())?c.HTMLResult.success({name:"div",attributes:{style:{display:"inline",width:"100%",height:"100%"}},children:[o]}):(o.attributes.style.position="absolute",c.HTMLResult.success(o))}}class ht extends o.StringObject{constructor(e){super(f,"ref"),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||""}}class ut extends o.StringObject{constructor(e){super(f,"script"),this.binding=e.binding||"",this.contentType=e.contentType||"",this.id=e.id||"",this.name=e.name||"",this.runAt=(0,c.getStringOption)(e.runAt,["client","both","server"]),this.use=e.use||"",this.usehref=e.usehref||""}}class dt extends o.XFAObject{constructor(e){super(f,"setProperty"),this.connection=e.connection||"",this.ref=e.ref||"",this.target=e.target||""}}t.SetProperty=dt;class ft extends o.XFAObject{constructor(e){super(f,"signData",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["sign","clear","verify"]),this.ref=e.ref||"",this.target=e.target||"",this.use=e.use||"",this.usehref=e.usehref||"",this.filter=null,this.manifest=null}}class gt extends o.XFAObject{constructor(e){super(f,"signature",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["PDF1.3","PDF1.6"]),this.use=e.use||"",this.usehref=e.usehref||"",this.border=null,this.extras=null,this.filter=null,this.manifest=null,this.margin=null}}class pt extends o.XFAObject{constructor(e){super(f,"signing",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.certificate=new o.XFAObjectArray}}class mt extends o.XFAObject{constructor(e){super(f,"solid",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null}[n.$toStyle](e){return e?e[n.$toStyle]():"#FFFFFF"}}class bt extends o.StringObject{constructor(e){super(f,"speak"),this.disable=(0,c.getInteger)({data:e.disable,defaultValue:0,validate:e=>1===e}),this.id=e.id||"",this.priority=(0,c.getStringOption)(e.priority,["custom","caption","name","toolTip"]),this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class yt extends o.XFAObject{constructor(e){super(f,"stipple",!0),this.id=e.id||"",this.rate=(0,c.getInteger)({data:e.rate,defaultValue:50,validate:e=>e>=0&&e<=100}),this.use=e.use||"",this.usehref=e.usehref||"",this.color=null,this.extras=null}[n.$toStyle](e){const t=this.rate/100;return l.Util.makeHexColor(Math.round(e.value.r*(1-t)+this.value.r*t),Math.round(e.value.g*(1-t)+this.value.g*t),Math.round(e.value.b*(1-t)+this.value.b*t))}}class wt extends o.XFAObject{constructor(e){super(f,"subform",!0),this.access=(0,c.getStringOption)(e.access,["open","nonInteractive","protected","readOnly"]),this.allowMacro=(0,c.getInteger)({data:e.allowMacro,defaultValue:0,validate:e=>1===e}),this.anchorType=(0,c.getStringOption)(e.anchorType,["topLeft","bottomCenter","bottomLeft","bottomRight","middleCenter","middleLeft","middleRight","topCenter","topRight"]),this.colSpan=(0,c.getInteger)({data:e.colSpan,defaultValue:1,validate:e=>e>=1||-1===e}),this.columnWidths=(e.columnWidths||"").trim().split(/\\s+/).map((e=>"-1"===e?-1:(0,c.getMeasurement)(e))),this.h=e.h?(0,c.getMeasurement)(e.h):"",this.hAlign=(0,c.getStringOption)(e.hAlign,["left","center","justify","justifyAll","radix","right"]),this.id=e.id||"",this.layout=(0,c.getStringOption)(e.layout,["position","lr-tb","rl-row","rl-tb","row","table","tb"]),this.locale=e.locale||"",this.maxH=(0,c.getMeasurement)(e.maxH,"0pt"),this.maxW=(0,c.getMeasurement)(e.maxW,"0pt"),this.mergeMode=(0,c.getStringOption)(e.mergeMode,["consumeData","matchTemplate"]),this.minH=(0,c.getMeasurement)(e.minH,"0pt"),this.minW=(0,c.getMeasurement)(e.minW,"0pt"),this.name=e.name||"",this.presence=(0,c.getStringOption)(e.presence,["visible","hidden","inactive","invisible"]),this.relevant=(0,c.getRelevant)(e.relevant),this.restoreState=(0,c.getStringOption)(e.restoreState,["manual","auto"]),this.scope=(0,c.getStringOption)(e.scope,["name","none"]),this.use=e.use||"",this.usehref=e.usehref||"",this.w=e.w?(0,c.getMeasurement)(e.w):"",this.x=(0,c.getMeasurement)(e.x,"0pt"),this.y=(0,c.getMeasurement)(e.y,"0pt"),this.assist=null,this.bind=null,this.bookend=null,this.border=null,this.break=null,this.calculate=null,this.desc=null,this.extras=null,this.keep=null,this.margin=null,this.occur=null,this.overflow=null,this.pageSet=null,this.para=null,this.traversal=null,this.validate=null,this.variables=null,this.area=new o.XFAObjectArray,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.connect=new o.XFAObjectArray,this.draw=new o.XFAObjectArray,this.event=new o.XFAObjectArray,this.exObject=new o.XFAObjectArray,this.exclGroup=new o.XFAObjectArray,this.field=new o.XFAObjectArray,this.proto=new o.XFAObjectArray,this.setProperty=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}[n.$getSubformParent](){const e=this[n.$getParent]();return e instanceof vt?e[n.$getSubformParent]():e}[n.$isBindable](){return!0}[n.$isThereMoreWidth](){return this.layout.endsWith("-tb")&&0===this[n.$extra].attempt&&this[n.$extra].numberInLine>0||this[n.$getParent]()[n.$isThereMoreWidth]()}*[n.$getContainedChildren](){yield*x(this)}[n.$flushHTML](){return(0,i.flushHTML)(this)}[n.$addHTML](e,t){(0,i.addHTML)(this,e,t)}[n.$getAvailableSpace](){return(0,i.getAvailableSpace)(this)}[n.$isSplittable](){var e;const t=this[n.$getSubformParent]();return!!t[n.$isSplittable]()&&(void 0!==this[n.$extra]._isSplittable?this[n.$extra]._isSplittable:"position"===this.layout||this.layout.includes("row")||this.keep&&"none"!==this.keep.intact?(this[n.$extra]._isSplittable=!1,!1):!(null!==(e=t.layout)&&void 0!==e&&e.endsWith("-tb")&&0!==t[n.$extra].numberInLine||(this[n.$extra]._isSplittable=!0,0)))}[n.$toHTML](e){var t;if(A(this),this.break){if("auto"!==this.break.after||""!==this.break.afterTarget){const e=new X({targetType:this.break.after,target:this.break.afterTarget,startNew:this.break.startNew.toString()});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.breakAfter.push(e)}if("auto"!==this.break.before||""!==this.break.beforeTarget){const e=new H({targetType:this.break.before,target:this.break.beforeTarget,startNew:this.break.startNew.toString()});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.breakBefore.push(e)}if(""!==this.break.overflowTarget){const e=new Ze({target:this.break.overflowTarget,leader:this.break.overflowLeader,trailer:this.break.overflowTrailer});e[n.$globalData]=this[n.$globalData],this[n.$appendChild](e),this.overflow.push(e)}this[n.$removeChild](this.break),this.break=null}if("hidden"===this.presence||"inactive"===this.presence)return c.HTMLResult.EMPTY;if((this.breakBefore.children.length>1||this.breakAfter.children.length>1)&&(0,l.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug."),this.breakBefore.children.length>=1){const e=this.breakBefore.children[0];if(T(e))return c.HTMLResult.breakNode(e)}if(null!==(t=this[n.$extra])&&void 0!==t&&t.afterBreakAfter)return c.HTMLResult.EMPTY;(0,s.fixDimensions)(this);const r=[],a={id:this[n.$uid],class:[]};(0,s.setAccess)(this,a.class),this[n.$extra]||(this[n.$extra]=Object.create(null)),Object.assign(this[n.$extra],{children:r,line:null,attributes:a,attempt:0,numberInLine:0,availableSpace:{width:Math.min(this.w||1/0,e.width),height:Math.min(this.h||1/0,e.height)},width:0,height:0,prevHeight:0,currentWidth:0});const o=this[n.$getTemplateRoot](),h=o[n.$extra].noLayoutFailure,u=this[n.$isSplittable]();if(u||F(this),!(0,i.checkDimensions)(this,e))return c.HTMLResult.FAILURE;const d=new Set(["area","draw","exclGroup","field","subform","subformSet"]);if(this.layout.includes("row")){const e=this[n.$getSubformParent]().columnWidths;Array.isArray(e)&&e.length>0&&(this[n.$extra].columnWidths=e,this[n.$extra].currentColumn=0)}const f=(0,s.toStyle)(this,"anchorType","dimensions","position","presence","border","margin","hAlign"),g=["xfaSubform"],p=(0,s.layoutClass)(this);if(p&&g.push(p),a.style=f,a.class=g,this.name&&(a.xfaName=this.name),this.overflow){const t=this.overflow[n.$getExtra]();t.addLeader&&(t.addLeader=!1,M(this,t.leader,e))}this[n.$pushPara]();const m="lr-tb"===this.layout||"rl-tb"===this.layout,b=m?2:1;for(;this[n.$extra].attempt=1){const e=this.breakAfter.children[0];if(T(e))return this[n.$extra].afterBreakAfter=O,c.HTMLResult.breakNode(e)}return delete this[n.$extra],O}}class vt extends o.XFAObject{constructor(e){super(f,"subformSet",!0),this.id=e.id||"",this.name=e.name||"",this.relation=(0,c.getStringOption)(e.relation,["ordered","choice","unordered"]),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.bookend=null,this.break=null,this.desc=null,this.extras=null,this.occur=null,this.overflow=null,this.breakAfter=new o.XFAObjectArray,this.breakBefore=new o.XFAObjectArray,this.subform=new o.XFAObjectArray,this.subformSet=new o.XFAObjectArray}*[n.$getContainedChildren](){yield*x(this)}[n.$getSubformParent](){let e=this[n.$getParent]();for(;!(e instanceof wt);)e=e[n.$getParent]();return e}[n.$isBindable](){return!0}}class xt extends o.ContentObject{constructor(e){super(f,"subjectDN"),this.delimiter=e.delimiter||",",this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){this[n.$content]=new Map(this[n.$content].split(this.delimiter).map((e=>((e=e.split("=",2))[0]=e[0].trim(),e))))}}class St extends o.XFAObject{constructor(e){super(f,"subjectDNs",!0),this.id=e.id||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||"",this.subjectDN=new o.XFAObjectArray}}class At extends o.XFAObject{constructor(e){super(f,"submit",!0),this.embedPDF=(0,c.getInteger)({data:e.embedPDF,defaultValue:0,validate:e=>1===e}),this.format=(0,c.getStringOption)(e.format,["xdp","formdata","pdf","urlencoded","xfd","xml"]),this.id=e.id||"",this.target=e.target||"",this.textEncoding=(0,c.getKeyword)({data:e.textEncoding?e.textEncoding.toLowerCase():"",defaultValue:"",validate:e=>["utf-8","big-five","fontspecific","gbk","gb-18030","gb-2312","ksc-5601","none","shift-jis","ucs-2","utf-16"].includes(e)||e.match(/iso-8859-\\d{2}/)}),this.use=e.use||"",this.usehref=e.usehref||"",this.xdpContent=e.xdpContent||"",this.encrypt=null,this.encryptData=new o.XFAObjectArray,this.signData=new o.XFAObjectArray}}class kt extends o.XFAObject{constructor(e){super(f,"template",!0),this.baseProfile=(0,c.getStringOption)(e.baseProfile,["full","interactiveForms"]),this.extras=null,this.subform=new o.XFAObjectArray}[n.$finalize](){0===this.subform.children.length&&(0,l.warn)("XFA - No subforms in template node."),this.subform.children.length>=2&&(0,l.warn)("XFA - Several subforms in template node: please file a bug."),this[n.$tabIndex]=5e3}[n.$isSplittable](){return!0}[n.$searchNode](e,t){return e.startsWith("#")?[this[n.$ids].get(e.slice(1))]:(0,d.searchNode)(this,t,e,!0,!0)}*[n.$toPages](){var e,t;if(!this.subform.children.length)return c.HTMLResult.success({name:"div",children:[]});this[n.$extra]={overflowNode:null,firstUnsplittable:null,currentContentArea:null,currentPageArea:null,noLayoutFailure:!1,pageNumber:1,pagePosition:"first",oddOrEven:"odd",blankOrNotBlank:"nonBlank",paraStack:[]};const r=this.subform.children[0];r.pageSet[n.$cleanPage]();const a=r.pageSet.pageArea.children,i={name:"div",children:[]};let s=null,o=null,h=null;if(r.breakBefore.children.length>=1?(o=r.breakBefore.children[0],h=o.target):r.subform.children.length>=1&&r.subform.children[0].breakBefore.children.length>=1?(o=r.subform.children[0].breakBefore.children[0],h=o.target):null!==(e=r.break)&&void 0!==e&&e.beforeTarget?(o=r.break,h=o.beforeTarget):r.subform.children.length>=1&&null!==(t=r.subform.children[0].break)&&void 0!==t&&t.beforeTarget&&(o=r.subform.children[0].break,h=o.beforeTarget),o){const e=this[n.$searchNode](h,o[n.$getParent]());e instanceof Qe&&(s=e,o[n.$extra]={})}s||(s=a[0]),s[n.$extra]={numberOfUse:1};const u=s[n.$getParent]();u[n.$extra]={numberOfUse:1,pageIndex:u.pageArea.children.indexOf(s),pageSetIndex:0};let d,f=null,g=null,p=!0,m=0,b=0;for(;;){if(p)m=0;else if(i.children.pop(),3==++m)return(0,l.warn)("XFA - Something goes wrong: please file a bug."),i;d=null,this[n.$extra].currentPageArea=s;const e=s[n.$toHTML]().html;i.children.push(e),f&&(this[n.$extra].noLayoutFailure=!0,e.children.push(f[n.$toHTML](s[n.$extra].space).html),f=null),g&&(this[n.$extra].noLayoutFailure=!0,e.children.push(g[n.$toHTML](s[n.$extra].space).html),g=null);const t=s.contentArea.children,a=e.children.filter((e=>e.attributes.class.includes("xfaContentarea")));p=!1,this[n.$extra].firstUnsplittable=null,this[n.$extra].noLayoutFailure=!1;const o=e=>{const t=r[n.$flushHTML]();var i;t&&(p||(p=(null===(i=t.children)||void 0===i?void 0:i.length)>0),a[e].children.push(t))};for(let e=b,s=t.length;e0),a[e].children.push(l.html)):!p&&i.children.length>1&&i.children.pop(),i;if(l.isBreak()){const t=l.breakNode;if(o(e),"auto"===t.targetType)continue;t.leader&&(f=this[n.$searchNode](t.leader,t[n.$getParent]()),f=f?f[0]:null),t.trailer&&(g=this[n.$searchNode](t.trailer,t[n.$getParent]()),g=g?g[0]:null),"pageArea"===t.targetType?(d=t[n.$extra].target,e=1/0):t[n.$extra].target?(d=t[n.$extra].target,b=t[n.$extra].index+1,e=1/0):e=t[n.$extra].index}else if(this[n.$extra].overflowNode){const r=this[n.$extra].overflowNode;this[n.$extra].overflowNode=null;const a=r[n.$getExtra](),i=a.target;a.addLeader=null!==a.leader,a.addTrailer=null!==a.trailer,o(e);const s=e;if(e=1/0,i instanceof Qe)d=i;else if(i instanceof ee){const r=t.indexOf(i);-1!==r?r>s?e=r-1:b=r:(d=i[n.$getParent](),b=d.contentArea.children.indexOf(i))}}else o(e)}this[n.$extra].pageNumber+=1,d&&(d[n.$isUsable]()?d[n.$extra].numberOfUse+=1:d=null),s=d||s[n.$getNextPage](),yield null}}}t.Template=kt;class Ct extends o.ContentObject{constructor(e){super(f,"text"),this.id=e.id||"",this.maxChars=(0,c.getInteger)({data:e.maxChars,defaultValue:0,validate:e=>e>=0}),this.name=e.name||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$acceptWhitespace](){return!0}[n.$onChild](e){return e[n.$namespaceId]===a.NamespaceIds.xhtml.id?(this[n.$content]=e,!0):((0,l.warn)("XFA - Invalid content in Text: ".concat(e[n.$nodeName],".")),!1)}[n.$onText](e){this[n.$content]instanceof o.XFAObject||super[n.$onText](e)}[n.$finalize](){"string"==typeof this[n.$content]&&(this[n.$content]=this[n.$content].replaceAll("\\r\\n","\\n"))}[n.$getExtra](){return"string"==typeof this[n.$content]?this[n.$content].split(/[\\u2029\\u2028\\n]/).reduce(((e,t)=>(t&&e.push(t),e)),[]).join("\\n"):this[n.$content][n.$text]()}[n.$toHTML](e){if("string"==typeof this[n.$content]){const e=O(this[n.$content]).html;return this[n.$content].includes("\\u2029")?(e.name="div",e.children=[],this[n.$content].split("\\u2029").map((e=>e.split(/[\\u2028\\n]/).reduce(((e,t)=>(e.push({name:"span",value:t},{name:"br"}),e)),[]))).forEach((t=>{e.children.push({name:"p",children:t})}))):/[\\u2028\\n]/.test(this[n.$content])&&(e.name="div",e.children=[],this[n.$content].split(/[\\u2028\\n]/).forEach((t=>{e.children.push({name:"span",value:t},{name:"br"})}))),c.HTMLResult.success(e)}return this[n.$content][n.$toHTML](e)}}t.Text=Ct;class Ot extends o.XFAObject{constructor(e){super(f,"textEdit",!0),this.allowRichText=(0,c.getInteger)({data:e.allowRichText,defaultValue:0,validate:e=>1===e}),this.hScrollPolicy=(0,c.getStringOption)(e.hScrollPolicy,["auto","off","on"]),this.id=e.id||"",this.multiLine=(0,c.getInteger)({data:e.multiLine,defaultValue:"",validate:e=>0===e||1===e}),this.use=e.use||"",this.usehref=e.usehref||"",this.vScrollPolicy=(0,c.getStringOption)(e.vScrollPolicy,["auto","off","on"]),this.border=null,this.comb=null,this.extras=null,this.margin=null}[n.$toHTML](e){var t,r;const a=(0,s.toStyle)(this,"border","font","margin");let i;const o=this[n.$getParent]()[n.$getParent]();return""===this.multiLine&&(this.multiLine=o instanceof he?1:0),i=1===this.multiLine?{name:"textarea",attributes:{dataId:(null===(t=o[n.$data])||void 0===t?void 0:t[n.$uid])||o[n.$uid],fieldId:o[n.$uid],class:["xfaTextfield"],style:a,"aria-label":C(o),"aria-required":!1}}:{name:"input",attributes:{type:"text",dataId:(null===(r=o[n.$data])||void 0===r?void 0:r[n.$uid])||o[n.$uid],fieldId:o[n.$uid],class:["xfaTextfield"],style:a,"aria-label":C(o),"aria-required":!1}},S(o)&&(i.attributes["aria-required"]=!0,i.attributes.required=!0),c.HTMLResult.success({name:"label",attributes:{class:["xfaLabel"]},children:[i]})}}class Ft extends o.StringObject{constructor(e){super(f,"time"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}[n.$finalize](){const e=this[n.$content].trim();this[n.$content]=e?new Date(e):null}[n.$toHTML](e){return O(this[n.$content]?this[n.$content].toString():"")}}class It extends o.XFAObject{constructor(e){super(f,"timeStamp"),this.id=e.id||"",this.server=e.server||"",this.type=(0,c.getStringOption)(e.type,["optional","required"]),this.use=e.use||"",this.usehref=e.usehref||""}}class Tt extends o.StringObject{constructor(e){super(f,"toolTip"),this.id=e.id||"",this.rid=e.rid||"",this.use=e.use||"",this.usehref=e.usehref||""}}class Mt extends o.XFAObject{constructor(e){super(f,"traversal",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.traverse=new o.XFAObjectArray}}class Et extends o.XFAObject{constructor(e){super(f,"traverse",!0),this.id=e.id||"",this.operation=(0,c.getStringOption)(e.operation,["next","back","down","first","left","right","up"]),this.ref=e.ref||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.script=null}get name(){return this.operation}[n.$isTransparent](){return!1}}class Pt extends o.XFAObject{constructor(e){super(f,"ui",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.picture=null,this.barcode=null,this.button=null,this.checkButton=null,this.choiceList=null,this.dateTimeEdit=null,this.defaultUi=null,this.imageEdit=null,this.numericEdit=null,this.passwordEdit=null,this.signature=null,this.textEdit=null}[n.$getExtra](){if(void 0===this[n.$extra]){for(const e of Object.getOwnPropertyNames(this)){if("extras"===e||"picture"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return this[n.$extra]=t,t}this[n.$extra]=null}return this[n.$extra]}[n.$toHTML](e){const t=this[n.$getExtra]();return t?t[n.$toHTML](e):c.HTMLResult.EMPTY}}class Rt extends o.XFAObject{constructor(e){super(f,"validate",!0),this.formatTest=(0,c.getStringOption)(e.formatTest,["warning","disabled","error"]),this.id=e.id||"",this.nullTest=(0,c.getStringOption)(e.nullTest,["disabled","error","warning"]),this.scriptTest=(0,c.getStringOption)(e.scriptTest,["error","disabled","warning"]),this.use=e.use||"",this.usehref=e.usehref||"",this.extras=null,this.message=null,this.picture=null,this.script=null}}class Nt extends o.XFAObject{constructor(e){super(f,"value",!0),this.id=e.id||"",this.override=(0,c.getInteger)({data:e.override,defaultValue:0,validate:e=>1===e}),this.relevant=(0,c.getRelevant)(e.relevant),this.use=e.use||"",this.usehref=e.usehref||"",this.arc=null,this.boolean=null,this.date=null,this.dateTime=null,this.decimal=null,this.exData=null,this.float=null,this.image=null,this.integer=null,this.line=null,this.rectangle=null,this.text=null,this.time=null}[n.$setValue](e){var t;const r=this[n.$getParent]();if(r instanceof Ce&&null!==(t=r.ui)&&void 0!==t&&t.imageEdit)return this.image||(this.image=new Re({}),this[n.$appendChild](this.image)),void(this.image[n.$content]=e[n.$content]);const a=e[n.$nodeName];if(null===this[a]){for(const e of Object.getOwnPropertyNames(this)){const t=this[e];t instanceof o.XFAObject&&(this[e]=null,this[n.$removeChild](t))}this[e[n.$nodeName]]=e,this[n.$appendChild](e)}else this[a][n.$content]=e[n.$content]}[n.$text](){if(this.exData)return"string"==typeof this.exData[n.$content]?this.exData[n.$content].trim():this.exData[n.$content][n.$text]().trim();for(const e of Object.getOwnPropertyNames(this)){if("image"===e)continue;const t=this[e];if(t instanceof o.XFAObject)return(t[n.$content]||"").toString().trim()}return null}[n.$toHTML](e){for(const t of Object.getOwnPropertyNames(this)){const r=this[t];if(r instanceof o.XFAObject)return r[n.$toHTML](e)}return c.HTMLResult.EMPTY}}t.Value=Nt;class Dt extends o.XFAObject{constructor(e){super(f,"variables",!0),this.id=e.id||"",this.use=e.use||"",this.usehref=e.usehref||"",this.boolean=new o.XFAObjectArray,this.date=new o.XFAObjectArray,this.dateTime=new o.XFAObjectArray,this.decimal=new o.XFAObjectArray,this.exData=new o.XFAObjectArray,this.float=new o.XFAObjectArray,this.image=new o.XFAObjectArray,this.integer=new o.XFAObjectArray,this.manifest=new o.XFAObjectArray,this.script=new o.XFAObjectArray,this.text=new o.XFAObjectArray,this.time=new o.XFAObjectArray}[n.$isTransparent](){return!0}}class Bt{static[a.$buildXFAObject](e,t){if(Bt.hasOwnProperty(e)){const r=Bt[e](t);return r[n.$setSetAttributes](t),r}}static appearanceFilter(e){return new E(e)}static arc(e){return new P(e)}static area(e){return new R(e)}static assist(e){return new N(e)}static barcode(e){return new D(e)}static bind(e){return new B(e)}static bindItems(e){return new L(e)}static bookend(e){return new _(e)}static boolean(e){return new j(e)}static border(e){return new U(e)}static break(e){return new $(e)}static breakAfter(e){return new X(e)}static breakBefore(e){return new H(e)}static button(e){return new q(e)}static calculate(e){return new z(e)}static caption(e){return new G(e)}static certificate(e){return new W(e)}static certificates(e){return new V(e)}static checkButton(e){return new K(e)}static choiceList(e){return new Y(e)}static color(e){return new J(e)}static comb(e){return new Z(e)}static connect(e){return new Q(e)}static contentArea(e){return new ee(e)}static corner(e){return new te(e)}static date(e){return new re(e)}static dateTime(e){return new ne(e)}static dateTimeEdit(e){return new ae(e)}static decimal(e){return new ie(e)}static defaultUi(e){return new se(e)}static desc(e){return new oe(e)}static digestMethod(e){return new ce(e)}static digestMethods(e){return new le(e)}static draw(e){return new he(e)}static edge(e){return new ue(e)}static encoding(e){return new de(e)}static encodings(e){return new fe(e)}static encrypt(e){return new ge(e)}static encryptData(e){return new pe(e)}static encryption(e){return new me(e)}static encryptionMethod(e){return new be(e)}static encryptionMethods(e){return new ye(e)}static event(e){return new we(e)}static exData(e){return new ve(e)}static exObject(e){return new xe(e)}static exclGroup(e){return new Se(e)}static execute(e){return new Ae(e)}static extras(e){return new ke(e)}static field(e){return new Ce(e)}static fill(e){return new Oe(e)}static filter(e){return new Fe(e)}static float(e){return new Ie(e)}static font(e){return new Te(e)}static format(e){return new Me(e)}static handler(e){return new Ee(e)}static hyphenation(e){return new Pe(e)}static image(e){return new Re(e)}static imageEdit(e){return new Ne(e)}static integer(e){return new De(e)}static issuers(e){return new Be(e)}static items(e){return new Le(e)}static keep(e){return new _e(e)}static keyUsage(e){return new je(e)}static line(e){return new Ue(e)}static linear(e){return new $e(e)}static lockDocument(e){return new Xe(e)}static manifest(e){return new He(e)}static margin(e){return new qe(e)}static mdp(e){return new ze(e)}static medium(e){return new Ge(e)}static message(e){return new We(e)}static numericEdit(e){return new Ve(e)}static occur(e){return new Ke(e)}static oid(e){return new Ye(e)}static oids(e){return new Je(e)}static overflow(e){return new Ze(e)}static pageArea(e){return new Qe(e)}static pageSet(e){return new et(e)}static para(e){return new tt(e)}static passwordEdit(e){return new rt(e)}static pattern(e){return new nt(e)}static picture(e){return new at(e)}static proto(e){return new it(e)}static radial(e){return new st(e)}static reason(e){return new ot(e)}static reasons(e){return new ct(e)}static rectangle(e){return new lt(e)}static ref(e){return new ht(e)}static script(e){return new ut(e)}static setProperty(e){return new dt(e)}static signData(e){return new ft(e)}static signature(e){return new gt(e)}static signing(e){return new pt(e)}static solid(e){return new mt(e)}static speak(e){return new bt(e)}static stipple(e){return new yt(e)}static subform(e){return new wt(e)}static subformSet(e){return new vt(e)}static subjectDN(e){return new xt(e)}static subjectDNs(e){return new St(e)}static submit(e){return new At(e)}static template(e){return new kt(e)}static text(e){return new Ct(e)}static textEdit(e){return new Ot(e)}static time(e){return new Ft(e)}static timeStamp(e){return new It(e)}static toolTip(e){return new Tt(e)}static traversal(e){return new Mt(e)}static traverse(e){return new Et(e)}static ui(e){return new Pt(e)}static validate(e){return new Rt(e)}static value(e){return new Nt(e)}static variables(e){return new Dt(e)}}t.TemplateNamespace=Bt},(e,t,r)=>{var n=r(3),a=r(4),i=r(24),s=r(11),o=r(45).f,c=r(39),l=r(232),h=r(75),u=r(76),d=r(233),f=r(82),g=r(6),p=r(36),m="DOMException",b=i("Error"),y=i(m),w=function(){l(this,v);var e=arguments.length,t=u(e<1?void 0:arguments[0]),r=u(e<2?void 0:arguments[1],"Error"),n=new y(t,r),a=b(t);return a.name=m,o(n,"stack",s(1,f(a.stack,1))),h(n,this,w),n},v=w.prototype=y.prototype,x="stack"in b(m),S="stack"in new y(1,2),A=y&&g&&Object.getOwnPropertyDescriptor(a,m),k=!(!A||A.writable&&A.configurable),C=x&&!k&&!S;n({global:!0,constructor:!0,forced:p||C},{DOMException:C?w:y});var O=i(m),F=O.prototype;if(F.constructor!==O)for(var I in p||o(F,"constructor",s(1,O)),d)if(c(d,I)){var T=d[I],M=T.s;c(O,M)||o(O,M,s(6,T.c))}},(e,t,r)=>{var n=r(25),a=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw a("Incorrect invocation")}},e=>{e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceIds=t.$buildXFAObject=void 0;const r=Symbol();t.$buildXFAObject=r,t.NamespaceIds={config:{id:0,check:e=>e.startsWith("http://www.xfa.org/schema/xci/")},connectionSet:{id:1,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-connection-set/")},datasets:{id:2,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-data/")},form:{id:3,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-form/")},localeSet:{id:4,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-locale-set/")},pdf:{id:5,check:e=>"http://ns.adobe.com/xdp/pdf/"===e},signature:{id:6,check:e=>"http://www.w3.org/2000/09/xmldsig#"===e},sourceSet:{id:7,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-source-set/")},stylesheet:{id:8,check:e=>"http://www.w3.org/1999/XSL/Transform"===e},template:{id:9,check:e=>e.startsWith("http://www.xfa.org/schema/xfa-template/")},xdc:{id:10,check:e=>e.startsWith("http://www.xfa.org/schema/xdc/")},xdp:{id:11,check:e=>"http://ns.adobe.com/xdp/"===e},xfdf:{id:12,check:e=>"http://ns.adobe.com/xfdf/"===e},xhtml:{id:13,check:e=>"http://www.w3.org/1999/xhtml"===e},xmpmeta:{id:14,check:e=>"http://ns.adobe.com/xmpmeta/"===e}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.addHTML=function(e,t,r){const s=e[n.$extra],o=s.availableSpace,[c,l,h,u]=r;switch(e.layout){case"position":s.width=Math.max(s.width,c+h),s.height=Math.max(s.height,l+u),s.children.push(t);break;case"lr-tb":case"rl-tb":s.line&&1!==s.attempt||(s.line=i(e,[]),s.children.push(s.line),s.numberInLine=0),s.numberInLine+=1,s.line.children.push(t),0===s.attempt?(s.currentWidth+=h,s.height=Math.max(s.height,s.prevHeight+u)):(s.currentWidth=h,s.prevHeight=s.height,s.height+=u,s.attempt=0),s.width=Math.max(s.width,s.currentWidth);break;case"rl-row":case"row":{s.children.push(t),s.width+=h,s.height=Math.max(s.height,u);const e=(0,a.measureToString)(s.height);for(const t of s.children)t.attributes.style.height=e;break}case"table":case"tb":s.width=Math.min(o.width,Math.max(s.width,h)),s.height+=u,s.children.push(t)}},t.checkDimensions=function(e,t){var r;if(null===e[n.$getTemplateRoot]()[n.$extra].firstUnsplittable)return!0;if(0===e.w||0===e.h)return!0;const a=e[n.$getSubformParent](),i=(null===(r=a[n.$extra])||void 0===r?void 0:r.attempt)||0,[,s,o,c]=function(e){let t,r,n=""===e.w?NaN:e.w,a=""===e.h?NaN:e.h,[i,s]=[0,0];switch(e.anchorType||""){case"bottomCenter":[i,s]=[n/2,a];break;case"bottomLeft":[i,s]=[0,a];break;case"bottomRight":[i,s]=[n,a];break;case"middleCenter":[i,s]=[n/2,a/2];break;case"middleLeft":[i,s]=[0,a/2];break;case"middleRight":[i,s]=[n,a/2];break;case"topCenter":[i,s]=[n/2,0];break;case"topRight":[i,s]=[n,0]}switch(e.rotate||0){case 0:[t,r]=[-i,-s];break;case 90:[t,r]=[-s,i],[n,a]=[a,-n];break;case 180:[t,r]=[i,s],[n,a]=[-n,-a];break;case 270:[t,r]=[s,-i],[n,a]=[-a,n]}return[e.x+t+Math.min(0,n),e.y+r+Math.min(0,a),Math.abs(n),Math.abs(a)]}(e);switch(a.layout){case"lr-tb":case"rl-tb":return 0===i?e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure?""!==e.w?Math.round(o-t.width)<=2:t.width>2:!(""!==e.h&&Math.round(c-t.height)>2)&&(""!==e.w?Math.round(o-t.width)<=2||0===a[n.$extra].numberInLine&&t.height>2:t.width>2):!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||!(""!==e.h&&Math.round(c-t.height)>2)&&(""===e.w||Math.round(o-t.width)<=2||!a[n.$isThereMoreWidth]())&&t.height>2;case"table":case"tb":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||(""===e.h||e[n.$isSplittable]()?(""===e.w||Math.round(o-t.width)<=2||!a[n.$isThereMoreWidth]())&&t.height>2:Math.round(c-t.height)<=2);case"position":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(c+s-t.height)<=2||c+s>e[n.$getTemplateRoot]()[n.$extra].currentContentArea.h;case"rl-row":case"row":return!!e[n.$getTemplateRoot]()[n.$extra].noLayoutFailure||""===e.h||Math.round(c-t.height)<=2;default:return!0}},t.flushHTML=function(e){if(!e[n.$extra])return null;const t={name:"div",attributes:e[n.$extra].attributes,children:e[n.$extra].children};if(e[n.$extra].failingNode){const r=e[n.$extra].failingNode[n.$flushHTML]();r&&(e.layout.endsWith("-tb")?t.children.push(i(e,[r])):t.children.push(r))}return 0===t.children.length?null:t},t.getAvailableSpace=function(e){const t=e[n.$extra].availableSpace,r=e.margin?e.margin.topInset+e.margin.bottomInset:0,a=e.margin?e.margin.leftInset+e.margin.rightInset:0;switch(e.layout){case"lr-tb":case"rl-tb":return 0===e[n.$extra].attempt?{width:t.width-a-e[n.$extra].currentWidth,height:t.height-r-e[n.$extra].prevHeight}:{width:t.width-a,height:t.height-r-e[n.$extra].height};case"rl-row":case"row":return{width:e[n.$extra].columnWidths.slice(e[n.$extra].currentColumn).reduce(((e,t)=>e+t)),height:t.height-a};case"table":case"tb":return{width:t.width-a,height:t.height-r-e[n.$extra].height};default:return t}},r(139);var n=r(228),a=r(236);function i(e,t){return{name:"div",attributes:{class:["lr-tb"===e.layout?"xfaLr":"xfaRl"]},children:t}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.computeBbox=function(e,t,r){let a;if(""!==e.w&&""!==e.h)a=[e.x,e.y,e.w,e.h];else{if(!r)return null;let i=e.w;if(""===i){if(0===e.maxW){const t=e[n.$getSubformParent]();i="position"===t.layout&&""!==t.w?0:e.minW}else i=Math.min(e.maxW,r.width);t.attributes.style.width=l(i)}let s=e.h;if(""===s){if(0===e.maxH){const t=e[n.$getSubformParent]();s="position"===t.layout&&""!==t.h?0:e.minH}else s=Math.min(e.maxH,r.height);t.attributes.style.height=l(s)}a=[e.x,e.y,i,s]}return a},t.createWrapper=function(e,t){const{attributes:r}=t,{style:a}=r,i={name:"div",attributes:{class:["xfaWrapper"],style:Object.create(null)},children:[]};if(r.class.push("xfaWrapped"),e.border){const{widths:r,insets:s}=e.border[n.$extra];let o,c,l=s[0],h=s[3];const u=s[0]+s[2],f=s[1]+s[3];switch(e.border.hand){case"even":l-=r[0]/2,h-=r[3]/2,o="calc(100% + ".concat((r[1]+r[3])/2-f,"px)"),c="calc(100% + ".concat((r[0]+r[2])/2-u,"px)");break;case"left":l-=r[0],h-=r[3],o="calc(100% + ".concat(r[1]+r[3]-f,"px)"),c="calc(100% + ".concat(r[0]+r[2]-u,"px)");break;case"right":o=f?"calc(100% - ".concat(f,"px)"):"100%",c=u?"calc(100% - ".concat(u,"px)"):"100%"}const g=["xfaBorder"];d(e.border)&&g.push("xfaPrintOnly");const p={name:"div",attributes:{class:g,style:{top:"".concat(l,"px"),left:"".concat(h,"px"),width:o,height:c}},children:[]};for(const e of["border","borderWidth","borderColor","borderRadius","borderStyle"])void 0!==a[e]&&(p.attributes.style[e]=a[e],delete a[e]);i.children.push(p,t)}else i.children.push(t);for(const e of["background","backgroundClip","top","left","width","height","minWidth","minHeight","maxWidth","maxHeight","transform","transformOrigin","visibility"])void 0!==a[e]&&(i.attributes.style[e]=a[e],delete a[e]);return i.attributes.style.position="absolute"===a.position?"absolute":"relative",delete a.position,a.alignSelf&&(i.attributes.style.alignSelf=a.alignSelf,delete a.alignSelf),i},t.fixDimensions=function(e){var t;const r=e[n.$getSubformParent]();if(null!==(t=r.layout)&&void 0!==t&&t.includes("row")){const t=r[n.$extra],a=e.colSpan;let i;i=-1===a?t.columnWidths.slice(t.currentColumn).reduce(((e,t)=>e+t),0):t.columnWidths.slice(t.currentColumn,t.currentColumn+a).reduce(((e,t)=>e+t),0),isNaN(i)||(e.w=i)}r.layout&&"position"!==r.layout&&(e.x=e.y=0),"table"===e.layout&&""===e.w&&Array.isArray(e.columnWidths)&&(e.w=e.columnWidths.reduce(((e,t)=>e+t),0))},t.fixTextIndent=function(e){const t=(0,i.getMeasurement)(e.textIndent,"0px");if(t>=0)return;const r="padding"+("left"==("right"===e.textAlign?"right":"left")?"Left":"Right"),n=(0,i.getMeasurement)(e[r],"0px");e[r]=n-t+"px"},t.fixURL=function(e){const t=(0,a.createValidAbsoluteUrl)(e,null,{addDefaultProtocol:!0,tryConvertEncoding:!0});return t?t.href:null},t.isPrintOnly=d,t.layoutClass=function(e){switch(e.layout){case"position":default:return"xfaPosition";case"lr-tb":return"xfaLrTb";case"rl-row":return"xfaRlRow";case"rl-tb":return"xfaRlTb";case"row":return"xfaRow";case"table":return"xfaTable";case"tb":return"xfaTb"}},t.layoutNode=function(e,t){let r=null,a=null,i=!1;if((!e.w||!e.h)&&e.value){let s=0,o=0;e.margin&&(s=e.margin.leftInset+e.margin.rightInset,o=e.margin.topInset+e.margin.bottomInset);let c=null,l=null;e.para&&(l=Object.create(null),c=""===e.para.lineHeight?null:e.para.lineHeight,l.top=""===e.para.spaceAbove?0:e.para.spaceAbove,l.bottom=""===e.para.spaceBelow?0:e.para.spaceBelow,l.left=""===e.para.marginLeft?0:e.para.marginLeft,l.right=""===e.para.marginRight?0:e.para.marginRight);let h=e.font;if(!h){const t=e[n.$getTemplateRoot]();let r=e[n.$getParent]();for(;r&&r!==t;){if(r.font){h=r.font;break}r=r[n.$getParent]()}}const d=(e.w||t.width)-s,f=e[n.$globalData].fontFinder;if(e.value.exData&&e.value.exData[n.$content]&&"text/html"===e.value.exData.contentType){const t=u(e.value.exData[n.$content],h,l,c,f,d);a=t.width,r=t.height,i=t.isBroken}else{const t=e.value[n.$text]();if(t){const e=u(t,h,l,c,f,d);a=e.width,r=e.height,i=e.isBroken}}null===a||e.w||(a+=s),null===r||e.h||(r+=o)}return{w:a,h:r,isBroken:i}},t.measureToString=l,t.setAccess=function(e,t){switch(e.access){case"nonInteractive":t.push("xfaNonInteractive");break;case"readOnly":t.push("xfaReadOnly");break;case"protected":t.push("xfaDisabled")}},t.setFontFamily=function(e,t,r,n){if(!r)return void delete n.fontFamily;const a=(0,i.stripQuotes)(e.typeface);n.fontFamily='"'.concat(a,'"');const o=r.find(a);if(o){const{fontFamily:r}=o.regular.cssFontInfo;r!==a&&(n.fontFamily='"'.concat(r,'"'));const i=f(t);if(i&&""!==i.lineHeight)return;if(n.lineHeight)return;const c=(0,s.selectFont)(e,o);c&&(n.lineHeight=Math.max(1.2,c.lineHeight))}},t.setMinMaxDimensions=function(e,t){"position"===e[n.$getSubformParent]().layout&&(e.minW>0&&(t.minWidth=l(e.minW)),e.maxW>0&&(t.maxWidth=l(e.maxW)),e.minH>0&&(t.minHeight=l(e.minH)),e.maxH>0&&(t.maxHeight=l(e.maxH)))},t.setPara=function(e,t,r){var a;if(null!==(a=r.attributes.class)&&void 0!==a&&a.includes("xfaRich")){t&&(""===e.h&&(t.height="auto"),""===e.w&&(t.width="auto"));const a=f(e);if(a){const e=r.attributes.style;switch(e.display="flex",e.flexDirection="column",a.vAlign){case"top":e.justifyContent="start";break;case"bottom":e.justifyContent="end";break;case"middle":e.justifyContent="center"}const t=a[n.$toStyle]();for(const[r,n]of Object.entries(t))r in e||(e[r]=n)}}},t.toStyle=function(e){const t=Object.create(null);for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;se+t),0),t.currentColumn=0):(s=t.columnWidths.slice(t.currentColumn,t.currentColumn+r).reduce(((e,t)=>e+t),0),t.currentColumn=(t.currentColumn+e.colSpan)%t.columnWidths.length),isNaN(s)||(i=e.w=s)}t.width=""!==i?l(i):"auto",t.height=""!==s?l(s):"auto"},position(e,t){const r=e[n.$getSubformParent]();null!=r&&r.layout&&"position"!==r.layout||(t.position="absolute",t.left=l(e.x),t.top=l(e.y))},rotate(e,t){e.rotate&&("transform"in t||(t.transform=""),t.transform+="rotate(-".concat(e.rotate,"deg)"),t.transformOrigin="top left")},presence(e,t){switch(e.presence){case"invisible":t.visibility="hidden";break;case"hidden":case"inactive":t.display="none"}},hAlign(e,t){if("para"===e[n.$nodeName])switch(e.hAlign){case"justifyAll":t.textAlign="justify-all";break;case"radix":t.textAlign="left";break;default:t.textAlign=e.hAlign}else switch(e.hAlign){case"left":t.alignSelf="start";break;case"center":t.alignSelf="center";break;case"right":t.alignSelf="end"}},margin(e,t){e.margin&&(t.margin=e.margin[n.$toStyle]().margin)}};function u(e,t,r,a,i,s){const c=new o.TextMeasure(t,r,a,i);return"string"==typeof e?c.addString(e):e[n.$pushGlyphs](c),c.compute(s)}function d(e){return e.relevant.length>0&&!e.relevant[0].excluded&&"print"===e.relevant[0].viewname}function f(e){const t=e[n.$getTemplateRoot]()[n.$extra].paraStack;return t.length?t.at(-1):null}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HTMLResult=void 0,t.getBBox=function(e){const t=-1;if(!e)return{x:t,y:t,width:t,height:t};const r=e.trim().split(/\\s*,\\s*/).map((e=>o(e,"-1")));if(r.length<4||r[2]<0||r[3]<0)return{x:t,y:t,width:t,height:t};const[n,a,i,s]=r;return{x:n,y:a,width:i,height:s}},t.getColor=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0,0],[r,n,a]=t;if(!e)return{r,g:n,b:a};const i=e.trim().split(/\\s*,\\s*/).map((e=>Math.min(Math.max(0,parseInt(e.trim(),10)),255))).map((e=>isNaN(e)?0:e));return i.length<3||([r,n,a]=i),{r,g:n,b:a}},t.getFloat=function(e){let{data:t,defaultValue:r,validate:n}=e;if(!t)return r;t=t.trim();const a=parseFloat(t);return!isNaN(a)&&n(a)?a:r},t.getInteger=function(e){let{data:t,defaultValue:r,validate:n}=e;if(!t)return r;t=t.trim();const a=parseInt(t,10);return!isNaN(a)&&n(a)?a:r},t.getKeyword=s,t.getMeasurement=o,t.getRatio=function(e){if(!e)return{num:1,den:1};const t=e.trim().split(/\\s*:\\s*/).map((e=>parseFloat(e))).filter((e=>!isNaN(e)));if(1===t.length&&t.push(1),0===t.length)return{num:1,den:1};const[r,n]=t;return{num:r,den:n}},t.getRelevant=function(e){return e?e.trim().split(/\\s+/).map((e=>({excluded:"-"===e[0],viewname:e.substring(1)}))):[]},t.getStringOption=function(e,t){return s({data:e,defaultValue:t[0],validate:e=>t.includes(e)})},t.stripQuotes=function(e){return e.startsWith("'")||e.startsWith('"')?e.slice(1,-1):e},r(139);var n=r(144);const a={pt:e=>e,cm:e=>e/2.54*72,mm:e=>e/25.4*72,in:e=>72*e,px:e=>e},i=/([+-]?\\d+\\.?\\d*)(.*)/;function s(e){let{data:t,defaultValue:r,validate:n}=e;return t?(t=t.trim(),n(t)?t:r):r}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"0";if(t||(t="0"),!e)return o(t);const r=e.trim().match(i);if(!r)return o(t);const[,n,s]=r,c=parseFloat(n);if(isNaN(c))return o(t);if(0===c)return 0;const l=a[s];return l?l(c):c}class c{static get FAILURE(){return(0,n.shadow)(this,"FAILURE",new c(!1,null,null,null))}static get EMPTY(){return(0,n.shadow)(this,"EMPTY",new c(!0,null,null,null))}constructor(e,t,r,n){this.success=e,this.html=t,this.bbox=r,this.breakNode=n}isBreak(){return!!this.breakNode}static breakNode(e){return new c(!1,null,null,e)}static success(e){return new c(!0,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,null)}}t.HTMLResult=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FontFinder=void 0,t.getMetrics=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=null;if(e){const t=(0,a.stripQuotes)(e.typeface),i=e[n.$globalData].fontFinder.find(t);r=s(e,i)}if(!r)return{lineHeight:12,lineGap:2,lineNoGap:10};const i=e.size||10,o=r.lineHeight?Math.max(t?0:1.2,r.lineHeight):1.2,c=void 0===r.lineGap?.2:r.lineGap;return{lineHeight:o*i,lineGap:c*i,lineNoGap:Math.max(1,o-c)*i}},t.selectFont=s,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139);var n=r(228),a=r(237),i=r(144);function s(e,t){return"italic"===e.posture?"bold"===e.weight?t.bolditalic:t.italic:"bold"===e.weight?t.bold:t.regular}t.FontFinder=class{constructor(e){this.fonts=new Map,this.cache=new Map,this.warned=new Set,this.defaultFont=null,this.add(e)}add(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;for(const t of e)this.addPdfFont(t);for(const e of this.fonts.values())e.regular||(e.regular=e.italic||e.bold||e.bolditalic);if(!t||0===t.size)return;const r=this.fonts.get("PdfJS-Fallback-PdfJS-XFA");for(const e of t)this.fonts.set(e,r)}addPdfFont(e){const t=e.cssFontInfo,r=t.fontFamily;let n=this.fonts.get(r);n||(n=Object.create(null),this.fonts.set(r,n),this.defaultFont||(this.defaultFont=n));let a="";const i=parseFloat(t.fontWeight);var s,o,c;0!==parseFloat(t.italicAngle)?a=i>=700?"bolditalic":"italic":i>=700&&(a="bold"),a||((e.name.includes("Bold")||(null===(s=e.psName)||void 0===s?void 0:s.includes("Bold")))&&(a="bold"),(e.name.includes("Italic")||e.name.endsWith("It")||(null===(o=e.psName)||void 0===o?void 0:o.includes("Italic"))||(null===(c=e.psName)||void 0===c?void 0:c.endsWith("It")))&&(a+="italic")),a||(a="regular"),n[a]=e}getDefault(){return this.defaultFont}find(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=this.fonts.get(e)||this.cache.get(e);if(r)return r;const n=/,|-|_| |bolditalic|bold|italic|regular|it/gi;let a=e.replaceAll(n,"");if(r=this.fonts.get(a),r)return this.cache.set(e,r),r;a=a.toLowerCase();const s=[];for(const[e,t]of this.fonts.entries())e.replaceAll(n,"").toLowerCase().startsWith(a)&&s.push(t);if(0===s.length)for(const[,e]of this.fonts.entries()){var o;(null===(o=e.regular.name)||void 0===o?void 0:o.replaceAll(n,"").toLowerCase().startsWith(a))&&s.push(e)}if(0===s.length){a=a.replaceAll(/psmt|mt/gi,"");for(const[e,t]of this.fonts.entries())e.replaceAll(n,"").toLowerCase().startsWith(a)&&s.push(t)}if(0===s.length)for(const e of this.fonts.values()){var c;(null===(c=e.regular.name)||void 0===c?void 0:c.replaceAll(n,"").toLowerCase().startsWith(a))&&s.push(e)}return s.length>=1?(1!==s.length&&t&&(0,i.warn)("XFA - Too many choices to guess the correct font: ".concat(e)),this.cache.set(e,s[0]),s[0]):(t&&!this.warned.has(e)&&(this.warned.add(e),(0,i.warn)("XFA - Cannot find the font: ".concat(e))),null)}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TextMeasure=void 0,r(139);var n=r(238);class a{constructor(e,t,r,a){if(this.lineHeight=r,this.paraMargin=t||{top:0,bottom:0,left:0,right:0},!e)return void([this.pdfFont,this.xfaFont]=this.defaultFont(a));this.xfaFont={typeface:e.typeface,posture:e.posture,weight:e.weight,size:e.size,letterSpacing:e.letterSpacing};const i=a.find(e.typeface);i?(this.pdfFont=(0,n.selectFont)(e,i),this.pdfFont||([this.pdfFont,this.xfaFont]=this.defaultFont(a))):[this.pdfFont,this.xfaFont]=this.defaultFont(a)}defaultFont(e){const t=e.find("Helvetica",!1)||e.find("Myriad Pro",!1)||e.find("Arial",!1)||e.getDefault();if(null!=t&&t.regular){const e=t.regular;return[e,{typeface:e.cssFontInfo.fontFamily,posture:"normal",weight:"normal",size:10,letterSpacing:0}]}return[null,{typeface:"Courier",posture:"normal",weight:"normal",size:10,letterSpacing:0}]}}class i{constructor(e,t,r,n){this.fontFinder=n,this.stack=[new a(e,t,r,n)]}pushData(e,t,r){const n=this.stack.at(-1);for(const t of["typeface","posture","weight","size","letterSpacing"])e[t]||(e[t]=n.xfaFont[t]);for(const e of["top","bottom","left","right"])isNaN(t[e])&&(t[e]=n.paraMargin[e]);const i=new a(e,t,r||n.lineHeight,this.fontFinder);i.pdfFont||(i.pdfFont=n.pdfFont),this.stack.push(i)}popFont(){this.stack.pop()}topFont(){return this.stack.at(-1)}}t.TextMeasure=class{constructor(e,t,r,n){this.glyphs=[],this.fontSelector=new i(e,t,r,n),this.extraHeight=0}pushData(e,t,r){this.fontSelector.pushData(e,t,r)}popFont(e){return this.fontSelector.popFont()}addPara(){const e=this.fontSelector.topFont();this.extraHeight+=e.paraMargin.top+e.paraMargin.bottom}addString(e){if(!e)return;const t=this.fontSelector.topFont(),r=t.xfaFont.size;if(t.pdfFont){const n=t.xfaFont.letterSpacing,a=t.pdfFont,i=a.lineHeight||1.2,s=t.lineHeight||Math.max(1.2,i)*r,o=i-(void 0===a.lineGap?.2:a.lineGap),c=Math.max(1,o)*r,l=r/1e3,h=a.defaultWidth||a.charsToGlyphs(" ")[0].width;for(const t of e.split(/[\\u2029\\n]/)){const e=a.encodeString(t).join(""),r=a.charsToGlyphs(e);for(const e of r){const t=e.width||h;this.glyphs.push([t*l+n,s,c,e.unicode,!1])}this.glyphs.push([0,0,0,"\\n",!0])}this.glyphs.pop()}else{for(const t of e.split(/[\\u2029\\n]/)){for(const e of t.split(""))this.glyphs.push([r,1.2*r,r,e,!1]);this.glyphs.push([0,0,0,"\\n",!0])}this.glyphs.pop()}}compute(e){let t=-1,r=0,n=0,a=0,i=0,s=0,o=!1,c=!0;for(let l=0,h=this.glyphs.length;le?(n=Math.max(n,i),i=0,a+=s,s=m,t=-1,r=0,o=!0,c=!1):(s=Math.max(m,s),r=i,i+=h,t=l):i+h>e?(a+=s,s=m,-1!==t?(l=t,n=Math.max(n,r),i=0,t=-1,r=0):(n=Math.max(n,i),i=h),o=!0,c=!1):(i+=h,s=Math.max(m,s))}return n=Math.max(n,i),a+=s+this.extraHeight,{width:1.02*n,height:a,isBroken:o}}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XmlObject=t.XFAObjectArray=t.XFAObject=t.XFAAttribute=t.StringObject=t.OptionObject=t.Option10=t.Option01=t.IntegerObject=t.ContentObject=void 0,r(139),r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(228),a=r(237),i=r(144),s=r(149),o=r(234),c=r(241);const l=Symbol(),h=Symbol(),u=Symbol(),d=Symbol("_children"),f=Symbol(),g=Symbol(),p=Symbol(),m=Symbol(),b=Symbol(),y=Symbol(),w=Symbol(),v=Symbol(),x=Symbol(),S=Symbol("parent"),A=Symbol(),k=Symbol(),C=Symbol();let O=0;const F=o.NamespaceIds.datasets.id;class I{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this[n.$namespaceId]=e,this[n.$nodeName]=t,this[w]=r,this[S]=null,this[d]=[],this[n.$uid]="".concat(t).concat(O++),this[n.$globalData]=null}get isXFAObject(){return!0}get isXFAObjectArray(){return!1}createNodes(e){let t=this,r=null;for(const{name:a,index:i}of e){for(let e=0,s=isFinite(i)?i:0;e<=s;e++){const e=t[n.$namespaceId]===F?-1:t[n.$namespaceId];r=new E(e,a),t[n.$appendChild](r)}t=r}return r}[n.$onChild](e){if(!this[w]||!this[n.$onChildCheck](e))return!1;const t=e[n.$nodeName],r=this[t];if(!(r instanceof T))return null!==r&&this[n.$removeChild](r),this[t]=e,this[n.$appendChild](e),!0;if(r.push(e))return this[n.$appendChild](e),!0;let a="";return this.id?a=" (id: ".concat(this.id,")"):this.name&&(a=" (name: ".concat(this.name," ").concat(this.h.value,")")),(0,i.warn)('XFA - node "'.concat(this[n.$nodeName],'"').concat(a,' has already enough "').concat(t,'"!')),!1}[n.$onChildCheck](e){return this.hasOwnProperty(e[n.$nodeName])&&e[n.$namespaceId]===this[n.$namespaceId]}[n.$isNsAgnostic](){return!1}[n.$acceptWhitespace](){return!1}[n.$isCDATAXml](){return!1}[n.$isBindable](){return!1}[n.$popPara](){this.para&&this[n.$getTemplateRoot]()[n.$extra].paraStack.pop()}[n.$pushPara](){this[n.$getTemplateRoot]()[n.$extra].paraStack.push(this.para)}[n.$setId](e){this.id&&this[n.$namespaceId]===o.NamespaceIds.template.id&&e.set(this.id,this)}[n.$getTemplateRoot](){return this[n.$globalData].template}[n.$isSplittable](){return!1}[n.$isThereMoreWidth](){return!1}[n.$appendChild](e){e[S]=this,this[d].push(e),!e[n.$globalData]&&this[n.$globalData]&&(e[n.$globalData]=this[n.$globalData])}[n.$removeChild](e){const t=this[d].indexOf(e);this[d].splice(t,1)}[n.$hasSettableValue](){return this.hasOwnProperty("value")}[n.$setValue](e){}[n.$onText](e){}[n.$finalize](){}[n.$clean](e){delete this[w],this[n.$cleanup]&&(e.clean(this[n.$cleanup]),delete this[n.$cleanup])}[n.$indexOf](e){return this[d].indexOf(e)}[n.$insertAt](e,t){t[S]=this,this[d].splice(e,0,t),!t[n.$globalData]&&this[n.$globalData]&&(t[n.$globalData]=this[n.$globalData])}[n.$isTransparent](){return!this.name}[n.$lastAttribute](){return""}[n.$text](){return 0===this[d].length?this[n.$content]:this[d].map((e=>e[n.$text]())).join("")}get[u](){const e=Object.getPrototypeOf(this);if(!e._attributes){const t=e._attributes=new Set;for(const e of Object.getOwnPropertyNames(this)){if(null===this[e]||this[e]instanceof I||this[e]instanceof T)break;t.add(e)}}return(0,i.shadow)(this,u,e._attributes)}[n.$isDescendent](e){let t=this;for(;t;){if(t===e)return!0;t=t[n.$getParent]()}return!1}[n.$getParent](){return this[S]}[n.$getSubformParent](){return this[n.$getParent]()}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[e]:this[d]}[n.$dump](){const e=Object.create(null);this[n.$content]&&(e.$content=this[n.$content]);for(const t of Object.getOwnPropertyNames(this)){const r=this[t];null!==r&&(r instanceof I?e[t]=r[n.$dump]():r instanceof T?r.isEmpty()||(e[t]=r.dump()):e[t]=r)}return e}[n.$toStyle](){return null}[n.$toHTML](){return a.HTMLResult.EMPTY}*[n.$getContainedChildren](){for(const e of this[n.$getChildren]())yield e}*[m](e,t){for(const r of this[n.$getContainedChildren]())if(!e||t===e.has(r[n.$nodeName])){const e=this[n.$getAvailableSpace](),t=r[n.$toHTML](e);t.success||(this[n.$extra].failingNode=r),yield t}}[n.$flushHTML](){return null}[n.$addHTML](e,t){this[n.$extra].children.push(e)}[n.$getAvailableSpace](){}[n.$childrenToHTML](e){let{filter:t=null,include:r=!0}=e;if(this[n.$extra].generator){const e=this[n.$getAvailableSpace](),t=this[n.$extra].failingNode[n.$toHTML](e);if(!t.success)return t;t.html&&this[n.$addHTML](t.html,t.bbox),delete this[n.$extra].failingNode}else this[n.$extra].generator=this[m](t,r);for(;;){const e=this[n.$extra].generator.next();if(e.done)break;const t=e.value;if(!t.success)return t;t.html&&this[n.$addHTML](t.html,t.bbox)}return this[n.$extra].generator=null,a.HTMLResult.EMPTY}[n.$setSetAttributes](e){this[k]=new Set(Object.keys(e))}[y](e){const t=this[u],r=this[k];return[...e].filter((e=>t.has(e)&&!r.has(e)))}[n.$resolvePrototypes](e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;for(const r of this[d])r[A](e,t)}[A](e,t){const r=this[b](e,t);r?this[l](r,e,t):this[n.$resolvePrototypes](e,t)}[b](e,t){const{use:r,usehref:a}=this;if(!r&&!a)return null;let s=null,o=null,h=null,u=r;if(a?(u=a,a.startsWith("#som(")&&a.endsWith(")")?o=a.slice(5,-1):a.startsWith(".#som(")&&a.endsWith(")")?o=a.slice(6,-1):a.startsWith("#")?h=a.slice(1):a.startsWith(".#")&&(h=a.slice(2))):r.startsWith("#")?h=r.slice(1):o=r,this.use=this.usehref="",h?s=e.get(h):(s=(0,c.searchNode)(e.get(n.$root),this,o,!0,!1),s&&(s=s[0])),!s)return(0,i.warn)("XFA - Invalid prototype reference: ".concat(u,".")),null;if(s[n.$nodeName]!==this[n.$nodeName])return(0,i.warn)("XFA - Incompatible prototype: ".concat(s[n.$nodeName]," !== ").concat(this[n.$nodeName],".")),null;if(t.has(s))return(0,i.warn)("XFA - Cycle detected in prototypes use."),null;t.add(s);const d=s[b](e,t);return d&&s[l](d,e,t),s[n.$resolvePrototypes](e,t),t.delete(s),s}[l](e,t,r){if(r.has(e))(0,i.warn)("XFA - Cycle detected in prototypes use.");else{!this[n.$content]&&e[n.$content]&&(this[n.$content]=e[n.$content]),new Set(r).add(e);for(const t of this[y](e[k]))this[t]=e[t],this[k]&&this[k].add(t);for(const a of Object.getOwnPropertyNames(this)){if(this[u].has(a))continue;const i=this[a],s=e[a];if(i instanceof T){for(const e of i[d])e[A](t,r);for(let a=i[d].length,o=s[d].length;aI[f](e))):"object"==typeof e&&null!==e?Object.assign({},e):e}[n.$clone](){const e=Object.create(Object.getPrototypeOf(this));for(const t of Object.getOwnPropertySymbols(this))try{e[t]=this[t]}catch(r){(0,i.shadow)(e,t,this[t])}e[n.$uid]="".concat(e[n.$nodeName]).concat(O++),e[d]=[];for(const t of Object.getOwnPropertyNames(this)){if(this[u].has(t)){e[t]=I[f](this[t]);continue}const r=this[t];e[t]=r instanceof T?new T(r[v]):null}for(const t of this[d]){const r=t[n.$nodeName],a=t[n.$clone]();e[d].push(a),a[S]=e,null===e[r]?e[r]=a:e[r][d].push(a)}return e}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[d].filter((t=>t[n.$nodeName]===e)):this[d]}[n.$getChildrenByClass](e){return this[e]}[n.$getChildrenByName](e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return Array.from(this[n.$getChildrenByNameIt](e,t,r))}[n.$getChildrenByNameIt](e,t){var r=this;let a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function*(){if("parent"!==e){for(const a of r[d])a[n.$nodeName]===e&&(yield a),a.name===e&&(yield a),(t||a[n.$isTransparent]())&&(yield*a[n.$getChildrenByNameIt](e,t,!1));a&&r[u].has(e)&&(yield new M(r,e,r[e]))}else yield r[S]}()}}t.XFAObject=I;class T{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0;this[v]=e,this[d]=[]}get isXFAObject(){return!1}get isXFAObjectArray(){return!0}push(e){return this[d].length<=this[v]?(this[d].push(e),!0):((0,i.warn)('XFA - node "'.concat(e[n.$nodeName],'" accepts no more than ').concat(this[v]," children")),!1)}isEmpty(){return 0===this[d].length}dump(){return 1===this[d].length?this[d][0][n.$dump]():this[d].map((e=>e[n.$dump]()))}[n.$clone](){const e=new T(this[v]);return e[d]=this[d].map((e=>e[n.$clone]())),e}get children(){return this[d]}clear(){this[d].length=0}}t.XFAObjectArray=T;class M{constructor(e,t,r){this[S]=e,this[n.$nodeName]=t,this[n.$content]=r,this[n.$consumed]=!1,this[n.$uid]="attribute"+O++}[n.$getParent](){return this[S]}[n.$isDataValue](){return!0}[n.$getDataValue](){return this[n.$content].trim()}[n.$setValue](e){e=e.value||"",this[n.$content]=e.toString()}[n.$text](){return this[n.$content]}[n.$isDescendent](e){return this[S]===e||this[S][n.$isDescendent](e)}}t.XFAAttribute=M;class E extends I{constructor(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(super(e,t),this[n.$content]="",this[g]=null,"#text"!==t){const e=new Map;this[h]=e;for(const[t,n]of Object.entries(r))e.set(t,new M(this,t,n));if(r.hasOwnProperty(n.$nsAttributes)){const e=r[n.$nsAttributes].xfa.dataNode;void 0!==e&&("dataGroup"===e?this[g]=!1:"dataValue"===e&&(this[g]=!0))}}this[n.$consumed]=!1}[n.$toString](e){const t=this[n.$nodeName];if("#text"===t)return void e.push((0,s.encodeToXmlString)(this[n.$content]));const r=(0,i.utf8StringToString)(t),a=this[n.$namespaceId]===F?"xfa:":"";e.push("<".concat(a).concat(r));for(const[t,r]of this[h].entries()){const a=(0,i.utf8StringToString)(t);e.push(" ".concat(a,'="').concat((0,s.encodeToXmlString)(r[n.$content]),'"'))}if(null!==this[g]&&(this[g]?e.push(' xfa:dataNode="dataValue"'):e.push(' xfa:dataNode="dataGroup"')),this[n.$content]||0!==this[d].length){if(e.push(">"),this[n.$content])"string"==typeof this[n.$content]?e.push((0,s.encodeToXmlString)(this[n.$content])):this[n.$content][n.$toString](e);else for(const t of this[d])t[n.$toString](e);e.push(""))}else e.push("/>")}[n.$onChild](e){if(this[n.$content]){const e=new E(this[n.$namespaceId],"#text");this[n.$appendChild](e),e[n.$content]=this[n.$content],this[n.$content]=""}return this[n.$appendChild](e),!0}[n.$onText](e){this[n.$content]+=e}[n.$finalize](){if(this[n.$content]&&this[d].length>0){const e=new E(this[n.$namespaceId],"#text");this[n.$appendChild](e),e[n.$content]=this[n.$content],delete this[n.$content]}}[n.$toHTML](){return"#text"===this[n.$nodeName]?a.HTMLResult.success({name:"#text",value:this[n.$content]}):a.HTMLResult.EMPTY}[n.$getChildren](){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return e?this[d].filter((t=>t[n.$nodeName]===e)):this[d]}[n.$getAttributes](){return this[h]}[n.$getChildrenByClass](e){const t=this[h].get(e);return void 0!==t?t:this[n.$getChildren](e)}*[n.$getChildrenByNameIt](e,t){const r=this[h].get(e);r&&(yield r);for(const r of this[d])r[n.$nodeName]===e&&(yield r),t&&(yield*r[n.$getChildrenByNameIt](e,t))}*[n.$getAttributeIt](e,t){const r=this[h].get(e);!r||t&&r[n.$consumed]||(yield r);for(const r of this[d])yield*r[n.$getAttributeIt](e,t)}*[n.$getRealChildrenByNameIt](e,t,r){for(const a of this[d])a[n.$nodeName]!==e||r&&a[n.$consumed]||(yield a),t&&(yield*a[n.$getRealChildrenByNameIt](e,t,r))}[n.$isDataValue](){return null===this[g]?0===this[d].length||this[d][0][n.$namespaceId]===o.NamespaceIds.xhtml.id:this[g]}[n.$getDataValue](){return null===this[g]?0===this[d].length?this[n.$content].trim():this[d][0][n.$namespaceId]===o.NamespaceIds.xhtml.id?this[d][0][n.$text]().trim():null:this[n.$content].trim()}[n.$setValue](e){e=e.value||"",this[n.$content]=e.toString()}[n.$dump](){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=Object.create(null);e&&(t.$ns=this[n.$namespaceId]),this[n.$content]&&(t.$content=this[n.$content]),t.$name=this[n.$nodeName],t.children=[];for(const r of this[d])t.children.push(r[n.$dump](e));t.attributes=Object.create(null);for(const[e,r]of this[h])t.attributes[e]=r[n.$content];return t}}t.XmlObject=E;class P extends I{constructor(e,t){super(e,t),this[n.$content]=""}[n.$onText](e){this[n.$content]+=e}[n.$finalize](){}}t.ContentObject=P;class R extends P{constructor(e,t,r){super(e,t),this[x]=r}[n.$finalize](){this[n.$content]=(0,a.getKeyword)({data:this[n.$content],defaultValue:this[x][0],validate:e=>this[x].includes(e)})}[n.$clean](e){super[n.$clean](e),delete this[x]}}t.OptionObject=R;class N extends P{[n.$finalize](){this[n.$content]=this[n.$content].trim()}}t.StringObject=N;class D extends P{constructor(e,t,r,n){super(e,t),this[p]=r,this[C]=n}[n.$finalize](){this[n.$content]=(0,a.getInteger)({data:this[n.$content],defaultValue:this[p],validate:this[C]})}[n.$clean](e){super[n.$clean](e),delete this[p],delete this[C]}}t.IntegerObject=D,t.Option01=class extends D{constructor(e,t){super(e,t,0,(e=>1===e))}},t.Option10=class extends D{constructor(e,t){super(e,t,1,(e=>0===e))}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createDataNode=function(e,t,r){const i=h(r);if(!i)return null;if(i.some((e=>e.operator===o.dotDot)))return null;const s=c.get(i[0].name);let l=0;s?(e=s(e,t),l=1):e=t||e;for(let t=i.length;l4&&void 0!==arguments[4])||arguments[4];const i=h(r,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]);if(!i)return null;const s=c.get(i[0].name);let u,d=0;s?(u=!0,e=[s(e,t)],d=1):(u=null===t,e=[t||e]);for(let r=i.length;d0&&f.push(e)}if(0!==f.length||u||0!==d)e=isFinite(h)?f.filter((e=>he[h])):f.flat();else{const r=t[n.$getParent]();if(!(t=r))return null;d=-1,e=[t]}}return 0===e.length?null:e},r(139);var n=r(228),a=r(144);const i=/^[^.[]+/,s=/^[^\\]]+/,o={dot:0,dotDot:1,dotHash:2,dotBracket:3,dotParen:4},c=new Map([["$data",(e,t)=>e.datasets?e.datasets.data:e],["$record",(e,t)=>(e.datasets?e.datasets.data:e)[n.$getChildren]()[0]],["$template",(e,t)=>e.template],["$connectionSet",(e,t)=>e.connectionSet],["$form",(e,t)=>e.form],["$layout",(e,t)=>e.layout],["$host",(e,t)=>e.host],["$dataWindow",(e,t)=>e.dataWindow],["$event",(e,t)=>e.event],["!",(e,t)=>e.datasets],["$xfa",(e,t)=>e],["xfa",(e,t)=>e],["$",(e,t)=>t]]),l=new WeakMap;function h(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.match(i);if(!n)return null;let[c]=n;const l=[{name:c,cacheName:"."+c,index:0,js:null,formCalc:null,operator:o.dot}];let h=c.length;for(;h{Object.defineProperty(t,"__esModule",{value:!0}),t.DataHandler=void 0,r(139);var n=r(228);t.DataHandler=class{constructor(e,t){this.data=t,this.dataset=e.datasets||null}serialize(e){const t=[[-1,this.data[n.$getChildren]()]];for(;t.length>0;){const r=t.at(-1),[a,i]=r;if(a+1===i.length){t.pop();continue}const s=i[++r[0]],o=e.get(s[n.$uid]);if(o)s[n.$setValue](o);else{const t=s[n.$getAttributes]();for(const r of t.values()){const t=e.get(r[n.$uid]);if(t){r[n.$setValue](t);break}}}const c=s[n.$getChildren]();c.length>0&&t.push([-1,c])}const r=[''];if(this.dataset)for(const e of this.dataset[n.$getChildren]())"data"!==e[n.$nodeName]&&e[n.$toString](r);return this.data[n.$toString](r),r.push(""),r.join("")}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XFAParser=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(139);var n=r(228),a=r(217),i=r(244),s=r(144);class o extends a.XMLParserBase{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];super(),this._builder=new i.Builder(e),this._stack=[],this._globalData={usedTypefaces:new Set},this._ids=new Map,this._current=this._builder.buildRoot(this._ids),this._errorCode=a.XMLParserErrorCode.NoError,this._whiteRegex=/^\\s+$/,this._nbsps=/\\xa0+/g,this._richText=t}parse(e){if(this.parseXml(e),this._errorCode===a.XMLParserErrorCode.NoError)return this._current[n.$finalize](),this._current.element}onText(e){e=e.replace(this._nbsps,(e=>e.slice(1)+" ")),this._richText||this._current[n.$acceptWhitespace]()?this._current[n.$onText](e,this._richText):this._whiteRegex.test(e)||this._current[n.$onText](e.trim())}onCdata(e){this._current[n.$onText](e)}_mkAttributes(e,t){let r=null,a=null;const i=Object.create({});for(const{name:c,value:l}of e)if("xmlns"===c)r?(0,s.warn)("XFA - multiple namespace definition in <".concat(t,">")):r=l;else if(c.startsWith("xmlns:")){const e=c.substring(6);a||(a=[]),a.push({prefix:e,value:l})}else{const e=c.indexOf(":");if(-1===e)i[c]=l;else{var o;let t=i[n.$nsAttributes];t||(t=i[n.$nsAttributes]=Object.create(null));const[r,a]=[c.slice(0,e),c.slice(e+1)];((o=t)[r]||(o[r]=Object.create(null)))[a]=l}}return[r,a,i]}_getNameAndPrefix(e,t){const r=e.indexOf(":");return-1===r?[e,null]:[e.substring(r+1),t?"":e.substring(0,r)]}onBeginElement(e,t,r){const[a,i,s]=this._mkAttributes(t,e),[o,c]=this._getNameAndPrefix(e,this._builder.isNsAgnostic()),l=this._builder.build({nsPrefix:c,name:o,attributes:s,namespace:a,prefixes:i});l[n.$globalData]=this._globalData,r?(l[n.$finalize](),this._current[n.$onChild](l)&&l[n.$setId](this._ids),l[n.$clean](this._builder)):(this._stack.push(this._current),this._current=l)}onEndElement(e){const t=this._current;if(t[n.$isCDATAXml]()&&"string"==typeof t[n.$content]){const e=new o;e._globalData=this._globalData;const r=e.parse(t[n.$content]);t[n.$content]=null,t[n.$onChild](r)}t[n.$finalize](),this._current=this._stack.pop(),this._current[n.$onChild](t)&&t[n.$setId](this._ids),t[n.$clean](this._builder)}onError(e){this._errorCode=e}}t.XFAParser=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Builder=void 0,r(139);var n=r(234),a=r(228),i=r(245),s=r(230),o=r(254),c=r(144),l=r(240);class h extends l.XFAObject{constructor(e){super(-1,"root",Object.create(null)),this.element=null,this[a.$ids]=e}[a.$onChild](e){return this.element=e,!0}[a.$finalize](){super[a.$finalize](),this.element.template instanceof s.Template&&(this[a.$ids].set(a.$root,this.element),this.element.template[a.$resolvePrototypes](this[a.$ids]),this.element.template[a.$ids]=this[a.$ids])}}class u extends l.XFAObject{constructor(){super(-1,"",Object.create(null))}[a.$onChild](e){return!1}}t.Builder=class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._namespaceStack=[],this._nsAgnosticLevel=0,this._namespacePrefixes=new Map,this._namespaces=new Map,this._nextNsId=Math.max(...Object.values(n.NamespaceIds).map((e=>{let{id:t}=e;return t}))),this._currentNamespace=e||new o.UnknownNamespace(++this._nextNsId)}buildRoot(e){return new h(e)}build(e){let{nsPrefix:t,name:r,attributes:s,namespace:o,prefixes:c}=e;const l=null!==o;if(l&&(this._namespaceStack.push(this._currentNamespace),this._currentNamespace=this._searchNamespace(o)),c&&this._addNamespacePrefix(c),s.hasOwnProperty(a.$nsAttributes)){const e=i.NamespaceSetUp.datasets,t=s[a.$nsAttributes];let r=null;for(const[n,a]of Object.entries(t))if(this._getNamespaceToUse(n)===e){r={xfa:a};break}r?s[a.$nsAttributes]=r:delete s[a.$nsAttributes]}const h=this._getNamespaceToUse(t),d=(null==h?void 0:h[n.$buildXFAObject](r,s))||new u;return d[a.$isNsAgnostic]()&&this._nsAgnosticLevel++,(l||c||d[a.$isNsAgnostic]())&&(d[a.$cleanup]={hasNamespace:l,prefixes:c,nsAgnostic:d[a.$isNsAgnostic]()}),d}isNsAgnostic(){return this._nsAgnosticLevel>0}_searchNamespace(e){let t=this._namespaces.get(e);if(t)return t;for(const[r,{check:a}]of Object.entries(n.NamespaceIds))if(a(e)){if(t=i.NamespaceSetUp[r],t)return this._namespaces.set(e,t),t;break}return t=new o.UnknownNamespace(++this._nextNsId),this._namespaces.set(e,t),t}_addNamespacePrefix(e){for(const{prefix:t,value:r}of e){const e=this._searchNamespace(r);let n=this._namespacePrefixes.get(t);n||(n=[],this._namespacePrefixes.set(t,n)),n.push(e)}}_getNamespaceToUse(e){if(!e)return this._currentNamespace;const t=this._namespacePrefixes.get(e);return(null==t?void 0:t.length)>0?t.at(-1):((0,c.warn)("Unknown namespace prefix: ".concat(e,".")),null)}clean(e){const{hasNamespace:t,prefixes:r,nsAgnostic:n}=e;t&&(this._currentNamespace=this._namespaceStack.pop()),r&&r.forEach((e=>{let{prefix:t}=e;this._namespacePrefixes.get(t).pop()})),n&&this._nsAgnosticLevel--}}},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NamespaceSetUp=void 0;var n=r(246),a=r(247),i=r(248),s=r(249),o=r(250),c=r(251),l=r(230),h=r(252),u=r(253);const d={config:n.ConfigNamespace,connection:a.ConnectionSetNamespace,datasets:i.DatasetsNamespace,localeSet:s.LocaleSetNamespace,signature:o.SignatureNamespace,stylesheet:c.StylesheetNamespace,template:l.TemplateNamespace,xdp:h.XdpNamespace,xhtml:u.XhtmlNamespace};t.NamespaceSetUp=d},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ConfigNamespace=void 0,r(139);var n=r(234),a=r(228),i=r(240),s=r(237),o=r(144);const c=n.NamespaceIds.config.id;class l extends i.XFAObject{constructor(e){super(c,"acrobat",!0),this.acrobat7=null,this.autoSave=null,this.common=null,this.validate=null,this.validateApprovalSignatures=null,this.submitUrl=new i.XFAObjectArray}}class h extends i.XFAObject{constructor(e){super(c,"acrobat7",!0),this.dynamicRender=null}}class u extends i.OptionObject{constructor(e){super(c,"ADBE_JSConsole",["delegate","Enable","Disable"])}}class d extends i.OptionObject{constructor(e){super(c,"ADBE_JSDebugger",["delegate","Enable","Disable"])}}class f extends i.Option01{constructor(e){super(c,"addSilentPrint")}}class g extends i.Option01{constructor(e){super(c,"addViewerPreferences")}}class p extends i.Option10{constructor(e){super(c,"adjustData")}}class m extends i.IntegerObject{constructor(e){super(c,"adobeExtensionLevel",0,(e=>e>=1&&e<=8))}}class b extends i.XFAObject{constructor(e){super(c,"agent",!0),this.name=e.name?e.name.trim():"",this.common=new i.XFAObjectArray}}class y extends i.ContentObject{constructor(e){super(c,"alwaysEmbed")}}class w extends i.StringObject{constructor(e){super(c,"amd")}}class v extends i.XFAObject{constructor(e){super(c,"area"),this.level=(0,s.getInteger)({data:e.level,defaultValue:0,validate:e=>e>=1&&e<=3}),this.name=(0,s.getStringOption)(e.name,["","barcode","coreinit","deviceDriver","font","general","layout","merge","script","signature","sourceSet","templateCache"])}}class x extends i.OptionObject{constructor(e){super(c,"attributes",["preserve","delegate","ignore"])}}class S extends i.OptionObject{constructor(e){super(c,"autoSave",["disabled","enabled"])}}class A extends i.StringObject{constructor(e){super(c,"base")}}class k extends i.XFAObject{constructor(e){super(c,"batchOutput"),this.format=(0,s.getStringOption)(e.format,["none","concat","zip","zipCompress"])}}class C extends i.ContentObject{constructor(e){super(c,"behaviorOverride")}[a.$finalize](){this[a.$content]=new Map(this[a.$content].trim().split(/\\s+/).filter((e=>e.includes(":"))).map((e=>e.split(":",2))))}}class O extends i.XFAObject{constructor(e){super(c,"cache",!0),this.templateCache=null}}class F extends i.Option01{constructor(e){super(c,"change")}}class I extends i.XFAObject{constructor(e){super(c,"common",!0),this.data=null,this.locale=null,this.localeSet=null,this.messaging=null,this.suppressBanner=null,this.template=null,this.validationMessaging=null,this.versionControl=null,this.log=new i.XFAObjectArray}}class T extends i.XFAObject{constructor(e){super(c,"compress"),this.scope=(0,s.getStringOption)(e.scope,["imageOnly","document"])}}class M extends i.Option01{constructor(e){super(c,"compressLogicalStructure")}}class E extends i.Option10{constructor(e){super(c,"compressObjectStream")}}class P extends i.XFAObject{constructor(e){super(c,"compression",!0),this.compressLogicalStructure=null,this.compressObjectStream=null,this.level=null,this.type=null}}class R extends i.XFAObject{constructor(e){super(c,"config",!0),this.acrobat=null,this.present=null,this.trace=null,this.agent=new i.XFAObjectArray}}class N extends i.OptionObject{constructor(e){super(c,"conformance",["A","B"])}}class D extends i.Option01{constructor(e){super(c,"contentCopy")}}class B extends i.IntegerObject{constructor(e){super(c,"copies",1,(e=>e>=1))}}class L extends i.StringObject{constructor(e){super(c,"creator")}}class _ extends i.IntegerObject{constructor(e){super(c,"currentPage",0,(e=>e>=0))}}class j extends i.XFAObject{constructor(e){super(c,"data",!0),this.adjustData=null,this.attributes=null,this.incrementalLoad=null,this.outputXSL=null,this.range=null,this.record=null,this.startNode=null,this.uri=null,this.window=null,this.xsl=null,this.excludeNS=new i.XFAObjectArray,this.transform=new i.XFAObjectArray}}class U extends i.XFAObject{constructor(e){super(c,"debug",!0),this.uri=null}}class $ extends i.ContentObject{constructor(e){super(c,"defaultTypeface"),this.writingScript=(0,s.getStringOption)(e.writingScript,["*","Arabic","Cyrillic","EastEuropeanRoman","Greek","Hebrew","Japanese","Korean","Roman","SimplifiedChinese","Thai","TraditionalChinese","Vietnamese"])}}class X extends i.OptionObject{constructor(e){super(c,"destination",["pdf","pcl","ps","webClient","zpl"])}}class H extends i.Option01{constructor(e){super(c,"documentAssembly")}}class q extends i.XFAObject{constructor(e){super(c,"driver",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class z extends i.OptionObject{constructor(e){super(c,"duplexOption",["simplex","duplexFlipLongEdge","duplexFlipShortEdge"])}}class G extends i.OptionObject{constructor(e){super(c,"dynamicRender",["forbidden","required"])}}class W extends i.Option01{constructor(e){super(c,"embed")}}class V extends i.Option01{constructor(e){super(c,"encrypt")}}class K extends i.XFAObject{constructor(e){super(c,"encryption",!0),this.encrypt=null,this.encryptionLevel=null,this.permissions=null}}class Y extends i.OptionObject{constructor(e){super(c,"encryptionLevel",["40bit","128bit"])}}class J extends i.StringObject{constructor(e){super(c,"enforce")}}class Z extends i.XFAObject{constructor(e){super(c,"equate"),this.force=(0,s.getInteger)({data:e.force,defaultValue:1,validate:e=>0===e}),this.from=e.from||"",this.to=e.to||""}}class Q extends i.XFAObject{constructor(e){super(c,"equateRange"),this.from=e.from||"",this.to=e.to||"",this._unicodeRange=e.unicodeRange||""}get unicodeRange(){const e=[],t=/U\\+([0-9a-fA-F]+)/,r=this._unicodeRange;for(let n of r.split(",").map((e=>e.trim())).filter((e=>!!e)))n=n.split("-",2).map((e=>{const r=e.match(t);return r?parseInt(r[1],16):0})),1===n.length&&n.push(n[0]),e.push(n);return(0,o.shadow)(this,"unicodeRange",e)}}class ee extends i.ContentObject{constructor(e){super(c,"exclude")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>e&&["calculate","close","enter","exit","initialize","ready","validate"].includes(e)))}}class te extends i.StringObject{constructor(e){super(c,"excludeNS")}}class re extends i.OptionObject{constructor(e){super(c,"flipLabel",["usePrinterSetting","on","off"])}}class ne extends i.XFAObject{constructor(e){super(c,"fontInfo",!0),this.embed=null,this.map=null,this.subsetBelow=null,this.alwaysEmbed=new i.XFAObjectArray,this.defaultTypeface=new i.XFAObjectArray,this.neverEmbed=new i.XFAObjectArray}}class ae extends i.Option01{constructor(e){super(c,"formFieldFilling")}}class ie extends i.StringObject{constructor(e){super(c,"groupParent")}}class se extends i.OptionObject{constructor(e){super(c,"ifEmpty",["dataValue","dataGroup","ignore","remove"])}}class oe extends i.StringObject{constructor(e){super(c,"includeXDPContent")}}class ce extends i.OptionObject{constructor(e){super(c,"incrementalLoad",["none","forwardOnly"])}}class le extends i.Option01{constructor(e){super(c,"incrementalMerge")}}class he extends i.Option01{constructor(e){super(c,"interactive")}}class ue extends i.OptionObject{constructor(e){super(c,"jog",["usePrinterSetting","none","pageSet"])}}class de extends i.XFAObject{constructor(e){super(c,"labelPrinter",!0),this.name=(0,s.getStringOption)(e.name,["zpl","dpl","ipl","tcpl"]),this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class fe extends i.OptionObject{constructor(e){super(c,"layout",["paginate","panel"])}}class ge extends i.IntegerObject{constructor(e){super(c,"level",0,(e=>e>0))}}class pe extends i.Option01{constructor(e){super(c,"linearized")}}class me extends i.StringObject{constructor(e){super(c,"locale")}}class be extends i.StringObject{constructor(e){super(c,"localeSet")}}class ye extends i.XFAObject{constructor(e){super(c,"log",!0),this.mode=null,this.threshold=null,this.to=null,this.uri=null}}class we extends i.XFAObject{constructor(e){super(c,"map",!0),this.equate=new i.XFAObjectArray,this.equateRange=new i.XFAObjectArray}}class ve extends i.XFAObject{constructor(e){super(c,"mediumInfo",!0),this.map=null}}class xe extends i.XFAObject{constructor(e){super(c,"message",!0),this.msgId=null,this.severity=null}}class Se extends i.XFAObject{constructor(e){super(c,"messaging",!0),this.message=new i.XFAObjectArray}}class Ae extends i.OptionObject{constructor(e){super(c,"mode",["append","overwrite"])}}class ke extends i.Option01{constructor(e){super(c,"modifyAnnots")}}class Ce extends i.IntegerObject{constructor(e){super(c,"msgId",1,(e=>e>=1))}}class Oe extends i.StringObject{constructor(e){super(c,"nameAttr")}}class Fe extends i.ContentObject{constructor(e){super(c,"neverEmbed")}}class Ie extends i.IntegerObject{constructor(e){super(c,"numberOfCopies",null,(e=>e>=2&&e<=5))}}class Te extends i.XFAObject{constructor(e){super(c,"openAction",!0),this.destination=null}}class Me extends i.XFAObject{constructor(e){super(c,"output",!0),this.to=null,this.type=null,this.uri=null}}class Ee extends i.StringObject{constructor(e){super(c,"outputBin")}}class Pe extends i.XFAObject{constructor(e){super(c,"outputXSL",!0),this.uri=null}}class Re extends i.OptionObject{constructor(e){super(c,"overprint",["none","both","draw","field"])}}class Ne extends i.StringObject{constructor(e){super(c,"packets")}[a.$finalize](){"*"!==this[a.$content]&&(this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>["config","datasets","template","xfdf","xslt"].includes(e))))}}class De extends i.XFAObject{constructor(e){super(c,"pageOffset"),this.x=(0,s.getInteger)({data:e.x,defaultValue:"useXDCSetting",validate:e=>!0}),this.y=(0,s.getInteger)({data:e.y,defaultValue:"useXDCSetting",validate:e=>!0})}}class Be extends i.StringObject{constructor(e){super(c,"pageRange")}[a.$finalize](){const e=this[a.$content].trim().split(/\\s+/).map((e=>parseInt(e,10))),t=[];for(let r=0,n=e.length;r!1))}}class Ue extends i.XFAObject{constructor(e){super(c,"pcl",!0),this.name=e.name||"",this.batchOutput=null,this.fontInfo=null,this.jog=null,this.mediumInfo=null,this.outputBin=null,this.pageOffset=null,this.staple=null,this.xdc=null}}class $e extends i.XFAObject{constructor(e){super(c,"pdf",!0),this.name=e.name||"",this.adobeExtensionLevel=null,this.batchOutput=null,this.compression=null,this.creator=null,this.encryption=null,this.fontInfo=null,this.interactive=null,this.linearized=null,this.openAction=null,this.pdfa=null,this.producer=null,this.renderPolicy=null,this.scriptModel=null,this.silentPrint=null,this.submitFormat=null,this.tagged=null,this.version=null,this.viewerPreferences=null,this.xdc=null}}class Xe extends i.XFAObject{constructor(e){super(c,"pdfa",!0),this.amd=null,this.conformance=null,this.includeXDPContent=null,this.part=null}}class He extends i.XFAObject{constructor(e){super(c,"permissions",!0),this.accessibleContent=null,this.change=null,this.contentCopy=null,this.documentAssembly=null,this.formFieldFilling=null,this.modifyAnnots=null,this.plaintextMetadata=null,this.print=null,this.printHighQuality=null}}class qe extends i.Option01{constructor(e){super(c,"pickTrayByPDFSize")}}class ze extends i.StringObject{constructor(e){super(c,"picture")}}class Ge extends i.Option01{constructor(e){super(c,"plaintextMetadata")}}class We extends i.OptionObject{constructor(e){super(c,"presence",["preserve","dissolve","dissolveStructure","ignore","remove"])}}class Ve extends i.XFAObject{constructor(e){super(c,"present",!0),this.behaviorOverride=null,this.cache=null,this.common=null,this.copies=null,this.destination=null,this.incrementalMerge=null,this.layout=null,this.output=null,this.overprint=null,this.pagination=null,this.paginationOverride=null,this.script=null,this.validate=null,this.xdp=null,this.driver=new i.XFAObjectArray,this.labelPrinter=new i.XFAObjectArray,this.pcl=new i.XFAObjectArray,this.pdf=new i.XFAObjectArray,this.ps=new i.XFAObjectArray,this.submitUrl=new i.XFAObjectArray,this.webClient=new i.XFAObjectArray,this.zpl=new i.XFAObjectArray}}class Ke extends i.Option01{constructor(e){super(c,"print")}}class Ye extends i.Option01{constructor(e){super(c,"printHighQuality")}}class Je extends i.OptionObject{constructor(e){super(c,"printScaling",["appdefault","noScaling"])}}class Ze extends i.StringObject{constructor(e){super(c,"printerName")}}class Qe extends i.StringObject{constructor(e){super(c,"producer")}}class et extends i.XFAObject{constructor(e){super(c,"ps",!0),this.name=e.name||"",this.batchOutput=null,this.fontInfo=null,this.jog=null,this.mediumInfo=null,this.outputBin=null,this.staple=null,this.xdc=null}}class tt extends i.ContentObject{constructor(e){super(c,"range")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s*,\\s*/,2).map((e=>e.split("-").map((e=>parseInt(e.trim(),10))))).filter((e=>e.every((e=>!isNaN(e))))).map((e=>(1===e.length&&e.push(e[0]),e)))}}class rt extends i.ContentObject{constructor(e){super(c,"record")}[a.$finalize](){this[a.$content]=this[a.$content].trim();const e=parseInt(this[a.$content],10);!isNaN(e)&&e>=0&&(this[a.$content]=e)}}class nt extends i.ContentObject{constructor(e){super(c,"relevant")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/)}}class at extends i.ContentObject{constructor(e){super(c,"rename")}[a.$finalize](){this[a.$content]=this[a.$content].trim(),(this[a.$content].toLowerCase().startsWith("xml")||new RegExp("[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*","u").test(this[a.$content]))&&(0,o.warn)("XFA - Rename: invalid XFA name")}}class it extends i.OptionObject{constructor(e){super(c,"renderPolicy",["server","client"])}}class st extends i.OptionObject{constructor(e){super(c,"runScripts",["both","client","none","server"])}}class ot extends i.XFAObject{constructor(e){super(c,"script",!0),this.currentPage=null,this.exclude=null,this.runScripts=null}}class ct extends i.OptionObject{constructor(e){super(c,"scriptModel",["XFA","none"])}}class lt extends i.OptionObject{constructor(e){super(c,"severity",["ignore","error","information","trace","warning"])}}class ht extends i.XFAObject{constructor(e){super(c,"silentPrint",!0),this.addSilentPrint=null,this.printerName=null}}class ut extends i.XFAObject{constructor(e){super(c,"staple"),this.mode=(0,s.getStringOption)(e.mode,["usePrinterSetting","on","off"])}}class dt extends i.StringObject{constructor(e){super(c,"startNode")}}class ft extends i.IntegerObject{constructor(e){super(c,"startPage",0,(e=>!0))}}class gt extends i.OptionObject{constructor(e){super(c,"submitFormat",["html","delegate","fdf","xml","pdf"])}}class pt extends i.StringObject{constructor(e){super(c,"submitUrl")}}class mt extends i.IntegerObject{constructor(e){super(c,"subsetBelow",100,(e=>e>=0&&e<=100))}}class bt extends i.Option01{constructor(e){super(c,"suppressBanner")}}class yt extends i.Option01{constructor(e){super(c,"tagged")}}class wt extends i.XFAObject{constructor(e){super(c,"template",!0),this.base=null,this.relevant=null,this.startPage=null,this.uri=null,this.xsl=null}}class vt extends i.OptionObject{constructor(e){super(c,"threshold",["trace","error","information","warning"])}}class xt extends i.OptionObject{constructor(e){super(c,"to",["null","memory","stderr","stdout","system","uri"])}}class St extends i.XFAObject{constructor(e){super(c,"templateCache"),this.maxEntries=(0,s.getInteger)({data:e.maxEntries,defaultValue:5,validate:e=>e>=0})}}class At extends i.XFAObject{constructor(e){super(c,"trace",!0),this.area=new i.XFAObjectArray}}class kt extends i.XFAObject{constructor(e){super(c,"transform",!0),this.groupParent=null,this.ifEmpty=null,this.nameAttr=null,this.picture=null,this.presence=null,this.rename=null,this.whitespace=null}}class Ct extends i.OptionObject{constructor(e){super(c,"type",["none","ascii85","asciiHex","ccittfax","flate","lzw","runLength","native","xdp","mergedXDP"])}}class Ot extends i.StringObject{constructor(e){super(c,"uri")}}class Ft extends i.OptionObject{constructor(e){super(c,"validate",["preSubmit","prePrint","preExecute","preSave"])}}class It extends i.ContentObject{constructor(e){super(c,"validateApprovalSignatures")}[a.$finalize](){this[a.$content]=this[a.$content].trim().split(/\\s+/).filter((e=>["docReady","postSign"].includes(e)))}}class Tt extends i.OptionObject{constructor(e){super(c,"validationMessaging",["allMessagesIndividually","allMessagesTogether","firstMessageOnly","noMessages"])}}class Mt extends i.OptionObject{constructor(e){super(c,"version",["1.7","1.6","1.5","1.4","1.3","1.2"])}}class Et extends i.XFAObject{constructor(e){super(c,"VersionControl"),this.outputBelow=(0,s.getStringOption)(e.outputBelow,["warn","error","update"]),this.sourceAbove=(0,s.getStringOption)(e.sourceAbove,["warn","error"]),this.sourceBelow=(0,s.getStringOption)(e.sourceBelow,["update","maintain"])}}class Pt extends i.XFAObject{constructor(e){super(c,"viewerPreferences",!0),this.ADBE_JSConsole=null,this.ADBE_JSDebugger=null,this.addViewerPreferences=null,this.duplexOption=null,this.enforce=null,this.numberOfCopies=null,this.pageRange=null,this.pickTrayByPDFSize=null,this.printScaling=null}}class Rt extends i.XFAObject{constructor(e){super(c,"webClient",!0),this.name=e.name?e.name.trim():"",this.fontInfo=null,this.xdc=null}}class Nt extends i.OptionObject{constructor(e){super(c,"whitespace",["preserve","ltrim","normalize","rtrim","trim"])}}class Dt extends i.ContentObject{constructor(e){super(c,"window")}[a.$finalize](){const e=this[a.$content].trim().split(/\\s*,\\s*/,2).map((e=>parseInt(e,10)));e.some((e=>isNaN(e)))?this[a.$content]=[0,0]:(1===e.length&&e.push(e[0]),this[a.$content]=e)}}class Bt extends i.XFAObject{constructor(e){super(c,"xdc",!0),this.uri=new i.XFAObjectArray,this.xsl=new i.XFAObjectArray}}class Lt extends i.XFAObject{constructor(e){super(c,"xdp",!0),this.packets=null}}class _t extends i.XFAObject{constructor(e){super(c,"xsl",!0),this.debug=null,this.uri=null}}class jt extends i.XFAObject{constructor(e){super(c,"zpl",!0),this.name=e.name?e.name.trim():"",this.batchOutput=null,this.flipLabel=null,this.fontInfo=null,this.xdc=null}}class Ut{static[n.$buildXFAObject](e,t){if(Ut.hasOwnProperty(e))return Ut[e](t)}static acrobat(e){return new l(e)}static acrobat7(e){return new h(e)}static ADBE_JSConsole(e){return new u(e)}static ADBE_JSDebugger(e){return new d(e)}static addSilentPrint(e){return new f(e)}static addViewerPreferences(e){return new g(e)}static adjustData(e){return new p(e)}static adobeExtensionLevel(e){return new m(e)}static agent(e){return new b(e)}static alwaysEmbed(e){return new y(e)}static amd(e){return new w(e)}static area(e){return new v(e)}static attributes(e){return new x(e)}static autoSave(e){return new S(e)}static base(e){return new A(e)}static batchOutput(e){return new k(e)}static behaviorOverride(e){return new C(e)}static cache(e){return new O(e)}static change(e){return new F(e)}static common(e){return new I(e)}static compress(e){return new T(e)}static compressLogicalStructure(e){return new M(e)}static compressObjectStream(e){return new E(e)}static compression(e){return new P(e)}static config(e){return new R(e)}static conformance(e){return new N(e)}static contentCopy(e){return new D(e)}static copies(e){return new B(e)}static creator(e){return new L(e)}static currentPage(e){return new _(e)}static data(e){return new j(e)}static debug(e){return new U(e)}static defaultTypeface(e){return new $(e)}static destination(e){return new X(e)}static documentAssembly(e){return new H(e)}static driver(e){return new q(e)}static duplexOption(e){return new z(e)}static dynamicRender(e){return new G(e)}static embed(e){return new W(e)}static encrypt(e){return new V(e)}static encryption(e){return new K(e)}static encryptionLevel(e){return new Y(e)}static enforce(e){return new J(e)}static equate(e){return new Z(e)}static equateRange(e){return new Q(e)}static exclude(e){return new ee(e)}static excludeNS(e){return new te(e)}static flipLabel(e){return new re(e)}static fontInfo(e){return new ne(e)}static formFieldFilling(e){return new ae(e)}static groupParent(e){return new ie(e)}static ifEmpty(e){return new se(e)}static includeXDPContent(e){return new oe(e)}static incrementalLoad(e){return new ce(e)}static incrementalMerge(e){return new le(e)}static interactive(e){return new he(e)}static jog(e){return new ue(e)}static labelPrinter(e){return new de(e)}static layout(e){return new fe(e)}static level(e){return new ge(e)}static linearized(e){return new pe(e)}static locale(e){return new me(e)}static localeSet(e){return new be(e)}static log(e){return new ye(e)}static map(e){return new we(e)}static mediumInfo(e){return new ve(e)}static message(e){return new xe(e)}static messaging(e){return new Se(e)}static mode(e){return new Ae(e)}static modifyAnnots(e){return new ke(e)}static msgId(e){return new Ce(e)}static nameAttr(e){return new Oe(e)}static neverEmbed(e){return new Fe(e)}static numberOfCopies(e){return new Ie(e)}static openAction(e){return new Te(e)}static output(e){return new Me(e)}static outputBin(e){return new Ee(e)}static outputXSL(e){return new Pe(e)}static overprint(e){return new Re(e)}static packets(e){return new Ne(e)}static pageOffset(e){return new De(e)}static pageRange(e){return new Be(e)}static pagination(e){return new Le(e)}static paginationOverride(e){return new _e(e)}static part(e){return new je(e)}static pcl(e){return new Ue(e)}static pdf(e){return new $e(e)}static pdfa(e){return new Xe(e)}static permissions(e){return new He(e)}static pickTrayByPDFSize(e){return new qe(e)}static picture(e){return new ze(e)}static plaintextMetadata(e){return new Ge(e)}static presence(e){return new We(e)}static present(e){return new Ve(e)}static print(e){return new Ke(e)}static printHighQuality(e){return new Ye(e)}static printScaling(e){return new Je(e)}static printerName(e){return new Ze(e)}static producer(e){return new Qe(e)}static ps(e){return new et(e)}static range(e){return new tt(e)}static record(e){return new rt(e)}static relevant(e){return new nt(e)}static rename(e){return new at(e)}static renderPolicy(e){return new it(e)}static runScripts(e){return new st(e)}static script(e){return new ot(e)}static scriptModel(e){return new ct(e)}static severity(e){return new lt(e)}static silentPrint(e){return new ht(e)}static staple(e){return new ut(e)}static startNode(e){return new dt(e)}static startPage(e){return new ft(e)}static submitFormat(e){return new gt(e)}static submitUrl(e){return new pt(e)}static subsetBelow(e){return new mt(e)}static suppressBanner(e){return new bt(e)}static tagged(e){return new yt(e)}static template(e){return new wt(e)}static templateCache(e){return new St(e)}static threshold(e){return new vt(e)}static to(e){return new xt(e)}static trace(e){return new At(e)}static transform(e){return new kt(e)}static type(e){return new Ct(e)}static uri(e){return new Ot(e)}static validate(e){return new Ft(e)}static validateApprovalSignatures(e){return new It(e)}static validationMessaging(e){return new Tt(e)}static version(e){return new Mt(e)}static versionControl(e){return new Et(e)}static viewerPreferences(e){return new Pt(e)}static webClient(e){return new Rt(e)}static whitespace(e){return new Nt(e)}static window(e){return new Dt(e)}static xdc(e){return new Bt(e)}static xdp(e){return new Lt(e)}static xsl(e){return new _t(e)}static zpl(e){return new jt(e)}}t.ConfigNamespace=Ut},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionSetNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.connectionSet.id;class s extends a.XFAObject{constructor(e){super(i,"connectionSet",!0),this.wsdlConnection=new a.XFAObjectArray,this.xmlConnection=new a.XFAObjectArray,this.xsdConnection=new a.XFAObjectArray}}class o extends a.XFAObject{constructor(e){super(i,"effectiveInputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class c extends a.XFAObject{constructor(e){super(i,"effectiveOutputPolicy"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class l extends a.StringObject{constructor(e){super(i,"operation"),this.id=e.id||"",this.input=e.input||"",this.name=e.name||"",this.output=e.output||"",this.use=e.use||"",this.usehref=e.usehref||""}}class h extends a.StringObject{constructor(e){super(i,"rootElement"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class u extends a.StringObject{constructor(e){super(i,"soapAction"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class d extends a.StringObject{constructor(e){super(i,"soapAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class f extends a.StringObject{constructor(e){super(i,"uri"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class g extends a.StringObject{constructor(e){super(i,"wsdlAddress"),this.id=e.id||"",this.name=e.name||"",this.use=e.use||"",this.usehref=e.usehref||""}}class p extends a.XFAObject{constructor(e){super(i,"wsdlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.effectiveInputPolicy=null,this.effectiveOutputPolicy=null,this.operation=null,this.soapAction=null,this.soapAddress=null,this.wsdlAddress=null}}class m extends a.XFAObject{constructor(e){super(i,"xmlConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.uri=null}}class b extends a.XFAObject{constructor(e){super(i,"xsdConnection",!0),this.dataDescription=e.dataDescription||"",this.name=e.name||"",this.rootElement=null,this.uri=null}}class y{static[n.$buildXFAObject](e,t){if(y.hasOwnProperty(e))return y[e](t)}static connectionSet(e){return new s(e)}static effectiveInputPolicy(e){return new o(e)}static effectiveOutputPolicy(e){return new c(e)}static operation(e){return new l(e)}static rootElement(e){return new h(e)}static soapAction(e){return new u(e)}static soapAddress(e){return new d(e)}static uri(e){return new f(e)}static wsdlAddress(e){return new g(e)}static wsdlConnection(e){return new p(e)}static xmlConnection(e){return new m(e)}static xsdConnection(e){return new b(e)}}t.ConnectionSetNamespace=y},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetsNamespace=void 0;var n=r(228),a=r(234),i=r(240);const s=a.NamespaceIds.datasets.id;class o extends i.XmlObject{constructor(e){super(s,"data",e)}[n.$isNsAgnostic](){return!0}}class c extends i.XFAObject{constructor(e){super(s,"datasets",!0),this.data=null,this.Signature=null}[n.$onChild](e){const t=e[n.$nodeName];("data"===t&&e[n.$namespaceId]===s||"Signature"===t&&e[n.$namespaceId]===a.NamespaceIds.signature.id)&&(this[t]=e),this[n.$appendChild](e)}}class l{static[a.$buildXFAObject](e,t){if(l.hasOwnProperty(e))return l[e](t)}static datasets(e){return new c(e)}static data(e){return new o(e)}}t.DatasetsNamespace=l},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocaleSetNamespace=void 0;var n=r(234),a=r(240),i=r(237);const s=n.NamespaceIds.localeSet.id;class o extends a.XFAObject{constructor(e){super(s,"calendarSymbols",!0),this.name="gregorian",this.dayNames=new a.XFAObjectArray(2),this.eraNames=null,this.meridiemNames=null,this.monthNames=new a.XFAObjectArray(2)}}class c extends a.StringObject{constructor(e){super(s,"currencySymbol"),this.name=(0,i.getStringOption)(e.name,["symbol","isoname","decimal"])}}class l extends a.XFAObject{constructor(e){super(s,"currencySymbols",!0),this.currencySymbol=new a.XFAObjectArray(3)}}class h extends a.StringObject{constructor(e){super(s,"datePattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class u extends a.XFAObject{constructor(e){super(s,"datePatterns",!0),this.datePattern=new a.XFAObjectArray(4)}}class d extends a.ContentObject{constructor(e){super(s,"dateTimeSymbols")}}class f extends a.StringObject{constructor(e){super(s,"day")}}class g extends a.XFAObject{constructor(e){super(s,"dayNames",!0),this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e}),this.day=new a.XFAObjectArray(7)}}class p extends a.StringObject{constructor(e){super(s,"era")}}class m extends a.XFAObject{constructor(e){super(s,"eraNames",!0),this.era=new a.XFAObjectArray(2)}}class b extends a.XFAObject{constructor(e){super(s,"locale",!0),this.desc=e.desc||"",this.name="isoname",this.calendarSymbols=null,this.currencySymbols=null,this.datePatterns=null,this.dateTimeSymbols=null,this.numberPatterns=null,this.numberSymbols=null,this.timePatterns=null,this.typeFaces=null}}class y extends a.XFAObject{constructor(e){super(s,"localeSet",!0),this.locale=new a.XFAObjectArray}}class w extends a.StringObject{constructor(e){super(s,"meridiem")}}class v extends a.XFAObject{constructor(e){super(s,"meridiemNames",!0),this.meridiem=new a.XFAObjectArray(2)}}class x extends a.StringObject{constructor(e){super(s,"month")}}class S extends a.XFAObject{constructor(e){super(s,"monthNames",!0),this.abbr=(0,i.getInteger)({data:e.abbr,defaultValue:0,validate:e=>1===e}),this.month=new a.XFAObjectArray(12)}}class A extends a.StringObject{constructor(e){super(s,"numberPattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class k extends a.XFAObject{constructor(e){super(s,"numberPatterns",!0),this.numberPattern=new a.XFAObjectArray(4)}}class C extends a.StringObject{constructor(e){super(s,"numberSymbol"),this.name=(0,i.getStringOption)(e.name,["decimal","grouping","percent","minus","zero"])}}class O extends a.XFAObject{constructor(e){super(s,"numberSymbols",!0),this.numberSymbol=new a.XFAObjectArray(5)}}class F extends a.StringObject{constructor(e){super(s,"timePattern"),this.name=(0,i.getStringOption)(e.name,["full","long","med","short"])}}class I extends a.XFAObject{constructor(e){super(s,"timePatterns",!0),this.timePattern=new a.XFAObjectArray(4)}}class T extends a.XFAObject{constructor(e){super(s,"typeFace",!0),this.name=""|e.name}}class M extends a.XFAObject{constructor(e){super(s,"typeFaces",!0),this.typeFace=new a.XFAObjectArray}}class E{static[n.$buildXFAObject](e,t){if(E.hasOwnProperty(e))return E[e](t)}static calendarSymbols(e){return new o(e)}static currencySymbol(e){return new c(e)}static currencySymbols(e){return new l(e)}static datePattern(e){return new h(e)}static datePatterns(e){return new u(e)}static dateTimeSymbols(e){return new d(e)}static day(e){return new f(e)}static dayNames(e){return new g(e)}static era(e){return new p(e)}static eraNames(e){return new m(e)}static locale(e){return new b(e)}static localeSet(e){return new y(e)}static meridiem(e){return new w(e)}static meridiemNames(e){return new v(e)}static month(e){return new x(e)}static monthNames(e){return new S(e)}static numberPattern(e){return new A(e)}static numberPatterns(e){return new k(e)}static numberSymbol(e){return new C(e)}static numberSymbols(e){return new O(e)}static timePattern(e){return new F(e)}static timePatterns(e){return new I(e)}static typeFace(e){return new T(e)}static typeFaces(e){return new M(e)}}t.LocaleSetNamespace=E},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SignatureNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.signature.id;class s extends a.XFAObject{constructor(e){super(i,"signature",!0)}}class o{static[n.$buildXFAObject](e,t){if(o.hasOwnProperty(e))return o[e](t)}static signature(e){return new s(e)}}t.SignatureNamespace=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StylesheetNamespace=void 0;var n=r(234),a=r(240);const i=n.NamespaceIds.stylesheet.id;class s extends a.XFAObject{constructor(e){super(i,"stylesheet",!0)}}class o{static[n.$buildXFAObject](e,t){if(o.hasOwnProperty(e))return o[e](t)}static stylesheet(e){return new s(e)}}t.StylesheetNamespace=o},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XdpNamespace=void 0;var n=r(234),a=r(228),i=r(240);const s=n.NamespaceIds.xdp.id;class o extends i.XFAObject{constructor(e){super(s,"xdp",!0),this.uuid=e.uuid||"",this.timeStamp=e.timeStamp||"",this.config=null,this.connectionSet=null,this.datasets=null,this.localeSet=null,this.stylesheet=new i.XFAObjectArray,this.template=null}[a.$onChildCheck](e){const t=n.NamespaceIds[e[a.$nodeName]];return t&&e[a.$namespaceId]===t.id}}class c{static[n.$buildXFAObject](e,t){if(c.hasOwnProperty(e))return c[e](t)}static xdp(e){return new o(e)}}t.XdpNamespace=c},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.XhtmlNamespace=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137);var n=r(228),a=r(234),i=r(236),s=r(237),o=r(240);const c=a.NamespaceIds.xhtml.id,l=Symbol(),h=new Set(["color","font","font-family","font-size","font-stretch","font-style","font-weight","margin","margin-bottom","margin-left","margin-right","margin-top","letter-spacing","line-height","orphans","page-break-after","page-break-before","page-break-inside","tab-interval","tab-stop","text-align","text-decoration","text-indent","vertical-align","widows","kerning-mode","xfa-font-horizontal-scale","xfa-font-vertical-scale","xfa-spacerun","xfa-tab-stops"]),u=new Map([["page-break-after","breakAfter"],["page-break-before","breakBefore"],["page-break-inside","breakInside"],["kerning-mode",e=>"none"===e?"none":"normal"],["xfa-font-horizontal-scale",e=>"scaleX(".concat(Math.max(0,Math.min(parseInt(e)/100)).toFixed(2),")")],["xfa-font-vertical-scale",e=>"scaleY(".concat(Math.max(0,Math.min(parseInt(e)/100)).toFixed(2),")")],["xfa-spacerun",""],["xfa-tab-stops",""],["font-size",(e,t)=>(e=t.fontSize=(0,s.getMeasurement)(e),(0,i.measureToString)(.99*e))],["letter-spacing",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["line-height",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-bottom",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-left",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-right",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["margin-top",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["text-indent",e=>(0,i.measureToString)((0,s.getMeasurement)(e))],["font-family",e=>e],["vertical-align",e=>(0,i.measureToString)((0,s.getMeasurement)(e))]]),d=/\\s+/g,f=/[\\r\\n]+/g,g=/\\r\\n?/g;function p(e,t,r){const a=Object.create(null);if(!e)return a;const o=Object.create(null);for(const[t,r]of e.split(";").map((e=>e.split(":",2)))){const e=u.get(t);if(""===e)continue;let n=r;e&&(n="string"==typeof e?e:e(r,o)),t.endsWith("scale")?a.transform=a.transform?"".concat(a[t]," ").concat(n):n:a[t.replaceAll(/-([a-zA-Z])/g,((e,t)=>t.toUpperCase()))]=n}if(a.fontFamily&&(0,i.setFontFamily)({typeface:a.fontFamily,weight:a.fontWeight||"normal",posture:a.fontStyle||"normal",size:o.fontSize||0},t,t[n.$globalData].fontFinder,a),r&&a.verticalAlign&&"0px"!==a.verticalAlign&&a.fontSize){const e=.583,t=.333,r=(0,s.getMeasurement)(a.fontSize);a.fontSize=(0,i.measureToString)(r*e),a.verticalAlign=(0,i.measureToString)(Math.sign((0,s.getMeasurement)(a.verticalAlign))*r*t)}return r&&a.fontSize&&(a.fontSize="calc(".concat(a.fontSize," * var(--scale-factor))")),(0,i.fixTextIndent)(a),a}const m=new Set(["body","html"]);class b extends o.XmlObject{constructor(e,t){super(c,t),this[l]=!1,this.style=e.style||""}[n.$clean](e){super[n.$clean](e),this.style=function(e){return e.style?e.style.trim().split(/\\s*;\\s*/).filter((e=>!!e)).map((e=>e.split(/\\s*:\\s*/,2))).filter((t=>{let[r,a]=t;return"font-family"===r&&e[n.$globalData].usedTypefaces.add(a),h.has(r)})).map((e=>e.join(":"))).join(";"):""}(this)}[n.$acceptWhitespace](){return!m.has(this[n.$nodeName])}[n.$onText](e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?this[l]=!0:(e=e.replaceAll(f,""),this.style.includes("xfa-spacerun:yes")||(e=e.replaceAll(d," "))),e&&(this[n.$content]+=e)}[n.$pushGlyphs](e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const r=Object.create(null),a={top:NaN,bottom:NaN,left:NaN,right:NaN};let i=null;for(const[e,t]of this.style.split(";").map((e=>e.split(":",2))))switch(e){case"font-family":r.typeface=(0,s.stripQuotes)(t);break;case"font-size":r.size=(0,s.getMeasurement)(t);break;case"font-weight":r.weight=t;break;case"font-style":r.posture=t;break;case"letter-spacing":r.letterSpacing=(0,s.getMeasurement)(t);break;case"margin":const e=t.split(/ \\t/).map((e=>(0,s.getMeasurement)(e)));switch(e.length){case 1:a.top=a.bottom=a.left=a.right=e[0];break;case 2:a.top=a.bottom=e[0],a.left=a.right=e[1];break;case 3:a.top=e[0],a.bottom=e[2],a.left=a.right=e[1];break;case 4:a.top=e[0],a.left=e[1],a.bottom=e[2],a.right=e[3]}break;case"margin-top":a.top=(0,s.getMeasurement)(t);break;case"margin-bottom":a.bottom=(0,s.getMeasurement)(t);break;case"margin-left":a.left=(0,s.getMeasurement)(t);break;case"margin-right":a.right=(0,s.getMeasurement)(t);break;case"line-height":i=(0,s.getMeasurement)(t)}if(e.pushData(r,a,i),this[n.$content])e.addString(this[n.$content]);else for(const t of this[n.$getChildren]())"#text"!==t[n.$nodeName]?t[n.$pushGlyphs](e):e.addString(t[n.$content]);t&&e.popFont()}[n.$toHTML](e){const t=[];if(this[n.$extra]={children:t},this[n.$childrenToHTML]({}),0===t.length&&!this[n.$content])return s.HTMLResult.EMPTY;let r;return r=this[l]?this[n.$content]?this[n.$content].replaceAll(g,"\\n"):void 0:this[n.$content]||void 0,s.HTMLResult.success({name:this[n.$nodeName],attributes:{href:this.href,style:p(this.style,this,this[l])},children:t,value:r})}}class y extends b{constructor(e){super(e,"a"),this.href=(0,i.fixURL)(e.href)||""}}class w extends b{constructor(e){super(e,"b")}[n.$pushGlyphs](e){e.pushFont({weight:"bold"}),super[n.$pushGlyphs](e),e.popFont()}}class v extends b{constructor(e){super(e,"body")}[n.$toHTML](e){const t=super[n.$toHTML](e),{html:r}=t;return r?(r.name="div",r.attributes.class=["xfaRich"],t):s.HTMLResult.EMPTY}}class x extends b{constructor(e){super(e,"br")}[n.$text](){return"\\n"}[n.$pushGlyphs](e){e.addString("\\n")}[n.$toHTML](e){return s.HTMLResult.success({name:"br"})}}class S extends b{constructor(e){super(e,"html")}[n.$toHTML](e){const t=[];if(this[n.$extra]={children:t},this[n.$childrenToHTML]({}),0===t.length)return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},value:this[n.$content]||""});if(1===t.length){var r;const e=t[0];if(null!==(r=e.attributes)&&void 0!==r&&r.class.includes("xfaRich"))return s.HTMLResult.success(e)}return s.HTMLResult.success({name:"div",attributes:{class:["xfaRich"],style:{}},children:t})}}class A extends b{constructor(e){super(e,"i")}[n.$pushGlyphs](e){e.pushFont({posture:"italic"}),super[n.$pushGlyphs](e),e.popFont()}}class k extends b{constructor(e){super(e,"li")}}class C extends b{constructor(e){super(e,"ol")}}class O extends b{constructor(e){super(e,"p")}[n.$pushGlyphs](e){super[n.$pushGlyphs](e,!1),e.addString("\\n"),e.addPara(),e.popFont()}[n.$text](){return this[n.$getParent]()[n.$getChildren]().at(-1)===this?super[n.$text]():super[n.$text]()+"\\n"}}class F extends b{constructor(e){super(e,"span")}}class I extends b{constructor(e){super(e,"sub")}}class T extends b{constructor(e){super(e,"sup")}}class M extends b{constructor(e){super(e,"ul")}}class E{static[a.$buildXFAObject](e,t){if(E.hasOwnProperty(e))return E[e](t)}static a(e){return new y(e)}static b(e){return new w(e)}static body(e){return new v(e)}static br(e){return new x(e)}static html(e){return new S(e)}static i(e){return new A(e)}static li(e){return new k(e)}static ol(e){return new C(e)}static p(e){return new O(e)}static span(e){return new F(e)}static sub(e){return new I(e)}static sup(e){return new T(e)}static ul(e){return new M(e)}}t.XhtmlNamespace=E},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownNamespace=void 0;var n=r(234),a=r(240);class i{constructor(e){this.namespaceId=e}[n.$buildXFAObject](e,t){return new a.XmlObject(this.namespaceId,e,t)}}t.UnknownNamespace=i},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DatasetReader=void 0,r(2);var n=r(144),a=r(149),i=r(217);function s(e){try{return(0,n.stringToUTF8String)(e)}catch(t){return(0,n.warn)('UTF-8 decoding failed: "'.concat(t,'".')),e}}class o extends i.SimpleXMLParser{constructor(e){super(e),this.node=null}onEndElement(e){const t=super.onEndElement(e);if(t&&"xfa:datasets"===e)throw this.node=t,new Error("Aborting DatasetXMLParser.")}}t.DatasetReader=class{constructor(e){if(e.datasets)this.node=new i.SimpleXMLParser({hasAttributes:!0}).parseFromString(e.datasets).documentElement;else{const t=new o({hasAttributes:!0});try{t.parseFromString(e["xdp:xdp"])}catch(e){}this.node=t.node}}getValue(e){if(!this.node||!e)return"";const t=this.node.searchNode((0,a.parseXFAPath)(e),0);if(!t)return"";const r=t.firstChild;return"value"===(null==r?void 0:r.nodeName)?t.children.map((e=>s(e.textContent))):s(t.textContent)}}},(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.XRef=void 0,r(116),r(126),r(128),r(131),r(133),r(135),r(137),r(84),r(93),r(94),r(97),r(99),r(101),r(105),r(108),r(115),r(139),r(2);var a=r(144),i=r(150),s=r(166),o=r(149),l=r(151),d=r(218);t.XRef=(n=new WeakMap,class{constructor(e,t){c(this,n,{writable:!0,value:null}),this.stream=e,this.pdfManager=t,this.entries=[],this._xrefStms=new Set,this._cacheMap=new Map,this._pendingRefs=new i.RefSet,this._newPersistentRefNum=null,this._newTemporaryRefNum=null}getNewPersistentRef(e){null===this._newPersistentRefNum&&(this._newPersistentRefNum=this.entries.length||1);const t=this._newPersistentRefNum++;return this._cacheMap.set(t,e),i.Ref.get(t,0)}getNewTemporaryRef(){return null===this._newTemporaryRefNum&&(this._newTemporaryRefNum=this.entries.length||1),i.Ref.get(this._newTemporaryRefNum++,0)}resetNewTemporaryRef(){this._newTemporaryRefNum=null}setStartXRef(e){this.startXRefQueue=[e]}parse(){let e,t,r,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];n?((0,a.warn)("Indexing all PDF objects"),e=this.indexObjects()):e=this.readXRef(),e.assignXref(this),this.trailer=e;try{t=e.get("Encrypt")}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Encrypt" reference: "'.concat(e,'".'))}if(t instanceof i.Dict){const r=e.get("ID"),n=null!=r&&r.length?r[0]:"";t.suppressEncryption=!0,this.encrypt=new d.CipherTransformFactory(t,n,this.pdfManager.password)}try{r=e.get("Root")}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Root" reference: "'.concat(e,'".'))}if(r instanceof i.Dict)try{if(r.get("Pages")instanceof i.Dict)return void(this.root=r)}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.warn)('XRef.parse - Invalid "Pages" reference: "'.concat(e,'".'))}if(!n)throw new o.XRefParseException;throw new a.InvalidPDFException("Invalid Root reference.")}processXRefTable(e){"tableState"in this||(this.tableState={entryNum:0,streamPos:e.lexer.stream.pos,parserBuf1:e.buf1,parserBuf2:e.buf2});const t=this.readXRefTable(e);if(!(0,i.isCmd)(t,"trailer"))throw new a.FormatError("Invalid XRef table: could not find trailer dictionary");let r=e.getObj();if(r instanceof i.Dict||!r.dict||(r=r.dict),!(r instanceof i.Dict))throw new a.FormatError("Invalid XRef table: could not parse trailer dictionary");return delete this.tableState,r}readXRefTable(e){const t=e.lexer.stream,r=this.tableState;let n;for(t.pos=r.streamPos,e.buf1=r.parserBuf1,e.buf2=r.parserBuf2;;){if(!("firstEntryNum"in r)||!("entryCount"in r)){if((0,i.isCmd)(n=e.getObj(),"trailer"))break;r.firstEntryNum=n,r.entryCount=e.getObj()}let s=r.firstEntryNum;const o=r.entryCount;if(!Number.isInteger(s)||!Number.isInteger(o))throw new a.FormatError("Invalid XRef table: wrong types in subsection header");for(let n=r.entryNum;n0;){const[o,c]=s;if(!Number.isInteger(o)||!Number.isInteger(c))throw new a.FormatError("Invalid XRef range fields: ".concat(o,", ").concat(c));if(!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i))throw new a.FormatError("Invalid XRef entry fields length: ".concat(o,", ").concat(c));for(let s=t.entryNum;s=e.length);)r+=String.fromCharCode(n),n=e[t];return r}function t(e,t,r){const n=r.length,a=e.length;let i=0;for(;t=n)break;t++,i++}return i}const r=/\\b(endobj|\\d+\\s+\\d+\\s+obj|xref|trailer\\s*<<)\\b/g,n=/\\b(startxref|\\d+\\s+\\d+\\s+obj)\\b/g,c=/^(\\d+)\\s+(\\d+)\\s+obj\\b/,l=new Uint8Array([116,114,97,105,108,101,114]),h=new Uint8Array([115,116,97,114,116,120,114,101,102]),u=new Uint8Array([47,88,82,101,102]);this.entries.length=0,this._cacheMap.clear();const d=this.stream;d.pos=0;const f=d.getBytes(),g=(0,a.bytesToString)(f),p=f.length;let m=d.start;const b=[],y=[];for(;m=p)break;i=f[m]}while(10!==i&&13!==i);continue}const w=e(f,m);let v;if(w.startsWith("xref")&&(4===w.length||/\\s/.test(w[4])))m+=t(f,m,l),b.push(m),m+=t(f,m,h);else if(v=c.exec(w)){const e=0|v[1],n=0|v[2],i=m+w.length;let c,l=!1;if(this.entries[e]){if(this.entries[e].gen===n)try{new s.Parser({lexer:new s.Lexer(d.makeSubStream(i))}).getObj(),l=!0}catch(r){r instanceof o.ParserEOFException?(0,a.warn)("indexObjects -- checking object (".concat(w,'): "').concat(r,'".')):l=!0}}else l=!0;l&&(this.entries[e]={offset:m-d.start,gen:n,uncompressed:!0}),r.lastIndex=i;const h=r.exec(g);h?(c=r.lastIndex+1-m,"endobj"!==h[1]&&((0,a.warn)('indexObjects: Found "'.concat(h[1],'" inside of another "obj", caused by missing "endobj" -- trying to recover.')),c-=h[1].length+1)):c=p-m;const b=f.subarray(m,m+c),x=t(b,0,u);x0&&void 0!==arguments[0]&&arguments[0];const t=this.stream,r=new Set;for(;this.startXRefQueue.length;){try{const e=this.startXRefQueue[0];if(r.has(e)){(0,a.warn)("readXRef - skipping XRef table since it was already parsed."),this.startXRefQueue.shift();continue}r.add(e),t.pos=e+t.start;const o=new s.Parser({lexer:new s.Lexer(t),xref:this,allowStreams:!0});let d,f=o.getObj();if((0,i.isCmd)(f,"xref")){var c;d=this.processXRefTable(o),this.topDict||(this.topDict=d),f=d.get("XRefStm"),Number.isInteger(f)&&!this._xrefStms.has(f)&&(this._xrefStms.add(f),this.startXRefQueue.push(f),null!==(c=h(this,n))&&void 0!==c||u(this,n,f))}else{if(!Number.isInteger(f))throw new a.FormatError("Invalid XRef stream header");if(!(Number.isInteger(o.getObj())&&(0,i.isCmd)(o.getObj(),"obj")&&(f=o.getObj())instanceof l.BaseStream))throw new a.FormatError("Invalid XRef stream");if(d=this.processXRefStream(f),this.topDict||(this.topDict=d),!d)throw new a.FormatError("Failed to read XRef stream")}f=d.get("Prev"),Number.isInteger(f)?this.startXRefQueue.push(f):f instanceof i.Ref&&this.startXRefQueue.push(f.num)}catch(e){if(e instanceof o.MissingDataException)throw e;(0,a.info)("(while reading XRef): "+e)}this.startXRefQueue.shift()}if(this.topDict)return this.topDict;if(!e)throw new o.XRefParseException}get lastXRefStreamPos(){var e;return null!==(e=h(this,n))&&void 0!==e?e:this._xrefStms.size>0?Math.max(...this._xrefStms):null}getEntry(e){const t=this.entries[e];return t&&!t.free&&t.offset?t:null}fetchIfRef(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e instanceof i.Ref?this.fetch(e,t):e}fetch(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!(e instanceof i.Ref))throw new Error("ref object is not a reference");const r=e.num,n=this._cacheMap.get(r);if(void 0!==n)return n instanceof i.Dict&&!n.objId&&(n.objId=e.toString()),n;let s=this.getEntry(r);if(null===s)return this._cacheMap.set(r,s),s;if(this._pendingRefs.has(e))return this._pendingRefs.remove(e),(0,a.warn)("Ignoring circular reference: ".concat(e,".")),i.CIRCULAR_REF;this._pendingRefs.put(e);try{s=s.uncompressed?this.fetchUncompressed(e,s,t):this.fetchCompressed(e,s,t),this._pendingRefs.remove(e)}catch(t){throw this._pendingRefs.remove(e),t}return s instanceof i.Dict?s.objId=e.toString():s instanceof l.BaseStream&&(s.dict.objId=e.toString()),s}fetchUncompressed(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=e.gen;let c=e.num;if(t.gen!==n){const s="Inconsistent generation in XRef: ".concat(e);if(this._generationFallback&&t.gen{var n,a,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MessageHandler=void 0,r(2);var c=r(144);function l(e){switch(e instanceof Error||"object"==typeof e&&null!==e||(0,c.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),e.name){case"AbortException":return new c.AbortException(e.message);case"MissingPDFException":return new c.MissingPDFException(e.message);case"PasswordException":return new c.PasswordException(e.message,e.code);case"UnexpectedResponseException":return new c.UnexpectedResponseException(e.message,e.status);case"UnknownErrorException":return new c.UnknownErrorException(e.message,e.details);default:return new c.UnknownErrorException(e.message,e.toString())}}function h(e){const t=e.streamId,r=this.sourceName,n=e.sourceName,a=this.comObj,i=this,s=this.actionHandler[e.action],o={enqueue(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,s=arguments.length>2?arguments[2]:void 0;if(this.isCancelled)return;const o=this.desiredSize;this.desiredSize-=i,o>0&&this.desiredSize<=0&&(this.sinkCapability=new c.PromiseCapability,this.ready=this.sinkCapability.promise),a.postMessage({sourceName:r,targetName:n,stream:4,streamId:t,chunk:e},s)},close(){this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:n,stream:3,streamId:t}),delete i.streamSinks[t])},error(e){(0,c.assert)(e instanceof Error,"error must have a valid reason"),this.isCancelled||(this.isCancelled=!0,a.postMessage({sourceName:r,targetName:n,stream:5,streamId:t,reason:l(e)}))},sinkCapability:new c.PromiseCapability,onPull:null,onCancel:null,isCancelled:!1,desiredSize:e.desiredSize,ready:null};o.sinkCapability.resolve(),o.ready=o.sinkCapability.promise,this.streamSinks[t]=o,new Promise((function(t){t(s(e.data,o))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:8,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:8,streamId:t,reason:l(e)})}))}function u(e){const t=e.streamId,r=this.sourceName,n=e.sourceName,a=this.comObj,s=this.streamControllers[t],h=this.streamSinks[t];switch(e.stream){case 8:e.success?s.startCall.resolve():s.startCall.reject(l(e.reason));break;case 7:e.success?s.pullCall.resolve():s.pullCall.reject(l(e.reason));break;case 6:if(!h){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,success:!0});break}h.desiredSize<=0&&e.desiredSize>0&&h.sinkCapability.resolve(),h.desiredSize=e.desiredSize,new Promise((function(e){var t;e(null===(t=h.onPull)||void 0===t?void 0:t.call(h))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:7,streamId:t,reason:l(e)})}));break;case 4:if((0,c.assert)(s,"enqueue should have stream controller"),s.isClosed)break;s.controller.enqueue(e.chunk);break;case 3:if((0,c.assert)(s,"close should have stream controller"),s.isClosed)break;s.isClosed=!0,s.controller.close(),o(this,i,d).call(this,s,t);break;case 5:(0,c.assert)(s,"error should have stream controller"),s.controller.error(l(e.reason)),o(this,i,d).call(this,s,t);break;case 2:e.success?s.cancelCall.resolve():s.cancelCall.reject(l(e.reason)),o(this,i,d).call(this,s,t);break;case 1:if(!h)break;new Promise((function(t){var r;t(null===(r=h.onCancel)||void 0===r?void 0:r.call(h,l(e.reason)))})).then((function(){a.postMessage({sourceName:r,targetName:n,stream:2,streamId:t,success:!0})}),(function(e){a.postMessage({sourceName:r,targetName:n,stream:2,streamId:t,reason:l(e)})})),h.sinkCapability.reject(l(e.reason)),h.isCancelled=!0,delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}}async function d(e,t){var r,n,a;await Promise.allSettled([null===(r=e.startCall)||void 0===r?void 0:r.promise,null===(n=e.pullCall)||void 0===n?void 0:n.promise,null===(a=e.cancelCall)||void 0===a?void 0:a.promise]),delete this.streamControllers[t]}t.MessageHandler=(n=new WeakSet,a=new WeakSet,i=new WeakSet,class{constructor(e,t,r){s(this,i),s(this,a),s(this,n),this.sourceName=e,this.targetName=t,this.comObj=r,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=e=>{const t=e.data;if(t.targetName!==this.sourceName)return;if(t.stream)return void o(this,a,u).call(this,t);if(t.callback){const e=t.callbackId,r=this.callbackCapabilities[e];if(!r)throw new Error("Cannot resolve callback ".concat(e));if(delete this.callbackCapabilities[e],1===t.callback)r.resolve(t.data);else{if(2!==t.callback)throw new Error("Unexpected callback case");r.reject(l(t.reason))}return}const i=this.actionHandler[t.action];if(!i)throw new Error("Unknown action from worker: ".concat(t.action));if(t.callbackId){const e=this.sourceName,n=t.sourceName;new Promise((function(e){e(i(t.data))})).then((function(a){r.postMessage({sourceName:e,targetName:n,callback:1,callbackId:t.callbackId,data:a})}),(function(a){r.postMessage({sourceName:e,targetName:n,callback:2,callbackId:t.callbackId,reason:l(a)})}))}else t.streamId?o(this,n,h).call(this,t):i(t.data)},r.addEventListener("message",this._onComObjOnMessage)}on(e,t){const r=this.actionHandler;if(r[e])throw new Error('There is already an actionName called "'.concat(e,'"'));r[e]=t}send(e,t,r){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,data:t},r)}sendWithPromise(e,t,r){const n=this.callbackId++,a=new c.PromiseCapability;this.callbackCapabilities[n]=a;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:e,callbackId:n,data:t},r)}catch(e){a.reject(e)}return a.promise}sendWithStream(e,t,r,n){const a=this.streamId++,i=this.sourceName,s=this.targetName,o=this.comObj;return new ReadableStream({start:r=>{const l=new c.PromiseCapability;return this.streamControllers[a]={controller:r,startCall:l,pullCall:null,cancelCall:null,isClosed:!1},o.postMessage({sourceName:i,targetName:s,action:e,streamId:a,data:t,desiredSize:r.desiredSize},n),l.promise},pull:e=>{const t=new c.PromiseCapability;return this.streamControllers[a].pullCall=t,o.postMessage({sourceName:i,targetName:s,stream:6,streamId:a,desiredSize:e.desiredSize}),t.promise},cancel:e=>{(0,c.assert)(e instanceof Error,"cancel must have a valid reason");const t=new c.PromiseCapability;return this.streamControllers[a].cancelCall=t,this.streamControllers[a].isClosed=!0,o.postMessage({sourceName:i,targetName:s,stream:1,streamId:a,reason:l(e)}),t.promise}},r)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}})},(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PDFWorkerStream=void 0,r(139);var n=r(144);t.PDFWorkerStream=class{constructor(e){this._msgHandler=e,this._contentLength=null,this._fullRequestReader=null,this._rangeRequestReaders=[]}getFullReader(){return(0,n.assert)(!this._fullRequestReader,"PDFWorkerStream.getFullReader can only be called once."),this._fullRequestReader=new a(this._msgHandler),this._fullRequestReader}getRangeReader(e,t){const r=new i(e,t,this._msgHandler);return this._rangeRequestReaders.push(r),r}cancelAllRequests(e){this._fullRequestReader&&this._fullRequestReader.cancel(e);for(const t of this._rangeRequestReaders.slice(0))t.cancel(e)}};class a{constructor(e){this._msgHandler=e,this.onProgress=null,this._contentLength=null,this._isRangeSupported=!1,this._isStreamingSupported=!1;const t=this._msgHandler.sendWithStream("GetReader");this._reader=t.getReader(),this._headersReady=this._msgHandler.sendWithPromise("ReaderHeadersReady").then((e=>{this._isStreamingSupported=e.isStreamingSupported,this._isRangeSupported=e.isRangeSupported,this._contentLength=e.contentLength}))}get headersReady(){return this._headersReady}get contentLength(){return this._contentLength}get isStreamingSupported(){return this._isStreamingSupported}get isRangeSupported(){return this._isRangeSupported}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}class i{constructor(e,t,r){this._msgHandler=r,this.onProgress=null;const n=this._msgHandler.sendWithStream("GetRangeReader",{begin:e,end:t});this._reader=n.getReader()}get isStreamingSupported(){return!1}async read(){const{value:e,done:t}=await this._reader.read();return t?{value:void 0,done:!0}:{value:e.buffer,done:!1}}cancel(e){this._reader.cancel(e)}}}],t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{var e=a;Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"WorkerMessageHandler",{enumerable:!0,get:function(){return t.WorkerMessageHandler}});var t=n(1)})(),a})(),"object"==typeof exports?e.exports=a():"function"==typeof define&&r.amdO?define("pdfjs-dist/build/pdf.worker",[],a):"object"==typeof exports?exports["pdfjs-dist/build/pdf.worker"]=a():n["pdfjs-dist/build/pdf.worker"]=n.pdfjsWorker=a()},9662:(e,t,r)=>{var n=r(614),a=r(6330),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a function")}},9483:(e,t,r)=>{var n=r(4411),a=r(6330),i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not a constructor")}},6077:(e,t,r)=>{var n=r(614),a=String,i=TypeError;e.exports=function(e){if("object"==typeof e||n(e))return e;throw i("Can't set "+a(e)+" as a prototype")}},1223:(e,t,r)=>{var n=r(5112),a=r(30),i=r(3070).f,s=n("unscopables"),o=Array.prototype;null==o[s]&&i(o,s,{configurable:!0,value:a(null)}),e.exports=function(e){o[s][e]=!0}},1530:(e,t,r)=>{var n=r(8710).charAt;e.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},5787:(e,t,r)=>{var n=r(7976),a=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw a("Incorrect invocation")}},9670:(e,t,r)=>{var n=r(111),a=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw i(a(e)+" is not an object")}},3013:e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},7556:(e,t,r)=>{var n=r(7293);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},260:(e,t,r)=>{var n,a,i,s=r(3013),o=r(9781),c=r(7854),l=r(614),h=r(111),u=r(2597),d=r(648),f=r(6330),g=r(8880),p=r(8052),m=r(7045),b=r(7976),y=r(9518),w=r(7674),v=r(5112),x=r(9711),S=r(9909),A=S.enforce,k=S.get,C=c.Int8Array,O=C&&C.prototype,F=c.Uint8ClampedArray,I=F&&F.prototype,T=C&&y(C),M=O&&y(O),E=Object.prototype,P=c.TypeError,R=v("toStringTag"),N=x("TYPED_ARRAY_TAG"),D="TypedArrayConstructor",B=s&&!!w&&"Opera"!==d(c.opera),L=!1,_={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},j={BigInt64Array:8,BigUint64Array:8},U=function(e){var t=y(e);if(h(t)){var r=k(t);return r&&u(r,D)?r[D]:U(t)}},$=function(e){if(!h(e))return!1;var t=d(e);return u(_,t)||u(j,t)};for(n in _)(i=(a=c[n])&&a.prototype)?A(i)[D]=a:B=!1;for(n in j)(i=(a=c[n])&&a.prototype)&&(A(i)[D]=a);if((!B||!l(T)||T===Function.prototype)&&(T=function(){throw P("Incorrect invocation")},B))for(n in _)c[n]&&w(c[n],T);if((!B||!M||M===E)&&(M=T.prototype,B))for(n in _)c[n]&&w(c[n].prototype,M);if(B&&y(I)!==M&&w(I,M),o&&!u(M,R))for(n in L=!0,m(M,R,{configurable:!0,get:function(){return h(this)?this[N]:void 0}}),_)c[n]&&g(c[n],N,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:B,TYPED_ARRAY_TAG:L&&N,aTypedArray:function(e){if($(e))return e;throw P("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!w||b(T,e)))return e;throw P(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,r,n){if(o){if(r)for(var a in _){var i=c[a];if(i&&u(i.prototype,e))try{delete i.prototype[e]}catch(r){try{i.prototype[e]=t}catch(e){}}}M[e]&&!r||p(M,e,r?t:B&&O[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,r){var n,a;if(o){if(w){if(r)for(n in _)if((a=c[n])&&u(a,e))try{delete a[e]}catch(e){}if(T[e]&&!r)return;try{return p(T,e,r?t:B&&T[e]||t)}catch(e){}}for(n in _)!(a=c[n])||a[e]&&!r||p(a,e,t)}},getTypedArrayConstructor:U,isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(_,t)||u(j,t)},isTypedArray:$,TypedArray:T,TypedArrayPrototype:M}},3331:(e,t,r)=>{var n=r(7854),a=r(1702),i=r(9781),s=r(3013),o=r(6530),c=r(8880),l=r(7045),h=r(9190),u=r(7293),d=r(5787),f=r(9303),g=r(7466),p=r(7067),m=r(1179),b=r(9518),y=r(7674),w=r(8006).f,v=r(1285),x=r(1589),S=r(8003),A=r(9909),k=o.PROPER,C=o.CONFIGURABLE,O="ArrayBuffer",F="DataView",I="prototype",T="Wrong index",M=A.getterFor(O),E=A.getterFor(F),P=A.set,R=n[O],N=R,D=N&&N[I],B=n[F],L=B&&B[I],_=Object.prototype,j=n.Array,U=n.RangeError,$=a(v),X=a([].reverse),H=m.pack,q=m.unpack,z=function(e){return[255&e]},G=function(e){return[255&e,e>>8&255]},W=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},V=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},K=function(e){return H(e,23,4)},Y=function(e){return H(e,52,8)},J=function(e,t,r){l(e[I],t,{configurable:!0,get:function(){return r(this)[t]}})},Z=function(e,t,r,n){var a=E(e),i=p(r),s=!!n;if(i+t>a.byteLength)throw U(T);var o=a.bytes,c=i+a.byteOffset,l=x(o,c,c+t);return s?l:X(l)},Q=function(e,t,r,n,a,i){var s=E(e),o=p(r),c=n(+a),l=!!i;if(o+t>s.byteLength)throw U(T);for(var h=s.bytes,u=o+s.byteOffset,d=0;dne;)(te=re[ne++])in N||c(N,te,R[te]);D.constructor=N}y&&b(L)!==_&&y(L,_);var ae=new B(new N(2)),ie=a(L.setInt8);ae.setInt8(0,2147483648),ae.setInt8(1,2147483649),!ae.getInt8(0)&&ae.getInt8(1)||h(L,{setInt8:function(e,t){ie(this,e,t<<24>>24)},setUint8:function(e,t){ie(this,e,t<<24>>24)}},{unsafe:!0})}else D=(N=function(e){d(this,D);var t=p(e);P(this,{type:O,bytes:$(j(t),0),byteLength:t}),i||(this.byteLength=t,this.detached=!1)})[I],L=(B=function(e,t,r){d(this,L),d(e,D);var n=M(e),a=n.byteLength,s=f(t);if(s<0||s>a)throw U("Wrong offset");if(s+(r=void 0===r?a-s:g(r))>a)throw U("Wrong length");P(this,{type:F,buffer:e,byteLength:r,byteOffset:s,bytes:n.bytes}),i||(this.buffer=e,this.byteLength=r,this.byteOffset=s)})[I],i&&(J(N,"byteLength",M),J(B,"buffer",E),J(B,"byteLength",E),J(B,"byteOffset",E)),h(L,{getInt8:function(e){return Z(this,1,e)[0]<<24>>24},getUint8:function(e){return Z(this,1,e)[0]},getInt16:function(e){var t=Z(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Z(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return V(Z(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return V(Z(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return q(Z(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return q(Z(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){Q(this,1,e,z,t)},setUint8:function(e,t){Q(this,1,e,z,t)},setInt16:function(e,t){Q(this,2,e,G,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){Q(this,2,e,G,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){Q(this,4,e,W,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){Q(this,4,e,W,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){Q(this,4,e,K,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){Q(this,8,e,Y,t,arguments.length>2&&arguments[2])}});S(N,O),S(B,F),e.exports={ArrayBuffer:N,DataView:B}},1285:(e,t,r)=>{var n=r(7908),a=r(1400),i=r(6244);e.exports=function(e){for(var t=n(this),r=i(t),s=arguments.length,o=a(s>1?arguments[1]:void 0,r),c=s>2?arguments[2]:void 0,l=void 0===c?r:a(c,r);l>o;)t[o++]=e;return t}},7745:(e,t,r)=>{var n=r(6244);e.exports=function(e,t){for(var r=0,a=n(t),i=new e(a);a>r;)i[r]=t[r++];return i}},8457:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(7908),s=r(3411),o=r(7659),c=r(4411),l=r(6244),h=r(6135),u=r(4121),d=r(1246),f=Array;e.exports=function(e){var t=i(e),r=c(this),g=arguments.length,p=g>1?arguments[1]:void 0,m=void 0!==p;m&&(p=n(p,g>2?arguments[2]:void 0));var b,y,w,v,x,S,A=d(t),k=0;if(!A||this===f&&o(A))for(b=l(t),y=r?new this(b):f(b);b>k;k++)S=m?p(t[k],k):t[k],h(y,k,S);else for(x=(v=u(t,A)).next,y=r?new this:[];!(w=a(x,v)).done;k++)S=m?s(v,p,[w.value,k],!0):w.value,h(y,k,S);return y.length=k,y}},1318:(e,t,r)=>{var n=r(5656),a=r(1400),i=r(6244),s=function(e){return function(t,r,s){var o,c=n(t),l=i(c),h=a(s,l);if(e&&r!=r){for(;l>h;)if((o=c[h++])!=o)return!0}else for(;l>h;h++)if((e||h in c)&&c[h]===r)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},9671:(e,t,r)=>{var n=r(9974),a=r(8361),i=r(7908),s=r(6244),o=function(e){var t=1==e;return function(r,o,c){for(var l,h=i(r),u=a(h),d=n(o,c),f=s(u);f-- >0;)if(d(l=u[f],f,h))switch(e){case 0:return l;case 1:return f}return t?-1:void 0}};e.exports={findLast:o(0),findLastIndex:o(1)}},2092:(e,t,r)=>{var n=r(9974),a=r(1702),i=r(8361),s=r(7908),o=r(6244),c=r(5417),l=a([].push),h=function(e){var t=1==e,r=2==e,a=3==e,h=4==e,u=6==e,d=7==e,f=5==e||u;return function(g,p,m,b){for(var y,w,v=s(g),x=i(v),S=n(p,m),A=o(x),k=0,C=b||c,O=t?C(g,A):r||d?C(g,0):void 0;A>k;k++)if((f||k in x)&&(w=S(y=x[k],k,v),e))if(t)O[k]=w;else if(w)switch(e){case 3:return!0;case 5:return y;case 6:return k;case 2:l(O,y)}else switch(e){case 4:return!1;case 7:l(O,y)}return u?-1:a||h?h:O}};e.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},9341:(e,t,r)=>{var n=r(7293);e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){return 1},1)}))}},3671:(e,t,r)=>{var n=r(9662),a=r(7908),i=r(8361),s=r(6244),o=TypeError,c=function(e){return function(t,r,c,l){n(r);var h=a(t),u=i(h),d=s(h),f=e?d-1:0,g=e?-1:1;if(c<2)for(;;){if(f in u){l=u[f],f+=g;break}if(f+=g,e?f<0:d<=f)throw o("Reduce of empty array with no initial value")}for(;e?f>=0:d>f;f+=g)f in u&&(l=r(l,u[f],f,h));return l}};e.exports={left:c(!1),right:c(!0)}},3658:(e,t,r)=>{var n=r(9781),a=r(3157),i=TypeError,s=Object.getOwnPropertyDescriptor,o=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=o?function(e,t){if(a(e)&&!s(e,"length").writable)throw i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},1589:(e,t,r)=>{var n=r(1400),a=r(6244),i=r(6135),s=Array,o=Math.max;e.exports=function(e,t,r){for(var c=a(e),l=n(t,c),h=n(void 0===r?c:r,c),u=s(o(h-l,0)),d=0;l{var n=r(1702);e.exports=n([].slice)},4362:(e,t,r)=>{var n=r(1589),a=Math.floor,i=function(e,t){var r=e.length,c=a(r/2);return r<8?s(e,t):o(e,i(n(e,0,c),t),i(n(e,c),t),t)},s=function(e,t){for(var r,n,a=e.length,i=1;i0;)e[n]=e[--n];n!==i++&&(e[n]=r)}return e},o=function(e,t,r,n){for(var a=t.length,i=r.length,s=0,o=0;s{var n=r(3157),a=r(4411),i=r(111),s=r(5112)("species"),o=Array;e.exports=function(e){var t;return n(e)&&(t=e.constructor,(a(t)&&(t===o||n(t.prototype))||i(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?o:t}},5417:(e,t,r)=>{var n=r(7475);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},1843:(e,t,r)=>{var n=r(6244);e.exports=function(e,t){for(var r=n(e),a=new t(r),i=0;i{var n=r(6244),a=r(9303),i=RangeError;e.exports=function(e,t,r,s){var o=n(e),c=a(r),l=c<0?o+c:c;if(l>=o||l<0)throw i("Incorrect index");for(var h=new t(o),u=0;u{var n=r(9670),a=r(9212);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){a(e,"throw",t)}}},7072:(e,t,r)=>{var n=r(5112)("iterator"),a=!1;try{var i=0,s={next:function(){return{done:!!i++}},return:function(){a=!0}};s[n]=function(){return this},Array.from(s,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!a)return!1;var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},4326:(e,t,r)=>{var n=r(1702),a=n({}.toString),i=n("".slice);e.exports=function(e){return i(a(e),8,-1)}},648:(e,t,r)=>{var n=r(1694),a=r(614),i=r(4326),s=r(5112)("toStringTag"),o=Object,c="Arguments"==i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=o(e),s))?r:c?i(t):"Object"==(n=i(t))&&a(t.callee)?"Arguments":n}},9320:(e,t,r)=>{var n=r(1702),a=r(9190),i=r(2423).getWeakData,s=r(5787),o=r(9670),c=r(8554),l=r(111),h=r(408),u=r(2092),d=r(2597),f=r(9909),g=f.set,p=f.getterFor,m=u.find,b=u.findIndex,y=n([].splice),w=0,v=function(e){return e.frozen||(e.frozen=new x)},x=function(){this.entries=[]},S=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};x.prototype={get:function(e){var t=S(this,e);if(t)return t[1]},has:function(e){return!!S(this,e)},set:function(e,t){var r=S(this,e);r?r[1]=t:this.entries.push([e,t])},delete:function(e){var t=b(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,r,n){var u=e((function(e,a){s(e,f),g(e,{type:t,id:w++,frozen:void 0}),c(a)||h(a,e[n],{that:e,AS_ENTRIES:r})})),f=u.prototype,m=p(t),b=function(e,t,r){var n=m(e),a=i(o(t),!0);return!0===a?v(n).set(t,r):a[n.id]=r,e};return a(f,{delete:function(e){var t=m(this);if(!l(e))return!1;var r=i(e);return!0===r?v(t).delete(e):r&&d(r,t.id)&&delete r[t.id]},has:function(e){var t=m(this);if(!l(e))return!1;var r=i(e);return!0===r?v(t).has(e):r&&d(r,t.id)}}),a(f,r?{get:function(e){var t=m(this);if(l(e)){var r=i(e);return!0===r?v(t).get(e):r?r[t.id]:void 0}},set:function(e,t){return b(this,e,t)}}:{add:function(e){return b(this,e,!0)}}),u}}},7710:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(1702),s=r(4705),o=r(8052),c=r(2423),l=r(408),h=r(5787),u=r(614),d=r(8554),f=r(111),g=r(7293),p=r(7072),m=r(8003),b=r(9587);e.exports=function(e,t,r){var y=-1!==e.indexOf("Map"),w=-1!==e.indexOf("Weak"),v=y?"set":"add",x=a[e],S=x&&x.prototype,A=x,k={},C=function(e){var t=i(S[e]);o(S,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(w&&!f(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return w&&!f(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(w&&!f(e))&&t(this,0===e?0:e)}:function(e,r){return t(this,0===e?0:e,r),this})};if(s(e,!u(x)||!(w||S.forEach&&!g((function(){(new x).entries().next()})))))A=r.getConstructor(t,e,y,v),c.enable();else if(s(e,!0)){var O=new A,F=O[v](w?{}:-0,1)!=O,I=g((function(){O.has(1)})),T=p((function(e){new x(e)})),M=!w&&g((function(){for(var e=new x,t=5;t--;)e[v](t,t);return!e.has(-0)}));T||((A=t((function(e,t){h(e,S);var r=b(new x,e,A);return d(t)||l(t,r[v],{that:r,AS_ENTRIES:y}),r}))).prototype=S,S.constructor=A),(I||M)&&(C("delete"),C("has"),y&&C("get")),(M||F)&&C(v),w&&S.clear&&delete S.clear}return k[e]=A,n({global:!0,constructor:!0,forced:A!=x},k),m(A,e),w||r.setStrong(A,e,y),A}},9920:(e,t,r)=>{var n=r(2597),a=r(3887),i=r(1236),s=r(3070);e.exports=function(e,t,r){for(var o=a(t),c=s.f,l=i.f,h=0;h{var n=r(5112)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},8544:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},6178:e=>{e.exports=function(e,t){return{value:e,done:t}}},8880:(e,t,r)=>{var n=r(9781),a=r(3070),i=r(9114);e.exports=n?function(e,t,r){return a.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},9114:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},6135:(e,t,r)=>{var n=r(4948),a=r(3070),i=r(9114);e.exports=function(e,t,r){var s=n(t);s in e?a.f(e,s,i(0,r)):e[s]=r}},7045:(e,t,r)=>{var n=r(6339),a=r(3070);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),a.f(e,t,r)}},8052:(e,t,r)=>{var n=r(614),a=r(3070),i=r(6339),s=r(3072);e.exports=function(e,t,r,o){o||(o={});var c=o.enumerable,l=void 0!==o.name?o.name:t;if(n(r)&&i(r,l,o),o.global)c?e[t]=r:s(t,r);else{try{o.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:a.f(e,t,{value:r,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}},9190:(e,t,r)=>{var n=r(8052);e.exports=function(e,t,r){for(var a in t)n(e,a,t[a],r);return e}},3072:(e,t,r)=>{var n=r(7854),a=Object.defineProperty;e.exports=function(e,t){try{a(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},5117:(e,t,r)=>{var n=r(6330),a=TypeError;e.exports=function(e,t){if(!delete e[t])throw a("Cannot delete property "+n(t)+" of "+n(e))}},9781:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4154:e=>{var t="object"==typeof document&&document.all,r=void 0===t&&void 0!==t;e.exports={all:t,IS_HTMLDDA:r}},317:(e,t,r)=>{var n=r(7854),a=r(111),i=n.document,s=a(i)&&a(i.createElement);e.exports=function(e){return s?i.createElement(e):{}}},7207:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},3678:e=>{e.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,t,r)=>{var n=r(317)("span").classList,a=n&&n.constructor&&n.constructor.prototype;e.exports=a===Object.prototype?void 0:a},8886:(e,t,r)=>{var n=r(8113).match(/firefox\\/(\\d+)/i);e.exports=!!n&&+n[1]},7871:(e,t,r)=>{var n=r(3823),a=r(5268);e.exports=!n&&!a&&"object"==typeof window&&"object"==typeof document},3823:e=>{e.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version},256:(e,t,r)=>{var n=r(8113);e.exports=/MSIE|Trident/.test(n)},1528:(e,t,r)=>{var n=r(8113);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},6833:(e,t,r)=>{var n=r(8113);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},5268:(e,t,r)=>{var n=r(4326);e.exports="undefined"!=typeof process&&"process"==n(process)},1036:(e,t,r)=>{var n=r(8113);e.exports=/web0s(?!.*chrome)/i.test(n)},8113:e=>{e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7392:(e,t,r)=>{var n,a,i=r(7854),s=r(8113),o=i.process,c=i.Deno,l=o&&o.versions||c&&c.version,h=l&&l.v8;h&&(a=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!a&&s&&(!(n=s.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\\/(\\d+)/))&&(a=+n[1]),e.exports=a},8008:(e,t,r)=>{var n=r(8113).match(/AppleWebKit\\/(\\d+)\\./);e.exports=!!n&&+n[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},1060:(e,t,r)=>{var n=r(1702),a=Error,i=n("".replace),s=String(a("zxcasd").stack),o=/\\n\\s*at [^:]*:[^\\n]*/,c=o.test(s);e.exports=function(e,t){if(c&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=i(e,o,"");return e}},5392:(e,t,r)=>{var n=r(8880),a=r(1060),i=r(2914),s=Error.captureStackTrace;e.exports=function(e,t,r,o){i&&(s?s(e,t):n(e,"stack",a(r,o)))}},2914:(e,t,r)=>{var n=r(7293),a=r(9114);e.exports=!n((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},7762:(e,t,r)=>{var n=r(9781),a=r(7293),i=r(9670),s=r(30),o=r(6277),c=Error.prototype.toString,l=a((function(){if(n){var e=s(Object.defineProperty({},"name",{get:function(){return this===e}}));if("true"!==c.call(e))return!0}return"2: 1"!==c.call({message:1,name:2})||"Error"!==c.call({})}));e.exports=l?function(){var e=i(this),t=o(e.name,"Error"),r=o(e.message);return t?r?t+": "+r:t:r}:c},2109:(e,t,r)=>{var n=r(7854),a=r(1236).f,i=r(8880),s=r(8052),o=r(3072),c=r(9920),l=r(4705);e.exports=function(e,t){var r,h,u,d,f,g=e.target,p=e.global,m=e.stat;if(r=p?n:m?n[g]||o(g,{}):(n[g]||{}).prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=a(r,h))&&f.value:r[h],!l(p?h:g+(m?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;c(d,u)}(e.sham||u&&u.sham)&&i(d,"sham",!0),s(r,h,d,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,t,r)=>{r(4916);var n=r(1470),a=r(8052),i=r(2261),s=r(7293),o=r(5112),c=r(8880),l=o("species"),h=RegExp.prototype;e.exports=function(e,t,r,u){var d=o(e),f=!s((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),g=f&&!s((function(){var t=!1,r=/a/;return"split"===e&&((r={}).constructor={},r.constructor[l]=function(){return r},r.flags="",r[d]=/./[d]),r.exec=function(){return t=!0,null},r[d](""),!t}));if(!f||!g||r){var p=n(/./[d]),m=t(d,""[e],(function(e,t,r,a,s){var o=n(e),c=t.exec;return c===i||c===h.exec?f&&!s?{done:!0,value:p(t,r,a)}:{done:!0,value:o(r,t,a)}:{done:!1}}));a(String.prototype,e,m[0]),a(h,d,m[1])}u&&c(h[d],"sham",!0)}},6790:(e,t,r)=>{var n=r(3157),a=r(6244),i=r(7207),s=r(9974),o=function(e,t,r,c,l,h,u,d){for(var f,g,p=l,m=0,b=!!u&&s(u,d);m0&&n(f)?(g=a(f),p=o(e,t,f,g,p,h-1)-1):(i(p+1),e[p]=f),p++),m++;return p};e.exports=o},6677:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:(e,t,r)=>{var n=r(4374),a=Function.prototype,i=a.apply,s=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(i):function(){return s.apply(i,arguments)})},9974:(e,t,r)=>{var n=r(1470),a=r(9662),i=r(4374),s=n(n.bind);e.exports=function(e,t){return a(e),void 0===t?e:i?s(e,t):function(){return e.apply(t,arguments)}}},4374:(e,t,r)=>{var n=r(7293);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},6916:(e,t,r)=>{var n=r(4374),a=Function.prototype.call;e.exports=n?a.bind(a):function(){return a.apply(a,arguments)}},6530:(e,t,r)=>{var n=r(9781),a=r(2597),i=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,o=a(i,"name"),c=o&&"something"===function(){}.name,l=o&&(!n||n&&s(i,"name").configurable);e.exports={EXISTS:o,PROPER:c,CONFIGURABLE:l}},5668:(e,t,r)=>{var n=r(1702),a=r(9662);e.exports=function(e,t,r){try{return n(a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},1470:(e,t,r)=>{var n=r(4326),a=r(1702);e.exports=function(e){if("Function"===n(e))return a(e)}},1702:(e,t,r)=>{var n=r(4374),a=Function.prototype,i=a.call,s=n&&a.bind.bind(i,i);e.exports=n?s:function(e){return function(){return i.apply(e,arguments)}}},5005:(e,t,r)=>{var n=r(7854),a=r(614);e.exports=function(e,t){return arguments.length<2?(r=n[e],a(r)?r:void 0):n[e]&&n[e][t];var r}},1246:(e,t,r)=>{var n=r(648),a=r(8173),i=r(8554),s=r(7497),o=r(5112)("iterator");e.exports=function(e){if(!i(e))return a(e,o)||a(e,"@@iterator")||s[n(e)]}},4121:(e,t,r)=>{var n=r(6916),a=r(9662),i=r(9670),s=r(6330),o=r(1246),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?o(e):t;if(a(r))return i(n(r,e));throw c(s(e)+" is not iterable")}},8044:(e,t,r)=>{var n=r(1702),a=r(3157),i=r(614),s=r(4326),o=r(1340),c=n([].push);e.exports=function(e){if(i(e))return e;if(a(e)){for(var t=e.length,r=[],n=0;n{var n=r(9662),a=r(8554);e.exports=function(e,t){var r=e[t];return a(r)?void 0:n(r)}},647:(e,t,r)=>{var n=r(1702),a=r(7908),i=Math.floor,s=n("".charAt),o=n("".replace),c=n("".slice),l=/\\$([$&'\`]|\\d{1,2}|<[^>]*>)/g,h=/\\$([$&'\`]|\\d{1,2})/g;e.exports=function(e,t,r,n,u,d){var f=r+e.length,g=n.length,p=h;return void 0!==u&&(u=a(u),p=l),o(d,p,(function(a,o){var l;switch(s(o,0)){case"$":return"$";case"&":return e;case"\`":return c(t,0,r);case"'":return c(t,f);case"<":l=u[c(o,1,-1)];break;default:var h=+o;if(0===h)return a;if(h>g){var d=i(h/10);return 0===d?a:d<=g?void 0===n[d-1]?s(o,1):n[d-1]+s(o,1):a}l=n[h-1]}return void 0===l?"":l}))}},7854:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||this||Function("return this")()},2597:(e,t,r)=>{var n=r(1702),a=r(7908),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(a(e),t)}},3501:e=>{e.exports={}},842:e=>{e.exports=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}}},490:(e,t,r)=>{var n=r(5005);e.exports=n("document","documentElement")},4664:(e,t,r)=>{var n=r(9781),a=r(7293),i=r(317);e.exports=!n&&!a((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},1179:e=>{var t=Array,r=Math.abs,n=Math.pow,a=Math.floor,i=Math.log,s=Math.LN2;e.exports={pack:function(e,o,c){var l,h,u,d=t(c),f=8*c-o-1,g=(1<>1,m=23===o?n(2,-24)-n(2,-77):0,b=e<0||0===e&&1/e<0?1:0,y=0;for((e=r(e))!=e||e===1/0?(h=e!=e?1:0,l=g):(l=a(i(e)/s),e*(u=n(2,-l))<1&&(l--,u*=2),(e+=l+p>=1?m/u:m*n(2,1-p))*u>=2&&(l++,u/=2),l+p>=g?(h=0,l=g):l+p>=1?(h=(e*u-1)*n(2,o),l+=p):(h=e*n(2,p-1)*n(2,o),l=0));o>=8;)d[y++]=255&h,h/=256,o-=8;for(l=l<0;)d[y++]=255&l,l/=256,f-=8;return d[--y]|=128*b,d},unpack:function(e,t){var r,a=e.length,i=8*a-t-1,s=(1<>1,c=i-7,l=a-1,h=e[l--],u=127&h;for(h>>=7;c>0;)u=256*u+e[l--],c-=8;for(r=u&(1<<-c)-1,u>>=-c,c+=t;c>0;)r=256*r+e[l--],c-=8;if(0===u)u=1-o;else{if(u===s)return r?NaN:h?-1/0:1/0;r+=n(2,t),u-=o}return(h?-1:1)*r*n(2,u-t)}}},8361:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(4326),s=Object,o=n("".split);e.exports=a((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o(e,""):s(e)}:s},9587:(e,t,r)=>{var n=r(614),a=r(111),i=r(7674);e.exports=function(e,t,r){var s,o;return i&&n(s=t.constructor)&&s!==r&&a(o=s.prototype)&&o!==r.prototype&&i(e,o),e}},2788:(e,t,r)=>{var n=r(1702),a=r(614),i=r(5465),s=n(Function.toString);a(i.inspectSource)||(i.inspectSource=function(e){return s(e)}),e.exports=i.inspectSource},8340:(e,t,r)=>{var n=r(111),a=r(8880);e.exports=function(e,t){n(t)&&"cause"in t&&a(e,"cause",t.cause)}},2423:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(3501),s=r(111),o=r(2597),c=r(3070).f,l=r(8006),h=r(1156),u=r(2050),d=r(9711),f=r(6677),g=!1,p=d("meta"),m=0,b=function(e){c(e,p,{value:{objectID:"O"+m++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},g=!0;var e=l.f,t=a([].splice),r={};r[p]=1,e(r).length&&(l.f=function(r){for(var n=e(r),a=0,i=n.length;a{var n,a,i,s=r(4811),o=r(7854),c=r(111),l=r(8880),h=r(2597),u=r(5465),d=r(6200),f=r(3501),g="Object already initialized",p=o.TypeError,m=o.WeakMap;if(s||u.state){var b=u.state||(u.state=new m);b.get=b.get,b.has=b.has,b.set=b.set,n=function(e,t){if(b.has(e))throw p(g);return t.facade=e,b.set(e,t),t},a=function(e){return b.get(e)||{}},i=function(e){return b.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw p(g);return t.facade=e,l(e,y,t),t},a=function(e){return h(e,y)?e[y]:{}},i=function(e){return h(e,y)}}e.exports={set:n,get:a,has:i,enforce:function(e){return i(e)?a(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=a(t)).type!==e)throw p("Incompatible receiver, "+e+" required");return r}}}},7659:(e,t,r)=>{var n=r(5112),a=r(7497),i=n("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(a.Array===e||s[i]===e)}},3157:(e,t,r)=>{var n=r(4326);e.exports=Array.isArray||function(e){return"Array"==n(e)}},4067:(e,t,r)=>{var n=r(648);e.exports=function(e){var t=n(e);return"BigInt64Array"==t||"BigUint64Array"==t}},614:(e,t,r)=>{var n=r(4154),a=n.all;e.exports=n.IS_HTMLDDA?function(e){return"function"==typeof e||e===a}:function(e){return"function"==typeof e}},4411:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(614),s=r(648),o=r(5005),c=r(2788),l=function(){},h=[],u=o("Reflect","construct"),d=/^\\s*(?:class|function)\\b/,f=n(d.exec),g=!d.exec(l),p=function(e){if(!i(e))return!1;try{return u(l,h,e),!0}catch(e){return!1}},m=function(e){if(!i(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return g||!!f(d,c(e))}catch(e){return!0}};m.sham=!0,e.exports=!u||a((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?m:p},4705:(e,t,r)=>{var n=r(7293),a=r(614),i=/#|\\.prototype\\./,s=function(e,t){var r=c[o(e)];return r==h||r!=l&&(a(t)?n(t):!!t)},o=s.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},5988:(e,t,r)=>{var n=r(111),a=Math.floor;e.exports=Number.isInteger||function(e){return!n(e)&&isFinite(e)&&a(e)===e}},8554:e=>{e.exports=function(e){return null==e}},111:(e,t,r)=>{var n=r(614),a=r(4154),i=a.all;e.exports=a.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:n(e)||e===i}:function(e){return"object"==typeof e?null!==e:n(e)}},1913:e=>{e.exports=!1},7850:(e,t,r)=>{var n=r(111),a=r(4326),i=r(5112)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==a(e))}},2190:(e,t,r)=>{var n=r(5005),a=r(614),i=r(7976),s=r(3307),o=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return a(t)&&i(t.prototype,o(e))}},408:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(9670),s=r(6330),o=r(7659),c=r(6244),l=r(7976),h=r(4121),u=r(1246),d=r(9212),f=TypeError,g=function(e,t){this.stopped=e,this.result=t},p=g.prototype;e.exports=function(e,t,r){var m,b,y,w,v,x,S,A=r&&r.that,k=!(!r||!r.AS_ENTRIES),C=!(!r||!r.IS_RECORD),O=!(!r||!r.IS_ITERATOR),F=!(!r||!r.INTERRUPTED),I=n(t,A),T=function(e){return m&&d(m,"normal",e),new g(!0,e)},M=function(e){return k?(i(e),F?I(e[0],e[1],T):I(e[0],e[1])):F?I(e,T):I(e)};if(C)m=e.iterator;else if(O)m=e;else{if(!(b=u(e)))throw f(s(e)+" is not iterable");if(o(b)){for(y=0,w=c(e);w>y;y++)if((v=M(e[y]))&&l(p,v))return v;return new g(!1)}m=h(e,b)}for(x=C?e.next:m.next;!(S=a(x,m)).done;){try{v=M(S.value)}catch(e){d(m,"throw",e)}if("object"==typeof v&&v&&l(p,v))return v}return new g(!1)}},9212:(e,t,r)=>{var n=r(6916),a=r(9670),i=r(8173);e.exports=function(e,t,r){var s,o;a(e);try{if(!(s=i(e,"return"))){if("throw"===t)throw r;return r}s=n(s,e)}catch(e){o=!0,s=e}if("throw"===t)throw r;if(o)throw s;return a(s),r}},3061:(e,t,r)=>{var n=r(3383).IteratorPrototype,a=r(30),i=r(9114),s=r(8003),o=r(7497),c=function(){return this};e.exports=function(e,t,r,l){var h=t+" Iterator";return e.prototype=a(n,{next:i(+!l,r)}),s(e,h,!1,!0),o[h]=c,e}},1656:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(1913),s=r(6530),o=r(614),c=r(3061),l=r(9518),h=r(7674),u=r(8003),d=r(8880),f=r(8052),g=r(5112),p=r(7497),m=r(3383),b=s.PROPER,y=s.CONFIGURABLE,w=m.IteratorPrototype,v=m.BUGGY_SAFARI_ITERATORS,x=g("iterator"),S="keys",A="values",k="entries",C=function(){return this};e.exports=function(e,t,r,s,g,m,O){c(r,t,s);var F,I,T,M=function(e){if(e===g&&D)return D;if(!v&&e in R)return R[e];switch(e){case S:case A:case k:return function(){return new r(this,e)}}return function(){return new r(this)}},E=t+" Iterator",P=!1,R=e.prototype,N=R[x]||R["@@iterator"]||g&&R[g],D=!v&&N||M(g),B="Array"==t&&R.entries||N;if(B&&(F=l(B.call(new e)))!==Object.prototype&&F.next&&(i||l(F)===w||(h?h(F,w):o(F[x])||f(F,x,C)),u(F,E,!0,!0),i&&(p[E]=C)),b&&g==A&&N&&N.name!==A&&(!i&&y?d(R,"name",A):(P=!0,D=function(){return a(N,this)})),g)if(I={values:M(A),keys:m?D:M(S),entries:M(k)},O)for(T in I)(v||P||!(T in R))&&f(R,T,I[T]);else n({target:t,proto:!0,forced:v||P},I);return i&&!O||R[x]===D||f(R,x,D,{name:g}),p[t]=D,I}},3383:(e,t,r)=>{var n,a,i,s=r(7293),o=r(614),c=r(111),l=r(30),h=r(9518),u=r(8052),d=r(5112),f=r(1913),g=d("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(a=h(h(i)))!==Object.prototype&&(n=a):p=!0),!c(n)||s((function(){var e={};return n[g].call(e)!==e}))?n={}:f&&(n=l(n)),o(n[g])||u(n,g,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:p}},7497:e=>{e.exports={}},6244:(e,t,r)=>{var n=r(7466);e.exports=function(e){return n(e.length)}},6339:(e,t,r)=>{var n=r(1702),a=r(7293),i=r(614),s=r(2597),o=r(9781),c=r(6530).CONFIGURABLE,l=r(2788),h=r(9909),u=h.enforce,d=h.get,f=String,g=Object.defineProperty,p=n("".slice),m=n("".replace),b=n([].join),y=o&&!a((function(){return 8!==g((function(){}),"length",{value:8}).length})),w=String(String).split("String"),v=e.exports=function(e,t,r){"Symbol("===p(f(t),0,7)&&(t="["+m(f(t),/^Symbol\\(([^)]*)\\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!s(e,"name")||c&&e.name!==t)&&(o?g(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&s(r,"arity")&&e.length!==r.arity&&g(e,"length",{value:r.arity});try{r&&s(r,"constructor")&&r.constructor?o&&g(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=b(w,"string"==typeof t?t:"")),e};Function.prototype.toString=v((function(){return i(this)&&d(this).source||l(this)}),"toString")},4758:e=>{var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},5948:(e,t,r)=>{var n,a,i,s,o,c=r(7854),l=r(9974),h=r(1236).f,u=r(261).set,d=r(8572),f=r(6833),g=r(1528),p=r(1036),m=r(5268),b=c.MutationObserver||c.WebKitMutationObserver,y=c.document,w=c.process,v=c.Promise,x=h(c,"queueMicrotask"),S=x&&x.value;if(!S){var A=new d,k=function(){var e,t;for(m&&(e=w.domain)&&e.exit();t=A.get();)try{t()}catch(e){throw A.head&&n(),e}e&&e.enter()};f||m||p||!b||!y?!g&&v&&v.resolve?((s=v.resolve(void 0)).constructor=v,o=l(s.then,s),n=function(){o(k)}):m?n=function(){w.nextTick(k)}:(u=l(u,c),n=function(){u(k)}):(a=!0,i=y.createTextNode(""),new b(k).observe(i,{characterData:!0}),n=function(){i.data=a=!a}),S=function(e){A.head||n(),A.add(e)}}e.exports=S},8523:(e,t,r)=>{var n=r(9662),a=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw a("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},6277:(e,t,r)=>{var n=r(1340);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},3929:(e,t,r)=>{var n=r(7850),a=TypeError;e.exports=function(e){if(n(e))throw a("The method doesn't accept regular expressions");return e}},2814:(e,t,r)=>{var n=r(7854),a=r(7293),i=r(1702),s=r(1340),o=r(3111).trim,c=r(1361),l=i("".charAt),h=n.parseFloat,u=n.Symbol,d=u&&u.iterator,f=1/h(c+"-0")!=-1/0||d&&!a((function(){h(Object(d))}));e.exports=f?function(e){var t=o(s(e)),r=h(t);return 0===r&&"-"==l(t,0)?-0:r}:h},3009:(e,t,r)=>{var n=r(7854),a=r(7293),i=r(1702),s=r(1340),o=r(3111).trim,c=r(1361),l=n.parseInt,h=n.Symbol,u=h&&h.iterator,d=/^[+-]?0x/i,f=i(d.exec),g=8!==l(c+"08")||22!==l(c+"0x16")||u&&!a((function(){l(Object(u))}));e.exports=g?function(e,t){var r=o(s(e));return l(r,t>>>0||(f(d,r)?16:10))}:l},1574:(e,t,r)=>{var n=r(9781),a=r(1702),i=r(6916),s=r(7293),o=r(1956),c=r(5181),l=r(5296),h=r(7908),u=r(8361),d=Object.assign,f=Object.defineProperty,g=a([].concat);e.exports=!d||s((function(){if(n&&1!==d({b:1},d(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),a="abcdefghijklmnopqrst";return e[r]=7,a.split("").forEach((function(e){t[e]=e})),7!=d({},e)[r]||o(d({},t)).join("")!=a}))?function(e,t){for(var r=h(e),a=arguments.length,s=1,d=c.f,f=l.f;a>s;)for(var p,m=u(arguments[s++]),b=d?g(o(m),d(m)):o(m),y=b.length,w=0;y>w;)p=b[w++],n&&!i(f,m,p)||(r[p]=m[p]);return r}:d},30:(e,t,r)=>{var n,a=r(9670),i=r(6048),s=r(748),o=r(3501),c=r(490),l=r(317),h=r(6200),u="prototype",d="script",f=h("IE_PROTO"),g=function(){},p=function(e){return"<"+d+">"+e+""},m=function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t},b=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;b="undefined"!=typeof document?document.domain&&n?m(n):(t=l("iframe"),r="java"+d+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F):m(n);for(var a=s.length;a--;)delete b[u][s[a]];return b()};o[f]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(g[u]=a(e),r=new g,g[u]=null,r[f]=e):r=b(),void 0===t?r:i.f(r,t)}},6048:(e,t,r)=>{var n=r(9781),a=r(3353),i=r(3070),s=r(9670),o=r(5656),c=r(1956);t.f=n&&!a?Object.defineProperties:function(e,t){s(e);for(var r,n=o(t),a=c(t),l=a.length,h=0;l>h;)i.f(e,r=a[h++],n[r]);return e}},3070:(e,t,r)=>{var n=r(9781),a=r(4664),i=r(3353),s=r(9670),o=r(4948),c=TypeError,l=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?i?function(e,t,r){if(s(e),t=o(t),s(r),"function"==typeof e&&"prototype"===t&&"value"in r&&f in r&&!r[f]){var n=h(e,t);n&&n[f]&&(e[t]=r.value,r={configurable:d in r?r[d]:n[d],enumerable:u in r?r[u]:n[u],writable:!1})}return l(e,t,r)}:l:function(e,t,r){if(s(e),t=o(t),s(r),a)try{return l(e,t,r)}catch(e){}if("get"in r||"set"in r)throw c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},1236:(e,t,r)=>{var n=r(9781),a=r(6916),i=r(5296),s=r(9114),o=r(5656),c=r(4948),l=r(2597),h=r(4664),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=o(e),t=c(t),h)try{return u(e,t)}catch(e){}if(l(e,t))return s(!a(i.f,e,t),e[t])}},1156:(e,t,r)=>{var n=r(4326),a=r(5656),i=r(8006).f,s=r(1589),o="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return o&&"Window"==n(e)?function(e){try{return i(e)}catch(e){return s(o)}}(e):i(a(e))}},8006:(e,t,r)=>{var n=r(6324),a=r(748).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,a)}},5181:(e,t)=>{t.f=Object.getOwnPropertySymbols},9518:(e,t,r)=>{var n=r(2597),a=r(614),i=r(7908),s=r(6200),o=r(8544),c=s("IE_PROTO"),l=Object,h=l.prototype;e.exports=o?l.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return a(r)&&t instanceof r?r.prototype:t instanceof l?h:null}},2050:(e,t,r)=>{var n=r(7293),a=r(111),i=r(4326),s=r(7556),o=Object.isExtensible,c=n((function(){o(1)}));e.exports=c||s?function(e){return!!a(e)&&(!s||"ArrayBuffer"!=i(e))&&(!o||o(e))}:o},7976:(e,t,r)=>{var n=r(1702);e.exports=n({}.isPrototypeOf)},6324:(e,t,r)=>{var n=r(1702),a=r(2597),i=r(5656),s=r(1318).indexOf,o=r(3501),c=n([].push);e.exports=function(e,t){var r,n=i(e),l=0,h=[];for(r in n)!a(o,r)&&a(n,r)&&c(h,r);for(;t.length>l;)a(n,r=t[l++])&&(~s(h,r)||c(h,r));return h}},1956:(e,t,r)=>{var n=r(6324),a=r(748);e.exports=Object.keys||function(e){return n(e,a)}},5296:(e,t)=>{var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,a=n&&!r.call({1:2},1);t.f=a?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},7674:(e,t,r)=>{var n=r(5668),a=r(9670),i=r(6077);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return a(r),i(n),t?e(r,n):r.__proto__=n,r}}():void 0)},2140:(e,t,r)=>{var n=r(6916),a=r(614),i=r(111),s=TypeError;e.exports=function(e,t){var r,o;if("string"===t&&a(r=e.toString)&&!i(o=n(r,e)))return o;if(a(r=e.valueOf)&&!i(o=n(r,e)))return o;if("string"!==t&&a(r=e.toString)&&!i(o=n(r,e)))return o;throw s("Can't convert object to primitive value")}},3887:(e,t,r)=>{var n=r(5005),a=r(1702),i=r(8006),s=r(5181),o=r(9670),c=a([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(o(e)),r=s.f;return r?c(t,r(e)):t}},2534:e=>{e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},3702:(e,t,r)=>{var n=r(7854),a=r(2492),i=r(614),s=r(4705),o=r(2788),c=r(5112),l=r(7871),h=r(3823),u=r(1913),d=r(7392),f=a&&a.prototype,g=c("species"),p=!1,m=i(n.PromiseRejectionEvent),b=s("Promise",(function(){var e=o(a),t=e!==String(a);if(!t&&66===d)return!0;if(u&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new a((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[g]=n,!(p=r.then((function(){}))instanceof n))return!0}return!t&&(l||h)&&!m}));e.exports={CONSTRUCTOR:b,REJECTION_EVENT:m,SUBCLASSING:p}},2492:(e,t,r)=>{var n=r(7854);e.exports=n.Promise},9478:(e,t,r)=>{var n=r(9670),a=r(111),i=r(8523);e.exports=function(e,t){if(n(e),a(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},612:(e,t,r)=>{var n=r(2492),a=r(7072),i=r(3702).CONSTRUCTOR;e.exports=i||!a((function(e){n.all(e).then(void 0,(function(){}))}))},2626:(e,t,r)=>{var n=r(3070).f;e.exports=function(e,t,r){r in e||n(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}},8572:e=>{var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7651:(e,t,r)=>{var n=r(6916),a=r(9670),i=r(614),s=r(4326),o=r(2261),c=TypeError;e.exports=function(e,t){var r=e.exec;if(i(r)){var l=n(r,e,t);return null!==l&&a(l),l}if("RegExp"===s(e))return n(o,e,t);throw c("RegExp#exec called on incompatible receiver")}},2261:(e,t,r)=>{var n,a,i=r(6916),s=r(1702),o=r(1340),c=r(7066),l=r(2999),h=r(2309),u=r(30),d=r(9909).get,f=r(9441),g=r(7168),p=h("native-string-replace",String.prototype.replace),m=RegExp.prototype.exec,b=m,y=s("".charAt),w=s("".indexOf),v=s("".replace),x=s("".slice),S=(a=/b*/g,i(m,n=/a/,"a"),i(m,a,"a"),0!==n.lastIndex||0!==a.lastIndex),A=l.BROKEN_CARET,k=void 0!==/()??/.exec("")[1];(S||k||A||f||g)&&(b=function(e){var t,r,n,a,s,l,h,f=this,g=d(f),C=o(e),O=g.raw;if(O)return O.lastIndex=f.lastIndex,t=i(b,O,C),f.lastIndex=O.lastIndex,t;var F=g.groups,I=A&&f.sticky,T=i(c,f),M=f.source,E=0,P=C;if(I&&(T=v(T,"y",""),-1===w(T,"g")&&(T+="g"),P=x(C,f.lastIndex),f.lastIndex>0&&(!f.multiline||f.multiline&&"\\n"!==y(C,f.lastIndex-1))&&(M="(?: "+M+")",P=" "+P,E++),r=new RegExp("^(?:"+M+")",T)),k&&(r=new RegExp("^"+M+"$(?!\\\\s)",T)),S&&(n=f.lastIndex),a=i(m,I?r:f,P),I?a?(a.input=x(a.input,E),a[0]=x(a[0],E),a.index=f.lastIndex,f.lastIndex+=a[0].length):f.lastIndex=0:S&&a&&(f.lastIndex=f.global?a.index+a[0].length:n),k&&a&&a.length>1&&i(p,a[0],r,(function(){for(s=1;s{var n=r(9670);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},4706:(e,t,r)=>{var n=r(6916),a=r(2597),i=r(7976),s=r(7066),o=RegExp.prototype;e.exports=function(e){var t=e.flags;return void 0!==t||"flags"in o||a(e,"flags")||!i(o,e)?t:n(s,e)}},2999:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp,i=n((function(){var e=a("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),s=i||n((function(){return!a("a","y").sticky})),o=i||n((function(){var e=a("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));e.exports={BROKEN_CARET:o,MISSED_STICKY:s,UNSUPPORTED_Y:i}},9441:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp;e.exports=n((function(){var e=a(".","s");return!(e.dotAll&&e.exec("\\n")&&"s"===e.flags)}))},7168:(e,t,r)=>{var n=r(7293),a=r(7854).RegExp;e.exports=n((function(){var e=a("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},4488:(e,t,r)=>{var n=r(8554),a=TypeError;e.exports=function(e){if(n(e))throw a("Can't call method on "+e);return e}},6340:(e,t,r)=>{var n=r(5005),a=r(7045),i=r(5112),s=r(9781),o=i("species");e.exports=function(e){var t=n(e);s&&t&&!t[o]&&a(t,o,{configurable:!0,get:function(){return this}})}},8003:(e,t,r)=>{var n=r(3070).f,a=r(2597),i=r(5112)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!a(e,i)&&n(e,i,{configurable:!0,value:t})}},6200:(e,t,r)=>{var n=r(2309),a=r(9711),i=n("keys");e.exports=function(e){return i[e]||(i[e]=a(e))}},5465:(e,t,r)=>{var n=r(7854),a=r(3072),i="__core-js_shared__",s=n[i]||a(i,{});e.exports=s},2309:(e,t,r)=>{var n=r(1913),a=r(5465);(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.32.0",mode:n?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE",source:"https://github.com/zloirock/core-js"})},6707:(e,t,r)=>{var n=r(9670),a=r(9483),i=r(8554),s=r(5112)("species");e.exports=function(e,t){var r,o=n(e).constructor;return void 0===o||i(r=n(o)[s])?t:a(r)}},8710:(e,t,r)=>{var n=r(1702),a=r(9303),i=r(1340),s=r(4488),o=n("".charAt),c=n("".charCodeAt),l=n("".slice),h=function(e){return function(t,r){var n,h,u=i(s(t)),d=a(r),f=u.length;return d<0||d>=f?e?"":void 0:(n=c(u,d))<55296||n>56319||d+1===f||(h=c(u,d+1))<56320||h>57343?e?o(u,d):n:e?l(u,d,d+2):h-56320+(n-55296<<10)+65536}};e.exports={codeAt:h(!1),charAt:h(!0)}},3197:(e,t,r)=>{var n=r(1702),a=2147483647,i=/[^\\0-\\u007E]/,s=/[.\\u3002\\uFF0E\\uFF61]/g,o="Overflow: input needs wider integers to process",c=RangeError,l=n(s.exec),h=Math.floor,u=String.fromCharCode,d=n("".charCodeAt),f=n([].join),g=n([].push),p=n("".replace),m=n("".split),b=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},w=function(e,t,r){var n=0;for(e=r?h(e/700):e>>1,e+=h(e/t);e>455;)e=h(e/35),n+=36;return h(n+36*e/(e+38))},v=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r=55296&&a<=56319&&r=s&&nh((a-l)/x))throw c(o);for(l+=(v-s)*x,s=v,r=0;ra)throw c(o);if(n==s){for(var S=l,A=36;;){var k=A<=p?1:A>=p+26?26:A-p;if(S{var n=r(9303),a=r(1340),i=r(4488),s=RangeError;e.exports=function(e){var t=a(i(this)),r="",o=n(e);if(o<0||o==1/0)throw s("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(r+=t);return r}},6091:(e,t,r)=>{var n=r(6530).PROPER,a=r(7293),i=r(1361);e.exports=function(e){return a((function(){return!!i[e]()||"​…᠎"!=="​…᠎"[e]()||n&&i[e].name!==e}))}},3111:(e,t,r)=>{var n=r(1702),a=r(4488),i=r(1340),s=r(1361),o=n("".replace),c=RegExp("^["+s+"]+"),l=RegExp("(^|[^"+s+"])["+s+"]+$"),h=function(e){return function(t){var r=i(a(t));return 1&e&&(r=o(r,c,"")),2&e&&(r=o(r,l,"$1")),r}};e.exports={start:h(1),end:h(2),trim:h(3)}},6293:(e,t,r)=>{var n=r(7392),a=r(7293),i=r(7854).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol();return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},261:(e,t,r)=>{var n,a,i,s,o=r(7854),c=r(2104),l=r(9974),h=r(614),u=r(2597),d=r(7293),f=r(490),g=r(206),p=r(317),m=r(8053),b=r(6833),y=r(5268),w=o.setImmediate,v=o.clearImmediate,x=o.process,S=o.Dispatch,A=o.Function,k=o.MessageChannel,C=o.String,O=0,F={},I="onreadystatechange";d((function(){n=o.location}));var T=function(e){if(u(F,e)){var t=F[e];delete F[e],t()}},M=function(e){return function(){T(e)}},E=function(e){T(e.data)},P=function(e){o.postMessage(C(e),n.protocol+"//"+n.host)};w&&v||(w=function(e){m(arguments.length,1);var t=h(e)?e:A(e),r=g(arguments,1);return F[++O]=function(){c(t,void 0,r)},a(O),O},v=function(e){delete F[e]},y?a=function(e){x.nextTick(M(e))}:S&&S.now?a=function(e){S.now(M(e))}:k&&!b?(s=(i=new k).port2,i.port1.onmessage=E,a=l(s.postMessage,s)):o.addEventListener&&h(o.postMessage)&&!o.importScripts&&n&&"file:"!==n.protocol&&!d(P)?(a=P,o.addEventListener("message",E,!1)):a=I in p("script")?function(e){f.appendChild(p("script"))[I]=function(){f.removeChild(this),T(e)}}:function(e){setTimeout(M(e),0)}),e.exports={set:w,clear:v}},863:(e,t,r)=>{var n=r(1702);e.exports=n(1..valueOf)},1400:(e,t,r)=>{var n=r(9303),a=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?a(r+t,0):i(r,t)}},4599:(e,t,r)=>{var n=r(7593),a=TypeError;e.exports=function(e){var t=n(e,"number");if("number"==typeof t)throw a("Can't convert number to bigint");return BigInt(t)}},7067:(e,t,r)=>{var n=r(9303),a=r(7466),i=RangeError;e.exports=function(e){if(void 0===e)return 0;var t=n(e),r=a(t);if(t!==r)throw i("Wrong length or index");return r}},5656:(e,t,r)=>{var n=r(8361),a=r(4488);e.exports=function(e){return n(a(e))}},9303:(e,t,r)=>{var n=r(4758);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},7466:(e,t,r)=>{var n=r(9303),a=Math.min;e.exports=function(e){return e>0?a(n(e),9007199254740991):0}},7908:(e,t,r)=>{var n=r(4488),a=Object;e.exports=function(e){return a(n(e))}},4590:(e,t,r)=>{var n=r(3002),a=RangeError;e.exports=function(e,t){var r=n(e);if(r%t)throw a("Wrong offset");return r}},3002:(e,t,r)=>{var n=r(9303),a=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw a("The argument can't be less than 0");return t}},7593:(e,t,r)=>{var n=r(6916),a=r(111),i=r(2190),s=r(8173),o=r(2140),c=r(5112),l=TypeError,h=c("toPrimitive");e.exports=function(e,t){if(!a(e)||i(e))return e;var r,c=s(e,h);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!a(r)||i(r))return r;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),o(e,t)}},4948:(e,t,r)=>{var n=r(7593),a=r(2190);e.exports=function(e){var t=n(e,"string");return a(t)?t:t+""}},1694:(e,t,r)=>{var n={};n[r(5112)("toStringTag")]="z",e.exports="[object z]"===String(n)},1340:(e,t,r)=>{var n=r(648),a=String;e.exports=function(e){if("Symbol"===n(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},7892:e=>{var t=Math.round;e.exports=function(e){var r=t(e);return r<0?0:r>255?255:255&r}},4038:(e,t,r)=>{var n=r(5268);e.exports=function(e){try{if(n)return Function('return require("'+e+'")')()}catch(e){}}},6330:e=>{var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},9843:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(6916),s=r(9781),o=r(3832),c=r(260),l=r(3331),h=r(5787),u=r(9114),d=r(8880),f=r(5988),g=r(7466),p=r(7067),m=r(4590),b=r(7892),y=r(4948),w=r(2597),v=r(648),x=r(111),S=r(2190),A=r(30),k=r(7976),C=r(7674),O=r(8006).f,F=r(7321),I=r(2092).forEach,T=r(6340),M=r(7045),E=r(3070),P=r(1236),R=r(9909),N=r(9587),D=R.get,B=R.set,L=R.enforce,_=E.f,j=P.f,U=a.RangeError,$=l.ArrayBuffer,X=$.prototype,H=l.DataView,q=c.NATIVE_ARRAY_BUFFER_VIEWS,z=c.TYPED_ARRAY_TAG,G=c.TypedArray,W=c.TypedArrayPrototype,V=c.aTypedArrayConstructor,K=c.isTypedArray,Y="BYTES_PER_ELEMENT",J="Wrong length",Z=function(e,t){V(e);for(var r=0,n=t.length,a=new e(n);n>r;)a[r]=t[r++];return a},Q=function(e,t){M(e,t,{configurable:!0,get:function(){return D(this)[t]}})},ee=function(e){var t;return k(X,e)||"ArrayBuffer"==(t=v(e))||"SharedArrayBuffer"==t},te=function(e,t){return K(e)&&!S(t)&&t in e&&f(+t)&&t>=0},re=function(e,t){return t=y(t),te(e,t)?u(2,e[t]):j(e,t)},ne=function(e,t,r){return t=y(t),!(te(e,t)&&x(r)&&w(r,"value"))||w(r,"get")||w(r,"set")||r.configurable||w(r,"writable")&&!r.writable||w(r,"enumerable")&&!r.enumerable?_(e,t,r):(e[t]=r.value,e)};s?(q||(P.f=re,E.f=ne,Q(W,"buffer"),Q(W,"byteOffset"),Q(W,"byteLength"),Q(W,"length")),n({target:"Object",stat:!0,forced:!q},{getOwnPropertyDescriptor:re,defineProperty:ne}),e.exports=function(e,t,r){var s=e.match(/\\d+/)[0]/8,c=e+(r?"Clamped":"")+"Array",l="get"+e,u="set"+e,f=a[c],y=f,w=y&&y.prototype,v={},S=function(e,t){_(e,t,{get:function(){return function(e,t){var r=D(e);return r.view[l](t*s+r.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,n){var a=D(e);a.view[u](t*s+a.byteOffset,r?b(n):n,!0)}(this,t,e)},enumerable:!0})};q?o&&(y=t((function(e,t,r,n){return h(e,w),N(x(t)?ee(t)?void 0!==n?new f(t,m(r,s),n):void 0!==r?new f(t,m(r,s)):new f(t):K(t)?Z(y,t):i(F,y,t):new f(p(t)),e,y)})),C&&C(y,G),I(O(f),(function(e){e in y||d(y,e,f[e])})),y.prototype=w):(y=t((function(e,t,r,n){h(e,w);var a,o,c,l=0,u=0;if(x(t)){if(!ee(t))return K(t)?Z(y,t):i(F,y,t);a=t,u=m(r,s);var d=t.byteLength;if(void 0===n){if(d%s)throw U(J);if((o=d-u)<0)throw U(J)}else if((o=g(n)*s)+u>d)throw U(J);c=o/s}else c=p(t),a=new $(o=c*s);for(B(e,{buffer:a,byteOffset:u,byteLength:o,length:c,view:new H(a)});l{var n=r(7854),a=r(7293),i=r(7072),s=r(260).NATIVE_ARRAY_BUFFER_VIEWS,o=n.ArrayBuffer,c=n.Int8Array;e.exports=!s||!a((function(){c(1)}))||!a((function(){new c(-1)}))||!i((function(e){new c,new c(null),new c(1.5),new c(e)}),!0)||a((function(){return 1!==new c(new o(2),1,void 0).length}))},7321:(e,t,r)=>{var n=r(9974),a=r(6916),i=r(9483),s=r(7908),o=r(6244),c=r(4121),l=r(1246),h=r(7659),u=r(4067),d=r(260).aTypedArrayConstructor,f=r(4599);e.exports=function(e){var t,r,g,p,m,b,y,w,v=i(this),x=s(e),S=arguments.length,A=S>1?arguments[1]:void 0,k=void 0!==A,C=l(x);if(C&&!h(C))for(w=(y=c(x,C)).next,x=[];!(b=a(w,y)).done;)x.push(b.value);for(k&&S>2&&(A=n(A,arguments[2])),r=o(x),g=new(d(v))(r),p=u(g),t=0;r>t;t++)m=k?A(x[t],t):x[t],g[t]=p?f(m):+m;return g}},9711:(e,t,r)=>{var n=r(1702),a=0,i=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++a+i,36)}},5143:(e,t,r)=>{var n=r(7293),a=r(5112),i=r(9781),s=r(1913),o=a("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),s&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(s||!i)||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[o]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host}))},3307:(e,t,r)=>{var n=r(6293);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},3353:(e,t,r)=>{var n=r(9781),a=r(7293);e.exports=n&&a((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},8053:e=>{var t=TypeError;e.exports=function(e,r){if(e{var n=r(7854),a=r(614),i=n.WeakMap;e.exports=a(i)&&/native code/.test(String(i))},5112:(e,t,r)=>{var n=r(7854),a=r(2309),i=r(2597),s=r(9711),o=r(6293),c=r(3307),l=n.Symbol,h=a("wks"),u=c?l.for||l:l&&l.withoutSetter||s;e.exports=function(e){return i(h,e)||(h[e]=o&&i(l,e)?l[e]:u("Symbol."+e)),h[e]}},1361:e=>{e.exports="\\t\\n\\v\\f\\r                 \\u2028\\u2029\\ufeff"},9191:(e,t,r)=>{var n=r(5005),a=r(2597),i=r(8880),s=r(7976),o=r(7674),c=r(9920),l=r(2626),h=r(9587),u=r(6277),d=r(8340),f=r(5392),g=r(9781),p=r(1913);e.exports=function(e,t,r,m){var b="stackTraceLimit",y=m?2:1,w=e.split("."),v=w[w.length-1],x=n.apply(null,w);if(x){var S=x.prototype;if(!p&&a(S,"cause")&&delete S.cause,!r)return x;var A=n("Error"),k=t((function(e,t){var r=u(m?t:e,void 0),n=m?new x(e):new x;return void 0!==r&&i(n,"message",r),f(n,k,n.stack,2),this&&s(S,this)&&h(n,this,k),arguments.length>y&&d(n,arguments[y]),n}));if(k.prototype=S,"Error"!==v?o?o(k,A):c(k,A,{name:!0}):g&&b in x&&(l(k,x,b),l(k,x,"prepareStackTrace")),c(k,x),!p)try{S.name!==v&&i(S,"name",v),S.constructor=k}catch(e){}return k}}},8264:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(3331),s=r(6340),o="ArrayBuffer",c=i[o];n({global:!0,constructor:!0,forced:a[o]!==c},{ArrayBuffer:c}),s(o)},9575:(e,t,r)=>{var n=r(2109),a=r(1470),i=r(7293),s=r(3331),o=r(9670),c=r(1400),l=r(7466),h=r(6707),u=s.ArrayBuffer,d=s.DataView,f=d.prototype,g=a(u.prototype.slice),p=a(f.getUint8),m=a(f.setUint8);n({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i((function(){return!new u(2).slice(1,void 0).byteLength}))},{slice:function(e,t){if(g&&void 0===t)return g(o(this),e);for(var r=o(this).byteLength,n=c(e,r),a=c(void 0===t?r:t,r),i=new(h(this,u))(l(a-n)),s=new d(this),f=new d(i),b=0;n{var n=r(2109),a=r(7908),i=r(6244),s=r(9303),o=r(1223);n({target:"Array",proto:!0},{at:function(e){var t=a(this),r=i(t),n=s(e),o=n>=0?n:r+n;return o<0||o>=r?void 0:t[o]}}),o("at")},7287:(e,t,r)=>{var n=r(2109),a=r(9671).findLastIndex,i=r(1223);n({target:"Array",proto:!0},{findLastIndex:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLastIndex")},7635:(e,t,r)=>{var n=r(2109),a=r(9671).findLast,i=r(1223);n({target:"Array",proto:!0},{findLast:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLast")},4944:(e,t,r)=>{var n=r(2109),a=r(6790),i=r(7908),s=r(6244),o=r(9303),c=r(5417);n({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=i(this),r=s(t),n=c(t,0);return n.length=a(n,t,t,r,0,void 0===e?1:o(e)),n}})},6699:(e,t,r)=>{var n=r(2109),a=r(1318).includes,i=r(7293),s=r(1223);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},6992:(e,t,r)=>{var n=r(5656),a=r(1223),i=r(7497),s=r(9909),o=r(3070).f,c=r(1656),l=r(6178),h=r(1913),u=r(9781),d="Array Iterator",f=s.set,g=s.getterFor(d);e.exports=c(Array,"Array",(function(e,t){f(this,{type:d,target:n(e),index:0,kind:t})}),(function(){var e=g(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,l(void 0,!0)):l("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values");var p=i.Arguments=i.Array;if(a("keys"),a("values"),a("entries"),!h&&u&&"values"!==p.name)try{o(p,"name",{value:"values"})}catch(e){}},7658:(e,t,r)=>{var n=r(2109),a=r(7908),i=r(6244),s=r(3658),o=r(7207);n({target:"Array",proto:!0,arity:1,forced:r(7293)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var t=a(this),r=i(t),n=arguments.length;o(r+n);for(var c=0;c{var n=r(2109),a=r(3671).left,i=r(9341),s=r(7392);n({target:"Array",proto:!0,forced:!r(5268)&&s>79&&s<83||!i("reduce")},{reduce:function(e){var t=arguments.length;return a(this,e,t,t>1?arguments[1]:void 0)}})},2707:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(9662),s=r(7908),o=r(6244),c=r(5117),l=r(1340),h=r(7293),u=r(4362),d=r(9341),f=r(8886),g=r(256),p=r(7392),m=r(8008),b=[],y=a(b.sort),w=a(b.push),v=h((function(){b.sort(void 0)})),x=h((function(){b.sort(null)})),S=d("sort"),A=!h((function(){if(p)return p<70;if(!(f&&f>3)){if(g)return!0;if(m)return m<603;var e,t,r,n,a="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)b.push({k:t+n,v:r})}for(b.sort((function(e,t){return t.v-e.v})),n=0;nl(r)?1:-1}}(e)),r=o(a),n=0;n{r(1223)("flat")},541:(e,t,r)=>{var n=r(2109),a=r(7908),i=r(6244),s=r(3658),o=r(5117),c=r(7207);n({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}()},{unshift:function(e){var t=a(this),r=i(t),n=arguments.length;if(n){c(r+n);for(var l=r;l--;){var h=l+n;l in t?t[h]=t[l]:o(t,h)}for(var u=0;u{var n=r(2109),a=r(1572),i=r(5656),s=Array;n({target:"Array",proto:!0},{with:function(e,t){return a(i(this),s,e,t)}})},1703:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(2104),s=r(9191),o="WebAssembly",c=a[o],l=7!==Error("e",{cause:7}).cause,h=function(e,t){var r={};r[e]=s(e,t,l),n({global:!0,constructor:!0,arity:1,forced:l},r)},u=function(e,t){if(c&&c[e]){var r={};r[e]=s(o+"."+e,t,l),n({target:o,stat:!0,constructor:!0,arity:1,forced:l},r)}};h("Error",(function(e){return function(t){return i(e,this,arguments)}})),h("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),h("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),h("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),h("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),h("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),h("URIError",(function(e){return function(t){return i(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},5837:(e,t,r)=>{var n=r(2109),a=r(7854);n({global:!0,forced:a.globalThis!==a},{globalThis:a})},8862:(e,t,r)=>{var n=r(2109),a=r(5005),i=r(2104),s=r(6916),o=r(1702),c=r(7293),l=r(614),h=r(2190),u=r(206),d=r(8044),f=r(6293),g=String,p=a("JSON","stringify"),m=o(/./.exec),b=o("".charAt),y=o("".charCodeAt),w=o("".replace),v=o(1..toString),x=/[\\uD800-\\uDFFF]/g,S=/^[\\uD800-\\uDBFF]$/,A=/^[\\uDC00-\\uDFFF]$/,k=!f||c((function(){var e=a("Symbol")();return"[null]"!=p([e])||"{}"!=p({a:e})||"{}"!=p(Object(e))})),C=c((function(){return'"\\\\udf06\\\\ud834"'!==p("\\udf06\\ud834")||'"\\\\udead"'!==p("\\udead")})),O=function(e,t){var r=u(arguments),n=d(t);if(l(n)||void 0!==e&&!h(e))return r[1]=function(e,t){if(l(n)&&(t=s(n,this,g(e),t)),!h(t))return t},i(p,null,r)},F=function(e,t,r){var n=b(r,t-1),a=b(r,t+1);return m(S,e)&&!m(A,a)||m(A,e)&&!m(S,n)?"\\\\u"+v(y(e,0),16):e};p&&n({target:"JSON",stat:!0,arity:3,forced:k||C},{stringify:function(e,t,r){var n=u(arguments),a=i(k?O:p,null,n);return C&&"string"==typeof a?w(a,x,F):a}})},5438:(e,t,r)=>{var n=r(2109),a=Math.hypot,i=Math.abs,s=Math.sqrt;n({target:"Math",stat:!0,arity:2,forced:!!a&&a(1/0,NaN)!==1/0},{hypot:function(e,t){for(var r,n,a=0,o=0,c=arguments.length,l=0;o0?(n=r/l)*n:r;return l===1/0?1/0:l*s(a)}})},6977:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(9303),s=r(863),o=r(8415),c=r(7293),l=RangeError,h=String,u=Math.floor,d=a(o),f=a("".slice),g=a(1..toFixed),p=function(e,t,r){return 0===t?r:t%2==1?p(e,t-1,r*e):p(e*e,t/2,r)},m=function(e,t,r){for(var n=-1,a=r;++n<6;)a+=t*e[n],e[n]=a%1e7,a=u(a/1e7)},b=function(e,t){for(var r=6,n=0;--r>=0;)n+=e[r],e[r]=u(n/t),n=n%t*1e7},y=function(e){for(var t=6,r="";--t>=0;)if(""!==r||0===t||0!==e[t]){var n=h(e[t]);r=""===r?n:r+d("0",7-n.length)+n}return r};n({target:"Number",proto:!0,forced:c((function(){return"0.000"!==g(8e-5,3)||"1"!==g(.9,0)||"1.25"!==g(1.255,2)||"1000000000000000128"!==g(0xde0b6b3a7640080,0)}))||!c((function(){g({})}))},{toFixed:function(e){var t,r,n,a,o=s(this),c=i(e),u=[0,0,0,0,0,0],g="",w="0";if(c<0||c>20)throw l("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return h(o);if(o<0&&(g="-",o=-o),o>1e-21)if(r=(t=function(e){for(var t=0,r=e;r>=4096;)t+=12,r/=4096;for(;r>=2;)t+=1,r/=2;return t}(o*p(2,69,1))-69)<0?o*p(2,-t,1):o/p(2,t,1),r*=4503599627370496,(t=52-t)>0){for(m(u,0,r),n=c;n>=7;)m(u,1e7,0),n-=7;for(m(u,p(10,n,1),0),n=t-1;n>=23;)b(u,1<<23),n-=23;b(u,1<0?g+((a=w.length)<=c?"0."+d("0",c-a)+w:f(w,0,a-c)+"."+f(w,a-c)):g+w}})},9601:(e,t,r)=>{var n=r(2109),a=r(1574);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==a},{assign:a})},6314:(e,t,r)=>{r(2109)({target:"Object",stat:!0},{hasOwn:r(2597)})},4678:(e,t,r)=>{var n=r(2109),a=r(2814);n({global:!0,forced:parseFloat!=a},{parseFloat:a})},1058:(e,t,r)=>{var n=r(2109),a=r(3009);n({global:!0,forced:parseInt!=a},{parseInt:a})},7922:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{allSettled:function(e){var t=this,r=s.f(t),n=r.resolve,l=r.reject,h=o((function(){var r=i(t.resolve),s=[],o=0,l=1;c(e,(function(e){var i=o++,c=!1;l++,a(r,t,e).then((function(e){c||(c=!0,s[i]={status:"fulfilled",value:e},--l||n(s))}),(function(e){c||(c=!0,s[i]={status:"rejected",reason:e},--l||n(s))}))})),--l||n(s)}));return h.error&&l(h.value),r.promise}})},821:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{all:function(e){var t=this,r=s.f(t),n=r.resolve,l=r.reject,h=o((function(){var r=i(t.resolve),s=[],o=0,h=1;c(e,(function(e){var i=o++,c=!1;h++,a(r,t,e).then((function(e){c||(c=!0,s[i]=e,--h||n(s))}),l)})),--h||n(s)}));return h.error&&l(h.value),r.promise}})},4164:(e,t,r)=>{var n=r(2109),a=r(1913),i=r(3702).CONSTRUCTOR,s=r(2492),o=r(5005),c=r(614),l=r(8052),h=s&&s.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!a&&c(s)){var u=o("Promise").prototype.catch;h.catch!==u&&l(h,"catch",u,{unsafe:!0})}},3401:(e,t,r)=>{var n,a,i,s=r(2109),o=r(1913),c=r(5268),l=r(7854),h=r(6916),u=r(8052),d=r(7674),f=r(8003),g=r(6340),p=r(9662),m=r(614),b=r(111),y=r(5787),w=r(6707),v=r(261).set,x=r(5948),S=r(842),A=r(2534),k=r(8572),C=r(9909),O=r(2492),F=r(3702),I=r(8523),T="Promise",M=F.CONSTRUCTOR,E=F.REJECTION_EVENT,P=F.SUBCLASSING,R=C.getterFor(T),N=C.set,D=O&&O.prototype,B=O,L=D,_=l.TypeError,j=l.document,U=l.process,$=I.f,X=$,H=!!(j&&j.createEvent&&l.dispatchEvent),q="unhandledrejection",z=function(e){var t;return!(!b(e)||!m(t=e.then))&&t},G=function(e,t){var r,n,a,i=t.value,s=1==t.state,o=s?e.ok:e.fail,c=e.resolve,l=e.reject,u=e.domain;try{o?(s||(2===t.rejection&&J(t),t.rejection=1),!0===o?r=i:(u&&u.enter(),r=o(i),u&&(u.exit(),a=!0)),r===e.promise?l(_("Promise-chain cycle")):(n=z(r))?h(n,r,c,l):c(r)):l(i)}catch(e){u&&!a&&u.exit(),l(e)}},W=function(e,t){e.notified||(e.notified=!0,x((function(){for(var r,n=e.reactions;r=n.get();)G(r,e);e.notified=!1,t&&!e.rejection&&K(e)})))},V=function(e,t,r){var n,a;H?((n=j.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),l.dispatchEvent(n)):n={promise:t,reason:r},!E&&(a=l["on"+e])?a(n):e===q&&S("Unhandled promise rejection",r)},K=function(e){h(v,l,(function(){var t,r=e.facade,n=e.value;if(Y(e)&&(t=A((function(){c?U.emit("unhandledRejection",n,r):V(q,r,n)})),e.rejection=c||Y(e)?2:1,t.error))throw t.value}))},Y=function(e){return 1!==e.rejection&&!e.parent},J=function(e){h(v,l,(function(){var t=e.facade;c?U.emit("rejectionHandled",t):V("rejectionhandled",t,e.value)}))},Z=function(e,t,r){return function(n){e(t,n,r)}},Q=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw _("Promise can't be resolved itself");var n=z(t);n?x((function(){var r={done:!1};try{h(n,t,Z(ee,r,e),Z(Q,r,e))}catch(t){Q(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Q({done:!1},t,e)}}};if(M&&(L=(B=function(e){y(this,L),p(e),h(n,this);var t=R(this);try{e(Z(ee,t),Z(Q,t))}catch(e){Q(t,e)}}).prototype,(n=function(e){N(this,{type:T,done:!1,notified:!1,parent:!1,reactions:new k,rejection:!1,state:0,value:void 0})}).prototype=u(L,"then",(function(e,t){var r=R(this),n=$(w(this,B));return r.parent=!0,n.ok=!m(e)||e,n.fail=m(t)&&t,n.domain=c?U.domain:void 0,0==r.state?r.reactions.add(n):x((function(){G(n,r)})),n.promise})),a=function(){var e=new n,t=R(e);this.promise=e,this.resolve=Z(ee,t),this.reject=Z(Q,t)},I.f=$=function(e){return e===B||void 0===e?new a(e):X(e)},!o&&m(O)&&D!==Object.prototype)){i=D.then,P||u(D,"then",(function(e,t){var r=this;return new B((function(e,t){h(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete D.constructor}catch(e){}d&&d(D,L)}s({global:!0,constructor:!0,wrap:!0,forced:M},{Promise:B}),f(B,T,!1,!0),g(T)},7727:(e,t,r)=>{var n=r(2109),a=r(1913),i=r(2492),s=r(7293),o=r(5005),c=r(614),l=r(6707),h=r(9478),u=r(8052),d=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&s((function(){d.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=l(this,o("Promise")),r=c(e);return this.then(r?function(r){return h(t,e()).then((function(){return r}))}:e,r?function(r){return h(t,e()).then((function(){throw r}))}:e)}}),!a&&c(i)){var f=o("Promise").prototype.finally;d.finally!==f&&u(d,"finally",f,{unsafe:!0})}},8674:(e,t,r)=>{r(3401),r(821),r(4164),r(6027),r(683),r(6294)},6027:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(9662),s=r(8523),o=r(2534),c=r(408);n({target:"Promise",stat:!0,forced:r(612)},{race:function(e){var t=this,r=s.f(t),n=r.reject,l=o((function(){var s=i(t.resolve);c(e,(function(e){a(s,t,e).then(r.resolve,n)}))}));return l.error&&n(l.value),r.promise}})},683:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(8523);n({target:"Promise",stat:!0,forced:r(3702).CONSTRUCTOR},{reject:function(e){var t=i.f(this);return a(t.reject,void 0,e),t.promise}})},6294:(e,t,r)=>{var n=r(2109),a=r(5005),i=r(1913),s=r(2492),o=r(3702).CONSTRUCTOR,c=r(9478),l=a("Promise"),h=i&&!o;n({target:"Promise",stat:!0,forced:i||o},{resolve:function(e){return c(h&&this===l?s:this,e)}})},1299:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(8003);n({global:!0},{Reflect:{}}),i(a.Reflect,"Reflect",!0)},4603:(e,t,r)=>{var n=r(9781),a=r(7854),i=r(1702),s=r(4705),o=r(9587),c=r(8880),l=r(8006).f,h=r(7976),u=r(7850),d=r(1340),f=r(4706),g=r(2999),p=r(2626),m=r(8052),b=r(7293),y=r(2597),w=r(9909).enforce,v=r(6340),x=r(5112),S=r(9441),A=r(7168),k=x("match"),C=a.RegExp,O=C.prototype,F=a.SyntaxError,I=i(O.exec),T=i("".charAt),M=i("".replace),E=i("".indexOf),P=i("".slice),R=/^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/,N=/a/g,D=/a/g,B=new C(N)!==N,L=g.MISSED_STICKY,_=g.UNSUPPORTED_Y;if(s("RegExp",n&&(!B||L||S||A||b((function(){return D[k]=!1,C(N)!=N||C(D)==D||"/a/i"!=C(N,"i")}))))){for(var j=function(e,t){var r,n,a,i,s,l,g=h(O,this),p=u(e),m=void 0===t,b=[],v=e;if(!g&&p&&m&&e.constructor===j)return e;if((p||h(O,e))&&(e=e.source,m&&(t=f(v))),e=void 0===e?"":d(e),t=void 0===t?"":d(t),v=e,S&&"dotAll"in N&&(n=!!t&&E(t,"s")>-1)&&(t=M(t,/s/g,"")),r=t,L&&"sticky"in N&&(a=!!t&&E(t,"y")>-1)&&_&&(t=M(t,/y/g,"")),A&&(i=function(e){for(var t,r=e.length,n=0,a="",i=[],s={},o=!1,c=!1,l=0,h="";n<=r;n++){if("\\\\"===(t=T(e,n)))t+=T(e,++n);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:I(R,P(e,n+1))&&(n+=2,c=!0),a+=t,l++;continue;case">"===t&&c:if(""===h||y(s,h))throw new F("Invalid capture group name");s[h]=!0,i[i.length]=[h,l],c=!1,h="";continue}c?h+=t:a+=t}return[a,i]}(e),e=i[0],b=i[1]),s=o(C(e,t),g?this:O,j),(n||a||b.length)&&(l=w(s),n&&(l.dotAll=!0,l.raw=j(function(e){for(var t,r=e.length,n=0,a="",i=!1;n<=r;n++)"\\\\"!==(t=T(e,n))?i||"."!==t?("["===t?i=!0:"]"===t&&(i=!1),a+=t):a+="[\\\\s\\\\S]":a+=t+T(e,++n);return a}(e),r)),a&&(l.sticky=!0),b.length&&(l.groups=b)),e!==v)try{c(s,"source",""===v?"(?:)":v)}catch(e){}return s},U=l(C),$=0;U.length>$;)p(j,C,U[$++]);O.constructor=j,j.prototype=O,m(a,"RegExp",j,{constructor:!0})}v("RegExp")},8450:(e,t,r)=>{var n=r(9781),a=r(9441),i=r(4326),s=r(7045),o=r(9909).get,c=RegExp.prototype,l=TypeError;n&&a&&s(c,"dotAll",{configurable:!0,get:function(){if(this!==c){if("RegExp"===i(this))return!!o(this).dotAll;throw l("Incompatible receiver, RegExp required")}}})},4916:(e,t,r)=>{var n=r(2109),a=r(2261);n({target:"RegExp",proto:!0,forced:/./.exec!==a},{exec:a})},2087:(e,t,r)=>{var n=r(7854),a=r(9781),i=r(7045),s=r(7066),o=r(7293),c=n.RegExp,l=c.prototype;a&&o((function(){var e=!0;try{c(".","d")}catch(t){e=!1}var t={},r="",n=e?"dgimsy":"gimsy",a=function(e,n){Object.defineProperty(t,e,{get:function(){return r+=n,!0}})},i={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(i.hasIndices="d"),i)a(s,i[s]);return Object.getOwnPropertyDescriptor(l,"flags").get.call(t)!==n||r!==n}))&&i(l,"flags",{configurable:!0,get:s})},7601:(e,t,r)=>{r(4916);var n,a,i=r(2109),s=r(6916),o=r(614),c=r(9670),l=r(1340),h=(n=!1,(a=/[ac]/).exec=function(){return n=!0,/./.exec.apply(this,arguments)},!0===a.test("abc")&&n),u=/./.test;i({target:"RegExp",proto:!0,forced:!h},{test:function(e){var t=c(this),r=l(e),n=t.exec;if(!o(n))return s(u,t,r);var a=s(n,t,r);return null!==a&&(c(a),!0)}})},9714:(e,t,r)=>{var n=r(6530).PROPER,a=r(8052),i=r(9670),s=r(1340),o=r(7293),c=r(4706),l="toString",h=RegExp.prototype[l],u=o((function(){return"/a/b"!=h.call({source:"a",flags:"b"})})),d=n&&h.name!=l;(u||d)&&a(RegExp.prototype,l,(function(){var e=i(this);return"/"+s(e.source)+"/"+s(c(e))}),{unsafe:!0})},4506:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(4488),s=r(9303),o=r(1340),c=r(7293),l=a("".charAt);n({target:"String",proto:!0,forced:c((function(){return"\\ud842"!=="𠮷".at(-2)}))},{at:function(e){var t=o(i(this)),r=t.length,n=s(e),a=n>=0?n:r+n;return a<0||a>=r?void 0:l(t,a)}})},7852:(e,t,r)=>{var n,a=r(2109),i=r(1470),s=r(1236).f,o=r(7466),c=r(1340),l=r(3929),h=r(4488),u=r(4964),d=r(1913),f=i("".endsWith),g=i("".slice),p=Math.min,m=u("endsWith");a({target:"String",proto:!0,forced:!(!d&&!m&&(n=s(String.prototype,"endsWith"),n&&!n.writable)||m)},{endsWith:function(e){var t=c(h(this));l(e);var r=arguments.length>1?arguments[1]:void 0,n=t.length,a=void 0===r?n:p(o(r),n),i=c(e);return f?f(t,i,a):g(t,a-i.length,a)===i}})},2023:(e,t,r)=>{var n=r(2109),a=r(1702),i=r(3929),s=r(4488),o=r(1340),c=r(4964),l=a("".indexOf);n({target:"String",proto:!0,forced:!c("includes")},{includes:function(e){return!!~l(o(s(this)),o(i(e)),arguments.length>1?arguments[1]:void 0)}})},8783:(e,t,r)=>{var n=r(8710).charAt,a=r(1340),i=r(9909),s=r(1656),o=r(6178),c="String Iterator",l=i.set,h=i.getterFor(c);s(String,"String",(function(e){l(this,{type:c,string:a(e),index:0})}),(function(){var e,t=h(this),r=t.string,a=t.index;return a>=r.length?o(void 0,!0):(e=n(r,a),t.index+=e.length,o(e,!1))}))},4723:(e,t,r)=>{var n=r(6916),a=r(7007),i=r(9670),s=r(8554),o=r(7466),c=r(1340),l=r(4488),h=r(8173),u=r(1530),d=r(7651);a("match",(function(e,t,r){return[function(t){var r=l(this),a=s(t)?void 0:h(t,e);return a?n(a,t,r):new RegExp(t)[e](c(r))},function(e){var n=i(this),a=c(e),s=r(t,n,a);if(s.done)return s.value;if(!n.global)return d(n,a);var l=n.unicode;n.lastIndex=0;for(var h,f=[],g=0;null!==(h=d(n,a));){var p=c(h[0]);f[g]=p,""===p&&(n.lastIndex=u(a,o(n.lastIndex),l)),g++}return 0===g?null:f}]}))},8757:(e,t,r)=>{var n=r(2109),a=r(6916),i=r(1702),s=r(4488),o=r(614),c=r(8554),l=r(7850),h=r(1340),u=r(8173),d=r(4706),f=r(647),g=r(5112),p=r(1913),m=g("replace"),b=TypeError,y=i("".indexOf),w=i("".replace),v=i("".slice),x=Math.max,S=function(e,t,r){return r>e.length?-1:""===t?r:y(e,t,r)};n({target:"String",proto:!0},{replaceAll:function(e,t){var r,n,i,g,A,k,C,O,F,I=s(this),T=0,M=0,E="";if(!c(e)){if((r=l(e))&&(n=h(s(d(e))),!~y(n,"g")))throw b("\`.replaceAll\` does not allow non-global regexes");if(i=u(e,m))return a(i,e,I,t);if(p&&r)return w(h(I),e,t)}for(g=h(I),A=h(e),(k=o(t))||(t=h(t)),C=A.length,O=x(1,C),T=S(g,A,0);-1!==T;)F=k?h(t(A,T,g)):f(A,g,T,[],void 0,t),E+=v(g,M,T)+F,M=T+C,T=S(g,A,T+O);return M{var n=r(2104),a=r(6916),i=r(1702),s=r(7007),o=r(7293),c=r(9670),l=r(614),h=r(8554),u=r(9303),d=r(7466),f=r(1340),g=r(4488),p=r(1530),m=r(8173),b=r(647),y=r(7651),w=r(5112)("replace"),v=Math.max,x=Math.min,S=i([].concat),A=i([].push),k=i("".indexOf),C=i("".slice),O="$0"==="a".replace(/./,"$0"),F=!!/./[w]&&""===/./[w]("a","$0");s("replace",(function(e,t,r){var i=F?"$":"$0";return[function(e,r){var n=g(this),i=h(e)?void 0:m(e,w);return i?a(i,e,n,r):a(t,f(n),e,r)},function(e,a){var s=c(this),o=f(e);if("string"==typeof a&&-1===k(a,i)&&-1===k(a,"$<")){var h=r(t,s,o,a);if(h.done)return h.value}var g=l(a);g||(a=f(a));var m=s.global;if(m){var w=s.unicode;s.lastIndex=0}for(var O=[];;){var F=y(s,o);if(null===F)break;if(A(O,F),!m)break;""===f(F[0])&&(s.lastIndex=p(o,d(s.lastIndex),w))}for(var I,T="",M=0,E=0;E=M&&(T+=C(o,M,R)+_,M=R+P.length)}return T+C(o,M)}]}),!!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!O||F)},3123:(e,t,r)=>{var n=r(2104),a=r(6916),i=r(1702),s=r(7007),o=r(9670),c=r(8554),l=r(7850),h=r(4488),u=r(6707),d=r(1530),f=r(7466),g=r(1340),p=r(8173),m=r(1589),b=r(7651),y=r(2261),w=r(2999),v=r(7293),x=w.UNSUPPORTED_Y,S=4294967295,A=Math.min,k=[].push,C=i(/./.exec),O=i(k),F=i("".slice);s("split",(function(e,t,r){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var i=g(h(this)),s=void 0===r?S:r>>>0;if(0===s)return[];if(void 0===e)return[i];if(!l(e))return a(t,i,e,s);for(var o,c,u,d=[],f=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),p=0,b=new RegExp(e.source,f+"g");(o=a(y,b,i))&&!((c=b.lastIndex)>p&&(O(d,F(i,p,o.index)),o.length>1&&o.index=s));)b.lastIndex===o.index&&b.lastIndex++;return p===i.length?!u&&C(b,"")||O(d,""):O(d,F(i,p)),d.length>s?m(d,0,s):d}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:a(t,this,e,r)}:t,[function(t,r){var n=h(this),s=c(t)?void 0:p(t,e);return s?a(s,t,n,r):a(i,g(n),t,r)},function(e,n){var a=o(this),s=g(e),c=r(i,a,s,n,i!==t);if(c.done)return c.value;var l=u(a,RegExp),h=a.unicode,p=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(x?"g":"y"),m=new l(x?"^(?:"+a.source+")":a,p),y=void 0===n?S:n>>>0;if(0===y)return[];if(0===s.length)return null===b(m,s)?[s]:[];for(var w=0,v=0,k=[];v{var n,a=r(2109),i=r(1470),s=r(1236).f,o=r(7466),c=r(1340),l=r(3929),h=r(4488),u=r(4964),d=r(1913),f=i("".startsWith),g=i("".slice),p=Math.min,m=u("startsWith");a({target:"String",proto:!0,forced:!(!d&&!m&&(n=s(String.prototype,"startsWith"),n&&!n.writable)||m)},{startsWith:function(e){var t=c(h(this));l(e);var r=o(p(arguments.length>1?arguments[1]:void 0,t.length)),n=c(e);return f?f(t,n,r):g(t,r,r+n.length)===n}})},3210:(e,t,r)=>{var n=r(2109),a=r(3111).trim;n({target:"String",proto:!0,forced:r(6091)("trim")},{trim:function(){return a(this)}})},1817:(e,t,r)=>{var n=r(2109),a=r(9781),i=r(7854),s=r(1702),o=r(2597),c=r(614),l=r(7976),h=r(1340),u=r(7045),d=r(9920),f=i.Symbol,g=f&&f.prototype;if(a&&c(f)&&(!("description"in g)||void 0!==f().description)){var p={},m=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:h(arguments[0]),t=l(g,this)?new f(e):void 0===e?f():f(e);return""===e&&(p[t]=!0),t};d(m,f),m.prototype=g,g.constructor=m;var b="Symbol(test)"==String(f("test")),y=s(g.valueOf),w=s(g.toString),v=/^Symbol\\((.*)\\)[^)]+$/,x=s("".replace),S=s("".slice);u(g,"description",{configurable:!0,get:function(){var e=y(this);if(o(p,e))return"";var t=w(e),r=b?S(t,7,-1):x(t,v,"$1");return""===r?void 0:r}}),n({global:!0,constructor:!0,forced:!0},{Symbol:m})}},8675:(e,t,r)=>{var n=r(260),a=r(6244),i=r(9303),s=n.aTypedArray;(0,n.exportTypedArrayMethod)("at",(function(e){var t=s(this),r=a(t),n=i(e),o=n>=0?n:r+n;return o<0||o>=r?void 0:t[o]}))},3105:(e,t,r)=>{var n=r(260),a=r(1285),i=r(4599),s=r(648),o=r(6916),c=r(1702),l=r(7293),h=n.aTypedArray,u=n.exportTypedArrayMethod,d=c("".slice);u("fill",(function(e){var t=arguments.length;h(this);var r="Big"===d(s(this),0,3)?i(e):+e;return o(a,this,r,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}),l((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e})))},2958:(e,t,r)=>{var n=r(260),a=r(9671).findLastIndex,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLastIndex",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},3408:(e,t,r)=>{var n=r(260),a=r(9671).findLast,i=n.aTypedArray;(0,n.exportTypedArrayMethod)("findLast",(function(e){return a(i(this),e,arguments.length>1?arguments[1]:void 0)}))},4197:(e,t,r)=>{r(9843)("Float32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},6495:(e,t,r)=>{r(9843)("Float64",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},5109:(e,t,r)=>{r(9843)("Int16",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},5125:(e,t,r)=>{r(9843)("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},7145:(e,t,r)=>{r(9843)("Int8",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},3462:(e,t,r)=>{var n=r(7854),a=r(6916),i=r(260),s=r(6244),o=r(4590),c=r(7908),l=r(7293),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,g=i.aTypedArray,p=i.exportTypedArrayMethod,m=!l((function(){var e=new Uint8ClampedArray(2);return a(f,e,{length:1,0:3},1),3!==e[1]})),b=m&&i.NATIVE_ARRAY_BUFFER_VIEWS&&l((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){g(this);var t=o(arguments.length>1?arguments[1]:void 0,1),r=c(e);if(m)return a(f,this,r,t);var n=this.length,i=s(r),l=0;if(i+t>n)throw h("Wrong length");for(;l{var n=r(7854),a=r(1470),i=r(7293),s=r(9662),o=r(4362),c=r(260),l=r(8886),h=r(256),u=r(7392),d=r(8008),f=c.aTypedArray,g=c.exportTypedArrayMethod,p=n.Uint16Array,m=p&&a(p.prototype.sort),b=!(!m||i((function(){m(new p(2),null)}))&&i((function(){m(new p(2),{})}))),y=!!m&&!i((function(){if(u)return u<74;if(l)return l<67;if(h)return!0;if(d)return d<602;var e,t,r=new p(516),n=Array(516);for(e=0;e<516;e++)t=e%4,r[e]=515-e,n[e]=e-2*t+3;for(m(r,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(r[e]!==n[e])return!0}));g("sort",(function(e){return void 0!==e&&s(e),y?m(this,e):o(f(this),function(e){return function(t,r){return void 0!==e?+e(t,r)||0:r!=r?-1:t!=t?1:0===t&&0===r?1/t>0&&1/r<0?1:-1:t>r}}(e))}),!y||b)},2974:(e,t,r)=>{var n=r(7854),a=r(2104),i=r(260),s=r(7293),o=r(206),c=n.Int8Array,l=i.aTypedArray,h=i.exportTypedArrayMethod,u=[].toLocaleString,d=!!c&&s((function(){u.call(new c(1))}));h("toLocaleString",(function(){return a(u,d?o(l(this)):l(this),o(arguments))}),s((function(){return[1,2].toLocaleString()!=new c([1,2]).toLocaleString()}))||!s((function(){c.prototype.toLocaleString.call([1,2])})))},1439:(e,t,r)=>{var n=r(1843),a=r(260),i=a.aTypedArray,s=a.exportTypedArrayMethod,o=a.getTypedArrayConstructor;s("toReversed",(function(){return n(i(this),o(this))}))},7585:(e,t,r)=>{var n=r(260),a=r(1702),i=r(9662),s=r(7745),o=n.aTypedArray,c=n.getTypedArrayConstructor,l=n.exportTypedArrayMethod,h=a(n.TypedArrayPrototype.sort);l("toSorted",(function(e){void 0!==e&&i(e);var t=o(this),r=s(c(t),t);return h(r,e)}))},8255:(e,t,r)=>{r(9843)("Uint16",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},9135:(e,t,r)=>{r(9843)("Uint32",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},2472:(e,t,r)=>{r(9843)("Uint8",(function(e){return function(t,r,n){return e(this,t,r,n)}}))},9743:(e,t,r)=>{r(9843)("Uint8",(function(e){return function(t,r,n){return e(this,t,r,n)}}),!0)},5315:(e,t,r)=>{var n=r(1572),a=r(260),i=r(4067),s=r(9303),o=r(4599),c=a.aTypedArray,l=a.getTypedArrayConstructor,h=a.exportTypedArrayMethod,u=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}();h("with",{with:function(e,t){var r=c(this),a=s(e),h=i(r)?o(t):+t;return n(r,l(r),a,h)}}.with,!u)},1202:(e,t,r)=>{var n,a=r(6677),i=r(7854),s=r(1702),o=r(9190),c=r(2423),l=r(7710),h=r(9320),u=r(111),d=r(9909).enforce,f=r(7293),g=r(4811),p=Object,m=Array.isArray,b=p.isExtensible,y=p.isFrozen,w=p.isSealed,v=p.freeze,x=p.seal,S={},A={},k=!i.ActiveXObject&&"ActiveXObject"in i,C=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},O=l("WeakMap",C,h),F=O.prototype,I=s(F.set);if(g)if(k){n=h.getConstructor(C,"WeakMap",!0),c.enable();var T=s(F.delete),M=s(F.has),E=s(F.get);o(F,{delete:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),T(this,e)||t.frozen.delete(e)}return T(this,e)},has:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)||t.frozen.has(e)}return M(this,e)},get:function(e){if(u(e)&&!b(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)?E(this,e):t.frozen.get(e)}return E(this,e)},set:function(e,t){if(u(e)&&!b(e)){var r=d(this);r.frozen||(r.frozen=new n),M(this,e)?I(this,e,t):r.frozen.set(e,t)}else I(this,e,t);return this}})}else a&&f((function(){var e=v([]);return I(new O,e,1),!y(e)}))&&o(F,{set:function(e,t){var r;return m(e)&&(y(e)?r=S:w(e)&&(r=A)),I(this,e,t),r==S&&v(e),r==A&&x(e),this}})},4129:(e,t,r)=>{r(1202)},3948:(e,t,r)=>{var n=r(7854),a=r(8324),i=r(8509),s=r(6992),o=r(8880),c=r(5112),l=c("iterator"),h=c("toStringTag"),u=s.values,d=function(e,t){if(e){if(e[l]!==u)try{o(e,l,u)}catch(t){e[l]=u}if(e[h]||o(e,h,t),a[t])for(var r in s)if(e[r]!==s[r])try{o(e,r,s[r])}catch(t){e[r]=s[r]}}};for(var f in a)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},7714:(e,t,r)=>{var n=r(2109),a=r(4038),i=r(5005),s=r(7293),o=r(30),c=r(9114),l=r(3070).f,h=r(8052),u=r(7045),d=r(2597),f=r(5787),g=r(9670),p=r(7762),m=r(6277),b=r(3678),y=r(1060),w=r(9909),v=r(9781),x=r(1913),S="DOMException",A="DATA_CLONE_ERR",k=i("Error"),C=i(S)||function(){try{(new(i("MessageChannel")||a("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name==A&&25==e.code)return e.constructor}}(),O=C&&C.prototype,F=k.prototype,I=w.set,T=w.getterFor(S),M="stack"in k(S),E=function(e){return d(b,e)&&b[e].m?b[e].c:0},P=function(){f(this,R);var e=arguments.length,t=m(e<1?void 0:arguments[0]),r=m(e<2?void 0:arguments[1],"Error"),n=E(r);if(I(this,{type:S,name:r,message:t,code:n}),v||(this.name=r,this.message=t,this.code=n),M){var a=k(t);a.name=S,l(this,"stack",c(1,y(a.stack,1)))}},R=P.prototype=o(F),N=function(e){return{enumerable:!0,configurable:!0,get:e}},D=function(e){return N((function(){return T(this)[e]}))};v&&(u(R,"code",D("code")),u(R,"message",D("message")),u(R,"name",D("name"))),l(R,"constructor",c(1,P));var B=s((function(){return!(new C instanceof k)})),L=B||s((function(){return F.toString!==p||"2: 1"!==String(new C(1,2))})),_=B||s((function(){return 25!==new C(1,"DataCloneError").code})),j=B||25!==C[A]||25!==O[A],U=x?L||_||j:B;n({global:!0,constructor:!0,forced:U},{DOMException:U?P:C});var $=i(S),X=$.prototype;for(var H in L&&(x||C===$)&&h(X,"toString",p),_&&v&&C===$&&u(X,"code",N((function(){return E(g(this).name)}))),b)if(d(b,H)){var q=b[H],z=q.s,G=c(6,q.c);d($,z)||l($,z,G),d(X,z)||l(X,z,G)}},2801:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(5005),s=r(9114),o=r(3070).f,c=r(2597),l=r(5787),h=r(9587),u=r(6277),d=r(3678),f=r(1060),g=r(9781),p=r(1913),m="DOMException",b=i("Error"),y=i(m),w=function(){l(this,v);var e=arguments.length,t=u(e<1?void 0:arguments[0]),r=u(e<2?void 0:arguments[1],"Error"),n=new y(t,r),a=b(t);return a.name=m,o(n,"stack",s(1,f(a.stack,1))),h(n,this,w),n},v=w.prototype=y.prototype,x="stack"in b(m),S="stack"in new y(1,2),A=y&&g&&Object.getOwnPropertyDescriptor(a,m),k=!(!A||A.writable&&A.configurable),C=x&&!k&&!S;n({global:!0,constructor:!0,forced:p||C},{DOMException:C?w:y});var O=i(m),F=O.prototype;if(F.constructor!==O)for(var I in p||o(F,"constructor",s(1,O)),d)if(c(d,I)){var T=d[I],M=T.s;c(O,M)||o(O,M,s(6,T.c))}},1174:(e,t,r)=>{var n=r(5005),a="DOMException";r(8003)(n(a),a)},1550:(e,t,r)=>{var n=r(2109),a=r(7854),i=r(7045),s=r(9781),o=TypeError,c=Object.defineProperty,l=a.self!==a;try{if(s){var h=Object.getOwnPropertyDescriptor(a,"self");!l&&h&&h.get&&h.enumerable||i(a,"self",{get:function(){return a},set:function(e){if(this!==a)throw o("Illegal invocation");c(a,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})}else n({global:!0,simple:!0,forced:l},{self:a})}catch(e){}},5556:(e,t,r)=>{r(6992);var n=r(2109),a=r(7854),i=r(6916),s=r(1702),o=r(9781),c=r(5143),l=r(8052),h=r(7045),u=r(9190),d=r(8003),f=r(3061),g=r(9909),p=r(5787),m=r(614),b=r(2597),y=r(9974),w=r(648),v=r(9670),x=r(111),S=r(1340),A=r(30),k=r(9114),C=r(4121),O=r(1246),F=r(8053),I=r(5112),T=r(4362),M=I("iterator"),E="URLSearchParams",P=E+"Iterator",R=g.set,N=g.getterFor(E),D=g.getterFor(P),B=Object.getOwnPropertyDescriptor,L=function(e){if(!o)return a[e];var t=B(a,e);return t&&t.value},_=L("fetch"),j=L("Request"),U=L("Headers"),$=j&&j.prototype,X=U&&U.prototype,H=a.RegExp,q=a.TypeError,z=a.decodeURIComponent,G=a.encodeURIComponent,W=s("".charAt),V=s([].join),K=s([].push),Y=s("".replace),J=s([].shift),Z=s([].splice),Q=s("".split),ee=s("".slice),te=/\\+/g,re=Array(4),ne=function(e){return re[e-1]||(re[e-1]=H("((?:%[\\\\da-f]{2}){"+e+"})","gi"))},ae=function(e){try{return z(e)}catch(t){return e}},ie=function(e){var t=Y(e,te," "),r=4;try{return z(t)}catch(e){for(;r;)t=Y(t,ne(r--),ae);return t}},se=/[!'()~]|%20/g,oe={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},ce=function(e){return oe[e]},le=function(e){return Y(G(e),se,ce)},he=f((function(e,t){R(this,{type:P,iterator:C(N(e).entries),kind:t})}),"Iterator",(function(){var e=D(this),t=e.kind,r=e.iterator.next(),n=r.value;return r.done||(r.value="keys"===t?n.key:"values"===t?n.value:[n.key,n.value]),r}),!0),ue=function(e){this.entries=[],this.url=null,void 0!==e&&(x(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===W(e,0)?ee(e,1):e:S(e)))};ue.prototype={type:E,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,a,s,o,c,l=O(e);if(l)for(r=(t=C(e,l)).next;!(n=i(r,t)).done;){if(s=(a=C(v(n.value))).next,(o=i(s,a)).done||(c=i(s,a)).done||!i(s,a).done)throw q("Expected sequence with length 2");K(this.entries,{key:S(o.value),value:S(c.value)})}else for(var h in e)b(e,h)&&K(this.entries,{key:h,value:S(e[h])})},parseQuery:function(e){if(e)for(var t,r,n=Q(e,"&"),a=0;a0?arguments[0]:void 0));o||(this.size=e.entries.length)},fe=de.prototype;if(u(fe,{append:function(e,t){var r=N(this);F(arguments.length,2),K(r.entries,{key:S(e),value:S(t)}),o||this.length++,r.updateURL()},delete:function(e){for(var t=N(this),r=F(arguments.length,1),n=t.entries,a=S(e),i=r<2?void 0:arguments[1],s=void 0===i?i:S(i),c=0;ct.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=N(this).entries,n=y(e,arguments.length>1?arguments[1]:void 0),a=0;a1?me(arguments[1]):{})}}),m(j)){var be=function(e){return p(this,$),new j(e,arguments.length>1?me(arguments[1]):{})};$.constructor=be,be.prototype=$,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:be})}}e.exports={URLSearchParams:de,getState:N}},6229:(e,t,r)=>{var n=r(8052),a=r(1702),i=r(1340),s=r(8053),o=URLSearchParams,c=o.prototype,l=a(c.append),h=a(c.delete),u=a(c.forEach),d=a([].push),f=new o("a=1&a=2&b=3");f.delete("a",1),f.delete("b",void 0),f+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=[];u(this,(function(e,t){d(n,{key:t,value:e})})),s(t,1);for(var a,o=i(e),c=i(r),f=0,g=0,p=!1,m=n.length;f{var n=r(8052),a=r(1702),i=r(1340),s=r(8053),o=URLSearchParams,c=o.prototype,l=a(c.getAll),h=a(c.has),u=new o("a=1");!u.has("a",2)&&u.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return h(this,e);var n=l(this,e);s(t,1);for(var a=i(r),o=0;o{r(5556)},2062:(e,t,r)=>{var n=r(9781),a=r(1702),i=r(7045),s=URLSearchParams.prototype,o=a(s.forEach);n&&!("size"in s)&&i(s,"size",{get:function(){var e=0;return o(this,(function(){e++})),e},configurable:!0,enumerable:!0})},8789:(e,t,r)=>{r(8783);var n,a=r(2109),i=r(9781),s=r(5143),o=r(7854),c=r(9974),l=r(1702),h=r(8052),u=r(7045),d=r(5787),f=r(2597),g=r(1574),p=r(8457),m=r(1589),b=r(8710).codeAt,y=r(3197),w=r(1340),v=r(8003),x=r(8053),S=r(5556),A=r(9909),k=A.set,C=A.getterFor("URL"),O=S.URLSearchParams,F=S.getState,I=o.URL,T=o.TypeError,M=o.parseInt,E=Math.floor,P=Math.pow,R=l("".charAt),N=l(/./.exec),D=l([].join),B=l(1..toString),L=l([].pop),_=l([].push),j=l("".replace),U=l([].shift),$=l("".split),X=l("".slice),H=l("".toLowerCase),q=l([].unshift),z="Invalid scheme",G="Invalid host",W="Invalid port",V=/[a-z]/i,K=/[\\d+-.a-z]/i,Y=/\\d/,J=/^0x/i,Z=/^[0-7]+$/,Q=/^\\d+$/,ee=/^[\\da-f]+$/i,te=/[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/,re=/[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/,ne=/^[\\u0000-\\u0020]+/,ae=/(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/,ie=/[\\t\\n\\r]/g,se=function(e){var t,r,n,a;if("number"==typeof e){for(t=[],r=0;r<4;r++)q(t,e%256),e=E(e/256);return D(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,a=0,i=0;i<8;i++)0!==e[i]?(a>r&&(t=n,r=a),n=null,a=0):(null===n&&(n=i),++a);return a>r&&(t=n,r=a),t}(e),r=0;r<8;r++)a&&0===e[r]||(a&&(a=!1),n===r?(t+=r?":":"::",a=!0):(t+=B(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},oe={},ce=g({},oe,{" ":1,'"':1,"<":1,">":1,"\`":1}),le=g({},ce,{"#":1,"?":1,"{":1,"}":1}),he=g({},le,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\\\":1,"]":1,"^":1,"|":1}),ue=function(e,t){var r=b(e,0);return r>32&&r<127&&!f(t,e)?e:encodeURIComponent(e)},de={ftp:21,file:null,http:80,https:443,ws:80,wss:443},fe=function(e,t){var r;return 2==e.length&&N(V,R(e,0))&&(":"==(r=R(e,1))||!t&&"|"==r)},ge=function(e){var t;return e.length>1&&fe(X(e,0,2))&&(2==e.length||"/"===(t=R(e,2))||"\\\\"===t||"?"===t||"#"===t)},pe=function(e){return"."===e||"%2e"===H(e)},me={},be={},ye={},we={},ve={},xe={},Se={},Ae={},ke={},Ce={},Oe={},Fe={},Ie={},Te={},Me={},Ee={},Pe={},Re={},Ne={},De={},Be={},Le=function(e,t,r){var n,a,i,s=w(e);if(t){if(a=this.parse(s))throw T(a);this.searchParams=null}else{if(void 0!==r&&(n=new Le(r,!0)),a=this.parse(s,null,n))throw T(a);(i=F(new O)).bindURL(this),this.searchParams=i}};Le.prototype={type:"URL",parse:function(e,t,r){var a,i,s,o,c,l=this,h=t||me,u=0,d="",g=!1,b=!1,y=!1;for(e=w(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=j(e,ne,""),e=j(e,ae,"$1")),e=j(e,ie,""),a=p(e);u<=a.length;){switch(i=a[u],h){case me:if(!i||!N(V,i)){if(t)return z;h=ye;continue}d+=H(i),h=be;break;case be:if(i&&(N(K,i)||"+"==i||"-"==i||"."==i))d+=H(i);else{if(":"!=i){if(t)return z;d="",h=ye,u=0;continue}if(t&&(l.isSpecial()!=f(de,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,t)return void(l.isSpecial()&&de[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?h=Te:l.isSpecial()&&r&&r.scheme==l.scheme?h=we:l.isSpecial()?h=Ae:"/"==a[u+1]?(h=ve,u++):(l.cannotBeABaseURL=!0,_(l.path,""),h=Ne)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!=i)return z;if(r.cannotBeABaseURL&&"#"==i){l.scheme=r.scheme,l.path=m(r.path),l.query=r.query,l.fragment="",l.cannotBeABaseURL=!0,h=Be;break}h="file"==r.scheme?Te:xe;continue;case we:if("/"!=i||"/"!=a[u+1]){h=xe;continue}h=ke,u++;break;case ve:if("/"==i){h=Ce;break}h=Re;continue;case xe:if(l.scheme=r.scheme,i==n)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query=r.query;else if("/"==i||"\\\\"==i&&l.isSpecial())h=Se;else if("?"==i)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query="",h=De;else{if("#"!=i){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.path.length--,h=Re;continue}l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=m(r.path),l.query=r.query,l.fragment="",h=Be}break;case Se:if(!l.isSpecial()||"/"!=i&&"\\\\"!=i){if("/"!=i){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,h=Re;continue}h=Ce}else h=ke;break;case Ae:if(h=ke,"/"!=i||"/"!=R(d,u+1))continue;u++;break;case ke:if("/"!=i&&"\\\\"!=i){h=Ce;continue}break;case Ce:if("@"==i){g&&(d="%40"+d),g=!0,s=p(d);for(var v=0;v65535)return W;l.port=l.isSpecial()&&A===de[l.scheme]?null:A,d=""}if(t)return;h=Pe;continue}return W}d+=i;break;case Te:if(l.scheme="file","/"==i||"\\\\"==i)h=Me;else{if(!r||"file"!=r.scheme){h=Re;continue}if(i==n)l.host=r.host,l.path=m(r.path),l.query=r.query;else if("?"==i)l.host=r.host,l.path=m(r.path),l.query="",h=De;else{if("#"!=i){ge(D(m(a,u),""))||(l.host=r.host,l.path=m(r.path),l.shortenPath()),h=Re;continue}l.host=r.host,l.path=m(r.path),l.query=r.query,l.fragment="",h=Be}}break;case Me:if("/"==i||"\\\\"==i){h=Ee;break}r&&"file"==r.scheme&&!ge(D(m(a,u),""))&&(fe(r.path[0],!0)?_(l.path,r.path[0]):l.host=r.host),h=Re;continue;case Ee:if(i==n||"/"==i||"\\\\"==i||"?"==i||"#"==i){if(!t&&fe(d))h=Re;else if(""==d){if(l.host="",t)return;h=Pe}else{if(o=l.parseHost(d))return o;if("localhost"==l.host&&(l.host=""),t)return;d="",h=Pe}continue}d+=i;break;case Pe:if(l.isSpecial()){if(h=Re,"/"!=i&&"\\\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=n&&(h=Re,"/"!=i))continue}else l.fragment="",h=Be;else l.query="",h=De;break;case Re:if(i==n||"/"==i||"\\\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(c=H(c=d))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(l.shortenPath(),"/"==i||"\\\\"==i&&l.isSpecial()||_(l.path,"")):pe(d)?"/"==i||"\\\\"==i&&l.isSpecial()||_(l.path,""):("file"==l.scheme&&!l.path.length&&fe(d)&&(l.host&&(l.host=""),d=R(d,0)+":"),_(l.path,d)),d="","file"==l.scheme&&(i==n||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)U(l.path);"?"==i?(l.query="",h=De):"#"==i&&(l.fragment="",h=Be)}else d+=ue(i,le);break;case Ne:"?"==i?(l.query="",h=De):"#"==i?(l.fragment="",h=Be):i!=n&&(l.path[0]+=ue(i,oe));break;case De:t||"#"!=i?i!=n&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":ue(i,oe)):(l.fragment="",h=Be);break;case Be:i!=n&&(l.fragment+=ue(i,ce))}u++}},parseHost:function(e){var t,r,n;if("["==R(e,0)){if("]"!=R(e,e.length-1))return G;if(t=function(e){var t,r,n,a,i,s,o,c=[0,0,0,0,0,0,0,0],l=0,h=null,u=0,d=function(){return R(e,u)};if(":"==d()){if(":"!=R(e,1))return;u+=2,h=++l}for(;d();){if(8==l)return;if(":"!=d()){for(t=r=0;r<4&&N(ee,d());)t=16*t+M(d(),16),u++,r++;if("."==d()){if(0==r)return;if(u-=r,l>6)return;for(n=0;d();){if(a=null,n>0){if(!("."==d()&&n<4))return;u++}if(!N(Y,d()))return;for(;N(Y,d());){if(i=M(d(),10),null===a)a=i;else{if(0==a)return;a=10*a+i}if(a>255)return;u++}c[l]=256*c[l]+a,2!=++n&&4!=n||l++}if(4!=n)return;break}if(":"==d()){if(u++,!d())return}else if(d())return;c[l++]=t}else{if(null!==h)return;u++,h=++l}}if(null!==h)for(s=l-h,l=7;0!=l&&s>0;)o=c[l],c[l--]=c[h+s-1],c[h+--s]=o;else if(8!=l)return;return c}(X(e,1,-1)),!t)return G;this.host=t}else if(this.isSpecial()){if(e=y(e),N(te,e))return G;if(t=function(e){var t,r,n,a,i,s,o,c=$(e,".");if(c.length&&""==c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n1&&"0"==R(a,0)&&(i=N(J,a)?16:8,a=X(a,8==i?1:2)),""===a)s=0;else{if(!N(10==i?Q:8==i?Z:ee,a))return e;s=M(a,i)}_(r,s)}for(n=0;n=P(256,5-t))return null}else if(s>255)return null;for(o=L(r),n=0;n1?arguments[1]:void 0,n=k(t,new Le(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},je=_e.prototype,Ue=function(e,t){return{get:function(){return C(this)[e]()},set:t&&function(e){return C(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(u(je,"href",Ue("serialize","setHref")),u(je,"origin",Ue("getOrigin")),u(je,"protocol",Ue("getProtocol","setProtocol")),u(je,"username",Ue("getUsername","setUsername")),u(je,"password",Ue("getPassword","setPassword")),u(je,"host",Ue("getHost","setHost")),u(je,"hostname",Ue("getHostname","setHostname")),u(je,"port",Ue("getPort","setPort")),u(je,"pathname",Ue("getPathname","setPathname")),u(je,"search",Ue("getSearch","setSearch")),u(je,"searchParams",Ue("getSearchParams")),u(je,"hash",Ue("getHash","setHash"))),h(je,"toJSON",(function(){return C(this).serialize()}),{enumerable:!0}),h(je,"toString",(function(){return C(this).serialize()}),{enumerable:!0}),I){var $e=I.createObjectURL,Xe=I.revokeObjectURL;$e&&h(_e,"createObjectURL",c($e,I)),Xe&&h(_e,"revokeObjectURL",c(Xe,I))}v(_e,"URL"),a({global:!0,constructor:!0,forced:!s,sham:!i},{URL:_e})},285:(e,t,r)=>{r(8789)}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.amdO={},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r(7757)})();`,J=`(()=>{"use strict";var __webpack_modules__=({"./pdf.js":((module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.global-this.js */ \\"./node_modules/core-js/modules/es.global-this.js\\");\\n/* harmony import */ var core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_global_this_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.starts-with.js */ \\"./node_modules/core-js/modules/es.string.starts-with.js\\");\\n/* harmony import */ var core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_starts_with_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ \\"./node_modules/core-js/modules/es.string.match.js\\");\\n/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);\\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ \\"./node_modules/core-js/modules/web.dom-collections.iterator.js\\");\\n/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_4__);\\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.url.js */ \\"./node_modules/core-js/modules/web.url.js\\");\\n/* harmony import */ var core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_js__WEBPACK_IMPORTED_MODULE_5__);\\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.url-search-params.js */ \\"./node_modules/core-js/modules/web.url-search-params.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_js__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.url-search-params.delete.js */ \\"./node_modules/core-js/modules/web.url-search-params.delete.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_delete_js__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/web.url-search-params.has.js */ \\"./node_modules/core-js/modules/web.url-search-params.has.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_has_js__WEBPACK_IMPORTED_MODULE_8__);\\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.url-search-params.size.js */ \\"./node_modules/core-js/modules/web.url-search-params.size.js\\");\\n/* harmony import */ var core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_url_search_params_size_js__WEBPACK_IMPORTED_MODULE_9__);\\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ \\"./node_modules/core-js/modules/es.regexp.to-string.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_10__);\\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array-buffer.slice.js */ \\"./node_modules/core-js/modules/es.array-buffer.slice.js\\");\\n/* harmony import */ var core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_slice_js__WEBPACK_IMPORTED_MODULE_11__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint8-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_array_js__WEBPACK_IMPORTED_MODULE_12__);\\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.typed-array.at.js */ \\"./node_modules/core-js/modules/es.typed-array.at.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_at_js__WEBPACK_IMPORTED_MODULE_13__);\\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.typed-array.fill.js */ \\"./node_modules/core-js/modules/es.typed-array.fill.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_fill_js__WEBPACK_IMPORTED_MODULE_14__);\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last.js */ \\"./node_modules/core-js/modules/es.typed-array.find-last.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_js__WEBPACK_IMPORTED_MODULE_15__);\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.typed-array.find-last-index.js */ \\"./node_modules/core-js/modules/es.typed-array.find-last-index.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_16__);\\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.typed-array.set.js */ \\"./node_modules/core-js/modules/es.typed-array.set.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_set_js__WEBPACK_IMPORTED_MODULE_17__);\\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.typed-array.sort.js */ \\"./node_modules/core-js/modules/es.typed-array.sort.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_sort_js__WEBPACK_IMPORTED_MODULE_18__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-locale-string.js */ \\"./node_modules/core-js/modules/es.typed-array.to-locale-string.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_locale_string_js__WEBPACK_IMPORTED_MODULE_19__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-reversed.js */ \\"./node_modules/core-js/modules/es.typed-array.to-reversed.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_reversed_js__WEBPACK_IMPORTED_MODULE_20__);\\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.typed-array.to-sorted.js */ \\"./node_modules/core-js/modules/es.typed-array.to-sorted.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_to_sorted_js__WEBPACK_IMPORTED_MODULE_21__);\\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.typed-array.with.js */ \\"./node_modules/core-js/modules/es.typed-array.with.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_with_js__WEBPACK_IMPORTED_MODULE_22__);\\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \\"./node_modules/core-js/modules/es.string.replace.js\\");\\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_23__);\\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.string.replace-all.js */ \\"./node_modules/core-js/modules/es.string.replace-all.js\\");\\n/* harmony import */ var core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_all_js__WEBPACK_IMPORTED_MODULE_24__);\\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \\"./node_modules/core-js/modules/es.array.push.js\\");\\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_25__);\\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ \\"./node_modules/core-js/modules/es.error.cause.js\\");\\n/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_26__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint32-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint32-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint32_array_js__WEBPACK_IMPORTED_MODULE_27__);\\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \\"./node_modules/core-js/modules/es.array.includes.js\\");\\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_28__);\\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \\"./node_modules/core-js/modules/es.string.includes.js\\");\\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_29__);\\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! core-js/modules/es.weak-map.js */ \\"./node_modules/core-js/modules/es.weak-map.js\\");\\n/* harmony import */ var core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_weak_map_js__WEBPACK_IMPORTED_MODULE_30__);\\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! core-js/modules/es.promise.js */ \\"./node_modules/core-js/modules/es.promise.js\\");\\n/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_31__);\\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! core-js/modules/web.self.js */ \\"./node_modules/core-js/modules/web.self.js\\");\\n/* harmony import */ var core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_self_js__WEBPACK_IMPORTED_MODULE_32__);\\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \\"./node_modules/core-js/modules/es.string.split.js\\");\\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_33__);\\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ \\"./node_modules/core-js/modules/es.symbol.description.js\\");\\n/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_34__);\\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! core-js/modules/es.object.has-own.js */ \\"./node_modules/core-js/modules/es.object.has-own.js\\");\\n/* harmony import */ var core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_has_own_js__WEBPACK_IMPORTED_MODULE_35__);\\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! core-js/modules/es.regexp.test.js */ \\"./node_modules/core-js/modules/es.regexp.test.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_test_js__WEBPACK_IMPORTED_MODULE_36__);\\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! core-js/modules/es.reflect.to-string-tag.js */ \\"./node_modules/core-js/modules/es.reflect.to-string-tag.js\\");\\n/* harmony import */ var core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_reflect_to_string_tag_js__WEBPACK_IMPORTED_MODULE_37__);\\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! core-js/modules/es.array.find-last.js */ \\"./node_modules/core-js/modules/es.array.find-last.js\\");\\n/* harmony import */ var core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_js__WEBPACK_IMPORTED_MODULE_38__);\\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! core-js/modules/es.array-buffer.constructor.js */ \\"./node_modules/core-js/modules/es.array-buffer.constructor.js\\");\\n/* harmony import */ var core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_buffer_constructor_js__WEBPACK_IMPORTED_MODULE_39__);\\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! core-js/modules/es.array.find-last-index.js */ \\"./node_modules/core-js/modules/es.array.find-last-index.js\\");\\n/* harmony import */ var core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_last_index_js__WEBPACK_IMPORTED_MODULE_40__);\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! core-js/modules/es.typed-array.uint8-clamped-array.js */ \\"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_uint8_clamped_array_js__WEBPACK_IMPORTED_MODULE_41__);\\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ \\"./node_modules/core-js/modules/es.array.sort.js\\");\\n/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_42__);\\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! core-js/modules/es.array.with.js */ \\"./node_modules/core-js/modules/es.array.with.js\\");\\n/* harmony import */ var core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_with_js__WEBPACK_IMPORTED_MODULE_43__);\\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! core-js/modules/es.typed-array.int8-array.js */ \\"./node_modules/core-js/modules/es.typed-array.int8-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int8_array_js__WEBPACK_IMPORTED_MODULE_44__);\\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! core-js/modules/es.object.assign.js */ \\"./node_modules/core-js/modules/es.object.assign.js\\");\\n/* harmony import */ var core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_45__);\\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! core-js/modules/web.dom-exception.constructor.js */ \\"./node_modules/core-js/modules/web.dom-exception.constructor.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_constructor_js__WEBPACK_IMPORTED_MODULE_46__);\\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! core-js/modules/web.dom-exception.stack.js */ \\"./node_modules/core-js/modules/web.dom-exception.stack.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_stack_js__WEBPACK_IMPORTED_MODULE_47__);\\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! core-js/modules/web.dom-exception.to-string-tag.js */ \\"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js\\");\\n/* harmony import */ var core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_exception_to_string_tag_js__WEBPACK_IMPORTED_MODULE_48__);\\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! core-js/modules/web.structured-clone.js */ \\"./node_modules/core-js/modules/web.structured-clone.js\\");\\n/* harmony import */ var core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_structured_clone_js__WEBPACK_IMPORTED_MODULE_49__);\\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! core-js/modules/es.promise.finally.js */ \\"./node_modules/core-js/modules/es.promise.finally.js\\");\\n/* harmony import */ var core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_50__);\\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor.js */ \\"./node_modules/core-js/modules/es.regexp.constructor.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor_js__WEBPACK_IMPORTED_MODULE_51__);\\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! core-js/modules/es.regexp.dot-all.js */ \\"./node_modules/core-js/modules/es.regexp.dot-all.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_dot_all_js__WEBPACK_IMPORTED_MODULE_52__);\\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! core-js/modules/es.regexp.flags.js */ \\"./node_modules/core-js/modules/es.regexp.flags.js\\");\\n/* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_53__);\\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! core-js/modules/es.json.stringify.js */ \\"./node_modules/core-js/modules/es.json.stringify.js\\");\\n/* harmony import */ var core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_stringify_js__WEBPACK_IMPORTED_MODULE_54__);\\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! core-js/modules/es.number.to-fixed.js */ \\"./node_modules/core-js/modules/es.number.to-fixed.js\\");\\n/* harmony import */ var core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_number_to_fixed_js__WEBPACK_IMPORTED_MODULE_55__);\\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! core-js/modules/es.string.ends-with.js */ \\"./node_modules/core-js/modules/es.string.ends-with.js\\");\\n/* harmony import */ var core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_ends_with_js__WEBPACK_IMPORTED_MODULE_56__);\\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! core-js/modules/es.parse-float.js */ \\"./node_modules/core-js/modules/es.parse-float.js\\");\\n/* harmony import */ var core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_float_js__WEBPACK_IMPORTED_MODULE_57__);\\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! core-js/modules/es.math.hypot.js */ \\"./node_modules/core-js/modules/es.math.hypot.js\\");\\n/* harmony import */ var core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_math_hypot_js__WEBPACK_IMPORTED_MODULE_58__);\\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! core-js/modules/es.array.at.js */ \\"./node_modules/core-js/modules/es.array.at.js\\");\\n/* harmony import */ var core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_at_js__WEBPACK_IMPORTED_MODULE_59__);\\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! core-js/modules/es.string.at-alternative.js */ \\"./node_modules/core-js/modules/es.string.at-alternative.js\\");\\n/* harmony import */ var core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_at_alternative_js__WEBPACK_IMPORTED_MODULE_60__);\\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! core-js/modules/es.parse-int.js */ \\"./node_modules/core-js/modules/es.parse-int.js\\");\\n/* harmony import */ var core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_parse_int_js__WEBPACK_IMPORTED_MODULE_61__);\\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ \\"./node_modules/core-js/modules/es.string.trim.js\\");\\n/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_62__);\\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! core-js/modules/es.typed-array.int32-array.js */ \\"./node_modules/core-js/modules/es.typed-array.int32-array.js\\");\\n/* harmony import */ var core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_typed_array_int32_array_js__WEBPACK_IMPORTED_MODULE_63__);\\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! core-js/modules/es.promise.all-settled.js */ \\"./node_modules/core-js/modules/es.promise.all-settled.js\\");\\n/* harmony import */ var core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_all_settled_js__WEBPACK_IMPORTED_MODULE_64__);\\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! core-js/modules/es.string.trim-end.js */ \\"./node_modules/core-js/modules/es.string.trim-end.js\\");\\n/* harmony import */ var core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_end_js__WEBPACK_IMPORTED_MODULE_65__);\\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! core-js/modules/es.array.flat-map.js */ \\"./node_modules/core-js/modules/es.array.flat-map.js\\");\\n/* harmony import */ var core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_flat_map_js__WEBPACK_IMPORTED_MODULE_66__);\\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! core-js/modules/es.array.unscopables.flat-map.js */ \\"./node_modules/core-js/modules/es.array.unscopables.flat-map.js\\");\\n/* harmony import */ var core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_unscopables_flat_map_js__WEBPACK_IMPORTED_MODULE_67__);\\n/* module decorator */ module = __webpack_require__.hmd(module);\\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"set\\"); return _classApplyDescriptorDestructureSet(receiver, descriptor); }\\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) { if (descriptor.set) { if (!(\\"__destrObj\\" in descriptor)) { descriptor.__destrObj = { set value(v) { descriptor.set.call(receiver, v); } }; } return descriptor.__destrObj; } else { if (!descriptor.writable) { throw new TypeError(\\"attempted to set read only private field\\"); } return descriptor; } }\\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) { _classCheckPrivateStaticAccess(receiver, classConstructor); return method; }\\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 _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); }\\nfunction _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }\\nfunction _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError(\\"attempted to get private field on non-instance\\"); } return fn; }\\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \\"set\\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, \\"get\\"); return _classApplyDescriptorGet(receiver, descriptor); }\\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError(\\"attempted to \\" + action + \\" private static field before its declaration\\"); } }\\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError(\\"Private static access of wrong provenance\\"); } }\\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\\"Cannot initialize the same private elements twice on an object\\"); } }\\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"get\\"); return _classApplyDescriptorGet(receiver, descriptor); }\\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \\"set\\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\\"attempted to \\" + action + \\" private field on non-instance\\"); } return privateMap.get(receiver); }\\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\\"attempted to set read only private field\\"); } descriptor.value = value; } }\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n!function webpackUniversalModuleDefinition(t, e) {\\n \\"object\\" == typeof exports && \\"object\\" == \\"object\\" ? module.exports = e() : \\"function\\" == typeof define && __webpack_require__.amdO ? define(\\"pdfjs-dist/build/pdf\\", [], e) : \\"object\\" == typeof exports ? exports[\\"pdfjs-dist/build/pdf\\"] = e() : t[\\"pdfjs-dist/build/pdf\\"] = t.pdfjsLib = e();\\n}(globalThis, () => (() => {\\n var __webpack_modules__ = [, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _t;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.VerbosityLevel = e.Util = e.UnknownErrorException = e.UnexpectedResponseException = e.TextRenderingMode = e.RenderingIntentFlag = e.PromiseCapability = e.PermissionFlag = e.PasswordResponses = e.PasswordException = e.PageActionEventType = e.OPS = e.MissingPDFException = e.MAX_IMAGE_SIZE_TO_CACHE = e.LINE_FACTOR = e.LINE_DESCENT_FACTOR = e.InvalidPDFException = e.ImageKind = e.IDENTITY_MATRIX = e.FormatError = e.FeatureTest = e.FONT_IDENTITY_MATRIX = e.DocumentActionEventType = e.CMapCompressionType = e.BaseException = e.BASELINE_FACTOR = e.AnnotationType = e.AnnotationReplyType = e.AnnotationMode = e.AnnotationFlag = e.AnnotationFieldFlag = e.AnnotationEditorType = e.AnnotationEditorPrefix = e.AnnotationEditorParamsType = e.AnnotationBorderStyleType = e.AnnotationActionEventType = e.AbortException = void 0;\\n e.assert = function assert(t, e) {\\n t || unreachable(e);\\n };\\n e.bytesToString = bytesToString;\\n e.createValidAbsoluteUrl = function createValidAbsoluteUrl(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,\\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;\\n if (!t) return null;\\n try {\\n if (n && \\"string\\" == typeof t) {\\n if (n.addDefaultProtocol && t.startsWith(\\"www.\\")) {\\n const e = t.match(/\\\\./g);\\n (e === null || e === void 0 ? void 0 : e.length) >= 2 && (t = \\"http://\\".concat(t));\\n }\\n if (n.tryConvertEncoding) try {\\n t = stringToUTF8String(t);\\n } catch (_unused) {}\\n }\\n const i = e ? new URL(t, e) : new URL(t);\\n if (function _isValidProtocol(t) {\\n switch (t === null || t === void 0 ? void 0 : t.protocol) {\\n case \\"http:\\":\\n case \\"https:\\":\\n case \\"ftp:\\":\\n case \\"mailto:\\":\\n case \\"tel:\\":\\n return !0;\\n default:\\n return !1;\\n }\\n }(i)) return i;\\n } catch (_unused2) {}\\n return null;\\n };\\n e.getModificationDate = function getModificationDate() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date();\\n return [t.getUTCFullYear().toString(), (t.getUTCMonth() + 1).toString().padStart(2, \\"0\\"), t.getUTCDate().toString().padStart(2, \\"0\\"), t.getUTCHours().toString().padStart(2, \\"0\\"), t.getUTCMinutes().toString().padStart(2, \\"0\\"), t.getUTCSeconds().toString().padStart(2, \\"0\\")].join(\\"\\");\\n };\\n e.getUuid = function getUuid() {\\n var _crypto, _crypto2;\\n if (\\"undefined\\" != typeof crypto && \\"function\\" == typeof ((_crypto = crypto) === null || _crypto === void 0 ? void 0 : _crypto.randomUUID)) return crypto.randomUUID();\\n const t = new Uint8Array(32);\\n if (\\"undefined\\" != typeof crypto && \\"function\\" == typeof ((_crypto2 = crypto) === null || _crypto2 === void 0 ? void 0 : _crypto2.getRandomValues)) crypto.getRandomValues(t);else for (let e = 0; e < 32; e++) t[e] = Math.floor(255 * Math.random());\\n return bytesToString(t);\\n };\\n e.getVerbosityLevel = function getVerbosityLevel() {\\n return s;\\n };\\n e.info = function info(t) {\\n s >= r.INFOS && console.log(\\"Info: \\".concat(t));\\n };\\n e.isArrayBuffer = function isArrayBuffer(t) {\\n return \\"object\\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.byteLength);\\n };\\n e.isArrayEqual = function isArrayEqual(t, e) {\\n if (t.length !== e.length) return !1;\\n for (let n = 0, i = t.length; n < i; n++) if (t[n] !== e[n]) return !1;\\n return !0;\\n };\\n e.isNodeJS = void 0;\\n e.normalizeUnicode = function normalizeUnicode(t) {\\n if (!c) {\\n c = /([\\\\xA0\\\\xB5\\\\u037E\\\\u0EB3\\\\u2000-\\\\u200A\\\\u202F\\\\u2126\\\\uFB00-\\\\uFB04\\\\uFB06\\\\uFB20-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBA1\\\\uFBA4-\\\\uFBA9\\\\uFBAE-\\\\uFBB1\\\\uFBD3-\\\\uFBDC\\\\uFBDE-\\\\uFBE7\\\\uFBEA-\\\\uFBF8\\\\uFBFC\\\\uFBFD\\\\uFC00-\\\\uFC5D\\\\uFC64-\\\\uFCF1\\\\uFCF5-\\\\uFD3D\\\\uFD88\\\\uFDF4\\\\uFDFA\\\\uFDFB\\\\uFE71\\\\uFE77\\\\uFE79\\\\uFE7B\\\\uFE7D]+)|(\\\\uFB05+)/g;\\n h = new Map([[\\"ſt\\", \\"ſt\\"]]);\\n }\\n return t.replaceAll(c, (t, e, n) => e ? e.normalize(\\"NFKC\\") : h.get(n));\\n };\\n e.objectFromMap = function objectFromMap(t) {\\n const e = Object.create(null);\\n for (const [n, i] of t) e[n] = i;\\n return e;\\n };\\n e.objectSize = function objectSize(t) {\\n return Object.keys(t).length;\\n };\\n e.setVerbosityLevel = function setVerbosityLevel(t) {\\n Number.isInteger(t) && (s = t);\\n };\\n e.shadow = shadow;\\n e.string32 = function string32(t) {\\n return String.fromCharCode(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t);\\n };\\n e.stringToBytes = stringToBytes;\\n e.stringToPDFString = function stringToPDFString(t) {\\n if (t[0] >= \\"ï\\") {\\n let e;\\n \\"þ\\" === t[0] && \\"ÿ\\" === t[1] ? e = \\"utf-16be\\" : \\"ÿ\\" === t[0] && \\"þ\\" === t[1] ? e = \\"utf-16le\\" : \\"ï\\" === t[0] && \\"»\\" === t[1] && \\"¿\\" === t[2] && (e = \\"utf-8\\");\\n if (e) try {\\n const n = new TextDecoder(e, {\\n fatal: !0\\n }),\\n i = stringToBytes(t);\\n return n.decode(i);\\n } catch (t) {\\n warn(\\"stringToPDFString: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }\\n const e = [];\\n for (let n = 0, i = t.length; n < i; n++) {\\n const i = l[t.charCodeAt(n)];\\n e.push(i ? String.fromCharCode(i) : t.charAt(n));\\n }\\n return e.join(\\"\\");\\n };\\n e.stringToUTF8String = stringToUTF8String;\\n e.unreachable = unreachable;\\n e.utf8StringToString = function utf8StringToString(t) {\\n return unescape(encodeURIComponent(t));\\n };\\n e.warn = warn;\\n n(2);\\n n(84);\\n n(86);\\n n(87);\\n n(89);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n const i = !(\\"object\\" != typeof process || process + \\"\\" != \\"[object process]\\" || process.versions.nw || process.versions.electron && process.type && \\"browser\\" !== process.type);\\n e.isNodeJS = i;\\n e.IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\\n e.FONT_IDENTITY_MATRIX = [.001, 0, 0, .001, 0, 0];\\n e.MAX_IMAGE_SIZE_TO_CACHE = 1e7;\\n e.LINE_FACTOR = 1.35;\\n e.LINE_DESCENT_FACTOR = .35;\\n e.BASELINE_FACTOR = .25925925925925924;\\n e.RenderingIntentFlag = {\\n ANY: 1,\\n DISPLAY: 2,\\n PRINT: 4,\\n SAVE: 8,\\n ANNOTATIONS_FORMS: 16,\\n ANNOTATIONS_STORAGE: 32,\\n ANNOTATIONS_DISABLE: 64,\\n OPLIST: 256\\n };\\n e.AnnotationMode = {\\n DISABLE: 0,\\n ENABLE: 1,\\n ENABLE_FORMS: 2,\\n ENABLE_STORAGE: 3\\n };\\n e.AnnotationEditorPrefix = \\"pdfjs_internal_editor_\\";\\n e.AnnotationEditorType = {\\n DISABLE: -1,\\n NONE: 0,\\n FREETEXT: 3,\\n STAMP: 13,\\n INK: 15\\n };\\n e.AnnotationEditorParamsType = {\\n RESIZE: 1,\\n FREETEXT_SIZE: 11,\\n FREETEXT_COLOR: 12,\\n FREETEXT_OPACITY: 13,\\n INK_COLOR: 21,\\n INK_THICKNESS: 22,\\n INK_OPACITY: 23\\n };\\n e.PermissionFlag = {\\n PRINT: 4,\\n MODIFY_CONTENTS: 8,\\n COPY: 16,\\n MODIFY_ANNOTATIONS: 32,\\n FILL_INTERACTIVE_FORMS: 256,\\n COPY_FOR_ACCESSIBILITY: 512,\\n ASSEMBLE: 1024,\\n PRINT_HIGH_QUALITY: 2048\\n };\\n e.TextRenderingMode = {\\n FILL: 0,\\n STROKE: 1,\\n FILL_STROKE: 2,\\n INVISIBLE: 3,\\n FILL_ADD_TO_PATH: 4,\\n STROKE_ADD_TO_PATH: 5,\\n FILL_STROKE_ADD_TO_PATH: 6,\\n ADD_TO_PATH: 7,\\n FILL_STROKE_MASK: 3,\\n ADD_TO_PATH_FLAG: 4\\n };\\n e.ImageKind = {\\n GRAYSCALE_1BPP: 1,\\n RGB_24BPP: 2,\\n RGBA_32BPP: 3\\n };\\n e.AnnotationType = {\\n TEXT: 1,\\n LINK: 2,\\n FREETEXT: 3,\\n LINE: 4,\\n SQUARE: 5,\\n CIRCLE: 6,\\n POLYGON: 7,\\n POLYLINE: 8,\\n HIGHLIGHT: 9,\\n UNDERLINE: 10,\\n SQUIGGLY: 11,\\n STRIKEOUT: 12,\\n STAMP: 13,\\n CARET: 14,\\n INK: 15,\\n POPUP: 16,\\n FILEATTACHMENT: 17,\\n SOUND: 18,\\n MOVIE: 19,\\n WIDGET: 20,\\n SCREEN: 21,\\n PRINTERMARK: 22,\\n TRAPNET: 23,\\n WATERMARK: 24,\\n THREED: 25,\\n REDACT: 26\\n };\\n e.AnnotationReplyType = {\\n GROUP: \\"Group\\",\\n REPLY: \\"R\\"\\n };\\n e.AnnotationFlag = {\\n INVISIBLE: 1,\\n HIDDEN: 2,\\n PRINT: 4,\\n NOZOOM: 8,\\n NOROTATE: 16,\\n NOVIEW: 32,\\n READONLY: 64,\\n LOCKED: 128,\\n TOGGLENOVIEW: 256,\\n LOCKEDCONTENTS: 512\\n };\\n e.AnnotationFieldFlag = {\\n READONLY: 1,\\n REQUIRED: 2,\\n NOEXPORT: 4,\\n MULTILINE: 4096,\\n PASSWORD: 8192,\\n NOTOGGLETOOFF: 16384,\\n RADIO: 32768,\\n PUSHBUTTON: 65536,\\n COMBO: 131072,\\n EDIT: 262144,\\n SORT: 524288,\\n FILESELECT: 1048576,\\n MULTISELECT: 2097152,\\n DONOTSPELLCHECK: 4194304,\\n DONOTSCROLL: 8388608,\\n COMB: 16777216,\\n RICHTEXT: 33554432,\\n RADIOSINUNISON: 33554432,\\n COMMITONSELCHANGE: 67108864\\n };\\n e.AnnotationBorderStyleType = {\\n SOLID: 1,\\n DASHED: 2,\\n BEVELED: 3,\\n INSET: 4,\\n UNDERLINE: 5\\n };\\n e.AnnotationActionEventType = {\\n E: \\"Mouse Enter\\",\\n X: \\"Mouse Exit\\",\\n D: \\"Mouse Down\\",\\n U: \\"Mouse Up\\",\\n Fo: \\"Focus\\",\\n Bl: \\"Blur\\",\\n PO: \\"PageOpen\\",\\n PC: \\"PageClose\\",\\n PV: \\"PageVisible\\",\\n PI: \\"PageInvisible\\",\\n K: \\"Keystroke\\",\\n F: \\"Format\\",\\n V: \\"Validate\\",\\n C: \\"Calculate\\"\\n };\\n e.DocumentActionEventType = {\\n WC: \\"WillClose\\",\\n WS: \\"WillSave\\",\\n DS: \\"DidSave\\",\\n WP: \\"WillPrint\\",\\n DP: \\"DidPrint\\"\\n };\\n e.PageActionEventType = {\\n O: \\"PageOpen\\",\\n C: \\"PageClose\\"\\n };\\n const r = {\\n ERRORS: 0,\\n WARNINGS: 1,\\n INFOS: 5\\n };\\n e.VerbosityLevel = r;\\n e.CMapCompressionType = {\\n NONE: 0,\\n BINARY: 1\\n };\\n e.OPS = {\\n dependency: 1,\\n setLineWidth: 2,\\n setLineCap: 3,\\n setLineJoin: 4,\\n setMiterLimit: 5,\\n setDash: 6,\\n setRenderingIntent: 7,\\n setFlatness: 8,\\n setGState: 9,\\n save: 10,\\n restore: 11,\\n transform: 12,\\n moveTo: 13,\\n lineTo: 14,\\n curveTo: 15,\\n curveTo2: 16,\\n curveTo3: 17,\\n closePath: 18,\\n rectangle: 19,\\n stroke: 20,\\n closeStroke: 21,\\n fill: 22,\\n eoFill: 23,\\n fillStroke: 24,\\n eoFillStroke: 25,\\n closeFillStroke: 26,\\n closeEOFillStroke: 27,\\n endPath: 28,\\n clip: 29,\\n eoClip: 30,\\n beginText: 31,\\n endText: 32,\\n setCharSpacing: 33,\\n setWordSpacing: 34,\\n setHScale: 35,\\n setLeading: 36,\\n setFont: 37,\\n setTextRenderingMode: 38,\\n setTextRise: 39,\\n moveText: 40,\\n setLeadingMoveText: 41,\\n setTextMatrix: 42,\\n nextLine: 43,\\n showText: 44,\\n showSpacedText: 45,\\n nextLineShowText: 46,\\n nextLineSetSpacingShowText: 47,\\n setCharWidth: 48,\\n setCharWidthAndBounds: 49,\\n setStrokeColorSpace: 50,\\n setFillColorSpace: 51,\\n setStrokeColor: 52,\\n setStrokeColorN: 53,\\n setFillColor: 54,\\n setFillColorN: 55,\\n setStrokeGray: 56,\\n setFillGray: 57,\\n setStrokeRGBColor: 58,\\n setFillRGBColor: 59,\\n setStrokeCMYKColor: 60,\\n setFillCMYKColor: 61,\\n shadingFill: 62,\\n beginInlineImage: 63,\\n beginImageData: 64,\\n endInlineImage: 65,\\n paintXObject: 66,\\n markPoint: 67,\\n markPointProps: 68,\\n beginMarkedContent: 69,\\n beginMarkedContentProps: 70,\\n endMarkedContent: 71,\\n beginCompat: 72,\\n endCompat: 73,\\n paintFormXObjectBegin: 74,\\n paintFormXObjectEnd: 75,\\n beginGroup: 76,\\n endGroup: 77,\\n beginAnnotation: 80,\\n endAnnotation: 81,\\n paintImageMaskXObject: 83,\\n paintImageMaskXObjectGroup: 84,\\n paintImageXObject: 85,\\n paintInlineImageXObject: 86,\\n paintInlineImageXObjectGroup: 87,\\n paintImageXObjectRepeat: 88,\\n paintImageMaskXObjectRepeat: 89,\\n paintSolidColorImageMask: 90,\\n constructPath: 91\\n };\\n e.PasswordResponses = {\\n NEED_PASSWORD: 1,\\n INCORRECT_PASSWORD: 2\\n };\\n let s = r.WARNINGS;\\n function warn(t) {\\n s >= r.WARNINGS && console.log(\\"Warning: \\".concat(t));\\n }\\n function unreachable(t) {\\n throw new Error(t);\\n }\\n function shadow(t, e, n) {\\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\\n Object.defineProperty(t, e, {\\n value: n,\\n enumerable: !i,\\n configurable: !0,\\n writable: !1\\n });\\n return n;\\n }\\n const a = function BaseExceptionClosure() {\\n function BaseException(t, e) {\\n this.constructor === BaseException && unreachable(\\"Cannot initialize BaseException.\\");\\n this.message = t;\\n this.name = e;\\n }\\n BaseException.prototype = new Error();\\n BaseException.constructor = BaseException;\\n return BaseException;\\n }();\\n e.BaseException = a;\\n e.PasswordException = class PasswordException extends a {\\n constructor(t, e) {\\n super(t, \\"PasswordException\\");\\n this.code = e;\\n }\\n };\\n e.UnknownErrorException = class UnknownErrorException extends a {\\n constructor(t, e) {\\n super(t, \\"UnknownErrorException\\");\\n this.details = e;\\n }\\n };\\n e.InvalidPDFException = class InvalidPDFException extends a {\\n constructor(t) {\\n super(t, \\"InvalidPDFException\\");\\n }\\n };\\n e.MissingPDFException = class MissingPDFException extends a {\\n constructor(t) {\\n super(t, \\"MissingPDFException\\");\\n }\\n };\\n e.UnexpectedResponseException = class UnexpectedResponseException extends a {\\n constructor(t, e) {\\n super(t, \\"UnexpectedResponseException\\");\\n this.status = e;\\n }\\n };\\n e.FormatError = class FormatError extends a {\\n constructor(t) {\\n super(t, \\"FormatError\\");\\n }\\n };\\n e.AbortException = class AbortException extends a {\\n constructor(t) {\\n super(t, \\"AbortException\\");\\n }\\n };\\n function bytesToString(t) {\\n \\"object\\" == typeof t && void 0 !== (t === null || t === void 0 ? void 0 : t.length) || unreachable(\\"Invalid argument for bytesToString\\");\\n const e = t.length,\\n n = 8192;\\n if (e < n) return String.fromCharCode.apply(null, t);\\n const i = [];\\n for (let r = 0; r < e; r += n) {\\n const s = Math.min(r + n, e),\\n a = t.subarray(r, s);\\n i.push(String.fromCharCode.apply(null, a));\\n }\\n return i.join(\\"\\");\\n }\\n function stringToBytes(t) {\\n \\"string\\" != typeof t && unreachable(\\"Invalid argument for stringToBytes\\");\\n const e = t.length,\\n n = new Uint8Array(e);\\n for (let i = 0; i < e; ++i) n[i] = 255 & t.charCodeAt(i);\\n return n;\\n }\\n e.FeatureTest = class FeatureTest {\\n static get isLittleEndian() {\\n return shadow(this, \\"isLittleEndian\\", function isLittleEndian() {\\n const t = new Uint8Array(4);\\n t[0] = 1;\\n return 1 === new Uint32Array(t.buffer, 0, 1)[0];\\n }());\\n }\\n static get isEvalSupported() {\\n return shadow(this, \\"isEvalSupported\\", function isEvalSupported() {\\n try {\\n new Function(\\"\\");\\n return !0;\\n } catch (_unused3) {\\n return !1;\\n }\\n }());\\n }\\n static get isOffscreenCanvasSupported() {\\n return shadow(this, \\"isOffscreenCanvasSupported\\", \\"undefined\\" != typeof OffscreenCanvas);\\n }\\n static get platform() {\\n return \\"undefined\\" == typeof navigator ? shadow(this, \\"platform\\", {\\n isWin: !1,\\n isMac: !1\\n }) : shadow(this, \\"platform\\", {\\n isWin: navigator.platform.includes(\\"Win\\"),\\n isMac: navigator.platform.includes(\\"Mac\\")\\n });\\n }\\n };\\n const o = [...Array(256).keys()].map(t => t.toString(16).padStart(2, \\"0\\"));\\n e.Util = class Util {\\n static makeHexColor(t, e, n) {\\n return \\"#\\".concat(o[t]).concat(o[e]).concat(o[n]);\\n }\\n static scaleMinMax(t, e) {\\n let n;\\n if (t[0]) {\\n if (t[0] < 0) {\\n n = e[0];\\n e[0] = e[1];\\n e[1] = n;\\n }\\n e[0] *= t[0];\\n e[1] *= t[0];\\n if (t[3] < 0) {\\n n = e[2];\\n e[2] = e[3];\\n e[3] = n;\\n }\\n e[2] *= t[3];\\n e[3] *= t[3];\\n } else {\\n n = e[0];\\n e[0] = e[2];\\n e[2] = n;\\n n = e[1];\\n e[1] = e[3];\\n e[3] = n;\\n if (t[1] < 0) {\\n n = e[2];\\n e[2] = e[3];\\n e[3] = n;\\n }\\n e[2] *= t[1];\\n e[3] *= t[1];\\n if (t[2] < 0) {\\n n = e[0];\\n e[0] = e[1];\\n e[1] = n;\\n }\\n e[0] *= t[2];\\n e[1] *= t[2];\\n }\\n e[0] += t[4];\\n e[1] += t[4];\\n e[2] += t[5];\\n e[3] += t[5];\\n }\\n static transform(t, e) {\\n return [t[0] * e[0] + t[2] * e[1], t[1] * e[0] + t[3] * e[1], t[0] * e[2] + t[2] * e[3], t[1] * e[2] + t[3] * e[3], t[0] * e[4] + t[2] * e[5] + t[4], t[1] * e[4] + t[3] * e[5] + t[5]];\\n }\\n static applyTransform(t, e) {\\n return [t[0] * e[0] + t[1] * e[2] + e[4], t[0] * e[1] + t[1] * e[3] + e[5]];\\n }\\n static applyInverseTransform(t, e) {\\n const n = e[0] * e[3] - e[1] * e[2];\\n return [(t[0] * e[3] - t[1] * e[2] + e[2] * e[5] - e[4] * e[3]) / n, (-t[0] * e[1] + t[1] * e[0] + e[4] * e[1] - e[5] * e[0]) / n];\\n }\\n static getAxialAlignedBoundingBox(t, e) {\\n const n = this.applyTransform(t, e),\\n i = this.applyTransform(t.slice(2, 4), e),\\n r = this.applyTransform([t[0], t[3]], e),\\n s = this.applyTransform([t[2], t[1]], e);\\n return [Math.min(n[0], i[0], r[0], s[0]), Math.min(n[1], i[1], r[1], s[1]), Math.max(n[0], i[0], r[0], s[0]), Math.max(n[1], i[1], r[1], s[1])];\\n }\\n static inverseTransform(t) {\\n const e = t[0] * t[3] - t[1] * t[2];\\n return [t[3] / e, -t[1] / e, -t[2] / e, t[0] / e, (t[2] * t[5] - t[4] * t[3]) / e, (t[4] * t[1] - t[5] * t[0]) / e];\\n }\\n static singularValueDecompose2dScale(t) {\\n const e = [t[0], t[2], t[1], t[3]],\\n n = t[0] * e[0] + t[1] * e[2],\\n i = t[0] * e[1] + t[1] * e[3],\\n r = t[2] * e[0] + t[3] * e[2],\\n s = t[2] * e[1] + t[3] * e[3],\\n a = (n + s) / 2,\\n o = Math.sqrt((n + s) ** 2 - 4 * (n * s - r * i)) / 2,\\n l = a + o || 1,\\n c = a - o || 1;\\n return [Math.sqrt(l), Math.sqrt(c)];\\n }\\n static normalizeRect(t) {\\n const e = t.slice(0);\\n if (t[0] > t[2]) {\\n e[0] = t[2];\\n e[2] = t[0];\\n }\\n if (t[1] > t[3]) {\\n e[1] = t[3];\\n e[3] = t[1];\\n }\\n return e;\\n }\\n static intersect(t, e) {\\n const n = Math.max(Math.min(t[0], t[2]), Math.min(e[0], e[2])),\\n i = Math.min(Math.max(t[0], t[2]), Math.max(e[0], e[2]));\\n if (n > i) return null;\\n const r = Math.max(Math.min(t[1], t[3]), Math.min(e[1], e[3])),\\n s = Math.min(Math.max(t[1], t[3]), Math.max(e[1], e[3]));\\n return r > s ? null : [n, r, i, s];\\n }\\n static bezierBoundingBox(t, e, n, i, r, s, a, o) {\\n const l = [],\\n c = [[], []];\\n let h, d, u, p, f, g, m, b;\\n for (let c = 0; c < 2; ++c) {\\n if (0 === c) {\\n d = 6 * t - 12 * n + 6 * r;\\n h = -3 * t + 9 * n - 9 * r + 3 * a;\\n u = 3 * n - 3 * t;\\n } else {\\n d = 6 * e - 12 * i + 6 * s;\\n h = -3 * e + 9 * i - 9 * s + 3 * o;\\n u = 3 * i - 3 * e;\\n }\\n if (Math.abs(h) < 1e-12) {\\n if (Math.abs(d) < 1e-12) continue;\\n p = -u / d;\\n 0 < p && p < 1 && l.push(p);\\n } else {\\n m = d * d - 4 * u * h;\\n b = Math.sqrt(m);\\n if (!(m < 0)) {\\n f = (-d + b) / (2 * h);\\n 0 < f && f < 1 && l.push(f);\\n g = (-d - b) / (2 * h);\\n 0 < g && g < 1 && l.push(g);\\n }\\n }\\n }\\n let v,\\n y = l.length;\\n const A = y;\\n for (; y--;) {\\n p = l[y];\\n v = 1 - p;\\n c[0][y] = v * v * v * t + 3 * v * v * p * n + 3 * v * p * p * r + p * p * p * a;\\n c[1][y] = v * v * v * e + 3 * v * v * p * i + 3 * v * p * p * s + p * p * p * o;\\n }\\n c[0][A] = t;\\n c[1][A] = e;\\n c[0][A + 1] = a;\\n c[1][A + 1] = o;\\n c[0].length = c[1].length = A + 2;\\n return [Math.min(...c[0]), Math.min(...c[1]), Math.max(...c[0]), Math.max(...c[1])];\\n }\\n };\\n const l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 728, 711, 710, 729, 733, 731, 730, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8226, 8224, 8225, 8230, 8212, 8211, 402, 8260, 8249, 8250, 8722, 8240, 8222, 8220, 8221, 8216, 8217, 8218, 8482, 64257, 64258, 321, 338, 352, 376, 381, 305, 322, 339, 353, 382, 0, 8364];\\n function stringToUTF8String(t) {\\n return decodeURIComponent(escape(t));\\n }\\n e.PromiseCapability = (_t = /*#__PURE__*/new WeakMap(), class PromiseCapability {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _t, {\\n writable: true,\\n value: !1\\n });\\n this.promise = new Promise((t, e) => {\\n this.resolve = e => {\\n _classPrivateFieldSet(this, _t, !0);\\n t(e);\\n };\\n this.reject = t => {\\n _classPrivateFieldSet(this, _t, !0);\\n e(t);\\n };\\n });\\n }\\n get settled() {\\n return _classPrivateFieldGet(this, _t);\\n }\\n });\\n let c = null,\\n h = null;\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(4),\\n s = n(69),\\n a = n(70),\\n o = \\"WebAssembly\\",\\n l = r[o],\\n c = 7 !== Error(\\"e\\", {\\n cause: 7\\n }).cause,\\n exportGlobalErrorCauseWrapper = function exportGlobalErrorCauseWrapper(t, e) {\\n var n = {};\\n n[t] = a(t, e, c);\\n i({\\n global: !0,\\n constructor: !0,\\n arity: 1,\\n forced: c\\n }, n);\\n },\\n exportWebAssemblyErrorCauseWrapper = function exportWebAssemblyErrorCauseWrapper(t, e) {\\n if (l && l[t]) {\\n var n = {};\\n n[t] = a(o + \\".\\" + t, e, c);\\n i({\\n target: o,\\n stat: !0,\\n constructor: !0,\\n arity: 1,\\n forced: c\\n }, n);\\n }\\n };\\n exportGlobalErrorCauseWrapper(\\"Error\\", function (t) {\\n return function Error(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"EvalError\\", function (t) {\\n return function EvalError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"RangeError\\", function (t) {\\n return function RangeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"ReferenceError\\", function (t) {\\n return function ReferenceError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"SyntaxError\\", function (t) {\\n return function SyntaxError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"TypeError\\", function (t) {\\n return function TypeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportGlobalErrorCauseWrapper(\\"URIError\\", function (t) {\\n return function URIError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"CompileError\\", function (t) {\\n return function CompileError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"LinkError\\", function (t) {\\n return function LinkError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n exportWebAssemblyErrorCauseWrapper(\\"RuntimeError\\", function (t) {\\n return function RuntimeError(e) {\\n return s(t, this, arguments);\\n };\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(5).f,\\n s = n(44),\\n a = n(48),\\n o = n(38),\\n l = n(56),\\n c = n(68);\\n t.exports = function (t, e) {\\n var n,\\n h,\\n d,\\n u,\\n p,\\n f = t.target,\\n g = t.global,\\n m = t.stat;\\n if (n = g ? i : m ? i[f] || o(f, {}) : (i[f] || {}).prototype) for (h in e) {\\n u = e[h];\\n d = t.dontCallGetSet ? (p = r(n, h)) && p.value : n[h];\\n if (!c(g ? h : f + (m ? \\".\\" : \\"#\\") + h, t.forced) && void 0 !== d) {\\n if (typeof u == typeof d) continue;\\n l(u, d);\\n }\\n (t.sham || d && d.sham) && s(u, \\"sham\\", !0);\\n a(n, h, u, t);\\n }\\n };\\n }, function (t) {\\n var check = function check(t) {\\n return t && t.Math == Math && t;\\n };\\n t.exports = check(\\"object\\" == typeof globalThis && globalThis) || check(\\"object\\" == typeof window && window) || check(\\"object\\" == typeof self && self) || check(\\"object\\" == typeof __webpack_require__.g && __webpack_require__.g) || function () {\\n return this;\\n }() || this || Function(\\"return this\\")();\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(8),\\n s = n(10),\\n a = n(11),\\n o = n(12),\\n l = n(18),\\n c = n(39),\\n h = n(42),\\n d = Object.getOwnPropertyDescriptor;\\n e.f = i ? d : function getOwnPropertyDescriptor(t, e) {\\n t = o(t);\\n e = l(e);\\n if (h) try {\\n return d(t, e);\\n } catch (t) {}\\n if (c(t, e)) return a(!r(s.f, t, e), t[e]);\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n return 7 != Object.defineProperty({}, 1, {\\n get: function get() {\\n return 7;\\n }\\n })[1];\\n });\\n }, t => {\\n t.exports = function (t) {\\n try {\\n return !!t();\\n } catch (t) {\\n return !0;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype.call;\\n t.exports = i ? r.bind(r) : function () {\\n return r.apply(r, arguments);\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n var t = function () {}.bind();\\n return \\"function\\" != typeof t || t.hasOwnProperty(\\"prototype\\");\\n });\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n var n = {}.propertyIsEnumerable,\\n i = Object.getOwnPropertyDescriptor,\\n r = i && !n.call({\\n 1: 2\\n }, 1);\\n e.f = r ? function propertyIsEnumerable(t) {\\n var e = i(this, t);\\n return !!e && e.enumerable;\\n } : n;\\n }, t => {\\n t.exports = function (t, e) {\\n return {\\n enumerable: !(1 & t),\\n configurable: !(2 & t),\\n writable: !(4 & t),\\n value: e\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(13),\\n r = n(16);\\n t.exports = function (t) {\\n return i(r(t));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(15),\\n a = Object,\\n o = i(\\"\\".split);\\n t.exports = r(function () {\\n return !a(\\"z\\").propertyIsEnumerable(0);\\n }) ? function (t) {\\n return \\"String\\" == s(t) ? o(t, \\"\\") : a(t);\\n } : a;\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype,\\n s = r.call,\\n a = i && r.bind.bind(s, s);\\n t.exports = i ? a : function (t) {\\n return function () {\\n return s.apply(t, arguments);\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = i({}.toString),\\n s = i(\\"\\".slice);\\n t.exports = function (t) {\\n return s(r(t), 8, -1);\\n };\\n }, (t, e, n) => {\\n var i = n(17),\\n r = TypeError;\\n t.exports = function (t) {\\n if (i(t)) throw r(\\"Can't call method on \\" + t);\\n return t;\\n };\\n }, t => {\\n t.exports = function (t) {\\n return null == t;\\n };\\n }, (t, e, n) => {\\n var i = n(19),\\n r = n(23);\\n t.exports = function (t) {\\n var e = i(t, \\"string\\");\\n return r(e) ? e : e + \\"\\";\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(20),\\n s = n(23),\\n a = n(30),\\n o = n(33),\\n l = n(34),\\n c = TypeError,\\n h = l(\\"toPrimitive\\");\\n t.exports = function (t, e) {\\n if (!r(t) || s(t)) return t;\\n var n,\\n l = a(t, h);\\n if (l) {\\n void 0 === e && (e = \\"default\\");\\n n = i(l, t, e);\\n if (!r(n) || s(n)) return n;\\n throw c(\\"Can't convert object to primitive value\\");\\n }\\n void 0 === e && (e = \\"number\\");\\n return o(t, e);\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(22),\\n s = r.all;\\n t.exports = r.IS_HTMLDDA ? function (t) {\\n return \\"object\\" == typeof t ? null !== t : i(t) || t === s;\\n } : function (t) {\\n return \\"object\\" == typeof t ? null !== t : i(t);\\n };\\n }, (t, e, n) => {\\n var i = n(22),\\n r = i.all;\\n t.exports = i.IS_HTMLDDA ? function (t) {\\n return \\"function\\" == typeof t || t === r;\\n } : function (t) {\\n return \\"function\\" == typeof t;\\n };\\n }, t => {\\n var e = \\"object\\" == typeof document && document.all,\\n n = void 0 === e && void 0 !== e;\\n t.exports = {\\n all: e,\\n IS_HTMLDDA: n\\n };\\n }, (t, e, n) => {\\n var i = n(24),\\n r = n(21),\\n s = n(25),\\n a = n(26),\\n o = Object;\\n t.exports = a ? function (t) {\\n return \\"symbol\\" == typeof t;\\n } : function (t) {\\n var e = i(\\"Symbol\\");\\n return r(e) && s(e.prototype, o(t));\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(21);\\n t.exports = function (t, e) {\\n return arguments.length < 2 ? (n = i[t], r(n) ? n : void 0) : i[t] && i[t][e];\\n var n;\\n };\\n }, (t, e, n) => {\\n var i = n(14);\\n t.exports = i({}.isPrototypeOf);\\n }, (t, e, n) => {\\n var i = n(27);\\n t.exports = i && !Symbol.sham && \\"symbol\\" == typeof Symbol.iterator;\\n }, (t, e, n) => {\\n var i = n(28),\\n r = n(7),\\n s = n(4).String;\\n t.exports = !!Object.getOwnPropertySymbols && !r(function () {\\n var t = Symbol();\\n return !s(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && i && i < 41;\\n });\\n }, (t, e, n) => {\\n var i,\\n r,\\n s = n(4),\\n a = n(29),\\n o = s.process,\\n l = s.Deno,\\n c = o && o.versions || l && l.version,\\n h = c && c.v8;\\n h && (r = (i = h.split(\\".\\"))[0] > 0 && i[0] < 4 ? 1 : +(i[0] + i[1]));\\n !r && a && (!(i = a.match(/Edge\\\\/(\\\\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\\\\/(\\\\d+)/)) && (r = +i[1]);\\n t.exports = r;\\n }, t => {\\n t.exports = \\"undefined\\" != typeof navigator && String(navigator.userAgent) || \\"\\";\\n }, (t, e, n) => {\\n var i = n(31),\\n r = n(17);\\n t.exports = function (t, e) {\\n var n = t[e];\\n return r(n) ? void 0 : i(n);\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(32),\\n s = TypeError;\\n t.exports = function (t) {\\n if (i(t)) return t;\\n throw s(r(t) + \\" is not a function\\");\\n };\\n }, t => {\\n var e = String;\\n t.exports = function (t) {\\n try {\\n return e(t);\\n } catch (t) {\\n return \\"Object\\";\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(21),\\n s = n(20),\\n a = TypeError;\\n t.exports = function (t, e) {\\n var n, o;\\n if (\\"string\\" === e && r(n = t.toString) && !s(o = i(n, t))) return o;\\n if (r(n = t.valueOf) && !s(o = i(n, t))) return o;\\n if (\\"string\\" !== e && r(n = t.toString) && !s(o = i(n, t))) return o;\\n throw a(\\"Can't convert object to primitive value\\");\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(35),\\n s = n(39),\\n a = n(41),\\n o = n(27),\\n l = n(26),\\n c = i.Symbol,\\n h = r(\\"wks\\"),\\n d = l ? c.for || c : c && c.withoutSetter || a;\\n t.exports = function (t) {\\n s(h, t) || (h[t] = o && s(c, t) ? c[t] : d(\\"Symbol.\\" + t));\\n return h[t];\\n };\\n }, (t, e, n) => {\\n var i = n(36),\\n r = n(37);\\n (t.exports = function (t, e) {\\n return r[t] || (r[t] = void 0 !== e ? e : {});\\n })(\\"versions\\", []).push({\\n version: \\"3.31.1\\",\\n mode: i ? \\"pure\\" : \\"global\\",\\n copyright: \\"© 2014-2023 Denis Pushkarev (zloirock.ru)\\",\\n license: \\"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE\\",\\n source: \\"https://github.com/zloirock/core-js\\"\\n });\\n }, t => {\\n t.exports = !1;\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(38),\\n s = \\"__core-js_shared__\\",\\n a = i[s] || r(s, {});\\n t.exports = a;\\n }, (t, e, n) => {\\n var i = n(4),\\n r = Object.defineProperty;\\n t.exports = function (t, e) {\\n try {\\n r(i, t, {\\n value: e,\\n configurable: !0,\\n writable: !0\\n });\\n } catch (n) {\\n i[t] = e;\\n }\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(40),\\n s = i({}.hasOwnProperty);\\n t.exports = Object.hasOwn || function hasOwn(t, e) {\\n return s(r(t), e);\\n };\\n }, (t, e, n) => {\\n var i = n(16),\\n r = Object;\\n t.exports = function (t) {\\n return r(i(t));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = 0,\\n s = Math.random(),\\n a = i(1..toString);\\n t.exports = function (t) {\\n return \\"Symbol(\\" + (void 0 === t ? \\"\\" : t) + \\")_\\" + a(++r + s, 36);\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(7),\\n s = n(43);\\n t.exports = !i && !r(function () {\\n return 7 != Object.defineProperty(s(\\"div\\"), \\"a\\", {\\n get: function get() {\\n return 7;\\n }\\n }).a;\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(20),\\n s = i.document,\\n a = r(s) && r(s.createElement);\\n t.exports = function (t) {\\n return a ? s.createElement(t) : {};\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(45),\\n s = n(11);\\n t.exports = i ? function (t, e, n) {\\n return r.f(t, e, s(1, n));\\n } : function (t, e, n) {\\n t[e] = n;\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(42),\\n s = n(46),\\n a = n(47),\\n o = n(18),\\n l = TypeError,\\n c = Object.defineProperty,\\n h = Object.getOwnPropertyDescriptor,\\n d = \\"enumerable\\",\\n u = \\"configurable\\",\\n p = \\"writable\\";\\n e.f = i ? s ? function defineProperty(t, e, n) {\\n a(t);\\n e = o(e);\\n a(n);\\n if (\\"function\\" == typeof t && \\"prototype\\" === e && \\"value\\" in n && p in n && !n[p]) {\\n var i = h(t, e);\\n if (i && i[p]) {\\n t[e] = n.value;\\n n = {\\n configurable: u in n ? n[u] : i[u],\\n enumerable: d in n ? n[d] : i[d],\\n writable: !1\\n };\\n }\\n }\\n return c(t, e, n);\\n } : c : function defineProperty(t, e, n) {\\n a(t);\\n e = o(e);\\n a(n);\\n if (r) try {\\n return c(t, e, n);\\n } catch (t) {}\\n if (\\"get\\" in n || \\"set\\" in n) throw l(\\"Accessors not supported\\");\\n \\"value\\" in n && (t[e] = n.value);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(7);\\n t.exports = i && r(function () {\\n return 42 != Object.defineProperty(function () {}, \\"prototype\\", {\\n value: 42,\\n writable: !1\\n }).prototype;\\n });\\n }, (t, e, n) => {\\n var i = n(20),\\n r = String,\\n s = TypeError;\\n t.exports = function (t) {\\n if (i(t)) return t;\\n throw s(r(t) + \\" is not an object\\");\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(45),\\n s = n(49),\\n a = n(38);\\n t.exports = function (t, e, n, o) {\\n o || (o = {});\\n var l = o.enumerable,\\n c = void 0 !== o.name ? o.name : e;\\n i(n) && s(n, c, o);\\n if (o.global) l ? t[e] = n : a(e, n);else {\\n try {\\n o.unsafe ? t[e] && (l = !0) : delete t[e];\\n } catch (t) {}\\n l ? t[e] = n : r.f(t, e, {\\n value: n,\\n enumerable: !1,\\n configurable: !o.nonConfigurable,\\n writable: !o.nonWritable\\n });\\n }\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(21),\\n a = n(39),\\n o = n(6),\\n l = n(50).CONFIGURABLE,\\n c = n(51),\\n h = n(52),\\n d = h.enforce,\\n u = h.get,\\n p = String,\\n f = Object.defineProperty,\\n g = i(\\"\\".slice),\\n m = i(\\"\\".replace),\\n b = i([].join),\\n v = o && !r(function () {\\n return 8 !== f(function () {}, \\"length\\", {\\n value: 8\\n }).length;\\n }),\\n y = String(String).split(\\"String\\"),\\n A = t.exports = function (t, e, n) {\\n \\"Symbol(\\" === g(p(e), 0, 7) && (e = \\"[\\" + m(p(e), /^Symbol\\\\(([^)]*)\\\\)/, \\"$1\\") + \\"]\\");\\n n && n.getter && (e = \\"get \\" + e);\\n n && n.setter && (e = \\"set \\" + e);\\n (!a(t, \\"name\\") || l && t.name !== e) && (o ? f(t, \\"name\\", {\\n value: e,\\n configurable: !0\\n }) : t.name = e);\\n v && n && a(n, \\"arity\\") && t.length !== n.arity && f(t, \\"length\\", {\\n value: n.arity\\n });\\n try {\\n n && a(n, \\"constructor\\") && n.constructor ? o && f(t, \\"prototype\\", {\\n writable: !1\\n }) : t.prototype && (t.prototype = void 0);\\n } catch (t) {}\\n var i = d(t);\\n a(i, \\"source\\") || (i.source = b(y, \\"string\\" == typeof e ? e : \\"\\"));\\n return t;\\n };\\n Function.prototype.toString = A(function toString() {\\n return s(this) && u(this).source || c(this);\\n }, \\"toString\\");\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(39),\\n s = Function.prototype,\\n a = i && Object.getOwnPropertyDescriptor,\\n o = r(s, \\"name\\"),\\n l = o && \\"something\\" === function something() {}.name,\\n c = o && (!i || i && a(s, \\"name\\").configurable);\\n t.exports = {\\n EXISTS: o,\\n PROPER: l,\\n CONFIGURABLE: c\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(21),\\n s = n(37),\\n a = i(Function.toString);\\n r(s.inspectSource) || (s.inspectSource = function (t) {\\n return a(t);\\n });\\n t.exports = s.inspectSource;\\n }, (t, e, n) => {\\n var i,\\n r,\\n s,\\n a = n(53),\\n o = n(4),\\n l = n(20),\\n c = n(44),\\n h = n(39),\\n d = n(37),\\n u = n(54),\\n p = n(55),\\n f = \\"Object already initialized\\",\\n g = o.TypeError,\\n m = o.WeakMap;\\n if (a || d.state) {\\n var b = d.state || (d.state = new m());\\n b.get = b.get;\\n b.has = b.has;\\n b.set = b.set;\\n i = function i(t, e) {\\n if (b.has(t)) throw g(f);\\n e.facade = t;\\n b.set(t, e);\\n return e;\\n };\\n r = function r(t) {\\n return b.get(t) || {};\\n };\\n s = function s(t) {\\n return b.has(t);\\n };\\n } else {\\n var v = u(\\"state\\");\\n p[v] = !0;\\n i = function i(t, e) {\\n if (h(t, v)) throw g(f);\\n e.facade = t;\\n c(t, v, e);\\n return e;\\n };\\n r = function r(t) {\\n return h(t, v) ? t[v] : {};\\n };\\n s = function s(t) {\\n return h(t, v);\\n };\\n }\\n t.exports = {\\n set: i,\\n get: r,\\n has: s,\\n enforce: function enforce(t) {\\n return s(t) ? r(t) : i(t, {});\\n },\\n getterFor: function getterFor(t) {\\n return function (e) {\\n var n;\\n if (!l(e) || (n = r(e)).type !== t) throw g(\\"Incompatible receiver, \\" + t + \\" required\\");\\n return n;\\n };\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(21),\\n s = i.WeakMap;\\n t.exports = r(s) && /native code/.test(String(s));\\n }, (t, e, n) => {\\n var i = n(35),\\n r = n(41),\\n s = i(\\"keys\\");\\n t.exports = function (t) {\\n return s[t] || (s[t] = r(t));\\n };\\n }, t => {\\n t.exports = {};\\n }, (t, e, n) => {\\n var i = n(39),\\n r = n(57),\\n s = n(5),\\n a = n(45);\\n t.exports = function (t, e, n) {\\n for (var o = r(e), l = a.f, c = s.f, h = 0; h < o.length; h++) {\\n var d = o[h];\\n i(t, d) || n && i(n, d) || l(t, d, c(e, d));\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(24),\\n r = n(14),\\n s = n(58),\\n a = n(67),\\n o = n(47),\\n l = r([].concat);\\n t.exports = i(\\"Reflect\\", \\"ownKeys\\") || function ownKeys(t) {\\n var e = s.f(o(t)),\\n n = a.f;\\n return n ? l(e, n(t)) : e;\\n };\\n }, (t, e, n) => {\\n var i = n(59),\\n r = n(66).concat(\\"length\\", \\"prototype\\");\\n e.f = Object.getOwnPropertyNames || function getOwnPropertyNames(t) {\\n return i(t, r);\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(39),\\n s = n(12),\\n a = n(60).indexOf,\\n o = n(55),\\n l = i([].push);\\n t.exports = function (t, e) {\\n var n,\\n i = s(t),\\n c = 0,\\n h = [];\\n for (n in i) !r(o, n) && r(i, n) && l(h, n);\\n for (; e.length > c;) r(i, n = e[c++]) && (~a(h, n) || l(h, n));\\n return h;\\n };\\n }, (t, e, n) => {\\n var i = n(12),\\n r = n(61),\\n s = n(64),\\n createMethod = function createMethod(t) {\\n return function (e, n, a) {\\n var o,\\n l = i(e),\\n c = s(l),\\n h = r(a, c);\\n if (t && n != n) {\\n for (; c > h;) if ((o = l[h++]) != o) return !0;\\n } else for (; c > h; h++) if ((t || h in l) && l[h] === n) return t || h || 0;\\n return !t && -1;\\n };\\n };\\n t.exports = {\\n includes: createMethod(!0),\\n indexOf: createMethod(!1)\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = Math.max,\\n s = Math.min;\\n t.exports = function (t, e) {\\n var n = i(t);\\n return n < 0 ? r(n + e, 0) : s(n, e);\\n };\\n }, (t, e, n) => {\\n var i = n(63);\\n t.exports = function (t) {\\n var e = +t;\\n return e != e || 0 === e ? 0 : i(e);\\n };\\n }, t => {\\n var e = Math.ceil,\\n n = Math.floor;\\n t.exports = Math.trunc || function trunc(t) {\\n var i = +t;\\n return (i > 0 ? n : e)(i);\\n };\\n }, (t, e, n) => {\\n var i = n(65);\\n t.exports = function (t) {\\n return i(t.length);\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = Math.min;\\n t.exports = function (t) {\\n return t > 0 ? r(i(t), 9007199254740991) : 0;\\n };\\n }, t => {\\n t.exports = [\\"constructor\\", \\"hasOwnProperty\\", \\"isPrototypeOf\\", \\"propertyIsEnumerable\\", \\"toLocaleString\\", \\"toString\\", \\"valueOf\\"];\\n }, (t, e) => {\\n e.f = Object.getOwnPropertySymbols;\\n }, (t, e, n) => {\\n var i = n(7),\\n r = n(21),\\n s = /#|\\\\.prototype\\\\./,\\n isForced = function isForced(t, e) {\\n var n = o[a(t)];\\n return n == c || n != l && (r(e) ? i(e) : !!e);\\n },\\n a = isForced.normalize = function (t) {\\n return String(t).replace(s, \\".\\").toLowerCase();\\n },\\n o = isForced.data = {},\\n l = isForced.NATIVE = \\"N\\",\\n c = isForced.POLYFILL = \\"P\\";\\n t.exports = isForced;\\n }, (t, e, n) => {\\n var i = n(9),\\n r = Function.prototype,\\n s = r.apply,\\n a = r.call;\\n t.exports = \\"object\\" == typeof Reflect && Reflect.apply || (i ? a.bind(s) : function () {\\n return a.apply(s, arguments);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(24),\\n r = n(39),\\n s = n(44),\\n a = n(25),\\n o = n(71),\\n l = n(56),\\n c = n(74),\\n h = n(75),\\n d = n(76),\\n u = n(80),\\n p = n(81),\\n f = n(6),\\n g = n(36);\\n t.exports = function (t, e, n, m) {\\n var b = \\"stackTraceLimit\\",\\n v = m ? 2 : 1,\\n y = t.split(\\".\\"),\\n A = y[y.length - 1],\\n _ = i.apply(null, y);\\n if (_) {\\n var S = _.prototype;\\n !g && r(S, \\"cause\\") && delete S.cause;\\n if (!n) return _;\\n var E = i(\\"Error\\"),\\n x = e(function (t, e) {\\n var n = d(m ? e : t, void 0),\\n i = m ? new _(t) : new _();\\n void 0 !== n && s(i, \\"message\\", n);\\n p(i, x, i.stack, 2);\\n this && a(S, this) && h(i, this, x);\\n arguments.length > v && u(i, arguments[v]);\\n return i;\\n });\\n x.prototype = S;\\n if (\\"Error\\" !== A) o ? o(x, E) : l(x, E, {\\n name: !0\\n });else if (f && b in _) {\\n c(x, _, b);\\n c(x, _, \\"prepareStackTrace\\");\\n }\\n l(x, _);\\n if (!g) try {\\n S.name !== A && s(S, \\"name\\", A);\\n S.constructor = x;\\n } catch (t) {}\\n return x;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(47),\\n s = n(73);\\n t.exports = Object.setPrototypeOf || (\\"__proto__\\" in {} ? function () {\\n var t,\\n e = !1,\\n n = {};\\n try {\\n (t = i(Object.prototype, \\"__proto__\\", \\"set\\"))(n, []);\\n e = n instanceof Array;\\n } catch (t) {}\\n return function setPrototypeOf(n, i) {\\n r(n);\\n s(i);\\n e ? t(n, i) : n.__proto__ = i;\\n return n;\\n };\\n }() : void 0);\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(31);\\n t.exports = function (t, e, n) {\\n try {\\n return i(r(Object.getOwnPropertyDescriptor(t, e)[n]));\\n } catch (t) {}\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = String,\\n s = TypeError;\\n t.exports = function (t) {\\n if (\\"object\\" == typeof t || i(t)) return t;\\n throw s(\\"Can't set \\" + r(t) + \\" as a prototype\\");\\n };\\n }, (t, e, n) => {\\n var i = n(45).f;\\n t.exports = function (t, e, n) {\\n n in t || i(t, n, {\\n configurable: !0,\\n get: function get() {\\n return e[n];\\n },\\n set: function set(t) {\\n e[n] = t;\\n }\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(21),\\n r = n(20),\\n s = n(71);\\n t.exports = function (t, e, n) {\\n var a, o;\\n s && i(a = e.constructor) && a !== n && r(o = a.prototype) && o !== n.prototype && s(t, o);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(77);\\n t.exports = function (t, e) {\\n return void 0 === t ? arguments.length < 2 ? \\"\\" : e : i(t);\\n };\\n }, (t, e, n) => {\\n var i = n(78),\\n r = String;\\n t.exports = function (t) {\\n if (\\"Symbol\\" === i(t)) throw TypeError(\\"Cannot convert a Symbol value to a string\\");\\n return r(t);\\n };\\n }, (t, e, n) => {\\n var i = n(79),\\n r = n(21),\\n s = n(15),\\n a = n(34)(\\"toStringTag\\"),\\n o = Object,\\n l = \\"Arguments\\" == s(function () {\\n return arguments;\\n }());\\n t.exports = i ? s : function (t) {\\n var e, n, i;\\n return void 0 === t ? \\"Undefined\\" : null === t ? \\"Null\\" : \\"string\\" == typeof (n = function (t, e) {\\n try {\\n return t[e];\\n } catch (t) {}\\n }(e = o(t), a)) ? n : l ? s(e) : \\"Object\\" == (i = s(e)) && r(e.callee) ? \\"Arguments\\" : i;\\n };\\n }, (t, e, n) => {\\n var i = {};\\n i[n(34)(\\"toStringTag\\")] = \\"z\\";\\n t.exports = \\"[object z]\\" === String(i);\\n }, (t, e, n) => {\\n var i = n(20),\\n r = n(44);\\n t.exports = function (t, e) {\\n i(e) && \\"cause\\" in e && r(t, \\"cause\\", e.cause);\\n };\\n }, (t, e, n) => {\\n var i = n(44),\\n r = n(82),\\n s = n(83),\\n a = Error.captureStackTrace;\\n t.exports = function (t, e, n, o) {\\n s && (a ? a(t, e) : i(t, \\"stack\\", r(n, o)));\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Error,\\n s = i(\\"\\".replace),\\n a = String(r(\\"zxcasd\\").stack),\\n o = /\\\\n\\\\s*at [^:]*:[^\\\\n]*/,\\n l = o.test(a);\\n t.exports = function (t, e) {\\n if (l && \\"string\\" == typeof t && !r.prepareStackTrace) for (; e--;) t = s(t, o, \\"\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(7),\\n r = n(11);\\n t.exports = !i(function () {\\n var t = Error(\\"a\\");\\n if (!(\\"stack\\" in t)) return !0;\\n Object.defineProperty(t, \\"stack\\", r(1, 7));\\n return 7 !== t.stack;\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(48),\\n r = n(14),\\n s = n(77),\\n a = n(85),\\n o = URLSearchParams,\\n l = o.prototype,\\n c = r(l.append),\\n h = r(l.delete),\\n d = r(l.forEach),\\n u = r([].push),\\n p = new o(\\"a=1&a=2\\");\\n p.delete(\\"a\\", 1);\\n p + \\"\\" != \\"a=2\\" && i(l, \\"delete\\", function (t) {\\n var e = arguments.length,\\n n = e < 2 ? void 0 : arguments[1];\\n if (e && void 0 === n) return h(this, t);\\n var i = [];\\n d(this, function (t, e) {\\n u(i, {\\n key: e,\\n value: t\\n });\\n });\\n a(e, 1);\\n for (var r, o = s(t), l = s(n), p = 0, f = 0, g = !1, m = i.length; p < m;) {\\n r = i[p++];\\n if (g || r.key === o) {\\n g = !0;\\n h(this, r.key);\\n } else f++;\\n }\\n for (; f < m;) (r = i[f++]).key === o && r.value === l || c(this, r.key, r.value);\\n }, {\\n enumerable: !0,\\n unsafe: !0\\n });\\n }, t => {\\n var e = TypeError;\\n t.exports = function (t, n) {\\n if (t < n) throw e(\\"Not enough arguments\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(48),\\n r = n(14),\\n s = n(77),\\n a = n(85),\\n o = URLSearchParams,\\n l = o.prototype,\\n c = r(l.getAll),\\n h = r(l.has);\\n new o(\\"a=1\\").has(\\"a\\", 2) && i(l, \\"has\\", function has(t) {\\n var e = arguments.length,\\n n = e < 2 ? void 0 : arguments[1];\\n if (e && void 0 === n) return h(this, t);\\n var i = c(this, t);\\n a(e, 1);\\n for (var r = s(n), o = 0; o < i.length;) if (i[o++] === r) return !0;\\n return !1;\\n }, {\\n enumerable: !0,\\n unsafe: !0\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(14),\\n s = n(88),\\n a = URLSearchParams.prototype,\\n o = r(a.forEach);\\n i && !(\\"size\\" in a) && s(a, \\"size\\", {\\n get: function size() {\\n var t = 0;\\n o(this, function () {\\n t++;\\n });\\n return t;\\n },\\n configurable: !0,\\n enumerable: !0\\n });\\n }, (t, e, n) => {\\n var i = n(49),\\n r = n(45);\\n t.exports = function (t, e, n) {\\n n.get && i(n.get, e, {\\n getter: !0\\n });\\n n.set && i(n.set, e, {\\n setter: !0\\n });\\n return r.f(t, e, n);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(40),\\n s = n(64),\\n a = n(90),\\n o = n(92);\\n i({\\n target: \\"Array\\",\\n proto: !0,\\n arity: 1,\\n forced: n(7)(function () {\\n return 4294967297 !== [].push.call({\\n length: 4294967296\\n }, 1);\\n }) || !function () {\\n try {\\n Object.defineProperty([], \\"length\\", {\\n writable: !1\\n }).push();\\n } catch (t) {\\n return t instanceof TypeError;\\n }\\n }()\\n }, {\\n push: function push(t) {\\n var e = r(this),\\n n = s(e),\\n i = arguments.length;\\n o(n + i);\\n for (var l = 0; l < i; l++) {\\n e[n] = arguments[l];\\n n++;\\n }\\n a(e, n);\\n return n;\\n }\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(91),\\n s = TypeError,\\n a = Object.getOwnPropertyDescriptor,\\n o = i && !function () {\\n if (void 0 !== this) return !0;\\n try {\\n Object.defineProperty([], \\"length\\", {\\n writable: !1\\n }).length = 1;\\n } catch (t) {\\n return t instanceof TypeError;\\n }\\n }();\\n t.exports = o ? function (t, e) {\\n if (r(t) && !a(t, \\"length\\").writable) throw s(\\"Cannot set read only .length\\");\\n return t.length = e;\\n } : function (t, e) {\\n return t.length = e;\\n };\\n }, (t, e, n) => {\\n var i = n(15);\\n t.exports = Array.isArray || function isArray(t) {\\n return \\"Array\\" == i(t);\\n };\\n }, t => {\\n var e = TypeError;\\n t.exports = function (t) {\\n if (t > 9007199254740991) throw e(\\"Maximum allowed index exceeded\\");\\n return t;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(98).findLast,\\n s = i.aTypedArray;\\n (0, i.exportTypedArrayMethod)(\\"findLast\\", function findLast(t) {\\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i,\\n r,\\n s,\\n a = n(95),\\n o = n(6),\\n l = n(4),\\n c = n(21),\\n h = n(20),\\n d = n(39),\\n u = n(78),\\n p = n(32),\\n f = n(44),\\n g = n(48),\\n m = n(88),\\n b = n(25),\\n v = n(96),\\n y = n(71),\\n A = n(34),\\n _ = n(41),\\n S = n(52),\\n E = S.enforce,\\n x = S.get,\\n w = l.Int8Array,\\n C = w && w.prototype,\\n T = l.Uint8ClampedArray,\\n P = T && T.prototype,\\n k = w && v(w),\\n M = C && v(C),\\n R = Object.prototype,\\n I = l.TypeError,\\n D = A(\\"toStringTag\\"),\\n O = _(\\"TYPED_ARRAY_TAG\\"),\\n L = \\"TypedArrayConstructor\\",\\n N = a && !!y && \\"Opera\\" !== u(l.opera),\\n B = !1,\\n j = {\\n Int8Array: 1,\\n Uint8Array: 1,\\n Uint8ClampedArray: 1,\\n Int16Array: 2,\\n Uint16Array: 2,\\n Int32Array: 4,\\n Uint32Array: 4,\\n Float32Array: 4,\\n Float64Array: 8\\n },\\n U = {\\n BigInt64Array: 8,\\n BigUint64Array: 8\\n },\\n getTypedArrayConstructor = function getTypedArrayConstructor(t) {\\n var e = v(t);\\n if (h(e)) {\\n var n = x(e);\\n return n && d(n, L) ? n[L] : getTypedArrayConstructor(e);\\n }\\n },\\n isTypedArray = function isTypedArray(t) {\\n if (!h(t)) return !1;\\n var e = u(t);\\n return d(j, e) || d(U, e);\\n };\\n for (i in j) (s = (r = l[i]) && r.prototype) ? E(s)[L] = r : N = !1;\\n for (i in U) (s = (r = l[i]) && r.prototype) && (E(s)[L] = r);\\n if (!N || !c(k) || k === Function.prototype) {\\n k = function TypedArray() {\\n throw I(\\"Incorrect invocation\\");\\n };\\n if (N) for (i in j) l[i] && y(l[i], k);\\n }\\n if (!N || !M || M === R) {\\n M = k.prototype;\\n if (N) for (i in j) l[i] && y(l[i].prototype, M);\\n }\\n N && v(P) !== M && y(P, M);\\n if (o && !d(M, D)) {\\n B = !0;\\n m(M, D, {\\n configurable: !0,\\n get: function get() {\\n return h(this) ? this[O] : void 0;\\n }\\n });\\n for (i in j) l[i] && f(l[i], O, i);\\n }\\n t.exports = {\\n NATIVE_ARRAY_BUFFER_VIEWS: N,\\n TYPED_ARRAY_TAG: B && O,\\n aTypedArray: function aTypedArray(t) {\\n if (isTypedArray(t)) return t;\\n throw I(\\"Target is not a typed array\\");\\n },\\n aTypedArrayConstructor: function aTypedArrayConstructor(t) {\\n if (c(t) && (!y || b(k, t))) return t;\\n throw I(p(t) + \\" is not a typed array constructor\\");\\n },\\n exportTypedArrayMethod: function exportTypedArrayMethod(t, e, n, i) {\\n if (o) {\\n if (n) for (var r in j) {\\n var s = l[r];\\n if (s && d(s.prototype, t)) try {\\n delete s.prototype[t];\\n } catch (n) {\\n try {\\n s.prototype[t] = e;\\n } catch (t) {}\\n }\\n }\\n M[t] && !n || g(M, t, n ? e : N && C[t] || e, i);\\n }\\n },\\n exportTypedArrayStaticMethod: function exportTypedArrayStaticMethod(t, e, n) {\\n var i, r;\\n if (o) {\\n if (y) {\\n if (n) for (i in j) if ((r = l[i]) && d(r, t)) try {\\n delete r[t];\\n } catch (t) {}\\n if (k[t] && !n) return;\\n try {\\n return g(k, t, n ? e : N && k[t] || e);\\n } catch (t) {}\\n }\\n for (i in j) !(r = l[i]) || r[t] && !n || g(r, t, e);\\n }\\n },\\n getTypedArrayConstructor: getTypedArrayConstructor,\\n isView: function isView(t) {\\n if (!h(t)) return !1;\\n var e = u(t);\\n return \\"DataView\\" === e || d(j, e) || d(U, e);\\n },\\n isTypedArray: isTypedArray,\\n TypedArray: k,\\n TypedArrayPrototype: M\\n };\\n }, t => {\\n t.exports = \\"undefined\\" != typeof ArrayBuffer && \\"undefined\\" != typeof DataView;\\n }, (t, e, n) => {\\n var i = n(39),\\n r = n(21),\\n s = n(40),\\n a = n(54),\\n o = n(97),\\n l = a(\\"IE_PROTO\\"),\\n c = Object,\\n h = c.prototype;\\n t.exports = o ? c.getPrototypeOf : function (t) {\\n var e = s(t);\\n if (i(e, l)) return e[l];\\n var n = e.constructor;\\n return r(n) && e instanceof n ? n.prototype : e instanceof c ? h : null;\\n };\\n }, (t, e, n) => {\\n var i = n(7);\\n t.exports = !i(function () {\\n function F() {}\\n F.prototype.constructor = null;\\n return Object.getPrototypeOf(new F()) !== F.prototype;\\n });\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(13),\\n s = n(40),\\n a = n(64),\\n createMethod = function createMethod(t) {\\n var e = 1 == t;\\n return function (n, o, l) {\\n for (var c, h = s(n), d = r(h), u = i(o, l), p = a(d); p-- > 0;) if (u(c = d[p], p, h)) switch (t) {\\n case 0:\\n return c;\\n case 1:\\n return p;\\n }\\n return e ? -1 : void 0;\\n };\\n };\\n t.exports = {\\n findLast: createMethod(0),\\n findLastIndex: createMethod(1)\\n };\\n }, (t, e, n) => {\\n var i = n(100),\\n r = n(31),\\n s = n(9),\\n a = i(i.bind);\\n t.exports = function (t, e) {\\n r(t);\\n return void 0 === e ? t : s ? a(t, e) : function () {\\n return t.apply(e, arguments);\\n };\\n };\\n }, (t, e, n) => {\\n var i = n(15),\\n r = n(14);\\n t.exports = function (t) {\\n if (\\"Function\\" === i(t)) return r(t);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(98).findLastIndex,\\n s = i.aTypedArray;\\n (0, i.exportTypedArrayMethod)(\\"findLastIndex\\", function findLastIndex(t) {\\n return r(s(this), t, arguments.length > 1 ? arguments[1] : void 0);\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(4),\\n r = n(8),\\n s = n(94),\\n a = n(64),\\n o = n(103),\\n l = n(40),\\n c = n(7),\\n h = i.RangeError,\\n d = i.Int8Array,\\n u = d && d.prototype,\\n p = u && u.set,\\n f = s.aTypedArray,\\n g = s.exportTypedArrayMethod,\\n m = !c(function () {\\n var t = new Uint8ClampedArray(2);\\n r(p, t, {\\n length: 1,\\n 0: 3\\n }, 1);\\n return 3 !== t[1];\\n }),\\n b = m && s.NATIVE_ARRAY_BUFFER_VIEWS && c(function () {\\n var t = new d(2);\\n t.set(1);\\n t.set(\\"2\\", 1);\\n return 0 !== t[0] || 2 !== t[1];\\n });\\n g(\\"set\\", function set(t) {\\n f(this);\\n var e = o(arguments.length > 1 ? arguments[1] : void 0, 1),\\n n = l(t);\\n if (m) return r(p, this, n, e);\\n var i = this.length,\\n s = a(n),\\n c = 0;\\n if (s + e > i) throw h(\\"Wrong length\\");\\n for (; c < s;) this[e + c] = n[c++];\\n }, !m || b);\\n }, (t, e, n) => {\\n var i = n(104),\\n r = RangeError;\\n t.exports = function (t, e) {\\n var n = i(t);\\n if (n % e) throw r(\\"Wrong offset\\");\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = RangeError;\\n t.exports = function (t) {\\n var e = i(t);\\n if (e < 0) throw r(\\"The argument can't be less than 0\\");\\n return e;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(106),\\n r = n(94),\\n s = r.aTypedArray,\\n a = r.exportTypedArrayMethod,\\n o = r.getTypedArrayConstructor;\\n a(\\"toReversed\\", function toReversed() {\\n return i(s(this), o(this));\\n });\\n }, (t, e, n) => {\\n var i = n(64);\\n t.exports = function (t, e) {\\n for (var n = i(t), r = new e(n), s = 0; s < n; s++) r[s] = t[n - s - 1];\\n return r;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(94),\\n r = n(14),\\n s = n(31),\\n a = n(108),\\n o = i.aTypedArray,\\n l = i.getTypedArrayConstructor,\\n c = i.exportTypedArrayMethod,\\n h = r(i.TypedArrayPrototype.sort);\\n c(\\"toSorted\\", function toSorted(t) {\\n void 0 !== t && s(t);\\n var e = o(this),\\n n = a(l(e), e);\\n return h(n, t);\\n });\\n }, (t, e, n) => {\\n var i = n(64);\\n t.exports = function (t, e) {\\n for (var n = 0, r = i(e), s = new t(r); r > n;) s[n] = e[n++];\\n return s;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(110),\\n r = n(94),\\n s = n(111),\\n a = n(62),\\n o = n(112),\\n l = r.aTypedArray,\\n c = r.getTypedArrayConstructor,\\n h = r.exportTypedArrayMethod,\\n d = !!function () {\\n try {\\n new Int8Array(1).with(2, {\\n valueOf: function valueOf() {\\n throw 8;\\n }\\n });\\n } catch (t) {\\n return 8 === t;\\n }\\n }();\\n h(\\"with\\", {\\n with: function _with(t, e) {\\n var n = l(this),\\n r = a(t),\\n h = s(n) ? o(e) : +e;\\n return i(n, c(n), r, h);\\n }\\n }.with, !d);\\n }, (t, e, n) => {\\n var i = n(64),\\n r = n(62),\\n s = RangeError;\\n t.exports = function (t, e, n, a) {\\n var o = i(t),\\n l = r(n),\\n c = l < 0 ? o + l : l;\\n if (c >= o || c < 0) throw s(\\"Incorrect index\\");\\n for (var h = new e(o), d = 0; d < o; d++) h[d] = d === c ? a : t[d];\\n return h;\\n };\\n }, (t, e, n) => {\\n var i = n(78);\\n t.exports = function (t) {\\n var e = i(t);\\n return \\"BigInt64Array\\" == e || \\"BigUint64Array\\" == e;\\n };\\n }, (t, e, n) => {\\n var i = n(19),\\n r = TypeError;\\n t.exports = function (t) {\\n var e = i(t, \\"number\\");\\n if (\\"number\\" == typeof e) throw r(\\"Can't convert number to bigint\\");\\n return BigInt(e);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(6),\\n r = n(88),\\n s = n(114),\\n a = ArrayBuffer.prototype;\\n i && !(\\"detached\\" in a) && r(a, \\"detached\\", {\\n configurable: !0,\\n get: function detached() {\\n return s(this);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(115),\\n s = i(ArrayBuffer.prototype.slice);\\n t.exports = function (t) {\\n if (0 !== r(t)) return !1;\\n try {\\n s(t, 0, 0);\\n return !1;\\n } catch (t) {\\n return !0;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(15),\\n s = TypeError;\\n t.exports = i(ArrayBuffer.prototype, \\"byteLength\\", \\"get\\") || function (t) {\\n if (\\"ArrayBuffer\\" != r(t)) throw s(\\"ArrayBuffer expected\\");\\n return t.byteLength;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(117);\\n r && i({\\n target: \\"ArrayBuffer\\",\\n proto: !0\\n }, {\\n transfer: function transfer() {\\n return r(this, arguments.length ? arguments[0] : void 0, !0);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(14),\\n s = n(72),\\n a = n(118),\\n o = n(114),\\n l = n(115),\\n c = n(119),\\n h = i.TypeError,\\n d = i.structuredClone,\\n u = i.ArrayBuffer,\\n p = i.DataView,\\n f = Math.min,\\n g = u.prototype,\\n m = p.prototype,\\n b = r(g.slice),\\n v = s(g, \\"resizable\\", \\"get\\"),\\n y = s(g, \\"maxByteLength\\", \\"get\\"),\\n A = r(m.getInt8),\\n _ = r(m.setInt8);\\n t.exports = c && function (t, e, n) {\\n var i = l(t),\\n r = void 0 === e ? i : a(e),\\n s = !v || !v(t);\\n if (o(t)) throw h(\\"ArrayBuffer is detached\\");\\n var c = d(t, {\\n transfer: [t]\\n });\\n if (i == r && (n || s)) return c;\\n if (i >= r && (!n || s)) return b(c, 0, r);\\n for (var g = n && !s && y ? {\\n maxByteLength: y(c)\\n } : void 0, m = new u(r, g), S = new p(c), E = new p(m), x = f(r, i), w = 0; w < x; w++) _(E, w, A(S, w));\\n return m;\\n };\\n }, (t, e, n) => {\\n var i = n(62),\\n r = n(65),\\n s = RangeError;\\n t.exports = function (t) {\\n if (void 0 === t) return 0;\\n var e = i(t),\\n n = r(e);\\n if (e !== n) throw s(\\"Wrong length or index\\");\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(4),\\n r = n(7),\\n s = n(28),\\n a = n(120),\\n o = n(121),\\n l = n(122),\\n c = i.structuredClone;\\n t.exports = !!c && !r(function () {\\n if (o && s > 92 || l && s > 94 || a && s > 97) return !1;\\n var t = new ArrayBuffer(8),\\n e = c(t, {\\n transfer: [t]\\n });\\n return 0 != t.byteLength || 8 != e.byteLength;\\n });\\n }, (t, e, n) => {\\n var i = n(121),\\n r = n(122);\\n t.exports = !i && !r && \\"object\\" == typeof window && \\"object\\" == typeof document;\\n }, t => {\\n t.exports = \\"object\\" == typeof Deno && Deno && \\"object\\" == typeof Deno.version;\\n }, (t, e, n) => {\\n var i = n(15);\\n t.exports = \\"undefined\\" != typeof process && \\"process\\" == i(process);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(117);\\n r && i({\\n target: \\"ArrayBuffer\\",\\n proto: !0\\n }, {\\n transferToFixedLength: function transferToFixedLength() {\\n return r(this, arguments.length ? arguments[0] : void 0, !1);\\n }\\n });\\n }, (__unused_webpack_module, exports, __w_pdfjs_require__) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(exports, \\"__esModule\\", {\\n value: !0\\n });\\n exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\\n Object.defineProperty(exports, \\"SVGGraphics\\", {\\n enumerable: !0,\\n get: function get() {\\n return _displaySvg.SVGGraphics;\\n }\\n });\\n exports.build = void 0;\\n exports.getDocument = getDocument;\\n exports.version = void 0;\\n __w_pdfjs_require__(84);\\n __w_pdfjs_require__(86);\\n __w_pdfjs_require__(87);\\n __w_pdfjs_require__(2);\\n __w_pdfjs_require__(93);\\n __w_pdfjs_require__(101);\\n __w_pdfjs_require__(102);\\n __w_pdfjs_require__(105);\\n __w_pdfjs_require__(107);\\n __w_pdfjs_require__(109);\\n __w_pdfjs_require__(113);\\n __w_pdfjs_require__(116);\\n __w_pdfjs_require__(123);\\n __w_pdfjs_require__(89);\\n __w_pdfjs_require__(125);\\n __w_pdfjs_require__(135);\\n __w_pdfjs_require__(137);\\n __w_pdfjs_require__(140);\\n __w_pdfjs_require__(142);\\n __w_pdfjs_require__(144);\\n __w_pdfjs_require__(146);\\n __w_pdfjs_require__(148);\\n __w_pdfjs_require__(151);\\n var _util = __w_pdfjs_require__(1),\\n _annotation_storage = __w_pdfjs_require__(162),\\n _display_utils = __w_pdfjs_require__(167),\\n _font_loader = __w_pdfjs_require__(170),\\n _displayNode_utils = __w_pdfjs_require__(171),\\n _canvas = __w_pdfjs_require__(172),\\n _worker_options = __w_pdfjs_require__(175),\\n _message_handler = __w_pdfjs_require__(176),\\n _metadata = __w_pdfjs_require__(177),\\n _optional_content_config = __w_pdfjs_require__(178),\\n _transport_stream = __w_pdfjs_require__(179),\\n _displayFetch_stream = __w_pdfjs_require__(180),\\n _displayNetwork = __w_pdfjs_require__(183),\\n _displayNode_stream = __w_pdfjs_require__(184),\\n _displaySvg = __w_pdfjs_require__(185),\\n _xfa_text = __w_pdfjs_require__(193);\\n const DEFAULT_RANGE_CHUNK_SIZE = 65536,\\n RENDERING_CANCELLED_TIMEOUT = 100,\\n DELAYED_CLEANUP_TIMEOUT = 5e3,\\n DefaultCanvasFactory = _util.isNodeJS ? _displayNode_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\\n exports.DefaultCanvasFactory = DefaultCanvasFactory;\\n const DefaultCMapReaderFactory = _util.isNodeJS ? _displayNode_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\\n const DefaultFilterFactory = _util.isNodeJS ? _displayNode_utils.NodeFilterFactory : _display_utils.DOMFilterFactory;\\n exports.DefaultFilterFactory = DefaultFilterFactory;\\n const DefaultStandardFontDataFactory = _util.isNodeJS ? _displayNode_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\\n function getDocument(t) {\\n var _t$password, _t$length;\\n \\"string\\" == typeof t || t instanceof URL ? t = {\\n url: t\\n } : (0, _util.isArrayBuffer)(t) && (t = {\\n data: t\\n });\\n if (\\"object\\" != typeof t) throw new Error(\\"Invalid parameter in getDocument, need parameter object.\\");\\n if (!t.url && !t.data && !t.range) throw new Error(\\"Invalid parameter object: need either .data, .range or .url\\");\\n const e = new PDFDocumentLoadingTask(),\\n {\\n docId: n\\n } = e,\\n i = t.url ? getUrlProp(t.url) : null,\\n r = t.data ? getDataProp(t.data) : null,\\n s = t.httpHeaders || null,\\n a = !0 === t.withCredentials,\\n o = (_t$password = t.password) !== null && _t$password !== void 0 ? _t$password : null,\\n l = t.range instanceof PDFDataRangeTransport ? t.range : null,\\n c = Number.isInteger(t.rangeChunkSize) && t.rangeChunkSize > 0 ? t.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\\n let h = t.worker instanceof PDFWorker ? t.worker : null;\\n const d = t.verbosity,\\n u = \\"string\\" != typeof t.docBaseUrl || (0, _display_utils.isDataScheme)(t.docBaseUrl) ? null : t.docBaseUrl,\\n p = \\"string\\" == typeof t.cMapUrl ? t.cMapUrl : null,\\n f = !1 !== t.cMapPacked,\\n g = t.CMapReaderFactory || DefaultCMapReaderFactory,\\n m = \\"string\\" == typeof t.standardFontDataUrl ? t.standardFontDataUrl : null,\\n b = t.StandardFontDataFactory || DefaultStandardFontDataFactory,\\n v = !0 !== t.stopAtErrors,\\n y = Number.isInteger(t.maxImageSize) && t.maxImageSize > -1 ? t.maxImageSize : -1,\\n A = !1 !== t.isEvalSupported,\\n _ = \\"boolean\\" == typeof t.isOffscreenCanvasSupported ? t.isOffscreenCanvasSupported : !_util.isNodeJS,\\n S = Number.isInteger(t.canvasMaxAreaInBytes) ? t.canvasMaxAreaInBytes : -1,\\n E = \\"boolean\\" == typeof t.disableFontFace ? t.disableFontFace : _util.isNodeJS,\\n x = !0 === t.fontExtraProperties,\\n w = !0 === t.enableXfa,\\n C = t.ownerDocument || globalThis.document,\\n T = !0 === t.disableRange,\\n P = !0 === t.disableStream,\\n k = !0 === t.disableAutoFetch,\\n M = !0 === t.pdfBug,\\n R = l ? l.length : (_t$length = t.length) !== null && _t$length !== void 0 ? _t$length : NaN,\\n I = \\"boolean\\" == typeof t.useSystemFonts ? t.useSystemFonts : !_util.isNodeJS && !E,\\n D = \\"boolean\\" == typeof t.useWorkerFetch ? t.useWorkerFetch : g === _display_utils.DOMCMapReaderFactory && b === _display_utils.DOMStandardFontDataFactory && p && m && (0, _display_utils.isValidFetchUrl)(p, document.baseURI) && (0, _display_utils.isValidFetchUrl)(m, document.baseURI),\\n O = t.canvasFactory || new DefaultCanvasFactory({\\n ownerDocument: C\\n }),\\n L = t.filterFactory || new DefaultFilterFactory({\\n docId: n,\\n ownerDocument: C\\n });\\n (0, _util.setVerbosityLevel)(d);\\n const N = {\\n canvasFactory: O,\\n filterFactory: L\\n };\\n if (!D) {\\n N.cMapReaderFactory = new g({\\n baseUrl: p,\\n isCompressed: f\\n });\\n N.standardFontDataFactory = new b({\\n baseUrl: m\\n });\\n }\\n if (!h) {\\n const t = {\\n verbosity: d,\\n port: _worker_options.GlobalWorkerOptions.workerPort\\n };\\n h = t.port ? PDFWorker.fromPort(t) : new PDFWorker(t);\\n e._worker = h;\\n }\\n const B = {\\n docId: n,\\n apiVersion: \\"3.9.179\\",\\n data: r,\\n password: o,\\n disableAutoFetch: k,\\n rangeChunkSize: c,\\n length: R,\\n docBaseUrl: u,\\n enableXfa: w,\\n evaluatorOptions: {\\n maxImageSize: y,\\n disableFontFace: E,\\n ignoreErrors: v,\\n isEvalSupported: A,\\n isOffscreenCanvasSupported: _,\\n canvasMaxAreaInBytes: S,\\n fontExtraProperties: x,\\n useSystemFonts: I,\\n cMapUrl: D ? p : null,\\n standardFontDataUrl: D ? m : null\\n }\\n },\\n j = {\\n ignoreErrors: v,\\n isEvalSupported: A,\\n disableFontFace: E,\\n fontExtraProperties: x,\\n enableXfa: w,\\n ownerDocument: C,\\n disableAutoFetch: k,\\n pdfBug: M,\\n styleElement: null\\n };\\n h.promise.then(function () {\\n if (e.destroyed) throw new Error(\\"Loading aborted\\");\\n const t = _fetchDocument(h, B),\\n o = new Promise(function (t) {\\n let e;\\n if (l) e = new _transport_stream.PDFDataTransportStream({\\n length: R,\\n initialData: l.initialData,\\n progressiveDone: l.progressiveDone,\\n contentDispositionFilename: l.contentDispositionFilename,\\n disableRange: T,\\n disableStream: P\\n }, l);else if (!r) {\\n e = (t => _util.isNodeJS ? new _displayNode_stream.PDFNodeStream(t) : (0, _display_utils.isValidFetchUrl)(t.url) ? new _displayFetch_stream.PDFFetchStream(t) : new _displayNetwork.PDFNetworkStream(t))({\\n url: i,\\n length: R,\\n httpHeaders: s,\\n withCredentials: a,\\n rangeChunkSize: c,\\n disableRange: T,\\n disableStream: P\\n });\\n }\\n t(e);\\n });\\n return Promise.all([t, o]).then(function (t) {\\n let [i, r] = t;\\n if (e.destroyed) throw new Error(\\"Loading aborted\\");\\n const s = new _message_handler.MessageHandler(n, i, h.port),\\n a = new WorkerTransport(s, e, r, j, N);\\n e._transport = a;\\n s.send(\\"Ready\\", null);\\n });\\n }).catch(e._capability.reject);\\n return e;\\n }\\n async function _fetchDocument(t, e) {\\n if (t.destroyed) throw new Error(\\"Worker was destroyed\\");\\n const n = await t.messageHandler.sendWithPromise(\\"GetDocRequest\\", e, e.data ? [e.data.buffer] : null);\\n if (t.destroyed) throw new Error(\\"Worker was destroyed\\");\\n return n;\\n }\\n function getUrlProp(t) {\\n if (t instanceof URL) return t.href;\\n try {\\n return new URL(t, window.location).href;\\n } catch (_unused4) {\\n if (_util.isNodeJS && \\"string\\" == typeof t) return t;\\n }\\n throw new Error(\\"Invalid PDF url data: either string or URL-object is expected in the url property.\\");\\n }\\n function getDataProp(t) {\\n if (_util.isNodeJS && \\"undefined\\" != typeof Buffer && t instanceof Buffer) throw new Error(\\"Please provide binary data as \`Uint8Array\`, rather than \`Buffer\`.\\");\\n if (t instanceof Uint8Array && t.byteLength === t.buffer.byteLength) return t;\\n if (\\"string\\" == typeof t) return (0, _util.stringToBytes)(t);\\n if (\\"object\\" == typeof t && !isNaN(t === null || t === void 0 ? void 0 : t.length) || (0, _util.isArrayBuffer)(t)) return new Uint8Array(t);\\n throw new Error(\\"Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.\\");\\n }\\n class PDFDocumentLoadingTask {\\n constructor() {\\n var _PDFDocumentLoadingTa, _PDFDocumentLoadingTa2;\\n this._capability = new _util.PromiseCapability();\\n this._transport = null;\\n this._worker = null;\\n this.docId = \\"d\\" + (_classStaticPrivateFieldSpecSet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e, (_PDFDocumentLoadingTa = _classStaticPrivateFieldSpecGet(PDFDocumentLoadingTask, PDFDocumentLoadingTask, _e), _PDFDocumentLoadingTa2 = _PDFDocumentLoadingTa++, _PDFDocumentLoadingTa)), _PDFDocumentLoadingTa2);\\n this.destroyed = !1;\\n this.onPassword = null;\\n this.onProgress = null;\\n }\\n get promise() {\\n return this._capability.promise;\\n }\\n async destroy() {\\n var _this$_transport;\\n this.destroyed = !0;\\n await ((_this$_transport = this._transport) === null || _this$_transport === void 0 ? void 0 : _this$_transport.destroy());\\n this._transport = null;\\n if (this._worker) {\\n this._worker.destroy();\\n this._worker = null;\\n }\\n }\\n }\\n var _e = {\\n writable: true,\\n value: 0\\n };\\n exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\\n class PDFDataRangeTransport {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\\n this.length = t;\\n this.initialData = e;\\n this.progressiveDone = n;\\n this.contentDispositionFilename = i;\\n this._rangeListeners = [];\\n this._progressListeners = [];\\n this._progressiveReadListeners = [];\\n this._progressiveDoneListeners = [];\\n this._readyCapability = new _util.PromiseCapability();\\n }\\n addRangeListener(t) {\\n this._rangeListeners.push(t);\\n }\\n addProgressListener(t) {\\n this._progressListeners.push(t);\\n }\\n addProgressiveReadListener(t) {\\n this._progressiveReadListeners.push(t);\\n }\\n addProgressiveDoneListener(t) {\\n this._progressiveDoneListeners.push(t);\\n }\\n onDataRange(t, e) {\\n for (const n of this._rangeListeners) n(t, e);\\n }\\n onDataProgress(t, e) {\\n this._readyCapability.promise.then(() => {\\n for (const n of this._progressListeners) n(t, e);\\n });\\n }\\n onDataProgressiveRead(t) {\\n this._readyCapability.promise.then(() => {\\n for (const e of this._progressiveReadListeners) e(t);\\n });\\n }\\n onDataProgressiveDone() {\\n this._readyCapability.promise.then(() => {\\n for (const t of this._progressiveDoneListeners) t();\\n });\\n }\\n transportReady() {\\n this._readyCapability.resolve();\\n }\\n requestDataRange(t, e) {\\n (0, _util.unreachable)(\\"Abstract method PDFDataRangeTransport.requestDataRange\\");\\n }\\n abort() {}\\n }\\n exports.PDFDataRangeTransport = PDFDataRangeTransport;\\n class PDFDocumentProxy {\\n constructor(t, e) {\\n this._pdfInfo = t;\\n this._transport = e;\\n }\\n get annotationStorage() {\\n return this._transport.annotationStorage;\\n }\\n get filterFactory() {\\n return this._transport.filterFactory;\\n }\\n get numPages() {\\n return this._pdfInfo.numPages;\\n }\\n get fingerprints() {\\n return this._pdfInfo.fingerprints;\\n }\\n get isPureXfa() {\\n return (0, _util.shadow)(this, \\"isPureXfa\\", !!this._transport._htmlForXfa);\\n }\\n get allXfaHtml() {\\n return this._transport._htmlForXfa;\\n }\\n getPage(t) {\\n return this._transport.getPage(t);\\n }\\n getPageIndex(t) {\\n return this._transport.getPageIndex(t);\\n }\\n getDestinations() {\\n return this._transport.getDestinations();\\n }\\n getDestination(t) {\\n return this._transport.getDestination(t);\\n }\\n getPageLabels() {\\n return this._transport.getPageLabels();\\n }\\n getPageLayout() {\\n return this._transport.getPageLayout();\\n }\\n getPageMode() {\\n return this._transport.getPageMode();\\n }\\n getViewerPreferences() {\\n return this._transport.getViewerPreferences();\\n }\\n getOpenAction() {\\n return this._transport.getOpenAction();\\n }\\n getAttachments() {\\n return this._transport.getAttachments();\\n }\\n getJavaScript() {\\n return this._transport.getJavaScript();\\n }\\n getJSActions() {\\n return this._transport.getDocJSActions();\\n }\\n getOutline() {\\n return this._transport.getOutline();\\n }\\n getOptionalContentConfig() {\\n return this._transport.getOptionalContentConfig();\\n }\\n getPermissions() {\\n return this._transport.getPermissions();\\n }\\n getMetadata() {\\n return this._transport.getMetadata();\\n }\\n getMarkInfo() {\\n return this._transport.getMarkInfo();\\n }\\n getData() {\\n return this._transport.getData();\\n }\\n saveDocument() {\\n return this._transport.saveDocument();\\n }\\n getDownloadInfo() {\\n return this._transport.downloadInfoCapability.promise;\\n }\\n cleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n return this._transport.startCleanup(t || this.isPureXfa);\\n }\\n destroy() {\\n return this.loadingTask.destroy();\\n }\\n get loadingParams() {\\n return this._transport.loadingParams;\\n }\\n get loadingTask() {\\n return this._transport.loadingTask;\\n }\\n getFieldObjects() {\\n return this._transport.getFieldObjects();\\n }\\n hasJSActions() {\\n return this._transport.hasJSActions();\\n }\\n getCalculationOrderIds() {\\n return this._transport.getCalculationOrderIds();\\n }\\n }\\n exports.PDFDocumentProxy = PDFDocumentProxy;\\n var _n = /*#__PURE__*/new WeakMap();\\n var _i = /*#__PURE__*/new WeakMap();\\n var _s = /*#__PURE__*/new WeakSet();\\n var _r = /*#__PURE__*/new WeakSet();\\n class PDFPageProxy {\\n constructor(_t2, _e2, n) {\\n _classPrivateMethodInitSpec(this, _r);\\n _classPrivateMethodInitSpec(this, _s);\\n _classPrivateFieldInitSpec(this, _n, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _i, {\\n writable: true,\\n value: !1\\n });\\n let i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];\\n this._pageIndex = _t2;\\n this._pageInfo = _e2;\\n this._transport = n;\\n this._stats = i ? new _display_utils.StatTimer() : null;\\n this._pdfBug = i;\\n this.commonObjs = n.commonObjs;\\n this.objs = new PDFObjects();\\n this._maybeCleanupAfterRender = !1;\\n this._intentStates = new Map();\\n this.destroyed = !1;\\n }\\n get pageNumber() {\\n return this._pageIndex + 1;\\n }\\n get rotate() {\\n return this._pageInfo.rotate;\\n }\\n get ref() {\\n return this._pageInfo.ref;\\n }\\n get userUnit() {\\n return this._pageInfo.userUnit;\\n }\\n get view() {\\n return this._pageInfo.view;\\n }\\n getViewport() {\\n let {\\n scale: t,\\n rotation: e = this.rotate,\\n offsetX: n = 0,\\n offsetY: i = 0,\\n dontFlip: r = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return new _display_utils.PageViewport({\\n viewBox: this.view,\\n scale: t,\\n rotation: e,\\n offsetX: n,\\n offsetY: i,\\n dontFlip: r\\n });\\n }\\n getAnnotations() {\\n let {\\n intent: t = \\"display\\"\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n const e = this._transport.getRenderingIntent(t);\\n return this._transport.getAnnotations(this._pageIndex, e.renderingIntent);\\n }\\n getJSActions() {\\n return this._transport.getPageJSActions(this._pageIndex);\\n }\\n get filterFactory() {\\n return this._transport.filterFactory;\\n }\\n get isPureXfa() {\\n return (0, _util.shadow)(this, \\"isPureXfa\\", !!this._transport._htmlForXfa);\\n }\\n async getXfa() {\\n var _this$_transport$_htm;\\n return ((_this$_transport$_htm = this._transport._htmlForXfa) === null || _this$_transport$_htm === void 0 ? void 0 : _this$_transport$_htm.children[this._pageIndex]) || null;\\n }\\n render(t) {\\n var _this$_stats, _u;\\n let {\\n canvasContext: e,\\n viewport: n,\\n intent: i = \\"display\\",\\n annotationMode: r = _util.AnnotationMode.ENABLE,\\n transform: s = null,\\n background: a = null,\\n optionalContentConfigPromise: o = null,\\n annotationCanvasMap: l = null,\\n pageColors: c = null,\\n printAnnotationStorage: h = null\\n } = t;\\n (_this$_stats = this._stats) === null || _this$_stats === void 0 ? void 0 : _this$_stats.time(\\"Overall\\");\\n const d = this._transport.getRenderingIntent(i, r, h);\\n _classPrivateFieldSet(this, _i, !1);\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n o || (o = this._transport.getOptionalContentConfig());\\n let u = this._intentStates.get(d.cacheKey);\\n if (!u) {\\n u = Object.create(null);\\n this._intentStates.set(d.cacheKey, u);\\n }\\n if (u.streamReaderCancelTimeout) {\\n clearTimeout(u.streamReaderCancelTimeout);\\n u.streamReaderCancelTimeout = null;\\n }\\n const p = !!(d.renderingIntent & _util.RenderingIntentFlag.PRINT);\\n if (!u.displayReadyCapability) {\\n var _this$_stats2;\\n u.displayReadyCapability = new _util.PromiseCapability();\\n u.operatorList = {\\n fnArray: [],\\n argsArray: [],\\n lastChunk: !1,\\n separateAnnots: null\\n };\\n (_this$_stats2 = this._stats) === null || _this$_stats2 === void 0 ? void 0 : _this$_stats2.time(\\"Page Request\\");\\n this._pumpOperatorList(d);\\n }\\n const complete = t => {\\n var _this$_stats3, _this$_stats4;\\n u.renderTasks.delete(f);\\n (this._maybeCleanupAfterRender || p) && _classPrivateFieldSet(this, _i, !0);\\n _classPrivateMethodGet(this, _s, _s2).call(this, !p);\\n if (t) {\\n f.capability.reject(t);\\n this._abortOperatorList({\\n intentState: u,\\n reason: t instanceof Error ? t : new Error(t)\\n });\\n } else f.capability.resolve();\\n (_this$_stats3 = this._stats) === null || _this$_stats3 === void 0 ? void 0 : _this$_stats3.timeEnd(\\"Rendering\\");\\n (_this$_stats4 = this._stats) === null || _this$_stats4 === void 0 ? void 0 : _this$_stats4.timeEnd(\\"Overall\\");\\n },\\n f = new InternalRenderTask({\\n callback: complete,\\n params: {\\n canvasContext: e,\\n viewport: n,\\n transform: s,\\n background: a\\n },\\n objs: this.objs,\\n commonObjs: this.commonObjs,\\n annotationCanvasMap: l,\\n operatorList: u.operatorList,\\n pageIndex: this._pageIndex,\\n canvasFactory: this._transport.canvasFactory,\\n filterFactory: this._transport.filterFactory,\\n useRequestAnimationFrame: !p,\\n pdfBug: this._pdfBug,\\n pageColors: c\\n });\\n ((_u = u).renderTasks || (_u.renderTasks = new Set())).add(f);\\n const g = f.task;\\n Promise.all([u.displayReadyCapability.promise, o]).then(t => {\\n let [e, n] = t;\\n if (this.destroyed) complete();else {\\n var _this$_stats5;\\n (_this$_stats5 = this._stats) === null || _this$_stats5 === void 0 ? void 0 : _this$_stats5.time(\\"Rendering\\");\\n f.initializeGraphics({\\n transparency: e,\\n optionalContentConfig: n\\n });\\n f.operatorListChanged();\\n }\\n }).catch(complete);\\n return g;\\n }\\n getOperatorList() {\\n let {\\n intent: t = \\"display\\",\\n annotationMode: e = _util.AnnotationMode.ENABLE,\\n printAnnotationStorage: n = null\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n const i = this._transport.getRenderingIntent(t, e, n, !0);\\n let r,\\n s = this._intentStates.get(i.cacheKey);\\n if (!s) {\\n s = Object.create(null);\\n this._intentStates.set(i.cacheKey, s);\\n }\\n if (!s.opListReadCapability) {\\n var _s3, _this$_stats6;\\n r = Object.create(null);\\n r.operatorListChanged = function operatorListChanged() {\\n if (s.operatorList.lastChunk) {\\n s.opListReadCapability.resolve(s.operatorList);\\n s.renderTasks.delete(r);\\n }\\n };\\n s.opListReadCapability = new _util.PromiseCapability();\\n ((_s3 = s).renderTasks || (_s3.renderTasks = new Set())).add(r);\\n s.operatorList = {\\n fnArray: [],\\n argsArray: [],\\n lastChunk: !1,\\n separateAnnots: null\\n };\\n (_this$_stats6 = this._stats) === null || _this$_stats6 === void 0 ? void 0 : _this$_stats6.time(\\"Page Request\\");\\n this._pumpOperatorList(i);\\n }\\n return s.opListReadCapability.promise;\\n }\\n streamTextContent() {\\n let {\\n includeMarkedContent: t = !1,\\n disableNormalization: e = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return this._transport.messageHandler.sendWithStream(\\"GetTextContent\\", {\\n pageIndex: this._pageIndex,\\n includeMarkedContent: !0 === t,\\n disableNormalization: !0 === e\\n }, {\\n highWaterMark: 100,\\n size: t => t.items.length\\n });\\n }\\n getTextContent() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n if (this._transport._htmlForXfa) return this.getXfa().then(t => _xfa_text.XfaText.textContent(t));\\n const e = this.streamTextContent(t);\\n return new Promise(function (t, n) {\\n const i = e.getReader(),\\n r = {\\n items: [],\\n styles: Object.create(null)\\n };\\n !function pump() {\\n i.read().then(function (e) {\\n let {\\n value: n,\\n done: i\\n } = e;\\n if (i) t(r);else {\\n Object.assign(r.styles, n.styles);\\n r.items.push(...n.items);\\n pump();\\n }\\n }, n);\\n }();\\n });\\n }\\n getStructTree() {\\n return this._transport.getStructTree(this._pageIndex);\\n }\\n _destroy() {\\n this.destroyed = !0;\\n const t = [];\\n for (const e of this._intentStates.values()) {\\n this._abortOperatorList({\\n intentState: e,\\n reason: new Error(\\"Page was destroyed.\\"),\\n force: !0\\n });\\n if (!e.opListReadCapability) for (const n of e.renderTasks) {\\n t.push(n.completed);\\n n.cancel();\\n }\\n }\\n this.objs.clear();\\n _classPrivateFieldSet(this, _i, !1);\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n return Promise.all(t);\\n }\\n cleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n _classPrivateFieldSet(this, _i, !0);\\n const e = _classPrivateMethodGet(this, _s, _s2).call(this, !1);\\n t && e && this._stats && (this._stats = new _display_utils.StatTimer());\\n return e;\\n }\\n _startRenderPage(t, e) {\\n const n = this._intentStates.get(e);\\n if (n) {\\n var _this$_stats7, _n$displayReadyCapabi;\\n (_this$_stats7 = this._stats) === null || _this$_stats7 === void 0 ? void 0 : _this$_stats7.timeEnd(\\"Page Request\\");\\n (_n$displayReadyCapabi = n.displayReadyCapability) === null || _n$displayReadyCapabi === void 0 ? void 0 : _n$displayReadyCapabi.resolve(t);\\n }\\n }\\n _renderPageChunk(t, e) {\\n for (let n = 0, i = t.length; n < i; n++) {\\n e.operatorList.fnArray.push(t.fnArray[n]);\\n e.operatorList.argsArray.push(t.argsArray[n]);\\n }\\n e.operatorList.lastChunk = t.lastChunk;\\n e.operatorList.separateAnnots = t.separateAnnots;\\n for (const t of e.renderTasks) t.operatorListChanged();\\n t.lastChunk && _classPrivateMethodGet(this, _s, _s2).call(this, !0);\\n }\\n _pumpOperatorList(t) {\\n let {\\n renderingIntent: e,\\n cacheKey: n,\\n annotationStorageSerializable: i\\n } = t;\\n const {\\n map: r,\\n transfers: s\\n } = i,\\n a = this._transport.messageHandler.sendWithStream(\\"GetOperatorList\\", {\\n pageIndex: this._pageIndex,\\n intent: e,\\n cacheKey: n,\\n annotationStorage: r\\n }, s).getReader(),\\n o = this._intentStates.get(n);\\n o.streamReader = a;\\n const pump = () => {\\n a.read().then(t => {\\n let {\\n value: e,\\n done: n\\n } = t;\\n if (n) o.streamReader = null;else if (!this._transport.destroyed) {\\n this._renderPageChunk(e, o);\\n pump();\\n }\\n }, t => {\\n o.streamReader = null;\\n if (!this._transport.destroyed) {\\n if (o.operatorList) {\\n o.operatorList.lastChunk = !0;\\n for (const t of o.renderTasks) t.operatorListChanged();\\n _classPrivateMethodGet(this, _s, _s2).call(this, !0);\\n }\\n if (o.displayReadyCapability) o.displayReadyCapability.reject(t);else {\\n if (!o.opListReadCapability) throw t;\\n o.opListReadCapability.reject(t);\\n }\\n }\\n });\\n };\\n pump();\\n }\\n _abortOperatorList(t) {\\n let {\\n intentState: e,\\n reason: n,\\n force: i = !1\\n } = t;\\n if (e.streamReader) {\\n if (e.streamReaderCancelTimeout) {\\n clearTimeout(e.streamReaderCancelTimeout);\\n e.streamReaderCancelTimeout = null;\\n }\\n if (!i) {\\n if (e.renderTasks.size > 0) return;\\n if (n instanceof _display_utils.RenderingCancelledException) {\\n let t = RENDERING_CANCELLED_TIMEOUT;\\n n.extraDelay > 0 && n.extraDelay < 1e3 && (t += n.extraDelay);\\n e.streamReaderCancelTimeout = setTimeout(() => {\\n e.streamReaderCancelTimeout = null;\\n this._abortOperatorList({\\n intentState: e,\\n reason: n,\\n force: !0\\n });\\n }, t);\\n return;\\n }\\n }\\n e.streamReader.cancel(new _util.AbortException(n.message)).catch(() => {});\\n e.streamReader = null;\\n if (!this._transport.destroyed) {\\n for (const [t, n] of this._intentStates) if (n === e) {\\n this._intentStates.delete(t);\\n break;\\n }\\n this.cleanup();\\n }\\n }\\n }\\n get stats() {\\n return this._stats;\\n }\\n }\\n function _s2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n _classPrivateMethodGet(this, _r, _r2).call(this);\\n if (!_classPrivateFieldGet(this, _i) || this.destroyed) return !1;\\n if (t) {\\n _classPrivateFieldSet(this, _n, setTimeout(() => {\\n _classPrivateFieldSet(this, _n, null);\\n _classPrivateMethodGet(this, _s, _s2).call(this, !1);\\n }, DELAYED_CLEANUP_TIMEOUT));\\n return !1;\\n }\\n for (const {\\n renderTasks: t,\\n operatorList: e\\n } of this._intentStates.values()) if (t.size > 0 || !e.lastChunk) return !1;\\n this._intentStates.clear();\\n this.objs.clear();\\n _classPrivateFieldSet(this, _i, !1);\\n return !0;\\n }\\n function _r2() {\\n if (_classPrivateFieldGet(this, _n)) {\\n clearTimeout(_classPrivateFieldGet(this, _n));\\n _classPrivateFieldSet(this, _n, null);\\n }\\n }\\n exports.PDFPageProxy = PDFPageProxy;\\n var _a = /*#__PURE__*/new WeakMap();\\n var _o = /*#__PURE__*/new WeakMap();\\n class LoopbackPort {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _a, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _o, {\\n writable: true,\\n value: Promise.resolve()\\n });\\n }\\n postMessage(t, e) {\\n const n = {\\n data: structuredClone(t, null)\\n };\\n _classPrivateFieldGet(this, _o).then(() => {\\n for (const t of _classPrivateFieldGet(this, _a)) t.call(this, n);\\n });\\n }\\n addEventListener(t, e) {\\n _classPrivateFieldGet(this, _a).add(e);\\n }\\n removeEventListener(t, e) {\\n _classPrivateFieldGet(this, _a).delete(e);\\n }\\n terminate() {\\n _classPrivateFieldGet(this, _a).clear();\\n }\\n }\\n exports.LoopbackPort = LoopbackPort;\\n const PDFWorkerUtil = {\\n isWorkerDisabled: !1,\\n fallbackWorkerSrc: null,\\n fakeWorkerId: 0\\n };\\n exports.PDFWorkerUtil = PDFWorkerUtil;\\n if (_util.isNodeJS && \\"function\\" == \\"function\\") {\\n PDFWorkerUtil.isWorkerDisabled = !0;\\n PDFWorkerUtil.fallbackWorkerSrc = \\"./pdf.worker.js\\";\\n } else if (\\"object\\" == typeof document) {\\n var _document;\\n const t = (_document = document) === null || _document === void 0 || (_document = _document.currentScript) === null || _document === void 0 ? void 0 : _document.src;\\n t && (PDFWorkerUtil.fallbackWorkerSrc = t.replace(/(\\\\.(?:min\\\\.)?js)(\\\\?.*)?$/i, \\".worker$1$2\\"));\\n }\\n PDFWorkerUtil.isSameOrigin = function (t, e) {\\n let n;\\n try {\\n n = new URL(t);\\n if (!n.origin || \\"null\\" === n.origin) return !1;\\n } catch (_unused5) {\\n return !1;\\n }\\n const i = new URL(e, n);\\n return n.origin === i.origin;\\n };\\n PDFWorkerUtil.createCDNWrapper = function (t) {\\n const e = \\"importScripts(\\\\\\"\\".concat(t, \\"\\\\\\");\\");\\n return URL.createObjectURL(new Blob([e]));\\n };\\n class PDFWorker {\\n constructor() {\\n let {\\n name: t = null,\\n port: e = null,\\n verbosity: n = (0, _util.getVerbosityLevel)()\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n if (e && _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).has(e)) throw new Error(\\"Cannot use more than one PDFWorker per port.\\");\\n this.name = t;\\n this.destroyed = !1;\\n this.verbosity = n;\\n this._readyCapability = new _util.PromiseCapability();\\n this._port = null;\\n this._webWorker = null;\\n this._messageHandler = null;\\n if (e) {\\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).set(e, this);\\n this._initializeFromPort(e);\\n } else this._initialize();\\n }\\n get promise() {\\n return this._readyCapability.promise;\\n }\\n get port() {\\n return this._port;\\n }\\n get messageHandler() {\\n return this._messageHandler;\\n }\\n _initializeFromPort(t) {\\n this._port = t;\\n this._messageHandler = new _message_handler.MessageHandler(\\"main\\", \\"worker\\", t);\\n this._messageHandler.on(\\"ready\\", function () {});\\n this._readyCapability.resolve();\\n this._messageHandler.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n }\\n _initialize() {\\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\\n let {\\n workerSrc: t\\n } = PDFWorker;\\n try {\\n PDFWorkerUtil.isSameOrigin(window.location.href, t) || (t = PDFWorkerUtil.createCDNWrapper(new URL(t, window.location).href));\\n const e = new Worker(t),\\n n = new _message_handler.MessageHandler(\\"main\\", \\"worker\\", e),\\n terminateEarly = () => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n n.destroy();\\n e.terminate();\\n this.destroyed ? this._readyCapability.reject(new Error(\\"Worker was destroyed\\")) : this._setupFakeWorker();\\n },\\n onWorkerError = () => {\\n this._webWorker || terminateEarly();\\n };\\n e.addEventListener(\\"error\\", onWorkerError);\\n n.on(\\"test\\", t => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n if (this.destroyed) terminateEarly();else if (t) {\\n this._messageHandler = n;\\n this._port = e;\\n this._webWorker = e;\\n this._readyCapability.resolve();\\n n.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n } else {\\n this._setupFakeWorker();\\n n.destroy();\\n e.terminate();\\n }\\n });\\n n.on(\\"ready\\", t => {\\n e.removeEventListener(\\"error\\", onWorkerError);\\n if (this.destroyed) terminateEarly();else try {\\n sendTest();\\n } catch (_unused6) {\\n this._setupFakeWorker();\\n }\\n });\\n const sendTest = () => {\\n const t = new Uint8Array();\\n n.send(\\"test\\", t, [t.buffer]);\\n };\\n sendTest();\\n return;\\n } catch (_unused7) {\\n (0, _util.info)(\\"The worker has been disabled.\\");\\n }\\n }\\n this._setupFakeWorker();\\n }\\n _setupFakeWorker() {\\n if (!PDFWorkerUtil.isWorkerDisabled) {\\n (0, _util.warn)(\\"Setting up fake worker.\\");\\n PDFWorkerUtil.isWorkerDisabled = !0;\\n }\\n PDFWorker._setupFakeWorkerGlobal.then(t => {\\n if (this.destroyed) {\\n this._readyCapability.reject(new Error(\\"Worker was destroyed\\"));\\n return;\\n }\\n const e = new LoopbackPort();\\n this._port = e;\\n const n = \\"fake\\" + PDFWorkerUtil.fakeWorkerId++,\\n i = new _message_handler.MessageHandler(n + \\"_worker\\", n, e);\\n t.setup(i, e);\\n const r = new _message_handler.MessageHandler(n, n + \\"_worker\\", e);\\n this._messageHandler = r;\\n this._readyCapability.resolve();\\n r.send(\\"configure\\", {\\n verbosity: this.verbosity\\n });\\n }).catch(t => {\\n this._readyCapability.reject(new Error(\\"Setting up fake worker failed: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\")));\\n });\\n }\\n destroy() {\\n this.destroyed = !0;\\n if (this._webWorker) {\\n this._webWorker.terminate();\\n this._webWorker = null;\\n }\\n _classStaticPrivateFieldSpecGet(PDFWorker, PDFWorker, _l).delete(this._port);\\n this._port = null;\\n if (this._messageHandler) {\\n this._messageHandler.destroy();\\n this._messageHandler = null;\\n }\\n }\\n static fromPort(t) {\\n if (!(t !== null && t !== void 0 && t.port)) throw new Error(\\"PDFWorker.fromPort - invalid method signature.\\");\\n return _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).has(t.port) ? _classStaticPrivateFieldSpecGet(this, PDFWorker, _l).get(t.port) : new PDFWorker(t);\\n }\\n static get workerSrc() {\\n if (_worker_options.GlobalWorkerOptions.workerSrc) return _worker_options.GlobalWorkerOptions.workerSrc;\\n if (null !== PDFWorkerUtil.fallbackWorkerSrc) {\\n _util.isNodeJS || (0, _display_utils.deprecated)('No \\"GlobalWorkerOptions.workerSrc\\" specified.');\\n return PDFWorkerUtil.fallbackWorkerSrc;\\n }\\n throw new Error('No \\"GlobalWorkerOptions.workerSrc\\" specified.');\\n }\\n static get _mainThreadWorkerMessageHandler() {\\n try {\\n var _globalThis$pdfjsWork;\\n return ((_globalThis$pdfjsWork = globalThis.pdfjsWorker) === null || _globalThis$pdfjsWork === void 0 ? void 0 : _globalThis$pdfjsWork.WorkerMessageHandler) || null;\\n } catch (_unused8) {\\n return null;\\n }\\n }\\n static get _setupFakeWorkerGlobal() {\\n const loader = async () => {\\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\\n if (mainWorkerMessageHandler) return mainWorkerMessageHandler;\\n if (_util.isNodeJS && \\"function\\" == \\"function\\") {\\n const worker = eval(\\"require\\")(this.workerSrc);\\n return worker.WorkerMessageHandler;\\n }\\n await (0, _display_utils.loadScript)(this.workerSrc);\\n return window.pdfjsWorker.WorkerMessageHandler;\\n };\\n return (0, _util.shadow)(this, \\"_setupFakeWorkerGlobal\\", loader());\\n }\\n }\\n var _l = {\\n writable: true,\\n value: new WeakMap()\\n };\\n exports.PDFWorker = PDFWorker;\\n var _c = /*#__PURE__*/new WeakMap();\\n var _h = /*#__PURE__*/new WeakMap();\\n var _d = /*#__PURE__*/new WeakMap();\\n var _u2 = /*#__PURE__*/new WeakMap();\\n var _p = /*#__PURE__*/new WeakSet();\\n class WorkerTransport {\\n constructor(_t3, _e3, _n2, _i2, r) {\\n _classPrivateMethodInitSpec(this, _p);\\n _classPrivateFieldInitSpec(this, _c, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _h, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _d, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _u2, {\\n writable: true,\\n value: null\\n });\\n this.messageHandler = _t3;\\n this.loadingTask = _e3;\\n this.commonObjs = new PDFObjects();\\n this.fontLoader = new _font_loader.FontLoader({\\n ownerDocument: _i2.ownerDocument,\\n styleElement: _i2.styleElement\\n });\\n this._params = _i2;\\n this.canvasFactory = r.canvasFactory;\\n this.filterFactory = r.filterFactory;\\n this.cMapReaderFactory = r.cMapReaderFactory;\\n this.standardFontDataFactory = r.standardFontDataFactory;\\n this.destroyed = !1;\\n this.destroyCapability = null;\\n this._networkStream = _n2;\\n this._fullReader = null;\\n this._lastProgress = null;\\n this.downloadInfoCapability = new _util.PromiseCapability();\\n this.setupMessageHandler();\\n }\\n get annotationStorage() {\\n return (0, _util.shadow)(this, \\"annotationStorage\\", new _annotation_storage.AnnotationStorage());\\n }\\n getRenderingIntent(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _util.AnnotationMode.ENABLE,\\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,\\n i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],\\n r = _util.RenderingIntentFlag.DISPLAY,\\n s = _annotation_storage.SerializableEmpty;\\n switch (t) {\\n case \\"any\\":\\n r = _util.RenderingIntentFlag.ANY;\\n break;\\n case \\"display\\":\\n break;\\n case \\"print\\":\\n r = _util.RenderingIntentFlag.PRINT;\\n break;\\n default:\\n (0, _util.warn)(\\"getRenderingIntent - invalid intent: \\".concat(t));\\n }\\n switch (e) {\\n case _util.AnnotationMode.DISABLE:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\\n break;\\n case _util.AnnotationMode.ENABLE:\\n break;\\n case _util.AnnotationMode.ENABLE_FORMS:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\\n break;\\n case _util.AnnotationMode.ENABLE_STORAGE:\\n r += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\\n s = (r & _util.RenderingIntentFlag.PRINT && n instanceof _annotation_storage.PrintAnnotationStorage ? n : this.annotationStorage).serializable;\\n break;\\n default:\\n (0, _util.warn)(\\"getRenderingIntent - invalid annotationMode: \\".concat(e));\\n }\\n i && (r += _util.RenderingIntentFlag.OPLIST);\\n return {\\n renderingIntent: r,\\n cacheKey: \\"\\".concat(r, \\"_\\").concat(s.hash),\\n annotationStorageSerializable: s\\n };\\n }\\n destroy() {\\n var _classPrivateFieldGet2;\\n if (this.destroyCapability) return this.destroyCapability.promise;\\n this.destroyed = !0;\\n this.destroyCapability = new _util.PromiseCapability();\\n (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _u2)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.reject(new Error(\\"Worker was destroyed during onPassword callback\\"));\\n const t = [];\\n for (const e of _classPrivateFieldGet(this, _h).values()) t.push(e._destroy());\\n _classPrivateFieldGet(this, _h).clear();\\n _classPrivateFieldGet(this, _d).clear();\\n this.hasOwnProperty(\\"annotationStorage\\") && this.annotationStorage.resetModified();\\n const e = this.messageHandler.sendWithPromise(\\"Terminate\\", null);\\n t.push(e);\\n Promise.all(t).then(() => {\\n this.commonObjs.clear();\\n this.fontLoader.clear();\\n _classPrivateFieldGet(this, _c).clear();\\n this.filterFactory.destroy();\\n this._networkStream && this._networkStream.cancelAllRequests(new _util.AbortException(\\"Worker was terminated.\\"));\\n if (this.messageHandler) {\\n this.messageHandler.destroy();\\n this.messageHandler = null;\\n }\\n this.destroyCapability.resolve();\\n }, this.destroyCapability.reject);\\n return this.destroyCapability.promise;\\n }\\n setupMessageHandler() {\\n const {\\n messageHandler: t,\\n loadingTask: e\\n } = this;\\n t.on(\\"GetReader\\", (t, e) => {\\n (0, _util.assert)(this._networkStream, \\"GetReader - no \`IPDFStream\` instance available.\\");\\n this._fullReader = this._networkStream.getFullReader();\\n this._fullReader.onProgress = t => {\\n this._lastProgress = {\\n loaded: t.loaded,\\n total: t.total\\n };\\n };\\n e.onPull = () => {\\n this._fullReader.read().then(function (t) {\\n let {\\n value: n,\\n done: i\\n } = t;\\n if (i) e.close();else {\\n (0, _util.assert)(n instanceof ArrayBuffer, \\"GetReader - expected an ArrayBuffer.\\");\\n e.enqueue(new Uint8Array(n), 1, [n]);\\n }\\n }).catch(t => {\\n e.error(t);\\n });\\n };\\n e.onCancel = t => {\\n this._fullReader.cancel(t);\\n e.ready.catch(t => {\\n if (!this.destroyed) throw t;\\n });\\n };\\n });\\n t.on(\\"ReaderHeadersReady\\", t => {\\n const n = new _util.PromiseCapability(),\\n i = this._fullReader;\\n i.headersReady.then(() => {\\n if (!i.isStreamingSupported || !i.isRangeSupported) {\\n var _e$onProgress;\\n this._lastProgress && ((_e$onProgress = e.onProgress) === null || _e$onProgress === void 0 ? void 0 : _e$onProgress.call(e, this._lastProgress));\\n i.onProgress = t => {\\n var _e$onProgress2;\\n (_e$onProgress2 = e.onProgress) === null || _e$onProgress2 === void 0 ? void 0 : _e$onProgress2.call(e, {\\n loaded: t.loaded,\\n total: t.total\\n });\\n };\\n }\\n n.resolve({\\n isStreamingSupported: i.isStreamingSupported,\\n isRangeSupported: i.isRangeSupported,\\n contentLength: i.contentLength\\n });\\n }, n.reject);\\n return n.promise;\\n });\\n t.on(\\"GetRangeReader\\", (t, e) => {\\n (0, _util.assert)(this._networkStream, \\"GetRangeReader - no \`IPDFStream\` instance available.\\");\\n const n = this._networkStream.getRangeReader(t.begin, t.end);\\n if (n) {\\n e.onPull = () => {\\n n.read().then(function (t) {\\n let {\\n value: n,\\n done: i\\n } = t;\\n if (i) e.close();else {\\n (0, _util.assert)(n instanceof ArrayBuffer, \\"GetRangeReader - expected an ArrayBuffer.\\");\\n e.enqueue(new Uint8Array(n), 1, [n]);\\n }\\n }).catch(t => {\\n e.error(t);\\n });\\n };\\n e.onCancel = t => {\\n n.cancel(t);\\n e.ready.catch(t => {\\n if (!this.destroyed) throw t;\\n });\\n };\\n } else e.close();\\n });\\n t.on(\\"GetDoc\\", t => {\\n let {\\n pdfInfo: n\\n } = t;\\n this._numPages = n.numPages;\\n this._htmlForXfa = n.htmlForXfa;\\n delete n.htmlForXfa;\\n e._capability.resolve(new PDFDocumentProxy(n, this));\\n });\\n t.on(\\"DocException\\", function (t) {\\n let n;\\n switch (t.name) {\\n case \\"PasswordException\\":\\n n = new _util.PasswordException(t.message, t.code);\\n break;\\n case \\"InvalidPDFException\\":\\n n = new _util.InvalidPDFException(t.message);\\n break;\\n case \\"MissingPDFException\\":\\n n = new _util.MissingPDFException(t.message);\\n break;\\n case \\"UnexpectedResponseException\\":\\n n = new _util.UnexpectedResponseException(t.message, t.status);\\n break;\\n case \\"UnknownErrorException\\":\\n n = new _util.UnknownErrorException(t.message, t.details);\\n break;\\n default:\\n (0, _util.unreachable)(\\"DocException - expected a valid Error.\\");\\n }\\n e._capability.reject(n);\\n });\\n t.on(\\"PasswordRequest\\", t => {\\n _classPrivateFieldSet(this, _u2, new _util.PromiseCapability());\\n if (e.onPassword) {\\n const updatePassword = t => {\\n t instanceof Error ? _classPrivateFieldGet(this, _u2).reject(t) : _classPrivateFieldGet(this, _u2).resolve({\\n password: t\\n });\\n };\\n try {\\n e.onPassword(updatePassword, t.code);\\n } catch (t) {\\n _classPrivateFieldGet(this, _u2).reject(t);\\n }\\n } else _classPrivateFieldGet(this, _u2).reject(new _util.PasswordException(t.message, t.code));\\n return _classPrivateFieldGet(this, _u2).promise;\\n });\\n t.on(\\"DataLoaded\\", t => {\\n var _e$onProgress3;\\n (_e$onProgress3 = e.onProgress) === null || _e$onProgress3 === void 0 ? void 0 : _e$onProgress3.call(e, {\\n loaded: t.length,\\n total: t.length\\n });\\n this.downloadInfoCapability.resolve(t);\\n });\\n t.on(\\"StartRenderPage\\", t => {\\n if (this.destroyed) return;\\n _classPrivateFieldGet(this, _h).get(t.pageIndex)._startRenderPage(t.transparency, t.cacheKey);\\n });\\n t.on(\\"commonobj\\", e => {\\n var _globalThis$FontInspe;\\n let [n, i, r] = e;\\n if (!this.destroyed && !this.commonObjs.has(n)) switch (i) {\\n case \\"Font\\":\\n const e = this._params;\\n if (\\"error\\" in r) {\\n const t = r.error;\\n (0, _util.warn)(\\"Error during font loading: \\".concat(t));\\n this.commonObjs.resolve(n, t);\\n break;\\n }\\n const s = e.pdfBug && (_globalThis$FontInspe = globalThis.FontInspector) !== null && _globalThis$FontInspe !== void 0 && _globalThis$FontInspe.enabled ? (t, e) => globalThis.FontInspector.fontAdded(t, e) : null,\\n a = new _font_loader.FontFaceObject(r, {\\n isEvalSupported: e.isEvalSupported,\\n disableFontFace: e.disableFontFace,\\n ignoreErrors: e.ignoreErrors,\\n inspectFont: s\\n });\\n this.fontLoader.bind(a).catch(e => t.sendWithPromise(\\"FontFallback\\", {\\n id: n\\n })).finally(() => {\\n !e.fontExtraProperties && a.data && (a.data = null);\\n this.commonObjs.resolve(n, a);\\n });\\n break;\\n case \\"FontPath\\":\\n case \\"Image\\":\\n case \\"Pattern\\":\\n this.commonObjs.resolve(n, r);\\n break;\\n default:\\n throw new Error(\\"Got unknown common object type \\".concat(i));\\n }\\n });\\n t.on(\\"obj\\", t => {\\n let [e, n, i, r] = t;\\n if (this.destroyed) return;\\n const s = _classPrivateFieldGet(this, _h).get(n);\\n if (!s.objs.has(e)) switch (i) {\\n case \\"Image\\":\\n s.objs.resolve(e, r);\\n if (r) {\\n var _r$data;\\n let t;\\n if (r.bitmap) {\\n const {\\n width: e,\\n height: n\\n } = r;\\n t = e * n * 4;\\n } else t = ((_r$data = r.data) === null || _r$data === void 0 ? void 0 : _r$data.length) || 0;\\n t > _util.MAX_IMAGE_SIZE_TO_CACHE && (s._maybeCleanupAfterRender = !0);\\n }\\n break;\\n case \\"Pattern\\":\\n s.objs.resolve(e, r);\\n break;\\n default:\\n throw new Error(\\"Got unknown object type \\".concat(i));\\n }\\n });\\n t.on(\\"DocProgress\\", t => {\\n var _e$onProgress4;\\n this.destroyed || ((_e$onProgress4 = e.onProgress) === null || _e$onProgress4 === void 0 ? void 0 : _e$onProgress4.call(e, {\\n loaded: t.loaded,\\n total: t.total\\n }));\\n });\\n t.on(\\"FetchBuiltInCMap\\", t => this.destroyed ? Promise.reject(new Error(\\"Worker was destroyed.\\")) : this.cMapReaderFactory ? this.cMapReaderFactory.fetch(t) : Promise.reject(new Error(\\"CMapReaderFactory not initialized, see the \`useWorkerFetch\` parameter.\\")));\\n t.on(\\"FetchStandardFontData\\", t => this.destroyed ? Promise.reject(new Error(\\"Worker was destroyed.\\")) : this.standardFontDataFactory ? this.standardFontDataFactory.fetch(t) : Promise.reject(new Error(\\"StandardFontDataFactory not initialized, see the \`useWorkerFetch\` parameter.\\")));\\n }\\n getData() {\\n return this.messageHandler.sendWithPromise(\\"GetData\\", null);\\n }\\n saveDocument() {\\n var _this$_fullReader$fil, _this$_fullReader;\\n this.annotationStorage.size <= 0 && (0, _util.warn)(\\"saveDocument called while \`annotationStorage\` is empty, please use the getData-method instead.\\");\\n const {\\n map: t,\\n transfers: e\\n } = this.annotationStorage.serializable;\\n return this.messageHandler.sendWithPromise(\\"SaveDocument\\", {\\n isPureXfa: !!this._htmlForXfa,\\n numPages: this._numPages,\\n annotationStorage: t,\\n filename: (_this$_fullReader$fil = (_this$_fullReader = this._fullReader) === null || _this$_fullReader === void 0 ? void 0 : _this$_fullReader.filename) !== null && _this$_fullReader$fil !== void 0 ? _this$_fullReader$fil : null\\n }, e).finally(() => {\\n this.annotationStorage.resetModified();\\n });\\n }\\n getPage(t) {\\n if (!Number.isInteger(t) || t <= 0 || t > this._numPages) return Promise.reject(new Error(\\"Invalid page request.\\"));\\n const e = t - 1,\\n n = _classPrivateFieldGet(this, _d).get(e);\\n if (n) return n;\\n const i = this.messageHandler.sendWithPromise(\\"GetPage\\", {\\n pageIndex: e\\n }).then(t => {\\n if (this.destroyed) throw new Error(\\"Transport destroyed\\");\\n const n = new PDFPageProxy(e, t, this, this._params.pdfBug);\\n _classPrivateFieldGet(this, _h).set(e, n);\\n return n;\\n });\\n _classPrivateFieldGet(this, _d).set(e, i);\\n return i;\\n }\\n getPageIndex(t) {\\n return \\"object\\" != typeof t || null === t || !Number.isInteger(t.num) || t.num < 0 || !Number.isInteger(t.gen) || t.gen < 0 ? Promise.reject(new Error(\\"Invalid pageIndex request.\\")) : this.messageHandler.sendWithPromise(\\"GetPageIndex\\", {\\n num: t.num,\\n gen: t.gen\\n });\\n }\\n getAnnotations(t, e) {\\n return this.messageHandler.sendWithPromise(\\"GetAnnotations\\", {\\n pageIndex: t,\\n intent: e\\n });\\n }\\n getFieldObjects() {\\n return _classPrivateMethodGet(this, _p, _p2).call(this, \\"GetFieldObjects\\");\\n }\\n hasJSActions() {\\n return _classPrivateMethodGet(this, _p, _p2).call(this, \\"HasJSActions\\");\\n }\\n getCalculationOrderIds() {\\n return this.messageHandler.sendWithPromise(\\"GetCalculationOrderIds\\", null);\\n }\\n getDestinations() {\\n return this.messageHandler.sendWithPromise(\\"GetDestinations\\", null);\\n }\\n getDestination(t) {\\n return \\"string\\" != typeof t ? Promise.reject(new Error(\\"Invalid destination request.\\")) : this.messageHandler.sendWithPromise(\\"GetDestination\\", {\\n id: t\\n });\\n }\\n getPageLabels() {\\n return this.messageHandler.sendWithPromise(\\"GetPageLabels\\", null);\\n }\\n getPageLayout() {\\n return this.messageHandler.sendWithPromise(\\"GetPageLayout\\", null);\\n }\\n getPageMode() {\\n return this.messageHandler.sendWithPromise(\\"GetPageMode\\", null);\\n }\\n getViewerPreferences() {\\n return this.messageHandler.sendWithPromise(\\"GetViewerPreferences\\", null);\\n }\\n getOpenAction() {\\n return this.messageHandler.sendWithPromise(\\"GetOpenAction\\", null);\\n }\\n getAttachments() {\\n return this.messageHandler.sendWithPromise(\\"GetAttachments\\", null);\\n }\\n getJavaScript() {\\n return this.messageHandler.sendWithPromise(\\"GetJavaScript\\", null);\\n }\\n getDocJSActions() {\\n return this.messageHandler.sendWithPromise(\\"GetDocJSActions\\", null);\\n }\\n getPageJSActions(t) {\\n return this.messageHandler.sendWithPromise(\\"GetPageJSActions\\", {\\n pageIndex: t\\n });\\n }\\n getStructTree(t) {\\n return this.messageHandler.sendWithPromise(\\"GetStructTree\\", {\\n pageIndex: t\\n });\\n }\\n getOutline() {\\n return this.messageHandler.sendWithPromise(\\"GetOutline\\", null);\\n }\\n getOptionalContentConfig() {\\n return this.messageHandler.sendWithPromise(\\"GetOptionalContentConfig\\", null).then(t => new _optional_content_config.OptionalContentConfig(t));\\n }\\n getPermissions() {\\n return this.messageHandler.sendWithPromise(\\"GetPermissions\\", null);\\n }\\n getMetadata() {\\n const t = \\"GetMetadata\\",\\n e = _classPrivateFieldGet(this, _c).get(t);\\n if (e) return e;\\n const n = this.messageHandler.sendWithPromise(t, null).then(t => {\\n var _this$_fullReader$fil2, _this$_fullReader2, _this$_fullReader$con, _this$_fullReader3;\\n return {\\n info: t[0],\\n metadata: t[1] ? new _metadata.Metadata(t[1]) : null,\\n contentDispositionFilename: (_this$_fullReader$fil2 = (_this$_fullReader2 = this._fullReader) === null || _this$_fullReader2 === void 0 ? void 0 : _this$_fullReader2.filename) !== null && _this$_fullReader$fil2 !== void 0 ? _this$_fullReader$fil2 : null,\\n contentLength: (_this$_fullReader$con = (_this$_fullReader3 = this._fullReader) === null || _this$_fullReader3 === void 0 ? void 0 : _this$_fullReader3.contentLength) !== null && _this$_fullReader$con !== void 0 ? _this$_fullReader$con : null\\n };\\n });\\n _classPrivateFieldGet(this, _c).set(t, n);\\n return n;\\n }\\n getMarkInfo() {\\n return this.messageHandler.sendWithPromise(\\"GetMarkInfo\\", null);\\n }\\n async startCleanup() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (!this.destroyed) {\\n await this.messageHandler.sendWithPromise(\\"Cleanup\\", null);\\n for (const t of _classPrivateFieldGet(this, _h).values()) {\\n if (!t.cleanup()) throw new Error(\\"startCleanup: Page \\".concat(t.pageNumber, \\" is currently rendering.\\"));\\n }\\n this.commonObjs.clear();\\n t || this.fontLoader.clear();\\n _classPrivateFieldGet(this, _c).clear();\\n this.filterFactory.destroy(!0);\\n }\\n }\\n get loadingParams() {\\n const {\\n disableAutoFetch: t,\\n enableXfa: e\\n } = this._params;\\n return (0, _util.shadow)(this, \\"loadingParams\\", {\\n disableAutoFetch: t,\\n enableXfa: e\\n });\\n }\\n }\\n function _p2(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = _classPrivateFieldGet(this, _c).get(t);\\n if (n) return n;\\n const i = this.messageHandler.sendWithPromise(t, e);\\n _classPrivateFieldGet(this, _c).set(t, i);\\n return i;\\n }\\n var _f = /*#__PURE__*/new WeakMap();\\n var _g = /*#__PURE__*/new WeakSet();\\n class PDFObjects {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _g);\\n _classPrivateFieldInitSpec(this, _f, {\\n writable: true,\\n value: Object.create(null)\\n });\\n }\\n get(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (e) {\\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\\n n.capability.promise.then(() => e(n.data));\\n return null;\\n }\\n const n = _classPrivateFieldGet(this, _f)[t];\\n if (!(n !== null && n !== void 0 && n.capability.settled)) throw new Error(\\"Requesting object that isn't resolved yet \\".concat(t, \\".\\"));\\n return n.data;\\n }\\n has(t) {\\n const e = _classPrivateFieldGet(this, _f)[t];\\n return (e === null || e === void 0 ? void 0 : e.capability.settled) || !1;\\n }\\n resolve(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = _classPrivateMethodGet(this, _g, _g2).call(this, t);\\n n.data = e;\\n n.capability.resolve();\\n }\\n clear() {\\n for (const t in _classPrivateFieldGet(this, _f)) {\\n var _e$bitmap;\\n const {\\n data: e\\n } = _classPrivateFieldGet(this, _f)[t];\\n e === null || e === void 0 || (_e$bitmap = e.bitmap) === null || _e$bitmap === void 0 ? void 0 : _e$bitmap.close();\\n }\\n _classPrivateFieldSet(this, _f, Object.create(null));\\n }\\n }\\n function _g2(t) {\\n const e = _classPrivateFieldGet(this, _f)[t];\\n return e || (_classPrivateFieldGet(this, _f)[t] = {\\n capability: new _util.PromiseCapability(),\\n data: null\\n });\\n }\\n var _m = /*#__PURE__*/new WeakMap();\\n class RenderTask {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _m, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _m, t);\\n this.onContinue = null;\\n }\\n get promise() {\\n return _classPrivateFieldGet(this, _m).capability.promise;\\n }\\n cancel() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\\n _classPrivateFieldGet(this, _m).cancel(null, t);\\n }\\n get separateAnnots() {\\n const {\\n separateAnnots: t\\n } = _classPrivateFieldGet(this, _m).operatorList;\\n if (!t) return !1;\\n const {\\n annotationCanvasMap: e\\n } = _classPrivateFieldGet(this, _m);\\n return t.form || t.canvas && (e === null || e === void 0 ? void 0 : e.size) > 0;\\n }\\n }\\n exports.RenderTask = RenderTask;\\n class InternalRenderTask {\\n constructor(t) {\\n let {\\n callback: e,\\n params: n,\\n objs: i,\\n commonObjs: r,\\n annotationCanvasMap: s,\\n operatorList: a,\\n pageIndex: o,\\n canvasFactory: l,\\n filterFactory: c,\\n useRequestAnimationFrame: h = !1,\\n pdfBug: d = !1,\\n pageColors: u = null\\n } = t;\\n this.callback = e;\\n this.params = n;\\n this.objs = i;\\n this.commonObjs = r;\\n this.annotationCanvasMap = s;\\n this.operatorListIdx = null;\\n this.operatorList = a;\\n this._pageIndex = o;\\n this.canvasFactory = l;\\n this.filterFactory = c;\\n this._pdfBug = d;\\n this.pageColors = u;\\n this.running = !1;\\n this.graphicsReadyCallback = null;\\n this.graphicsReady = !1;\\n this._useRequestAnimationFrame = !0 === h && \\"undefined\\" != typeof window;\\n this.cancelled = !1;\\n this.capability = new _util.PromiseCapability();\\n this.task = new RenderTask(this);\\n this._cancelBound = this.cancel.bind(this);\\n this._continueBound = this._continue.bind(this);\\n this._scheduleNextBound = this._scheduleNext.bind(this);\\n this._nextBound = this._next.bind(this);\\n this._canvas = n.canvasContext.canvas;\\n }\\n get completed() {\\n return this.capability.promise.catch(function () {});\\n }\\n initializeGraphics(t) {\\n var _globalThis$StepperMa, _this$graphicsReadyCa;\\n let {\\n transparency: e = !1,\\n optionalContentConfig: n\\n } = t;\\n if (this.cancelled) return;\\n if (this._canvas) {\\n if (_classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).has(this._canvas)) throw new Error(\\"Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.\\");\\n _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).add(this._canvas);\\n }\\n if (this._pdfBug && (_globalThis$StepperMa = globalThis.StepperManager) !== null && _globalThis$StepperMa !== void 0 && _globalThis$StepperMa.enabled) {\\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\\n this.stepper.init(this.operatorList);\\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\\n }\\n const {\\n canvasContext: i,\\n viewport: r,\\n transform: s,\\n background: a\\n } = this.params;\\n this.gfx = new _canvas.CanvasGraphics(i, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\\n optionalContentConfig: n\\n }, this.annotationCanvasMap, this.pageColors);\\n this.gfx.beginDrawing({\\n transform: s,\\n viewport: r,\\n transparency: e,\\n background: a\\n });\\n this.operatorListIdx = 0;\\n this.graphicsReady = !0;\\n (_this$graphicsReadyCa = this.graphicsReadyCallback) === null || _this$graphicsReadyCa === void 0 ? void 0 : _this$graphicsReadyCa.call(this);\\n }\\n cancel() {\\n var _this$gfx;\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\\n this.running = !1;\\n this.cancelled = !0;\\n (_this$gfx = this.gfx) === null || _this$gfx === void 0 ? void 0 : _this$gfx.endDrawing();\\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\\n this.callback(t || new _display_utils.RenderingCancelledException(\\"Rendering cancelled, page \\".concat(this._pageIndex + 1), e));\\n }\\n operatorListChanged() {\\n if (this.graphicsReady) {\\n var _this$stepper;\\n (_this$stepper = this.stepper) === null || _this$stepper === void 0 ? void 0 : _this$stepper.updateOperatorList(this.operatorList);\\n this.running || this._continue();\\n } else this.graphicsReadyCallback || (this.graphicsReadyCallback = this._continueBound);\\n }\\n _continue() {\\n this.running = !0;\\n this.cancelled || (this.task.onContinue ? this.task.onContinue(this._scheduleNextBound) : this._scheduleNext());\\n }\\n _scheduleNext() {\\n this._useRequestAnimationFrame ? window.requestAnimationFrame(() => {\\n this._nextBound().catch(this._cancelBound);\\n }) : Promise.resolve().then(this._nextBound).catch(this._cancelBound);\\n }\\n async _next() {\\n if (!this.cancelled) {\\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\\n this.running = !1;\\n if (this.operatorList.lastChunk) {\\n this.gfx.endDrawing(this.pageColors);\\n this._canvas && _classStaticPrivateFieldSpecGet(InternalRenderTask, InternalRenderTask, _b).delete(this._canvas);\\n this.callback();\\n }\\n }\\n }\\n }\\n }\\n var _b = {\\n writable: true,\\n value: new WeakSet()\\n };\\n const version = \\"3.9.179\\";\\n exports.version = version;\\n const build = \\"1ef6fbc52\\";\\n exports.build = build;\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(126);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"difference\\")\\n }, {\\n difference: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(129),\\n a = n(132),\\n o = n(133),\\n l = n(130),\\n c = n(131),\\n h = r.has,\\n d = r.remove;\\n t.exports = function difference(t) {\\n var e = i(this),\\n n = o(t),\\n r = s(e);\\n a(e) <= n.size ? l(e, function (t) {\\n n.includes(t) && d(r, t);\\n }) : c(n.getIterator(), function (t) {\\n h(e, t) && d(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(128).has;\\n t.exports = function (t) {\\n i(t);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Set.prototype;\\n t.exports = {\\n Set: Set,\\n add: i(r.add),\\n has: i(r.has),\\n remove: i(r.delete),\\n proto: r\\n };\\n }, (t, e, n) => {\\n var i = n(128),\\n r = n(130),\\n s = i.Set,\\n a = i.add;\\n t.exports = function (t) {\\n var e = new s();\\n r(t, function (t) {\\n a(e, t);\\n });\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(131),\\n s = n(128),\\n a = s.Set,\\n o = s.proto,\\n l = i(o.forEach),\\n c = i(o.keys),\\n h = c(new a()).next;\\n t.exports = function (t, e, n) {\\n return n ? r(c(t), e, h) : l(t, e);\\n };\\n }, (t, e, n) => {\\n var i = n(8);\\n t.exports = function (t, e, n) {\\n for (var r, s, a = n || t.next; !(r = i(a, t)).done;) if (void 0 !== (s = e(r.value))) return s;\\n };\\n }, (t, e, n) => {\\n var i = n(72),\\n r = n(128);\\n t.exports = i(r.proto, \\"size\\", \\"get\\") || function (t) {\\n return t.size;\\n };\\n }, (t, e, n) => {\\n var i = n(31),\\n r = n(47),\\n s = n(8),\\n a = n(62),\\n o = TypeError,\\n l = Math.max,\\n SetRecord = function SetRecord(t, e, n, i) {\\n this.set = t;\\n this.size = e;\\n this.has = n;\\n this.keys = i;\\n };\\n SetRecord.prototype = {\\n getIterator: function getIterator() {\\n return r(s(this.keys, this.set));\\n },\\n includes: function includes(t) {\\n return s(this.has, this.set, t);\\n }\\n };\\n t.exports = function (t) {\\n r(t);\\n var e = +t.size;\\n if (e != e) throw o(\\"Invalid size\\");\\n return new SetRecord(t, l(a(e), 0), i(t.has), i(t.keys));\\n };\\n }, (t, e, n) => {\\n var i = n(24);\\n t.exports = function (t) {\\n try {\\n new (i(\\"Set\\"))()[t]({\\n size: 0,\\n has: function has() {\\n return !1;\\n },\\n keys: function keys() {\\n return {\\n next: function next() {\\n return {\\n done: !0\\n };\\n }\\n };\\n }\\n });\\n return !0;\\n } catch (t) {\\n return !1;\\n }\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(7),\\n s = n(136);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"intersection\\") || r(function () {\\n return \\"3,2\\" != Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])));\\n })\\n }, {\\n intersection: s\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(132),\\n a = n(133),\\n o = n(130),\\n l = n(131),\\n c = r.Set,\\n h = r.add,\\n d = r.has;\\n t.exports = function intersection(t) {\\n var e = i(this),\\n n = a(t),\\n r = new c();\\n s(e) > n.size ? l(n.getIterator(), function (t) {\\n d(e, t) && h(r, t);\\n }) : o(e, function (t) {\\n n.includes(t) && h(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(138);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isDisjointFrom\\")\\n }, {\\n isDisjointFrom: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).has,\\n s = n(132),\\n a = n(133),\\n o = n(130),\\n l = n(131),\\n c = n(139);\\n t.exports = function isDisjointFrom(t) {\\n var e = i(this),\\n n = a(t);\\n if (s(e) <= n.size) return !1 !== o(e, function (t) {\\n if (n.includes(t)) return !1;\\n }, !0);\\n var h = n.getIterator();\\n return !1 !== l(h, function (t) {\\n if (r(e, t)) return c(h, \\"normal\\", !1);\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(47),\\n s = n(30);\\n t.exports = function (t, e, n) {\\n var a, o;\\n r(t);\\n try {\\n if (!(a = s(t, \\"return\\"))) {\\n if (\\"throw\\" === e) throw n;\\n return n;\\n }\\n a = i(a, t);\\n } catch (t) {\\n o = !0;\\n a = t;\\n }\\n if (\\"throw\\" === e) throw n;\\n if (o) throw a;\\n r(a);\\n return n;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(141);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isSubsetOf\\")\\n }, {\\n isSubsetOf: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(132),\\n s = n(130),\\n a = n(133);\\n t.exports = function isSubsetOf(t) {\\n var e = i(this),\\n n = a(t);\\n return !(r(e) > n.size) && !1 !== s(e, function (t) {\\n if (!n.includes(t)) return !1;\\n }, !0);\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(143);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"isSupersetOf\\")\\n }, {\\n isSupersetOf: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).has,\\n s = n(132),\\n a = n(133),\\n o = n(131),\\n l = n(139);\\n t.exports = function isSupersetOf(t) {\\n var e = i(this),\\n n = a(t);\\n if (s(e) < n.size) return !1;\\n var c = n.getIterator();\\n return !1 !== o(c, function (t) {\\n if (!r(e, t)) return l(c, \\"normal\\", !1);\\n });\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(145);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"symmetricDifference\\")\\n }, {\\n symmetricDifference: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128),\\n s = n(129),\\n a = n(133),\\n o = n(131),\\n l = r.add,\\n c = r.has,\\n h = r.remove;\\n t.exports = function symmetricDifference(t) {\\n var e = i(this),\\n n = a(t).getIterator(),\\n r = s(e);\\n o(n, function (t) {\\n c(e, t) ? h(r, t) : l(r, t);\\n });\\n return r;\\n };\\n }, (t, e, n) => {\\n var i = n(3),\\n r = n(147);\\n i({\\n target: \\"Set\\",\\n proto: !0,\\n real: !0,\\n forced: !n(134)(\\"union\\")\\n }, {\\n union: r\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(127),\\n r = n(128).add,\\n s = n(129),\\n a = n(133),\\n o = n(131);\\n t.exports = function union(t) {\\n var e = i(this),\\n n = a(t).getIterator(),\\n l = s(e);\\n o(n, function (t) {\\n r(l, t);\\n });\\n return l;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(4),\\n s = n(24),\\n a = n(11),\\n o = n(45).f,\\n l = n(39),\\n c = n(149),\\n h = n(75),\\n d = n(76),\\n u = n(150),\\n p = n(82),\\n f = n(6),\\n g = n(36),\\n m = \\"DOMException\\",\\n b = s(\\"Error\\"),\\n v = s(m),\\n y = function DOMException() {\\n c(this, A);\\n var t = arguments.length,\\n e = d(t < 1 ? void 0 : arguments[0]),\\n n = d(t < 2 ? void 0 : arguments[1], \\"Error\\"),\\n i = new v(e, n),\\n r = b(e);\\n r.name = m;\\n o(i, \\"stack\\", a(1, p(r.stack, 1)));\\n h(i, this, y);\\n return i;\\n },\\n A = y.prototype = v.prototype,\\n _ = (\\"stack\\" in b(m)),\\n S = (\\"stack\\" in new v(1, 2)),\\n E = v && f && Object.getOwnPropertyDescriptor(r, m),\\n x = !(!E || E.writable && E.configurable),\\n w = _ && !x && !S;\\n i({\\n global: !0,\\n constructor: !0,\\n forced: g || w\\n }, {\\n DOMException: w ? y : v\\n });\\n var C = s(m),\\n T = C.prototype;\\n if (T.constructor !== C) {\\n g || o(T, \\"constructor\\", a(1, C));\\n for (var P in u) if (l(u, P)) {\\n var k = u[P],\\n M = k.s;\\n l(C, M) || o(C, M, a(6, k.c));\\n }\\n }\\n }, (t, e, n) => {\\n var i = n(25),\\n r = TypeError;\\n t.exports = function (t, e) {\\n if (i(e, t)) return t;\\n throw r(\\"Incorrect invocation\\");\\n };\\n }, t => {\\n t.exports = {\\n IndexSizeError: {\\n s: \\"INDEX_SIZE_ERR\\",\\n c: 1,\\n m: 1\\n },\\n DOMStringSizeError: {\\n s: \\"DOMSTRING_SIZE_ERR\\",\\n c: 2,\\n m: 0\\n },\\n HierarchyRequestError: {\\n s: \\"HIERARCHY_REQUEST_ERR\\",\\n c: 3,\\n m: 1\\n },\\n WrongDocumentError: {\\n s: \\"WRONG_DOCUMENT_ERR\\",\\n c: 4,\\n m: 1\\n },\\n InvalidCharacterError: {\\n s: \\"INVALID_CHARACTER_ERR\\",\\n c: 5,\\n m: 1\\n },\\n NoDataAllowedError: {\\n s: \\"NO_DATA_ALLOWED_ERR\\",\\n c: 6,\\n m: 0\\n },\\n NoModificationAllowedError: {\\n s: \\"NO_MODIFICATION_ALLOWED_ERR\\",\\n c: 7,\\n m: 1\\n },\\n NotFoundError: {\\n s: \\"NOT_FOUND_ERR\\",\\n c: 8,\\n m: 1\\n },\\n NotSupportedError: {\\n s: \\"NOT_SUPPORTED_ERR\\",\\n c: 9,\\n m: 1\\n },\\n InUseAttributeError: {\\n s: \\"INUSE_ATTRIBUTE_ERR\\",\\n c: 10,\\n m: 1\\n },\\n InvalidStateError: {\\n s: \\"INVALID_STATE_ERR\\",\\n c: 11,\\n m: 1\\n },\\n SyntaxError: {\\n s: \\"SYNTAX_ERR\\",\\n c: 12,\\n m: 1\\n },\\n InvalidModificationError: {\\n s: \\"INVALID_MODIFICATION_ERR\\",\\n c: 13,\\n m: 1\\n },\\n NamespaceError: {\\n s: \\"NAMESPACE_ERR\\",\\n c: 14,\\n m: 1\\n },\\n InvalidAccessError: {\\n s: \\"INVALID_ACCESS_ERR\\",\\n c: 15,\\n m: 1\\n },\\n ValidationError: {\\n s: \\"VALIDATION_ERR\\",\\n c: 16,\\n m: 0\\n },\\n TypeMismatchError: {\\n s: \\"TYPE_MISMATCH_ERR\\",\\n c: 17,\\n m: 1\\n },\\n SecurityError: {\\n s: \\"SECURITY_ERR\\",\\n c: 18,\\n m: 1\\n },\\n NetworkError: {\\n s: \\"NETWORK_ERR\\",\\n c: 19,\\n m: 1\\n },\\n AbortError: {\\n s: \\"ABORT_ERR\\",\\n c: 20,\\n m: 1\\n },\\n URLMismatchError: {\\n s: \\"URL_MISMATCH_ERR\\",\\n c: 21,\\n m: 1\\n },\\n QuotaExceededError: {\\n s: \\"QUOTA_EXCEEDED_ERR\\",\\n c: 22,\\n m: 1\\n },\\n TimeoutError: {\\n s: \\"TIMEOUT_ERR\\",\\n c: 23,\\n m: 1\\n },\\n InvalidNodeTypeError: {\\n s: \\"INVALID_NODE_TYPE_ERR\\",\\n c: 24,\\n m: 1\\n },\\n DataCloneError: {\\n s: \\"DATA_CLONE_ERR\\",\\n c: 25,\\n m: 1\\n }\\n };\\n }, (t, e, n) => {\\n var i,\\n r = n(36),\\n s = n(3),\\n a = n(4),\\n o = n(24),\\n l = n(14),\\n c = n(7),\\n h = n(41),\\n d = n(21),\\n u = n(152),\\n p = n(17),\\n f = n(20),\\n g = n(23),\\n m = n(153),\\n b = n(47),\\n v = n(78),\\n y = n(39),\\n A = n(158),\\n _ = n(44),\\n S = n(64),\\n E = n(85),\\n x = n(159),\\n w = n(161),\\n C = n(128),\\n T = n(83),\\n P = n(119),\\n k = a.Object,\\n M = a.Array,\\n R = a.Date,\\n I = a.Error,\\n D = a.EvalError,\\n O = a.RangeError,\\n L = a.ReferenceError,\\n N = a.SyntaxError,\\n B = a.TypeError,\\n j = a.URIError,\\n U = a.PerformanceMark,\\n z = a.WebAssembly,\\n H = z && z.CompileError || I,\\n q = z && z.LinkError || I,\\n W = z && z.RuntimeError || I,\\n G = o(\\"DOMException\\"),\\n V = w.Map,\\n $ = w.has,\\n X = w.get,\\n K = w.set,\\n Y = C.Set,\\n J = C.add,\\n Q = o(\\"Object\\", \\"keys\\"),\\n Z = l([].push),\\n tt = l((!0).valueOf),\\n et = l(1..valueOf),\\n nt = l(\\"\\".valueOf),\\n it = l(R.prototype.getTime),\\n rt = h(\\"structuredClone\\"),\\n st = \\"DataCloneError\\",\\n at = \\"Transferring\\",\\n checkBasicSemantic = function checkBasicSemantic(t) {\\n return !c(function () {\\n var e = new a.Set([7]),\\n n = t(e),\\n i = t(k(7));\\n return n == e || !n.has(7) || \\"object\\" != typeof i || 7 != i;\\n }) && t;\\n },\\n checkErrorsCloning = function checkErrorsCloning(t, e) {\\n return !c(function () {\\n var n = new e(),\\n i = t({\\n a: n,\\n b: n\\n });\\n return !(i && i.a === i.b && i.a instanceof e && i.a.stack === n.stack);\\n });\\n },\\n ot = a.structuredClone,\\n lt = r || !checkErrorsCloning(ot, I) || !checkErrorsCloning(ot, G) || !(i = ot, !c(function () {\\n var t = i(new a.AggregateError([1], rt, {\\n cause: 3\\n }));\\n return \\"AggregateError\\" != t.name || 1 != t.errors[0] || t.message != rt || 3 != t.cause;\\n })),\\n ct = !ot && checkBasicSemantic(function (t) {\\n return new U(rt, {\\n detail: t\\n }).detail;\\n }),\\n ht = checkBasicSemantic(ot) || ct,\\n throwUncloneable = function throwUncloneable(t) {\\n throw new G(\\"Uncloneable type: \\" + t, st);\\n },\\n throwUnpolyfillable = function throwUnpolyfillable(t, e) {\\n throw new G((e || \\"Cloning\\") + \\" of \\" + t + \\" cannot be properly polyfilled in this engine\\", st);\\n },\\n tryNativeRestrictedStructuredClone = function tryNativeRestrictedStructuredClone(t, e) {\\n ht || throwUnpolyfillable(e);\\n return ht(t);\\n },\\n cloneBuffer = function cloneBuffer(t, e, n) {\\n if ($(e, t)) return X(e, t);\\n var i, r, s, o, l, c;\\n if (\\"SharedArrayBuffer\\" === (n || v(t))) i = ht ? ht(t) : t;else {\\n var h = a.DataView;\\n h || \\"function\\" == typeof t.slice || throwUnpolyfillable(\\"ArrayBuffer\\");\\n try {\\n if (\\"function\\" != typeof t.slice || t.resizable) {\\n r = t.byteLength;\\n s = \\"maxByteLength\\" in t ? {\\n maxByteLength: t.maxByteLength\\n } : void 0;\\n i = new ArrayBuffer(r, s);\\n o = new h(t);\\n l = new h(i);\\n for (c = 0; c < r; c++) l.setUint8(c, o.getUint8(c));\\n } else i = t.slice(0);\\n } catch (t) {\\n throw new G(\\"ArrayBuffer is detached\\", st);\\n }\\n }\\n K(e, t, i);\\n return i;\\n },\\n cloneView = function cloneView(t, e, n, i, r) {\\n var s = a[e];\\n f(s) || throwUnpolyfillable(e);\\n return new s(cloneBuffer(t.buffer, r), n, i);\\n },\\n Placeholder = function Placeholder(t, e, n) {\\n this.object = t;\\n this.type = e;\\n this.metadata = n;\\n },\\n structuredCloneInternal = function structuredCloneInternal(t, e, n) {\\n g(t) && throwUncloneable(\\"Symbol\\");\\n if (!f(t)) return t;\\n if (e) {\\n if ($(e, t)) return X(e, t);\\n } else e = new V();\\n var i,\\n r,\\n s,\\n l,\\n c,\\n h,\\n u,\\n p,\\n m = v(t);\\n switch (m) {\\n case \\"Array\\":\\n s = M(S(t));\\n break;\\n case \\"Object\\":\\n s = {};\\n break;\\n case \\"Map\\":\\n s = new V();\\n break;\\n case \\"Set\\":\\n s = new Y();\\n break;\\n case \\"RegExp\\":\\n s = new RegExp(t.source, x(t));\\n break;\\n case \\"Error\\":\\n switch (r = t.name) {\\n case \\"AggregateError\\":\\n s = o(\\"AggregateError\\")([]);\\n break;\\n case \\"EvalError\\":\\n s = D();\\n break;\\n case \\"RangeError\\":\\n s = O();\\n break;\\n case \\"ReferenceError\\":\\n s = L();\\n break;\\n case \\"SyntaxError\\":\\n s = N();\\n break;\\n case \\"TypeError\\":\\n s = B();\\n break;\\n case \\"URIError\\":\\n s = j();\\n break;\\n case \\"CompileError\\":\\n s = H();\\n break;\\n case \\"LinkError\\":\\n s = q();\\n break;\\n case \\"RuntimeError\\":\\n s = W();\\n break;\\n default:\\n s = I();\\n }\\n break;\\n case \\"DOMException\\":\\n s = new G(t.message, t.name);\\n break;\\n case \\"ArrayBuffer\\":\\n case \\"SharedArrayBuffer\\":\\n s = n ? new Placeholder(t, m) : cloneBuffer(t, e, m);\\n break;\\n case \\"DataView\\":\\n case \\"Int8Array\\":\\n case \\"Uint8Array\\":\\n case \\"Uint8ClampedArray\\":\\n case \\"Int16Array\\":\\n case \\"Uint16Array\\":\\n case \\"Int32Array\\":\\n case \\"Uint32Array\\":\\n case \\"Float16Array\\":\\n case \\"Float32Array\\":\\n case \\"Float64Array\\":\\n case \\"BigInt64Array\\":\\n case \\"BigUint64Array\\":\\n h = \\"DataView\\" === m ? t.byteLength : t.length;\\n s = n ? new Placeholder(t, m, {\\n offset: t.byteOffset,\\n length: h\\n }) : cloneView(t, m, t.byteOffset, h, e);\\n break;\\n case \\"DOMQuad\\":\\n try {\\n s = new DOMQuad(structuredCloneInternal(t.p1, e, n), structuredCloneInternal(t.p2, e, n), structuredCloneInternal(t.p3, e, n), structuredCloneInternal(t.p4, e, n));\\n } catch (e) {\\n s = tryNativeRestrictedStructuredClone(t, m);\\n }\\n break;\\n case \\"File\\":\\n if (ht) try {\\n s = ht(t);\\n v(s) !== m && (s = void 0);\\n } catch (t) {}\\n if (!s) try {\\n s = new File([t], t.name, t);\\n } catch (t) {}\\n s || throwUnpolyfillable(m);\\n break;\\n case \\"FileList\\":\\n if (l = function () {\\n var t;\\n try {\\n t = new a.DataTransfer();\\n } catch (e) {\\n try {\\n t = new a.ClipboardEvent(\\"\\").clipboardData;\\n } catch (t) {}\\n }\\n return t && t.items && t.files ? t : null;\\n }()) {\\n for (c = 0, h = S(t); c < h; c++) l.items.add(structuredCloneInternal(t[c], e, n));\\n s = l.files;\\n } else s = tryNativeRestrictedStructuredClone(t, m);\\n break;\\n case \\"ImageData\\":\\n try {\\n s = new ImageData(structuredCloneInternal(t.data, e, n), t.width, t.height, {\\n colorSpace: t.colorSpace\\n });\\n } catch (e) {\\n s = tryNativeRestrictedStructuredClone(t, m);\\n }\\n break;\\n default:\\n if (ht) s = ht(t);else switch (m) {\\n case \\"BigInt\\":\\n s = k(t.valueOf());\\n break;\\n case \\"Boolean\\":\\n s = k(tt(t));\\n break;\\n case \\"Number\\":\\n s = k(et(t));\\n break;\\n case \\"String\\":\\n s = k(nt(t));\\n break;\\n case \\"Date\\":\\n s = new R(it(t));\\n break;\\n case \\"Blob\\":\\n try {\\n s = t.slice(0, t.size, t.type);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMPoint\\":\\n case \\"DOMPointReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromPoint ? i.fromPoint(t) : new i(t.x, t.y, t.z, t.w);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMRect\\":\\n case \\"DOMRectReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromRect ? i.fromRect(t) : new i(t.x, t.y, t.width, t.height);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"DOMMatrix\\":\\n case \\"DOMMatrixReadOnly\\":\\n i = a[m];\\n try {\\n s = i.fromMatrix ? i.fromMatrix(t) : new i(t);\\n } catch (t) {\\n throwUnpolyfillable(m);\\n }\\n break;\\n case \\"AudioData\\":\\n case \\"VideoFrame\\":\\n d(t.clone) || throwUnpolyfillable(m);\\n try {\\n s = t.clone();\\n } catch (t) {\\n throwUncloneable(m);\\n }\\n break;\\n case \\"CropTarget\\":\\n case \\"CryptoKey\\":\\n case \\"FileSystemDirectoryHandle\\":\\n case \\"FileSystemFileHandle\\":\\n case \\"FileSystemHandle\\":\\n case \\"GPUCompilationInfo\\":\\n case \\"GPUCompilationMessage\\":\\n case \\"ImageBitmap\\":\\n case \\"RTCCertificate\\":\\n case \\"WebAssembly.Module\\":\\n throwUnpolyfillable(m);\\n default:\\n throwUncloneable(m);\\n }\\n }\\n K(e, t, s);\\n switch (m) {\\n case \\"Array\\":\\n case \\"Object\\":\\n u = Q(t);\\n for (c = 0, h = S(u); c < h; c++) {\\n p = u[c];\\n A(s, p, structuredCloneInternal(t[p], e, n));\\n }\\n break;\\n case \\"Map\\":\\n t.forEach(function (t, i) {\\n K(s, structuredCloneInternal(i, e, n), structuredCloneInternal(t, e, n));\\n });\\n break;\\n case \\"Set\\":\\n t.forEach(function (t) {\\n J(s, structuredCloneInternal(t, e, n));\\n });\\n break;\\n case \\"Error\\":\\n _(s, \\"message\\", structuredCloneInternal(t.message, e, n));\\n y(t, \\"cause\\") && _(s, \\"cause\\", structuredCloneInternal(t.cause, e, n));\\n \\"AggregateError\\" == r && (s.errors = structuredCloneInternal(t.errors, e, n));\\n case \\"DOMException\\":\\n T && _(s, \\"stack\\", structuredCloneInternal(t.stack, e, n));\\n }\\n return s;\\n },\\n replacePlaceholders = function replacePlaceholders(t, e) {\\n if (!f(t)) return t;\\n if ($(e, t)) return X(e, t);\\n var n, i, r, s, a, o, l, c;\\n if (t instanceof Placeholder) {\\n n = t.type;\\n i = t.object;\\n switch (n) {\\n case \\"ArrayBuffer\\":\\n case \\"SharedArrayBuffer\\":\\n c = cloneBuffer(i, e, n);\\n break;\\n case \\"DataView\\":\\n case \\"Int8Array\\":\\n case \\"Uint8Array\\":\\n case \\"Uint8ClampedArray\\":\\n case \\"Int16Array\\":\\n case \\"Uint16Array\\":\\n case \\"Int32Array\\":\\n case \\"Uint32Array\\":\\n case \\"Float16Array\\":\\n case \\"Float32Array\\":\\n case \\"Float64Array\\":\\n case \\"BigInt64Array\\":\\n case \\"BigUint64Array\\":\\n r = t.metadata;\\n c = cloneView(i, n, r.offset, r.length, e);\\n }\\n } else switch (v(t)) {\\n case \\"Array\\":\\n case \\"Object\\":\\n o = Q(t);\\n for (s = 0, a = S(o); s < a; s++) t[l = o[s]] = replacePlaceholders(t[l], e);\\n break;\\n case \\"Map\\":\\n c = new V();\\n t.forEach(function (t, n) {\\n K(c, replacePlaceholders(n, e), replacePlaceholders(t, e));\\n });\\n break;\\n case \\"Set\\":\\n c = new Y();\\n t.forEach(function (t) {\\n J(c, replacePlaceholders(t, e));\\n });\\n break;\\n case \\"Error\\":\\n t.message = replacePlaceholders(t.message, e);\\n y(t, \\"cause\\") && (t.cause = replacePlaceholders(t.cause, e));\\n \\"AggregateError\\" == t.name && (t.errors = replacePlaceholders(t.errors, e));\\n case \\"DOMException\\":\\n T && (t.stack = replacePlaceholders(t.stack, e));\\n }\\n K(e, t, c || t);\\n return c || t;\\n };\\n s({\\n global: !0,\\n enumerable: !0,\\n sham: !P,\\n forced: lt\\n }, {\\n structuredClone: function structuredClone(t) {\\n var e,\\n n,\\n i = E(arguments.length, 1) > 1 && !p(arguments[1]) ? b(arguments[1]) : void 0,\\n r = i ? i.transfer : void 0,\\n s = !1;\\n if (void 0 !== r) {\\n n = function (t, e) {\\n if (!f(t)) throw B(\\"Transfer option cannot be converted to a sequence\\");\\n var n = [];\\n m(t, function (t) {\\n Z(n, b(t));\\n });\\n for (var i, r, s, o, l, c = 0, h = S(n), p = []; c < h;) {\\n i = n[c++];\\n if (\\"ArrayBuffer\\" !== (r = v(i))) {\\n if ($(e, i)) throw new G(\\"Duplicate transferable\\", st);\\n if (P) o = ot(i, {\\n transfer: [i]\\n });else switch (r) {\\n case \\"ImageBitmap\\":\\n s = a.OffscreenCanvas;\\n u(s) || throwUnpolyfillable(r, at);\\n try {\\n (l = new s(i.width, i.height)).getContext(\\"bitmaprenderer\\").transferFromImageBitmap(i);\\n o = l.transferToImageBitmap();\\n } catch (t) {}\\n break;\\n case \\"AudioData\\":\\n case \\"VideoFrame\\":\\n d(i.clone) && d(i.close) || throwUnpolyfillable(r, at);\\n try {\\n o = i.clone();\\n i.close();\\n } catch (t) {}\\n break;\\n case \\"MediaSourceHandle\\":\\n case \\"MessagePort\\":\\n case \\"OffscreenCanvas\\":\\n case \\"ReadableStream\\":\\n case \\"TransformStream\\":\\n case \\"WritableStream\\":\\n throwUnpolyfillable(r, at);\\n }\\n if (void 0 === o) throw new G(\\"This object cannot be transferred: \\" + r, st);\\n K(e, i, o);\\n } else Z(p, i);\\n }\\n return p;\\n }(r, e = new V());\\n s = !!S(n);\\n }\\n var o = structuredCloneInternal(t, e, s);\\n if (s) {\\n !function (t, e) {\\n for (var n, i, r = 0, s = S(t); r < s;) {\\n n = t[r++];\\n if ($(e, n)) throw new G(\\"Duplicate transferable\\", st);\\n if (P) i = ot(n, {\\n transfer: [n]\\n });else {\\n d(n.transfer) || throwUnpolyfillable(\\"ArrayBuffer\\", at);\\n i = n.transfer();\\n }\\n K(e, n, i);\\n }\\n }(r, e = new V());\\n o = replacePlaceholders(o, e);\\n }\\n return o;\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(7),\\n s = n(21),\\n a = n(78),\\n o = n(24),\\n l = n(51),\\n noop = function noop() {},\\n c = [],\\n h = o(\\"Reflect\\", \\"construct\\"),\\n d = /^\\\\s*(?:class|function)\\\\b/,\\n u = i(d.exec),\\n p = !d.exec(noop),\\n f = function isConstructor(t) {\\n if (!s(t)) return !1;\\n try {\\n h(noop, c, t);\\n return !0;\\n } catch (t) {\\n return !1;\\n }\\n },\\n g = function isConstructor(t) {\\n if (!s(t)) return !1;\\n switch (a(t)) {\\n case \\"AsyncFunction\\":\\n case \\"GeneratorFunction\\":\\n case \\"AsyncGeneratorFunction\\":\\n return !1;\\n }\\n try {\\n return p || !!u(d, l(t));\\n } catch (t) {\\n return !0;\\n }\\n };\\n g.sham = !0;\\n t.exports = !h || r(function () {\\n var t;\\n return f(f.call) || !f(Object) || !f(function () {\\n t = !0;\\n }) || t;\\n }) ? g : f;\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(8),\\n s = n(47),\\n a = n(32),\\n o = n(154),\\n l = n(64),\\n c = n(25),\\n h = n(156),\\n d = n(157),\\n u = n(139),\\n p = TypeError,\\n Result = function Result(t, e) {\\n this.stopped = t;\\n this.result = e;\\n },\\n f = Result.prototype;\\n t.exports = function (t, e, n) {\\n var g,\\n m,\\n b,\\n v,\\n y,\\n A,\\n _,\\n S = n && n.that,\\n E = !(!n || !n.AS_ENTRIES),\\n x = !(!n || !n.IS_RECORD),\\n w = !(!n || !n.IS_ITERATOR),\\n C = !(!n || !n.INTERRUPTED),\\n T = i(e, S),\\n stop = function stop(t) {\\n g && u(g, \\"normal\\", t);\\n return new Result(!0, t);\\n },\\n callFn = function callFn(t) {\\n if (E) {\\n s(t);\\n return C ? T(t[0], t[1], stop) : T(t[0], t[1]);\\n }\\n return C ? T(t, stop) : T(t);\\n };\\n if (x) g = t.iterator;else if (w) g = t;else {\\n if (!(m = d(t))) throw p(a(t) + \\" is not iterable\\");\\n if (o(m)) {\\n for (b = 0, v = l(t); v > b; b++) if ((y = callFn(t[b])) && c(f, y)) return y;\\n return new Result(!1);\\n }\\n g = h(t, m);\\n }\\n A = x ? t.next : g.next;\\n for (; !(_ = r(A, g)).done;) {\\n try {\\n y = callFn(_.value);\\n } catch (t) {\\n u(g, \\"throw\\", t);\\n }\\n if (\\"object\\" == typeof y && y && c(f, y)) return y;\\n }\\n return new Result(!1);\\n };\\n }, (t, e, n) => {\\n var i = n(34),\\n r = n(155),\\n s = i(\\"iterator\\"),\\n a = Array.prototype;\\n t.exports = function (t) {\\n return void 0 !== t && (r.Array === t || a[s] === t);\\n };\\n }, t => {\\n t.exports = {};\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(31),\\n s = n(47),\\n a = n(32),\\n o = n(157),\\n l = TypeError;\\n t.exports = function (t, e) {\\n var n = arguments.length < 2 ? o(t) : e;\\n if (r(n)) return s(i(n, t));\\n throw l(a(t) + \\" is not iterable\\");\\n };\\n }, (t, e, n) => {\\n var i = n(78),\\n r = n(30),\\n s = n(17),\\n a = n(155),\\n o = n(34)(\\"iterator\\");\\n t.exports = function (t) {\\n if (!s(t)) return r(t, o) || r(t, \\"@@iterator\\") || a[i(t)];\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(18),\\n r = n(45),\\n s = n(11);\\n t.exports = function (t, e, n) {\\n var a = i(e);\\n a in t ? r.f(t, a, s(0, n)) : t[a] = n;\\n };\\n }, (t, e, n) => {\\n var i = n(8),\\n r = n(39),\\n s = n(25),\\n a = n(160),\\n o = RegExp.prototype;\\n t.exports = function (t) {\\n var e = t.flags;\\n return void 0 !== e || \\"flags\\" in o || r(t, \\"flags\\") || !s(o, t) ? e : i(a, t);\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(47);\\n t.exports = function () {\\n var t = i(this),\\n e = \\"\\";\\n t.hasIndices && (e += \\"d\\");\\n t.global && (e += \\"g\\");\\n t.ignoreCase && (e += \\"i\\");\\n t.multiline && (e += \\"m\\");\\n t.dotAll && (e += \\"s\\");\\n t.unicode && (e += \\"u\\");\\n t.unicodeSets && (e += \\"v\\");\\n t.sticky && (e += \\"y\\");\\n return e;\\n };\\n }, (t, e, n) => {\\n var i = n(14),\\n r = Map.prototype;\\n t.exports = {\\n Map: Map,\\n set: i(r.set),\\n get: i(r.get),\\n has: i(r.has),\\n remove: i(r.delete),\\n proto: r\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.SerializableEmpty = e.PrintAnnotationStorage = e.AnnotationStorage = void 0;\\n n(89);\\n n(148);\\n n(151);\\n var i = n(1),\\n r = n(163),\\n s = n(169);\\n const a = Object.freeze({\\n map: null,\\n hash: \\"\\",\\n transfers: void 0\\n });\\n e.SerializableEmpty = a;\\n var _v = /*#__PURE__*/new WeakMap();\\n var _y = /*#__PURE__*/new WeakMap();\\n var _A = /*#__PURE__*/new WeakSet();\\n class AnnotationStorage {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _A);\\n _classPrivateFieldInitSpec(this, _v, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _y, {\\n writable: true,\\n value: new Map()\\n });\\n this.onSetModified = null;\\n this.onResetModified = null;\\n this.onAnnotationEditor = null;\\n }\\n getValue(t, e) {\\n const n = _classPrivateFieldGet(this, _y).get(t);\\n return void 0 === n ? e : Object.assign(e, n);\\n }\\n getRawValue(t) {\\n return _classPrivateFieldGet(this, _y).get(t);\\n }\\n remove(t) {\\n _classPrivateFieldGet(this, _y).delete(t);\\n 0 === _classPrivateFieldGet(this, _y).size && this.resetModified();\\n if (\\"function\\" == typeof this.onAnnotationEditor) {\\n for (const t of _classPrivateFieldGet(this, _y).values()) if (t instanceof r.AnnotationEditor) return;\\n this.onAnnotationEditor(null);\\n }\\n }\\n setValue(t, e) {\\n const n = _classPrivateFieldGet(this, _y).get(t);\\n let i = !1;\\n if (void 0 !== n) {\\n for (const [t, r] of Object.entries(e)) if (n[t] !== r) {\\n i = !0;\\n n[t] = r;\\n }\\n } else {\\n i = !0;\\n _classPrivateFieldGet(this, _y).set(t, e);\\n }\\n i && _classPrivateMethodGet(this, _A, _A2).call(this);\\n e instanceof r.AnnotationEditor && \\"function\\" == typeof this.onAnnotationEditor && this.onAnnotationEditor(e.constructor._type);\\n }\\n has(t) {\\n return _classPrivateFieldGet(this, _y).has(t);\\n }\\n getAll() {\\n return _classPrivateFieldGet(this, _y).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _y)) : null;\\n }\\n setAll(t) {\\n for (const [e, n] of Object.entries(t)) this.setValue(e, n);\\n }\\n get size() {\\n return _classPrivateFieldGet(this, _y).size;\\n }\\n resetModified() {\\n if (_classPrivateFieldGet(this, _v)) {\\n _classPrivateFieldSet(this, _v, !1);\\n \\"function\\" == typeof this.onResetModified && this.onResetModified();\\n }\\n }\\n get print() {\\n return new PrintAnnotationStorage(this);\\n }\\n get serializable() {\\n if (0 === _classPrivateFieldGet(this, _y).size) return a;\\n const t = new Map(),\\n e = new s.MurmurHash3_64(),\\n n = [],\\n i = Object.create(null);\\n let o = !1;\\n for (const [n, s] of _classPrivateFieldGet(this, _y)) {\\n const a = s instanceof r.AnnotationEditor ? s.serialize(!1, i) : s;\\n if (a) {\\n t.set(n, a);\\n e.update(\\"\\".concat(n, \\":\\").concat(JSON.stringify(a)));\\n o || (o = !!a.bitmap);\\n }\\n }\\n if (o) for (const e of t.values()) e.bitmap && n.push(e.bitmap);\\n return t.size > 0 ? {\\n map: t,\\n hash: e.hexdigest(),\\n transfers: n\\n } : a;\\n }\\n }\\n function _A2() {\\n if (!_classPrivateFieldGet(this, _v)) {\\n _classPrivateFieldSet(this, _v, !0);\\n \\"function\\" == typeof this.onSetModified && this.onSetModified();\\n }\\n }\\n e.AnnotationStorage = AnnotationStorage;\\n var _2 = /*#__PURE__*/new WeakMap();\\n class PrintAnnotationStorage extends AnnotationStorage {\\n constructor(t) {\\n super();\\n _classPrivateFieldInitSpec(this, _2, {\\n writable: true,\\n value: void 0\\n });\\n const {\\n map: e,\\n hash: n,\\n transfers: i\\n } = t.serializable,\\n r = structuredClone(e, null);\\n _classPrivateFieldSet(this, _2, {\\n map: r,\\n hash: n,\\n transfers: i\\n });\\n }\\n get print() {\\n (0, i.unreachable)(\\"Should not call PrintAnnotationStorage.print\\");\\n }\\n get serializable() {\\n return _classPrivateFieldGet(this, _2);\\n }\\n }\\n e.PrintAnnotationStorage = PrintAnnotationStorage;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class12;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.AnnotationEditor = void 0;\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(164);\\n var _S = /*#__PURE__*/new WeakMap();\\n var _E = /*#__PURE__*/new WeakMap();\\n var _x = /*#__PURE__*/new WeakMap();\\n var _w = /*#__PURE__*/new WeakMap();\\n var _C = /*#__PURE__*/new WeakMap();\\n var _T = /*#__PURE__*/new WeakMap();\\n var _P = /*#__PURE__*/new WeakMap();\\n var _k = /*#__PURE__*/new WeakMap();\\n var _M = /*#__PURE__*/new WeakMap();\\n var _R = /*#__PURE__*/new WeakSet();\\n var _F = /*#__PURE__*/new WeakSet();\\n var _I = /*#__PURE__*/new WeakSet();\\n var _D = /*#__PURE__*/new WeakSet();\\n class AnnotationEditor {\\n constructor(_t4) {\\n _classPrivateMethodInitSpec(this, _D);\\n _classPrivateMethodInitSpec(this, _I);\\n _classPrivateMethodInitSpec(this, _F);\\n _classPrivateMethodInitSpec(this, _R);\\n _classPrivateFieldInitSpec(this, _S, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _E, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _x, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _w, {\\n writable: true,\\n value: this.focusin.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _C, {\\n writable: true,\\n value: this.focusout.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _T, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _P, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _k, {\\n writable: true,\\n value: !1\\n });\\n _defineProperty(this, \\"_uiManager\\", null);\\n _classPrivateFieldInitSpec(this, _M, {\\n writable: true,\\n value: AnnotationEditor._zIndex++\\n });\\n this.constructor === AnnotationEditor && (0, i.unreachable)(\\"Cannot initialize AnnotationEditor.\\");\\n this.parent = _t4.parent;\\n this.id = _t4.id;\\n this.width = this.height = null;\\n this.pageIndex = _t4.parent.pageIndex;\\n this.name = _t4.name;\\n this.div = null;\\n this._uiManager = _t4.uiManager;\\n this.annotationElementId = null;\\n this._willKeepAspectRatio = !1;\\n const {\\n rotation: _e4,\\n rawDims: {\\n pageWidth: _n3,\\n pageHeight: _r3,\\n pageX: _s4,\\n pageY: _a2\\n }\\n } = this.parent.viewport;\\n this.rotation = _e4;\\n this.pageRotation = (360 + _e4 - this._uiManager.viewParameters.rotation) % 360;\\n this.pageDimensions = [_n3, _r3];\\n this.pageTranslation = [_s4, _a2];\\n const [_o2, _l2] = this.parentDimensions;\\n this.x = _t4.x / _o2;\\n this.y = _t4.y / _l2;\\n this.isAttachedToDOM = !1;\\n this.deleted = !1;\\n }\\n static get _defaultLineColor() {\\n return (0, i.shadow)(this, \\"_defaultLineColor\\", this._colorManager.getHexCode(\\"CanvasText\\"));\\n }\\n static deleteAnnotationElement(t) {\\n const e = new FakeEditor({\\n id: t.parent.getNextId(),\\n parent: t.parent,\\n uiManager: t._uiManager\\n });\\n e.annotationElementId = t.annotationElementId;\\n e.deleted = !0;\\n e._uiManager.addToAnnotationStorage(e);\\n }\\n static initialize(t) {}\\n static updateDefaultParams(t, e) {}\\n static get defaultPropertiesToUpdate() {\\n return [];\\n }\\n get propertiesToUpdate() {\\n return [];\\n }\\n addCommands(t) {\\n this._uiManager.addCommands(t);\\n }\\n get currentLayer() {\\n return this._uiManager.currentLayer;\\n }\\n setInBackground() {\\n this.div.style.zIndex = 0;\\n }\\n setInForeground() {\\n this.div.style.zIndex = _classPrivateFieldGet(this, _M);\\n }\\n setParent(t) {\\n if (null !== t) {\\n this.pageIndex = t.pageIndex;\\n this.pageDimensions = t.pageDimensions;\\n }\\n this.parent = t;\\n }\\n focusin(t) {\\n _classPrivateFieldGet(this, _T) ? _classPrivateFieldSet(this, _T, !1) : this.parent.setSelected(this);\\n }\\n focusout(t) {\\n if (!this.isAttachedToDOM) return;\\n const e = t.relatedTarget;\\n if (!(e !== null && e !== void 0 && e.closest(\\"#\\".concat(this.id)))) {\\n var _this$parent;\\n t.preventDefault();\\n ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.isMultipleSelection) || this.commitOrRemove();\\n }\\n }\\n commitOrRemove() {\\n this.isEmpty() ? this.remove() : this.commit();\\n }\\n commit() {\\n this.addToAnnotationStorage();\\n }\\n addToAnnotationStorage() {\\n this._uiManager.addToAnnotationStorage(this);\\n }\\n dragstart(t) {\\n const e = this.parent.div.getBoundingClientRect();\\n this.startX = t.clientX - e.x;\\n this.startY = t.clientY - e.y;\\n t.dataTransfer.setData(\\"text/plain\\", this.id);\\n t.dataTransfer.effectAllowed = \\"move\\";\\n }\\n setAt(t, e, n, i) {\\n const [r, s] = this.parentDimensions;\\n [n, i] = this.screenToPageTranslation(n, i);\\n this.x = (t + n) / r;\\n this.y = (e + i) / s;\\n this.fixAndSetPosition();\\n }\\n translate(t, e) {\\n _classPrivateMethodGet(this, _R, _R2).call(this, this.parentDimensions, t, e);\\n }\\n translateInPage(t, e) {\\n _classPrivateMethodGet(this, _R, _R2).call(this, this.pageDimensions, t, e);\\n this.div.scrollIntoView({\\n block: \\"nearest\\"\\n });\\n }\\n fixAndSetPosition() {\\n const [t, e] = this.pageDimensions;\\n let {\\n x: n,\\n y: i,\\n width: r,\\n height: s\\n } = this;\\n r *= t;\\n s *= e;\\n n *= t;\\n i *= e;\\n switch (this.rotation) {\\n case 0:\\n n = Math.max(0, Math.min(t - r, n));\\n i = Math.max(0, Math.min(e - s, i));\\n break;\\n case 90:\\n n = Math.max(0, Math.min(t - s, n));\\n i = Math.min(e, Math.max(r, i));\\n break;\\n case 180:\\n n = Math.min(t, Math.max(r, n));\\n i = Math.min(e, Math.max(s, i));\\n break;\\n case 270:\\n n = Math.min(t, Math.max(s, n));\\n i = Math.max(0, Math.min(e - r, i));\\n }\\n this.x = n / t;\\n this.y = i / e;\\n this.div.style.left = \\"\\".concat((100 * this.x).toFixed(2), \\"%\\");\\n this.div.style.top = \\"\\".concat((100 * this.y).toFixed(2), \\"%\\");\\n }\\n screenToPageTranslation(t, e) {\\n switch (this.parentRotation) {\\n case 90:\\n return [e, -t];\\n case 180:\\n return [-t, -e];\\n case 270:\\n return [-e, t];\\n default:\\n return [t, e];\\n }\\n }\\n pageTranslationToScreen(t, e) {\\n switch (this.parentRotation) {\\n case 90:\\n return [-e, t];\\n case 180:\\n return [-t, -e];\\n case 270:\\n return [e, -t];\\n default:\\n return [t, e];\\n }\\n }\\n get parentScale() {\\n return this._uiManager.viewParameters.realScale;\\n }\\n get parentRotation() {\\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\\n }\\n get parentDimensions() {\\n const {\\n realScale: t\\n } = this._uiManager.viewParameters,\\n [e, n] = this.pageDimensions;\\n return [e * t, n * t];\\n }\\n setDims(t, e) {\\n const [n, i] = this.parentDimensions;\\n this.div.style.width = \\"\\".concat((100 * t / n).toFixed(2), \\"%\\");\\n _classPrivateFieldGet(this, _S) || (this.div.style.height = \\"\\".concat((100 * e / i).toFixed(2), \\"%\\"));\\n }\\n fixDims() {\\n const {\\n style: t\\n } = this.div,\\n {\\n height: e,\\n width: n\\n } = t,\\n i = n.endsWith(\\"%\\"),\\n r = !_classPrivateFieldGet(this, _S) && e.endsWith(\\"%\\");\\n if (i && r) return;\\n const [s, a] = this.parentDimensions;\\n i || (t.width = \\"\\".concat((100 * parseFloat(n) / s).toFixed(2), \\"%\\"));\\n _classPrivateFieldGet(this, _S) || r || (t.height = \\"\\".concat((100 * parseFloat(e) / a).toFixed(2), \\"%\\"));\\n }\\n getInitialTranslation() {\\n return [0, 0];\\n }\\n render() {\\n this.div = document.createElement(\\"div\\");\\n this.div.setAttribute(\\"data-editor-rotation\\", (360 - this.rotation) % 360);\\n this.div.className = this.name;\\n this.div.setAttribute(\\"id\\", this.id);\\n this.div.setAttribute(\\"tabIndex\\", 0);\\n this.setInForeground();\\n this.div.addEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n this.div.addEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n const [t, e] = this.parentDimensions;\\n if (this.parentRotation % 180 != 0) {\\n this.div.style.maxWidth = \\"\\".concat((100 * e / t).toFixed(2), \\"%\\");\\n this.div.style.maxHeight = \\"\\".concat((100 * t / e).toFixed(2), \\"%\\");\\n }\\n const [n, i] = this.getInitialTranslation();\\n this.translate(n, i);\\n (0, r.bindEvents)(this, this.div, [\\"dragstart\\", \\"pointerdown\\"]);\\n return this.div;\\n }\\n pointerdown(t) {\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (0 !== t.button || t.ctrlKey && e) t.preventDefault();else {\\n t.ctrlKey && !e || t.shiftKey || t.metaKey && e ? this.parent.toggleSelected(this) : this.parent.setSelected(this);\\n _classPrivateFieldSet(this, _T, !0);\\n }\\n }\\n getRect(t, e) {\\n const n = this.parentScale,\\n [i, r] = this.pageDimensions,\\n [s, a] = this.pageTranslation,\\n o = t / n,\\n l = e / n,\\n c = this.x * i,\\n h = this.y * r,\\n d = this.width * i,\\n u = this.height * r;\\n switch (this.rotation) {\\n case 0:\\n return [c + o + s, r - h - l - u + a, c + o + d + s, r - h - l + a];\\n case 90:\\n return [c + l + s, r - h + o + a, c + l + u + s, r - h + o + d + a];\\n case 180:\\n return [c - o - d + s, r - h + l + a, c - o + s, r - h + l + u + a];\\n case 270:\\n return [c - l - u + s, r - h - o - d + a, c - l + s, r - h - o + a];\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n }\\n getRectInCurrentCoords(t, e) {\\n const [n, i, r, s] = t,\\n a = r - n,\\n o = s - i;\\n switch (this.rotation) {\\n case 0:\\n return [n, e - s, a, o];\\n case 90:\\n return [n, e - i, o, a];\\n case 180:\\n return [r, e - i, a, o];\\n case 270:\\n return [r, e - s, o, a];\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n }\\n onceAdded() {}\\n isEmpty() {\\n return !1;\\n }\\n enableEditMode() {\\n _classPrivateFieldSet(this, _k, !0);\\n }\\n disableEditMode() {\\n _classPrivateFieldSet(this, _k, !1);\\n }\\n isInEditMode() {\\n return _classPrivateFieldGet(this, _k);\\n }\\n shouldGetKeyboardEvents() {\\n return !1;\\n }\\n needsToBeRebuilt() {\\n return this.div && !this.isAttachedToDOM;\\n }\\n rebuild() {\\n var _this$div, _this$div2;\\n (_this$div = this.div) === null || _this$div === void 0 ? void 0 : _this$div.addEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n (_this$div2 = this.div) === null || _this$div2 === void 0 ? void 0 : _this$div2.addEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n }\\n serialize() {\\n (0, i.unreachable)(\\"An editor must be serializable\\");\\n }\\n static deserialize(t, e, n) {\\n const i = new this.prototype.constructor({\\n parent: e,\\n id: e.getNextId(),\\n uiManager: n\\n });\\n i.rotation = t.rotation;\\n const [r, s] = i.pageDimensions,\\n [a, o, l, c] = i.getRectInCurrentCoords(t.rect, s);\\n i.x = a / r;\\n i.y = o / s;\\n i.width = l / r;\\n i.height = c / s;\\n return i;\\n }\\n remove() {\\n this.div.removeEventListener(\\"focusin\\", _classPrivateFieldGet(this, _w));\\n this.div.removeEventListener(\\"focusout\\", _classPrivateFieldGet(this, _C));\\n this.isEmpty() || this.commit();\\n this.parent ? this.parent.remove(this) : this._uiManager.removeEditor(this);\\n }\\n get isResizable() {\\n return !1;\\n }\\n makeResizable() {\\n if (this.isResizable) {\\n _classPrivateMethodGet(this, _F, _F2).call(this);\\n _classPrivateFieldGet(this, _E).classList.remove(\\"hidden\\");\\n }\\n }\\n select() {\\n var _this$div3;\\n this.makeResizable();\\n (_this$div3 = this.div) === null || _this$div3 === void 0 ? void 0 : _this$div3.classList.add(\\"selectedEditor\\");\\n }\\n unselect() {\\n var _classPrivateFieldGet3, _this$div4, _this$div5;\\n (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _E)) === null || _classPrivateFieldGet3 === void 0 ? void 0 : _classPrivateFieldGet3.classList.add(\\"hidden\\");\\n (_this$div4 = this.div) === null || _this$div4 === void 0 ? void 0 : _this$div4.classList.remove(\\"selectedEditor\\");\\n ((_this$div5 = this.div) === null || _this$div5 === void 0 ? void 0 : _this$div5.contains(document.activeElement)) && this._uiManager.currentLayer.div.focus();\\n }\\n updateParams(t, e) {}\\n disableEditing() {}\\n enableEditing() {}\\n enterInEditMode() {}\\n get contentDiv() {\\n return this.div;\\n }\\n get isEditing() {\\n return _classPrivateFieldGet(this, _P);\\n }\\n set isEditing(t) {\\n _classPrivateFieldSet(this, _P, t);\\n if (this.parent) if (t) {\\n this.parent.setSelected(this);\\n this.parent.setActiveEditor(this);\\n } else this.parent.setActiveEditor(null);\\n }\\n setAspectRatio(t, e) {\\n _classPrivateFieldSet(this, _S, !0);\\n const n = t / e,\\n {\\n style: i\\n } = this.div;\\n i.aspectRatio = n;\\n i.height = \\"auto\\";\\n }\\n static get MIN_SIZE() {\\n return 16;\\n }\\n }\\n _class12 = AnnotationEditor;\\n function _R2(t, e, n) {\\n let [i, r] = t;\\n [e, n] = this.screenToPageTranslation(e, n);\\n this.x += e / i;\\n this.y += n / r;\\n this.fixAndSetPosition();\\n }\\n function _F2() {\\n if (_classPrivateFieldGet(this, _E)) return;\\n _classPrivateFieldSet(this, _E, document.createElement(\\"div\\"));\\n _classPrivateFieldGet(this, _E).classList.add(\\"resizers\\");\\n const t = [\\"topLeft\\", \\"topRight\\", \\"bottomRight\\", \\"bottomLeft\\"];\\n this._willKeepAspectRatio || t.push(\\"topMiddle\\", \\"middleRight\\", \\"bottomMiddle\\", \\"middleLeft\\");\\n for (const e of t) {\\n const t = document.createElement(\\"div\\");\\n _classPrivateFieldGet(this, _E).append(t);\\n t.classList.add(\\"resizer\\", e);\\n t.addEventListener(\\"pointerdown\\", _classPrivateMethodGet(this, _I, _I2).bind(this, e));\\n }\\n this.div.prepend(_classPrivateFieldGet(this, _E));\\n }\\n function _I2(t, e) {\\n e.preventDefault();\\n _classPrivateFieldSet(this, _x, [e.clientX, e.clientY]);\\n const n = _classPrivateMethodGet(this, _D, _D2).bind(this, t),\\n i = this.div.draggable;\\n this.div.draggable = !1;\\n const r = \\"resizing\\".concat(t.charAt(0).toUpperCase()).concat(t.slice(1));\\n this.parent.div.classList.add(r);\\n const s = {\\n passive: !0,\\n capture: !0\\n };\\n window.addEventListener(\\"pointermove\\", n, s);\\n window.addEventListener(\\"pointerup\\", () => {\\n this._uiManager.stopUndoAccumulation();\\n this.div.draggable = i;\\n this.parent.div.classList.remove(r);\\n window.removeEventListener(\\"pointermove\\", n, s);\\n }, {\\n once: !0\\n });\\n }\\n function _D2(t, e) {\\n const {\\n clientX: n,\\n clientY: r\\n } = e,\\n s = n - _classPrivateFieldGet(this, _x)[0],\\n a = r - _classPrivateFieldGet(this, _x)[1];\\n _classPrivateFieldGet(this, _x)[0] = n;\\n _classPrivateFieldGet(this, _x)[1] = r;\\n const [o, l] = this.parentDimensions,\\n c = this.x,\\n h = this.y,\\n d = this.width,\\n u = this.height,\\n p = _class12.MIN_SIZE / o,\\n f = _class12.MIN_SIZE / l;\\n let g;\\n const round = t => Math.round(1e4 * t) / 1e4,\\n updatePosition = (t, e) => {\\n const [n, i] = this.parentDimensions;\\n this.setDims(n * t, i * e);\\n this.fixAndSetPosition();\\n };\\n switch (t) {\\n case \\"topLeft\\":\\n {\\n if (Math.sign(s) * Math.sign(a) < 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(d * o, u * l),\\n n = round(c + d),\\n i = round(h + u),\\n r = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n m = round(d * r),\\n b = round(u * r),\\n v = n - m,\\n y = i - b;\\n g = () => {\\n this.width = m;\\n this.height = b;\\n this.x = v;\\n this.y = y;\\n updatePosition(m, b);\\n };\\n break;\\n }\\n case \\"topMiddle\\":\\n {\\n const t = round(this.y + u),\\n e = round(Math.max(f, Math.min(1, u - a / l))),\\n n = t - e;\\n g = () => {\\n this.height = e;\\n this.y = n;\\n updatePosition(d, e);\\n };\\n break;\\n }\\n case \\"topRight\\":\\n {\\n if (Math.sign(s) * Math.sign(a) > 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = round(h + this.height),\\n i = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n r = round(d * i),\\n c = round(u * i),\\n m = n - c;\\n g = () => {\\n this.width = r;\\n this.height = c;\\n this.y = m;\\n updatePosition(r, c);\\n };\\n break;\\n }\\n case \\"middleRight\\":\\n {\\n const t = round(Math.max(p, Math.min(1, d + s / o)));\\n g = () => {\\n this.width = t;\\n updatePosition(t, u);\\n };\\n break;\\n }\\n case \\"bottomRight\\":\\n {\\n if (Math.sign(s) * Math.sign(a) < 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = Math.max(Math.min(1 + Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n i = round(d * n),\\n r = round(u * n);\\n g = () => {\\n this.width = i;\\n this.height = r;\\n updatePosition(i, r);\\n };\\n break;\\n }\\n case \\"bottomMiddle\\":\\n {\\n const t = round(Math.max(f, Math.min(1, u + a / l)));\\n g = () => {\\n this.height = t;\\n updatePosition(d, t);\\n };\\n break;\\n }\\n case \\"bottomLeft\\":\\n {\\n if (Math.sign(s) * Math.sign(a) > 0) return;\\n const t = Math.hypot(s, a),\\n e = Math.hypot(this.width * o, this.height * l),\\n n = round(c + this.width),\\n i = Math.max(Math.min(1 - Math.sign(s) * (t / e), 1 / d, 1 / u), p / d, f / u),\\n r = round(d * i),\\n h = round(u * i),\\n m = n - r;\\n g = () => {\\n this.width = r;\\n this.height = h;\\n this.x = m;\\n updatePosition(r, h);\\n };\\n break;\\n }\\n case \\"middleLeft\\":\\n {\\n const t = round(c + d),\\n e = round(Math.max(p, Math.min(1, d - s / o))),\\n n = t - e;\\n g = () => {\\n this.width = e;\\n this.x = n;\\n updatePosition(e, u);\\n };\\n break;\\n }\\n }\\n this.addCommands({\\n cmd: g,\\n undo: () => {\\n this.width = d;\\n this.height = u;\\n this.x = c;\\n this.y = h;\\n updatePosition(d, u);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.RESIZE,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n _defineProperty(AnnotationEditor, \\"_colorManager\\", new r.ColorManager());\\n _defineProperty(AnnotationEditor, \\"_zIndex\\", 1);\\n e.AnnotationEditor = AnnotationEditor;\\n class FakeEditor extends AnnotationEditor {\\n constructor(t) {\\n super(t);\\n this.annotationElementId = t.annotationElementId;\\n this.deleted = !0;\\n }\\n serialize() {\\n return {\\n id: this.annotationElementId,\\n deleted: !0,\\n pageIndex: this.pageIndex\\n };\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.KeyboardManager = e.CommandManager = e.ColorManager = e.AnnotationEditorUIManager = void 0;\\n e.bindEvents = function bindEvents(t, e, n) {\\n for (const i of n) e.addEventListener(i, t[i].bind(t));\\n };\\n e.opacityToHex = function opacityToHex(t) {\\n return Math.round(Math.min(255, Math.max(1, 255 * t))).toString(16).padStart(2, \\"0\\");\\n };\\n n(2);\\n n(89);\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n n(165);\\n var i = n(1),\\n r = n(167);\\n var _O = /*#__PURE__*/new WeakMap();\\n class IdManager {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _O, {\\n writable: true,\\n value: 0\\n });\\n }\\n getId() {\\n var _this$O, _this$O2;\\n return \\"\\".concat(i.AnnotationEditorPrefix).concat((_classPrivateFieldSet(this, _O, (_this$O = _classPrivateFieldGet(this, _O), _this$O2 = _this$O++, _this$O)), _this$O2));\\n }\\n }\\n var _L = /*#__PURE__*/new WeakMap();\\n var _O2 = /*#__PURE__*/new WeakMap();\\n var _N = /*#__PURE__*/new WeakMap();\\n var _B = /*#__PURE__*/new WeakSet();\\n class ImageManager {\\n constructor() {\\n _classPrivateMethodInitSpec(this, _B);\\n _classPrivateFieldInitSpec(this, _L, {\\n writable: true,\\n value: (0, i.getUuid)()\\n });\\n _classPrivateFieldInitSpec(this, _O2, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _N, {\\n writable: true,\\n value: null\\n });\\n }\\n async getFromFile(t) {\\n const {\\n lastModified: e,\\n name: n,\\n size: i,\\n type: r\\n } = t;\\n return _classPrivateMethodGet(this, _B, _B2).call(this, \\"\\".concat(e, \\"_\\").concat(n, \\"_\\").concat(i, \\"_\\").concat(r), t);\\n }\\n async getFromUrl(t) {\\n return _classPrivateMethodGet(this, _B, _B2).call(this, t, t);\\n }\\n async getFromId(t) {\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n if (!e) return null;\\n if (e.bitmap) {\\n e.refCounter += 1;\\n return e;\\n }\\n return e.file ? this.getFromFile(e.file) : this.getFromUrl(e.url);\\n }\\n getSvgUrl(t) {\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n return e !== null && e !== void 0 && e.isSvg ? e.svgUrl : null;\\n }\\n deleteId(t) {\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n const e = _classPrivateFieldGet(this, _N).get(t);\\n if (e) {\\n e.refCounter -= 1;\\n 0 === e.refCounter && (e.bitmap = null);\\n }\\n }\\n isValidId(t) {\\n return t.startsWith(\\"image_\\".concat(_classPrivateFieldGet(this, _L), \\"_\\"));\\n }\\n }\\n async function _B2(t, e) {\\n var _n5;\\n _classPrivateFieldGet(this, _N) || _classPrivateFieldSet(this, _N, new Map());\\n let n = _classPrivateFieldGet(this, _N).get(t);\\n if (null === n) return null;\\n if ((_n5 = n) !== null && _n5 !== void 0 && _n5.bitmap) {\\n n.refCounter += 1;\\n return n;\\n }\\n try {\\n var _this$O3, _this$O4;\\n n || (n = {\\n bitmap: null,\\n id: \\"image_\\".concat(_classPrivateFieldGet(this, _L), \\"_\\").concat((_classPrivateFieldSet(this, _O2, (_this$O3 = _classPrivateFieldGet(this, _O2), _this$O4 = _this$O3++, _this$O3)), _this$O4)),\\n refCounter: 0,\\n isSvg: !1\\n });\\n let t;\\n if (\\"string\\" == typeof e) {\\n n.url = e;\\n const i = await fetch(e);\\n if (!i.ok) throw new Error(i.statusText);\\n t = await i.blob();\\n } else t = n.file = e;\\n if (\\"image/svg+xml\\" === t.type) {\\n const e = new FileReader(),\\n i = new Image(),\\n r = new Promise((t, r) => {\\n i.onload = () => {\\n n.bitmap = i;\\n n.isSvg = !0;\\n t();\\n };\\n e.onload = () => {\\n i.src = n.svgUrl = e.result;\\n };\\n i.onerror = e.onerror = r;\\n });\\n e.readAsDataURL(t);\\n await r;\\n } else n.bitmap = await createImageBitmap(t);\\n n.refCounter = 1;\\n } catch (t) {\\n console.error(t);\\n n = null;\\n }\\n _classPrivateFieldGet(this, _N).set(t, n);\\n n && _classPrivateFieldGet(this, _N).set(n.id, n);\\n return n;\\n }\\n var _j = /*#__PURE__*/new WeakMap();\\n var _U = /*#__PURE__*/new WeakMap();\\n var _z = /*#__PURE__*/new WeakMap();\\n var _H = /*#__PURE__*/new WeakMap();\\n class CommandManager {\\n constructor() {\\n _classPrivateFieldInitSpec(this, _j, {\\n writable: true,\\n value: []\\n });\\n _classPrivateFieldInitSpec(this, _U, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _z, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _H, {\\n writable: true,\\n value: -1\\n });\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 128;\\n _classPrivateFieldSet(this, _z, t);\\n }\\n add(t) {\\n let {\\n cmd: e,\\n undo: n,\\n mustExec: i,\\n type: r = NaN,\\n overwriteIfSameType: s = !1,\\n keepUndo: a = !1\\n } = t;\\n i && e();\\n if (_classPrivateFieldGet(this, _U)) return;\\n const o = {\\n cmd: e,\\n undo: n,\\n type: r\\n };\\n if (-1 === _classPrivateFieldGet(this, _H)) {\\n _classPrivateFieldGet(this, _j).length > 0 && (_classPrivateFieldGet(this, _j).length = 0);\\n _classPrivateFieldSet(this, _H, 0);\\n _classPrivateFieldGet(this, _j).push(o);\\n return;\\n }\\n if (s && _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type === r) {\\n a && (o.undo = _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)] = o;\\n return;\\n }\\n const l = _classPrivateFieldGet(this, _H) + 1;\\n if (l === _classPrivateFieldGet(this, _z)) _classPrivateFieldGet(this, _j).splice(0, 1);else {\\n _classPrivateFieldSet(this, _H, l);\\n l < _classPrivateFieldGet(this, _j).length && _classPrivateFieldGet(this, _j).splice(l);\\n }\\n _classPrivateFieldGet(this, _j).push(o);\\n }\\n stopUndoAccumulation() {\\n -1 !== _classPrivateFieldGet(this, _H) && (_classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].type = NaN);\\n }\\n undo() {\\n if (-1 !== _classPrivateFieldGet(this, _H)) {\\n _classPrivateFieldSet(this, _U, !0);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].undo();\\n _classPrivateFieldSet(this, _U, !1);\\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) - 1);\\n }\\n }\\n redo() {\\n if (_classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1) {\\n _classPrivateFieldSet(this, _H, _classPrivateFieldGet(this, _H) + 1);\\n _classPrivateFieldSet(this, _U, !0);\\n _classPrivateFieldGet(this, _j)[_classPrivateFieldGet(this, _H)].cmd();\\n _classPrivateFieldSet(this, _U, !1);\\n }\\n }\\n hasSomethingToUndo() {\\n return -1 !== _classPrivateFieldGet(this, _H);\\n }\\n hasSomethingToRedo() {\\n return _classPrivateFieldGet(this, _H) < _classPrivateFieldGet(this, _j).length - 1;\\n }\\n destroy() {\\n _classPrivateFieldSet(this, _j, null);\\n }\\n }\\n e.CommandManager = CommandManager;\\n var _q = /*#__PURE__*/new WeakSet();\\n class KeyboardManager {\\n constructor(_t5) {\\n _classPrivateMethodInitSpec(this, _q);\\n this.buffer = [];\\n this.callbacks = new Map();\\n this.allKeys = new Set();\\n const {\\n isMac: _e5\\n } = i.FeatureTest.platform;\\n for (const [n, i, r = {}] of _t5) for (const t of n) {\\n const n = t.startsWith(\\"mac+\\");\\n if (_e5 && n) {\\n this.callbacks.set(t.slice(4), {\\n callback: i,\\n options: r\\n });\\n this.allKeys.add(t.split(\\"+\\").at(-1));\\n } else if (!_e5 && !n) {\\n this.callbacks.set(t, {\\n callback: i,\\n options: r\\n });\\n this.allKeys.add(t.split(\\"+\\").at(-1));\\n }\\n }\\n }\\n exec(t, e) {\\n if (!this.allKeys.has(e.key)) return;\\n const n = this.callbacks.get(_classPrivateMethodGet(this, _q, _q2).call(this, e));\\n if (!n) return;\\n const {\\n callback: i,\\n options: {\\n bubbles: r = !1,\\n args: s = [],\\n checker: a = null\\n }\\n } = n;\\n if (!a || a(t, e)) {\\n i.bind(t, ...s)();\\n if (!r) {\\n e.stopPropagation();\\n e.preventDefault();\\n }\\n }\\n }\\n }\\n function _q2(t) {\\n t.altKey && this.buffer.push(\\"alt\\");\\n t.ctrlKey && this.buffer.push(\\"ctrl\\");\\n t.metaKey && this.buffer.push(\\"meta\\");\\n t.shiftKey && this.buffer.push(\\"shift\\");\\n this.buffer.push(t.key);\\n const e = this.buffer.join(\\"+\\");\\n this.buffer.length = 0;\\n return e;\\n }\\n e.KeyboardManager = KeyboardManager;\\n class ColorManager {\\n get _colors() {\\n const t = new Map([[\\"CanvasText\\", null], [\\"Canvas\\", null]]);\\n (0, r.getColorValues)(t);\\n return (0, i.shadow)(this, \\"_colors\\", t);\\n }\\n convert(t) {\\n const e = (0, r.getRGB)(t);\\n if (!window.matchMedia(\\"(forced-colors: active)\\").matches) return e;\\n for (const [t, n] of this._colors) if (n.every((t, n) => t === e[n])) return ColorManager._colorsMapping.get(t);\\n return e;\\n }\\n getHexCode(t) {\\n const e = this._colors.get(t);\\n return e ? i.Util.makeHexColor(...e) : t;\\n }\\n }\\n _defineProperty(ColorManager, \\"_colorsMapping\\", new Map([[\\"CanvasText\\", [0, 0, 0]], [\\"Canvas\\", [255, 255, 255]]]));\\n e.ColorManager = ColorManager;\\n var _W = /*#__PURE__*/new WeakMap();\\n var _G = /*#__PURE__*/new WeakMap();\\n var _V = /*#__PURE__*/new WeakMap();\\n var _$ = /*#__PURE__*/new WeakMap();\\n var _X = /*#__PURE__*/new WeakMap();\\n var _K = /*#__PURE__*/new WeakMap();\\n var _Y = /*#__PURE__*/new WeakMap();\\n var _J = /*#__PURE__*/new WeakMap();\\n var _Q = /*#__PURE__*/new WeakMap();\\n var _Z = /*#__PURE__*/new WeakMap();\\n var _tt = /*#__PURE__*/new WeakMap();\\n var _et = /*#__PURE__*/new WeakMap();\\n var _nt = /*#__PURE__*/new WeakMap();\\n var _it = /*#__PURE__*/new WeakMap();\\n var _rt = /*#__PURE__*/new WeakMap();\\n var _st = /*#__PURE__*/new WeakMap();\\n var _at = /*#__PURE__*/new WeakMap();\\n var _ot = /*#__PURE__*/new WeakMap();\\n var _lt = /*#__PURE__*/new WeakMap();\\n var _ct = /*#__PURE__*/new WeakMap();\\n var _ht = /*#__PURE__*/new WeakMap();\\n var _dt = /*#__PURE__*/new WeakMap();\\n var _ut = /*#__PURE__*/new WeakMap();\\n var _pt = /*#__PURE__*/new WeakMap();\\n var _ft = /*#__PURE__*/new WeakMap();\\n var _gt = /*#__PURE__*/new WeakMap();\\n var _mt = /*#__PURE__*/new WeakMap();\\n var _bt = /*#__PURE__*/new WeakMap();\\n var _yt = /*#__PURE__*/new WeakSet();\\n var _vt = /*#__PURE__*/new WeakSet();\\n var _At = /*#__PURE__*/new WeakSet();\\n var _t6 = /*#__PURE__*/new WeakSet();\\n var _xt = /*#__PURE__*/new WeakSet();\\n var _wt = /*#__PURE__*/new WeakSet();\\n var _Tt = /*#__PURE__*/new WeakSet();\\n var _Pt = /*#__PURE__*/new WeakSet();\\n var _St = /*#__PURE__*/new WeakSet();\\n var _Ct = /*#__PURE__*/new WeakSet();\\n var _Et = /*#__PURE__*/new WeakSet();\\n class AnnotationEditorUIManager {\\n static get _keyboardManager() {\\n const t = AnnotationEditorUIManager.prototype,\\n arrowChecker = t => {\\n const {\\n activeElement: e\\n } = document;\\n return e && _classPrivateFieldGet(t, _bt).contains(e) && t.hasSomethingToControl();\\n },\\n e = this.TRANSLATE_SMALL,\\n n = this.TRANSLATE_BIG;\\n return (0, i.shadow)(this, \\"_keyboardManager\\", new KeyboardManager([[[\\"ctrl+a\\", \\"mac+meta+a\\"], t.selectAll], [[\\"ctrl+z\\", \\"mac+meta+z\\"], t.undo], [[\\"ctrl+y\\", \\"ctrl+shift+z\\", \\"mac+meta+shift+z\\", \\"ctrl+shift+Z\\", \\"mac+meta+shift+Z\\"], t.redo], [[\\"Backspace\\", \\"alt+Backspace\\", \\"ctrl+Backspace\\", \\"shift+Backspace\\", \\"mac+Backspace\\", \\"mac+alt+Backspace\\", \\"mac+ctrl+Backspace\\", \\"Delete\\", \\"ctrl+Delete\\", \\"shift+Delete\\", \\"mac+Delete\\"], t.delete], [[\\"Escape\\", \\"mac+Escape\\"], t.unselectAll], [[\\"ArrowLeft\\", \\"mac+ArrowLeft\\"], t.translateSelectedEditors, {\\n args: [-e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowLeft\\", \\"mac+shift+ArrowLeft\\"], t.translateSelectedEditors, {\\n args: [-n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowRight\\", \\"mac+ArrowRight\\"], t.translateSelectedEditors, {\\n args: [e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowRight\\", \\"mac+shift+ArrowRight\\"], t.translateSelectedEditors, {\\n args: [n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowUp\\", \\"mac+ArrowUp\\"], t.translateSelectedEditors, {\\n args: [0, -e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowUp\\", \\"mac+shift+ArrowUp\\"], t.translateSelectedEditors, {\\n args: [0, -n],\\n checker: arrowChecker\\n }], [[\\"ArrowDown\\", \\"mac+ArrowDown\\"], t.translateSelectedEditors, {\\n args: [0, e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowDown\\", \\"mac+shift+ArrowDown\\"], t.translateSelectedEditors, {\\n args: [0, n],\\n checker: arrowChecker\\n }]]));\\n }\\n constructor(_t8, _e6, _n4, _i3) {\\n _classPrivateMethodInitSpec(this, _Et);\\n _classPrivateMethodInitSpec(this, _Ct);\\n _classPrivateMethodInitSpec(this, _St);\\n _classPrivateMethodInitSpec(this, _Pt);\\n _classPrivateMethodInitSpec(this, _Tt);\\n _classPrivateMethodInitSpec(this, _wt);\\n _classPrivateMethodInitSpec(this, _xt);\\n _classPrivateMethodInitSpec(this, _t6);\\n _classPrivateMethodInitSpec(this, _At);\\n _classPrivateMethodInitSpec(this, _vt);\\n _classPrivateMethodInitSpec(this, _yt);\\n _classPrivateFieldInitSpec(this, _W, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _G, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _V, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _$, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _X, {\\n writable: true,\\n value: new CommandManager()\\n });\\n _classPrivateFieldInitSpec(this, _K, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _Y, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _J, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Q, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _Z, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _tt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _et, {\\n writable: true,\\n value: new IdManager()\\n });\\n _classPrivateFieldInitSpec(this, _nt, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _it, {\\n writable: true,\\n value: i.AnnotationEditorType.NONE\\n });\\n _classPrivateFieldInitSpec(this, _rt, {\\n writable: true,\\n value: new Set()\\n });\\n _classPrivateFieldInitSpec(this, _st, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _at, {\\n writable: true,\\n value: this.copy.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ot, {\\n writable: true,\\n value: this.cut.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _lt, {\\n writable: true,\\n value: this.paste.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ct, {\\n writable: true,\\n value: this.keydown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ht, {\\n writable: true,\\n value: this.onEditingAction.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _dt, {\\n writable: true,\\n value: this.onPageChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ut, {\\n writable: true,\\n value: this.onScaleChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _pt, {\\n writable: true,\\n value: this.onRotationChanging.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ft, {\\n writable: true,\\n value: {\\n isEditing: !1,\\n isEmpty: !0,\\n hasSomethingToUndo: !1,\\n hasSomethingToRedo: !1,\\n hasSelectedEditor: !1\\n }\\n });\\n _classPrivateFieldInitSpec(this, _gt, {\\n writable: true,\\n value: [0, 0]\\n });\\n _classPrivateFieldInitSpec(this, _mt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _bt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _bt, _t8);\\n _classPrivateFieldSet(this, _Z, _e6);\\n _classPrivateFieldGet(this, _Z)._on(\\"editingaction\\", _classPrivateFieldGet(this, _ht));\\n _classPrivateFieldGet(this, _Z)._on(\\"pagechanging\\", _classPrivateFieldGet(this, _dt));\\n _classPrivateFieldGet(this, _Z)._on(\\"scalechanging\\", _classPrivateFieldGet(this, _ut));\\n _classPrivateFieldGet(this, _Z)._on(\\"rotationchanging\\", _classPrivateFieldGet(this, _pt));\\n _classPrivateFieldSet(this, _$, _n4.annotationStorage);\\n _classPrivateFieldSet(this, _tt, _n4.filterFactory);\\n _classPrivateFieldSet(this, _st, _i3);\\n this.viewParameters = {\\n realScale: r.PixelsPerInch.PDF_TO_CSS_UNITS,\\n rotation: 0\\n };\\n }\\n destroy() {\\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\\n _classPrivateFieldGet(this, _Z)._off(\\"editingaction\\", _classPrivateFieldGet(this, _ht));\\n _classPrivateFieldGet(this, _Z)._off(\\"pagechanging\\", _classPrivateFieldGet(this, _dt));\\n _classPrivateFieldGet(this, _Z)._off(\\"scalechanging\\", _classPrivateFieldGet(this, _ut));\\n _classPrivateFieldGet(this, _Z)._off(\\"rotationchanging\\", _classPrivateFieldGet(this, _pt));\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.destroy();\\n _classPrivateFieldGet(this, _V).clear();\\n _classPrivateFieldGet(this, _G).clear();\\n _classPrivateFieldGet(this, _Q).clear();\\n _classPrivateFieldSet(this, _W, null);\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateFieldGet(this, _X).destroy();\\n }\\n get hcmFilter() {\\n return (0, i.shadow)(this, \\"hcmFilter\\", _classPrivateFieldGet(this, _st) ? _classPrivateFieldGet(this, _tt).addHCMFilter(_classPrivateFieldGet(this, _st).foreground, _classPrivateFieldGet(this, _st).background) : \\"none\\");\\n }\\n onPageChanging(t) {\\n let {\\n pageNumber: e\\n } = t;\\n _classPrivateFieldSet(this, _K, e - 1);\\n }\\n focusMainContainer() {\\n _classPrivateFieldGet(this, _bt).focus();\\n }\\n addShouldRescale(t) {\\n _classPrivateFieldGet(this, _Q).add(t);\\n }\\n removeShouldRescale(t) {\\n _classPrivateFieldGet(this, _Q).delete(t);\\n }\\n onScaleChanging(t) {\\n let {\\n scale: e\\n } = t;\\n this.commitOrRemove();\\n this.viewParameters.realScale = e * r.PixelsPerInch.PDF_TO_CSS_UNITS;\\n for (const t of _classPrivateFieldGet(this, _Q)) t.onScaleChanging();\\n }\\n onRotationChanging(t) {\\n let {\\n pagesRotation: e\\n } = t;\\n this.commitOrRemove();\\n this.viewParameters.rotation = e;\\n }\\n addToAnnotationStorage(t) {\\n t.isEmpty() || !_classPrivateFieldGet(this, _$) || _classPrivateFieldGet(this, _$).has(t.id) || _classPrivateFieldGet(this, _$).setValue(t.id, t);\\n }\\n copy(t) {\\n t.preventDefault();\\n _classPrivateFieldGet(this, _W) && _classPrivateFieldGet(this, _W).commitOrRemove();\\n if (!this.hasSelection) return;\\n const e = [];\\n for (const t of _classPrivateFieldGet(this, _rt)) {\\n const n = t.serialize(!0);\\n n && e.push(n);\\n }\\n 0 !== e.length && t.clipboardData.setData(\\"application/pdfjs\\", JSON.stringify(e));\\n }\\n cut(t) {\\n this.copy(t);\\n this.delete();\\n }\\n paste(t) {\\n t.preventDefault();\\n let e = t.clipboardData.getData(\\"application/pdfjs\\");\\n if (!e) return;\\n try {\\n e = JSON.parse(e);\\n } catch (t) {\\n (0, i.warn)(\\"paste: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\"));\\n return;\\n }\\n if (!Array.isArray(e)) return;\\n this.unselectAll();\\n const n = this.currentLayer;\\n try {\\n const t = [];\\n for (const i of e) {\\n const e = n.deserialize(i);\\n if (!e) return;\\n t.push(e);\\n }\\n const cmd = () => {\\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\\n _classPrivateMethodGet(this, _Et, _Et2).call(this, t);\\n },\\n undo = () => {\\n for (const e of t) e.remove();\\n };\\n this.addCommands({\\n cmd: cmd,\\n undo: undo,\\n mustExec: !0\\n });\\n } catch (t) {\\n (0, i.warn)(\\"paste: \\\\\\"\\".concat(t.message, \\"\\\\\\".\\"));\\n }\\n }\\n keydown(t) {\\n var _this$getActive;\\n ((_this$getActive = this.getActive()) === null || _this$getActive === void 0 ? void 0 : _this$getActive.shouldGetKeyboardEvents()) || AnnotationEditorUIManager._keyboardManager.exec(this, t);\\n }\\n onEditingAction(t) {\\n [\\"undo\\", \\"redo\\", \\"delete\\", \\"selectAll\\"].includes(t.name) && this[t.name]();\\n }\\n setEditingState(t) {\\n if (t) {\\n _classPrivateMethodGet(this, _yt, _yt2).call(this);\\n _classPrivateMethodGet(this, _At, _At2).call(this);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n isEditing: _classPrivateFieldGet(this, _it) !== i.AnnotationEditorType.NONE,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this),\\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\\n hasSelectedEditor: !1\\n });\\n } else {\\n _classPrivateMethodGet(this, _vt, _vt2).call(this);\\n _classPrivateMethodGet(this, _t6, _t7).call(this);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n isEditing: !1\\n });\\n }\\n }\\n registerEditorTypes(t) {\\n if (!_classPrivateFieldGet(this, _J)) {\\n _classPrivateFieldSet(this, _J, t);\\n for (const t of _classPrivateFieldGet(this, _J)) _classPrivateMethodGet(this, _wt, _wt2).call(this, t.defaultPropertiesToUpdate);\\n }\\n }\\n getId() {\\n return _classPrivateFieldGet(this, _et).getId();\\n }\\n get currentLayer() {\\n return _classPrivateFieldGet(this, _V).get(_classPrivateFieldGet(this, _K));\\n }\\n get currentPageIndex() {\\n return _classPrivateFieldGet(this, _K);\\n }\\n addLayer(t) {\\n _classPrivateFieldGet(this, _V).set(t.pageIndex, t);\\n _classPrivateFieldGet(this, _nt) ? t.enable() : t.disable();\\n }\\n removeLayer(t) {\\n _classPrivateFieldGet(this, _V).delete(t.pageIndex);\\n }\\n updateMode(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n _classPrivateFieldSet(this, _it, t);\\n if (t !== i.AnnotationEditorType.NONE) {\\n this.setEditingState(!0);\\n _classPrivateMethodGet(this, _Tt, _Tt2).call(this);\\n for (const e of _classPrivateFieldGet(this, _V).values()) e.updateMode(t);\\n if (e) for (const t of _classPrivateFieldGet(this, _G).values()) if (t.annotationElementId === e) {\\n this.setSelected(t);\\n t.enterInEditMode();\\n break;\\n }\\n } else {\\n this.setEditingState(!1);\\n _classPrivateMethodGet(this, _Pt, _Pt2).call(this);\\n }\\n }\\n updateToolbar(t) {\\n t !== _classPrivateFieldGet(this, _it) && _classPrivateFieldGet(this, _Z).dispatch(\\"switchannotationeditormode\\", {\\n source: this,\\n mode: t\\n });\\n }\\n updateParams(t, e) {\\n if (_classPrivateFieldGet(this, _J)) {\\n for (const n of _classPrivateFieldGet(this, _rt)) n.updateParams(t, e);\\n for (const n of _classPrivateFieldGet(this, _J)) n.updateDefaultParams(t, e);\\n }\\n }\\n getEditors(t) {\\n const e = [];\\n for (const n of _classPrivateFieldGet(this, _G).values()) n.pageIndex === t && e.push(n);\\n return e;\\n }\\n getEditor(t) {\\n return _classPrivateFieldGet(this, _G).get(t);\\n }\\n addEditor(t) {\\n _classPrivateFieldGet(this, _G).set(t.id, t);\\n }\\n removeEditor(t) {\\n var _classPrivateFieldGet4;\\n _classPrivateFieldGet(this, _G).delete(t.id);\\n this.unselect(t);\\n t.annotationElementId && _classPrivateFieldGet(this, _Y).has(t.annotationElementId) || ((_classPrivateFieldGet4 = _classPrivateFieldGet(this, _$)) === null || _classPrivateFieldGet4 === void 0 ? void 0 : _classPrivateFieldGet4.remove(t.id));\\n }\\n addDeletedAnnotationElement(t) {\\n _classPrivateFieldGet(this, _Y).add(t.annotationElementId);\\n t.deleted = !0;\\n }\\n isDeletedAnnotationElement(t) {\\n return _classPrivateFieldGet(this, _Y).has(t);\\n }\\n removeDeletedAnnotationElement(t) {\\n _classPrivateFieldGet(this, _Y).delete(t.annotationElementId);\\n t.deleted = !1;\\n }\\n setActiveEditor(t) {\\n if (_classPrivateFieldGet(this, _W) !== t) {\\n _classPrivateFieldSet(this, _W, t);\\n t && _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n }\\n }\\n toggleSelected(t) {\\n if (_classPrivateFieldGet(this, _rt).has(t)) {\\n _classPrivateFieldGet(this, _rt).delete(t);\\n t.unselect();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: this.hasSelection\\n });\\n } else {\\n _classPrivateFieldGet(this, _rt).add(t);\\n t.select();\\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n }\\n setSelected(t) {\\n for (const e of _classPrivateFieldGet(this, _rt)) e !== t && e.unselect();\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateFieldGet(this, _rt).add(t);\\n t.select();\\n _classPrivateMethodGet(this, _wt, _wt2).call(this, t.propertiesToUpdate);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n isSelected(t) {\\n return _classPrivateFieldGet(this, _rt).has(t);\\n }\\n unselect(t) {\\n t.unselect();\\n _classPrivateFieldGet(this, _rt).delete(t);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: this.hasSelection\\n });\\n }\\n get hasSelection() {\\n return 0 !== _classPrivateFieldGet(this, _rt).size;\\n }\\n stopUndoAccumulation() {\\n _classPrivateFieldGet(this, _X).stopUndoAccumulation();\\n }\\n undo() {\\n _classPrivateFieldGet(this, _X).undo();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: _classPrivateFieldGet(this, _X).hasSomethingToUndo(),\\n hasSomethingToRedo: !0,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n redo() {\\n _classPrivateFieldGet(this, _X).redo();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: !0,\\n hasSomethingToRedo: _classPrivateFieldGet(this, _X).hasSomethingToRedo(),\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n addCommands(t) {\\n _classPrivateFieldGet(this, _X).add(t);\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSomethingToUndo: !0,\\n hasSomethingToRedo: !1,\\n isEmpty: _classPrivateMethodGet(this, _Ct, _Ct2).call(this)\\n });\\n }\\n delete() {\\n this.commitOrRemove();\\n if (!this.hasSelection) return;\\n const t = [..._classPrivateFieldGet(this, _rt)];\\n this.addCommands({\\n cmd: () => {\\n for (const e of t) e.remove();\\n },\\n undo: () => {\\n for (const e of t) _classPrivateMethodGet(this, _St, _St2).call(this, e);\\n },\\n mustExec: !0\\n });\\n }\\n commitOrRemove() {\\n var _classPrivateFieldGet5;\\n (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _W)) === null || _classPrivateFieldGet5 === void 0 ? void 0 : _classPrivateFieldGet5.commitOrRemove();\\n }\\n hasSomethingToControl() {\\n return _classPrivateFieldGet(this, _W) || this.hasSelection;\\n }\\n selectAll() {\\n for (const t of _classPrivateFieldGet(this, _rt)) t.commit();\\n _classPrivateMethodGet(this, _Et, _Et2).call(this, _classPrivateFieldGet(this, _G).values());\\n }\\n unselectAll() {\\n if (_classPrivateFieldGet(this, _W)) _classPrivateFieldGet(this, _W).commitOrRemove();else if (this.hasSelection) {\\n for (const t of _classPrivateFieldGet(this, _rt)) t.unselect();\\n _classPrivateFieldGet(this, _rt).clear();\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !1\\n });\\n }\\n }\\n translateSelectedEditors(t, e) {\\n arguments.length > 2 && void 0 !== arguments[2] && arguments[2] || this.commitOrRemove();\\n if (!this.hasSelection) return;\\n _classPrivateFieldGet(this, _gt)[0] += t;\\n _classPrivateFieldGet(this, _gt)[1] += e;\\n const [n, i] = _classPrivateFieldGet(this, _gt),\\n r = [..._classPrivateFieldGet(this, _rt)];\\n _classPrivateFieldGet(this, _mt) && clearTimeout(_classPrivateFieldGet(this, _mt));\\n _classPrivateFieldSet(this, _mt, setTimeout(() => {\\n _classPrivateFieldSet(this, _mt, null);\\n _classPrivateFieldGet(this, _gt)[0] = _classPrivateFieldGet(this, _gt)[1] = 0;\\n this.addCommands({\\n cmd: () => {\\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(n, i);\\n },\\n undo: () => {\\n for (const t of r) _classPrivateFieldGet(this, _G).has(t.id) && t.translateInPage(-n, -i);\\n },\\n mustExec: !1\\n });\\n }, 1e3));\\n for (const n of r) n.translateInPage(t, e);\\n }\\n isActive(t) {\\n return _classPrivateFieldGet(this, _W) === t;\\n }\\n getActive() {\\n return _classPrivateFieldGet(this, _W);\\n }\\n getMode() {\\n return _classPrivateFieldGet(this, _it);\\n }\\n get imageManager() {\\n return (0, i.shadow)(this, \\"imageManager\\", new ImageManager());\\n }\\n }\\n function _yt2() {\\n window.addEventListener(\\"keydown\\", _classPrivateFieldGet(this, _ct), {\\n capture: !0\\n });\\n }\\n function _vt2() {\\n window.removeEventListener(\\"keydown\\", _classPrivateFieldGet(this, _ct), {\\n capture: !0\\n });\\n }\\n function _At2() {\\n document.addEventListener(\\"copy\\", _classPrivateFieldGet(this, _at));\\n document.addEventListener(\\"cut\\", _classPrivateFieldGet(this, _ot));\\n document.addEventListener(\\"paste\\", _classPrivateFieldGet(this, _lt));\\n }\\n function _t7() {\\n document.removeEventListener(\\"copy\\", _classPrivateFieldGet(this, _at));\\n document.removeEventListener(\\"cut\\", _classPrivateFieldGet(this, _ot));\\n document.removeEventListener(\\"paste\\", _classPrivateFieldGet(this, _lt));\\n }\\n function _xt2(t) {\\n Object.entries(t).some(t => {\\n let [e, n] = t;\\n return _classPrivateFieldGet(this, _ft)[e] !== n;\\n }) && _classPrivateFieldGet(this, _Z).dispatch(\\"annotationeditorstateschanged\\", {\\n source: this,\\n details: Object.assign(_classPrivateFieldGet(this, _ft), t)\\n });\\n }\\n function _wt2(t) {\\n _classPrivateFieldGet(this, _Z).dispatch(\\"annotationeditorparamschanged\\", {\\n source: this,\\n details: t\\n });\\n }\\n function _Tt2() {\\n if (!_classPrivateFieldGet(this, _nt)) {\\n _classPrivateFieldSet(this, _nt, !0);\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.enable();\\n }\\n }\\n function _Pt2() {\\n this.unselectAll();\\n if (_classPrivateFieldGet(this, _nt)) {\\n _classPrivateFieldSet(this, _nt, !1);\\n for (const t of _classPrivateFieldGet(this, _V).values()) t.disable();\\n }\\n }\\n function _St2(t) {\\n const e = _classPrivateFieldGet(this, _V).get(t.pageIndex);\\n e ? e.addOrRebuild(t) : this.addEditor(t);\\n }\\n function _Ct2() {\\n if (0 === _classPrivateFieldGet(this, _G).size) return !0;\\n if (1 === _classPrivateFieldGet(this, _G).size) for (const t of _classPrivateFieldGet(this, _G).values()) return t.isEmpty();\\n return !1;\\n }\\n function _Et2(t) {\\n _classPrivateFieldGet(this, _rt).clear();\\n for (const e of t) if (!e.isEmpty()) {\\n _classPrivateFieldGet(this, _rt).add(e);\\n e.select();\\n }\\n _classPrivateMethodGet(this, _xt, _xt2).call(this, {\\n hasSelectedEditor: !0\\n });\\n }\\n _defineProperty(AnnotationEditorUIManager, \\"TRANSLATE_SMALL\\", 1);\\n _defineProperty(AnnotationEditorUIManager, \\"TRANSLATE_BIG\\", 10);\\n e.AnnotationEditorUIManager = AnnotationEditorUIManager;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(6),\\n s = n(4),\\n a = n(24),\\n o = n(14),\\n l = n(8),\\n c = n(21),\\n h = n(20),\\n d = n(91),\\n u = n(39),\\n p = n(77),\\n f = n(64),\\n g = n(158),\\n m = n(7),\\n b = n(166),\\n v = n(27),\\n y = s.JSON,\\n A = s.Number,\\n _ = s.SyntaxError,\\n S = y && y.parse,\\n E = a(\\"Object\\", \\"keys\\"),\\n x = Object.getOwnPropertyDescriptor,\\n w = o(\\"\\".charAt),\\n C = o(\\"\\".slice),\\n T = o(/./.exec),\\n P = o([].push),\\n k = /^\\\\d$/,\\n M = /^[1-9]$/,\\n R = /^(-|\\\\d)$/,\\n I = /^[\\\\t\\\\n\\\\r ]$/,\\n internalize = function internalize(t, e, n, i) {\\n var r,\\n s,\\n a,\\n o,\\n c,\\n p = t[e],\\n g = i && p === i.value,\\n m = g && \\"string\\" == typeof i.source ? {\\n source: i.source\\n } : {};\\n if (h(p)) {\\n var b = d(p),\\n v = g ? i.nodes : b ? [] : {};\\n if (b) {\\n r = v.length;\\n a = f(p);\\n for (o = 0; o < a; o++) internalizeProperty(p, o, internalize(p, \\"\\" + o, n, o < r ? v[o] : void 0));\\n } else {\\n s = E(p);\\n a = f(s);\\n for (o = 0; o < a; o++) {\\n c = s[o];\\n internalizeProperty(p, c, internalize(p, c, n, u(v, c) ? v[c] : void 0));\\n }\\n }\\n }\\n return l(n, t, e, p, m);\\n },\\n internalizeProperty = function internalizeProperty(t, e, n) {\\n if (r) {\\n var i = x(t, e);\\n if (i && !i.configurable) return;\\n }\\n void 0 === n ? delete t[e] : g(t, e, n);\\n },\\n Node = function Node(t, e, n, i) {\\n this.value = t;\\n this.end = e;\\n this.source = n;\\n this.nodes = i;\\n },\\n Context = function Context(t, e) {\\n this.source = t;\\n this.index = e;\\n };\\n Context.prototype = {\\n fork: function fork(t) {\\n return new Context(this.source, t);\\n },\\n parse: function parse() {\\n var t = this.source,\\n e = this.skip(I, this.index),\\n n = this.fork(e),\\n i = w(t, e);\\n if (T(R, i)) return n.number();\\n switch (i) {\\n case \\"{\\":\\n return n.object();\\n case \\"[\\":\\n return n.array();\\n case '\\"':\\n return n.string();\\n case \\"t\\":\\n return n.keyword(!0);\\n case \\"f\\":\\n return n.keyword(!1);\\n case \\"n\\":\\n return n.keyword(null);\\n }\\n throw _('Unexpected character: \\"' + i + '\\" at: ' + e);\\n },\\n node: function node(t, e, n, i, r) {\\n return new Node(e, i, t ? null : C(this.source, n, i), r);\\n },\\n object: function object() {\\n for (var t = this.source, e = this.index + 1, n = !1, i = {}, r = {}; e < t.length;) {\\n e = this.until(['\\"', \\"}\\"], e);\\n if (\\"}\\" == w(t, e) && !n) {\\n e++;\\n break;\\n }\\n var s = this.fork(e).string(),\\n a = s.value;\\n e = s.end;\\n e = this.until([\\":\\"], e) + 1;\\n e = this.skip(I, e);\\n s = this.fork(e).parse();\\n g(r, a, s);\\n g(i, a, s.value);\\n e = this.until([\\",\\", \\"}\\"], s.end);\\n var o = w(t, e);\\n if (\\",\\" == o) {\\n n = !0;\\n e++;\\n } else if (\\"}\\" == o) {\\n e++;\\n break;\\n }\\n }\\n return this.node(1, i, this.index, e, r);\\n },\\n array: function array() {\\n for (var t = this.source, e = this.index + 1, n = !1, i = [], r = []; e < t.length;) {\\n e = this.skip(I, e);\\n if (\\"]\\" == w(t, e) && !n) {\\n e++;\\n break;\\n }\\n var s = this.fork(e).parse();\\n P(r, s);\\n P(i, s.value);\\n e = this.until([\\",\\", \\"]\\"], s.end);\\n if (\\",\\" == w(t, e)) {\\n n = !0;\\n e++;\\n } else if (\\"]\\" == w(t, e)) {\\n e++;\\n break;\\n }\\n }\\n return this.node(1, i, this.index, e, r);\\n },\\n string: function string() {\\n var t = this.index,\\n e = b(this.source, this.index + 1);\\n return this.node(0, e.value, t, e.end);\\n },\\n number: function number() {\\n var t = this.source,\\n e = this.index,\\n n = e;\\n \\"-\\" == w(t, n) && n++;\\n if (\\"0\\" == w(t, n)) n++;else {\\n if (!T(M, w(t, n))) throw _(\\"Failed to parse number at: \\" + n);\\n n = this.skip(k, ++n);\\n }\\n \\".\\" == w(t, n) && (n = this.skip(k, ++n));\\n if (\\"e\\" == w(t, n) || \\"E\\" == w(t, n)) {\\n n++;\\n \\"+\\" != w(t, n) && \\"-\\" != w(t, n) || n++;\\n if (n == (n = this.skip(k, n))) throw _(\\"Failed to parse number's exponent value at: \\" + n);\\n }\\n return this.node(0, A(C(t, e, n)), e, n);\\n },\\n keyword: function keyword(t) {\\n var e = \\"\\" + t,\\n n = this.index,\\n i = n + e.length;\\n if (C(this.source, n, i) != e) throw _(\\"Failed to parse value at: \\" + n);\\n return this.node(0, t, n, i);\\n },\\n skip: function skip(t, e) {\\n for (var n = this.source; e < n.length && T(t, w(n, e)); e++);\\n return e;\\n },\\n until: function until(t, e) {\\n e = this.skip(I, e);\\n for (var n = w(this.source, e), i = 0; i < t.length; i++) if (t[i] == n) return e;\\n throw _('Unexpected character: \\"' + n + '\\" at: ' + e);\\n }\\n };\\n var D = m(function () {\\n var t,\\n e = \\"9007199254740993\\";\\n S(e, function (e, n, i) {\\n t = i.source;\\n });\\n return t !== e;\\n }),\\n O = v && !m(function () {\\n return 1 / S(\\"-0 \\\\t\\") != -1 / 0;\\n });\\n i({\\n target: \\"JSON\\",\\n stat: !0,\\n forced: D\\n }, {\\n parse: function parse(t, e) {\\n return O && !c(e) ? S(t) : function (t, e) {\\n t = p(t);\\n var n = new Context(t, 0, \\"\\"),\\n i = n.parse(),\\n r = i.value,\\n s = n.skip(I, i.end);\\n if (s < t.length) throw _('Unexpected extra character: \\"' + w(t, s) + '\\" after the parsed data at: ' + s);\\n return c(e) ? internalize({\\n \\"\\": r\\n }, \\"\\", e, i) : r;\\n }(t, e);\\n }\\n });\\n }, (t, e, n) => {\\n var i = n(14),\\n r = n(39),\\n s = SyntaxError,\\n a = parseInt,\\n o = String.fromCharCode,\\n l = i(\\"\\".charAt),\\n c = i(\\"\\".slice),\\n h = i(/./.exec),\\n d = {\\n '\\\\\\\\\\"': '\\"',\\n \\"\\\\\\\\\\\\\\\\\\": \\"\\\\\\\\\\",\\n \\"\\\\\\\\/\\": \\"/\\",\\n \\"\\\\\\\\b\\": \\"\\\\b\\",\\n \\"\\\\\\\\f\\": \\"\\\\f\\",\\n \\"\\\\\\\\n\\": \\"\\\\n\\",\\n \\"\\\\\\\\r\\": \\"\\\\r\\",\\n \\"\\\\\\\\t\\": \\"\\\\t\\"\\n },\\n u = /^[\\\\da-f]{4}$/i,\\n p = /^[\\\\u0000-\\\\u001F]$/;\\n t.exports = function (t, e) {\\n for (var n = !0, i = \\"\\"; e < t.length;) {\\n var f = l(t, e);\\n if (\\"\\\\\\\\\\" == f) {\\n var g = c(t, e, e + 2);\\n if (r(d, g)) {\\n i += d[g];\\n e += 2;\\n } else {\\n if (\\"\\\\\\\\u\\" != g) throw s('Unknown escape sequence: \\"' + g + '\\"');\\n var m = c(t, e += 2, e + 4);\\n if (!h(u, m)) throw s(\\"Bad Unicode escape at: \\" + e);\\n i += o(a(m, 16));\\n e += 4;\\n }\\n } else {\\n if ('\\"' == f) {\\n n = !1;\\n e++;\\n break;\\n }\\n if (h(p, f)) throw s(\\"Bad control character in string literal at: \\" + e);\\n i += f;\\n e++;\\n }\\n }\\n if (n) throw s(\\"Unterminated string at: \\" + e);\\n return {\\n value: i,\\n end: e\\n };\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class19;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StatTimer = e.RenderingCancelledException = e.PixelsPerInch = e.PageViewport = e.PDFDateString = e.DOMStandardFontDataFactory = e.DOMSVGFactory = e.DOMFilterFactory = e.DOMCanvasFactory = e.DOMCMapReaderFactory = e.AnnotationPrefix = void 0;\\n e.deprecated = function deprecated(t) {\\n console.log(\\"Deprecated API usage: \\" + t);\\n };\\n e.getColorValues = function getColorValues(t) {\\n const e = document.createElement(\\"span\\");\\n e.style.visibility = \\"hidden\\";\\n document.body.append(e);\\n for (const n of t.keys()) {\\n e.style.color = n;\\n const i = window.getComputedStyle(e).color;\\n t.set(n, getRGB(i));\\n }\\n e.remove();\\n };\\n e.getCurrentTransform = function getCurrentTransform(t) {\\n const {\\n a: e,\\n b: n,\\n c: i,\\n d: r,\\n e: s,\\n f: a\\n } = t.getTransform();\\n return [e, n, i, r, s, a];\\n };\\n e.getCurrentTransformInverse = function getCurrentTransformInverse(t) {\\n const {\\n a: e,\\n b: n,\\n c: i,\\n d: r,\\n e: s,\\n f: a\\n } = t.getTransform().invertSelf();\\n return [e, n, i, r, s, a];\\n };\\n e.getFilenameFromUrl = function getFilenameFromUrl(t) {\\n arguments.length > 1 && void 0 !== arguments[1] && arguments[1] || ([t] = t.split(/[#?]/, 1));\\n return t.substring(t.lastIndexOf(\\"/\\") + 1);\\n };\\n e.getPdfFilenameFromUrl = function getPdfFilenameFromUrl(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \\"document.pdf\\";\\n if (\\"string\\" != typeof t) return e;\\n if (isDataScheme(t)) {\\n (0, r.warn)('getPdfFilenameFromUrl: ignore \\"data:\\"-URL for performance reasons.');\\n return e;\\n }\\n const n = /[^/?#=]+\\\\.pdf\\\\b(?!.*\\\\.pdf\\\\b)/i,\\n i = /^(?:(?:[^:]+:)?\\\\/\\\\/[^/]+)?([^?#]*)(\\\\?[^#]*)?(#.*)?$/.exec(t);\\n let s = n.exec(i[1]) || n.exec(i[2]) || n.exec(i[3]);\\n if (s) {\\n s = s[0];\\n if (s.includes(\\"%\\")) try {\\n s = n.exec(decodeURIComponent(s))[0];\\n } catch (_unused9) {}\\n }\\n return s || e;\\n };\\n e.getRGB = getRGB;\\n e.getXfaPageViewport = function getXfaPageViewport(t, e) {\\n let {\\n scale: n = 1,\\n rotation: i = 0\\n } = e;\\n const {\\n width: r,\\n height: s\\n } = t.attributes.style,\\n a = [0, 0, parseInt(r), parseInt(s)];\\n return new PageViewport({\\n viewBox: a,\\n scale: n,\\n rotation: i\\n });\\n };\\n e.isDataScheme = isDataScheme;\\n e.isPdfFile = function isPdfFile(t) {\\n return \\"string\\" == typeof t && /\\\\.pdf$/i.test(t);\\n };\\n e.isValidFetchUrl = isValidFetchUrl;\\n e.loadScript = function loadScript(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\\n return new Promise((n, i) => {\\n const r = document.createElement(\\"script\\");\\n r.src = t;\\n r.onload = function (t) {\\n e && r.remove();\\n n(t);\\n };\\n r.onerror = function () {\\n i(new Error(\\"Cannot load script at: \\".concat(r.src)));\\n };\\n (document.head || document.documentElement).append(r);\\n });\\n };\\n e.setLayerDimensions = function setLayerDimensions(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];\\n if (e instanceof PageViewport) {\\n const {\\n pageWidth: i,\\n pageHeight: r\\n } = e.rawDims,\\n {\\n style: s\\n } = t,\\n a = \\"calc(var(--scale-factor) * \\".concat(i, \\"px)\\"),\\n o = \\"calc(var(--scale-factor) * \\".concat(r, \\"px)\\");\\n if (n && e.rotation % 180 != 0) {\\n s.width = o;\\n s.height = a;\\n } else {\\n s.width = a;\\n s.height = o;\\n }\\n }\\n i && t.setAttribute(\\"data-main-rotation\\", e.rotation);\\n };\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n n(84);\\n n(86);\\n n(87);\\n var i = n(168),\\n r = n(1);\\n const s = \\"http://www.w3.org/2000/svg\\";\\n e.AnnotationPrefix = \\"pdfjs_internal_id_\\";\\n class PixelsPerInch {}\\n _class19 = PixelsPerInch;\\n _defineProperty(PixelsPerInch, \\"CSS\\", 96);\\n _defineProperty(PixelsPerInch, \\"PDF\\", 72);\\n _defineProperty(PixelsPerInch, \\"PDF_TO_CSS_UNITS\\", _class19.CSS / _class19.PDF);\\n e.PixelsPerInch = PixelsPerInch;\\n var _kt = /*#__PURE__*/new WeakMap();\\n var _Mt = /*#__PURE__*/new WeakMap();\\n var _e7 = /*#__PURE__*/new WeakMap();\\n var _Rt = /*#__PURE__*/new WeakMap();\\n var _Ft = /*#__PURE__*/new WeakMap();\\n var _It = /*#__PURE__*/new WeakMap();\\n var _Dt = /*#__PURE__*/new WeakMap();\\n var _Ot = /*#__PURE__*/new WeakMap();\\n var _Lt = /*#__PURE__*/new WeakMap();\\n var _Nt = /*#__PURE__*/new WeakMap();\\n var _O3 = /*#__PURE__*/new WeakMap();\\n var _N2 = /*#__PURE__*/new WeakMap();\\n var _Bt = /*#__PURE__*/new WeakMap();\\n var _Ht = /*#__PURE__*/new WeakSet();\\n var _jt = /*#__PURE__*/new WeakSet();\\n var _qt = /*#__PURE__*/new WeakSet();\\n var _Ut = /*#__PURE__*/new WeakSet();\\n var _zt = /*#__PURE__*/new WeakSet();\\n class DOMFilterFactory extends i.BaseFilterFactory {\\n constructor() {\\n let {\\n docId: _t9,\\n ownerDocument: _e8 = globalThis.document\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n super();\\n _classPrivateMethodInitSpec(this, _zt);\\n _classPrivateMethodInitSpec(this, _Ut);\\n _classPrivateMethodInitSpec(this, _qt);\\n _classPrivateMethodInitSpec(this, _jt);\\n _classPrivateMethodInitSpec(this, _Ht);\\n _classPrivateFieldInitSpec(this, _Bt, {\\n get: _get_Bt,\\n set: void 0\\n });\\n _classPrivateFieldInitSpec(this, _N2, {\\n get: _get_N,\\n set: void 0\\n });\\n _classPrivateFieldInitSpec(this, _kt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Mt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _e7, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Rt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ft, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _It, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Dt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ot, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Lt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Nt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _O3, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldSet(this, _e7, _t9);\\n _classPrivateFieldSet(this, _Rt, _e8);\\n }\\n addFilter(t) {\\n var _this$O5, _this$O6;\\n if (!t) return \\"none\\";\\n let e,\\n n,\\n i,\\n r,\\n s = _classPrivateFieldGet(this, _N2).get(t);\\n if (s) return s;\\n if (1 === t.length) {\\n const s = t[0],\\n a = new Array(256);\\n for (let t = 0; t < 256; t++) a[t] = s[t] / 255;\\n r = e = n = i = a.join(\\",\\");\\n } else {\\n const [s, a, o] = t,\\n l = new Array(256),\\n c = new Array(256),\\n h = new Array(256);\\n for (let t = 0; t < 256; t++) {\\n l[t] = s[t] / 255;\\n c[t] = a[t] / 255;\\n h[t] = o[t] / 255;\\n }\\n e = l.join(\\",\\");\\n n = c.join(\\",\\");\\n i = h.join(\\",\\");\\n r = \\"\\".concat(e).concat(n).concat(i);\\n }\\n s = _classPrivateFieldGet(this, _N2).get(r);\\n if (s) {\\n _classPrivateFieldGet(this, _N2).set(t, s);\\n return s;\\n }\\n const a = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_transfer_map_\\").concat((_classPrivateFieldSet(this, _O3, (_this$O5 = _classPrivateFieldGet(this, _O3), _this$O6 = _this$O5++, _this$O5)), _this$O6)),\\n o = \\"url(#\\".concat(a, \\")\\");\\n _classPrivateFieldGet(this, _N2).set(t, o);\\n _classPrivateFieldGet(this, _N2).set(r, o);\\n const l = _classPrivateMethodGet(this, _jt, _jt2).call(this, a);\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, e, n, i, l);\\n return o;\\n }\\n addHCMFilter(t, e) {\\n var _classPrivateFieldGet6;\\n const n = \\"\\".concat(t, \\"-\\").concat(e);\\n if (_classPrivateFieldGet(this, _It) === n) return _classPrivateFieldGet(this, _Dt);\\n _classPrivateFieldSet(this, _It, n);\\n _classPrivateFieldSet(this, _Dt, \\"none\\");\\n (_classPrivateFieldGet6 = _classPrivateFieldGet(this, _Ft)) === null || _classPrivateFieldGet6 === void 0 ? void 0 : _classPrivateFieldGet6.remove();\\n if (!t || !e) return _classPrivateFieldGet(this, _Dt);\\n const i = _classPrivateMethodGet(this, _zt, _zt2).call(this, t);\\n t = r.Util.makeHexColor(...i);\\n const s = _classPrivateMethodGet(this, _zt, _zt2).call(this, e);\\n e = r.Util.makeHexColor(...s);\\n _classPrivateFieldGet(this, _Bt).style.color = \\"\\";\\n if (\\"#000000\\" === t && \\"#ffffff\\" === e || t === e) return _classPrivateFieldGet(this, _Dt);\\n const a = new Array(256);\\n for (let t = 0; t <= 255; t++) {\\n const e = t / 255;\\n a[t] = e <= .03928 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4;\\n }\\n const o = a.join(\\",\\"),\\n l = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_hcm_filter\\"),\\n c = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, l));\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, o, o, o, c);\\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, c);\\n const getSteps = (t, e) => {\\n const n = i[t] / 255,\\n r = s[t] / 255,\\n a = new Array(e + 1);\\n for (let t = 0; t <= e; t++) a[t] = n + t / e * (r - n);\\n return a.join(\\",\\");\\n };\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), c);\\n _classPrivateFieldSet(this, _Dt, \\"url(#\\".concat(l, \\")\\"));\\n return _classPrivateFieldGet(this, _Dt);\\n }\\n addHighlightHCMFilter(t, e, n, i) {\\n var _classPrivateFieldGet7;\\n const r = \\"\\".concat(t, \\"-\\").concat(e, \\"-\\").concat(n, \\"-\\").concat(i);\\n if (_classPrivateFieldGet(this, _Lt) === r) return _classPrivateFieldGet(this, _Nt);\\n _classPrivateFieldSet(this, _Lt, r);\\n _classPrivateFieldSet(this, _Nt, \\"none\\");\\n (_classPrivateFieldGet7 = _classPrivateFieldGet(this, _Ot)) === null || _classPrivateFieldGet7 === void 0 ? void 0 : _classPrivateFieldGet7.remove();\\n if (!t || !e) return _classPrivateFieldGet(this, _Nt);\\n const [s, a] = [t, e].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\\n let o = Math.round(.2126 * s[0] + .7152 * s[1] + .0722 * s[2]),\\n l = Math.round(.2126 * a[0] + .7152 * a[1] + .0722 * a[2]),\\n [c, h] = [n, i].map(_classPrivateMethodGet(this, _zt, _zt2).bind(this));\\n l < o && ([o, l, c, h] = [l, o, h, c]);\\n _classPrivateFieldGet(this, _Bt).style.color = \\"\\";\\n const getSteps = (t, e, n) => {\\n const i = new Array(256),\\n r = (l - o) / n,\\n s = t / 255,\\n a = (e - t) / (255 * n);\\n let c = 0;\\n for (let t = 0; t <= n; t++) {\\n const e = Math.round(o + t * r),\\n n = s + t * a;\\n for (let t = c; t <= e; t++) i[t] = n;\\n c = e + 1;\\n }\\n for (let t = c; t < 256; t++) i[t] = i[c - 1];\\n return i.join(\\",\\");\\n },\\n d = \\"g_\\".concat(_classPrivateFieldGet(this, _e7), \\"_hcm_highlight_filter\\"),\\n u = _classPrivateFieldSet(this, _Ot, _classPrivateMethodGet(this, _jt, _jt2).call(this, d));\\n _classPrivateMethodGet(this, _Ht, _Ht2).call(this, u);\\n _classPrivateMethodGet(this, _Ut, _Ut2).call(this, getSteps(c[0], h[0], 5), getSteps(c[1], h[1], 5), getSteps(c[2], h[2], 5), u);\\n _classPrivateFieldSet(this, _Nt, \\"url(#\\".concat(d, \\")\\"));\\n return _classPrivateFieldGet(this, _Nt);\\n }\\n destroy() {\\n if (!(arguments.length > 0 && void 0 !== arguments[0] && arguments[0]) || !_classPrivateFieldGet(this, _Dt) && !_classPrivateFieldGet(this, _Nt)) {\\n if (_classPrivateFieldGet(this, _Mt)) {\\n _classPrivateFieldGet(this, _Mt).parentNode.parentNode.remove();\\n _classPrivateFieldSet(this, _Mt, null);\\n }\\n if (_classPrivateFieldGet(this, _kt)) {\\n _classPrivateFieldGet(this, _kt).clear();\\n _classPrivateFieldSet(this, _kt, null);\\n }\\n _classPrivateFieldSet(this, _O3, 0);\\n }\\n }\\n }\\n function _get_N() {\\n return _classPrivateFieldGet(this, _kt) || _classPrivateFieldSet(this, _kt, new Map());\\n }\\n function _get_Bt() {\\n if (!_classPrivateFieldGet(this, _Mt)) {\\n const t = _classPrivateFieldGet(this, _Rt).createElement(\\"div\\"),\\n {\\n style: e\\n } = t;\\n e.visibility = \\"hidden\\";\\n e.contain = \\"strict\\";\\n e.width = e.height = 0;\\n e.position = \\"absolute\\";\\n e.top = e.left = 0;\\n e.zIndex = -1;\\n const n = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"svg\\");\\n n.setAttribute(\\"width\\", 0);\\n n.setAttribute(\\"height\\", 0);\\n _classPrivateFieldSet(this, _Mt, _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"defs\\"));\\n t.append(n);\\n n.append(_classPrivateFieldGet(this, _Mt));\\n _classPrivateFieldGet(this, _Rt).body.append(t);\\n }\\n return _classPrivateFieldGet(this, _Mt);\\n }\\n function _Ht2(t) {\\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"feColorMatrix\\");\\n e.setAttribute(\\"type\\", \\"matrix\\");\\n e.setAttribute(\\"values\\", \\"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\\");\\n t.append(e);\\n }\\n function _jt2(t) {\\n const e = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"filter\\");\\n e.setAttribute(\\"color-interpolation-filters\\", \\"sRGB\\");\\n e.setAttribute(\\"id\\", t);\\n _classPrivateFieldGet(this, _Bt).append(e);\\n return e;\\n }\\n function _qt2(t, e, n) {\\n const i = _classPrivateFieldGet(this, _Rt).createElementNS(s, e);\\n i.setAttribute(\\"type\\", \\"discrete\\");\\n i.setAttribute(\\"tableValues\\", n);\\n t.append(i);\\n }\\n function _Ut2(t, e, n, i) {\\n const r = _classPrivateFieldGet(this, _Rt).createElementNS(s, \\"feComponentTransfer\\");\\n i.append(r);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncR\\", t);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncG\\", e);\\n _classPrivateMethodGet(this, _qt, _qt2).call(this, r, \\"feFuncB\\", n);\\n }\\n function _zt2(t) {\\n _classPrivateFieldGet(this, _Bt).style.color = t;\\n return getRGB(getComputedStyle(_classPrivateFieldGet(this, _Bt)).getPropertyValue(\\"color\\"));\\n }\\n e.DOMFilterFactory = DOMFilterFactory;\\n class DOMCanvasFactory extends i.BaseCanvasFactory {\\n constructor() {\\n let {\\n ownerDocument: t = globalThis.document\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n super();\\n this._document = t;\\n }\\n _createCanvas(t, e) {\\n const n = this._document.createElement(\\"canvas\\");\\n n.width = t;\\n n.height = e;\\n return n;\\n }\\n }\\n e.DOMCanvasFactory = DOMCanvasFactory;\\n async function fetchData(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\\n if (isValidFetchUrl(t, document.baseURI)) {\\n const n = await fetch(t);\\n if (!n.ok) throw new Error(n.statusText);\\n return e ? new Uint8Array(await n.arrayBuffer()) : (0, r.stringToBytes)(await n.text());\\n }\\n return new Promise((n, i) => {\\n const s = new XMLHttpRequest();\\n s.open(\\"GET\\", t, !0);\\n e && (s.responseType = \\"arraybuffer\\");\\n s.onreadystatechange = () => {\\n if (s.readyState === XMLHttpRequest.DONE) {\\n if (200 === s.status || 0 === s.status) {\\n let t;\\n e && s.response ? t = new Uint8Array(s.response) : !e && s.responseText && (t = (0, r.stringToBytes)(s.responseText));\\n if (t) {\\n n(t);\\n return;\\n }\\n }\\n i(new Error(s.statusText));\\n }\\n };\\n s.send(null);\\n });\\n }\\n class DOMCMapReaderFactory extends i.BaseCMapReaderFactory {\\n _fetchData(t, e) {\\n return fetchData(t, this.isCompressed).then(t => ({\\n cMapData: t,\\n compressionType: e\\n }));\\n }\\n }\\n e.DOMCMapReaderFactory = DOMCMapReaderFactory;\\n class DOMStandardFontDataFactory extends i.BaseStandardFontDataFactory {\\n _fetchData(t) {\\n return fetchData(t, !0);\\n }\\n }\\n e.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\\n class DOMSVGFactory extends i.BaseSVGFactory {\\n _createSVG(t) {\\n return document.createElementNS(s, t);\\n }\\n }\\n e.DOMSVGFactory = DOMSVGFactory;\\n class PageViewport {\\n constructor(t) {\\n let {\\n viewBox: e,\\n scale: n,\\n rotation: i,\\n offsetX: r = 0,\\n offsetY: s = 0,\\n dontFlip: a = !1\\n } = t;\\n this.viewBox = e;\\n this.scale = n;\\n this.rotation = i;\\n this.offsetX = r;\\n this.offsetY = s;\\n const o = (e[2] + e[0]) / 2,\\n l = (e[3] + e[1]) / 2;\\n let c, h, d, u, p, f, g, m;\\n i %= 360;\\n i < 0 && (i += 360);\\n switch (i) {\\n case 180:\\n c = -1;\\n h = 0;\\n d = 0;\\n u = 1;\\n break;\\n case 90:\\n c = 0;\\n h = 1;\\n d = 1;\\n u = 0;\\n break;\\n case 270:\\n c = 0;\\n h = -1;\\n d = -1;\\n u = 0;\\n break;\\n case 0:\\n c = 1;\\n h = 0;\\n d = 0;\\n u = -1;\\n break;\\n default:\\n throw new Error(\\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\\");\\n }\\n if (a) {\\n d = -d;\\n u = -u;\\n }\\n if (0 === c) {\\n p = Math.abs(l - e[1]) * n + r;\\n f = Math.abs(o - e[0]) * n + s;\\n g = (e[3] - e[1]) * n;\\n m = (e[2] - e[0]) * n;\\n } else {\\n p = Math.abs(o - e[0]) * n + r;\\n f = Math.abs(l - e[1]) * n + s;\\n g = (e[2] - e[0]) * n;\\n m = (e[3] - e[1]) * n;\\n }\\n this.transform = [c * n, h * n, d * n, u * n, p - c * n * o - d * n * l, f - h * n * o - u * n * l];\\n this.width = g;\\n this.height = m;\\n }\\n get rawDims() {\\n const {\\n viewBox: t\\n } = this;\\n return (0, r.shadow)(this, \\"rawDims\\", {\\n pageWidth: t[2] - t[0],\\n pageHeight: t[3] - t[1],\\n pageX: t[0],\\n pageY: t[1]\\n });\\n }\\n clone() {\\n let {\\n scale: t = this.scale,\\n rotation: e = this.rotation,\\n offsetX: n = this.offsetX,\\n offsetY: i = this.offsetY,\\n dontFlip: r = !1\\n } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\\n return new PageViewport({\\n viewBox: this.viewBox.slice(),\\n scale: t,\\n rotation: e,\\n offsetX: n,\\n offsetY: i,\\n dontFlip: r\\n });\\n }\\n convertToViewportPoint(t, e) {\\n return r.Util.applyTransform([t, e], this.transform);\\n }\\n convertToViewportRectangle(t) {\\n const e = r.Util.applyTransform([t[0], t[1]], this.transform),\\n n = r.Util.applyTransform([t[2], t[3]], this.transform);\\n return [e[0], e[1], n[0], n[1]];\\n }\\n convertToPdfPoint(t, e) {\\n return r.Util.applyInverseTransform([t, e], this.transform);\\n }\\n }\\n e.PageViewport = PageViewport;\\n class RenderingCancelledException extends r.BaseException {\\n constructor(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\\n super(t, \\"RenderingCancelledException\\");\\n this.extraDelay = e;\\n }\\n }\\n e.RenderingCancelledException = RenderingCancelledException;\\n function isDataScheme(t) {\\n const e = t.length;\\n let n = 0;\\n for (; n < e && \\"\\" === t[n].trim();) n++;\\n return \\"data:\\" === t.substring(n, n + 5).toLowerCase();\\n }\\n e.StatTimer = class StatTimer {\\n constructor() {\\n _defineProperty(this, \\"started\\", Object.create(null));\\n _defineProperty(this, \\"times\\", []);\\n }\\n time(t) {\\n t in this.started && (0, r.warn)(\\"Timer is already running for \\".concat(t));\\n this.started[t] = Date.now();\\n }\\n timeEnd(t) {\\n t in this.started || (0, r.warn)(\\"Timer has not been started for \\".concat(t));\\n this.times.push({\\n name: t,\\n start: this.started[t],\\n end: Date.now()\\n });\\n delete this.started[t];\\n }\\n toString() {\\n const t = [];\\n let e = 0;\\n for (const {\\n name: t\\n } of this.times) e = Math.max(t.length, e);\\n for (const {\\n name: n,\\n start: i,\\n end: r\\n } of this.times) t.push(\\"\\".concat(n.padEnd(e), \\" \\").concat(r - i, \\"ms\\\\n\\"));\\n return t.join(\\"\\");\\n }\\n };\\n function isValidFetchUrl(t, e) {\\n try {\\n const {\\n protocol: n\\n } = e ? new URL(t, e) : new URL(t);\\n return \\"http:\\" === n || \\"https:\\" === n;\\n } catch (_unused10) {\\n return !1;\\n }\\n }\\n let a;\\n e.PDFDateString = class PDFDateString {\\n static toDateObject(t) {\\n if (!t || \\"string\\" != typeof t) return null;\\n a || (a = new RegExp(\\"^D:(\\\\\\\\d{4})(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?(\\\\\\\\d{2})?([Z|+|-])?(\\\\\\\\d{2})?'?(\\\\\\\\d{2})?'?\\"));\\n const e = a.exec(t);\\n if (!e) return null;\\n const n = parseInt(e[1], 10);\\n let i = parseInt(e[2], 10);\\n i = i >= 1 && i <= 12 ? i - 1 : 0;\\n let r = parseInt(e[3], 10);\\n r = r >= 1 && r <= 31 ? r : 1;\\n let s = parseInt(e[4], 10);\\n s = s >= 0 && s <= 23 ? s : 0;\\n let o = parseInt(e[5], 10);\\n o = o >= 0 && o <= 59 ? o : 0;\\n let l = parseInt(e[6], 10);\\n l = l >= 0 && l <= 59 ? l : 0;\\n const c = e[7] || \\"Z\\";\\n let h = parseInt(e[8], 10);\\n h = h >= 0 && h <= 23 ? h : 0;\\n let d = parseInt(e[9], 10) || 0;\\n d = d >= 0 && d <= 59 ? d : 0;\\n if (\\"-\\" === c) {\\n s += h;\\n o += d;\\n } else if (\\"+\\" === c) {\\n s -= h;\\n o -= d;\\n }\\n return new Date(Date.UTC(n, i, r, s, o, l));\\n }\\n };\\n function getRGB(t) {\\n if (t.startsWith(\\"#\\")) {\\n const e = parseInt(t.slice(1), 16);\\n return [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e];\\n }\\n if (t.startsWith(\\"rgb(\\")) return t.slice(4, -1).split(\\",\\").map(t => parseInt(t));\\n if (t.startsWith(\\"rgba(\\")) return t.slice(5, -1).split(\\",\\").map(t => parseInt(t)).slice(0, 3);\\n (0, r.warn)(\\"Not a valid color format: \\\\\\"\\".concat(t, \\"\\\\\\"\\"));\\n return [0, 0, 0];\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.BaseStandardFontDataFactory = e.BaseSVGFactory = e.BaseFilterFactory = e.BaseCanvasFactory = e.BaseCMapReaderFactory = void 0;\\n n(2);\\n var i = n(1);\\n class BaseFilterFactory {\\n constructor() {\\n this.constructor === BaseFilterFactory && (0, i.unreachable)(\\"Cannot initialize BaseFilterFactory.\\");\\n }\\n addFilter(t) {\\n return \\"none\\";\\n }\\n addHCMFilter(t, e) {\\n return \\"none\\";\\n }\\n addHighlightHCMFilter(t, e, n, i) {\\n return \\"none\\";\\n }\\n destroy() {}\\n }\\n e.BaseFilterFactory = BaseFilterFactory;\\n class BaseCanvasFactory {\\n constructor() {\\n this.constructor === BaseCanvasFactory && (0, i.unreachable)(\\"Cannot initialize BaseCanvasFactory.\\");\\n }\\n create(t, e) {\\n if (t <= 0 || e <= 0) throw new Error(\\"Invalid canvas size\\");\\n const n = this._createCanvas(t, e);\\n return {\\n canvas: n,\\n context: n.getContext(\\"2d\\")\\n };\\n }\\n reset(t, e, n) {\\n if (!t.canvas) throw new Error(\\"Canvas is not specified\\");\\n if (e <= 0 || n <= 0) throw new Error(\\"Invalid canvas size\\");\\n t.canvas.width = e;\\n t.canvas.height = n;\\n }\\n destroy(t) {\\n if (!t.canvas) throw new Error(\\"Canvas is not specified\\");\\n t.canvas.width = 0;\\n t.canvas.height = 0;\\n t.canvas = null;\\n t.context = null;\\n }\\n _createCanvas(t, e) {\\n (0, i.unreachable)(\\"Abstract method \`_createCanvas\` called.\\");\\n }\\n }\\n e.BaseCanvasFactory = BaseCanvasFactory;\\n class BaseCMapReaderFactory {\\n constructor(t) {\\n let {\\n baseUrl: e = null,\\n isCompressed: n = !0\\n } = t;\\n this.constructor === BaseCMapReaderFactory && (0, i.unreachable)(\\"Cannot initialize BaseCMapReaderFactory.\\");\\n this.baseUrl = e;\\n this.isCompressed = n;\\n }\\n async fetch(t) {\\n let {\\n name: e\\n } = t;\\n if (!this.baseUrl) throw new Error('The CMap \\"baseUrl\\" parameter must be specified, ensure that the \\"cMapUrl\\" and \\"cMapPacked\\" API parameters are provided.');\\n if (!e) throw new Error(\\"CMap name must be specified.\\");\\n const n = this.baseUrl + e + (this.isCompressed ? \\".bcmap\\" : \\"\\"),\\n r = this.isCompressed ? i.CMapCompressionType.BINARY : i.CMapCompressionType.NONE;\\n return this._fetchData(n, r).catch(t => {\\n throw new Error(\\"Unable to load \\".concat(this.isCompressed ? \\"binary \\" : \\"\\", \\"CMap at: \\").concat(n));\\n });\\n }\\n _fetchData(t, e) {\\n (0, i.unreachable)(\\"Abstract method \`_fetchData\` called.\\");\\n }\\n }\\n e.BaseCMapReaderFactory = BaseCMapReaderFactory;\\n class BaseStandardFontDataFactory {\\n constructor(t) {\\n let {\\n baseUrl: e = null\\n } = t;\\n this.constructor === BaseStandardFontDataFactory && (0, i.unreachable)(\\"Cannot initialize BaseStandardFontDataFactory.\\");\\n this.baseUrl = e;\\n }\\n async fetch(t) {\\n let {\\n filename: e\\n } = t;\\n if (!this.baseUrl) throw new Error('The standard font \\"baseUrl\\" parameter must be specified, ensure that the \\"standardFontDataUrl\\" API parameter is provided.');\\n if (!e) throw new Error(\\"Font filename must be specified.\\");\\n const n = \\"\\".concat(this.baseUrl).concat(e);\\n return this._fetchData(n).catch(t => {\\n throw new Error(\\"Unable to load font data at: \\".concat(n));\\n });\\n }\\n _fetchData(t) {\\n (0, i.unreachable)(\\"Abstract method \`_fetchData\` called.\\");\\n }\\n }\\n e.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\\n class BaseSVGFactory {\\n constructor() {\\n this.constructor === BaseSVGFactory && (0, i.unreachable)(\\"Cannot initialize BaseSVGFactory.\\");\\n }\\n create(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n if (t <= 0 || e <= 0) throw new Error(\\"Invalid SVG dimensions\\");\\n const i = this._createSVG(\\"svg:svg\\");\\n i.setAttribute(\\"version\\", \\"1.1\\");\\n if (!n) {\\n i.setAttribute(\\"width\\", \\"\\".concat(t, \\"px\\"));\\n i.setAttribute(\\"height\\", \\"\\".concat(e, \\"px\\"));\\n }\\n i.setAttribute(\\"preserveAspectRatio\\", \\"none\\");\\n i.setAttribute(\\"viewBox\\", \\"0 0 \\".concat(t, \\" \\").concat(e));\\n return i;\\n }\\n createElement(t) {\\n if (\\"string\\" != typeof t) throw new Error(\\"Invalid SVG element type\\");\\n return this._createSVG(t);\\n }\\n _createSVG(t) {\\n (0, i.unreachable)(\\"Abstract method \`_createSVG\` called.\\");\\n }\\n }\\n e.BaseSVGFactory = BaseSVGFactory;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.MurmurHash3_64 = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(2);\\n var i = n(1);\\n const r = 3285377520,\\n s = 4294901760,\\n a = 65535;\\n e.MurmurHash3_64 = class MurmurHash3_64 {\\n constructor(t) {\\n this.h1 = t ? 4294967295 & t : r;\\n this.h2 = t ? 4294967295 & t : r;\\n }\\n update(t) {\\n let e, n;\\n if (\\"string\\" == typeof t) {\\n e = new Uint8Array(2 * t.length);\\n n = 0;\\n for (let i = 0, r = t.length; i < r; i++) {\\n const r = t.charCodeAt(i);\\n if (r <= 255) e[n++] = r;else {\\n e[n++] = r >>> 8;\\n e[n++] = 255 & r;\\n }\\n }\\n } else {\\n if (!(0, i.isArrayBuffer)(t)) throw new Error(\\"Wrong data format in MurmurHash3_64_update. Input must be a string or array.\\");\\n e = t.slice();\\n n = e.byteLength;\\n }\\n const r = n >> 2,\\n o = n - 4 * r,\\n l = new Uint32Array(e.buffer, 0, r);\\n let c = 0,\\n h = 0,\\n d = this.h1,\\n u = this.h2;\\n const p = 3432918353,\\n f = 461845907,\\n g = 11601,\\n m = 13715;\\n for (let t = 0; t < r; t++) if (1 & t) {\\n c = l[t];\\n c = c * p & s | c * g & a;\\n c = c << 15 | c >>> 17;\\n c = c * f & s | c * m & a;\\n d ^= c;\\n d = d << 13 | d >>> 19;\\n d = 5 * d + 3864292196;\\n } else {\\n h = l[t];\\n h = h * p & s | h * g & a;\\n h = h << 15 | h >>> 17;\\n h = h * f & s | h * m & a;\\n u ^= h;\\n u = u << 13 | u >>> 19;\\n u = 5 * u + 3864292196;\\n }\\n c = 0;\\n switch (o) {\\n case 3:\\n c ^= e[4 * r + 2] << 16;\\n case 2:\\n c ^= e[4 * r + 1] << 8;\\n case 1:\\n c ^= e[4 * r];\\n c = c * p & s | c * g & a;\\n c = c << 15 | c >>> 17;\\n c = c * f & s | c * m & a;\\n 1 & r ? d ^= c : u ^= c;\\n }\\n this.h1 = d;\\n this.h2 = u;\\n }\\n hexdigest() {\\n let t = this.h1,\\n e = this.h2;\\n t ^= e >>> 1;\\n t = 3981806797 * t & s | 36045 * t & a;\\n e = 4283543511 * e & s | (2950163797 * (e << 16 | t >>> 16) & s) >>> 16;\\n t ^= e >>> 1;\\n t = 444984403 * t & s | 60499 * t & a;\\n e = 3301882366 * e & s | (3120437893 * (e << 16 | t >>> 16) & s) >>> 16;\\n t ^= e >>> 1;\\n return (t >>> 0).toString(16).padStart(8, \\"0\\") + (e >>> 0).toString(16).padStart(8, \\"0\\");\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Wt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.FontLoader = e.FontFaceObject = void 0;\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n n(89);\\n n(148);\\n var i = n(1);\\n e.FontLoader = (_Wt = /*#__PURE__*/new WeakMap(), class FontLoader {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _Wt, {\\n writable: true,\\n value: new Set()\\n });\\n let {\\n ownerDocument: e = globalThis.document,\\n styleElement: n = null\\n } = t;\\n this._document = e;\\n this.nativeFontFaces = new Set();\\n this.styleElement = null;\\n this.loadingRequests = [];\\n this.loadTestFontId = 0;\\n }\\n addNativeFontFace(t) {\\n this.nativeFontFaces.add(t);\\n this._document.fonts.add(t);\\n }\\n removeNativeFontFace(t) {\\n this.nativeFontFaces.delete(t);\\n this._document.fonts.delete(t);\\n }\\n insertRule(t) {\\n if (!this.styleElement) {\\n this.styleElement = this._document.createElement(\\"style\\");\\n this._document.documentElement.getElementsByTagName(\\"head\\")[0].append(this.styleElement);\\n }\\n const e = this.styleElement.sheet;\\n e.insertRule(t, e.cssRules.length);\\n }\\n clear() {\\n for (const t of this.nativeFontFaces) this._document.fonts.delete(t);\\n this.nativeFontFaces.clear();\\n _classPrivateFieldGet(this, _Wt).clear();\\n if (this.styleElement) {\\n this.styleElement.remove();\\n this.styleElement = null;\\n }\\n }\\n async loadSystemFont(t) {\\n if (t && !_classPrivateFieldGet(this, _Wt).has(t.loadedName)) {\\n (0, i.assert)(!this.disableFontFace, \\"loadSystemFont shouldn't be called when \`disableFontFace\` is set.\\");\\n if (this.isFontLoadingAPISupported) {\\n const {\\n loadedName: e,\\n src: n,\\n style: r\\n } = t,\\n s = new FontFace(e, n, r);\\n this.addNativeFontFace(s);\\n try {\\n await s.load();\\n _classPrivateFieldGet(this, _Wt).add(e);\\n } catch (_unused11) {\\n (0, i.warn)(\\"Cannot load system font: \\".concat(t.baseFontName, \\", installing it could help to improve PDF rendering.\\"));\\n this.removeNativeFontFace(s);\\n }\\n } else (0, i.unreachable)(\\"Not implemented: loadSystemFont without the Font Loading API.\\");\\n }\\n }\\n async bind(t) {\\n if (t.attached || t.missingFile && !t.systemFontInfo) return;\\n t.attached = !0;\\n if (t.systemFontInfo) {\\n await this.loadSystemFont(t.systemFontInfo);\\n return;\\n }\\n if (this.isFontLoadingAPISupported) {\\n const e = t.createNativeFontFace();\\n if (e) {\\n this.addNativeFontFace(e);\\n try {\\n await e.loaded;\\n } catch (n) {\\n (0, i.warn)(\\"Failed to load font '\\".concat(e.family, \\"': '\\").concat(n, \\"'.\\"));\\n t.disableFontFace = !0;\\n throw n;\\n }\\n }\\n return;\\n }\\n const e = t.createFontFaceRule();\\n if (e) {\\n this.insertRule(e);\\n if (this.isSyncFontLoadingSupported) return;\\n await new Promise(e => {\\n const n = this._queueLoadingCallback(e);\\n this._prepareFontLoadEvent(t, n);\\n });\\n }\\n }\\n get isFontLoadingAPISupported() {\\n var _this$_document;\\n const t = !!((_this$_document = this._document) !== null && _this$_document !== void 0 && _this$_document.fonts);\\n return (0, i.shadow)(this, \\"isFontLoadingAPISupported\\", t);\\n }\\n get isSyncFontLoadingSupported() {\\n let t = !1;\\n (i.isNodeJS || \\"undefined\\" != typeof navigator && /Mozilla\\\\/5.0.*?rv:\\\\d+.*? Gecko/.test(navigator.userAgent)) && (t = !0);\\n return (0, i.shadow)(this, \\"isSyncFontLoadingSupported\\", t);\\n }\\n _queueLoadingCallback(t) {\\n const {\\n loadingRequests: e\\n } = this,\\n n = {\\n done: !1,\\n complete: function completeRequest() {\\n (0, i.assert)(!n.done, \\"completeRequest() cannot be called twice.\\");\\n n.done = !0;\\n for (; e.length > 0 && e[0].done;) {\\n const t = e.shift();\\n setTimeout(t.callback, 0);\\n }\\n },\\n callback: t\\n };\\n e.push(n);\\n return n;\\n }\\n get _loadTestFont() {\\n const t = atob(\\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\\");\\n return (0, i.shadow)(this, \\"_loadTestFont\\", t);\\n }\\n _prepareFontLoadEvent(t, e) {\\n function int32(t, e) {\\n return t.charCodeAt(e) << 24 | t.charCodeAt(e + 1) << 16 | t.charCodeAt(e + 2) << 8 | 255 & t.charCodeAt(e + 3);\\n }\\n function spliceString(t, e, n, i) {\\n return t.substring(0, e) + i + t.substring(e + n);\\n }\\n let n, r;\\n const s = this._document.createElement(\\"canvas\\");\\n s.width = 1;\\n s.height = 1;\\n const a = s.getContext(\\"2d\\");\\n let o = 0;\\n const l = \\"lt\\".concat(Date.now()).concat(this.loadTestFontId++);\\n let c = this._loadTestFont;\\n c = spliceString(c, 976, l.length, l);\\n const h = 1482184792;\\n let d = int32(c, 16);\\n for (n = 0, r = l.length - 3; n < r; n += 4) d = d - h + int32(l, n) | 0;\\n n < l.length && (d = d - h + int32(l + \\"XXX\\", n) | 0);\\n c = spliceString(c, 16, 4, (0, i.string32)(d));\\n const u = \\"@font-face {font-family:\\\\\\"\\".concat(l, \\"\\\\\\";src:\\", \\"url(data:font/opentype;base64,\\".concat(btoa(c), \\");\\"), \\"}\\");\\n this.insertRule(u);\\n const p = this._document.createElement(\\"div\\");\\n p.style.visibility = \\"hidden\\";\\n p.style.width = p.style.height = \\"10px\\";\\n p.style.position = \\"absolute\\";\\n p.style.top = p.style.left = \\"0px\\";\\n for (const e of [t.loadedName, l]) {\\n const t = this._document.createElement(\\"span\\");\\n t.textContent = \\"Hi\\";\\n t.style.fontFamily = e;\\n p.append(t);\\n }\\n this._document.body.append(p);\\n !function isFontReady(t, e) {\\n if (++o > 30) {\\n (0, i.warn)(\\"Load test font never loaded.\\");\\n e();\\n return;\\n }\\n a.font = \\"30px \\" + t;\\n a.fillText(\\".\\", 0, 20);\\n a.getImageData(0, 0, 1, 1).data[3] > 0 ? e() : setTimeout(isFontReady.bind(null, t, e));\\n }(l, () => {\\n p.remove();\\n e.complete();\\n });\\n }\\n });\\n e.FontFaceObject = class FontFaceObject {\\n constructor(t, e) {\\n let {\\n isEvalSupported: n = !0,\\n disableFontFace: i = !1,\\n ignoreErrors: r = !1,\\n inspectFont: s = null\\n } = e;\\n this.compiledGlyphs = Object.create(null);\\n for (const e in t) this[e] = t[e];\\n this.isEvalSupported = !1 !== n;\\n this.disableFontFace = !0 === i;\\n this.ignoreErrors = !0 === r;\\n this._inspectFont = s;\\n }\\n createNativeFontFace() {\\n var _this$_inspectFont;\\n if (!this.data || this.disableFontFace) return null;\\n let t;\\n if (this.cssFontInfo) {\\n const e = {\\n weight: this.cssFontInfo.fontWeight\\n };\\n this.cssFontInfo.italicAngle && (e.style = \\"oblique \\".concat(this.cssFontInfo.italicAngle, \\"deg\\"));\\n t = new FontFace(this.cssFontInfo.fontFamily, this.data, e);\\n } else t = new FontFace(this.loadedName, this.data, {});\\n (_this$_inspectFont = this._inspectFont) === null || _this$_inspectFont === void 0 ? void 0 : _this$_inspectFont.call(this, this);\\n return t;\\n }\\n createFontFaceRule() {\\n var _this$_inspectFont2;\\n if (!this.data || this.disableFontFace) return null;\\n const t = (0, i.bytesToString)(this.data),\\n e = \\"url(data:\\".concat(this.mimetype, \\";base64,\\").concat(btoa(t), \\");\\");\\n let n;\\n if (this.cssFontInfo) {\\n let t = \\"font-weight: \\".concat(this.cssFontInfo.fontWeight, \\";\\");\\n this.cssFontInfo.italicAngle && (t += \\"font-style: oblique \\".concat(this.cssFontInfo.italicAngle, \\"deg;\\"));\\n n = \\"@font-face {font-family:\\\\\\"\\".concat(this.cssFontInfo.fontFamily, \\"\\\\\\";\\").concat(t, \\"src:\\").concat(e, \\"}\\");\\n } else n = \\"@font-face {font-family:\\\\\\"\\".concat(this.loadedName, \\"\\\\\\";src:\\").concat(e, \\"}\\");\\n (_this$_inspectFont2 = this._inspectFont) === null || _this$_inspectFont2 === void 0 ? void 0 : _this$_inspectFont2.call(this, this, e);\\n return n;\\n }\\n getPathGenerator(t, e) {\\n if (void 0 !== this.compiledGlyphs[e]) return this.compiledGlyphs[e];\\n let n;\\n try {\\n n = t.get(this.loadedName + \\"_path_\\" + e);\\n } catch (t) {\\n if (!this.ignoreErrors) throw t;\\n (0, i.warn)(\\"getPathGenerator - ignoring character: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n return this.compiledGlyphs[e] = function (t, e) {};\\n }\\n if (this.isEvalSupported && i.FeatureTest.isEvalSupported) {\\n const t = [];\\n for (const e of n) {\\n const n = void 0 !== e.args ? e.args.join(\\",\\") : \\"\\";\\n t.push(\\"c.\\", e.cmd, \\"(\\", n, \\");\\\\n\\");\\n }\\n return this.compiledGlyphs[e] = new Function(\\"c\\", \\"size\\", t.join(\\"\\"));\\n }\\n return this.compiledGlyphs[e] = function (t, e) {\\n for (const i of n) {\\n \\"scale\\" === i.cmd && (i.args = [e, -e]);\\n t[i.cmd].apply(t, i.args);\\n }\\n };\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.NodeStandardFontDataFactory = e.NodeFilterFactory = e.NodeCanvasFactory = e.NodeCMapReaderFactory = void 0;\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(168),\\n r = n(1);\\n !function checkDOMMatrix() {\\n if (!globalThis.DOMMatrix && r.isNodeJS) try {\\n globalThis.DOMMatrix = Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }());\\n } catch (t) {\\n (0, r.warn)(\\"Cannot polyfill \`DOMMatrix\`, rendering may be broken: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }();\\n !function checkPath2D() {\\n if (!globalThis.Path2D && r.isNodeJS) try {\\n const {\\n CanvasRenderingContext2D: t\\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\\n {\\n polyfillPath2D: e\\n } = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'path2d-polyfill'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n globalThis.CanvasRenderingContext2D = t;\\n e(globalThis);\\n } catch (t) {\\n (0, r.warn)(\\"Cannot polyfill \`Path2D\`, rendering may be broken: \\\\\\"\\".concat(t, \\"\\\\\\".\\"));\\n }\\n }();\\n const fetchData = function fetchData(t) {\\n return new Promise((e, n) => {\\n Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, (t, i) => {\\n !t && i ? e(new Uint8Array(i)) : n(new Error(t));\\n });\\n });\\n };\\n class NodeFilterFactory extends i.BaseFilterFactory {}\\n e.NodeFilterFactory = NodeFilterFactory;\\n class NodeCanvasFactory extends i.BaseCanvasFactory {\\n _createCanvas(t, e) {\\n return Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'canvas'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(t, e);\\n }\\n }\\n e.NodeCanvasFactory = NodeCanvasFactory;\\n class NodeCMapReaderFactory extends i.BaseCMapReaderFactory {\\n _fetchData(t, e) {\\n return fetchData(t).then(t => ({\\n cMapData: t,\\n compressionType: e\\n }));\\n }\\n }\\n e.NodeCMapReaderFactory = NodeCMapReaderFactory;\\n class NodeStandardFontDataFactory extends i.BaseStandardFontDataFactory {\\n _fetchData(t) {\\n return fetchData(t);\\n }\\n }\\n e.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.CanvasGraphics = void 0;\\n n(2);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(167),\\n s = n(173),\\n a = n(174);\\n const o = 4096,\\n l = 16;\\n class CachedCanvases {\\n constructor(t) {\\n this.canvasFactory = t;\\n this.cache = Object.create(null);\\n }\\n getCanvas(t, e, n) {\\n let i;\\n if (void 0 !== this.cache[t]) {\\n i = this.cache[t];\\n this.canvasFactory.reset(i, e, n);\\n } else {\\n i = this.canvasFactory.create(e, n);\\n this.cache[t] = i;\\n }\\n return i;\\n }\\n delete(t) {\\n delete this.cache[t];\\n }\\n clear() {\\n for (const t in this.cache) {\\n const e = this.cache[t];\\n this.canvasFactory.destroy(e);\\n delete this.cache[t];\\n }\\n }\\n }\\n function drawImageAtIntegerCoords(t, e, n, i, s, a, o, l, c, h) {\\n const [d, u, p, f, g, m] = (0, r.getCurrentTransform)(t);\\n if (0 === u && 0 === p) {\\n const r = o * d + g,\\n b = Math.round(r),\\n v = l * f + m,\\n y = Math.round(v),\\n A = (o + c) * d + g,\\n _ = Math.abs(Math.round(A) - b) || 1,\\n S = (l + h) * f + m,\\n E = Math.abs(Math.round(S) - y) || 1;\\n t.setTransform(Math.sign(d), 0, 0, Math.sign(f), b, y);\\n t.drawImage(e, n, i, s, a, 0, 0, _, E);\\n t.setTransform(d, u, p, f, g, m);\\n return [_, E];\\n }\\n if (0 === d && 0 === f) {\\n const r = l * p + g,\\n b = Math.round(r),\\n v = o * u + m,\\n y = Math.round(v),\\n A = (l + h) * p + g,\\n _ = Math.abs(Math.round(A) - b) || 1,\\n S = (o + c) * u + m,\\n E = Math.abs(Math.round(S) - y) || 1;\\n t.setTransform(0, Math.sign(u), Math.sign(p), 0, b, y);\\n t.drawImage(e, n, i, s, a, 0, 0, E, _);\\n t.setTransform(d, u, p, f, g, m);\\n return [E, _];\\n }\\n t.drawImage(e, n, i, s, a, o, l, c, h);\\n return [Math.hypot(d, u) * c, Math.hypot(p, f) * h];\\n }\\n class CanvasExtraState {\\n constructor(t, e) {\\n this.alphaIsShape = !1;\\n this.fontSize = 0;\\n this.fontSizeScale = 1;\\n this.textMatrix = i.IDENTITY_MATRIX;\\n this.textMatrixScale = 1;\\n this.fontMatrix = i.FONT_IDENTITY_MATRIX;\\n this.leading = 0;\\n this.x = 0;\\n this.y = 0;\\n this.lineX = 0;\\n this.lineY = 0;\\n this.charSpacing = 0;\\n this.wordSpacing = 0;\\n this.textHScale = 1;\\n this.textRenderingMode = i.TextRenderingMode.FILL;\\n this.textRise = 0;\\n this.fillColor = \\"#000000\\";\\n this.strokeColor = \\"#000000\\";\\n this.patternFill = !1;\\n this.fillAlpha = 1;\\n this.strokeAlpha = 1;\\n this.lineWidth = 1;\\n this.activeSMask = null;\\n this.transferMaps = \\"none\\";\\n this.startNewPathAndClipBox([0, 0, t, e]);\\n }\\n clone() {\\n const t = Object.create(this);\\n t.clipBox = this.clipBox.slice();\\n return t;\\n }\\n setCurrentPoint(t, e) {\\n this.x = t;\\n this.y = e;\\n }\\n updatePathMinMax(t, e, n) {\\n [e, n] = i.Util.applyTransform([e, n], t);\\n this.minX = Math.min(this.minX, e);\\n this.minY = Math.min(this.minY, n);\\n this.maxX = Math.max(this.maxX, e);\\n this.maxY = Math.max(this.maxY, n);\\n }\\n updateRectMinMax(t, e) {\\n const n = i.Util.applyTransform(e, t),\\n r = i.Util.applyTransform(e.slice(2), t);\\n this.minX = Math.min(this.minX, n[0], r[0]);\\n this.minY = Math.min(this.minY, n[1], r[1]);\\n this.maxX = Math.max(this.maxX, n[0], r[0]);\\n this.maxY = Math.max(this.maxY, n[1], r[1]);\\n }\\n updateScalingPathMinMax(t, e) {\\n i.Util.scaleMinMax(t, e);\\n this.minX = Math.min(this.minX, e[0]);\\n this.maxX = Math.max(this.maxX, e[1]);\\n this.minY = Math.min(this.minY, e[2]);\\n this.maxY = Math.max(this.maxY, e[3]);\\n }\\n updateCurvePathMinMax(t, e, n, r, s, a, o, l, c, h) {\\n const d = i.Util.bezierBoundingBox(e, n, r, s, a, o, l, c);\\n if (h) {\\n h[0] = Math.min(h[0], d[0], d[2]);\\n h[1] = Math.max(h[1], d[0], d[2]);\\n h[2] = Math.min(h[2], d[1], d[3]);\\n h[3] = Math.max(h[3], d[1], d[3]);\\n } else this.updateRectMinMax(t, d);\\n }\\n getPathBoundingBox() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = [this.minX, this.minY, this.maxX, this.maxY];\\n if (t === s.PathType.STROKE) {\\n e || (0, i.unreachable)(\\"Stroke bounding box must include transform.\\");\\n const t = i.Util.singularValueDecompose2dScale(e),\\n r = t[0] * this.lineWidth / 2,\\n s = t[1] * this.lineWidth / 2;\\n n[0] -= r;\\n n[1] -= s;\\n n[2] += r;\\n n[3] += s;\\n }\\n return n;\\n }\\n updateClipFromPath() {\\n const t = i.Util.intersect(this.clipBox, this.getPathBoundingBox());\\n this.startNewPathAndClipBox(t || [0, 0, 0, 0]);\\n }\\n isEmptyClip() {\\n return this.minX === 1 / 0;\\n }\\n startNewPathAndClipBox(t) {\\n this.clipBox = t;\\n this.minX = 1 / 0;\\n this.minY = 1 / 0;\\n this.maxX = 0;\\n this.maxY = 0;\\n }\\n getClippedPathBoundingBox() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.PathType.FILL,\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return i.Util.intersect(this.clipBox, this.getPathBoundingBox(t, e));\\n }\\n }\\n function putBinaryImageData(t, e) {\\n if (\\"undefined\\" != typeof ImageData && e instanceof ImageData) {\\n t.putImageData(e, 0, 0);\\n return;\\n }\\n const n = e.height,\\n r = e.width,\\n s = n % l,\\n a = (n - s) / l,\\n o = 0 === s ? a : a + 1,\\n c = t.createImageData(r, l);\\n let h,\\n d = 0;\\n const u = e.data,\\n p = c.data;\\n let f, g, m, b;\\n if (e.kind === i.ImageKind.GRAYSCALE_1BPP) {\\n const e = u.byteLength,\\n n = new Uint32Array(p.buffer, 0, p.byteLength >> 2),\\n b = n.length,\\n v = r + 7 >> 3,\\n y = 4294967295,\\n A = i.FeatureTest.isLittleEndian ? 4278190080 : 255;\\n for (f = 0; f < o; f++) {\\n m = f < a ? l : s;\\n h = 0;\\n for (g = 0; g < m; g++) {\\n const t = e - d;\\n let i = 0;\\n const s = t > v ? r : 8 * t - 7,\\n a = -8 & s;\\n let o = 0,\\n l = 0;\\n for (; i < a; i += 8) {\\n l = u[d++];\\n n[h++] = 128 & l ? y : A;\\n n[h++] = 64 & l ? y : A;\\n n[h++] = 32 & l ? y : A;\\n n[h++] = 16 & l ? y : A;\\n n[h++] = 8 & l ? y : A;\\n n[h++] = 4 & l ? y : A;\\n n[h++] = 2 & l ? y : A;\\n n[h++] = 1 & l ? y : A;\\n }\\n for (; i < s; i++) {\\n if (0 === o) {\\n l = u[d++];\\n o = 128;\\n }\\n n[h++] = l & o ? y : A;\\n o >>= 1;\\n }\\n }\\n for (; h < b;) n[h++] = 0;\\n t.putImageData(c, 0, f * l);\\n }\\n } else if (e.kind === i.ImageKind.RGBA_32BPP) {\\n g = 0;\\n b = r * l * 4;\\n for (f = 0; f < a; f++) {\\n p.set(u.subarray(d, d + b));\\n d += b;\\n t.putImageData(c, 0, g);\\n g += l;\\n }\\n if (f < o) {\\n b = r * s * 4;\\n p.set(u.subarray(d, d + b));\\n t.putImageData(c, 0, g);\\n }\\n } else {\\n if (e.kind !== i.ImageKind.RGB_24BPP) throw new Error(\\"bad image kind: \\".concat(e.kind));\\n m = l;\\n b = r * m;\\n for (f = 0; f < o; f++) {\\n if (f >= a) {\\n m = s;\\n b = r * m;\\n }\\n h = 0;\\n for (g = b; g--;) {\\n p[h++] = u[d++];\\n p[h++] = u[d++];\\n p[h++] = u[d++];\\n p[h++] = 255;\\n }\\n t.putImageData(c, 0, f * l);\\n }\\n }\\n }\\n function putBinaryImageMask(t, e) {\\n if (e.bitmap) {\\n t.drawImage(e.bitmap, 0, 0);\\n return;\\n }\\n const n = e.height,\\n i = e.width,\\n r = n % l,\\n s = (n - r) / l,\\n o = 0 === r ? s : s + 1,\\n c = t.createImageData(i, l);\\n let h = 0;\\n const d = e.data,\\n u = c.data;\\n for (let e = 0; e < o; e++) {\\n const n = e < s ? l : r;\\n ({\\n srcPos: h\\n } = (0, a.convertBlackAndWhiteToRGBA)({\\n src: d,\\n srcPos: h,\\n dest: u,\\n width: i,\\n height: n,\\n nonBlackColor: 0\\n }));\\n t.putImageData(c, 0, e * l);\\n }\\n }\\n function copyCtxState(t, e) {\\n const n = [\\"strokeStyle\\", \\"fillStyle\\", \\"fillRule\\", \\"globalAlpha\\", \\"lineWidth\\", \\"lineCap\\", \\"lineJoin\\", \\"miterLimit\\", \\"globalCompositeOperation\\", \\"font\\", \\"filter\\"];\\n for (const i of n) void 0 !== t[i] && (e[i] = t[i]);\\n if (void 0 !== t.setLineDash) {\\n e.setLineDash(t.getLineDash());\\n e.lineDashOffset = t.lineDashOffset;\\n }\\n }\\n function resetCtxToDefault(t) {\\n t.strokeStyle = t.fillStyle = \\"#000000\\";\\n t.fillRule = \\"nonzero\\";\\n t.globalAlpha = 1;\\n t.lineWidth = 1;\\n t.lineCap = \\"butt\\";\\n t.lineJoin = \\"miter\\";\\n t.miterLimit = 10;\\n t.globalCompositeOperation = \\"source-over\\";\\n t.font = \\"10px sans-serif\\";\\n if (void 0 !== t.setLineDash) {\\n t.setLineDash([]);\\n t.lineDashOffset = 0;\\n }\\n if (!i.isNodeJS) {\\n const {\\n filter: e\\n } = t;\\n \\"none\\" !== e && \\"\\" !== e && (t.filter = \\"none\\");\\n }\\n }\\n function composeSMaskBackdrop(t, e, n, i) {\\n const r = t.length;\\n for (let s = 3; s < r; s += 4) {\\n const r = t[s];\\n if (0 === r) {\\n t[s - 3] = e;\\n t[s - 2] = n;\\n t[s - 1] = i;\\n } else if (r < 255) {\\n const a = 255 - r;\\n t[s - 3] = t[s - 3] * r + e * a >> 8;\\n t[s - 2] = t[s - 2] * r + n * a >> 8;\\n t[s - 1] = t[s - 1] * r + i * a >> 8;\\n }\\n }\\n }\\n function composeSMaskAlpha(t, e, n) {\\n const i = t.length;\\n for (let r = 3; r < i; r += 4) {\\n const i = n ? n[t[r]] : t[r];\\n e[r] = e[r] * i * .00392156862745098 | 0;\\n }\\n }\\n function composeSMaskLuminosity(t, e, n) {\\n const i = t.length;\\n for (let r = 3; r < i; r += 4) {\\n const i = 77 * t[r - 3] + 152 * t[r - 2] + 28 * t[r - 1];\\n e[r] = n ? e[r] * n[i >> 8] >> 8 : e[r] * i >> 16;\\n }\\n }\\n function composeSMask(t, e, n, i) {\\n const r = i[0],\\n s = i[1],\\n a = i[2] - r,\\n o = i[3] - s;\\n if (0 !== a && 0 !== o) {\\n !function genericComposeSMask(t, e, n, i, r, s, a, o, l, c, h) {\\n const d = !!s,\\n u = d ? s[0] : 0,\\n p = d ? s[1] : 0,\\n f = d ? s[2] : 0,\\n g = \\"Luminosity\\" === r ? composeSMaskLuminosity : composeSMaskAlpha,\\n m = Math.min(i, Math.ceil(1048576 / n));\\n for (let r = 0; r < i; r += m) {\\n const s = Math.min(m, i - r),\\n b = t.getImageData(o - c, r + (l - h), n, s),\\n v = e.getImageData(o, r + l, n, s);\\n d && composeSMaskBackdrop(b.data, u, p, f);\\n g(b.data, v.data, a);\\n e.putImageData(v, o, r + l);\\n }\\n }(e.context, n, a, o, e.subtype, e.backdrop, e.transferMap, r, s, e.offsetX, e.offsetY);\\n t.save();\\n t.globalAlpha = 1;\\n t.globalCompositeOperation = \\"source-over\\";\\n t.setTransform(1, 0, 0, 1, 0, 0);\\n t.drawImage(n.canvas, 0, 0);\\n t.restore();\\n }\\n }\\n function getImageSmoothingEnabled(t, e) {\\n const n = i.Util.singularValueDecompose2dScale(t);\\n n[0] = Math.fround(n[0]);\\n n[1] = Math.fround(n[1]);\\n const s = Math.fround((globalThis.devicePixelRatio || 1) * r.PixelsPerInch.PDF_TO_CSS_UNITS);\\n return void 0 !== e ? e : n[0] <= s || n[1] <= s;\\n }\\n const c = [\\"butt\\", \\"round\\", \\"square\\"],\\n h = [\\"miter\\", \\"round\\", \\"bevel\\"],\\n d = {},\\n u = {};\\n var _Gt = /*#__PURE__*/new WeakSet();\\n var _Vt = /*#__PURE__*/new WeakSet();\\n class CanvasGraphics {\\n constructor(_t10, _e9, n, i, r, s, a, o) {\\n _classPrivateMethodInitSpec(this, _Vt);\\n _classPrivateMethodInitSpec(this, _Gt);\\n let {\\n optionalContentConfig: l,\\n markedContentStack: c = null\\n } = s;\\n this.ctx = _t10;\\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\\n this.stateStack = [];\\n this.pendingClip = null;\\n this.pendingEOFill = !1;\\n this.res = null;\\n this.xobjs = null;\\n this.commonObjs = _e9;\\n this.objs = n;\\n this.canvasFactory = i;\\n this.filterFactory = r;\\n this.groupStack = [];\\n this.processingType3 = null;\\n this.baseTransform = null;\\n this.baseTransformStack = [];\\n this.groupLevel = 0;\\n this.smaskStack = [];\\n this.smaskCounter = 0;\\n this.tempSMask = null;\\n this.suspendedCtx = null;\\n this.contentVisible = !0;\\n this.markedContentStack = c || [];\\n this.optionalContentConfig = l;\\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\\n this.cachedPatterns = new Map();\\n this.annotationCanvasMap = a;\\n this.viewportScale = 1;\\n this.outputScaleX = 1;\\n this.outputScaleY = 1;\\n this.pageColors = o;\\n this._cachedScaleForStroking = [-1, 0];\\n this._cachedGetSinglePixelWidth = null;\\n this._cachedBitmapsMap = new Map();\\n }\\n getObject(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return \\"string\\" == typeof t ? t.startsWith(\\"g_\\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\\n }\\n beginDrawing(t) {\\n let {\\n transform: e,\\n viewport: n,\\n transparency: i = !1,\\n background: s = null\\n } = t;\\n const a = this.ctx.canvas.width,\\n o = this.ctx.canvas.height,\\n l = this.ctx.fillStyle;\\n this.ctx.fillStyle = s || \\"#ffffff\\";\\n this.ctx.fillRect(0, 0, a, o);\\n this.ctx.fillStyle = l;\\n if (i) {\\n const t = this.cachedCanvases.getCanvas(\\"transparent\\", a, o);\\n this.compositeCtx = this.ctx;\\n this.transparentCanvas = t.canvas;\\n this.ctx = t.context;\\n this.ctx.save();\\n this.ctx.transform(...(0, r.getCurrentTransform)(this.compositeCtx));\\n }\\n this.ctx.save();\\n resetCtxToDefault(this.ctx);\\n if (e) {\\n this.ctx.transform(...e);\\n this.outputScaleX = e[0];\\n this.outputScaleY = e[0];\\n }\\n this.ctx.transform(...n.transform);\\n this.viewportScale = n.scale;\\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\\n }\\n executeOperatorList(t, e, n, r) {\\n const s = t.argsArray,\\n a = t.fnArray;\\n let o = e || 0;\\n const l = s.length;\\n if (l === o) return o;\\n const c = l - o > 10 && \\"function\\" == typeof n,\\n h = c ? Date.now() + 15 : 0;\\n let d = 0;\\n const u = this.commonObjs,\\n p = this.objs;\\n let f;\\n for (;;) {\\n if (void 0 !== r && o === r.nextBreakPoint) {\\n r.breakIt(o, n);\\n return o;\\n }\\n f = a[o];\\n if (f !== i.OPS.dependency) this[f].apply(this, s[o]);else for (const t of s[o]) {\\n const e = t.startsWith(\\"g_\\") ? u : p;\\n if (!e.has(t)) {\\n e.get(t, n);\\n return o;\\n }\\n }\\n o++;\\n if (o === l) return o;\\n if (c && ++d > 10) {\\n if (Date.now() > h) {\\n n();\\n return o;\\n }\\n d = 0;\\n }\\n }\\n }\\n endDrawing() {\\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\\n this.cachedCanvases.clear();\\n this.cachedPatterns.clear();\\n for (const t of this._cachedBitmapsMap.values()) {\\n for (const e of t.values()) \\"undefined\\" != typeof HTMLCanvasElement && e instanceof HTMLCanvasElement && (e.width = e.height = 0);\\n t.clear();\\n }\\n this._cachedBitmapsMap.clear();\\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\\n }\\n _scaleImage(t, e) {\\n const n = t.width,\\n i = t.height;\\n let r,\\n s,\\n a = Math.max(Math.hypot(e[0], e[1]), 1),\\n o = Math.max(Math.hypot(e[2], e[3]), 1),\\n l = n,\\n c = i,\\n h = \\"prescale1\\";\\n for (; a > 2 && l > 1 || o > 2 && c > 1;) {\\n let e = l,\\n n = c;\\n if (a > 2 && l > 1) {\\n e = l >= 16384 ? Math.floor(l / 2) - 1 || 1 : Math.ceil(l / 2);\\n a /= l / e;\\n }\\n if (o > 2 && c > 1) {\\n n = c >= 16384 ? Math.floor(c / 2) - 1 || 1 : Math.ceil(c) / 2;\\n o /= c / n;\\n }\\n r = this.cachedCanvases.getCanvas(h, e, n);\\n s = r.context;\\n s.clearRect(0, 0, e, n);\\n s.drawImage(t, 0, 0, l, c, 0, 0, e, n);\\n t = r.canvas;\\n l = e;\\n c = n;\\n h = \\"prescale1\\" === h ? \\"prescale2\\" : \\"prescale1\\";\\n }\\n return {\\n img: t,\\n paintWidth: l,\\n paintHeight: c\\n };\\n }\\n _createMaskCanvas(t) {\\n const e = this.ctx,\\n {\\n width: n,\\n height: a\\n } = t,\\n o = this.current.fillColor,\\n l = this.current.patternFill,\\n c = (0, r.getCurrentTransform)(e);\\n let h, d, u, p;\\n if ((t.bitmap || t.data) && t.count > 1) {\\n const e = t.bitmap || t.data.buffer;\\n d = JSON.stringify(l ? c : [c.slice(0, 4), o]);\\n h = this._cachedBitmapsMap.get(e);\\n if (!h) {\\n h = new Map();\\n this._cachedBitmapsMap.set(e, h);\\n }\\n const n = h.get(d);\\n if (n && !l) {\\n return {\\n canvas: n,\\n offsetX: Math.round(Math.min(c[0], c[2]) + c[4]),\\n offsetY: Math.round(Math.min(c[1], c[3]) + c[5])\\n };\\n }\\n u = n;\\n }\\n if (!u) {\\n p = this.cachedCanvases.getCanvas(\\"maskCanvas\\", n, a);\\n putBinaryImageMask(p.context, t);\\n }\\n let f = i.Util.transform(c, [1 / n, 0, 0, -1 / a, 0, 0]);\\n f = i.Util.transform(f, [1, 0, 0, 1, 0, -a]);\\n const g = i.Util.applyTransform([0, 0], f),\\n m = i.Util.applyTransform([n, a], f),\\n b = i.Util.normalizeRect([g[0], g[1], m[0], m[1]]),\\n v = Math.round(b[2] - b[0]) || 1,\\n y = Math.round(b[3] - b[1]) || 1,\\n A = this.cachedCanvases.getCanvas(\\"fillCanvas\\", v, y),\\n _ = A.context,\\n S = Math.min(g[0], m[0]),\\n E = Math.min(g[1], m[1]);\\n _.translate(-S, -E);\\n _.transform(...f);\\n if (!u) {\\n u = this._scaleImage(p.canvas, (0, r.getCurrentTransformInverse)(_));\\n u = u.img;\\n h && l && h.set(d, u);\\n }\\n _.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(_), t.interpolate);\\n drawImageAtIntegerCoords(_, u, 0, 0, u.width, u.height, 0, 0, n, a);\\n _.globalCompositeOperation = \\"source-in\\";\\n const x = i.Util.transform((0, r.getCurrentTransformInverse)(_), [1, 0, 0, 1, -S, -E]);\\n _.fillStyle = l ? o.getPattern(e, this, x, s.PathType.FILL) : o;\\n _.fillRect(0, 0, n, a);\\n if (h && !l) {\\n this.cachedCanvases.delete(\\"fillCanvas\\");\\n h.set(d, A.canvas);\\n }\\n return {\\n canvas: A.canvas,\\n offsetX: Math.round(S),\\n offsetY: Math.round(E)\\n };\\n }\\n setLineWidth(t) {\\n t !== this.current.lineWidth && (this._cachedScaleForStroking[0] = -1);\\n this.current.lineWidth = t;\\n this.ctx.lineWidth = t;\\n }\\n setLineCap(t) {\\n this.ctx.lineCap = c[t];\\n }\\n setLineJoin(t) {\\n this.ctx.lineJoin = h[t];\\n }\\n setMiterLimit(t) {\\n this.ctx.miterLimit = t;\\n }\\n setDash(t, e) {\\n const n = this.ctx;\\n if (void 0 !== n.setLineDash) {\\n n.setLineDash(t);\\n n.lineDashOffset = e;\\n }\\n }\\n setRenderingIntent(t) {}\\n setFlatness(t) {}\\n setGState(t) {\\n for (const [e, n] of t) switch (e) {\\n case \\"LW\\":\\n this.setLineWidth(n);\\n break;\\n case \\"LC\\":\\n this.setLineCap(n);\\n break;\\n case \\"LJ\\":\\n this.setLineJoin(n);\\n break;\\n case \\"ML\\":\\n this.setMiterLimit(n);\\n break;\\n case \\"D\\":\\n this.setDash(n[0], n[1]);\\n break;\\n case \\"RI\\":\\n this.setRenderingIntent(n);\\n break;\\n case \\"FL\\":\\n this.setFlatness(n);\\n break;\\n case \\"Font\\":\\n this.setFont(n[0], n[1]);\\n break;\\n case \\"CA\\":\\n this.current.strokeAlpha = n;\\n break;\\n case \\"ca\\":\\n this.current.fillAlpha = n;\\n this.ctx.globalAlpha = n;\\n break;\\n case \\"BM\\":\\n this.ctx.globalCompositeOperation = n;\\n break;\\n case \\"SMask\\":\\n this.current.activeSMask = n ? this.tempSMask : null;\\n this.tempSMask = null;\\n this.checkSMaskState();\\n break;\\n case \\"TR\\":\\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(n);\\n }\\n }\\n get inSMaskMode() {\\n return !!this.suspendedCtx;\\n }\\n checkSMaskState() {\\n const t = this.inSMaskMode;\\n this.current.activeSMask && !t ? this.beginSMaskMode() : !this.current.activeSMask && t && this.endSMaskMode();\\n }\\n beginSMaskMode() {\\n if (this.inSMaskMode) throw new Error(\\"beginSMaskMode called while already in smask mode\\");\\n const t = this.ctx.canvas.width,\\n e = this.ctx.canvas.height,\\n n = \\"smaskGroupAt\\" + this.groupLevel,\\n i = this.cachedCanvases.getCanvas(n, t, e);\\n this.suspendedCtx = this.ctx;\\n this.ctx = i.context;\\n const s = this.ctx;\\n s.setTransform(...(0, r.getCurrentTransform)(this.suspendedCtx));\\n copyCtxState(this.suspendedCtx, s);\\n !function mirrorContextOperations(t, e) {\\n if (t._removeMirroring) throw new Error(\\"Context is already forwarding operations.\\");\\n t.__originalSave = t.save;\\n t.__originalRestore = t.restore;\\n t.__originalRotate = t.rotate;\\n t.__originalScale = t.scale;\\n t.__originalTranslate = t.translate;\\n t.__originalTransform = t.transform;\\n t.__originalSetTransform = t.setTransform;\\n t.__originalResetTransform = t.resetTransform;\\n t.__originalClip = t.clip;\\n t.__originalMoveTo = t.moveTo;\\n t.__originalLineTo = t.lineTo;\\n t.__originalBezierCurveTo = t.bezierCurveTo;\\n t.__originalRect = t.rect;\\n t.__originalClosePath = t.closePath;\\n t.__originalBeginPath = t.beginPath;\\n t._removeMirroring = () => {\\n t.save = t.__originalSave;\\n t.restore = t.__originalRestore;\\n t.rotate = t.__originalRotate;\\n t.scale = t.__originalScale;\\n t.translate = t.__originalTranslate;\\n t.transform = t.__originalTransform;\\n t.setTransform = t.__originalSetTransform;\\n t.resetTransform = t.__originalResetTransform;\\n t.clip = t.__originalClip;\\n t.moveTo = t.__originalMoveTo;\\n t.lineTo = t.__originalLineTo;\\n t.bezierCurveTo = t.__originalBezierCurveTo;\\n t.rect = t.__originalRect;\\n t.closePath = t.__originalClosePath;\\n t.beginPath = t.__originalBeginPath;\\n delete t._removeMirroring;\\n };\\n t.save = function ctxSave() {\\n e.save();\\n this.__originalSave();\\n };\\n t.restore = function ctxRestore() {\\n e.restore();\\n this.__originalRestore();\\n };\\n t.translate = function ctxTranslate(t, n) {\\n e.translate(t, n);\\n this.__originalTranslate(t, n);\\n };\\n t.scale = function ctxScale(t, n) {\\n e.scale(t, n);\\n this.__originalScale(t, n);\\n };\\n t.transform = function ctxTransform(t, n, i, r, s, a) {\\n e.transform(t, n, i, r, s, a);\\n this.__originalTransform(t, n, i, r, s, a);\\n };\\n t.setTransform = function ctxSetTransform(t, n, i, r, s, a) {\\n e.setTransform(t, n, i, r, s, a);\\n this.__originalSetTransform(t, n, i, r, s, a);\\n };\\n t.resetTransform = function ctxResetTransform() {\\n e.resetTransform();\\n this.__originalResetTransform();\\n };\\n t.rotate = function ctxRotate(t) {\\n e.rotate(t);\\n this.__originalRotate(t);\\n };\\n t.clip = function ctxRotate(t) {\\n e.clip(t);\\n this.__originalClip(t);\\n };\\n t.moveTo = function (t, n) {\\n e.moveTo(t, n);\\n this.__originalMoveTo(t, n);\\n };\\n t.lineTo = function (t, n) {\\n e.lineTo(t, n);\\n this.__originalLineTo(t, n);\\n };\\n t.bezierCurveTo = function (t, n, i, r, s, a) {\\n e.bezierCurveTo(t, n, i, r, s, a);\\n this.__originalBezierCurveTo(t, n, i, r, s, a);\\n };\\n t.rect = function (t, n, i, r) {\\n e.rect(t, n, i, r);\\n this.__originalRect(t, n, i, r);\\n };\\n t.closePath = function () {\\n e.closePath();\\n this.__originalClosePath();\\n };\\n t.beginPath = function () {\\n e.beginPath();\\n this.__originalBeginPath();\\n };\\n }(s, this.suspendedCtx);\\n this.setGState([[\\"BM\\", \\"source-over\\"], [\\"ca\\", 1], [\\"CA\\", 1]]);\\n }\\n endSMaskMode() {\\n if (!this.inSMaskMode) throw new Error(\\"endSMaskMode called while not in smask mode\\");\\n this.ctx._removeMirroring();\\n copyCtxState(this.ctx, this.suspendedCtx);\\n this.ctx = this.suspendedCtx;\\n this.suspendedCtx = null;\\n }\\n compose(t) {\\n if (!this.current.activeSMask) return;\\n if (t) {\\n t[0] = Math.floor(t[0]);\\n t[1] = Math.floor(t[1]);\\n t[2] = Math.ceil(t[2]);\\n t[3] = Math.ceil(t[3]);\\n } else t = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\\n const e = this.current.activeSMask;\\n composeSMask(this.suspendedCtx, e, this.ctx, t);\\n this.ctx.save();\\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\\n this.ctx.restore();\\n }\\n save() {\\n if (this.inSMaskMode) {\\n copyCtxState(this.ctx, this.suspendedCtx);\\n this.suspendedCtx.save();\\n } else this.ctx.save();\\n const t = this.current;\\n this.stateStack.push(t);\\n this.current = t.clone();\\n }\\n restore() {\\n 0 === this.stateStack.length && this.inSMaskMode && this.endSMaskMode();\\n if (0 !== this.stateStack.length) {\\n this.current = this.stateStack.pop();\\n if (this.inSMaskMode) {\\n this.suspendedCtx.restore();\\n copyCtxState(this.suspendedCtx, this.ctx);\\n } else this.ctx.restore();\\n this.checkSMaskState();\\n this.pendingClip = null;\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n }\\n }\\n transform(t, e, n, i, r, s) {\\n this.ctx.transform(t, e, n, i, r, s);\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n }\\n constructPath(t, e, n) {\\n const s = this.ctx,\\n a = this.current;\\n let o,\\n l,\\n c = a.x,\\n h = a.y;\\n const d = (0, r.getCurrentTransform)(s),\\n u = 0 === d[0] && 0 === d[3] || 0 === d[1] && 0 === d[2],\\n p = u ? n.slice(0) : null;\\n for (let n = 0, r = 0, f = t.length; n < f; n++) switch (0 | t[n]) {\\n case i.OPS.rectangle:\\n c = e[r++];\\n h = e[r++];\\n const t = e[r++],\\n n = e[r++],\\n f = c + t,\\n g = h + n;\\n s.moveTo(c, h);\\n if (0 === t || 0 === n) s.lineTo(f, g);else {\\n s.lineTo(f, h);\\n s.lineTo(f, g);\\n s.lineTo(c, g);\\n }\\n u || a.updateRectMinMax(d, [c, h, f, g]);\\n s.closePath();\\n break;\\n case i.OPS.moveTo:\\n c = e[r++];\\n h = e[r++];\\n s.moveTo(c, h);\\n u || a.updatePathMinMax(d, c, h);\\n break;\\n case i.OPS.lineTo:\\n c = e[r++];\\n h = e[r++];\\n s.lineTo(c, h);\\n u || a.updatePathMinMax(d, c, h);\\n break;\\n case i.OPS.curveTo:\\n o = c;\\n l = h;\\n c = e[r + 4];\\n h = e[r + 5];\\n s.bezierCurveTo(e[r], e[r + 1], e[r + 2], e[r + 3], c, h);\\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], e[r + 2], e[r + 3], c, h, p);\\n r += 6;\\n break;\\n case i.OPS.curveTo2:\\n o = c;\\n l = h;\\n s.bezierCurveTo(c, h, e[r], e[r + 1], e[r + 2], e[r + 3]);\\n a.updateCurvePathMinMax(d, o, l, c, h, e[r], e[r + 1], e[r + 2], e[r + 3], p);\\n c = e[r + 2];\\n h = e[r + 3];\\n r += 4;\\n break;\\n case i.OPS.curveTo3:\\n o = c;\\n l = h;\\n c = e[r + 2];\\n h = e[r + 3];\\n s.bezierCurveTo(e[r], e[r + 1], c, h, c, h);\\n a.updateCurvePathMinMax(d, o, l, e[r], e[r + 1], c, h, c, h, p);\\n r += 4;\\n break;\\n case i.OPS.closePath:\\n s.closePath();\\n }\\n u && a.updateScalingPathMinMax(d, p);\\n a.setCurrentPoint(c, h);\\n }\\n closePath() {\\n this.ctx.closePath();\\n }\\n stroke() {\\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\\n const e = this.ctx,\\n n = this.current.strokeColor;\\n e.globalAlpha = this.current.strokeAlpha;\\n if (this.contentVisible) if (\\"object\\" == typeof n && n !== null && n !== void 0 && n.getPattern) {\\n e.save();\\n e.strokeStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.STROKE);\\n this.rescaleAndStroke(!1);\\n e.restore();\\n } else this.rescaleAndStroke(!0);\\n t && this.consumePath(this.current.getClippedPathBoundingBox());\\n e.globalAlpha = this.current.fillAlpha;\\n }\\n closeStroke() {\\n this.closePath();\\n this.stroke();\\n }\\n fill() {\\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\\n const e = this.ctx,\\n n = this.current.fillColor;\\n let i = !1;\\n if (this.current.patternFill) {\\n e.save();\\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL);\\n i = !0;\\n }\\n const a = this.current.getClippedPathBoundingBox();\\n if (this.contentVisible && null !== a) if (this.pendingEOFill) {\\n e.fill(\\"evenodd\\");\\n this.pendingEOFill = !1;\\n } else e.fill();\\n i && e.restore();\\n t && this.consumePath(a);\\n }\\n eoFill() {\\n this.pendingEOFill = !0;\\n this.fill();\\n }\\n fillStroke() {\\n this.fill(!1);\\n this.stroke(!1);\\n this.consumePath();\\n }\\n eoFillStroke() {\\n this.pendingEOFill = !0;\\n this.fillStroke();\\n }\\n closeFillStroke() {\\n this.closePath();\\n this.fillStroke();\\n }\\n closeEOFillStroke() {\\n this.pendingEOFill = !0;\\n this.closePath();\\n this.fillStroke();\\n }\\n endPath() {\\n this.consumePath();\\n }\\n clip() {\\n this.pendingClip = d;\\n }\\n eoClip() {\\n this.pendingClip = u;\\n }\\n beginText() {\\n this.current.textMatrix = i.IDENTITY_MATRIX;\\n this.current.textMatrixScale = 1;\\n this.current.x = this.current.lineX = 0;\\n this.current.y = this.current.lineY = 0;\\n }\\n endText() {\\n const t = this.pendingTextPaths,\\n e = this.ctx;\\n if (void 0 !== t) {\\n e.save();\\n e.beginPath();\\n for (const n of t) {\\n e.setTransform(...n.transform);\\n e.translate(n.x, n.y);\\n n.addToPath(e, n.fontSize);\\n }\\n e.restore();\\n e.clip();\\n e.beginPath();\\n delete this.pendingTextPaths;\\n } else e.beginPath();\\n }\\n setCharSpacing(t) {\\n this.current.charSpacing = t;\\n }\\n setWordSpacing(t) {\\n this.current.wordSpacing = t;\\n }\\n setHScale(t) {\\n this.current.textHScale = t / 100;\\n }\\n setLeading(t) {\\n this.current.leading = -t;\\n }\\n setFont(t, e) {\\n var _n$systemFontInfo;\\n const n = this.commonObjs.get(t),\\n r = this.current;\\n if (!n) throw new Error(\\"Can't find font for \\".concat(t));\\n r.fontMatrix = n.fontMatrix || i.FONT_IDENTITY_MATRIX;\\n 0 !== r.fontMatrix[0] && 0 !== r.fontMatrix[3] || (0, i.warn)(\\"Invalid font matrix for font \\" + t);\\n if (e < 0) {\\n e = -e;\\n r.fontDirection = -1;\\n } else r.fontDirection = 1;\\n this.current.font = n;\\n this.current.fontSize = e;\\n if (n.isType3Font) return;\\n const s = n.loadedName || \\"sans-serif\\",\\n a = ((_n$systemFontInfo = n.systemFontInfo) === null || _n$systemFontInfo === void 0 ? void 0 : _n$systemFontInfo.css) || \\"\\\\\\"\\".concat(s, \\"\\\\\\", \\").concat(n.fallbackName);\\n let o = \\"normal\\";\\n n.black ? o = \\"900\\" : n.bold && (o = \\"bold\\");\\n const l = n.italic ? \\"italic\\" : \\"normal\\";\\n let c = e;\\n e < 16 ? c = 16 : e > 100 && (c = 100);\\n this.current.fontSizeScale = e / c;\\n this.ctx.font = \\"\\".concat(l, \\" \\").concat(o, \\" \\").concat(c, \\"px \\").concat(a);\\n }\\n setTextRenderingMode(t) {\\n this.current.textRenderingMode = t;\\n }\\n setTextRise(t) {\\n this.current.textRise = t;\\n }\\n moveText(t, e) {\\n this.current.x = this.current.lineX += t;\\n this.current.y = this.current.lineY += e;\\n }\\n setLeadingMoveText(t, e) {\\n this.setLeading(-e);\\n this.moveText(t, e);\\n }\\n setTextMatrix(t, e, n, i, r, s) {\\n this.current.textMatrix = [t, e, n, i, r, s];\\n this.current.textMatrixScale = Math.hypot(t, e);\\n this.current.x = this.current.lineX = 0;\\n this.current.y = this.current.lineY = 0;\\n }\\n nextLine() {\\n this.moveText(0, this.current.leading);\\n }\\n paintChar(t, e, n, s) {\\n const a = this.ctx,\\n o = this.current,\\n l = o.font,\\n c = o.textRenderingMode,\\n h = o.fontSize / o.fontSizeScale,\\n d = c & i.TextRenderingMode.FILL_STROKE_MASK,\\n u = !!(c & i.TextRenderingMode.ADD_TO_PATH_FLAG),\\n p = o.patternFill && !l.missingFile;\\n let f;\\n (l.disableFontFace || u || p) && (f = l.getPathGenerator(this.commonObjs, t));\\n if (l.disableFontFace || p) {\\n a.save();\\n a.translate(e, n);\\n a.beginPath();\\n f(a, h);\\n s && a.setTransform(...s);\\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fill();\\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.stroke();\\n a.restore();\\n } else {\\n d !== i.TextRenderingMode.FILL && d !== i.TextRenderingMode.FILL_STROKE || a.fillText(t, e, n);\\n d !== i.TextRenderingMode.STROKE && d !== i.TextRenderingMode.FILL_STROKE || a.strokeText(t, e, n);\\n }\\n if (u) {\\n (this.pendingTextPaths || (this.pendingTextPaths = [])).push({\\n transform: (0, r.getCurrentTransform)(a),\\n x: e,\\n y: n,\\n fontSize: h,\\n addToPath: f\\n });\\n }\\n }\\n get isFontSubpixelAAEnabled() {\\n const {\\n context: t\\n } = this.cachedCanvases.getCanvas(\\"isFontSubpixelAAEnabled\\", 10, 10);\\n t.scale(1.5, 1);\\n t.fillText(\\"I\\", 0, 10);\\n const e = t.getImageData(0, 0, 10, 10).data;\\n let n = !1;\\n for (let t = 3; t < e.length; t += 4) if (e[t] > 0 && e[t] < 255) {\\n n = !0;\\n break;\\n }\\n return (0, i.shadow)(this, \\"isFontSubpixelAAEnabled\\", n);\\n }\\n showText(t) {\\n const e = this.current,\\n n = e.font;\\n if (n.isType3Font) return this.showType3Text(t);\\n const a = e.fontSize;\\n if (0 === a) return;\\n const o = this.ctx,\\n l = e.fontSizeScale,\\n c = e.charSpacing,\\n h = e.wordSpacing,\\n d = e.fontDirection,\\n u = e.textHScale * d,\\n p = t.length,\\n f = n.vertical,\\n g = f ? 1 : -1,\\n m = n.defaultVMetrics,\\n b = a * e.fontMatrix[0],\\n v = e.textRenderingMode === i.TextRenderingMode.FILL && !n.disableFontFace && !e.patternFill;\\n o.save();\\n o.transform(...e.textMatrix);\\n o.translate(e.x, e.y + e.textRise);\\n d > 0 ? o.scale(u, -1) : o.scale(u, 1);\\n let y;\\n if (e.patternFill) {\\n o.save();\\n const t = e.fillColor.getPattern(o, this, (0, r.getCurrentTransformInverse)(o), s.PathType.FILL);\\n y = (0, r.getCurrentTransform)(o);\\n o.restore();\\n o.fillStyle = t;\\n }\\n let A = e.lineWidth;\\n const _ = e.textMatrixScale;\\n if (0 === _ || 0 === A) {\\n const t = e.textRenderingMode & i.TextRenderingMode.FILL_STROKE_MASK;\\n t !== i.TextRenderingMode.STROKE && t !== i.TextRenderingMode.FILL_STROKE || (A = this.getSinglePixelWidth());\\n } else A /= _;\\n if (1 !== l) {\\n o.scale(l, l);\\n A /= l;\\n }\\n o.lineWidth = A;\\n if (n.isInvalidPDFjsFont) {\\n const n = [];\\n let i = 0;\\n for (const e of t) {\\n n.push(e.unicode);\\n i += e.width;\\n }\\n o.fillText(n.join(\\"\\"), 0, 0);\\n e.x += i * b * u;\\n o.restore();\\n this.compose();\\n return;\\n }\\n let S,\\n E = 0;\\n for (S = 0; S < p; ++S) {\\n const e = t[S];\\n if (\\"number\\" == typeof e) {\\n E += g * e * a / 1e3;\\n continue;\\n }\\n let i = !1;\\n const r = (e.isSpace ? h : 0) + c,\\n s = e.fontChar,\\n u = e.accent;\\n let p,\\n A,\\n _ = e.width;\\n if (f) {\\n const t = e.vmetric || m,\\n n = -(e.vmetric ? t[1] : .5 * _) * b,\\n i = t[2] * b;\\n _ = t ? -t[0] : _;\\n p = n / l;\\n A = (E + i) / l;\\n } else {\\n p = E / l;\\n A = 0;\\n }\\n if (n.remeasure && _ > 0) {\\n const t = 1e3 * o.measureText(s).width / a * l;\\n if (_ < t && this.isFontSubpixelAAEnabled) {\\n const e = _ / t;\\n i = !0;\\n o.save();\\n o.scale(e, 1);\\n p /= e;\\n } else _ !== t && (p += (_ - t) / 2e3 * a / l);\\n }\\n if (this.contentVisible && (e.isInFont || n.missingFile)) if (v && !u) o.fillText(s, p, A);else {\\n this.paintChar(s, p, A, y);\\n if (u) {\\n const t = p + a * u.offset.x / l,\\n e = A - a * u.offset.y / l;\\n this.paintChar(u.fontChar, t, e, y);\\n }\\n }\\n E += f ? _ * b - r * d : _ * b + r * d;\\n i && o.restore();\\n }\\n f ? e.y -= E : e.x += E * u;\\n o.restore();\\n this.compose();\\n }\\n showType3Text(t) {\\n const e = this.ctx,\\n n = this.current,\\n r = n.font,\\n s = n.fontSize,\\n a = n.fontDirection,\\n o = r.vertical ? 1 : -1,\\n l = n.charSpacing,\\n c = n.wordSpacing,\\n h = n.textHScale * a,\\n d = n.fontMatrix || i.FONT_IDENTITY_MATRIX,\\n u = t.length;\\n let p, f, g, m;\\n if (!(n.textRenderingMode === i.TextRenderingMode.INVISIBLE) && 0 !== s) {\\n this._cachedScaleForStroking[0] = -1;\\n this._cachedGetSinglePixelWidth = null;\\n e.save();\\n e.transform(...n.textMatrix);\\n e.translate(n.x, n.y);\\n e.scale(h, a);\\n for (p = 0; p < u; ++p) {\\n f = t[p];\\n if (\\"number\\" == typeof f) {\\n m = o * f * s / 1e3;\\n this.ctx.translate(m, 0);\\n n.x += m * h;\\n continue;\\n }\\n const a = (f.isSpace ? c : 0) + l,\\n u = r.charProcOperatorList[f.operatorListId];\\n if (!u) {\\n (0, i.warn)(\\"Type3 character \\\\\\"\\".concat(f.operatorListId, \\"\\\\\\" is not available.\\"));\\n continue;\\n }\\n if (this.contentVisible) {\\n this.processingType3 = f;\\n this.save();\\n e.scale(s, s);\\n e.transform(...d);\\n this.executeOperatorList(u);\\n this.restore();\\n }\\n g = i.Util.applyTransform([f.width, 0], d)[0] * s + a;\\n e.translate(g, 0);\\n n.x += g * h;\\n }\\n e.restore();\\n this.processingType3 = null;\\n }\\n }\\n setCharWidth(t, e) {}\\n setCharWidthAndBounds(t, e, n, i, r, s) {\\n this.ctx.rect(n, i, r - n, s - i);\\n this.ctx.clip();\\n this.endPath();\\n }\\n getColorN_Pattern(t) {\\n let e;\\n if (\\"TilingPattern\\" === t[0]) {\\n const n = t[1],\\n i = this.baseTransform || (0, r.getCurrentTransform)(this.ctx),\\n a = {\\n createCanvasGraphics: t => new CanvasGraphics(t, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\\n optionalContentConfig: this.optionalContentConfig,\\n markedContentStack: this.markedContentStack\\n })\\n };\\n e = new s.TilingPattern(t, n, this.ctx, a, i);\\n } else e = this._getPattern(t[1], t[2]);\\n return e;\\n }\\n setStrokeColorN() {\\n this.current.strokeColor = this.getColorN_Pattern(arguments);\\n }\\n setFillColorN() {\\n this.current.fillColor = this.getColorN_Pattern(arguments);\\n this.current.patternFill = !0;\\n }\\n setStrokeRGBColor(t, e, n) {\\n const r = i.Util.makeHexColor(t, e, n);\\n this.ctx.strokeStyle = r;\\n this.current.strokeColor = r;\\n }\\n setFillRGBColor(t, e, n) {\\n const r = i.Util.makeHexColor(t, e, n);\\n this.ctx.fillStyle = r;\\n this.current.fillColor = r;\\n this.current.patternFill = !1;\\n }\\n _getPattern(t) {\\n let e,\\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (this.cachedPatterns.has(t)) e = this.cachedPatterns.get(t);else {\\n e = (0, s.getShadingPattern)(this.getObject(t));\\n this.cachedPatterns.set(t, e);\\n }\\n n && (e.matrix = n);\\n return e;\\n }\\n shadingFill(t) {\\n if (!this.contentVisible) return;\\n const e = this.ctx;\\n this.save();\\n const n = this._getPattern(t);\\n e.fillStyle = n.getPattern(e, this, (0, r.getCurrentTransformInverse)(e), s.PathType.SHADING);\\n const a = (0, r.getCurrentTransformInverse)(e);\\n if (a) {\\n const {\\n width: t,\\n height: n\\n } = e.canvas,\\n [r, s, o, l] = i.Util.getAxialAlignedBoundingBox([0, 0, t, n], a);\\n this.ctx.fillRect(r, s, o - r, l - s);\\n } else this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\\n this.compose(this.current.getClippedPathBoundingBox());\\n this.restore();\\n }\\n beginInlineImage() {\\n (0, i.unreachable)(\\"Should not call beginInlineImage\\");\\n }\\n beginImageData() {\\n (0, i.unreachable)(\\"Should not call beginImageData\\");\\n }\\n paintFormXObjectBegin(t, e) {\\n if (this.contentVisible) {\\n this.save();\\n this.baseTransformStack.push(this.baseTransform);\\n Array.isArray(t) && 6 === t.length && this.transform(...t);\\n this.baseTransform = (0, r.getCurrentTransform)(this.ctx);\\n if (e) {\\n const t = e[2] - e[0],\\n n = e[3] - e[1];\\n this.ctx.rect(e[0], e[1], t, n);\\n this.current.updateRectMinMax((0, r.getCurrentTransform)(this.ctx), e);\\n this.clip();\\n this.endPath();\\n }\\n }\\n }\\n paintFormXObjectEnd() {\\n if (this.contentVisible) {\\n this.restore();\\n this.baseTransform = this.baseTransformStack.pop();\\n }\\n }\\n beginGroup(t) {\\n if (!this.contentVisible) return;\\n this.save();\\n if (this.inSMaskMode) {\\n this.endSMaskMode();\\n this.current.activeSMask = null;\\n }\\n const e = this.ctx;\\n t.isolated || (0, i.info)(\\"TODO: Support non-isolated groups.\\");\\n t.knockout && (0, i.warn)(\\"Knockout groups not supported.\\");\\n const n = (0, r.getCurrentTransform)(e);\\n t.matrix && e.transform(...t.matrix);\\n if (!t.bbox) throw new Error(\\"Bounding box is required.\\");\\n let s = i.Util.getAxialAlignedBoundingBox(t.bbox, (0, r.getCurrentTransform)(e));\\n const a = [0, 0, e.canvas.width, e.canvas.height];\\n s = i.Util.intersect(s, a) || [0, 0, 0, 0];\\n const l = Math.floor(s[0]),\\n c = Math.floor(s[1]);\\n let h = Math.max(Math.ceil(s[2]) - l, 1),\\n d = Math.max(Math.ceil(s[3]) - c, 1),\\n u = 1,\\n p = 1;\\n if (h > o) {\\n u = h / o;\\n h = o;\\n }\\n if (d > o) {\\n p = d / o;\\n d = o;\\n }\\n this.current.startNewPathAndClipBox([0, 0, h, d]);\\n let f = \\"groupAt\\" + this.groupLevel;\\n t.smask && (f += \\"_smask_\\" + this.smaskCounter++ % 2);\\n const g = this.cachedCanvases.getCanvas(f, h, d),\\n m = g.context;\\n m.scale(1 / u, 1 / p);\\n m.translate(-l, -c);\\n m.transform(...n);\\n if (t.smask) this.smaskStack.push({\\n canvas: g.canvas,\\n context: m,\\n offsetX: l,\\n offsetY: c,\\n scaleX: u,\\n scaleY: p,\\n subtype: t.smask.subtype,\\n backdrop: t.smask.backdrop,\\n transferMap: t.smask.transferMap || null,\\n startTransformInverse: null\\n });else {\\n e.setTransform(1, 0, 0, 1, 0, 0);\\n e.translate(l, c);\\n e.scale(u, p);\\n e.save();\\n }\\n copyCtxState(e, m);\\n this.ctx = m;\\n this.setGState([[\\"BM\\", \\"source-over\\"], [\\"ca\\", 1], [\\"CA\\", 1]]);\\n this.groupStack.push(e);\\n this.groupLevel++;\\n }\\n endGroup(t) {\\n if (!this.contentVisible) return;\\n this.groupLevel--;\\n const e = this.ctx,\\n n = this.groupStack.pop();\\n this.ctx = n;\\n this.ctx.imageSmoothingEnabled = !1;\\n if (t.smask) {\\n this.tempSMask = this.smaskStack.pop();\\n this.restore();\\n } else {\\n this.ctx.restore();\\n const t = (0, r.getCurrentTransform)(this.ctx);\\n this.restore();\\n this.ctx.save();\\n this.ctx.setTransform(...t);\\n const n = i.Util.getAxialAlignedBoundingBox([0, 0, e.canvas.width, e.canvas.height], t);\\n this.ctx.drawImage(e.canvas, 0, 0);\\n this.ctx.restore();\\n this.compose(n);\\n }\\n }\\n beginAnnotation(t, e, n, s, a) {\\n _classPrivateMethodGet(this, _Gt, _Gt2).call(this);\\n resetCtxToDefault(this.ctx);\\n this.ctx.save();\\n this.save();\\n this.baseTransform && this.ctx.setTransform(...this.baseTransform);\\n if (Array.isArray(e) && 4 === e.length) {\\n const s = e[2] - e[0],\\n o = e[3] - e[1];\\n if (a && this.annotationCanvasMap) {\\n (n = n.slice())[4] -= e[0];\\n n[5] -= e[1];\\n (e = e.slice())[0] = e[1] = 0;\\n e[2] = s;\\n e[3] = o;\\n const [a, l] = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(this.ctx)),\\n {\\n viewportScale: c\\n } = this,\\n h = Math.ceil(s * this.outputScaleX * c),\\n d = Math.ceil(o * this.outputScaleY * c);\\n this.annotationCanvas = this.canvasFactory.create(h, d);\\n const {\\n canvas: u,\\n context: p\\n } = this.annotationCanvas;\\n this.annotationCanvasMap.set(t, u);\\n this.annotationCanvas.savedCtx = this.ctx;\\n this.ctx = p;\\n this.ctx.save();\\n this.ctx.setTransform(a, 0, 0, -l, 0, o * l);\\n resetCtxToDefault(this.ctx);\\n } else {\\n resetCtxToDefault(this.ctx);\\n this.ctx.rect(e[0], e[1], s, o);\\n this.ctx.clip();\\n this.endPath();\\n }\\n }\\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\\n this.transform(...n);\\n this.transform(...s);\\n }\\n endAnnotation() {\\n if (this.annotationCanvas) {\\n this.ctx.restore();\\n _classPrivateMethodGet(this, _Vt, _Vt2).call(this);\\n this.ctx = this.annotationCanvas.savedCtx;\\n delete this.annotationCanvas.savedCtx;\\n delete this.annotationCanvas;\\n }\\n }\\n paintImageMaskXObject(t) {\\n if (!this.contentVisible) return;\\n const e = t.count;\\n (t = this.getObject(t.data, t)).count = e;\\n const n = this.ctx,\\n i = this.processingType3;\\n if (i) {\\n void 0 === i.compiled && (i.compiled = function compileType3Glyph(t) {\\n const {\\n width: e,\\n height: n\\n } = t;\\n if (e > 1e3 || n > 1e3) return null;\\n const i = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]),\\n r = e + 1;\\n let s,\\n a,\\n o,\\n l = new Uint8Array(r * (n + 1));\\n const c = e + 7 & -8;\\n let h = new Uint8Array(c * n),\\n d = 0;\\n for (const e of t.data) {\\n let t = 128;\\n for (; t > 0;) {\\n h[d++] = e & t ? 0 : 255;\\n t >>= 1;\\n }\\n }\\n let u = 0;\\n d = 0;\\n if (0 !== h[d]) {\\n l[0] = 1;\\n ++u;\\n }\\n for (a = 1; a < e; a++) {\\n if (h[d] !== h[d + 1]) {\\n l[a] = h[d] ? 2 : 1;\\n ++u;\\n }\\n d++;\\n }\\n if (0 !== h[d]) {\\n l[a] = 2;\\n ++u;\\n }\\n for (s = 1; s < n; s++) {\\n d = s * c;\\n o = s * r;\\n if (h[d - c] !== h[d]) {\\n l[o] = h[d] ? 1 : 8;\\n ++u;\\n }\\n let t = (h[d] ? 4 : 0) + (h[d - c] ? 8 : 0);\\n for (a = 1; a < e; a++) {\\n t = (t >> 2) + (h[d + 1] ? 4 : 0) + (h[d - c + 1] ? 8 : 0);\\n if (i[t]) {\\n l[o + a] = i[t];\\n ++u;\\n }\\n d++;\\n }\\n if (h[d - c] !== h[d]) {\\n l[o + a] = h[d] ? 2 : 4;\\n ++u;\\n }\\n if (u > 1e3) return null;\\n }\\n d = c * (n - 1);\\n o = s * r;\\n if (0 !== h[d]) {\\n l[o] = 8;\\n ++u;\\n }\\n for (a = 1; a < e; a++) {\\n if (h[d] !== h[d + 1]) {\\n l[o + a] = h[d] ? 4 : 8;\\n ++u;\\n }\\n d++;\\n }\\n if (0 !== h[d]) {\\n l[o + a] = 4;\\n ++u;\\n }\\n if (u > 1e3) return null;\\n const p = new Int32Array([0, r, -1, 0, -r, 0, 0, 0, 1]),\\n f = new Path2D();\\n for (s = 0; u && s <= n; s++) {\\n let t = s * r;\\n const n = t + e;\\n for (; t < n && !l[t];) t++;\\n if (t === n) continue;\\n f.moveTo(t % r, s);\\n const i = t;\\n let a = l[t];\\n do {\\n const e = p[a];\\n do {\\n t += e;\\n } while (!l[t]);\\n const n = l[t];\\n if (5 !== n && 10 !== n) {\\n a = n;\\n l[t] = 0;\\n } else {\\n a = n & 51 * a >> 4;\\n l[t] &= a >> 2 | a << 2;\\n }\\n f.lineTo(t % r, t / r | 0);\\n l[t] || --u;\\n } while (i !== t);\\n --s;\\n }\\n h = null;\\n l = null;\\n return function (t) {\\n t.save();\\n t.scale(1 / e, -1 / n);\\n t.translate(0, -n);\\n t.fill(f);\\n t.beginPath();\\n t.restore();\\n };\\n }(t));\\n if (i.compiled) {\\n i.compiled(n);\\n return;\\n }\\n }\\n const r = this._createMaskCanvas(t),\\n s = r.canvas;\\n n.save();\\n n.setTransform(1, 0, 0, 1, 0, 0);\\n n.drawImage(s, r.offsetX, r.offsetY);\\n n.restore();\\n this.compose();\\n }\\n paintImageMaskXObjectRepeat(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,\\n s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,\\n a = arguments.length > 4 ? arguments[4] : void 0,\\n o = arguments.length > 5 ? arguments[5] : void 0;\\n if (!this.contentVisible) return;\\n t = this.getObject(t.data, t);\\n const l = this.ctx;\\n l.save();\\n const c = (0, r.getCurrentTransform)(l);\\n l.transform(e, n, s, a, 0, 0);\\n const h = this._createMaskCanvas(t);\\n l.setTransform(1, 0, 0, 1, h.offsetX - c[4], h.offsetY - c[5]);\\n for (let t = 0, r = o.length; t < r; t += 2) {\\n const r = i.Util.transform(c, [e, n, s, a, o[t], o[t + 1]]),\\n [d, u] = i.Util.applyTransform([0, 0], r);\\n l.drawImage(h.canvas, d, u);\\n }\\n l.restore();\\n this.compose();\\n }\\n paintImageMaskXObjectGroup(t) {\\n if (!this.contentVisible) return;\\n const e = this.ctx,\\n n = this.current.fillColor,\\n i = this.current.patternFill;\\n for (const a of t) {\\n const {\\n data: t,\\n width: o,\\n height: l,\\n transform: c\\n } = a,\\n h = this.cachedCanvases.getCanvas(\\"maskCanvas\\", o, l),\\n d = h.context;\\n d.save();\\n putBinaryImageMask(d, this.getObject(t, a));\\n d.globalCompositeOperation = \\"source-in\\";\\n d.fillStyle = i ? n.getPattern(d, this, (0, r.getCurrentTransformInverse)(e), s.PathType.FILL) : n;\\n d.fillRect(0, 0, o, l);\\n d.restore();\\n e.save();\\n e.transform(...c);\\n e.scale(1, -1);\\n drawImageAtIntegerCoords(e, h.canvas, 0, 0, o, l, 0, -1, 1, 1);\\n e.restore();\\n }\\n this.compose();\\n }\\n paintImageXObject(t) {\\n if (!this.contentVisible) return;\\n const e = this.getObject(t);\\n e ? this.paintInlineImageXObject(e) : (0, i.warn)(\\"Dependent image isn't ready yet\\");\\n }\\n paintImageXObjectRepeat(t, e, n, r) {\\n if (!this.contentVisible) return;\\n const s = this.getObject(t);\\n if (!s) {\\n (0, i.warn)(\\"Dependent image isn't ready yet\\");\\n return;\\n }\\n const a = s.width,\\n o = s.height,\\n l = [];\\n for (let t = 0, i = r.length; t < i; t += 2) l.push({\\n transform: [e, 0, 0, n, r[t], r[t + 1]],\\n x: 0,\\n y: 0,\\n w: a,\\n h: o\\n });\\n this.paintInlineImageXObjectGroup(s, l);\\n }\\n applyTransferMapsToCanvas(t) {\\n if (\\"none\\" !== this.current.transferMaps) {\\n t.filter = this.current.transferMaps;\\n t.drawImage(t.canvas, 0, 0);\\n t.filter = \\"none\\";\\n }\\n return t.canvas;\\n }\\n applyTransferMapsToBitmap(t) {\\n if (\\"none\\" === this.current.transferMaps) return t.bitmap;\\n const {\\n bitmap: e,\\n width: n,\\n height: i\\n } = t,\\n r = this.cachedCanvases.getCanvas(\\"inlineImage\\", n, i),\\n s = r.context;\\n s.filter = this.current.transferMaps;\\n s.drawImage(e, 0, 0);\\n s.filter = \\"none\\";\\n return r.canvas;\\n }\\n paintInlineImageXObject(t) {\\n if (!this.contentVisible) return;\\n const e = t.width,\\n n = t.height,\\n s = this.ctx;\\n this.save();\\n if (!i.isNodeJS) {\\n const {\\n filter: t\\n } = s;\\n \\"none\\" !== t && \\"\\" !== t && (s.filter = \\"none\\");\\n }\\n s.scale(1 / e, -1 / n);\\n let a;\\n if (t.bitmap) a = this.applyTransferMapsToBitmap(t);else if (\\"function\\" == typeof HTMLElement && t instanceof HTMLElement || !t.data) a = t;else {\\n const i = this.cachedCanvases.getCanvas(\\"inlineImage\\", e, n).context;\\n putBinaryImageData(i, t);\\n a = this.applyTransferMapsToCanvas(i);\\n }\\n const o = this._scaleImage(a, (0, r.getCurrentTransformInverse)(s));\\n s.imageSmoothingEnabled = getImageSmoothingEnabled((0, r.getCurrentTransform)(s), t.interpolate);\\n drawImageAtIntegerCoords(s, o.img, 0, 0, o.paintWidth, o.paintHeight, 0, -n, e, n);\\n this.compose();\\n this.restore();\\n }\\n paintInlineImageXObjectGroup(t, e) {\\n if (!this.contentVisible) return;\\n const n = this.ctx;\\n let i;\\n if (t.bitmap) i = t.bitmap;else {\\n const e = t.width,\\n n = t.height,\\n r = this.cachedCanvases.getCanvas(\\"inlineImage\\", e, n).context;\\n putBinaryImageData(r, t);\\n i = this.applyTransferMapsToCanvas(r);\\n }\\n for (const t of e) {\\n n.save();\\n n.transform(...t.transform);\\n n.scale(1, -1);\\n drawImageAtIntegerCoords(n, i, t.x, t.y, t.w, t.h, 0, -1, 1, 1);\\n n.restore();\\n }\\n this.compose();\\n }\\n paintSolidColorImageMask() {\\n if (this.contentVisible) {\\n this.ctx.fillRect(0, 0, 1, 1);\\n this.compose();\\n }\\n }\\n markPoint(t) {}\\n markPointProps(t, e) {}\\n beginMarkedContent(t) {\\n this.markedContentStack.push({\\n visible: !0\\n });\\n }\\n beginMarkedContentProps(t, e) {\\n \\"OC\\" === t ? this.markedContentStack.push({\\n visible: this.optionalContentConfig.isVisible(e)\\n }) : this.markedContentStack.push({\\n visible: !0\\n });\\n this.contentVisible = this.isContentVisible();\\n }\\n endMarkedContent() {\\n this.markedContentStack.pop();\\n this.contentVisible = this.isContentVisible();\\n }\\n beginCompat() {}\\n endCompat() {}\\n consumePath(t) {\\n const e = this.current.isEmptyClip();\\n this.pendingClip && this.current.updateClipFromPath();\\n this.pendingClip || this.compose(t);\\n const n = this.ctx;\\n if (this.pendingClip) {\\n e || (this.pendingClip === u ? n.clip(\\"evenodd\\") : n.clip());\\n this.pendingClip = null;\\n }\\n this.current.startNewPathAndClipBox(this.current.clipBox);\\n n.beginPath();\\n }\\n getSinglePixelWidth() {\\n if (!this._cachedGetSinglePixelWidth) {\\n const t = (0, r.getCurrentTransform)(this.ctx);\\n if (0 === t[1] && 0 === t[2]) this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(t[0]), Math.abs(t[3]));else {\\n const e = Math.abs(t[0] * t[3] - t[2] * t[1]),\\n n = Math.hypot(t[0], t[2]),\\n i = Math.hypot(t[1], t[3]);\\n this._cachedGetSinglePixelWidth = Math.max(n, i) / e;\\n }\\n }\\n return this._cachedGetSinglePixelWidth;\\n }\\n getScaleForStroking() {\\n if (-1 === this._cachedScaleForStroking[0]) {\\n const {\\n lineWidth: t\\n } = this.current,\\n {\\n a: e,\\n b: n,\\n c: i,\\n d: r\\n } = this.ctx.getTransform();\\n let s, a;\\n if (0 === n && 0 === i) {\\n const n = Math.abs(e),\\n i = Math.abs(r);\\n if (n === i) {\\n if (0 === t) s = a = 1 / n;else {\\n const e = n * t;\\n s = a = e < 1 ? 1 / e : 1;\\n }\\n } else if (0 === t) {\\n s = 1 / n;\\n a = 1 / i;\\n } else {\\n const e = n * t,\\n r = i * t;\\n s = e < 1 ? 1 / e : 1;\\n a = r < 1 ? 1 / r : 1;\\n }\\n } else {\\n const o = Math.abs(e * r - n * i),\\n l = Math.hypot(e, n),\\n c = Math.hypot(i, r);\\n if (0 === t) {\\n s = c / o;\\n a = l / o;\\n } else {\\n const e = t * o;\\n s = c > e ? c / e : 1;\\n a = l > e ? l / e : 1;\\n }\\n }\\n this._cachedScaleForStroking[0] = s;\\n this._cachedScaleForStroking[1] = a;\\n }\\n return this._cachedScaleForStroking;\\n }\\n rescaleAndStroke(t) {\\n const {\\n ctx: e\\n } = this,\\n {\\n lineWidth: n\\n } = this.current,\\n [i, r] = this.getScaleForStroking();\\n e.lineWidth = n || 1;\\n if (1 === i && 1 === r) {\\n e.stroke();\\n return;\\n }\\n const s = e.getLineDash();\\n t && e.save();\\n e.scale(i, r);\\n if (s.length > 0) {\\n const t = Math.max(i, r);\\n e.setLineDash(s.map(e => e / t));\\n e.lineDashOffset /= t;\\n }\\n e.stroke();\\n t && e.restore();\\n }\\n isContentVisible() {\\n for (let t = this.markedContentStack.length - 1; t >= 0; t--) if (!this.markedContentStack[t].visible) return !1;\\n return !0;\\n }\\n }\\n function _Gt2() {\\n for (; this.stateStack.length || this.inSMaskMode;) this.restore();\\n this.ctx.restore();\\n if (this.transparentCanvas) {\\n this.ctx = this.compositeCtx;\\n this.ctx.save();\\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\\n this.ctx.restore();\\n this.transparentCanvas = null;\\n }\\n }\\n function _Vt2() {\\n if (this.pageColors) {\\n const t = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\\n if (\\"none\\" !== t) {\\n const e = this.ctx.filter;\\n this.ctx.filter = t;\\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\\n this.ctx.filter = e;\\n }\\n }\\n }\\n e.CanvasGraphics = CanvasGraphics;\\n for (const t in i.OPS) void 0 !== CanvasGraphics.prototype[t] && (CanvasGraphics.prototype[i.OPS[t]] = CanvasGraphics.prototype[t]);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.TilingPattern = e.PathType = void 0;\\n e.getShadingPattern = function getShadingPattern(t) {\\n switch (t[0]) {\\n case \\"RadialAxial\\":\\n return new RadialAxialShadingPattern(t);\\n case \\"Mesh\\":\\n return new MeshShadingPattern(t);\\n case \\"Dummy\\":\\n return new DummyShadingPattern();\\n }\\n throw new Error(\\"Unknown IR type: \\".concat(t[0]));\\n };\\n n(2);\\n var i = n(1),\\n r = n(167);\\n const s = {\\n FILL: \\"Fill\\",\\n STROKE: \\"Stroke\\",\\n SHADING: \\"Shading\\"\\n };\\n e.PathType = s;\\n function applyBoundingBox(t, e) {\\n if (!e) return;\\n const n = e[2] - e[0],\\n i = e[3] - e[1],\\n r = new Path2D();\\n r.rect(e[0], e[1], n, i);\\n t.clip(r);\\n }\\n class BaseShadingPattern {\\n constructor() {\\n this.constructor === BaseShadingPattern && (0, i.unreachable)(\\"Cannot initialize BaseShadingPattern.\\");\\n }\\n getPattern() {\\n (0, i.unreachable)(\\"Abstract method \`getPattern\` called.\\");\\n }\\n }\\n class RadialAxialShadingPattern extends BaseShadingPattern {\\n constructor(t) {\\n super();\\n this._type = t[1];\\n this._bbox = t[2];\\n this._colorStops = t[3];\\n this._p0 = t[4];\\n this._p1 = t[5];\\n this._r0 = t[6];\\n this._r1 = t[7];\\n this.matrix = null;\\n }\\n _createGradient(t) {\\n let e;\\n \\"axial\\" === this._type ? e = t.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]) : \\"radial\\" === this._type && (e = t.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1));\\n for (const t of this._colorStops) e.addColorStop(t[0], t[1]);\\n return e;\\n }\\n getPattern(t, e, n, a) {\\n let o;\\n if (a === s.STROKE || a === s.FILL) {\\n const s = e.current.getClippedPathBoundingBox(a, (0, r.getCurrentTransform)(t)) || [0, 0, 0, 0],\\n l = Math.ceil(s[2] - s[0]) || 1,\\n c = Math.ceil(s[3] - s[1]) || 1,\\n h = e.cachedCanvases.getCanvas(\\"pattern\\", l, c, !0),\\n d = h.context;\\n d.clearRect(0, 0, d.canvas.width, d.canvas.height);\\n d.beginPath();\\n d.rect(0, 0, d.canvas.width, d.canvas.height);\\n d.translate(-s[0], -s[1]);\\n n = i.Util.transform(n, [1, 0, 0, 1, s[0], s[1]]);\\n d.transform(...e.baseTransform);\\n this.matrix && d.transform(...this.matrix);\\n applyBoundingBox(d, this._bbox);\\n d.fillStyle = this._createGradient(d);\\n d.fill();\\n o = t.createPattern(h.canvas, \\"no-repeat\\");\\n const u = new DOMMatrix(n);\\n o.setTransform(u);\\n } else {\\n applyBoundingBox(t, this._bbox);\\n o = this._createGradient(t);\\n }\\n return o;\\n }\\n }\\n function drawTriangle(t, e, n, i, r, s, a, o) {\\n const l = e.coords,\\n c = e.colors,\\n h = t.data,\\n d = 4 * t.width;\\n let u;\\n if (l[n + 1] > l[i + 1]) {\\n u = n;\\n n = i;\\n i = u;\\n u = s;\\n s = a;\\n a = u;\\n }\\n if (l[i + 1] > l[r + 1]) {\\n u = i;\\n i = r;\\n r = u;\\n u = a;\\n a = o;\\n o = u;\\n }\\n if (l[n + 1] > l[i + 1]) {\\n u = n;\\n n = i;\\n i = u;\\n u = s;\\n s = a;\\n a = u;\\n }\\n const p = (l[n] + e.offsetX) * e.scaleX,\\n f = (l[n + 1] + e.offsetY) * e.scaleY,\\n g = (l[i] + e.offsetX) * e.scaleX,\\n m = (l[i + 1] + e.offsetY) * e.scaleY,\\n b = (l[r] + e.offsetX) * e.scaleX,\\n v = (l[r + 1] + e.offsetY) * e.scaleY;\\n if (f >= v) return;\\n const y = c[s],\\n A = c[s + 1],\\n _ = c[s + 2],\\n S = c[a],\\n E = c[a + 1],\\n x = c[a + 2],\\n w = c[o],\\n C = c[o + 1],\\n T = c[o + 2],\\n P = Math.round(f),\\n k = Math.round(v);\\n let M, R, I, D, O, L, N, B;\\n for (let t = P; t <= k; t++) {\\n if (t < m) {\\n const e = t < f ? 0 : (f - t) / (f - m);\\n M = p - (p - g) * e;\\n R = y - (y - S) * e;\\n I = A - (A - E) * e;\\n D = _ - (_ - x) * e;\\n } else {\\n let e;\\n e = t > v ? 1 : m === v ? 0 : (m - t) / (m - v);\\n M = g - (g - b) * e;\\n R = S - (S - w) * e;\\n I = E - (E - C) * e;\\n D = x - (x - T) * e;\\n }\\n let e;\\n e = t < f ? 0 : t > v ? 1 : (f - t) / (f - v);\\n O = p - (p - b) * e;\\n L = y - (y - w) * e;\\n N = A - (A - C) * e;\\n B = _ - (_ - T) * e;\\n const n = Math.round(Math.min(M, O)),\\n i = Math.round(Math.max(M, O));\\n let r = d * t + 4 * n;\\n for (let t = n; t <= i; t++) {\\n e = (M - t) / (M - O);\\n e < 0 ? e = 0 : e > 1 && (e = 1);\\n h[r++] = R - (R - L) * e | 0;\\n h[r++] = I - (I - N) * e | 0;\\n h[r++] = D - (D - B) * e | 0;\\n h[r++] = 255;\\n }\\n }\\n }\\n function drawFigure(t, e, n) {\\n const i = e.coords,\\n r = e.colors;\\n let s, a;\\n switch (e.type) {\\n case \\"lattice\\":\\n const o = e.verticesPerRow,\\n l = Math.floor(i.length / o) - 1,\\n c = o - 1;\\n for (s = 0; s < l; s++) {\\n let e = s * o;\\n for (let s = 0; s < c; s++, e++) {\\n drawTriangle(t, n, i[e], i[e + 1], i[e + o], r[e], r[e + 1], r[e + o]);\\n drawTriangle(t, n, i[e + o + 1], i[e + 1], i[e + o], r[e + o + 1], r[e + 1], r[e + o]);\\n }\\n }\\n break;\\n case \\"triangles\\":\\n for (s = 0, a = i.length; s < a; s += 3) drawTriangle(t, n, i[s], i[s + 1], i[s + 2], r[s], r[s + 1], r[s + 2]);\\n break;\\n default:\\n throw new Error(\\"illegal figure\\");\\n }\\n }\\n class MeshShadingPattern extends BaseShadingPattern {\\n constructor(t) {\\n super();\\n this._coords = t[2];\\n this._colors = t[3];\\n this._figures = t[4];\\n this._bounds = t[5];\\n this._bbox = t[7];\\n this._background = t[8];\\n this.matrix = null;\\n }\\n _createMeshCanvas(t, e, n) {\\n const i = Math.floor(this._bounds[0]),\\n r = Math.floor(this._bounds[1]),\\n s = Math.ceil(this._bounds[2]) - i,\\n a = Math.ceil(this._bounds[3]) - r,\\n o = Math.min(Math.ceil(Math.abs(s * t[0] * 1.1)), 3e3),\\n l = Math.min(Math.ceil(Math.abs(a * t[1] * 1.1)), 3e3),\\n c = s / o,\\n h = a / l,\\n d = {\\n coords: this._coords,\\n colors: this._colors,\\n offsetX: -i,\\n offsetY: -r,\\n scaleX: 1 / c,\\n scaleY: 1 / h\\n },\\n u = o + 4,\\n p = l + 4,\\n f = n.getCanvas(\\"mesh\\", u, p, !1),\\n g = f.context,\\n m = g.createImageData(o, l);\\n if (e) {\\n const t = m.data;\\n for (let n = 0, i = t.length; n < i; n += 4) {\\n t[n] = e[0];\\n t[n + 1] = e[1];\\n t[n + 2] = e[2];\\n t[n + 3] = 255;\\n }\\n }\\n for (const t of this._figures) drawFigure(m, t, d);\\n g.putImageData(m, 2, 2);\\n return {\\n canvas: f.canvas,\\n offsetX: i - 2 * c,\\n offsetY: r - 2 * h,\\n scaleX: c,\\n scaleY: h\\n };\\n }\\n getPattern(t, e, n, a) {\\n applyBoundingBox(t, this._bbox);\\n let o;\\n if (a === s.SHADING) o = i.Util.singularValueDecompose2dScale((0, r.getCurrentTransform)(t));else {\\n o = i.Util.singularValueDecompose2dScale(e.baseTransform);\\n if (this.matrix) {\\n const t = i.Util.singularValueDecompose2dScale(this.matrix);\\n o = [o[0] * t[0], o[1] * t[1]];\\n }\\n }\\n const l = this._createMeshCanvas(o, a === s.SHADING ? null : this._background, e.cachedCanvases);\\n if (a !== s.SHADING) {\\n t.setTransform(...e.baseTransform);\\n this.matrix && t.transform(...this.matrix);\\n }\\n t.translate(l.offsetX, l.offsetY);\\n t.scale(l.scaleX, l.scaleY);\\n return t.createPattern(l.canvas, \\"no-repeat\\");\\n }\\n }\\n class DummyShadingPattern extends BaseShadingPattern {\\n getPattern() {\\n return \\"hotpink\\";\\n }\\n }\\n const a = 1,\\n o = 2;\\n class TilingPattern {\\n constructor(t, e, n, i, r) {\\n this.operatorList = t[2];\\n this.matrix = t[3] || [1, 0, 0, 1, 0, 0];\\n this.bbox = t[4];\\n this.xstep = t[5];\\n this.ystep = t[6];\\n this.paintType = t[7];\\n this.tilingType = t[8];\\n this.color = e;\\n this.ctx = n;\\n this.canvasGraphicsFactory = i;\\n this.baseTransform = r;\\n }\\n createPatternCanvas(t) {\\n const e = this.operatorList,\\n n = this.bbox,\\n s = this.xstep,\\n a = this.ystep,\\n o = this.paintType,\\n l = this.tilingType,\\n c = this.color,\\n h = this.canvasGraphicsFactory;\\n (0, i.info)(\\"TilingType: \\" + l);\\n const d = n[0],\\n u = n[1],\\n p = n[2],\\n f = n[3],\\n g = i.Util.singularValueDecompose2dScale(this.matrix),\\n m = i.Util.singularValueDecompose2dScale(this.baseTransform),\\n b = [g[0] * m[0], g[1] * m[1]],\\n v = this.getSizeAndScale(s, this.ctx.canvas.width, b[0]),\\n y = this.getSizeAndScale(a, this.ctx.canvas.height, b[1]),\\n A = t.cachedCanvases.getCanvas(\\"pattern\\", v.size, y.size, !0),\\n _ = A.context,\\n S = h.createCanvasGraphics(_);\\n S.groupLevel = t.groupLevel;\\n this.setFillAndStrokeStyleToContext(S, o, c);\\n let E = d,\\n x = u,\\n w = p,\\n C = f;\\n if (d < 0) {\\n E = 0;\\n w += Math.abs(d);\\n }\\n if (u < 0) {\\n x = 0;\\n C += Math.abs(u);\\n }\\n _.translate(-v.scale * E, -y.scale * x);\\n S.transform(v.scale, 0, 0, y.scale, 0, 0);\\n _.save();\\n this.clipBbox(S, E, x, w, C);\\n S.baseTransform = (0, r.getCurrentTransform)(S.ctx);\\n S.executeOperatorList(e);\\n S.endDrawing();\\n return {\\n canvas: A.canvas,\\n scaleX: v.scale,\\n scaleY: y.scale,\\n offsetX: E,\\n offsetY: x\\n };\\n }\\n getSizeAndScale(t, e, n) {\\n t = Math.abs(t);\\n const i = Math.max(TilingPattern.MAX_PATTERN_SIZE, e);\\n let r = Math.ceil(t * n);\\n r >= i ? r = i : n = r / t;\\n return {\\n scale: n,\\n size: r\\n };\\n }\\n clipBbox(t, e, n, i, s) {\\n const a = i - e,\\n o = s - n;\\n t.ctx.rect(e, n, a, o);\\n t.current.updateRectMinMax((0, r.getCurrentTransform)(t.ctx), [e, n, i, s]);\\n t.clip();\\n t.endPath();\\n }\\n setFillAndStrokeStyleToContext(t, e, n) {\\n const r = t.ctx,\\n s = t.current;\\n switch (e) {\\n case a:\\n const t = this.ctx;\\n r.fillStyle = t.fillStyle;\\n r.strokeStyle = t.strokeStyle;\\n s.fillColor = t.fillStyle;\\n s.strokeColor = t.strokeStyle;\\n break;\\n case o:\\n const l = i.Util.makeHexColor(n[0], n[1], n[2]);\\n r.fillStyle = l;\\n r.strokeStyle = l;\\n s.fillColor = l;\\n s.strokeColor = l;\\n break;\\n default:\\n throw new i.FormatError(\\"Unsupported paint type: \\".concat(e));\\n }\\n }\\n getPattern(t, e, n, r) {\\n let a = n;\\n if (r !== s.SHADING) {\\n a = i.Util.transform(a, e.baseTransform);\\n this.matrix && (a = i.Util.transform(a, this.matrix));\\n }\\n const o = this.createPatternCanvas(e);\\n let l = new DOMMatrix(a);\\n l = l.translate(o.offsetX, o.offsetY);\\n l = l.scale(1 / o.scaleX, 1 / o.scaleY);\\n const c = t.createPattern(o.canvas, \\"repeat\\");\\n c.setTransform(l);\\n return c;\\n }\\n }\\n _defineProperty(TilingPattern, \\"MAX_PATTERN_SIZE\\", 3e3);\\n e.TilingPattern = TilingPattern;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\\n e.convertToRGBA = function convertToRGBA(t) {\\n switch (t.kind) {\\n case i.ImageKind.GRAYSCALE_1BPP:\\n return convertBlackAndWhiteToRGBA(t);\\n case i.ImageKind.RGB_24BPP:\\n return function convertRGBToRGBA(t) {\\n let {\\n src: e,\\n srcPos: n = 0,\\n dest: r,\\n destPos: s = 0,\\n width: a,\\n height: o\\n } = t,\\n l = 0;\\n const c = e.length >> 2,\\n h = new Uint32Array(e.buffer, n, c);\\n if (i.FeatureTest.isLittleEndian) {\\n for (; l < c - 2; l += 3, s += 4) {\\n const t = h[l],\\n e = h[l + 1],\\n n = h[l + 2];\\n r[s] = 4278190080 | t;\\n r[s + 1] = t >>> 24 | e << 8 | 4278190080;\\n r[s + 2] = e >>> 16 | n << 16 | 4278190080;\\n r[s + 3] = n >>> 8 | 4278190080;\\n }\\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] | e[t + 1] << 8 | e[t + 2] << 16 | 4278190080;\\n } else {\\n for (; l < c - 2; l += 3, s += 4) {\\n const t = h[l],\\n e = h[l + 1],\\n n = h[l + 2];\\n r[s] = 255 | t;\\n r[s + 1] = t << 24 | e >>> 8 | 255;\\n r[s + 2] = e << 16 | n >>> 16 | 255;\\n r[s + 3] = n << 8 | 255;\\n }\\n for (let t = 4 * l, n = e.length; t < n; t += 3) r[s++] = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | 255;\\n }\\n return {\\n srcPos: n,\\n destPos: s\\n };\\n }(t);\\n }\\n return null;\\n };\\n e.grayToRGBA = function grayToRGBA(t, e) {\\n if (i.FeatureTest.isLittleEndian) for (let n = 0, i = t.length; n < i; n++) e[n] = 65793 * t[n] | 4278190080;else for (let n = 0, i = t.length; n < i; n++) e[n] = 16843008 * t[n] | 255;\\n };\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(1);\\n function convertBlackAndWhiteToRGBA(t) {\\n let {\\n src: e,\\n srcPos: n = 0,\\n dest: r,\\n width: s,\\n height: a,\\n nonBlackColor: o = 4294967295,\\n inverseDecode: l = !1\\n } = t;\\n const c = i.FeatureTest.isLittleEndian ? 4278190080 : 255,\\n [h, d] = l ? [o, c] : [c, o],\\n u = s >> 3,\\n p = 7 & s,\\n f = e.length;\\n r = new Uint32Array(r.buffer);\\n let g = 0;\\n for (let t = 0; t < a; t++) {\\n for (const t = n + u; n < t; n++) {\\n const t = n < f ? e[n] : 255;\\n r[g++] = 128 & t ? d : h;\\n r[g++] = 64 & t ? d : h;\\n r[g++] = 32 & t ? d : h;\\n r[g++] = 16 & t ? d : h;\\n r[g++] = 8 & t ? d : h;\\n r[g++] = 4 & t ? d : h;\\n r[g++] = 2 & t ? d : h;\\n r[g++] = 1 & t ? d : h;\\n }\\n if (0 === p) continue;\\n const t = n < f ? e[n++] : 255;\\n for (let e = 0; e < p; e++) r[g++] = t & 1 << 7 - e ? d : h;\\n }\\n return {\\n srcPos: n,\\n destPos: g\\n };\\n }\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.GlobalWorkerOptions = void 0;\\n const n = Object.create(null);\\n e.GlobalWorkerOptions = n;\\n n.workerPort = null;\\n n.workerSrc = \\"\\";\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Xt, _$t, _Kt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.MessageHandler = void 0;\\n n(2);\\n var i = n(1);\\n const r = 1,\\n s = 2,\\n a = 1,\\n o = 2,\\n l = 3,\\n c = 4,\\n h = 5,\\n d = 6,\\n u = 7,\\n p = 8;\\n function wrapReason(t) {\\n t instanceof Error || \\"object\\" == typeof t && null !== t || (0, i.unreachable)('wrapReason: Expected \\"reason\\" to be a (possibly cloned) Error.');\\n switch (t.name) {\\n case \\"AbortException\\":\\n return new i.AbortException(t.message);\\n case \\"MissingPDFException\\":\\n return new i.MissingPDFException(t.message);\\n case \\"PasswordException\\":\\n return new i.PasswordException(t.message, t.code);\\n case \\"UnexpectedResponseException\\":\\n return new i.UnexpectedResponseException(t.message, t.status);\\n case \\"UnknownErrorException\\":\\n return new i.UnknownErrorException(t.message, t.details);\\n default:\\n return new i.UnknownErrorException(t.message, t.toString());\\n }\\n }\\n e.MessageHandler = (_Xt = /*#__PURE__*/new WeakSet(), _$t = /*#__PURE__*/new WeakSet(), _Kt = /*#__PURE__*/new WeakSet(), class MessageHandler {\\n constructor(_t11, _e10, _n6) {\\n _classPrivateMethodInitSpec(this, _Kt);\\n _classPrivateMethodInitSpec(this, _$t);\\n _classPrivateMethodInitSpec(this, _Xt);\\n this.sourceName = _t11;\\n this.targetName = _e10;\\n this.comObj = _n6;\\n this.callbackId = 1;\\n this.streamId = 1;\\n this.streamSinks = Object.create(null);\\n this.streamControllers = Object.create(null);\\n this.callbackCapabilities = Object.create(null);\\n this.actionHandler = Object.create(null);\\n this._onComObjOnMessage = t => {\\n const e = t.data;\\n if (e.targetName !== this.sourceName) return;\\n if (e.stream) {\\n _classPrivateMethodGet(this, _$t, _$t2).call(this, e);\\n return;\\n }\\n if (e.callback) {\\n const t = e.callbackId,\\n n = this.callbackCapabilities[t];\\n if (!n) throw new Error(\\"Cannot resolve callback \\".concat(t));\\n delete this.callbackCapabilities[t];\\n if (e.callback === r) n.resolve(e.data);else {\\n if (e.callback !== s) throw new Error(\\"Unexpected callback case\\");\\n n.reject(wrapReason(e.reason));\\n }\\n return;\\n }\\n const i = this.actionHandler[e.action];\\n if (!i) throw new Error(\\"Unknown action from worker: \\".concat(e.action));\\n if (e.callbackId) {\\n const t = this.sourceName,\\n a = e.sourceName;\\n new Promise(function (t) {\\n t(i(e.data));\\n }).then(function (i) {\\n _n6.postMessage({\\n sourceName: t,\\n targetName: a,\\n callback: r,\\n callbackId: e.callbackId,\\n data: i\\n });\\n }, function (i) {\\n _n6.postMessage({\\n sourceName: t,\\n targetName: a,\\n callback: s,\\n callbackId: e.callbackId,\\n reason: wrapReason(i)\\n });\\n });\\n } else e.streamId ? _classPrivateMethodGet(this, _Xt, _Xt2).call(this, e) : i(e.data);\\n };\\n _n6.addEventListener(\\"message\\", this._onComObjOnMessage);\\n }\\n on(t, e) {\\n const n = this.actionHandler;\\n if (n[t]) throw new Error(\\"There is already an actionName called \\\\\\"\\".concat(t, \\"\\\\\\"\\"));\\n n[t] = e;\\n }\\n send(t, e, n) {\\n this.comObj.postMessage({\\n sourceName: this.sourceName,\\n targetName: this.targetName,\\n action: t,\\n data: e\\n }, n);\\n }\\n sendWithPromise(t, e, n) {\\n const r = this.callbackId++,\\n s = new i.PromiseCapability();\\n this.callbackCapabilities[r] = s;\\n try {\\n this.comObj.postMessage({\\n sourceName: this.sourceName,\\n targetName: this.targetName,\\n action: t,\\n callbackId: r,\\n data: e\\n }, n);\\n } catch (t) {\\n s.reject(t);\\n }\\n return s.promise;\\n }\\n sendWithStream(t, e, n, r) {\\n const s = this.streamId++,\\n o = this.sourceName,\\n l = this.targetName,\\n c = this.comObj;\\n return new ReadableStream({\\n start: n => {\\n const a = new i.PromiseCapability();\\n this.streamControllers[s] = {\\n controller: n,\\n startCall: a,\\n pullCall: null,\\n cancelCall: null,\\n isClosed: !1\\n };\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n action: t,\\n streamId: s,\\n data: e,\\n desiredSize: n.desiredSize\\n }, r);\\n return a.promise;\\n },\\n pull: t => {\\n const e = new i.PromiseCapability();\\n this.streamControllers[s].pullCall = e;\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n stream: d,\\n streamId: s,\\n desiredSize: t.desiredSize\\n });\\n return e.promise;\\n },\\n cancel: t => {\\n (0, i.assert)(t instanceof Error, \\"cancel must have a valid reason\\");\\n const e = new i.PromiseCapability();\\n this.streamControllers[s].cancelCall = e;\\n this.streamControllers[s].isClosed = !0;\\n c.postMessage({\\n sourceName: o,\\n targetName: l,\\n stream: a,\\n streamId: s,\\n reason: wrapReason(t)\\n });\\n return e.promise;\\n }\\n }, n);\\n }\\n destroy() {\\n this.comObj.removeEventListener(\\"message\\", this._onComObjOnMessage);\\n }\\n });\\n function _Xt2(t) {\\n const e = t.streamId,\\n n = this.sourceName,\\n r = t.sourceName,\\n s = this.comObj,\\n a = this,\\n o = this.actionHandler[t.action],\\n d = {\\n enqueue(t) {\\n let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,\\n o = arguments.length > 2 ? arguments[2] : void 0;\\n if (this.isCancelled) return;\\n const l = this.desiredSize;\\n this.desiredSize -= a;\\n if (l > 0 && this.desiredSize <= 0) {\\n this.sinkCapability = new i.PromiseCapability();\\n this.ready = this.sinkCapability.promise;\\n }\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: c,\\n streamId: e,\\n chunk: t\\n }, o);\\n },\\n close() {\\n if (!this.isCancelled) {\\n this.isCancelled = !0;\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: l,\\n streamId: e\\n });\\n delete a.streamSinks[e];\\n }\\n },\\n error(t) {\\n (0, i.assert)(t instanceof Error, \\"error must have a valid reason\\");\\n if (!this.isCancelled) {\\n this.isCancelled = !0;\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: h,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n }\\n },\\n sinkCapability: new i.PromiseCapability(),\\n onPull: null,\\n onCancel: null,\\n isCancelled: !1,\\n desiredSize: t.desiredSize,\\n ready: null\\n };\\n d.sinkCapability.resolve();\\n d.ready = d.sinkCapability.promise;\\n this.streamSinks[e] = d;\\n new Promise(function (e) {\\n e(o(t.data, d));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: p,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: p,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n }\\n function _$t2(t) {\\n const e = t.streamId,\\n n = this.sourceName,\\n r = t.sourceName,\\n s = this.comObj,\\n f = this.streamControllers[e],\\n g = this.streamSinks[e];\\n switch (t.stream) {\\n case p:\\n t.success ? f.startCall.resolve() : f.startCall.reject(wrapReason(t.reason));\\n break;\\n case u:\\n t.success ? f.pullCall.resolve() : f.pullCall.reject(wrapReason(t.reason));\\n break;\\n case d:\\n if (!g) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n success: !0\\n });\\n break;\\n }\\n g.desiredSize <= 0 && t.desiredSize > 0 && g.sinkCapability.resolve();\\n g.desiredSize = t.desiredSize;\\n new Promise(function (t) {\\n var _g$onPull;\\n t((_g$onPull = g.onPull) === null || _g$onPull === void 0 ? void 0 : _g$onPull.call(g));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: u,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n break;\\n case c:\\n (0, i.assert)(f, \\"enqueue should have stream controller\\");\\n if (f.isClosed) break;\\n f.controller.enqueue(t.chunk);\\n break;\\n case l:\\n (0, i.assert)(f, \\"close should have stream controller\\");\\n if (f.isClosed) break;\\n f.isClosed = !0;\\n f.controller.close();\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case h:\\n (0, i.assert)(f, \\"error should have stream controller\\");\\n f.controller.error(wrapReason(t.reason));\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case o:\\n t.success ? f.cancelCall.resolve() : f.cancelCall.reject(wrapReason(t.reason));\\n _classPrivateMethodGet(this, _Kt, _Kt2).call(this, f, e);\\n break;\\n case a:\\n if (!g) break;\\n new Promise(function (e) {\\n var _g$onCancel;\\n e((_g$onCancel = g.onCancel) === null || _g$onCancel === void 0 ? void 0 : _g$onCancel.call(g, wrapReason(t.reason)));\\n }).then(function () {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: o,\\n streamId: e,\\n success: !0\\n });\\n }, function (t) {\\n s.postMessage({\\n sourceName: n,\\n targetName: r,\\n stream: o,\\n streamId: e,\\n reason: wrapReason(t)\\n });\\n });\\n g.sinkCapability.reject(wrapReason(t.reason));\\n g.isCancelled = !0;\\n delete this.streamSinks[e];\\n break;\\n default:\\n throw new Error(\\"Unexpected stream case\\");\\n }\\n }\\n async function _Kt2(t, e) {\\n var _t$startCall, _t$pullCall, _t$cancelCall;\\n await Promise.allSettled([(_t$startCall = t.startCall) === null || _t$startCall === void 0 ? void 0 : _t$startCall.promise, (_t$pullCall = t.pullCall) === null || _t$pullCall === void 0 ? void 0 : _t$pullCall.promise, (_t$cancelCall = t.cancelCall) === null || _t$cancelCall === void 0 ? void 0 : _t$cancelCall.promise]);\\n delete this.streamControllers[e];\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Yt, _Jt;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.Metadata = void 0;\\n var i = n(1);\\n e.Metadata = (_Yt = /*#__PURE__*/new WeakMap(), _Jt = /*#__PURE__*/new WeakMap(), class Metadata {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _Yt, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Jt, {\\n writable: true,\\n value: void 0\\n });\\n let {\\n parsedData: e,\\n rawData: n\\n } = t;\\n _classPrivateFieldSet(this, _Yt, e);\\n _classPrivateFieldSet(this, _Jt, n);\\n }\\n getRaw() {\\n return _classPrivateFieldGet(this, _Jt);\\n }\\n get(t) {\\n var _classPrivateFieldGet8;\\n return (_classPrivateFieldGet8 = _classPrivateFieldGet(this, _Yt).get(t)) !== null && _classPrivateFieldGet8 !== void 0 ? _classPrivateFieldGet8 : null;\\n }\\n getAll() {\\n return (0, i.objectFromMap)(_classPrivateFieldGet(this, _Yt));\\n }\\n has(t) {\\n return _classPrivateFieldGet(this, _Yt).has(t);\\n }\\n });\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _Zt, _te, _ee, _ne, _ie;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.OptionalContentConfig = void 0;\\n var i = n(1),\\n r = n(169);\\n const s = Symbol(\\"INTERNAL\\");\\n var _Qt = /*#__PURE__*/new WeakMap();\\n class OptionalContentGroup {\\n constructor(t, e) {\\n _classPrivateFieldInitSpec(this, _Qt, {\\n writable: true,\\n value: !0\\n });\\n this.name = t;\\n this.intent = e;\\n }\\n get visible() {\\n return _classPrivateFieldGet(this, _Qt);\\n }\\n _setVisible(t, e) {\\n t !== s && (0, i.unreachable)(\\"Internal method \`_setVisible\` called.\\");\\n _classPrivateFieldSet(this, _Qt, e);\\n }\\n }\\n e.OptionalContentConfig = (_Zt = /*#__PURE__*/new WeakMap(), _te = /*#__PURE__*/new WeakMap(), _ee = /*#__PURE__*/new WeakMap(), _ne = /*#__PURE__*/new WeakMap(), _ie = /*#__PURE__*/new WeakSet(), class OptionalContentConfig {\\n constructor(_t12) {\\n _classPrivateMethodInitSpec(this, _ie);\\n _classPrivateFieldInitSpec(this, _Zt, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _te, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _ee, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ne, {\\n writable: true,\\n value: null\\n });\\n this.name = null;\\n this.creator = null;\\n if (null !== _t12) {\\n this.name = _t12.name;\\n this.creator = _t12.creator;\\n _classPrivateFieldSet(this, _ne, _t12.order);\\n for (const e of _t12.groups) _classPrivateFieldGet(this, _te).set(e.id, new OptionalContentGroup(e.name, e.intent));\\n if (\\"OFF\\" === _t12.baseState) for (const t of _classPrivateFieldGet(this, _te).values()) t._setVisible(s, !1);\\n for (const e of _t12.on) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !0);\\n for (const e of _t12.off) _classPrivateFieldGet(this, _te).get(e)._setVisible(s, !1);\\n _classPrivateFieldSet(this, _ee, this.getHash());\\n }\\n }\\n isVisible(t) {\\n if (0 === _classPrivateFieldGet(this, _te).size) return !0;\\n if (!t) {\\n (0, i.warn)(\\"Optional content group not defined.\\");\\n return !0;\\n }\\n if (\\"OCG\\" === t.type) {\\n if (!_classPrivateFieldGet(this, _te).has(t.id)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(t.id));\\n return !0;\\n }\\n return _classPrivateFieldGet(this, _te).get(t.id).visible;\\n }\\n if (\\"OCMD\\" === t.type) {\\n if (t.expression) return _classPrivateMethodGet(this, _ie, _ie2).call(this, t.expression);\\n if (!t.policy || \\"AnyOn\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !0;\\n }\\n return !1;\\n }\\n if (\\"AllOn\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !1;\\n }\\n return !0;\\n }\\n if (\\"AnyOff\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (!_classPrivateFieldGet(this, _te).get(e).visible) return !0;\\n }\\n return !1;\\n }\\n if (\\"AllOff\\" === t.policy) {\\n for (const e of t.ids) {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n if (_classPrivateFieldGet(this, _te).get(e).visible) return !1;\\n }\\n return !0;\\n }\\n (0, i.warn)(\\"Unknown optional content policy \\".concat(t.policy, \\".\\"));\\n return !0;\\n }\\n (0, i.warn)(\\"Unknown group type \\".concat(t.type, \\".\\"));\\n return !0;\\n }\\n setVisibility(t) {\\n let e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\\n if (_classPrivateFieldGet(this, _te).has(t)) {\\n _classPrivateFieldGet(this, _te).get(t)._setVisible(s, !!e);\\n _classPrivateFieldSet(this, _Zt, null);\\n } else (0, i.warn)(\\"Optional content group not found: \\".concat(t));\\n }\\n get hasInitialVisibility() {\\n return this.getHash() === _classPrivateFieldGet(this, _ee);\\n }\\n getOrder() {\\n return _classPrivateFieldGet(this, _te).size ? _classPrivateFieldGet(this, _ne) ? _classPrivateFieldGet(this, _ne).slice() : [..._classPrivateFieldGet(this, _te).keys()] : null;\\n }\\n getGroups() {\\n return _classPrivateFieldGet(this, _te).size > 0 ? (0, i.objectFromMap)(_classPrivateFieldGet(this, _te)) : null;\\n }\\n getGroup(t) {\\n return _classPrivateFieldGet(this, _te).get(t) || null;\\n }\\n getHash() {\\n if (null !== _classPrivateFieldGet(this, _Zt)) return _classPrivateFieldGet(this, _Zt);\\n const t = new r.MurmurHash3_64();\\n for (const [e, n] of _classPrivateFieldGet(this, _te)) t.update(\\"\\".concat(e, \\":\\").concat(n.visible));\\n return _classPrivateFieldSet(this, _Zt, t.hexdigest());\\n }\\n });\\n function _ie2(t) {\\n const e = t.length;\\n if (e < 2) return !0;\\n const n = t[0];\\n for (let r = 1; r < e; r++) {\\n const e = t[r];\\n let s;\\n if (Array.isArray(e)) s = _classPrivateMethodGet(this, _ie, _ie2).call(this, e);else {\\n if (!_classPrivateFieldGet(this, _te).has(e)) {\\n (0, i.warn)(\\"Optional content group not found: \\".concat(e));\\n return !0;\\n }\\n s = _classPrivateFieldGet(this, _te).get(e).visible;\\n }\\n switch (n) {\\n case \\"And\\":\\n if (!s) return !1;\\n break;\\n case \\"Or\\":\\n if (s) return !0;\\n break;\\n case \\"Not\\":\\n return !s;\\n default:\\n return !0;\\n }\\n }\\n return \\"And\\" === n;\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFDataTransportStream = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(167);\\n e.PDFDataTransportStream = class PDFDataTransportStream {\\n constructor(t, e) {\\n let {\\n length: n,\\n initialData: r,\\n progressiveDone: s = !1,\\n contentDispositionFilename: a = null,\\n disableRange: o = !1,\\n disableStream: l = !1\\n } = t;\\n (0, i.assert)(e, 'PDFDataTransportStream - missing required \\"pdfDataRangeTransport\\" argument.');\\n this._queuedChunks = [];\\n this._progressiveDone = s;\\n this._contentDispositionFilename = a;\\n if ((r === null || r === void 0 ? void 0 : r.length) > 0) {\\n const t = r instanceof Uint8Array && r.byteLength === r.buffer.byteLength ? r.buffer : new Uint8Array(r).buffer;\\n this._queuedChunks.push(t);\\n }\\n this._pdfDataRangeTransport = e;\\n this._isStreamingSupported = !l;\\n this._isRangeSupported = !o;\\n this._contentLength = n;\\n this._fullRequestReader = null;\\n this._rangeReaders = [];\\n this._pdfDataRangeTransport.addRangeListener((t, e) => {\\n this._onReceiveData({\\n begin: t,\\n chunk: e\\n });\\n });\\n this._pdfDataRangeTransport.addProgressListener((t, e) => {\\n this._onProgress({\\n loaded: t,\\n total: e\\n });\\n });\\n this._pdfDataRangeTransport.addProgressiveReadListener(t => {\\n this._onReceiveData({\\n chunk: t\\n });\\n });\\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\\n this._onProgressiveDone();\\n });\\n this._pdfDataRangeTransport.transportReady();\\n }\\n _onReceiveData(t) {\\n let {\\n begin: e,\\n chunk: n\\n } = t;\\n const r = n instanceof Uint8Array && n.byteLength === n.buffer.byteLength ? n.buffer : new Uint8Array(n).buffer;\\n if (void 0 === e) this._fullRequestReader ? this._fullRequestReader._enqueue(r) : this._queuedChunks.push(r);else {\\n const t = this._rangeReaders.some(function (t) {\\n if (t._begin !== e) return !1;\\n t._enqueue(r);\\n return !0;\\n });\\n (0, i.assert)(t, \\"_onReceiveData - no \`PDFDataTransportStreamRangeReader\` instance found.\\");\\n }\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea, _this$_fullRequestRea2;\\n return (_this$_fullRequestRea = (_this$_fullRequestRea2 = this._fullRequestReader) === null || _this$_fullRequestRea2 === void 0 ? void 0 : _this$_fullRequestRea2._loaded) !== null && _this$_fullRequestRea !== void 0 ? _this$_fullRequestRea : 0;\\n }\\n _onProgress(t) {\\n var _this$_rangeReaders$, _this$_rangeReaders$$, _this$_fullRequestRea3, _this$_fullRequestRea4;\\n void 0 === t.total ? (_this$_rangeReaders$ = this._rangeReaders[0]) === null || _this$_rangeReaders$ === void 0 || (_this$_rangeReaders$$ = _this$_rangeReaders$.onProgress) === null || _this$_rangeReaders$$ === void 0 ? void 0 : _this$_rangeReaders$$.call(_this$_rangeReaders$, {\\n loaded: t.loaded\\n }) : (_this$_fullRequestRea3 = this._fullRequestReader) === null || _this$_fullRequestRea3 === void 0 || (_this$_fullRequestRea4 = _this$_fullRequestRea3.onProgress) === null || _this$_fullRequestRea4 === void 0 ? void 0 : _this$_fullRequestRea4.call(_this$_fullRequestRea3, {\\n loaded: t.loaded,\\n total: t.total\\n });\\n }\\n _onProgressiveDone() {\\n var _this$_fullRequestRea5;\\n (_this$_fullRequestRea5 = this._fullRequestReader) === null || _this$_fullRequestRea5 === void 0 ? void 0 : _this$_fullRequestRea5.progressiveDone();\\n this._progressiveDone = !0;\\n }\\n _removeRangeReader(t) {\\n const e = this._rangeReaders.indexOf(t);\\n e >= 0 && this._rangeReaders.splice(e, 1);\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFDataTransportStream.getFullReader can only be called once.\\");\\n const t = this._queuedChunks;\\n this._queuedChunks = null;\\n return new PDFDataTransportStreamReader(this, t, this._progressiveDone, this._contentDispositionFilename);\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = new PDFDataTransportStreamRangeReader(this, t, e);\\n this._pdfDataRangeTransport.requestDataRange(t, e);\\n this._rangeReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea6;\\n (_this$_fullRequestRea6 = this._fullRequestReader) === null || _this$_fullRequestRea6 === void 0 ? void 0 : _this$_fullRequestRea6.cancel(t);\\n for (const e of this._rangeReaders.slice(0)) e.cancel(t);\\n this._pdfDataRangeTransport.abort();\\n }\\n };\\n class PDFDataTransportStreamReader {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\\n i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null;\\n this._stream = t;\\n this._done = n || !1;\\n this._filename = (0, r.isPdfFile)(i) ? i : null;\\n this._queuedChunks = e || [];\\n this._loaded = 0;\\n for (const t of this._queuedChunks) this._loaded += t.byteLength;\\n this._requests = [];\\n this._headersReady = Promise.resolve();\\n t._fullRequestReader = this;\\n this.onProgress = null;\\n }\\n _enqueue(t) {\\n if (!this._done) {\\n if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: t,\\n done: !1\\n });\\n } else this._queuedChunks.push(t);\\n this._loaded += t.byteLength;\\n }\\n }\\n get headersReady() {\\n return this._headersReady;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get isRangeSupported() {\\n return this._stream._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._stream._isStreamingSupported;\\n }\\n get contentLength() {\\n return this._stream._contentLength;\\n }\\n async read() {\\n if (this._queuedChunks.length > 0) {\\n return {\\n value: this._queuedChunks.shift(),\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n progressiveDone() {\\n this._done || (this._done = !0);\\n }\\n }\\n class PDFDataTransportStreamRangeReader {\\n constructor(t, e, n) {\\n this._stream = t;\\n this._begin = e;\\n this._end = n;\\n this._queuedChunk = null;\\n this._requests = [];\\n this._done = !1;\\n this.onProgress = null;\\n }\\n _enqueue(t) {\\n if (!this._done) {\\n if (0 === this._requests.length) this._queuedChunk = t;else {\\n this._requests.shift().resolve({\\n value: t,\\n done: !1\\n });\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n this._done = !0;\\n this._stream._removeRangeReader(this);\\n }\\n }\\n get isStreamingSupported() {\\n return !1;\\n }\\n async read() {\\n if (this._queuedChunk) {\\n const t = this._queuedChunk;\\n this._queuedChunk = null;\\n return {\\n value: t,\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._stream._removeRangeReader(this);\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFFetchStream = void 0;\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(89);\\n var i = n(1),\\n r = n(181);\\n function createFetchOptions(t, e, n) {\\n return {\\n method: \\"GET\\",\\n headers: t,\\n signal: n.signal,\\n mode: \\"cors\\",\\n credentials: e ? \\"include\\" : \\"same-origin\\",\\n redirect: \\"follow\\"\\n };\\n }\\n function createHeaders(t) {\\n const e = new Headers();\\n for (const n in t) {\\n const i = t[n];\\n void 0 !== i && e.append(n, i);\\n }\\n return e;\\n }\\n function getArrayBuffer(t) {\\n if (t instanceof Uint8Array) return t.buffer;\\n if (t instanceof ArrayBuffer) return t;\\n (0, i.warn)(\\"getArrayBuffer - unexpected data format: \\".concat(t));\\n return new Uint8Array(t).buffer;\\n }\\n e.PDFFetchStream = class PDFFetchStream {\\n constructor(t) {\\n this.source = t;\\n this.isHttp = /^https?:/i.test(t.url);\\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea7, _this$_fullRequestRea8;\\n return (_this$_fullRequestRea7 = (_this$_fullRequestRea8 = this._fullRequestReader) === null || _this$_fullRequestRea8 === void 0 ? void 0 : _this$_fullRequestRea8._loaded) !== null && _this$_fullRequestRea7 !== void 0 ? _this$_fullRequestRea7 : 0;\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFFetchStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = new PDFFetchStreamReader(this);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = new PDFFetchStreamRangeReader(this, t, e);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea9;\\n (_this$_fullRequestRea9 = this._fullRequestReader) === null || _this$_fullRequestRea9 === void 0 ? void 0 : _this$_fullRequestRea9.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class PDFFetchStreamReader {\\n constructor(t) {\\n this._stream = t;\\n this._reader = null;\\n this._loaded = 0;\\n this._filename = null;\\n const e = t.source;\\n this._withCredentials = e.withCredentials || !1;\\n this._contentLength = e.length;\\n this._headersCapability = new i.PromiseCapability();\\n this._disableRange = e.disableRange || !1;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._abortController = new AbortController();\\n this._isStreamingSupported = !e.disableStream;\\n this._isRangeSupported = !e.disableRange;\\n this._headers = createHeaders(this._stream.httpHeaders);\\n const n = e.url;\\n fetch(n, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, n);\\n this._reader = t.body.getReader();\\n this._headersCapability.resolve();\\n const getResponseHeader = e => t.headers.get(e),\\n {\\n allowRangeRequests: e,\\n suggestedLength: s\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: this._stream.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n this._isRangeSupported = e;\\n this._contentLength = s || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n !this._isStreamingSupported && this._isRangeSupported && this.cancel(new i.AbortException(\\"Streaming is disabled.\\"));\\n }).catch(this._headersCapability.reject);\\n this.onProgress = null;\\n }\\n get headersReady() {\\n return this._headersCapability.promise;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress;\\n await this._headersCapability.promise;\\n const {\\n value: t,\\n done: e\\n } = await this._reader.read();\\n if (e) return {\\n value: t,\\n done: e\\n };\\n this._loaded += t.byteLength;\\n (_this$onProgress = this.onProgress) === null || _this$onProgress === void 0 ? void 0 : _this$onProgress.call(this, {\\n loaded: this._loaded,\\n total: this._contentLength\\n });\\n return {\\n value: getArrayBuffer(t),\\n done: !1\\n };\\n }\\n cancel(t) {\\n var _this$_reader;\\n (_this$_reader = this._reader) === null || _this$_reader === void 0 ? void 0 : _this$_reader.cancel(t);\\n this._abortController.abort();\\n }\\n }\\n class PDFFetchStreamRangeReader {\\n constructor(t, e, n) {\\n this._stream = t;\\n this._reader = null;\\n this._loaded = 0;\\n const s = t.source;\\n this._withCredentials = s.withCredentials || !1;\\n this._readCapability = new i.PromiseCapability();\\n this._isStreamingSupported = !s.disableStream;\\n this._abortController = new AbortController();\\n this._headers = createHeaders(this._stream.httpHeaders);\\n this._headers.append(\\"Range\\", \\"bytes=\\".concat(e, \\"-\\").concat(n - 1));\\n const a = s.url;\\n fetch(a, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(t => {\\n if (!(0, r.validateResponseStatus)(t.status)) throw (0, r.createResponseStatusError)(t.status, a);\\n this._readCapability.resolve();\\n this._reader = t.body.getReader();\\n }).catch(this._readCapability.reject);\\n this.onProgress = null;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress2;\\n await this._readCapability.promise;\\n const {\\n value: t,\\n done: e\\n } = await this._reader.read();\\n if (e) return {\\n value: t,\\n done: e\\n };\\n this._loaded += t.byteLength;\\n (_this$onProgress2 = this.onProgress) === null || _this$onProgress2 === void 0 ? void 0 : _this$onProgress2.call(this, {\\n loaded: this._loaded\\n });\\n return {\\n value: getArrayBuffer(t),\\n done: !1\\n };\\n }\\n cancel(t) {\\n var _this$_reader2;\\n (_this$_reader2 = this._reader) === null || _this$_reader2 === void 0 ? void 0 : _this$_reader2.cancel(t);\\n this._abortController.abort();\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.createResponseStatusError = function createResponseStatusError(t, e) {\\n if (404 === t || 0 === t && e.startsWith(\\"file:\\")) return new i.MissingPDFException('Missing PDF \\"' + e + '\\".');\\n return new i.UnexpectedResponseException(\\"Unexpected server response (\\".concat(t, \\") while retrieving PDF \\\\\\"\\").concat(e, \\"\\\\\\".\\"), t);\\n };\\n e.extractFilenameFromHeader = function extractFilenameFromHeader(t) {\\n const e = t(\\"Content-Disposition\\");\\n if (e) {\\n let t = (0, r.getFilenameFromContentDispositionHeader)(e);\\n if (t.includes(\\"%\\")) try {\\n t = decodeURIComponent(t);\\n } catch (_unused12) {}\\n if ((0, s.isPdfFile)(t)) return t;\\n }\\n return null;\\n };\\n e.validateRangeRequestCapabilities = function validateRangeRequestCapabilities(t) {\\n let {\\n getResponseHeader: e,\\n isHttp: n,\\n rangeChunkSize: i,\\n disableRange: r\\n } = t;\\n const s = {\\n allowRangeRequests: !1,\\n suggestedLength: void 0\\n },\\n a = parseInt(e(\\"Content-Length\\"), 10);\\n if (!Number.isInteger(a)) return s;\\n s.suggestedLength = a;\\n if (a <= 2 * i) return s;\\n if (r || !n) return s;\\n if (\\"bytes\\" !== e(\\"Accept-Ranges\\")) return s;\\n if (\\"identity\\" !== (e(\\"Content-Encoding\\") || \\"identity\\")) return s;\\n s.allowRangeRequests = !0;\\n return s;\\n };\\n e.validateResponseStatus = function validateResponseStatus(t) {\\n return 200 === t || 206 === t;\\n };\\n var i = n(1),\\n r = n(182),\\n s = n(167);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.getFilenameFromContentDispositionHeader = function getFilenameFromContentDispositionHeader(t) {\\n let e = !0,\\n n = toParamRegExp(\\"filename\\\\\\\\*\\", \\"i\\").exec(t);\\n if (n) {\\n n = n[1];\\n let t = rfc2616unquote(n);\\n t = unescape(t);\\n t = rfc5987decode(t);\\n t = rfc2047decode(t);\\n return fixupEncoding(t);\\n }\\n n = function rfc2231getparam(t) {\\n const e = [];\\n let n;\\n const i = toParamRegExp(\\"filename\\\\\\\\*((?!0\\\\\\\\d)\\\\\\\\d+)(\\\\\\\\*?)\\", \\"ig\\");\\n for (; null !== (n = i.exec(t));) {\\n let [, t, i, r] = n;\\n t = parseInt(t, 10);\\n if (t in e) {\\n if (0 === t) break;\\n } else e[t] = [i, r];\\n }\\n const r = [];\\n for (let t = 0; t < e.length && t in e; ++t) {\\n let [n, i] = e[t];\\n i = rfc2616unquote(i);\\n if (n) {\\n i = unescape(i);\\n 0 === t && (i = rfc5987decode(i));\\n }\\n r.push(i);\\n }\\n return r.join(\\"\\");\\n }(t);\\n if (n) {\\n return fixupEncoding(rfc2047decode(n));\\n }\\n n = toParamRegExp(\\"filename\\", \\"i\\").exec(t);\\n if (n) {\\n n = n[1];\\n let t = rfc2616unquote(n);\\n t = rfc2047decode(t);\\n return fixupEncoding(t);\\n }\\n function toParamRegExp(t, e) {\\n return new RegExp(\\"(?:^|;)\\\\\\\\s*\\" + t + '\\\\\\\\s*=\\\\\\\\s*([^\\";\\\\\\\\s][^;\\\\\\\\s]*|\\"(?:[^\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\"?)+\\"?)', e);\\n }\\n function textdecode(t, n) {\\n if (t) {\\n if (!/^[\\\\x00-\\\\xFF]+$/.test(n)) return n;\\n try {\\n const r = new TextDecoder(t, {\\n fatal: !0\\n }),\\n s = (0, i.stringToBytes)(n);\\n n = r.decode(s);\\n e = !1;\\n } catch (_unused13) {}\\n }\\n return n;\\n }\\n function fixupEncoding(t) {\\n if (e && /[\\\\x80-\\\\xff]/.test(t)) {\\n t = textdecode(\\"utf-8\\", t);\\n e && (t = textdecode(\\"iso-8859-1\\", t));\\n }\\n return t;\\n }\\n function rfc2616unquote(t) {\\n if (t.startsWith('\\"')) {\\n const e = t.slice(1).split('\\\\\\\\\\"');\\n for (let t = 0; t < e.length; ++t) {\\n const n = e[t].indexOf('\\"');\\n if (-1 !== n) {\\n e[t] = e[t].slice(0, n);\\n e.length = t + 1;\\n }\\n e[t] = e[t].replaceAll(/\\\\\\\\(.)/g, \\"$1\\");\\n }\\n t = e.join('\\"');\\n }\\n return t;\\n }\\n function rfc5987decode(t) {\\n const e = t.indexOf(\\"'\\");\\n if (-1 === e) return t;\\n return textdecode(t.slice(0, e), t.slice(e + 1).replace(/^[^']*'/, \\"\\"));\\n }\\n function rfc2047decode(t) {\\n return !t.startsWith(\\"=?\\") || /[\\\\x00-\\\\x19\\\\x80-\\\\xff]/.test(t) ? t : t.replaceAll(/=\\\\?([\\\\w-]*)\\\\?([QqBb])\\\\?((?:[^?]|\\\\?(?!=))*)\\\\?=/g, function (t, e, n, i) {\\n if (\\"q\\" === n || \\"Q\\" === n) return textdecode(e, i = (i = i.replaceAll(\\"_\\", \\" \\")).replaceAll(/=([0-9a-fA-F]{2})/g, function (t, e) {\\n return String.fromCharCode(parseInt(e, 16));\\n }));\\n try {\\n i = atob(i);\\n } catch (_unused14) {}\\n return textdecode(e, i);\\n });\\n }\\n return \\"\\";\\n };\\n n(89);\\n n(148);\\n var i = n(1);\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFNetworkStream = void 0;\\n n(89);\\n var i = n(1),\\n r = n(181);\\n class NetworkManager {\\n constructor(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\\n this.url = t;\\n this.isHttp = /^https?:/i.test(t);\\n this.httpHeaders = this.isHttp && e.httpHeaders || Object.create(null);\\n this.withCredentials = e.withCredentials || !1;\\n this.currXhrId = 0;\\n this.pendingRequests = Object.create(null);\\n }\\n requestRange(t, e, n) {\\n const i = {\\n begin: t,\\n end: e\\n };\\n for (const t in n) i[t] = n[t];\\n return this.request(i);\\n }\\n requestFull(t) {\\n return this.request(t);\\n }\\n request(t) {\\n const e = new XMLHttpRequest(),\\n n = this.currXhrId++,\\n i = this.pendingRequests[n] = {\\n xhr: e\\n };\\n e.open(\\"GET\\", this.url);\\n e.withCredentials = this.withCredentials;\\n for (const t in this.httpHeaders) {\\n const n = this.httpHeaders[t];\\n void 0 !== n && e.setRequestHeader(t, n);\\n }\\n if (this.isHttp && \\"begin\\" in t && \\"end\\" in t) {\\n e.setRequestHeader(\\"Range\\", \\"bytes=\\".concat(t.begin, \\"-\\").concat(t.end - 1));\\n i.expectedStatus = 206;\\n } else i.expectedStatus = 200;\\n e.responseType = \\"arraybuffer\\";\\n t.onError && (e.onerror = function (n) {\\n t.onError(e.status);\\n });\\n e.onreadystatechange = this.onStateChange.bind(this, n);\\n e.onprogress = this.onProgress.bind(this, n);\\n i.onHeadersReceived = t.onHeadersReceived;\\n i.onDone = t.onDone;\\n i.onError = t.onError;\\n i.onProgress = t.onProgress;\\n e.send(null);\\n return n;\\n }\\n onProgress(t, e) {\\n var _n$onProgress;\\n const n = this.pendingRequests[t];\\n n && ((_n$onProgress = n.onProgress) === null || _n$onProgress === void 0 ? void 0 : _n$onProgress.call(n, e));\\n }\\n onStateChange(t, e) {\\n var _n$onError3;\\n const n = this.pendingRequests[t];\\n if (!n) return;\\n const r = n.xhr;\\n if (r.readyState >= 2 && n.onHeadersReceived) {\\n n.onHeadersReceived();\\n delete n.onHeadersReceived;\\n }\\n if (4 !== r.readyState) return;\\n if (!(t in this.pendingRequests)) return;\\n delete this.pendingRequests[t];\\n if (0 === r.status && this.isHttp) {\\n var _n$onError;\\n (_n$onError = n.onError) === null || _n$onError === void 0 ? void 0 : _n$onError.call(n, r.status);\\n return;\\n }\\n const s = r.status || 200;\\n if (!(200 === s && 206 === n.expectedStatus) && s !== n.expectedStatus) {\\n var _n$onError2;\\n (_n$onError2 = n.onError) === null || _n$onError2 === void 0 ? void 0 : _n$onError2.call(n, r.status);\\n return;\\n }\\n const a = function getArrayBuffer(t) {\\n const e = t.response;\\n return \\"string\\" != typeof e ? e : (0, i.stringToBytes)(e).buffer;\\n }(r);\\n if (206 === s) {\\n const t = r.getResponseHeader(\\"Content-Range\\"),\\n e = /bytes (\\\\d+)-(\\\\d+)\\\\/(\\\\d+)/.exec(t);\\n n.onDone({\\n begin: parseInt(e[1], 10),\\n chunk: a\\n });\\n } else a ? n.onDone({\\n begin: 0,\\n chunk: a\\n }) : (_n$onError3 = n.onError) === null || _n$onError3 === void 0 ? void 0 : _n$onError3.call(n, r.status);\\n }\\n getRequestXhr(t) {\\n return this.pendingRequests[t].xhr;\\n }\\n isPendingRequest(t) {\\n return t in this.pendingRequests;\\n }\\n abortRequest(t) {\\n const e = this.pendingRequests[t].xhr;\\n delete this.pendingRequests[t];\\n e.abort();\\n }\\n }\\n e.PDFNetworkStream = class PDFNetworkStream {\\n constructor(t) {\\n this._source = t;\\n this._manager = new NetworkManager(t.url, {\\n httpHeaders: t.httpHeaders,\\n withCredentials: t.withCredentials\\n });\\n this._rangeChunkSize = t.rangeChunkSize;\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n _onRangeRequestReaderClosed(t) {\\n const e = this._rangeRequestReaders.indexOf(t);\\n e >= 0 && this._rangeRequestReaders.splice(e, 1);\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFNetworkStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n const n = new PDFNetworkStreamRangeRequestReader(this._manager, t, e);\\n n.onClosed = this._onRangeRequestReaderClosed.bind(this);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea10;\\n (_this$_fullRequestRea10 = this._fullRequestReader) === null || _this$_fullRequestRea10 === void 0 ? void 0 : _this$_fullRequestRea10.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class PDFNetworkStreamFullRequestReader {\\n constructor(t, e) {\\n this._manager = t;\\n const n = {\\n onHeadersReceived: this._onHeadersReceived.bind(this),\\n onDone: this._onDone.bind(this),\\n onError: this._onError.bind(this),\\n onProgress: this._onProgress.bind(this)\\n };\\n this._url = e.url;\\n this._fullRequestId = t.requestFull(n);\\n this._headersReceivedCapability = new i.PromiseCapability();\\n this._disableRange = e.disableRange || !1;\\n this._contentLength = e.length;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._isStreamingSupported = !1;\\n this._isRangeSupported = !1;\\n this._cachedChunks = [];\\n this._requests = [];\\n this._done = !1;\\n this._storedError = void 0;\\n this._filename = null;\\n this.onProgress = null;\\n }\\n _onHeadersReceived() {\\n const t = this._fullRequestId,\\n e = this._manager.getRequestXhr(t),\\n getResponseHeader = t => e.getResponseHeader(t),\\n {\\n allowRangeRequests: n,\\n suggestedLength: i\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: this._manager.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n n && (this._isRangeSupported = !0);\\n this._contentLength = i || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n this._isRangeSupported && this._manager.abortRequest(t);\\n this._headersReceivedCapability.resolve();\\n }\\n _onDone(t) {\\n if (t) if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: t.chunk,\\n done: !1\\n });\\n } else this._cachedChunks.push(t.chunk);\\n this._done = !0;\\n if (!(this._cachedChunks.length > 0)) {\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n }\\n }\\n _onError(t) {\\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\\n this._headersReceivedCapability.reject(this._storedError);\\n for (const t of this._requests) t.reject(this._storedError);\\n this._requests.length = 0;\\n this._cachedChunks.length = 0;\\n }\\n _onProgress(t) {\\n var _this$onProgress3;\\n (_this$onProgress3 = this.onProgress) === null || _this$onProgress3 === void 0 ? void 0 : _this$onProgress3.call(this, {\\n loaded: t.loaded,\\n total: t.lengthComputable ? t.total : this._contentLength\\n });\\n }\\n get filename() {\\n return this._filename;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get headersReady() {\\n return this._headersReceivedCapability.promise;\\n }\\n async read() {\\n if (this._storedError) throw this._storedError;\\n if (this._cachedChunks.length > 0) {\\n return {\\n value: this._cachedChunks.shift(),\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n this._headersReceivedCapability.reject(t);\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._manager.isPendingRequest(this._fullRequestId) && this._manager.abortRequest(this._fullRequestId);\\n this._fullRequestReader = null;\\n }\\n }\\n class PDFNetworkStreamRangeRequestReader {\\n constructor(t, e, n) {\\n this._manager = t;\\n const i = {\\n onDone: this._onDone.bind(this),\\n onError: this._onError.bind(this),\\n onProgress: this._onProgress.bind(this)\\n };\\n this._url = t.url;\\n this._requestId = t.requestRange(e, n, i);\\n this._requests = [];\\n this._queuedChunk = null;\\n this._done = !1;\\n this._storedError = void 0;\\n this.onProgress = null;\\n this.onClosed = null;\\n }\\n _close() {\\n var _this$onClosed;\\n (_this$onClosed = this.onClosed) === null || _this$onClosed === void 0 ? void 0 : _this$onClosed.call(this, this);\\n }\\n _onDone(t) {\\n const e = t.chunk;\\n if (this._requests.length > 0) {\\n this._requests.shift().resolve({\\n value: e,\\n done: !1\\n });\\n } else this._queuedChunk = e;\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._close();\\n }\\n _onError(t) {\\n this._storedError = (0, r.createResponseStatusError)(t, this._url);\\n for (const t of this._requests) t.reject(this._storedError);\\n this._requests.length = 0;\\n this._queuedChunk = null;\\n }\\n _onProgress(t) {\\n var _this$onProgress4;\\n this.isStreamingSupported || ((_this$onProgress4 = this.onProgress) === null || _this$onProgress4 === void 0 ? void 0 : _this$onProgress4.call(this, {\\n loaded: t.loaded\\n }));\\n }\\n get isStreamingSupported() {\\n return !1;\\n }\\n async read() {\\n if (this._storedError) throw this._storedError;\\n if (null !== this._queuedChunk) {\\n const t = this._queuedChunk;\\n this._queuedChunk = null;\\n return {\\n value: t,\\n done: !1\\n };\\n }\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n const t = new i.PromiseCapability();\\n this._requests.push(t);\\n return t.promise;\\n }\\n cancel(t) {\\n this._done = !0;\\n for (const t of this._requests) t.resolve({\\n value: void 0,\\n done: !0\\n });\\n this._requests.length = 0;\\n this._manager.isPendingRequest(this._requestId) && this._manager.abortRequest(this._requestId);\\n this._close();\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.PDFNodeStream = void 0;\\n n(89);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n var i = n(1),\\n r = n(181);\\n const s = /^file:\\\\/\\\\/\\\\/[a-zA-Z]:\\\\//;\\n e.PDFNodeStream = class PDFNodeStream {\\n constructor(t) {\\n this.source = t;\\n this.url = function parseUrl(t) {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'url'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())),\\n n = e.parse(t);\\n if (\\"file:\\" === n.protocol || n.host) return n;\\n if (/^[a-z]:[/\\\\\\\\]/i.test(t)) return e.parse(\\"file:///\\".concat(t));\\n n.host || (n.protocol = \\"file:\\");\\n return n;\\n }(t.url);\\n this.isHttp = \\"http:\\" === this.url.protocol || \\"https:\\" === this.url.protocol;\\n this.isFsUrl = \\"file:\\" === this.url.protocol;\\n this.httpHeaders = this.isHttp && t.httpHeaders || {};\\n this._fullRequestReader = null;\\n this._rangeRequestReaders = [];\\n }\\n get _progressiveDataLength() {\\n var _this$_fullRequestRea11, _this$_fullRequestRea12;\\n return (_this$_fullRequestRea11 = (_this$_fullRequestRea12 = this._fullRequestReader) === null || _this$_fullRequestRea12 === void 0 ? void 0 : _this$_fullRequestRea12._loaded) !== null && _this$_fullRequestRea11 !== void 0 ? _this$_fullRequestRea11 : 0;\\n }\\n getFullReader() {\\n (0, i.assert)(!this._fullRequestReader, \\"PDFNodeStream.getFullReader can only be called once.\\");\\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\\n return this._fullRequestReader;\\n }\\n getRangeReader(t, e) {\\n if (e <= this._progressiveDataLength) return null;\\n const n = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, t, e) : new PDFNodeStreamRangeReader(this, t, e);\\n this._rangeRequestReaders.push(n);\\n return n;\\n }\\n cancelAllRequests(t) {\\n var _this$_fullRequestRea13;\\n (_this$_fullRequestRea13 = this._fullRequestReader) === null || _this$_fullRequestRea13 === void 0 ? void 0 : _this$_fullRequestRea13.cancel(t);\\n for (const e of this._rangeRequestReaders.slice(0)) e.cancel(t);\\n }\\n };\\n class BaseFullReader {\\n constructor(t) {\\n this._url = t.url;\\n this._done = !1;\\n this._storedError = null;\\n this.onProgress = null;\\n const e = t.source;\\n this._contentLength = e.length;\\n this._loaded = 0;\\n this._filename = null;\\n this._disableRange = e.disableRange || !1;\\n this._rangeChunkSize = e.rangeChunkSize;\\n this._rangeChunkSize || this._disableRange || (this._disableRange = !0);\\n this._isStreamingSupported = !e.disableStream;\\n this._isRangeSupported = !e.disableRange;\\n this._readableStream = null;\\n this._readCapability = new i.PromiseCapability();\\n this._headersCapability = new i.PromiseCapability();\\n }\\n get headersReady() {\\n return this._headersCapability.promise;\\n }\\n get filename() {\\n return this._filename;\\n }\\n get contentLength() {\\n return this._contentLength;\\n }\\n get isRangeSupported() {\\n return this._isRangeSupported;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress5;\\n await this._readCapability.promise;\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n if (this._storedError) throw this._storedError;\\n const t = this._readableStream.read();\\n if (null === t) {\\n this._readCapability = new i.PromiseCapability();\\n return this.read();\\n }\\n this._loaded += t.length;\\n (_this$onProgress5 = this.onProgress) === null || _this$onProgress5 === void 0 ? void 0 : _this$onProgress5.call(this, {\\n loaded: this._loaded,\\n total: this._contentLength\\n });\\n return {\\n value: new Uint8Array(t).buffer,\\n done: !1\\n };\\n }\\n cancel(t) {\\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\\n }\\n _error(t) {\\n this._storedError = t;\\n this._readCapability.resolve();\\n }\\n _setReadableStream(t) {\\n this._readableStream = t;\\n t.on(\\"readable\\", () => {\\n this._readCapability.resolve();\\n });\\n t.on(\\"end\\", () => {\\n t.destroy();\\n this._done = !0;\\n this._readCapability.resolve();\\n });\\n t.on(\\"error\\", t => {\\n this._error(t);\\n });\\n !this._isStreamingSupported && this._isRangeSupported && this._error(new i.AbortException(\\"streaming is disabled\\"));\\n this._storedError && this._readableStream.destroy(this._storedError);\\n }\\n }\\n class BaseRangeReader {\\n constructor(t) {\\n this._url = t.url;\\n this._done = !1;\\n this._storedError = null;\\n this.onProgress = null;\\n this._loaded = 0;\\n this._readableStream = null;\\n this._readCapability = new i.PromiseCapability();\\n const e = t.source;\\n this._isStreamingSupported = !e.disableStream;\\n }\\n get isStreamingSupported() {\\n return this._isStreamingSupported;\\n }\\n async read() {\\n var _this$onProgress6;\\n await this._readCapability.promise;\\n if (this._done) return {\\n value: void 0,\\n done: !0\\n };\\n if (this._storedError) throw this._storedError;\\n const t = this._readableStream.read();\\n if (null === t) {\\n this._readCapability = new i.PromiseCapability();\\n return this.read();\\n }\\n this._loaded += t.length;\\n (_this$onProgress6 = this.onProgress) === null || _this$onProgress6 === void 0 ? void 0 : _this$onProgress6.call(this, {\\n loaded: this._loaded\\n });\\n return {\\n value: new Uint8Array(t).buffer,\\n done: !1\\n };\\n }\\n cancel(t) {\\n this._readableStream ? this._readableStream.destroy(t) : this._error(t);\\n }\\n _error(t) {\\n this._storedError = t;\\n this._readCapability.resolve();\\n }\\n _setReadableStream(t) {\\n this._readableStream = t;\\n t.on(\\"readable\\", () => {\\n this._readCapability.resolve();\\n });\\n t.on(\\"end\\", () => {\\n t.destroy();\\n this._done = !0;\\n this._readCapability.resolve();\\n });\\n t.on(\\"error\\", t => {\\n this._error(t);\\n });\\n this._storedError && this._readableStream.destroy(this._storedError);\\n }\\n }\\n function createRequestOptions(t, e) {\\n return {\\n protocol: t.protocol,\\n auth: t.auth,\\n host: t.hostname,\\n port: t.port,\\n path: t.path,\\n method: \\"GET\\",\\n headers: e\\n };\\n }\\n class PDFNodeStreamFullReader extends BaseFullReader {\\n constructor(t) {\\n super(t);\\n const handleResponse = e => {\\n if (404 === e.statusCode) {\\n const t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(this._url, \\"\\\\\\".\\"));\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n return;\\n }\\n this._headersCapability.resolve();\\n this._setReadableStream(e);\\n const getResponseHeader = t => this._readableStream.headers[t.toLowerCase()],\\n {\\n allowRangeRequests: n,\\n suggestedLength: s\\n } = (0, r.validateRangeRequestCapabilities)({\\n getResponseHeader: getResponseHeader,\\n isHttp: t.isHttp,\\n rangeChunkSize: this._rangeChunkSize,\\n disableRange: this._disableRange\\n });\\n this._isRangeSupported = n;\\n this._contentLength = s || this._contentLength;\\n this._filename = (0, r.extractFilenameFromHeader)(getResponseHeader);\\n };\\n this._request = null;\\n if (\\"http:\\" === this._url.protocol) {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'http'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\\n } else {\\n const e = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'https'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = e.request(createRequestOptions(this._url, t.httpHeaders), handleResponse);\\n }\\n this._request.on(\\"error\\", t => {\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n });\\n this._request.end();\\n }\\n }\\n class PDFNodeStreamRangeReader extends BaseRangeReader {\\n constructor(t, e, n) {\\n super(t);\\n this._httpHeaders = {};\\n for (const e in t.httpHeaders) {\\n const n = t.httpHeaders[e];\\n void 0 !== n && (this._httpHeaders[e] = n);\\n }\\n this._httpHeaders.Range = \\"bytes=\\".concat(e, \\"-\\").concat(n - 1);\\n const handleResponse = t => {\\n if (404 !== t.statusCode) this._setReadableStream(t);else {\\n const t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(this._url, \\"\\\\\\".\\"));\\n this._storedError = t;\\n }\\n };\\n this._request = null;\\n if (\\"http:\\" === this._url.protocol) {\\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'http'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\\n } else {\\n const t = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'https'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._request = t.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\\n }\\n this._request.on(\\"error\\", t => {\\n this._storedError = t;\\n });\\n this._request.end();\\n }\\n }\\n class PDFNodeStreamFsFullReader extends BaseFullReader {\\n constructor(t) {\\n super(t);\\n let e = decodeURIComponent(this._url.path);\\n s.test(this._url.href) && (e = e.replace(/^\\\\//, \\"\\"));\\n const n = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n n.lstat(e, (t, r) => {\\n if (t) {\\n \\"ENOENT\\" === t.code && (t = new i.MissingPDFException(\\"Missing PDF \\\\\\"\\".concat(e, \\"\\\\\\".\\")));\\n this._storedError = t;\\n this._headersCapability.reject(t);\\n } else {\\n this._contentLength = r.size;\\n this._setReadableStream(n.createReadStream(e));\\n this._headersCapability.resolve();\\n }\\n });\\n }\\n }\\n class PDFNodeStreamFsRangeReader extends BaseRangeReader {\\n constructor(t, e, n) {\\n super(t);\\n let i = decodeURIComponent(this._url.path);\\n s.test(this._url.href) && (i = i.replace(/^\\\\//, \\"\\"));\\n const r = __webpack_require__(Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'fs'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }()));\\n this._setReadableStream(r.createReadStream(i, {\\n start: e,\\n end: n - 1\\n }));\\n }\\n }\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.SVGGraphics = void 0;\\n n(84);\\n n(86);\\n n(87);\\n n(93);\\n n(101);\\n n(102);\\n n(105);\\n n(107);\\n n(109);\\n n(113);\\n n(116);\\n n(123);\\n n(2);\\n n(89);\\n n(186);\\n var i = n(167),\\n r = n(1);\\n const s = \\"normal\\",\\n a = \\"normal\\",\\n o = \\"#000000\\",\\n l = [\\"butt\\", \\"round\\", \\"square\\"],\\n c = [\\"miter\\", \\"round\\", \\"bevel\\"],\\n createObjectURL = function createObjectURL(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \\"\\",\\n n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n if (URL.createObjectURL && \\"undefined\\" != typeof Blob && !n) return URL.createObjectURL(new Blob([t], {\\n type: e\\n }));\\n const i = \\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\";\\n let r = \\"data:\\".concat(e, \\";base64,\\");\\n for (let e = 0, n = t.length; e < n; e += 3) {\\n const s = 255 & t[e],\\n a = 255 & t[e + 1],\\n o = 255 & t[e + 2];\\n r += i[s >> 2] + i[(3 & s) << 4 | a >> 4] + i[e + 1 < n ? (15 & a) << 2 | o >> 6 : 64] + i[e + 2 < n ? 63 & o : 64];\\n }\\n return r;\\n },\\n h = function () {\\n const t = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]),\\n e = new Int32Array(256);\\n for (let t = 0; t < 256; t++) {\\n let n = t;\\n for (let t = 0; t < 8; t++) n = 1 & n ? 3988292384 ^ n >> 1 & 2147483647 : n >> 1 & 2147483647;\\n e[t] = n;\\n }\\n function writePngChunk(t, n, i, r) {\\n let s = r;\\n const a = n.length;\\n i[s] = a >> 24 & 255;\\n i[s + 1] = a >> 16 & 255;\\n i[s + 2] = a >> 8 & 255;\\n i[s + 3] = 255 & a;\\n s += 4;\\n i[s] = 255 & t.charCodeAt(0);\\n i[s + 1] = 255 & t.charCodeAt(1);\\n i[s + 2] = 255 & t.charCodeAt(2);\\n i[s + 3] = 255 & t.charCodeAt(3);\\n s += 4;\\n i.set(n, s);\\n s += n.length;\\n const o = function crc32(t, n, i) {\\n let r = -1;\\n for (let s = n; s < i; s++) {\\n const n = 255 & (r ^ t[s]);\\n r = r >>> 8 ^ e[n];\\n }\\n return -1 ^ r;\\n }(i, r + 4, s);\\n i[s] = o >> 24 & 255;\\n i[s + 1] = o >> 16 & 255;\\n i[s + 2] = o >> 8 & 255;\\n i[s + 3] = 255 & o;\\n }\\n function deflateSyncUncompressed(t) {\\n let e = t.length;\\n const n = 65535,\\n i = Math.ceil(e / n),\\n r = new Uint8Array(2 + e + 5 * i + 4);\\n let s = 0;\\n r[s++] = 120;\\n r[s++] = 156;\\n let a = 0;\\n for (; e > n;) {\\n r[s++] = 0;\\n r[s++] = 255;\\n r[s++] = 255;\\n r[s++] = 0;\\n r[s++] = 0;\\n r.set(t.subarray(a, a + n), s);\\n s += n;\\n a += n;\\n e -= n;\\n }\\n r[s++] = 1;\\n r[s++] = 255 & e;\\n r[s++] = e >> 8 & 255;\\n r[s++] = 255 & ~e;\\n r[s++] = (65535 & ~e) >> 8 & 255;\\n r.set(t.subarray(a), s);\\n s += t.length - a;\\n const o = function adler32(t, e, n) {\\n let i = 1,\\n r = 0;\\n for (let s = e; s < n; ++s) {\\n i = (i + (255 & t[s])) % 65521;\\n r = (r + i) % 65521;\\n }\\n return r << 16 | i;\\n }(t, 0, t.length);\\n r[s++] = o >> 24 & 255;\\n r[s++] = o >> 16 & 255;\\n r[s++] = o >> 8 & 255;\\n r[s++] = 255 & o;\\n return r;\\n }\\n function encode(e, n, i, s) {\\n const a = e.width,\\n o = e.height;\\n let l, c, h;\\n const d = e.data;\\n switch (n) {\\n case r.ImageKind.GRAYSCALE_1BPP:\\n c = 0;\\n l = 1;\\n h = a + 7 >> 3;\\n break;\\n case r.ImageKind.RGB_24BPP:\\n c = 2;\\n l = 8;\\n h = 3 * a;\\n break;\\n case r.ImageKind.RGBA_32BPP:\\n c = 6;\\n l = 8;\\n h = 4 * a;\\n break;\\n default:\\n throw new Error(\\"invalid format\\");\\n }\\n const u = new Uint8Array((1 + h) * o);\\n let p = 0,\\n f = 0;\\n for (let t = 0; t < o; ++t) {\\n u[p++] = 0;\\n u.set(d.subarray(f, f + h), p);\\n f += h;\\n p += h;\\n }\\n if (n === r.ImageKind.GRAYSCALE_1BPP && s) {\\n p = 0;\\n for (let t = 0; t < o; t++) {\\n p++;\\n for (let t = 0; t < h; t++) u[p++] ^= 255;\\n }\\n }\\n const g = new Uint8Array([a >> 24 & 255, a >> 16 & 255, a >> 8 & 255, 255 & a, o >> 24 & 255, o >> 16 & 255, o >> 8 & 255, 255 & o, l, c, 0, 0, 0]),\\n m = function deflateSync(t) {\\n if (!r.isNodeJS) return deflateSyncUncompressed(t);\\n try {\\n const e = parseInt(process.versions.node) >= 8 ? t : Buffer.from(t),\\n n = Object(function webpackMissingModule() { var e = new Error(\\"Cannot find module 'zlib'\\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())(e, {\\n level: 9\\n });\\n return n instanceof Uint8Array ? n : new Uint8Array(n);\\n } catch (t) {\\n (0, r.warn)(\\"Not compressing PNG because zlib.deflateSync is unavailable: \\" + t);\\n }\\n return deflateSyncUncompressed(t);\\n }(u),\\n b = t.length + 36 + g.length + m.length,\\n v = new Uint8Array(b);\\n let y = 0;\\n v.set(t, y);\\n y += t.length;\\n writePngChunk(\\"IHDR\\", g, v, y);\\n y += 12 + g.length;\\n writePngChunk(\\"IDATA\\", m, v, y);\\n y += 12 + m.length;\\n writePngChunk(\\"IEND\\", new Uint8Array(0), v, y);\\n return createObjectURL(v, \\"image/png\\", i);\\n }\\n return function convertImgDataToPng(t, e, n) {\\n return encode(t, void 0 === t.kind ? r.ImageKind.GRAYSCALE_1BPP : t.kind, e, n);\\n };\\n }();\\n class SVGExtraState {\\n constructor() {\\n this.fontSizeScale = 1;\\n this.fontWeight = a;\\n this.fontSize = 0;\\n this.textMatrix = r.IDENTITY_MATRIX;\\n this.fontMatrix = r.FONT_IDENTITY_MATRIX;\\n this.leading = 0;\\n this.textRenderingMode = r.TextRenderingMode.FILL;\\n this.textMatrixScale = 1;\\n this.x = 0;\\n this.y = 0;\\n this.lineX = 0;\\n this.lineY = 0;\\n this.charSpacing = 0;\\n this.wordSpacing = 0;\\n this.textHScale = 1;\\n this.textRise = 0;\\n this.fillColor = o;\\n this.strokeColor = \\"#000000\\";\\n this.fillAlpha = 1;\\n this.strokeAlpha = 1;\\n this.lineWidth = 1;\\n this.lineJoin = \\"\\";\\n this.lineCap = \\"\\";\\n this.miterLimit = 0;\\n this.dashArray = [];\\n this.dashPhase = 0;\\n this.dependencies = [];\\n this.activeClipUrl = null;\\n this.clipGroup = null;\\n this.maskId = \\"\\";\\n }\\n clone() {\\n return Object.create(this);\\n }\\n setCurrentPoint(t, e) {\\n this.x = t;\\n this.y = e;\\n }\\n }\\n function pf(t) {\\n if (Number.isInteger(t)) return t.toString();\\n const e = t.toFixed(10);\\n let n = e.length - 1;\\n if (\\"0\\" !== e[n]) return e;\\n do {\\n n--;\\n } while (\\"0\\" === e[n]);\\n return e.substring(0, \\".\\" === e[n] ? n : n + 1);\\n }\\n function pm(t) {\\n if (0 === t[4] && 0 === t[5]) {\\n if (0 === t[1] && 0 === t[2]) return 1 === t[0] && 1 === t[3] ? \\"\\" : \\"scale(\\".concat(pf(t[0]), \\" \\").concat(pf(t[3]), \\")\\");\\n if (t[0] === t[3] && t[1] === -t[2]) {\\n return \\"rotate(\\".concat(pf(180 * Math.acos(t[0]) / Math.PI), \\")\\");\\n }\\n } else if (1 === t[0] && 0 === t[1] && 0 === t[2] && 1 === t[3]) return \\"translate(\\".concat(pf(t[4]), \\" \\").concat(pf(t[5]), \\")\\");\\n return \\"matrix(\\".concat(pf(t[0]), \\" \\").concat(pf(t[1]), \\" \\").concat(pf(t[2]), \\" \\").concat(pf(t[3]), \\" \\").concat(pf(t[4]), \\" \\").concat(pf(t[5]), \\")\\");\\n }\\n let d = 0,\\n u = 0,\\n p = 0;\\n e.SVGGraphics = class SVGGraphics {\\n constructor(t, e) {\\n let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\\n (0, i.deprecated)(\\"The SVG back-end is no longer maintained and *may* be removed in the future.\\");\\n this.svgFactory = new i.DOMSVGFactory();\\n this.current = new SVGExtraState();\\n this.transformMatrix = r.IDENTITY_MATRIX;\\n this.transformStack = [];\\n this.extraStack = [];\\n this.commonObjs = t;\\n this.objs = e;\\n this.pendingClip = null;\\n this.pendingEOFill = !1;\\n this.embedFonts = !1;\\n this.embeddedFonts = Object.create(null);\\n this.cssStyle = null;\\n this.forceDataSchema = !!n;\\n this._operatorIdMapping = [];\\n for (const t in r.OPS) this._operatorIdMapping[r.OPS[t]] = t;\\n }\\n getObject(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return \\"string\\" == typeof t ? t.startsWith(\\"g_\\") ? this.commonObjs.get(t) : this.objs.get(t) : e;\\n }\\n save() {\\n this.transformStack.push(this.transformMatrix);\\n const t = this.current;\\n this.extraStack.push(t);\\n this.current = t.clone();\\n }\\n restore() {\\n this.transformMatrix = this.transformStack.pop();\\n this.current = this.extraStack.pop();\\n this.pendingClip = null;\\n this.tgrp = null;\\n }\\n group(t) {\\n this.save();\\n this.executeOpTree(t);\\n this.restore();\\n }\\n loadDependencies(t) {\\n const e = t.fnArray,\\n n = t.argsArray;\\n for (let t = 0, i = e.length; t < i; t++) if (e[t] === r.OPS.dependency) for (const e of n[t]) {\\n const t = e.startsWith(\\"g_\\") ? this.commonObjs : this.objs,\\n n = new Promise(n => {\\n t.get(e, n);\\n });\\n this.current.dependencies.push(n);\\n }\\n return Promise.all(this.current.dependencies);\\n }\\n transform(t, e, n, i, s, a) {\\n const o = [t, e, n, i, s, a];\\n this.transformMatrix = r.Util.transform(this.transformMatrix, o);\\n this.tgrp = null;\\n }\\n getSVG(t, e) {\\n this.viewport = e;\\n const n = this._initialize(e);\\n return this.loadDependencies(t).then(() => {\\n this.transformMatrix = r.IDENTITY_MATRIX;\\n this.executeOpTree(this.convertOpList(t));\\n return n;\\n });\\n }\\n convertOpList(t) {\\n const e = this._operatorIdMapping,\\n n = t.argsArray,\\n i = t.fnArray,\\n r = [];\\n for (let t = 0, s = i.length; t < s; t++) {\\n const s = i[t];\\n r.push({\\n fnId: s,\\n fn: e[s],\\n args: n[t]\\n });\\n }\\n return function opListToTree(t) {\\n let e = [];\\n const n = [];\\n for (const i of t) if (\\"save\\" !== i.fn) \\"restore\\" === i.fn ? e = n.pop() : e.push(i);else {\\n e.push({\\n fnId: 92,\\n fn: \\"group\\",\\n items: []\\n });\\n n.push(e);\\n e = e.at(-1).items;\\n }\\n return e;\\n }(r);\\n }\\n executeOpTree(t) {\\n for (const e of t) {\\n const t = e.fn,\\n n = e.fnId,\\n i = e.args;\\n switch (0 | n) {\\n case r.OPS.beginText:\\n this.beginText();\\n break;\\n case r.OPS.dependency:\\n break;\\n case r.OPS.setLeading:\\n this.setLeading(i);\\n break;\\n case r.OPS.setLeadingMoveText:\\n this.setLeadingMoveText(i[0], i[1]);\\n break;\\n case r.OPS.setFont:\\n this.setFont(i);\\n break;\\n case r.OPS.showText:\\n case r.OPS.showSpacedText:\\n this.showText(i[0]);\\n break;\\n case r.OPS.endText:\\n this.endText();\\n break;\\n case r.OPS.moveText:\\n this.moveText(i[0], i[1]);\\n break;\\n case r.OPS.setCharSpacing:\\n this.setCharSpacing(i[0]);\\n break;\\n case r.OPS.setWordSpacing:\\n this.setWordSpacing(i[0]);\\n break;\\n case r.OPS.setHScale:\\n this.setHScale(i[0]);\\n break;\\n case r.OPS.setTextMatrix:\\n this.setTextMatrix(i[0], i[1], i[2], i[3], i[4], i[5]);\\n break;\\n case r.OPS.setTextRise:\\n this.setTextRise(i[0]);\\n break;\\n case r.OPS.setTextRenderingMode:\\n this.setTextRenderingMode(i[0]);\\n break;\\n case r.OPS.setLineWidth:\\n this.setLineWidth(i[0]);\\n break;\\n case r.OPS.setLineJoin:\\n this.setLineJoin(i[0]);\\n break;\\n case r.OPS.setLineCap:\\n this.setLineCap(i[0]);\\n break;\\n case r.OPS.setMiterLimit:\\n this.setMiterLimit(i[0]);\\n break;\\n case r.OPS.setFillRGBColor:\\n this.setFillRGBColor(i[0], i[1], i[2]);\\n break;\\n case r.OPS.setStrokeRGBColor:\\n this.setStrokeRGBColor(i[0], i[1], i[2]);\\n break;\\n case r.OPS.setStrokeColorN:\\n this.setStrokeColorN(i);\\n break;\\n case r.OPS.setFillColorN:\\n this.setFillColorN(i);\\n break;\\n case r.OPS.shadingFill:\\n this.shadingFill(i[0]);\\n break;\\n case r.OPS.setDash:\\n this.setDash(i[0], i[1]);\\n break;\\n case r.OPS.setRenderingIntent:\\n this.setRenderingIntent(i[0]);\\n break;\\n case r.OPS.setFlatness:\\n this.setFlatness(i[0]);\\n break;\\n case r.OPS.setGState:\\n this.setGState(i[0]);\\n break;\\n case r.OPS.fill:\\n this.fill();\\n break;\\n case r.OPS.eoFill:\\n this.eoFill();\\n break;\\n case r.OPS.stroke:\\n this.stroke();\\n break;\\n case r.OPS.fillStroke:\\n this.fillStroke();\\n break;\\n case r.OPS.eoFillStroke:\\n this.eoFillStroke();\\n break;\\n case r.OPS.clip:\\n this.clip(\\"nonzero\\");\\n break;\\n case r.OPS.eoClip:\\n this.clip(\\"evenodd\\");\\n break;\\n case r.OPS.paintSolidColorImageMask:\\n this.paintSolidColorImageMask();\\n break;\\n case r.OPS.paintImageXObject:\\n this.paintImageXObject(i[0]);\\n break;\\n case r.OPS.paintInlineImageXObject:\\n this.paintInlineImageXObject(i[0]);\\n break;\\n case r.OPS.paintImageMaskXObject:\\n this.paintImageMaskXObject(i[0]);\\n break;\\n case r.OPS.paintFormXObjectBegin:\\n this.paintFormXObjectBegin(i[0], i[1]);\\n break;\\n case r.OPS.paintFormXObjectEnd:\\n this.paintFormXObjectEnd();\\n break;\\n case r.OPS.closePath:\\n this.closePath();\\n break;\\n case r.OPS.closeStroke:\\n this.closeStroke();\\n break;\\n case r.OPS.closeFillStroke:\\n this.closeFillStroke();\\n break;\\n case r.OPS.closeEOFillStroke:\\n this.closeEOFillStroke();\\n break;\\n case r.OPS.nextLine:\\n this.nextLine();\\n break;\\n case r.OPS.transform:\\n this.transform(i[0], i[1], i[2], i[3], i[4], i[5]);\\n break;\\n case r.OPS.constructPath:\\n this.constructPath(i[0], i[1]);\\n break;\\n case r.OPS.endPath:\\n this.endPath();\\n break;\\n case 92:\\n this.group(e.items);\\n break;\\n default:\\n (0, r.warn)(\\"Unimplemented operator \\".concat(t));\\n }\\n }\\n }\\n setWordSpacing(t) {\\n this.current.wordSpacing = t;\\n }\\n setCharSpacing(t) {\\n this.current.charSpacing = t;\\n }\\n nextLine() {\\n this.moveText(0, this.current.leading);\\n }\\n setTextMatrix(t, e, n, i, r, s) {\\n const a = this.current;\\n a.textMatrix = a.lineMatrix = [t, e, n, i, r, s];\\n a.textMatrixScale = Math.hypot(t, e);\\n a.x = a.lineX = 0;\\n a.y = a.lineY = 0;\\n a.xcoords = [];\\n a.ycoords = [];\\n a.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n a.tspan.setAttributeNS(null, \\"font-family\\", a.fontFamily);\\n a.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(a.fontSize), \\"px\\"));\\n a.tspan.setAttributeNS(null, \\"y\\", pf(-a.y));\\n a.txtElement = this.svgFactory.createElement(\\"svg:text\\");\\n a.txtElement.append(a.tspan);\\n }\\n beginText() {\\n const t = this.current;\\n t.x = t.lineX = 0;\\n t.y = t.lineY = 0;\\n t.textMatrix = r.IDENTITY_MATRIX;\\n t.lineMatrix = r.IDENTITY_MATRIX;\\n t.textMatrixScale = 1;\\n t.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n t.txtElement = this.svgFactory.createElement(\\"svg:text\\");\\n t.txtgrp = this.svgFactory.createElement(\\"svg:g\\");\\n t.xcoords = [];\\n t.ycoords = [];\\n }\\n moveText(t, e) {\\n const n = this.current;\\n n.x = n.lineX += t;\\n n.y = n.lineY += e;\\n n.xcoords = [];\\n n.ycoords = [];\\n n.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n n.tspan.setAttributeNS(null, \\"font-family\\", n.fontFamily);\\n n.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(n.fontSize), \\"px\\"));\\n n.tspan.setAttributeNS(null, \\"y\\", pf(-n.y));\\n }\\n showText(t) {\\n const e = this.current,\\n n = e.font,\\n i = e.fontSize;\\n if (0 === i) return;\\n const l = e.fontSizeScale,\\n c = e.charSpacing,\\n h = e.wordSpacing,\\n d = e.fontDirection,\\n u = e.textHScale * d,\\n p = n.vertical,\\n f = p ? 1 : -1,\\n g = n.defaultVMetrics,\\n m = i * e.fontMatrix[0];\\n let b = 0;\\n for (const r of t) {\\n if (null === r) {\\n b += d * h;\\n continue;\\n }\\n if (\\"number\\" == typeof r) {\\n b += f * r * i / 1e3;\\n continue;\\n }\\n const t = (r.isSpace ? h : 0) + c,\\n s = r.fontChar;\\n let a,\\n o,\\n u = r.width;\\n if (p) {\\n let t;\\n const e = r.vmetric || g;\\n t = r.vmetric ? e[1] : .5 * u;\\n t = -t * m;\\n const n = e[2] * m;\\n u = e ? -e[0] : u;\\n a = t / l;\\n o = (b + n) / l;\\n } else {\\n a = b / l;\\n o = 0;\\n }\\n if (r.isInFont || n.missingFile) {\\n e.xcoords.push(e.x + a);\\n p && e.ycoords.push(-e.y + o);\\n e.tspan.textContent += s;\\n }\\n b += p ? u * m - t * d : u * m + t * d;\\n }\\n e.tspan.setAttributeNS(null, \\"x\\", e.xcoords.map(pf).join(\\" \\"));\\n p ? e.tspan.setAttributeNS(null, \\"y\\", e.ycoords.map(pf).join(\\" \\")) : e.tspan.setAttributeNS(null, \\"y\\", pf(-e.y));\\n p ? e.y -= b : e.x += b * u;\\n e.tspan.setAttributeNS(null, \\"font-family\\", e.fontFamily);\\n e.tspan.setAttributeNS(null, \\"font-size\\", \\"\\".concat(pf(e.fontSize), \\"px\\"));\\n e.fontStyle !== s && e.tspan.setAttributeNS(null, \\"font-style\\", e.fontStyle);\\n e.fontWeight !== a && e.tspan.setAttributeNS(null, \\"font-weight\\", e.fontWeight);\\n const v = e.textRenderingMode & r.TextRenderingMode.FILL_STROKE_MASK;\\n if (v === r.TextRenderingMode.FILL || v === r.TextRenderingMode.FILL_STROKE) {\\n e.fillColor !== o && e.tspan.setAttributeNS(null, \\"fill\\", e.fillColor);\\n e.fillAlpha < 1 && e.tspan.setAttributeNS(null, \\"fill-opacity\\", e.fillAlpha);\\n } else e.textRenderingMode === r.TextRenderingMode.ADD_TO_PATH ? e.tspan.setAttributeNS(null, \\"fill\\", \\"transparent\\") : e.tspan.setAttributeNS(null, \\"fill\\", \\"none\\");\\n if (v === r.TextRenderingMode.STROKE || v === r.TextRenderingMode.FILL_STROKE) {\\n const t = 1 / (e.textMatrixScale || 1);\\n this._setStrokeAttributes(e.tspan, t);\\n }\\n let y = e.textMatrix;\\n if (0 !== e.textRise) {\\n y = y.slice();\\n y[5] += e.textRise;\\n }\\n e.txtElement.setAttributeNS(null, \\"transform\\", \\"\\".concat(pm(y), \\" scale(\\").concat(pf(u), \\", -1)\\"));\\n e.txtElement.setAttributeNS(\\"http://www.w3.org/XML/1998/namespace\\", \\"xml:space\\", \\"preserve\\");\\n e.txtElement.append(e.tspan);\\n e.txtgrp.append(e.txtElement);\\n this._ensureTransformGroup().append(e.txtElement);\\n }\\n setLeadingMoveText(t, e) {\\n this.setLeading(-e);\\n this.moveText(t, e);\\n }\\n addFontStyle(t) {\\n if (!t.data) throw new Error('addFontStyle: No font data available, ensure that the \\"fontExtraProperties\\" API parameter is set.');\\n if (!this.cssStyle) {\\n this.cssStyle = this.svgFactory.createElement(\\"svg:style\\");\\n this.cssStyle.setAttributeNS(null, \\"type\\", \\"text/css\\");\\n this.defs.append(this.cssStyle);\\n }\\n const e = createObjectURL(t.data, t.mimetype, this.forceDataSchema);\\n this.cssStyle.textContent += \\"@font-face { font-family: \\\\\\"\\".concat(t.loadedName, \\"\\\\\\"; src: url(\\").concat(e, \\"); }\\\\n\\");\\n }\\n setFont(t) {\\n const e = this.current,\\n n = this.commonObjs.get(t[0]);\\n let i = t[1];\\n e.font = n;\\n if (this.embedFonts && !n.missingFile && !this.embeddedFonts[n.loadedName]) {\\n this.addFontStyle(n);\\n this.embeddedFonts[n.loadedName] = n;\\n }\\n e.fontMatrix = n.fontMatrix || r.FONT_IDENTITY_MATRIX;\\n let s = \\"normal\\";\\n n.black ? s = \\"900\\" : n.bold && (s = \\"bold\\");\\n const a = n.italic ? \\"italic\\" : \\"normal\\";\\n if (i < 0) {\\n i = -i;\\n e.fontDirection = -1;\\n } else e.fontDirection = 1;\\n e.fontSize = i;\\n e.fontFamily = n.loadedName;\\n e.fontWeight = s;\\n e.fontStyle = a;\\n e.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n e.tspan.setAttributeNS(null, \\"y\\", pf(-e.y));\\n e.xcoords = [];\\n e.ycoords = [];\\n }\\n endText() {\\n var _t$txtElement;\\n const t = this.current;\\n if (t.textRenderingMode & r.TextRenderingMode.ADD_TO_PATH_FLAG && (_t$txtElement = t.txtElement) !== null && _t$txtElement !== void 0 && _t$txtElement.hasChildNodes()) {\\n t.element = t.txtElement;\\n this.clip(\\"nonzero\\");\\n this.endPath();\\n }\\n }\\n setLineWidth(t) {\\n t > 0 && (this.current.lineWidth = t);\\n }\\n setLineCap(t) {\\n this.current.lineCap = l[t];\\n }\\n setLineJoin(t) {\\n this.current.lineJoin = c[t];\\n }\\n setMiterLimit(t) {\\n this.current.miterLimit = t;\\n }\\n setStrokeAlpha(t) {\\n this.current.strokeAlpha = t;\\n }\\n setStrokeRGBColor(t, e, n) {\\n this.current.strokeColor = r.Util.makeHexColor(t, e, n);\\n }\\n setFillAlpha(t) {\\n this.current.fillAlpha = t;\\n }\\n setFillRGBColor(t, e, n) {\\n this.current.fillColor = r.Util.makeHexColor(t, e, n);\\n this.current.tspan = this.svgFactory.createElement(\\"svg:tspan\\");\\n this.current.xcoords = [];\\n this.current.ycoords = [];\\n }\\n setStrokeColorN(t) {\\n this.current.strokeColor = this._makeColorN_Pattern(t);\\n }\\n setFillColorN(t) {\\n this.current.fillColor = this._makeColorN_Pattern(t);\\n }\\n shadingFill(t) {\\n const {\\n width: e,\\n height: n\\n } = this.viewport,\\n i = r.Util.inverseTransform(this.transformMatrix),\\n [s, a, o, l] = r.Util.getAxialAlignedBoundingBox([0, 0, e, n], i),\\n c = this.svgFactory.createElement(\\"svg:rect\\");\\n c.setAttributeNS(null, \\"x\\", s);\\n c.setAttributeNS(null, \\"y\\", a);\\n c.setAttributeNS(null, \\"width\\", o - s);\\n c.setAttributeNS(null, \\"height\\", l - a);\\n c.setAttributeNS(null, \\"fill\\", this._makeShadingPattern(t));\\n this.current.fillAlpha < 1 && c.setAttributeNS(null, \\"fill-opacity\\", this.current.fillAlpha);\\n this._ensureTransformGroup().append(c);\\n }\\n _makeColorN_Pattern(t) {\\n return \\"TilingPattern\\" === t[0] ? this._makeTilingPattern(t) : this._makeShadingPattern(t);\\n }\\n _makeTilingPattern(t) {\\n const e = t[1],\\n n = t[2],\\n i = t[3] || r.IDENTITY_MATRIX,\\n [s, a, o, l] = t[4],\\n c = t[5],\\n h = t[6],\\n d = t[7],\\n u = \\"shading\\" + p++,\\n [f, g, m, b] = r.Util.normalizeRect([...r.Util.applyTransform([s, a], i), ...r.Util.applyTransform([o, l], i)]),\\n [v, y] = r.Util.singularValueDecompose2dScale(i),\\n A = c * v,\\n _ = h * y,\\n S = this.svgFactory.createElement(\\"svg:pattern\\");\\n S.setAttributeNS(null, \\"id\\", u);\\n S.setAttributeNS(null, \\"patternUnits\\", \\"userSpaceOnUse\\");\\n S.setAttributeNS(null, \\"width\\", A);\\n S.setAttributeNS(null, \\"height\\", _);\\n S.setAttributeNS(null, \\"x\\", \\"\\".concat(f));\\n S.setAttributeNS(null, \\"y\\", \\"\\".concat(g));\\n const E = this.svg,\\n x = this.transformMatrix,\\n w = this.current.fillColor,\\n C = this.current.strokeColor,\\n T = this.svgFactory.create(m - f, b - g);\\n this.svg = T;\\n this.transformMatrix = i;\\n if (2 === d) {\\n const t = r.Util.makeHexColor(...e);\\n this.current.fillColor = t;\\n this.current.strokeColor = t;\\n }\\n this.executeOpTree(this.convertOpList(n));\\n this.svg = E;\\n this.transformMatrix = x;\\n this.current.fillColor = w;\\n this.current.strokeColor = C;\\n S.append(T.childNodes[0]);\\n this.defs.append(S);\\n return \\"url(#\\".concat(u, \\")\\");\\n }\\n _makeShadingPattern(t) {\\n \\"string\\" == typeof t && (t = this.objs.get(t));\\n switch (t[0]) {\\n case \\"RadialAxial\\":\\n const e = \\"shading\\" + p++,\\n n = t[3];\\n let i;\\n switch (t[1]) {\\n case \\"axial\\":\\n const n = t[4],\\n r = t[5];\\n i = this.svgFactory.createElement(\\"svg:linearGradient\\");\\n i.setAttributeNS(null, \\"id\\", e);\\n i.setAttributeNS(null, \\"gradientUnits\\", \\"userSpaceOnUse\\");\\n i.setAttributeNS(null, \\"x1\\", n[0]);\\n i.setAttributeNS(null, \\"y1\\", n[1]);\\n i.setAttributeNS(null, \\"x2\\", r[0]);\\n i.setAttributeNS(null, \\"y2\\", r[1]);\\n break;\\n case \\"radial\\":\\n const s = t[4],\\n a = t[5],\\n o = t[6],\\n l = t[7];\\n i = this.svgFactory.createElement(\\"svg:radialGradient\\");\\n i.setAttributeNS(null, \\"id\\", e);\\n i.setAttributeNS(null, \\"gradientUnits\\", \\"userSpaceOnUse\\");\\n i.setAttributeNS(null, \\"cx\\", a[0]);\\n i.setAttributeNS(null, \\"cy\\", a[1]);\\n i.setAttributeNS(null, \\"r\\", l);\\n i.setAttributeNS(null, \\"fx\\", s[0]);\\n i.setAttributeNS(null, \\"fy\\", s[1]);\\n i.setAttributeNS(null, \\"fr\\", o);\\n break;\\n default:\\n throw new Error(\\"Unknown RadialAxial type: \\".concat(t[1]));\\n }\\n for (const t of n) {\\n const e = this.svgFactory.createElement(\\"svg:stop\\");\\n e.setAttributeNS(null, \\"offset\\", t[0]);\\n e.setAttributeNS(null, \\"stop-color\\", t[1]);\\n i.append(e);\\n }\\n this.defs.append(i);\\n return \\"url(#\\".concat(e, \\")\\");\\n case \\"Mesh\\":\\n (0, r.warn)(\\"Unimplemented pattern Mesh\\");\\n return null;\\n case \\"Dummy\\":\\n return \\"hotpink\\";\\n default:\\n throw new Error(\\"Unknown IR type: \\".concat(t[0]));\\n }\\n }\\n setDash(t, e) {\\n this.current.dashArray = t;\\n this.current.dashPhase = e;\\n }\\n constructPath(t, e) {\\n const n = this.current;\\n let i = n.x,\\n s = n.y,\\n a = [],\\n o = 0;\\n for (const n of t) switch (0 | n) {\\n case r.OPS.rectangle:\\n i = e[o++];\\n s = e[o++];\\n const t = i + e[o++],\\n n = s + e[o++];\\n a.push(\\"M\\", pf(i), pf(s), \\"L\\", pf(t), pf(s), \\"L\\", pf(t), pf(n), \\"L\\", pf(i), pf(n), \\"Z\\");\\n break;\\n case r.OPS.moveTo:\\n i = e[o++];\\n s = e[o++];\\n a.push(\\"M\\", pf(i), pf(s));\\n break;\\n case r.OPS.lineTo:\\n i = e[o++];\\n s = e[o++];\\n a.push(\\"L\\", pf(i), pf(s));\\n break;\\n case r.OPS.curveTo:\\n i = e[o + 4];\\n s = e[o + 5];\\n a.push(\\"C\\", pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]), pf(i), pf(s));\\n o += 6;\\n break;\\n case r.OPS.curveTo2:\\n a.push(\\"C\\", pf(i), pf(s), pf(e[o]), pf(e[o + 1]), pf(e[o + 2]), pf(e[o + 3]));\\n i = e[o + 2];\\n s = e[o + 3];\\n o += 4;\\n break;\\n case r.OPS.curveTo3:\\n i = e[o + 2];\\n s = e[o + 3];\\n a.push(\\"C\\", pf(e[o]), pf(e[o + 1]), pf(i), pf(s), pf(i), pf(s));\\n o += 4;\\n break;\\n case r.OPS.closePath:\\n a.push(\\"Z\\");\\n }\\n a = a.join(\\" \\");\\n if (n.path && t.length > 0 && t[0] !== r.OPS.rectangle && t[0] !== r.OPS.moveTo) a = n.path.getAttributeNS(null, \\"d\\") + a;else {\\n n.path = this.svgFactory.createElement(\\"svg:path\\");\\n this._ensureTransformGroup().append(n.path);\\n }\\n n.path.setAttributeNS(null, \\"d\\", a);\\n n.path.setAttributeNS(null, \\"fill\\", \\"none\\");\\n n.element = n.path;\\n n.setCurrentPoint(i, s);\\n }\\n endPath() {\\n const t = this.current;\\n t.path = null;\\n if (!this.pendingClip) return;\\n if (!t.element) {\\n this.pendingClip = null;\\n return;\\n }\\n const e = \\"clippath\\" + d++,\\n n = this.svgFactory.createElement(\\"svg:clipPath\\");\\n n.setAttributeNS(null, \\"id\\", e);\\n n.setAttributeNS(null, \\"transform\\", pm(this.transformMatrix));\\n const i = t.element.cloneNode(!0);\\n \\"evenodd\\" === this.pendingClip ? i.setAttributeNS(null, \\"clip-rule\\", \\"evenodd\\") : i.setAttributeNS(null, \\"clip-rule\\", \\"nonzero\\");\\n this.pendingClip = null;\\n n.append(i);\\n this.defs.append(n);\\n if (t.activeClipUrl) {\\n t.clipGroup = null;\\n for (const t of this.extraStack) t.clipGroup = null;\\n n.setAttributeNS(null, \\"clip-path\\", t.activeClipUrl);\\n }\\n t.activeClipUrl = \\"url(#\\".concat(e, \\")\\");\\n this.tgrp = null;\\n }\\n clip(t) {\\n this.pendingClip = t;\\n }\\n closePath() {\\n const t = this.current;\\n if (t.path) {\\n const e = \\"\\".concat(t.path.getAttributeNS(null, \\"d\\"), \\"Z\\");\\n t.path.setAttributeNS(null, \\"d\\", e);\\n }\\n }\\n setLeading(t) {\\n this.current.leading = -t;\\n }\\n setTextRise(t) {\\n this.current.textRise = t;\\n }\\n setTextRenderingMode(t) {\\n this.current.textRenderingMode = t;\\n }\\n setHScale(t) {\\n this.current.textHScale = t / 100;\\n }\\n setRenderingIntent(t) {}\\n setFlatness(t) {}\\n setGState(t) {\\n for (const [e, n] of t) switch (e) {\\n case \\"LW\\":\\n this.setLineWidth(n);\\n break;\\n case \\"LC\\":\\n this.setLineCap(n);\\n break;\\n case \\"LJ\\":\\n this.setLineJoin(n);\\n break;\\n case \\"ML\\":\\n this.setMiterLimit(n);\\n break;\\n case \\"D\\":\\n this.setDash(n[0], n[1]);\\n break;\\n case \\"RI\\":\\n this.setRenderingIntent(n);\\n break;\\n case \\"FL\\":\\n this.setFlatness(n);\\n break;\\n case \\"Font\\":\\n this.setFont(n);\\n break;\\n case \\"CA\\":\\n this.setStrokeAlpha(n);\\n break;\\n case \\"ca\\":\\n this.setFillAlpha(n);\\n break;\\n default:\\n (0, r.warn)(\\"Unimplemented graphic state operator \\".concat(e));\\n }\\n }\\n fill() {\\n const t = this.current;\\n if (t.element) {\\n t.element.setAttributeNS(null, \\"fill\\", t.fillColor);\\n t.element.setAttributeNS(null, \\"fill-opacity\\", t.fillAlpha);\\n this.endPath();\\n }\\n }\\n stroke() {\\n const t = this.current;\\n if (t.element) {\\n this._setStrokeAttributes(t.element);\\n t.element.setAttributeNS(null, \\"fill\\", \\"none\\");\\n this.endPath();\\n }\\n }\\n _setStrokeAttributes(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\\n const n = this.current;\\n let i = n.dashArray;\\n 1 !== e && i.length > 0 && (i = i.map(function (t) {\\n return e * t;\\n }));\\n t.setAttributeNS(null, \\"stroke\\", n.strokeColor);\\n t.setAttributeNS(null, \\"stroke-opacity\\", n.strokeAlpha);\\n t.setAttributeNS(null, \\"stroke-miterlimit\\", pf(n.miterLimit));\\n t.setAttributeNS(null, \\"stroke-linecap\\", n.lineCap);\\n t.setAttributeNS(null, \\"stroke-linejoin\\", n.lineJoin);\\n t.setAttributeNS(null, \\"stroke-width\\", pf(e * n.lineWidth) + \\"px\\");\\n t.setAttributeNS(null, \\"stroke-dasharray\\", i.map(pf).join(\\" \\"));\\n t.setAttributeNS(null, \\"stroke-dashoffset\\", pf(e * n.dashPhase) + \\"px\\");\\n }\\n eoFill() {\\n var _this$current$element;\\n (_this$current$element = this.current.element) === null || _this$current$element === void 0 ? void 0 : _this$current$element.setAttributeNS(null, \\"fill-rule\\", \\"evenodd\\");\\n this.fill();\\n }\\n fillStroke() {\\n this.stroke();\\n this.fill();\\n }\\n eoFillStroke() {\\n var _this$current$element2;\\n (_this$current$element2 = this.current.element) === null || _this$current$element2 === void 0 ? void 0 : _this$current$element2.setAttributeNS(null, \\"fill-rule\\", \\"evenodd\\");\\n this.fillStroke();\\n }\\n closeStroke() {\\n this.closePath();\\n this.stroke();\\n }\\n closeFillStroke() {\\n this.closePath();\\n this.fillStroke();\\n }\\n closeEOFillStroke() {\\n this.closePath();\\n this.eoFillStroke();\\n }\\n paintSolidColorImageMask() {\\n const t = this.svgFactory.createElement(\\"svg:rect\\");\\n t.setAttributeNS(null, \\"x\\", \\"0\\");\\n t.setAttributeNS(null, \\"y\\", \\"0\\");\\n t.setAttributeNS(null, \\"width\\", \\"1px\\");\\n t.setAttributeNS(null, \\"height\\", \\"1px\\");\\n t.setAttributeNS(null, \\"fill\\", this.current.fillColor);\\n this._ensureTransformGroup().append(t);\\n }\\n paintImageXObject(t) {\\n const e = this.getObject(t);\\n e ? this.paintInlineImageXObject(e) : (0, r.warn)(\\"Dependent image with object ID \\".concat(t, \\" is not ready yet\\"));\\n }\\n paintInlineImageXObject(t, e) {\\n const n = t.width,\\n i = t.height,\\n r = h(t, this.forceDataSchema, !!e),\\n s = this.svgFactory.createElement(\\"svg:rect\\");\\n s.setAttributeNS(null, \\"x\\", \\"0\\");\\n s.setAttributeNS(null, \\"y\\", \\"0\\");\\n s.setAttributeNS(null, \\"width\\", pf(n));\\n s.setAttributeNS(null, \\"height\\", pf(i));\\n this.current.element = s;\\n this.clip(\\"nonzero\\");\\n const a = this.svgFactory.createElement(\\"svg:image\\");\\n a.setAttributeNS(\\"http://www.w3.org/1999/xlink\\", \\"xlink:href\\", r);\\n a.setAttributeNS(null, \\"x\\", \\"0\\");\\n a.setAttributeNS(null, \\"y\\", pf(-i));\\n a.setAttributeNS(null, \\"width\\", pf(n) + \\"px\\");\\n a.setAttributeNS(null, \\"height\\", pf(i) + \\"px\\");\\n a.setAttributeNS(null, \\"transform\\", \\"scale(\\".concat(pf(1 / n), \\" \\").concat(pf(-1 / i), \\")\\"));\\n e ? e.append(a) : this._ensureTransformGroup().append(a);\\n }\\n paintImageMaskXObject(t) {\\n const e = this.getObject(t.data, t);\\n if (e.bitmap) {\\n (0, r.warn)(\\"paintImageMaskXObject: ImageBitmap support is not implemented, ensure that the \`isOffscreenCanvasSupported\` API parameter is disabled.\\");\\n return;\\n }\\n const n = this.current,\\n i = e.width,\\n s = e.height,\\n a = n.fillColor;\\n n.maskId = \\"mask\\" + u++;\\n const o = this.svgFactory.createElement(\\"svg:mask\\");\\n o.setAttributeNS(null, \\"id\\", n.maskId);\\n const l = this.svgFactory.createElement(\\"svg:rect\\");\\n l.setAttributeNS(null, \\"x\\", \\"0\\");\\n l.setAttributeNS(null, \\"y\\", \\"0\\");\\n l.setAttributeNS(null, \\"width\\", pf(i));\\n l.setAttributeNS(null, \\"height\\", pf(s));\\n l.setAttributeNS(null, \\"fill\\", a);\\n l.setAttributeNS(null, \\"mask\\", \\"url(#\\".concat(n.maskId, \\")\\"));\\n this.defs.append(o);\\n this._ensureTransformGroup().append(l);\\n this.paintInlineImageXObject(e, o);\\n }\\n paintFormXObjectBegin(t, e) {\\n Array.isArray(t) && 6 === t.length && this.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\\n if (e) {\\n const t = e[2] - e[0],\\n n = e[3] - e[1],\\n i = this.svgFactory.createElement(\\"svg:rect\\");\\n i.setAttributeNS(null, \\"x\\", e[0]);\\n i.setAttributeNS(null, \\"y\\", e[1]);\\n i.setAttributeNS(null, \\"width\\", pf(t));\\n i.setAttributeNS(null, \\"height\\", pf(n));\\n this.current.element = i;\\n this.clip(\\"nonzero\\");\\n this.endPath();\\n }\\n }\\n paintFormXObjectEnd() {}\\n _initialize(t) {\\n const e = this.svgFactory.create(t.width, t.height),\\n n = this.svgFactory.createElement(\\"svg:defs\\");\\n e.append(n);\\n this.defs = n;\\n const i = this.svgFactory.createElement(\\"svg:g\\");\\n i.setAttributeNS(null, \\"transform\\", pm(t.transform));\\n e.append(i);\\n this.svg = i;\\n return e;\\n }\\n _ensureClipGroup() {\\n if (!this.current.clipGroup) {\\n const t = this.svgFactory.createElement(\\"svg:g\\");\\n t.setAttributeNS(null, \\"clip-path\\", this.current.activeClipUrl);\\n this.svg.append(t);\\n this.current.clipGroup = t;\\n }\\n return this.current.clipGroup;\\n }\\n _ensureTransformGroup() {\\n if (!this.tgrp) {\\n this.tgrp = this.svgFactory.createElement(\\"svg:g\\");\\n this.tgrp.setAttributeNS(null, \\"transform\\", pm(this.transformMatrix));\\n this.current.activeClipUrl ? this._ensureClipGroup().append(this.tgrp) : this.svg.append(this.tgrp);\\n }\\n return this.tgrp;\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var i = n(3),\\n r = n(187),\\n s = n(192);\\n i({\\n target: \\"Array\\",\\n proto: !0\\n }, {\\n group: function group(t) {\\n return r(this, t, arguments.length > 1 ? arguments[1] : void 0);\\n }\\n });\\n s(\\"group\\");\\n }, (t, e, n) => {\\n var i = n(99),\\n r = n(14),\\n s = n(13),\\n a = n(40),\\n o = n(18),\\n l = n(64),\\n c = n(188),\\n h = n(108),\\n d = Array,\\n u = r([].push);\\n t.exports = function (t, e, n, r) {\\n for (var p, f, g, m = a(t), b = s(m), v = i(e, n), y = c(null), A = l(b), _ = 0; A > _; _++) {\\n g = b[_];\\n (f = o(v(g, _, m))) in y ? u(y[f], g) : y[f] = [g];\\n }\\n if (r && (p = r(m)) !== d) for (f in y) y[f] = h(p, y[f]);\\n return y;\\n };\\n }, (t, e, n) => {\\n var i,\\n r = n(47),\\n s = n(189),\\n a = n(66),\\n o = n(55),\\n l = n(191),\\n c = n(43),\\n h = n(54),\\n d = \\"prototype\\",\\n u = \\"script\\",\\n p = h(\\"IE_PROTO\\"),\\n EmptyConstructor = function EmptyConstructor() {},\\n scriptTag = function scriptTag(t) {\\n return \\"<\\" + u + \\">\\" + t + \\"\\";\\n },\\n NullProtoObjectViaActiveX = function NullProtoObjectViaActiveX(t) {\\n t.write(scriptTag(\\"\\"));\\n t.close();\\n var e = t.parentWindow.Object;\\n t = null;\\n return e;\\n },\\n _NullProtoObject = function NullProtoObject() {\\n try {\\n i = new ActiveXObject(\\"htmlfile\\");\\n } catch (t) {}\\n _NullProtoObject = \\"undefined\\" != typeof document ? document.domain && i ? NullProtoObjectViaActiveX(i) : function () {\\n var t,\\n e = c(\\"iframe\\"),\\n n = \\"java\\" + u + \\":\\";\\n e.style.display = \\"none\\";\\n l.appendChild(e);\\n e.src = String(n);\\n (t = e.contentWindow.document).open();\\n t.write(scriptTag(\\"document.F=Object\\"));\\n t.close();\\n return t.F;\\n }() : NullProtoObjectViaActiveX(i);\\n for (var t = a.length; t--;) delete _NullProtoObject[d][a[t]];\\n return _NullProtoObject();\\n };\\n o[p] = !0;\\n t.exports = Object.create || function create(t, e) {\\n var n;\\n if (null !== t) {\\n EmptyConstructor[d] = r(t);\\n n = new EmptyConstructor();\\n EmptyConstructor[d] = null;\\n n[p] = t;\\n } else n = _NullProtoObject();\\n return void 0 === e ? n : s.f(n, e);\\n };\\n }, (t, e, n) => {\\n var i = n(6),\\n r = n(46),\\n s = n(45),\\n a = n(47),\\n o = n(12),\\n l = n(190);\\n e.f = i && !r ? Object.defineProperties : function defineProperties(t, e) {\\n a(t);\\n for (var n, i = o(e), r = l(e), c = r.length, h = 0; c > h;) s.f(t, n = r[h++], i[n]);\\n return t;\\n };\\n }, (t, e, n) => {\\n var i = n(59),\\n r = n(66);\\n t.exports = Object.keys || function keys(t) {\\n return i(t, r);\\n };\\n }, (t, e, n) => {\\n var i = n(24);\\n t.exports = i(\\"document\\", \\"documentElement\\");\\n }, (t, e, n) => {\\n var i = n(34),\\n r = n(188),\\n s = n(45).f,\\n a = i(\\"unscopables\\"),\\n o = Array.prototype;\\n null == o[a] && s(o, a, {\\n configurable: !0,\\n value: r(null)\\n });\\n t.exports = function (t) {\\n o[a][t] = !0;\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.XfaText = void 0;\\n n(89);\\n class XfaText {\\n static textContent(t) {\\n const e = [],\\n n = {\\n items: e,\\n styles: Object.create(null)\\n };\\n !function walk(t) {\\n if (!t) return;\\n let n = null;\\n const i = t.name;\\n if (\\"#text\\" === i) n = t.value;else {\\n var _t$attributes;\\n if (!XfaText.shouldBuildText(i)) return;\\n t !== null && t !== void 0 && (_t$attributes = t.attributes) !== null && _t$attributes !== void 0 && _t$attributes.textContent ? n = t.attributes.textContent : t.value && (n = t.value);\\n }\\n null !== n && e.push({\\n str: n\\n });\\n if (t.children) for (const e of t.children) walk(e);\\n }(t);\\n return n;\\n }\\n static shouldBuildText(t) {\\n return !(\\"textarea\\" === t || \\"input\\" === t || \\"option\\" === t || \\"select\\" === t);\\n }\\n }\\n e.XfaText = XfaText;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.TextLayerRenderTask = void 0;\\n e.renderTextLayer = function renderTextLayer(t) {\\n if (!t.textContentSource && (t.textContent || t.textContentStream)) {\\n (0, r.deprecated)(\\"The TextLayerRender \`textContent\`/\`textContentStream\` parameters will be removed in the future, please use \`textContentSource\` instead.\\");\\n t.textContentSource = t.textContent || t.textContentStream;\\n }\\n const {\\n container: e,\\n viewport: n\\n } = t,\\n i = getComputedStyle(e),\\n s = i.getPropertyValue(\\"visibility\\"),\\n a = parseFloat(i.getPropertyValue(\\"--scale-factor\\"));\\n \\"visible\\" === s && (!a || Math.abs(a - n.scale) > 1e-5) && console.error(\\"The \`--scale-factor\` CSS-variable must be set, to the same value as \`viewport.scale\`, either on the \`container\`-element itself or higher up in the DOM.\\");\\n const o = new TextLayerRenderTask(t);\\n o._render();\\n return o;\\n };\\n e.updateTextLayer = function updateTextLayer(t) {\\n let {\\n container: e,\\n viewport: n,\\n textDivs: i,\\n textDivProperties: s,\\n isOffscreenCanvasSupported: a,\\n mustRotate: o = !0,\\n mustRescale: l = !0\\n } = t;\\n o && (0, r.setLayerDimensions)(e, {\\n rotation: n.rotation\\n });\\n if (l) {\\n const t = getCtx(0, a),\\n e = {\\n prevFontSize: null,\\n prevFontFamily: null,\\n div: null,\\n scale: n.scale * (globalThis.devicePixelRatio || 1),\\n properties: null,\\n ctx: t\\n };\\n for (const t of i) {\\n e.properties = s.get(t);\\n e.div = t;\\n layout(e);\\n }\\n }\\n };\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(167);\\n const s = 30,\\n a = .8,\\n o = new Map();\\n function getCtx(t, e) {\\n let n;\\n if (e && i.FeatureTest.isOffscreenCanvasSupported) n = new OffscreenCanvas(t, t).getContext(\\"2d\\", {\\n alpha: !1\\n });else {\\n const e = document.createElement(\\"canvas\\");\\n e.width = e.height = t;\\n n = e.getContext(\\"2d\\", {\\n alpha: !1\\n });\\n }\\n return n;\\n }\\n function appendText(t, e, n) {\\n const r = document.createElement(\\"span\\"),\\n l = {\\n angle: 0,\\n canvasWidth: 0,\\n hasText: \\"\\" !== e.str,\\n hasEOL: e.hasEOL,\\n fontSize: 0\\n };\\n t._textDivs.push(r);\\n const c = i.Util.transform(t._transform, e.transform);\\n let h = Math.atan2(c[1], c[0]);\\n const d = n[e.fontName];\\n d.vertical && (h += Math.PI / 2);\\n const u = Math.hypot(c[2], c[3]),\\n p = u * function getAscent(t, e) {\\n const n = o.get(t);\\n if (n) return n;\\n const i = getCtx(s, e);\\n i.font = \\"\\".concat(s, \\"px \\").concat(t);\\n const r = i.measureText(\\"\\");\\n let l = r.fontBoundingBoxAscent,\\n c = Math.abs(r.fontBoundingBoxDescent);\\n if (l) {\\n const e = l / (l + c);\\n o.set(t, e);\\n i.canvas.width = i.canvas.height = 0;\\n return e;\\n }\\n i.strokeStyle = \\"red\\";\\n i.clearRect(0, 0, s, s);\\n i.strokeText(\\"g\\", 0, 0);\\n let h = i.getImageData(0, 0, s, s).data;\\n c = 0;\\n for (let t = h.length - 1 - 3; t >= 0; t -= 4) if (h[t] > 0) {\\n c = Math.ceil(t / 4 / s);\\n break;\\n }\\n i.clearRect(0, 0, s, s);\\n i.strokeText(\\"A\\", 0, s);\\n h = i.getImageData(0, 0, s, s).data;\\n l = 0;\\n for (let t = 0, e = h.length; t < e; t += 4) if (h[t] > 0) {\\n l = s - Math.floor(t / 4 / s);\\n break;\\n }\\n i.canvas.width = i.canvas.height = 0;\\n if (l) {\\n const e = l / (l + c);\\n o.set(t, e);\\n return e;\\n }\\n o.set(t, a);\\n return a;\\n }(d.fontFamily, t._isOffscreenCanvasSupported);\\n let f, g;\\n if (0 === h) {\\n f = c[4];\\n g = c[5] - p;\\n } else {\\n f = c[4] + p * Math.sin(h);\\n g = c[5] - p * Math.cos(h);\\n }\\n const m = \\"calc(var(--scale-factor)*\\",\\n b = r.style;\\n if (t._container === t._rootContainer) {\\n b.left = \\"\\".concat((100 * f / t._pageWidth).toFixed(2), \\"%\\");\\n b.top = \\"\\".concat((100 * g / t._pageHeight).toFixed(2), \\"%\\");\\n } else {\\n b.left = \\"\\".concat(m).concat(f.toFixed(2), \\"px)\\");\\n b.top = \\"\\".concat(m).concat(g.toFixed(2), \\"px)\\");\\n }\\n b.fontSize = \\"\\".concat(m).concat(u.toFixed(2), \\"px)\\");\\n b.fontFamily = d.fontFamily;\\n l.fontSize = u;\\n r.setAttribute(\\"role\\", \\"presentation\\");\\n r.textContent = e.str;\\n r.dir = e.dir;\\n t._fontInspectorEnabled && (r.dataset.fontName = e.fontName);\\n 0 !== h && (l.angle = h * (180 / Math.PI));\\n let v = !1;\\n if (e.str.length > 1) v = !0;else if (\\" \\" !== e.str && e.transform[0] !== e.transform[3]) {\\n const t = Math.abs(e.transform[0]),\\n n = Math.abs(e.transform[3]);\\n t !== n && Math.max(t, n) / Math.min(t, n) > 1.5 && (v = !0);\\n }\\n v && (l.canvasWidth = d.vertical ? e.height : e.width);\\n t._textDivProperties.set(r, l);\\n t._isReadableStream && t._layoutText(r);\\n }\\n function layout(t) {\\n const {\\n div: e,\\n scale: n,\\n properties: i,\\n ctx: r,\\n prevFontSize: s,\\n prevFontFamily: a\\n } = t,\\n {\\n style: o\\n } = e;\\n let l = \\"\\";\\n if (0 !== i.canvasWidth && i.hasText) {\\n const {\\n fontFamily: c\\n } = o,\\n {\\n canvasWidth: h,\\n fontSize: d\\n } = i;\\n if (s !== d || a !== c) {\\n r.font = \\"\\".concat(d * n, \\"px \\").concat(c);\\n t.prevFontSize = d;\\n t.prevFontFamily = c;\\n }\\n const {\\n width: u\\n } = r.measureText(e.textContent);\\n u > 0 && (l = \\"scaleX(\\".concat(h * n / u, \\")\\"));\\n }\\n 0 !== i.angle && (l = \\"rotate(\\".concat(i.angle, \\"deg) \\").concat(l));\\n l.length > 0 && (o.transform = l);\\n }\\n class TextLayerRenderTask {\\n constructor(t) {\\n var _globalThis$FontInspe2;\\n let {\\n textContentSource: e,\\n container: n,\\n viewport: s,\\n textDivs: a,\\n textDivProperties: o,\\n textContentItemsStr: l,\\n isOffscreenCanvasSupported: c\\n } = t;\\n this._textContentSource = e;\\n this._isReadableStream = e instanceof ReadableStream;\\n this._container = this._rootContainer = n;\\n this._textDivs = a || [];\\n this._textContentItemsStr = l || [];\\n this._isOffscreenCanvasSupported = c;\\n this._fontInspectorEnabled = !!((_globalThis$FontInspe2 = globalThis.FontInspector) !== null && _globalThis$FontInspe2 !== void 0 && _globalThis$FontInspe2.enabled);\\n this._reader = null;\\n this._textDivProperties = o || new WeakMap();\\n this._canceled = !1;\\n this._capability = new i.PromiseCapability();\\n this._layoutTextParams = {\\n prevFontSize: null,\\n prevFontFamily: null,\\n div: null,\\n scale: s.scale * (globalThis.devicePixelRatio || 1),\\n properties: null,\\n ctx: getCtx(0, c)\\n };\\n const {\\n pageWidth: h,\\n pageHeight: d,\\n pageX: u,\\n pageY: p\\n } = s.rawDims;\\n this._transform = [1, 0, 0, -1, -u, p + d];\\n this._pageWidth = h;\\n this._pageHeight = d;\\n (0, r.setLayerDimensions)(n, s);\\n this._capability.promise.finally(() => {\\n this._layoutTextParams = null;\\n }).catch(() => {});\\n }\\n get promise() {\\n return this._capability.promise;\\n }\\n cancel() {\\n this._canceled = !0;\\n if (this._reader) {\\n this._reader.cancel(new i.AbortException(\\"TextLayer task cancelled.\\")).catch(() => {});\\n this._reader = null;\\n }\\n this._capability.reject(new i.AbortException(\\"TextLayer task cancelled.\\"));\\n }\\n _processItems(t, e) {\\n for (const n of t) if (void 0 !== n.str) {\\n this._textContentItemsStr.push(n.str);\\n appendText(this, n, e);\\n } else if (\\"beginMarkedContentProps\\" === n.type || \\"beginMarkedContent\\" === n.type) {\\n const t = this._container;\\n this._container = document.createElement(\\"span\\");\\n this._container.classList.add(\\"markedContent\\");\\n null !== n.id && this._container.setAttribute(\\"id\\", \\"\\".concat(n.id));\\n t.append(this._container);\\n } else \\"endMarkedContent\\" === n.type && (this._container = this._container.parentNode);\\n }\\n _layoutText(t) {\\n const e = this._layoutTextParams.properties = this._textDivProperties.get(t);\\n this._layoutTextParams.div = t;\\n layout(this._layoutTextParams);\\n e.hasText && this._container.append(t);\\n if (e.hasEOL) {\\n const t = document.createElement(\\"br\\");\\n t.setAttribute(\\"role\\", \\"presentation\\");\\n this._container.append(t);\\n }\\n }\\n _render() {\\n const t = new i.PromiseCapability();\\n let e = Object.create(null);\\n if (this._isReadableStream) {\\n const pump = () => {\\n this._reader.read().then(n => {\\n let {\\n value: i,\\n done: r\\n } = n;\\n if (r) t.resolve();else {\\n Object.assign(e, i.styles);\\n this._processItems(i.items, e);\\n pump();\\n }\\n }, t.reject);\\n };\\n this._reader = this._textContentSource.getReader();\\n pump();\\n } else {\\n if (!this._textContentSource) throw new Error('No \\"textContentSource\\" parameter specified.');\\n {\\n const {\\n items: e,\\n styles: n\\n } = this._textContentSource;\\n this._processItems(e, n);\\n t.resolve();\\n }\\n }\\n t.promise.then(() => {\\n e = null;\\n !function render(t) {\\n if (t._canceled) return;\\n const e = t._textDivs,\\n n = t._capability;\\n if (e.length > 1e5) n.resolve();else {\\n if (!t._isReadableStream) for (const n of e) t._layoutText(n);\\n n.resolve();\\n }\\n }(this);\\n }, this._capability.reject);\\n }\\n }\\n e.TextLayerRenderTask = TextLayerRenderTask;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.AnnotationEditorLayer = void 0;\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n var i = n(1),\\n r = n(163),\\n s = n(164),\\n a = n(196),\\n o = n(201),\\n l = n(167),\\n c = n(202);\\n var _re = /*#__PURE__*/new WeakMap();\\n var _se = /*#__PURE__*/new WeakMap();\\n var _ae = /*#__PURE__*/new WeakMap();\\n var _oe = /*#__PURE__*/new WeakMap();\\n var _le = /*#__PURE__*/new WeakMap();\\n var _ce = /*#__PURE__*/new WeakMap();\\n var _he = /*#__PURE__*/new WeakMap();\\n var _de = /*#__PURE__*/new WeakMap();\\n var _ue = /*#__PURE__*/new WeakMap();\\n var _pe = /*#__PURE__*/new WeakMap();\\n var _me = /*#__PURE__*/new WeakSet();\\n var _be = /*#__PURE__*/new WeakSet();\\n var _ge = /*#__PURE__*/new WeakSet();\\n var _fe = /*#__PURE__*/new WeakSet();\\n class AnnotationEditorLayer {\\n constructor(_t13) {\\n _classPrivateMethodInitSpec(this, _fe);\\n _classPrivateMethodInitSpec(this, _ge);\\n _classPrivateMethodInitSpec(this, _be);\\n _classPrivateMethodInitSpec(this, _me);\\n _classPrivateFieldInitSpec(this, _re, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _se, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _ae, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _oe, {\\n writable: true,\\n value: this.pointerup.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _le, {\\n writable: true,\\n value: this.pointerdown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ce, {\\n writable: true,\\n value: new Map()\\n });\\n _classPrivateFieldInitSpec(this, _he, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _de, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _ue, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _pe, {\\n writable: true,\\n value: void 0\\n });\\n let {\\n uiManager: _e11,\\n pageIndex: _n7,\\n div: _i4,\\n accessibilityManager: _r4,\\n annotationLayer: s,\\n viewport: l,\\n l10n: h\\n } = _t13;\\n const d = [a.FreeTextEditor, o.InkEditor, c.StampEditor];\\n if (!AnnotationEditorLayer._initialized) {\\n AnnotationEditorLayer._initialized = !0;\\n for (const t of d) t.initialize(h);\\n }\\n _e11.registerEditorTypes(d);\\n _classPrivateFieldSet(this, _pe, _e11);\\n this.pageIndex = _n7;\\n this.div = _i4;\\n _classPrivateFieldSet(this, _re, _r4);\\n _classPrivateFieldSet(this, _ae, s);\\n this.viewport = l;\\n _classPrivateFieldGet(this, _pe).addLayer(this);\\n }\\n get isEmpty() {\\n return 0 === _classPrivateFieldGet(this, _ce).size;\\n }\\n updateToolbar(t) {\\n _classPrivateFieldGet(this, _pe).updateToolbar(t);\\n }\\n updateMode() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _classPrivateFieldGet(this, _pe).getMode();\\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\\n if (t === i.AnnotationEditorType.INK) {\\n this.addInkEditorIfNeeded(!1);\\n this.disableClick();\\n } else this.enableClick();\\n _classPrivateFieldGet(this, _pe).unselectAll();\\n if (t !== i.AnnotationEditorType.NONE) {\\n this.div.classList.toggle(\\"freeTextEditing\\", t === i.AnnotationEditorType.FREETEXT);\\n this.div.classList.toggle(\\"inkEditing\\", t === i.AnnotationEditorType.INK);\\n this.div.classList.toggle(\\"stampEditing\\", t === i.AnnotationEditorType.STAMP);\\n this.div.hidden = !1;\\n }\\n }\\n addInkEditorIfNeeded(t) {\\n if (!t && _classPrivateFieldGet(this, _pe).getMode() !== i.AnnotationEditorType.INK) return;\\n if (!t) for (const t of _classPrivateFieldGet(this, _ce).values()) if (t.isEmpty()) {\\n t.setInBackground();\\n return;\\n }\\n _classPrivateMethodGet(this, _ge, _ge2).call(this, {\\n offsetX: 0,\\n offsetY: 0\\n }).setInBackground();\\n }\\n setEditingState(t) {\\n _classPrivateFieldGet(this, _pe).setEditingState(t);\\n }\\n addCommands(t) {\\n _classPrivateFieldGet(this, _pe).addCommands(t);\\n }\\n enable() {\\n this.div.style.pointerEvents = \\"auto\\";\\n const t = new Set();\\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\\n e.enableEditing();\\n e.annotationElementId && t.add(e.annotationElementId);\\n }\\n if (!_classPrivateFieldGet(this, _ae)) return;\\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\\n for (const n of e) {\\n n.hide();\\n if (_classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(n.data.id)) continue;\\n if (t.has(n.data.id)) continue;\\n const e = this.deserialize(n);\\n if (e) {\\n this.addOrRebuild(e);\\n e.enableEditing();\\n }\\n }\\n }\\n disable() {\\n _classPrivateFieldSet(this, _ue, !0);\\n this.div.style.pointerEvents = \\"none\\";\\n const t = new Set();\\n for (const e of _classPrivateFieldGet(this, _ce).values()) {\\n e.disableEditing();\\n if (e.annotationElementId && null === e.serialize()) {\\n var _this$getEditableAnno;\\n (_this$getEditableAnno = this.getEditableAnnotation(e.annotationElementId)) === null || _this$getEditableAnno === void 0 ? void 0 : _this$getEditableAnno.show();\\n e.remove();\\n } else t.add(e.annotationElementId);\\n }\\n if (_classPrivateFieldGet(this, _ae)) {\\n const e = _classPrivateFieldGet(this, _ae).getEditableAnnotations();\\n for (const n of e) {\\n const {\\n id: e\\n } = n.data;\\n t.has(e) || _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) || n.show();\\n }\\n }\\n _classPrivateMethodGet(this, _fe, _fe2).call(this);\\n this.isEmpty && (this.div.hidden = !0);\\n _classPrivateFieldSet(this, _ue, !1);\\n }\\n getEditableAnnotation(t) {\\n var _classPrivateFieldGet9;\\n return ((_classPrivateFieldGet9 = _classPrivateFieldGet(this, _ae)) === null || _classPrivateFieldGet9 === void 0 ? void 0 : _classPrivateFieldGet9.getEditableAnnotation(t)) || null;\\n }\\n setActiveEditor(t) {\\n _classPrivateFieldGet(this, _pe).getActive() !== t && _classPrivateFieldGet(this, _pe).setActiveEditor(t);\\n }\\n enableClick() {\\n this.div.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _le));\\n this.div.addEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _oe));\\n }\\n disableClick() {\\n this.div.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _le));\\n this.div.removeEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _oe));\\n }\\n attach(t) {\\n _classPrivateFieldGet(this, _ce).set(t.id, t);\\n const {\\n annotationElementId: e\\n } = t;\\n e && _classPrivateFieldGet(this, _pe).isDeletedAnnotationElement(e) && _classPrivateFieldGet(this, _pe).removeDeletedAnnotationElement(t);\\n }\\n detach(t) {\\n var _classPrivateFieldGet10;\\n _classPrivateFieldGet(this, _ce).delete(t.id);\\n (_classPrivateFieldGet10 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet10 === void 0 ? void 0 : _classPrivateFieldGet10.removePointerInTextLayer(t.contentDiv);\\n !_classPrivateFieldGet(this, _ue) && t.annotationElementId && _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t);\\n }\\n remove(t) {\\n this.detach(t);\\n _classPrivateFieldGet(this, _pe).removeEditor(t);\\n t.div.style.display = \\"none\\";\\n setTimeout(() => {\\n t.div.style.display = \\"\\";\\n t.div.remove();\\n t.isAttachedToDOM = !1;\\n document.activeElement === document.body && _classPrivateFieldGet(this, _pe).focusMainContainer();\\n }, 0);\\n _classPrivateFieldGet(this, _de) || this.addInkEditorIfNeeded(!1);\\n }\\n add(t) {\\n _classPrivateMethodGet(this, _me, _me2).call(this, t);\\n _classPrivateFieldGet(this, _pe).addEditor(t);\\n this.attach(t);\\n if (!t.isAttachedToDOM) {\\n const e = t.render();\\n this.div.append(e);\\n t.isAttachedToDOM = !0;\\n }\\n this.moveEditorInDOM(t);\\n t.onceAdded();\\n _classPrivateFieldGet(this, _pe).addToAnnotationStorage(t);\\n }\\n moveEditorInDOM(t) {\\n var _classPrivateFieldGet11;\\n (_classPrivateFieldGet11 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet11 === void 0 ? void 0 : _classPrivateFieldGet11.moveElementInDOM(this.div, t.div, t.contentDiv, !0);\\n }\\n addOrRebuild(t) {\\n t.needsToBeRebuilt() ? t.rebuild() : this.add(t);\\n }\\n addUndoableEditor(t) {\\n this.addCommands({\\n cmd: () => {\\n this.addOrRebuild(t);\\n },\\n undo: () => {\\n t.remove();\\n },\\n mustExec: !1\\n });\\n }\\n getNextId() {\\n return _classPrivateFieldGet(this, _pe).getId();\\n }\\n deserialize(t) {\\n var _t$annotationType;\\n switch ((_t$annotationType = t.annotationType) !== null && _t$annotationType !== void 0 ? _t$annotationType : t.annotationEditorType) {\\n case i.AnnotationEditorType.FREETEXT:\\n return a.FreeTextEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n case i.AnnotationEditorType.INK:\\n return o.InkEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n case i.AnnotationEditorType.STAMP:\\n return c.StampEditor.deserialize(t, this, _classPrivateFieldGet(this, _pe));\\n }\\n return null;\\n }\\n setSelected(t) {\\n _classPrivateFieldGet(this, _pe).setSelected(t);\\n }\\n toggleSelected(t) {\\n _classPrivateFieldGet(this, _pe).toggleSelected(t);\\n }\\n isSelected(t) {\\n return _classPrivateFieldGet(this, _pe).isSelected(t);\\n }\\n unselect(t) {\\n _classPrivateFieldGet(this, _pe).unselect(t);\\n }\\n pointerup(t) {\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (!(0 !== t.button || t.ctrlKey && e) && t.target === this.div && _classPrivateFieldGet(this, _he)) {\\n _classPrivateFieldSet(this, _he, !1);\\n _classPrivateFieldGet(this, _se) ? _classPrivateMethodGet(this, _ge, _ge2).call(this, t) : _classPrivateFieldSet(this, _se, !0);\\n }\\n }\\n pointerdown(t) {\\n if (_classPrivateFieldGet(this, _he)) {\\n _classPrivateFieldSet(this, _he, !1);\\n return;\\n }\\n const {\\n isMac: e\\n } = i.FeatureTest.platform;\\n if (0 !== t.button || t.ctrlKey && e) return;\\n if (t.target !== this.div) return;\\n _classPrivateFieldSet(this, _he, !0);\\n const n = _classPrivateFieldGet(this, _pe).getActive();\\n _classPrivateFieldSet(this, _se, !n || n.isEmpty());\\n }\\n drop(t) {\\n const e = t.dataTransfer.getData(\\"text/plain\\"),\\n n = _classPrivateFieldGet(this, _pe).getEditor(e);\\n if (!n) return;\\n t.preventDefault();\\n t.dataTransfer.dropEffect = \\"move\\";\\n _classPrivateMethodGet(this, _me, _me2).call(this, n);\\n const i = this.div.getBoundingClientRect(),\\n r = t.clientX - i.x,\\n s = t.clientY - i.y;\\n n.translate(r - n.startX, s - n.startY);\\n this.moveEditorInDOM(n);\\n n.div.focus();\\n }\\n dragover(t) {\\n t.preventDefault();\\n }\\n destroy() {\\n var _classPrivateFieldGet12;\\n ((_classPrivateFieldGet12 = _classPrivateFieldGet(this, _pe).getActive()) === null || _classPrivateFieldGet12 === void 0 ? void 0 : _classPrivateFieldGet12.parent) === this && _classPrivateFieldGet(this, _pe).setActiveEditor(null);\\n for (const t of _classPrivateFieldGet(this, _ce).values()) {\\n var _classPrivateFieldGet13;\\n (_classPrivateFieldGet13 = _classPrivateFieldGet(this, _re)) === null || _classPrivateFieldGet13 === void 0 ? void 0 : _classPrivateFieldGet13.removePointerInTextLayer(t.contentDiv);\\n t.setParent(null);\\n t.isAttachedToDOM = !1;\\n t.div.remove();\\n }\\n this.div = null;\\n _classPrivateFieldGet(this, _ce).clear();\\n _classPrivateFieldGet(this, _pe).removeLayer(this);\\n }\\n render(t) {\\n let {\\n viewport: e\\n } = t;\\n this.viewport = e;\\n (0, l.setLayerDimensions)(this.div, e);\\n (0, s.bindEvents)(this, this.div, [\\"dragover\\", \\"drop\\"]);\\n for (const t of _classPrivateFieldGet(this, _pe).getEditors(this.pageIndex)) this.add(t);\\n this.updateMode();\\n }\\n update(t) {\\n let {\\n viewport: e\\n } = t;\\n _classPrivateFieldGet(this, _pe).commitOrRemove();\\n this.viewport = e;\\n (0, l.setLayerDimensions)(this.div, {\\n rotation: e.rotation\\n });\\n this.updateMode();\\n }\\n get pageDimensions() {\\n const {\\n pageWidth: t,\\n pageHeight: e\\n } = this.viewport.rawDims;\\n return [t, e];\\n }\\n }\\n function _me2(t) {\\n if (t.parent !== this) {\\n var _t$parent;\\n if (t.annotationElementId) {\\n _classPrivateFieldGet(this, _pe).addDeletedAnnotationElement(t.annotationElementId);\\n r.AnnotationEditor.deleteAnnotationElement(t);\\n t.annotationElementId = null;\\n }\\n this.attach(t);\\n (_t$parent = t.parent) === null || _t$parent === void 0 ? void 0 : _t$parent.detach(t);\\n t.setParent(this);\\n if (t.div && t.isAttachedToDOM) {\\n t.div.remove();\\n this.div.append(t.div);\\n }\\n }\\n }\\n function _be2(t) {\\n switch (_classPrivateFieldGet(this, _pe).getMode()) {\\n case i.AnnotationEditorType.FREETEXT:\\n return new a.FreeTextEditor(t);\\n case i.AnnotationEditorType.INK:\\n return new o.InkEditor(t);\\n case i.AnnotationEditorType.STAMP:\\n return new c.StampEditor(t);\\n }\\n return null;\\n }\\n function _ge2(t) {\\n const e = this.getNextId(),\\n n = _classPrivateMethodGet(this, _be, _be2).call(this, {\\n parent: this,\\n id: e,\\n x: t.offsetX,\\n y: t.offsetY,\\n uiManager: _classPrivateFieldGet(this, _pe)\\n });\\n n && this.add(n);\\n return n;\\n }\\n function _fe2() {\\n _classPrivateFieldSet(this, _de, !0);\\n for (const t of _classPrivateFieldGet(this, _ce).values()) t.isEmpty() && t.remove();\\n _classPrivateFieldSet(this, _de, !1);\\n }\\n _defineProperty(AnnotationEditorLayer, \\"_initialized\\", !1);\\n e.AnnotationEditorLayer = AnnotationEditorLayer;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class30;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.FreeTextEditor = void 0;\\n n(89);\\n var i = n(1),\\n r = n(164),\\n s = n(163),\\n a = n(197);\\n var _ve = /*#__PURE__*/new WeakMap();\\n var _ye = /*#__PURE__*/new WeakMap();\\n var _Ae = /*#__PURE__*/new WeakMap();\\n var _e12 = /*#__PURE__*/new WeakMap();\\n var _Se = /*#__PURE__*/new WeakMap();\\n var _Ee = /*#__PURE__*/new WeakMap();\\n var _xe = /*#__PURE__*/new WeakMap();\\n var _we = /*#__PURE__*/new WeakMap();\\n var _Ce = /*#__PURE__*/new WeakMap();\\n var _Te = /*#__PURE__*/new WeakSet();\\n var _Pe = /*#__PURE__*/new WeakSet();\\n var _Re = /*#__PURE__*/new WeakSet();\\n var _ke = /*#__PURE__*/new WeakSet();\\n var _Fe = /*#__PURE__*/new WeakSet();\\n var _Ie = /*#__PURE__*/new WeakSet();\\n var _Me = /*#__PURE__*/new WeakSet();\\n class FreeTextEditor extends s.AnnotationEditor {\\n static get _keyboardManager() {\\n const t = FreeTextEditor.prototype,\\n arrowChecker = t => t.isEmpty(),\\n e = r.AnnotationEditorUIManager.TRANSLATE_SMALL,\\n n = r.AnnotationEditorUIManager.TRANSLATE_BIG;\\n return (0, i.shadow)(this, \\"_keyboardManager\\", new r.KeyboardManager([[[\\"ctrl+s\\", \\"mac+meta+s\\", \\"ctrl+p\\", \\"mac+meta+p\\"], t.commitOrRemove, {\\n bubbles: !0\\n }], [[\\"ctrl+Enter\\", \\"mac+meta+Enter\\", \\"Escape\\", \\"mac+Escape\\"], t.commitOrRemove], [[\\"ArrowLeft\\", \\"mac+ArrowLeft\\"], t._translateEmpty, {\\n args: [-e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowLeft\\", \\"mac+shift+ArrowLeft\\"], t._translateEmpty, {\\n args: [-n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowRight\\", \\"mac+ArrowRight\\"], t._translateEmpty, {\\n args: [e, 0],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowRight\\", \\"mac+shift+ArrowRight\\"], t._translateEmpty, {\\n args: [n, 0],\\n checker: arrowChecker\\n }], [[\\"ArrowUp\\", \\"mac+ArrowUp\\"], t._translateEmpty, {\\n args: [0, -e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowUp\\", \\"mac+shift+ArrowUp\\"], t._translateEmpty, {\\n args: [0, -n],\\n checker: arrowChecker\\n }], [[\\"ArrowDown\\", \\"mac+ArrowDown\\"], t._translateEmpty, {\\n args: [0, e],\\n checker: arrowChecker\\n }], [[\\"ctrl+ArrowDown\\", \\"mac+shift+ArrowDown\\"], t._translateEmpty, {\\n args: [0, n],\\n checker: arrowChecker\\n }]]));\\n }\\n constructor(_t14) {\\n super(_objectSpread(_objectSpread({}, _t14), {}, {\\n name: \\"freeTextEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Me);\\n _classPrivateMethodInitSpec(this, _Ie);\\n _classPrivateMethodInitSpec(this, _Fe);\\n _classPrivateMethodInitSpec(this, _ke);\\n _classPrivateMethodInitSpec(this, _Re);\\n _classPrivateMethodInitSpec(this, _Pe);\\n _classPrivateMethodInitSpec(this, _Te);\\n _classPrivateFieldInitSpec(this, _ve, {\\n writable: true,\\n value: this.editorDivBlur.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _ye, {\\n writable: true,\\n value: this.editorDivFocus.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Ae, {\\n writable: true,\\n value: this.editorDivInput.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _e12, {\\n writable: true,\\n value: this.editorDivKeydown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Se, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ee, {\\n writable: true,\\n value: \\"\\"\\n });\\n _classPrivateFieldInitSpec(this, _xe, {\\n writable: true,\\n value: \\"\\".concat(this.id, \\"-editor\\")\\n });\\n _classPrivateFieldInitSpec(this, _we, {\\n writable: true,\\n value: void 0\\n });\\n _classPrivateFieldInitSpec(this, _Ce, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldSet(this, _Se, _t14.color || FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor);\\n _classPrivateFieldSet(this, _we, _t14.fontSize || FreeTextEditor._defaultFontSize);\\n }\\n static initialize(t) {\\n this._l10nPromise = new Map([\\"free_text2_default_content\\", \\"editor_free_text2_aria_label\\"].map(e => [e, t.get(e)]));\\n const e = getComputedStyle(document.documentElement);\\n this._internalPadding = parseFloat(e.getPropertyValue(\\"--freetext-padding\\"));\\n }\\n static updateDefaultParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\\n FreeTextEditor._defaultFontSize = e;\\n break;\\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\\n FreeTextEditor._defaultColor = e;\\n }\\n }\\n updateParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.FREETEXT_SIZE:\\n _classPrivateMethodGet(this, _Te, _Te2).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.FREETEXT_COLOR:\\n _classPrivateMethodGet(this, _Pe, _Pe2).call(this, e);\\n }\\n }\\n static get defaultPropertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [i.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || s.AnnotationEditor._defaultLineColor]];\\n }\\n get propertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.FREETEXT_SIZE, _classPrivateFieldGet(this, _we)], [i.AnnotationEditorParamsType.FREETEXT_COLOR, _classPrivateFieldGet(this, _Se)]];\\n }\\n _translateEmpty(t, e) {\\n this._uiManager.translateSelectedEditors(t, e, !0);\\n }\\n getInitialTranslation() {\\n const t = this.parentScale;\\n return [-FreeTextEditor._internalPadding * t, -(FreeTextEditor._internalPadding + _classPrivateFieldGet(this, _we)) * t];\\n }\\n rebuild() {\\n super.rebuild();\\n null !== this.div && (this.isAttachedToDOM || this.parent.add(this));\\n }\\n enableEditMode() {\\n if (!this.isInEditMode()) {\\n this.parent.setEditingState(!1);\\n this.parent.updateToolbar(i.AnnotationEditorType.FREETEXT);\\n super.enableEditMode();\\n this.overlayDiv.classList.remove(\\"enabled\\");\\n this.editorDiv.contentEditable = !0;\\n this.div.draggable = !1;\\n this.div.removeAttribute(\\"aria-activedescendant\\");\\n this.editorDiv.addEventListener(\\"keydown\\", _classPrivateFieldGet(this, _e12));\\n this.editorDiv.addEventListener(\\"focus\\", _classPrivateFieldGet(this, _ye));\\n this.editorDiv.addEventListener(\\"blur\\", _classPrivateFieldGet(this, _ve));\\n this.editorDiv.addEventListener(\\"input\\", _classPrivateFieldGet(this, _Ae));\\n }\\n }\\n disableEditMode() {\\n if (this.isInEditMode()) {\\n this.parent.setEditingState(!0);\\n super.disableEditMode();\\n this.overlayDiv.classList.add(\\"enabled\\");\\n this.editorDiv.contentEditable = !1;\\n this.div.setAttribute(\\"aria-activedescendant\\", _classPrivateFieldGet(this, _xe));\\n this.div.draggable = !0;\\n this.editorDiv.removeEventListener(\\"keydown\\", _classPrivateFieldGet(this, _e12));\\n this.editorDiv.removeEventListener(\\"focus\\", _classPrivateFieldGet(this, _ye));\\n this.editorDiv.removeEventListener(\\"blur\\", _classPrivateFieldGet(this, _ve));\\n this.editorDiv.removeEventListener(\\"input\\", _classPrivateFieldGet(this, _Ae));\\n this.div.focus({\\n preventScroll: !0\\n });\\n this.isEditing = !1;\\n this.parent.div.classList.add(\\"freeTextEditing\\");\\n }\\n }\\n focusin(t) {\\n super.focusin(t);\\n t.target !== this.editorDiv && this.editorDiv.focus();\\n }\\n onceAdded() {\\n if (this.width) _classPrivateMethodGet(this, _Me, _Me2).call(this);else {\\n this.enableEditMode();\\n this.editorDiv.focus();\\n }\\n }\\n isEmpty() {\\n return !this.editorDiv || \\"\\" === this.editorDiv.innerText.trim();\\n }\\n remove() {\\n this.isEditing = !1;\\n if (this.parent) {\\n this.parent.setEditingState(!0);\\n this.parent.div.classList.add(\\"freeTextEditing\\");\\n }\\n super.remove();\\n }\\n commit() {\\n if (!this.isInEditMode()) return;\\n super.commit();\\n this.disableEditMode();\\n const t = _classPrivateFieldGet(this, _Ee),\\n e = _classPrivateFieldSet(this, _Ee, _classPrivateMethodGet(this, _Re, _Re2).call(this).trimEnd());\\n if (t === e) return;\\n const setText = t => {\\n _classPrivateFieldSet(this, _Ee, t);\\n if (t) {\\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\\n this.rebuild();\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n } else this.remove();\\n };\\n this.addCommands({\\n cmd: () => {\\n setText(e);\\n },\\n undo: () => {\\n setText(t);\\n },\\n mustExec: !1\\n });\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n }\\n shouldGetKeyboardEvents() {\\n return this.isInEditMode();\\n }\\n enterInEditMode() {\\n this.enableEditMode();\\n this.editorDiv.focus();\\n }\\n dblclick(t) {\\n this.enterInEditMode();\\n }\\n keydown(t) {\\n t.target === this.div && \\"Enter\\" === t.key && this.enterInEditMode();\\n }\\n editorDivKeydown(t) {\\n FreeTextEditor._keyboardManager.exec(this, t);\\n }\\n editorDivFocus(t) {\\n this.isEditing = !0;\\n }\\n editorDivBlur(t) {\\n this.isEditing = !1;\\n }\\n editorDivInput(t) {\\n this.parent.div.classList.toggle(\\"freeTextEditing\\", this.isEmpty());\\n }\\n disableEditing() {\\n this.editorDiv.setAttribute(\\"role\\", \\"comment\\");\\n this.editorDiv.removeAttribute(\\"aria-multiline\\");\\n }\\n enableEditing() {\\n this.editorDiv.setAttribute(\\"role\\", \\"textbox\\");\\n this.editorDiv.setAttribute(\\"aria-multiline\\", !0);\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n this.editorDiv = document.createElement(\\"div\\");\\n this.editorDiv.className = \\"internal\\";\\n this.editorDiv.setAttribute(\\"id\\", _classPrivateFieldGet(this, _xe));\\n this.enableEditing();\\n FreeTextEditor._l10nPromise.get(\\"editor_free_text2_aria_label\\").then(t => {\\n var _this$editorDiv;\\n return (_this$editorDiv = this.editorDiv) === null || _this$editorDiv === void 0 ? void 0 : _this$editorDiv.setAttribute(\\"aria-label\\", t);\\n });\\n FreeTextEditor._l10nPromise.get(\\"free_text2_default_content\\").then(t => {\\n var _this$editorDiv2;\\n return (_this$editorDiv2 = this.editorDiv) === null || _this$editorDiv2 === void 0 ? void 0 : _this$editorDiv2.setAttribute(\\"default-content\\", t);\\n });\\n this.editorDiv.contentEditable = !0;\\n const {\\n style: n\\n } = this.editorDiv;\\n n.fontSize = \\"calc(\\".concat(_classPrivateFieldGet(this, _we), \\"px * var(--scale-factor))\\");\\n n.color = _classPrivateFieldGet(this, _Se);\\n this.div.append(this.editorDiv);\\n this.overlayDiv = document.createElement(\\"div\\");\\n this.overlayDiv.classList.add(\\"overlay\\", \\"enabled\\");\\n this.div.append(this.overlayDiv);\\n (0, r.bindEvents)(this, this.div, [\\"dblclick\\", \\"keydown\\"]);\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n if (this.annotationElementId) {\\n const {\\n position: r\\n } = _classPrivateFieldGet(this, _Ce);\\n let [s, a] = this.getInitialTranslation();\\n [s, a] = this.pageTranslationToScreen(s, a);\\n const [o, l] = this.pageDimensions,\\n [c, h] = this.pageTranslation;\\n let d, u;\\n switch (this.rotation) {\\n case 0:\\n d = t + (r[0] - c) / o;\\n u = e + this.height - (r[1] - h) / l;\\n break;\\n case 90:\\n d = t + (r[0] - c) / o;\\n u = e - (r[1] - h) / l;\\n [s, a] = [a, -s];\\n break;\\n case 180:\\n d = t - this.width + (r[0] - c) / o;\\n u = e - (r[1] - h) / l;\\n [s, a] = [-s, -a];\\n break;\\n case 270:\\n d = t + (r[0] - c - this.height * l) / o;\\n u = e + (r[1] - h - this.width * o) / l;\\n [s, a] = [-a, s];\\n }\\n this.setAt(d * n, u * i, s, a);\\n } else this.setAt(t * n, e * i, this.width * n, this.height * i);\\n _classPrivateMethodGet(this, _Fe, _Fe2).call(this);\\n this.div.draggable = !0;\\n this.editorDiv.contentEditable = !1;\\n } else {\\n this.div.draggable = !1;\\n this.editorDiv.contentEditable = !0;\\n }\\n return this.div;\\n }\\n get contentDiv() {\\n return this.editorDiv;\\n }\\n static deserialize(t, e, n) {\\n let r = null;\\n if (t instanceof a.FreeTextAnnotationElement) {\\n const {\\n data: {\\n defaultAppearanceData: {\\n fontSize: e,\\n fontColor: n\\n },\\n rect: s,\\n rotation: a,\\n id: o\\n },\\n textContent: l,\\n textPosition: c,\\n parent: {\\n page: {\\n pageNumber: h\\n }\\n }\\n } = t;\\n if (!l || 0 === l.length) return null;\\n r = t = {\\n annotationType: i.AnnotationEditorType.FREETEXT,\\n color: Array.from(n),\\n fontSize: e,\\n value: l.join(\\"\\\\n\\"),\\n position: c,\\n pageIndex: h - 1,\\n rect: s,\\n rotation: a,\\n id: o,\\n deleted: !1\\n };\\n }\\n const s = super.deserialize(t, e, n);\\n _classPrivateFieldSet(s, _we, t.fontSize);\\n _classPrivateFieldSet(s, _Se, i.Util.makeHexColor(...t.color));\\n _classPrivateFieldSet(s, _Ee, t.value);\\n s.annotationElementId = t.id || null;\\n _classPrivateFieldSet(s, _Ce, r);\\n return s;\\n }\\n serialize() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (this.isEmpty()) return null;\\n if (this.deleted) return {\\n pageIndex: this.pageIndex,\\n id: this.annotationElementId,\\n deleted: !0\\n };\\n const e = FreeTextEditor._internalPadding * this.parentScale,\\n n = this.getRect(e, e),\\n r = s.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : _classPrivateFieldGet(this, _Se)),\\n a = {\\n annotationType: i.AnnotationEditorType.FREETEXT,\\n color: r,\\n fontSize: _classPrivateFieldGet(this, _we),\\n value: _classPrivateFieldGet(this, _Ee),\\n pageIndex: this.pageIndex,\\n rect: n,\\n rotation: this.rotation\\n };\\n if (t) return a;\\n if (this.annotationElementId && !_classPrivateMethodGet(this, _Ie, _Ie2).call(this, a)) return null;\\n a.id = this.annotationElementId;\\n return a;\\n }\\n }\\n _class30 = FreeTextEditor;\\n function _Te2(t) {\\n const setFontsize = t => {\\n this.editorDiv.style.fontSize = \\"calc(\\".concat(t, \\"px * var(--scale-factor))\\");\\n this.translate(0, -(t - _classPrivateFieldGet(this, _we)) * this.parentScale);\\n _classPrivateFieldSet(this, _we, t);\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n },\\n e = _classPrivateFieldGet(this, _we);\\n this.addCommands({\\n cmd: () => {\\n setFontsize(t);\\n },\\n undo: () => {\\n setFontsize(e);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.FREETEXT_SIZE,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Pe2(t) {\\n const e = _classPrivateFieldGet(this, _Se);\\n this.addCommands({\\n cmd: () => {\\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = t);\\n },\\n undo: () => {\\n _classPrivateFieldSet(this, _Se, this.editorDiv.style.color = e);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.FREETEXT_COLOR,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Re2() {\\n const t = this.editorDiv.getElementsByTagName(\\"div\\");\\n if (0 === t.length) return this.editorDiv.innerText;\\n const e = [];\\n for (const n of t) e.push(n.innerText.replace(/\\\\r\\\\n?|\\\\n/, \\"\\"));\\n return e.join(\\"\\\\n\\");\\n }\\n function _ke2() {\\n const [t, e] = this.parentDimensions;\\n let n;\\n if (this.isAttachedToDOM) n = this.div.getBoundingClientRect();else {\\n const {\\n currentLayer: t,\\n div: e\\n } = this,\\n i = e.style.display;\\n e.style.display = \\"hidden\\";\\n t.div.append(this.div);\\n n = e.getBoundingClientRect();\\n e.remove();\\n e.style.display = i;\\n }\\n if (this.rotation % 180 == this.parentRotation % 180) {\\n this.width = n.width / t;\\n this.height = n.height / e;\\n } else {\\n this.width = n.height / t;\\n this.height = n.width / e;\\n }\\n this.fixAndSetPosition();\\n }\\n function _Fe2() {\\n this.editorDiv.replaceChildren();\\n if (_classPrivateFieldGet(this, _Ee)) for (const t of _classPrivateFieldGet(this, _Ee).split(\\"\\\\n\\")) {\\n const e = document.createElement(\\"div\\");\\n e.append(t ? document.createTextNode(t) : document.createElement(\\"br\\"));\\n this.editorDiv.append(e);\\n }\\n }\\n function _Ie2(t) {\\n const {\\n value: e,\\n fontSize: n,\\n color: i,\\n rect: r,\\n pageIndex: s\\n } = _classPrivateFieldGet(this, _Ce);\\n return t.value !== e || t.fontSize !== n || t.rect.some((t, e) => Math.abs(t - r[e]) >= 1) || t.color.some((t, e) => t !== i[e]) || t.pageIndex !== s;\\n }\\n function _Me2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (!this.annotationElementId) return;\\n _classPrivateMethodGet(this, _ke, _ke2).call(this);\\n if (!t && (0 === this.width || 0 === this.height)) {\\n setTimeout(() => _classPrivateMethodGet(this, _Me, _Me2).call(this, !0), 0);\\n return;\\n }\\n const e = _class30._internalPadding * this.parentScale;\\n _classPrivateFieldGet(this, _Ce).rect = this.getRect(e, e);\\n }\\n _defineProperty(FreeTextEditor, \\"_freeTextDefaultContent\\", \\"\\");\\n _defineProperty(FreeTextEditor, \\"_l10nPromise\\", void 0);\\n _defineProperty(FreeTextEditor, \\"_internalPadding\\", 0);\\n _defineProperty(FreeTextEditor, \\"_defaultColor\\", null);\\n _defineProperty(FreeTextEditor, \\"_defaultFontSize\\", 10);\\n _defineProperty(FreeTextEditor, \\"_type\\", \\"freetext\\");\\n e.FreeTextEditor = FreeTextEditor;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _re2, _an, _on, _ln, _cn;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StampAnnotationElement = e.InkAnnotationElement = e.FreeTextAnnotationElement = e.AnnotationLayer = void 0;\\n n(89);\\n n(125);\\n n(135);\\n n(137);\\n n(140);\\n n(142);\\n n(144);\\n n(146);\\n var i = n(1),\\n r = n(167),\\n s = n(162),\\n a = n(198),\\n o = n(199),\\n l = n(200);\\n const c = 1e3,\\n h = new WeakSet();\\n function getRectDims(t) {\\n return {\\n width: t[2] - t[0],\\n height: t[3] - t[1]\\n };\\n }\\n class AnnotationElementFactory {\\n static create(t) {\\n switch (t.data.annotationType) {\\n case i.AnnotationType.LINK:\\n return new LinkAnnotationElement(t);\\n case i.AnnotationType.TEXT:\\n return new TextAnnotationElement(t);\\n case i.AnnotationType.WIDGET:\\n switch (t.data.fieldType) {\\n case \\"Tx\\":\\n return new TextWidgetAnnotationElement(t);\\n case \\"Btn\\":\\n return t.data.radioButton ? new RadioButtonWidgetAnnotationElement(t) : t.data.checkBox ? new CheckboxWidgetAnnotationElement(t) : new PushButtonWidgetAnnotationElement(t);\\n case \\"Ch\\":\\n return new ChoiceWidgetAnnotationElement(t);\\n case \\"Sig\\":\\n return new SignatureWidgetAnnotationElement(t);\\n }\\n return new WidgetAnnotationElement(t);\\n case i.AnnotationType.POPUP:\\n return new PopupAnnotationElement(t);\\n case i.AnnotationType.FREETEXT:\\n return new FreeTextAnnotationElement(t);\\n case i.AnnotationType.LINE:\\n return new LineAnnotationElement(t);\\n case i.AnnotationType.SQUARE:\\n return new SquareAnnotationElement(t);\\n case i.AnnotationType.CIRCLE:\\n return new CircleAnnotationElement(t);\\n case i.AnnotationType.POLYLINE:\\n return new PolylineAnnotationElement(t);\\n case i.AnnotationType.CARET:\\n return new CaretAnnotationElement(t);\\n case i.AnnotationType.INK:\\n return new InkAnnotationElement(t);\\n case i.AnnotationType.POLYGON:\\n return new PolygonAnnotationElement(t);\\n case i.AnnotationType.HIGHLIGHT:\\n return new HighlightAnnotationElement(t);\\n case i.AnnotationType.UNDERLINE:\\n return new UnderlineAnnotationElement(t);\\n case i.AnnotationType.SQUIGGLY:\\n return new SquigglyAnnotationElement(t);\\n case i.AnnotationType.STRIKEOUT:\\n return new StrikeOutAnnotationElement(t);\\n case i.AnnotationType.STAMP:\\n return new StampAnnotationElement(t);\\n case i.AnnotationType.FILEATTACHMENT:\\n return new FileAttachmentAnnotationElement(t);\\n default:\\n return new AnnotationElement(t);\\n }\\n }\\n }\\n var _De = /*#__PURE__*/new WeakMap();\\n class AnnotationElement {\\n constructor(t) {\\n _classPrivateFieldInitSpec(this, _De, {\\n writable: true,\\n value: !1\\n });\\n let {\\n isRenderable: e = !1,\\n ignoreBorder: n = !1,\\n createQuadrilaterals: i = !1\\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\\n this.isRenderable = e;\\n this.data = t.data;\\n this.layer = t.layer;\\n this.linkService = t.linkService;\\n this.downloadManager = t.downloadManager;\\n this.imageResourcesPath = t.imageResourcesPath;\\n this.renderForms = t.renderForms;\\n this.svgFactory = t.svgFactory;\\n this.annotationStorage = t.annotationStorage;\\n this.enableScripting = t.enableScripting;\\n this.hasJSActions = t.hasJSActions;\\n this._fieldObjects = t.fieldObjects;\\n this.parent = t.parent;\\n e && (this.container = this._createContainer(n));\\n i && this._createQuadrilaterals();\\n }\\n _createContainer(t) {\\n const {\\n data: e,\\n parent: {\\n page: n,\\n viewport: r\\n }\\n } = this,\\n s = document.createElement(\\"section\\");\\n s.setAttribute(\\"data-annotation-id\\", e.id);\\n s.style.zIndex = this.parent.zIndex++;\\n this.data.popupRef && s.setAttribute(\\"aria-haspopup\\", \\"dialog\\");\\n e.noRotate && s.classList.add(\\"norotate\\");\\n const {\\n pageWidth: a,\\n pageHeight: o,\\n pageX: l,\\n pageY: c\\n } = r.rawDims;\\n if (!e.rect || this instanceof PopupAnnotationElement) {\\n const {\\n rotation: t\\n } = e;\\n e.hasOwnCanvas || 0 === t || this.setRotation(t, s);\\n return s;\\n }\\n const {\\n width: h,\\n height: d\\n } = getRectDims(e.rect),\\n u = i.Util.normalizeRect([e.rect[0], n.view[3] - e.rect[1] + n.view[1], e.rect[2], n.view[3] - e.rect[3] + n.view[1]]);\\n if (!t && e.borderStyle.width > 0) {\\n s.style.borderWidth = \\"\\".concat(e.borderStyle.width, \\"px\\");\\n const t = e.borderStyle.horizontalCornerRadius,\\n n = e.borderStyle.verticalCornerRadius;\\n if (t > 0 || n > 0) {\\n const e = \\"calc(\\".concat(t, \\"px * var(--scale-factor)) / calc(\\").concat(n, \\"px * var(--scale-factor))\\");\\n s.style.borderRadius = e;\\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\\n const t = \\"calc(\\".concat(h, \\"px * var(--scale-factor)) / calc(\\").concat(d, \\"px * var(--scale-factor))\\");\\n s.style.borderRadius = t;\\n }\\n switch (e.borderStyle.style) {\\n case i.AnnotationBorderStyleType.SOLID:\\n s.style.borderStyle = \\"solid\\";\\n break;\\n case i.AnnotationBorderStyleType.DASHED:\\n s.style.borderStyle = \\"dashed\\";\\n break;\\n case i.AnnotationBorderStyleType.BEVELED:\\n (0, i.warn)(\\"Unimplemented border style: beveled\\");\\n break;\\n case i.AnnotationBorderStyleType.INSET:\\n (0, i.warn)(\\"Unimplemented border style: inset\\");\\n break;\\n case i.AnnotationBorderStyleType.UNDERLINE:\\n s.style.borderBottomStyle = \\"solid\\";\\n }\\n const r = e.borderColor || null;\\n if (r) {\\n _classPrivateFieldSet(this, _De, !0);\\n s.style.borderColor = i.Util.makeHexColor(0 | r[0], 0 | r[1], 0 | r[2]);\\n } else s.style.borderWidth = 0;\\n }\\n s.style.left = 100 * (u[0] - l) / a + \\"%\\";\\n s.style.top = 100 * (u[1] - c) / o + \\"%\\";\\n const {\\n rotation: p\\n } = e;\\n if (e.hasOwnCanvas || 0 === p) {\\n s.style.width = 100 * h / a + \\"%\\";\\n s.style.height = 100 * d / o + \\"%\\";\\n } else this.setRotation(p, s);\\n return s;\\n }\\n setRotation(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.container;\\n if (!this.data.rect) return;\\n const {\\n pageWidth: n,\\n pageHeight: i\\n } = this.parent.viewport.rawDims,\\n {\\n width: r,\\n height: s\\n } = getRectDims(this.data.rect);\\n let a, o;\\n if (t % 180 == 0) {\\n a = 100 * r / n;\\n o = 100 * s / i;\\n } else {\\n a = 100 * s / n;\\n o = 100 * r / i;\\n }\\n e.style.width = \\"\\".concat(a, \\"%\\");\\n e.style.height = \\"\\".concat(o, \\"%\\");\\n e.setAttribute(\\"data-main-rotation\\", (360 - t) % 360);\\n }\\n get _commonActions() {\\n const setColor = (t, e, n) => {\\n const i = n.detail[t];\\n n.target.style[e] = a.ColorConverters[\\"\\".concat(i[0], \\"_HTML\\")](i.slice(1));\\n };\\n return (0, i.shadow)(this, \\"_commonActions\\", {\\n display: t => {\\n const e = t.detail.display % 2 == 1;\\n this.container.style.visibility = e ? \\"hidden\\" : \\"visible\\";\\n this.annotationStorage.setValue(this.data.id, {\\n hidden: e,\\n print: 0 === t.detail.display || 3 === t.detail.display\\n });\\n },\\n print: t => {\\n this.annotationStorage.setValue(this.data.id, {\\n print: t.detail.print\\n });\\n },\\n hidden: t => {\\n this.container.style.visibility = t.detail.hidden ? \\"hidden\\" : \\"visible\\";\\n this.annotationStorage.setValue(this.data.id, {\\n hidden: t.detail.hidden\\n });\\n },\\n focus: t => {\\n setTimeout(() => t.target.focus({\\n preventScroll: !1\\n }), 0);\\n },\\n userName: t => {\\n t.target.title = t.detail.userName;\\n },\\n readonly: t => {\\n t.detail.readonly ? t.target.setAttribute(\\"readonly\\", \\"\\") : t.target.removeAttribute(\\"readonly\\");\\n },\\n required: t => {\\n this._setRequired(t.target, t.detail.required);\\n },\\n bgColor: t => {\\n setColor(\\"bgColor\\", \\"backgroundColor\\", t);\\n },\\n fillColor: t => {\\n setColor(\\"fillColor\\", \\"backgroundColor\\", t);\\n },\\n fgColor: t => {\\n setColor(\\"fgColor\\", \\"color\\", t);\\n },\\n textColor: t => {\\n setColor(\\"textColor\\", \\"color\\", t);\\n },\\n borderColor: t => {\\n setColor(\\"borderColor\\", \\"borderColor\\", t);\\n },\\n strokeColor: t => {\\n setColor(\\"strokeColor\\", \\"borderColor\\", t);\\n },\\n rotation: t => {\\n const e = t.detail.rotation;\\n this.setRotation(e);\\n this.annotationStorage.setValue(this.data.id, {\\n rotation: e\\n });\\n }\\n });\\n }\\n _dispatchEventFromSandbox(t, e) {\\n const n = this._commonActions;\\n for (const i of Object.keys(e.detail)) {\\n const r = t[i] || n[i];\\n r === null || r === void 0 ? void 0 : r(e);\\n }\\n }\\n _setDefaultPropertiesFromJS(t) {\\n if (!this.enableScripting) return;\\n const e = this.annotationStorage.getRawValue(this.data.id);\\n if (!e) return;\\n const n = this._commonActions;\\n for (const [i, r] of Object.entries(e)) {\\n const s = n[i];\\n if (s) {\\n s({\\n detail: {\\n [i]: r\\n },\\n target: t\\n });\\n delete e[i];\\n }\\n }\\n }\\n _createQuadrilaterals() {\\n if (!this.container) return;\\n const {\\n quadPoints: t\\n } = this.data;\\n if (!t) return;\\n const [e, n, i, r] = this.data.rect;\\n if (1 === t.length) {\\n const [, {\\n x: s,\\n y: a\\n }, {\\n x: o,\\n y: l\\n }] = t[0];\\n if (i === s && r === a && e === o && n === l) return;\\n }\\n const {\\n style: s\\n } = this.container;\\n let a;\\n if (_classPrivateFieldGet(this, _De)) {\\n const {\\n borderColor: t,\\n borderWidth: e\\n } = s;\\n s.borderWidth = 0;\\n a = [\\"url('data:image/svg+xml;utf8,\\", '', \\"\\")];\\n this.container.classList.add(\\"hasBorder\\");\\n }\\n const o = i - e,\\n l = r - n,\\n {\\n svgFactory: c\\n } = this,\\n h = c.createElement(\\"svg\\");\\n h.classList.add(\\"quadrilateralsContainer\\");\\n h.setAttribute(\\"width\\", 0);\\n h.setAttribute(\\"height\\", 0);\\n const d = c.createElement(\\"defs\\");\\n h.append(d);\\n const u = c.createElement(\\"clipPath\\"),\\n p = \\"clippath_\\".concat(this.data.id);\\n u.setAttribute(\\"id\\", p);\\n u.setAttribute(\\"clipPathUnits\\", \\"objectBoundingBox\\");\\n d.append(u);\\n for (const [, {\\n x: n,\\n y: i\\n }, {\\n x: s,\\n y: h\\n }] of t) {\\n var _a3;\\n const t = c.createElement(\\"rect\\"),\\n d = (s - e) / o,\\n p = (r - i) / l,\\n f = (n - s) / o,\\n g = (i - h) / l;\\n t.setAttribute(\\"x\\", d);\\n t.setAttribute(\\"y\\", p);\\n t.setAttribute(\\"width\\", f);\\n t.setAttribute(\\"height\\", g);\\n u.append(t);\\n (_a3 = a) === null || _a3 === void 0 ? void 0 : _a3.push(\\"\\"));\\n }\\n if (_classPrivateFieldGet(this, _De)) {\\n a.push(\\"')\\");\\n s.backgroundImage = a.join(\\"\\");\\n }\\n this.container.append(h);\\n this.container.style.clipPath = \\"url(#\\".concat(p, \\")\\");\\n }\\n _createPopup() {\\n const {\\n container: t,\\n data: e\\n } = this;\\n t.setAttribute(\\"aria-haspopup\\", \\"dialog\\");\\n const n = new PopupAnnotationElement({\\n data: {\\n color: e.color,\\n titleObj: e.titleObj,\\n modificationDate: e.modificationDate,\\n contentsObj: e.contentsObj,\\n richText: e.richText,\\n parentRect: e.rect,\\n borderStyle: 0,\\n id: \\"popup_\\".concat(e.id),\\n rotation: e.rotation\\n },\\n parent: this.parent,\\n elements: [this]\\n });\\n this.parent.div.append(n.render());\\n }\\n render() {\\n (0, i.unreachable)(\\"Abstract method \`AnnotationElement.render\` called\\");\\n }\\n _getElementsByName(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n const n = [];\\n if (this._fieldObjects) {\\n const r = this._fieldObjects[t];\\n if (r) for (const {\\n page: t,\\n id: s,\\n exportValues: a\\n } of r) {\\n if (-1 === t) continue;\\n if (s === e) continue;\\n const r = \\"string\\" == typeof a ? a : null,\\n o = document.querySelector(\\"[data-element-id=\\\\\\"\\".concat(s, \\"\\\\\\"]\\"));\\n !o || h.has(o) ? n.push({\\n id: s,\\n exportValue: r,\\n domElement: o\\n }) : (0, i.warn)(\\"_getElementsByName - element not allowed: \\".concat(s));\\n }\\n return n;\\n }\\n for (const i of document.getElementsByName(t)) {\\n const {\\n exportValue: t\\n } = i,\\n r = i.getAttribute(\\"data-element-id\\");\\n r !== e && h.has(i) && n.push({\\n id: r,\\n exportValue: t,\\n domElement: i\\n });\\n }\\n return n;\\n }\\n show() {\\n var _this$popup;\\n this.container && (this.container.hidden = !1);\\n (_this$popup = this.popup) === null || _this$popup === void 0 ? void 0 : _this$popup.maybeShow();\\n }\\n hide() {\\n var _this$popup2;\\n this.container && (this.container.hidden = !0);\\n (_this$popup2 = this.popup) === null || _this$popup2 === void 0 ? void 0 : _this$popup2.forceHide();\\n }\\n getElementsToTriggerPopup() {\\n return this.container;\\n }\\n addHighlightArea() {\\n const t = this.getElementsToTriggerPopup();\\n if (Array.isArray(t)) for (const e of t) e.classList.add(\\"highlightArea\\");else t.classList.add(\\"highlightArea\\");\\n }\\n _editOnDoubleClick() {\\n const {\\n annotationEditorType: t,\\n data: {\\n id: e\\n }\\n } = this;\\n this.container.addEventListener(\\"dblclick\\", () => {\\n var _this$linkService$eve;\\n (_this$linkService$eve = this.linkService.eventBus) === null || _this$linkService$eve === void 0 ? void 0 : _this$linkService$eve.dispatch(\\"switchannotationeditormode\\", {\\n source: this,\\n mode: t,\\n editId: e\\n });\\n });\\n }\\n }\\n var _Le = /*#__PURE__*/new WeakSet();\\n var _Oe = /*#__PURE__*/new WeakSet();\\n class LinkAnnotationElement extends AnnotationElement {\\n constructor(_t15) {\\n let _e13 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n super(_t15, {\\n isRenderable: !0,\\n ignoreBorder: !!(_e13 !== null && _e13 !== void 0 && _e13.ignoreBorder),\\n createQuadrilaterals: !0\\n });\\n _classPrivateMethodInitSpec(this, _Oe);\\n _classPrivateMethodInitSpec(this, _Le);\\n this.isTooltipOnly = _t15.data.isTooltipOnly;\\n }\\n render() {\\n const {\\n data: t,\\n linkService: e\\n } = this,\\n n = document.createElement(\\"a\\");\\n n.setAttribute(\\"data-element-id\\", t.id);\\n let i = !1;\\n if (t.url) {\\n e.addLinkAttributes(n, t.url, t.newWindow);\\n i = !0;\\n } else if (t.action) {\\n this._bindNamedAction(n, t.action);\\n i = !0;\\n } else if (t.attachment) {\\n this._bindAttachment(n, t.attachment);\\n i = !0;\\n } else if (t.setOCGState) {\\n _classPrivateMethodGet(this, _Oe, _Oe2).call(this, n, t.setOCGState);\\n i = !0;\\n } else if (t.dest) {\\n this._bindLink(n, t.dest);\\n i = !0;\\n } else {\\n if (t.actions && (t.actions.Action || t.actions[\\"Mouse Up\\"] || t.actions[\\"Mouse Down\\"]) && this.enableScripting && this.hasJSActions) {\\n this._bindJSAction(n, t);\\n i = !0;\\n }\\n if (t.resetForm) {\\n this._bindResetFormAction(n, t.resetForm);\\n i = !0;\\n } else if (this.isTooltipOnly && !i) {\\n this._bindLink(n, \\"\\");\\n i = !0;\\n }\\n }\\n this.container.classList.add(\\"linkAnnotation\\");\\n i && this.container.append(n);\\n return this.container;\\n }\\n _bindLink(t, e) {\\n t.href = this.linkService.getDestinationHash(e);\\n t.onclick = () => {\\n e && this.linkService.goToDestination(e);\\n return !1;\\n };\\n (e || \\"\\" === e) && _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindNamedAction(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n this.linkService.executeNamedAction(e);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindAttachment(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n var _this$downloadManager;\\n (_this$downloadManager = this.downloadManager) === null || _this$downloadManager === void 0 ? void 0 : _this$downloadManager.openOrDownloadData(this.container, e.content, e.filename);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindJSAction(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n const n = new Map([[\\"Action\\", \\"onclick\\"], [\\"Mouse Up\\", \\"onmouseup\\"], [\\"Mouse Down\\", \\"onmousedown\\"]]);\\n for (const i of Object.keys(e.actions)) {\\n const r = n.get(i);\\n r && (t[r] = () => {\\n var _this$linkService$eve2;\\n (_this$linkService$eve2 = this.linkService.eventBus) === null || _this$linkService$eve2 === void 0 ? void 0 : _this$linkService$eve2.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e.id,\\n name: i\\n }\\n });\\n return !1;\\n });\\n }\\n t.onclick || (t.onclick = () => !1);\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n _bindResetFormAction(t, e) {\\n const n = t.onclick;\\n n || (t.href = this.linkService.getAnchorUrl(\\"\\"));\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n if (this._fieldObjects) t.onclick = () => {\\n var _this$linkService$eve3;\\n n === null || n === void 0 ? void 0 : n();\\n const {\\n fields: t,\\n refs: r,\\n include: s\\n } = e,\\n a = [];\\n if (0 !== t.length || 0 !== r.length) {\\n const e = new Set(r);\\n for (const n of t) {\\n const t = this._fieldObjects[n] || [];\\n for (const {\\n id: n\\n } of t) e.add(n);\\n }\\n for (const t of Object.values(this._fieldObjects)) for (const n of t) e.has(n.id) === s && a.push(n);\\n } else for (const t of Object.values(this._fieldObjects)) a.push(...t);\\n const o = this.annotationStorage,\\n l = [];\\n for (const t of a) {\\n const {\\n id: e\\n } = t;\\n l.push(e);\\n switch (t.type) {\\n case \\"text\\":\\n {\\n const n = t.defaultValue || \\"\\";\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n case \\"checkbox\\":\\n case \\"radiobutton\\":\\n {\\n const n = t.defaultValue === t.exportValues;\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n case \\"combobox\\":\\n case \\"listbox\\":\\n {\\n const n = t.defaultValue || \\"\\";\\n o.setValue(e, {\\n value: n\\n });\\n break;\\n }\\n default:\\n continue;\\n }\\n const n = document.querySelector(\\"[data-element-id=\\\\\\"\\".concat(e, \\"\\\\\\"]\\"));\\n n && (h.has(n) ? n.dispatchEvent(new Event(\\"resetform\\")) : (0, i.warn)(\\"_bindResetFormAction - element not allowed: \\".concat(e)));\\n }\\n this.enableScripting && ((_this$linkService$eve3 = this.linkService.eventBus) === null || _this$linkService$eve3 === void 0 ? void 0 : _this$linkService$eve3.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: \\"app\\",\\n ids: l,\\n name: \\"ResetForm\\"\\n }\\n }));\\n return !1;\\n };else {\\n (0, i.warn)('_bindResetFormAction - \\"resetForm\\" action not supported, ensure that the \`fieldObjects\` parameter is provided.');\\n n || (t.onclick = () => !1);\\n }\\n }\\n }\\n function _Le2() {\\n this.container.setAttribute(\\"data-internal-link\\", \\"\\");\\n }\\n function _Oe2(t, e) {\\n t.href = this.linkService.getAnchorUrl(\\"\\");\\n t.onclick = () => {\\n this.linkService.executeSetOCGState(e);\\n return !1;\\n };\\n _classPrivateMethodGet(this, _Le, _Le2).call(this);\\n }\\n class TextAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj, _t$data$contentsObj, _t$data$richText;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj = t.data.titleObj) !== null && _t$data$titleObj !== void 0 && _t$data$titleObj.str || (_t$data$contentsObj = t.data.contentsObj) !== null && _t$data$contentsObj !== void 0 && _t$data$contentsObj.str || (_t$data$richText = t.data.richText) !== null && _t$data$richText !== void 0 && _t$data$richText.str)\\n });\\n }\\n render() {\\n this.container.classList.add(\\"textAnnotation\\");\\n const t = document.createElement(\\"img\\");\\n t.src = this.imageResourcesPath + \\"annotation-\\" + this.data.name.toLowerCase() + \\".svg\\";\\n t.alt = \\"[{{type}} Annotation]\\";\\n t.dataset.l10nId = \\"text_annotation_type\\";\\n t.dataset.l10nArgs = JSON.stringify({\\n type: this.data.name\\n });\\n this.data.popupRef || this._createPopup();\\n this.container.append(t);\\n return this.container;\\n }\\n }\\n class WidgetAnnotationElement extends AnnotationElement {\\n render() {\\n this.data.alternativeText && (this.container.title = this.data.alternativeText);\\n return this.container;\\n }\\n showElementAndHideCanvas(t) {\\n if (this.data.hasOwnCanvas) {\\n var _t$previousSibling;\\n \\"CANVAS\\" === ((_t$previousSibling = t.previousSibling) === null || _t$previousSibling === void 0 ? void 0 : _t$previousSibling.nodeName) && (t.previousSibling.hidden = !0);\\n t.hidden = !1;\\n }\\n }\\n _getKeyModifier(t) {\\n const {\\n isWin: e,\\n isMac: n\\n } = i.FeatureTest.platform;\\n return e && t.ctrlKey || n && t.metaKey;\\n }\\n _setEventListener(t, e, n, i) {\\n e.includes(\\"mouse\\") ? t.addEventListener(e, t => {\\n var _this$linkService$eve4;\\n (_this$linkService$eve4 = this.linkService.eventBus) === null || _this$linkService$eve4 === void 0 ? void 0 : _this$linkService$eve4.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: this.data.id,\\n name: n,\\n value: i(t),\\n shift: t.shiftKey,\\n modifier: this._getKeyModifier(t)\\n }\\n });\\n }) : t.addEventListener(e, t => {\\n var _this$linkService$eve5;\\n (_this$linkService$eve5 = this.linkService.eventBus) === null || _this$linkService$eve5 === void 0 ? void 0 : _this$linkService$eve5.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: this.data.id,\\n name: n,\\n value: i(t)\\n }\\n });\\n });\\n }\\n _setEventListeners(t, e, n) {\\n for (const [i, r] of e) {\\n var _this$data$actions;\\n (\\"Action\\" === r || ((_this$data$actions = this.data.actions) === null || _this$data$actions === void 0 ? void 0 : _this$data$actions[r])) && this._setEventListener(t, i, r, n);\\n }\\n }\\n _setBackgroundColor(t) {\\n const e = this.data.backgroundColor || null;\\n t.style.backgroundColor = null === e ? \\"transparent\\" : i.Util.makeHexColor(e[0], e[1], e[2]);\\n }\\n _setTextStyle(t) {\\n const e = [\\"left\\", \\"center\\", \\"right\\"],\\n {\\n fontColor: n\\n } = this.data.defaultAppearanceData,\\n r = this.data.defaultAppearanceData.fontSize || 9,\\n s = t.style;\\n let a;\\n const roundToOneDecimal = t => Math.round(10 * t) / 10;\\n if (this.data.multiLine) {\\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2),\\n e = t / (Math.round(t / (i.LINE_FACTOR * r)) || 1);\\n a = Math.min(r, roundToOneDecimal(e / i.LINE_FACTOR));\\n } else {\\n const t = Math.abs(this.data.rect[3] - this.data.rect[1] - 2);\\n a = Math.min(r, roundToOneDecimal(t / i.LINE_FACTOR));\\n }\\n s.fontSize = \\"calc(\\".concat(a, \\"px * var(--scale-factor))\\");\\n s.color = i.Util.makeHexColor(n[0], n[1], n[2]);\\n null !== this.data.textAlignment && (s.textAlign = e[this.data.textAlignment]);\\n }\\n _setRequired(t, e) {\\n e ? t.setAttribute(\\"required\\", !0) : t.removeAttribute(\\"required\\");\\n t.setAttribute(\\"aria-required\\", e);\\n }\\n }\\n class TextWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms || !t.data.hasAppearance && !!t.data.fieldValue\\n });\\n }\\n setPropertyOnSiblings(t, e, n, i) {\\n const r = this.annotationStorage;\\n for (const s of this._getElementsByName(t.name, t.id)) {\\n s.domElement && (s.domElement[e] = n);\\n r.setValue(s.id, {\\n [i]: n\\n });\\n }\\n }\\n render() {\\n const t = this.annotationStorage,\\n e = this.data.id;\\n this.container.classList.add(\\"textWidgetAnnotation\\");\\n let n = null;\\n if (this.renderForms) {\\n var _this$data$textConten;\\n const i = t.getValue(e, {\\n value: this.data.fieldValue\\n });\\n let r = i.value || \\"\\";\\n const s = t.getValue(e, {\\n charLimit: this.data.maxLen\\n }).charLimit;\\n s && r.length > s && (r = r.slice(0, s));\\n let a = i.formattedValue || ((_this$data$textConten = this.data.textContent) === null || _this$data$textConten === void 0 ? void 0 : _this$data$textConten.join(\\"\\\\n\\")) || null;\\n a && this.data.comb && (a = a.replaceAll(/\\\\s+/g, \\"\\"));\\n const o = {\\n userValue: r,\\n formattedValue: a,\\n lastCommittedValue: null,\\n commitKey: 1\\n };\\n if (this.data.multiLine) {\\n var _a4;\\n n = document.createElement(\\"textarea\\");\\n n.textContent = (_a4 = a) !== null && _a4 !== void 0 ? _a4 : r;\\n this.data.doNotScroll && (n.style.overflowY = \\"hidden\\");\\n } else {\\n var _a5;\\n n = document.createElement(\\"input\\");\\n n.type = \\"text\\";\\n n.setAttribute(\\"value\\", (_a5 = a) !== null && _a5 !== void 0 ? _a5 : r);\\n this.data.doNotScroll && (n.style.overflowX = \\"hidden\\");\\n }\\n this.data.hasOwnCanvas && (n.hidden = !0);\\n h.add(n);\\n n.setAttribute(\\"data-element-id\\", e);\\n n.disabled = this.data.readOnly;\\n n.name = this.data.baseFieldName || this.data.fieldName;\\n n.tabIndex = c;\\n this._setRequired(n, this.data.required);\\n s && (n.maxLength = s);\\n n.addEventListener(\\"input\\", i => {\\n t.setValue(e, {\\n value: i.target.value\\n });\\n this.setPropertyOnSiblings(n, \\"value\\", i.target.value, \\"value\\");\\n o.formattedValue = null;\\n });\\n n.addEventListener(\\"resetform\\", t => {\\n var _this$data$defaultFie;\\n const e = (_this$data$defaultFie = this.data.defaultFieldValue) !== null && _this$data$defaultFie !== void 0 ? _this$data$defaultFie : \\"\\";\\n n.value = o.userValue = e;\\n o.formattedValue = null;\\n });\\n let blurListener = t => {\\n const {\\n formattedValue: e\\n } = o;\\n null != e && (t.target.value = e);\\n t.target.scrollLeft = 0;\\n };\\n if (this.enableScripting && this.hasJSActions) {\\n var _this$data$actions2;\\n n.addEventListener(\\"focus\\", t => {\\n const {\\n target: e\\n } = t;\\n o.userValue && (e.value = o.userValue);\\n o.lastCommittedValue = e.value;\\n o.commitKey = 1;\\n });\\n n.addEventListener(\\"updatefromsandbox\\", n => {\\n this.showElementAndHideCanvas(n.target);\\n const i = {\\n value(n) {\\n var _n$detail$value;\\n o.userValue = (_n$detail$value = n.detail.value) !== null && _n$detail$value !== void 0 ? _n$detail$value : \\"\\";\\n t.setValue(e, {\\n value: o.userValue.toString()\\n });\\n n.target.value = o.userValue;\\n },\\n formattedValue(n) {\\n const {\\n formattedValue: i\\n } = n.detail;\\n o.formattedValue = i;\\n null != i && n.target !== document.activeElement && (n.target.value = i);\\n t.setValue(e, {\\n formattedValue: i\\n });\\n },\\n selRange(t) {\\n t.target.setSelectionRange(...t.detail.selRange);\\n },\\n charLimit: n => {\\n const {\\n charLimit: i\\n } = n.detail,\\n {\\n target: r\\n } = n;\\n if (0 === i) {\\n r.removeAttribute(\\"maxLength\\");\\n return;\\n }\\n r.setAttribute(\\"maxLength\\", i);\\n let s = o.userValue;\\n if (s && !(s.length <= i)) {\\n var _this$linkService$eve6;\\n s = s.slice(0, i);\\n r.value = o.userValue = s;\\n t.setValue(e, {\\n value: s\\n });\\n (_this$linkService$eve6 = this.linkService.eventBus) === null || _this$linkService$eve6 === void 0 ? void 0 : _this$linkService$eve6.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: s,\\n willCommit: !0,\\n commitKey: 1,\\n selStart: r.selectionStart,\\n selEnd: r.selectionEnd\\n }\\n });\\n }\\n }\\n };\\n this._dispatchEventFromSandbox(i, n);\\n });\\n n.addEventListener(\\"keydown\\", t => {\\n o.commitKey = 1;\\n let n = -1;\\n \\"Escape\\" === t.key ? n = 0 : \\"Enter\\" !== t.key || this.data.multiLine ? \\"Tab\\" === t.key && (o.commitKey = 3) : n = 2;\\n if (-1 === n) return;\\n const {\\n value: i\\n } = t.target;\\n if (o.lastCommittedValue !== i) {\\n var _this$linkService$eve7;\\n o.lastCommittedValue = i;\\n o.userValue = i;\\n (_this$linkService$eve7 = this.linkService.eventBus) === null || _this$linkService$eve7 === void 0 ? void 0 : _this$linkService$eve7.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: i,\\n willCommit: !0,\\n commitKey: n,\\n selStart: t.target.selectionStart,\\n selEnd: t.target.selectionEnd\\n }\\n });\\n }\\n });\\n const i = blurListener;\\n blurListener = null;\\n n.addEventListener(\\"blur\\", t => {\\n var _this$linkService$eve8;\\n if (!t.relatedTarget) return;\\n const {\\n value: n\\n } = t.target;\\n o.userValue = n;\\n o.lastCommittedValue !== n && ((_this$linkService$eve8 = this.linkService.eventBus) === null || _this$linkService$eve8 === void 0 ? void 0 : _this$linkService$eve8.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: n,\\n willCommit: !0,\\n commitKey: o.commitKey,\\n selStart: t.target.selectionStart,\\n selEnd: t.target.selectionEnd\\n }\\n }));\\n i(t);\\n });\\n ((_this$data$actions2 = this.data.actions) === null || _this$data$actions2 === void 0 ? void 0 : _this$data$actions2.Keystroke) && n.addEventListener(\\"beforeinput\\", t => {\\n var _this$linkService$eve9;\\n o.lastCommittedValue = null;\\n const {\\n data: n,\\n target: i\\n } = t,\\n {\\n value: r,\\n selectionStart: s,\\n selectionEnd: a\\n } = i;\\n let l = s,\\n c = a;\\n switch (t.inputType) {\\n case \\"deleteWordBackward\\":\\n {\\n const t = r.substring(0, s).match(/\\\\w*[^\\\\w]*$/);\\n t && (l -= t[0].length);\\n break;\\n }\\n case \\"deleteWordForward\\":\\n {\\n const t = r.substring(s).match(/^[^\\\\w]*\\\\w*/);\\n t && (c += t[0].length);\\n break;\\n }\\n case \\"deleteContentBackward\\":\\n s === a && (l -= 1);\\n break;\\n case \\"deleteContentForward\\":\\n s === a && (c += 1);\\n }\\n t.preventDefault();\\n (_this$linkService$eve9 = this.linkService.eventBus) === null || _this$linkService$eve9 === void 0 ? void 0 : _this$linkService$eve9.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: r,\\n change: n || \\"\\",\\n willCommit: !1,\\n selStart: l,\\n selEnd: c\\n }\\n });\\n });\\n this._setEventListeners(n, [[\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.value);\\n }\\n blurListener && n.addEventListener(\\"blur\\", blurListener);\\n if (this.data.comb) {\\n const t = (this.data.rect[2] - this.data.rect[0]) / s;\\n n.classList.add(\\"comb\\");\\n n.style.letterSpacing = \\"calc(\\".concat(t, \\"px * var(--scale-factor) - 1ch)\\");\\n }\\n } else {\\n n = document.createElement(\\"div\\");\\n n.textContent = this.data.fieldValue;\\n n.style.verticalAlign = \\"middle\\";\\n n.style.display = \\"table-cell\\";\\n }\\n this._setTextStyle(n);\\n this._setBackgroundColor(n);\\n this._setDefaultPropertiesFromJS(n);\\n this.container.append(n);\\n return this.container;\\n }\\n }\\n class SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: !!t.data.hasOwnCanvas\\n });\\n }\\n }\\n class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n const t = this.annotationStorage,\\n e = this.data,\\n n = e.id;\\n let i = t.getValue(n, {\\n value: e.exportValue === e.fieldValue\\n }).value;\\n if (\\"string\\" == typeof i) {\\n i = \\"Off\\" !== i;\\n t.setValue(n, {\\n value: i\\n });\\n }\\n this.container.classList.add(\\"buttonWidgetAnnotation\\", \\"checkBox\\");\\n const r = document.createElement(\\"input\\");\\n h.add(r);\\n r.setAttribute(\\"data-element-id\\", n);\\n r.disabled = e.readOnly;\\n this._setRequired(r, this.data.required);\\n r.type = \\"checkbox\\";\\n r.name = e.baseFieldName || e.fieldName;\\n i && r.setAttribute(\\"checked\\", !0);\\n r.setAttribute(\\"exportValue\\", e.exportValue);\\n r.tabIndex = c;\\n r.addEventListener(\\"change\\", i => {\\n const {\\n name: r,\\n checked: s\\n } = i.target;\\n for (const i of this._getElementsByName(r, n)) {\\n const n = s && i.exportValue === e.exportValue;\\n i.domElement && (i.domElement.checked = n);\\n t.setValue(i.id, {\\n value: n\\n });\\n }\\n t.setValue(n, {\\n value: s\\n });\\n });\\n r.addEventListener(\\"resetform\\", t => {\\n const n = e.defaultFieldValue || \\"Off\\";\\n t.target.checked = n === e.exportValue;\\n });\\n if (this.enableScripting && this.hasJSActions) {\\n r.addEventListener(\\"updatefromsandbox\\", e => {\\n const i = {\\n value(e) {\\n e.target.checked = \\"Off\\" !== e.detail.value;\\n t.setValue(n, {\\n value: e.target.checked\\n });\\n }\\n };\\n this._dispatchEventFromSandbox(i, e);\\n });\\n this._setEventListeners(r, [[\\"change\\", \\"Validate\\"], [\\"change\\", \\"Action\\"], [\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.checked);\\n }\\n this._setBackgroundColor(r);\\n this._setDefaultPropertiesFromJS(r);\\n this.container.append(r);\\n return this.container;\\n }\\n }\\n class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n this.container.classList.add(\\"buttonWidgetAnnotation\\", \\"radioButton\\");\\n const t = this.annotationStorage,\\n e = this.data,\\n n = e.id;\\n let i = t.getValue(n, {\\n value: e.fieldValue === e.buttonValue\\n }).value;\\n if (\\"string\\" == typeof i) {\\n i = i !== e.buttonValue;\\n t.setValue(n, {\\n value: i\\n });\\n }\\n const r = document.createElement(\\"input\\");\\n h.add(r);\\n r.setAttribute(\\"data-element-id\\", n);\\n r.disabled = e.readOnly;\\n this._setRequired(r, this.data.required);\\n r.type = \\"radio\\";\\n r.name = e.baseFieldName || e.fieldName;\\n i && r.setAttribute(\\"checked\\", !0);\\n r.tabIndex = c;\\n r.addEventListener(\\"change\\", e => {\\n const {\\n name: i,\\n checked: r\\n } = e.target;\\n for (const e of this._getElementsByName(i, n)) t.setValue(e.id, {\\n value: !1\\n });\\n t.setValue(n, {\\n value: r\\n });\\n });\\n r.addEventListener(\\"resetform\\", t => {\\n const n = e.defaultFieldValue;\\n t.target.checked = null != n && n === e.buttonValue;\\n });\\n if (this.enableScripting && this.hasJSActions) {\\n const i = e.buttonValue;\\n r.addEventListener(\\"updatefromsandbox\\", e => {\\n const r = {\\n value: e => {\\n const r = i === e.detail.value;\\n for (const i of this._getElementsByName(e.target.name)) {\\n const e = r && i.id === n;\\n i.domElement && (i.domElement.checked = e);\\n t.setValue(i.id, {\\n value: e\\n });\\n }\\n }\\n };\\n this._dispatchEventFromSandbox(r, e);\\n });\\n this._setEventListeners(r, [[\\"change\\", \\"Validate\\"], [\\"change\\", \\"Action\\"], [\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"]], t => t.target.checked);\\n }\\n this._setBackgroundColor(r);\\n this._setDefaultPropertiesFromJS(r);\\n this.container.append(r);\\n return this.container;\\n }\\n }\\n class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\\n constructor(t) {\\n super(t, {\\n ignoreBorder: t.data.hasAppearance\\n });\\n }\\n render() {\\n const t = super.render();\\n t.classList.add(\\"buttonWidgetAnnotation\\", \\"pushButton\\");\\n this.data.alternativeText && (t.title = this.data.alternativeText);\\n const e = t.lastChild;\\n if (this.enableScripting && this.hasJSActions && e) {\\n this._setDefaultPropertiesFromJS(e);\\n e.addEventListener(\\"updatefromsandbox\\", t => {\\n this._dispatchEventFromSandbox({}, t);\\n });\\n }\\n return t;\\n }\\n }\\n class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\\n constructor(t) {\\n super(t, {\\n isRenderable: t.renderForms\\n });\\n }\\n render() {\\n this.container.classList.add(\\"choiceWidgetAnnotation\\");\\n const t = this.annotationStorage,\\n e = this.data.id,\\n n = t.getValue(e, {\\n value: this.data.fieldValue\\n }),\\n i = document.createElement(\\"select\\");\\n h.add(i);\\n i.setAttribute(\\"data-element-id\\", e);\\n i.disabled = this.data.readOnly;\\n this._setRequired(i, this.data.required);\\n i.name = this.data.baseFieldName || this.data.fieldName;\\n i.tabIndex = c;\\n let r = this.data.combo && this.data.options.length > 0;\\n if (!this.data.combo) {\\n i.size = this.data.options.length;\\n this.data.multiSelect && (i.multiple = !0);\\n }\\n i.addEventListener(\\"resetform\\", t => {\\n const e = this.data.defaultFieldValue;\\n for (const t of i.options) t.selected = t.value === e;\\n });\\n for (const t of this.data.options) {\\n const e = document.createElement(\\"option\\");\\n e.textContent = t.displayValue;\\n e.value = t.exportValue;\\n if (n.value.includes(t.exportValue)) {\\n e.setAttribute(\\"selected\\", !0);\\n r = !1;\\n }\\n i.append(e);\\n }\\n let s = null;\\n if (r) {\\n const t = document.createElement(\\"option\\");\\n t.value = \\" \\";\\n t.setAttribute(\\"hidden\\", !0);\\n t.setAttribute(\\"selected\\", !0);\\n i.prepend(t);\\n s = () => {\\n t.remove();\\n i.removeEventListener(\\"input\\", s);\\n s = null;\\n };\\n i.addEventListener(\\"input\\", s);\\n }\\n const getValue = t => {\\n const e = t ? \\"value\\" : \\"textContent\\",\\n {\\n options: n,\\n multiple: r\\n } = i;\\n return r ? Array.prototype.filter.call(n, t => t.selected).map(t => t[e]) : -1 === n.selectedIndex ? null : n[n.selectedIndex][e];\\n };\\n let a = getValue(!1);\\n const getItems = t => {\\n const e = t.target.options;\\n return Array.prototype.map.call(e, t => ({\\n displayValue: t.textContent,\\n exportValue: t.value\\n }));\\n };\\n if (this.enableScripting && this.hasJSActions) {\\n i.addEventListener(\\"updatefromsandbox\\", n => {\\n const r = {\\n value(n) {\\n var _s5;\\n (_s5 = s) === null || _s5 === void 0 ? void 0 : _s5();\\n const r = n.detail.value,\\n o = new Set(Array.isArray(r) ? r : [r]);\\n for (const t of i.options) t.selected = o.has(t.value);\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n a = getValue(!1);\\n },\\n multipleSelection(t) {\\n i.multiple = !0;\\n },\\n remove(n) {\\n const r = i.options,\\n s = n.detail.remove;\\n r[s].selected = !1;\\n i.remove(s);\\n if (r.length > 0) {\\n -1 === Array.prototype.findIndex.call(r, t => t.selected) && (r[0].selected = !0);\\n }\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n clear(n) {\\n for (; 0 !== i.length;) i.remove(0);\\n t.setValue(e, {\\n value: null,\\n items: []\\n });\\n a = getValue(!1);\\n },\\n insert(n) {\\n const {\\n index: r,\\n displayValue: s,\\n exportValue: o\\n } = n.detail.insert,\\n l = i.children[r],\\n c = document.createElement(\\"option\\");\\n c.textContent = s;\\n c.value = o;\\n l ? l.before(c) : i.append(c);\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n items(n) {\\n const {\\n items: r\\n } = n.detail;\\n for (; 0 !== i.length;) i.remove(0);\\n for (const t of r) {\\n const {\\n displayValue: e,\\n exportValue: n\\n } = t,\\n r = document.createElement(\\"option\\");\\n r.textContent = e;\\n r.value = n;\\n i.append(r);\\n }\\n i.options.length > 0 && (i.options[0].selected = !0);\\n t.setValue(e, {\\n value: getValue(!0),\\n items: getItems(n)\\n });\\n a = getValue(!1);\\n },\\n indices(n) {\\n const i = new Set(n.detail.indices);\\n for (const t of n.target.options) t.selected = i.has(t.index);\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n a = getValue(!1);\\n },\\n editable(t) {\\n t.target.disabled = !t.detail.editable;\\n }\\n };\\n this._dispatchEventFromSandbox(r, n);\\n });\\n i.addEventListener(\\"input\\", n => {\\n var _this$linkService$eve10;\\n const i = getValue(!0);\\n t.setValue(e, {\\n value: i\\n });\\n n.preventDefault();\\n (_this$linkService$eve10 = this.linkService.eventBus) === null || _this$linkService$eve10 === void 0 ? void 0 : _this$linkService$eve10.dispatch(\\"dispatcheventinsandbox\\", {\\n source: this,\\n detail: {\\n id: e,\\n name: \\"Keystroke\\",\\n value: a,\\n changeEx: i,\\n willCommit: !1,\\n commitKey: 1,\\n keyDown: !1\\n }\\n });\\n });\\n this._setEventListeners(i, [[\\"focus\\", \\"Focus\\"], [\\"blur\\", \\"Blur\\"], [\\"mousedown\\", \\"Mouse Down\\"], [\\"mouseenter\\", \\"Mouse Enter\\"], [\\"mouseleave\\", \\"Mouse Exit\\"], [\\"mouseup\\", \\"Mouse Up\\"], [\\"input\\", \\"Action\\"], [\\"input\\", \\"Validate\\"]], t => t.target.value);\\n } else i.addEventListener(\\"input\\", function (n) {\\n t.setValue(e, {\\n value: getValue(!0)\\n });\\n });\\n this.data.combo && this._setTextStyle(i);\\n this._setBackgroundColor(i);\\n this._setDefaultPropertiesFromJS(i);\\n this.container.append(i);\\n return this.container;\\n }\\n }\\n class PopupAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _e$titleObj, _e$contentsObj, _e$richText;\\n const {\\n data: e,\\n elements: n\\n } = t;\\n super(t, {\\n isRenderable: !!((_e$titleObj = e.titleObj) !== null && _e$titleObj !== void 0 && _e$titleObj.str || (_e$contentsObj = e.contentsObj) !== null && _e$contentsObj !== void 0 && _e$contentsObj.str || (_e$richText = e.richText) !== null && _e$richText !== void 0 && _e$richText.str)\\n });\\n this.elements = n;\\n }\\n render() {\\n this.container.classList.add(\\"popupAnnotation\\");\\n const t = new PopupElement({\\n container: this.container,\\n color: this.data.color,\\n titleObj: this.data.titleObj,\\n modificationDate: this.data.modificationDate,\\n contentsObj: this.data.contentsObj,\\n richText: this.data.richText,\\n rect: this.data.rect,\\n parentRect: this.data.parentRect || null,\\n parent: this.parent,\\n elements: this.elements,\\n open: this.data.open\\n }),\\n e = [];\\n for (const n of this.elements) {\\n n.popup = t;\\n e.push(n.data.id);\\n n.addHighlightArea();\\n }\\n this.container.setAttribute(\\"aria-controls\\", e.join(\\",\\"));\\n return this.container;\\n }\\n }\\n var _Ne = /*#__PURE__*/new WeakMap();\\n var _Be = /*#__PURE__*/new WeakMap();\\n var _Ue = /*#__PURE__*/new WeakMap();\\n var _He = /*#__PURE__*/new WeakMap();\\n var _Se2 = /*#__PURE__*/new WeakMap();\\n var _bt2 = /*#__PURE__*/new WeakMap();\\n var _We = /*#__PURE__*/new WeakMap();\\n var _Ge = /*#__PURE__*/new WeakMap();\\n var _Ve = /*#__PURE__*/new WeakMap();\\n var _$e = /*#__PURE__*/new WeakMap();\\n var _Xe = /*#__PURE__*/new WeakMap();\\n var _Ke = /*#__PURE__*/new WeakMap();\\n var _Ye = /*#__PURE__*/new WeakMap();\\n var _Je = /*#__PURE__*/new WeakMap();\\n var _Qe = /*#__PURE__*/new WeakMap();\\n var _Ze = /*#__PURE__*/new WeakMap();\\n var _qe = /*#__PURE__*/new WeakSet();\\n var _ze = /*#__PURE__*/new WeakSet();\\n var _je = /*#__PURE__*/new WeakSet();\\n class PopupElement {\\n constructor(t) {\\n _classPrivateMethodInitSpec(this, _je);\\n _classPrivateMethodInitSpec(this, _ze);\\n _classPrivateMethodInitSpec(this, _qe);\\n _classPrivateFieldInitSpec(this, _Ne, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Be, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _je, _je2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Ue, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _ze, _ze2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _He, {\\n writable: true,\\n value: _classPrivateMethodGet(this, _qe, _qe2).bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _Se2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _bt2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _We, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ge, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ve, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _$e, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Xe, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _Ke, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ye, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Je, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Qe, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Ze, {\\n writable: true,\\n value: !1\\n });\\n let {\\n container: e,\\n color: n,\\n elements: i,\\n titleObj: s,\\n modificationDate: a,\\n contentsObj: o,\\n richText: l,\\n parent: c,\\n rect: h,\\n parentRect: d,\\n open: u\\n } = t;\\n _classPrivateFieldSet(this, _bt2, e);\\n _classPrivateFieldSet(this, _Qe, s);\\n _classPrivateFieldSet(this, _We, o);\\n _classPrivateFieldSet(this, _Je, l);\\n _classPrivateFieldSet(this, _Ve, c);\\n _classPrivateFieldSet(this, _Se2, n);\\n _classPrivateFieldSet(this, _Ye, h);\\n _classPrivateFieldSet(this, _$e, d);\\n _classPrivateFieldSet(this, _Ge, i);\\n const p = r.PDFDateString.toDateObject(a);\\n p && _classPrivateFieldSet(this, _Ne, c.l10n.get(\\"annotation_date_string\\", {\\n date: p.toLocaleDateString(),\\n time: p.toLocaleTimeString()\\n }));\\n this.trigger = i.flatMap(t => t.getElementsToTriggerPopup());\\n for (const t of this.trigger) {\\n t.addEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n t.addEventListener(\\"mouseenter\\", _classPrivateFieldGet(this, _Ue));\\n t.addEventListener(\\"mouseleave\\", _classPrivateFieldGet(this, _Be));\\n }\\n _classPrivateFieldGet(this, _bt2).hidden = !0;\\n u && _classPrivateMethodGet(this, _qe, _qe2).call(this);\\n }\\n render() {\\n if (_classPrivateFieldGet(this, _Ke)) return;\\n const {\\n page: {\\n view: t\\n },\\n viewport: {\\n rawDims: {\\n pageWidth: e,\\n pageHeight: n,\\n pageX: r,\\n pageY: s\\n }\\n }\\n } = _classPrivateFieldGet(this, _Ve),\\n a = _classPrivateFieldSet(this, _Ke, document.createElement(\\"div\\"));\\n a.className = \\"popup\\";\\n if (_classPrivateFieldGet(this, _Se2)) {\\n const t = a.style.outlineColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2));\\n if (CSS.supports(\\"background-color\\", \\"color-mix(in srgb, red 30%, white)\\")) a.style.backgroundColor = \\"color-mix(in srgb, \\".concat(t, \\" 30%, white)\\");else {\\n const t = .7;\\n a.style.backgroundColor = i.Util.makeHexColor(..._classPrivateFieldGet(this, _Se2).map(e => Math.floor(t * (255 - e) + e)));\\n }\\n }\\n const o = document.createElement(\\"span\\");\\n o.className = \\"header\\";\\n const c = document.createElement(\\"h1\\");\\n o.append(c);\\n ({\\n dir: c.dir,\\n str: c.textContent\\n } = _classPrivateFieldGet(this, _Qe));\\n a.append(o);\\n if (_classPrivateFieldGet(this, _Ne)) {\\n const t = document.createElement(\\"span\\");\\n t.classList.add(\\"popupDate\\");\\n _classPrivateFieldGet(this, _Ne).then(e => {\\n t.textContent = e;\\n });\\n o.append(t);\\n }\\n const h = _classPrivateFieldGet(this, _We),\\n d = _classPrivateFieldGet(this, _Je);\\n if (!(d !== null && d !== void 0 && d.str) || h !== null && h !== void 0 && h.str && h.str !== d.str) {\\n const t = this._formatContents(h);\\n a.append(t);\\n } else {\\n l.XfaLayer.render({\\n xfaHtml: d.html,\\n intent: \\"richText\\",\\n div: a\\n });\\n a.lastChild.classList.add(\\"richText\\", \\"popupContent\\");\\n }\\n let u = !!_classPrivateFieldGet(this, _$e),\\n p = u ? _classPrivateFieldGet(this, _$e) : _classPrivateFieldGet(this, _Ye);\\n for (const t of _classPrivateFieldGet(this, _Ge)) if (!p || null !== i.Util.intersect(t.data.rect, p)) {\\n p = t.data.rect;\\n u = !0;\\n break;\\n }\\n const f = i.Util.normalizeRect([p[0], t[3] - p[1] + t[1], p[2], t[3] - p[3] + t[1]]),\\n g = u ? p[2] - p[0] + 5 : 0,\\n m = f[0] + g,\\n b = f[1],\\n {\\n style: v\\n } = _classPrivateFieldGet(this, _bt2);\\n v.left = 100 * (m - r) / e + \\"%\\";\\n v.top = 100 * (b - s) / n + \\"%\\";\\n _classPrivateFieldGet(this, _bt2).append(a);\\n }\\n _formatContents(t) {\\n let {\\n str: e,\\n dir: n\\n } = t;\\n const i = document.createElement(\\"p\\");\\n i.classList.add(\\"popupContent\\");\\n i.dir = n;\\n const r = e.split(/(?:\\\\r\\\\n?|\\\\n)/);\\n for (let t = 0, e = r.length; t < e; ++t) {\\n const n = r[t];\\n i.append(document.createTextNode(n));\\n t < e - 1 && i.append(document.createElement(\\"br\\"));\\n }\\n return i;\\n }\\n forceHide() {\\n _classPrivateFieldSet(this, _Ze, this.isVisible);\\n _classPrivateFieldGet(this, _Ze) && (_classPrivateFieldGet(this, _bt2).hidden = !0);\\n }\\n maybeShow() {\\n if (_classPrivateFieldGet(this, _Ze)) {\\n _classPrivateFieldSet(this, _Ze, !1);\\n _classPrivateFieldGet(this, _bt2).hidden = !1;\\n }\\n }\\n get isVisible() {\\n return !1 === _classPrivateFieldGet(this, _bt2).hidden;\\n }\\n }\\n function _qe2() {\\n _classPrivateFieldSet(this, _Xe, !_classPrivateFieldGet(this, _Xe));\\n if (_classPrivateFieldGet(this, _Xe)) {\\n _classPrivateMethodGet(this, _ze, _ze2).call(this);\\n _classPrivateFieldGet(this, _bt2).addEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n } else {\\n _classPrivateMethodGet(this, _je, _je2).call(this);\\n _classPrivateFieldGet(this, _bt2).removeEventListener(\\"click\\", _classPrivateFieldGet(this, _He));\\n }\\n }\\n function _ze2() {\\n _classPrivateFieldGet(this, _Ke) || this.render();\\n if (this.isVisible) _classPrivateFieldGet(this, _Xe) && _classPrivateFieldGet(this, _bt2).classList.add(\\"focused\\");else {\\n _classPrivateFieldGet(this, _bt2).hidden = !1;\\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) + 1e3;\\n }\\n }\\n function _je2() {\\n _classPrivateFieldGet(this, _bt2).classList.remove(\\"focused\\");\\n if (!_classPrivateFieldGet(this, _Xe) && this.isVisible) {\\n _classPrivateFieldGet(this, _bt2).hidden = !0;\\n _classPrivateFieldGet(this, _bt2).style.zIndex = parseInt(_classPrivateFieldGet(this, _bt2).style.zIndex) - 1e3;\\n }\\n }\\n class FreeTextAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj2, _t$data$contentsObj2, _t$data$richText2;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj2 = t.data.titleObj) !== null && _t$data$titleObj2 !== void 0 && _t$data$titleObj2.str || (_t$data$contentsObj2 = t.data.contentsObj) !== null && _t$data$contentsObj2 !== void 0 && _t$data$contentsObj2.str || (_t$data$richText2 = t.data.richText) !== null && _t$data$richText2 !== void 0 && _t$data$richText2.str),\\n ignoreBorder: !0\\n });\\n this.textContent = t.data.textContent;\\n this.textPosition = t.data.textPosition;\\n this.annotationEditorType = i.AnnotationEditorType.FREETEXT;\\n }\\n render() {\\n this.container.classList.add(\\"freeTextAnnotation\\");\\n if (this.textContent) {\\n const t = document.createElement(\\"div\\");\\n t.classList.add(\\"annotationTextContent\\");\\n t.setAttribute(\\"role\\", \\"comment\\");\\n for (const e of this.textContent) {\\n const n = document.createElement(\\"span\\");\\n n.textContent = e;\\n t.append(n);\\n }\\n this.container.append(t);\\n }\\n this.data.popupRef || this._createPopup();\\n this._editOnDoubleClick();\\n return this.container;\\n }\\n }\\n e.FreeTextAnnotationElement = FreeTextAnnotationElement;\\n var _tn = /*#__PURE__*/new WeakMap();\\n class LineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj3, _t$data$contentsObj3, _t$data$richText3;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj3 = t.data.titleObj) !== null && _t$data$titleObj3 !== void 0 && _t$data$titleObj3.str || (_t$data$contentsObj3 = t.data.contentsObj) !== null && _t$data$contentsObj3 !== void 0 && _t$data$contentsObj3.str || (_t$data$richText3 = t.data.richText) !== null && _t$data$richText3 !== void 0 && _t$data$richText3.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _tn, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"lineAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = _classPrivateFieldSet(this, _tn, this.svgFactory.createElement(\\"svg:line\\"));\\n r.setAttribute(\\"x1\\", t.rect[2] - t.lineCoordinates[0]);\\n r.setAttribute(\\"y1\\", t.rect[3] - t.lineCoordinates[1]);\\n r.setAttribute(\\"x2\\", t.rect[2] - t.lineCoordinates[2]);\\n r.setAttribute(\\"y2\\", t.rect[3] - t.lineCoordinates[3]);\\n r.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n r.setAttribute(\\"stroke\\", \\"transparent\\");\\n r.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(r);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _tn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _en = /*#__PURE__*/new WeakMap();\\n class SquareAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj4, _t$data$contentsObj4, _t$data$richText4;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj4 = t.data.titleObj) !== null && _t$data$titleObj4 !== void 0 && _t$data$titleObj4.str || (_t$data$contentsObj4 = t.data.contentsObj) !== null && _t$data$contentsObj4 !== void 0 && _t$data$contentsObj4.str || (_t$data$richText4 = t.data.richText) !== null && _t$data$richText4 !== void 0 && _t$data$richText4.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _en, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"squareAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = t.borderStyle.width,\\n s = _classPrivateFieldSet(this, _en, this.svgFactory.createElement(\\"svg:rect\\"));\\n s.setAttribute(\\"x\\", r / 2);\\n s.setAttribute(\\"y\\", r / 2);\\n s.setAttribute(\\"width\\", e - r);\\n s.setAttribute(\\"height\\", n - r);\\n s.setAttribute(\\"stroke-width\\", r || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _en);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _nn = /*#__PURE__*/new WeakMap();\\n class CircleAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj5, _t$data$contentsObj5, _t$data$richText5;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj5 = t.data.titleObj) !== null && _t$data$titleObj5 !== void 0 && _t$data$titleObj5.str || (_t$data$contentsObj5 = t.data.contentsObj) !== null && _t$data$contentsObj5 !== void 0 && _t$data$contentsObj5.str || (_t$data$richText5 = t.data.richText) !== null && _t$data$richText5 !== void 0 && _t$data$richText5.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _nn, {\\n writable: true,\\n value: null\\n });\\n }\\n render() {\\n this.container.classList.add(\\"circleAnnotation\\");\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0),\\n r = t.borderStyle.width,\\n s = _classPrivateFieldSet(this, _nn, this.svgFactory.createElement(\\"svg:ellipse\\"));\\n s.setAttribute(\\"cx\\", e / 2);\\n s.setAttribute(\\"cy\\", n / 2);\\n s.setAttribute(\\"rx\\", e / 2 - r / 2);\\n s.setAttribute(\\"ry\\", n / 2 - r / 2);\\n s.setAttribute(\\"stroke-width\\", r || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup();\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _nn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n var _in = /*#__PURE__*/new WeakMap();\\n class PolylineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj6, _t$data$contentsObj6, _t$data$richText6;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj6 = t.data.titleObj) !== null && _t$data$titleObj6 !== void 0 && _t$data$titleObj6.str || (_t$data$contentsObj6 = t.data.contentsObj) !== null && _t$data$contentsObj6 !== void 0 && _t$data$contentsObj6.str || (_t$data$richText6 = t.data.richText) !== null && _t$data$richText6 !== void 0 && _t$data$richText6.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _in, {\\n writable: true,\\n value: null\\n });\\n this.containerClassName = \\"polylineAnnotation\\";\\n this.svgElementName = \\"svg:polyline\\";\\n }\\n render() {\\n this.container.classList.add(this.containerClassName);\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0);\\n let r = [];\\n for (const e of t.vertices) {\\n const n = e.x - t.rect[0],\\n i = t.rect[3] - e.y;\\n r.push(n + \\",\\" + i);\\n }\\n r = r.join(\\" \\");\\n const s = _classPrivateFieldSet(this, _in, this.svgFactory.createElement(this.svgElementName));\\n s.setAttribute(\\"points\\", r);\\n s.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n s.setAttribute(\\"stroke\\", \\"transparent\\");\\n s.setAttribute(\\"fill\\", \\"transparent\\");\\n i.append(s);\\n this.container.append(i);\\n t.popupRef || this._createPopup(s, t);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _in);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n class PolygonAnnotationElement extends PolylineAnnotationElement {\\n constructor(t) {\\n super(t);\\n this.containerClassName = \\"polygonAnnotation\\";\\n this.svgElementName = \\"svg:polygon\\";\\n }\\n }\\n class CaretAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj7, _t$data$contentsObj7, _t$data$richText7;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj7 = t.data.titleObj) !== null && _t$data$titleObj7 !== void 0 && _t$data$titleObj7.str || (_t$data$contentsObj7 = t.data.contentsObj) !== null && _t$data$contentsObj7 !== void 0 && _t$data$contentsObj7.str || (_t$data$richText7 = t.data.richText) !== null && _t$data$richText7 !== void 0 && _t$data$richText7.str),\\n ignoreBorder: !0\\n });\\n }\\n render() {\\n this.container.classList.add(\\"caretAnnotation\\");\\n this.data.popupRef || this._createPopup();\\n return this.container;\\n }\\n }\\n var _rn = /*#__PURE__*/new WeakMap();\\n class InkAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj8, _t$data$contentsObj8, _t$data$richText8;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj8 = t.data.titleObj) !== null && _t$data$titleObj8 !== void 0 && _t$data$titleObj8.str || (_t$data$contentsObj8 = t.data.contentsObj) !== null && _t$data$contentsObj8 !== void 0 && _t$data$contentsObj8.str || (_t$data$richText8 = t.data.richText) !== null && _t$data$richText8 !== void 0 && _t$data$richText8.str),\\n ignoreBorder: !0\\n });\\n _classPrivateFieldInitSpec(this, _rn, {\\n writable: true,\\n value: []\\n });\\n this.containerClassName = \\"inkAnnotation\\";\\n this.svgElementName = \\"svg:polyline\\";\\n this.annotationEditorType = i.AnnotationEditorType.INK;\\n }\\n render() {\\n this.container.classList.add(this.containerClassName);\\n const t = this.data,\\n {\\n width: e,\\n height: n\\n } = getRectDims(t.rect),\\n i = this.svgFactory.create(e, n, !0);\\n for (const e of t.inkLists) {\\n let n = [];\\n for (const i of e) {\\n const e = i.x - t.rect[0],\\n r = t.rect[3] - i.y;\\n n.push(\\"\\".concat(e, \\",\\").concat(r));\\n }\\n n = n.join(\\" \\");\\n const r = this.svgFactory.createElement(this.svgElementName);\\n _classPrivateFieldGet(this, _rn).push(r);\\n r.setAttribute(\\"points\\", n);\\n r.setAttribute(\\"stroke-width\\", t.borderStyle.width || 1);\\n r.setAttribute(\\"stroke\\", \\"transparent\\");\\n r.setAttribute(\\"fill\\", \\"transparent\\");\\n t.popupRef || this._createPopup(r, t);\\n i.append(r);\\n }\\n this.container.append(i);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _rn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n }\\n e.InkAnnotationElement = InkAnnotationElement;\\n class HighlightAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj9, _t$data$contentsObj9, _t$data$richText9;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj9 = t.data.titleObj) !== null && _t$data$titleObj9 !== void 0 && _t$data$titleObj9.str || (_t$data$contentsObj9 = t.data.contentsObj) !== null && _t$data$contentsObj9 !== void 0 && _t$data$contentsObj9.str || (_t$data$richText9 = t.data.richText) !== null && _t$data$richText9 !== void 0 && _t$data$richText9.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"highlightAnnotation\\");\\n return this.container;\\n }\\n }\\n class UnderlineAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj10, _t$data$contentsObj10, _t$data$richText10;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj10 = t.data.titleObj) !== null && _t$data$titleObj10 !== void 0 && _t$data$titleObj10.str || (_t$data$contentsObj10 = t.data.contentsObj) !== null && _t$data$contentsObj10 !== void 0 && _t$data$contentsObj10.str || (_t$data$richText10 = t.data.richText) !== null && _t$data$richText10 !== void 0 && _t$data$richText10.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"underlineAnnotation\\");\\n return this.container;\\n }\\n }\\n class SquigglyAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj11, _t$data$contentsObj11, _t$data$richText11;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj11 = t.data.titleObj) !== null && _t$data$titleObj11 !== void 0 && _t$data$titleObj11.str || (_t$data$contentsObj11 = t.data.contentsObj) !== null && _t$data$contentsObj11 !== void 0 && _t$data$contentsObj11.str || (_t$data$richText11 = t.data.richText) !== null && _t$data$richText11 !== void 0 && _t$data$richText11.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"squigglyAnnotation\\");\\n return this.container;\\n }\\n }\\n class StrikeOutAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj12, _t$data$contentsObj12, _t$data$richText12;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj12 = t.data.titleObj) !== null && _t$data$titleObj12 !== void 0 && _t$data$titleObj12.str || (_t$data$contentsObj12 = t.data.contentsObj) !== null && _t$data$contentsObj12 !== void 0 && _t$data$contentsObj12.str || (_t$data$richText12 = t.data.richText) !== null && _t$data$richText12 !== void 0 && _t$data$richText12.str),\\n ignoreBorder: !0,\\n createQuadrilaterals: !0\\n });\\n }\\n render() {\\n this.data.popupRef || this._createPopup();\\n this.container.classList.add(\\"strikeoutAnnotation\\");\\n return this.container;\\n }\\n }\\n class StampAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _t$data$titleObj13, _t$data$contentsObj13, _t$data$richText13;\\n super(t, {\\n isRenderable: !!(t.data.popupRef || (_t$data$titleObj13 = t.data.titleObj) !== null && _t$data$titleObj13 !== void 0 && _t$data$titleObj13.str || (_t$data$contentsObj13 = t.data.contentsObj) !== null && _t$data$contentsObj13 !== void 0 && _t$data$contentsObj13.str || (_t$data$richText13 = t.data.richText) !== null && _t$data$richText13 !== void 0 && _t$data$richText13.str),\\n ignoreBorder: !0\\n });\\n }\\n render() {\\n this.container.classList.add(\\"stampAnnotation\\");\\n this.data.popupRef || this._createPopup();\\n return this.container;\\n }\\n }\\n e.StampAnnotationElement = StampAnnotationElement;\\n var _sn = /*#__PURE__*/new WeakMap();\\n class FileAttachmentAnnotationElement extends AnnotationElement {\\n constructor(t) {\\n var _this$linkService$eve11;\\n super(t, {\\n isRenderable: !0\\n });\\n _classPrivateFieldInitSpec(this, _sn, {\\n writable: true,\\n value: null\\n });\\n const {\\n filename: e,\\n content: n\\n } = this.data.file;\\n this.filename = (0, r.getFilenameFromUrl)(e, !0);\\n this.content = n;\\n (_this$linkService$eve11 = this.linkService.eventBus) === null || _this$linkService$eve11 === void 0 ? void 0 : _this$linkService$eve11.dispatch(\\"fileattachmentannotation\\", {\\n source: this,\\n filename: e,\\n content: n\\n });\\n }\\n render() {\\n var _this$data$titleObj, _this$data$contentsOb;\\n this.container.classList.add(\\"fileAttachmentAnnotation\\");\\n let t;\\n if (this.data.hasAppearance) t = document.createElement(\\"div\\");else {\\n t = document.createElement(\\"img\\");\\n t.src = \\"\\".concat(this.imageResourcesPath, \\"annotation-\\").concat(/paperclip/i.test(this.data.name) ? \\"paperclip\\" : \\"pushpin\\", \\".svg\\");\\n }\\n t.classList.add(\\"popupTriggerArea\\");\\n t.addEventListener(\\"dblclick\\", this._download.bind(this));\\n _classPrivateFieldSet(this, _sn, t);\\n !this.data.popupRef && (((_this$data$titleObj = this.data.titleObj) === null || _this$data$titleObj === void 0 ? void 0 : _this$data$titleObj.str) || ((_this$data$contentsOb = this.data.contentsObj) === null || _this$data$contentsOb === void 0 ? void 0 : _this$data$contentsOb.str) || this.data.richText) && this._createPopup();\\n this.container.append(t);\\n return this.container;\\n }\\n getElementsToTriggerPopup() {\\n return _classPrivateFieldGet(this, _sn);\\n }\\n addHighlightArea() {\\n this.container.classList.add(\\"highlightArea\\");\\n }\\n _download() {\\n var _this$downloadManager2;\\n (_this$downloadManager2 = this.downloadManager) === null || _this$downloadManager2 === void 0 ? void 0 : _this$downloadManager2.openOrDownloadData(this.container, this.content, this.filename);\\n }\\n }\\n e.AnnotationLayer = (_re2 = /*#__PURE__*/new WeakMap(), _an = /*#__PURE__*/new WeakMap(), _on = /*#__PURE__*/new WeakMap(), _ln = /*#__PURE__*/new WeakSet(), _cn = /*#__PURE__*/new WeakSet(), class AnnotationLayer {\\n constructor(_t16) {\\n _classPrivateMethodInitSpec(this, _cn);\\n _classPrivateMethodInitSpec(this, _ln);\\n _classPrivateFieldInitSpec(this, _re2, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _an, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _on, {\\n writable: true,\\n value: new Map()\\n });\\n let {\\n div: _e14,\\n accessibilityManager: _n8,\\n annotationCanvasMap: _i5,\\n l10n: _r5,\\n page: s,\\n viewport: a\\n } = _t16;\\n this.div = _e14;\\n _classPrivateFieldSet(this, _re2, _n8);\\n _classPrivateFieldSet(this, _an, _i5);\\n this.l10n = _r5;\\n this.page = s;\\n this.viewport = a;\\n this.zIndex = 0;\\n this.l10n || (this.l10n = o.NullL10n);\\n }\\n async render(t) {\\n const {\\n annotations: e\\n } = t,\\n n = this.div;\\n (0, r.setLayerDimensions)(n, this.viewport);\\n const a = new Map(),\\n o = {\\n data: null,\\n layer: n,\\n linkService: t.linkService,\\n downloadManager: t.downloadManager,\\n imageResourcesPath: t.imageResourcesPath || \\"\\",\\n renderForms: !1 !== t.renderForms,\\n svgFactory: new r.DOMSVGFactory(),\\n annotationStorage: t.annotationStorage || new s.AnnotationStorage(),\\n enableScripting: !0 === t.enableScripting,\\n hasJSActions: t.hasJSActions,\\n fieldObjects: t.fieldObjects,\\n parent: this,\\n elements: null\\n };\\n for (const t of e) {\\n if (t.noHTML) continue;\\n const e = t.annotationType === i.AnnotationType.POPUP;\\n if (e) {\\n const e = a.get(t.id);\\n if (!e) continue;\\n o.elements = e;\\n } else {\\n const {\\n width: e,\\n height: n\\n } = getRectDims(t.rect);\\n if (e <= 0 || n <= 0) continue;\\n }\\n o.data = t;\\n const n = AnnotationElementFactory.create(o);\\n if (!n.isRenderable) continue;\\n if (!e && t.popupRef) {\\n const e = a.get(t.popupRef);\\n e ? e.push(n) : a.set(t.popupRef, [n]);\\n }\\n n.annotationEditorType > 0 && _classPrivateFieldGet(this, _on).set(n.data.id, n);\\n const r = n.render();\\n t.hidden && (r.style.visibility = \\"hidden\\");\\n _classPrivateMethodGet(this, _ln, _ln2).call(this, r, t.id);\\n }\\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\\n await this.l10n.translate(n);\\n }\\n update(t) {\\n let {\\n viewport: e\\n } = t;\\n const n = this.div;\\n this.viewport = e;\\n (0, r.setLayerDimensions)(n, {\\n rotation: e.rotation\\n });\\n _classPrivateMethodGet(this, _cn, _cn2).call(this);\\n n.hidden = !1;\\n }\\n getEditableAnnotations() {\\n return Array.from(_classPrivateFieldGet(this, _on).values());\\n }\\n getEditableAnnotation(t) {\\n return _classPrivateFieldGet(this, _on).get(t);\\n }\\n });\\n function _ln2(t, e) {\\n var _classPrivateFieldGet14;\\n const n = t.firstChild || t;\\n n.id = \\"\\".concat(r.AnnotationPrefix).concat(e);\\n this.div.append(t);\\n (_classPrivateFieldGet14 = _classPrivateFieldGet(this, _re2)) === null || _classPrivateFieldGet14 === void 0 ? void 0 : _classPrivateFieldGet14.moveElementInDOM(this.div, t, n, !1);\\n }\\n function _cn2() {\\n if (!_classPrivateFieldGet(this, _an)) return;\\n const t = this.div;\\n for (const [e, n] of _classPrivateFieldGet(this, _an)) {\\n const i = t.querySelector(\\"[data-annotation-id=\\\\\\"\\".concat(e, \\"\\\\\\"]\\"));\\n if (!i) continue;\\n const {\\n firstChild: r\\n } = i;\\n r ? \\"CANVAS\\" === r.nodeName ? r.replaceWith(n) : r.before(n) : i.append(n);\\n }\\n _classPrivateFieldGet(this, _an).clear();\\n }\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.ColorConverters = void 0;\\n function makeColorComp(t) {\\n return Math.floor(255 * Math.max(0, Math.min(1, t))).toString(16).padStart(2, \\"0\\");\\n }\\n e.ColorConverters = class ColorConverters {\\n static CMYK_G(t) {\\n let [e, n, i, r] = t;\\n return [\\"G\\", 1 - Math.min(1, .3 * e + .59 * i + .11 * n + r)];\\n }\\n static G_CMYK(t) {\\n let [e] = t;\\n return [\\"CMYK\\", 0, 0, 0, 1 - e];\\n }\\n static G_RGB(t) {\\n let [e] = t;\\n return [\\"RGB\\", e, e, e];\\n }\\n static G_HTML(t) {\\n let [e] = t;\\n const n = makeColorComp(e);\\n return \\"#\\".concat(n).concat(n).concat(n);\\n }\\n static RGB_G(t) {\\n let [e, n, i] = t;\\n return [\\"G\\", .3 * e + .59 * n + .11 * i];\\n }\\n static RGB_HTML(t) {\\n let [e, n, i] = t;\\n return \\"#\\".concat(makeColorComp(e)).concat(makeColorComp(n)).concat(makeColorComp(i));\\n }\\n static T_HTML() {\\n return \\"#00000000\\";\\n }\\n static CMYK_RGB(t) {\\n let [e, n, i, r] = t;\\n return [\\"RGB\\", 1 - Math.min(1, e + r), 1 - Math.min(1, i + r), 1 - Math.min(1, n + r)];\\n }\\n static CMYK_HTML(t) {\\n const e = this.CMYK_RGB(t).slice(1);\\n return this.RGB_HTML(e);\\n }\\n static RGB_CMYK(t) {\\n let [e, n, i] = t;\\n const r = 1 - e,\\n s = 1 - n,\\n a = 1 - i;\\n return [\\"CMYK\\", r, s, a, Math.min(r, s, a)];\\n }\\n };\\n }, (t, e) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.NullL10n = void 0;\\n e.getL10nFallback = getL10nFallback;\\n const n = {\\n of_pages: \\"of {{pagesCount}}\\",\\n page_of_pages: \\"({{pageNumber}} of {{pagesCount}})\\",\\n document_properties_kb: \\"{{size_kb}} KB ({{size_b}} bytes)\\",\\n document_properties_mb: \\"{{size_mb}} MB ({{size_b}} bytes)\\",\\n document_properties_date_string: \\"{{date}}, {{time}}\\",\\n document_properties_page_size_unit_inches: \\"in\\",\\n document_properties_page_size_unit_millimeters: \\"mm\\",\\n document_properties_page_size_orientation_portrait: \\"portrait\\",\\n document_properties_page_size_orientation_landscape: \\"landscape\\",\\n document_properties_page_size_name_a3: \\"A3\\",\\n document_properties_page_size_name_a4: \\"A4\\",\\n document_properties_page_size_name_letter: \\"Letter\\",\\n document_properties_page_size_name_legal: \\"Legal\\",\\n document_properties_page_size_dimension_string: \\"{{width}} × {{height}} {{unit}} ({{orientation}})\\",\\n document_properties_page_size_dimension_name_string: \\"{{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})\\",\\n document_properties_linearized_yes: \\"Yes\\",\\n document_properties_linearized_no: \\"No\\",\\n additional_layers: \\"Additional Layers\\",\\n page_landmark: \\"Page {{page}}\\",\\n thumb_page_title: \\"Page {{page}}\\",\\n thumb_page_canvas: \\"Thumbnail of Page {{page}}\\",\\n find_reached_top: \\"Reached top of document, continued from bottom\\",\\n find_reached_bottom: \\"Reached end of document, continued from top\\",\\n \\"find_match_count[one]\\": \\"{{current}} of {{total}} match\\",\\n \\"find_match_count[other]\\": \\"{{current}} of {{total}} matches\\",\\n \\"find_match_count_limit[one]\\": \\"More than {{limit}} match\\",\\n \\"find_match_count_limit[other]\\": \\"More than {{limit}} matches\\",\\n find_not_found: \\"Phrase not found\\",\\n page_scale_width: \\"Page Width\\",\\n page_scale_fit: \\"Page Fit\\",\\n page_scale_auto: \\"Automatic Zoom\\",\\n page_scale_actual: \\"Actual Size\\",\\n page_scale_percent: \\"{{scale}}%\\",\\n loading_error: \\"An error occurred while loading the PDF.\\",\\n invalid_file_error: \\"Invalid or corrupted PDF file.\\",\\n missing_file_error: \\"Missing PDF file.\\",\\n unexpected_response_error: \\"Unexpected server response.\\",\\n rendering_error: \\"An error occurred while rendering the page.\\",\\n annotation_date_string: \\"{{date}}, {{time}}\\",\\n printing_not_supported: \\"Warning: Printing is not fully supported by this browser.\\",\\n printing_not_ready: \\"Warning: The PDF is not fully loaded for printing.\\",\\n web_fonts_disabled: \\"Web fonts are disabled: unable to use embedded PDF fonts.\\",\\n free_text2_default_content: \\"Start typing…\\",\\n editor_free_text2_aria_label: \\"Text Editor\\",\\n editor_ink2_aria_label: \\"Draw Editor\\",\\n editor_ink_canvas_aria_label: \\"User-created image\\",\\n print_progress_percent: \\"{{progress}}%\\"\\n };\\n function getL10nFallback(t, e) {\\n switch (t) {\\n case \\"find_match_count\\":\\n t = \\"find_match_count[\\".concat(1 === e.total ? \\"one\\" : \\"other\\", \\"]\\");\\n break;\\n case \\"find_match_count_limit\\":\\n t = \\"find_match_count_limit[\\".concat(1 === e.limit ? \\"one\\" : \\"other\\", \\"]\\");\\n }\\n return n[t] || \\"\\";\\n }\\n const i = {\\n getLanguage: async () => \\"en-us\\",\\n getDirection: async () => \\"ltr\\",\\n async get(t) {\\n let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n return function formatL10nValue(t, e) {\\n return e ? t.replaceAll(/\\\\{\\\\{\\\\s*(\\\\w+)\\\\s*\\\\}\\\\}/g, (t, n) => n in e ? e[n] : \\"{{\\" + n + \\"}}\\") : t;\\n }(arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : getL10nFallback(t, e), e);\\n },\\n async translate(t) {}\\n };\\n e.NullL10n = i;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.XfaLayer = void 0;\\n n(89);\\n var i = n(193);\\n e.XfaLayer = class XfaLayer {\\n static setupStorage(t, e, n, i, r) {\\n const s = i.getValue(e, {\\n value: null\\n });\\n switch (n.name) {\\n case \\"textarea\\":\\n null !== s.value && (t.textContent = s.value);\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"input\\", t => {\\n i.setValue(e, {\\n value: t.target.value\\n });\\n });\\n break;\\n case \\"input\\":\\n if (\\"radio\\" === n.attributes.type || \\"checkbox\\" === n.attributes.type) {\\n s.value === n.attributes.xfaOn ? t.setAttribute(\\"checked\\", !0) : s.value === n.attributes.xfaOff && t.removeAttribute(\\"checked\\");\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"change\\", t => {\\n i.setValue(e, {\\n value: t.target.checked ? t.target.getAttribute(\\"xfaOn\\") : t.target.getAttribute(\\"xfaOff\\")\\n });\\n });\\n } else {\\n null !== s.value && t.setAttribute(\\"value\\", s.value);\\n if (\\"print\\" === r) break;\\n t.addEventListener(\\"input\\", t => {\\n i.setValue(e, {\\n value: t.target.value\\n });\\n });\\n }\\n break;\\n case \\"select\\":\\n if (null !== s.value) {\\n t.setAttribute(\\"value\\", s.value);\\n for (const t of n.children) t.attributes.value === s.value ? t.attributes.selected = !0 : t.attributes.hasOwnProperty(\\"selected\\") && delete t.attributes.selected;\\n }\\n t.addEventListener(\\"input\\", t => {\\n const n = t.target.options,\\n r = -1 === n.selectedIndex ? \\"\\" : n[n.selectedIndex].value;\\n i.setValue(e, {\\n value: r\\n });\\n });\\n }\\n }\\n static setAttributes(t) {\\n let {\\n html: e,\\n element: n,\\n storage: i = null,\\n intent: r,\\n linkService: s\\n } = t;\\n const {\\n attributes: a\\n } = n,\\n o = e instanceof HTMLAnchorElement;\\n \\"radio\\" === a.type && (a.name = \\"\\".concat(a.name, \\"-\\").concat(r));\\n for (const [t, n] of Object.entries(a)) if (null != n) switch (t) {\\n case \\"class\\":\\n n.length && e.setAttribute(t, n.join(\\" \\"));\\n break;\\n case \\"dataId\\":\\n break;\\n case \\"id\\":\\n e.setAttribute(\\"data-element-id\\", n);\\n break;\\n case \\"style\\":\\n Object.assign(e.style, n);\\n break;\\n case \\"textContent\\":\\n e.textContent = n;\\n break;\\n default:\\n (!o || \\"href\\" !== t && \\"newWindow\\" !== t) && e.setAttribute(t, n);\\n }\\n o && s.addLinkAttributes(e, a.href, a.newWindow);\\n i && a.dataId && this.setupStorage(e, a.dataId, n, i);\\n }\\n static render(t) {\\n const e = t.annotationStorage,\\n n = t.linkService,\\n r = t.xfaHtml,\\n s = t.intent || \\"display\\",\\n a = document.createElement(r.name);\\n r.attributes && this.setAttributes({\\n html: a,\\n element: r,\\n intent: s,\\n linkService: n\\n });\\n const o = [[r, -1, a]],\\n l = t.div;\\n l.append(a);\\n if (t.viewport) {\\n const e = \\"matrix(\\".concat(t.viewport.transform.join(\\",\\"), \\")\\");\\n l.style.transform = e;\\n }\\n \\"richText\\" !== s && l.setAttribute(\\"class\\", \\"xfaLayer xfaFont\\");\\n const c = [];\\n for (; o.length > 0;) {\\n var _l$attributes;\\n const [t, r, a] = o.at(-1);\\n if (r + 1 === t.children.length) {\\n o.pop();\\n continue;\\n }\\n const l = t.children[++o.at(-1)[1]];\\n if (null === l) continue;\\n const {\\n name: h\\n } = l;\\n if (\\"#text\\" === h) {\\n const t = document.createTextNode(l.value);\\n c.push(t);\\n a.append(t);\\n continue;\\n }\\n const d = l !== null && l !== void 0 && (_l$attributes = l.attributes) !== null && _l$attributes !== void 0 && _l$attributes.xmlns ? document.createElementNS(l.attributes.xmlns, h) : document.createElement(h);\\n a.append(d);\\n l.attributes && this.setAttributes({\\n html: d,\\n element: l,\\n storage: e,\\n intent: s,\\n linkService: n\\n });\\n if (l.children && l.children.length > 0) o.push([l, -1, d]);else if (l.value) {\\n const t = document.createTextNode(l.value);\\n i.XfaText.shouldBuildText(h) && c.push(t);\\n d.append(t);\\n }\\n }\\n for (const t of l.querySelectorAll(\\".xfaNonInteractive input, .xfaNonInteractive textarea\\")) t.setAttribute(\\"readOnly\\", !0);\\n return {\\n textDivs: c\\n };\\n }\\n static update(t) {\\n const e = \\"matrix(\\".concat(t.viewport.transform.join(\\",\\"), \\")\\");\\n t.div.style.transform = e;\\n t.div.hidden = !1;\\n }\\n };\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n var _class41;\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.InkEditor = void 0;\\n n(89);\\n n(2);\\n var i = n(1),\\n r = n(163),\\n s = n(197),\\n a = n(164);\\n var _hn = /*#__PURE__*/new WeakMap();\\n var _dn = /*#__PURE__*/new WeakMap();\\n var _un = /*#__PURE__*/new WeakMap();\\n var _pn = /*#__PURE__*/new WeakMap();\\n var _fn = /*#__PURE__*/new WeakMap();\\n var _gn = /*#__PURE__*/new WeakMap();\\n var _mn = /*#__PURE__*/new WeakMap();\\n var _bn = /*#__PURE__*/new WeakMap();\\n var _vn = /*#__PURE__*/new WeakMap();\\n var _yn = /*#__PURE__*/new WeakMap();\\n var _An = /*#__PURE__*/new WeakMap();\\n var _n9 = /*#__PURE__*/new WeakMap();\\n var _Sn = /*#__PURE__*/new WeakMap();\\n var _En = /*#__PURE__*/new WeakMap();\\n var _xn = /*#__PURE__*/new WeakMap();\\n var _wn = /*#__PURE__*/new WeakSet();\\n var _Pe3 = /*#__PURE__*/new WeakSet();\\n var _Cn = /*#__PURE__*/new WeakSet();\\n var _Fn = /*#__PURE__*/new WeakSet();\\n var _In = /*#__PURE__*/new WeakSet();\\n var _Dn = /*#__PURE__*/new WeakSet();\\n var _Ln = /*#__PURE__*/new WeakSet();\\n var _Bn = /*#__PURE__*/new WeakSet();\\n var _jn = /*#__PURE__*/new WeakSet();\\n var _On = /*#__PURE__*/new WeakSet();\\n var _Nn = /*#__PURE__*/new WeakSet();\\n var _Un = /*#__PURE__*/new WeakSet();\\n var _Pn = /*#__PURE__*/new WeakSet();\\n var _Hn = /*#__PURE__*/new WeakSet();\\n var _kn = /*#__PURE__*/new WeakSet();\\n var _Mn = /*#__PURE__*/new WeakSet();\\n var _Rn = /*#__PURE__*/new WeakSet();\\n var _qn = /*#__PURE__*/new WeakSet();\\n var _zn = /*#__PURE__*/new WeakSet();\\n var _Xn = /*#__PURE__*/new WeakSet();\\n var _Kn = /*#__PURE__*/new WeakSet();\\n var _Wn = /*#__PURE__*/new WeakSet();\\n var _Tn = /*#__PURE__*/new WeakSet();\\n class InkEditor extends r.AnnotationEditor {\\n constructor(_t17) {\\n super(_objectSpread(_objectSpread({}, _t17), {}, {\\n name: \\"inkEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Tn);\\n _classPrivateMethodInitSpec(this, _Wn);\\n _classPrivateMethodInitSpec(this, _Kn);\\n _classPrivateMethodInitSpec(this, _Xn);\\n _classPrivateMethodInitSpec(this, _zn);\\n _classPrivateMethodInitSpec(this, _qn);\\n _classPrivateMethodInitSpec(this, _Rn);\\n _classPrivateMethodInitSpec(this, _Mn);\\n _classPrivateMethodInitSpec(this, _kn);\\n _classPrivateMethodInitSpec(this, _Hn);\\n _classPrivateMethodInitSpec(this, _Pn);\\n _classPrivateMethodInitSpec(this, _Un);\\n _classPrivateMethodInitSpec(this, _Nn);\\n _classPrivateMethodInitSpec(this, _On);\\n _classPrivateMethodInitSpec(this, _jn);\\n _classPrivateMethodInitSpec(this, _Bn);\\n _classPrivateMethodInitSpec(this, _Ln);\\n _classPrivateMethodInitSpec(this, _Dn);\\n _classPrivateMethodInitSpec(this, _In);\\n _classPrivateMethodInitSpec(this, _Fn);\\n _classPrivateMethodInitSpec(this, _Cn);\\n _classPrivateMethodInitSpec(this, _Pe3);\\n _classPrivateMethodInitSpec(this, _wn);\\n _classPrivateFieldInitSpec(this, _hn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _dn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _un, {\\n writable: true,\\n value: this.canvasContextMenu.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _pn, {\\n writable: true,\\n value: this.canvasPointermove.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _fn, {\\n writable: true,\\n value: this.canvasPointerleave.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _gn, {\\n writable: true,\\n value: this.canvasPointerup.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _mn, {\\n writable: true,\\n value: this.canvasPointerdown.bind(this)\\n });\\n _classPrivateFieldInitSpec(this, _bn, {\\n writable: true,\\n value: new Path2D()\\n });\\n _classPrivateFieldInitSpec(this, _vn, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _yn, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _An, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldInitSpec(this, _n9, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Sn, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _En, {\\n writable: true,\\n value: 0\\n });\\n _classPrivateFieldInitSpec(this, _xn, {\\n writable: true,\\n value: null\\n });\\n this.color = _t17.color || null;\\n this.thickness = _t17.thickness || null;\\n this.opacity = _t17.opacity || null;\\n this.paths = [];\\n this.bezierPath2D = [];\\n this.allRawPaths = [];\\n this.currentPath = [];\\n this.scaleFactor = 1;\\n this.translationX = this.translationY = 0;\\n this.x = 0;\\n this.y = 0;\\n this._willKeepAspectRatio = !0;\\n }\\n static initialize(t) {\\n this._l10nPromise = new Map([\\"editor_ink_canvas_aria_label\\", \\"editor_ink2_aria_label\\"].map(e => [e, t.get(e)]));\\n }\\n static updateDefaultParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.INK_THICKNESS:\\n InkEditor._defaultThickness = e;\\n break;\\n case i.AnnotationEditorParamsType.INK_COLOR:\\n InkEditor._defaultColor = e;\\n break;\\n case i.AnnotationEditorParamsType.INK_OPACITY:\\n InkEditor._defaultOpacity = e / 100;\\n }\\n }\\n updateParams(t, e) {\\n switch (t) {\\n case i.AnnotationEditorParamsType.INK_THICKNESS:\\n _classPrivateMethodGet(this, _wn, _wn2).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.INK_COLOR:\\n _classPrivateMethodGet(this, _Pe3, _Pe4).call(this, e);\\n break;\\n case i.AnnotationEditorParamsType.INK_OPACITY:\\n _classPrivateMethodGet(this, _Cn, _Cn2).call(this, e);\\n }\\n }\\n static get defaultPropertiesToUpdate() {\\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * InkEditor._defaultOpacity)]];\\n }\\n get propertiesToUpdate() {\\n var _this$opacity;\\n return [[i.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [i.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || r.AnnotationEditor._defaultLineColor], [i.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * ((_this$opacity = this.opacity) !== null && _this$opacity !== void 0 ? _this$opacity : InkEditor._defaultOpacity))]];\\n }\\n rebuild() {\\n super.rebuild();\\n if (null !== this.div) {\\n if (!this.canvas) {\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n }\\n if (!this.isAttachedToDOM) {\\n this.parent.add(this);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n }\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n }\\n }\\n remove() {\\n if (null !== this.canvas) {\\n this.isEmpty() || this.commit();\\n this.canvas.width = this.canvas.height = 0;\\n this.canvas.remove();\\n this.canvas = null;\\n _classPrivateFieldGet(this, _n9).disconnect();\\n _classPrivateFieldSet(this, _n9, null);\\n super.remove();\\n }\\n }\\n setParent(t) {\\n !this.parent && t ? this._uiManager.removeShouldRescale(this) : this.parent && null === t && this._uiManager.addShouldRescale(this);\\n super.setParent(t);\\n }\\n onScaleChanging() {\\n const [t, e] = this.parentDimensions,\\n n = this.width * t,\\n i = this.height * e;\\n this.setDimensions(n, i);\\n }\\n enableEditMode() {\\n if (!_classPrivateFieldGet(this, _vn) && null !== this.canvas) {\\n super.enableEditMode();\\n this.div.draggable = !1;\\n this.canvas.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n }\\n }\\n disableEditMode() {\\n if (this.isInEditMode() && null !== this.canvas) {\\n super.disableEditMode();\\n this.div.draggable = !this.isEmpty();\\n this.div.classList.remove(\\"editing\\");\\n this.canvas.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n }\\n }\\n onceAdded() {\\n this.div.draggable = !this.isEmpty();\\n }\\n isEmpty() {\\n return 0 === this.paths.length || 1 === this.paths.length && 0 === this.paths[0].length;\\n }\\n commit() {\\n if (!_classPrivateFieldGet(this, _vn)) {\\n super.commit();\\n this.isEditing = !1;\\n this.disableEditMode();\\n this.setInForeground();\\n _classPrivateFieldSet(this, _vn, !0);\\n this.div.classList.add(\\"disabled\\");\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this, !0);\\n this.makeResizable();\\n this.parent.addInkEditorIfNeeded(!0);\\n this.parent.moveEditorInDOM(this);\\n this.div.focus({\\n preventScroll: !0\\n });\\n }\\n }\\n focusin(t) {\\n super.focusin(t);\\n this.enableEditMode();\\n }\\n canvasPointerdown(t) {\\n if (0 === t.button && this.isInEditMode() && !_classPrivateFieldGet(this, _vn)) {\\n this.setInForeground();\\n t.preventDefault();\\n \\"mouse\\" !== t.type && this.div.focus();\\n _classPrivateMethodGet(this, _Dn, _Dn2).call(this, t.offsetX, t.offsetY);\\n }\\n }\\n canvasContextMenu(t) {\\n t.preventDefault();\\n }\\n canvasPointermove(t) {\\n t.preventDefault();\\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t.offsetX, t.offsetY);\\n }\\n canvasPointerup(t) {\\n t.preventDefault();\\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\\n }\\n canvasPointerleave(t) {\\n _classPrivateMethodGet(this, _Hn, _Hn2).call(this, t);\\n }\\n get isResizable() {\\n return !this.isEmpty() && _classPrivateFieldGet(this, _vn);\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n InkEditor._l10nPromise.get(\\"editor_ink2_aria_label\\").then(t => {\\n var _this$div6;\\n return (_this$div6 = this.div) === null || _this$div6 === void 0 ? void 0 : _this$div6.setAttribute(\\"aria-label\\", t);\\n });\\n const [n, i, r, s] = _classPrivateMethodGet(this, _Fn, _Fn2).call(this);\\n this.setAt(n, i, 0, 0);\\n this.setDims(r, s);\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n this.setAspectRatio(this.width * n, this.height * i);\\n this.setAt(t * n, e * i, this.width * n, this.height * i);\\n _classPrivateFieldSet(this, _An, !0);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n this.setDims(this.width * n, this.height * i);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n this.div.classList.add(\\"disabled\\");\\n } else {\\n this.div.classList.add(\\"editing\\");\\n this.enableEditMode();\\n }\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n return this.div;\\n }\\n setDimensions(t, e) {\\n const n = Math.round(t),\\n i = Math.round(e);\\n if (_classPrivateFieldGet(this, _Sn) === n && _classPrivateFieldGet(this, _En) === i) return;\\n _classPrivateFieldSet(this, _Sn, n);\\n _classPrivateFieldSet(this, _En, i);\\n this.canvas.style.visibility = \\"hidden\\";\\n const [r, s] = this.parentDimensions;\\n this.width = t / r;\\n this.height = e / s;\\n this.fixAndSetPosition();\\n _classPrivateFieldGet(this, _vn) && _classPrivateMethodGet(this, _qn, _qn2).call(this, t, e);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n this.canvas.style.visibility = \\"visible\\";\\n this.fixDims();\\n }\\n static deserialize(t, e, n) {\\n if (t instanceof s.InkAnnotationElement) return null;\\n const a = super.deserialize(t, e, n);\\n a.thickness = t.thickness;\\n a.color = i.Util.makeHexColor(...t.color);\\n a.opacity = t.opacity;\\n const [o, l] = a.pageDimensions,\\n c = a.width * o,\\n h = a.height * l,\\n d = a.parentScale,\\n u = t.thickness / 2;\\n _classPrivateFieldSet(a, _vn, !0);\\n _classPrivateFieldSet(a, _Sn, Math.round(c));\\n _classPrivateFieldSet(a, _En, Math.round(h));\\n const {\\n paths: p,\\n rect: f,\\n rotation: g\\n } = t;\\n for (let {\\n bezier: t\\n } of p) {\\n t = _classStaticPrivateMethodGet(InkEditor, InkEditor, _$n).call(InkEditor, t, f, g);\\n const e = [];\\n a.paths.push(e);\\n let n = d * (t[0] - u),\\n i = d * (t[1] - u);\\n for (let r = 2, s = t.length; r < s; r += 6) {\\n const s = d * (t[r] - u),\\n a = d * (t[r + 1] - u),\\n o = d * (t[r + 2] - u),\\n l = d * (t[r + 3] - u),\\n c = d * (t[r + 4] - u),\\n h = d * (t[r + 5] - u);\\n e.push([[n, i], [s, a], [o, l], [c, h]]);\\n n = c;\\n i = h;\\n }\\n const r = _classStaticPrivateMethodGet(this, InkEditor, _Gn).call(this, e);\\n a.bezierPath2D.push(r);\\n }\\n const m = _classPrivateMethodGet(a, _Kn, _Kn2).call(a);\\n _classPrivateFieldSet(a, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, m[2] - m[0]));\\n _classPrivateFieldSet(a, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, m[3] - m[1]));\\n _classPrivateMethodGet(a, _qn, _qn2).call(a, c, h);\\n return a;\\n }\\n serialize() {\\n if (this.isEmpty()) return null;\\n const t = this.getRect(0, 0),\\n e = r.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\\n return {\\n annotationType: i.AnnotationEditorType.INK,\\n color: e,\\n thickness: this.thickness,\\n opacity: this.opacity,\\n paths: _classPrivateMethodGet(this, _Xn, _Xn2).call(this, this.scaleFactor / this.parentScale, this.translationX, this.translationY, t),\\n pageIndex: this.pageIndex,\\n rect: t,\\n rotation: this.rotation\\n };\\n }\\n }\\n _class41 = InkEditor;\\n function _wn2(t) {\\n const e = this.thickness;\\n this.addCommands({\\n cmd: () => {\\n this.thickness = t;\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n },\\n undo: () => {\\n this.thickness = e;\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_THICKNESS,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Pe4(t) {\\n const e = this.color;\\n this.addCommands({\\n cmd: () => {\\n this.color = t;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n undo: () => {\\n this.color = e;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_COLOR,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Cn2(t) {\\n t /= 100;\\n const e = this.opacity;\\n this.addCommands({\\n cmd: () => {\\n this.opacity = t;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n undo: () => {\\n this.opacity = e;\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n },\\n mustExec: !0,\\n type: i.AnnotationEditorParamsType.INK_OPACITY,\\n overwriteIfSameType: !0,\\n keepUndo: !0\\n });\\n }\\n function _Fn2() {\\n const {\\n parentRotation: t,\\n parentDimensions: [e, n]\\n } = this;\\n switch (t) {\\n case 90:\\n return [0, n, n, e];\\n case 180:\\n return [e, n, e, n];\\n case 270:\\n return [e, 0, n, e];\\n default:\\n return [0, 0, e, n];\\n }\\n }\\n function _In2() {\\n const {\\n ctx: t,\\n color: e,\\n opacity: n,\\n thickness: i,\\n parentScale: r,\\n scaleFactor: s\\n } = this;\\n t.lineWidth = i * r / s;\\n t.lineCap = \\"round\\";\\n t.lineJoin = \\"round\\";\\n t.miterLimit = 10;\\n t.strokeStyle = \\"\\".concat(e).concat((0, a.opacityToHex)(n));\\n }\\n function _Dn2(t, e) {\\n this.canvas.addEventListener(\\"contextmenu\\", _classPrivateFieldGet(this, _un));\\n this.canvas.addEventListener(\\"pointerleave\\", _classPrivateFieldGet(this, _fn));\\n this.canvas.addEventListener(\\"pointermove\\", _classPrivateFieldGet(this, _pn));\\n this.canvas.addEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _gn));\\n this.canvas.removeEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n this.isEditing = !0;\\n if (!_classPrivateFieldGet(this, _An)) {\\n var _this$opacity2;\\n _classPrivateFieldSet(this, _An, !0);\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n this.thickness || (this.thickness = _class41._defaultThickness);\\n this.color || (this.color = _class41._defaultColor || r.AnnotationEditor._defaultLineColor);\\n (_this$opacity2 = this.opacity) !== null && _this$opacity2 !== void 0 ? _this$opacity2 : this.opacity = _class41._defaultOpacity;\\n }\\n this.currentPath.push([t, e]);\\n _classPrivateFieldSet(this, _yn, !1);\\n _classPrivateMethodGet(this, _In, _In2).call(this);\\n _classPrivateFieldSet(this, _xn, () => {\\n _classPrivateMethodGet(this, _On, _On2).call(this);\\n _classPrivateFieldGet(this, _xn) && window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\\n });\\n window.requestAnimationFrame(_classPrivateFieldGet(this, _xn));\\n }\\n function _Ln2(t, e) {\\n const [n, i] = this.currentPath.at(-1);\\n if (this.currentPath.length > 1 && t === n && e === i) return;\\n const r = this.currentPath;\\n let s = _classPrivateFieldGet(this, _bn);\\n r.push([t, e]);\\n _classPrivateFieldSet(this, _yn, !0);\\n if (r.length <= 2) {\\n s.moveTo(...r[0]);\\n s.lineTo(t, e);\\n } else {\\n if (3 === r.length) {\\n _classPrivateFieldSet(this, _bn, s = new Path2D());\\n s.moveTo(...r[0]);\\n }\\n _classPrivateMethodGet(this, _Nn, _Nn2).call(this, s, ...r.at(-3), ...r.at(-2), t, e);\\n }\\n }\\n function _Bn2() {\\n if (0 === this.currentPath.length) return;\\n const t = this.currentPath.at(-1);\\n _classPrivateFieldGet(this, _bn).lineTo(...t);\\n }\\n function _jn2(t, e) {\\n _classPrivateFieldSet(this, _xn, null);\\n t = Math.min(Math.max(t, 0), this.canvas.width);\\n e = Math.min(Math.max(e, 0), this.canvas.height);\\n _classPrivateMethodGet(this, _Ln, _Ln2).call(this, t, e);\\n _classPrivateMethodGet(this, _Bn, _Bn2).call(this);\\n let n;\\n if (1 !== this.currentPath.length) n = _classPrivateMethodGet(this, _Un, _Un2).call(this);else {\\n const i = [t, e];\\n n = [[i, i.slice(), i.slice(), i]];\\n }\\n const i = _classPrivateFieldGet(this, _bn),\\n r = this.currentPath;\\n this.currentPath = [];\\n _classPrivateFieldSet(this, _bn, new Path2D());\\n this.addCommands({\\n cmd: () => {\\n this.allRawPaths.push(r);\\n this.paths.push(n);\\n this.bezierPath2D.push(i);\\n this.rebuild();\\n },\\n undo: () => {\\n this.allRawPaths.pop();\\n this.paths.pop();\\n this.bezierPath2D.pop();\\n if (0 === this.paths.length) this.remove();else {\\n if (!this.canvas) {\\n _classPrivateMethodGet(this, _kn, _kn2).call(this);\\n _classPrivateMethodGet(this, _Mn, _Mn2).call(this);\\n }\\n _classPrivateMethodGet(this, _Tn, _Tn2).call(this);\\n }\\n },\\n mustExec: !0\\n });\\n }\\n function _On2() {\\n if (!_classPrivateFieldGet(this, _yn)) return;\\n _classPrivateFieldSet(this, _yn, !1);\\n const t = Math.ceil(this.thickness * this.parentScale),\\n e = this.currentPath.slice(-3),\\n n = e.map(t => t[0]),\\n i = e.map(t => t[1]),\\n {\\n ctx: r\\n } = (Math.min(...n), Math.max(...n), Math.min(...i), Math.max(...i), this);\\n r.save();\\n r.clearRect(0, 0, this.canvas.width, this.canvas.height);\\n for (const t of this.bezierPath2D) r.stroke(t);\\n r.stroke(_classPrivateFieldGet(this, _bn));\\n r.restore();\\n }\\n function _Nn2(t, e, n, i, r, s, a) {\\n const o = (e + i) / 2,\\n l = (n + r) / 2,\\n c = (i + s) / 2,\\n h = (r + a) / 2;\\n t.bezierCurveTo(o + 2 * (i - o) / 3, l + 2 * (r - l) / 3, c + 2 * (i - c) / 3, h + 2 * (r - h) / 3, c, h);\\n }\\n function _Un2() {\\n const t = this.currentPath;\\n if (t.length <= 2) return [[t[0], t[0], t.at(-1), t.at(-1)]];\\n const e = [];\\n let n,\\n [i, r] = t[0];\\n for (n = 1; n < t.length - 2; n++) {\\n const [s, a] = t[n],\\n [o, l] = t[n + 1],\\n c = (s + o) / 2,\\n h = (a + l) / 2,\\n d = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\\n u = [c + 2 * (s - c) / 3, h + 2 * (a - h) / 3];\\n e.push([[i, r], d, u, [c, h]]);\\n [i, r] = [c, h];\\n }\\n const [s, a] = t[n],\\n [o, l] = t[n + 1],\\n c = [i + 2 * (s - i) / 3, r + 2 * (a - r) / 3],\\n h = [o + 2 * (s - o) / 3, l + 2 * (a - l) / 3];\\n e.push([[i, r], c, h, [o, l]]);\\n return e;\\n }\\n function _Pn2() {\\n if (this.isEmpty()) {\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n return;\\n }\\n _classPrivateMethodGet(this, _In, _In2).call(this);\\n const {\\n canvas: t,\\n ctx: e\\n } = this;\\n e.setTransform(1, 0, 0, 1, 0, 0);\\n e.clearRect(0, 0, t.width, t.height);\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n for (const t of this.bezierPath2D) e.stroke(t);\\n }\\n function _Hn2(t) {\\n this.canvas.removeEventListener(\\"pointerleave\\", _classPrivateFieldGet(this, _fn));\\n this.canvas.removeEventListener(\\"pointermove\\", _classPrivateFieldGet(this, _pn));\\n this.canvas.removeEventListener(\\"pointerup\\", _classPrivateFieldGet(this, _gn));\\n this.canvas.addEventListener(\\"pointerdown\\", _classPrivateFieldGet(this, _mn));\\n setTimeout(() => {\\n this.canvas.removeEventListener(\\"contextmenu\\", _classPrivateFieldGet(this, _un));\\n }, 10);\\n _classPrivateMethodGet(this, _jn, _jn2).call(this, t.offsetX, t.offsetY);\\n this.addToAnnotationStorage();\\n this.setInBackground();\\n }\\n function _kn2() {\\n this.canvas = document.createElement(\\"canvas\\");\\n this.canvas.width = this.canvas.height = 0;\\n this.canvas.className = \\"inkEditorCanvas\\";\\n _class41._l10nPromise.get(\\"editor_ink_canvas_aria_label\\").then(t => {\\n var _this$canvas;\\n return (_this$canvas = this.canvas) === null || _this$canvas === void 0 ? void 0 : _this$canvas.setAttribute(\\"aria-label\\", t);\\n });\\n this.div.append(this.canvas);\\n this.ctx = this.canvas.getContext(\\"2d\\");\\n }\\n function _Mn2() {\\n _classPrivateFieldSet(this, _n9, new ResizeObserver(t => {\\n const e = t[0].contentRect;\\n e.width && e.height && this.setDimensions(e.width, e.height);\\n }));\\n _classPrivateFieldGet(this, _n9).observe(this.div);\\n }\\n function _Rn2() {\\n if (!_classPrivateFieldGet(this, _An)) return;\\n const [t, e] = this.parentDimensions;\\n this.canvas.width = Math.ceil(this.width * t);\\n this.canvas.height = Math.ceil(this.height * e);\\n _classPrivateMethodGet(this, _zn, _zn2).call(this);\\n }\\n function _qn2(t, e) {\\n const n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this),\\n i = (t - n) / _classPrivateFieldGet(this, _dn),\\n r = (e - n) / _classPrivateFieldGet(this, _hn);\\n this.scaleFactor = Math.min(i, r);\\n }\\n function _zn2() {\\n const t = _classPrivateMethodGet(this, _Wn, _Wn2).call(this) / 2;\\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + t, this.translationY * this.scaleFactor + t);\\n }\\n function _Gn(t) {\\n const e = new Path2D();\\n for (let n = 0, i = t.length; n < i; n++) {\\n const [i, r, s, a] = t[n];\\n 0 === n && e.moveTo(...i);\\n e.bezierCurveTo(r[0], r[1], s[0], s[1], a[0], a[1]);\\n }\\n return e;\\n }\\n function _Vn(t, e, n) {\\n const [i, r, s, a] = e;\\n switch (n) {\\n case 0:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] += i;\\n t[e + 1] = a - t[e + 1];\\n }\\n break;\\n case 90:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = t[e + 1] + i;\\n t[e + 1] = n + r;\\n }\\n break;\\n case 180:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] = s - t[e];\\n t[e + 1] += r;\\n }\\n break;\\n case 270:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = s - t[e + 1];\\n t[e + 1] = a - n;\\n }\\n break;\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n return t;\\n }\\n function _$n(t, e, n) {\\n const [i, r, s, a] = e;\\n switch (n) {\\n case 0:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] -= i;\\n t[e + 1] = a - t[e + 1];\\n }\\n break;\\n case 90:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = t[e + 1] - r;\\n t[e + 1] = n - i;\\n }\\n break;\\n case 180:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n t[e] = s - t[e];\\n t[e + 1] -= r;\\n }\\n break;\\n case 270:\\n for (let e = 0, n = t.length; e < n; e += 2) {\\n const n = t[e];\\n t[e] = a - t[e + 1];\\n t[e + 1] = s - n;\\n }\\n break;\\n default:\\n throw new Error(\\"Invalid rotation\\");\\n }\\n return t;\\n }\\n function _Xn2(t, e, n, i) {\\n const r = [],\\n s = this.thickness / 2,\\n a = t * e + s,\\n o = t * n + s;\\n for (const e of this.paths) {\\n const n = [],\\n s = [];\\n for (let i = 0, r = e.length; i < r; i++) {\\n const [l, c, h, d] = e[i],\\n u = t * l[0] + a,\\n p = t * l[1] + o,\\n f = t * c[0] + a,\\n g = t * c[1] + o,\\n m = t * h[0] + a,\\n b = t * h[1] + o,\\n v = t * d[0] + a,\\n y = t * d[1] + o;\\n if (0 === i) {\\n n.push(u, p);\\n s.push(u, p);\\n }\\n n.push(f, g, m, b, v, y);\\n s.push(f, g);\\n i === r - 1 && s.push(v, y);\\n }\\n r.push({\\n bezier: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, n, i, this.rotation),\\n points: _classStaticPrivateMethodGet(_class41, _class41, _Vn).call(_class41, s, i, this.rotation)\\n });\\n }\\n return r;\\n }\\n function _Kn2() {\\n let t = 1 / 0,\\n e = -1 / 0,\\n n = 1 / 0,\\n r = -1 / 0;\\n for (const s of this.paths) for (const [a, o, l, c] of s) {\\n const s = i.Util.bezierBoundingBox(...a, ...o, ...l, ...c);\\n t = Math.min(t, s[0]);\\n n = Math.min(n, s[1]);\\n e = Math.max(e, s[2]);\\n r = Math.max(r, s[3]);\\n }\\n return [t, n, e, r];\\n }\\n function _Wn2() {\\n return _classPrivateFieldGet(this, _vn) ? Math.ceil(this.thickness * this.parentScale) : 0;\\n }\\n function _Tn2() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\\n if (this.isEmpty()) return;\\n if (!_classPrivateFieldGet(this, _vn)) {\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n return;\\n }\\n const e = _classPrivateMethodGet(this, _Kn, _Kn2).call(this),\\n n = _classPrivateMethodGet(this, _Wn, _Wn2).call(this);\\n _classPrivateFieldSet(this, _dn, Math.max(r.AnnotationEditor.MIN_SIZE, e[2] - e[0]));\\n _classPrivateFieldSet(this, _hn, Math.max(r.AnnotationEditor.MIN_SIZE, e[3] - e[1]));\\n const i = Math.ceil(n + _classPrivateFieldGet(this, _dn) * this.scaleFactor),\\n s = Math.ceil(n + _classPrivateFieldGet(this, _hn) * this.scaleFactor),\\n [a, o] = this.parentDimensions;\\n this.width = i / a;\\n this.height = s / o;\\n this.setAspectRatio(i, s);\\n const l = this.translationX,\\n c = this.translationY;\\n this.translationX = -e[0];\\n this.translationY = -e[1];\\n _classPrivateMethodGet(this, _Rn, _Rn2).call(this);\\n _classPrivateMethodGet(this, _Pn, _Pn2).call(this);\\n _classPrivateFieldSet(this, _Sn, i);\\n _classPrivateFieldSet(this, _En, s);\\n this.setDims(i, s);\\n const h = t ? n / this.scaleFactor / 2 : 0;\\n this.translate(l - this.translationX - h, c - this.translationY - h);\\n }\\n _defineProperty(InkEditor, \\"_defaultColor\\", null);\\n _defineProperty(InkEditor, \\"_defaultOpacity\\", 1);\\n _defineProperty(InkEditor, \\"_defaultThickness\\", 1);\\n _defineProperty(InkEditor, \\"_l10nPromise\\", void 0);\\n _defineProperty(InkEditor, \\"_type\\", \\"ink\\");\\n e.InkEditor = InkEditor;\\n }, (t, e, n) => {\\n \\"use strict\\";\\n\\n Object.defineProperty(e, \\"__esModule\\", {\\n value: !0\\n });\\n e.StampEditor = void 0;\\n n(148);\\n n(151);\\n var i = n(163),\\n r = n(1),\\n s = n(167),\\n a = n(197);\\n var _Yn = /*#__PURE__*/new WeakMap();\\n var _Jn = /*#__PURE__*/new WeakMap();\\n var _Qn = /*#__PURE__*/new WeakMap();\\n var _Zn = /*#__PURE__*/new WeakMap();\\n var _ti = /*#__PURE__*/new WeakMap();\\n var _n10 = /*#__PURE__*/new WeakMap();\\n var _ei = /*#__PURE__*/new WeakMap();\\n var _ni = /*#__PURE__*/new WeakMap();\\n var _ii = /*#__PURE__*/new WeakSet();\\n var _kn3 = /*#__PURE__*/new WeakSet();\\n var _si = /*#__PURE__*/new WeakSet();\\n var _ai = /*#__PURE__*/new WeakSet();\\n var _ri = /*#__PURE__*/new WeakSet();\\n var _oi = /*#__PURE__*/new WeakSet();\\n var _Mn3 = /*#__PURE__*/new WeakSet();\\n class StampEditor extends i.AnnotationEditor {\\n constructor(_t18) {\\n super(_objectSpread(_objectSpread({}, _t18), {}, {\\n name: \\"stampEditor\\"\\n }));\\n _classPrivateMethodInitSpec(this, _Mn3);\\n _classPrivateMethodInitSpec(this, _oi);\\n _classPrivateMethodInitSpec(this, _ri);\\n _classPrivateMethodInitSpec(this, _ai);\\n _classPrivateMethodInitSpec(this, _si);\\n _classPrivateMethodInitSpec(this, _kn3);\\n _classPrivateMethodInitSpec(this, _ii);\\n _classPrivateFieldInitSpec(this, _Yn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Jn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Qn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _Zn, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ti, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _n10, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ei, {\\n writable: true,\\n value: null\\n });\\n _classPrivateFieldInitSpec(this, _ni, {\\n writable: true,\\n value: !1\\n });\\n _classPrivateFieldSet(this, _Zn, _t18.bitmapUrl);\\n }\\n remove() {\\n if (_classPrivateFieldGet(this, _Jn)) {\\n var _classPrivateFieldGet15, _classPrivateFieldGet16;\\n _classPrivateFieldSet(this, _Yn, null);\\n this._uiManager.imageManager.deleteId(_classPrivateFieldGet(this, _Jn));\\n (_classPrivateFieldGet15 = _classPrivateFieldGet(this, _ti)) === null || _classPrivateFieldGet15 === void 0 ? void 0 : _classPrivateFieldGet15.remove();\\n _classPrivateFieldSet(this, _ti, null);\\n (_classPrivateFieldGet16 = _classPrivateFieldGet(this, _n10)) === null || _classPrivateFieldGet16 === void 0 ? void 0 : _classPrivateFieldGet16.disconnect();\\n _classPrivateFieldSet(this, _n10, null);\\n }\\n super.remove();\\n }\\n rebuild() {\\n super.rebuild();\\n if (null !== this.div) {\\n _classPrivateFieldGet(this, _Jn) && _classPrivateMethodGet(this, _ii, _ii2).call(this);\\n this.isAttachedToDOM || this.parent.add(this);\\n }\\n }\\n onceAdded() {\\n this.div.draggable = !0;\\n this.parent.addUndoableEditor(this);\\n this.div.focus();\\n }\\n isEmpty() {\\n return null === _classPrivateFieldGet(this, _Qn) && null === _classPrivateFieldGet(this, _Yn) && null === _classPrivateFieldGet(this, _Zn);\\n }\\n get isResizable() {\\n return !0;\\n }\\n render() {\\n if (this.div) return this.div;\\n let t, e;\\n if (this.width) {\\n t = this.x;\\n e = this.y;\\n }\\n super.render();\\n if (_classPrivateFieldGet(this, _Yn)) _classPrivateMethodGet(this, _kn3, _kn4).call(this);else {\\n this.div.classList.add(\\"loading\\");\\n _classPrivateMethodGet(this, _ii, _ii2).call(this);\\n }\\n if (this.width) {\\n const [n, i] = this.parentDimensions;\\n this.setAt(t * n, e * i, this.width * n, this.height * i);\\n }\\n return this.div;\\n }\\n static deserialize(t, e, n) {\\n if (t instanceof a.StampAnnotationElement) return null;\\n const i = super.deserialize(t, e, n),\\n {\\n rect: r,\\n bitmapUrl: s,\\n bitmapId: o,\\n isSvg: l\\n } = t;\\n o && n.imageManager.isValidId(o) ? _classPrivateFieldSet(i, _Jn, o) : _classPrivateFieldSet(i, _Zn, s);\\n _classPrivateFieldSet(i, _ni, l);\\n const [c, h] = i.pageDimensions;\\n i.width = (r[2] - r[0]) / c;\\n i.height = (r[3] - r[1]) / h;\\n return i;\\n }\\n serialize() {\\n let t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\\n e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\\n if (this.isEmpty()) return null;\\n const n = {\\n annotationType: r.AnnotationEditorType.STAMP,\\n bitmapId: _classPrivateFieldGet(this, _Jn),\\n pageIndex: this.pageIndex,\\n rect: this.getRect(0, 0),\\n rotation: this.rotation,\\n isSvg: _classPrivateFieldGet(this, _ni)\\n };\\n if (t) {\\n n.bitmapUrl = _classPrivateMethodGet(this, _oi, _oi2).call(this, !0);\\n return n;\\n }\\n if (null === e) return n;\\n e.stamps || (e.stamps = new Map());\\n const i = _classPrivateFieldGet(this, _ni) ? (n.rect[2] - n.rect[0]) * (n.rect[3] - n.rect[1]) : null;\\n if (e.stamps.has(_classPrivateFieldGet(this, _Jn))) {\\n if (_classPrivateFieldGet(this, _ni)) {\\n const t = e.stamps.get(_classPrivateFieldGet(this, _Jn));\\n if (i > t.area) {\\n t.area = i;\\n t.serialized.bitmap.close();\\n t.serialized.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\\n }\\n }\\n } else {\\n e.stamps.set(_classPrivateFieldGet(this, _Jn), {\\n area: i,\\n serialized: n\\n });\\n n.bitmap = _classPrivateMethodGet(this, _oi, _oi2).call(this, !1);\\n }\\n return n;\\n }\\n }\\n function _ii2() {\\n if (_classPrivateFieldGet(this, _Jn)) {\\n this._uiManager.imageManager.getFromId(_classPrivateFieldGet(this, _Jn)).then(t => {\\n if (t) {\\n _classPrivateFieldSet(this, _Yn, t.bitmap);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n });\\n return;\\n }\\n if (_classPrivateFieldGet(this, _Zn)) {\\n const t = _classPrivateFieldGet(this, _Zn);\\n _classPrivateFieldSet(this, _Zn, null);\\n _classPrivateFieldSet(this, _Qn, this._uiManager.imageManager.getFromUrl(t).then(t => {\\n _classPrivateFieldSet(this, _Qn, null);\\n if (t) {\\n ({\\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\\n } = t);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n }));\\n return;\\n }\\n const t = document.createElement(\\"input\\");\\n t.type = \\"file\\";\\n t.accept = \\"image/*\\";\\n _classPrivateFieldSet(this, _Qn, new Promise(e => {\\n t.addEventListener(\\"change\\", async () => {\\n _classPrivateFieldSet(this, _Qn, null);\\n if (t.files && 0 !== t.files.length) {\\n const e = await this._uiManager.imageManager.getFromFile(t.files[0]);\\n if (!e) {\\n this.remove();\\n return;\\n }\\n ({\\n bitmap: _classPrivateFieldDestructureSet(this, _Yn).value,\\n id: _classPrivateFieldDestructureSet(this, _Jn).value,\\n isSvg: _classPrivateFieldDestructureSet(this, _ni).value\\n } = e);\\n _classPrivateMethodGet(this, _kn3, _kn4).call(this);\\n } else this.remove();\\n e();\\n });\\n t.addEventListener(\\"cancel\\", () => {\\n _classPrivateFieldSet(this, _Qn, null);\\n this.remove();\\n e();\\n });\\n }));\\n t.click();\\n }\\n function _kn4() {\\n const {\\n div: t\\n } = this;\\n let {\\n width: e,\\n height: n\\n } = _classPrivateFieldGet(this, _Yn);\\n const [i, r] = this.pageDimensions,\\n s = .75;\\n if (this.width) {\\n e = this.width * i;\\n n = this.height * r;\\n } else if (e > s * i || n > s * r) {\\n const t = Math.min(s * i / e, s * r / n);\\n e *= t;\\n n *= t;\\n }\\n const [a, o] = this.parentDimensions;\\n this.setDims(e * a / i, n * o / r);\\n const l = _classPrivateFieldSet(this, _ti, document.createElement(\\"canvas\\"));\\n t.append(l);\\n _classPrivateMethodGet(this, _ri, _ri2).call(this, e, n);\\n _classPrivateMethodGet(this, _Mn3, _Mn4).call(this);\\n t.classList.remove(\\"loading\\");\\n }\\n function _si2(t, e) {\\n const [n, i] = this.parentDimensions;\\n this.width = t / n;\\n this.height = e / i;\\n this.setDims(t, e);\\n this.fixAndSetPosition();\\n null !== _classPrivateFieldGet(this, _ei) && clearTimeout(_classPrivateFieldGet(this, _ei));\\n _classPrivateFieldSet(this, _ei, setTimeout(() => {\\n _classPrivateFieldSet(this, _ei, null);\\n _classPrivateMethodGet(this, _ri, _ri2).call(this, t, e);\\n }, 200));\\n }\\n function _ai2(t, e) {\\n const {\\n width: n,\\n height: i\\n } = _classPrivateFieldGet(this, _Yn);\\n let r = n,\\n s = i,\\n a = _classPrivateFieldGet(this, _Yn);\\n for (; r > 2 * t || s > 2 * e;) {\\n const n = r,\\n i = s;\\n r > 2 * t && (r = r >= 16384 ? Math.floor(r / 2) - 1 : Math.ceil(r / 2));\\n s > 2 * e && (s = s >= 16384 ? Math.floor(s / 2) - 1 : Math.ceil(s / 2));\\n const o = new OffscreenCanvas(r, s);\\n o.getContext(\\"2d\\").drawImage(a, 0, 0, n, i, 0, 0, r, s);\\n a = o.transferToImageBitmap();\\n }\\n return a;\\n }\\n function _ri2(t, e) {\\n const n = _classPrivateFieldGet(this, _ti);\\n if (!n || n.width === t && n.height === e) return;\\n n.width = t;\\n n.height = e;\\n const i = _classPrivateFieldGet(this, _ni) ? _classPrivateFieldGet(this, _Yn) : _classPrivateMethodGet(this, _ai, _ai2).call(this, t, e),\\n r = n.getContext(\\"2d\\");\\n r.filter = this._uiManager.hcmFilter;\\n r.drawImage(i, 0, 0, i.width, i.height, 0, 0, t, e);\\n }\\n function _oi2(t) {\\n if (t) {\\n if (_classPrivateFieldGet(this, _ni)) {\\n const t = this._uiManager.imageManager.getSvgUrl(_classPrivateFieldGet(this, _Jn));\\n if (t) return t;\\n }\\n const t = document.createElement(\\"canvas\\");\\n ({\\n width: t.width,\\n height: t.height\\n } = _classPrivateFieldGet(this, _Yn));\\n t.getContext(\\"2d\\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0);\\n return t.toDataURL();\\n }\\n if (_classPrivateFieldGet(this, _ni)) {\\n const [t, e] = this.pageDimensions,\\n n = Math.round(this.width * t * s.PixelsPerInch.PDF_TO_CSS_UNITS),\\n i = Math.round(this.height * e * s.PixelsPerInch.PDF_TO_CSS_UNITS),\\n r = new OffscreenCanvas(n, i);\\n r.getContext(\\"2d\\").drawImage(_classPrivateFieldGet(this, _Yn), 0, 0, _classPrivateFieldGet(this, _Yn).width, _classPrivateFieldGet(this, _Yn).height, 0, 0, n, i);\\n return r.transferToImageBitmap();\\n }\\n return structuredClone(_classPrivateFieldGet(this, _Yn));\\n }\\n function _Mn4() {\\n _classPrivateFieldSet(this, _n10, new ResizeObserver(t => {\\n const e = t[0].contentRect;\\n e.width && e.height && _classPrivateMethodGet(this, _si, _si2).call(this, e.width, e.height);\\n }));\\n _classPrivateFieldGet(this, _n10).observe(this.div);\\n }\\n _defineProperty(StampEditor, \\"_type\\", \\"stamp\\");\\n e.StampEditor = StampEditor;\\n }],\\n __webpack_module_cache__ = {};\\n function __w_pdfjs_require__(t) {\\n var e = __webpack_module_cache__[t];\\n if (void 0 !== e) return e.exports;\\n var n = __webpack_module_cache__[t] = {\\n exports: {}\\n };\\n __webpack_modules__[t].call(n.exports, n, n.exports, __w_pdfjs_require__);\\n return n.exports;\\n }\\n var __nested_webpack_exports__ = {};\\n (() => {\\n \\"use strict\\";\\n\\n var t = __nested_webpack_exports__;\\n Object.defineProperty(t, \\"__esModule\\", {\\n value: !0\\n });\\n Object.defineProperty(t, \\"AbortException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AbortException;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return s.AnnotationEditorLayer;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorParamsType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationEditorParamsType;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationEditorType;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationEditorUIManager\\", {\\n enumerable: !0,\\n get: function get() {\\n return a.AnnotationEditorUIManager;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return o.AnnotationLayer;\\n }\\n });\\n Object.defineProperty(t, \\"AnnotationMode\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.AnnotationMode;\\n }\\n });\\n Object.defineProperty(t, \\"CMapCompressionType\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.CMapCompressionType;\\n }\\n });\\n Object.defineProperty(t, \\"FeatureTest\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.FeatureTest;\\n }\\n });\\n Object.defineProperty(t, \\"GlobalWorkerOptions\\", {\\n enumerable: !0,\\n get: function get() {\\n return l.GlobalWorkerOptions;\\n }\\n });\\n Object.defineProperty(t, \\"ImageKind\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.ImageKind;\\n }\\n });\\n Object.defineProperty(t, \\"InvalidPDFException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.InvalidPDFException;\\n }\\n });\\n Object.defineProperty(t, \\"MissingPDFException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.MissingPDFException;\\n }\\n });\\n Object.defineProperty(t, \\"OPS\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.OPS;\\n }\\n });\\n Object.defineProperty(t, \\"PDFDataRangeTransport\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.PDFDataRangeTransport;\\n }\\n });\\n Object.defineProperty(t, \\"PDFDateString\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.PDFDateString;\\n }\\n });\\n Object.defineProperty(t, \\"PDFWorker\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.PDFWorker;\\n }\\n });\\n Object.defineProperty(t, \\"PasswordResponses\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PasswordResponses;\\n }\\n });\\n Object.defineProperty(t, \\"PermissionFlag\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PermissionFlag;\\n }\\n });\\n Object.defineProperty(t, \\"PixelsPerInch\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.PixelsPerInch;\\n }\\n });\\n Object.defineProperty(t, \\"PromiseCapability\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.PromiseCapability;\\n }\\n });\\n Object.defineProperty(t, \\"RenderingCancelledException\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.RenderingCancelledException;\\n }\\n });\\n Object.defineProperty(t, \\"SVGGraphics\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.SVGGraphics;\\n }\\n });\\n Object.defineProperty(t, \\"UnexpectedResponseException\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.UnexpectedResponseException;\\n }\\n });\\n Object.defineProperty(t, \\"Util\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.Util;\\n }\\n });\\n Object.defineProperty(t, \\"VerbosityLevel\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.VerbosityLevel;\\n }\\n });\\n Object.defineProperty(t, \\"XfaLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return c.XfaLayer;\\n }\\n });\\n Object.defineProperty(t, \\"build\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.build;\\n }\\n });\\n Object.defineProperty(t, \\"createValidAbsoluteUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.createValidAbsoluteUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getDocument\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.getDocument;\\n }\\n });\\n Object.defineProperty(t, \\"getFilenameFromUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getFilenameFromUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getPdfFilenameFromUrl\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getPdfFilenameFromUrl;\\n }\\n });\\n Object.defineProperty(t, \\"getXfaPageViewport\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.getXfaPageViewport;\\n }\\n });\\n Object.defineProperty(t, \\"isDataScheme\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.isDataScheme;\\n }\\n });\\n Object.defineProperty(t, \\"isPdfFile\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.isPdfFile;\\n }\\n });\\n Object.defineProperty(t, \\"loadScript\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.loadScript;\\n }\\n });\\n Object.defineProperty(t, \\"normalizeUnicode\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.normalizeUnicode;\\n }\\n });\\n Object.defineProperty(t, \\"renderTextLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return r.renderTextLayer;\\n }\\n });\\n Object.defineProperty(t, \\"setLayerDimensions\\", {\\n enumerable: !0,\\n get: function get() {\\n return i.setLayerDimensions;\\n }\\n });\\n Object.defineProperty(t, \\"shadow\\", {\\n enumerable: !0,\\n get: function get() {\\n return e.shadow;\\n }\\n });\\n Object.defineProperty(t, \\"updateTextLayer\\", {\\n enumerable: !0,\\n get: function get() {\\n return r.updateTextLayer;\\n }\\n });\\n Object.defineProperty(t, \\"version\\", {\\n enumerable: !0,\\n get: function get() {\\n return n.version;\\n }\\n });\\n var e = __w_pdfjs_require__(1),\\n n = __w_pdfjs_require__(124),\\n i = __w_pdfjs_require__(167),\\n r = __w_pdfjs_require__(194),\\n s = __w_pdfjs_require__(195),\\n a = __w_pdfjs_require__(164),\\n o = __w_pdfjs_require__(197),\\n l = __w_pdfjs_require__(175),\\n c = __w_pdfjs_require__(200);\\n })();\\n return __nested_webpack_exports__;\\n})());\\n\\n//# sourceURL=webpack://babel/./pdf.js?")}),"./node_modules/core-js/internals/a-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`Assert: IsCallable(argument) is true\`\\nmodule.exports = function (argument) {\\n if (isCallable(argument)) return argument;\\n throw $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-callable.js?")}),"./node_modules/core-js/internals/a-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`Assert: IsConstructor(argument) is true\`\\nmodule.exports = function (argument) {\\n if (isConstructor(argument)) return argument;\\n throw $TypeError(tryToString(argument) + ' is not a constructor');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-constructor.js?")}),"./node_modules/core-js/internals/a-possible-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n if (typeof argument == 'object' || isCallable(argument)) return argument;\\n throw $TypeError(\\"Can't set \\" + $String(argument) + ' as a prototype');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/a-possible-prototype.js?")}),"./node_modules/core-js/internals/add-to-unscopables.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\n\\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\\nvar ArrayPrototype = Array.prototype;\\n\\n// Array.prototype[@@unscopables]\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\\n defineProperty(ArrayPrototype, UNSCOPABLES, {\\n configurable: true,\\n value: create(null)\\n });\\n}\\n\\n// add a key to Array.prototype[@@unscopables]\\nmodule.exports = function (key) {\\n ArrayPrototype[UNSCOPABLES][key] = true;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/add-to-unscopables.js?")}),"./node_modules/core-js/internals/advance-string-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").charAt);\\n\\n// \`AdvanceStringIndex\` abstract operation\\n// https://tc39.es/ecma262/#sec-advancestringindex\\nmodule.exports = function (S, index, unicode) {\\n return index + (unicode ? charAt(S, index).length : 1);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/advance-string-index.js?")}),"./node_modules/core-js/internals/an-instance.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n if (isPrototypeOf(Prototype, it)) return it;\\n throw $TypeError('Incorrect invocation');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-instance.js?")}),"./node_modules/core-js/internals/an-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n// \`Assert: Type(argument) is Object\`\\nmodule.exports = function (argument) {\\n if (isObject(argument)) return argument;\\n throw $TypeError($String(argument) + ' is not an object');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/an-object.js?")}),"./node_modules/core-js/internals/array-buffer-basic-detection.js":((module)=>{eval("\\n// eslint-disable-next-line es/no-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-basic-detection.js?")}),"./node_modules/core-js/internals/array-buffer-non-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = fails(function () {\\n if (typeof ArrayBuffer == 'function') {\\n var buffer = new ArrayBuffer(8);\\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-non-extensible.js?")}),"./node_modules/core-js/internals/array-buffer-view-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \\"./node_modules/core-js/internals/array-buffer-basic-detection.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar Int8Array = global.Int8Array;\\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\\nvar Uint8ClampedArray = global.Uint8ClampedArray;\\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\\nvar ObjectPrototype = Object.prototype;\\nvar TypeError = global.TypeError;\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\\nvar TYPED_ARRAY_TAG_REQUIRED = false;\\nvar NAME, Constructor, Prototype;\\n\\nvar TypedArrayConstructorsList = {\\n Int8Array: 1,\\n Uint8Array: 1,\\n Uint8ClampedArray: 1,\\n Int16Array: 2,\\n Uint16Array: 2,\\n Int32Array: 4,\\n Uint32Array: 4,\\n Float32Array: 4,\\n Float64Array: 8\\n};\\n\\nvar BigIntArrayConstructorsList = {\\n BigInt64Array: 8,\\n BigUint64Array: 8\\n};\\n\\nvar isView = function isView(it) {\\n if (!isObject(it)) return false;\\n var klass = classof(it);\\n return klass === 'DataView'\\n || hasOwn(TypedArrayConstructorsList, klass)\\n || hasOwn(BigIntArrayConstructorsList, klass);\\n};\\n\\nvar getTypedArrayConstructor = function (it) {\\n var proto = getPrototypeOf(it);\\n if (!isObject(proto)) return;\\n var state = getInternalState(proto);\\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\\n};\\n\\nvar isTypedArray = function (it) {\\n if (!isObject(it)) return false;\\n var klass = classof(it);\\n return hasOwn(TypedArrayConstructorsList, klass)\\n || hasOwn(BigIntArrayConstructorsList, klass);\\n};\\n\\nvar aTypedArray = function (it) {\\n if (isTypedArray(it)) return it;\\n throw TypeError('Target is not a typed array');\\n};\\n\\nvar aTypedArrayConstructor = function (C) {\\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\\n};\\n\\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\\n if (!DESCRIPTORS) return;\\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\\n var TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\\n delete TypedArrayConstructor.prototype[KEY];\\n } catch (error) {\\n // old WebKit bug - some methods are non-configurable\\n try {\\n TypedArrayConstructor.prototype[KEY] = property;\\n } catch (error2) { /* empty */ }\\n }\\n }\\n if (!TypedArrayPrototype[KEY] || forced) {\\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\\n }\\n};\\n\\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\\n var ARRAY, TypedArrayConstructor;\\n if (!DESCRIPTORS) return;\\n if (setPrototypeOf) {\\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\\n TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\\n delete TypedArrayConstructor[KEY];\\n } catch (error) { /* empty */ }\\n }\\n if (!TypedArray[KEY] || forced) {\\n // V8 ~ Chrome 49-50 \`%TypedArray%\` methods are non-writable non-configurable\\n try {\\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\\n } catch (error) { /* empty */ }\\n } else return;\\n }\\n for (ARRAY in TypedArrayConstructorsList) {\\n TypedArrayConstructor = global[ARRAY];\\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\\n defineBuiltIn(TypedArrayConstructor, KEY, property);\\n }\\n }\\n};\\n\\nfor (NAME in TypedArrayConstructorsList) {\\n Constructor = global[NAME];\\n Prototype = Constructor && Constructor.prototype;\\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\\n}\\n\\nfor (NAME in BigIntArrayConstructorsList) {\\n Constructor = global[NAME];\\n Prototype = Constructor && Constructor.prototype;\\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\\n}\\n\\n// WebKit bug - typed arrays constructors prototype is Object.prototype\\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\\n // eslint-disable-next-line no-shadow -- safe\\n TypedArray = function TypedArray() {\\n throw TypeError('Incorrect invocation');\\n };\\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\\n }\\n}\\n\\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\\n TypedArrayPrototype = TypedArray.prototype;\\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\\n }\\n}\\n\\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\\n}\\n\\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\\n TYPED_ARRAY_TAG_REQUIRED = true;\\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\\n configurable: true,\\n get: function () {\\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\\n }\\n });\\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\\n }\\n}\\n\\nmodule.exports = {\\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\\n aTypedArray: aTypedArray,\\n aTypedArrayConstructor: aTypedArrayConstructor,\\n exportTypedArrayMethod: exportTypedArrayMethod,\\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\\n getTypedArrayConstructor: getTypedArrayConstructor,\\n isView: isView,\\n isTypedArray: isTypedArray,\\n TypedArray: TypedArray,\\n TypedArrayPrototype: TypedArrayPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer-view-core.js?")}),"./node_modules/core-js/internals/array-buffer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(/*! ../internals/array-buffer-basic-detection */ \\"./node_modules/core-js/internals/array-buffer-basic-detection.js\\");\\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \\"./node_modules/core-js/internals/to-index.js\\");\\nvar IEEE754 = __webpack_require__(/*! ../internals/ieee754 */ \\"./node_modules/core-js/internals/ieee754.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar arrayFill = __webpack_require__(/*! ../internals/array-fill */ \\"./node_modules/core-js/internals/array-fill.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\\nvar ARRAY_BUFFER = 'ArrayBuffer';\\nvar DATA_VIEW = 'DataView';\\nvar PROTOTYPE = 'prototype';\\nvar WRONG_LENGTH = 'Wrong length';\\nvar WRONG_INDEX = 'Wrong index';\\nvar getInternalArrayBufferState = InternalStateModule.getterFor(ARRAY_BUFFER);\\nvar getInternalDataViewState = InternalStateModule.getterFor(DATA_VIEW);\\nvar setInternalState = InternalStateModule.set;\\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\\nvar $ArrayBuffer = NativeArrayBuffer;\\nvar ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];\\nvar $DataView = global[DATA_VIEW];\\nvar DataViewPrototype = $DataView && $DataView[PROTOTYPE];\\nvar ObjectPrototype = Object.prototype;\\nvar Array = global.Array;\\nvar RangeError = global.RangeError;\\nvar fill = uncurryThis(arrayFill);\\nvar reverse = uncurryThis([].reverse);\\n\\nvar packIEEE754 = IEEE754.pack;\\nvar unpackIEEE754 = IEEE754.unpack;\\n\\nvar packInt8 = function (number) {\\n return [number & 0xFF];\\n};\\n\\nvar packInt16 = function (number) {\\n return [number & 0xFF, number >> 8 & 0xFF];\\n};\\n\\nvar packInt32 = function (number) {\\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\\n};\\n\\nvar unpackInt32 = function (buffer) {\\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\\n};\\n\\nvar packFloat32 = function (number) {\\n return packIEEE754(number, 23, 4);\\n};\\n\\nvar packFloat64 = function (number) {\\n return packIEEE754(number, 52, 8);\\n};\\n\\nvar addGetter = function (Constructor, key, getInternalState) {\\n defineBuiltInAccessor(Constructor[PROTOTYPE], key, {\\n configurable: true,\\n get: function () {\\n return getInternalState(this)[key];\\n }\\n });\\n};\\n\\nvar get = function (view, count, index, isLittleEndian) {\\n var store = getInternalDataViewState(view);\\n var intIndex = toIndex(index);\\n var boolIsLittleEndian = !!isLittleEndian;\\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\\n var bytes = store.bytes;\\n var start = intIndex + store.byteOffset;\\n var pack = arraySlice(bytes, start, start + count);\\n return boolIsLittleEndian ? pack : reverse(pack);\\n};\\n\\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\\n var store = getInternalDataViewState(view);\\n var intIndex = toIndex(index);\\n var pack = conversion(+value);\\n var boolIsLittleEndian = !!isLittleEndian;\\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\\n var bytes = store.bytes;\\n var start = intIndex + store.byteOffset;\\n for (var i = 0; i < count; i++) bytes[start + i] = pack[boolIsLittleEndian ? i : count - i - 1];\\n};\\n\\nif (!NATIVE_ARRAY_BUFFER) {\\n $ArrayBuffer = function ArrayBuffer(length) {\\n anInstance(this, ArrayBufferPrototype);\\n var byteLength = toIndex(length);\\n setInternalState(this, {\\n type: ARRAY_BUFFER,\\n bytes: fill(Array(byteLength), 0),\\n byteLength: byteLength\\n });\\n if (!DESCRIPTORS) {\\n this.byteLength = byteLength;\\n this.detached = false;\\n }\\n };\\n\\n ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];\\n\\n $DataView = function DataView(buffer, byteOffset, byteLength) {\\n anInstance(this, DataViewPrototype);\\n anInstance(buffer, ArrayBufferPrototype);\\n var bufferState = getInternalArrayBufferState(buffer);\\n var bufferLength = bufferState.byteLength;\\n var offset = toIntegerOrInfinity(byteOffset);\\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\\n setInternalState(this, {\\n type: DATA_VIEW,\\n buffer: buffer,\\n byteLength: byteLength,\\n byteOffset: offset,\\n bytes: bufferState.bytes\\n });\\n if (!DESCRIPTORS) {\\n this.buffer = buffer;\\n this.byteLength = byteLength;\\n this.byteOffset = offset;\\n }\\n };\\n\\n DataViewPrototype = $DataView[PROTOTYPE];\\n\\n if (DESCRIPTORS) {\\n addGetter($ArrayBuffer, 'byteLength', getInternalArrayBufferState);\\n addGetter($DataView, 'buffer', getInternalDataViewState);\\n addGetter($DataView, 'byteLength', getInternalDataViewState);\\n addGetter($DataView, 'byteOffset', getInternalDataViewState);\\n }\\n\\n defineBuiltIns(DataViewPrototype, {\\n getInt8: function getInt8(byteOffset) {\\n return get(this, 1, byteOffset)[0] << 24 >> 24;\\n },\\n getUint8: function getUint8(byteOffset) {\\n return get(this, 1, byteOffset)[0];\\n },\\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\\n },\\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : false);\\n return bytes[1] << 8 | bytes[0];\\n },\\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false));\\n },\\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false)) >>> 0;\\n },\\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : false), 23);\\n },\\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : false), 52);\\n },\\n setInt8: function setInt8(byteOffset, value) {\\n set(this, 1, byteOffset, packInt8, value);\\n },\\n setUint8: function setUint8(byteOffset, value) {\\n set(this, 1, byteOffset, packInt8, value);\\n },\\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : false);\\n },\\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : false);\\n }\\n });\\n} else {\\n var INCORRECT_ARRAY_BUFFER_NAME = PROPER_FUNCTION_NAME && NativeArrayBuffer.name !== ARRAY_BUFFER;\\n /* eslint-disable no-new -- required for testing */\\n if (!fails(function () {\\n NativeArrayBuffer(1);\\n }) || !fails(function () {\\n new NativeArrayBuffer(-1);\\n }) || fails(function () {\\n new NativeArrayBuffer();\\n new NativeArrayBuffer(1.5);\\n new NativeArrayBuffer(NaN);\\n return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;\\n })) {\\n /* eslint-enable no-new -- required for testing */\\n $ArrayBuffer = function ArrayBuffer(length) {\\n anInstance(this, ArrayBufferPrototype);\\n return new NativeArrayBuffer(toIndex(length));\\n };\\n\\n $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;\\n\\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\\n if (!((key = keys[j++]) in $ArrayBuffer)) {\\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\\n }\\n }\\n\\n ArrayBufferPrototype.constructor = $ArrayBuffer;\\n } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {\\n createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);\\n }\\n\\n // WebKit bug - the same parent prototype for typed arrays and data view\\n if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {\\n setPrototypeOf(DataViewPrototype, ObjectPrototype);\\n }\\n\\n // iOS Safari 7.x bug\\n var testView = new $DataView(new $ArrayBuffer(2));\\n var $setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n testView.setInt8(0, 2147483648);\\n testView.setInt8(1, 2147483649);\\n if (testView.getInt8(0) || !testView.getInt8(1)) defineBuiltIns(DataViewPrototype, {\\n setInt8: function setInt8(byteOffset, value) {\\n $setInt8(this, byteOffset, value << 24 >> 24);\\n },\\n setUint8: function setUint8(byteOffset, value) {\\n $setInt8(this, byteOffset, value << 24 >> 24);\\n }\\n }, { unsafe: true });\\n}\\n\\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\\nsetToStringTag($DataView, DATA_VIEW);\\n\\nmodule.exports = {\\n ArrayBuffer: $ArrayBuffer,\\n DataView: $DataView\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-buffer.js?")}),"./node_modules/core-js/internals/array-fill.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.fill\` method implementation\\n// https://tc39.es/ecma262/#sec-array.prototype.fill\\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\\n var O = toObject(this);\\n var length = lengthOfArrayLike(O);\\n var argumentsLength = arguments.length;\\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\\n var end = argumentsLength > 2 ? arguments[2] : undefined;\\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\\n while (endPos > index) O[index++] = value;\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-fill.js?")}),"./node_modules/core-js/internals/array-from-constructor-and-list.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\nmodule.exports = function (Constructor, list) {\\n var index = 0;\\n var length = lengthOfArrayLike(list);\\n var result = new Constructor(length);\\n while (length > index) result[index] = list[index++];\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from-constructor-and-list.js?")}),"./node_modules/core-js/internals/array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \\"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\n\\nvar $Array = Array;\\n\\n// \`Array.from\` method implementation\\n// https://tc39.es/ecma262/#sec-array.from\\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\\n var O = toObject(arrayLike);\\n var IS_CONSTRUCTOR = isConstructor(this);\\n var argumentsLength = arguments.length;\\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\\n var mapping = mapfn !== undefined;\\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\\n var iteratorMethod = getIteratorMethod(O);\\n var index = 0;\\n var length, result, step, iterator, next, value;\\n // if the target is not iterable or it's an array with the default iterator - use a simple case\\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\\n iterator = getIterator(O, iteratorMethod);\\n next = iterator.next;\\n result = IS_CONSTRUCTOR ? new this() : [];\\n for (;!(step = call(next, iterator)).done; index++) {\\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\\n createProperty(result, index, value);\\n }\\n } else {\\n length = lengthOfArrayLike(O);\\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\\n for (;length > index; index++) {\\n value = mapping ? mapfn(O[index], index) : O[index];\\n createProperty(result, index, value);\\n }\\n }\\n result.length = index;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-from.js?")}),"./node_modules/core-js/internals/array-includes.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.{ indexOf, includes }\` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n return function ($this, el, fromIndex) {\\n var O = toIndexedObject($this);\\n var length = lengthOfArrayLike(O);\\n var index = toAbsoluteIndex(fromIndex, length);\\n var value;\\n // Array#includes uses SameValueZero equality algorithm\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (IS_INCLUDES && el != el) while (length > index) {\\n value = O[index++];\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (value != value) return true;\\n // Array#indexOf ignores holes, Array#includes - not\\n } else for (;length > index; index++) {\\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n } return !IS_INCLUDES && -1;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.includes\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.includes\\n includes: createMethod(true),\\n // \`Array.prototype.indexOf\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\\n indexOf: createMethod(false)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-includes.js?")}),"./node_modules/core-js/internals/array-iteration-from-last.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// \`Array.prototype.{ findLast, findLastIndex }\` methods implementation\\nvar createMethod = function (TYPE) {\\n var IS_FIND_LAST_INDEX = TYPE == 1;\\n return function ($this, callbackfn, that) {\\n var O = toObject($this);\\n var self = IndexedObject(O);\\n var boundFunction = bind(callbackfn, that);\\n var index = lengthOfArrayLike(self);\\n var value, result;\\n while (index-- > 0) {\\n value = self[index];\\n result = boundFunction(value, index, O);\\n if (result) switch (TYPE) {\\n case 0: return value; // findLast\\n case 1: return index; // findLastIndex\\n }\\n }\\n return IS_FIND_LAST_INDEX ? -1 : undefined;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.findLast\` method\\n // https://github.com/tc39/proposal-array-find-from-last\\n findLast: createMethod(0),\\n // \`Array.prototype.findLastIndex\` method\\n // https://github.com/tc39/proposal-array-find-from-last\\n findLastIndex: createMethod(1)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration-from-last.js?")}),"./node_modules/core-js/internals/array-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \\"./node_modules/core-js/internals/array-species-create.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\n// \`Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }\` methods implementation\\nvar createMethod = function (TYPE) {\\n var IS_MAP = TYPE == 1;\\n var IS_FILTER = TYPE == 2;\\n var IS_SOME = TYPE == 3;\\n var IS_EVERY = TYPE == 4;\\n var IS_FIND_INDEX = TYPE == 6;\\n var IS_FILTER_REJECT = TYPE == 7;\\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\\n return function ($this, callbackfn, that, specificCreate) {\\n var O = toObject($this);\\n var self = IndexedObject(O);\\n var boundFunction = bind(callbackfn, that);\\n var length = lengthOfArrayLike(self);\\n var index = 0;\\n var create = specificCreate || arraySpeciesCreate;\\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\\n var value, result;\\n for (;length > index; index++) if (NO_HOLES || index in self) {\\n value = self[index];\\n result = boundFunction(value, index, O);\\n if (TYPE) {\\n if (IS_MAP) target[index] = result; // map\\n else if (result) switch (TYPE) {\\n case 3: return true; // some\\n case 5: return value; // find\\n case 6: return index; // findIndex\\n case 2: push(target, value); // filter\\n } else switch (TYPE) {\\n case 4: return false; // every\\n case 7: push(target, value); // filterReject\\n }\\n }\\n }\\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\\n };\\n};\\n\\nmodule.exports = {\\n // \`Array.prototype.forEach\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\\n forEach: createMethod(0),\\n // \`Array.prototype.map\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.map\\n map: createMethod(1),\\n // \`Array.prototype.filter\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.filter\\n filter: createMethod(2),\\n // \`Array.prototype.some\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.some\\n some: createMethod(3),\\n // \`Array.prototype.every\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.every\\n every: createMethod(4),\\n // \`Array.prototype.find\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.find\\n find: createMethod(5),\\n // \`Array.prototype.findIndex\` method\\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\\n findIndex: createMethod(6),\\n // \`Array.prototype.filterReject\` method\\n // https://github.com/tc39/proposal-array-filtering\\n filterReject: createMethod(7)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-iteration.js?")}),"./node_modules/core-js/internals/array-method-is-strict.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = function (METHOD_NAME, argument) {\\n var method = [][METHOD_NAME];\\n return !!method && fails(function () {\\n // eslint-disable-next-line no-useless-call -- required for testing\\n method.call(null, argument || function () { return 1; }, 1);\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-method-is-strict.js?")}),"./node_modules/core-js/internals/array-set-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Safari < 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n // makes no sense without proper strict mode support\\n if (this !== undefined) return true;\\n try {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty([], 'length', { writable: false }).length = 1;\\n } catch (error) {\\n return error instanceof TypeError;\\n }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n throw $TypeError('Cannot set read only .length');\\n } return O.length = length;\\n} : function (O, length) {\\n return O.length = length;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-set-length.js?")}),"./node_modules/core-js/internals/array-slice-simple.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\n\\nvar $Array = Array;\\nvar max = Math.max;\\n\\nmodule.exports = function (O, start, end) {\\n var length = lengthOfArrayLike(O);\\n var k = toAbsoluteIndex(start, length);\\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\\n var result = $Array(max(fin - k, 0));\\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\\n result.length = n;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice-simple.js?")}),"./node_modules/core-js/internals/array-slice.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = uncurryThis([].slice);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-slice.js?")}),"./node_modules/core-js/internals/array-sort.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\n\\nvar floor = Math.floor;\\n\\nvar mergeSort = function (array, comparefn) {\\n var length = array.length;\\n var middle = floor(length / 2);\\n return length < 8 ? insertionSort(array, comparefn) : merge(\\n array,\\n mergeSort(arraySlice(array, 0, middle), comparefn),\\n mergeSort(arraySlice(array, middle), comparefn),\\n comparefn\\n );\\n};\\n\\nvar insertionSort = function (array, comparefn) {\\n var length = array.length;\\n var i = 1;\\n var element, j;\\n\\n while (i < length) {\\n j = i;\\n element = array[i];\\n while (j && comparefn(array[j - 1], element) > 0) {\\n array[j] = array[--j];\\n }\\n if (j !== i++) array[j] = element;\\n } return array;\\n};\\n\\nvar merge = function (array, left, right, comparefn) {\\n var llength = left.length;\\n var rlength = right.length;\\n var lindex = 0;\\n var rindex = 0;\\n\\n while (lindex < llength || rindex < rlength) {\\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\\n : lindex < llength ? left[lindex++] : right[rindex++];\\n } return array;\\n};\\n\\nmodule.exports = mergeSort;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-sort.js?")}),"./node_modules/core-js/internals/array-species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\nvar $Array = Array;\\n\\n// a part of \`ArraySpeciesCreate\` abstract operation\\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\\nmodule.exports = function (originalArray) {\\n var C;\\n if (isArray(originalArray)) {\\n C = originalArray.constructor;\\n // cross-realm fallback\\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\\n else if (isObject(C)) {\\n C = C[SPECIES];\\n if (C === null) C = undefined;\\n }\\n } return C === undefined ? $Array : C;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-constructor.js?")}),"./node_modules/core-js/internals/array-species-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ \\"./node_modules/core-js/internals/array-species-constructor.js\\");\\n\\n// \`ArraySpeciesCreate\` abstract operation\\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\\nmodule.exports = function (originalArray, length) {\\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-species-create.js?")}),"./node_modules/core-js/internals/array-to-reversed.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\n\\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\\nmodule.exports = function (O, C) {\\n var len = lengthOfArrayLike(O);\\n var A = new C(len);\\n var k = 0;\\n for (; k < len; k++) A[k] = O[len - k - 1];\\n return A;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-to-reversed.js?")}),"./node_modules/core-js/internals/array-with.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\\nmodule.exports = function (O, C, index, value) {\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\\n if (actualIndex >= len || actualIndex < 0) throw $RangeError('Incorrect index');\\n var A = new C(len);\\n var k = 0;\\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\\n return A;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/array-with.js?")}),"./node_modules/core-js/internals/call-with-safe-iteration-closing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \\"./node_modules/core-js/internals/iterator-close.js\\");\\n\\n// call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n try {\\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n } catch (error) {\\n iteratorClose(iterator, 'throw', error);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/call-with-safe-iteration-closing.js?")}),"./node_modules/core-js/internals/check-correctness-of-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar SAFE_CLOSING = false;\\n\\ntry {\\n var called = 0;\\n var iteratorWithReturn = {\\n next: function () {\\n return { done: !!called++ };\\n },\\n 'return': function () {\\n SAFE_CLOSING = true;\\n }\\n };\\n iteratorWithReturn[ITERATOR] = function () {\\n return this;\\n };\\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\\n Array.from(iteratorWithReturn, function () { throw 2; });\\n} catch (error) { /* empty */ }\\n\\nmodule.exports = function (exec, SKIP_CLOSING) {\\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\\n var ITERATION_SUPPORT = false;\\n try {\\n var object = {};\\n object[ITERATOR] = function () {\\n return {\\n next: function () {\\n return { done: ITERATION_SUPPORT = true };\\n }\\n };\\n };\\n exec(object);\\n } catch (error) { /* empty */ }\\n return ITERATION_SUPPORT;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/check-correctness-of-iteration.js?")}),"./node_modules/core-js/internals/classof-raw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n return stringSlice(toString(it), 8, -1);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof-raw.js?")}),"./node_modules/core-js/internals/classof.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ \\"./node_modules/core-js/internals/to-string-tag-support.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n// ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\\n\\n// fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n try {\\n return it[key];\\n } catch (error) { /* empty */ }\\n};\\n\\n// getting tag from ES6+ \`Object.prototype.toString\`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n var O, tag, result;\\n return it === undefined ? 'Undefined' : it === null ? 'Null'\\n // @@toStringTag case\\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n // builtinTag case\\n : CORRECT_ARGUMENTS ? classofRaw(O)\\n // ES3 arguments fallback\\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/classof.js?")}),"./node_modules/core-js/internals/collection-weak.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar getWeakData = (__webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\").getWeakData);\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar ArrayIterationModule = __webpack_require__(/*! ../internals/array-iteration */ \\"./node_modules/core-js/internals/array-iteration.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar setInternalState = InternalStateModule.set;\\nvar internalStateGetterFor = InternalStateModule.getterFor;\\nvar find = ArrayIterationModule.find;\\nvar findIndex = ArrayIterationModule.findIndex;\\nvar splice = uncurryThis([].splice);\\nvar id = 0;\\n\\n// fallback for uncaught frozen keys\\nvar uncaughtFrozenStore = function (state) {\\n return state.frozen || (state.frozen = new UncaughtFrozenStore());\\n};\\n\\nvar UncaughtFrozenStore = function () {\\n this.entries = [];\\n};\\n\\nvar findUncaughtFrozen = function (store, key) {\\n return find(store.entries, function (it) {\\n return it[0] === key;\\n });\\n};\\n\\nUncaughtFrozenStore.prototype = {\\n get: function (key) {\\n var entry = findUncaughtFrozen(this, key);\\n if (entry) return entry[1];\\n },\\n has: function (key) {\\n return !!findUncaughtFrozen(this, key);\\n },\\n set: function (key, value) {\\n var entry = findUncaughtFrozen(this, key);\\n if (entry) entry[1] = value;\\n else this.entries.push([key, value]);\\n },\\n 'delete': function (key) {\\n var index = findIndex(this.entries, function (it) {\\n return it[0] === key;\\n });\\n if (~index) splice(this.entries, index, 1);\\n return !!~index;\\n }\\n};\\n\\nmodule.exports = {\\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\\n var Constructor = wrapper(function (that, iterable) {\\n anInstance(that, Prototype);\\n setInternalState(that, {\\n type: CONSTRUCTOR_NAME,\\n id: id++,\\n frozen: undefined\\n });\\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\\n });\\n\\n var Prototype = Constructor.prototype;\\n\\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\\n\\n var define = function (that, key, value) {\\n var state = getInternalState(that);\\n var data = getWeakData(anObject(key), true);\\n if (data === true) uncaughtFrozenStore(state).set(key, value);\\n else data[state.id] = value;\\n return that;\\n };\\n\\n defineBuiltIns(Prototype, {\\n // \`{ WeakMap, WeakSet }.prototype.delete(key)\` methods\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\\n 'delete': function (key) {\\n var state = getInternalState(this);\\n if (!isObject(key)) return false;\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\\n return data && hasOwn(data, state.id) && delete data[state.id];\\n },\\n // \`{ WeakMap, WeakSet }.prototype.has(key)\` methods\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\\n has: function has(key) {\\n var state = getInternalState(this);\\n if (!isObject(key)) return false;\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state).has(key);\\n return data && hasOwn(data, state.id);\\n }\\n });\\n\\n defineBuiltIns(Prototype, IS_MAP ? {\\n // \`WeakMap.prototype.get(key)\` method\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\\n get: function get(key) {\\n var state = getInternalState(this);\\n if (isObject(key)) {\\n var data = getWeakData(key);\\n if (data === true) return uncaughtFrozenStore(state).get(key);\\n return data ? data[state.id] : undefined;\\n }\\n },\\n // \`WeakMap.prototype.set(key, value)\` method\\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\\n set: function set(key, value) {\\n return define(this, key, value);\\n }\\n } : {\\n // \`WeakSet.prototype.add(value)\` method\\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\\n add: function add(value) {\\n return define(this, value, true);\\n }\\n });\\n\\n return Constructor;\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection-weak.js?")}),"./node_modules/core-js/internals/collection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\n\\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\\n var ADDER = IS_MAP ? 'set' : 'add';\\n var NativeConstructor = global[CONSTRUCTOR_NAME];\\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\\n var Constructor = NativeConstructor;\\n var exported = {};\\n\\n var fixMethod = function (KEY) {\\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\\n defineBuiltIn(NativePrototype, KEY,\\n KEY == 'add' ? function add(value) {\\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\\n return this;\\n } : KEY == 'delete' ? function (key) {\\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : KEY == 'get' ? function get(key) {\\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : KEY == 'has' ? function has(key) {\\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\\n } : function set(key, value) {\\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\\n return this;\\n }\\n );\\n };\\n\\n var REPLACE = isForced(\\n CONSTRUCTOR_NAME,\\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\\n new NativeConstructor().entries().next();\\n }))\\n );\\n\\n if (REPLACE) {\\n // create collection constructor\\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\\n InternalMetadataModule.enable();\\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\\n var instance = new Constructor();\\n // early implementations not supports chaining\\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\\n // most early implementations doesn't supports iterables, most modern - not close it correctly\\n // eslint-disable-next-line no-new -- required for testing\\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\\n // for early implementations -0 and +0 not the same\\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\\n // V8 ~ Chromium 42- fails only with 5+ elements\\n var $instance = new NativeConstructor();\\n var index = 5;\\n while (index--) $instance[ADDER](index, index);\\n return !$instance.has(-0);\\n });\\n\\n if (!ACCEPT_ITERABLES) {\\n Constructor = wrapper(function (dummy, iterable) {\\n anInstance(dummy, NativePrototype);\\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\\n if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\\n return that;\\n });\\n Constructor.prototype = NativePrototype;\\n NativePrototype.constructor = Constructor;\\n }\\n\\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\\n fixMethod('delete');\\n fixMethod('has');\\n IS_MAP && fixMethod('get');\\n }\\n\\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\\n\\n // weak collections should not contains .clear method\\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\\n }\\n\\n exported[CONSTRUCTOR_NAME] = Constructor;\\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\\n\\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\\n\\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\\n\\n return Constructor;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/collection.js?")}),"./node_modules/core-js/internals/copy-constructor-properties.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \\"./node_modules/core-js/internals/own-keys.js\\");\\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\n\\nmodule.exports = function (target, source, exceptions) {\\n var keys = ownKeys(source);\\n var defineProperty = definePropertyModule.f;\\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n for (var i = 0; i < keys.length; i++) {\\n var key = keys[i];\\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n }\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/copy-constructor-properties.js?")}),"./node_modules/core-js/internals/correct-is-regexp-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\n\\nmodule.exports = function (METHOD_NAME) {\\n var regexp = /./;\\n try {\\n '/./'[METHOD_NAME](regexp);\\n } catch (error1) {\\n try {\\n regexp[MATCH] = false;\\n return '/./'[METHOD_NAME](regexp);\\n } catch (error2) { /* empty */ }\\n } return false;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-is-regexp-logic.js?")}),"./node_modules/core-js/internals/correct-prototype-getter.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n function F() { /* empty */ }\\n F.prototype.constructor = null;\\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\\n return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/correct-prototype-getter.js?")}),"./node_modules/core-js/internals/create-iter-result-object.js":((module)=>{eval("\\n// \`CreateIterResultObject\` abstract operation\\n// https://tc39.es/ecma262/#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n return { value: value, done: done };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-iter-result-object.js?")}),"./node_modules/core-js/internals/create-non-enumerable-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n object[key] = value;\\n return object;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-non-enumerable-property.js?")}),"./node_modules/core-js/internals/create-property-descriptor.js":((module)=>{eval("\\nmodule.exports = function (bitmap, value) {\\n return {\\n enumerable: !(bitmap & 1),\\n configurable: !(bitmap & 2),\\n writable: !(bitmap & 4),\\n value: value\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property-descriptor.js?")}),"./node_modules/core-js/internals/create-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = function (object, key, value) {\\n var propertyKey = toPropertyKey(key);\\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\\n else object[propertyKey] = value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/create-property.js?")}),"./node_modules/core-js/internals/define-built-in-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \\"./node_modules/core-js/internals/make-built-in.js\\");\\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\n\\nmodule.exports = function (target, name, descriptor) {\\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n return defineProperty.f(target, name, descriptor);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in-accessor.js?")}),"./node_modules/core-js/internals/define-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ \\"./node_modules/core-js/internals/make-built-in.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\n\\nmodule.exports = function (O, key, value, options) {\\n if (!options) options = {};\\n var simple = options.enumerable;\\n var name = options.name !== undefined ? options.name : key;\\n if (isCallable(value)) makeBuiltIn(value, name, options);\\n if (options.global) {\\n if (simple) O[key] = value;\\n else defineGlobalProperty(key, value);\\n } else {\\n try {\\n if (!options.unsafe) delete O[key];\\n else if (O[key]) simple = true;\\n } catch (error) { /* empty */ }\\n if (simple) O[key] = value;\\n else definePropertyModule.f(O, key, {\\n value: value,\\n enumerable: false,\\n configurable: !options.nonConfigurable,\\n writable: !options.nonWritable\\n });\\n } return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-in.js?")}),"./node_modules/core-js/internals/define-built-ins.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nmodule.exports = function (target, src, options) {\\n for (var key in src) defineBuiltIn(target, key, src[key], options);\\n return target;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-built-ins.js?")}),"./node_modules/core-js/internals/define-global-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n try {\\n defineProperty(global, key, { value: value, configurable: true, writable: true });\\n } catch (error) {\\n global[key] = value;\\n } return value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/define-global-property.js?")}),"./node_modules/core-js/internals/delete-property-or-throw.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (O, P) {\\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/delete-property-or-throw.js?")}),"./node_modules/core-js/internals/descriptors.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/descriptors.js?")}),"./node_modules/core-js/internals/document-all.js":((module)=>{eval("\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\\n\\nmodule.exports = {\\n all: documentAll,\\n IS_HTMLDDA: IS_HTMLDDA\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-all.js?")}),"./node_modules/core-js/internals/document-create-element.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar document = global.document;\\n// typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n return EXISTS ? document.createElement(it) : {};\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/document-create-element.js?")}),"./node_modules/core-js/internals/does-not-exceed-safe-integer.js":((module)=>{eval("\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/does-not-exceed-safe-integer.js?")}),"./node_modules/core-js/internals/dom-exception-constants.js":((module)=>{eval("\\nmodule.exports = {\\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-exception-constants.js?")}),"./node_modules/core-js/internals/dom-iterables.js":((module)=>{eval("\\n// iterable DOM collections\\n// flag - \`iterable\` interface - 'entries', 'keys', 'values', 'forEach' methods\\nmodule.exports = {\\n CSSRuleList: 0,\\n CSSStyleDeclaration: 0,\\n CSSValueList: 0,\\n ClientRectList: 0,\\n DOMRectList: 0,\\n DOMStringList: 0,\\n DOMTokenList: 1,\\n DataTransferItemList: 0,\\n FileList: 0,\\n HTMLAllCollection: 0,\\n HTMLCollection: 0,\\n HTMLFormElement: 0,\\n HTMLSelectElement: 0,\\n MediaList: 0,\\n MimeTypeArray: 0,\\n NamedNodeMap: 0,\\n NodeList: 1,\\n PaintRequestList: 0,\\n Plugin: 0,\\n PluginArray: 0,\\n SVGLengthList: 0,\\n SVGNumberList: 0,\\n SVGPathSegList: 0,\\n SVGPointList: 0,\\n SVGStringList: 0,\\n SVGTransformList: 0,\\n SourceBufferList: 0,\\n StyleSheetList: 0,\\n TextTrackCueList: 0,\\n TextTrackList: 0,\\n TouchList: 0\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-iterables.js?")}),"./node_modules/core-js/internals/dom-token-list-prototype.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// in old WebKit versions, \`element.classList\` is not an instance of global \`DOMTokenList\`\\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\n\\nvar classList = documentCreateElement('span').classList;\\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\\n\\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/dom-token-list-prototype.js?")}),"./node_modules/core-js/internals/engine-ff-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar firefox = userAgent.match(/firefox\\\\/(\\\\d+)/i);\\n\\nmodule.exports = !!firefox && +firefox[1];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-ff-version.js?")}),"./node_modules/core-js/internals/engine-is-browser.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nmodule.exports = !IS_DENO && !IS_NODE\\n && typeof window == 'object'\\n && typeof document == 'object';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-browser.js?")}),"./node_modules/core-js/internals/engine-is-deno.js":((module)=>{eval("\\n/* global Deno -- Deno case */\\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-deno.js?")}),"./node_modules/core-js/internals/engine-is-ie-or-edge.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar UA = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /MSIE|Trident/.test(UA);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ie-or-edge.js?")}),"./node_modules/core-js/internals/engine-is-ios-pebble.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios-pebble.js?")}),"./node_modules/core-js/internals/engine-is-ios.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-ios.js?")}),"./node_modules/core-js/internals/engine-is-node.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-node.js?")}),"./node_modules/core-js/internals/engine-is-webos-webkit.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-is-webos-webkit.js?")}),"./node_modules/core-js/internals/engine-user-agent.js":((module)=>{eval("\\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-user-agent.js?")}),"./node_modules/core-js/internals/engine-v8-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar process = global.process;\\nvar Deno = global.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n match = v8.split('.');\\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\\n // but their correct versions are not interesting for us\\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n// BrowserFS NodeJS \`process\` polyfill incorrectly set \`.v8\` to \`0.0\`\\n// so check \`userAgent\` even if \`.v8\` exists, but 0\\nif (!version && userAgent) {\\n match = userAgent.match(/Edge\\\\/(\\\\d+)/);\\n if (!match || match[1] >= 74) {\\n match = userAgent.match(/Chrome\\\\/(\\\\d+)/);\\n if (match) version = +match[1];\\n }\\n}\\n\\nmodule.exports = version;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-v8-version.js?")}),"./node_modules/core-js/internals/engine-webkit-version.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ \\"./node_modules/core-js/internals/engine-user-agent.js\\");\\n\\nvar webkit = userAgent.match(/AppleWebKit\\\\/(\\\\d+)\\\\./);\\n\\nmodule.exports = !!webkit && +webkit[1];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/engine-webkit-version.js?")}),"./node_modules/core-js/internals/enum-bug-keys.js":((module)=>{eval("\\n// IE8- don't enum bug keys\\nmodule.exports = [\\n 'constructor',\\n 'hasOwnProperty',\\n 'isPrototypeOf',\\n 'propertyIsEnumerable',\\n 'toLocaleString',\\n 'toString',\\n 'valueOf'\\n];\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/enum-bug-keys.js?")}),"./node_modules/core-js/internals/error-stack-clear.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar $Error = Error;\\nvar replace = uncurryThis(''.replace);\\n\\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\\\n\\\\s*at [^:]*:[^\\\\n]*/;\\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\\n\\nmodule.exports = function (stack, dropEntries) {\\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\\n } return stack;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-clear.js?")}),"./node_modules/core-js/internals/error-stack-install.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \\"./node_modules/core-js/internals/error-stack-installable.js\\");\\n\\n// non-standard V8\\nvar captureStackTrace = Error.captureStackTrace;\\n\\nmodule.exports = function (error, C, stack, dropEntries) {\\n if (ERROR_STACK_INSTALLABLE) {\\n if (captureStackTrace) captureStackTrace(error, C);\\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-install.js?")}),"./node_modules/core-js/internals/error-stack-installable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\n\\nmodule.exports = !fails(function () {\\n var error = Error('a');\\n if (!('stack' in error)) return true;\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\\n return error.stack !== 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-stack-installable.js?")}),"./node_modules/core-js/internals/error-to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\n\\nvar nativeErrorToString = Error.prototype.toString;\\n\\nvar INCORRECT_TO_STRING = fails(function () {\\n if (DESCRIPTORS) {\\n // Chrome 32- incorrectly call accessor\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n var object = create(Object.defineProperty({}, 'name', { get: function () {\\n return this === object;\\n } }));\\n if (nativeErrorToString.call(object) !== 'true') return true;\\n }\\n // FF10- does not properly handle non-strings\\n return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\\n // IE8 does not properly handle defaults\\n || nativeErrorToString.call({}) !== 'Error';\\n});\\n\\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\\n var O = anObject(this);\\n var name = normalizeStringArgument(O.name, 'Error');\\n var message = normalizeStringArgument(O.message);\\n return !name ? message : !message ? name : name + ': ' + message;\\n} : nativeErrorToString;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/error-to-string.js?")}),"./node_modules/core-js/internals/export.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\n\\n/*\\n options.target - name of the target object\\n options.global - target is the global object\\n options.stat - export as static methods of target\\n options.proto - export as prototype methods of target\\n options.real - real prototype method for the \`pure\` version\\n options.forced - export even if the native feature is available\\n options.bind - bind methods to the target, required for the \`pure\` version\\n options.wrap - wrap constructors to preventing global pollution, required for the \`pure\` version\\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\\n options.sham - add a flag to not completely full polyfills\\n options.enumerable - export as enumerable property\\n options.dontCallGetSet - prevent calling a getter on target\\n options.name - the .name of the function if it does not match the key\\n*/\\nmodule.exports = function (options, source) {\\n var TARGET = options.target;\\n var GLOBAL = options.global;\\n var STATIC = options.stat;\\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n if (GLOBAL) {\\n target = global;\\n } else if (STATIC) {\\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\\n } else {\\n target = (global[TARGET] || {}).prototype;\\n }\\n if (target) for (key in source) {\\n sourceProperty = source[key];\\n if (options.dontCallGetSet) {\\n descriptor = getOwnPropertyDescriptor(target, key);\\n targetProperty = descriptor && descriptor.value;\\n } else targetProperty = target[key];\\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n // contained in target\\n if (!FORCED && targetProperty !== undefined) {\\n if (typeof sourceProperty == typeof targetProperty) continue;\\n copyConstructorProperties(sourceProperty, targetProperty);\\n }\\n // add a flag to not completely full polyfills\\n if (options.sham || (targetProperty && targetProperty.sham)) {\\n createNonEnumerableProperty(sourceProperty, 'sham', true);\\n }\\n defineBuiltIn(target, key, sourceProperty, options);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/export.js?")}),"./node_modules/core-js/internals/fails.js":((module)=>{eval("\\nmodule.exports = function (exec) {\\n try {\\n return !!exec();\\n } catch (error) {\\n return true;\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fails.js?")}),"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove from \`core-js@4\` since it's moved to entry points\\n__webpack_require__(/*! ../modules/es.regexp.exec */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\nvar RegExpPrototype = RegExp.prototype;\\n\\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\\n var SYMBOL = wellKnownSymbol(KEY);\\n\\n var DELEGATES_TO_SYMBOL = !fails(function () {\\n // String methods call symbol-named RegEp methods\\n var O = {};\\n O[SYMBOL] = function () { return 7; };\\n return ''[KEY](O) != 7;\\n });\\n\\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\\n // Symbol-named RegExp methods call .exec\\n var execCalled = false;\\n var re = /a/;\\n\\n if (KEY === 'split') {\\n // We can't use real regex here since it causes deoptimization\\n // and serious performance degradation in V8\\n // https://github.com/zloirock/core-js/issues/306\\n re = {};\\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\\n // a new one. We need to return the patched regex when creating the new one.\\n re.constructor = {};\\n re.constructor[SPECIES] = function () { return re; };\\n re.flags = '';\\n re[SYMBOL] = /./[SYMBOL];\\n }\\n\\n re.exec = function () { execCalled = true; return null; };\\n\\n re[SYMBOL]('');\\n return !execCalled;\\n });\\n\\n if (\\n !DELEGATES_TO_SYMBOL ||\\n !DELEGATES_TO_EXEC ||\\n FORCED\\n ) {\\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\\n var $exec = regexp.exec;\\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\\n // The native String method already delegates to @@method (this\\n // polyfilled function), leasing to infinite recursion.\\n // We avoid it by directly calling the native @@method method.\\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\\n }\\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\\n }\\n return { done: false };\\n });\\n\\n defineBuiltIn(String.prototype, KEY, methods[0]);\\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\\n }\\n\\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js?")}),"./node_modules/core-js/internals/flatten-into-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \\"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\n\\n// \`FlattenIntoArray\` abstract operation\\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\\n var targetIndex = start;\\n var sourceIndex = 0;\\n var mapFn = mapper ? bind(mapper, thisArg) : false;\\n var element, elementLen;\\n\\n while (sourceIndex < sourceLen) {\\n if (sourceIndex in source) {\\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\\n\\n if (depth > 0 && isArray(element)) {\\n elementLen = lengthOfArrayLike(element);\\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\\n } else {\\n doesNotExceedSafeInteger(targetIndex + 1);\\n target[targetIndex] = element;\\n }\\n\\n targetIndex++;\\n }\\n sourceIndex++;\\n }\\n return targetIndex;\\n};\\n\\nmodule.exports = flattenIntoArray;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/flatten-into-array.js?")}),"./node_modules/core-js/internals/freezing.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\\n return Object.isExtensible(Object.preventExtensions({}));\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/freezing.js?")}),"./node_modules/core-js/internals/function-apply.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\nvar apply = FunctionPrototype.apply;\\nvar call = FunctionPrototype.call;\\n\\n// eslint-disable-next-line es/no-reflect -- safe\\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\\n return call.apply(apply, arguments);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-apply.js?")}),"./node_modules/core-js/internals/function-bind-context.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n// optional / simple context binding\\nmodule.exports = function (fn, that) {\\n aCallable(fn);\\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\\n return fn.apply(that, arguments);\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-context.js?")}),"./node_modules/core-js/internals/function-bind-native.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\\n var test = (function () { /* empty */ }).bind();\\n // eslint-disable-next-line no-prototype-builtins -- safe\\n return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-bind-native.js?")}),"./node_modules/core-js/internals/function-call.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar call = Function.prototype.call;\\n\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n return call.apply(call, arguments);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-call.js?")}),"./node_modules/core-js/internals/function-name.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n// additional protection from minified / mangled / dropped function names\\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n EXISTS: EXISTS,\\n PROPER: PROPER,\\n CONFIGURABLE: CONFIGURABLE\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-name.js?")}),"./node_modules/core-js/internals/function-uncurry-this-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\n\\nmodule.exports = function (object, key, method) {\\n try {\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-accessor.js?")}),"./node_modules/core-js/internals/function-uncurry-this-clause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = function (fn) {\\n // Nashorn bug:\\n // https://github.com/zloirock/core-js/issues/1128\\n // https://github.com/zloirock/core-js/issues/1130\\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this-clause.js?")}),"./node_modules/core-js/internals/function-uncurry-this.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ \\"./node_modules/core-js/internals/function-bind-native.js\\");\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n return function () {\\n return call.apply(fn, arguments);\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/function-uncurry-this.js?")}),"./node_modules/core-js/internals/get-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar aFunction = function (argument) {\\n return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-built-in.js?")}),"./node_modules/core-js/internals/get-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n || getMethod(it, '@@iterator')\\n || Iterators[classof(it)];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator-method.js?")}),"./node_modules/core-js/internals/get-iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n throw $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-iterator.js?")}),"./node_modules/core-js/internals/get-json-replacer-function.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \\"./node_modules/core-js/internals/is-array.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (replacer) {\\n if (isCallable(replacer)) return replacer;\\n if (!isArray(replacer)) return;\\n var rawLength = replacer.length;\\n var keys = [];\\n for (var i = 0; i < rawLength; i++) {\\n var element = replacer[i];\\n if (typeof element == 'string') push(keys, element);\\n else if (typeof element == 'number' || classof(element) == 'Number' || classof(element) == 'String') push(keys, toString(element));\\n }\\n var keysLength = keys.length;\\n var root = true;\\n return function (key, value) {\\n if (root) {\\n root = false;\\n return value;\\n }\\n if (isArray(this)) return value;\\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\\n };\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-json-replacer-function.js?")}),"./node_modules/core-js/internals/get-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\n\\n// \`GetMethod\` abstract operation\\n// https://tc39.es/ecma262/#sec-getmethod\\nmodule.exports = function (V, P) {\\n var func = V[P];\\n return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-method.js?")}),"./node_modules/core-js/internals/get-substitution.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\n\\nvar floor = Math.floor;\\nvar charAt = uncurryThis(''.charAt);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\n// eslint-disable-next-line redos/no-vulnerable -- safe\\nvar SUBSTITUTION_SYMBOLS = /\\\\$([$&'\`]|\\\\d{1,2}|<[^>]*>)/g;\\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\\\$([$&'\`]|\\\\d{1,2})/g;\\n\\n// \`GetSubstitution\` abstract operation\\n// https://tc39.es/ecma262/#sec-getsubstitution\\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\\n var tailPos = position + matched.length;\\n var m = captures.length;\\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\\n if (namedCaptures !== undefined) {\\n namedCaptures = toObject(namedCaptures);\\n symbols = SUBSTITUTION_SYMBOLS;\\n }\\n return replace(replacement, symbols, function (match, ch) {\\n var capture;\\n switch (charAt(ch, 0)) {\\n case '$': return '$';\\n case '&': return matched;\\n case '\`': return stringSlice(str, 0, position);\\n case \\"'\\": return stringSlice(str, tailPos);\\n case '<':\\n capture = namedCaptures[stringSlice(ch, 1, -1)];\\n break;\\n default: // \\\\d\\\\d?\\n var n = +ch;\\n if (n === 0) return match;\\n if (n > m) {\\n var f = floor(n / 10);\\n if (f === 0) return match;\\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\\n return match;\\n }\\n capture = captures[n - 1];\\n }\\n return capture === undefined ? '' : capture;\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/get-substitution.js?")}),"./node_modules/core-js/internals/global.js":(function(module,__unused_webpack_exports,__webpack_require__){eval("\\nvar check = function (it) {\\n return it && it.Math == Math && it;\\n};\\n\\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\\nmodule.exports =\\n // eslint-disable-next-line es/no-global-this -- safe\\n check(typeof globalThis == 'object' && globalThis) ||\\n check(typeof window == 'object' && window) ||\\n // eslint-disable-next-line no-restricted-globals -- safe\\n check(typeof self == 'object' && self) ||\\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\\n // eslint-disable-next-line no-new-func -- fallback\\n (function () { return this; })() || this || Function('return this')();\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/global.js?")}),"./node_modules/core-js/internals/has-own-property.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n// \`HasOwnProperty\` abstract operation\\n// https://tc39.es/ecma262/#sec-hasownproperty\\n// eslint-disable-next-line es/no-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n return hasOwnProperty(toObject(it), key);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/has-own-property.js?")}),"./node_modules/core-js/internals/hidden-keys.js":((module)=>{eval("\\nmodule.exports = {};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/hidden-keys.js?")}),"./node_modules/core-js/internals/host-report-errors.js":((module)=>{eval("\\nmodule.exports = function (a, b) {\\n try {\\n // eslint-disable-next-line no-console -- safe\\n arguments.length == 1 ? console.error(a) : console.error(a, b);\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/host-report-errors.js?")}),"./node_modules/core-js/internals/html.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/html.js?")}),"./node_modules/core-js/internals/ie8-dom-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\n\\n// Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty(createElement('div'), 'a', {\\n get: function () { return 7; }\\n }).a != 7;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ie8-dom-define.js?")}),"./node_modules/core-js/internals/ieee754.js":((module)=>{eval("\\n// IEEE754 conversions based on https://github.com/feross/ieee754\\nvar $Array = Array;\\nvar abs = Math.abs;\\nvar pow = Math.pow;\\nvar floor = Math.floor;\\nvar log = Math.log;\\nvar LN2 = Math.LN2;\\n\\nvar pack = function (number, mantissaLength, bytes) {\\n var buffer = $Array(bytes);\\n var exponentLength = bytes * 8 - mantissaLength - 1;\\n var eMax = (1 << exponentLength) - 1;\\n var eBias = eMax >> 1;\\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\\n var index = 0;\\n var exponent, mantissa, c;\\n number = abs(number);\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (number != number || number === Infinity) {\\n // eslint-disable-next-line no-self-compare -- NaN check\\n mantissa = number != number ? 1 : 0;\\n exponent = eMax;\\n } else {\\n exponent = floor(log(number) / LN2);\\n c = pow(2, -exponent);\\n if (number * c < 1) {\\n exponent--;\\n c *= 2;\\n }\\n if (exponent + eBias >= 1) {\\n number += rt / c;\\n } else {\\n number += rt * pow(2, 1 - eBias);\\n }\\n if (number * c >= 2) {\\n exponent++;\\n c /= 2;\\n }\\n if (exponent + eBias >= eMax) {\\n mantissa = 0;\\n exponent = eMax;\\n } else if (exponent + eBias >= 1) {\\n mantissa = (number * c - 1) * pow(2, mantissaLength);\\n exponent = exponent + eBias;\\n } else {\\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\\n exponent = 0;\\n }\\n }\\n while (mantissaLength >= 8) {\\n buffer[index++] = mantissa & 255;\\n mantissa /= 256;\\n mantissaLength -= 8;\\n }\\n exponent = exponent << mantissaLength | mantissa;\\n exponentLength += mantissaLength;\\n while (exponentLength > 0) {\\n buffer[index++] = exponent & 255;\\n exponent /= 256;\\n exponentLength -= 8;\\n }\\n buffer[--index] |= sign * 128;\\n return buffer;\\n};\\n\\nvar unpack = function (buffer, mantissaLength) {\\n var bytes = buffer.length;\\n var exponentLength = bytes * 8 - mantissaLength - 1;\\n var eMax = (1 << exponentLength) - 1;\\n var eBias = eMax >> 1;\\n var nBits = exponentLength - 7;\\n var index = bytes - 1;\\n var sign = buffer[index--];\\n var exponent = sign & 127;\\n var mantissa;\\n sign >>= 7;\\n while (nBits > 0) {\\n exponent = exponent * 256 + buffer[index--];\\n nBits -= 8;\\n }\\n mantissa = exponent & (1 << -nBits) - 1;\\n exponent >>= -nBits;\\n nBits += mantissaLength;\\n while (nBits > 0) {\\n mantissa = mantissa * 256 + buffer[index--];\\n nBits -= 8;\\n }\\n if (exponent === 0) {\\n exponent = 1 - eBias;\\n } else if (exponent === eMax) {\\n return mantissa ? NaN : sign ? -Infinity : Infinity;\\n } else {\\n mantissa = mantissa + pow(2, mantissaLength);\\n exponent = exponent - eBias;\\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\\n};\\n\\nmodule.exports = {\\n pack: pack,\\n unpack: unpack\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ieee754.js?")}),"./node_modules/core-js/internals/indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\\n // eslint-disable-next-line no-prototype-builtins -- safe\\n return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n return classof(it) == 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/indexed-object.js?")}),"./node_modules/core-js/internals/inherit-if-required.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\n\\n// makes subclassing work correct for wrapped built-ins\\nmodule.exports = function ($this, dummy, Wrapper) {\\n var NewTarget, NewTargetPrototype;\\n if (\\n // it can work only with native \`setPrototypeOf\`\\n setPrototypeOf &&\\n // we haven't completely correct pre-ES6 way for getting \`new.target\`, so use this\\n isCallable(NewTarget = dummy.constructor) &&\\n NewTarget !== Wrapper &&\\n isObject(NewTargetPrototype = NewTarget.prototype) &&\\n NewTargetPrototype !== Wrapper.prototype\\n ) setPrototypeOf($this, NewTargetPrototype);\\n return $this;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inherit-if-required.js?")}),"./node_modules/core-js/internals/inspect-source.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar store = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n// this helper broken in \`core-js@3.4.1-3.4.4\`, so we can't use \`shared\` helper\\nif (!isCallable(store.inspectSource)) {\\n store.inspectSource = function (it) {\\n return functionToString(it);\\n };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/inspect-source.js?")}),"./node_modules/core-js/internals/install-error-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\n\\n// \`InstallErrorCause\` abstract operation\\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\\nmodule.exports = function (O, options) {\\n if (isObject(options) && 'cause' in options) {\\n createNonEnumerableProperty(O, 'cause', options.cause);\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/install-error-cause.js?")}),"./node_modules/core-js/internals/internal-metadata.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\");\\nvar getOwnPropertyNamesExternalModule = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \\"./node_modules/core-js/internals/object-get-own-property-names-external.js\\");\\nvar isExtensible = __webpack_require__(/*! ../internals/object-is-extensible */ \\"./node_modules/core-js/internals/object-is-extensible.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \\"./node_modules/core-js/internals/freezing.js\\");\\n\\nvar REQUIRED = false;\\nvar METADATA = uid('meta');\\nvar id = 0;\\n\\nvar setMetadata = function (it) {\\n defineProperty(it, METADATA, { value: {\\n objectID: 'O' + id++, // object ID\\n weakData: {} // weak collections IDs\\n } });\\n};\\n\\nvar fastKey = function (it, create) {\\n // return a primitive with prefix\\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\\n if (!hasOwn(it, METADATA)) {\\n // can't set metadata to uncaught frozen object\\n if (!isExtensible(it)) return 'F';\\n // not necessary to add metadata\\n if (!create) return 'E';\\n // add missing metadata\\n setMetadata(it);\\n // return object ID\\n } return it[METADATA].objectID;\\n};\\n\\nvar getWeakData = function (it, create) {\\n if (!hasOwn(it, METADATA)) {\\n // can't set metadata to uncaught frozen object\\n if (!isExtensible(it)) return true;\\n // not necessary to add metadata\\n if (!create) return false;\\n // add missing metadata\\n setMetadata(it);\\n // return the store of weak collections IDs\\n } return it[METADATA].weakData;\\n};\\n\\n// add metadata on freeze-family methods calling\\nvar onFreeze = function (it) {\\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\\n return it;\\n};\\n\\nvar enable = function () {\\n meta.enable = function () { /* empty */ };\\n REQUIRED = true;\\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\\n var splice = uncurryThis([].splice);\\n var test = {};\\n test[METADATA] = 1;\\n\\n // prevent exposing of metadata key\\n if (getOwnPropertyNames(test).length) {\\n getOwnPropertyNamesModule.f = function (it) {\\n var result = getOwnPropertyNames(it);\\n for (var i = 0, length = result.length; i < length; i++) {\\n if (result[i] === METADATA) {\\n splice(result, i, 1);\\n break;\\n }\\n } return result;\\n };\\n\\n $({ target: 'Object', stat: true, forced: true }, {\\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\\n });\\n }\\n};\\n\\nvar meta = module.exports = {\\n enable: enable,\\n fastKey: fastKey,\\n getWeakData: getWeakData,\\n onFreeze: onFreeze\\n};\\n\\nhiddenKeys[METADATA] = true;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-metadata.js?")}),"./node_modules/core-js/internals/internal-state.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \\"./node_modules/core-js/internals/weak-map-basic-detection.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = global.TypeError;\\nvar WeakMap = global.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n return function (it) {\\n var state;\\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\\n } return state;\\n };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n var store = shared.state || (shared.state = new WeakMap());\\n /* eslint-disable no-self-assign -- prototype methods protection */\\n store.get = store.get;\\n store.has = store.has;\\n store.set = store.set;\\n /* eslint-enable no-self-assign -- prototype methods protection */\\n set = function (it, metadata) {\\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\\n metadata.facade = it;\\n store.set(it, metadata);\\n return metadata;\\n };\\n get = function (it) {\\n return store.get(it) || {};\\n };\\n has = function (it) {\\n return store.has(it);\\n };\\n} else {\\n var STATE = sharedKey('state');\\n hiddenKeys[STATE] = true;\\n set = function (it, metadata) {\\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\\n metadata.facade = it;\\n createNonEnumerableProperty(it, STATE, metadata);\\n return metadata;\\n };\\n get = function (it) {\\n return hasOwn(it, STATE) ? it[STATE] : {};\\n };\\n has = function (it) {\\n return hasOwn(it, STATE);\\n };\\n}\\n\\nmodule.exports = {\\n set: set,\\n get: get,\\n has: has,\\n enforce: enforce,\\n getterFor: getterFor\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/internal-state.js?")}),"./node_modules/core-js/internals/is-array-iterator-method.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n// check on default Array iterator\\nmodule.exports = function (it) {\\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array-iterator-method.js?")}),"./node_modules/core-js/internals/is-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\n\\n// \`IsArray\` abstract operation\\n// https://tc39.es/ecma262/#sec-isarray\\n// eslint-disable-next-line es/no-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n return classof(argument) == 'Array';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-array.js?")}),"./node_modules/core-js/internals/is-big-int-array.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\n\\nmodule.exports = function (it) {\\n var klass = classof(it);\\n return klass == 'BigInt64Array' || klass == 'BigUint64Array';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-big-int-array.js?")}),"./node_modules/core-js/internals/is-callable.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \\"./node_modules/core-js/internals/document-all.js\\");\\n\\nvar documentAll = $documentAll.all;\\n\\n// \`IsCallable\` abstract operation\\n// https://tc39.es/ecma262/#sec-iscallable\\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\\n return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n return typeof argument == 'function';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-callable.js?")}),"./node_modules/core-js/internals/is-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\n\\nvar noop = function () { /* empty */ };\\nvar empty = [];\\nvar construct = getBuiltIn('Reflect', 'construct');\\nvar constructorRegExp = /^\\\\s*(?:class|function)\\\\b/;\\nvar exec = uncurryThis(constructorRegExp.exec);\\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\\n\\nvar isConstructorModern = function isConstructor(argument) {\\n if (!isCallable(argument)) return false;\\n try {\\n construct(noop, empty, argument);\\n return true;\\n } catch (error) {\\n return false;\\n }\\n};\\n\\nvar isConstructorLegacy = function isConstructor(argument) {\\n if (!isCallable(argument)) return false;\\n switch (classof(argument)) {\\n case 'AsyncFunction':\\n case 'GeneratorFunction':\\n case 'AsyncGeneratorFunction': return false;\\n }\\n try {\\n // we can't check .prototype since constructors produced by .bind haven't it\\n // \`Function#toString\` throws on some built-it function in some legacy engines\\n // (for example, \`DOMQuad\` and similar in FF41-)\\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\\n } catch (error) {\\n return true;\\n }\\n};\\n\\nisConstructorLegacy.sham = true;\\n\\n// \`IsConstructor\` abstract operation\\n// https://tc39.es/ecma262/#sec-isconstructor\\nmodule.exports = !construct || fails(function () {\\n var called;\\n return isConstructorModern(isConstructorModern.call)\\n || !isConstructorModern(Object)\\n || !isConstructorModern(function () { called = true; })\\n || called;\\n}) ? isConstructorLegacy : isConstructorModern;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-constructor.js?")}),"./node_modules/core-js/internals/is-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar replacement = /#|\\\\.prototype\\\\./;\\n\\nvar isForced = function (feature, detection) {\\n var value = data[normalize(feature)];\\n return value == POLYFILL ? true\\n : value == NATIVE ? false\\n : isCallable(detection) ? fails(detection)\\n : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-forced.js?")}),"./node_modules/core-js/internals/is-integral-number.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar floor = Math.floor;\\n\\n// \`IsIntegralNumber\` abstract operation\\n// https://tc39.es/ecma262/#sec-isintegralnumber\\n// eslint-disable-next-line es/no-number-isinteger -- safe\\nmodule.exports = Number.isInteger || function isInteger(it) {\\n return !isObject(it) && isFinite(it) && floor(it) === it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-integral-number.js?")}),"./node_modules/core-js/internals/is-null-or-undefined.js":((module)=>{eval("\\n// we can't use just \`it == null\` since of \`document.all\` special case\\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n return it === null || it === undefined;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-null-or-undefined.js?")}),"./node_modules/core-js/internals/is-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar $documentAll = __webpack_require__(/*! ../internals/document-all */ \\"./node_modules/core-js/internals/document-all.js\\");\\n\\nvar documentAll = $documentAll.all;\\n\\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\\n} : function (it) {\\n return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-object.js?")}),"./node_modules/core-js/internals/is-pure.js":((module)=>{eval("\\nmodule.exports = false;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-pure.js?")}),"./node_modules/core-js/internals/is-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\n\\n// \`IsRegExp\` abstract operation\\n// https://tc39.es/ecma262/#sec-isregexp\\nmodule.exports = function (it) {\\n var isRegExp;\\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-regexp.js?")}),"./node_modules/core-js/internals/is-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \\"./node_modules/core-js/internals/use-symbol-as-uid.js\\");\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n return typeof it == 'symbol';\\n} : function (it) {\\n var $Symbol = getBuiltIn('Symbol');\\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/is-symbol.js?")}),"./node_modules/core-js/internals/iterate.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar tryToString = __webpack_require__(/*! ../internals/try-to-string */ \\"./node_modules/core-js/internals/try-to-string.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ \\"./node_modules/core-js/internals/iterator-close.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n this.stopped = stopped;\\n this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n var that = options && options.that;\\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n var IS_RECORD = !!(options && options.IS_RECORD);\\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n var INTERRUPTED = !!(options && options.INTERRUPTED);\\n var fn = bind(unboundFunction, that);\\n var iterator, iterFn, index, length, result, next, step;\\n\\n var stop = function (condition) {\\n if (iterator) iteratorClose(iterator, 'normal', condition);\\n return new Result(true, condition);\\n };\\n\\n var callFn = function (value) {\\n if (AS_ENTRIES) {\\n anObject(value);\\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n } return INTERRUPTED ? fn(value, stop) : fn(value);\\n };\\n\\n if (IS_RECORD) {\\n iterator = iterable.iterator;\\n } else if (IS_ITERATOR) {\\n iterator = iterable;\\n } else {\\n iterFn = getIteratorMethod(iterable);\\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\\n // optimisation for array iterators\\n if (isArrayIteratorMethod(iterFn)) {\\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n result = callFn(iterable[index]);\\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n } return new Result(false);\\n }\\n iterator = getIterator(iterable, iterFn);\\n }\\n\\n next = IS_RECORD ? iterable.next : iterator.next;\\n while (!(step = call(next, iterator)).done) {\\n try {\\n result = callFn(step.value);\\n } catch (error) {\\n iteratorClose(iterator, 'throw', error);\\n }\\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n } return new Result(false);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterate.js?")}),"./node_modules/core-js/internals/iterator-close.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\n\\nmodule.exports = function (iterator, kind, value) {\\n var innerResult, innerError;\\n anObject(iterator);\\n try {\\n innerResult = getMethod(iterator, 'return');\\n if (!innerResult) {\\n if (kind === 'throw') throw value;\\n return value;\\n }\\n innerResult = call(innerResult, iterator);\\n } catch (error) {\\n innerError = true;\\n innerResult = error;\\n }\\n if (kind === 'throw') throw value;\\n if (innerError) throw innerResult;\\n anObject(innerResult);\\n return value;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-close.js?")}),"./node_modules/core-js/internals/iterator-create-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IteratorPrototype = (__webpack_require__(/*! ../internals/iterators-core */ \\"./node_modules/core-js/internals/iterators-core.js\\").IteratorPrototype);\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\n\\nvar returnThis = function () { return this; };\\n\\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\\n var TO_STRING_TAG = NAME + ' Iterator';\\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\\n Iterators[TO_STRING_TAG] = returnThis;\\n return IteratorConstructor;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-create-constructor.js?")}),"./node_modules/core-js/internals/iterator-define.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar FunctionName = __webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \\"./node_modules/core-js/internals/iterator-create-constructor.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \\"./node_modules/core-js/internals/iterators-core.js\\");\\n\\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar KEYS = 'keys';\\nvar VALUES = 'values';\\nvar ENTRIES = 'entries';\\n\\nvar returnThis = function () { return this; };\\n\\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\\n createIteratorConstructor(IteratorConstructor, NAME, next);\\n\\n var getIterationMethod = function (KIND) {\\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\\n switch (KIND) {\\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\\n } return function () { return new IteratorConstructor(this); };\\n };\\n\\n var TO_STRING_TAG = NAME + ' Iterator';\\n var INCORRECT_VALUES_NAME = false;\\n var IterablePrototype = Iterable.prototype;\\n var nativeIterator = IterablePrototype[ITERATOR]\\n || IterablePrototype['@@iterator']\\n || DEFAULT && IterablePrototype[DEFAULT];\\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\\n var CurrentIteratorPrototype, methods, KEY;\\n\\n // fix native\\n if (anyNativeIterator) {\\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\\n if (setPrototypeOf) {\\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\\n }\\n }\\n // Set @@toStringTag to native iterators\\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\\n }\\n }\\n\\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\\n } else {\\n INCORRECT_VALUES_NAME = true;\\n defaultIterator = function values() { return call(nativeIterator, this); };\\n }\\n }\\n\\n // export additional methods\\n if (DEFAULT) {\\n methods = {\\n values: getIterationMethod(VALUES),\\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\\n entries: getIterationMethod(ENTRIES)\\n };\\n if (FORCED) for (KEY in methods) {\\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\\n }\\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\\n }\\n\\n // define iterator\\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\\n }\\n Iterators[NAME] = defaultIterator;\\n\\n return methods;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterator-define.js?")}),"./node_modules/core-js/internals/iterators-core.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \\"./node_modules/core-js/internals/object-get-prototype-of.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n// \`%IteratorPrototype%\` object\\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n/* eslint-disable es/no-array-prototype-keys -- safe */\\nif ([].keys) {\\n arrayIterator = [].keys();\\n // Safari 8 has buggy iterators w/o \`next\`\\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n else {\\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n var test = {};\\n // FF44- legacy iterators case\\n return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n// \`%IteratorPrototype%[@@iterator]()\` method\\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n return this;\\n });\\n}\\n\\nmodule.exports = {\\n IteratorPrototype: IteratorPrototype,\\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators-core.js?")}),"./node_modules/core-js/internals/iterators.js":((module)=>{eval("\\nmodule.exports = {};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/iterators.js?")}),"./node_modules/core-js/internals/length-of-array-like.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\n\\n// \`LengthOfArrayLike\` abstract operation\\n// https://tc39.es/ecma262/#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n return toLength(obj.length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/length-of-array-like.js?")}),"./node_modules/core-js/internals/make-built-in.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").CONFIGURABLE);\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n name = '[' + replace($String(name), /^Symbol\\\\(([^)]*)\\\\)/, '$1') + ']';\\n }\\n if (options && options.getter) name = 'get ' + name;\\n if (options && options.setter) name = 'set ' + name;\\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n else value.name = name;\\n }\\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n defineProperty(value, 'length', { value: options.arity });\\n }\\n try {\\n if (options && hasOwn(options, 'constructor') && options.constructor) {\\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n // in V8 ~ Chrome 53, prototypes of some methods, like \`Array.prototype.values\`, are non-writable\\n } else if (value.prototype) value.prototype = undefined;\\n } catch (error) { /* empty */ }\\n var state = enforceInternalState(value);\\n if (!hasOwn(state, 'source')) {\\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n } return value;\\n};\\n\\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\\n// eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/make-built-in.js?")}),"./node_modules/core-js/internals/map-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// eslint-disable-next-line es/no-map -- safe\\nvar MapPrototype = Map.prototype;\\n\\nmodule.exports = {\\n // eslint-disable-next-line es/no-map -- safe\\n Map: Map,\\n set: uncurryThis(MapPrototype.set),\\n get: uncurryThis(MapPrototype.get),\\n has: uncurryThis(MapPrototype.has),\\n remove: uncurryThis(MapPrototype['delete']),\\n proto: MapPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/map-helpers.js?")}),"./node_modules/core-js/internals/math-trunc.js":((module)=>{eval("\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n// \`Math.trunc\` method\\n// https://tc39.es/ecma262/#sec-math.trunc\\n// eslint-disable-next-line es/no-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n var n = +x;\\n return (n > 0 ? floor : ceil)(n);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/math-trunc.js?")}),"./node_modules/core-js/internals/microtask.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar macrotask = (__webpack_require__(/*! ../internals/task */ \\"./node_modules/core-js/internals/task.js\\").set);\\nvar Queue = __webpack_require__(/*! ../internals/queue */ \\"./node_modules/core-js/internals/queue.js\\");\\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \\"./node_modules/core-js/internals/engine-is-ios.js\\");\\nvar IS_IOS_PEBBLE = __webpack_require__(/*! ../internals/engine-is-ios-pebble */ \\"./node_modules/core-js/internals/engine-is-ios-pebble.js\\");\\nvar IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ \\"./node_modules/core-js/internals/engine-is-webos-webkit.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\\nvar document = global.document;\\nvar process = global.process;\\nvar Promise = global.Promise;\\n// Node.js 11 shows ExperimentalWarning on getting \`queueMicrotask\`\\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\\nvar notify, toggle, node, promise, then;\\n\\n// modern engines have queueMicrotask method\\nif (!microtask) {\\n var queue = new Queue();\\n\\n var flush = function () {\\n var parent, fn;\\n if (IS_NODE && (parent = process.domain)) parent.exit();\\n while (fn = queue.get()) try {\\n fn();\\n } catch (error) {\\n if (queue.head) notify();\\n throw error;\\n }\\n if (parent) parent.enter();\\n };\\n\\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\\n toggle = true;\\n node = document.createTextNode('');\\n new MutationObserver(flush).observe(node, { characterData: true });\\n notify = function () {\\n node.data = toggle = !toggle;\\n };\\n // environments with maybe non-completely correct, but existent Promise\\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\\n // Promise.resolve without an argument throws an error in LG WebOS 2\\n promise = Promise.resolve(undefined);\\n // workaround of WebKit ~ iOS Safari 10.1 bug\\n promise.constructor = Promise;\\n then = bind(promise.then, promise);\\n notify = function () {\\n then(flush);\\n };\\n // Node.js without promises\\n } else if (IS_NODE) {\\n notify = function () {\\n process.nextTick(flush);\\n };\\n // for other environments - macrotask based on:\\n // - setImmediate\\n // - MessageChannel\\n // - window.postMessage\\n // - onreadystatechange\\n // - setTimeout\\n } else {\\n // \`webpack\` dev server bug on IE global methods - use bind(fn, global)\\n macrotask = bind(macrotask, global);\\n notify = function () {\\n macrotask(flush);\\n };\\n }\\n\\n microtask = function (fn) {\\n if (!queue.head) notify();\\n queue.add(fn);\\n };\\n}\\n\\nmodule.exports = microtask;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/microtask.js?")}),"./node_modules/core-js/internals/new-promise-capability.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nvar PromiseCapability = function (C) {\\n var resolve, reject;\\n this.promise = new C(function ($$resolve, $$reject) {\\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\\n resolve = $$resolve;\\n reject = $$reject;\\n });\\n this.resolve = aCallable(resolve);\\n this.reject = aCallable(reject);\\n};\\n\\n// \`NewPromiseCapability\` abstract operation\\n// https://tc39.es/ecma262/#sec-newpromisecapability\\nmodule.exports.f = function (C) {\\n return new PromiseCapability(C);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/new-promise-capability.js?")}),"./node_modules/core-js/internals/normalize-string-argument.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nmodule.exports = function (argument, $default) {\\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/normalize-string-argument.js?")}),"./node_modules/core-js/internals/not-a-regexp.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n if (isRegExp(it)) {\\n throw $TypeError(\\"The method doesn't accept regular expressions\\");\\n } return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/not-a-regexp.js?")}),"./node_modules/core-js/internals/number-parse-float.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\nvar $parseFloat = global.parseFloat;\\nvar Symbol = global.Symbol;\\nvar ITERATOR = Symbol && Symbol.iterator;\\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\\n // MS Edge 18- broken with boxed symbols\\n || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\\n\\n// \`parseFloat\` method\\n// https://tc39.es/ecma262/#sec-parsefloat-string\\nmodule.exports = FORCED ? function parseFloat(string) {\\n var trimmedString = trim(toString(string));\\n var result = $parseFloat(trimmedString);\\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\\n} : $parseFloat;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-float.js?")}),"./node_modules/core-js/internals/number-parse-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar $parseInt = global.parseInt;\\nvar Symbol = global.Symbol;\\nvar ITERATOR = Symbol && Symbol.iterator;\\nvar hex = /^[+-]?0x/i;\\nvar exec = uncurryThis(hex.exec);\\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\\n // MS Edge 18- broken with boxed symbols\\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\\n\\n// \`parseInt\` method\\n// https://tc39.es/ecma262/#sec-parseint-string-radix\\nmodule.exports = FORCED ? function parseInt(string, radix) {\\n var S = trim(toString(string));\\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\\n} : $parseInt;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/number-parse-int.js?")}),"./node_modules/core-js/internals/object-assign.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \\"./node_modules/core-js/internals/object-keys.js\\");\\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \\"./node_modules/core-js/internals/object-get-own-property-symbols.js\\");\\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \\"./node_modules/core-js/internals/object-property-is-enumerable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\n\\n// eslint-disable-next-line es/no-object-assign -- safe\\nvar $assign = Object.assign;\\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\\nvar defineProperty = Object.defineProperty;\\nvar concat = uncurryThis([].concat);\\n\\n// \`Object.assign\` method\\n// https://tc39.es/ecma262/#sec-object.assign\\nmodule.exports = !$assign || fails(function () {\\n // should have correct order of operations (Edge bug)\\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\\n enumerable: true,\\n get: function () {\\n defineProperty(this, 'b', {\\n value: 3,\\n enumerable: false\\n });\\n }\\n }), { b: 2 })).b !== 1) return true;\\n // should work with symbols and should have deterministic property order (V8 bug)\\n var A = {};\\n var B = {};\\n // eslint-disable-next-line es/no-symbol -- safe\\n var symbol = Symbol();\\n var alphabet = 'abcdefghijklmnopqrst';\\n A[symbol] = 7;\\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for \`.length\`\\n var T = toObject(target);\\n var argumentsLength = arguments.length;\\n var index = 1;\\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\\n while (argumentsLength > index) {\\n var S = IndexedObject(arguments[index++]);\\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\\n var length = keys.length;\\n var j = 0;\\n var key;\\n while (length > j) {\\n key = keys[j++];\\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\\n }\\n } return T;\\n} : $assign;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-assign.js?")}),"./node_modules/core-js/internals/object-create.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* global ActiveXObject -- old IE, WSH */\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ \\"./node_modules/core-js/internals/object-define-properties.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\nvar html = __webpack_require__(/*! ../internals/html */ \\"./node_modules/core-js/internals/html.js\\");\\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\n\\nvar GT = '>';\\nvar LT = '<';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { /* empty */ };\\n\\nvar scriptTag = function (content) {\\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\\n};\\n\\n// Create object with fake \`null\` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n activeXDocument.write(scriptTag(''));\\n activeXDocument.close();\\n var temp = activeXDocument.parentWindow.Object;\\n activeXDocument = null; // avoid memory leak\\n return temp;\\n};\\n\\n// Create object with fake \`null\` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n // Thrash, waste and sodomy: IE GC bug\\n var iframe = documentCreateElement('iframe');\\n var JS = 'java' + SCRIPT + ':';\\n var iframeDocument;\\n iframe.style.display = 'none';\\n html.appendChild(iframe);\\n // https://github.com/zloirock/core-js/issues/475\\n iframe.src = String(JS);\\n iframeDocument = iframe.contentWindow.document;\\n iframeDocument.open();\\n iframeDocument.write(scriptTag('document.F=Object'));\\n iframeDocument.close();\\n return iframeDocument.F;\\n};\\n\\n// Check for document.domain and active x support\\n// No need to use active x approach when document.domain is not set\\n// see https://github.com/es-shims/es5-shim/issues/150\\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\\n// avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n try {\\n activeXDocument = new ActiveXObject('htmlfile');\\n } catch (error) { /* ignore */ }\\n NullProtoObject = typeof document != 'undefined'\\n ? document.domain && activeXDocument\\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\\n : NullProtoObjectViaIFrame()\\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\\n var length = enumBugKeys.length;\\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n// \`Object.create\` method\\n// https://tc39.es/ecma262/#sec-object.create\\n// eslint-disable-next-line es/no-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n var result;\\n if (O !== null) {\\n EmptyConstructor[PROTOTYPE] = anObject(O);\\n result = new EmptyConstructor();\\n EmptyConstructor[PROTOTYPE] = null;\\n // add \\"__proto__\\" for Object.getPrototypeOf polyfill\\n result[IE_PROTO] = O;\\n } else result = NullProtoObject();\\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-create.js?")}),"./node_modules/core-js/internals/object-define-properties.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \\"./node_modules/core-js/internals/v8-prototype-define-bug.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \\"./node_modules/core-js/internals/object-keys.js\\");\\n\\n// \`Object.defineProperties\` method\\n// https://tc39.es/ecma262/#sec-object.defineproperties\\n// eslint-disable-next-line es/no-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n anObject(O);\\n var props = toIndexedObject(Properties);\\n var keys = objectKeys(Properties);\\n var length = keys.length;\\n var index = 0;\\n var key;\\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-properties.js?")}),"./node_modules/core-js/internals/object-define-property.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \\"./node_modules/core-js/internals/ie8-dom-define.js\\");\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ \\"./node_modules/core-js/internals/v8-prototype-define-bug.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n// \`Object.defineProperty\` method\\n// https://tc39.es/ecma262/#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n anObject(O);\\n P = toPropertyKey(P);\\n anObject(Attributes);\\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n var current = $getOwnPropertyDescriptor(O, P);\\n if (current && current[WRITABLE]) {\\n O[P] = Attributes.value;\\n Attributes = {\\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n writable: false\\n };\\n }\\n } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n anObject(O);\\n P = toPropertyKey(P);\\n anObject(Attributes);\\n if (IE8_DOM_DEFINE) try {\\n return $defineProperty(O, P, Attributes);\\n } catch (error) { /* empty */ }\\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\\n if ('value' in Attributes) O[P] = Attributes.value;\\n return O;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-define-property.js?")}),"./node_modules/core-js/internals/object-get-own-property-descriptor.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \\"./node_modules/core-js/internals/object-property-is-enumerable.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \\"./node_modules/core-js/internals/ie8-dom-define.js\\");\\n\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// \`Object.getOwnPropertyDescriptor\` method\\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n O = toIndexedObject(O);\\n P = toPropertyKey(P);\\n if (IE8_DOM_DEFINE) try {\\n return $getOwnPropertyDescriptor(O, P);\\n } catch (error) { /* empty */ }\\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-descriptor.js?")}),"./node_modules/core-js/internals/object-get-own-property-names-external.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-object-getownpropertynames -- safe */\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar $getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\n\\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\\n ? Object.getOwnPropertyNames(window) : [];\\n\\nvar getWindowNames = function (it) {\\n try {\\n return $getOwnPropertyNames(it);\\n } catch (error) {\\n return arraySlice(windowNames);\\n }\\n};\\n\\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\\nmodule.exports.f = function getOwnPropertyNames(it) {\\n return windowNames && classof(it) == 'Window'\\n ? getWindowNames(it)\\n : $getOwnPropertyNames(toIndexedObject(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names-external.js?")}),"./node_modules/core-js/internals/object-get-own-property-names.js":((__unused_webpack_module,exports,__webpack_require__)=>{eval("\\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \\"./node_modules/core-js/internals/object-keys-internal.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n// \`Object.getOwnPropertyNames\` method\\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n return internalObjectKeys(O, hiddenKeys);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-names.js?")}),"./node_modules/core-js/internals/object-get-own-property-symbols.js":((__unused_webpack_module,exports)=>{eval("\\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-own-property-symbols.js?")}),"./node_modules/core-js/internals/object-get-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \\"./node_modules/core-js/internals/shared-key.js\\");\\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \\"./node_modules/core-js/internals/correct-prototype-getter.js\\");\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n// \`Object.getPrototypeOf\` method\\n// https://tc39.es/ecma262/#sec-object.getprototypeof\\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n var object = toObject(O);\\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n var constructor = object.constructor;\\n if (isCallable(constructor) && object instanceof constructor) {\\n return constructor.prototype;\\n } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-get-prototype-of.js?")}),"./node_modules/core-js/internals/object-is-extensible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(/*! ../internals/array-buffer-non-extensible */ \\"./node_modules/core-js/internals/array-buffer-non-extensible.js\\");\\n\\n// eslint-disable-next-line es/no-object-isextensible -- safe\\nvar $isExtensible = Object.isExtensible;\\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\\n\\n// \`Object.isExtensible\` method\\n// https://tc39.es/ecma262/#sec-object.isextensible\\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\\n if (!isObject(it)) return false;\\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\\n return $isExtensible ? $isExtensible(it) : true;\\n} : $isExtensible;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-extensible.js?")}),"./node_modules/core-js/internals/object-is-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-is-prototype-of.js?")}),"./node_modules/core-js/internals/object-keys-internal.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar indexOf = (__webpack_require__(/*! ../internals/array-includes */ \\"./node_modules/core-js/internals/array-includes.js\\").indexOf);\\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \\"./node_modules/core-js/internals/hidden-keys.js\\");\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n var O = toIndexedObject(object);\\n var i = 0;\\n var result = [];\\n var key;\\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n // Don't enum bug & hidden keys\\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n ~indexOf(result, key) || push(result, key);\\n }\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys-internal.js?")}),"./node_modules/core-js/internals/object-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \\"./node_modules/core-js/internals/object-keys-internal.js\\");\\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \\"./node_modules/core-js/internals/enum-bug-keys.js\\");\\n\\n// \`Object.keys\` method\\n// https://tc39.es/ecma262/#sec-object.keys\\n// eslint-disable-next-line es/no-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n return internalObjectKeys(O, enumBugKeys);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-keys.js?")}),"./node_modules/core-js/internals/object-property-is-enumerable.js":((__unused_webpack_module,exports)=>{eval("\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n// \`Object.prototype.propertyIsEnumerable\` method implementation\\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n var descriptor = getOwnPropertyDescriptor(this, V);\\n return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-property-is-enumerable.js?")}),"./node_modules/core-js/internals/object-set-prototype-of.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-proto -- safe */\\nvar uncurryThisAccessor = __webpack_require__(/*! ../internals/function-uncurry-this-accessor */ \\"./node_modules/core-js/internals/function-uncurry-this-accessor.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ \\"./node_modules/core-js/internals/a-possible-prototype.js\\");\\n\\n// \`Object.setPrototypeOf\` method\\n// https://tc39.es/ecma262/#sec-object.setprototypeof\\n// Works with __proto__ only. Old v8 can't work with null proto objects.\\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\\n var CORRECT_SETTER = false;\\n var test = {};\\n var setter;\\n try {\\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\\n setter(test, []);\\n CORRECT_SETTER = test instanceof Array;\\n } catch (error) { /* empty */ }\\n return function setPrototypeOf(O, proto) {\\n anObject(O);\\n aPossiblePrototype(proto);\\n if (CORRECT_SETTER) setter(O, proto);\\n else O.__proto__ = proto;\\n return O;\\n };\\n}() : undefined);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/object-set-prototype-of.js?")}),"./node_modules/core-js/internals/ordinary-to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`OrdinaryToPrimitive\` abstract operation\\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n var fn, val;\\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n throw $TypeError(\\"Can't convert object to primitive value\\");\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/ordinary-to-primitive.js?")}),"./node_modules/core-js/internals/own-keys.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\");\\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \\"./node_modules/core-js/internals/object-get-own-property-symbols.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\n\\nvar concat = uncurryThis([].concat);\\n\\n// all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n var keys = getOwnPropertyNamesModule.f(anObject(it));\\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/own-keys.js?")}),"./node_modules/core-js/internals/perform.js":((module)=>{eval("\\nmodule.exports = function (exec) {\\n try {\\n return { error: false, value: exec() };\\n } catch (error) {\\n return { error: true, value: error };\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/perform.js?")}),"./node_modules/core-js/internals/promise-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar inspectSource = __webpack_require__(/*! ../internals/inspect-source */ \\"./node_modules/core-js/internals/inspect-source.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \\"./node_modules/core-js/internals/engine-is-browser.js\\");\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\nvar SPECIES = wellKnownSymbol('species');\\nvar SUBCLASSING = false;\\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\\n\\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\\n // We can't detect it synchronously, so just check versions\\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\\n // We can't use @@species feature detection in V8 since it causes\\n // deoptimization and performance degradation\\n // https://github.com/zloirock/core-js/issues/679\\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\\n // Detect correctness of subclassing with @@species support\\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\\n var FakePromise = function (exec) {\\n exec(function () { /* empty */ }, function () { /* empty */ });\\n };\\n var constructor = promise.constructor = {};\\n constructor[SPECIES] = FakePromise;\\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\\n if (!SUBCLASSING) return true;\\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\\n});\\n\\nmodule.exports = {\\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\\n SUBCLASSING: SUBCLASSING\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-constructor-detection.js?")}),"./node_modules/core-js/internals/promise-native-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\nmodule.exports = global.Promise;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-native-constructor.js?")}),"./node_modules/core-js/internals/promise-resolve.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\n\\nmodule.exports = function (C, x) {\\n anObject(C);\\n if (isObject(x) && x.constructor === C) return x;\\n var promiseCapability = newPromiseCapability.f(C);\\n var resolve = promiseCapability.resolve;\\n resolve(x);\\n return promiseCapability.promise;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-resolve.js?")}),"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\n\\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js?")}),"./node_modules/core-js/internals/proxy-accessor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\n\\nmodule.exports = function (Target, Source, key) {\\n key in Target || defineProperty(Target, key, {\\n configurable: true,\\n get: function () { return Source[key]; },\\n set: function (it) { Source[key] = it; }\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/proxy-accessor.js?")}),"./node_modules/core-js/internals/queue.js":((module)=>{eval("\\nvar Queue = function () {\\n this.head = null;\\n this.tail = null;\\n};\\n\\nQueue.prototype = {\\n add: function (item) {\\n var entry = { item: item, next: null };\\n var tail = this.tail;\\n if (tail) tail.next = entry;\\n else this.head = entry;\\n this.tail = entry;\\n },\\n get: function () {\\n var entry = this.head;\\n if (entry) {\\n var next = this.head = entry.next;\\n if (next === null) this.tail = null;\\n return entry.item;\\n }\\n }\\n};\\n\\nmodule.exports = Queue;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/queue.js?")}),"./node_modules/core-js/internals/regexp-exec-abstract.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`RegExpExec\` abstract operation\\n// https://tc39.es/ecma262/#sec-regexpexec\\nmodule.exports = function (R, S) {\\n var exec = R.exec;\\n if (isCallable(exec)) {\\n var result = call(exec, R, S);\\n if (result !== null) anObject(result);\\n return result;\\n }\\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\\n throw $TypeError('RegExp#exec called on incompatible receiver');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec-abstract.js?")}),"./node_modules/core-js/internals/regexp-exec.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\\n/* eslint-disable regexp/no-useless-quantifier -- testing */\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").get);\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \\"./node_modules/core-js/internals/regexp-unsupported-ncg.js\\");\\n\\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\\nvar nativeExec = RegExp.prototype.exec;\\nvar patchedExec = nativeExec;\\nvar charAt = uncurryThis(''.charAt);\\nvar indexOf = uncurryThis(''.indexOf);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar UPDATES_LAST_INDEX_WRONG = (function () {\\n var re1 = /a/;\\n var re2 = /b*/g;\\n call(nativeExec, re1, 'a');\\n call(nativeExec, re2, 'a');\\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\\n})();\\n\\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\\n\\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\\n\\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\\n\\nif (PATCH) {\\n patchedExec = function exec(string) {\\n var re = this;\\n var state = getInternalState(re);\\n var str = toString(string);\\n var raw = state.raw;\\n var result, reCopy, lastIndex, match, i, object, group;\\n\\n if (raw) {\\n raw.lastIndex = re.lastIndex;\\n result = call(patchedExec, raw, str);\\n re.lastIndex = raw.lastIndex;\\n return result;\\n }\\n\\n var groups = state.groups;\\n var sticky = UNSUPPORTED_Y && re.sticky;\\n var flags = call(regexpFlags, re);\\n var source = re.source;\\n var charsAdded = 0;\\n var strCopy = str;\\n\\n if (sticky) {\\n flags = replace(flags, 'y', '');\\n if (indexOf(flags, 'g') === -1) {\\n flags += 'g';\\n }\\n\\n strCopy = stringSlice(str, re.lastIndex);\\n // Support anchored sticky behavior.\\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\\\n')) {\\n source = '(?: ' + source + ')';\\n strCopy = ' ' + strCopy;\\n charsAdded++;\\n }\\n // ^(? + rx + ) is needed, in combination with some str slicing, to\\n // simulate the 'y' flag.\\n reCopy = new RegExp('^(?:' + source + ')', flags);\\n }\\n\\n if (NPCG_INCLUDED) {\\n reCopy = new RegExp('^' + source + '$(?!\\\\\\\\s)', flags);\\n }\\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\\n\\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\\n\\n if (sticky) {\\n if (match) {\\n match.input = stringSlice(match.input, charsAdded);\\n match[0] = stringSlice(match[0], charsAdded);\\n match.index = re.lastIndex;\\n re.lastIndex += match[0].length;\\n } else re.lastIndex = 0;\\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\\n }\\n if (NPCG_INCLUDED && match && match.length > 1) {\\n // Fix browsers whose \`exec\` methods don't consistently return \`undefined\`\\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\\n call(nativeReplace, match[0], reCopy, function () {\\n for (i = 1; i < arguments.length - 2; i++) {\\n if (arguments[i] === undefined) match[i] = undefined;\\n }\\n });\\n }\\n\\n if (match && groups) {\\n match.groups = object = create(null);\\n for (i = 0; i < groups.length; i++) {\\n group = groups[i];\\n object[group[0]] = match[group[1]];\\n }\\n }\\n\\n return match;\\n };\\n}\\n\\nmodule.exports = patchedExec;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-exec.js?")}),"./node_modules/core-js/internals/regexp-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\n\\n// \`RegExp.prototype.flags\` getter implementation\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\\nmodule.exports = function () {\\n var that = anObject(this);\\n var result = '';\\n if (that.hasIndices) result += 'd';\\n if (that.global) result += 'g';\\n if (that.ignoreCase) result += 'i';\\n if (that.multiline) result += 'm';\\n if (that.dotAll) result += 's';\\n if (that.unicode) result += 'u';\\n if (that.unicodeSets) result += 'v';\\n if (that.sticky) result += 'y';\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-flags.js?")}),"./node_modules/core-js/internals/regexp-get-flags.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\n\\nvar RegExpPrototype = RegExp.prototype;\\n\\nmodule.exports = function (R) {\\n var flags = R.flags;\\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\\n ? call(regExpFlags, R) : flags;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-get-flags.js?")}),"./node_modules/core-js/internals/regexp-sticky-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nvar UNSUPPORTED_Y = fails(function () {\\n var re = $RegExp('a', 'y');\\n re.lastIndex = 2;\\n return re.exec('abcd') != null;\\n});\\n\\n// UC Browser bug\\n// https://github.com/zloirock/core-js/issues/1008\\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\\n return !$RegExp('a', 'y').sticky;\\n});\\n\\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\\n var re = $RegExp('^r', 'gy');\\n re.lastIndex = 2;\\n return re.exec('str') != null;\\n});\\n\\nmodule.exports = {\\n BROKEN_CARET: BROKEN_CARET,\\n MISSED_STICKY: MISSED_STICKY,\\n UNSUPPORTED_Y: UNSUPPORTED_Y\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-sticky-helpers.js?")}),"./node_modules/core-js/internals/regexp-unsupported-dot-all.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nmodule.exports = fails(function () {\\n var re = $RegExp('.', 's');\\n return !(re.dotAll && re.exec('\\\\n') && re.flags === 's');\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-dot-all.js?")}),"./node_modules/core-js/internals/regexp-unsupported-ncg.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\\nvar $RegExp = global.RegExp;\\n\\nmodule.exports = fails(function () {\\n var re = $RegExp('(?b)', 'g');\\n return re.exec('b').groups.a !== 'b' ||\\n 'b'.replace(re, '$c') !== 'bc';\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/regexp-unsupported-ncg.js?")}),"./node_modules/core-js/internals/require-object-coercible.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`RequireObjectCoercible\` abstract operation\\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n if (isNullOrUndefined(it)) throw $TypeError(\\"Can't call method on \\" + it);\\n return it;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/require-object-coercible.js?")}),"./node_modules/core-js/internals/set-helpers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// eslint-disable-next-line es/no-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n // eslint-disable-next-line es/no-set -- safe\\n Set: Set,\\n add: uncurryThis(SetPrototype.add),\\n has: uncurryThis(SetPrototype.has),\\n remove: uncurryThis(SetPrototype['delete']),\\n proto: SetPrototype\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-helpers.js?")}),"./node_modules/core-js/internals/set-species.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\n\\nmodule.exports = function (CONSTRUCTOR_NAME) {\\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\\n\\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\\n defineBuiltInAccessor(Constructor, SPECIES, {\\n configurable: true,\\n get: function () { return this; }\\n });\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-species.js?")}),"./node_modules/core-js/internals/set-to-string-tag.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nmodule.exports = function (target, TAG, STATIC) {\\n if (target && !STATIC) target = target.prototype;\\n if (target && !hasOwn(target, TO_STRING_TAG)) {\\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/set-to-string-tag.js?")}),"./node_modules/core-js/internals/shared-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n return keys[key] || (keys[key] = uid(key));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-key.js?")}),"./node_modules/core-js/internals/shared-store.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ \\"./node_modules/core-js/internals/define-global-property.js\\");\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\\n\\nmodule.exports = store;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared-store.js?")}),"./node_modules/core-js/internals/shared.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar store = __webpack_require__(/*! ../internals/shared-store */ \\"./node_modules/core-js/internals/shared-store.js\\");\\n\\n(module.exports = function (key, value) {\\n return store[key] || (store[key] = value !== undefined ? value : {});\\n})('versions', []).push({\\n version: '3.32.0',\\n mode: IS_PURE ? 'pure' : 'global',\\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\\n license: 'https://github.com/zloirock/core-js/blob/v3.32.0/LICENSE',\\n source: 'https://github.com/zloirock/core-js'\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/shared.js?")}),"./node_modules/core-js/internals/species-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \\"./node_modules/core-js/internals/a-constructor.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar SPECIES = wellKnownSymbol('species');\\n\\n// \`SpeciesConstructor\` abstract operation\\n// https://tc39.es/ecma262/#sec-speciesconstructor\\nmodule.exports = function (O, defaultConstructor) {\\n var C = anObject(O).constructor;\\n var S;\\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/species-constructor.js?")}),"./node_modules/core-js/internals/string-multibyte.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar createMethod = function (CONVERT_TO_STRING) {\\n return function ($this, pos) {\\n var S = toString(requireObjectCoercible($this));\\n var position = toIntegerOrInfinity(pos);\\n var size = S.length;\\n var first, second;\\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\\n first = charCodeAt(S, position);\\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\\n ? CONVERT_TO_STRING\\n ? charAt(S, position)\\n : first\\n : CONVERT_TO_STRING\\n ? stringSlice(S, position, position + 2)\\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\\n };\\n};\\n\\nmodule.exports = {\\n // \`String.prototype.codePointAt\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\\n codeAt: createMethod(false),\\n // \`String.prototype.at\` method\\n // https://github.com/mathiasbynens/String.prototype.at\\n charAt: createMethod(true)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-multibyte.js?")}),"./node_modules/core-js/internals/string-punycode-to-ascii.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\\nvar base = 36;\\nvar tMin = 1;\\nvar tMax = 26;\\nvar skew = 38;\\nvar damp = 700;\\nvar initialBias = 72;\\nvar initialN = 128; // 0x80\\nvar delimiter = '-'; // '\\\\x2D'\\nvar regexNonASCII = /[^\\\\0-\\\\u007E]/; // non-ASCII chars\\nvar regexSeparators = /[.\\\\u3002\\\\uFF0E\\\\uFF61]/g; // RFC 3490 separators\\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\\nvar baseMinusTMin = base - tMin;\\n\\nvar $RangeError = RangeError;\\nvar exec = uncurryThis(regexSeparators.exec);\\nvar floor = Math.floor;\\nvar fromCharCode = String.fromCharCode;\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar join = uncurryThis([].join);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar split = uncurryThis(''.split);\\nvar toLowerCase = uncurryThis(''.toLowerCase);\\n\\n/**\\n * Creates an array containing the numeric code points of each Unicode\\n * character in the string. While JavaScript uses UCS-2 internally,\\n * this function will convert a pair of surrogate halves (each of which\\n * UCS-2 exposes as separate characters) into a single code point,\\n * matching UTF-16.\\n */\\nvar ucs2decode = function (string) {\\n var output = [];\\n var counter = 0;\\n var length = string.length;\\n while (counter < length) {\\n var value = charCodeAt(string, counter++);\\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\\n // It's a high surrogate, and there is a next character.\\n var extra = charCodeAt(string, counter++);\\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\\n } else {\\n // It's an unmatched surrogate; only append this code unit, in case the\\n // next code unit is the high surrogate of a surrogate pair.\\n push(output, value);\\n counter--;\\n }\\n } else {\\n push(output, value);\\n }\\n }\\n return output;\\n};\\n\\n/**\\n * Converts a digit/integer into a basic code point.\\n */\\nvar digitToBasic = function (digit) {\\n // 0..25 map to ASCII a..z or A..Z\\n // 26..35 map to ASCII 0..9\\n return digit + 22 + 75 * (digit < 26);\\n};\\n\\n/**\\n * Bias adaptation function as per section 3.4 of RFC 3492.\\n * https://tools.ietf.org/html/rfc3492#section-3.4\\n */\\nvar adapt = function (delta, numPoints, firstTime) {\\n var k = 0;\\n delta = firstTime ? floor(delta / damp) : delta >> 1;\\n delta += floor(delta / numPoints);\\n while (delta > baseMinusTMin * tMax >> 1) {\\n delta = floor(delta / baseMinusTMin);\\n k += base;\\n }\\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\\n};\\n\\n/**\\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\\n * Punycode string of ASCII-only symbols.\\n */\\nvar encode = function (input) {\\n var output = [];\\n\\n // Convert the input in UCS-2 to an array of Unicode code points.\\n input = ucs2decode(input);\\n\\n // Cache the length.\\n var inputLength = input.length;\\n\\n // Initialize the state.\\n var n = initialN;\\n var delta = 0;\\n var bias = initialBias;\\n var i, currentValue;\\n\\n // Handle the basic code points.\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue < 0x80) {\\n push(output, fromCharCode(currentValue));\\n }\\n }\\n\\n var basicLength = output.length; // number of basic code points.\\n var handledCPCount = basicLength; // number of code points that have been handled;\\n\\n // Finish the basic string with a delimiter unless it's empty.\\n if (basicLength) {\\n push(output, delimiter);\\n }\\n\\n // Main encoding loop:\\n while (handledCPCount < inputLength) {\\n // All non-basic code points < n have been handled already. Find the next larger one:\\n var m = maxInt;\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue >= n && currentValue < m) {\\n m = currentValue;\\n }\\n }\\n\\n // Increase \`delta\` enough to advance the decoder's state to , but guard against overflow.\\n var handledCPCountPlusOne = handledCPCount + 1;\\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\\n throw $RangeError(OVERFLOW_ERROR);\\n }\\n\\n delta += (m - n) * handledCPCountPlusOne;\\n n = m;\\n\\n for (i = 0; i < input.length; i++) {\\n currentValue = input[i];\\n if (currentValue < n && ++delta > maxInt) {\\n throw $RangeError(OVERFLOW_ERROR);\\n }\\n if (currentValue == n) {\\n // Represent delta as a generalized variable-length integer.\\n var q = delta;\\n var k = base;\\n while (true) {\\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\\n if (q < t) break;\\n var qMinusT = q - t;\\n var baseMinusT = base - t;\\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\\n q = floor(qMinusT / baseMinusT);\\n k += base;\\n }\\n\\n push(output, fromCharCode(digitToBasic(q)));\\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\\n delta = 0;\\n handledCPCount++;\\n }\\n }\\n\\n delta++;\\n n++;\\n }\\n return join(output, '');\\n};\\n\\nmodule.exports = function (input) {\\n var encoded = [];\\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\\\u002E'), '.');\\n var i, label;\\n for (i = 0; i < labels.length; i++) {\\n label = labels[i];\\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\\n }\\n return join(encoded, '.');\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-punycode-to-ascii.js?")}),"./node_modules/core-js/internals/string-repeat.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// \`String.prototype.repeat\` method implementation\\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\\nmodule.exports = function repeat(count) {\\n var str = toString(requireObjectCoercible(this));\\n var result = '';\\n var n = toIntegerOrInfinity(count);\\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-repeat.js?")}),"./node_modules/core-js/internals/string-trim-end.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $trimEnd = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").end);\\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \\"./node_modules/core-js/internals/string-trim-forced.js\\");\\n\\n// \`String.prototype.{ trimEnd, trimRight }\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// https://tc39.es/ecma262/#String.prototype.trimright\\nmodule.exports = forcedStringTrimMethod('trimEnd') ? function trimEnd() {\\n return $trimEnd(this);\\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\\n} : ''.trimEnd;\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-end.js?")}),"./node_modules/core-js/internals/string-trim-forced.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").PROPER);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar non = '\\\\u200B\\\\u0085\\\\u180E';\\n\\n// check that a method works with the correct list\\n// of whitespaces and has a correct name\\nmodule.exports = function (METHOD_NAME) {\\n return fails(function () {\\n return !!whitespaces[METHOD_NAME]()\\n || non[METHOD_NAME]() !== non\\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\\n });\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim-forced.js?")}),"./node_modules/core-js/internals/string-trim.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \\"./node_modules/core-js/internals/whitespaces.js\\");\\n\\nvar replace = uncurryThis(''.replace);\\nvar ltrim = RegExp('^[' + whitespaces + ']+');\\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\\n\\n// \`String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }\` methods implementation\\nvar createMethod = function (TYPE) {\\n return function ($this) {\\n var string = toString(requireObjectCoercible($this));\\n if (TYPE & 1) string = replace(string, ltrim, '');\\n if (TYPE & 2) string = replace(string, rtrim, '$1');\\n return string;\\n };\\n};\\n\\nmodule.exports = {\\n // \`String.prototype.{ trimLeft, trimStart }\` methods\\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\\n start: createMethod(1),\\n // \`String.prototype.{ trimRight, trimEnd }\` methods\\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\\n end: createMethod(2),\\n // \`String.prototype.trim\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.trim\\n trim: createMethod(3)\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/string-trim.js?")}),"./node_modules/core-js/internals/structured-clone-proper-transfer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar IS_BROWSER = __webpack_require__(/*! ../internals/engine-is-browser */ \\"./node_modules/core-js/internals/engine-is-browser.js\\");\\nvar IS_DENO = __webpack_require__(/*! ../internals/engine-is-deno */ \\"./node_modules/core-js/internals/engine-is-deno.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar structuredClone = global.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n // https://github.com/zloirock/core-js/issues/679\\n if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;\\n var buffer = new ArrayBuffer(8);\\n var clone = structuredClone(buffer, { transfer: [buffer] });\\n return buffer.byteLength != 0 || clone.byteLength != 8;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/structured-clone-proper-transfer.js?")}),"./node_modules/core-js/internals/symbol-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-symbol -- required for testing */\\nvar V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\nvar $String = global.String;\\n\\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n var symbol = Symbol();\\n // Chrome 38 Symbol has incorrect toString conversion\\n // \`get-own-property-symbols\` polyfill symbols converted to object are not Symbol instances\\n // nb: Do not call \`String\` directly to avoid this being optimized out to \`symbol+''\` which will,\\n // of course, fail.\\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/symbol-constructor-detection.js?")}),"./node_modules/core-js/internals/task.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar html = __webpack_require__(/*! ../internals/html */ \\"./node_modules/core-js/internals/html.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \\"./node_modules/core-js/internals/document-create-element.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ \\"./node_modules/core-js/internals/engine-is-ios.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nvar set = global.setImmediate;\\nvar clear = global.clearImmediate;\\nvar process = global.process;\\nvar Dispatch = global.Dispatch;\\nvar Function = global.Function;\\nvar MessageChannel = global.MessageChannel;\\nvar String = global.String;\\nvar counter = 0;\\nvar queue = {};\\nvar ONREADYSTATECHANGE = 'onreadystatechange';\\nvar $location, defer, channel, port;\\n\\nfails(function () {\\n // Deno throws a ReferenceError on \`location\` access without \`--location\` flag\\n $location = global.location;\\n});\\n\\nvar run = function (id) {\\n if (hasOwn(queue, id)) {\\n var fn = queue[id];\\n delete queue[id];\\n fn();\\n }\\n};\\n\\nvar runner = function (id) {\\n return function () {\\n run(id);\\n };\\n};\\n\\nvar eventListener = function (event) {\\n run(event.data);\\n};\\n\\nvar globalPostMessageDefer = function (id) {\\n // old engines have not location.origin\\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\\n};\\n\\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\\nif (!set || !clear) {\\n set = function setImmediate(handler) {\\n validateArgumentsLength(arguments.length, 1);\\n var fn = isCallable(handler) ? handler : Function(handler);\\n var args = arraySlice(arguments, 1);\\n queue[++counter] = function () {\\n apply(fn, undefined, args);\\n };\\n defer(counter);\\n return counter;\\n };\\n clear = function clearImmediate(id) {\\n delete queue[id];\\n };\\n // Node.js 0.8-\\n if (IS_NODE) {\\n defer = function (id) {\\n process.nextTick(runner(id));\\n };\\n // Sphere (JS game engine) Dispatch API\\n } else if (Dispatch && Dispatch.now) {\\n defer = function (id) {\\n Dispatch.now(runner(id));\\n };\\n // Browsers with MessageChannel, includes WebWorkers\\n // except iOS - https://github.com/zloirock/core-js/issues/624\\n } else if (MessageChannel && !IS_IOS) {\\n channel = new MessageChannel();\\n port = channel.port2;\\n channel.port1.onmessage = eventListener;\\n defer = bind(port.postMessage, port);\\n // Browsers with postMessage, skip WebWorkers\\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\\n } else if (\\n global.addEventListener &&\\n isCallable(global.postMessage) &&\\n !global.importScripts &&\\n $location && $location.protocol !== 'file:' &&\\n !fails(globalPostMessageDefer)\\n ) {\\n defer = globalPostMessageDefer;\\n global.addEventListener('message', eventListener, false);\\n // IE8-\\n } else if (ONREADYSTATECHANGE in createElement('script')) {\\n defer = function (id) {\\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\\n html.removeChild(this);\\n run(id);\\n };\\n };\\n // Rest old browsers\\n } else {\\n defer = function (id) {\\n setTimeout(runner(id), 0);\\n };\\n }\\n}\\n\\nmodule.exports = {\\n set: set,\\n clear: clear\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/task.js?")}),"./node_modules/core-js/internals/this-number-value.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\n// \`thisNumberValue\` abstract operation\\n// https://tc39.es/ecma262/#sec-thisnumbervalue\\nmodule.exports = uncurryThis(1.0.valueOf);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/this-number-value.js?")}),"./node_modules/core-js/internals/to-absolute-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n// Helper for a popular repeating case of the spec:\\n// Let integer be ? ToInteger(index).\\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n var integer = toIntegerOrInfinity(index);\\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-absolute-index.js?")}),"./node_modules/core-js/internals/to-big-int.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \\"./node_modules/core-js/internals/to-primitive.js\\");\\n\\nvar $TypeError = TypeError;\\n\\n// \`ToBigInt\` abstract operation\\n// https://tc39.es/ecma262/#sec-tobigint\\nmodule.exports = function (argument) {\\n var prim = toPrimitive(argument, 'number');\\n if (typeof prim == 'number') throw $TypeError(\\"Can't convert number to bigint\\");\\n // eslint-disable-next-line es/no-bigint -- safe\\n return BigInt(prim);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-big-int.js?")}),"./node_modules/core-js/internals/to-index.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\n\\nvar $RangeError = RangeError;\\n\\n// \`ToIndex\` abstract operation\\n// https://tc39.es/ecma262/#sec-toindex\\nmodule.exports = function (it) {\\n if (it === undefined) return 0;\\n var number = toIntegerOrInfinity(it);\\n var length = toLength(number);\\n if (number !== length) throw $RangeError('Wrong length or index');\\n return length;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-index.js?")}),"./node_modules/core-js/internals/to-indexed-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \\"./node_modules/core-js/internals/indexed-object.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nmodule.exports = function (it) {\\n return IndexedObject(requireObjectCoercible(it));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-indexed-object.js?")}),"./node_modules/core-js/internals/to-integer-or-infinity.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar trunc = __webpack_require__(/*! ../internals/math-trunc */ \\"./node_modules/core-js/internals/math-trunc.js\\");\\n\\n// \`ToIntegerOrInfinity\` abstract operation\\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n var number = +argument;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-integer-or-infinity.js?")}),"./node_modules/core-js/internals/to-length.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar min = Math.min;\\n\\n// \`ToLength\` abstract operation\\n// https://tc39.es/ecma262/#sec-tolength\\nmodule.exports = function (argument) {\\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-length.js?")}),"./node_modules/core-js/internals/to-object.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\n\\nvar $Object = Object;\\n\\n// \`ToObject\` abstract operation\\n// https://tc39.es/ecma262/#sec-toobject\\nmodule.exports = function (argument) {\\n return $Object(requireObjectCoercible(argument));\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-object.js?")}),"./node_modules/core-js/internals/to-offset.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPositiveInteger = __webpack_require__(/*! ../internals/to-positive-integer */ \\"./node_modules/core-js/internals/to-positive-integer.js\\");\\n\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it, BYTES) {\\n var offset = toPositiveInteger(it);\\n if (offset % BYTES) throw $RangeError('Wrong offset');\\n return offset;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-offset.js?")}),"./node_modules/core-js/internals/to-positive-integer.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it) {\\n var result = toIntegerOrInfinity(it);\\n if (result < 0) throw $RangeError(\\"The argument can't be less than 0\\");\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-positive-integer.js?")}),"./node_modules/core-js/internals/to-primitive.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ \\"./node_modules/core-js/internals/ordinary-to-primitive.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n// \`ToPrimitive\` abstract operation\\n// https://tc39.es/ecma262/#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n if (!isObject(input) || isSymbol(input)) return input;\\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n var result;\\n if (exoticToPrim) {\\n if (pref === undefined) pref = 'default';\\n result = call(exoticToPrim, input, pref);\\n if (!isObject(result) || isSymbol(result)) return result;\\n throw $TypeError(\\"Can't convert object to primitive value\\");\\n }\\n if (pref === undefined) pref = 'number';\\n return ordinaryToPrimitive(input, pref);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-primitive.js?")}),"./node_modules/core-js/internals/to-property-key.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \\"./node_modules/core-js/internals/to-primitive.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\n\\n// \`ToPropertyKey\` abstract operation\\n// https://tc39.es/ecma262/#sec-topropertykey\\nmodule.exports = function (argument) {\\n var key = toPrimitive(argument, 'string');\\n return isSymbol(key) ? key : key + '';\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-property-key.js?")}),"./node_modules/core-js/internals/to-string-tag-support.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string-tag-support.js?")}),"./node_modules/core-js/internals/to-string.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\\n return $String(argument);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-string.js?")}),"./node_modules/core-js/internals/to-uint8-clamped.js":((module)=>{eval("\\nvar round = Math.round;\\n\\nmodule.exports = function (it) {\\n var value = round(it);\\n return value < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/to-uint8-clamped.js?")}),"./node_modules/core-js/internals/try-node-require.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\n\\nmodule.exports = function (name) {\\n try {\\n // eslint-disable-next-line no-new-func -- safe\\n if (IS_NODE) return Function('return require(\\"' + name + '\\")')();\\n } catch (error) { /* empty */ }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-node-require.js?")}),"./node_modules/core-js/internals/try-to-string.js":((module)=>{eval("\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n try {\\n return $String(argument);\\n } catch (error) {\\n return 'Object';\\n }\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/try-to-string.js?")}),"./node_modules/core-js/internals/typed-array-constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(/*! ../internals/typed-array-constructors-require-wrappers */ \\"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar isIntegralNumber = __webpack_require__(/*! ../internals/is-integral-number */ \\"./node_modules/core-js/internals/is-integral-number.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toIndex = __webpack_require__(/*! ../internals/to-index */ \\"./node_modules/core-js/internals/to-index.js\\");\\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \\"./node_modules/core-js/internals/to-offset.js\\");\\nvar toUint8Clamped = __webpack_require__(/*! ../internals/to-uint8-clamped */ \\"./node_modules/core-js/internals/to-uint8-clamped.js\\");\\nvar toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ \\"./node_modules/core-js/internals/to-property-key.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar typedArrayFrom = __webpack_require__(/*! ../internals/typed-array-from */ \\"./node_modules/core-js/internals/typed-array-from.js\\");\\nvar forEach = (__webpack_require__(/*! ../internals/array-iteration */ \\"./node_modules/core-js/internals/array-iteration.js\\").forEach);\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\");\\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\n\\nvar getInternalState = InternalStateModule.get;\\nvar setInternalState = InternalStateModule.set;\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar nativeDefineProperty = definePropertyModule.f;\\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\nvar RangeError = global.RangeError;\\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataView = ArrayBufferModule.DataView;\\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\\nvar TypedArray = ArrayBufferViewCore.TypedArray;\\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\\nvar WRONG_LENGTH = 'Wrong length';\\n\\nvar fromList = function (C, list) {\\n aTypedArrayConstructor(C);\\n var index = 0;\\n var length = list.length;\\n var result = new C(length);\\n while (length > index) result[index] = list[index++];\\n return result;\\n};\\n\\nvar addGetter = function (it, key) {\\n defineBuiltInAccessor(it, key, {\\n configurable: true,\\n get: function () {\\n return getInternalState(this)[key];\\n }\\n });\\n};\\n\\nvar isArrayBuffer = function (it) {\\n var klass;\\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\\n};\\n\\nvar isTypedArrayIndex = function (target, key) {\\n return isTypedArray(target)\\n && !isSymbol(key)\\n && key in target\\n && isIntegralNumber(+key)\\n && key >= 0;\\n};\\n\\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\\n key = toPropertyKey(key);\\n return isTypedArrayIndex(target, key)\\n ? createPropertyDescriptor(2, target[key])\\n : nativeGetOwnPropertyDescriptor(target, key);\\n};\\n\\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\\n key = toPropertyKey(key);\\n if (isTypedArrayIndex(target, key)\\n && isObject(descriptor)\\n && hasOwn(descriptor, 'value')\\n && !hasOwn(descriptor, 'get')\\n && !hasOwn(descriptor, 'set')\\n // TODO: add validation descriptor w/o calling accessors\\n && !descriptor.configurable\\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\\n ) {\\n target[key] = descriptor.value;\\n return target;\\n } return nativeDefineProperty(target, key, descriptor);\\n};\\n\\nif (DESCRIPTORS) {\\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\\n definePropertyModule.f = wrappedDefineProperty;\\n addGetter(TypedArrayPrototype, 'buffer');\\n addGetter(TypedArrayPrototype, 'byteOffset');\\n addGetter(TypedArrayPrototype, 'byteLength');\\n addGetter(TypedArrayPrototype, 'length');\\n }\\n\\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\\n defineProperty: wrappedDefineProperty\\n });\\n\\n module.exports = function (TYPE, wrapper, CLAMPED) {\\n var BYTES = TYPE.match(/\\\\d+/)[0] / 8;\\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\\n var GETTER = 'get' + TYPE;\\n var SETTER = 'set' + TYPE;\\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\\n var TypedArrayConstructor = NativeTypedArrayConstructor;\\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\\n var exported = {};\\n\\n var getter = function (that, index) {\\n var data = getInternalState(that);\\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\\n };\\n\\n var setter = function (that, index, value) {\\n var data = getInternalState(that);\\n data.view[SETTER](index * BYTES + data.byteOffset, CLAMPED ? toUint8Clamped(value) : value, true);\\n };\\n\\n var addElement = function (that, index) {\\n nativeDefineProperty(that, index, {\\n get: function () {\\n return getter(this, index);\\n },\\n set: function (value) {\\n return setter(this, index, value);\\n },\\n enumerable: true\\n });\\n };\\n\\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\\n anInstance(that, TypedArrayConstructorPrototype);\\n var index = 0;\\n var byteOffset = 0;\\n var buffer, byteLength, length;\\n if (!isObject(data)) {\\n length = toIndex(data);\\n byteLength = length * BYTES;\\n buffer = new ArrayBuffer(byteLength);\\n } else if (isArrayBuffer(data)) {\\n buffer = data;\\n byteOffset = toOffset(offset, BYTES);\\n var $len = data.byteLength;\\n if ($length === undefined) {\\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\\n byteLength = $len - byteOffset;\\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\\n } else {\\n byteLength = toLength($length) * BYTES;\\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\\n }\\n length = byteLength / BYTES;\\n } else if (isTypedArray(data)) {\\n return fromList(TypedArrayConstructor, data);\\n } else {\\n return call(typedArrayFrom, TypedArrayConstructor, data);\\n }\\n setInternalState(that, {\\n buffer: buffer,\\n byteOffset: byteOffset,\\n byteLength: byteLength,\\n length: length,\\n view: new DataView(buffer)\\n });\\n while (index < length) addElement(that, index++);\\n });\\n\\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\\n anInstance(dummy, TypedArrayConstructorPrototype);\\n return inheritIfRequired(function () {\\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\\n if (isArrayBuffer(data)) return $length !== undefined\\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\\n : typedArrayOffset !== undefined\\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\\n : new NativeTypedArrayConstructor(data);\\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\\n return call(typedArrayFrom, TypedArrayConstructor, data);\\n }(), dummy, TypedArrayConstructor);\\n });\\n\\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\\n if (!(key in TypedArrayConstructor)) {\\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\\n }\\n });\\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\\n }\\n\\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\\n }\\n\\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\\n\\n if (TYPED_ARRAY_TAG) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\\n }\\n\\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\\n\\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\\n\\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\\n\\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\\n }\\n\\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\\n }\\n\\n setSpecies(CONSTRUCTOR_NAME);\\n };\\n} else module.exports = function () { /* empty */ };\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructor.js?")}),"./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-new -- required for testing */\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \\"./node_modules/core-js/internals/check-correctness-of-iteration.js\\");\\nvar NATIVE_ARRAY_BUFFER_VIEWS = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\").NATIVE_ARRAY_BUFFER_VIEWS);\\n\\nvar ArrayBuffer = global.ArrayBuffer;\\nvar Int8Array = global.Int8Array;\\n\\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\\n Int8Array(1);\\n}) || !fails(function () {\\n new Int8Array(-1);\\n}) || !checkCorrectnessOfIteration(function (iterable) {\\n new Int8Array();\\n new Int8Array(null);\\n new Int8Array(1.5);\\n new Int8Array(iterable);\\n}, true) || fails(function () {\\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-constructors-require-wrappers.js?")}),"./node_modules/core-js/internals/typed-array-from.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aConstructor = __webpack_require__(/*! ../internals/a-constructor */ \\"./node_modules/core-js/internals/a-constructor.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \\"./node_modules/core-js/internals/is-array-iterator-method.js\\");\\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \\"./node_modules/core-js/internals/is-big-int-array.js\\");\\nvar aTypedArrayConstructor = (__webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\").aTypedArrayConstructor);\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\n\\nmodule.exports = function from(source /* , mapfn, thisArg */) {\\n var C = aConstructor(this);\\n var O = toObject(source);\\n var argumentsLength = arguments.length;\\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\\n var mapping = mapfn !== undefined;\\n var iteratorMethod = getIteratorMethod(O);\\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\\n iterator = getIterator(O, iteratorMethod);\\n next = iterator.next;\\n O = [];\\n while (!(step = call(next, iterator)).done) {\\n O.push(step.value);\\n }\\n }\\n if (mapping && argumentsLength > 2) {\\n mapfn = bind(mapfn, arguments[2]);\\n }\\n length = lengthOfArrayLike(O);\\n result = new (aTypedArrayConstructor(C))(length);\\n thisIsBigIntArray = isBigIntArray(result);\\n for (i = 0; length > i; i++) {\\n value = mapping ? mapfn(O[i], i) : O[i];\\n // FF30- typed arrays doesn't properly convert objects to typed array values\\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\\n }\\n return result;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/typed-array-from.js?")}),"./node_modules/core-js/internals/uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/uid.js?")}),"./node_modules/core-js/internals/url-constructor-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = !fails(function () {\\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\\n var params = url.searchParams;\\n var params2 = new URLSearchParams('a=1&a=2&b=3');\\n var result = '';\\n url.pathname = 'c%20d';\\n params.forEach(function (value, key) {\\n params['delete']('b');\\n result += key + value;\\n });\\n params2['delete']('a', 2);\\n // \`undefined\` case is a Chromium 117 bug\\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\\n params2['delete']('b', undefined);\\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\\n || (!params.size && (IS_PURE || !DESCRIPTORS))\\n || !params.sort\\n || url.href !== 'http://a/c%20d?a=1&c=3'\\n || params.get('c') !== '3'\\n || String(new URLSearchParams('?a=1')) !== 'a=1'\\n || !params[ITERATOR]\\n // throws in Edge\\n || new URL('https://a@b').username !== 'a'\\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\\n // not punycoded in Edge\\n || new URL('http://тест').host !== 'xn--e1aybc'\\n // not escaped in Chrome 62-\\n || new URL('http://a#б').hash !== '#%D0%B1'\\n // fails in Chrome 66-\\n || result !== 'a1c3'\\n // throws in Safari\\n || new URL('http://x', undefined).host !== 'x';\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/url-constructor-detection.js?")}),"./node_modules/core-js/internals/use-symbol-as-uid.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable es/no-symbol -- required for testing */\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\n\\nmodule.exports = NATIVE_SYMBOL\\n && !Symbol.sham\\n && typeof Symbol.iterator == 'symbol';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/use-symbol-as-uid.js?")}),"./node_modules/core-js/internals/v8-prototype-define-bug.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// V8 ~ Chrome 36-\\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\\n value: 42,\\n writable: false\\n }).prototype != 42;\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/v8-prototype-define-bug.js?")}),"./node_modules/core-js/internals/validate-arguments-length.js":((module)=>{eval("\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (passed, required) {\\n if (passed < required) throw $TypeError('Not enough arguments');\\n return passed;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/validate-arguments-length.js?")}),"./node_modules/core-js/internals/weak-map-basic-detection.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\n\\nvar WeakMap = global.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/weak-map-basic-detection.js?")}),"./node_modules/core-js/internals/well-known-symbol.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar shared = __webpack_require__(/*! ../internals/shared */ \\"./node_modules/core-js/internals/shared.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\nvar USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ \\"./node_modules/core-js/internals/use-symbol-as-uid.js\\");\\n\\nvar Symbol = global.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n if (!hasOwn(WellKnownSymbolsStore, name)) {\\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n ? Symbol[name]\\n : createWellKnownSymbol('Symbol.' + name);\\n } return WellKnownSymbolsStore[name];\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/well-known-symbol.js?")}),"./node_modules/core-js/internals/whitespaces.js":((module)=>{eval("\\n// a string of all valid unicode whitespaces\\nmodule.exports = '\\\\u0009\\\\u000A\\\\u000B\\\\u000C\\\\u000D\\\\u0020\\\\u00A0\\\\u1680\\\\u2000\\\\u2001\\\\u2002' +\\n '\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF';\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/whitespaces.js?")}),"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \\"./node_modules/core-js/internals/proxy-accessor.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar installErrorCause = __webpack_require__(/*! ../internals/install-error-cause */ \\"./node_modules/core-js/internals/install-error-cause.js\\");\\nvar installErrorStack = __webpack_require__(/*! ../internals/error-stack-install */ \\"./node_modules/core-js/internals/error-stack-install.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\\n var path = FULL_NAME.split('.');\\n var ERROR_NAME = path[path.length - 1];\\n var OriginalError = getBuiltIn.apply(null, path);\\n\\n if (!OriginalError) return;\\n\\n var OriginalErrorPrototype = OriginalError.prototype;\\n\\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\\n\\n if (!FORCED) return OriginalError;\\n\\n var BaseError = getBuiltIn('Error');\\n\\n var WrappedError = wrapper(function (a, b) {\\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\\n installErrorStack(result, WrappedError, result.stack, 2);\\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\\n return result;\\n });\\n\\n WrappedError.prototype = OriginalErrorPrototype;\\n\\n if (ERROR_NAME !== 'Error') {\\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\\n }\\n\\n copyConstructorProperties(WrappedError, OriginalError);\\n\\n if (!IS_PURE) try {\\n // Safari 13- bug: WebAssembly errors does not have a proper \`.name\`\\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\\n }\\n OriginalErrorPrototype.constructor = WrappedError;\\n } catch (error) { /* empty */ }\\n\\n return WrappedError;\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js?")}),"./node_modules/core-js/modules/es.array-buffer.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar arrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\n\\nvar ARRAY_BUFFER = 'ArrayBuffer';\\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\\n\\n// \`ArrayBuffer\` constructor\\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\\n$({ global: true, constructor: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\\n ArrayBuffer: ArrayBuffer\\n});\\n\\nsetSpecies(ARRAY_BUFFER);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.constructor.js?")}),"./node_modules/core-js/modules/es.array-buffer.slice.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar ArrayBufferModule = __webpack_require__(/*! ../internals/array-buffer */ \\"./node_modules/core-js/internals/array-buffer.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \\"./node_modules/core-js/internals/to-absolute-index.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\n\\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\\nvar DataView = ArrayBufferModule.DataView;\\nvar DataViewPrototype = DataView.prototype;\\nvar nativeArrayBufferSlice = uncurryThis(ArrayBuffer.prototype.slice);\\nvar getUint8 = uncurryThis(DataViewPrototype.getUint8);\\nvar setUint8 = uncurryThis(DataViewPrototype.setUint8);\\n\\nvar INCORRECT_SLICE = fails(function () {\\n return !new ArrayBuffer(2).slice(1, undefined).byteLength;\\n});\\n\\n// \`ArrayBuffer.prototype.slice\` method\\n// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice\\n$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {\\n slice: function slice(start, end) {\\n if (nativeArrayBufferSlice && end === undefined) {\\n return nativeArrayBufferSlice(anObject(this), start); // FF fix\\n }\\n var length = anObject(this).byteLength;\\n var first = toAbsoluteIndex(start, length);\\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\\n var result = new (speciesConstructor(this, ArrayBuffer))(toLength(fin - first));\\n var viewSource = new DataView(this);\\n var viewTarget = new DataView(result);\\n var index = 0;\\n while (first < fin) {\\n setUint8(viewTarget, index++, getUint8(viewSource, first++));\\n } return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array-buffer.slice.js?")}),"./node_modules/core-js/modules/es.array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.at\\n$({ target: 'Array', proto: true }, {\\n at: function at(index) {\\n var O = toObject(this);\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : O[k];\\n }\\n});\\n\\naddToUnscopables('at');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.at.js?")}),"./node_modules/core-js/modules/es.array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLastIndex);\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.findLastIndex\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.findlastindex\\n$({ target: 'Array', proto: true }, {\\n findLastIndex: function findLastIndex(callbackfn /* , that = undefined */) {\\n return $findLastIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\naddToUnscopables('findLastIndex');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last-index.js?")}),"./node_modules/core-js/modules/es.array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLast);\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// \`Array.prototype.findLast\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.findlast\\n$({ target: 'Array', proto: true }, {\\n findLast: function findLast(callbackfn /* , that = undefined */) {\\n return $findLast(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\naddToUnscopables('findLast');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.find-last.js?")}),"./node_modules/core-js/modules/es.array.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar flattenIntoArray = __webpack_require__(/*! ../internals/flatten-into-array */ \\"./node_modules/core-js/internals/flatten-into-array.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ \\"./node_modules/core-js/internals/array-species-create.js\\");\\n\\n// \`Array.prototype.flatMap\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\\n$({ target: 'Array', proto: true }, {\\n flatMap: function flatMap(callbackfn /* , thisArg */) {\\n var O = toObject(this);\\n var sourceLen = lengthOfArrayLike(O);\\n var A;\\n aCallable(callbackfn);\\n A = arraySpeciesCreate(O, 0);\\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\\n return A;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.flat-map.js?")}),"./node_modules/core-js/modules/es.array.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $includes = (__webpack_require__(/*! ../internals/array-includes */ \\"./node_modules/core-js/internals/array-includes.js\\").includes);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// FF99+ bug\\nvar BROKEN_ON_SPARSE = fails(function () {\\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\\n return !Array(1).includes();\\n});\\n\\n// \`Array.prototype.includes\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.includes\\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\\n includes: function includes(el /* , fromIndex = 0 */) {\\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\\n }\\n});\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('includes');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.includes.js?")}),"./node_modules/core-js/modules/es.array.iterator.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \\"./node_modules/core-js/internals/iterators.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \\"./node_modules/core-js/internals/iterator-define.js\\");\\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \\"./node_modules/core-js/internals/create-iter-result-object.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar ARRAY_ITERATOR = 'Array Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\\n\\n// \`Array.prototype.entries\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.entries\\n// \`Array.prototype.keys\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.keys\\n// \`Array.prototype.values\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.values\\n// \`Array.prototype[@@iterator]\` method\\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\\n// \`CreateArrayIterator\` internal method\\n// https://tc39.es/ecma262/#sec-createarrayiterator\\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\\n setInternalState(this, {\\n type: ARRAY_ITERATOR,\\n target: toIndexedObject(iterated), // target\\n index: 0, // next index\\n kind: kind // kind\\n });\\n// \`%ArrayIteratorPrototype%.next\` method\\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\\n}, function () {\\n var state = getInternalState(this);\\n var target = state.target;\\n var kind = state.kind;\\n var index = state.index++;\\n if (!target || index >= target.length) {\\n state.target = undefined;\\n return createIterResultObject(undefined, true);\\n }\\n if (kind == 'keys') return createIterResultObject(index, false);\\n if (kind == 'values') return createIterResultObject(target[index], false);\\n return createIterResultObject([index, target[index]], false);\\n}, 'values');\\n\\n// argumentsList[@@iterator] is %ArrayProto_values%\\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\\nvar values = Iterators.Arguments = Iterators.Array;\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('keys');\\naddToUnscopables('values');\\naddToUnscopables('entries');\\n\\n// V8 ~ Chrome 45- bug\\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\\n defineProperty(values, 'name', { value: 'values' });\\n} catch (error) { /* empty */ }\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.iterator.js?")}),"./node_modules/core-js/modules/es.array.push.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ \\"./node_modules/core-js/internals/array-set-length.js\\");\\nvar doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ \\"./node_modules/core-js/internals/does-not-exceed-safe-integer.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n try {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty([], 'length', { writable: false }).push();\\n } catch (error) {\\n return error instanceof TypeError;\\n }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n// \`Array.prototype.push\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n push: function push(item) {\\n var O = toObject(this);\\n var len = lengthOfArrayLike(O);\\n var argCount = arguments.length;\\n doesNotExceedSafeInteger(len + argCount);\\n for (var i = 0; i < argCount; i++) {\\n O[len] = arguments[i];\\n len++;\\n }\\n setArrayLength(O, len);\\n return len;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.push.js?")}),"./node_modules/core-js/modules/es.array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar deletePropertyOrThrow = __webpack_require__(/*! ../internals/delete-property-or-throw */ \\"./node_modules/core-js/internals/delete-property-or-throw.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\nvar arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ \\"./node_modules/core-js/internals/array-method-is-strict.js\\");\\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \\"./node_modules/core-js/internals/engine-ff-version.js\\");\\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \\"./node_modules/core-js/internals/engine-is-ie-or-edge.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \\"./node_modules/core-js/internals/engine-webkit-version.js\\");\\n\\nvar test = [];\\nvar nativeSort = uncurryThis(test.sort);\\nvar push = uncurryThis(test.push);\\n\\n// IE8-\\nvar FAILS_ON_UNDEFINED = fails(function () {\\n test.sort(undefined);\\n});\\n// V8 bug\\nvar FAILS_ON_NULL = fails(function () {\\n test.sort(null);\\n});\\n// Old WebKit\\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\\n\\nvar STABLE_SORT = !fails(function () {\\n // feature detection can be too slow, so check engines versions\\n if (V8) return V8 < 70;\\n if (FF && FF > 3) return;\\n if (IE_OR_EDGE) return true;\\n if (WEBKIT) return WEBKIT < 603;\\n\\n var result = '';\\n var code, chr, value, index;\\n\\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\\n for (code = 65; code < 76; code++) {\\n chr = String.fromCharCode(code);\\n\\n switch (code) {\\n case 66: case 69: case 70: case 72: value = 3; break;\\n case 68: case 71: value = 4; break;\\n default: value = 2;\\n }\\n\\n for (index = 0; index < 47; index++) {\\n test.push({ k: chr + index, v: value });\\n }\\n }\\n\\n test.sort(function (a, b) { return b.v - a.v; });\\n\\n for (index = 0; index < test.length; index++) {\\n chr = test[index].k.charAt(0);\\n if (result.charAt(result.length - 1) !== chr) result += chr;\\n }\\n\\n return result !== 'DGBEFHACIJK';\\n});\\n\\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\\n\\nvar getSortCompare = function (comparefn) {\\n return function (x, y) {\\n if (y === undefined) return -1;\\n if (x === undefined) return 1;\\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\\n return toString(x) > toString(y) ? 1 : -1;\\n };\\n};\\n\\n// \`Array.prototype.sort\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.sort\\n$({ target: 'Array', proto: true, forced: FORCED }, {\\n sort: function sort(comparefn) {\\n if (comparefn !== undefined) aCallable(comparefn);\\n\\n var array = toObject(this);\\n\\n if (STABLE_SORT) return comparefn === undefined ? nativeSort(array) : nativeSort(array, comparefn);\\n\\n var items = [];\\n var arrayLength = lengthOfArrayLike(array);\\n var itemsLength, index;\\n\\n for (index = 0; index < arrayLength; index++) {\\n if (index in array) push(items, array[index]);\\n }\\n\\n internalSort(items, getSortCompare(comparefn));\\n\\n itemsLength = lengthOfArrayLike(items);\\n index = 0;\\n\\n while (index < itemsLength) array[index] = items[index++];\\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\\n\\n return array;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.sort.js?")}),"./node_modules/core-js/modules/es.array.unscopables.flat-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// this method was added to unscopables after implementation\\n// in popular engines, so it's moved to a separate module\\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \\"./node_modules/core-js/internals/add-to-unscopables.js\\");\\n\\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\\naddToUnscopables('flatMap');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.unscopables.flat-map.js?")}),"./node_modules/core-js/modules/es.array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \\"./node_modules/core-js/internals/array-with.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \\"./node_modules/core-js/internals/to-indexed-object.js\\");\\n\\nvar $Array = Array;\\n\\n// \`Array.prototype.with\` method\\n// https://tc39.es/ecma262/#sec-array.prototype.with\\n$({ target: 'Array', proto: true }, {\\n 'with': function (index, value) {\\n return arrayWith(toIndexedObject(this), $Array, index, value);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.array.with.js?")}),"./node_modules/core-js/modules/es.error.cause.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n/* eslint-disable no-unused-vars -- required for functions \`.length\` */\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar wrapErrorConstructorWithCause = __webpack_require__(/*! ../internals/wrap-error-constructor-with-cause */ \\"./node_modules/core-js/internals/wrap-error-constructor-with-cause.js\\");\\n\\nvar WEB_ASSEMBLY = 'WebAssembly';\\nvar WebAssembly = global[WEB_ASSEMBLY];\\n\\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\\n\\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\\n var O = {};\\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\\n};\\n\\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\\n var O = {};\\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\\n }\\n};\\n\\n// https://tc39.es/ecma262/#sec-nativeerror\\nexportGlobalErrorCauseWrapper('Error', function (init) {\\n return function Error(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\\n return function EvalError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\\n return function RangeError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\\n return function ReferenceError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\\n return function SyntaxError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\\n return function TypeError(message) { return apply(init, this, arguments); };\\n});\\nexportGlobalErrorCauseWrapper('URIError', function (init) {\\n return function URIError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\\n return function CompileError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\\n return function LinkError(message) { return apply(init, this, arguments); };\\n});\\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\\n return function RuntimeError(message) { return apply(init, this, arguments); };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.error.cause.js?")}),"./node_modules/core-js/modules/es.global-this.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\n\\n// \`globalThis\` object\\n// https://tc39.es/ecma262/#sec-globalthis\\n$({ global: true, forced: global.globalThis !== global }, {\\n globalThis: global\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.global-this.js?")}),"./node_modules/core-js/modules/es.json.stringify.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\nvar getReplacerFunction = __webpack_require__(/*! ../internals/get-json-replacer-function */ \\"./node_modules/core-js/internals/get-json-replacer-function.js\\");\\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ \\"./node_modules/core-js/internals/symbol-constructor-detection.js\\");\\n\\nvar $String = String;\\nvar $stringify = getBuiltIn('JSON', 'stringify');\\nvar exec = uncurryThis(/./.exec);\\nvar charAt = uncurryThis(''.charAt);\\nvar charCodeAt = uncurryThis(''.charCodeAt);\\nvar replace = uncurryThis(''.replace);\\nvar numberToString = uncurryThis(1.0.toString);\\n\\nvar tester = /[\\\\uD800-\\\\uDFFF]/g;\\nvar low = /^[\\\\uD800-\\\\uDBFF]$/;\\nvar hi = /^[\\\\uDC00-\\\\uDFFF]$/;\\n\\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\\n var symbol = getBuiltIn('Symbol')();\\n // MS Edge converts symbol values to JSON as {}\\n return $stringify([symbol]) != '[null]'\\n // WebKit converts symbol values to JSON as null\\n || $stringify({ a: symbol }) != '{}'\\n // V8 throws on boxed symbols\\n || $stringify(Object(symbol)) != '{}';\\n});\\n\\n// https://github.com/tc39/proposal-well-formed-stringify\\nvar ILL_FORMED_UNICODE = fails(function () {\\n return $stringify('\\\\uDF06\\\\uD834') !== '\\"\\\\\\\\udf06\\\\\\\\ud834\\"'\\n || $stringify('\\\\uDEAD') !== '\\"\\\\\\\\udead\\"';\\n});\\n\\nvar stringifyWithSymbolsFix = function (it, replacer) {\\n var args = arraySlice(arguments);\\n var $replacer = getReplacerFunction(replacer);\\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\\n args[1] = function (key, value) {\\n // some old implementations (like WebKit) could pass numbers as keys\\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\\n if (!isSymbol(value)) return value;\\n };\\n return apply($stringify, null, args);\\n};\\n\\nvar fixIllFormed = function (match, offset, string) {\\n var prev = charAt(string, offset - 1);\\n var next = charAt(string, offset + 1);\\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\\n return '\\\\\\\\u' + numberToString(charCodeAt(match, 0), 16);\\n } return match;\\n};\\n\\nif ($stringify) {\\n // \`JSON.stringify\` method\\n // https://tc39.es/ecma262/#sec-json.stringify\\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n stringify: function stringify(it, replacer, space) {\\n var args = arraySlice(arguments);\\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.json.stringify.js?")}),"./node_modules/core-js/modules/es.math.hypot.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\n\\n// eslint-disable-next-line es/no-math-hypot -- required for testing\\nvar $hypot = Math.hypot;\\nvar abs = Math.abs;\\nvar sqrt = Math.sqrt;\\n\\n// Chrome 77 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=9546\\nvar FORCED = !!$hypot && $hypot(Infinity, NaN) !== Infinity;\\n\\n// \`Math.hypot\` method\\n// https://tc39.es/ecma262/#sec-math.hypot\\n$({ target: 'Math', stat: true, arity: 2, forced: FORCED }, {\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n hypot: function hypot(value1, value2) {\\n var sum = 0;\\n var i = 0;\\n var aLen = arguments.length;\\n var larg = 0;\\n var arg, div;\\n while (i < aLen) {\\n arg = abs(arguments[i++]);\\n if (larg < arg) {\\n div = larg / arg;\\n sum = sum * div * div + 1;\\n larg = arg;\\n } else if (arg > 0) {\\n div = arg / larg;\\n sum += div * div;\\n } else sum += arg;\\n }\\n return larg === Infinity ? Infinity : larg * sqrt(sum);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.math.hypot.js?")}),"./node_modules/core-js/modules/es.number.to-fixed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar thisNumberValue = __webpack_require__(/*! ../internals/this-number-value */ \\"./node_modules/core-js/internals/this-number-value.js\\");\\nvar $repeat = __webpack_require__(/*! ../internals/string-repeat */ \\"./node_modules/core-js/internals/string-repeat.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar $RangeError = RangeError;\\nvar $String = String;\\nvar floor = Math.floor;\\nvar repeat = uncurryThis($repeat);\\nvar stringSlice = uncurryThis(''.slice);\\nvar nativeToFixed = uncurryThis(1.0.toFixed);\\n\\nvar pow = function (x, n, acc) {\\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\\n};\\n\\nvar log = function (x) {\\n var n = 0;\\n var x2 = x;\\n while (x2 >= 4096) {\\n n += 12;\\n x2 /= 4096;\\n }\\n while (x2 >= 2) {\\n n += 1;\\n x2 /= 2;\\n } return n;\\n};\\n\\nvar multiply = function (data, n, c) {\\n var index = -1;\\n var c2 = c;\\n while (++index < 6) {\\n c2 += n * data[index];\\n data[index] = c2 % 1e7;\\n c2 = floor(c2 / 1e7);\\n }\\n};\\n\\nvar divide = function (data, n) {\\n var index = 6;\\n var c = 0;\\n while (--index >= 0) {\\n c += data[index];\\n data[index] = floor(c / n);\\n c = (c % n) * 1e7;\\n }\\n};\\n\\nvar dataToString = function (data) {\\n var index = 6;\\n var s = '';\\n while (--index >= 0) {\\n if (s !== '' || index === 0 || data[index] !== 0) {\\n var t = $String(data[index]);\\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\\n }\\n } return s;\\n};\\n\\nvar FORCED = fails(function () {\\n return nativeToFixed(0.00008, 3) !== '0.000' ||\\n nativeToFixed(0.9, 0) !== '1' ||\\n nativeToFixed(1.255, 2) !== '1.25' ||\\n nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\\n}) || !fails(function () {\\n // V8 ~ Android 4.3-\\n nativeToFixed({});\\n});\\n\\n// \`Number.prototype.toFixed\` method\\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\\n$({ target: 'Number', proto: true, forced: FORCED }, {\\n toFixed: function toFixed(fractionDigits) {\\n var number = thisNumberValue(this);\\n var fractDigits = toIntegerOrInfinity(fractionDigits);\\n var data = [0, 0, 0, 0, 0, 0];\\n var sign = '';\\n var result = '0';\\n var e, z, j, k;\\n\\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (number != number) return 'NaN';\\n if (number <= -1e21 || number >= 1e21) return $String(number);\\n if (number < 0) {\\n sign = '-';\\n number = -number;\\n }\\n if (number > 1e-21) {\\n e = log(number * pow(2, 69, 1)) - 69;\\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\\n z *= 0x10000000000000;\\n e = 52 - e;\\n if (e > 0) {\\n multiply(data, 0, z);\\n j = fractDigits;\\n while (j >= 7) {\\n multiply(data, 1e7, 0);\\n j -= 7;\\n }\\n multiply(data, pow(10, j, 1), 0);\\n j = e - 1;\\n while (j >= 23) {\\n divide(data, 1 << 23);\\n j -= 23;\\n }\\n divide(data, 1 << j);\\n multiply(data, 1, 1);\\n divide(data, 2);\\n result = dataToString(data);\\n } else {\\n multiply(data, 0, z);\\n multiply(data, 1 << -e, 0);\\n result = dataToString(data) + repeat('0', fractDigits);\\n }\\n }\\n if (fractDigits > 0) {\\n k = result.length;\\n result = sign + (k <= fractDigits\\n ? '0.' + repeat('0', fractDigits - k) + result\\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\\n } else {\\n result = sign + result;\\n } return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.number.to-fixed.js?")}),"./node_modules/core-js/modules/es.object.assign.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \\"./node_modules/core-js/internals/object-assign.js\\");\\n\\n// \`Object.assign\` method\\n// https://tc39.es/ecma262/#sec-object.assign\\n// eslint-disable-next-line es/no-object-assign -- required for testing\\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\\n assign: assign\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.assign.js?")}),"./node_modules/core-js/modules/es.object.has-own.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\n\\n// \`Object.hasOwn\` method\\n// https://tc39.es/ecma262/#sec-object.hasown\\n$({ target: 'Object', stat: true }, {\\n hasOwn: hasOwn\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.object.has-own.js?")}),"./node_modules/core-js/modules/es.parse-float.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $parseFloat = __webpack_require__(/*! ../internals/number-parse-float */ \\"./node_modules/core-js/internals/number-parse-float.js\\");\\n\\n// \`parseFloat\` method\\n// https://tc39.es/ecma262/#sec-parsefloat-string\\n$({ global: true, forced: parseFloat != $parseFloat }, {\\n parseFloat: $parseFloat\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-float.js?")}),"./node_modules/core-js/modules/es.parse-int.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $parseInt = __webpack_require__(/*! ../internals/number-parse-int */ \\"./node_modules/core-js/internals/number-parse-int.js\\");\\n\\n// \`parseInt\` method\\n// https://tc39.es/ecma262/#sec-parseint-string-radix\\n$({ global: true, forced: parseInt != $parseInt }, {\\n parseInt: $parseInt\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.parse-int.js?")}),"./node_modules/core-js/modules/es.promise.all-settled.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.allSettled\` method\\n// https://tc39.es/ecma262/#sec-promise.allsettled\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n allSettled: function allSettled(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var resolve = capability.resolve;\\n var reject = capability.reject;\\n var result = perform(function () {\\n var promiseResolve = aCallable(C.resolve);\\n var values = [];\\n var counter = 0;\\n var remaining = 1;\\n iterate(iterable, function (promise) {\\n var index = counter++;\\n var alreadyCalled = false;\\n remaining++;\\n call(promiseResolve, C, promise).then(function (value) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = { status: 'fulfilled', value: value };\\n --remaining || resolve(values);\\n }, function (error) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = { status: 'rejected', reason: error };\\n --remaining || resolve(values);\\n });\\n });\\n --remaining || resolve(values);\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all-settled.js?")}),"./node_modules/core-js/modules/es.promise.all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.all\` method\\n// https://tc39.es/ecma262/#sec-promise.all\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n all: function all(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var resolve = capability.resolve;\\n var reject = capability.reject;\\n var result = perform(function () {\\n var $promiseResolve = aCallable(C.resolve);\\n var values = [];\\n var counter = 0;\\n var remaining = 1;\\n iterate(iterable, function (promise) {\\n var index = counter++;\\n var alreadyCalled = false;\\n remaining++;\\n call($promiseResolve, C, promise).then(function (value) {\\n if (alreadyCalled) return;\\n alreadyCalled = true;\\n values[index] = value;\\n --remaining || resolve(values);\\n }, reject);\\n });\\n --remaining || resolve(values);\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.all.js?")}),"./node_modules/core-js/modules/es.promise.catch.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\n\\n// \`Promise.prototype.catch\` method\\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\\n 'catch': function (onRejected) {\\n return this.then(undefined, onRejected);\\n }\\n});\\n\\n// makes sure that native promise-based APIs \`Promise#catch\` properly works with patched \`Promise#then\`\\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\\n var method = getBuiltIn('Promise').prototype['catch'];\\n if (NativePromisePrototype['catch'] !== method) {\\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.catch.js?")}),"./node_modules/core-js/modules/es.promise.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ \\"./node_modules/core-js/internals/engine-is-node.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \\"./node_modules/core-js/internals/object-set-prototype-of.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar task = (__webpack_require__(/*! ../internals/task */ \\"./node_modules/core-js/internals/task.js\\").set);\\nvar microtask = __webpack_require__(/*! ../internals/microtask */ \\"./node_modules/core-js/internals/microtask.js\\");\\nvar hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ \\"./node_modules/core-js/internals/host-report-errors.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar Queue = __webpack_require__(/*! ../internals/queue */ \\"./node_modules/core-js/internals/queue.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar PromiseConstructorDetection = __webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\n\\nvar PROMISE = 'Promise';\\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\\nvar setInternalState = InternalStateModule.set;\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\nvar PromiseConstructor = NativePromiseConstructor;\\nvar PromisePrototype = NativePromisePrototype;\\nvar TypeError = global.TypeError;\\nvar document = global.document;\\nvar process = global.process;\\nvar newPromiseCapability = newPromiseCapabilityModule.f;\\nvar newGenericPromiseCapability = newPromiseCapability;\\n\\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\\nvar UNHANDLED_REJECTION = 'unhandledrejection';\\nvar REJECTION_HANDLED = 'rejectionhandled';\\nvar PENDING = 0;\\nvar FULFILLED = 1;\\nvar REJECTED = 2;\\nvar HANDLED = 1;\\nvar UNHANDLED = 2;\\n\\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\\n\\n// helpers\\nvar isThenable = function (it) {\\n var then;\\n return isObject(it) && isCallable(then = it.then) ? then : false;\\n};\\n\\nvar callReaction = function (reaction, state) {\\n var value = state.value;\\n var ok = state.state == FULFILLED;\\n var handler = ok ? reaction.ok : reaction.fail;\\n var resolve = reaction.resolve;\\n var reject = reaction.reject;\\n var domain = reaction.domain;\\n var result, then, exited;\\n try {\\n if (handler) {\\n if (!ok) {\\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\\n state.rejection = HANDLED;\\n }\\n if (handler === true) result = value;\\n else {\\n if (domain) domain.enter();\\n result = handler(value); // can throw\\n if (domain) {\\n domain.exit();\\n exited = true;\\n }\\n }\\n if (result === reaction.promise) {\\n reject(TypeError('Promise-chain cycle'));\\n } else if (then = isThenable(result)) {\\n call(then, result, resolve, reject);\\n } else resolve(result);\\n } else reject(value);\\n } catch (error) {\\n if (domain && !exited) domain.exit();\\n reject(error);\\n }\\n};\\n\\nvar notify = function (state, isReject) {\\n if (state.notified) return;\\n state.notified = true;\\n microtask(function () {\\n var reactions = state.reactions;\\n var reaction;\\n while (reaction = reactions.get()) {\\n callReaction(reaction, state);\\n }\\n state.notified = false;\\n if (isReject && !state.rejection) onUnhandled(state);\\n });\\n};\\n\\nvar dispatchEvent = function (name, promise, reason) {\\n var event, handler;\\n if (DISPATCH_EVENT) {\\n event = document.createEvent('Event');\\n event.promise = promise;\\n event.reason = reason;\\n event.initEvent(name, false, true);\\n global.dispatchEvent(event);\\n } else event = { promise: promise, reason: reason };\\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\\n};\\n\\nvar onUnhandled = function (state) {\\n call(task, global, function () {\\n var promise = state.facade;\\n var value = state.value;\\n var IS_UNHANDLED = isUnhandled(state);\\n var result;\\n if (IS_UNHANDLED) {\\n result = perform(function () {\\n if (IS_NODE) {\\n process.emit('unhandledRejection', value, promise);\\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\\n });\\n // Browsers should not trigger \`rejectionHandled\` event if it was handled here, NodeJS - should\\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\\n if (result.error) throw result.value;\\n }\\n });\\n};\\n\\nvar isUnhandled = function (state) {\\n return state.rejection !== HANDLED && !state.parent;\\n};\\n\\nvar onHandleUnhandled = function (state) {\\n call(task, global, function () {\\n var promise = state.facade;\\n if (IS_NODE) {\\n process.emit('rejectionHandled', promise);\\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\\n });\\n};\\n\\nvar bind = function (fn, state, unwrap) {\\n return function (value) {\\n fn(state, value, unwrap);\\n };\\n};\\n\\nvar internalReject = function (state, value, unwrap) {\\n if (state.done) return;\\n state.done = true;\\n if (unwrap) state = unwrap;\\n state.value = value;\\n state.state = REJECTED;\\n notify(state, true);\\n};\\n\\nvar internalResolve = function (state, value, unwrap) {\\n if (state.done) return;\\n state.done = true;\\n if (unwrap) state = unwrap;\\n try {\\n if (state.facade === value) throw TypeError(\\"Promise can't be resolved itself\\");\\n var then = isThenable(value);\\n if (then) {\\n microtask(function () {\\n var wrapper = { done: false };\\n try {\\n call(then, value,\\n bind(internalResolve, wrapper, state),\\n bind(internalReject, wrapper, state)\\n );\\n } catch (error) {\\n internalReject(wrapper, error, state);\\n }\\n });\\n } else {\\n state.value = value;\\n state.state = FULFILLED;\\n notify(state, false);\\n }\\n } catch (error) {\\n internalReject({ done: false }, error, state);\\n }\\n};\\n\\n// constructor polyfill\\nif (FORCED_PROMISE_CONSTRUCTOR) {\\n // 25.4.3.1 Promise(executor)\\n PromiseConstructor = function Promise(executor) {\\n anInstance(this, PromisePrototype);\\n aCallable(executor);\\n call(Internal, this);\\n var state = getInternalPromiseState(this);\\n try {\\n executor(bind(internalResolve, state), bind(internalReject, state));\\n } catch (error) {\\n internalReject(state, error);\\n }\\n };\\n\\n PromisePrototype = PromiseConstructor.prototype;\\n\\n // eslint-disable-next-line no-unused-vars -- required for \`.length\`\\n Internal = function Promise(executor) {\\n setInternalState(this, {\\n type: PROMISE,\\n done: false,\\n notified: false,\\n parent: false,\\n reactions: new Queue(),\\n rejection: false,\\n state: PENDING,\\n value: undefined\\n });\\n };\\n\\n // \`Promise.prototype.then\` method\\n // https://tc39.es/ecma262/#sec-promise.prototype.then\\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\\n var state = getInternalPromiseState(this);\\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\\n state.parent = true;\\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\\n reaction.fail = isCallable(onRejected) && onRejected;\\n reaction.domain = IS_NODE ? process.domain : undefined;\\n if (state.state == PENDING) state.reactions.add(reaction);\\n else microtask(function () {\\n callReaction(reaction, state);\\n });\\n return reaction.promise;\\n });\\n\\n OwnPromiseCapability = function () {\\n var promise = new Internal();\\n var state = getInternalPromiseState(promise);\\n this.promise = promise;\\n this.resolve = bind(internalResolve, state);\\n this.reject = bind(internalReject, state);\\n };\\n\\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\\n return C === PromiseConstructor || C === PromiseWrapper\\n ? new OwnPromiseCapability(C)\\n : newGenericPromiseCapability(C);\\n };\\n\\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\\n nativeThen = NativePromisePrototype.then;\\n\\n if (!NATIVE_PROMISE_SUBCLASSING) {\\n // make \`Promise#then\` return a polyfilled \`Promise\` for native promise-based APIs\\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\\n var that = this;\\n return new PromiseConstructor(function (resolve, reject) {\\n call(nativeThen, that, resolve, reject);\\n }).then(onFulfilled, onRejected);\\n // https://github.com/zloirock/core-js/issues/640\\n }, { unsafe: true });\\n }\\n\\n // make \`.constructor === Promise\` work for native promise-based APIs\\n try {\\n delete NativePromisePrototype.constructor;\\n } catch (error) { /* empty */ }\\n\\n // make \`instanceof Promise\` work for native promise-based APIs\\n if (setPrototypeOf) {\\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\\n }\\n }\\n}\\n\\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\\n Promise: PromiseConstructor\\n});\\n\\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\\nsetSpecies(PROMISE);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.constructor.js?")}),"./node_modules/core-js/modules/es.promise.finally.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \\"./node_modules/core-js/internals/promise-resolve.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\n\\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\\n\\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\\n});\\n\\n// \`Promise.prototype.finally\` method\\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\\n 'finally': function (onFinally) {\\n var C = speciesConstructor(this, getBuiltIn('Promise'));\\n var isFunction = isCallable(onFinally);\\n return this.then(\\n isFunction ? function (x) {\\n return promiseResolve(C, onFinally()).then(function () { return x; });\\n } : onFinally,\\n isFunction ? function (e) {\\n return promiseResolve(C, onFinally()).then(function () { throw e; });\\n } : onFinally\\n );\\n }\\n});\\n\\n// makes sure that native promise-based APIs \`Promise#finally\` properly works with patched \`Promise#then\`\\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\\n var method = getBuiltIn('Promise').prototype['finally'];\\n if (NativePromisePrototype['finally'] !== method) {\\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.finally.js?")}),"./node_modules/core-js/modules/es.promise.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's split to modules listed below\\n__webpack_require__(/*! ../modules/es.promise.constructor */ \\"./node_modules/core-js/modules/es.promise.constructor.js\\");\\n__webpack_require__(/*! ../modules/es.promise.all */ \\"./node_modules/core-js/modules/es.promise.all.js\\");\\n__webpack_require__(/*! ../modules/es.promise.catch */ \\"./node_modules/core-js/modules/es.promise.catch.js\\");\\n__webpack_require__(/*! ../modules/es.promise.race */ \\"./node_modules/core-js/modules/es.promise.race.js\\");\\n__webpack_require__(/*! ../modules/es.promise.reject */ \\"./node_modules/core-js/modules/es.promise.reject.js\\");\\n__webpack_require__(/*! ../modules/es.promise.resolve */ \\"./node_modules/core-js/modules/es.promise.resolve.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.js?")}),"./node_modules/core-js/modules/es.promise.race.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar perform = __webpack_require__(/*! ../internals/perform */ \\"./node_modules/core-js/internals/perform.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(/*! ../internals/promise-statics-incorrect-iteration */ \\"./node_modules/core-js/internals/promise-statics-incorrect-iteration.js\\");\\n\\n// \`Promise.race\` method\\n// https://tc39.es/ecma262/#sec-promise.race\\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\\n race: function race(iterable) {\\n var C = this;\\n var capability = newPromiseCapabilityModule.f(C);\\n var reject = capability.reject;\\n var result = perform(function () {\\n var $promiseResolve = aCallable(C.resolve);\\n iterate(iterable, function (promise) {\\n call($promiseResolve, C, promise).then(capability.resolve, reject);\\n });\\n });\\n if (result.error) reject(result.value);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.race.js?")}),"./node_modules/core-js/modules/es.promise.reject.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ \\"./node_modules/core-js/internals/new-promise-capability.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\n\\n// \`Promise.reject\` method\\n// https://tc39.es/ecma262/#sec-promise.reject\\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\\n reject: function reject(r) {\\n var capability = newPromiseCapabilityModule.f(this);\\n call(capability.reject, undefined, r);\\n return capability.promise;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.reject.js?")}),"./node_modules/core-js/modules/es.promise.resolve.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar NativePromiseConstructor = __webpack_require__(/*! ../internals/promise-native-constructor */ \\"./node_modules/core-js/internals/promise-native-constructor.js\\");\\nvar FORCED_PROMISE_CONSTRUCTOR = (__webpack_require__(/*! ../internals/promise-constructor-detection */ \\"./node_modules/core-js/internals/promise-constructor-detection.js\\").CONSTRUCTOR);\\nvar promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ \\"./node_modules/core-js/internals/promise-resolve.js\\");\\n\\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\\n\\n// \`Promise.resolve\` method\\n// https://tc39.es/ecma262/#sec-promise.resolve\\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\\n resolve: function resolve(x) {\\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.promise.resolve.js?")}),"./node_modules/core-js/modules/es.reflect.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\n\\n$({ global: true }, { Reflect: {} });\\n\\n// Reflect[@@toStringTag] property\\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\\nsetToStringTag(global.Reflect, 'Reflect', true);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.reflect.to-string-tag.js?")}),"./node_modules/core-js/modules/es.regexp.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \\"./node_modules/core-js/internals/is-forced.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar getOwnPropertyNames = (__webpack_require__(/*! ../internals/object-get-own-property-names */ \\"./node_modules/core-js/internals/object-get-own-property-names.js\\").f);\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar proxyAccessor = __webpack_require__(/*! ../internals/proxy-accessor */ \\"./node_modules/core-js/internals/proxy-accessor.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").enforce);\\nvar setSpecies = __webpack_require__(/*! ../internals/set-species */ \\"./node_modules/core-js/internals/set-species.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ \\"./node_modules/core-js/internals/regexp-unsupported-ncg.js\\");\\n\\nvar MATCH = wellKnownSymbol('match');\\nvar NativeRegExp = global.RegExp;\\nvar RegExpPrototype = NativeRegExp.prototype;\\nvar SyntaxError = global.SyntaxError;\\nvar exec = uncurryThis(RegExpPrototype.exec);\\nvar charAt = uncurryThis(''.charAt);\\nvar replace = uncurryThis(''.replace);\\nvar stringIndexOf = uncurryThis(''.indexOf);\\nvar stringSlice = uncurryThis(''.slice);\\n// TODO: Use only proper RegExpIdentifierName\\nvar IS_NCG = /^\\\\?<[^\\\\s\\\\d!#%&*+<=>@^][^\\\\s!#%&*+<=>@^]*>/;\\nvar re1 = /a/g;\\nvar re2 = /a/g;\\n\\n// \\"new\\" should create a new object, old webkit bug\\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\\n\\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\\n\\nvar BASE_FORCED = DESCRIPTORS &&\\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\\n re2[MATCH] = false;\\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\\n }));\\n\\nvar handleDotAll = function (string) {\\n var length = string.length;\\n var index = 0;\\n var result = '';\\n var brackets = false;\\n var chr;\\n for (; index <= length; index++) {\\n chr = charAt(string, index);\\n if (chr === '\\\\\\\\') {\\n result += chr + charAt(string, ++index);\\n continue;\\n }\\n if (!brackets && chr === '.') {\\n result += '[\\\\\\\\s\\\\\\\\S]';\\n } else {\\n if (chr === '[') {\\n brackets = true;\\n } else if (chr === ']') {\\n brackets = false;\\n } result += chr;\\n }\\n } return result;\\n};\\n\\nvar handleNCG = function (string) {\\n var length = string.length;\\n var index = 0;\\n var result = '';\\n var named = [];\\n var names = {};\\n var brackets = false;\\n var ncg = false;\\n var groupid = 0;\\n var groupname = '';\\n var chr;\\n for (; index <= length; index++) {\\n chr = charAt(string, index);\\n if (chr === '\\\\\\\\') {\\n chr = chr + charAt(string, ++index);\\n } else if (chr === ']') {\\n brackets = false;\\n } else if (!brackets) switch (true) {\\n case chr === '[':\\n brackets = true;\\n break;\\n case chr === '(':\\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\\n index += 2;\\n ncg = true;\\n }\\n result += chr;\\n groupid++;\\n continue;\\n case chr === '>' && ncg:\\n if (groupname === '' || hasOwn(names, groupname)) {\\n throw new SyntaxError('Invalid capture group name');\\n }\\n names[groupname] = true;\\n named[named.length] = [groupname, groupid];\\n ncg = false;\\n groupname = '';\\n continue;\\n }\\n if (ncg) groupname += chr;\\n else result += chr;\\n } return [result, named];\\n};\\n\\n// \`RegExp\` constructor\\n// https://tc39.es/ecma262/#sec-regexp-constructor\\nif (isForced('RegExp', BASE_FORCED)) {\\n var RegExpWrapper = function RegExp(pattern, flags) {\\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\\n var patternIsRegExp = isRegExp(pattern);\\n var flagsAreUndefined = flags === undefined;\\n var groups = [];\\n var rawPattern = pattern;\\n var rawFlags, dotAll, sticky, handled, result, state;\\n\\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\\n return pattern;\\n }\\n\\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\\n pattern = pattern.source;\\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\\n }\\n\\n pattern = pattern === undefined ? '' : toString(pattern);\\n flags = flags === undefined ? '' : toString(flags);\\n rawPattern = pattern;\\n\\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\\n if (dotAll) flags = replace(flags, /s/g, '');\\n }\\n\\n rawFlags = flags;\\n\\n if (MISSED_STICKY && 'sticky' in re1) {\\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\\n }\\n\\n if (UNSUPPORTED_NCG) {\\n handled = handleNCG(pattern);\\n pattern = handled[0];\\n groups = handled[1];\\n }\\n\\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\\n\\n if (dotAll || sticky || groups.length) {\\n state = enforceInternalState(result);\\n if (dotAll) {\\n state.dotAll = true;\\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\\n }\\n if (sticky) state.sticky = true;\\n if (groups.length) state.groups = groups;\\n }\\n\\n if (pattern !== rawPattern) try {\\n // fails in old engines, but we have no alternatives for unsupported regex syntax\\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\\n } catch (error) { /* empty */ }\\n\\n return result;\\n };\\n\\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\\n }\\n\\n RegExpPrototype.constructor = RegExpWrapper;\\n RegExpWrapper.prototype = RegExpPrototype;\\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\\n}\\n\\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\\nsetSpecies('RegExp');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.constructor.js?")}),"./node_modules/core-js/modules/es.regexp.dot-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ \\"./node_modules/core-js/internals/regexp-unsupported-dot-all.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \\"./node_modules/core-js/internals/classof-raw.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar getInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").get);\\n\\nvar RegExpPrototype = RegExp.prototype;\\nvar $TypeError = TypeError;\\n\\n// \`RegExp.prototype.dotAll\` getter\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\\n configurable: true,\\n get: function dotAll() {\\n if (this === RegExpPrototype) return undefined;\\n // We can't use InternalStateModule.getterFor because\\n // we don't add metadata for regexps created by a literal.\\n if (classof(this) === 'RegExp') {\\n return !!getInternalState(this).dotAll;\\n }\\n throw $TypeError('Incompatible receiver, RegExp required');\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.dot-all.js?")}),"./node_modules/core-js/modules/es.regexp.exec.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar exec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\n\\n// \`RegExp.prototype.exec\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\\n exec: exec\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.exec.js?")}),"./node_modules/core-js/modules/es.regexp.flags.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar regExpFlags = __webpack_require__(/*! ../internals/regexp-flags */ \\"./node_modules/core-js/internals/regexp-flags.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\\nvar RegExp = global.RegExp;\\nvar RegExpPrototype = RegExp.prototype;\\n\\nvar FORCED = DESCRIPTORS && fails(function () {\\n var INDICES_SUPPORT = true;\\n try {\\n RegExp('.', 'd');\\n } catch (error) {\\n INDICES_SUPPORT = false;\\n }\\n\\n var O = {};\\n // modern V8 bug\\n var calls = '';\\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\\n\\n var addGetter = function (key, chr) {\\n // eslint-disable-next-line es/no-object-defineproperty -- safe\\n Object.defineProperty(O, key, { get: function () {\\n calls += chr;\\n return true;\\n } });\\n };\\n\\n var pairs = {\\n dotAll: 's',\\n global: 'g',\\n ignoreCase: 'i',\\n multiline: 'm',\\n sticky: 'y'\\n };\\n\\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\\n\\n for (var key in pairs) addGetter(key, pairs[key]);\\n\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\\n\\n return result !== expected || calls !== expected;\\n});\\n\\n// \`RegExp.prototype.flags\` getter\\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\\n configurable: true,\\n get: regExpFlags\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.flags.js?")}),"./node_modules/core-js/modules/es.regexp.test.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove from \`core-js@4\` since it's moved to entry points\\n__webpack_require__(/*! ../modules/es.regexp.exec */ \\"./node_modules/core-js/modules/es.regexp.exec.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\n\\nvar DELEGATES_TO_EXEC = function () {\\n var execCalled = false;\\n var re = /[ac]/;\\n re.exec = function () {\\n execCalled = true;\\n return /./.exec.apply(this, arguments);\\n };\\n return re.test('abc') === true && execCalled;\\n}();\\n\\nvar nativeTest = /./.test;\\n\\n// \`RegExp.prototype.test\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\\n test: function (S) {\\n var R = anObject(this);\\n var string = toString(S);\\n var exec = R.exec;\\n if (!isCallable(exec)) return call(nativeTest, R, string);\\n var result = call(exec, R, string);\\n if (result === null) return false;\\n anObject(result);\\n return true;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.test.js?")}),"./node_modules/core-js/modules/es.regexp.to-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ \\"./node_modules/core-js/internals/function-name.js\\").PROPER);\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\n\\nvar TO_STRING = 'toString';\\nvar RegExpPrototype = RegExp.prototype;\\nvar nativeToString = RegExpPrototype[TO_STRING];\\n\\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\\n// FF44- RegExp#toString has a wrong name\\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;\\n\\n// \`RegExp.prototype.toString\` method\\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\\nif (NOT_GENERIC || INCORRECT_NAME) {\\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\\n var R = anObject(this);\\n var pattern = $toString(R.source);\\n var flags = $toString(getRegExpFlags(R));\\n return '/' + pattern + '/' + flags;\\n }, { unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.regexp.to-string.js?")}),"./node_modules/core-js/modules/es.string.at-alternative.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar charAt = uncurryThis(''.charAt);\\n\\nvar FORCED = fails(function () {\\n // eslint-disable-next-line es/no-array-string-prototype-at -- safe\\n return '𠮷'.at(-2) !== '\\\\uD842';\\n});\\n\\n// \`String.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.at\\n$({ target: 'String', proto: true, forced: FORCED }, {\\n at: function at(index) {\\n var S = toString(requireObjectCoercible(this));\\n var len = S.length;\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : charAt(S, k);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.at-alternative.js?")}),"./node_modules/core-js/modules/es.string.ends-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\n// eslint-disable-next-line es/no-string-prototype-endswith -- safe\\nvar nativeEndsWith = uncurryThis(''.endsWith);\\nvar slice = uncurryThis(''.slice);\\nvar min = Math.min;\\n\\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\\n// https://github.com/zloirock/core-js/pull/702\\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\\n return descriptor && !descriptor.writable;\\n}();\\n\\n// \`String.prototype.endsWith\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\\n var that = toString(requireObjectCoercible(this));\\n notARegExp(searchString);\\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\\n var len = that.length;\\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\\n var search = toString(searchString);\\n return nativeEndsWith\\n ? nativeEndsWith(that, search, end)\\n : slice(that, end - search.length, end) === search;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.ends-with.js?")}),"./node_modules/core-js/modules/es.string.includes.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\n\\nvar stringIndexOf = uncurryThis(''.indexOf);\\n\\n// \`String.prototype.includes\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.includes\\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\\n includes: function includes(searchString /* , position = 0 */) {\\n return !!~stringIndexOf(\\n toString(requireObjectCoercible(this)),\\n toString(notARegExp(searchString)),\\n arguments.length > 1 ? arguments[1] : undefined\\n );\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.includes.js?")}),"./node_modules/core-js/modules/es.string.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar charAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").charAt);\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar defineIterator = __webpack_require__(/*! ../internals/iterator-define */ \\"./node_modules/core-js/internals/iterator-define.js\\");\\nvar createIterResultObject = __webpack_require__(/*! ../internals/create-iter-result-object */ \\"./node_modules/core-js/internals/create-iter-result-object.js\\");\\n\\nvar STRING_ITERATOR = 'String Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\\n\\n// \`String.prototype[@@iterator]\` method\\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\\ndefineIterator(String, 'String', function (iterated) {\\n setInternalState(this, {\\n type: STRING_ITERATOR,\\n string: toString(iterated),\\n index: 0\\n });\\n// \`%StringIteratorPrototype%.next\` method\\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\\n}, function next() {\\n var state = getInternalState(this);\\n var string = state.string;\\n var index = state.index;\\n var point;\\n if (index >= string.length) return createIterResultObject(undefined, true);\\n point = charAt(string, index);\\n state.index += point.length;\\n return createIterResultObject(point, false);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.iterator.js?")}),"./node_modules/core-js/modules/es.string.match.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\n\\n// @@match logic\\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\\n return [\\n // \`String.prototype.match\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.match\\n function match(regexp) {\\n var O = requireObjectCoercible(this);\\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\\n },\\n // \`RegExp.prototype[@@match]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\\n function (string) {\\n var rx = anObject(this);\\n var S = toString(string);\\n var res = maybeCallNative(nativeMatch, rx, S);\\n\\n if (res.done) return res.value;\\n\\n if (!rx.global) return regExpExec(rx, S);\\n\\n var fullUnicode = rx.unicode;\\n rx.lastIndex = 0;\\n var A = [];\\n var n = 0;\\n var result;\\n while ((result = regExpExec(rx, S)) !== null) {\\n var matchStr = toString(result[0]);\\n A[n] = matchStr;\\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\\n n++;\\n }\\n return n === 0 ? null : A;\\n }\\n ];\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.match.js?")}),"./node_modules/core-js/modules/es.string.replace-all.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \\"./node_modules/core-js/internals/get-substitution.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar REPLACE = wellKnownSymbol('replace');\\nvar $TypeError = TypeError;\\nvar indexOf = uncurryThis(''.indexOf);\\nvar replace = uncurryThis(''.replace);\\nvar stringSlice = uncurryThis(''.slice);\\nvar max = Math.max;\\n\\nvar stringIndexOf = function (string, searchValue, fromIndex) {\\n if (fromIndex > string.length) return -1;\\n if (searchValue === '') return fromIndex;\\n return indexOf(string, searchValue, fromIndex);\\n};\\n\\n// \`String.prototype.replaceAll\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\\n$({ target: 'String', proto: true }, {\\n replaceAll: function replaceAll(searchValue, replaceValue) {\\n var O = requireObjectCoercible(this);\\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\\n var position = 0;\\n var endOfLastMatch = 0;\\n var result = '';\\n if (!isNullOrUndefined(searchValue)) {\\n IS_REG_EXP = isRegExp(searchValue);\\n if (IS_REG_EXP) {\\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\\n if (!~indexOf(flags, 'g')) throw $TypeError('\`.replaceAll\` does not allow non-global regexes');\\n }\\n replacer = getMethod(searchValue, REPLACE);\\n if (replacer) {\\n return call(replacer, searchValue, O, replaceValue);\\n } else if (IS_PURE && IS_REG_EXP) {\\n return replace(toString(O), searchValue, replaceValue);\\n }\\n }\\n string = toString(O);\\n searchString = toString(searchValue);\\n functionalReplace = isCallable(replaceValue);\\n if (!functionalReplace) replaceValue = toString(replaceValue);\\n searchLength = searchString.length;\\n advanceBy = max(1, searchLength);\\n position = stringIndexOf(string, searchString, 0);\\n while (position !== -1) {\\n replacement = functionalReplace\\n ? toString(replaceValue(searchString, position, string))\\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\\n result += stringSlice(string, endOfLastMatch, position) + replacement;\\n endOfLastMatch = position + searchLength;\\n position = stringIndexOf(string, searchString, position + advanceBy);\\n }\\n if (endOfLastMatch < string.length) {\\n result += stringSlice(string, endOfLastMatch);\\n }\\n return result;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace-all.js?")}),"./node_modules/core-js/modules/es.string.replace.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ \\"./node_modules/core-js/internals/get-substitution.js\\");\\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar REPLACE = wellKnownSymbol('replace');\\nvar max = Math.max;\\nvar min = Math.min;\\nvar concat = uncurryThis([].concat);\\nvar push = uncurryThis([].push);\\nvar stringIndexOf = uncurryThis(''.indexOf);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar maybeToString = function (it) {\\n return it === undefined ? it : String(it);\\n};\\n\\n// IE <= 11 replaces $0 with the whole match, as if it was $&\\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\\nvar REPLACE_KEEPS_$0 = (function () {\\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\\n return 'a'.replace(/./, '$0') === '$0';\\n})();\\n\\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\\n if (/./[REPLACE]) {\\n return /./[REPLACE]('a', '$0') === '';\\n }\\n return false;\\n})();\\n\\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\\n var re = /./;\\n re.exec = function () {\\n var result = [];\\n result.groups = { a: '7' };\\n return result;\\n };\\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\\n return ''.replace(re, '$') !== '7';\\n});\\n\\n// @@replace logic\\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\\n\\n return [\\n // \`String.prototype.replace\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.replace\\n function replace(searchValue, replaceValue) {\\n var O = requireObjectCoercible(this);\\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\\n return replacer\\n ? call(replacer, searchValue, O, replaceValue)\\n : call(nativeReplace, toString(O), searchValue, replaceValue);\\n },\\n // \`RegExp.prototype[@@replace]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\\n function (string, replaceValue) {\\n var rx = anObject(this);\\n var S = toString(string);\\n\\n if (\\n typeof replaceValue == 'string' &&\\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\\n stringIndexOf(replaceValue, '$<') === -1\\n ) {\\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\\n if (res.done) return res.value;\\n }\\n\\n var functionalReplace = isCallable(replaceValue);\\n if (!functionalReplace) replaceValue = toString(replaceValue);\\n\\n var global = rx.global;\\n if (global) {\\n var fullUnicode = rx.unicode;\\n rx.lastIndex = 0;\\n }\\n var results = [];\\n while (true) {\\n var result = regExpExec(rx, S);\\n if (result === null) break;\\n\\n push(results, result);\\n if (!global) break;\\n\\n var matchStr = toString(result[0]);\\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\\n }\\n\\n var accumulatedResult = '';\\n var nextSourcePosition = 0;\\n for (var i = 0; i < results.length; i++) {\\n result = results[i];\\n\\n var matched = toString(result[0]);\\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\\n var captures = [];\\n // NOTE: This is equivalent to\\n // captures = result.slice(1).map(maybeToString)\\n // but for some reason \`nativeSlice.call(result, 1, result.length)\` (called in\\n // the slice polyfill when slicing native arrays) \\"doesn't work\\" in safari 9 and\\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\\n var namedCaptures = result.groups;\\n if (functionalReplace) {\\n var replacerArgs = concat([matched], captures, position, S);\\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\\n } else {\\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\\n }\\n if (position >= nextSourcePosition) {\\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\\n nextSourcePosition = position + matched.length;\\n }\\n }\\n return accumulatedResult + stringSlice(S, nextSourcePosition);\\n }\\n ];\\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.replace.js?")}),"./node_modules/core-js/modules/es.string.split.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \\"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \\"./node_modules/core-js/internals/is-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \\"./node_modules/core-js/internals/species-constructor.js\\");\\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \\"./node_modules/core-js/internals/advance-string-index.js\\");\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar getMethod = __webpack_require__(/*! ../internals/get-method */ \\"./node_modules/core-js/internals/get-method.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \\"./node_modules/core-js/internals/regexp-exec-abstract.js\\");\\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \\"./node_modules/core-js/internals/regexp-exec.js\\");\\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \\"./node_modules/core-js/internals/regexp-sticky-helpers.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\\nvar MAX_UINT32 = 0xFFFFFFFF;\\nvar min = Math.min;\\nvar $push = [].push;\\nvar exec = uncurryThis(/./.exec);\\nvar push = uncurryThis($push);\\nvar stringSlice = uncurryThis(''.slice);\\n\\n// Chrome 51 has a buggy \\"split\\" implementation when RegExp#exec !== nativeExec\\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\\n var re = /(?:)/;\\n var originalExec = re.exec;\\n re.exec = function () { return originalExec.apply(this, arguments); };\\n var result = 'ab'.split(re);\\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\\n});\\n\\n// @@split logic\\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\\n var internalSplit;\\n if (\\n 'abbc'.split(/(b)*/)[1] == 'c' ||\\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\\n 'test'.split(/(?:)/, -1).length != 4 ||\\n 'ab'.split(/(?:ab)*/).length != 2 ||\\n '.'.split(/(.?)(.?)/).length != 4 ||\\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\\n '.'.split(/()()/).length > 1 ||\\n ''.split(/.?/).length\\n ) {\\n // based on es5-shim implementation, need to rework it\\n internalSplit = function (separator, limit) {\\n var string = toString(requireObjectCoercible(this));\\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\\n if (lim === 0) return [];\\n if (separator === undefined) return [string];\\n // If \`separator\` is not a regex, use native split\\n if (!isRegExp(separator)) {\\n return call(nativeSplit, string, separator, lim);\\n }\\n var output = [];\\n var flags = (separator.ignoreCase ? 'i' : '') +\\n (separator.multiline ? 'm' : '') +\\n (separator.unicode ? 'u' : '') +\\n (separator.sticky ? 'y' : '');\\n var lastLastIndex = 0;\\n // Make \`global\` and avoid \`lastIndex\` issues by working with a copy\\n var separatorCopy = new RegExp(separator.source, flags + 'g');\\n var match, lastIndex, lastLength;\\n while (match = call(regexpExec, separatorCopy, string)) {\\n lastIndex = separatorCopy.lastIndex;\\n if (lastIndex > lastLastIndex) {\\n push(output, stringSlice(string, lastLastIndex, match.index));\\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\\n lastLength = match[0].length;\\n lastLastIndex = lastIndex;\\n if (output.length >= lim) break;\\n }\\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\\n }\\n if (lastLastIndex === string.length) {\\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\\n } else push(output, stringSlice(string, lastLastIndex));\\n return output.length > lim ? arraySlice(output, 0, lim) : output;\\n };\\n // Chakra, V8\\n } else if ('0'.split(undefined, 0).length) {\\n internalSplit = function (separator, limit) {\\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\\n };\\n } else internalSplit = nativeSplit;\\n\\n return [\\n // \`String.prototype.split\` method\\n // https://tc39.es/ecma262/#sec-string.prototype.split\\n function split(separator, limit) {\\n var O = requireObjectCoercible(this);\\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\\n return splitter\\n ? call(splitter, separator, O, limit)\\n : call(internalSplit, toString(O), separator, limit);\\n },\\n // \`RegExp.prototype[@@split]\` method\\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\\n //\\n // NOTE: This cannot be properly polyfilled in engines that don't support\\n // the 'y' flag.\\n function (string, limit) {\\n var rx = anObject(this);\\n var S = toString(string);\\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\\n\\n if (res.done) return res.value;\\n\\n var C = speciesConstructor(rx, RegExp);\\n\\n var unicodeMatching = rx.unicode;\\n var flags = (rx.ignoreCase ? 'i' : '') +\\n (rx.multiline ? 'm' : '') +\\n (rx.unicode ? 'u' : '') +\\n (UNSUPPORTED_Y ? 'g' : 'y');\\n\\n // ^(? + rx + ) is needed, in combination with some S slicing, to\\n // simulate the 'y' flag.\\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\\n if (lim === 0) return [];\\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\\n var p = 0;\\n var q = 0;\\n var A = [];\\n while (q < S.length) {\\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\\n var e;\\n if (\\n z === null ||\\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\\n ) {\\n q = advanceStringIndex(S, q, unicodeMatching);\\n } else {\\n push(A, stringSlice(S, p, q));\\n if (A.length === lim) return A;\\n for (var i = 1; i <= z.length - 1; i++) {\\n push(A, z[i]);\\n if (A.length === lim) return A;\\n }\\n q = p = e;\\n }\\n }\\n push(A, stringSlice(S, p));\\n return A;\\n }\\n ];\\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.split.js?")}),"./node_modules/core-js/modules/es.string.starts-with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \\"./node_modules/core-js/internals/object-get-own-property-descriptor.js\\").f);\\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \\"./node_modules/core-js/internals/to-length.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \\"./node_modules/core-js/internals/not-a-regexp.js\\");\\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \\"./node_modules/core-js/internals/require-object-coercible.js\\");\\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \\"./node_modules/core-js/internals/correct-is-regexp-logic.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\n// eslint-disable-next-line es/no-string-prototype-startswith -- safe\\nvar nativeStartsWith = uncurryThis(''.startsWith);\\nvar stringSlice = uncurryThis(''.slice);\\nvar min = Math.min;\\n\\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\\n// https://github.com/zloirock/core-js/pull/702\\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\\n return descriptor && !descriptor.writable;\\n}();\\n\\n// \`String.prototype.startsWith\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\\n startsWith: function startsWith(searchString /* , position = 0 */) {\\n var that = toString(requireObjectCoercible(this));\\n notARegExp(searchString);\\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\\n var search = toString(searchString);\\n return nativeStartsWith\\n ? nativeStartsWith(that, search, index)\\n : stringSlice(that, index, index + search.length) === search;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.starts-with.js?")}),"./node_modules/core-js/modules/es.string.trim-end.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this line from \`core-js@4\`\\n__webpack_require__(/*! ../modules/es.string.trim-right */ \\"./node_modules/core-js/modules/es.string.trim-right.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \\"./node_modules/core-js/internals/string-trim-end.js\\");\\n\\n// \`String.prototype.trimEnd\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimEnd !== trimEnd }, {\\n trimEnd: trimEnd\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-end.js?")}),"./node_modules/core-js/modules/es.string.trim-right.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar trimEnd = __webpack_require__(/*! ../internals/string-trim-end */ \\"./node_modules/core-js/internals/string-trim-end.js\\");\\n\\n// \`String.prototype.trimRight\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trimend\\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\\n$({ target: 'String', proto: true, name: 'trimEnd', forced: ''.trimRight !== trimEnd }, {\\n trimRight: trimEnd\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim-right.js?")}),"./node_modules/core-js/modules/es.string.trim.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar $trim = (__webpack_require__(/*! ../internals/string-trim */ \\"./node_modules/core-js/internals/string-trim.js\\").trim);\\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \\"./node_modules/core-js/internals/string-trim-forced.js\\");\\n\\n// \`String.prototype.trim\` method\\n// https://tc39.es/ecma262/#sec-string.prototype.trim\\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\\n trim: function trim() {\\n return $trim(this);\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.string.trim.js?")}),"./node_modules/core-js/modules/es.symbol.description.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("// \`Symbol.prototype.description\` getter\\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\\n\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ \\"./node_modules/core-js/internals/object-is-prototype-of.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \\"./node_modules/core-js/internals/copy-constructor-properties.js\\");\\n\\nvar NativeSymbol = global.Symbol;\\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\\n\\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\\n // Safari 12 bug\\n NativeSymbol().description !== undefined\\n)) {\\n var EmptyStringDescriptionStore = {};\\n // wrap Symbol constructor for correct work with undefined description\\n var SymbolWrapper = function Symbol() {\\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\\n var result = isPrototypeOf(SymbolPrototype, this)\\n ? new NativeSymbol(description)\\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\\n if (description === '') EmptyStringDescriptionStore[result] = true;\\n return result;\\n };\\n\\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\\n SymbolWrapper.prototype = SymbolPrototype;\\n SymbolPrototype.constructor = SymbolWrapper;\\n\\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\\n var regexp = /^Symbol\\\\((.*)\\\\)[^)]+$/;\\n var replace = uncurryThis(''.replace);\\n var stringSlice = uncurryThis(''.slice);\\n\\n defineBuiltInAccessor(SymbolPrototype, 'description', {\\n configurable: true,\\n get: function description() {\\n var symbol = thisSymbolValue(this);\\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\\n var string = symbolDescriptiveString(symbol);\\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\\n return desc === '' ? undefined : desc;\\n }\\n });\\n\\n $({ global: true, constructor: true, forced: true }, {\\n Symbol: SymbolWrapper\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.symbol.description.js?")}),"./node_modules/core-js/modules/es.typed-array.at.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.at\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\\nexportTypedArrayMethod('at', function at(index) {\\n var O = aTypedArray(this);\\n var len = lengthOfArrayLike(O);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\\n return (k < 0 || k >= len) ? undefined : O[k];\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.at.js?")}),"./node_modules/core-js/modules/es.typed-array.fill.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $fill = __webpack_require__(/*! ../internals/array-fill */ \\"./node_modules/core-js/internals/array-fill.js\\");\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar slice = uncurryThis(''.slice);\\n\\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\\nvar CONVERSION_BUG = fails(function () {\\n var count = 0;\\n // eslint-disable-next-line es/no-typed-arrays -- safe\\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\\n return count !== 1;\\n});\\n\\n// \`%TypedArray%.prototype.fill\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\\n var length = arguments.length;\\n aTypedArray(this);\\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\\n}, CONVERSION_BUG);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.fill.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last-index.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $findLastIndex = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLastIndex);\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.findLastIndex\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last-index.js?")}),"./node_modules/core-js/modules/es.typed-array.find-last.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar $findLast = (__webpack_require__(/*! ../internals/array-iteration-from-last */ \\"./node_modules/core-js/internals/array-iteration-from-last.js\\").findLast);\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\n// \`%TypedArray%.prototype.findLast\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.find-last.js?")}),"./node_modules/core-js/modules/es.typed-array.int32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Int32Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Int32', function (init) {\\n return function Int32Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.int8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Int8Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Int8', function (init) {\\n return function Int8Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.int8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.set.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar toOffset = __webpack_require__(/*! ../internals/to-offset */ \\"./node_modules/core-js/internals/to-offset.js\\");\\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-object */ \\"./node_modules/core-js/internals/to-object.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\n\\nvar RangeError = global.RangeError;\\nvar Int8Array = global.Int8Array;\\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\\n var array = new Uint8ClampedArray(2);\\n call($set, array, { length: 1, 0: 3 }, 1);\\n return array[1] !== 3;\\n});\\n\\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\\n var array = new Int8Array(2);\\n array.set(1);\\n array.set('2', 1);\\n return array[0] !== 0 || array[1] !== 2;\\n});\\n\\n// \`%TypedArray%.prototype.set\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\\n aTypedArray(this);\\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\\n var src = toIndexedObject(arrayLike);\\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\\n var length = this.length;\\n var len = lengthOfArrayLike(src);\\n var index = 0;\\n if (len + offset > length) throw RangeError('Wrong length');\\n while (index < len) this[offset + index] = src[index++];\\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.set.js?")}),"./node_modules/core-js/modules/es.typed-array.sort.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ \\"./node_modules/core-js/internals/function-uncurry-this-clause.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar internalSort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar FF = __webpack_require__(/*! ../internals/engine-ff-version */ \\"./node_modules/core-js/internals/engine-ff-version.js\\");\\nvar IE_OR_EDGE = __webpack_require__(/*! ../internals/engine-is-ie-or-edge */ \\"./node_modules/core-js/internals/engine-is-ie-or-edge.js\\");\\nvar V8 = __webpack_require__(/*! ../internals/engine-v8-version */ \\"./node_modules/core-js/internals/engine-v8-version.js\\");\\nvar WEBKIT = __webpack_require__(/*! ../internals/engine-webkit-version */ \\"./node_modules/core-js/internals/engine-webkit-version.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar Uint16Array = global.Uint16Array;\\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\\n\\n// WebKit\\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\\n nativeSort(new Uint16Array(2), null);\\n}) && fails(function () {\\n nativeSort(new Uint16Array(2), {});\\n}));\\n\\nvar STABLE_SORT = !!nativeSort && !fails(function () {\\n // feature detection can be too slow, so check engines versions\\n if (V8) return V8 < 74;\\n if (FF) return FF < 67;\\n if (IE_OR_EDGE) return true;\\n if (WEBKIT) return WEBKIT < 602;\\n\\n var array = new Uint16Array(516);\\n var expected = Array(516);\\n var index, mod;\\n\\n for (index = 0; index < 516; index++) {\\n mod = index % 4;\\n array[index] = 515 - index;\\n expected[index] = index - 2 * mod + 3;\\n }\\n\\n nativeSort(array, function (a, b) {\\n return (a / 4 | 0) - (b / 4 | 0);\\n });\\n\\n for (index = 0; index < 516; index++) {\\n if (array[index] !== expected[index]) return true;\\n }\\n});\\n\\nvar getSortCompare = function (comparefn) {\\n return function (x, y) {\\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (y !== y) return -1;\\n // eslint-disable-next-line no-self-compare -- NaN check\\n if (x !== x) return 1;\\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\\n return x > y;\\n };\\n};\\n\\n// \`%TypedArray%.prototype.sort\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\\nexportTypedArrayMethod('sort', function sort(comparefn) {\\n if (comparefn !== undefined) aCallable(comparefn);\\n if (STABLE_SORT) return nativeSort(this, comparefn);\\n\\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.sort.js?")}),"./node_modules/core-js/modules/es.typed-array.to-locale-string.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar apply = __webpack_require__(/*! ../internals/function-apply */ \\"./node_modules/core-js/internals/function-apply.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice */ \\"./node_modules/core-js/internals/array-slice.js\\");\\n\\nvar Int8Array = global.Int8Array;\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar $toLocaleString = [].toLocaleString;\\n\\n// iOS Safari 6.x fails here\\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\\n $toLocaleString.call(new Int8Array(1));\\n});\\n\\nvar FORCED = fails(function () {\\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\\n}) || !fails(function () {\\n Int8Array.prototype.toLocaleString.call([1, 2]);\\n});\\n\\n// \`%TypedArray%.prototype.toLocaleString\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\\n return apply(\\n $toLocaleString,\\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\\n arraySlice(arguments)\\n );\\n}, FORCED);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-locale-string.js?")}),"./node_modules/core-js/modules/es.typed-array.to-reversed.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arrayToReversed = __webpack_require__(/*! ../internals/array-to-reversed */ \\"./node_modules/core-js/internals/array-to-reversed.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\n\\n// \`%TypedArray%.prototype.toReversed\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\\nexportTypedArrayMethod('toReversed', function toReversed() {\\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-reversed.js?")}),"./node_modules/core-js/modules/es.typed-array.to-sorted.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar aCallable = __webpack_require__(/*! ../internals/a-callable */ \\"./node_modules/core-js/internals/a-callable.js\\");\\nvar arrayFromConstructorAndList = __webpack_require__(/*! ../internals/array-from-constructor-and-list */ \\"./node_modules/core-js/internals/array-from-constructor-and-list.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\\n\\n// \`%TypedArray%.prototype.toSorted\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\\n if (compareFn !== undefined) aCallable(compareFn);\\n var O = aTypedArray(this);\\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\\n return sort(A, compareFn);\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.to-sorted.js?")}),"./node_modules/core-js/modules/es.typed-array.uint32-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint32Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint32', function (init) {\\n return function Uint32Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint32-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint8Array\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint8', function (init) {\\n return function Uint8Array(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-array.js?")}),"./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar createTypedArrayConstructor = __webpack_require__(/*! ../internals/typed-array-constructor */ \\"./node_modules/core-js/internals/typed-array-constructor.js\\");\\n\\n// \`Uint8ClampedArray\` constructor\\n// https://tc39.es/ecma262/#sec-typedarray-objects\\ncreateTypedArrayConstructor('Uint8', function (init) {\\n return function Uint8ClampedArray(data, byteOffset, length) {\\n return init(this, data, byteOffset, length);\\n };\\n}, true);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js?")}),"./node_modules/core-js/modules/es.typed-array.with.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar arrayWith = __webpack_require__(/*! ../internals/array-with */ \\"./node_modules/core-js/internals/array-with.js\\");\\nvar ArrayBufferViewCore = __webpack_require__(/*! ../internals/array-buffer-view-core */ \\"./node_modules/core-js/internals/array-buffer-view-core.js\\");\\nvar isBigIntArray = __webpack_require__(/*! ../internals/is-big-int-array */ \\"./node_modules/core-js/internals/is-big-int-array.js\\");\\nvar toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ \\"./node_modules/core-js/internals/to-integer-or-infinity.js\\");\\nvar toBigInt = __webpack_require__(/*! ../internals/to-big-int */ \\"./node_modules/core-js/internals/to-big-int.js\\");\\n\\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\\n\\nvar PROPER_ORDER = !!function () {\\n try {\\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\\n } catch (error) {\\n // some early implementations, like WebKit, does not follow the final semantic\\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\\n return error === 8;\\n }\\n}();\\n\\n// \`%TypedArray%.prototype.with\` method\\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\\nexportTypedArrayMethod('with', { 'with': function (index, value) {\\n var O = aTypedArray(this);\\n var relativeIndex = toIntegerOrInfinity(index);\\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\\n} }['with'], !PROPER_ORDER);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.typed-array.with.js?")}),"./node_modules/core-js/modules/es.weak-map.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \\"./node_modules/core-js/internals/freezing.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar InternalMetadataModule = __webpack_require__(/*! ../internals/internal-metadata */ \\"./node_modules/core-js/internals/internal-metadata.js\\");\\nvar collection = __webpack_require__(/*! ../internals/collection */ \\"./node_modules/core-js/internals/collection.js\\");\\nvar collectionWeak = __webpack_require__(/*! ../internals/collection-weak */ \\"./node_modules/core-js/internals/collection-weak.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar enforceInternalState = (__webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\").enforce);\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ \\"./node_modules/core-js/internals/weak-map-basic-detection.js\\");\\n\\nvar $Object = Object;\\n// eslint-disable-next-line es/no-array-isarray -- safe\\nvar isArray = Array.isArray;\\n// eslint-disable-next-line es/no-object-isextensible -- safe\\nvar isExtensible = $Object.isExtensible;\\n// eslint-disable-next-line es/no-object-isfrozen -- safe\\nvar isFrozen = $Object.isFrozen;\\n// eslint-disable-next-line es/no-object-issealed -- safe\\nvar isSealed = $Object.isSealed;\\n// eslint-disable-next-line es/no-object-freeze -- safe\\nvar freeze = $Object.freeze;\\n// eslint-disable-next-line es/no-object-seal -- safe\\nvar seal = $Object.seal;\\n\\nvar FROZEN = {};\\nvar SEALED = {};\\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\\nvar InternalWeakMap;\\n\\nvar wrapper = function (init) {\\n return function WeakMap() {\\n return init(this, arguments.length ? arguments[0] : undefined);\\n };\\n};\\n\\n// \`WeakMap\` constructor\\n// https://tc39.es/ecma262/#sec-weakmap-constructor\\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\\nvar WeakMapPrototype = $WeakMap.prototype;\\nvar nativeSet = uncurryThis(WeakMapPrototype.set);\\n\\n// Chakra Edge bug: adding frozen arrays to WeakMap unfreeze them\\nvar hasMSEdgeFreezingBug = function () {\\n return FREEZING && fails(function () {\\n var frozenArray = freeze([]);\\n nativeSet(new $WeakMap(), frozenArray, 1);\\n return !isFrozen(frozenArray);\\n });\\n};\\n\\n// IE11 WeakMap frozen keys fix\\n// We can't use feature detection because it crash some old IE builds\\n// https://github.com/zloirock/core-js/issues/485\\nif (NATIVE_WEAK_MAP) if (IS_IE11) {\\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\\n InternalMetadataModule.enable();\\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\\n var nativeHas = uncurryThis(WeakMapPrototype.has);\\n var nativeGet = uncurryThis(WeakMapPrototype.get);\\n defineBuiltIns(WeakMapPrototype, {\\n 'delete': function (key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeDelete(this, key) || state.frozen['delete'](key);\\n } return nativeDelete(this, key);\\n },\\n has: function has(key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeHas(this, key) || state.frozen.has(key);\\n } return nativeHas(this, key);\\n },\\n get: function get(key) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\\n } return nativeGet(this, key);\\n },\\n set: function set(key, value) {\\n if (isObject(key) && !isExtensible(key)) {\\n var state = enforceInternalState(this);\\n if (!state.frozen) state.frozen = new InternalWeakMap();\\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\\n } else nativeSet(this, key, value);\\n return this;\\n }\\n });\\n// Chakra Edge frozen keys fix\\n} else if (hasMSEdgeFreezingBug()) {\\n defineBuiltIns(WeakMapPrototype, {\\n set: function set(key, value) {\\n var arrayIntegrityLevel;\\n if (isArray(key)) {\\n if (isFrozen(key)) arrayIntegrityLevel = FROZEN;\\n else if (isSealed(key)) arrayIntegrityLevel = SEALED;\\n }\\n nativeSet(this, key, value);\\n if (arrayIntegrityLevel == FROZEN) freeze(key);\\n if (arrayIntegrityLevel == SEALED) seal(key);\\n return this;\\n }\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.constructor.js?")}),"./node_modules/core-js/modules/es.weak-map.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/es.weak-map.constructor */ \\"./node_modules/core-js/modules/es.weak-map.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/es.weak-map.js?")}),"./node_modules/core-js/modules/web.dom-collections.iterator.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ \\"./node_modules/core-js/internals/dom-iterables.js\\");\\nvar DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ \\"./node_modules/core-js/internals/dom-token-list-prototype.js\\");\\nvar ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ \\"./node_modules/core-js/modules/es.array.iterator.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ArrayValues = ArrayIteratorMethods.values;\\n\\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\\n if (CollectionPrototype) {\\n // some Chrome versions have non-configurable methods on DOMTokenList\\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\\n } catch (error) {\\n CollectionPrototype[ITERATOR] = ArrayValues;\\n }\\n if (!CollectionPrototype[TO_STRING_TAG]) {\\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\\n }\\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\\n // some Chrome versions have non-configurable methods on DOMTokenList\\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\\n } catch (error) {\\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\\n }\\n }\\n }\\n};\\n\\nfor (var COLLECTION_NAME in DOMIterables) {\\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\\n}\\n\\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-collections.iterator.js?")}),"./node_modules/core-js/modules/web.dom-exception.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar tryNodeRequire = __webpack_require__(/*! ../internals/try-node-require */ \\"./node_modules/core-js/internals/try-node-require.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar errorToString = __webpack_require__(/*! ../internals/error-to-string */ \\"./node_modules/core-js/internals/error-to-string.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \\"./node_modules/core-js/internals/dom-exception-constants.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar DATA_CLONE_ERR = 'DATA_CLONE_ERR';\\nvar Error = getBuiltIn('Error');\\n// NodeJS < 17.0 does not expose \`DOMException\` to global\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION) || (function () {\\n try {\\n // NodeJS < 15.0 does not expose \`MessageChannel\` to global\\n var MessageChannel = getBuiltIn('MessageChannel') || tryNodeRequire('worker_threads').MessageChannel;\\n // eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe\\n new MessageChannel().port1.postMessage(new WeakMap());\\n } catch (error) {\\n if (error.name == DATA_CLONE_ERR && error.code == 25) return error.constructor;\\n }\\n})();\\nvar NativeDOMExceptionPrototype = NativeDOMException && NativeDOMException.prototype;\\nvar ErrorPrototype = Error.prototype;\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalState = InternalStateModule.getterFor(DOM_EXCEPTION);\\nvar HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\\n\\nvar codeFor = function (name) {\\n return hasOwn(DOMExceptionConstants, name) && DOMExceptionConstants[name].m ? DOMExceptionConstants[name].c : 0;\\n};\\n\\nvar $DOMException = function DOMException() {\\n anInstance(this, DOMExceptionPrototype);\\n var argumentsLength = arguments.length;\\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\\n var code = codeFor(name);\\n setInternalState(this, {\\n type: DOM_EXCEPTION,\\n name: name,\\n message: message,\\n code: code\\n });\\n if (!DESCRIPTORS) {\\n this.name = name;\\n this.message = message;\\n this.code = code;\\n }\\n if (HAS_STACK) {\\n var error = Error(message);\\n error.name = DOM_EXCEPTION;\\n defineProperty(this, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n }\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = create(ErrorPrototype);\\n\\nvar createGetterDescriptor = function (get) {\\n return { enumerable: true, configurable: true, get: get };\\n};\\n\\nvar getterFor = function (key) {\\n return createGetterDescriptor(function () {\\n return getInternalState(this)[key];\\n });\\n};\\n\\nif (DESCRIPTORS) {\\n // \`DOMException.prototype.code\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));\\n // \`DOMException.prototype.message\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));\\n // \`DOMException.prototype.name\` getter\\n defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));\\n}\\n\\ndefineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));\\n\\n// FF36- DOMException is a function, but can't be constructed\\nvar INCORRECT_CONSTRUCTOR = fails(function () {\\n return !(new NativeDOMException() instanceof Error);\\n});\\n\\n// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs\\nvar INCORRECT_TO_STRING = INCORRECT_CONSTRUCTOR || fails(function () {\\n return ErrorPrototype.toString !== errorToString || String(new NativeDOMException(1, 2)) !== '2: 1';\\n});\\n\\n// Deno 1.6.3- DOMException.prototype.code just missed\\nvar INCORRECT_CODE = INCORRECT_CONSTRUCTOR || fails(function () {\\n return new NativeDOMException(1, 'DataCloneError').code !== 25;\\n});\\n\\n// Deno 1.6.3- DOMException constants just missed\\nvar MISSED_CONSTANTS = INCORRECT_CONSTRUCTOR\\n || NativeDOMException[DATA_CLONE_ERR] !== 25\\n || NativeDOMExceptionPrototype[DATA_CLONE_ERR] !== 25;\\n\\nvar FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISSED_CONSTANTS : INCORRECT_CONSTRUCTOR;\\n\\n// \`DOMException\` constructor\\n// https://webidl.spec.whatwg.org/#idl-DOMException\\n$({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {\\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {\\n defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);\\n}\\n\\nif (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {\\n defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {\\n return codeFor(anObject(this).name);\\n }));\\n}\\n\\n// \`DOMException\` constants\\nfor (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n var constant = DOMExceptionConstants[key];\\n var constantName = constant.s;\\n var descriptor = createPropertyDescriptor(6, constant.c);\\n if (!hasOwn(PolyfilledDOMException, constantName)) {\\n defineProperty(PolyfilledDOMException, constantName, descriptor);\\n }\\n if (!hasOwn(PolyfilledDOMExceptionPrototype, constantName)) {\\n defineProperty(PolyfilledDOMExceptionPrototype, constantName, descriptor);\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.constructor.js?")}),"./node_modules/core-js/modules/web.dom-exception.stack.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ \\"./node_modules/core-js/internals/object-define-property.js\\").f);\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar inheritIfRequired = __webpack_require__(/*! ../internals/inherit-if-required */ \\"./node_modules/core-js/internals/inherit-if-required.js\\");\\nvar normalizeStringArgument = __webpack_require__(/*! ../internals/normalize-string-argument */ \\"./node_modules/core-js/internals/normalize-string-argument.js\\");\\nvar DOMExceptionConstants = __webpack_require__(/*! ../internals/dom-exception-constants */ \\"./node_modules/core-js/internals/dom-exception-constants.js\\");\\nvar clearErrorStack = __webpack_require__(/*! ../internals/error-stack-clear */ \\"./node_modules/core-js/internals/error-stack-clear.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar Error = getBuiltIn('Error');\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\\n\\nvar $DOMException = function DOMException() {\\n anInstance(this, DOMExceptionPrototype);\\n var argumentsLength = arguments.length;\\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\\n var that = new NativeDOMException(message, name);\\n var error = Error(message);\\n error.name = DOM_EXCEPTION;\\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n inheritIfRequired(that, this, $DOMException);\\n return that;\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\\n\\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\\n\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\\n\\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\\n// https://github.com/Jarred-Sumner/bun/issues/399\\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\\n\\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\\n\\n// \`DOMException\` constructor patch for \`.stack\` where it's required\\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\\n if (!IS_PURE) {\\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\\n }\\n\\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n var constant = DOMExceptionConstants[key];\\n var constantName = constant.s;\\n if (!hasOwn(PolyfilledDOMException, constantName)) {\\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\\n }\\n }\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.stack.js?")}),"./node_modules/core-js/modules/web.dom-exception.to-string-tag.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\n\\nvar DOM_EXCEPTION = 'DOMException';\\n\\n// \`DOMException.prototype[@@toStringTag]\` property\\nsetToStringTag(getBuiltIn(DOM_EXCEPTION), DOM_EXCEPTION);\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.dom-exception.to-string-tag.js?")}),"./node_modules/core-js/modules/web.self.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\n\\nvar $TypeError = TypeError;\\n// eslint-disable-next-line es/no-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar INCORRECT_VALUE = global.self !== global;\\n\\n// \`self\` getter\\n// https://html.spec.whatwg.org/multipage/window-object.html#dom-self\\ntry {\\n if (DESCRIPTORS) {\\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\n var descriptor = Object.getOwnPropertyDescriptor(global, 'self');\\n // some engines have \`self\`, but with incorrect descriptor\\n // https://github.com/denoland/deno/issues/15765\\n if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\\n defineBuiltInAccessor(global, 'self', {\\n get: function self() {\\n return global;\\n },\\n set: function self(value) {\\n if (this !== global) throw $TypeError('Illegal invocation');\\n defineProperty(global, 'self', {\\n value: value,\\n writable: true,\\n configurable: true,\\n enumerable: true\\n });\\n },\\n configurable: true,\\n enumerable: true\\n });\\n }\\n } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\\n self: global\\n });\\n} catch (error) { /* empty */ }\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.self.js?")}),"./node_modules/core-js/modules/web.structured-clone.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \\"./node_modules/core-js/internals/is-pure.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar getBuiltin = __webpack_require__(/*! ../internals/get-built-in */ \\"./node_modules/core-js/internals/get-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar fails = __webpack_require__(/*! ../internals/fails */ \\"./node_modules/core-js/internals/fails.js\\");\\nvar uid = __webpack_require__(/*! ../internals/uid */ \\"./node_modules/core-js/internals/uid.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar isConstructor = __webpack_require__(/*! ../internals/is-constructor */ \\"./node_modules/core-js/internals/is-constructor.js\\");\\nvar isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ \\"./node_modules/core-js/internals/is-null-or-undefined.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \\"./node_modules/core-js/internals/is-symbol.js\\");\\nvar iterate = __webpack_require__(/*! ../internals/iterate */ \\"./node_modules/core-js/internals/iterate.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \\"./node_modules/core-js/internals/create-property.js\\");\\nvar createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ \\"./node_modules/core-js/internals/create-non-enumerable-property.js\\");\\nvar lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ \\"./node_modules/core-js/internals/length-of-array-like.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ \\"./node_modules/core-js/internals/regexp-get-flags.js\\");\\nvar MapHelpers = __webpack_require__(/*! ../internals/map-helpers */ \\"./node_modules/core-js/internals/map-helpers.js\\");\\nvar SetHelpers = __webpack_require__(/*! ../internals/set-helpers */ \\"./node_modules/core-js/internals/set-helpers.js\\");\\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(/*! ../internals/error-stack-installable */ \\"./node_modules/core-js/internals/error-stack-installable.js\\");\\nvar PROPER_TRANSFER = __webpack_require__(/*! ../internals/structured-clone-proper-transfer */ \\"./node_modules/core-js/internals/structured-clone-proper-transfer.js\\");\\n\\nvar Object = global.Object;\\nvar Array = global.Array;\\nvar Date = global.Date;\\nvar Error = global.Error;\\nvar EvalError = global.EvalError;\\nvar RangeError = global.RangeError;\\nvar ReferenceError = global.ReferenceError;\\nvar SyntaxError = global.SyntaxError;\\nvar TypeError = global.TypeError;\\nvar URIError = global.URIError;\\nvar PerformanceMark = global.PerformanceMark;\\nvar WebAssembly = global.WebAssembly;\\nvar CompileError = WebAssembly && WebAssembly.CompileError || Error;\\nvar LinkError = WebAssembly && WebAssembly.LinkError || Error;\\nvar RuntimeError = WebAssembly && WebAssembly.RuntimeError || Error;\\nvar DOMException = getBuiltin('DOMException');\\nvar Map = MapHelpers.Map;\\nvar mapHas = MapHelpers.has;\\nvar mapGet = MapHelpers.get;\\nvar mapSet = MapHelpers.set;\\nvar Set = SetHelpers.Set;\\nvar setAdd = SetHelpers.add;\\nvar objectKeys = getBuiltin('Object', 'keys');\\nvar push = uncurryThis([].push);\\nvar thisBooleanValue = uncurryThis(true.valueOf);\\nvar thisNumberValue = uncurryThis(1.0.valueOf);\\nvar thisStringValue = uncurryThis(''.valueOf);\\nvar thisTimeValue = uncurryThis(Date.prototype.getTime);\\nvar PERFORMANCE_MARK = uid('structuredClone');\\nvar DATA_CLONE_ERROR = 'DataCloneError';\\nvar TRANSFERRING = 'Transferring';\\n\\nvar checkBasicSemantic = function (structuredCloneImplementation) {\\n return !fails(function () {\\n var set1 = new global.Set([7]);\\n var set2 = structuredCloneImplementation(set1);\\n var number = structuredCloneImplementation(Object(7));\\n return set2 == set1 || !set2.has(7) || typeof number != 'object' || number != 7;\\n }) && structuredCloneImplementation;\\n};\\n\\nvar checkErrorsCloning = function (structuredCloneImplementation, $Error) {\\n return !fails(function () {\\n var error = new $Error();\\n var test = structuredCloneImplementation({ a: error, b: error });\\n return !(test && test.a === test.b && test.a instanceof $Error && test.a.stack === error.stack);\\n });\\n};\\n\\n// https://github.com/whatwg/html/pull/5749\\nvar checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {\\n return !fails(function () {\\n var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));\\n return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;\\n });\\n};\\n\\n// FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+\\n// FF<103 and Safari implementations can't clone errors\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\\n// FF103 can clone errors, but \`.stack\` of clone is an empty string\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1778762\\n// FF104+ fixed it on usual errors, but not on DOMExceptions\\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1777321\\n// Chrome <102 returns \`null\` if cloned object contains multiple references to one error\\n// https://bugs.chromium.org/p/v8/issues/detail?id=12542\\n// NodeJS implementation can't clone DOMExceptions\\n// https://github.com/nodejs/node/issues/41038\\n// only FF103+ supports new (html/5749) error cloning semantic\\nvar nativeStructuredClone = global.structuredClone;\\n\\nvar FORCED_REPLACEMENT = IS_PURE\\n || !checkErrorsCloning(nativeStructuredClone, Error)\\n || !checkErrorsCloning(nativeStructuredClone, DOMException)\\n || !checkNewErrorsCloningSemantic(nativeStructuredClone);\\n\\n// Chrome 82+, Safari 14.1+, Deno 1.11+\\n// Chrome 78-81 implementation swaps \`.name\` and \`.message\` of cloned \`DOMException\`\\n// Chrome returns \`null\` if cloned object contains multiple references to one error\\n// Safari 14.1 implementation doesn't clone some \`RegExp\` flags, so requires a workaround\\n// Safari implementation can't clone errors\\n// Deno 1.2-1.10 implementations too naive\\n// NodeJS 16.0+ does not have \`PerformanceMark\` constructor\\n// NodeJS <17.2 structured cloning implementation from \`performance.mark\` is too naive\\n// and can't clone, for example, \`RegExp\` or some boxed primitives\\n// https://github.com/nodejs/node/issues/40840\\n// no one of those implementations supports new (html/5749) error cloning semantic\\nvar structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {\\n return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;\\n});\\n\\nvar nativeRestrictedStructuredClone = checkBasicSemantic(nativeStructuredClone) || structuredCloneFromMark;\\n\\nvar throwUncloneable = function (type) {\\n throw new DOMException('Uncloneable type: ' + type, DATA_CLONE_ERROR);\\n};\\n\\nvar throwUnpolyfillable = function (type, action) {\\n throw new DOMException((action || 'Cloning') + ' of ' + type + ' cannot be properly polyfilled in this engine', DATA_CLONE_ERROR);\\n};\\n\\nvar tryNativeRestrictedStructuredClone = function (value, type) {\\n if (!nativeRestrictedStructuredClone) throwUnpolyfillable(type);\\n return nativeRestrictedStructuredClone(value);\\n};\\n\\nvar createDataTransfer = function () {\\n var dataTransfer;\\n try {\\n dataTransfer = new global.DataTransfer();\\n } catch (error) {\\n try {\\n dataTransfer = new global.ClipboardEvent('').clipboardData;\\n } catch (error2) { /* empty */ }\\n }\\n return dataTransfer && dataTransfer.items && dataTransfer.files ? dataTransfer : null;\\n};\\n\\nvar cloneBuffer = function (value, map, $type) {\\n if (mapHas(map, value)) return mapGet(map, value);\\n\\n var type = $type || classof(value);\\n var clone, length, options, source, target, i;\\n\\n if (type === 'SharedArrayBuffer') {\\n if (nativeRestrictedStructuredClone) clone = nativeRestrictedStructuredClone(value);\\n // SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original\\n else clone = value;\\n } else {\\n var DataView = global.DataView;\\n\\n // \`ArrayBuffer#slice\` is not available in IE10\\n // \`ArrayBuffer#slice\` and \`DataView\` are not available in old FF\\n if (!DataView && typeof value.slice != 'function') throwUnpolyfillable('ArrayBuffer');\\n // detached buffers throws in \`DataView\` and \`.slice\`\\n try {\\n if (typeof value.slice == 'function' && !value.resizable) {\\n clone = value.slice(0);\\n } else {\\n length = value.byteLength;\\n options = 'maxByteLength' in value ? { maxByteLength: value.maxByteLength } : undefined;\\n clone = new ArrayBuffer(length, options);\\n source = new DataView(value);\\n target = new DataView(clone);\\n for (i = 0; i < length; i++) {\\n target.setUint8(i, source.getUint8(i));\\n }\\n }\\n } catch (error) {\\n throw new DOMException('ArrayBuffer is detached', DATA_CLONE_ERROR);\\n }\\n }\\n\\n mapSet(map, value, clone);\\n\\n return clone;\\n};\\n\\nvar cloneView = function (value, type, offset, length, map) {\\n var C = global[type];\\n // in some old engines like Safari 9, typeof C is 'object'\\n // on Uint8ClampedArray or some other constructors\\n if (!isObject(C)) throwUnpolyfillable(type);\\n return new C(cloneBuffer(value.buffer, map), offset, length);\\n};\\n\\nvar Placeholder = function (object, type, metadata) {\\n this.object = object;\\n this.type = type;\\n this.metadata = metadata;\\n};\\n\\nvar structuredCloneInternal = function (value, map, transferredBuffers) {\\n if (isSymbol(value)) throwUncloneable('Symbol');\\n if (!isObject(value)) return value;\\n // effectively preserves circular references\\n if (map) {\\n if (mapHas(map, value)) return mapGet(map, value);\\n } else map = new Map();\\n\\n var type = classof(value);\\n var C, name, cloned, dataTransfer, i, length, keys, key;\\n\\n switch (type) {\\n case 'Array':\\n cloned = Array(lengthOfArrayLike(value));\\n break;\\n case 'Object':\\n cloned = {};\\n break;\\n case 'Map':\\n cloned = new Map();\\n break;\\n case 'Set':\\n cloned = new Set();\\n break;\\n case 'RegExp':\\n // in this block because of a Safari 14.1 bug\\n // old FF does not clone regexes passed to the constructor, so get the source and flags directly\\n cloned = new RegExp(value.source, getRegExpFlags(value));\\n break;\\n case 'Error':\\n name = value.name;\\n switch (name) {\\n case 'AggregateError':\\n cloned = getBuiltin('AggregateError')([]);\\n break;\\n case 'EvalError':\\n cloned = EvalError();\\n break;\\n case 'RangeError':\\n cloned = RangeError();\\n break;\\n case 'ReferenceError':\\n cloned = ReferenceError();\\n break;\\n case 'SyntaxError':\\n cloned = SyntaxError();\\n break;\\n case 'TypeError':\\n cloned = TypeError();\\n break;\\n case 'URIError':\\n cloned = URIError();\\n break;\\n case 'CompileError':\\n cloned = CompileError();\\n break;\\n case 'LinkError':\\n cloned = LinkError();\\n break;\\n case 'RuntimeError':\\n cloned = RuntimeError();\\n break;\\n default:\\n cloned = Error();\\n }\\n break;\\n case 'DOMException':\\n cloned = new DOMException(value.message, value.name);\\n break;\\n case 'ArrayBuffer':\\n case 'SharedArrayBuffer':\\n cloned = transferredBuffers\\n ? new Placeholder(value, type)\\n : cloneBuffer(value, map, type);\\n break;\\n case 'DataView':\\n case 'Int8Array':\\n case 'Uint8Array':\\n case 'Uint8ClampedArray':\\n case 'Int16Array':\\n case 'Uint16Array':\\n case 'Int32Array':\\n case 'Uint32Array':\\n case 'Float16Array':\\n case 'Float32Array':\\n case 'Float64Array':\\n case 'BigInt64Array':\\n case 'BigUint64Array':\\n length = type === 'DataView' ? value.byteLength : value.length;\\n cloned = transferredBuffers\\n ? new Placeholder(value, type, { offset: value.byteOffset, length: length })\\n : cloneView(value, type, value.byteOffset, length, map);\\n break;\\n case 'DOMQuad':\\n try {\\n cloned = new DOMQuad(\\n structuredCloneInternal(value.p1, map, transferredBuffers),\\n structuredCloneInternal(value.p2, map, transferredBuffers),\\n structuredCloneInternal(value.p3, map, transferredBuffers),\\n structuredCloneInternal(value.p4, map, transferredBuffers)\\n );\\n } catch (error) {\\n cloned = tryNativeRestrictedStructuredClone(value, type);\\n }\\n break;\\n case 'File':\\n if (nativeRestrictedStructuredClone) try {\\n cloned = nativeRestrictedStructuredClone(value);\\n // NodeJS 20.0.0 bug, https://github.com/nodejs/node/issues/47612\\n if (classof(cloned) !== type) cloned = undefined;\\n } catch (error) { /* empty */ }\\n if (!cloned) try {\\n cloned = new File([value], value.name, value);\\n } catch (error) { /* empty */ }\\n if (!cloned) throwUnpolyfillable(type);\\n break;\\n case 'FileList':\\n dataTransfer = createDataTransfer();\\n if (dataTransfer) {\\n for (i = 0, length = lengthOfArrayLike(value); i < length; i++) {\\n dataTransfer.items.add(structuredCloneInternal(value[i], map, transferredBuffers));\\n }\\n cloned = dataTransfer.files;\\n } else cloned = tryNativeRestrictedStructuredClone(value, type);\\n break;\\n case 'ImageData':\\n // Safari 9 ImageData is a constructor, but typeof ImageData is 'object'\\n try {\\n cloned = new ImageData(\\n structuredCloneInternal(value.data, map, transferredBuffers),\\n value.width,\\n value.height,\\n { colorSpace: value.colorSpace }\\n );\\n } catch (error) {\\n cloned = tryNativeRestrictedStructuredClone(value, type);\\n } break;\\n default:\\n if (nativeRestrictedStructuredClone) {\\n cloned = nativeRestrictedStructuredClone(value);\\n } else switch (type) {\\n case 'BigInt':\\n // can be a 3rd party polyfill\\n cloned = Object(value.valueOf());\\n break;\\n case 'Boolean':\\n cloned = Object(thisBooleanValue(value));\\n break;\\n case 'Number':\\n cloned = Object(thisNumberValue(value));\\n break;\\n case 'String':\\n cloned = Object(thisStringValue(value));\\n break;\\n case 'Date':\\n cloned = new Date(thisTimeValue(value));\\n break;\\n case 'Blob':\\n try {\\n cloned = value.slice(0, value.size, value.type);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMPoint':\\n case 'DOMPointReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromPoint\\n ? C.fromPoint(value)\\n : new C(value.x, value.y, value.z, value.w);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMRect':\\n case 'DOMRectReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromRect\\n ? C.fromRect(value)\\n : new C(value.x, value.y, value.width, value.height);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'DOMMatrix':\\n case 'DOMMatrixReadOnly':\\n C = global[type];\\n try {\\n cloned = C.fromMatrix\\n ? C.fromMatrix(value)\\n : new C(value);\\n } catch (error) {\\n throwUnpolyfillable(type);\\n } break;\\n case 'AudioData':\\n case 'VideoFrame':\\n if (!isCallable(value.clone)) throwUnpolyfillable(type);\\n try {\\n cloned = value.clone();\\n } catch (error) {\\n throwUncloneable(type);\\n } break;\\n case 'CropTarget':\\n case 'CryptoKey':\\n case 'FileSystemDirectoryHandle':\\n case 'FileSystemFileHandle':\\n case 'FileSystemHandle':\\n case 'GPUCompilationInfo':\\n case 'GPUCompilationMessage':\\n case 'ImageBitmap':\\n case 'RTCCertificate':\\n case 'WebAssembly.Module':\\n throwUnpolyfillable(type);\\n // break omitted\\n default:\\n throwUncloneable(type);\\n }\\n }\\n\\n mapSet(map, value, cloned);\\n\\n switch (type) {\\n case 'Array':\\n case 'Object':\\n keys = objectKeys(value);\\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\\n key = keys[i];\\n createProperty(cloned, key, structuredCloneInternal(value[key], map, transferredBuffers));\\n } break;\\n case 'Map':\\n value.forEach(function (v, k) {\\n mapSet(cloned, structuredCloneInternal(k, map, transferredBuffers), structuredCloneInternal(v, map, transferredBuffers));\\n });\\n break;\\n case 'Set':\\n value.forEach(function (v) {\\n setAdd(cloned, structuredCloneInternal(v, map, transferredBuffers));\\n });\\n break;\\n case 'Error':\\n createNonEnumerableProperty(cloned, 'message', structuredCloneInternal(value.message, map, transferredBuffers));\\n if (hasOwn(value, 'cause')) {\\n createNonEnumerableProperty(cloned, 'cause', structuredCloneInternal(value.cause, map, transferredBuffers));\\n }\\n if (name == 'AggregateError') {\\n cloned.errors = structuredCloneInternal(value.errors, map, transferredBuffers);\\n } // break omitted\\n case 'DOMException':\\n if (ERROR_STACK_INSTALLABLE) {\\n createNonEnumerableProperty(cloned, 'stack', structuredCloneInternal(value.stack, map, transferredBuffers));\\n }\\n }\\n\\n return cloned;\\n};\\n\\nvar replacePlaceholders = function (value, map) {\\n if (!isObject(value)) return value;\\n if (mapHas(map, value)) return mapGet(map, value);\\n\\n var type, object, metadata, i, length, keys, key, replacement;\\n\\n if (value instanceof Placeholder) {\\n type = value.type;\\n object = value.object;\\n\\n switch (type) {\\n case 'ArrayBuffer':\\n case 'SharedArrayBuffer':\\n replacement = cloneBuffer(object, map, type);\\n break;\\n case 'DataView':\\n case 'Int8Array':\\n case 'Uint8Array':\\n case 'Uint8ClampedArray':\\n case 'Int16Array':\\n case 'Uint16Array':\\n case 'Int32Array':\\n case 'Uint32Array':\\n case 'Float16Array':\\n case 'Float32Array':\\n case 'Float64Array':\\n case 'BigInt64Array':\\n case 'BigUint64Array':\\n metadata = value.metadata;\\n replacement = cloneView(object, type, metadata.offset, metadata.length, map);\\n }\\n } else switch (classof(value)) {\\n case 'Array':\\n case 'Object':\\n keys = objectKeys(value);\\n for (i = 0, length = lengthOfArrayLike(keys); i < length; i++) {\\n key = keys[i];\\n value[key] = replacePlaceholders(value[key], map);\\n } break;\\n case 'Map':\\n replacement = new Map();\\n value.forEach(function (v, k) {\\n mapSet(replacement, replacePlaceholders(k, map), replacePlaceholders(v, map));\\n });\\n break;\\n case 'Set':\\n replacement = new Set();\\n value.forEach(function (v) {\\n setAdd(replacement, replacePlaceholders(v, map));\\n });\\n break;\\n case 'Error':\\n value.message = replacePlaceholders(value.message, map);\\n if (hasOwn(value, 'cause')) {\\n value.cause = replacePlaceholders(value.cause, map);\\n }\\n if (value.name == 'AggregateError') {\\n value.errors = replacePlaceholders(value.errors, map);\\n } // break omitted\\n case 'DOMException':\\n if (ERROR_STACK_INSTALLABLE) {\\n value.stack = replacePlaceholders(value.stack, map);\\n }\\n }\\n\\n mapSet(map, value, replacement || value);\\n\\n return replacement || value;\\n};\\n\\nvar tryToTransfer = function (rawTransfer, map) {\\n if (!isObject(rawTransfer)) throw TypeError('Transfer option cannot be converted to a sequence');\\n\\n var transfer = [];\\n\\n iterate(rawTransfer, function (value) {\\n push(transfer, anObject(value));\\n });\\n\\n var i = 0;\\n var length = lengthOfArrayLike(transfer);\\n var buffers = [];\\n var value, type, C, transferred, canvas, context;\\n\\n while (i < length) {\\n value = transfer[i++];\\n\\n type = classof(value);\\n\\n if (type === 'ArrayBuffer') {\\n push(buffers, value);\\n continue;\\n }\\n\\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\\n\\n if (PROPER_TRANSFER) {\\n transferred = nativeStructuredClone(value, { transfer: [value] });\\n } else switch (type) {\\n case 'ImageBitmap':\\n C = global.OffscreenCanvas;\\n if (!isConstructor(C)) throwUnpolyfillable(type, TRANSFERRING);\\n try {\\n canvas = new C(value.width, value.height);\\n context = canvas.getContext('bitmaprenderer');\\n context.transferFromImageBitmap(value);\\n transferred = canvas.transferToImageBitmap();\\n } catch (error) { /* empty */ }\\n break;\\n case 'AudioData':\\n case 'VideoFrame':\\n if (!isCallable(value.clone) || !isCallable(value.close)) throwUnpolyfillable(type, TRANSFERRING);\\n try {\\n transferred = value.clone();\\n value.close();\\n } catch (error) { /* empty */ }\\n break;\\n case 'MediaSourceHandle':\\n case 'MessagePort':\\n case 'OffscreenCanvas':\\n case 'ReadableStream':\\n case 'TransformStream':\\n case 'WritableStream':\\n throwUnpolyfillable(type, TRANSFERRING);\\n }\\n\\n if (transferred === undefined) throw new DOMException('This object cannot be transferred: ' + type, DATA_CLONE_ERROR);\\n\\n mapSet(map, value, transferred);\\n }\\n\\n return buffers;\\n};\\n\\nvar tryToTransferBuffers = function (transfer, map) {\\n var i = 0;\\n var length = lengthOfArrayLike(transfer);\\n var value, transferred;\\n\\n while (i < length) {\\n value = transfer[i++];\\n\\n if (mapHas(map, value)) throw new DOMException('Duplicate transferable', DATA_CLONE_ERROR);\\n\\n if (PROPER_TRANSFER) {\\n transferred = nativeStructuredClone(value, { transfer: [value] });\\n } else {\\n if (!isCallable(value.transfer)) throwUnpolyfillable('ArrayBuffer', TRANSFERRING);\\n transferred = value.transfer();\\n }\\n\\n mapSet(map, value, transferred);\\n }\\n};\\n\\n// \`structuredClone\` method\\n// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone\\n$({ global: true, enumerable: true, sham: !PROPER_TRANSFER, forced: FORCED_REPLACEMENT }, {\\n structuredClone: function structuredClone(value /* , { transfer } */) {\\n var options = validateArgumentsLength(arguments.length, 1) > 1 && !isNullOrUndefined(arguments[1]) ? anObject(arguments[1]) : undefined;\\n var transfer = options ? options.transfer : undefined;\\n var transferredBuffers = false;\\n var map, buffers;\\n\\n if (transfer !== undefined) {\\n map = new Map();\\n buffers = tryToTransfer(transfer, map);\\n transferredBuffers = !!lengthOfArrayLike(buffers);\\n }\\n\\n var clone = structuredCloneInternal(value, map, transferredBuffers);\\n\\n // since of an issue with cloning views of transferred buffers, we a forced to transfer / clone them in 2 steps\\n // https://github.com/zloirock/core-js/issues/1265\\n if (transferredBuffers) {\\n map = new Map();\\n tryToTransferBuffers(transfer, map);\\n clone = replacePlaceholders(clone, map);\\n }\\n\\n return clone;\\n }\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.structured-clone.js?")}),"./node_modules/core-js/modules/web.url-search-params.constructor.js":((module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like \`preset-env\`\\n__webpack_require__(/*! ../modules/es.array.iterator */ \\"./node_modules/core-js/modules/es.array.iterator.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar call = __webpack_require__(/*! ../internals/function-call */ \\"./node_modules/core-js/internals/function-call.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \\"./node_modules/core-js/internals/url-constructor-detection.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar defineBuiltIns = __webpack_require__(/*! ../internals/define-built-ins */ \\"./node_modules/core-js/internals/define-built-ins.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/iterator-create-constructor */ \\"./node_modules/core-js/internals/iterator-create-constructor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar isCallable = __webpack_require__(/*! ../internals/is-callable */ \\"./node_modules/core-js/internals/is-callable.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar classof = __webpack_require__(/*! ../internals/classof */ \\"./node_modules/core-js/internals/classof.js\\");\\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \\"./node_modules/core-js/internals/an-object.js\\");\\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \\"./node_modules/core-js/internals/is-object.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar create = __webpack_require__(/*! ../internals/object-create */ \\"./node_modules/core-js/internals/object-create.js\\");\\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \\"./node_modules/core-js/internals/create-property-descriptor.js\\");\\nvar getIterator = __webpack_require__(/*! ../internals/get-iterator */ \\"./node_modules/core-js/internals/get-iterator.js\\");\\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \\"./node_modules/core-js/internals/get-iterator-method.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \\"./node_modules/core-js/internals/well-known-symbol.js\\");\\nvar arraySort = __webpack_require__(/*! ../internals/array-sort */ \\"./node_modules/core-js/internals/array-sort.js\\");\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n// Avoid NodeJS experimental warning\\nvar safeGetBuiltIn = function (name) {\\n if (!DESCRIPTORS) return global[name];\\n var descriptor = getOwnPropertyDescriptor(global, name);\\n return descriptor && descriptor.value;\\n};\\n\\nvar nativeFetch = safeGetBuiltIn('fetch');\\nvar NativeRequest = safeGetBuiltIn('Request');\\nvar Headers = safeGetBuiltIn('Headers');\\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\\nvar HeadersPrototype = Headers && Headers.prototype;\\nvar RegExp = global.RegExp;\\nvar TypeError = global.TypeError;\\nvar decodeURIComponent = global.decodeURIComponent;\\nvar encodeURIComponent = global.encodeURIComponent;\\nvar charAt = uncurryThis(''.charAt);\\nvar join = uncurryThis([].join);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar shift = uncurryThis([].shift);\\nvar splice = uncurryThis([].splice);\\nvar split = uncurryThis(''.split);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nvar plus = /\\\\+/g;\\nvar sequences = Array(4);\\n\\nvar percentSequence = function (bytes) {\\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\\\\\da-f]{2}){' + bytes + '})', 'gi'));\\n};\\n\\nvar percentDecode = function (sequence) {\\n try {\\n return decodeURIComponent(sequence);\\n } catch (error) {\\n return sequence;\\n }\\n};\\n\\nvar deserialize = function (it) {\\n var result = replace(it, plus, ' ');\\n var bytes = 4;\\n try {\\n return decodeURIComponent(result);\\n } catch (error) {\\n while (bytes) {\\n result = replace(result, percentSequence(bytes--), percentDecode);\\n }\\n return result;\\n }\\n};\\n\\nvar find = /[!'()~]|%20/g;\\n\\nvar replacements = {\\n '!': '%21',\\n \\"'\\": '%27',\\n '(': '%28',\\n ')': '%29',\\n '~': '%7E',\\n '%20': '+'\\n};\\n\\nvar replacer = function (match) {\\n return replacements[match];\\n};\\n\\nvar serialize = function (it) {\\n return replace(encodeURIComponent(it), find, replacer);\\n};\\n\\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\\n setInternalState(this, {\\n type: URL_SEARCH_PARAMS_ITERATOR,\\n iterator: getIterator(getInternalParamsState(params).entries),\\n kind: kind\\n });\\n}, 'Iterator', function next() {\\n var state = getInternalIteratorState(this);\\n var kind = state.kind;\\n var step = state.iterator.next();\\n var entry = step.value;\\n if (!step.done) {\\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\\n } return step;\\n}, true);\\n\\nvar URLSearchParamsState = function (init) {\\n this.entries = [];\\n this.url = null;\\n\\n if (init !== undefined) {\\n if (isObject(init)) this.parseObject(init);\\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\\n }\\n};\\n\\nURLSearchParamsState.prototype = {\\n type: URL_SEARCH_PARAMS,\\n bindURL: function (url) {\\n this.url = url;\\n this.update();\\n },\\n parseObject: function (object) {\\n var iteratorMethod = getIteratorMethod(object);\\n var iterator, next, step, entryIterator, entryNext, first, second;\\n\\n if (iteratorMethod) {\\n iterator = getIterator(object, iteratorMethod);\\n next = iterator.next;\\n while (!(step = call(next, iterator)).done) {\\n entryIterator = getIterator(anObject(step.value));\\n entryNext = entryIterator.next;\\n if (\\n (first = call(entryNext, entryIterator)).done ||\\n (second = call(entryNext, entryIterator)).done ||\\n !call(entryNext, entryIterator).done\\n ) throw TypeError('Expected sequence with length 2');\\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\\n }\\n } else for (var key in object) if (hasOwn(object, key)) {\\n push(this.entries, { key: key, value: $toString(object[key]) });\\n }\\n },\\n parseQuery: function (query) {\\n if (query) {\\n var attributes = split(query, '&');\\n var index = 0;\\n var attribute, entry;\\n while (index < attributes.length) {\\n attribute = attributes[index++];\\n if (attribute.length) {\\n entry = split(attribute, '=');\\n push(this.entries, {\\n key: deserialize(shift(entry)),\\n value: deserialize(join(entry, '='))\\n });\\n }\\n }\\n }\\n },\\n serialize: function () {\\n var entries = this.entries;\\n var result = [];\\n var index = 0;\\n var entry;\\n while (index < entries.length) {\\n entry = entries[index++];\\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\\n } return join(result, '&');\\n },\\n update: function () {\\n this.entries.length = 0;\\n this.parseQuery(this.url.query);\\n },\\n updateURL: function () {\\n if (this.url) this.url.update();\\n }\\n};\\n\\n// \`URLSearchParams\` constructor\\n// https://url.spec.whatwg.org/#interface-urlsearchparams\\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\\n anInstance(this, URLSearchParamsPrototype);\\n var init = arguments.length > 0 ? arguments[0] : undefined;\\n var state = setInternalState(this, new URLSearchParamsState(init));\\n if (!DESCRIPTORS) this.size = state.entries.length;\\n};\\n\\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\\n\\ndefineBuiltIns(URLSearchParamsPrototype, {\\n // \`URLSearchParams.prototype.append\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\\n append: function append(name, value) {\\n var state = getInternalParamsState(this);\\n validateArgumentsLength(arguments.length, 2);\\n push(state.entries, { key: $toString(name), value: $toString(value) });\\n if (!DESCRIPTORS) this.length++;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.delete\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\\n 'delete': function (name /* , value */) {\\n var state = getInternalParamsState(this);\\n var length = validateArgumentsLength(arguments.length, 1);\\n var entries = state.entries;\\n var key = $toString(name);\\n var $value = length < 2 ? undefined : arguments[1];\\n var value = $value === undefined ? $value : $toString($value);\\n var index = 0;\\n while (index < entries.length) {\\n var entry = entries[index];\\n if (entry.key === key && (value === undefined || entry.value === value)) {\\n splice(entries, index, 1);\\n if (value !== undefined) break;\\n } else index++;\\n }\\n if (!DESCRIPTORS) this.size = entries.length;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.get\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\\n get: function get(name) {\\n var entries = getInternalParamsState(this).entries;\\n validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var index = 0;\\n for (; index < entries.length; index++) {\\n if (entries[index].key === key) return entries[index].value;\\n }\\n return null;\\n },\\n // \`URLSearchParams.prototype.getAll\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\\n getAll: function getAll(name) {\\n var entries = getInternalParamsState(this).entries;\\n validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var result = [];\\n var index = 0;\\n for (; index < entries.length; index++) {\\n if (entries[index].key === key) push(result, entries[index].value);\\n }\\n return result;\\n },\\n // \`URLSearchParams.prototype.has\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\\n has: function has(name /* , value */) {\\n var entries = getInternalParamsState(this).entries;\\n var length = validateArgumentsLength(arguments.length, 1);\\n var key = $toString(name);\\n var $value = length < 2 ? undefined : arguments[1];\\n var value = $value === undefined ? $value : $toString($value);\\n var index = 0;\\n while (index < entries.length) {\\n var entry = entries[index++];\\n if (entry.key === key && (value === undefined || entry.value === value)) return true;\\n }\\n return false;\\n },\\n // \`URLSearchParams.prototype.set\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\\n set: function set(name, value) {\\n var state = getInternalParamsState(this);\\n validateArgumentsLength(arguments.length, 1);\\n var entries = state.entries;\\n var found = false;\\n var key = $toString(name);\\n var val = $toString(value);\\n var index = 0;\\n var entry;\\n for (; index < entries.length; index++) {\\n entry = entries[index];\\n if (entry.key === key) {\\n if (found) splice(entries, index--, 1);\\n else {\\n found = true;\\n entry.value = val;\\n }\\n }\\n }\\n if (!found) push(entries, { key: key, value: val });\\n if (!DESCRIPTORS) this.size = entries.length;\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.sort\` method\\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\\n sort: function sort() {\\n var state = getInternalParamsState(this);\\n arraySort(state.entries, function (a, b) {\\n return a.key > b.key ? 1 : -1;\\n });\\n state.updateURL();\\n },\\n // \`URLSearchParams.prototype.forEach\` method\\n forEach: function forEach(callback /* , thisArg */) {\\n var entries = getInternalParamsState(this).entries;\\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\\n var index = 0;\\n var entry;\\n while (index < entries.length) {\\n entry = entries[index++];\\n boundFunction(entry.value, entry.key, this);\\n }\\n },\\n // \`URLSearchParams.prototype.keys\` method\\n keys: function keys() {\\n return new URLSearchParamsIterator(this, 'keys');\\n },\\n // \`URLSearchParams.prototype.values\` method\\n values: function values() {\\n return new URLSearchParamsIterator(this, 'values');\\n },\\n // \`URLSearchParams.prototype.entries\` method\\n entries: function entries() {\\n return new URLSearchParamsIterator(this, 'entries');\\n }\\n}, { enumerable: true });\\n\\n// \`URLSearchParams.prototype[@@iterator]\` method\\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\\n\\n// \`URLSearchParams.prototype.toString\` method\\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\\n return getInternalParamsState(this).serialize();\\n}, { enumerable: true });\\n\\n// \`URLSearchParams.prototype.size\` getter\\n// https://github.com/whatwg/url/pull/734\\nif (DESCRIPTORS) defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n get: function size() {\\n return getInternalParamsState(this).entries.length;\\n },\\n configurable: true,\\n enumerable: true\\n});\\n\\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\\n\\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\\n URLSearchParams: URLSearchParamsConstructor\\n});\\n\\n// Wrap \`fetch\` and \`Request\` for correct work with polyfilled \`URLSearchParams\`\\nif (!USE_NATIVE_URL && isCallable(Headers)) {\\n var headersHas = uncurryThis(HeadersPrototype.has);\\n var headersSet = uncurryThis(HeadersPrototype.set);\\n\\n var wrapRequestOptions = function (init) {\\n if (isObject(init)) {\\n var body = init.body;\\n var headers;\\n if (classof(body) === URL_SEARCH_PARAMS) {\\n headers = init.headers ? new Headers(init.headers) : new Headers();\\n if (!headersHas(headers, 'content-type')) {\\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\\n }\\n return create(init, {\\n body: createPropertyDescriptor(0, $toString(body)),\\n headers: createPropertyDescriptor(0, headers)\\n });\\n }\\n } return init;\\n };\\n\\n if (isCallable(nativeFetch)) {\\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\\n fetch: function fetch(input /* , init */) {\\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\\n }\\n });\\n }\\n\\n if (isCallable(NativeRequest)) {\\n var RequestConstructor = function Request(input /* , init */) {\\n anInstance(this, RequestPrototype);\\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\\n };\\n\\n RequestPrototype.constructor = RequestConstructor;\\n RequestConstructor.prototype = RequestPrototype;\\n\\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\\n Request: RequestConstructor\\n });\\n }\\n}\\n\\nmodule.exports = {\\n URLSearchParams: URLSearchParamsConstructor,\\n getState: getInternalParamsState\\n};\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.constructor.js?")}),"./node_modules/core-js/modules/web.url-search-params.delete.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar append = uncurryThis(URLSearchParamsPrototype.append);\\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\nvar push = uncurryThis([].push);\\nvar params = new $URLSearchParams('a=1&a=2&b=3');\\n\\nparams['delete']('a', 1);\\n// \`undefined\` case is a Chromium 117 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\\nparams['delete']('b', undefined);\\n\\nif (params + '' !== 'a=2') {\\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\\n var length = arguments.length;\\n var $value = length < 2 ? undefined : arguments[1];\\n if (length && $value === undefined) return $delete(this, name);\\n var entries = [];\\n forEach(this, function (v, k) { // also validates \`this\`\\n push(entries, { key: k, value: v });\\n });\\n validateArgumentsLength(length, 1);\\n var key = toString(name);\\n var value = toString($value);\\n var index = 0;\\n var dindex = 0;\\n var found = false;\\n var entriesLength = entries.length;\\n var entry;\\n while (index < entriesLength) {\\n entry = entries[index++];\\n if (found || entry.key === key) {\\n found = true;\\n $delete(this, entry.key);\\n } else dindex++;\\n }\\n while (dindex < entriesLength) {\\n entry = entries[dindex++];\\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\\n }\\n }, { enumerable: true, unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.delete.js?")}),"./node_modules/core-js/modules/web.url-search-params.has.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\\nvar params = new $URLSearchParams('a=1');\\n\\n// \`undefined\` case is a Chromium 117 bug\\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\\nif (params.has('a', 2) || !params.has('a', undefined)) {\\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\\n var length = arguments.length;\\n var $value = length < 2 ? undefined : arguments[1];\\n if (length && $value === undefined) return $has(this, name);\\n var values = getAll(this, name); // also validates \`this\`\\n validateArgumentsLength(length, 1);\\n var value = toString($value);\\n var index = 0;\\n while (index < values.length) {\\n if (values[index++] === value) return true;\\n } return false;\\n }, { enumerable: true, unsafe: true });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.has.js?")}),"./node_modules/core-js/modules/web.url-search-params.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/web.url-search-params.constructor */ \\"./node_modules/core-js/modules/web.url-search-params.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.js?")}),"./node_modules/core-js/modules/web.url-search-params.size.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\n\\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\n\\n// \`URLSearchParams.prototype.size\` getter\\n// https://github.com/whatwg/url/pull/734\\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n get: function size() {\\n var count = 0;\\n forEach(this, function () { count++; });\\n return count;\\n },\\n configurable: true,\\n enumerable: true\\n });\\n}\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url-search-params.size.js?")}),"./node_modules/core-js/modules/web.url.constructor.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like \`preset-env\`\\n__webpack_require__(/*! ../modules/es.string.iterator */ \\"./node_modules/core-js/modules/es.string.iterator.js\\");\\nvar $ = __webpack_require__(/*! ../internals/export */ \\"./node_modules/core-js/internals/export.js\\");\\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \\"./node_modules/core-js/internals/descriptors.js\\");\\nvar USE_NATIVE_URL = __webpack_require__(/*! ../internals/url-constructor-detection */ \\"./node_modules/core-js/internals/url-constructor-detection.js\\");\\nvar global = __webpack_require__(/*! ../internals/global */ \\"./node_modules/core-js/internals/global.js\\");\\nvar bind = __webpack_require__(/*! ../internals/function-bind-context */ \\"./node_modules/core-js/internals/function-bind-context.js\\");\\nvar uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ \\"./node_modules/core-js/internals/function-uncurry-this.js\\");\\nvar defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ \\"./node_modules/core-js/internals/define-built-in.js\\");\\nvar defineBuiltInAccessor = __webpack_require__(/*! ../internals/define-built-in-accessor */ \\"./node_modules/core-js/internals/define-built-in-accessor.js\\");\\nvar anInstance = __webpack_require__(/*! ../internals/an-instance */ \\"./node_modules/core-js/internals/an-instance.js\\");\\nvar hasOwn = __webpack_require__(/*! ../internals/has-own-property */ \\"./node_modules/core-js/internals/has-own-property.js\\");\\nvar assign = __webpack_require__(/*! ../internals/object-assign */ \\"./node_modules/core-js/internals/object-assign.js\\");\\nvar arrayFrom = __webpack_require__(/*! ../internals/array-from */ \\"./node_modules/core-js/internals/array-from.js\\");\\nvar arraySlice = __webpack_require__(/*! ../internals/array-slice-simple */ \\"./node_modules/core-js/internals/array-slice-simple.js\\");\\nvar codeAt = (__webpack_require__(/*! ../internals/string-multibyte */ \\"./node_modules/core-js/internals/string-multibyte.js\\").codeAt);\\nvar toASCII = __webpack_require__(/*! ../internals/string-punycode-to-ascii */ \\"./node_modules/core-js/internals/string-punycode-to-ascii.js\\");\\nvar $toString = __webpack_require__(/*! ../internals/to-string */ \\"./node_modules/core-js/internals/to-string.js\\");\\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \\"./node_modules/core-js/internals/set-to-string-tag.js\\");\\nvar validateArgumentsLength = __webpack_require__(/*! ../internals/validate-arguments-length */ \\"./node_modules/core-js/internals/validate-arguments-length.js\\");\\nvar URLSearchParamsModule = __webpack_require__(/*! ../modules/web.url-search-params.constructor */ \\"./node_modules/core-js/modules/web.url-search-params.constructor.js\\");\\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \\"./node_modules/core-js/internals/internal-state.js\\");\\n\\nvar setInternalState = InternalStateModule.set;\\nvar getInternalURLState = InternalStateModule.getterFor('URL');\\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\\n\\nvar NativeURL = global.URL;\\nvar TypeError = global.TypeError;\\nvar parseInt = global.parseInt;\\nvar floor = Math.floor;\\nvar pow = Math.pow;\\nvar charAt = uncurryThis(''.charAt);\\nvar exec = uncurryThis(/./.exec);\\nvar join = uncurryThis([].join);\\nvar numberToString = uncurryThis(1.0.toString);\\nvar pop = uncurryThis([].pop);\\nvar push = uncurryThis([].push);\\nvar replace = uncurryThis(''.replace);\\nvar shift = uncurryThis([].shift);\\nvar split = uncurryThis(''.split);\\nvar stringSlice = uncurryThis(''.slice);\\nvar toLowerCase = uncurryThis(''.toLowerCase);\\nvar unshift = uncurryThis([].unshift);\\n\\nvar INVALID_AUTHORITY = 'Invalid authority';\\nvar INVALID_SCHEME = 'Invalid scheme';\\nvar INVALID_HOST = 'Invalid host';\\nvar INVALID_PORT = 'Invalid port';\\n\\nvar ALPHA = /[a-z]/i;\\n// eslint-disable-next-line regexp/no-obscure-range -- safe\\nvar ALPHANUMERIC = /[\\\\d+-.a-z]/i;\\nvar DIGIT = /\\\\d/;\\nvar HEX_START = /^0x/i;\\nvar OCT = /^[0-7]+$/;\\nvar DEC = /^\\\\d+$/;\\nvar HEX = /^[\\\\da-f]+$/i;\\n/* eslint-disable regexp/no-control-character -- safe */\\nvar FORBIDDEN_HOST_CODE_POINT = /[\\\\0\\\\t\\\\n\\\\r #%/:<>?@[\\\\\\\\\\\\]^|]/;\\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\\\0\\\\t\\\\n\\\\r #/:<>?@[\\\\\\\\\\\\]^|]/;\\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\\\u0000-\\\\u0020]+/;\\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\\\u0000-\\\\u0020])[\\\\u0000-\\\\u0020]+$/;\\nvar TAB_AND_NEW_LINE = /[\\\\t\\\\n\\\\r]/g;\\n/* eslint-enable regexp/no-control-character -- safe */\\nvar EOF;\\n\\n// https://url.spec.whatwg.org/#ipv4-number-parser\\nvar parseIPv4 = function (input) {\\n var parts = split(input, '.');\\n var partsLength, numbers, index, part, radix, number, ipv4;\\n if (parts.length && parts[parts.length - 1] == '') {\\n parts.length--;\\n }\\n partsLength = parts.length;\\n if (partsLength > 4) return input;\\n numbers = [];\\n for (index = 0; index < partsLength; index++) {\\n part = parts[index];\\n if (part == '') return input;\\n radix = 10;\\n if (part.length > 1 && charAt(part, 0) == '0') {\\n radix = exec(HEX_START, part) ? 16 : 8;\\n part = stringSlice(part, radix == 8 ? 1 : 2);\\n }\\n if (part === '') {\\n number = 0;\\n } else {\\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\\n number = parseInt(part, radix);\\n }\\n push(numbers, number);\\n }\\n for (index = 0; index < partsLength; index++) {\\n number = numbers[index];\\n if (index == partsLength - 1) {\\n if (number >= pow(256, 5 - partsLength)) return null;\\n } else if (number > 255) return null;\\n }\\n ipv4 = pop(numbers);\\n for (index = 0; index < numbers.length; index++) {\\n ipv4 += numbers[index] * pow(256, 3 - index);\\n }\\n return ipv4;\\n};\\n\\n// https://url.spec.whatwg.org/#concept-ipv6-parser\\n// eslint-disable-next-line max-statements -- TODO\\nvar parseIPv6 = function (input) {\\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\\n var pieceIndex = 0;\\n var compress = null;\\n var pointer = 0;\\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\\n\\n var chr = function () {\\n return charAt(input, pointer);\\n };\\n\\n if (chr() == ':') {\\n if (charAt(input, 1) != ':') return;\\n pointer += 2;\\n pieceIndex++;\\n compress = pieceIndex;\\n }\\n while (chr()) {\\n if (pieceIndex == 8) return;\\n if (chr() == ':') {\\n if (compress !== null) return;\\n pointer++;\\n pieceIndex++;\\n compress = pieceIndex;\\n continue;\\n }\\n value = length = 0;\\n while (length < 4 && exec(HEX, chr())) {\\n value = value * 16 + parseInt(chr(), 16);\\n pointer++;\\n length++;\\n }\\n if (chr() == '.') {\\n if (length == 0) return;\\n pointer -= length;\\n if (pieceIndex > 6) return;\\n numbersSeen = 0;\\n while (chr()) {\\n ipv4Piece = null;\\n if (numbersSeen > 0) {\\n if (chr() == '.' && numbersSeen < 4) pointer++;\\n else return;\\n }\\n if (!exec(DIGIT, chr())) return;\\n while (exec(DIGIT, chr())) {\\n number = parseInt(chr(), 10);\\n if (ipv4Piece === null) ipv4Piece = number;\\n else if (ipv4Piece == 0) return;\\n else ipv4Piece = ipv4Piece * 10 + number;\\n if (ipv4Piece > 255) return;\\n pointer++;\\n }\\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\\n numbersSeen++;\\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\\n }\\n if (numbersSeen != 4) return;\\n break;\\n } else if (chr() == ':') {\\n pointer++;\\n if (!chr()) return;\\n } else if (chr()) return;\\n address[pieceIndex++] = value;\\n }\\n if (compress !== null) {\\n swaps = pieceIndex - compress;\\n pieceIndex = 7;\\n while (pieceIndex != 0 && swaps > 0) {\\n swap = address[pieceIndex];\\n address[pieceIndex--] = address[compress + swaps - 1];\\n address[compress + --swaps] = swap;\\n }\\n } else if (pieceIndex != 8) return;\\n return address;\\n};\\n\\nvar findLongestZeroSequence = function (ipv6) {\\n var maxIndex = null;\\n var maxLength = 1;\\n var currStart = null;\\n var currLength = 0;\\n var index = 0;\\n for (; index < 8; index++) {\\n if (ipv6[index] !== 0) {\\n if (currLength > maxLength) {\\n maxIndex = currStart;\\n maxLength = currLength;\\n }\\n currStart = null;\\n currLength = 0;\\n } else {\\n if (currStart === null) currStart = index;\\n ++currLength;\\n }\\n }\\n if (currLength > maxLength) {\\n maxIndex = currStart;\\n maxLength = currLength;\\n }\\n return maxIndex;\\n};\\n\\n// https://url.spec.whatwg.org/#host-serializing\\nvar serializeHost = function (host) {\\n var result, index, compress, ignore0;\\n // ipv4\\n if (typeof host == 'number') {\\n result = [];\\n for (index = 0; index < 4; index++) {\\n unshift(result, host % 256);\\n host = floor(host / 256);\\n } return join(result, '.');\\n // ipv6\\n } else if (typeof host == 'object') {\\n result = '';\\n compress = findLongestZeroSequence(host);\\n for (index = 0; index < 8; index++) {\\n if (ignore0 && host[index] === 0) continue;\\n if (ignore0) ignore0 = false;\\n if (compress === index) {\\n result += index ? ':' : '::';\\n ignore0 = true;\\n } else {\\n result += numberToString(host[index], 16);\\n if (index < 7) result += ':';\\n }\\n }\\n return '[' + result + ']';\\n } return host;\\n};\\n\\nvar C0ControlPercentEncodeSet = {};\\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\\n ' ': 1, '\\"': 1, '<': 1, '>': 1, '\`': 1\\n});\\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\\n '#': 1, '?': 1, '{': 1, '}': 1\\n});\\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\\\\\': 1, ']': 1, '^': 1, '|': 1\\n});\\n\\nvar percentEncode = function (chr, set) {\\n var code = codeAt(chr, 0);\\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\\n};\\n\\n// https://url.spec.whatwg.org/#special-scheme\\nvar specialSchemes = {\\n ftp: 21,\\n file: null,\\n http: 80,\\n https: 443,\\n ws: 80,\\n wss: 443\\n};\\n\\n// https://url.spec.whatwg.org/#windows-drive-letter\\nvar isWindowsDriveLetter = function (string, normalized) {\\n var second;\\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\\n};\\n\\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\\nvar startsWithWindowsDriveLetter = function (string) {\\n var third;\\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\\n string.length == 2 ||\\n ((third = charAt(string, 2)) === '/' || third === '\\\\\\\\' || third === '?' || third === '#')\\n );\\n};\\n\\n// https://url.spec.whatwg.org/#single-dot-path-segment\\nvar isSingleDot = function (segment) {\\n return segment === '.' || toLowerCase(segment) === '%2e';\\n};\\n\\n// https://url.spec.whatwg.org/#double-dot-path-segment\\nvar isDoubleDot = function (segment) {\\n segment = toLowerCase(segment);\\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\\n};\\n\\n// States:\\nvar SCHEME_START = {};\\nvar SCHEME = {};\\nvar NO_SCHEME = {};\\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\\nvar PATH_OR_AUTHORITY = {};\\nvar RELATIVE = {};\\nvar RELATIVE_SLASH = {};\\nvar SPECIAL_AUTHORITY_SLASHES = {};\\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\\nvar AUTHORITY = {};\\nvar HOST = {};\\nvar HOSTNAME = {};\\nvar PORT = {};\\nvar FILE = {};\\nvar FILE_SLASH = {};\\nvar FILE_HOST = {};\\nvar PATH_START = {};\\nvar PATH = {};\\nvar CANNOT_BE_A_BASE_URL_PATH = {};\\nvar QUERY = {};\\nvar FRAGMENT = {};\\n\\nvar URLState = function (url, isBase, base) {\\n var urlString = $toString(url);\\n var baseState, failure, searchParams;\\n if (isBase) {\\n failure = this.parse(urlString);\\n if (failure) throw TypeError(failure);\\n this.searchParams = null;\\n } else {\\n if (base !== undefined) baseState = new URLState(base, true);\\n failure = this.parse(urlString, null, baseState);\\n if (failure) throw TypeError(failure);\\n searchParams = getInternalSearchParamsState(new URLSearchParams());\\n searchParams.bindURL(this);\\n this.searchParams = searchParams;\\n }\\n};\\n\\nURLState.prototype = {\\n type: 'URL',\\n // https://url.spec.whatwg.org/#url-parsing\\n // eslint-disable-next-line max-statements -- TODO\\n parse: function (input, stateOverride, base) {\\n var url = this;\\n var state = stateOverride || SCHEME_START;\\n var pointer = 0;\\n var buffer = '';\\n var seenAt = false;\\n var seenBracket = false;\\n var seenPasswordToken = false;\\n var codePoints, chr, bufferCodePoints, failure;\\n\\n input = $toString(input);\\n\\n if (!stateOverride) {\\n url.scheme = '';\\n url.username = '';\\n url.password = '';\\n url.host = null;\\n url.port = null;\\n url.path = [];\\n url.query = null;\\n url.fragment = null;\\n url.cannotBeABaseURL = false;\\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\\n }\\n\\n input = replace(input, TAB_AND_NEW_LINE, '');\\n\\n codePoints = arrayFrom(input);\\n\\n while (pointer <= codePoints.length) {\\n chr = codePoints[pointer];\\n switch (state) {\\n case SCHEME_START:\\n if (chr && exec(ALPHA, chr)) {\\n buffer += toLowerCase(chr);\\n state = SCHEME;\\n } else if (!stateOverride) {\\n state = NO_SCHEME;\\n continue;\\n } else return INVALID_SCHEME;\\n break;\\n\\n case SCHEME:\\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\\n buffer += toLowerCase(chr);\\n } else if (chr == ':') {\\n if (stateOverride && (\\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\\n (url.scheme == 'file' && !url.host)\\n )) return;\\n url.scheme = buffer;\\n if (stateOverride) {\\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\\n return;\\n }\\n buffer = '';\\n if (url.scheme == 'file') {\\n state = FILE;\\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\\n } else if (url.isSpecial()) {\\n state = SPECIAL_AUTHORITY_SLASHES;\\n } else if (codePoints[pointer + 1] == '/') {\\n state = PATH_OR_AUTHORITY;\\n pointer++;\\n } else {\\n url.cannotBeABaseURL = true;\\n push(url.path, '');\\n state = CANNOT_BE_A_BASE_URL_PATH;\\n }\\n } else if (!stateOverride) {\\n buffer = '';\\n state = NO_SCHEME;\\n pointer = 0;\\n continue;\\n } else return INVALID_SCHEME;\\n break;\\n\\n case NO_SCHEME:\\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\\n if (base.cannotBeABaseURL && chr == '#') {\\n url.scheme = base.scheme;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n url.cannotBeABaseURL = true;\\n state = FRAGMENT;\\n break;\\n }\\n state = base.scheme == 'file' ? FILE : RELATIVE;\\n continue;\\n\\n case SPECIAL_RELATIVE_OR_AUTHORITY:\\n if (chr == '/' && codePoints[pointer + 1] == '/') {\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n pointer++;\\n } else {\\n state = RELATIVE;\\n continue;\\n } break;\\n\\n case PATH_OR_AUTHORITY:\\n if (chr == '/') {\\n state = AUTHORITY;\\n break;\\n } else {\\n state = PATH;\\n continue;\\n }\\n\\n case RELATIVE:\\n url.scheme = base.scheme;\\n if (chr == EOF) {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n } else if (chr == '/' || (chr == '\\\\\\\\' && url.isSpecial())) {\\n state = RELATIVE_SLASH;\\n } else if (chr == '?') {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n state = FRAGMENT;\\n } else {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n url.path = arraySlice(base.path);\\n url.path.length--;\\n state = PATH;\\n continue;\\n } break;\\n\\n case RELATIVE_SLASH:\\n if (url.isSpecial() && (chr == '/' || chr == '\\\\\\\\')) {\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n } else if (chr == '/') {\\n state = AUTHORITY;\\n } else {\\n url.username = base.username;\\n url.password = base.password;\\n url.host = base.host;\\n url.port = base.port;\\n state = PATH;\\n continue;\\n } break;\\n\\n case SPECIAL_AUTHORITY_SLASHES:\\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\\n pointer++;\\n break;\\n\\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\\n if (chr != '/' && chr != '\\\\\\\\') {\\n state = AUTHORITY;\\n continue;\\n } break;\\n\\n case AUTHORITY:\\n if (chr == '@') {\\n if (seenAt) buffer = '%40' + buffer;\\n seenAt = true;\\n bufferCodePoints = arrayFrom(buffer);\\n for (var i = 0; i < bufferCodePoints.length; i++) {\\n var codePoint = bufferCodePoints[i];\\n if (codePoint == ':' && !seenPasswordToken) {\\n seenPasswordToken = true;\\n continue;\\n }\\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\\n if (seenPasswordToken) url.password += encodedCodePoints;\\n else url.username += encodedCodePoints;\\n }\\n buffer = '';\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial())\\n ) {\\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\\n pointer -= arrayFrom(buffer).length + 1;\\n buffer = '';\\n state = HOST;\\n } else buffer += chr;\\n break;\\n\\n case HOST:\\n case HOSTNAME:\\n if (stateOverride && url.scheme == 'file') {\\n state = FILE_HOST;\\n continue;\\n } else if (chr == ':' && !seenBracket) {\\n if (buffer == '') return INVALID_HOST;\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n buffer = '';\\n state = PORT;\\n if (stateOverride == HOSTNAME) return;\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial())\\n ) {\\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n buffer = '';\\n state = PATH_START;\\n if (stateOverride) return;\\n continue;\\n } else {\\n if (chr == '[') seenBracket = true;\\n else if (chr == ']') seenBracket = false;\\n buffer += chr;\\n } break;\\n\\n case PORT:\\n if (exec(DIGIT, chr)) {\\n buffer += chr;\\n } else if (\\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\\n (chr == '\\\\\\\\' && url.isSpecial()) ||\\n stateOverride\\n ) {\\n if (buffer != '') {\\n var port = parseInt(buffer, 10);\\n if (port > 0xFFFF) return INVALID_PORT;\\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\\n buffer = '';\\n }\\n if (stateOverride) return;\\n state = PATH_START;\\n continue;\\n } else return INVALID_PORT;\\n break;\\n\\n case FILE:\\n url.scheme = 'file';\\n if (chr == '/' || chr == '\\\\\\\\') state = FILE_SLASH;\\n else if (base && base.scheme == 'file') {\\n if (chr == EOF) {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n } else if (chr == '?') {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.query = base.query;\\n url.fragment = '';\\n state = FRAGMENT;\\n } else {\\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\\n url.host = base.host;\\n url.path = arraySlice(base.path);\\n url.shortenPath();\\n }\\n state = PATH;\\n continue;\\n }\\n } else {\\n state = PATH;\\n continue;\\n } break;\\n\\n case FILE_SLASH:\\n if (chr == '/' || chr == '\\\\\\\\') {\\n state = FILE_HOST;\\n break;\\n }\\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\\n else url.host = base.host;\\n }\\n state = PATH;\\n continue;\\n\\n case FILE_HOST:\\n if (chr == EOF || chr == '/' || chr == '\\\\\\\\' || chr == '?' || chr == '#') {\\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\\n state = PATH;\\n } else if (buffer == '') {\\n url.host = '';\\n if (stateOverride) return;\\n state = PATH_START;\\n } else {\\n failure = url.parseHost(buffer);\\n if (failure) return failure;\\n if (url.host == 'localhost') url.host = '';\\n if (stateOverride) return;\\n buffer = '';\\n state = PATH_START;\\n } continue;\\n } else buffer += chr;\\n break;\\n\\n case PATH_START:\\n if (url.isSpecial()) {\\n state = PATH;\\n if (chr != '/' && chr != '\\\\\\\\') continue;\\n } else if (!stateOverride && chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (!stateOverride && chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n state = PATH;\\n if (chr != '/') continue;\\n } break;\\n\\n case PATH:\\n if (\\n chr == EOF || chr == '/' ||\\n (chr == '\\\\\\\\' && url.isSpecial()) ||\\n (!stateOverride && (chr == '?' || chr == '#'))\\n ) {\\n if (isDoubleDot(buffer)) {\\n url.shortenPath();\\n if (chr != '/' && !(chr == '\\\\\\\\' && url.isSpecial())) {\\n push(url.path, '');\\n }\\n } else if (isSingleDot(buffer)) {\\n if (chr != '/' && !(chr == '\\\\\\\\' && url.isSpecial())) {\\n push(url.path, '');\\n }\\n } else {\\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\\n if (url.host) url.host = '';\\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\\n }\\n push(url.path, buffer);\\n }\\n buffer = '';\\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\\n while (url.path.length > 1 && url.path[0] === '') {\\n shift(url.path);\\n }\\n }\\n if (chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n }\\n } else {\\n buffer += percentEncode(chr, pathPercentEncodeSet);\\n } break;\\n\\n case CANNOT_BE_A_BASE_URL_PATH:\\n if (chr == '?') {\\n url.query = '';\\n state = QUERY;\\n } else if (chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\\n } break;\\n\\n case QUERY:\\n if (!stateOverride && chr == '#') {\\n url.fragment = '';\\n state = FRAGMENT;\\n } else if (chr != EOF) {\\n if (chr == \\"'\\" && url.isSpecial()) url.query += '%27';\\n else if (chr == '#') url.query += '%23';\\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\\n } break;\\n\\n case FRAGMENT:\\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\\n break;\\n }\\n\\n pointer++;\\n }\\n },\\n // https://url.spec.whatwg.org/#host-parsing\\n parseHost: function (input) {\\n var result, codePoints, index;\\n if (charAt(input, 0) == '[') {\\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\\n result = parseIPv6(stringSlice(input, 1, -1));\\n if (!result) return INVALID_HOST;\\n this.host = result;\\n // opaque host\\n } else if (!this.isSpecial()) {\\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\\n result = '';\\n codePoints = arrayFrom(input);\\n for (index = 0; index < codePoints.length; index++) {\\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\\n }\\n this.host = result;\\n } else {\\n input = toASCII(input);\\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\\n result = parseIPv4(input);\\n if (result === null) return INVALID_HOST;\\n this.host = result;\\n }\\n },\\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\\n cannotHaveUsernamePasswordPort: function () {\\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\\n },\\n // https://url.spec.whatwg.org/#include-credentials\\n includesCredentials: function () {\\n return this.username != '' || this.password != '';\\n },\\n // https://url.spec.whatwg.org/#is-special\\n isSpecial: function () {\\n return hasOwn(specialSchemes, this.scheme);\\n },\\n // https://url.spec.whatwg.org/#shorten-a-urls-path\\n shortenPath: function () {\\n var path = this.path;\\n var pathSize = path.length;\\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\\n path.length--;\\n }\\n },\\n // https://url.spec.whatwg.org/#concept-url-serializer\\n serialize: function () {\\n var url = this;\\n var scheme = url.scheme;\\n var username = url.username;\\n var password = url.password;\\n var host = url.host;\\n var port = url.port;\\n var path = url.path;\\n var query = url.query;\\n var fragment = url.fragment;\\n var output = scheme + ':';\\n if (host !== null) {\\n output += '//';\\n if (url.includesCredentials()) {\\n output += username + (password ? ':' + password : '') + '@';\\n }\\n output += serializeHost(host);\\n if (port !== null) output += ':' + port;\\n } else if (scheme == 'file') output += '//';\\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\\n if (query !== null) output += '?' + query;\\n if (fragment !== null) output += '#' + fragment;\\n return output;\\n },\\n // https://url.spec.whatwg.org/#dom-url-href\\n setHref: function (href) {\\n var failure = this.parse(href);\\n if (failure) throw TypeError(failure);\\n this.searchParams.update();\\n },\\n // https://url.spec.whatwg.org/#dom-url-origin\\n getOrigin: function () {\\n var scheme = this.scheme;\\n var port = this.port;\\n if (scheme == 'blob') try {\\n return new URLConstructor(scheme.path[0]).origin;\\n } catch (error) {\\n return 'null';\\n }\\n if (scheme == 'file' || !this.isSpecial()) return 'null';\\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\\n },\\n // https://url.spec.whatwg.org/#dom-url-protocol\\n getProtocol: function () {\\n return this.scheme + ':';\\n },\\n setProtocol: function (protocol) {\\n this.parse($toString(protocol) + ':', SCHEME_START);\\n },\\n // https://url.spec.whatwg.org/#dom-url-username\\n getUsername: function () {\\n return this.username;\\n },\\n setUsername: function (username) {\\n var codePoints = arrayFrom($toString(username));\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n this.username = '';\\n for (var i = 0; i < codePoints.length; i++) {\\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\\n }\\n },\\n // https://url.spec.whatwg.org/#dom-url-password\\n getPassword: function () {\\n return this.password;\\n },\\n setPassword: function (password) {\\n var codePoints = arrayFrom($toString(password));\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n this.password = '';\\n for (var i = 0; i < codePoints.length; i++) {\\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\\n }\\n },\\n // https://url.spec.whatwg.org/#dom-url-host\\n getHost: function () {\\n var host = this.host;\\n var port = this.port;\\n return host === null ? ''\\n : port === null ? serializeHost(host)\\n : serializeHost(host) + ':' + port;\\n },\\n setHost: function (host) {\\n if (this.cannotBeABaseURL) return;\\n this.parse(host, HOST);\\n },\\n // https://url.spec.whatwg.org/#dom-url-hostname\\n getHostname: function () {\\n var host = this.host;\\n return host === null ? '' : serializeHost(host);\\n },\\n setHostname: function (hostname) {\\n if (this.cannotBeABaseURL) return;\\n this.parse(hostname, HOSTNAME);\\n },\\n // https://url.spec.whatwg.org/#dom-url-port\\n getPort: function () {\\n var port = this.port;\\n return port === null ? '' : $toString(port);\\n },\\n setPort: function (port) {\\n if (this.cannotHaveUsernamePasswordPort()) return;\\n port = $toString(port);\\n if (port == '') this.port = null;\\n else this.parse(port, PORT);\\n },\\n // https://url.spec.whatwg.org/#dom-url-pathname\\n getPathname: function () {\\n var path = this.path;\\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\\n },\\n setPathname: function (pathname) {\\n if (this.cannotBeABaseURL) return;\\n this.path = [];\\n this.parse(pathname, PATH_START);\\n },\\n // https://url.spec.whatwg.org/#dom-url-search\\n getSearch: function () {\\n var query = this.query;\\n return query ? '?' + query : '';\\n },\\n setSearch: function (search) {\\n search = $toString(search);\\n if (search == '') {\\n this.query = null;\\n } else {\\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\\n this.query = '';\\n this.parse(search, QUERY);\\n }\\n this.searchParams.update();\\n },\\n // https://url.spec.whatwg.org/#dom-url-searchparams\\n getSearchParams: function () {\\n return this.searchParams.facade;\\n },\\n // https://url.spec.whatwg.org/#dom-url-hash\\n getHash: function () {\\n var fragment = this.fragment;\\n return fragment ? '#' + fragment : '';\\n },\\n setHash: function (hash) {\\n hash = $toString(hash);\\n if (hash == '') {\\n this.fragment = null;\\n return;\\n }\\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\\n this.fragment = '';\\n this.parse(hash, FRAGMENT);\\n },\\n update: function () {\\n this.query = this.searchParams.serialize() || null;\\n }\\n};\\n\\n// \`URL\` constructor\\n// https://url.spec.whatwg.org/#url-class\\nvar URLConstructor = function URL(url /* , base */) {\\n var that = anInstance(this, URLPrototype);\\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\\n var state = setInternalState(that, new URLState(url, false, base));\\n if (!DESCRIPTORS) {\\n that.href = state.serialize();\\n that.origin = state.getOrigin();\\n that.protocol = state.getProtocol();\\n that.username = state.getUsername();\\n that.password = state.getPassword();\\n that.host = state.getHost();\\n that.hostname = state.getHostname();\\n that.port = state.getPort();\\n that.pathname = state.getPathname();\\n that.search = state.getSearch();\\n that.searchParams = state.getSearchParams();\\n that.hash = state.getHash();\\n }\\n};\\n\\nvar URLPrototype = URLConstructor.prototype;\\n\\nvar accessorDescriptor = function (getter, setter) {\\n return {\\n get: function () {\\n return getInternalURLState(this)[getter]();\\n },\\n set: setter && function (value) {\\n return getInternalURLState(this)[setter](value);\\n },\\n configurable: true,\\n enumerable: true\\n };\\n};\\n\\nif (DESCRIPTORS) {\\n // \`URL.prototype.href\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-href\\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\\n // \`URL.prototype.origin\` getter\\n // https://url.spec.whatwg.org/#dom-url-origin\\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\\n // \`URL.prototype.protocol\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-protocol\\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\\n // \`URL.prototype.username\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-username\\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\\n // \`URL.prototype.password\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-password\\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\\n // \`URL.prototype.host\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-host\\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\\n // \`URL.prototype.hostname\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-hostname\\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\\n // \`URL.prototype.port\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-port\\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\\n // \`URL.prototype.pathname\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-pathname\\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\\n // \`URL.prototype.search\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-search\\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\\n // \`URL.prototype.searchParams\` getter\\n // https://url.spec.whatwg.org/#dom-url-searchparams\\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\\n // \`URL.prototype.hash\` accessors pair\\n // https://url.spec.whatwg.org/#dom-url-hash\\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\\n}\\n\\n// \`URL.prototype.toJSON\` method\\n// https://url.spec.whatwg.org/#dom-url-tojson\\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\\n return getInternalURLState(this).serialize();\\n}, { enumerable: true });\\n\\n// \`URL.prototype.toString\` method\\n// https://url.spec.whatwg.org/#URL-stringification-behavior\\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\\n return getInternalURLState(this).serialize();\\n}, { enumerable: true });\\n\\nif (NativeURL) {\\n var nativeCreateObjectURL = NativeURL.createObjectURL;\\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\\n // \`URL.createObjectURL\` method\\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\\n // \`URL.revokeObjectURL\` method\\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\\n}\\n\\nsetToStringTag(URLConstructor, 'URL');\\n\\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\\n URL: URLConstructor\\n});\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.constructor.js?")}),"./node_modules/core-js/modules/web.url.js":((__unused_webpack_module,__unused_webpack_exports,__webpack_require__)=>{eval("\\n// TODO: Remove this module from \`core-js@4\` since it's replaced to module below\\n__webpack_require__(/*! ../modules/web.url.constructor */ \\"./node_modules/core-js/modules/web.url.constructor.js\\");\\n\\n\\n//# sourceURL=webpack://babel/./node_modules/core-js/modules/web.url.js?")})});var __webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(cachedModule!==undefined){return cachedModule.exports}var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:false,exports:{}};__webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}(()=>{__webpack_require__.amdO={}})();(()=>{__webpack_require__.n=(module)=>{var getter=module&&module.__esModule?()=>(module['default']):()=>(module);__webpack_require__.d(getter,{a:getter});return getter}})();(()=>{__webpack_require__.d=(exports,definition)=>{for(var key in definition){if(__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)){Object.defineProperty(exports,key,{enumerable:true,get:definition[key]})}}}})();(()=>{__webpack_require__.g=(function(){if(typeof globalThis==='object')return globalThis;try{return this||new Function('return this')()}catch(e){if(typeof window==='object')return window}})()})();(()=>{__webpack_require__.hmd=(module)=>{module=Object.create(module);if(!module.children)module.children=[];Object.defineProperty(module,'exports',{enumerable:true,set:()=>{throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: '+module.id);}});return module}})();(()=>{__webpack_require__.o=(obj,prop)=>(Object.prototype.hasOwnProperty.call(obj,prop))})();(()=>{__webpack_require__.r=(exports)=>{if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'})}Object.defineProperty(exports,'__esModule',{value:true})}})();var __webpack_exports__=__webpack_require__("./pdf.js")})();`;function Z(e){var t,n,o,r,a;for(t="",o=e.length,n=0;n=1&&r<=127?t+=e.charAt(n):r>2047?(a=224|r>>12&15,t+=String.fromCharCode(a),a=128|r>>6&63,t+=String.fromCharCode(a),a=128|r>>0&63,t+=String.fromCharCode(a)):(a=192|r>>6&31,t+=String.fromCharCode(a),a=128|r>>0&63,t+=String.fromCharCode(a));return t}var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Q(e){var t,n,o,r,a,s;for(o=e.length,n=0,t="";n>2),t+=c.charAt((r&3)<<4),t+="==";break}if(a=e.charCodeAt(n++),n==o){t+=c.charAt(r>>2),t+=c.charAt((r&3)<<4|(a&240)>>4),t+=c.charAt((a&15)<<2),t+="=";break}s=e.charCodeAt(n++),t+=c.charAt(r>>2),t+=c.charAt((r&3)<<4|(a&240)>>4),t+=c.charAt((a&15)<<2|(s&192)>>6),t+=c.charAt(s&63)}return t}function P(e){return Q(Z(e))}const ee=`data:text/javascript;base64,${P(J)}`,te=`data:text/javascript;base64,${P(Y)}`,ne=N({name:"VueOfficePdf",props:{src:[String,ArrayBuffer,Blob],requestOptions:{type:Object,default:()=>({})},staticFileUrl:{type:String,default:"https://unpkg.com/pdfjs-dist@3.1.81/"},options:{type:Object,default:()=>({})}},emits:["rendered","error"],setup(e,{emit:t}){let n=null,o=null;const r=b(null),a=b([]),s=b(0),p=5;function x(){return D(ee).then(()=>{if(window.pdfjsLib)window.pdfjsLib.GlobalWorkerOptions.workerSrc=te;else return Promise.reject("window.pdfjsLib未找到")})}function A(){return window.pdfjsLib?Promise.resolve():x()}function k(){if(!e.src){s.value=0;return}o=window.pdfjsLib.getDocument({url:F(e.src),cMapUrl:`${e.staticFileUrl.endsWith("/")?e.staticFileUrl:e.staticFileUrl+"/"}cmaps/`,cMapPacked:!0,enableXfa:!0,...L(e.options,["width"])}),o.promise.then(i=>{n=i,s.value=e.options.lazy?Math.min(n.numPages,p):n.numPages,setTimeout(()=>{y(1)})}).catch(i=>{t("error",i)})}function O(i){if(!e.options.lazy)return;const{scrollTop:u,scrollHeight:d,clientHeight:h}=i.target;if(u+h>=d){if(s.value>=n.numPages)return;let l=s.value;s.value=Math.min(n.numPages,l+p),s.value>l&&y(l+1)}}function y(i){n.getPage(i).then(u=>{const d=u.getViewport({scale:2}),h=window.devicePixelRatio||1,l=a.value[i-1],R=l.getContext("2d");l.width=Math.floor(d.width*h),l.height=Math.floor(d.height*h);let f=Math.floor(d.width),_=Math.floor(d.height);if(e.options.width){let g=e.options.width/f;f=Math.floor(e.options.width),_=Math.floor(_*g)}let S=r.value.getBoundingClientRect().width-20;if(f>S){let g=S/f;f=Math.floor(S),_=Math.floor(_*g)}l.style.width=f+"px",l.style.height=_+"px";const I=h!==1?[h,0,0,h,0,0]:null;u.render({canvasContext:R,transform:I,viewport:d}).promise.then(()=>{s.value>i?y(i+1):t("rendered")}).catch(g=>{t("error",g)})}).catch(u=>{t("error",u)})}function C(){y(1)}B(()=>{e.src&&A().then(k).catch(i=>{console.warn(i)})}),q(()=>e.src,()=>{A().then(k).catch(i=>{console.warn(i)})});function T(i){n&&n._transport&&n._transport.getData().then(u=>{M(i||`vue-office-pdf-${new Date().getTime()}.pdf`,u.buffer)})}return{wrapperRef:r,rootRef:a,numPages:s,save:T,onScrollPdf:O,rerender:C}}}),re={key:0,ref:"wrapperRef",class:"vue-office-pdf-wrapper",style:{background:"gray",padding:"30px 0",position:"relative"}};function ae(e,t,n,o,r,a){return m(),v("div",{class:"vue-office-pdf",ref:"vue-office-pdf",style:{"text-align":"center","overflow-y":"auto"},onScroll:t[0]||(t[0]=(...s)=>e.onScrollPdf&&e.onScrollPdf(...s))},[e.numPages?(m(),v("div",re,[(m(!0),v($,null,G(e.numPages,s=>(m(),v("canvas",{ref_for:!0,ref:"rootRef",key:s,style:{width:"100%"}}))),128)),W(e.$slots,"default")],512)):H("",!0)],544)}const w=U(ne,[["render",ae]]);w.install=function(e){e.component(w.name,w)};const ue={__name:"PdfDemo",setup(e){function t(){j.hideLoading()}function n(s){console.log("出差",s),j.hideLoading()}const o=location.origin+(location.pathname+"/").replace("//","/")+"static/test-files/test.pdf",r=b();window.docxRef=r;let a=b();return fetch("/vue-office/examples/dist/static/test-files/test.pdf").then(s=>{console.log(s),s.arrayBuffer().then(p=>{console.log(p),a.value=p})}),(s,p)=>(m(),X(K,{accept:".pdf",placeholder:"请输入pdf文件地址","default-src":o},{default:z(x=>[V(E(w),{ref_key:"docxRef",ref:r,src:E(a),style:{flex:"1",height:"0"},options:{lazy:!0},onRendered:t,onError:n},null,8,["src"])]),_:1}))}};export{ue as default}; diff --git a/examples/dist/assets/PreviewWrapper-bc249492.js b/examples/dist/assets/PreviewWrapper-bc249492.js new file mode 100644 index 0000000..cb9b58b --- /dev/null +++ b/examples/dist/assets/PreviewWrapper-bc249492.js @@ -0,0 +1 @@ +import{r as d,p as C,_ as I,w as N,q as l,a as p,c as x,u as t,g as i,f as n,s as v,t as S,e as y,m,l as V,v as W,x as A,b as R}from"./index-b78d7be5.js";function T(e){const s=d("url"),a=d(e),r=d(e),u=d([]);function b(w){let c=new FileReader;return c.onload=o=>{let _=o.target.result;r.value=_},c.readAsArrayBuffer(w),!1}return{type:s,inputSrc:a,src:r,fileList:u,beforeUpload:b}}let g=d(!1),k;function $(e){k=C.loading(e,0),g.value=!0}function q(){g.value===!0&&(k(),g.value=!1)}const E={loading:g,showLoading:$,hideLoading:q};function F(){return location.href.includes("test")}const j=e=>(W("data-v-6e0b6946"),e=e(),A(),e),z={class:"preview-wrapper"},D={key:0,class:"operate-area"},G=j(()=>R("div",{class:"preview-wrapper-main"},null,-1)),H={__name:"PreviewWrapper",props:{accept:String,placeholder:String,defaultSrc:String},setup(e){const s=e,{type:a,inputSrc:r,src:u,fileList:b,beforeUpload:w}=T(s.defaultSrc);return N(u,()=>{E.showLoading()},{immediate:!0}),(c,o)=>{const _=l("a-radio-button"),B=l("a-radio-group"),L=l("a-input"),h=l("a-button"),U=l("upload-outlined"),P=l("a-upload");return p(),x("div",z,[t(F)()?m("",!0):(p(),x("div",D,[i(B,{value:t(a),"onUpdate:value":o[0]||(o[0]=f=>S(a)?a.value=f:null),"button-style":"solid"},{default:n(()=>[i(_,{value:"url"},{default:n(()=>[v("远程文件地址")]),_:1}),i(_,{value:"upload"},{default:n(()=>[v("上传本地文件")]),_:1})]),_:1},8,["value"]),t(a)==="url"?(p(),y(L,{key:0,value:t(r),"onUpdate:value":o[1]||(o[1]=f=>S(r)?r.value=f:null),placeholder:s.placeholder,style:{width:"600px","margin-left":"10px"}},null,8,["value","placeholder"])):m("",!0),t(a)==="url"?(p(),y(h,{key:1,type:"primary",style:{"margin-left":"10px"},onClick:o[2]||(o[2]=f=>u.value=t(r))},{default:n(()=>[v(" 预览 ")]),_:1})):m("",!0),t(a)!=="url"?(p(),y(P,{key:2,accept:s.accept,action:"",beforeUpload:t(w),"file-list":[]},{default:n(()=>[i(h,{style:{"margin-left":"10px"}},{default:n(()=>[i(U),v(" 选择文件 ")]),_:1})]),_:1},8,["accept","beforeUpload"])):m("",!0)])),V(c.$slots,"default",{src:t(u)},void 0,!0),G])}}},K=I(H,[["__scopeId","data-v-6e0b6946"]]);export{K as P,E as u}; diff --git a/examples/dist/assets/docx-a5ce9266.js b/examples/dist/assets/docx-a5ce9266.js new file mode 100644 index 0000000..48851a7 --- /dev/null +++ b/examples/dist/assets/docx-a5ce9266.js @@ -0,0 +1,96 @@ +import{y as _e}from"./index-b78d7be5.js";import{c as ke}from"./_commonjs-dynamic-modules-302442b1.js";var Ae={},Ne={get exports(){return Ae},set exports(re){Ae=re}},we={},Be={get exports(){return we},set exports(re){we=re}};/*! + +JSZip v3.10.1 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/var Ce;function Oe(){return Ce||(Ce=1,function(re,ce){(function(T){re.exports=T()})(function(){return function T(j,N,A){function v(r,m){if(!N[r]){if(!j[r]){var p=typeof ke=="function"&&ke;if(!m&&p)return p(r,!0);if(e)return e(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var i=N[r]={exports:{}};j[r][0].call(i.exports,function(y){var h=j[r][1][y];return v(h||y)},i,i.exports,T,j,N,A)}return N[r].exports}for(var e=typeof ke=="function"&&ke,u=0;u>2,i=(3&r)<<4|m>>4,y=1>6:64,h=2>4,m=(15&a)<<4|(i=e.indexOf(u.charAt(h++)))>>2,p=(3&i)<<6|(y=e.indexOf(u.charAt(h++))),g[d++]=r,i!==64&&(g[d++]=m),y!==64&&(g[d++]=p);return g}},{"./support":30,"./utils":32}],2:[function(T,j,N){var A=T("./external"),v=T("./stream/DataWorker"),e=T("./stream/Crc32Probe"),u=T("./stream/DataLengthProbe");function r(m,p,a,i,y){this.compressedSize=m,this.uncompressedSize=p,this.crc32=a,this.compression=i,this.compressedContent=y}r.prototype={getContentWorker:function(){var m=new v(A.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),p=this;return m.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),m},getCompressedWorker:function(){return new v(A.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},r.createWorkerFrom=function(m,p,a){return m.pipe(new e).pipe(new u("uncompressedSize")).pipe(p.compressWorker(a)).pipe(new u("compressedSize")).withStreamInfo("compression",p)},j.exports=r},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(T,j,N){var A=T("./stream/GenericWorker");N.STORE={magic:"\0\0",compressWorker:function(){return new A("STORE compression")},uncompressWorker:function(){return new A("STORE decompression")}},N.DEFLATE=T("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(T,j,N){var A=T("./utils"),v=function(){for(var e,u=[],r=0;r<256;r++){e=r;for(var m=0;m<8;m++)e=1&e?3988292384^e>>>1:e>>>1;u[r]=e}return u}();j.exports=function(e,u){return e!==void 0&&e.length?A.getTypeOf(e)!=="string"?function(r,m,p,a){var i=v,y=a+p;r^=-1;for(var h=a;h>>8^i[255&(r^m[h])];return-1^r}(0|u,e,e.length,0):function(r,m,p,a){var i=v,y=a+p;r^=-1;for(var h=a;h>>8^i[255&(r^m.charCodeAt(h))];return-1^r}(0|u,e,e.length,0):0}},{"./utils":32}],5:[function(T,j,N){N.base64=!1,N.binary=!1,N.dir=!1,N.createFolders=!0,N.date=null,N.compression=null,N.compressionOptions=null,N.comment=null,N.unixPermissions=null,N.dosPermissions=null},{}],6:[function(T,j,N){var A=null;A=typeof Promise<"u"?Promise:T("lie"),j.exports={Promise:A}},{lie:37}],7:[function(T,j,N){var A=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",v=T("pako"),e=T("./utils"),u=T("./stream/GenericWorker"),r=A?"uint8array":"array";function m(p,a){u.call(this,"FlateWorker/"+p),this._pako=null,this._pakoAction=p,this._pakoOptions=a,this.meta={}}N.magic="\b\0",e.inherits(m,u),m.prototype.processChunk=function(p){this.meta=p.meta,this._pako===null&&this._createPako(),this._pako.push(e.transformTo(r,p.data),!1)},m.prototype.flush=function(){u.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},m.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this._pako=null},m.prototype._createPako=function(){this._pako=new v[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var p=this;this._pako.onData=function(a){p.push({data:a,meta:p.meta})}},N.compressWorker=function(p){return new m("Deflate",p)},N.uncompressWorker=function(){return new m("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(T,j,N){function A(i,y){var h,d="";for(h=0;h>>=8;return d}function v(i,y,h,d,f,g){var x,P,n=i.file,o=i.compression,t=g!==r.utf8encode,l=e.transformTo("string",g(n.name)),b=e.transformTo("string",r.utf8encode(n.name)),k=n.comment,E=e.transformTo("string",g(k)),_=e.transformTo("string",r.utf8encode(k)),C=b.length!==n.name.length,s=_.length!==k.length,R="",V="",M="",K=n.dir,W=n.date,J={crc32:0,compressedSize:0,uncompressedSize:0};y&&!h||(J.crc32=i.crc32,J.compressedSize=i.compressedSize,J.uncompressedSize=i.uncompressedSize);var z=0;y&&(z|=8),t||!C&&!s||(z|=2048);var O=0,Y=0;K&&(O|=16),f==="UNIX"?(Y=798,O|=function(Z,ne){var le=Z;return Z||(le=ne?16893:33204),(65535&le)<<16}(n.unixPermissions,K)):(Y=20,O|=function(Z){return 63&(Z||0)}(n.dosPermissions)),x=W.getUTCHours(),x<<=6,x|=W.getUTCMinutes(),x<<=5,x|=W.getUTCSeconds()/2,P=W.getUTCFullYear()-1980,P<<=4,P|=W.getUTCMonth()+1,P<<=5,P|=W.getUTCDate(),C&&(V=A(1,1)+A(m(l),4)+b,R+="up"+A(V.length,2)+V),s&&(M=A(1,1)+A(m(E),4)+_,R+="uc"+A(M.length,2)+M);var X="";return X+=` +\0`,X+=A(z,2),X+=o.magic,X+=A(x,2),X+=A(P,2),X+=A(J.crc32,4),X+=A(J.compressedSize,4),X+=A(J.uncompressedSize,4),X+=A(l.length,2),X+=A(R.length,2),{fileRecord:p.LOCAL_FILE_HEADER+X+l+R,dirRecord:p.CENTRAL_FILE_HEADER+A(Y,2)+X+A(E.length,2)+"\0\0\0\0"+A(O,4)+A(d,4)+l+R+E}}var e=T("../utils"),u=T("../stream/GenericWorker"),r=T("../utf8"),m=T("../crc32"),p=T("../signature");function a(i,y,h,d){u.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=y,this.zipPlatform=h,this.encodeFileName=d,this.streamFiles=i,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}e.inherits(a,u),a.prototype.push=function(i){var y=i.meta.percent||0,h=this.entriesCount,d=this._sources.length;this.accumulate?this.contentBuffer.push(i):(this.bytesWritten+=i.data.length,u.prototype.push.call(this,{data:i.data,meta:{currentFile:this.currentFile,percent:h?(y+100*(h-d-1))/h:100}}))},a.prototype.openedSource=function(i){this.currentSourceOffset=this.bytesWritten,this.currentFile=i.file.name;var y=this.streamFiles&&!i.file.dir;if(y){var h=v(i,y,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:h.fileRecord,meta:{percent:0}})}else this.accumulate=!0},a.prototype.closedSource=function(i){this.accumulate=!1;var y=this.streamFiles&&!i.file.dir,h=v(i,y,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(h.dirRecord),y)this.push({data:function(d){return p.DATA_DESCRIPTOR+A(d.crc32,4)+A(d.compressedSize,4)+A(d.uncompressedSize,4)}(i),meta:{percent:100}});else for(this.push({data:h.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},a.prototype.flush=function(){for(var i=this.bytesWritten,y=0;y=this.index;u--)r=(r<<8)+this.byteAt(u);return this.index+=e,r},readString:function(e){return A.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},j.exports=v},{"../utils":32}],19:[function(T,j,N){var A=T("./Uint8ArrayReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),v.prototype.readData=function(e){this.checkOffset(e);var u=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},j.exports=v},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(T,j,N){var A=T("./DataReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),v.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},v.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},v.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},v.prototype.readData=function(e){this.checkOffset(e);var u=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},j.exports=v},{"../utils":32,"./DataReader":18}],21:[function(T,j,N){var A=T("./ArrayReader");function v(e){A.call(this,e)}T("../utils").inherits(v,A),v.prototype.readData=function(e){if(this.checkOffset(e),e===0)return new Uint8Array(0);var u=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,u},j.exports=v},{"../utils":32,"./ArrayReader":17}],22:[function(T,j,N){var A=T("../utils"),v=T("../support"),e=T("./ArrayReader"),u=T("./StringReader"),r=T("./NodeBufferReader"),m=T("./Uint8ArrayReader");j.exports=function(p){var a=A.getTypeOf(p);return A.checkSupport(a),a!=="string"||v.uint8array?a==="nodebuffer"?new r(p):v.uint8array?new m(A.transformTo("uint8array",p)):new e(A.transformTo("array",p)):new u(p)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(T,j,N){N.LOCAL_FILE_HEADER="PK",N.CENTRAL_FILE_HEADER="PK",N.CENTRAL_DIRECTORY_END="PK",N.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",N.ZIP64_CENTRAL_DIRECTORY_END="PK",N.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(T,j,N){var A=T("./GenericWorker"),v=T("../utils");function e(u){A.call(this,"ConvertWorker to "+u),this.destType=u}v.inherits(e,A),e.prototype.processChunk=function(u){this.push({data:v.transformTo(this.destType,u.data),meta:u.meta})},j.exports=e},{"../utils":32,"./GenericWorker":28}],25:[function(T,j,N){var A=T("./GenericWorker"),v=T("../crc32");function e(){A.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}T("../utils").inherits(e,A),e.prototype.processChunk=function(u){this.streamInfo.crc32=v(u.data,this.streamInfo.crc32||0),this.push(u)},j.exports=e},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(T,j,N){var A=T("../utils"),v=T("./GenericWorker");function e(u){v.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}A.inherits(e,v),e.prototype.processChunk=function(u){if(u){var r=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=r+u.data.length}v.prototype.processChunk.call(this,u)},j.exports=e},{"../utils":32,"./GenericWorker":28}],27:[function(T,j,N){var A=T("../utils"),v=T("./GenericWorker");function e(u){v.call(this,"DataWorker");var r=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,u.then(function(m){r.dataIsReady=!0,r.data=m,r.max=m&&m.length||0,r.type=A.getTypeOf(m),r.isPaused||r._tickAndRepeat()},function(m){r.error(m)})}A.inherits(e,v),e.prototype.cleanUp=function(){v.prototype.cleanUp.call(this),this.data=null},e.prototype.resume=function(){return!!v.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,A.delay(this._tickAndRepeat,[],this)),!0)},e.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(A.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},e.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var u=null,r=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":u=this.data.substring(this.index,r);break;case"uint8array":u=this.data.subarray(this.index,r);break;case"array":case"nodebuffer":u=this.data.slice(this.index,r)}return this.index=r,this.push({data:u,meta:{percent:this.max?this.index/this.max*100:0}})},j.exports=e},{"../utils":32,"./GenericWorker":28}],28:[function(T,j,N){function A(v){this.name=v||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}A.prototype={push:function(v){this.emit("data",v)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(v){this.emit("error",v)}return!0},error:function(v){return!this.isFinished&&(this.isPaused?this.generatedError=v:(this.isFinished=!0,this.emit("error",v),this.previous&&this.previous.error(v),this.cleanUp()),!0)},on:function(v,e){return this._listeners[v].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(v,e){if(this._listeners[v])for(var u=0;u "+v:v}},j.exports=A},{}],29:[function(T,j,N){var A=T("../utils"),v=T("./ConvertWorker"),e=T("./GenericWorker"),u=T("../base64"),r=T("../support"),m=T("../external"),p=null;if(r.nodestream)try{p=T("../nodejs/NodejsStreamOutputAdapter")}catch{}function a(y,h){return new m.Promise(function(d,f){var g=[],x=y._internalType,P=y._outputType,n=y._mimeType;y.on("data",function(o,t){g.push(o),h&&h(t)}).on("error",function(o){g=[],f(o)}).on("end",function(){try{var o=function(t,l,b){switch(t){case"blob":return A.newBlob(A.transformTo("arraybuffer",l),b);case"base64":return u.encode(l);default:return A.transformTo(t,l)}}(P,function(t,l){var b,k=0,E=null,_=0;for(b=0;b"u")N.blob=!1;else{var A=new ArrayBuffer(0);try{N.blob=new Blob([A],{type:"application/zip"}).size===0}catch{try{var v=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);v.append(A),N.blob=v.getBlob("application/zip").size===0}catch{N.blob=!1}}}try{N.nodestream=!!T("readable-stream").Readable}catch{N.nodestream=!1}},{"readable-stream":16}],31:[function(T,j,N){for(var A=T("./utils"),v=T("./support"),e=T("./nodejsUtils"),u=T("./stream/GenericWorker"),r=new Array(256),m=0;m<256;m++)r[m]=252<=m?6:248<=m?5:240<=m?4:224<=m?3:192<=m?2:1;r[254]=r[254]=1;function p(){u.call(this,"utf-8 decode"),this.leftOver=null}function a(){u.call(this,"utf-8 encode")}N.utf8encode=function(i){return v.nodebuffer?e.newBufferFrom(i,"utf-8"):function(y){var h,d,f,g,x,P=y.length,n=0;for(g=0;g>>6:(d<65536?h[x++]=224|d>>>12:(h[x++]=240|d>>>18,h[x++]=128|d>>>12&63),h[x++]=128|d>>>6&63),h[x++]=128|63&d);return h}(i)},N.utf8decode=function(i){return v.nodebuffer?A.transformTo("nodebuffer",i).toString("utf-8"):function(y){var h,d,f,g,x=y.length,P=new Array(2*x);for(h=d=0;h>10&1023,P[d++]=56320|1023&f)}return P.length!==d&&(P.subarray?P=P.subarray(0,d):P.length=d),A.applyFromCharCode(P)}(i=A.transformTo(v.uint8array?"uint8array":"array",i))},A.inherits(p,u),p.prototype.processChunk=function(i){var y=A.transformTo(v.uint8array?"uint8array":"array",i.data);if(this.leftOver&&this.leftOver.length){if(v.uint8array){var h=y;(y=new Uint8Array(h.length+this.leftOver.length)).set(this.leftOver,0),y.set(h,this.leftOver.length)}else y=this.leftOver.concat(y);this.leftOver=null}var d=function(g,x){var P;for((x=x||g.length)>g.length&&(x=g.length),P=x-1;0<=P&&(192&g[P])==128;)P--;return P<0||P===0?x:P+r[g[P]]>x?P:x}(y),f=y;d!==y.length&&(v.uint8array?(f=y.subarray(0,d),this.leftOver=y.subarray(d,y.length)):(f=y.slice(0,d),this.leftOver=y.slice(d,y.length))),this.push({data:N.utf8decode(f),meta:i.meta})},p.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:N.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},N.Utf8DecodeWorker=p,A.inherits(a,u),a.prototype.processChunk=function(i){this.push({data:N.utf8encode(i.data),meta:i.meta})},N.Utf8EncodeWorker=a},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(T,j,N){var A=T("./support"),v=T("./base64"),e=T("./nodejsUtils"),u=T("./external");function r(h){return h}function m(h,d){for(var f=0;f>8;this.dir=!!(16&this.externalFileAttributes),i==0&&(this.dosPermissions=63&this.externalFileAttributes),i==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var i=A(this.extraFields[1].value);this.uncompressedSize===v.MAX_VALUE_32BITS&&(this.uncompressedSize=i.readInt(8)),this.compressedSize===v.MAX_VALUE_32BITS&&(this.compressedSize=i.readInt(8)),this.localHeaderOffset===v.MAX_VALUE_32BITS&&(this.localHeaderOffset=i.readInt(8)),this.diskNumberStart===v.MAX_VALUE_32BITS&&(this.diskNumberStart=i.readInt(4))}},readExtraFields:function(i){var y,h,d,f=i.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});i.index+4>>6:(i<65536?a[d++]=224|i>>>12:(a[d++]=240|i>>>18,a[d++]=128|i>>>12&63),a[d++]=128|i>>>6&63),a[d++]=128|63&i);return a},N.buf2binstring=function(p){return m(p,p.length)},N.binstring2buf=function(p){for(var a=new A.Buf8(p.length),i=0,y=a.length;i>10&1023,g[y++]=56320|1023&h)}return m(g,y)},N.utf8border=function(p,a){var i;for((a=a||p.length)>p.length&&(a=p.length),i=a-1;0<=i&&(192&p[i])==128;)i--;return i<0||i===0?a:i+u[p[i]]>a?i:a}},{"./common":41}],43:[function(T,j,N){j.exports=function(A,v,e,u){for(var r=65535&A|0,m=A>>>16&65535|0,p=0;e!==0;){for(e-=p=2e3>>1:v>>>1;e[u]=v}return e}();j.exports=function(v,e,u,r){var m=A,p=r+u;v^=-1;for(var a=r;a>>8^m[255&(v^e[a])];return-1^v}},{}],46:[function(T,j,N){var A,v=T("../utils/common"),e=T("./trees"),u=T("./adler32"),r=T("./crc32"),m=T("./messages"),p=0,a=4,i=0,y=-2,h=-1,d=4,f=2,g=8,x=9,P=286,n=30,o=19,t=2*P+1,l=15,b=3,k=258,E=k+b+1,_=42,C=113,s=1,R=2,V=3,M=4;function K(c,F){return c.msg=m[F],F}function W(c){return(c<<1)-(4c.avail_out&&(I=c.avail_out),I!==0&&(v.arraySet(c.output,F.pending_buf,F.pending_out,I,c.next_out),c.next_out+=I,F.pending_out+=I,c.total_out+=I,c.avail_out-=I,F.pending-=I,F.pending===0&&(F.pending_out=0))}function O(c,F){e._tr_flush_block(c,0<=c.block_start?c.block_start:-1,c.strstart-c.block_start,F),c.block_start=c.strstart,z(c.strm)}function Y(c,F){c.pending_buf[c.pending++]=F}function X(c,F){c.pending_buf[c.pending++]=F>>>8&255,c.pending_buf[c.pending++]=255&F}function Z(c,F){var I,S,w=c.max_chain_length,D=c.strstart,L=c.prev_length,U=c.nice_match,B=c.strstart>c.w_size-E?c.strstart-(c.w_size-E):0,H=c.window,G=c.w_mask,$=c.prev,q=c.strstart+k,ae=H[D+L-1],ee=H[D+L];c.prev_length>=c.good_match&&(w>>=2),U>c.lookahead&&(U=c.lookahead);do if(H[(I=F)+L]===ee&&H[I+L-1]===ae&&H[I]===H[D]&&H[++I]===H[D+1]){D+=2,I++;do;while(H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&H[++D]===H[++I]&&DB&&--w!=0);return L<=c.lookahead?L:c.lookahead}function ne(c){var F,I,S,w,D,L,U,B,H,G,$=c.w_size;do{if(w=c.window_size-c.lookahead-c.strstart,c.strstart>=$+($-E)){for(v.arraySet(c.window,c.window,$,$,0),c.match_start-=$,c.strstart-=$,c.block_start-=$,F=I=c.hash_size;S=c.head[--F],c.head[F]=$<=S?S-$:0,--I;);for(F=I=$;S=c.prev[--F],c.prev[F]=$<=S?S-$:0,--I;);w+=$}if(c.strm.avail_in===0)break;if(L=c.strm,U=c.window,B=c.strstart+c.lookahead,H=w,G=void 0,G=L.avail_in,H=b)for(D=c.strstart-c.insert,c.ins_h=c.window[D],c.ins_h=(c.ins_h<=b&&(c.ins_h=(c.ins_h<=b)if(S=e._tr_tally(c,c.strstart-c.match_start,c.match_length-b),c.lookahead-=c.match_length,c.match_length<=c.max_lazy_match&&c.lookahead>=b){for(c.match_length--;c.strstart++,c.ins_h=(c.ins_h<=b&&(c.ins_h=(c.ins_h<=b&&c.match_length<=c.prev_length){for(w=c.strstart+c.lookahead-b,S=e._tr_tally(c,c.strstart-1-c.prev_match,c.prev_length-b),c.lookahead-=c.prev_length-1,c.prev_length-=2;++c.strstart<=w&&(c.ins_h=(c.ins_h<c.pending_buf_size-5&&(I=c.pending_buf_size-5);;){if(c.lookahead<=1){if(ne(c),c.lookahead===0&&F===p)return s;if(c.lookahead===0)break}c.strstart+=c.lookahead,c.lookahead=0;var S=c.block_start+I;if((c.strstart===0||c.strstart>=S)&&(c.lookahead=c.strstart-S,c.strstart=S,O(c,!1),c.strm.avail_out===0)||c.strstart-c.block_start>=c.w_size-E&&(O(c,!1),c.strm.avail_out===0))return s}return c.insert=0,F===a?(O(c,!0),c.strm.avail_out===0?V:M):(c.strstart>c.block_start&&(O(c,!1),c.strm.avail_out),s)}),new te(4,4,8,4,le),new te(4,5,16,8,le),new te(4,6,32,32,le),new te(4,4,16,16,Q),new te(8,16,32,32,Q),new te(8,16,128,128,Q),new te(8,32,128,256,Q),new te(32,128,258,1024,Q),new te(32,258,258,4096,Q)],N.deflateInit=function(c,F){return he(c,F,g,15,8,0)},N.deflateInit2=he,N.deflateReset=de,N.deflateResetKeep=se,N.deflateSetHeader=function(c,F){return c&&c.state?c.state.wrap!==2?y:(c.state.gzhead=F,i):y},N.deflate=function(c,F){var I,S,w,D;if(!c||!c.state||5>8&255),Y(S,S.gzhead.time>>16&255),Y(S,S.gzhead.time>>24&255),Y(S,S.level===9?2:2<=S.strategy||S.level<2?4:0),Y(S,255&S.gzhead.os),S.gzhead.extra&&S.gzhead.extra.length&&(Y(S,255&S.gzhead.extra.length),Y(S,S.gzhead.extra.length>>8&255)),S.gzhead.hcrc&&(c.adler=r(c.adler,S.pending_buf,S.pending,0)),S.gzindex=0,S.status=69):(Y(S,0),Y(S,0),Y(S,0),Y(S,0),Y(S,0),Y(S,S.level===9?2:2<=S.strategy||S.level<2?4:0),Y(S,3),S.status=C);else{var L=g+(S.w_bits-8<<4)<<8;L|=(2<=S.strategy||S.level<2?0:S.level<6?1:S.level===6?2:3)<<6,S.strstart!==0&&(L|=32),L+=31-L%31,S.status=C,X(S,L),S.strstart!==0&&(X(S,c.adler>>>16),X(S,65535&c.adler)),c.adler=1}if(S.status===69)if(S.gzhead.extra){for(w=S.pending;S.gzindex<(65535&S.gzhead.extra.length)&&(S.pending!==S.pending_buf_size||(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending!==S.pending_buf_size));)Y(S,255&S.gzhead.extra[S.gzindex]),S.gzindex++;S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),S.gzindex===S.gzhead.extra.length&&(S.gzindex=0,S.status=73)}else S.status=73;if(S.status===73)if(S.gzhead.name){w=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending===S.pending_buf_size)){D=1;break}D=S.gzindexw&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),D===0&&(S.gzindex=0,S.status=91)}else S.status=91;if(S.status===91)if(S.gzhead.comment){w=S.pending;do{if(S.pending===S.pending_buf_size&&(S.gzhead.hcrc&&S.pending>w&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),z(c),w=S.pending,S.pending===S.pending_buf_size)){D=1;break}D=S.gzindexw&&(c.adler=r(c.adler,S.pending_buf,S.pending-w,w)),D===0&&(S.status=103)}else S.status=103;if(S.status===103&&(S.gzhead.hcrc?(S.pending+2>S.pending_buf_size&&z(c),S.pending+2<=S.pending_buf_size&&(Y(S,255&c.adler),Y(S,c.adler>>8&255),c.adler=0,S.status=C)):S.status=C),S.pending!==0){if(z(c),c.avail_out===0)return S.last_flush=-1,i}else if(c.avail_in===0&&W(F)<=W(I)&&F!==a)return K(c,-5);if(S.status===666&&c.avail_in!==0)return K(c,-5);if(c.avail_in!==0||S.lookahead!==0||F!==p&&S.status!==666){var U=S.strategy===2?function(B,H){for(var G;;){if(B.lookahead===0&&(ne(B),B.lookahead===0)){if(H===p)return s;break}if(B.match_length=0,G=e._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++,G&&(O(B,!1),B.strm.avail_out===0))return s}return B.insert=0,H===a?(O(B,!0),B.strm.avail_out===0?V:M):B.last_lit&&(O(B,!1),B.strm.avail_out===0)?s:R}(S,F):S.strategy===3?function(B,H){for(var G,$,q,ae,ee=B.window;;){if(B.lookahead<=k){if(ne(B),B.lookahead<=k&&H===p)return s;if(B.lookahead===0)break}if(B.match_length=0,B.lookahead>=b&&0B.lookahead&&(B.match_length=B.lookahead)}if(B.match_length>=b?(G=e._tr_tally(B,1,B.match_length-b),B.lookahead-=B.match_length,B.strstart+=B.match_length,B.match_length=0):(G=e._tr_tally(B,0,B.window[B.strstart]),B.lookahead--,B.strstart++),G&&(O(B,!1),B.strm.avail_out===0))return s}return B.insert=0,H===a?(O(B,!0),B.strm.avail_out===0?V:M):B.last_lit&&(O(B,!1),B.strm.avail_out===0)?s:R}(S,F):A[S.level].func(S,F);if(U!==V&&U!==M||(S.status=666),U===s||U===V)return c.avail_out===0&&(S.last_flush=-1),i;if(U===R&&(F===1?e._tr_align(S):F!==5&&(e._tr_stored_block(S,0,0,!1),F===3&&(J(S.head),S.lookahead===0&&(S.strstart=0,S.block_start=0,S.insert=0))),z(c),c.avail_out===0))return S.last_flush=-1,i}return F!==a?i:S.wrap<=0?1:(S.wrap===2?(Y(S,255&c.adler),Y(S,c.adler>>8&255),Y(S,c.adler>>16&255),Y(S,c.adler>>24&255),Y(S,255&c.total_in),Y(S,c.total_in>>8&255),Y(S,c.total_in>>16&255),Y(S,c.total_in>>24&255)):(X(S,c.adler>>>16),X(S,65535&c.adler)),z(c),0=I.w_size&&(D===0&&(J(I.head),I.strstart=0,I.block_start=0,I.insert=0),H=new v.Buf8(I.w_size),v.arraySet(H,F,G-I.w_size,I.w_size,0),F=H,G=I.w_size),L=c.avail_in,U=c.next_in,B=c.input,c.avail_in=G,c.next_in=0,c.input=F,ne(I);I.lookahead>=b;){for(S=I.strstart,w=I.lookahead-(b-1);I.ins_h=(I.ins_h<>>=b=l>>>24,x-=b,(b=l>>>16&255)===0)R[m++]=65535&l;else{if(!(16&b)){if(!(64&b)){l=P[(65535&l)+(g&(1<>>=b,x-=b),x<15&&(g+=s[u++]<>>=b=l>>>24,x-=b,!(16&(b=l>>>16&255))){if(!(64&b)){l=n[(65535&l)+(g&(1<>>=b,x-=b,(b=m-p)>3,g&=(1<<(x-=k<<3))-1,A.next_in=u,A.next_out=m,A.avail_in=u>>24&255)+(_>>>8&65280)+((65280&_)<<8)+((255&_)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new A.Buf16(320),this.work=new A.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function x(_){var C;return _&&_.state?(C=_.state,_.total_in=_.total_out=C.total=0,_.msg="",C.wrap&&(_.adler=1&C.wrap),C.mode=y,C.last=0,C.havedict=0,C.dmax=32768,C.head=null,C.hold=0,C.bits=0,C.lencode=C.lendyn=new A.Buf32(h),C.distcode=C.distdyn=new A.Buf32(d),C.sane=1,C.back=-1,a):i}function P(_){var C;return _&&_.state?((C=_.state).wsize=0,C.whave=0,C.wnext=0,x(_)):i}function n(_,C){var s,R;return _&&_.state?(R=_.state,C<0?(s=0,C=-C):(s=1+(C>>4),C<48&&(C&=15)),C&&(C<8||15=M.wsize?(A.arraySet(M.window,C,s-M.wsize,M.wsize,0),M.wnext=0,M.whave=M.wsize):(R<(V=M.wsize-M.wnext)&&(V=R),A.arraySet(M.window,C,s-R,V,M.wnext),(R-=V)?(A.arraySet(M.window,C,s-R,R,0),M.wnext=R,M.whave=M.wsize):(M.wnext+=V,M.wnext===M.wsize&&(M.wnext=0),M.whave>>8&255,s.check=e(s.check,D,2,0),O=z=0,s.mode=2;break}if(s.flags=0,s.head&&(s.head.done=!1),!(1&s.wrap)||(((255&z)<<8)+(z>>8))%31){_.msg="incorrect header check",s.mode=30;break}if((15&z)!=8){_.msg="unknown compression method",s.mode=30;break}if(O-=4,c=8+(15&(z>>>=4)),s.wbits===0)s.wbits=c;else if(c>s.wbits){_.msg="invalid window size",s.mode=30;break}s.dmax=1<>8&1),512&s.flags&&(D[0]=255&z,D[1]=z>>>8&255,s.check=e(s.check,D,2,0)),O=z=0,s.mode=3;case 3:for(;O<32;){if(W===0)break e;W--,z+=R[M++]<>>8&255,D[2]=z>>>16&255,D[3]=z>>>24&255,s.check=e(s.check,D,4,0)),O=z=0,s.mode=4;case 4:for(;O<16;){if(W===0)break e;W--,z+=R[M++]<>8),512&s.flags&&(D[0]=255&z,D[1]=z>>>8&255,s.check=e(s.check,D,2,0)),O=z=0,s.mode=5;case 5:if(1024&s.flags){for(;O<16;){if(W===0)break e;W--,z+=R[M++]<>>8&255,s.check=e(s.check,D,2,0)),O=z=0}else s.head&&(s.head.extra=null);s.mode=6;case 6:if(1024&s.flags&&(W<(Z=s.length)&&(Z=W),Z&&(s.head&&(c=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Array(s.head.extra_len)),A.arraySet(s.head.extra,R,M,Z,c)),512&s.flags&&(s.check=e(s.check,R,Z,M)),W-=Z,M+=Z,s.length-=Z),s.length))break e;s.length=0,s.mode=7;case 7:if(2048&s.flags){if(W===0)break e;for(Z=0;c=R[M+Z++],s.head&&c&&s.length<65536&&(s.head.name+=String.fromCharCode(c)),c&&Z>9&1,s.head.done=!0),_.adler=s.check=0,s.mode=12;break;case 10:for(;O<32;){if(W===0)break e;W--,z+=R[M++]<>>=7&O,O-=7&O,s.mode=27;break}for(;O<3;){if(W===0)break e;W--,z+=R[M++]<>>=1)){case 0:s.mode=14;break;case 1:if(k(s),s.mode=20,C!==6)break;z>>>=2,O-=2;break e;case 2:s.mode=17;break;case 3:_.msg="invalid block type",s.mode=30}z>>>=2,O-=2;break;case 14:for(z>>>=7&O,O-=7&O;O<32;){if(W===0)break e;W--,z+=R[M++]<>>16^65535)){_.msg="invalid stored block lengths",s.mode=30;break}if(s.length=65535&z,O=z=0,s.mode=15,C===6)break e;case 15:s.mode=16;case 16:if(Z=s.length){if(W>>=5,O-=5,s.ndist=1+(31&z),z>>>=5,O-=5,s.ncode=4+(15&z),z>>>=4,O-=4,286>>=3,O-=3}for(;s.have<19;)s.lens[L[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,I={bits:s.lenbits},F=r(0,s.lens,0,19,s.lencode,0,s.work,I),s.lenbits=I.bits,F){_.msg="invalid code lengths set",s.mode=30;break}s.have=0,s.mode=19;case 19:for(;s.have>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=Q,O-=Q,s.lens[s.have++]=oe;else{if(oe===16){for(S=Q+2;O>>=Q,O-=Q,s.have===0){_.msg="invalid bit length repeat",s.mode=30;break}c=s.lens[s.have-1],Z=3+(3&z),z>>>=2,O-=2}else if(oe===17){for(S=Q+3;O>>=Q)),z>>>=3,O-=3}else{for(S=Q+7;O>>=Q)),z>>>=7,O-=7}if(s.have+Z>s.nlen+s.ndist){_.msg="invalid bit length repeat",s.mode=30;break}for(;Z--;)s.lens[s.have++]=c}}if(s.mode===30)break;if(s.lens[256]===0){_.msg="invalid code -- missing end-of-block",s.mode=30;break}if(s.lenbits=9,I={bits:s.lenbits},F=r(m,s.lens,0,s.nlen,s.lencode,0,s.work,I),s.lenbits=I.bits,F){_.msg="invalid literal/lengths set",s.mode=30;break}if(s.distbits=6,s.distcode=s.distdyn,I={bits:s.distbits},F=r(p,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,I),s.distbits=I.bits,F){_.msg="invalid distances set",s.mode=30;break}if(s.mode=20,C===6)break e;case 20:s.mode=21;case 21:if(6<=W&&258<=J){_.next_out=K,_.avail_out=J,_.next_in=M,_.avail_in=W,s.hold=z,s.bits=O,u(_,X),K=_.next_out,V=_.output,J=_.avail_out,M=_.next_in,R=_.input,W=_.avail_in,z=s.hold,O=s.bits,s.mode===12&&(s.back=-1);break}for(s.back=0;te=(w=s.lencode[z&(1<>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>se)])>>>16&255,oe=65535&w,!(se+(Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=se,O-=se,s.back+=se}if(z>>>=Q,O-=Q,s.back+=Q,s.length=oe,te===0){s.mode=26;break}if(32&te){s.back=-1,s.mode=12;break}if(64&te){_.msg="invalid literal/length code",s.mode=30;break}s.extra=15&te,s.mode=22;case 22:if(s.extra){for(S=s.extra;O>>=s.extra,O-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=23;case 23:for(;te=(w=s.distcode[z&(1<>>16&255,oe=65535&w,!((Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>se)])>>>16&255,oe=65535&w,!(se+(Q=w>>>24)<=O);){if(W===0)break e;W--,z+=R[M++]<>>=se,O-=se,s.back+=se}if(z>>>=Q,O-=Q,s.back+=Q,64&te){_.msg="invalid distance code",s.mode=30;break}s.offset=oe,s.extra=15&te,s.mode=24;case 24:if(s.extra){for(S=s.extra;O>>=s.extra,O-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){_.msg="invalid distance too far back",s.mode=30;break}s.mode=25;case 25:if(J===0)break e;if(Z=X-J,s.offset>Z){if((Z=s.offset-Z)>s.whave&&s.sane){_.msg="invalid distance too far back",s.mode=30;break}ne=Z>s.wnext?(Z-=s.wnext,s.wsize-Z):s.wnext-Z,Z>s.length&&(Z=s.length),le=s.window}else le=V,ne=K-s.offset,Z=s.length;for(Jt?(b=ne[le+d[C]],O[Y+d[C]]):(b=96,0),g=1<<_-K,s=x=1<>K)+(x-=g)]=l<<24|b<<16|k|0,x!==0;);for(g=1<<_-1;z&g;)g>>=1;if(g!==0?(z&=g-1,z+=g):z=0,C++,--X[_]==0){if(_===R)break;_=p[a+d[C]]}if(V<_&&(z&n)!==P){for(K===0&&(K=V),o+=s,W=1<<(M=_-K);M+K>>7)]}function Y(w,D){w.pending_buf[w.pending++]=255&D,w.pending_buf[w.pending++]=D>>>8&255}function X(w,D,L){w.bi_valid>f-L?(w.bi_buf|=D<>f-w.bi_valid,w.bi_valid+=L-f):(w.bi_buf|=D<>>=1,L<<=1,0<--D;);return L>>>1}function le(w,D,L){var U,B,H=new Array(d+1),G=0;for(U=1;U<=d;U++)H[U]=G=G+L[U-1]<<1;for(B=0;B<=D;B++){var $=w[2*B+1];$!==0&&(w[2*B]=ne(H[$]++,$))}}function Q(w){var D;for(D=0;D>1;1<=L;L--)se(w,H,L);for(B=q;L=w.heap[1],w.heap[1]=w.heap[w.heap_len--],se(w,H,1),U=w.heap[1],w.heap[--w.heap_max]=L,w.heap[--w.heap_max]=U,H[2*B]=H[2*L]+H[2*U],w.depth[B]=(w.depth[L]>=w.depth[U]?w.depth[L]:w.depth[U])+1,H[2*L+1]=H[2*U+1]=B,w.heap[1]=B++,se(w,H,1),2<=w.heap_len;);w.heap[--w.heap_max]=w.heap[1],function(ee,ue){var me,fe,ge,ie,ye,xe,pe=ue.dyn_tree,Se=ue.max_code,Te=ue.stat_desc.static_tree,Ee=ue.stat_desc.has_stree,De=ue.stat_desc.extra_bits,Pe=ue.stat_desc.extra_base,be=ue.stat_desc.max_length,ve=0;for(ie=0;ie<=d;ie++)ee.bl_count[ie]=0;for(pe[2*ee.heap[ee.heap_max]+1]=0,me=ee.heap_max+1;me>=7;B>>=1)if(1&ae&&$.dyn_ltree[2*q]!==0)return v;if($.dyn_ltree[18]!==0||$.dyn_ltree[20]!==0||$.dyn_ltree[26]!==0)return e;for(q=32;q>>3,(H=w.static_len+3+7>>>3)<=B&&(B=H)):B=H=L+5,L+4<=B&&D!==-1?S(w,D,L,U):w.strategy===4||H===B?(X(w,2+(U?1:0),3),de(w,E,_)):(X(w,4+(U?1:0),3),function($,q,ae,ee){var ue;for(X($,q-257,5),X($,ae-1,5),X($,ee-4,4),ue=0;ue>>8&255,w.pending_buf[w.d_buf+2*w.last_lit+1]=255&D,w.pending_buf[w.l_buf+w.last_lit]=255&L,w.last_lit++,D===0?w.dyn_ltree[2*L]++:(w.matches++,D--,w.dyn_ltree[2*(s[L]+p+1)]++,w.dyn_dtree[2*O(D)]++),w.last_lit===w.lit_bufsize-1},N._tr_align=function(w){X(w,2,3),Z(w,x,E),function(D){D.bi_valid===16?(Y(D,D.bi_buf),D.bi_buf=0,D.bi_valid=0):8<=D.bi_valid&&(D.pending_buf[D.pending++]=255&D.bi_buf,D.bi_buf>>=8,D.bi_valid-=8)}(w)}},{"../utils/common":41}],53:[function(T,j,N){j.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(T,j,N){(function(A){(function(v,e){if(!v.setImmediate){var u,r,m,p,a=1,i={},y=!1,h=v.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(v);d=d&&d.setTimeout?d:v,u={}.toString.call(v.process)==="[object process]"?function(P){process.nextTick(function(){g(P)})}:function(){if(v.postMessage&&!v.importScripts){var P=!0,n=v.onmessage;return v.onmessage=function(){P=!1},v.postMessage("","*"),v.onmessage=n,P}}()?(p="setImmediate$"+Math.random()+"$",v.addEventListener?v.addEventListener("message",x,!1):v.attachEvent("onmessage",x),function(P){v.postMessage(p+P,"*")}):v.MessageChannel?((m=new MessageChannel).port1.onmessage=function(P){g(P.data)},function(P){m.port2.postMessage(P)}):h&&"onreadystatechange"in h.createElement("script")?(r=h.documentElement,function(P){var n=h.createElement("script");n.onreadystatechange=function(){g(P),n.onreadystatechange=null,r.removeChild(n),n=null},r.appendChild(n)}):function(P){setTimeout(g,0,P)},d.setImmediate=function(P){typeof P!="function"&&(P=new Function(""+P));for(var n=new Array(arguments.length-1),o=0;o"u"?A===void 0?this:A:self)}).call(this,typeof _e<"u"?_e:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(Be)),we}(function(re,ce){(function(T,j){re.exports=j(Oe())})(globalThis,T=>(()=>{var j={438:(v,e,u)=>{u.r(e),u.d(e,{default:()=>g});var r=u(537),m=u.n(r),p=u(645),a=u.n(p),i=u(806),y=u.n(i),h=new URL(u(583),u.b),d=a()(m()),f=y()(h);d.push([v.id,`@namespace "http://www.w3.org/1998/Math/MathML";math{display:inline-block;line-height:initial}mfrac{display:inline-block;vertical-align:-50%;text-align:center}mfrac>:first-child{border-bottom:solid thin currentColor}mfrac>*{display:block}msub>:nth-child(2){font-size:smaller;vertical-align:sub}msup>:nth-child(2){font-size:smaller;vertical-align:super}munder,mover,munderover{display:inline-flex;flex-flow:column nowrap;vertical-align:middle;text-align:center}munder>:not(:first-child),mover>:not(:first-child),munderover>:not(:first-child){font-size:smaller}munderover>:last-child{order:-1}mroot,msqrt{position:relative;display:inline-block;border-top:solid thin currentColor;margin-top:.5px;vertical-align:middle;margin-left:1ch}mroot:before,msqrt:before{content:"";display:inline-block;position:absolute;width:1ch;left:-1ch;top:-1px;bottom:0;background-image:url(${f})}`,"",{version:3,sources:["webpack://./src/mathml.scss"],names:[],mappings:"AAAA,+CAAA,CAEA,KACI,oBAAA,CACA,mBAAA,CAGJ,MACI,oBAAA,CACA,mBAAA,CACA,iBAAA,CAEA,mBACI,qCAAA,CAGJ,QACI,aAAA,CAKJ,mBACI,iBAAA,CACA,kBAAA,CAKJ,mBACI,iBAAA,CACA,oBAAA,CAIR,wBACI,mBAAA,CACA,uBAAA,CACA,qBAAA,CACA,iBAAA,CAEA,iFACI,iBAAA,CAKJ,uBAAA,QAAA,CAGJ,YACI,iBAAA,CACA,oBAAA,CACA,kCAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAEA,0BACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,SAAA,CACA,SAAA,CACA,QAAA,CACA,QAAA,CACA,wDAAA",sourcesContent:[`@namespace "http://www.w3.org/1998/Math/MathML";\r +\r +math {\r + display: inline-block;\r + line-height: initial;\r +}\r +\r +mfrac {\r + display: inline-block;\r + vertical-align: -50%;\r + text-align: center;\r +\r + &>:first-child {\r + border-bottom: solid thin currentColor;\r + }\r +\r + &>* {\r + display: block;\r + }\r +}\r +\r +msub {\r + &>:nth-child(2) {\r + font-size: smaller;\r + vertical-align: sub;\r + }\r +}\r +\r +msup {\r + &>:nth-child(2) {\r + font-size: smaller;\r + vertical-align: super;\r + }\r +}\r +\r +munder, mover, munderover {\r + display: inline-flex;\r + flex-flow: column nowrap;\r + vertical-align: middle;\r + text-align: center;\r +\r + &>:not(:first-child) {\r + font-size: smaller;\r + }\r +}\r +\r +munderover {\r + &>:last-child { order: -1; }\r +}\r +\r +mroot, msqrt {\r + position: relative;\r + display: inline-block;\r + border-top: solid thin currentColor; \r + margin-top: 0.5px;\r + vertical-align: middle; \r + margin-left: 1ch; \r +\r + &:before {\r + content: "";\r + display: inline-block;\r + position: absolute;\r + width: 1ch;\r + left: -1ch;\r + top: -1px;\r + bottom: 0;\r + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 100' preserveAspectRatio='none'%3E%3Cpath d='m0,75 l5,0 l5,25 l10,-100' stroke='black' fill='none' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");\r + }\r +}`],sourceRoot:""}]);const g=d.toString()},645:v=>{v.exports=function(e){var u=[];return u.toString=function(){return this.map(function(r){var m="",p=r[5]!==void 0;return r[4]&&(m+="@supports (".concat(r[4],") {")),r[2]&&(m+="@media ".concat(r[2]," {")),p&&(m+="@layer".concat(r[5].length>0?" ".concat(r[5]):""," {")),m+=e(r),p&&(m+="}"),r[2]&&(m+="}"),r[4]&&(m+="}"),m}).join("")},u.i=function(r,m,p,a,i){typeof r=="string"&&(r=[[null,r,void 0]]);var y={};if(p)for(var h=0;h0?" ".concat(g[5]):""," {").concat(g[1],"}")),g[5]=i),m&&(g[2]&&(g[1]="@media ".concat(g[2]," {").concat(g[1],"}")),g[2]=m),a&&(g[4]?(g[1]="@supports (".concat(g[4],") {").concat(g[1],"}"),g[4]=a):g[4]="".concat(a)),u.push(g))}},u}},806:v=>{v.exports=function(e,u){return u||(u={}),e&&(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),u.hash&&(e+=u.hash),/["'() \t\n]|(%20)/.test(e)||u.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e)}},537:v=>{v.exports=function(e){var u=e[1],r=e[3];if(!r)return u;if(typeof btoa=="function"){var m=btoa(unescape(encodeURIComponent(JSON.stringify(r)))),p="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(m),a="/*# ".concat(p," */");return[u].concat([a]).join(` +`)}return[u].join(` +`)}},522:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.OpenXmlPackage=void 0;const r=u(626),m=u(472),p=u(593),a=u(461);class i{constructor(h,d){this._zip=h,this.options=d,this.xmlParser=new m.XmlParser}get(h){return this._zip.files[function(d){return d.startsWith("/")?d.substr(1):d}(h)]}update(h,d){this._zip.file(h,d)}static async load(h,d){const f=await r.loadAsync(h);return new i(f,d)}save(h="blob"){return this._zip.generateAsync({type:h})}load(h,d="string"){var f,g;return(g=(f=this.get(h))===null||f===void 0?void 0:f.async(d))!==null&&g!==void 0?g:Promise.resolve(null)}async loadRelationships(h=null){let d="_rels/.rels";if(h!=null){const[g,x]=(0,p.splitPath)(h);d=`${g}_rels/${x}.rels`}const f=await this.load(d);return f?(0,a.parseRelationships)(this.parseXmlDocument(f).firstElementChild,this.xmlParser):null}parseXmlDocument(h){return(0,m.parseXmlString)(h,this.options.trimXmlDeclaration)}}e.OpenXmlPackage=i},530:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Part=void 0;const r=u(472);e.Part=class{constructor(m,p){this._package=m,this.path=p}async load(){this.rels=await this._package.loadRelationships(this.path);const m=await this._package.load(this.path),p=this._package.parseXmlDocument(m);this._package.options.keepOrigin&&(this._xmlDocument=p),this.parseXml(p.firstElementChild)}save(){this._package.update(this.path,(0,r.serializeXmlString)(this._xmlDocument))}parseXml(m){}}},461:(v,e)=>{var u;Object.defineProperty(e,"__esModule",{value:!0}),e.parseRelationships=e.RelationshipTypes=void 0,function(r){r.OfficeDocument="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",r.FontTable="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable",r.Image="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",r.Numbering="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",r.Styles="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",r.StylesWithEffects="http://schemas.microsoft.com/office/2007/relationships/stylesWithEffects",r.Theme="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",r.Settings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings",r.WebSettings="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings",r.Hyperlink="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",r.Footnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",r.Endnotes="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",r.Footer="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",r.Header="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",r.ExtendedProperties="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",r.CoreProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",r.CustomProperties="http://schemas.openxmlformats.org/package/2006/relationships/metadata/custom-properties"}(u||(e.RelationshipTypes=u={})),e.parseRelationships=function(r,m){return m.elements(r).map(p=>({id:m.attr(p,"Id"),type:m.attr(p,"Type"),target:m.attr(p,"Target"),targetMode:m.attr(p,"TargetMode")}))}},168:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentParser=e.autos=void 0;const r=u(120),m=u(109),p=u(59),a=u(472),i=u(488),y=u(172),h=u(149),d=u(320);e.autos={shd:"inherit",color:"black",borderColor:"black",highlight:"transparent"};const f=[],g={oMath:r.DomType.MmlMath,oMathPara:r.DomType.MmlMathParagraph,f:r.DomType.MmlFraction,num:r.DomType.MmlNumerator,den:r.DomType.MmlDenominator,rad:r.DomType.MmlRadical,deg:r.DomType.MmlDegree,e:r.DomType.MmlBase,sSup:r.DomType.MmlSuperscript,sSub:r.DomType.MmlSubscript,sup:r.DomType.MmlSuperArgument,sub:r.DomType.MmlSubArgument,d:r.DomType.MmlDelimiter,nary:r.DomType.MmlNary};e.DocumentParser=class{constructor(o){this.options=Object.assign({ignoreWidth:!1,debug:!1},o)}parseNotes(o,t,l){var b=[];for(let k of a.default.elements(o,t)){const E=new l;E.id=a.default.attr(k,"id"),E.noteType=a.default.attr(k,"type"),E.children=this.parseBodyElements(k),b.push(E)}return b}parseDocumentFile(o){var t=a.default.element(o,"body"),l=a.default.element(o,"background"),b=a.default.element(t,"sectPr");return{type:r.DomType.Document,children:this.parseBodyElements(t),props:b?(0,p.parseSectionProperties)(b,a.default):{},cssStyle:l?this.parseBackground(l):{}}}parseBackground(o){var t={},l=P.colorAttr(o,"color");return l&&(t["background-color"]=l),t}parseBodyElements(o){var t=[];for(let l of a.default.elements(o))switch(l.localName){case"p":t.push(this.parseParagraph(l));break;case"tbl":t.push(this.parseTable(l));break;case"sdt":t.push(...this.parseSdt(l,b=>this.parseBodyElements(b)))}return t}parseStylesFile(o){var t=[];return P.foreach(o,l=>{switch(l.localName){case"style":t.push(this.parseStyle(l));break;case"docDefaults":t.push(this.parseDefaultStyles(l))}}),t}parseDefaultStyles(o){var t={id:null,name:null,target:null,basedOn:null,styles:[]};return P.foreach(o,l=>{switch(l.localName){case"rPrDefault":var b=a.default.element(l,"rPr");b&&t.styles.push({target:"span",values:this.parseDefaultProperties(b,{})});break;case"pPrDefault":var k=a.default.element(l,"pPr");k&&t.styles.push({target:"p",values:this.parseDefaultProperties(k,{})})}}),t}parseStyle(o){var t={id:a.default.attr(o,"styleId"),isDefault:a.default.boolAttr(o,"default"),name:null,target:null,basedOn:null,styles:[],linked:null};switch(a.default.attr(o,"type")){case"paragraph":t.target="p";break;case"table":t.target="table";break;case"character":t.target="span"}return P.foreach(o,l=>{switch(l.localName){case"basedOn":t.basedOn=a.default.attr(l,"val");break;case"name":t.name=a.default.attr(l,"val");break;case"link":t.linked=a.default.attr(l,"val");break;case"next":t.next=a.default.attr(l,"val");break;case"aliases":t.aliases=a.default.attr(l,"val").split(",");break;case"pPr":t.styles.push({target:"p",values:this.parseDefaultProperties(l,{})}),t.paragraphProps=(0,m.parseParagraphProperties)(l,a.default);break;case"rPr":t.styles.push({target:"span",values:this.parseDefaultProperties(l,{})}),t.runProps=(0,i.parseRunProperties)(l,a.default);break;case"tblPr":case"tcPr":t.styles.push({target:"td",values:this.parseDefaultProperties(l,{})});break;case"tblStylePr":for(let b of this.parseTableStyle(l))t.styles.push(b);break;case"rsid":case"qFormat":case"hidden":case"semiHidden":case"unhideWhenUsed":case"autoRedefine":case"uiPriority":break;default:this.options.debug&&console.warn(`DOCX: Unknown style element: ${l.localName}`)}}),t}parseTableStyle(o){var t=[],l=a.default.attr(o,"type"),b="",k="";switch(l){case"firstRow":k=".first-row",b="tr.first-row td";break;case"lastRow":k=".last-row",b="tr.last-row td";break;case"firstCol":k=".first-col",b="td.first-col";break;case"lastCol":k=".last-col",b="td.last-col";break;case"band1Vert":k=":not(.no-vband)",b="td.odd-col";break;case"band2Vert":k=":not(.no-vband)",b="td.even-col";break;case"band1Horz":k=":not(.no-hband)",b="tr.odd-row";break;case"band2Horz":k=":not(.no-hband)",b="tr.even-row";break;default:return[]}return P.foreach(o,E=>{switch(E.localName){case"pPr":t.push({target:`${b} p`,mod:k,values:this.parseDefaultProperties(E,{})});break;case"rPr":t.push({target:`${b} span`,mod:k,values:this.parseDefaultProperties(E,{})});break;case"tblPr":case"tcPr":t.push({target:b,mod:k,values:this.parseDefaultProperties(E,{})})}}),t}parseNumberingFile(o){var t=[],l={},b=[];return P.foreach(o,k=>{switch(k.localName){case"abstractNum":this.parseAbstractNumbering(k,b).forEach(C=>t.push(C));break;case"numPicBullet":b.push(this.parseNumberingPicBullet(k));break;case"num":var E=a.default.attr(k,"numId"),_=a.default.elementAttr(k,"abstractNumId","val");l[_]=E}}),t.forEach(k=>k.id=l[k.id]),t}parseNumberingPicBullet(o){var t=a.default.element(o,"pict"),l=t&&a.default.element(t,"shape"),b=l&&a.default.element(l,"imagedata");return b?{id:a.default.intAttr(o,"numPicBulletId"),src:a.default.attr(b,"id"),style:a.default.attr(l,"style")}:null}parseAbstractNumbering(o,t){var l=[],b=a.default.attr(o,"abstractNumId");return P.foreach(o,k=>{k.localName==="lvl"&&l.push(this.parseNumberingLevel(b,k,t))}),l}parseNumberingLevel(o,t,l){var b={id:o,level:a.default.intAttr(t,"ilvl"),pStyleName:void 0,pStyle:{},rStyle:{},suff:"tab"};return P.foreach(t,k=>{switch(k.localName){case"pPr":this.parseDefaultProperties(k,b.pStyle);break;case"rPr":this.parseDefaultProperties(k,b.rStyle);break;case"lvlPicBulletId":var E=a.default.intAttr(k,"val");b.bullet=l.find(_=>_.id==E);break;case"lvlText":b.levelText=a.default.attr(k,"val");break;case"pStyle":b.pStyleName=a.default.attr(k,"val");break;case"numFmt":b.format=a.default.attr(k,"val");break;case"suff":b.suff=a.default.attr(k,"val")}}),b}parseSdt(o,t){const l=a.default.element(o,"sdtContent");return l?t(l):[]}parseInserted(o,t){var l,b;return{type:r.DomType.Inserted,children:(b=(l=t(o))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseDeleted(o,t){var l,b;return{type:r.DomType.Deleted,children:(b=(l=t(o))===null||l===void 0?void 0:l.children)!==null&&b!==void 0?b:[]}}parseParagraph(o){var t={type:r.DomType.Paragraph,children:[]};for(let l of a.default.elements(o))switch(l.localName){case"pPr":this.parseParagraphProperties(l,t);break;case"r":t.children.push(this.parseRun(l,t));break;case"hyperlink":t.children.push(this.parseHyperlink(l,t));break;case"bookmarkStart":t.children.push((0,y.parseBookmarkStart)(l,a.default));break;case"bookmarkEnd":t.children.push((0,y.parseBookmarkEnd)(l,a.default));break;case"oMath":case"oMathPara":t.children.push(this.parseMathElement(l));break;case"sdt":t.children.push(...this.parseSdt(l,b=>this.parseParagraph(b).children));break;case"ins":t.children.push(this.parseInserted(l,b=>this.parseParagraph(b)));break;case"del":t.children.push(this.parseDeleted(l,b=>this.parseParagraph(b)))}return t}parseParagraphProperties(o,t){this.parseDefaultProperties(o,t.cssStyle={},null,l=>{if((0,m.parseParagraphProperty)(l,t,a.default))return!0;switch(l.localName){case"pStyle":t.styleName=a.default.attr(l,"val");break;case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;case"framePr":this.parseFrame(l,t);break;case"rPr":break;default:return!1}return!0})}parseFrame(o,t){a.default.attr(o,"dropCap")=="drop"&&(t.cssStyle.float="left")}parseHyperlink(o,t){var l={type:r.DomType.Hyperlink,parent:t,children:[]},b=a.default.attr(o,"anchor"),k=a.default.attr(o,"id");return b&&(l.href="#"+b),k&&(l.id=k),P.foreach(o,E=>{E.localName==="r"&&l.children.push(this.parseRun(E,l))}),l}parseRun(o,t){var l={type:r.DomType.Run,parent:t,children:[]};return P.foreach(o,b=>{switch((b=this.checkAlternateContent(b)).localName){case"t":l.children.push({type:r.DomType.Text,text:b.textContent});break;case"delText":l.children.push({type:r.DomType.DeletedText,text:b.textContent});break;case"fldSimple":l.children.push({type:r.DomType.SimpleField,instruction:a.default.attr(b,"instr"),lock:a.default.boolAttr(b,"lock",!1),dirty:a.default.boolAttr(b,"dirty",!1)});break;case"instrText":l.fieldRun=!0,l.children.push({type:r.DomType.Instruction,text:b.textContent});break;case"fldChar":l.fieldRun=!0,l.children.push({type:r.DomType.ComplexField,charType:a.default.attr(b,"fldCharType"),lock:a.default.boolAttr(b,"lock",!1),dirty:a.default.boolAttr(b,"dirty",!1)});break;case"noBreakHyphen":l.children.push({type:r.DomType.NoBreakHyphen});break;case"br":l.children.push({type:r.DomType.Break,break:a.default.attr(b,"type")||"textWrapping"});break;case"lastRenderedPageBreak":l.children.push({type:r.DomType.Break,break:"lastRenderedPageBreak"});break;case"sym":l.children.push({type:r.DomType.Symbol,font:a.default.attr(b,"font"),char:a.default.attr(b,"char")});break;case"tab":l.children.push({type:r.DomType.Tab});break;case"footnoteReference":l.children.push({type:r.DomType.FootnoteReference,id:a.default.attr(b,"id")});break;case"endnoteReference":l.children.push({type:r.DomType.EndnoteReference,id:a.default.attr(b,"id")});break;case"drawing":let k=this.parseDrawing(b);k&&(l.children=[k]);break;case"pict":l.children.push(this.parseVmlPicture(b));break;case"rPr":this.parseRunProperties(b,l)}}),l}parseMathElement(o){const t=`${o.localName}Pr`,l={type:g[o.localName],children:[]};for(const k of a.default.elements(o))if(g[k.localName])l.children.push(this.parseMathElement(k));else if(k.localName=="r"){var b=this.parseRun(k);b.type=r.DomType.MmlRun,l.children.push(b)}else k.localName==t&&(l.props=this.parseMathProperies(k));return l}parseMathProperies(o){const t={};for(const l of a.default.elements(o))switch(l.localName){case"chr":t.char=a.default.attr(l,"val");break;case"degHide":t.hideDegree=a.default.boolAttr(l,"val");break;case"begChr":t.beginChar=a.default.attr(l,"val");break;case"endChr":t.endChar=a.default.attr(l,"val")}return t}parseRunProperties(o,t){this.parseDefaultProperties(o,t.cssStyle={},null,l=>{switch(l.localName){case"rStyle":t.styleName=a.default.attr(l,"val");break;case"vertAlign":t.verticalAlign=n.valueOfVertAlign(l,!0);break;default:return!1}return!0})}parseVmlPicture(o){const t={type:r.DomType.VmlPicture,children:[]};for(const l of a.default.elements(o)){const b=(0,d.parseVmlElement)(l);b&&t.children.push(b)}return t}checkAlternateContent(o){var t;if(o.localName!="AlternateContent")return o;var l=a.default.element(o,"Choice");if(l){var b=a.default.attr(l,"Requires"),k=o.lookupNamespaceURI(b);if(f.includes(k))return l.firstElementChild}return(t=a.default.element(o,"Fallback"))===null||t===void 0?void 0:t.firstElementChild}parseDrawing(o){for(var t of a.default.elements(o))switch(t.localName){case"inline":case"anchor":return this.parseDrawingWrapper(t)}}parseDrawingWrapper(o){var t,l={type:r.DomType.Drawing,children:[],cssStyle:{}},b=o.localName=="anchor";let k=null,E=a.default.boolAttr(o,"simplePos"),_={relative:"page",align:"left",offset:"0"},C={relative:"page",align:"top",offset:"0"};for(var s of a.default.elements(o))switch(s.localName){case"simplePos":E&&(_.offset=a.default.lengthAttr(s,"x",h.LengthUsage.Emu),C.offset=a.default.lengthAttr(s,"y",h.LengthUsage.Emu));break;case"extent":l.cssStyle.width=a.default.lengthAttr(s,"cx",h.LengthUsage.Emu),l.cssStyle.height=a.default.lengthAttr(s,"cy",h.LengthUsage.Emu);break;case"positionH":case"positionV":if(!E){let K=s.localName=="positionH"?_:C;var R=a.default.element(s,"align"),V=a.default.element(s,"posOffset");K.relative=(t=a.default.attr(s,"relativeFrom"))!==null&&t!==void 0?t:K.relative,R&&(K.align=R.textContent),V&&(K.offset=P.sizeValue(V,h.LengthUsage.Emu))}break;case"wrapTopAndBottom":k="wrapTopAndBottom";break;case"wrapNone":k="wrapNone";break;case"graphic":var M=this.parseGraphic(s);M&&l.children.push(M)}return k=="wrapTopAndBottom"?(l.cssStyle.display="block",_.align&&(l.cssStyle["text-align"]=_.align,l.cssStyle.width="100%")):k=="wrapNone"?(l.cssStyle.display="block",l.cssStyle.position="relative",l.cssStyle.width="0px",l.cssStyle.height="0px",_.offset&&(l.cssStyle.left=_.offset),C.offset&&(l.cssStyle.top=C.offset)):!b||_.align!="left"&&_.align!="right"||(l.cssStyle.float=_.align),l}parseGraphic(o){var t=a.default.element(o,"graphicData");for(let l of a.default.elements(t))if(l.localName==="pic")return this.parsePicture(l);return null}parsePicture(o){var t={type:r.DomType.Image,src:"",cssStyle:{}},l=a.default.element(o,"blipFill"),b=a.default.element(l,"blip");t.src=a.default.attr(b,"embed");var k=a.default.element(o,"spPr"),E=a.default.element(k,"xfrm");for(var _ of(t.cssStyle.position="relative",a.default.elements(E)))switch(_.localName){case"ext":t.cssStyle.width=a.default.lengthAttr(_,"cx",h.LengthUsage.Emu),t.cssStyle.height=a.default.lengthAttr(_,"cy",h.LengthUsage.Emu);break;case"off":t.cssStyle.left=a.default.lengthAttr(_,"x",h.LengthUsage.Emu),t.cssStyle.top=a.default.lengthAttr(_,"y",h.LengthUsage.Emu)}return t}parseTable(o){var t={type:r.DomType.Table,children:[]};return P.foreach(o,l=>{switch(l.localName){case"tr":t.children.push(this.parseTableRow(l));break;case"tblGrid":t.columns=this.parseTableColumns(l);break;case"tblPr":this.parseTableProperties(l,t)}}),t}parseTableColumns(o){var t=[];return P.foreach(o,l=>{l.localName==="gridCol"&&t.push({width:a.default.lengthAttr(l,"w")})}),t}parseTableProperties(o,t){switch(t.cssStyle={},t.cellStyle={},this.parseDefaultProperties(o,t.cssStyle,t.cellStyle,l=>{switch(l.localName){case"tblStyle":t.styleName=a.default.attr(l,"val");break;case"tblLook":t.className=n.classNameOftblLook(l);break;case"tblpPr":this.parseTablePosition(l,t);break;case"tblStyleColBandSize":t.colBandSize=a.default.intAttr(l,"val");break;case"tblStyleRowBandSize":t.rowBandSize=a.default.intAttr(l,"val");break;default:return!1}return!0}),t.cssStyle["text-align"]){case"center":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto",t.cssStyle["margin-right"]="auto";break;case"right":delete t.cssStyle["text-align"],t.cssStyle["margin-left"]="auto"}}parseTablePosition(o,t){var l=a.default.lengthAttr(o,"topFromText"),b=a.default.lengthAttr(o,"bottomFromText"),k=a.default.lengthAttr(o,"rightFromText"),E=a.default.lengthAttr(o,"leftFromText");t.cssStyle.float="left",t.cssStyle["margin-bottom"]=n.addSize(t.cssStyle["margin-bottom"],b),t.cssStyle["margin-left"]=n.addSize(t.cssStyle["margin-left"],E),t.cssStyle["margin-right"]=n.addSize(t.cssStyle["margin-right"],k),t.cssStyle["margin-top"]=n.addSize(t.cssStyle["margin-top"],l)}parseTableRow(o){var t={type:r.DomType.Row,children:[]};return P.foreach(o,l=>{switch(l.localName){case"tc":t.children.push(this.parseTableCell(l));break;case"trPr":this.parseTableRowProperties(l,t)}}),t}parseTableRowProperties(o,t){t.cssStyle=this.parseDefaultProperties(o,{},null,l=>{switch(l.localName){case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;case"tblHeader":t.isHeader=a.default.boolAttr(l,"val");break;default:return!1}return!0})}parseTableCell(o){var t={type:r.DomType.Cell,children:[]};return P.foreach(o,l=>{switch(l.localName){case"tbl":t.children.push(this.parseTable(l));break;case"p":t.children.push(this.parseParagraph(l));break;case"tcPr":this.parseTableCellProperties(l,t)}}),t}parseTableCellProperties(o,t){t.cssStyle=this.parseDefaultProperties(o,{},null,l=>{var b;switch(l.localName){case"gridSpan":t.span=a.default.intAttr(l,"val",null);break;case"vMerge":t.verticalMerge=(b=a.default.attr(l,"val"))!==null&&b!==void 0?b:"continue";break;case"cnfStyle":t.className=n.classNameOfCnfStyle(l);break;default:return!1}return!0})}parseDefaultProperties(o,t=null,l=null,b=null){return t=t||{},P.foreach(o,k=>{if(!(b!=null&&b(k)))switch(k.localName){case"jc":t["text-align"]=n.valueOfJc(k);break;case"textAlignment":t["vertical-align"]=n.valueOfTextAlignment(k);break;case"color":t.color=P.colorAttr(k,"val",null,e.autos.color);break;case"sz":t["font-size"]=t["min-height"]=a.default.lengthAttr(k,"val",h.LengthUsage.FontSize);break;case"shd":t["background-color"]=P.colorAttr(k,"fill",null,e.autos.shd);break;case"highlight":t["background-color"]=P.colorAttr(k,"val",null,e.autos.highlight);break;case"vertAlign":break;case"position":t.verticalAlign=a.default.lengthAttr(k,"val",h.LengthUsage.FontSize);break;case"tcW":if(this.options.ignoreWidth)break;case"tblW":t.width=n.valueOfSize(k,"w");break;case"trHeight":this.parseTrHeight(k,t);break;case"strike":t["text-decoration"]=a.default.boolAttr(k,"val",!0)?"line-through":"none";break;case"b":t["font-weight"]=a.default.boolAttr(k,"val",!0)?"bold":"normal";break;case"i":t["font-style"]=a.default.boolAttr(k,"val",!0)?"italic":"normal";break;case"caps":t["text-transform"]=a.default.boolAttr(k,"val",!0)?"uppercase":"none";break;case"smallCaps":t["text-transform"]=a.default.boolAttr(k,"val",!0)?"lowercase":"none";break;case"u":this.parseUnderline(k,t);break;case"ind":case"tblInd":this.parseIndentation(k,t);break;case"rFonts":this.parseFont(k,t);break;case"tblBorders":this.parseBorderProperties(k,l||t);break;case"tblCellSpacing":t["border-spacing"]=n.valueOfMargin(k),t["border-collapse"]="separate";break;case"pBdr":this.parseBorderProperties(k,t);break;case"bdr":t.border=n.valueOfBorder(k);break;case"tcBorders":this.parseBorderProperties(k,t);break;case"vanish":a.default.boolAttr(k,"val",!0)&&(t.display="none");break;case"kern":case"noWrap":break;case"tblCellMar":case"tcMar":this.parseMarginProperties(k,l||t);break;case"tblLayout":t["table-layout"]=n.valueOfTblLayout(k);break;case"vAlign":t["vertical-align"]=n.valueOfTextAlignment(k);break;case"spacing":o.localName=="pPr"&&this.parseSpacing(k,t);break;case"wordWrap":a.default.boolAttr(k,"val")&&(t["overflow-wrap"]="break-word");break;case"bCs":case"iCs":case"szCs":case"tabs":case"outlineLvl":case"contextualSpacing":case"tblStyleColBandSize":case"tblStyleRowBandSize":case"webHidden":case"pageBreakBefore":case"suppressLineNumbers":case"keepLines":case"keepNext":case"lang":case"widowControl":case"bidi":case"rtl":case"noProof":break;default:this.options.debug&&console.warn(`DOCX: Unknown document element: ${o.localName}.${k.localName}`)}}),t}parseUnderline(o,t){var l=a.default.attr(o,"val");if(l!=null){switch(l){case"dash":case"dashDotDotHeavy":case"dashDotHeavy":case"dashedHeavy":case"dashLong":case"dashLongHeavy":case"dotDash":case"dotDotDash":t["text-decoration-style"]="dashed";break;case"dotted":case"dottedHeavy":t["text-decoration-style"]="dotted";break;case"double":t["text-decoration-style"]="double";break;case"single":case"thick":case"words":t["text-decoration"]="underline";break;case"wave":case"wavyDouble":case"wavyHeavy":t["text-decoration-style"]="wavy";break;case"none":t["text-decoration"]="none"}var b=P.colorAttr(o,"color");b&&(t["text-decoration-color"]=b)}}parseFont(o,t){var l=[a.default.attr(o,"ascii"),n.themeValue(o,"asciiTheme")].filter(b=>b).join(", ");l.length>0&&(t["font-family"]=l)}parseIndentation(o,t){var l=a.default.lengthAttr(o,"firstLine"),b=a.default.lengthAttr(o,"hanging"),k=a.default.lengthAttr(o,"left"),E=a.default.lengthAttr(o,"start"),_=a.default.lengthAttr(o,"right"),C=a.default.lengthAttr(o,"end");l&&(t["text-indent"]=l),b&&(t["text-indent"]=`-${b}`),(k||E)&&(t["margin-left"]=k||E),(_||C)&&(t["margin-right"]=_||C)}parseSpacing(o,t){var l=a.default.lengthAttr(o,"before"),b=a.default.lengthAttr(o,"after"),k=a.default.intAttr(o,"line",null),E=a.default.attr(o,"lineRule");if(l&&(t["margin-top"]=l),b&&(t["margin-bottom"]=b),k!==null)switch(E){case"auto":t["line-height"]=`${(k/240).toFixed(2)}`;break;case"atLeast":t["line-height"]=`calc(100% + ${k/20}pt)`;break;default:t["line-height"]=t["min-height"]=k/20+"pt"}}parseMarginProperties(o,t){P.foreach(o,l=>{switch(l.localName){case"left":t["padding-left"]=n.valueOfMargin(l);break;case"right":t["padding-right"]=n.valueOfMargin(l);break;case"top":t["padding-top"]=n.valueOfMargin(l);break;case"bottom":t["padding-bottom"]=n.valueOfMargin(l)}})}parseTrHeight(o,t){a.default.attr(o,"hRule"),t.height=a.default.lengthAttr(o,"val")}parseBorderProperties(o,t){P.foreach(o,l=>{switch(l.localName){case"start":case"left":t["border-left"]=n.valueOfBorder(l);break;case"end":case"right":t["border-right"]=n.valueOfBorder(l);break;case"top":t["border-top"]=n.valueOfBorder(l);break;case"bottom":t["border-bottom"]=n.valueOfBorder(l)}})}};const x=["black","blue","cyan","darkBlue","darkCyan","darkGray","darkGreen","darkMagenta","darkRed","darkYellow","green","lightGray","magenta","none","red","white","yellow"];class P{static foreach(t,l){for(var b=0;bl[k]=="1").join(" ")}static valueOfJc(t){var l=a.default.attr(t,"val");switch(l){case"start":case"left":return"left";case"center":return"center";case"end":case"right":return"right";case"both":return"justify"}return l}static valueOfVertAlign(t,l=!1){var b=a.default.attr(t,"val");switch(b){case"subscript":return"sub";case"superscript":return l?"sup":"super"}return l?null:b}static valueOfTextAlignment(t){var l=a.default.attr(t,"val");switch(l){case"auto":case"baseline":return"baseline";case"top":return"top";case"center":return"middle";case"bottom":return"bottom"}return l}static addSize(t,l){return t==null?l:l==null?t:`calc(${t} + ${l})`}static classNameOftblLook(t){const l=a.default.hexAttr(t,"val",0);let b="";return(a.default.boolAttr(t,"firstRow")||32&l)&&(b+=" first-row"),(a.default.boolAttr(t,"lastRow")||64&l)&&(b+=" last-row"),(a.default.boolAttr(t,"firstColumn")||128&l)&&(b+=" first-col"),(a.default.boolAttr(t,"lastColumn")||256&l)&&(b+=" last-col"),(a.default.boolAttr(t,"noHBand")||512&l)&&(b+=" no-hband"),(a.default.boolAttr(t,"noVBand")||1024&l)&&(b+=" no-vband"),b.trim()}}},162:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CorePropsPart=void 0;const r=u(530),m=u(614);class p extends r.Part{parseXml(i){this.props=(0,m.parseCoreProps)(i,this._package.xmlParser)}}e.CorePropsPart=p},614:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCoreProps=void 0,e.parseCoreProps=function(u,r){const m={};for(let p of r.elements(u))switch(p.localName){case"title":m.title=p.textContent;break;case"description":m.description=p.textContent;break;case"subject":m.subject=p.textContent;break;case"creator":m.creator=p.textContent;break;case"keywords":m.keywords=p.textContent;break;case"language":m.language=p.textContent;break;case"lastModifiedBy":m.lastModifiedBy=p.textContent;break;case"revision":p.textContent&&(m.revision=parseInt(p.textContent))}return m}},177:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CustomPropsPart=void 0;const r=u(530),m=u(821);class p extends r.Part{parseXml(i){this.props=(0,m.parseCustomProps)(i,this._package.xmlParser)}}e.CustomPropsPart=p},821:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCustomProps=void 0,e.parseCustomProps=function(u,r){return r.elements(u,"property").map(m=>{const p=m.firstChild;return{formatId:r.attr(m,"fmtid"),name:r.attr(m,"name"),type:p.nodeName,value:p.textContent}})}},665:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ExtendedPropsPart=void 0;const r=u(530),m=u(668);class p extends r.Part{parseXml(i){this.props=(0,m.parseExtendedProps)(i,this._package.xmlParser)}}e.ExtendedPropsPart=p},668:(v,e)=>{function u(r){if(r!==void 0)return parseInt(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.parseExtendedProps=void 0,e.parseExtendedProps=function(r,m){const p={};for(let a of m.elements(r))switch(a.localName){case"Template":p.template=a.textContent;break;case"Pages":p.pages=u(a.textContent);break;case"Words":p.words=u(a.textContent);break;case"Characters":p.characters=u(a.textContent);break;case"Application":p.application=a.textContent;break;case"Lines":p.lines=u(a.textContent);break;case"Paragraphs":p.paragraphs=u(a.textContent);break;case"Company":p.company=a.textContent;break;case"AppVersion":p.appVersion=a.textContent}return p}},172:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseBookmarkEnd=e.parseBookmarkStart=void 0;const r=u(120);e.parseBookmarkStart=function(m,p){return{type:r.DomType.BookmarkStart,id:p.attr(m,"id"),name:p.attr(m,"name"),colFirst:p.intAttr(m,"colFirst"),colLast:p.intAttr(m,"colLast")}},e.parseBookmarkEnd=function(m,p){return{type:r.DomType.BookmarkEnd,id:p.attr(m,"id")}}},191:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseBorders=e.parseBorder=void 0;const r=u(149);function m(p,a){return{type:a.attr(p,"val"),color:a.attr(p,"color"),size:a.lengthAttr(p,"sz",r.LengthUsage.Border),offset:a.lengthAttr(p,"space",r.LengthUsage.Point),frame:a.boolAttr(p,"frame"),shadow:a.boolAttr(p,"shadow")}}e.parseBorder=m,e.parseBorders=function(p,a){var i={};for(let y of a.elements(p))switch(y.localName){case"left":i.left=m(y,a);break;case"top":i.top=m(y,a);break;case"right":i.right=m(y,a);break;case"bottom":i.bottom=m(y,a)}return i}},149:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseCommonProperty=e.convertPercentage=e.convertBoolean=e.convertLength=e.LengthUsage=e.ns=void 0,e.ns={wordml:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",drawingml:"http://schemas.openxmlformats.org/drawingml/2006/main",picture:"http://schemas.openxmlformats.org/drawingml/2006/picture",compatibility:"http://schemas.openxmlformats.org/markup-compatibility/2006",math:"http://schemas.openxmlformats.org/officeDocument/2006/math"},e.LengthUsage={Dxa:{mul:.05,unit:"pt"},Emu:{mul:7874015748031496e-20,unit:"pt"},FontSize:{mul:.5,unit:"pt"},Border:{mul:.125,unit:"pt"},Point:{mul:1,unit:"pt"},Percent:{mul:.02,unit:"%"},LineHeight:{mul:.004166666666666667,unit:""},VmlEmu:{mul:7874015748031496e-20,unit:""}},e.convertLength=function(u,r=e.LengthUsage.Dxa){return u==null||/.+(p[xt]|[%])$/.test(u)?u:`${(parseInt(u)*r.mul).toFixed(2)}${r.unit}`},e.convertBoolean=function(u,r=!1){switch(u){case"1":case"on":case"true":return!0;case"0":case"off":case"false":return!1;default:return r}},e.convertPercentage=function(u){return u?parseInt(u)/100:null},e.parseCommonProperty=function(u,r,m){if(u.namespaceURI!=e.ns.wordml)return!1;switch(u.localName){case"color":r.color=m.attr(u,"val");break;case"sz":r.fontSize=m.lengthAttr(u,"val",e.LengthUsage.FontSize);break;default:return!1}return!0}},448:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DocumentPart=void 0;const r=u(530);class m extends r.Part{constructor(a,i,y){super(a,i),this._documentParser=y}parseXml(a){this.body=this._documentParser.parseDocumentFile(a)}}e.DocumentPart=m},120:(v,e)=>{var u;Object.defineProperty(e,"__esModule",{value:!0}),e.DomType=void 0,function(r){r.Document="document",r.Paragraph="paragraph",r.Run="run",r.Break="break",r.NoBreakHyphen="noBreakHyphen",r.Table="table",r.Row="row",r.Cell="cell",r.Hyperlink="hyperlink",r.Drawing="drawing",r.Image="image",r.Text="text",r.Tab="tab",r.Symbol="symbol",r.BookmarkStart="bookmarkStart",r.BookmarkEnd="bookmarkEnd",r.Footer="footer",r.Header="header",r.FootnoteReference="footnoteReference",r.EndnoteReference="endnoteReference",r.Footnote="footnote",r.Endnote="endnote",r.SimpleField="simpleField",r.ComplexField="complexField",r.Instruction="instruction",r.VmlPicture="vmlPicture",r.MmlMath="mmlMath",r.MmlMathParagraph="mmlMathParagraph",r.MmlFraction="mmlFraction",r.MmlNumerator="mmlNumerator",r.MmlDenominator="mmlDenominator",r.MmlRadical="mmlRadical",r.MmlBase="mmlBase",r.MmlDegree="mmlDegree",r.MmlSuperscript="mmlSuperscript",r.MmlSubscript="mmlSubscript",r.MmlSubArgument="mmlSubArgument",r.MmlSuperArgument="mmlSuperArgument",r.MmlNary="mmlNary",r.MmlDelimiter="mmlDelimiter",r.MmlRun="mmlRun",r.VmlElement="vmlElement",r.Inserted="inserted",r.Deleted="deleted",r.DeletedText="deletedText"}(u||(e.DomType=u={}))},931:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseLineSpacing=void 0,e.parseLineSpacing=function(u,r){return{before:r.lengthAttr(u,"before"),after:r.lengthAttr(u,"after"),line:r.intAttr(u,"line"),lineRule:r.attr(u,"lineRule")}}},109:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseNumbering=e.parseTabs=e.parseParagraphProperty=e.parseParagraphProperties=void 0;const r=u(149),m=u(59),p=u(931),a=u(488);function i(d,f,g){if(d.namespaceURI!=r.ns.wordml)return!1;if((0,r.parseCommonProperty)(d,f,g))return!0;switch(d.localName){case"tabs":f.tabs=y(d,g);break;case"sectPr":f.sectionProps=(0,m.parseSectionProperties)(d,g);break;case"numPr":f.numbering=h(d,g);break;case"spacing":return f.lineSpacing=(0,p.parseLineSpacing)(d,g),!1;case"textAlignment":return f.textAlignment=g.attr(d,"val"),!1;case"keepNext":f.keepLines=g.boolAttr(d,"val",!0);break;case"keepNext":f.keepNext=g.boolAttr(d,"val",!0);break;case"pageBreakBefore":f.pageBreakBefore=g.boolAttr(d,"val",!0);break;case"outlineLvl":f.outlineLevel=g.intAttr(d,"val");break;case"pStyle":f.styleName=g.attr(d,"val");break;case"rPr":f.runProps=(0,a.parseRunProperties)(d,g);break;default:return!1}return!0}function y(d,f){return f.elements(d,"tab").map(g=>({position:f.lengthAttr(g,"pos"),leader:f.attr(g,"leader"),style:f.attr(g,"val")}))}function h(d,f){var g={};for(let x of f.elements(d))switch(x.localName){case"numId":g.id=f.attr(x,"val");break;case"ilvl":g.level=f.intAttr(x,"val")}return g}e.parseParagraphProperties=function(d,f){let g={};for(let x of f.elements(d))i(x,g,f);return g},e.parseParagraphProperty=i,e.parseTabs=y,e.parseNumbering=h},488:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseRunProperty=e.parseRunProperties=void 0;const r=u(149);function m(p,a,i){return!!(0,r.parseCommonProperty)(p,a,i)}e.parseRunProperties=function(p,a){let i={};for(let y of a.elements(p))m(y,i,a);return i},e.parseRunProperty=m},59:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseSectionProperties=e.SectionType=void 0;const r=u(472),m=u(191);var p;function a(h,d){return{numberOfColumns:d.intAttr(h,"num"),space:d.lengthAttr(h,"space"),separator:d.boolAttr(h,"sep"),equalWidth:d.boolAttr(h,"equalWidth",!0),columns:d.elements(h,"col").map(f=>({width:d.lengthAttr(f,"w"),space:d.lengthAttr(f,"space")}))}}function i(h,d){return{chapSep:d.attr(h,"chapSep"),chapStyle:d.attr(h,"chapStyle"),format:d.attr(h,"fmt"),start:d.intAttr(h,"start")}}function y(h,d){return{id:d.attr(h,"id"),type:d.attr(h,"type")}}(function(h){h.Continuous="continuous",h.NextPage="nextPage",h.NextColumn="nextColumn",h.EvenPage="evenPage",h.OddPage="oddPage"})(p||(e.SectionType=p={})),e.parseSectionProperties=function(h,d=r.default){var f,g,x={};for(let P of d.elements(h))switch(P.localName){case"pgSz":x.pageSize={width:d.lengthAttr(P,"w"),height:d.lengthAttr(P,"h"),orientation:d.attr(P,"orient")};break;case"type":x.type=d.attr(P,"val");break;case"pgMar":x.pageMargins={left:d.lengthAttr(P,"left"),right:d.lengthAttr(P,"right"),top:d.lengthAttr(P,"top"),bottom:d.lengthAttr(P,"bottom"),header:d.lengthAttr(P,"header"),footer:d.lengthAttr(P,"footer"),gutter:d.lengthAttr(P,"gutter")};break;case"cols":x.columns=a(P,d);break;case"headerReference":((f=x.headerRefs)!==null&&f!==void 0?f:x.headerRefs=[]).push(y(P,d));break;case"footerReference":((g=x.footerRefs)!==null&&g!==void 0?g:x.footerRefs=[]).push(y(P,d));break;case"titlePg":x.titlePage=d.boolAttr(P,"val",!0);break;case"pgBorders":x.pageBorders=(0,m.parseBorders)(P,d);break;case"pgNumType":x.pageNumber=i(P,d)}return x}},667:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.renderAsync=e.praseAsync=e.defaultOptions=void 0;const r=u(213),m=u(168),p=u(932);e.defaultOptions={ignoreHeight:!1,ignoreWidth:!1,ignoreFonts:!1,breakPages:!0,debug:!1,experimental:!1,className:"docx",inWrapper:!0,trimXmlDeclaration:!0,ignoreLastRenderedPageBreak:!0,renderHeaders:!0,renderFooters:!0,renderFootnotes:!0,renderEndnotes:!0,useBase64URL:!1,useMathMLPolyfill:!1,renderChanges:!1},e.praseAsync=function(a,i=null){const y=Object.assign(Object.assign({},e.defaultOptions),i);return r.WordDocument.load(a,new m.DocumentParser(y),y)},e.renderAsync=async function(a,i,y=null,h=null){const d=Object.assign(Object.assign({},e.defaultOptions),h),f=new p.HtmlRenderer(window.document),g=await r.WordDocument.load(a,new m.DocumentParser(d),d);return f.render(g,i,y,d),g}},380:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FontTablePart=void 0;const r=u(530),m=u(512);class p extends r.Part{parseXml(i){this.fonts=(0,m.parseFonts)(i,this._package.xmlParser)}}e.FontTablePart=p},512:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseEmbedFontRef=e.parseFont=e.parseFonts=void 0;const u={embedRegular:"regular",embedBold:"bold",embedItalic:"italic",embedBoldItalic:"boldItalic"};function r(p,a){let i={name:a.attr(p,"name"),embedFontRefs:[]};for(let y of a.elements(p))switch(y.localName){case"family":i.family=a.attr(y,"val");break;case"altName":i.altName=a.attr(y,"val");break;case"embedRegular":case"embedBold":case"embedItalic":case"embedBoldItalic":i.embedFontRefs.push(m(y,a))}return i}function m(p,a){return{id:a.attr(p,"id"),key:a.attr(p,"fontKey"),type:u[p.localName]}}e.parseFonts=function(p,a){return a.elements(p).map(i=>r(i,a))},e.parseFont=r,e.parseEmbedFontRef=m},984:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.WmlFooter=e.WmlHeader=void 0;const r=u(120);e.WmlHeader=class{constructor(){this.type=r.DomType.Header,this.children=[],this.cssStyle={}}},e.WmlFooter=class{constructor(){this.type=r.DomType.Footer,this.children=[],this.cssStyle={}}}},985:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.FooterPart=e.HeaderPart=e.BaseHeaderFooterPart=void 0;const r=u(530),m=u(984);class p extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}parseXml(i){this.rootElement=this.createRootElement(),this.rootElement.children=this._documentParser.parseBodyElements(i)}}e.BaseHeaderFooterPart=p,e.HeaderPart=class extends p{createRootElement(){return new m.WmlHeader}},e.FooterPart=class extends p{createRootElement(){return new m.WmlFooter}}},932:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.HtmlRenderer=void 0;const r=u(120),m=u(593),p=u(630),a=u(438),i="http://www.w3.org/1998/Math/MathML";function y(n,o,t){return d(void 0,n,o,t)}function h(n,o,t){return d("http://www.w3.org/2000/svg",n,o,t)}function d(n,o,t,l){var b=n?document.createElementNS(n,o):document.createElement(o);return Object.assign(b,t),l&&g(b,l),b}function f(n){n.innerHTML=""}function g(n,o){o.forEach(t=>n.appendChild((0,m.isString)(t)?document.createTextNode(t):t))}function x(n){return y("style",{innerHTML:n})}function P(n,o){n.appendChild(document.createComment(o))}e.HtmlRenderer=class{constructor(n){this.htmlDocument=n,this.className="docx",this.styleMap={},this.currentPart=null,this.tableVerticalMerges=[],this.currentVerticalMerge=null,this.tableCellPositions=[],this.currentCellPosition=null,this.footnoteMap={},this.endnoteMap={},this.currentEndnoteIds=[],this.usedHederFooterParts=[],this.currentTabs=[],this.tabsTimeout=0,this.createElement=y}render(n,o,t=null,l){var b;this.document=n,this.options=l,this.className=l.className,this.rootSelector=l.inWrapper?`.${this.className}-wrapper`:":root",this.styleMap=null,f(t=t||o),f(o),P(t,"docxjs library predefined styles"),t.appendChild(this.renderDefaultStyle()),!window.MathMLElement&&l.useMathMLPolyfill&&(P(t,"docxjs mathml polyfill styles"),t.appendChild(x(a.default))),n.themePart&&(P(t,"docxjs document theme values"),this.renderTheme(n.themePart,t)),n.stylesPart!=null&&(this.styleMap=this.processStyles(n.stylesPart.styles),P(t,"docxjs document styles"),t.appendChild(this.renderStyles(n.stylesPart.styles))),n.numberingPart&&(this.prodessNumberings(n.numberingPart.domNumberings),P(t,"docxjs document numbering styles"),t.appendChild(this.renderNumbering(n.numberingPart.domNumberings,t))),n.footnotesPart&&(this.footnoteMap=(0,m.keyBy)(n.footnotesPart.notes,E=>E.id)),n.endnotesPart&&(this.endnoteMap=(0,m.keyBy)(n.endnotesPart.notes,E=>E.id)),n.settingsPart&&(this.defaultTabSize=(b=n.settingsPart.settings)===null||b===void 0?void 0:b.defaultTabStop),!l.ignoreFonts&&n.fontTablePart&&this.renderFontTable(n.fontTablePart,t);var k=this.renderSections(n.documentPart.body);this.options.inWrapper?o.appendChild(this.renderWrapper(k)):g(o,k),this.refreshTabStops()}renderTheme(n,o){var t,l;const b={},k=(t=n.theme)===null||t===void 0?void 0:t.fontScheme;k&&(k.majorFont&&(b["--docx-majorHAnsi-font"]=k.majorFont.latinTypeface),k.minorFont&&(b["--docx-minorHAnsi-font"]=k.minorFont.latinTypeface));const E=(l=n.theme)===null||l===void 0?void 0:l.colorScheme;if(E)for(let[C,s]of Object.entries(E.colors))b[`--docx-${C}-color`]=`#${s}`;const _=this.styleToString(`.${this.className}`,b);o.appendChild(x(_))}renderFontTable(n,o){for(let t of n.fonts)for(let l of t.embedFontRefs)this.document.loadFont(l.id,l.key).then(b=>{const k={"font-family":t.name,src:`url(${b})`};l.type!="bold"&&l.type!="boldItalic"||(k["font-weight"]="bold"),l.type!="italic"&&l.type!="boldItalic"||(k["font-style"]="italic"),P(o,`docxjs ${t.name} font`);const E=this.styleToString("@font-face",k);o.appendChild(x(E)),this.refreshTabStops()})}processStyleName(n){return n?`${this.className}_${(0,m.escapeClassName)(n)}`:this.className}processStyles(n){const o=(0,m.keyBy)(n.filter(l=>l.id!=null),l=>l.id);for(const l of n.filter(b=>b.basedOn)){var t=o[l.basedOn];if(t){l.paragraphProps=(0,m.mergeDeep)(l.paragraphProps,t.paragraphProps),l.runProps=(0,m.mergeDeep)(l.runProps,t.runProps);for(const b of t.styles){const k=l.styles.find(E=>E.target==b.target);k?this.copyStyleProperties(b.values,k.values):l.styles.push(Object.assign(Object.assign({},b),{values:Object.assign({},b.values)}))}}else this.options.debug&&console.warn(`Can't find base style ${l.basedOn}`)}for(let l of n)l.cssName=this.processStyleName(l.id);return o}prodessNumberings(n){var o;for(let t of n.filter(l=>l.pStyleName)){const l=this.findStyle(t.pStyleName);!((o=l==null?void 0:l.paragraphProps)===null||o===void 0)&&o.numbering&&(l.paragraphProps.numbering.level=t.level)}}processElement(n){if(n.children)for(var o of n.children)o.parent=n,o.type==r.DomType.Table?this.processTable(o):this.processElement(o)}processTable(n){for(var o of n.children)for(var t of o.children)t.cssStyle=this.copyStyleProperties(n.cellStyle,t.cssStyle,["border-left","border-right","border-top","border-bottom","padding-left","padding-right","padding-top","padding-bottom"]),this.processElement(t)}copyStyleProperties(n,o,t=null){if(!n)return o;for(var l of(o==null&&(o={}),t==null&&(t=Object.getOwnPropertyNames(n)),t))n.hasOwnProperty(l)&&!o.hasOwnProperty(l)&&(o[l]=n[l]);return o}createSection(n,o){var t=this.createElement("section",{className:n});return o&&(o.pageMargins&&(t.style.paddingLeft=o.pageMargins.left,t.style.paddingRight=o.pageMargins.right,t.style.paddingTop=o.pageMargins.top,t.style.paddingBottom=o.pageMargins.bottom),o.pageSize&&(this.options.ignoreWidth||(t.style.width=o.pageSize.width),this.options.ignoreHeight||(t.style.minHeight=o.pageSize.height)),o.columns&&o.columns.numberOfColumns&&(t.style.columnCount=`${o.columns.numberOfColumns}`,t.style.columnGap=o.columns.space,o.columns.separator&&(t.style.columnRule="1px solid black"))),t}renderSections(n){const o=[];this.processElement(n);const t=this.splitBySection(n.children);let l=null;for(let k=0,E=t.length;ks.type=="first"):null)!==null&&k!==void 0?k:t%2==1?n.find(s=>s.type=="even"):null)!==null&&E!==void 0?E:n.find(s=>s.type=="default"),C=_&&this.document.findPartByRelId(_.id,this.document.documentPart);C&&(this.currentPart=C,this.usedHederFooterParts.includes(C.path)||(this.processElement(C.rootElement),this.usedHederFooterParts.push(C.path)),this.renderElements([C.rootElement],b),this.currentPart=null)}}isPageBreakElement(n){return n.type==r.DomType.Break&&(n.break=="lastRenderedPageBreak"?!this.options.ignoreLastRenderedPageBreak:n.break=="page")}splitBySection(n){var o,t={sectProps:null,elements:[]},l=[t];for(let R of n){if(R.type==r.DomType.Paragraph){const V=this.findStyle(R.styleName);!((o=V==null?void 0:V.paragraphProps)===null||o===void 0)&&o.pageBreakBefore&&(t.sectProps=b,t={sectProps:null,elements:[]},l.push(t))}if(t.elements.push(R),R.type==r.DomType.Paragraph){const V=R;var b=V.sectionProps,k=-1,E=-1;if(this.options.breakPages&&V.children&&(k=V.children.findIndex(M=>{var K,W;return(E=(W=(K=M.children)===null||K===void 0?void 0:K.findIndex(this.isPageBreakElement.bind(this)))!==null&&W!==void 0?W:-1)!=-1})),(b||k!=-1)&&(t.sectProps=b,t={sectProps:null,elements:[]},l.push(t)),k!=-1){let M=V.children[k],K=E=0;R--)l[R].sectProps==null?l[R].sectProps=s:s=l[R].sectProps;return l}renderWrapper(n){return this.createElement("div",{className:`${this.className}-wrapper`},n)}renderDefaultStyle(){var n=this.className;return x(` +.${n}-wrapper { background: gray; padding: 30px; padding-bottom: 0px; display: flex; flex-flow: column; align-items: center; } +.${n}-wrapper>section.${n} { background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); margin-bottom: 30px; } +.${n} { color: black; } +section.${n} { box-sizing: border-box; display: flex; flex-flow: column nowrap; position: relative; overflow: hidden; } +section.${n}>article { margin-bottom: auto; } +.${n} table { border-collapse: collapse; } +.${n} table td, .${n} table th { vertical-align: top; } +.${n} p { margin: 0pt; min-height: 1em; } +.${n} span { white-space: pre-wrap; overflow-wrap: break-word; } +.${n} a { color: inherit; text-decoration: inherit; } +`)}renderNumbering(n,o){var t="",l=[];for(var b of n){var k=`p.${this.numberingClass(b.id,b.level)}`,E="none";if(b.bullet){let _=`--${this.className}-${b.bullet.src}`.toLowerCase();t+=this.styleToString(`${k}:before`,{content:"' '",display:"inline-block",background:`var(${_})`},b.bullet.style),this.document.loadNumberingImage(b.bullet.src).then(C=>{var s=`${this.rootSelector} { ${_}: url(${C}) }`;o.appendChild(x(s))})}else if(b.levelText){let _=this.numberingCounter(b.id,b.level);b.level>0?t+=this.styleToString(`p.${this.numberingClass(b.id,b.level-1)}`,{"counter-reset":_}):l.push(_),t+=this.styleToString(`${k}:before`,Object.assign({content:this.levelTextToContent(b.levelText,b.suff,b.id,this.numFormatToCssValue(b.format)),"counter-increment":_},b.rStyle))}else E=this.numFormatToCssValue(b.format);t+=this.styleToString(k,Object.assign({display:"list-item","list-style-position":"inside","list-style-type":E},b.pStyle))}return l.length>0&&(t+=this.styleToString(this.rootSelector,{"counter-reset":l.join(" ")})),x(t)}renderStyles(n){var o,t="";const l=this.styleMap,b=(0,m.keyBy)(n.filter(C=>C.isDefault),C=>C.target);for(const C of n){var k=C.styles;if(C.linked){var E=C.linked&&l[C.linked];E?k=k.concat(E.styles):this.options.debug&&console.warn(`Can't find linked style ${C.linked}`)}for(const s of k){var _=`${(o=C.target)!==null&&o!==void 0?o:""}.${C.cssName}`;C.target!=s.target&&(_+=` ${s.target}`),b[C.target]==C&&(_=`.${this.className} ${C.target}, `+_),t+=this.styleToString(_,s.values)}}return x(t)}renderNotes(n,o,t){var l=n.map(k=>o[k]).filter(k=>k);if(l.length>0){var b=this.createElement("ol",null,this.renderElements(l));t.appendChild(b)}}renderElement(n){switch(n.type){case r.DomType.Paragraph:return this.renderParagraph(n);case r.DomType.BookmarkStart:return this.renderBookmarkStart(n);case r.DomType.BookmarkEnd:return null;case r.DomType.Run:return this.renderRun(n);case r.DomType.Table:return this.renderTable(n);case r.DomType.Row:return this.renderTableRow(n);case r.DomType.Cell:return this.renderTableCell(n);case r.DomType.Hyperlink:return this.renderHyperlink(n);case r.DomType.Drawing:return this.renderDrawing(n);case r.DomType.Image:return this.renderImage(n);case r.DomType.Text:case r.DomType.Text:return this.renderText(n);case r.DomType.DeletedText:return this.renderDeletedText(n);case r.DomType.Tab:return this.renderTab(n);case r.DomType.Symbol:return this.renderSymbol(n);case r.DomType.Break:return this.renderBreak(n);case r.DomType.Footer:return this.renderContainer(n,"footer");case r.DomType.Header:return this.renderContainer(n,"header");case r.DomType.Footnote:case r.DomType.Endnote:return this.renderContainer(n,"li");case r.DomType.FootnoteReference:return this.renderFootnoteReference(n);case r.DomType.EndnoteReference:return this.renderEndnoteReference(n);case r.DomType.NoBreakHyphen:return this.createElement("wbr");case r.DomType.VmlPicture:return this.renderVmlPicture(n);case r.DomType.VmlElement:return this.renderVmlElement(n);case r.DomType.MmlMath:return this.renderContainerNS(n,i,"math",{xmlns:i});case r.DomType.MmlMathParagraph:return this.renderContainer(n,"span");case r.DomType.MmlFraction:return this.renderContainerNS(n,i,"mfrac");case r.DomType.MmlNumerator:case r.DomType.MmlDenominator:return this.renderContainerNS(n,i,"mrow");case r.DomType.MmlRadical:return this.renderMmlRadical(n);case r.DomType.MmlDegree:return this.renderContainerNS(n,i,"mn");case r.DomType.MmlSuperscript:return this.renderContainerNS(n,i,"msup");case r.DomType.MmlSubscript:return this.renderContainerNS(n,i,"msub");case r.DomType.MmlBase:return this.renderContainerNS(n,i,"mrow");case r.DomType.MmlSuperArgument:case r.DomType.MmlSubArgument:return this.renderContainerNS(n,i,"mn");case r.DomType.MmlDelimiter:return this.renderMmlDelimiter(n);case r.DomType.MmlRun:return this.renderMmlRun(n);case r.DomType.MmlNary:return this.renderMmlNary(n);case r.DomType.Inserted:return this.renderInserted(n);case r.DomType.Deleted:return this.renderDeleted(n)}return null}renderChildren(n,o){return this.renderElements(n.children,o)}renderElements(n,o){if(n==null)return null;var t=n.flatMap(l=>this.renderElement(l)).filter(l=>l!=null);return o&&g(o,t),t}renderContainer(n,o,t){return this.createElement(o,t,this.renderChildren(n))}renderContainerNS(n,o,t,l){return d(o,t,l,this.renderChildren(n))}renderParagraph(n){var o,t,l,b,k=this.createElement("p");const E=this.findStyle(n.styleName);(o=n.tabs)!==null&&o!==void 0||(n.tabs=(t=E==null?void 0:E.paragraphProps)===null||t===void 0?void 0:t.tabs),this.renderClass(n,k),this.renderChildren(n,k),this.renderStyleValues(n.cssStyle,k),this.renderCommonProperties(k.style,n);const _=(l=n.numbering)!==null&&l!==void 0?l:(b=E==null?void 0:E.paragraphProps)===null||b===void 0?void 0:b.numbering;return _&&k.classList.add(this.numberingClass(_.id,_.level)),k}renderRunProperties(n,o){this.renderCommonProperties(n,o)}renderCommonProperties(n,o){o!=null&&(o.color&&(n.color=o.color),o.fontSize&&(n["font-size"]=o.fontSize))}renderHyperlink(n){var o=this.createElement("a");if(this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),n.href)o.href=n.href;else if(n.id){const t=this.document.documentPart.rels.find(l=>l.id==n.id&&l.targetMode==="External");o.href=t==null?void 0:t.target}return o}renderDrawing(n){var o=this.createElement("div");return o.style.display="inline-block",o.style.position="relative",o.style.textIndent="0px",this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),o}renderImage(n){let o=this.createElement("img");return this.renderStyleValues(n.cssStyle,o),this.document&&this.document.loadDocumentImage(n.src,this.currentPart).then(t=>{o.src=t}),o}renderText(n){return this.htmlDocument.createTextNode(n.text)}renderDeletedText(n){return this.options.renderEndnotes?this.htmlDocument.createTextNode(n.text):null}renderBreak(n){return n.break=="textWrapping"?this.createElement("br"):null}renderInserted(n){return this.options.renderChanges?this.renderContainer(n,"ins"):this.renderChildren(n)}renderDeleted(n){return this.options.renderChanges?this.renderContainer(n,"del"):null}renderSymbol(n){var o=this.createElement("span");return o.style.fontFamily=n.font,o.innerHTML=`&#x${n.char};`,o}renderFootnoteReference(n){var o=this.createElement("sup");return this.currentFootnoteIds.push(n.id),o.textContent=`${this.currentFootnoteIds.length}`,o}renderEndnoteReference(n){var o=this.createElement("sup");return this.currentEndnoteIds.push(n.id),o.textContent=`${this.currentEndnoteIds.length}`,o}renderTab(n){var o,t=this.createElement("span");if(t.innerHTML=" ",this.options.experimental){t.className=this.tabStopClass();var l=(o=function(b,k){for(var E=b.parent;E!=null&&E.type!=k;)E=E.parent;return E}(n,r.DomType.Paragraph))===null||o===void 0?void 0:o.tabs;this.currentTabs.push({stops:l,span:t})}return t}renderBookmarkStart(n){var o=this.createElement("span");return o.id=n.name,o}renderRun(n){if(n.fieldRun)return null;const o=this.createElement("span");if(n.id&&(o.id=n.id),this.renderClass(n,o),this.renderStyleValues(n.cssStyle,o),n.verticalAlign){const t=this.createElement(n.verticalAlign);this.renderChildren(n,t),o.appendChild(t)}else this.renderChildren(n,o);return o}renderTable(n){let o=this.createElement("table");return this.tableCellPositions.push(this.currentCellPosition),this.tableVerticalMerges.push(this.currentVerticalMerge),this.currentVerticalMerge={},this.currentCellPosition={col:0,row:0},n.columns&&o.appendChild(this.renderTableColumns(n.columns)),this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),this.currentVerticalMerge=this.tableVerticalMerges.pop(),this.currentCellPosition=this.tableCellPositions.pop(),o}renderTableColumns(n){let o=this.createElement("colgroup");for(let t of n){let l=this.createElement("col");t.width&&(l.style.width=t.width),o.appendChild(l)}return o}renderTableRow(n){let o=this.createElement("tr");return this.currentCellPosition.col=0,this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),this.currentCellPosition.row++,o}renderTableCell(n){let o=this.createElement("td");const t=this.currentCellPosition.col;return n.verticalMerge?n.verticalMerge=="restart"?(this.currentVerticalMerge[t]=o,o.rowSpan=1):this.currentVerticalMerge[t]&&(this.currentVerticalMerge[t].rowSpan+=1,o.style.display="none"):this.currentVerticalMerge[t]=null,this.renderClass(n,o),this.renderChildren(n,o),this.renderStyleValues(n.cssStyle,o),n.span&&(o.colSpan=n.span),this.currentCellPosition.col+=o.colSpan,o}renderVmlPicture(n){var o=y("div");return this.renderChildren(n,o),o}renderVmlElement(n){var o,t,l=h("svg");l.setAttribute("style",n.cssStyleText);const b=h(n.tagName);return Object.entries(n.attrs).forEach(([k,E])=>b.setAttribute(k,E)),!((o=n.imageHref)===null||o===void 0)&&o.id&&((t=this.document)===null||t===void 0||t.loadDocumentImage(n.imageHref.id,this.currentPart).then(k=>b.setAttribute("href",k))),l.appendChild(b),requestAnimationFrame(()=>{const k=l.firstElementChild.getBBox();l.setAttribute("width",`${Math.ceil(k.x+k.width)}`),l.setAttribute("height",`${Math.ceil(k.y+k.height)}`)}),l}renderMmlRadical(n){var o;const t=n.children.find(b=>b.type==r.DomType.MmlBase);if(!((o=n.props)===null||o===void 0)&&o.hideDegree)return d(i,"msqrt",null,this.renderElements([t]));const l=n.children.find(b=>b.type==r.DomType.MmlDegree);return d(i,"mroot",null,this.renderElements([t,l]))}renderMmlDelimiter(n){var o,t;const l=[];return l.push(d(i,"mo",null,[(o=n.props.beginChar)!==null&&o!==void 0?o:"("])),l.push(...this.renderElements(n.children)),l.push(d(i,"mo",null,[(t=n.props.endChar)!==null&&t!==void 0?t:")"])),d(i,"mrow",null,l)}renderMmlNary(n){var o;const t=[],l=(0,m.keyBy)(n.children,C=>C.type),b=l[r.DomType.MmlSuperArgument],k=l[r.DomType.MmlSubArgument],E=b?d(i,"mo",null,(0,m.asArray)(this.renderElement(b))):null,_=k?d(i,"mo",null,(0,m.asArray)(this.renderElement(k))):null;if(!((o=n.props)===null||o===void 0)&&o.char){const C=d(i,"mo",null,[n.props.char]);E||_?t.push(d(i,"munderover",null,[C,_,E])):E?t.push(d(i,"mover",null,[C,E])):_?t.push(d(i,"munder",null,[C,_])):t.push(C)}return t.push(...this.renderElements(l[r.DomType.MmlBase].children)),d(i,"mrow",null,t)}renderMmlRun(n){const o=d(i,"ms");return this.renderClass(n,o),this.renderStyleValues(n.cssStyle,o),this.renderChildren(n,o),o}renderStyleValues(n,o){Object.assign(o.style,n)}renderClass(n,o){n.className&&(o.className=n.className),n.styleName&&o.classList.add(this.processStyleName(n.styleName))}findStyle(n){var o;return n&&((o=this.styleMap)===null||o===void 0?void 0:o[n])}numberingClass(n,o){return`${this.className}-num-${n}-${o}`}tabStopClass(){return`${this.className}-tab-stop`}styleToString(n,o,t=null){let l=`${n} {\r +`;for(const b in o)l+=` ${b}: ${o[b]};\r +`;return t&&(l+=t),l+`}\r +`}numberingCounter(n,o){return`${this.className}-num-${n}-${o}`}levelTextToContent(n,o,t,l){var b;return`"${n.replace(/%\d*/g,k=>{let E=parseInt(k.substring(1),10)-1;return`"counter(${this.numberingCounter(t,E)}, ${l})"`})}${(b={tab:"\\9",space:"\\a0"}[o])!==null&&b!==void 0?b:""}"`}numFormatToCssValue(n){var o;return(o={none:"none",bullet:"disc",decimal:"decimal",lowerLetter:"lower-alpha",upperLetter:"upper-alpha",lowerRoman:"lower-roman",upperRoman:"upper-roman",decimalZero:"decimal-leading-zero",aiueo:"katakana",aiueoFullWidth:"katakana",chineseCounting:"simp-chinese-informal",chineseCountingThousand:"simp-chinese-informal",chineseLegalSimplified:"simp-chinese-formal",chosung:"hangul-consonant",ideographDigital:"cjk-ideographic",ideographTraditional:"cjk-heavenly-stem",ideographLegalTraditional:"trad-chinese-formal",ideographZodiac:"cjk-earthly-branch",iroha:"katakana-iroha",irohaFullWidth:"katakana-iroha",japaneseCounting:"japanese-informal",japaneseDigitalTenThousand:"cjk-decimal",japaneseLegal:"japanese-formal",thaiNumbers:"thai",koreanCounting:"korean-hangul-formal",koreanDigital:"korean-hangul-formal",koreanDigital2:"korean-hanja-informal",hebrew1:"hebrew",hebrew2:"hebrew",hindiNumbers:"devanagari",ganada:"hangul",taiwaneseCounting:"cjk-ideographic",taiwaneseCountingThousand:"cjk-ideographic",taiwaneseDigital:"cjk-decimal"}[n])!==null&&o!==void 0?o:n}refreshTabStops(){this.options.experimental&&(clearTimeout(this.tabsTimeout),this.tabsTimeout=setTimeout(()=>{const n=(0,p.computePixelToPoint)();for(let o of this.currentTabs)(0,p.updateTabStop)(o.span,o.stops,this.defaultTabSize,n)},500))}}},630:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.updateTabStop=e.computePixelToPoint=void 0;const u={pos:0,leader:"none",style:"left"};function r(m){return parseFloat(m)}e.computePixelToPoint=function(m=document.body){const p=document.createElement("div");p.style.width="100pt",m.appendChild(p);const a=100/p.offsetWidth;return m.removeChild(p),a},e.updateTabStop=function(m,p,a,i=.75){const y=m.closest("p"),h=m.getBoundingClientRect(),d=y.getBoundingClientRect(),f=getComputedStyle(y),g=(p==null?void 0:p.length)>0?p.map(_=>({pos:r(_.position),leader:_.leader,style:_.style})).sort((_,C)=>_.pos-C.pos):[u],x=g[g.length-1],P=d.width*i,n=r(a);let o=x.pos+n;if(o_.style!="clear"&&_.pos>b);if(k==null)return;let E=1;if(k.style=="right"||k.style=="center"){const _=Array.from(y.querySelectorAll(`.${m.className}`)),C=_.indexOf(m)+1,s=document.createRange();s.setStart(m,1),C<_.length?s.setEndBefore(_[C]):s.setEndAfter(y);const R=k.style=="center"?.5:1,V=s.getBoundingClientRect(),M=V.left+R*V.width-(d.left-t);E=k.pos-M*i}else E=k.pos-b;switch(m.innerHTML=" ",m.style.textDecoration="inherit",m.style.wordSpacing=`${E.toFixed(0)}pt`,k.leader){case"dot":case"middleDot":m.style.textDecoration="underline",m.style.textDecorationStyle="dotted";break;case"hyphen":case"heavy":case"underscore":m.style.textDecoration="underline"}}},881:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.WmlEndnote=e.WmlFootnote=e.WmlBaseNote=void 0;const r=u(120);class m{constructor(){this.children=[],this.cssStyle={}}}e.WmlBaseNote=m,e.WmlFootnote=class extends m{constructor(){super(...arguments),this.type=r.DomType.Footnote}},e.WmlEndnote=class extends m{constructor(){super(...arguments),this.type=r.DomType.Endnote}}},735:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.EndnotesPart=e.FootnotesPart=e.BaseNotePart=void 0;const r=u(530),m=u(881);class p extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}}e.BaseNotePart=p,e.FootnotesPart=class extends p{constructor(a,i,y){super(a,i,y)}parseXml(a){this.notes=this._documentParser.parseNotes(a,"footnote",m.WmlFootnote)}},e.EndnotesPart=class extends p{constructor(a,i,y){super(a,i,y)}parseXml(a){this.notes=this._documentParser.parseNotes(a,"endnote",m.WmlEndnote)}}},527:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.NumberingPart=void 0;const r=u(530),m=u(682);class p extends r.Part{constructor(i,y,h){super(i,y),this._documentParser=h}parseXml(i){Object.assign(this,(0,m.parseNumberingPart)(i,this._package.xmlParser)),this.domNumberings=this._documentParser.parseNumberingFile(i)}}e.NumberingPart=p},682:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseNumberingBulletPicture=e.parseNumberingLevelOverrride=e.parseNumberingLevel=e.parseAbstractNumbering=e.parseNumbering=e.parseNumberingPart=void 0;const r=u(109),m=u(488);function p(d,f){let g={id:f.attr(d,"numId"),overrides:[]};for(let x of f.elements(d))switch(x.localName){case"abstractNumId":g.abstractId=f.attr(x,"val");break;case"lvlOverride":g.overrides.push(y(x,f))}return g}function a(d,f){let g={id:f.attr(d,"abstractNumId"),levels:[]};for(let x of f.elements(d))switch(x.localName){case"name":g.name=f.attr(x,"val");break;case"multiLevelType":g.multiLevelType=f.attr(x,"val");break;case"numStyleLink":g.numberingStyleLink=f.attr(x,"val");break;case"styleLink":g.styleLink=f.attr(x,"val");break;case"lvl":g.levels.push(i(x,f))}return g}function i(d,f){let g={level:f.intAttr(d,"ilvl")};for(let x of f.elements(d))switch(x.localName){case"start":g.start=f.attr(x,"val");break;case"lvlRestart":g.restart=f.intAttr(x,"val");break;case"numFmt":g.format=f.attr(x,"val");break;case"lvlText":g.text=f.attr(x,"val");break;case"lvlJc":g.justification=f.attr(x,"val");break;case"lvlPicBulletId":g.bulletPictureId=f.attr(x,"val");break;case"pStyle":g.paragraphStyle=f.attr(x,"val");break;case"pPr":g.paragraphProps=(0,r.parseParagraphProperties)(x,f);break;case"rPr":g.runProps=(0,m.parseRunProperties)(x,f)}return g}function y(d,f){let g={level:f.intAttr(d,"ilvl")};for(let x of f.elements(d))switch(x.localName){case"startOverride":g.start=f.intAttr(x,"val");break;case"lvl":g.numberingLevel=i(x,f)}return g}function h(d,f){var g=f.element(d,"pict"),x=g&&f.element(g,"shape"),P=x&&f.element(x,"imagedata");return P?{id:f.attr(d,"numPicBulletId"),referenceId:f.attr(P,"id"),style:f.attr(x,"style")}:null}e.parseNumberingPart=function(d,f){let g={numberings:[],abstractNumberings:[],bulletPictures:[]};for(let x of f.elements(d))switch(x.localName){case"num":g.numberings.push(p(x,f));break;case"abstractNum":g.abstractNumberings.push(a(x,f));break;case"numPicBullet":g.bulletPictures.push(h(x,f))}return g},e.parseNumbering=p,e.parseAbstractNumbering=a,e.parseNumberingLevel=i,e.parseNumberingLevelOverrride=y,e.parseNumberingBulletPicture=h},472:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.XmlParser=e.serializeXmlString=e.parseXmlString=void 0;const r=u(149);e.parseXmlString=function(a,i=!1){var y;i&&(a=a.replace(/<[?].*[?]>/,"")),a=(y=a).charCodeAt(0)===65279?y.substring(1):y;const h=new DOMParser().parseFromString(a,"application/xml"),d=(f=h.getElementsByTagName("parsererror")[0])===null||f===void 0?void 0:f.textContent;var f;if(d)throw new Error(d);return h},e.serializeXmlString=function(a){return new XMLSerializer().serializeToString(a)};class m{elements(i,y=null){const h=[];for(let d=0,f=i.childNodes.length;d{Object.defineProperty(e,"__esModule",{value:!0}),e.SettingsPart=void 0;const r=u(530),m=u(846);class p extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.settings=(0,m.parseSettings)(i,this._package.xmlParser)}}e.SettingsPart=p},846:(v,e)=>{function u(r,m){var p={defaultNoteIds:[]};for(let a of m.elements(r))switch(a.localName){case"numFmt":p.nummeringFormat=m.attr(a,"val");break;case"footnote":case"endnote":p.defaultNoteIds.push(m.attr(a,"id"))}return p}Object.defineProperty(e,"__esModule",{value:!0}),e.parseNoteProperties=e.parseSettings=void 0,e.parseSettings=function(r,m){var p={};for(let a of m.elements(r))switch(a.localName){case"defaultTabStop":p.defaultTabStop=m.lengthAttr(a,"val");break;case"footnotePr":p.footnoteProps=u(a,m);break;case"endnotePr":p.endnoteProps=u(a,m);break;case"autoHyphenation":p.autoHyphenation=m.boolAttr(a,"val")}return p},e.parseNoteProperties=u},240:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.StylesPart=void 0;const r=u(530);class m extends r.Part{constructor(a,i,y){super(a,i),this._documentParser=y}parseXml(a){this.styles=this._documentParser.parseStylesFile(a)}}e.StylesPart=m},893:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ThemePart=void 0;const r=u(530),m=u(55);class p extends r.Part{constructor(i,y){super(i,y)}parseXml(i){this.theme=(0,m.parseTheme)(i,this._package.xmlParser)}}e.ThemePart=p},55:(v,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseFontInfo=e.parseFontScheme=e.parseColorScheme=e.parseTheme=e.DmlTheme=void 0;class u{}function r(a,i){var y={name:i.attr(a,"name"),colors:{}};for(let f of i.elements(a)){var h=i.element(f,"srgbClr"),d=i.element(f,"sysClr");h?y.colors[f.localName]=i.attr(h,"val"):d&&(y.colors[f.localName]=i.attr(d,"lastClr"))}return y}function m(a,i){var y={name:i.attr(a,"name")};for(let h of i.elements(a))switch(h.localName){case"majorFont":y.majorFont=p(h,i);break;case"minorFont":y.minorFont=p(h,i)}return y}function p(a,i){return{latinTypeface:i.elementAttr(a,"latin","typeface"),eaTypeface:i.elementAttr(a,"ea","typeface"),csTypeface:i.elementAttr(a,"cs","typeface")}}e.DmlTheme=u,e.parseTheme=function(a,i){var y=new u,h=i.element(a,"themeElements");for(let d of i.elements(h))switch(d.localName){case"clrScheme":y.colorScheme=r(d,i);break;case"fontScheme":y.fontScheme=m(d,i)}return y},e.parseColorScheme=r,e.parseFontScheme=m,e.parseFontInfo=p},593:(v,e)=>{function u(r){return r&&typeof r=="object"&&!Array.isArray(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.asArray=e.formatCssRules=e.parseCssRules=e.mergeDeep=e.isString=e.isObject=e.blobToBase64=e.keyBy=e.resolvePath=e.splitPath=e.escapeClassName=void 0,e.escapeClassName=function(r){return r==null?void 0:r.replace(/[ .]+/g,"-").replace(/[&]+/g,"and").toLowerCase()},e.splitPath=function(r){let m=r.lastIndexOf("/")+1;return[m==0?"":r.substring(0,m),m==0?r:r.substring(m)]},e.resolvePath=function(r,m){try{const p="http://docx/";return new URL(r,p+m).toString().substring(p.length)}catch{return`${m}${r}`}},e.keyBy=function(r,m){return r.reduce((p,a)=>(p[m(a)]=a,p),{})},e.blobToBase64=function(r){return new Promise((m,p)=>{const a=new FileReader;a.onloadend=()=>m(a.result),a.onerror=()=>p(),a.readAsDataURL(r)})},e.isObject=u,e.isString=function(r){return r&&typeof r=="string"||r instanceof String},e.mergeDeep=function r(m,...p){var a;if(!p.length)return m;const i=p.shift();if(u(m)&&u(i))for(const y in i)u(i[y])?r((a=m[y])!==null&&a!==void 0?a:m[y]={},i[y]):m[y]=i[y];return r(m,...p)},e.parseCssRules=function(r){const m={};for(const p of r.split(";")){const[a,i]=p.split(":");m[a]=i}return m},e.formatCssRules=function(r){return Object.entries(r).map((m,p)=>`${m}: ${p}`).join(";")},e.asArray=function(r){return Array.isArray(r)?r:[r]}},320:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parseVmlElement=e.VmlElement=void 0;const r=u(149),m=u(120),p=u(472);class a{constructor(){this.type=m.DomType.VmlElement,this.attrs={},this.chidren=[]}}function i(h){var d;return{stroke:p.default.attr(h,"color"),"stroke-width":(d=p.default.lengthAttr(h,"weight",r.LengthUsage.Emu))!==null&&d!==void 0?d:"1px"}}function y(h){return h.split(",")}e.VmlElement=a,e.parseVmlElement=function h(d){var f=new a;switch(d.localName){case"rect":f.tagName="rect",Object.assign(f.attrs,{width:"100%",height:"100%"});break;case"oval":f.tagName="ellipse",Object.assign(f.attrs,{cx:"50%",cy:"50%",rx:"50%",ry:"50%"});break;case"line":f.tagName="line";break;case"shape":f.tagName="g";break;default:return null}for(const g of p.default.attrs(d))switch(g.localName){case"style":f.cssStyleText=g.value;break;case"fillcolor":f.attrs.fill=g.value;break;case"from":const[x,P]=y(g.value);Object.assign(f.attrs,{x1:x,y1:P});break;case"to":const[n,o]=y(g.value);Object.assign(f.attrs,{x2:n,y2:o})}for(const g of p.default.elements(d))switch(g.localName){case"stroke":Object.assign(f.attrs,i(g));break;case"fill":Object.assign(f.attrs,{});break;case"imagedata":f.tagName="image",Object.assign(f.attrs,{width:"100%",height:"100%"}),f.imageHref={id:p.default.attr(g,"id"),title:p.default.attr(g,"title")};break;default:const x=h(g);x&&f.chidren.push(x)}return f}},213:(v,e,u)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.deobfuscate=e.WordDocument=void 0;const r=u(461),m=u(380),p=u(522),a=u(448),i=u(593),y=u(527),h=u(240),d=u(985),f=u(665),g=u(162),x=u(893),P=u(735),n=u(287),o=u(177),t=[{type:r.RelationshipTypes.OfficeDocument,target:"word/document.xml"},{type:r.RelationshipTypes.ExtendedProperties,target:"docProps/app.xml"},{type:r.RelationshipTypes.CoreProperties,target:"docProps/core.xml"},{type:r.RelationshipTypes.CustomProperties,target:"docProps/custom.xml"}];class l{constructor(){this.parts=[],this.partsMap={}}static async load(E,_,C){var s=new l;return s._options=C,s._parser=_,s._package=await p.OpenXmlPackage.load(E,C),s.rels=await s._package.loadRelationships(),await Promise.all(t.map(R=>{var V;const M=(V=s.rels.find(K=>K.type===R.type))!==null&&V!==void 0?V:R;return s.loadRelationshipPart(M.target,M.type)})),s}save(E="blob"){return this._package.save(E)}async loadRelationshipPart(E,_){var C;if(this.partsMap[E])return this.partsMap[E];if(!this._package.get(E))return null;let s=null;switch(_){case r.RelationshipTypes.OfficeDocument:this.documentPart=s=new a.DocumentPart(this._package,E,this._parser);break;case r.RelationshipTypes.FontTable:this.fontTablePart=s=new m.FontTablePart(this._package,E);break;case r.RelationshipTypes.Numbering:this.numberingPart=s=new y.NumberingPart(this._package,E,this._parser);break;case r.RelationshipTypes.Styles:this.stylesPart=s=new h.StylesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Theme:this.themePart=s=new x.ThemePart(this._package,E);break;case r.RelationshipTypes.Footnotes:this.footnotesPart=s=new P.FootnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Endnotes:this.endnotesPart=s=new P.EndnotesPart(this._package,E,this._parser);break;case r.RelationshipTypes.Footer:s=new d.FooterPart(this._package,E,this._parser);break;case r.RelationshipTypes.Header:s=new d.HeaderPart(this._package,E,this._parser);break;case r.RelationshipTypes.CoreProperties:this.corePropsPart=s=new g.CorePropsPart(this._package,E);break;case r.RelationshipTypes.ExtendedProperties:this.extendedPropsPart=s=new f.ExtendedPropsPart(this._package,E);break;case r.RelationshipTypes.CustomProperties:s=new o.CustomPropsPart(this._package,E);break;case r.RelationshipTypes.Settings:this.settingsPart=s=new n.SettingsPart(this._package,E)}if(s==null)return Promise.resolve(null);if(this.partsMap[E]=s,this.parts.push(s),await s.load(),((C=s.rels)===null||C===void 0?void 0:C.length)>0){const[R]=(0,i.splitPath)(s.path);await Promise.all(s.rels.map(V=>this.loadRelationshipPart((0,i.resolvePath)(V.target,R),V.type)))}return s}async loadDocumentImage(E,_){const C=await this.loadResource(_??this.documentPart,E,"blob");return this.blobToURL(C)}async loadNumberingImage(E){const _=await this.loadResource(this.numberingPart,E,"blob");return this.blobToURL(_)}async loadFont(E,_){const C=await this.loadResource(this.fontTablePart,E,"uint8array");return C&&this.blobToURL(new Blob([b(C,_)]))}blobToURL(E){return E?this._options.useBase64URL?(0,i.blobToBase64)(E):URL.createObjectURL(E):null}findPartByRelId(E,_=null){var C,s=((C=_.rels)!==null&&C!==void 0?C:this.rels).find(V=>V.id==E);const R=_?(0,i.splitPath)(_.path)[0]:"";return s?this.partsMap[(0,i.resolvePath)(s.target,R)]:null}getPathById(E,_){const C=E.rels.find(R=>R.id==_),[s]=(0,i.splitPath)(E.path);return C?(0,i.resolvePath)(C.target,s):null}loadResource(E,_,C){const s=this.getPathById(E,_);return s?this._package.load(s,C):Promise.resolve(null)}}function b(k,E){const _=E.replace(/{|}|-/g,""),C=new Array(16);for(let s=0;s<16;s++)C[16-s-1]=parseInt(_.substr(2*s,2),16);for(let s=0;s<32;s++)k[s]=k[s]^C[s%16];return k}e.WordDocument=l,e.deobfuscate=b},583:v=>{v.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 100%27 preserveAspectRatio=%27none%27%3E%3Cpath d=%27m0,75 l5,0 l5,25 l10,-100%27 stroke=%27black%27 fill=%27none%27 vector-effect=%27non-scaling-stroke%27/%3E%3C/svg%3E"},626:v=>{v.exports=T}},N={};function A(v){var e=N[v];if(e!==void 0)return e.exports;var u=N[v]={id:v,exports:{}};return j[v](u,u.exports,A),u.exports}return A.m=j,A.n=v=>{var e=v&&v.__esModule?()=>v.default:()=>v;return A.d(e,{a:e}),e},A.d=(v,e)=>{for(var u in e)A.o(e,u)&&!A.o(v,u)&&Object.defineProperty(v,u,{enumerable:!0,get:e[u]})},A.o=(v,e)=>Object.prototype.hasOwnProperty.call(v,e),A.r=v=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(v,"__esModule",{value:!0})},A.b=document.baseURI||self.location.href,A(667)})())})(Ne);const Re={ignoreLastRenderedPageBreak:!1};function ze(re,ce={}){return typeof re=="string"?Ie(re,ce):Promise.resolve(re)}function Ie(re,ce){return fetch(re,ce).then(T=>T.status!==200?Promise.reject(T):T)}async function Fe(re){let ce;return re instanceof Blob?ce=re:re instanceof Response?ce=await re.blob():re instanceof ArrayBuffer&&(ce=new Blob([re])),ce}function Me(re,ce,T={}){if(!re)return ce.innerHTML="",Promise.resolve();let j;return re instanceof Blob?j=re:re instanceof Response?j=re.blob():re instanceof ArrayBuffer&&(j=new Blob([re])),Ae.renderAsync(j,ce,ce,{...Re,...T})}const Ue={getData:ze,render:Me,getBlob:Fe};export{Ue as d}; diff --git a/examples/dist/assets/hack-b5948294.js b/examples/dist/assets/hack-b5948294.js new file mode 100644 index 0000000..5f19885 --- /dev/null +++ b/examples/dist/assets/hack-b5948294.js @@ -0,0 +1,99 @@ +import{y as Vt,z as Bi}from"./index-b78d7be5.js";import{c as Do}from"./_commonjs-dynamic-modules-302442b1.js";import{g as Zv}from"./url-de9b02cf.js";class Xi{constructor(k,e=""){typeof k=="string"?(this.el=document.createElement(k),this.el.className=e):this.el=k,this.data={}}data(k,e){return e!==void 0?(this.data[k]=e,this):this.data[k]}on(k,e){const[S,..._]=k.split(".");let u=S;return u==="mousewheel"&&/Firefox/i.test(window.navigator.userAgent)&&(u="DOMMouseScroll"),this.el.addEventListener(u,m=>{e(m);for(let g=0;g<_.length;g+=1){const b=_[g];if(b==="left"&&m.button!==0||b==="right"&&m.button!==2)return;b==="stop"&&m.stopPropagation()}}),this}offset(k){if(k!==void 0)return Object.keys(k).forEach(m=>{this.css(m,`${k[m]}px`)}),this;const{offsetTop:e,offsetLeft:S,offsetHeight:_,offsetWidth:u}=this.el;return{top:e,left:S,height:_,width:u}}scroll(k){const{el:e}=this;return k!==void 0&&(k.left!==void 0&&(e.scrollLeft=k.left),k.top!==void 0&&(e.scrollTop=k.top)),{left:e.scrollLeft,top:e.scrollTop}}box(){return this.el.getBoundingClientRect()}parent(){return new Xi(this.el.parentNode)}children(...k){return arguments.length===0?this.el.childNodes:(k.forEach(e=>this.child(e)),this)}removeChild(k){this.el.removeChild(k)}child(k){let e=k;return typeof k=="string"?e=document.createTextNode(k):k instanceof Xi&&(e=k.el),this.el.appendChild(e),this}contains(k){return this.el.contains(k)}className(k){return k!==void 0?(this.el.className=k,this):this.el.className}addClass(k){return this.el.classList.add(k),this}hasClass(k){return this.el.classList.contains(k)}removeClass(k){return this.el.classList.remove(k),this}toggle(k="active"){return this.toggleClass(k)}toggleClass(k){return this.el.classList.toggle(k)}active(k=!0,e="active"){return k?this.addClass(e):this.removeClass(e),this}checked(k=!0){return this.active(k,"checked"),this}disabled(k=!0){return k?this.addClass("disabled"):this.removeClass("disabled"),this}attr(k,e){if(e!==void 0)this.el.setAttribute(k,e);else{if(typeof k=="string")return this.el.getAttribute(k);Object.keys(k).forEach(S=>{this.el.setAttribute(S,k[S])})}return this}removeAttr(k){return this.el.removeAttribute(k),this}html(k){return k!==void 0?(this.el.innerHTML=k,this):this.el.innerHTML}val(k){return k!==void 0?(this.el.value=k,this):this.el.value}focus(){this.el.focus()}cssRemoveKeys(...k){return k.forEach(e=>this.el.style.removeProperty(e)),this}css(k,e){return e===void 0&&typeof k!="string"?(Object.keys(k).forEach(S=>{this.el.style[S]=k[S]}),this):e!==void 0?(this.el.style[k]=e,this):this.el.style[k]}computedStyle(){return window.getComputedStyle(this.el,null)}show(){return this.css("display","block"),this}hide(){return this.css("display","none"),this}}const We=(X,k="")=>new Xi(X,k),Ei=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];function rc(X){let k="",e=X;for(;e>=Ei.length;)e/=Ei.length,e-=1,k+=Ei[parseInt(e,10)%Ei.length];const S=X%Ei.length;return k+=Ei[S],k}function Yv(X){let k=0;for(let e=0;e="0"&&X.charAt(S)<="9"?e+=X.charAt(S):k+=X.charAt(S);return[Yv(k),parseInt(e,10)-1]}function hi(X,k){return`${rc(X)}${k+1}`}function Xa(X,k,e,S=()=>!0){if(k===0&&e===0)return X;const[_,u]=Ti(X);return S(_,u)?hi(_+k,u+e):X}class kr{constructor(k,e,S,_,u=0,m=0){this.sri=k,this.sci=e,this.eri=S,this.eci=_,this.w=u,this.h=m}set(k,e,S,_){this.sri=k,this.sci=e,this.eri=S,this.eci=_}multiple(){return this.eri-this.sri>0||this.eci-this.sci>0}includes(...k){let[e,S]=[0,0];k.length===1?[S,e]=Ti(k[0]):k.length===2&&([e,S]=k);const{sri:_,sci:u,eri:m,eci:g}=this;return _<=e&&e<=m&&u<=S&&S<=g}each(k,e=()=>!0){const{sri:S,sci:_,eri:u,eci:m}=this;for(let g=S;g<=u;g+=1)if(e(g))for(let b=_;b<=m;b+=1)k(g,b)}contains(k){return this.sri<=k.sri&&this.sci<=k.sci&&this.eri>=k.eri&&this.eci>=k.eci}within(k){return this.sri>=k.sri&&this.sci>=k.sci&&this.eri<=k.eri&&this.eci<=k.eci}disjoint(k){return this.sri>k.eri||this.sci>k.eci||k.sri>this.eri||k.sci>this.eci}intersects(k){return this.sri<=k.eri&&this.sci<=k.eci&&k.sri<=this.eri&&k.sci<=this.eci}union(k){const{sri:e,sci:S,eri:_,eci:u}=this;return new kr(k.sri_?k.eri:_,k.eci>u?k.eci:u)}difference(k){const e=[],S=(h,l,d,s)=>{e.push(new kr(h,l,d,s))},{sri:_,sci:u,eri:m,eci:g}=this,b=k.sri-_,w=k.sci-u,f=m-k.eri,y=g-k.eci;return b>0?(S(_,u,k.sri-1,g),f>0?(S(k.eri+1,u,m,g),w>0&&S(k.sri,u,k.eri,k.sci-1),y>0&&S(k.sri,k.eci+1,k.eri,g)):(w>0&&S(k.sri,u,m,k.sci-1),y>0&&S(k.sri,k.eci+1,m,g))):f>0&&(S(k.eri+1,u,m,g),w>0&&S(_,u,k.eri,k.sci-1),y>0&&S(_,k.eci+1,k.eri,g)),w>0?(S(_,u,m,k.sci-1),y>0?(S(_,k.eri+1,m,g),b>0&&S(_,k.sci,k.sri-1,k.eci),f>0&&S(k.sri+1,k.sci,m,k.eci)):(b>0&&S(_,k.sci,k.sri-1,g),f>0&&S(k.sri+1,k.sci,m,g))):y>0&&(S(m,k.eci+1,m,g),b>0&&S(_,u,k.sri-1,k.eci),f>0&&S(k.eri+1,u,m,k.eci)),e}size(){return[this.eri-this.sri+1,this.eci-this.sci+1]}toString(){const{sri:k,sci:e,eri:S,eci:_}=this;let u=hi(e,k);return this.multiple()&&(u=`${u}:${hi(_,S)}`),u}clone(){const{sri:k,sci:e,eri:S,eci:_,w:u,h:m}=this;return new kr(k,e,S,_,u,m)}equals(k){return this.eri===k.eri&&this.eci===k.eci&&this.sri===k.sri&&this.sci===k.sci}static valueOf(k){const e=k.split(":"),[S,_]=Ti(e[0]);let[u,m]=[_,S];return e.length>1&&([m,u]=Ti(e[1])),new kr(_,S,u,m)}}let Jv=class{constructor(){this.range=new kr(0,0,0,0),this.ri=0,this.ci=0}multiple(){return this.range.multiple()}setIndexes(k,e){this.ri=k,this.ci=e}size(){return this.range.size()}};class Qv{constructor(){this.x=0,this.y=0,this.ri=0,this.ci=0}}class qv{constructor(){this.undoItems=[],this.redoItems=[]}add(k){this.undoItems.push(JSON.stringify(k)),this.redoItems=[]}canUndo(){return this.undoItems.length>0}canRedo(){return this.redoItems.length>0}undo(k,e){const{undoItems:S,redoItems:_}=this;this.canUndo()&&(_.push(JSON.stringify(k)),e(JSON.parse(S.pop())))}redo(k,e){const{undoItems:S,redoItems:_}=this;this.canRedo()&&(S.push(JSON.stringify(k)),e(JSON.parse(_.pop())))}}class em{constructor(){this.range=null,this.state="clear"}copy(k){return this.range=k,this.state="copy",this}cut(k){return this.range=k,this.state="cut",this}isCopy(){return this.state==="copy"}isCut(){return this.state==="cut"}isClear(){return this.state==="clear"}clear(){this.range=null,this.state="clear"}}class Sl{constructor(k,e,S){this.ci=k,this.operator=e,this.value=S}set(k,e){this.operator=k,this.value=e}includes(k){const{operator:e,value:S}=this;return e==="all"?!0:e==="in"?S.includes(k):!1}vlength(){const{operator:k,value:e}=this;return k==="in"?e.length:0}getData(){const{ci:k,operator:e,value:S}=this;return{ci:k,operator:e,value:S}}}class kl{constructor(k,e){this.ci=k,this.order=e}asc(){return this.order==="asc"}desc(){return this.order==="desc"}}class tm{constructor(){this.ref=null,this.filters=[],this.sort=null}setData({ref:k,filters:e,sort:S}){k!=null&&(this.ref=k,this.filters=e.map(_=>new Sl(_.ci,_.operator,_.value)),S&&(this.sort=new kl(S.ci,S.order)))}getData(){if(this.active()){const{ref:k,filters:e,sort:S}=this;return{ref:k,filters:e.map(_=>_.getData()),sort:S}}return{}}addFilter(k,e,S){const _=this.getFilter(k);_==null?this.filters.push(new Sl(k,e,S)):_.set(e,S)}setSort(k,e){this.sort=e?new kl(k,e):null}includes(k,e){return this.active()?this.hrange().includes(k,e):!1}getSort(k){const{sort:e}=this;return e&&e.ci===k?e:null}getFilter(k){const{filters:e}=this;for(let S=0;S!e.within(k))}getFirstIncludes(k,e){for(let S=0;Se.intersects(k)))}intersects(k){for(let e=0;e{S.intersects(e)&&(e=S.union(e))}),e}add(k){this.deleteWithin(k),this._.push(k)}shift(k,e,S,_){this._.forEach(u=>{const{sri:m,sci:g,eri:b,eci:w}=u,f=u;k==="row"?m>=e?(f.sri+=S,f.eri+=S):m=e?(f.sci+=S,f.eci+=S):g{const u=_;u.within(k)&&(u.eri+=e,u.sri+=e,u.sci+=S,u.eci+=S)})}setData(k){return this._=k.map(e=>kr.valueOf(e)),this}getData(){return this._.map(k=>k.toString())}}function rm(X){return JSON.parse(JSON.stringify(X))}const nc=(X={},...k)=>(k.forEach(e=>{Object.keys(e).forEach(S=>{const _=e[S];typeof _=="string"||typeof _=="number"||typeof _=="boolean"?X[S]=_:typeof _!="function"&&!Array.isArray(_)&&_ instanceof Object?(X[S]=X[S]||{},nc(X[S],_)):X[S]=_})}),X);function uf(X,k){const e=Object.keys(X);if(e.length!==Object.keys(k).length)return!1;for(let S=0;Se)=>{let e=0,S=0;return Object.keys(X).forEach(_=>{e+=k(X[_],_),S+=1}),[e,S]};function im(X,k){const e=X[`${k}`];return delete X[`${k}`],e}function am(X,k,e,S,_,u){let m=e,g=S,b=X;for(;b_);b+=1)g=u(b),m+=g;return[b,m-g,g]}function om(X,k,e){let S=0;for(let _=X;_5?g.toFixed(2):g;return g.toFixed(Math.max(S,_))}const fn={cloneDeep:rm,merge:(...X)=>nc({},...X),equals:uf,arrayEquals:fm,sum:nm,rangeEach:sm,rangeSum:om,rangeReduceIf:am,deleteProperty:im,numberCalc:ji};class um{constructor({len:k,height:e}){this._={},this.len=k,this.height=e}getHeight(k){if(this.isHide(k))return 0;const e=this.get(k);return e&&e.height?e.height:this.height}setHeight(k,e){const S=this.getOrNew(k);S.height=e}unhide(k){let e=k;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(k){const e=this.get(k);return e&&e.hide}setHide(k,e){const S=this.getOrNew(k);e===!0?S.hide=!0:delete S.hide}setStyle(k,e){const S=this.getOrNew(k);S.style=e}sumHeight(k,e,S){return fn.rangeSum(k,e,_=>S&&S.has(_)?0:this.getHeight(_))}totalHeight(){return this.sumHeight(0,this.len)}get(k){return this._[k]}getOrNew(k){return this._[k]=this._[k]||{cells:{}},this._[k]}getCell(k,e){const S=this.get(k);return S!==void 0&&S.cells!==void 0&&S.cells[e]!==void 0?S.cells[e]:null}getCellMerge(k,e){const S=this.getCell(k,e);return S&&S.merge?S.merge:[0,0]}getCellOrNew(k,e){const S=this.getOrNew(k);return S.cells[e]=S.cells[e]||{},S.cells[e]}setCell(k,e,S,_="all"){const u=this.getOrNew(k);_==="all"?u.cells[e]=S:_==="text"?(u.cells[e]=u.cells[e]||{},u.cells[e].text=S.text):_==="format"&&(u.cells[e]=u.cells[e]||{},u.cells[e].style=S.style,S.merge&&(u.cells[e].merge=S.merge))}setCellText(k,e,S){const _=this.getCellOrNew(k,e);_.editable!==!1&&(_.text=S)}copyPaste(k,e,S,_=!1,u=()=>{}){const{sri:m,sci:g,eri:b,eci:w}=k,f=e.sri,y=e.sci,h=e.eri,l=e.eci,[d,s]=k.size(),[v,c]=e.size();let a=!0,r=0;(h0){const{text:N}=C;let L=o-y+(n-f)+2;if(a||(L-=r+1),N[0]==="=")C.text=N.replace(/[a-zA-Z]{1,3}\d+/g,F=>{let[M,D]=[0,0];return m===f?M=L-1:D=L-1,/^\d+$/.test(F)?F:Xa(F,M,D)});else if(d<=1&&s>1&&(f>b||h1&&(y>w||l{this.eachCells(_,u=>{let m=parseInt(_,10),g=parseInt(u,10);k.includes(_,u)&&(m=e.sri+(m-k.sri),g=e.sci+(g-k.sci)),S[m]=S[m]||{cells:{}},S[m].cells[g]=this._[_].cells[u]})}),this._=S}paste(k,e){if(k.length<=0)return;const{sri:S,sci:_}=e;k.forEach((u,m)=>{const g=S+m;u.forEach((b,w)=>{const f=_+w;this.setCellText(g,f,b)})})}insert(k,e=1){const S={};this.each((_,u)=>{let m=parseInt(_,10);m>=k&&(m+=e,this.eachCells(_,(g,b)=>{b.text&&b.text[0]==="="&&(b.text=b.text.replace(/[a-zA-Z]{1,3}\d+/g,w=>Xa(w,0,e,(f,y)=>y>=k)))})),S[m]=u}),this._=S,this.len+=e}delete(k,e){const S=e-k+1,_={};this.each((u,m)=>{const g=parseInt(u,10);ge&&(_[g-S]=m,this.eachCells(u,(b,w)=>{w.text&&w.text[0]==="="&&(w.text=w.text.replace(/[a-zA-Z]{1,3}\d+/g,f=>Xa(f,0,-S,(y,h)=>h>e)))}))}),this._=_,this.len-=S}insertColumn(k,e=1){this.each((S,_)=>{const u={};this.eachCells(S,(m,g)=>{let b=parseInt(m,10);b>=k&&(b+=e,g.text&&g.text[0]==="="&&(g.text=g.text.replace(/[a-zA-Z]{1,3}\d+/g,w=>Xa(w,e,0,f=>f>=k)))),u[b]=g}),_.cells=u})}deleteColumn(k,e){const S=e-k+1;this.each((_,u)=>{const m={};this.eachCells(_,(g,b)=>{const w=parseInt(g,10);we&&(m[w-S]=b,b.text&&b.text[0]==="="&&(b.text=b.text.replace(/[a-zA-Z]{1,3}\d+/g,f=>Xa(f,-S,0,y=>y>e))))}),u.cells=m})}deleteCells(k,e="all"){k.each((S,_)=>{this.deleteCell(S,_,e)})}deleteCell(k,e,S="all"){const _=this.get(k);if(_!==null){const u=this.getCell(k,e);u!==null&&u.editable!==!1&&(S==="all"?delete _.cells[e]:S==="text"?(u.text&&delete u.text,u.value&&delete u.value):S==="format"?(u.style!==void 0&&delete u.style,u.merge&&delete u.merge):S==="merge"&&u.merge&&delete u.merge)}}maxCell(){const k=Object.keys(this._),e=k[k.length-1],S=this._[e];if(S){const{cells:_}=S,u=Object.keys(_),m=u[u.length-1];return[parseInt(e,10),parseInt(m,10)]}return[0,0]}each(k){Object.entries(this._).forEach(([e,S])=>{k(e,S)})}eachCells(k,e){this._[k]&&this._[k].cells&&Object.entries(this._[k].cells).forEach(([S,_])=>{e(S,_)})}setData(k){k.len&&(this.len=k.len,delete k.len),this._=k}getData(){const{len:k}=this;return Object.assign({len:k},this._)}}class lm{constructor({len:k,width:e,indexWidth:S,minWidth:_}){this._={},this.len=k,this.width=e,this.indexWidth=S,this.minWidth=_}setData(k){k.len&&(this.len=k.len,delete k.len),this._=k}getData(){const{len:k}=this;return Object.assign({len:k},this._)}getWidth(k){if(this.isHide(k))return 0;const e=this._[k];return e&&e.width?e.width:this.width}getOrNew(k){return this._[k]=this._[k]||{},this._[k]}setWidth(k,e){const S=this.getOrNew(k);S.width=e}unhide(k){let e=k;for(;e>0&&(e-=1,this.isHide(e));)this.setHide(e,!1)}isHide(k){const e=this._[k];return e&&e.hide}setHide(k,e){const S=this.getOrNew(k);e===!0?S.hide=!0:delete S.hide}setStyle(k,e){const S=this.getOrNew(k);S.style=e}sumWidth(k,e){return fn.rangeSum(k,e,S=>this.getWidth(S))}totalWidth(){return this.sumWidth(0,this.len)}}const cm={toolbar:{undo:"Undo",redo:"Redo",print:"Print",paintformat:"Paint format",clearformat:"Clear format",format:"Format",fontName:"Font",fontSize:"Font size",fontBold:"Font bold",fontItalic:"Font italic",underline:"Underline",strike:"Strike",color:"Text color",bgcolor:"Fill color",border:"Borders",merge:"Merge cells",align:"Horizontal align",valign:"Vertical align",textwrap:"Text wrapping",freeze:"Freeze cell",autofilter:"Filter",formula:"Functions",more:"More"},contextmenu:{copy:"Copy",cut:"Cut",paste:"Paste",pasteValue:"Paste values only",pasteFormat:"Paste format only",hide:"Hide",insertRow:"Insert row",insertColumn:"Insert column",deleteSheet:"Delete",deleteRow:"Delete row",deleteColumn:"Delete column",deleteCell:"Delete cell",deleteCellText:"Delete cell text",validation:"Data validations",cellprintable:"Enable export",cellnonprintable:"Disable export",celleditable:"Enable editing",cellnoneditable:"Disable editing"},print:{size:"Paper size",orientation:"Page orientation",orientations:["Landscape","Portrait"]},format:{normal:"Normal",text:"Plain Text",number:"Number",percent:"Percent",rmb:"RMB",usd:"USD",eur:"EUR",date:"Date",time:"Time",datetime:"Date time",duration:"Duration"},formula:{sum:"Sum",average:"Average",max:"Max",min:"Min",_if:"IF",and:"AND",or:"OR",concat:"Concat"},validation:{required:"it must be required",notMatch:"it not match its validation rule",between:"it is between {} and {}",notBetween:"it is not between {} and {}",notIn:"it is not in list",equal:"it equal to {}",notEqual:"it not equal to {}",lessThan:"it less than {}",lessThanEqual:"it less than or equal to {}",greaterThan:"it greater than {}",greaterThanEqual:"it greater than or equal to {}"},error:{pasteForMergedCell:"Unable to do this for merged cells"},calendar:{weeks:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},button:{next:"Next",cancel:"Cancel",remove:"Remove",save:"Save",ok:"OK"},sort:{desc:"Sort Z -> A",asc:"Sort A -> Z"},filter:{empty:"empty"},dataValidation:{mode:"Mode",range:"Cell Range",criteria:"Criteria",modeType:{cell:"Cell",column:"Colun",row:"Row"},type:{list:"List",number:"Number",date:"Date",phone:"Phone",email:"Email"},operator:{be:"between",nbe:"not betwwen",lt:"less than",lte:"less than or equal to",gt:"greater than",gte:"greater than or equal to",eq:"equal to",neq:"not equal to"}}};let lf=["en"];const ic={en:cm};function Ol(X,k){if(k)for(const e of lf){if(!k[e])break;let S=k[e];const _=X.match(/(?:\\.|[^.])+/g);for(let u=0;u<_.length;u+=1){const m=_[u],g=S[m];if(!g)break;if(u===_.length-1)return g;S=g}}}function Cr(X){let k=Ol(X,ic);return!k&&window&&window.x_spreadsheet&&window.x_spreadsheet.$messages&&(k=Ol(X,window.x_spreadsheet.$messages)),k||""}function Jt(X){return()=>Cr(X)}function ac(X,k,e=!1){e?lf=[X]:lf.unshift(X),k&&(ic[X]=k)}const El={phone:/^[1-9]\d{10}$/,email:/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/};function Un(X,k,...e){let S="";return X||(S=Cr(`validation.${k}`,...e)),[X,S]}class oc{constructor(k,e,S,_){this.required=e,this.value=S,this.type=k,this.operator=_,this.message=""}parseValue(k){const{type:e}=this;return e==="date"?new Date(k):e==="number"?Number(k):k}equals(k){let e=this.type===k.type&&this.required===k.required&&this.operator===k.operator;return e&&(Array.isArray(this.value)?e=fn.arrayEquals(this.value,k.value):e=this.value===k.value),e}values(){return this.value.split(",")}validate(k){const{required:e,operator:S,value:_,type:u}=this;if(e&&/^\s*$/.test(k))return Un(!1,"required");if(/^\s*$/.test(k))return[!0];if(El[u]&&!El[u].test(k))return Un(!1,"notMatch");if(u==="list")return Un(this.values().includes(k),"notIn");if(S){const m=this.parseValue(k);if(S==="be"){const[g,b]=_;return Un(m>=this.parseValue(g)&&m<=this.parseValue(b),"between",g,b)}if(S==="nbe"){const[g,b]=_;return Un(mthis.parseValue(b),"notBetween",g,b)}if(S==="eq")return Un(m===this.parseValue(_),"equal",_);if(S==="neq")return Un(m!==this.parseValue(_),"notEqual",_);if(S==="lt")return Un(mthis.parseValue(_),"greaterThan",_);if(S==="gte")return Un(m>=this.parseValue(_),"greaterThanEqual",_)}return[!0]}}class Vo{constructor(k,e,S){this.refs=e,this.mode=k,this.validator=S}includes(k,e){const{refs:S}=this;for(let _=0;_{const _=kr.valueOf(S);_.intersects(k)?_.difference(k).forEach(m=>e.push(m.toString())):e.push(S)}),this.refs=e}getData(){const{refs:k,mode:e,validator:S}=this,{type:_,required:u,operator:m,value:g}=S;return{refs:k,mode:e,type:_,required:u,operator:m,value:g}}static valueOf({refs:k,mode:e,type:S,required:_,operator:u,value:m}){return new Vo(e,k,new oc(S,_,m,u))}}class hm{constructor(){this._=[],this.errors=new Map}getError(k,e){return this.errors.get(`${k}_${e}`)}validate(k,e,S){const _=this.get(k,e),u=`${k}_${e}`,{errors:m}=this;if(_!==null){const[g,b]=_.validator.validate(S);g?m.delete(u):m.set(u,b)}else m.delete(u);return!0}add(k,e,{type:S,required:_,value:u,operator:m}){const g=new oc(S,_,u,m),b=this.getByValidator(g);b!==null?b.addRef(e):this._.push(new Vo(k,[e],g))}getByValidator(k){for(let e=0;e{e.remove(k)})}each(k){this._.forEach(e=>k(e))}getData(){return this._.filter(k=>k.refs.length>0).map(k=>k.getData())}setData(k){this._=k.map(e=>Vo.valueOf(e))}}const dm={mode:"edit",view:{height:()=>document.documentElement.clientHeight,width:()=>document.documentElement.clientWidth},showGrid:!0,showToolbar:!0,showContextmenu:!0,showBottomBar:!0,row:{len:100,height:25},col:{len:26,width:100,indexWidth:60,minWidth:60},style:{bgcolor:"#ffffff",align:"left",valign:"middle",textwrap:!1,strike:!1,underline:!1,color:"#0a0a0a",font:{name:"Arial",size:10,bold:!1,italic:!1},format:"normal"}},pm=41,ym=41,Tl=(X,k)=>Object.prototype.hasOwnProperty.call(X,k);function Rl(X,k,e=()=>{}){const{merges:S}=this,_=k.clone(),[u,m]=X.size(),[g,b]=k.size();return u>g&&(_.eri=k.sri+u-1),m>b&&(_.eci=k.sci+m-1),S.intersects(_)?(e(Cr("error.pasteForMergedCell")),!1):!0}function Cl(X,k,e,S=!1){const{rows:_,merges:u}=this;(e==="all"||e==="format")&&(_.deleteCells(k,e),u.deleteWithin(k)),_.copyPaste(X,k,e,S,(m,g,b)=>{if(b&&b.merge){const[w,f]=b.merge;if(w<=0&&f<=0)return;u.add(new kr(m,g,m+w,g+f))}})}function vm(X,k){const{clipboard:e,rows:S,merges:_}=this;S.cutPaste(X,k),_.move(X,k.sri-X.sri,k.sci-X.sci),e.clear()}function pa(X,k,e){const{styles:S,rows:_}=this,u=_.getCellOrNew(X,k);let m={};u.style!==void 0&&(m=fn.cloneDeep(S[u.style])),m=fn.merge(m,{border:e}),u.style=this.addStyle(m)}function mm({mode:X,style:k,color:e}){const{styles:S,selector:_,rows:u}=this,{sri:m,sci:g,eri:b,eci:w}=_.range,f=!this.isSignleSelected();if(!(!f&&(X==="inside"||X==="horizontal"||X==="vertical"))){if(X==="outside"&&!f)pa.call(this,m,g,{top:[k,e],bottom:[k,e],left:[k,e],right:[k,e]});else if(X==="none")_.range.each((y,h)=>{const l=u.getCell(y,h);if(l&&l.style!==void 0){const d=fn.cloneDeep(S[l.style]);delete d.border,l.style=this.addStyle(d)}});else if(X==="all"||X==="inside"||X==="outside"||X==="horizontal"||X==="vertical"){const y=[];for(let h=m;h<=b;h+=1)for(let l=g;l<=w;l+=1){const d=[];for(let i=0;iy.splice(i,1)),l>w)break;const s=u.getCell(h,l);let[v,c]=[0,0];s&&s.merge&&([v,c]=s.merge,y.push([h,l,v,c]));const a=v>0&&h+v===b,r=c>0&&l+c===w;let t={};X==="all"?t={bottom:[k,e],top:[k,e],left:[k,e],right:[k,e]}:X==="inside"?(!r&&l0&&pa.call(this,h,l,t),l+=c}}else if(X==="top"||X==="bottom")for(let y=g;y<=w;y+=1)X==="top"&&(pa.call(this,m,y,{top:[k,e]}),y+=u.getCellMerge(m,y)[1]),X==="bottom"&&(pa.call(this,b,y,{bottom:[k,e]}),y+=u.getCellMerge(b,y)[1]);else if(X==="left"||X==="right")for(let y=m;y<=b;y+=1)X==="left"&&(pa.call(this,y,g,{left:[k,e]}),y+=u.getCellMerge(y,g)[0]),X==="right"&&(pa.call(this,y,w,{right:[k,e]}),y+=u.getCellMerge(y,w)[0])}}function bm(X,k){const{rows:e}=this,S=this.freezeTotalHeight();let _=e.height;S+e.heightX);m+=1)u.has(m)||(b=e.getHeight(m),g+=b);return g-=b,g<=0?{ri:-1,top:0,height:b}:{ri:m-1,top:g,height:b}}function gm(X,k){const{cols:e}=this,S=this.freezeTotalWidth();let _=e.indexWidth;S+e.indexWidthe.getWidth(b));return m<=0?{ci:-1,left:0,width:e.indexWidth}:{ci:u-1,left:m,width:g}}class _m{constructor(k,e){this.settings=fn.merge(dm,e||{}),this.name=k||"sheet",this.freeze=[0,0],this.styles=[],this.merges=new gf,this.rows=new um(this.settings.row),this.cols=new lm(this.settings.col),this.validations=new hm,this.hyperlinks={},this.comments={},this.selector=new Jv,this.scroll=new Qv,this.history=new qv,this.clipboard=new em,this.autoFilter=new tm,this.change=()=>{},this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map}addValidation(k,e,S){this.changeData(()=>{this.validations.add(k,e,S)})}removeValidation(){const{range:k}=this.selector;this.changeData(()=>{this.validations.remove(k)})}getSelectedValidator(){const{ri:k,ci:e}=this.selector,S=this.validations.get(k,e);return S?S.validator:null}getSelectedValidation(){const{ri:k,ci:e,range:S}=this.selector,_=this.validations.get(k,e),u={ref:S.toString()};return _!==null&&(u.mode=_.mode,u.validator=_.validator),u}canUndo(){return this.history.canUndo()}canRedo(){return this.history.canRedo()}undo(){this.history.undo(this.getData(),k=>{this.setData(k)})}redo(){this.history.redo(this.getData(),k=>{this.setData(k)})}copy(){this.clipboard.copy(this.selector.range)}copyToSystemClipboard(){if(navigator.clipboard===void 0)return;let k="";const e=this.rows.getData();for(let S=this.selector.range.sri;S<=this.selector.range.eri;S+=1){if(Tl(e,S)){for(let _=this.selector.range.sci;_<=this.selector.range.eci;_+=1)if(_>this.selector.range.sci&&(k+=" "),Tl(e[S].cells,_)){const u=String(e[S].cells[_].text);u.indexOf(` +`)===-1&&u.indexOf(" ")===-1&&u.indexOf('"')===-1?k+=u:k+=`"${u}"`}}else for(let _=this.selector.range.sci;_<=this.selector.range.eci;_+=1)k+=" ";k+=` +`}navigator.clipboard.writeText(k).then(()=>{},S=>{console.log("text copy to the system clipboard error ",k,S)})}cut(){this.clipboard.cut(this.selector.range)}paste(k="all",e=()=>{}){const{clipboard:S,selector:_}=this;return S.isClear()||!Rl.call(this,S.range,_.range,e)?!1:(this.changeData(()=>{S.isCopy()?Cl.call(this,S.range,_.range,k):S.isCut()&&vm.call(this,S.range,_.range)}),!0)}pasteFromText(k){const e=k.split(`\r +`).map(u=>u.replace(/"/g,"").split(" "));e.length>0&&(e.length-=1);const{rows:S,selector:_}=this;this.changeData(()=>{S.paste(e,_.range)})}autofill(k,e,S=()=>{}){const _=this.selector.range;return Rl.call(this,_,k,S)?(this.changeData(()=>{Cl.call(this,_,k,e,!0)}),!0):!1}clearClipboard(){this.clipboard.clear()}calSelectedRangeByEnd(k,e){const{selector:S,rows:_,cols:u,merges:m}=this;let{sri:g,sci:b,eri:w,eci:f}=S.range;const y=S.ri,h=S.ci;let[l,d]=[k,e];return k<0&&(l=_.len-1),e<0&&(d=u.len-1),l>y?[g,w]=[y,l]:[g,w]=[l,y],d>h?[b,f]=[h,d]:[b,f]=[d,h],S.range=m.union(new kr(g,b,w,f)),S.range=m.union(S.range),S.range}calSelectedRangeByStart(k,e){const{selector:S,rows:_,cols:u,merges:m}=this;let g=m.getFirstIncludes(k,e);return g===null&&(g=new kr(k,e,k,e),k===-1&&(g.sri=0,g.eri=_.len-1),e===-1&&(g.sci=0,g.eci=u.len-1)),S.range=g,g}setSelectedCellAttr(k,e){this.changeData(()=>{const{selector:S,styles:_,rows:u}=this;if(k==="merge")e?this.merge():this.unmerge();else if(k==="border")mm.call(this,e);else if(k==="formula"){const{ri:m,ci:g,range:b}=S;if(S.multiple()){const[w,f]=S.size(),{sri:y,sci:h,eri:l,eci:d}=b;if(w>1)for(let s=h;s<=d;s+=1){const v=u.getCellOrNew(l+1,s);v.text=`=${e}(${hi(s,y)}:${hi(s,l)})`}else if(f>1){const s=u.getCellOrNew(m,d+1);s.text=`=${e}(${hi(h,m)}:${hi(d,m)})`}}else{const w=u.getCellOrNew(m,g);w.text=`=${e}()`}}else S.range.each((m,g)=>{const b=u.getCellOrNew(m,g);let w={};if(b.style!==void 0&&(w=fn.cloneDeep(_[b.style])),k==="format")w.format=e,b.style=this.addStyle(w);else if(k==="font-bold"||k==="font-italic"||k==="font-name"||k==="font-size"){const f={};f[k.split("-")[1]]=e,w.font=Object.assign(w.font||{},f),b.style=this.addStyle(w)}else k==="strike"||k==="textwrap"||k==="underline"||k==="align"||k==="valign"||k==="color"||k==="bgcolor"?(w[k]=e,b.style=this.addStyle(w)):b[k]=e})})}setSelectedCellText(k,e="input"){const{autoFilter:S,selector:_,rows:u}=this,{ri:m,ci:g}=_;let b=m;this.unsortedRowMap.has(m)&&(b=this.unsortedRowMap.get(m));const w=u.getCell(b,g),f=w?w.text:"";if(this.setCellText(b,g,k,e),S.active()){const y=S.getFilter(g);if(y){const h=y.value.findIndex(l=>l===f);h>=0&&y.value.splice(h,1,k)}}}getSelectedCell(){const{ri:k,ci:e}=this.selector;let S=k;return this.unsortedRowMap.has(k)&&(S=this.unsortedRowMap.get(k)),this.rows.getCell(S,e)}xyInSelectedRect(k,e){const{left:S,top:_,width:u,height:m}=this.getSelectedRect(),g=k-this.cols.indexWidth,b=e-this.rows.height;return g>S&&g_&&b<_+m}getSelectedRect(){return this.getRect(this.selector.range)}getClipboardRect(){const{clipboard:k}=this;return k.isClear()?{left:-100,top:-100}:this.getRect(k.range)}getRect(k){const{scroll:e,rows:S,cols:_,exceptRowSet:u}=this,{sri:m,sci:g,eri:b,eci:w}=k;if(m<0&&g<0)return{left:0,l:0,top:0,t:0,scroll:e};const f=_.sumWidth(0,g),y=S.sumHeight(0,m,u),h=S.sumHeight(m,b+1,u),l=_.sumWidth(g,w+1);let d=f-e.x,s=y-e.y;const v=this.freezeTotalHeight(),c=this.freezeTotalWidth();return c>0&&c>f&&(d=f),v>0&&v>y&&(s=y),{l:f,t:y,left:d,top:s,height:h,width:l,scroll:e}}getCellRectByXY(k,e){const{scroll:S,merges:_,rows:u,cols:m}=this;let{ri:g,top:b,height:w}=bm.call(this,e,S.y),{ci:f,left:y,width:h}=gm.call(this,k,S.x);if(f===-1&&(h=m.totalWidth()),g===-1&&(w=u.totalHeight()),g>=0||f>=0){const l=_.getFirstIncludes(g,f);l&&(g=l.sri,f=l.sci,{left:y,top:b,width:h,height:w}=this.cellRect(g,f))}return{ri:g,ci:f,left:y,top:b,width:h,height:w}}isSignleSelected(){const{sri:k,sci:e,eri:S,eci:_}=this.selector.range,u=this.getCell(k,e);if(u&&u.merge){const[m,g]=u.merge;if(k+m===S&&e+g===_)return!0}return!this.selector.multiple()}canUnmerge(){const{sri:k,sci:e,eri:S,eci:_}=this.selector.range,u=this.getCell(k,e);if(u&&u.merge){const[m,g]=u.merge;if(k+m===S&&e+g===_)return!0}return!1}merge(){const{selector:k,rows:e}=this;if(this.isSignleSelected())return;const[S,_]=k.size();if(S>1||_>1){const{sri:u,sci:m}=k.range;this.changeData(()=>{const g=e.getCellOrNew(u,m);g.merge=[S-1,_-1],this.merges.add(k.range),this.rows.deleteCells(k.range),this.rows.setCell(u,m,g)})}}unmerge(){const{selector:k}=this;if(!this.isSignleSelected())return;const{sri:e,sci:S}=k.range;this.changeData(()=>{this.rows.deleteCell(e,S,"merge"),this.merges.deleteWithin(k.range)})}canAutofilter(){return!this.autoFilter.active()}autofilter(){const{autoFilter:k,selector:e}=this;this.changeData(()=>{k.active()?(k.clear(),this.exceptRowSet=new Set,this.sortedRowMap=new Map,this.unsortedRowMap=new Map):k.ref=e.range.toString()})}setAutoFilter(k,e,S,_){const{autoFilter:u}=this;u.addFilter(k,S,_),u.setSort(k,e),this.resetAutoFilter()}resetAutoFilter(){const{autoFilter:k,rows:e}=this;if(!k.active())return;const{sort:S}=k,{rset:_,fset:u}=k.filteredRows((b,w)=>e.getCell(b,w)),m=Array.from(u),g=Array.from(u);S&&m.sort((b,w)=>S.order==="asc"?b-w:S.order==="desc"?w-b:0),this.exceptRowSet=_,this.sortedRowMap=new Map,this.unsortedRowMap=new Map,m.forEach((b,w)=>{this.sortedRowMap.set(g[w],b),this.unsortedRowMap.set(b,g[w])})}deleteCell(k="all"){const{selector:e}=this;this.changeData(()=>{this.rows.deleteCells(e.range,k),(k==="all"||k==="format")&&this.merges.deleteWithin(e.range)})}insert(k,e=1){this.changeData(()=>{const{sri:S,sci:_}=this.selector.range,{rows:u,merges:m,cols:g}=this;let b=S;k==="row"?u.insert(S,e):k==="column"&&(u.insertColumn(_,e),b=_,g.len+=1),m.shift(k,b,e,(w,f,y,h)=>{const l=u.getCell(w,f);l.merge[0]+=y,l.merge[1]+=h})})}delete(k){this.changeData(()=>{const{rows:e,merges:S,selector:_,cols:u}=this,{range:m}=_,{sri:g,sci:b,eri:w,eci:f}=_.range,[y,h]=_.range.size();let l=g,d=y;k==="row"?e.delete(g,w):k==="column"&&(e.deleteColumn(b,f),l=m.sci,d=h,u.len-=1),S.shift(k,l,-d,(s,v,c,a)=>{const r=e.getCell(s,v);r.merge[0]+=c,r.merge[1]+=a,r.merge[0]===0&&r.merge[1]===0&&delete r.merge})})}scrollx(k,e){const{scroll:S,freeze:_,cols:u}=this,[,m]=_,[g,b,w]=fn.rangeReduceIf(m,u.len,0,0,k,y=>u.getWidth(y));let f=b;k>0&&(f+=w),S.x!==f&&(S.ci=k>0?g:0,S.x=f,e())}scrolly(k,e){const{scroll:S,freeze:_,rows:u}=this,[m]=_,[g,b,w]=fn.rangeReduceIf(m,u.len,0,0,k,y=>u.getHeight(y));let f=b;k>0&&(f+=w),S.y!==f&&(S.ri=k>0?g:0,S.y=f,e())}cellRect(k,e){const{rows:S,cols:_}=this,u=_.sumWidth(0,e),m=S.sumHeight(0,k),g=S.getCell(k,e);let b=_.getWidth(e),w=S.getHeight(k);if(g!==null&&g.merge){const[f,y]=g.merge;if(f>0)for(let h=1;h<=f;h+=1)w+=S.getHeight(k+h);if(y>0)for(let h=1;h<=y;h+=1)b+=_.getWidth(e+h)}return{left:u,top:m,width:b,height:w,cell:g}}getCell(k,e){return this.rows.getCell(k,e)}getCellTextOrDefault(k,e){const S=this.getCell(k,e);return S&&S.text?S.text:""}getCellStyle(k,e){const S=this.getCell(k,e);return S&&S.style!==void 0?this.styles[S.style]:null}getCellStyleOrDefault(k,e){const{styles:S,rows:_}=this,u=_.getCell(k,e),m=u&&u.style!==void 0?S[u.style]:{};return fn.merge(this.defaultStyle(),m)}getSelectedCellStyle(){const{ri:k,ci:e}=this.selector;return this.getCellStyleOrDefault(k,e)}setCellText(k,e,S,_){const{rows:u,history:m,validations:g}=this;_==="finished"?(u.setCellText(k,e,""),m.add(this.getData()),u.setCellText(k,e,S)):(u.setCellText(k,e,S),this.change(this.getData())),g.validate(k,e,S)}freezeIsActive(){const[k,e]=this.freeze;return k>0||e>0}setFreeze(k,e){this.changeData(()=>{this.freeze=[k,e]})}freezeTotalWidth(){return this.cols.sumWidth(0,this.freeze[1])}freezeTotalHeight(){return this.rows.sumHeight(0,this.freeze[0])}setRowHeight(k,e){this.changeData(()=>{this.rows.setHeight(k,e)})}setColWidth(k,e){this.changeData(()=>{this.cols.setWidth(k,e)})}viewHeight(){const{view:k,showToolbar:e,showBottomBar:S}=this.settings;let _=k.height();return S&&(_-=ym),e&&(_-=pm),_}viewWidth(){return this.settings.view.width()}freezeViewRange(){const[k,e]=this.freeze;return new kr(0,0,k-1,e-1,this.freezeTotalWidth(),this.freezeTotalHeight())}contentRange(){const{rows:k,cols:e}=this,[S,_]=k.maxCell(),u=k.sumHeight(0,S+1),m=e.sumWidth(0,_+1);return new kr(0,0,S,_,m,u)}exceptRowTotalHeight(k,e){const{exceptRowSet:S,rows:_}=this,u=Array.from(S);let m=0;return u.forEach(g=>{if(ge){const b=_.getHeight(g);m+=b}}),m}viewRange(){const{scroll:k,rows:e,cols:S,freeze:_,exceptRowSet:u}=this;let{ri:m,ci:g}=k;m<=0&&([m]=_),g<=0&&([,g]=_);let[b,w]=[0,0],[f,y]=[e.len,S.len];for(let h=m;hthis.viewHeight()));h+=1);for(let h=g;hthis.viewWidth()));h+=1);return new kr(m,g,f,y,b,w)}eachMergesInView(k,e){this.merges.filterIntersects(k).forEach(S=>e(S))}hideRowsOrCols(){const{rows:k,cols:e,selector:S}=this,[_,u]=S.size(),{sri:m,sci:g,eri:b,eci:w}=S.range;if(_===k.len)for(let f=g;f<=w;f+=1)e.setHide(f,!0);else if(u===e.len)for(let f=m;f<=b;f+=1)k.setHide(f,!0)}unhideRowsOrCols(k,e){this[`${k}s`].unhide(e)}rowEach(k,e,S){let _=0;const{rows:u}=this,m=this.exceptRowSet,g=[...m];let b=0;for(let w=0;w0&&(S(w,_,f),_+=f,_>this.viewHeight()))break}}colEach(k,e,S){let _=0;const{cols:u}=this;for(let m=k;m<=e;m+=1){const g=u.getWidth(m);if(g>0&&(S(m,_,g),_+=g,_>this.viewWidth()))break}}defaultStyle(){return this.settings.style}addStyle(k){const{styles:e}=this;for(let S=0;S{if(e==="merges"||e==="rows"||e==="cols"||e==="validations")this[e].setData(k[e]);else if(e==="freeze"){const[S,_]=Ti(k[e]);this.freeze=[_,S]}else e==="autofilter"?this.autoFilter.setData(k[e]):k[e]!==void 0&&(this[e]=k[e])}),this}getData(){const{name:k,freeze:e,styles:S,merges:_,rows:u,cols:m,validations:g,autoFilter:b}=this;return{name:k,freeze:hi(e[1],e[0]),styles:S,merges:_.getData(),rows:u.getData(),cols:m.getData(),validations:g.getData(),autofilter:b.getData()}}}function ln(X,k,e){X.addEventListener(k,e)}function Ko(X,k,e){X.removeEventListener(k,e)}function _a(X){X.xclickoutside&&(Ko(window.document.body,"click",X.xclickoutside),delete X.xclickoutside)}function Va(X,k){X.xclickoutside=e=>{e.detail===2||X.contains(e.target)||(k?k(X):(X.hide(),_a(X)))},ln(window.document.body,"click",X.xclickoutside)}function sc(X,k,e){ln(X,"mousemove",k);const S=X;S.xEvtUp=_=>{Ko(X,"mousemove",k),Ko(X,"mouseup",X.xEvtUp),e(_)},ln(X,"mouseup",X.xEvtUp)}function Pl(X,k,e,S){let _="";Math.abs(X)>Math.abs(k)?(_=X>0?"right":"left",S(_,X,e)):(_=k>0?"down":"up",S(_,k,e))}function wm(X,{move:k,end:e}){let S=0,_=0;ln(X,"touchstart",u=>{const{pageX:m,pageY:g}=u.touches[0];S=m,_=g}),ln(X,"touchmove",u=>{if(!k)return;const{pageX:m,pageY:g}=u.changedTouches[0],b=m-S,w=g-_;(Math.abs(b)>10||Math.abs(w)>10)&&(Pl(b,w,u,k),S=m,_=g),u.preventDefault()}),ln(X,"touchend",u=>{if(!e)return;const{pageX:m,pageY:g}=u.changedTouches[0],b=m-S,w=g-_;Pl(b,w,u,e)})}function xm(){const X=new Map;function k(m,g){const b=()=>{const f=X.get(m);return Array.isArray(f)&&f.push(g)||!1},w=()=>X.set(m,[].concat(g));return X.has(m)&&b()||w()}function e(m,g){const b=()=>{const w=X.get(m);for(const f of w)f.call(null,...g)};return X.has(m)&&b()}function S(m,g){const b=()=>{const w=X.get(m),f=w.indexOf(g);return f>=0&&w.splice(f,1)&&X.get(m).length===0&&X.delete(m)};return X.has(m)&&b()}function _(m,g){const b=(...w)=>{g.call(null,...w),S(m,b)};return k(m,b)}function u(){X.clear()}return{get current(){return X},on:k,once:_,fire:e,removeListener:S,removeAllListeners:u}}const lt="x-spreadsheet";class Al{constructor(k=!1,e){this.moving=!1,this.vertical=k,this.el=We("div",`${lt}-resizer ${k?"vertical":"horizontal"}`).children(this.unhideHoverEl=We("div",`${lt}-resizer-hover`).on("dblclick.stop",S=>this.mousedblclickHandler(S)).css("position","absolute").hide(),this.hoverEl=We("div",`${lt}-resizer-hover`).on("mousedown.stop",S=>this.mousedownHandler(S)),this.lineEl=We("div",`${lt}-resizer-line`).hide()).hide(),this.cRect=null,this.finishedFn=null,this.minDistance=e,this.unhideFn=()=>{}}showUnhide(k){this.unhideIndex=k,this.unhideHoverEl.show()}hideUnhide(){this.unhideHoverEl.hide()}show(k,e){const{moving:S,vertical:_,hoverEl:u,lineEl:m,el:g,unhideHoverEl:b}=this;if(S)return;this.cRect=k;const{left:w,top:f,width:y,height:h}=k;g.offset({left:_?w+y-5:w,top:_?f:f+h-5}).show(),u.offset({width:_?5:y,height:_?h:5}),m.offset({width:_?0:e.width,height:_?e.height:0}),b.offset({left:_?5-y:w,top:_?f:5-h,width:_?5:y,height:_?h:5})}hide(){this.el.offset({left:0,top:0}).hide(),this.hideUnhide()}mousedblclickHandler(){this.unhideIndex&&this.unhideFn(this.unhideIndex)}mousedownHandler(k){let e=k;const{el:S,lineEl:_,cRect:u,vertical:m,minDistance:g}=this;let b=m?u.width:u.height;_.show(),sc(window,w=>{this.moving=!0,e!==null&&w.buttons===1&&(m?(b+=w.movementX,b>g&&S.css("left",`${u.left+b}px`)):(b+=w.movementY,b>g&&S.css("top",`${u.top+b}px`)),e=w)},()=>{e=null,_.hide(),this.moving=!1,this.hide(),this.finishedFn&&(b{}).on("scroll.stop",e=>{const{scrollTop:S,scrollLeft:_}=e.target;this.moveFn&&this.moveFn(this.vertical?S:_,e)})}move(k){return this.el.scroll(k),this}scroll(){return this.el.scroll()}set(k,e){const S=k-1;if(e>S){const _=this.vertical?"height":"width";this.el.css(_,`${S-15}px`).show(),this.contentEl.css(this.vertical?"width":"height","1px").css(_,`${e}px`)}else this.el.hide();return this}}const No=2*2-1;let cf=10;class Fo{constructor(k=!1){this.useHideInput=k,this.inputChange=()=>{},this.cornerEl=We("div",`${lt}-selector-corner`),this.areaEl=We("div",`${lt}-selector-area`).child(this.cornerEl).hide(),this.clipboardEl=We("div",`${lt}-selector-clipboard`).hide(),this.autofillEl=We("div",`${lt}-selector-autofill`).hide(),this.el=We("div",`${lt}-selector`).css("z-index",`${cf}`).children(this.areaEl,this.clipboardEl,this.autofillEl).hide(),k&&(this.hideInput=We("input","").on("compositionend",e=>{this.inputChange(e.target.value)}),this.el.child(this.hideInputDiv=We("div","hide-input").child(this.hideInput)),this.el.child(this.hideInputDiv=We("div","hide-input").child(this.hideInput))),cf+=1}setOffset(k){return this.el.offset(k).show(),this}hide(){return this.el.hide(),this}setAreaOffset(k){const{left:e,top:S,width:_,height:u}=k,m={width:_-No+.8,height:u-No+.8,left:e-.8,top:S-.8};this.areaEl.offset(m).show(),this.useHideInput&&(this.hideInputDiv.offset(m),this.hideInput.val("").focus())}setClipboardOffset(k){const{left:e,top:S,width:_,height:u}=k;this.clipboardEl.offset({left:e,top:S,width:_-5,height:u-5})}showAutofill(k){const{left:e,top:S,width:_,height:u}=k;this.autofillEl.offset({width:_-No,height:u-No,left:e,top:S}).show()}hideAutofill(){this.autofillEl.hide()}showClipboard(){this.clipboardEl.show()}hideClipboard(){this.clipboardEl.hide()}}function _f(X){const{data:k}=this,{left:e,top:S,width:_,height:u,scroll:m,l:g,t:b}=X,w=k.freezeTotalWidth(),f=k.freezeTotalHeight();let y=e-w;w>g&&(y-=m.x);let h=S-f;return f>b&&(h-=m.y),{left:y,top:h,width:_,height:u}}function wf(X){const{data:k}=this,{left:e,width:S,height:_,l:u,t:m,scroll:g}=X,b=k.freezeTotalWidth();let w=e-b;return b>u&&(w-=g.x),{left:w,top:m,width:S,height:_}}function xf(X){const{data:k}=this,{top:e,width:S,height:_,l:u,t:m,scroll:g}=X,b=k.freezeTotalHeight();let w=e-b;return b>m&&(w-=g.y),{left:u,top:w,width:S,height:_}}function hf(X){const{br:k}=this;k.setAreaOffset(_f.call(this,X))}function Sm(X){const{tl:k}=this;k.setAreaOffset(X)}function fc(X){const{t:k}=this;k.setAreaOffset(wf.call(this,X))}function uc(X){const{l:k}=this;k.setAreaOffset(xf.call(this,X))}function lc(X){const{l:k}=this;k.setClipboardOffset(xf.call(this,X))}function df(X){const{br:k}=this;k.setClipboardOffset(_f.call(this,X))}function km(X){const{tl:k}=this;k.setClipboardOffset(X)}function cc(X){const{t:k}=this;k.setClipboardOffset(wf.call(this,X))}function Il(X){hf.call(this,X),Sm.call(this,X),fc.call(this,X),uc.call(this,X)}function Dl(X){df.call(this,X),km.call(this,X),cc.call(this,X),lc.call(this,X)}class Om{constructor(k){this.inputChange=()=>{},this.data=k,this.br=new Fo(!0),this.t=new Fo,this.l=new Fo,this.tl=new Fo,this.br.inputChange=e=>{this.inputChange(e)},this.br.el.show(),this.offset=null,this.areaOffset=null,this.indexes=null,this.range=null,this.arange=null,this.el=We("div",`${lt}-selectors`).children(this.tl.el,this.t.el,this.l.el,this.br.el).hide(),this.lastri=-1,this.lastci=-1,cf+=1}resetData(k){this.data=k,this.range=k.selector.range,this.resetAreaOffset()}hide(){this.el.hide()}resetOffset(){const{data:k,tl:e,t:S,l:_,br:u}=this,m=k.freezeTotalHeight(),g=k.freezeTotalWidth();m>0||g>0?(e.setOffset({width:g,height:m}),S.setOffset({left:g,height:m}),_.setOffset({top:m,width:g}),u.setOffset({left:g,top:m})):(e.hide(),S.hide(),_.hide(),u.setOffset({left:0,top:0}))}resetAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();Il.call(this,k),Dl.call(this,e),this.resetOffset()}resetBRTAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();hf.call(this,k),fc.call(this,k),df.call(this,e),cc.call(this,e),this.resetOffset()}resetBRLAreaOffset(){const k=this.data.getSelectedRect(),e=this.data.getClipboardRect();hf.call(this,k),uc.call(this,k),df.call(this,e),lc.call(this,e),this.resetOffset()}set(k,e,S=!0){const{data:_}=this,u=_.calSelectedRangeByStart(k,e),{sri:m,sci:g}=u;if(S){let[b,w]=[k,e];k<0&&(b=0),e<0&&(w=0),_.selector.setIndexes(b,w),this.indexes=[b,w]}this.moveIndexes=[m,g],this.range=u,this.resetAreaOffset(),this.el.show()}setEnd(k,e,S=!0){const{data:_,lastri:u,lastci:m}=this;if(S){if(k===u&&e===m)return;this.lastri=k,this.lastci=e}this.range=_.calSelectedRangeByEnd(k,e),Il.call(this,this.data.getSelectedRect())}reset(){const{eri:k,eci:e}=this.data.selector.range;this.setEnd(k,e)}showAutofill(k,e){if(k===-1&&e===-1)return;const{sri:S,sci:_,eri:u,eci:m}=this.range,[g,b]=[k,e],w=S-k,f=_-e,y=u-k,h=m-e;if(f>0)this.arange=new kr(S,b,u,_-1);else if(w>0)this.arange=new kr(g,_,S-1,m);else if(h<0)this.arange=new kr(S,m+1,u,b);else if(y<0)this.arange=new kr(u+1,_,g,m);else{this.arange=null;return}if(this.arange!==null){const l=this.data.getRect(this.arange);l.width+=2,l.height+=2;const{br:d,l:s,t:v,tl:c}=this;d.showAutofill(_f.call(this,l)),s.showAutofill(xf.call(this,l)),v.showAutofill(wf.call(this,l)),c.showAutofill(l)}}hideAutofill(){["br","l","t","tl"].forEach(k=>{this[k].hideAutofill()})}showClipboard(){const k=this.data.getClipboardRect();Dl.call(this,k),["br","l","t","tl"].forEach(e=>{this[e].showClipboard()})}hideClipboard(){["br","l","t","tl"].forEach(k=>{this[k].hideClipboard()})}}function Em(X){X.preventDefault(),X.stopPropagation();const{filterItems:k}=this;k.length<=0||(this.itemIndex>=0&&k[this.itemIndex].toggle(),this.itemIndex-=1,this.itemIndex<0&&(this.itemIndex=k.length-1),k[this.itemIndex].toggle())}function Tm(X){X.stopPropagation();const{filterItems:k}=this;k.length<=0||(this.itemIndex>=0&&k[this.itemIndex].toggle(),this.itemIndex+=1,this.itemIndex>k.length-1&&(this.itemIndex=0),k[this.itemIndex].toggle())}function Nl(X){X.preventDefault();const{filterItems:k}=this;k.length<=0||(X.stopPropagation(),this.itemIndex<0&&(this.itemIndex=0),k[this.itemIndex].el.click(),this.hide())}function Rm(X){const{keyCode:k}=X;switch(X.ctrlKey&&X.stopPropagation(),k){case 37:X.stopPropagation();break;case 38:Em.call(this,X);break;case 39:X.stopPropagation();break;case 40:Tm.call(this,X);break;case 13:Nl.call(this,X);break;case 9:Nl.call(this,X);break;default:X.stopPropagation();break}}class hc{constructor(k,e,S="200px"){this.filterItems=[],this.items=k,this.el=We("div",`${lt}-suggest`).css("width",S).hide(),this.itemClick=e,this.itemIndex=-1}setOffset(k){this.el.cssRemoveKeys("top","bottom").offset(k)}hide(){const{el:k}=this;this.filterItems=[],this.itemIndex=-1,k.hide(),_a(this.el.parent())}setItems(k){this.items=k}search(k){let{items:e}=this;if(/^\s*$/.test(k)||(e=e.filter(_=>(_.key||_).startsWith(k.toUpperCase()))),e=e.map(_=>{let{title:u}=_;u?typeof u=="function"&&(u=u()):u=_;const m=We("div",`${lt}-item`).child(u).on("click.stop",()=>{this.itemClick(_),this.hide()});return _.label&&m.child(We("div","label").html(_.label)),m}),this.filterItems=e,e.length<=0)return;const{el:S}=this;S.html("").children(...e).show(),Va(S.parent(),()=>{this.hide()})}bindInputEvents(k){k.on("keydown",e=>Rm.call(this,e))}}class Kr extends Xi{constructor(k){super("div",`${lt}-icon`),this.iconNameEl=We("div",`${lt}-icon-img ${k}`),this.child(this.iconNameEl)}setName(k){this.iconNameEl.className(`${lt}-icon-img ${k}`)}}function Fl(X,k){X.setMonth(X.getMonth()+k)}function Cm(X,k){const e=new Date(X);return e.setDate(k-X.getDay()+1),e}function Pm(X,k,e){const S=new Date(X,k,1,23,59,59),_=[[],[],[],[],[],[]];for(let u=0;u<6;u+=1)for(let m=0;m<7;m+=1){const g=u*7+m,b=Cm(S,g),w=b.getMonth()!==k,f=b.getMonth()===e.getMonth()&&b.getDate()===e.getDate();_[u][m]={d:b,disabled:w,active:f}}return _}class Am{constructor(k){this.value=k,this.cvalue=new Date(k),this.headerLeftEl=We("div","calendar-header-left"),this.bodyEl=We("tbody",""),this.buildAll(),this.el=We("div","x-spreadsheet-calendar").children(We("div","calendar-header").children(this.headerLeftEl,We("div","calendar-header-right").children(We("a","calendar-prev").on("click.stop",()=>this.prev()).child(new Kr("chevron-left")),We("a","calendar-next").on("click.stop",()=>this.next()).child(new Kr("chevron-right")))),We("table","calendar-body").children(We("thead","").child(We("tr","").children(...Cr("calendar.weeks").map(e=>We("th","cell").child(e)))),this.bodyEl)),this.selectChange=()=>{}}setValue(k){this.value=k,this.cvalue=new Date(k),this.buildAll()}prev(){const{value:k}=this;Fl(k,-1),this.buildAll()}next(){const{value:k}=this;Fl(k,1),this.buildAll()}buildAll(){this.buildHeaderLeft(),this.buildBody()}buildHeaderLeft(){const{value:k}=this;this.headerLeftEl.html(`${Cr("calendar.months")[k.getMonth()]} ${k.getFullYear()}`)}buildBody(){const{value:k,cvalue:e,bodyEl:S}=this,u=Pm(k.getFullYear(),k.getMonth(),e).map(m=>{const g=m.map(b=>{let w="cell";return b.disabled&&(w+=" disabled"),b.active&&(w+=" active"),We("td","").child(We("div",w).on("click.stop",()=>{this.selectChange(b.d)}).child(b.d.getDate().toString()))});return We("tr","").children(...g)});S.html("").children(...u)}}class Mm{constructor(){this.calendar=new Am(new Date),this.el=We("div",`${lt}-datepicker`).child(this.calendar.el).hide()}setValue(k){const{calendar:e}=this;return typeof k=="string"?/^\d{4}-\d{1,2}-\d{1,2}$/.test(k)&&e.setValue(new Date(k.replace(new RegExp("-","g"),"/"))):k instanceof Date&&e.setValue(k),this}change(k){this.calendar.selectChange=e=>{k(e),this.hide()}}show(){this.el.show()}hide(){this.el.hide()}}function Go(){const{inputText:X}=this;if(!/^\s*$/.test(X)){const{textlineEl:k,textEl:e,areaOffset:S}=this,_=X.split(` +`),u=Math.max(..._.map(y=>y.length)),g=k.offset().width/X.length,b=(u+1)*g+5,w=this.viewFn().width-S.left-g;let f=_.length;if(b>S.width){let y=b;b>w&&(y=w,f+=parseInt(b/w,10),f+=b%w>0?1:0),e.css("width",`${y}px`)}f*=this.rowHeight,f>S.height&&e.css("height",`${f}px`)}}function Im({target:X},k){const{value:e,selectionEnd:S}=X,_=`${e.slice(0,S)}${k}${e.slice(S)}`;X.value=_,X.setSelectionRange(S+1,S+1),this.inputText=_,this.textlineEl.html(_),Go.call(this)}function Dm(X){const{keyCode:k,altKey:e}=X;k!==13&&k!==9&&X.stopPropagation(),k===13&&e&&(Im.call(this,X,` +`),X.stopPropagation()),k===13&&!e&&X.preventDefault()}function Nm(X){const k=X.target.value,{suggest:e,textlineEl:S,validator:_}=this,{cell:u}=this;if(u!==null)if("editable"in u&&u.editable===!0||u.editable===void 0){if(this.inputText=k,_)_.type==="list"?e.search(k):e.hide();else{const m=k.lastIndexOf("=");m!==-1?e.search(k.substring(m+1)):e.hide()}S.html(k),Go.call(this),this.change("input",k)}else X.target.value=u.text;else{if(this.inputText=k,_)_.type==="list"?e.search(k):e.hide();else{const m=k.lastIndexOf("=");m!==-1?e.search(k.substring(m+1)):e.hide()}S.html(k),Go.call(this),this.change("input",k)}}function Fm(X){const{el:k}=this.textEl;setTimeout(()=>{k.focus(),k.setSelectionRange(X,X)},0)}function dc(X,k){const{textEl:e,textlineEl:S}=this;e.el.blur(),e.val(X),S.html(X),Fm.call(this,k)}function Bm(X){const{inputText:k,validator:e}=this;let S=0;if(e&&e.type==="list")this.inputText=X,S=this.inputText.length;else{const _=k.lastIndexOf("="),u=k.substring(0,_+1);let m=k.substring(_+1);m.indexOf(")")!==-1?m=m.substring(m.indexOf(")")):m="",this.inputText=`${u+X.key}(`,S=this.inputText.length,this.inputText+=`)${m}`}dc.call(this,this.inputText,S)}function jm(){this.suggest.setItems(this.formulas)}function Lm(X){let k=X.getMonth()+1,e=X.getDate();return k<10&&(k=`0${k}`),e<10&&(e=`0${e}`),`${X.getFullYear()}-${k}-${e}`}class zm{constructor(k,e,S){this.viewFn=e,this.rowHeight=S,this.formulas=k,this.suggest=new hc(k,_=>{Bm.call(this,_)}),this.datepicker=new Mm,this.datepicker.change(_=>{this.setText(Lm(_)),this.clear()}),this.areaEl=We("div",`${lt}-editor-area`).children(this.textEl=We("textarea","").on("input",_=>Nm.call(this,_)).on("paste.stop",()=>{}).on("keydown",_=>Dm.call(this,_)),this.textlineEl=We("div","textline"),this.suggest.el,this.datepicker.el).on("mousemove.stop",()=>{}).on("mousedown.stop",()=>{}),this.el=We("div",`${lt}-editor`).child(this.areaEl).hide(),this.suggest.bindInputEvents(this.textEl),this.areaOffset=null,this.freeze={w:0,h:0},this.cell=null,this.inputText="",this.change=()=>{}}setFreezeLengths(k,e){this.freeze.w=k,this.freeze.h=e}clear(){this.inputText!==""&&this.change("finished",this.inputText),this.cell=null,this.areaOffset=null,this.inputText="",this.el.hide(),this.textEl.val(""),this.textlineEl.html(""),jm.call(this),this.datepicker.hide()}setOffset(k,e="top"){const{textEl:S,areaEl:_,suggest:u,freeze:m,el:g}=this;if(k){this.areaOffset=k;const{left:b,top:w,width:f,height:y,l:h,t:l}=k,d={left:0,top:0};m.w>h&&m.h>l||(m.wh?d.top=m.h:m.h>l&&(d.left=m.w)),g.offset(d),_.offset({left:b-d.left-.8,top:w-d.top-.8}),S.offset({width:f-9+.8,height:y-3+.8});const s={left:0};s[e]=y,u.setOffset(s),u.hide()}}setCell(k,e){const{el:S,datepicker:_,suggest:u}=this;S.show(),this.cell=k;const m=k&&k.text||"";if(this.setText(m),this.validator=e,e){const{type:g}=e;g==="date"&&(_.show(),/^\s*$/.test(m)||_.setValue(m)),g==="list"&&(u.setItems(e.values()),u.search(""))}}setText(k){this.inputText=k,dc.call(this,k,k.length),Go.call(this)}}class Li extends Xi{constructor(k,e=""){super("div",`${lt}-button ${e}`),this.child(Cr(`button.${k}`))}}function Zo(){return window.devicePixelRatio||1}function Sf(){return Zo()-.5}function zt(X){return parseInt(X*Zo(),10)}function ya(X){const k=zt(X);return k>0?k-.5:.5}class Xm{constructor(k,e,S,_,u=0){this.x=k,this.y=e,this.width=S,this.height=_,this.padding=u,this.bgcolor="#ffffff",this.borderTop=null,this.borderRight=null,this.borderBottom=null,this.borderLeft=null}setBorders({top:k,bottom:e,left:S,right:_}){k&&(this.borderTop=k),_&&(this.borderRight=_),e&&(this.borderBottom=e),S&&(this.borderLeft=S)}innerWidth(){return this.width-this.padding*2-2}innerHeight(){return this.height-this.padding*2-2}textx(k){const{width:e,padding:S}=this;let{x:_}=this;return k==="left"?_+=S:k==="center"?_+=e/2:k==="right"&&(_+=e-S),_}texty(k,e){const{height:S,padding:_}=this;let{y:u}=this;return k==="top"?u+=_:k==="middle"?u+=S/2-e/2:k==="bottom"&&(u+=S-_-e),u}topxys(){const{x:k,y:e,width:S}=this;return[[k,e],[k+S,e]]}rightxys(){const{x:k,y:e,width:S,height:_}=this;return[[k+S,e],[k+S,e+_]]}bottomxys(){const{x:k,y:e,width:S,height:_}=this;return[[k,e+_],[k+S,e+_]]}leftxys(){const{x:k,y:e,height:S}=this;return[[k,e],[k,e+S]]}}function Bl(X,k,e,S,_,u,m){const g={x:0,y:0};X==="underline"?_==="bottom"?g.y=0:_==="top"?g.y=-(u+2):g.y=-u/2:X==="strike"&&(_==="bottom"?g.y=u/2:_==="top"&&(g.y=-(u/2+2))),S==="center"?g.x=m/2:S==="right"&&(g.x=m),this.line([k-g.x,e-g.y],[k-g.x+m,e-g.y])}class pc{constructor(k,e,S){this.el=k,this.ctx=k.getContext("2d"),this.resize(e,S),this.ctx.scale(Zo(),Zo())}resize(k,e){this.el.style.width=`${k}px`,this.el.style.height=`${e}px`,this.el.width=zt(k),this.el.height=zt(e)}clear(){const{width:k,height:e}=this.el;return this.ctx.clearRect(0,0,k,e),this}attr(k){return Object.assign(this.ctx,k),this}save(){return this.ctx.save(),this.ctx.beginPath(),this}restore(){return this.ctx.restore(),this}beginPath(){return this.ctx.beginPath(),this}translate(k,e){return this.ctx.translate(zt(k),zt(e)),this}scale(k,e){return this.ctx.scale(k,e),this}clearRect(k,e,S,_){return this.ctx.clearRect(k,e,S,_),this}fillRect(k,e,S,_){return this.ctx.fillRect(zt(k)-.5,zt(e)-.5,zt(S),zt(_)),this}fillText(k,e,S){return this.ctx.fillText(k,zt(e),zt(S)),this}text(k,e,S={},_=!0){const{ctx:u}=this,{align:m,valign:g,font:b,color:w,strike:f,underline:y}=S,h=e.textx(m);u.save(),u.beginPath(),this.attr({textAlign:m,textBaseline:g,font:`${b.italic?"italic":""} ${b.bold?"bold":""} ${zt(b.size)}px ${b.name}`,fillStyle:w,strokeStyle:w});const l=`${k}`.split(` +`),d=e.innerWidth(),s=[];l.forEach(a=>{const r=u.measureText(a).width;if(_&&r>zt(d)){let t={w:0,len:0,start:0};for(let i=0;i=zt(d)&&(s.push(a.substr(t.start,t.len)),t={w:0,len:0,start:i}),t.len+=1,t.w+=u.measureText(a[i]).width+1;t.len>0&&s.push(a.substr(t.start,t.len))}else s.push(a)});const v=(s.length-1)*(b.size+2);let c=e.texty(g,v);return s.forEach(a=>{const r=u.measureText(a).width;this.fillText(a,h,c),f&&Bl.call(this,"strike",h,c,m,g,b.size,r),y&&Bl.call(this,"underline",h,c,m,g,b.size,r),c+=b.size+2}),u.restore(),this}border(k,e){const{ctx:S}=this;return S.lineWidth=Sf,S.strokeStyle=e,k==="medium"?S.lineWidth=zt(2)-.5:k==="thick"?S.lineWidth=zt(3):k==="dashed"?S.setLineDash([zt(3),zt(2)]):k==="dotted"?S.setLineDash([zt(1),zt(1)]):k==="double"&&S.setLineDash([zt(2),0]),this}line(...k){const{ctx:e}=this;if(k.length>1){e.beginPath();const[S,_]=k[0];e.moveTo(ya(S),ya(_));for(let u=1;u{const k=[],e=[];let S=[],_=0,u="",m=1,g="";for(let b=0;b="a"&&w<="z")S.push(w.toUpperCase());else if(w>="0"&&w<="9"||w>="A"&&w<="Z"||w===".")S.push(w);else if(w==='"'){for(b+=1;X.charAt(b)!=='"';)S.push(X.charAt(b)),b+=1;e.push(`"${S.join("")}`),S=[]}else if(w==="-"&&/[+\-*/,(]/.test(g))S.push(w);else{if(w!=="("&&S.length>0&&e.push(S.join("")),w===")"){let f=k.pop();if(_===2)try{const[y,h]=Ti(e.pop()),[l,d]=Ti(e.pop());let s=0;for(let v=l;v<=y;v+=1)for(let c=d;c<=h;c+=1)e.push(hi(v,c)),s+=1;e.push([f,s])}catch{}else if(_===1||_===3)_===3&&e.push(u),e.push([f,m]),m=1;else for(;f!=="("&&(e.push(f),!(k.length<=0));)f=k.pop();_=0}else if(w==="="||w===">"||w==="<"){const f=X.charAt(b+1);u=w,(f==="="||f==="-")&&(u+=f,b+=1),_=3}else if(w===":")_=2;else if(w===",")_===3&&e.push(u),_=1,m+=1;else if(w==="("&&S.length>0)k.push(S.join(""));else{if(k.length>0&&(w==="+"||w==="-")){let f=k[k.length-1];if(f!=="("&&e.push(k.pop()),f==="*"||f==="/")for(;k.length>0&&(f=k[k.length-1],f!=="(");)e.push(k.pop())}else if(k.length>0){const f=k[k.length-1];(f==="*"||f==="/")&&e.push(k.pop())}k.push(w)}S=[]}g=w}}for(S.length>0&&e.push(S.join(""));k.length>0;)e.push(k.pop());return e},Wm=(X,k)=>{const[e]=X;let S=X;if(e==='"')return X.substring(1);let _=1;if(e==="-"&&(S=X.substring(1),_=-1),S[0]>="0"&&S[0]<="9")return _*Number(S);const[u,m]=Ti(S);return _*k(u,m)},$m=(X,k,e,S)=>{const _=[];for(let u=0;u"||g==="<"){let b=_.pop();Number.isNaN(b)||(b=Number(b));let w=_.pop();Number.isNaN(w)||(w=Number(w));let f=!1;g==="="?f=w===b:m===">"?f=w>b:m===">="?f=w>=b:m==="<"?f=w="a"&&g<="z"||g>="A"&&g<="Z")&&S.push(m),_.push(Wm(m,e)),S.pop()}}return _[0]},yc=(X,k,e,S=[])=>{if(X[0]==="="){const _=Um(X.substring(1));return _.length<=0?X:$m(_,k,(u,m)=>yc(e(u,m),k,e,S),S)}return X},Vm={render:yc},kf=[{key:"SUM",title:Jt("formula.sum"),render:X=>X.reduce((k,e)=>ji("+",k,e),0)},{key:"AVERAGE",title:Jt("formula.average"),render:X=>X.reduce((k,e)=>Number(k)+Number(e),0)/X.length},{key:"MAX",title:Jt("formula.max"),render:X=>Math.max(...X.map(k=>Number(k)))},{key:"MIN",title:Jt("formula.min"),render:X=>Math.min(...X.map(k=>Number(k)))},{key:"IF",title:Jt("formula._if"),render:([X,k,e])=>X?k:e},{key:"AND",title:Jt("formula.and"),render:X=>X.every(k=>k)},{key:"OR",title:Jt("formula.or"),render:X=>X.some(k=>k)},{key:"CONCAT",title:Jt("formula.concat"),render:X=>X.join("")}],Km=kf,vc={};kf.forEach(X=>{vc[X.key]=X});const va=X=>X,Bo=X=>{if(/^(-?\d*.?\d*)$/.test(X)){const k=Number(X).toFixed(2).toString(),[e,...S]=k.split("\\.");return[e.replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1,"),...S]}return X},Ha=[{key:"normal",title:Jt("format.normal"),type:"string",render:va},{key:"text",title:Jt("format.text"),type:"string",render:va},{key:"number",title:Jt("format.number"),type:"number",label:"1,000.12",render:Bo},{key:"percent",title:Jt("format.percent"),type:"number",label:"10.12%",render:X=>`${X}%`},{key:"rmb",title:Jt("format.rmb"),type:"number",label:"¥10.00",render:X=>`¥${Bo(X)}`},{key:"usd",title:Jt("format.usd"),type:"number",label:"$10.00",render:X=>`$${Bo(X)}`},{key:"eur",title:Jt("format.eur"),type:"number",label:"€10.00",render:X=>`€${Bo(X)}`},{key:"date",title:Jt("format.date"),type:"date",label:"26/09/2008",render:va},{key:"time",title:Jt("format.time"),type:"date",label:"15:59:00",render:va},{key:"datetime",title:Jt("format.datetime"),type:"date",label:"26/09/2008 15:59:00",render:va},{key:"duration",title:Jt("format.duration"),type:"date",label:"24:01:00",render:va}],mc={};Ha.forEach(X=>{mc[X.key]=X});const Gm=5,Zm={fillStyle:"#f4f5f8"},Ym={fillStyle:"#fff",lineWidth:Sf,strokeStyle:"#e6e6e6"};function Jm(){return{textAlign:"center",textBaseline:"middle",font:`500 ${zt(12)}px Source Sans Pro`,fillStyle:"#585757",lineWidth:Sf(),strokeStyle:"#e6e6e6"}}function bc(X,k,e,S=0){const{left:_,top:u,width:m,height:g}=X.cellRect(k,e);return new Xm(_,u+S,m,g,Gm)}function Yo(X,k,e,S,_=0){const{sortedRowMap:u,rows:m,cols:g}=k;if(m.isHide(e)||g.isHide(S))return;let b=e;u.has(e)&&(b=u.get(e));const w=k.getCell(b,S);if(w===null)return;let f=!1;"editable"in w&&w.editable===!1&&(f=!0);const y=k.getCellStyleOrDefault(b,S),h=bc(k,e,S,_);h.bgcolor=y.bgcolor,y.border!==void 0&&(h.setBorders(y.border),X.strokeBorders(h)),X.rect(h,()=>{let l="";k.settings.evalPaused?l=w.text||"":l=Vm.render(w.text||"",vc,(v,c)=>k.getCellTextOrDefault(c,v)),y.format&&(l=mc[y.format].render(l));const d=Object.assign({},y.font);d.size=Hm(d.size),X.text(l,h,{align:y.align,valign:y.valign,font:d,color:y.color,strike:y.strike,underline:y.underline},y.textwrap),k.validations.getError(e,S)&&X.error(h),f&&X.frozen(h)})}function Qm(X){const{data:k,draw:e}=this;if(X){const{autoFilter:S}=k;if(!S.active())return;const _=S.hrange();X.intersects(_)&&_.each((u,m)=>{const g=bc(k,u,m);e.dropdown(g)})}}function jo(X,k,e,S,_){const{draw:u,data:m}=this;u.save(),u.translate(k,e).translate(S,_);const{exceptRowSet:g}=m,b=y=>{const h=g.has(y);if(h){const l=m.rows.getHeight(y);u.translate(0,-l)}return!h},w=m.exceptRowTotalHeight(X.sri,X.eri);u.save(),u.translate(0,-w),X.each((y,h)=>{Yo(u,m,y,h)},y=>b(y)),u.restore();const f=new Set;u.save(),u.translate(0,-w),m.eachMergesInView(X,({sri:y,sci:h,eri:l})=>{if(!g.has(y))Yo(u,m,y,h);else if(!f.has(y)){f.add(y);const d=m.rows.sumHeight(y,l+1);u.translate(0,-d)}}),u.restore(),Qm.call(this,X),u.restore()}function Ll(X,k,e,S){const{draw:_}=this;_.save(),_.attr({fillStyle:"rgba(75, 137, 255, 0.08)"}).fillRect(X,k,e,S),_.restore()}function Lo(X,k,e,S,_,u){const{draw:m,data:g}=this,b=k.h,w=k.w,f=u+S,y=_+e;m.save(),m.attr(Zm),(X==="all"||X==="left")&&m.fillRect(0,f,e,b),(X==="all"||X==="top")&&m.fillRect(y,0,w,S);const{sri:h,sci:l,eri:d,eci:s}=g.selector.range;m.attr(Jm()),(X==="all"||X==="left")&&(g.rowEach(k.sri,k.eri,(v,c,a)=>{const r=f+c,t=v;m.line([0,r],[e,r]),h<=t&&t0&&g.rows.isHide(v-1)&&(m.save(),m.attr({strokeStyle:"#c6c6c6"}),m.line([5,r+5],[e-5,r+5]),m.restore())}),m.line([0,b+f],[e,b+f]),m.line([e,f],[e,b+f])),(X==="all"||X==="top")&&(g.colEach(k.sci,k.eci,(v,c,a)=>{const r=y+c,t=v;m.line([r,0],[r,S]),l<=t&&t0&&g.cols.isHide(v-1)&&(m.save(),m.attr({strokeStyle:"#c6c6c6"}),m.line([r+5,5],[r+5,S-5]),m.restore())}),m.line([w+y,0],[w+y,S]),m.line([0,S],[w+y,S])),m.restore()}function qm(X,k){const{draw:e}=this;e.save(),e.attr({fillStyle:"#f4f5f8"}).fillRect(0,0,X,k),e.restore()}function zo({sri:X,sci:k,eri:e,eci:S,w:_,h:u},m,g,b,w){const{draw:f,data:y}=this,{settings:h}=y;if(f.save(),f.attr(Ym).translate(m+b,g+w),!h.showGrid){f.restore();return}y.rowEach(X,e,(l,d,s)=>{l!==X&&f.line([0,d],[_,d]),l===e&&f.line([0,d+s],[_,d+s])}),y.colEach(k,S,(l,d,s)=>{l!==k&&f.line([d,0],[d,u]),l===S&&f.line([d+s,0],[d+s,u])}),f.restore()}function eb(X,k,e,S){const{draw:_,data:u}=this,m=u.viewWidth()-X,g=u.viewHeight()-k;_.save().translate(X,k).attr({strokeStyle:"rgba(75, 137, 255, .6)"}),_.line([0,S],[m,S]),_.line([e,0],[e,g]),_.restore()}class tb{constructor(k,e){this.el=k,this.draw=new pc(k,e.viewWidth(),e.viewHeight()),this.data=e}resetData(k){this.data=k,this.render()}render(){const{data:k}=this,{rows:e,cols:S}=k,_=S.indexWidth,u=e.height;this.draw.resize(k.viewWidth(),k.viewHeight()),this.clear();const m=k.viewRange(),g=k.freezeTotalWidth(),b=k.freezeTotalHeight(),{x:w,y:f}=k.scroll;zo.call(this,m,_,u,g,b),jo.call(this,m,_,u,-w,-f),Lo.call(this,"all",m,_,u,g,b),qm.call(this,_,u);const[y,h]=k.freeze;if(y>0||h>0){if(y>0){const d=m.clone();d.sri=0,d.eri=y-1,d.h=b,zo.call(this,d,_,u,g,0),jo.call(this,d,_,u,-w,0),Lo.call(this,"top",d,_,u,g,0)}if(h>0){const d=m.clone();d.sci=0,d.eci=h-1,d.w=g,zo.call(this,d,_,u,0,b),Lo.call(this,"left",d,_,u,0,b),jo.call(this,d,_,u,0,-f)}const l=k.freezeViewRange();zo.call(this,l,_,u,0,0),Lo.call(this,"all",l,_,u,0,0),jo.call(this,l,_,u,0,0),eb.call(this,_,u,g,b)}}clear(){this.draw.clear()}}const Xo=[["A3",11.69,16.54],["A4",8.27,11.69],["A5",5.83,8.27],["B4",9.84,13.9],["B5",6.93,9.84]],yf=["landscape","portrait"];function Jo(X){return parseInt(96*X,10)}function zl(X){X==="cancel"?this.el.hide():this.toPrint()}function rb(X){const{paper:k}=this,{value:e}=X.target,S=Xo[e];k.w=Jo(S[1]),k.h=Jo(S[2]),this.preview()}function nb(X){const{paper:k}=this,{value:e}=X.target,S=yf[e];k.orientation=S,this.preview()}let ib=class{constructor(k){this.paper={w:Jo(Xo[0][1]),h:Jo(Xo[0][2]),padding:50,orientation:yf[0],get width(){return this.orientation==="landscape"?this.h:this.w},get height(){return this.orientation==="landscape"?this.w:this.h}},this.data=k,this.el=We("div",`${lt}-print`).children(We("div",`${lt}-print-bar`).children(We("div","-title").child("Print settings"),We("div","-right").children(We("div",`${lt}-buttons`).children(new Li("cancel").on("click",zl.bind(this,"cancel")),new Li("next","primary").on("click",zl.bind(this,"next"))))),We("div",`${lt}-print-content`).children(this.contentEl=We("div","-content"),We("div","-sider").child(We("form","").children(We("fieldset","").children(We("label","").child(`${Cr("print.size")}`),We("select","").children(...Xo.map((e,S)=>We("option","").attr("value",S).child(`${e[0]} ( ${e[1]}''x${e[2]}'' )`))).on("change",rb.bind(this))),We("fieldset","").children(We("label","").child(`${Cr("print.orientation")}`),We("select","").children(...yf.map((e,S)=>We("option","").attr("value",S).child(`${Cr("print.orientations")[S]}`))).on("change",nb.bind(this))))))).hide()}resetData(k){this.data=k}preview(){const{data:k,paper:e}=this,{width:S,height:_,padding:u}=e,m=S-u*2,g=_-u*2,b=k.contentRange(),w=parseInt(b.h/g,10)+1,f=m/b.w;let y=u;const h=u;f>1&&(y+=(m-b.w)/2);let l=0,d=0;this.contentEl.html(""),this.canvases=[];const s={sri:0,sci:0,eri:0,eci:0};for(let v=0;v{Yo(i,k,o,p,n)}),i.restore(),s.sri=s.eri,s.sci=s.eci,d+=a,this.contentEl.child(We("div",`${lt}-canvas-card-wraper`).child(r.child(t)))}this.el.show()}toPrint(){this.el.hide();const{paper:k}=this,e=We("iframe","").hide(),{el:S}=e;window.document.body.appendChild(S);const{contentWindow:_}=S,u=_.document,m=document.createElement("style");m.innerHTML=` + @page { size: ${k.width}px ${k.height}px; }; + canvas { + page-break-before: auto; + page-break-after: always; + image-rendering: pixelated; + }; + `,u.head.appendChild(m),this.canvases.forEach(g=>{const b=g.cloneNode(!1);b.getContext("2d").drawImage(g,0,0),u.body.appendChild(b)}),_.print()}};const ab=[{key:"copy",title:Jt("contextmenu.copy"),label:"Ctrl+C"},{key:"cut",title:Jt("contextmenu.cut"),label:"Ctrl+X"},{key:"paste",title:Jt("contextmenu.paste"),label:"Ctrl+V"},{key:"paste-value",title:Jt("contextmenu.pasteValue"),label:"Ctrl+Shift+V"},{key:"paste-format",title:Jt("contextmenu.pasteFormat"),label:"Ctrl+Alt+V"},{key:"divider"},{key:"insert-row",title:Jt("contextmenu.insertRow")},{key:"insert-column",title:Jt("contextmenu.insertColumn")},{key:"divider"},{key:"delete-row",title:Jt("contextmenu.deleteRow")},{key:"delete-column",title:Jt("contextmenu.deleteColumn")},{key:"delete-cell-text",title:Jt("contextmenu.deleteCellText")},{key:"hide",title:Jt("contextmenu.hide")},{key:"divider"},{key:"validation",title:Jt("contextmenu.validation")},{key:"divider"},{key:"cell-printable",title:Jt("contextmenu.cellprintable")},{key:"cell-non-printable",title:Jt("contextmenu.cellnonprintable")},{key:"divider"},{key:"cell-editable",title:Jt("contextmenu.celleditable")},{key:"cell-non-editable",title:Jt("contextmenu.cellnoneditable")}];function ob(X){return X.key==="divider"?We("div",`${lt}-item divider`):We("div",`${lt}-item`).on("click",()=>{this.itemClick(X.key),this.hide()}).children(X.title(),We("div","label").child(X.label||""))}function sb(){return ab.map(X=>ob.call(this,X))}let fb=class{constructor(k,e=!1){this.menuItems=sb.call(this),this.el=We("div",`${lt}-contextmenu`).children(...this.menuItems).hide(),this.viewFn=k,this.itemClick=()=>{},this.isHide=e,this.setMode("range")}setMode(k){const e=this.menuItems[12];k==="row-col"?e.show():e.hide()}hide(){const{el:k}=this;k.hide(),_a(k)}setPosition(k,e){if(this.isHide)return;const{el:S}=this,{width:_}=S.show().offset(),u=this.viewFn(),m=u.height/2;let g=k;u.width-k<=_&&(g-=_),S.css("left",`${g}px`),e>m?S.css("bottom",`${u.height-e}px`).css("max-height",`${e}px`).css("top","auto"):S.css("top",`${e}px`).css("max-height",`${u.height-e}px`).css("bottom","auto"),Va(S)}};function ub(X,k){if(k.classList.contains("active"))return;const{left:e,top:S,width:_,height:u}=k.getBoundingClientRect(),m=We("div",`${lt}-tooltip`).html(X).show();document.body.appendChild(m.el);const g=m.box();m.css("left",`${e+_/2-g.width/2}px`).css("top",`${S+u+2}px`),ln(k,"mouseleave",()=>{document.body.contains(m.el)&&document.body.removeChild(m.el)}),ln(k,"click",()=>{document.body.contains(m.el)&&document.body.removeChild(m.el)})}class Of{constructor(k,e,S){this.tip=Cr(`toolbar.${k.replace(/-[a-z]/g,_=>_[1].toUpperCase())}`),e&&(this.tip+=` (${e})`),this.tag=k,this.shortcut=e,this.value=S,this.el=this.element(),this.change=()=>{}}element(){const{tip:k}=this;return We("div",`${lt}-toolbar-btn`).on("mouseenter",e=>{ub(k,e.target)}).attr("data-tooltip",k)}setState(){}}class Qn extends Of{dropdown(){}getValue(k){return k}element(){const{tag:k}=this;return this.dd=this.dropdown(),this.dd.change=e=>this.change(k,this.getValue(e)),super.element().child(this.dd)}setState(k){k&&(this.value=k,this.dd.setTitle(k))}}class qn extends Xi{constructor(k,e,S,_,...u){super("div",`${lt}-dropdown ${_}`),this.title=k,this.change=()=>{},this.headerClick=()=>{},typeof k=="string"?this.title=We("div",`${lt}-dropdown-title`).child(k):S&&this.title.addClass("arrow-left"),this.contentEl=We("div",`${lt}-dropdown-content`).css("width",e).hide(),this.setContentChildren(...u),this.headerEl=We("div",`${lt}-dropdown-header`),this.headerEl.on("click",()=>{this.contentEl.css("display")!=="block"?this.show():this.hide()}).children(this.title,S?We("div",`${lt}-icon arrow-right`).child(We("div",`${lt}-icon-img arrow-down`)):""),this.children(this.headerEl,this.contentEl)}setContentChildren(...k){this.contentEl.html(""),k.length>0&&this.contentEl.children(...k)}setTitle(k){this.title.html(k),this.hide()}show(){const{contentEl:k}=this;k.show(),this.parent().active(),Va(this.parent(),()=>{this.hide()})}hide(){this.parent().active(!1),this.contentEl.hide(),_a(this.parent())}}function lb(X){return We("div",`${lt}-item`).child(new Kr(X))}class gc extends qn{constructor(k,e){const S=new Kr(`align-${e}`),_=k.map(u=>lb(`align-${u}`).on("click",()=>{this.setTitle(u),this.change(u)}));super(S,"auto",!0,"bottom-left",..._)}setTitle(k){this.title.setName(`align-${k}`),this.hide()}}class cb extends Qn{constructor(k){super("align","",k)}dropdown(){const{value:k}=this;return new gc(["left","center","right"],k)}}class hb extends Qn{constructor(k){super("valign","",k)}dropdown(){const{value:k}=this;return new gc(["top","middle","bottom"],k)}}class di extends Of{element(){const{tag:k}=this;return super.element().child(new Kr(k)).on("click",()=>this.click())}click(){this.change(this.tag,this.toggle())}setState(k){this.el.active(k)}toggle(){return this.el.toggle()}active(){return this.el.hasClass("active")}}class db extends di{constructor(){super("autofilter")}setState(){}}class pb extends di{constructor(){super("font-bold","Ctrl+B")}}class yb extends di{constructor(){super("font-italic","Ctrl+I")}}class vb extends di{constructor(){super("strike","Ctrl+U")}}class mb extends di{constructor(){super("underline","Ctrl+U")}}const bb=["#ffffff","#000100","#e7e5e6","#445569","#5b9cd6","#ed7d31","#a5a5a5","#ffc001","#4371c6","#71ae47"],gb=[["#f2f2f2","#7f7f7f","#d0cecf","#d5dce4","#deeaf6","#fce5d5","#ededed","#fff2cd","#d9e2f3","#e3efd9"],["#d8d8d8","#595959","#afabac","#adb8ca","#bdd7ee","#f7ccac","#dbdbdb","#ffe59a","#b3c6e7","#c5e0b3"],["#bfbfbf","#3f3f3f","#756f6f","#8596b0","#9cc2e6","#f4b184","#c9c9c9","#fed964","#8eaada","#a7d08c"],["#a5a5a5","#262626","#3a3839","#333f4f","#2e75b5","#c45a10","#7b7b7b","#bf8e01","#2f5596","#538136"],["#7f7f7f","#0c0c0c","#171516","#222a35","#1f4e7a","#843c0a","#525252","#7e6000","#203864","#365624"]],_b=["#c00000","#fe0000","#fdc101","#ffff01","#93d051","#00b04e","#01b0f1","#0170c1","#012060","#7030a0"];function Qs(X){return We("td","").child(We("div",`${lt}-color-palette-cell`).on("click.stop",()=>this.change(X)).css("background-color",X))}class wb{constructor(){this.el=We("div",`${lt}-color-palette`),this.change=()=>{};const k=We("table","").children(We("tbody","").children(We("tr",`${lt}-theme-color-placeholders`).children(...bb.map(e=>Qs.call(this,e))),...gb.map(e=>We("tr",`${lt}-theme-colors`).children(...e.map(S=>Qs.call(this,S)))),We("tr",`${lt}-standard-colors`).children(..._b.map(e=>Qs.call(this,e)))));this.el.child(k)}}class Ef extends qn{constructor(k,e){const S=new Kr(k).css("height","16px").css("border-bottom",`3px solid ${e}`),_=new wb;_.change=u=>{this.setTitle(u),this.change(u)},super(S,"auto",!1,"bottom-left",_.el)}setTitle(k){this.title.css("border-color",k),this.hide()}}const xb=[["thin",''],["medium",''],["thick",''],["dashed",''],["dotted",'']];class Sb extends qn{constructor(k){const e=new Kr("line-type");let S=0;const _=xb.map((u,m)=>We("div",`${lt}-item state ${k===u[0]?"checked":""}`).on("click",()=>{_[S].toggle("checked"),_[m].toggle("checked"),S=m,this.hide(),this.change(u)}).child(We("div",`${lt}-line-type`).html(u[1])));super(e,"auto",!1,"bottom-left",..._)}}function Xl(...X){return We("table","").child(We("tbody","").children(...X))}function Hl(X){return We("td","").child(We("div",`${lt}-border-palette-cell`).child(new Kr(`border-${X}`)).on("click",()=>{this.mode=X;const{mode:k,style:e,color:S}=this;this.change({mode:k,style:e,color:S})}))}class kb{constructor(){this.color="#000",this.style="thin",this.mode="all",this.change=()=>{},this.ddColor=new Ef("line-color",this.color),this.ddColor.change=e=>{this.color=e},this.ddType=new Sb(this.style),this.ddType.change=([e])=>{this.style=e},this.el=We("div",`${lt}-border-palette`);const k=Xl(We("tr","").children(We("td",`${lt}-border-palette-left`).child(Xl(We("tr","").children(...["all","inside","horizontal","vertical","outside"].map(e=>Hl.call(this,e))),We("tr","").children(...["left","top","right","bottom","none"].map(e=>Hl.call(this,e))))),We("td",`${lt}-border-palette-right`).children(We("div",`${lt}-toolbar-btn`).child(this.ddColor.el),We("div",`${lt}-toolbar-btn`).child(this.ddType.el))));this.el.child(k)}}class Ob extends qn{constructor(){const k=new Kr("border-all"),e=new kb;e.change=S=>{this.change(S),this.hide()},super(k,"auto",!1,"bottom-left",e.el)}}class Eb extends Qn{constructor(){super("border")}dropdown(){return new Ob}}class qo extends Of{element(){return super.element().child(new Kr(this.tag)).on("click",()=>this.change(this.tag))}setState(k){this.el.disabled(k)}}class Tb extends qo{constructor(){super("clearformat")}}class Rb extends di{constructor(){super("paintformat")}setState(){}}class Cb extends Qn{constructor(k){super("color",void 0,k)}dropdown(){const{tag:k,value:e}=this;return new Ef(k,e)}}class Pb extends Qn{constructor(k){super("bgcolor",void 0,k)}dropdown(){const{tag:k,value:e}=this;return new Ef(k,e)}}class Ab extends qn{constructor(){const k=pf.map(e=>We("div",`${lt}-item`).on("click",()=>{this.setTitle(`${e.pt}`),this.change(e)}).child(`${e.pt}`));super("10","60px",!0,"bottom-left",...k)}}let Mb=class extends Qn{constructor(){super("font-size")}getValue(k){return k.pt}dropdown(){return new Ab}};class Ib extends qn{constructor(){const k=jl.map(e=>We("div",`${lt}-item`).on("click",()=>{this.setTitle(e.title),this.change(e)}).child(e.title));super(jl[0].title,"160px",!0,"bottom-left",...k)}}class Db extends Qn{constructor(){super("font-name")}getValue(k){return k.key}dropdown(){return new Ib}}class Nb extends qn{constructor(){let k=Ha.slice(0);k.splice(2,0,{key:"divider"}),k.splice(8,0,{key:"divider"}),k=k.map(e=>{const S=We("div",`${lt}-item`);return e.key==="divider"?S.addClass("divider"):(S.child(e.title()).on("click",()=>{this.setTitle(e.title()),this.change(e)}),e.label&&S.child(We("div","label").html(e.label))),S}),super("Normal","220px",!0,"bottom-left",...k)}setTitle(k){for(let e=0;eWe("div",`${lt}-item`).on("click",()=>{this.hide(),this.change(e)}).child(e.key));super(new Kr("formula"),"180px",!0,"bottom-left",...k)}}class jb extends Qn{constructor(){super("formula")}getValue(k){return k.key}dropdown(){return new Bb}}class Lb extends di{constructor(){super("freeze")}}class zb extends di{constructor(){super("merge")}setState(k,e){this.el.active(k).disabled(e)}}class Xb extends qo{constructor(){super("redo","Ctrl+Y")}}class Hb extends qo{constructor(){super("undo","Ctrl+Z")}}class Ub extends qo{constructor(){super("print","Ctrl+P")}}class Wb extends di{constructor(){super("textwrap")}}let $b=class extends qn{constructor(){const k=new Kr("ellipsis"),e=We("div",`${lt}-toolbar-more`);super(k,"auto",!1,"bottom-right",e),this.moreBtns=e,this.contentEl.css("max-width","420px")}};class Vb extends Qn{constructor(){super("more"),this.el.hide()}dropdown(){return new $b}show(){this.el.show()}hide(){this.el.hide()}}function ma(){return We("div",`${lt}-toolbar-divider`)}function Kb(){this.btns2=[],this.items.forEach(X=>{if(Array.isArray(X))X.forEach(({el:k})=>{const e=k.box(),{marginLeft:S,marginRight:_}=k.computedStyle();this.btns2.push([k,e.width+parseInt(S,10)+parseInt(_,10)])});else{const k=X.box(),{marginLeft:e,marginRight:S}=X.computedStyle();this.btns2.push([X,k.width+parseInt(e,10)+parseInt(S,10)])}})}function Ul(){const{el:X,btns:k,moreEl:e,btns2:S}=this,{moreBtns:_,contentEl:u}=e.dd;X.css("width",`${this.widthFn()-60}px`);const m=X.box();let g=160,b=12;const w=[],f=[];S.forEach(([y,h],l)=>{g+=h,l===S.length-1||g0?e.show():e.hide()}class Gb{constructor(k,e,S=!1){this.data=k,this.change=()=>{},this.widthFn=e,this.isHide=S;const _=k.defaultStyle();this.items=[[this.undoEl=new Hb,this.redoEl=new Xb,new Ub,this.paintformatEl=new Rb,this.clearformatEl=new Tb],ma(),[this.formatEl=new Fb],ma(),[this.fontEl=new Db,this.fontSizeEl=new Mb],ma(),[this.boldEl=new pb,this.italicEl=new yb,this.underlineEl=new mb,this.strikeEl=new vb,this.textColorEl=new Cb(_.color)],ma(),[this.fillColorEl=new Pb(_.bgcolor),this.borderEl=new Eb,this.mergeEl=new zb],ma(),[this.alignEl=new cb(_.align),this.valignEl=new hb(_.valign),this.textwrapEl=new Wb],ma(),[this.freezeEl=new Lb,this.autofilterEl=new db,this.formulaEl=new jb,this.moreEl=new Vb]],this.el=We("div",`${lt}-toolbar`),this.btns=We("div",`${lt}-toolbar-btns`),this.items.forEach(u=>{Array.isArray(u)?u.forEach(m=>{this.btns.child(m.el),m.change=(...g)=>{this.change(...g)}}):this.btns.child(u.el)}),this.el.child(this.btns),S?this.el.hide():(this.reset(),setTimeout(()=>{Kb.call(this),Ul.call(this)},0),ln(window,"resize",()=>{Ul.call(this)}))}paintformatActive(){return this.paintformatEl.active()}paintformatToggle(){this.paintformatEl.toggle()}trigger(k){this[`${k}El`].click()}resetData(k){this.data=k,this.reset()}reset(){if(this.isHide)return;const{data:k}=this,e=k.getSelectedCellStyle();this.undoEl.setState(!k.canUndo()),this.redoEl.setState(!k.canRedo()),this.mergeEl.setState(k.canUnmerge(),!k.selector.multiple()),this.autofilterEl.setState(!k.canAutofilter());const{font:S,format:_}=e;this.formatEl.setState(_),this.fontEl.setState(S.name),this.fontSizeEl.setState(S.size),this.boldEl.setState(S.bold),this.italicEl.setState(S.italic),this.underlineEl.setState(e.underline),this.strikeEl.setState(e.strike),this.textColorEl.setState(e.color),this.fillColorEl.setState(e.bgcolor),this.alignEl.setState(e.align),this.valignEl.setState(e.valign),this.textwrapEl.setState(e.textwrap),this.freezeEl.setState(k.freezeIsActive())}}class Zb{constructor(k,e,S="600px"){this.title=k,this.el=We("div",`${lt}-modal`).css("width",S).children(We("div",`${lt}-modal-header`).children(new Kr("close").on("click.stop",()=>this.hide()),this.title),We("div",`${lt}-modal-content`).children(...e)).hide()}show(){this.dimmer=We("div",`${lt}-dimmer active`),document.body.appendChild(this.dimmer.el);const{width:k,height:e}=this.el.show().box(),{clientHeight:S,clientWidth:_}=document.documentElement;this.el.offset({left:(_-k)/2,top:(S-e)/3}),window.xkeydownEsc=u=>{u.keyCode===27&&this.hide()},ln(window,"keydown",window.xkeydownEsc)}hide(){this.el.hide(),document.body.removeChild(this.dimmer.el),Ko(window,"keydown",window.xkeydownEsc),delete window.xkeydownEsc}}class ba{constructor(k,e){this.vchange=()=>{},this.el=We("div",`${lt}-form-input`),this.input=We("input","").css("width",k).on("input",S=>this.vchange(S)).attr("placeholder",e),this.el.child(this.input)}focus(){setTimeout(()=>{this.input.el.focus()},10)}hint(k){this.input.attr("placeholder",k)}val(k){return this.input.val(k)}}class qs{constructor(k,e,S,_=m=>m,u=()=>{}){this.key=k,this.getTitle=_,this.vchange=()=>{},this.el=We("div",`${lt}-form-select`),this.suggest=new hc(e.map(m=>({key:m,title:this.getTitle(m)})),m=>{this.itemClick(m.key),u(m.key),this.vchange(m.key)},S,this.el),this.el.children(this.itemEl=We("div","input-text").html(this.getTitle(k)),this.suggest.el).on("click",()=>this.show())}show(){this.suggest.search("")}itemClick(k){this.key=k,this.itemEl.html(this.getTitle(k))}val(k){return k!==void 0?(this.key=k,this.itemEl.html(this.getTitle(k)),this):this.key}}const Yb={number:/(^\d+$)|(^\d+(\.\d{0,4})?$)/,date:/^\d{4}-\d{1,2}-\d{1,2}$/};class Oi{constructor(k,e,S,_){this.label="",this.rule=e,S&&(this.label=We("label","label").css("width",`${_}px`).html(S)),this.tip=We("div","tip").child("tip").hide(),this.input=k,this.input.vchange=()=>this.validate(),this.el=We("div",`${lt}-form-field`).children(this.label,k.el,this.tip)}isShow(){return this.el.css("display")!=="none"}show(){this.el.show()}hide(){return this.el.hide(),this}val(k){return this.input.val(k)}hint(k){this.input.hint(k)}validate(){const{input:k,rule:e,tip:S,el:_}=this,u=k.val();return e.required&&/^\s*$/.test(u)?(S.html(Cr("validation.required")),_.addClass("error"),!1):(e.type||e.pattern)&&!(e.pattern||Yb[e.type]).test(u)?(S.html(Cr("validation.notMatch")),_.addClass("error"),!1):(_.removeClass("error"),!0)}}const Wl=100;class Jb extends Zb{constructor(){const k=new Oi(new qs("cell",["cell"],"100%",w=>Cr(`dataValidation.modeType.${w}`)),{required:!0},`${Cr("dataValidation.range")}:`,Wl),e=new Oi(new ba("120px","E3 or E3:F12"),{required:!0,pattern:/^([A-Z]{1,2}[1-9]\d*)(:[A-Z]{1,2}[1-9]\d*)?$/}),S=new Oi(new qs("list",["list","number","date","phone","email"],"100%",w=>Cr(`dataValidation.type.${w}`),w=>this.criteriaSelected(w)),{required:!0},`${Cr("dataValidation.criteria")}:`,Wl),_=new Oi(new qs("be",["be","nbe","eq","neq","lt","lte","gt","gte"],"160px",w=>Cr(`dataValidation.operator.${w}`),w=>this.criteriaOperatorSelected(w)),{required:!0}).hide(),u=new Oi(new ba("70px","10"),{required:!0}).hide(),m=new Oi(new ba("70px","100"),{required:!0,type:"number"}).hide(),g=new Oi(new ba("120px","a,b,c"),{required:!0}),b=new Oi(new ba("70px","10"),{required:!0,type:"number"}).hide();super(Cr("contextmenu.validation"),[We("div",`${lt}-form-fields`).children(k.el,e.el),We("div",`${lt}-form-fields`).children(S.el,_.el,u.el,m.el,b.el,g.el),We("div",`${lt}-buttons`).children(new Li("cancel").on("click",()=>this.btnClick("cancel")),new Li("remove").on("click",()=>this.btnClick("remove")),new Li("save","primary").on("click",()=>this.btnClick("save")))]),this.mf=k,this.rf=e,this.cf=S,this.of=_,this.minvf=u,this.maxvf=m,this.vf=b,this.svf=g,this.change=()=>{}}showVf(k){const e=k==="date"?"2018-11-12":"10",{vf:S}=this;S.input.hint(e),S.show()}criteriaSelected(k){const{of:e,minvf:S,maxvf:_,vf:u,svf:m}=this;k==="date"||k==="number"?(e.show(),S.rule.type=k,_.rule.type=k,k==="date"?(S.hint("2018-11-12"),_.hint("2019-11-12")):(S.hint("10"),_.hint("100")),S.show(),_.show(),u.hide(),m.hide()):(k==="list"?m.show():m.hide(),u.hide(),e.hide(),S.hide(),_.hide())}criteriaOperatorSelected(k){if(!k)return;const{minvf:e,maxvf:S,vf:_}=this;if(k==="be"||k==="nbe")e.show(),S.show(),_.hide();else{const u=this.cf.val();_.rule.type=u,u==="date"?_.hint("2018-11-12"):_.hint("10"),_.show(),e.hide(),S.hide()}}btnClick(k){if(k==="cancel")this.hide();else if(k==="remove")this.change("remove"),this.hide();else if(k==="save"){const e=["mf","rf","cf","of","svf","vf","minvf","maxvf"];for(let b=0;bthis.itemClick(X))}function Qb(X){const{filterbEl:k,filterValues:e}=this;k.html(""),Object.keys(X).forEach((_,u)=>{const m=X[_],g=e.includes(_)?"checked":"";k.child(We("div",`${lt}-item state ${g}`).on("click.stop",()=>this.filterClick(u,_)).children(_===""?Cr("filter.empty"):_,We("div","label").html(`(${m})`)))})}function Vl(){const{filterhEl:X,filterValues:k,values:e}=this;X.html(`${k.length} / ${e.length}`),X.checked(k.length===e.length)}class qb{constructor(){this.filterbEl=We("div",`${lt}-body`),this.filterhEl=We("div",`${lt}-header state`).on("click.stop",()=>this.filterClick(0,"all")),this.el=We("div",`${lt}-sort-filter`).children(this.sortAscEl=$l.call(this,"asc"),this.sortDescEl=$l.call(this,"desc"),_c("divider"),We("div",`${lt}-filter`).children(this.filterhEl,this.filterbEl),We("div",`${lt}-buttons`).children(new Li("cancel").on("click",()=>this.btnClick("cancel")),new Li("ok","primary").on("click",()=>this.btnClick("ok")))).hide(),this.ci=null,this.sortDesc=null,this.values=null,this.filterValues=[]}btnClick(k){if(k==="ok"){const{ci:e,sort:S,filterValues:_}=this;this.ok&&this.ok(e,S,"in",_)}this.hide()}itemClick(k){this.sort=k;const{sortAscEl:e,sortDescEl:S}=this;e.checked(k==="asc"),S.checked(k==="desc")}filterClick(k,e){const{filterbEl:S,filterValues:_,values:u}=this,m=S.children();e==="all"?m.length===_.length?(this.filterValues=[],m.forEach(g=>We(g).checked(!1))):(this.filterValues=Array.from(u),m.forEach(g=>We(g).checked(!0))):We(m[k]).toggle("checked")?_.push(e):_.splice(_.findIndex(b=>b===e),1),Vl.call(this)}set(k,e,S,_){this.ci=k;const{sortAscEl:u,sortDescEl:m}=this;_!==null?(this.sort=_.order,u.checked(_.asc()),m.checked(_.desc())):(this.sortDesc=null,u.checked(!1),m.checked(!1)),this.values=Object.keys(e),this.filterValues=S?Array.from(S.value):Object.keys(e),Qb.call(this,e,S),Vl.call(this)}setOffset(k){this.el.offset(k).show();let e=1;Va(this.el,()=>{e<=0&&this.hide(),e-=1})}show(){this.el.show()}hide(){this.el.hide(),_a(this.el)}}function wc(X,k){const e=We("div",`${lt}-toast`),S=We("div",`${lt}-dimmer active`),_=()=>{document.body.removeChild(e.el),document.body.removeChild(S.el)};e.children(We("div",`${lt}-toast-header`).children(new Kr("close").on("click.stop",()=>_()),X),We("div",`${lt}-toast-content`).html(k)),document.body.appendChild(e.el),document.body.appendChild(S.el);const{width:u,height:m}=e.box(),{clientHeight:g,clientWidth:b}=document.documentElement;e.offset({left:(b-u)/2,top:(g-m)/3})}function ef(X,k){let e;return(...S)=>{const _=this,u=S;e||(e=setTimeout(()=>{e=null,X.apply(_,u)},k))}}function eg(){const{data:X,verticalScrollbar:k,horizontalScrollbar:e}=this,{l:S,t:_,left:u,top:m,width:g,height:b}=X.getSelectedRect(),w=this.getTableOffset();if(Math.abs(u)+g>w.width)e.move({left:S+g-w.width});else{const f=X.freezeTotalWidth();uw.height)k.move({top:_+b-w.height-1});else{const f=X.freezeTotalHeight();m0&&(g-=1):k==="right"?(w!==g&&(g=w),g0&&(m-=1):k==="down"?(b!==m&&(m=b),m<_.len-1&&(m+=1)):k==="row-first"?g=0:k==="row-last"?g=u.len-1:k==="col-first"?m=0:k==="col-last"&&(m=_.len-1),X&&(e.moveIndexes=[m,g]),zi.call(this,X,m,g),eg.call(this)}function tg(X){if(X.buttons!==0||X.target.className===`${lt}-resizer-hover`)return;const{offsetX:k,offsetY:e}=X,{rowResizer:S,colResizer:_,tableEl:u,data:m}=this,{rows:g,cols:b}=m;if(k>b.indexWidth&&e>g.height){S.hide(),_.hide();return}const w=u.box(),f=m.getCellRectByXY(X.offsetX,X.offsetY);f.ri>=0&&f.ci===-1?(f.width=b.indexWidth,S.show(f,{width:w.width}),g.isHide(f.ri-1)?S.showUnhide(f.ri):S.hideUnhide()):S.hide(),f.ri===-1&&f.ci>=0?(f.height=g.height,_.show(f,{height:w.height}),b.isHide(f.ci-1)?_.showUnhide(f.ci):_.hideUnhide()):_.hide()}function rg(X){const{verticalScrollbar:k,horizontalScrollbar:e,data:S}=this,{top:_}=k.scroll(),{left:u}=e.scroll(),{rows:m,cols:g}=S,{deltaY:b,deltaX:w}=X,f=(v,c)=>{let a=v,r=0;do r=c(a),a+=1;while(r<=0);return r},y=v=>{if(v>0){const c=S.scroll.ri+1;if(cm.getHeight(r));k.move({top:_+a-1})}}else{const c=S.scroll.ri-1;if(c>=0){const a=f(c,r=>m.getHeight(r));k.move({top:c===0?0:_-a})}}},h=v=>{if(v>0){const c=S.scroll.ci+1;if(cg.getWidth(r));e.move({left:u+a-1})}}else{const c=S.scroll.ci-1;if(c>=0){const a=f(c,r=>g.getWidth(r));e.move({left:c===0?0:u-a})}}},l=Math.abs(b),d=Math.abs(w),s=Math.max(l,d);/Firefox/i.test(window.navigator.userAgent)&&ef(y(X.detail),50),s===d&&ef(h(w),50),s===l&&ef(y(b),50)}function ng(X,k){const{verticalScrollbar:e,horizontalScrollbar:S}=this,{top:_}=e.scroll(),{left:u}=S.scroll();X==="left"||X==="right"?S.move({left:u-k}):(X==="up"||X==="down")&&e.move({top:_-k})}function Tf(){const{data:X,verticalScrollbar:k}=this,{height:e}=this.getTableOffset(),S=X.exceptRowTotalHeight(0,-1);k.set(e,X.rows.totalHeight()-S)}function Rf(){const{data:X,horizontalScrollbar:k}=this,{width:e}=this.getTableOffset();X&&k.set(e,X.cols.totalWidth())}function ig(){const{selector:X,data:k,editor:e}=this,[S,_]=k.freeze;if(S>0||_>0){const u=k.freezeTotalWidth(),m=k.freezeTotalHeight();e.setFreezeLengths(u,m)}X.resetAreaOffset()}function un(){const{tableEl:X,overlayerEl:k,overlayerCEl:e,table:S,toolbar:_,selector:u,el:m}=this,g=this.getTableOffset(),b=this.getRect();X.attr(b),k.offset(b),e.offset(g),m.css("width",`${b.width}px`),Tf.call(this),Rf.call(this),ig.call(this),S.render(),_.reset(),u.reset()}function Ka(){const{data:X,selector:k}=this;X.clearClipboard(),k.hideClipboard()}function vf(){const{data:X,selector:k}=this;X.copy(),X.copyToSystemClipboard(),k.showClipboard()}function Kl(){const{data:X,selector:k}=this;X.cut(),k.showClipboard()}function Ua(X,k){const{data:e}=this;if(e.settings.mode!=="read"){if(e.paste(X,S=>wc("Tip",S)))un.call(this);else if(k){const S=k.clipboardData.getData("text/plain");this.data.pasteFromText(S),un.call(this)}}}function ag(){this.data.hideRowsOrCols(),un.call(this)}function Gl(X,k){this.data.unhideRowsOrCols(X,k),un.call(this)}function og(){const{data:X}=this;X.autofilter(),un.call(this)}function sg(){const{toolbar:X}=this;X.paintformatActive()&&(Ua.call(this,"format"),Ka.call(this),X.paintformatToggle())}function Zl(X){const{selector:k,data:e,table:S,sortFilter:_}=this,{offsetX:u,offsetY:m}=X,g=X.target.className===`${lt}-selector-corner`,b=e.getCellRectByXY(u,m),{left:w,top:f,width:y,height:h}=b;let{ri:l,ci:d}=b;const{autoFilter:s}=e;if(s.includes(l,d)&&w+y-20e.rows.getCell(c,a));_.hide(),_.set(d,v,s.getFilter(d),s.getSort(d)),_.setOffset({left:w,top:f+h+2});return}X.shiftKey||(g?k.showAutofill(l,d):zi.call(this,!1,l,d),sc(window,v=>{({ri:l,ci:d}=e.getCellRectByXY(v.offsetX,v.offsetY)),g?k.showAutofill(l,d):v.buttons===1&&!v.shiftKey&&zi.call(this,!0,l,d,!0,!0)},()=>{g&&k.arange&&e.settings.mode!=="read"&&e.autofill(k.arange,"all",v=>wc("Tip",v))&&S.render(),k.hideAutofill(),sg.call(this)})),!g&&X.buttons===1&&X.shiftKey&&zi.call(this,!0,l,d)}function Ga(){const{editor:X,data:k}=this,e=k.getSelectedRect(),S=this.getTableOffset();let _="top";e.top>S.height/2&&(_="bottom"),X.setOffset(e,_)}function Wa(){const{editor:X,data:k}=this;k.settings.mode!=="read"&&(Ga.call(this),X.setCell(k.getSelectedCell(),k.getSelectedValidator()),Ka.call(this))}function fg(X){const{data:k,table:e,selector:S}=this;k.scrolly(X,()=>{S.resetBRLAreaOffset(),Ga.call(this),e.render()})}function ug(X){const{data:k,table:e,selector:S}=this;k.scrollx(X,()=>{S.resetBRTAreaOffset(),Ga.call(this),e.render()})}function lg(X,k){const{ri:e}=X,{table:S,selector:_,data:u}=this;u.rows.setHeight(e,k),S.render(),_.resetAreaOffset(),Tf.call(this),Ga.call(this)}function cg(X,k){const{ci:e}=X,{table:S,selector:_,data:u}=this;u.cols.setWidth(e,k),S.render(),_.resetAreaOffset(),Rf.call(this),Ga.call(this)}function tf(X,k="finished"){const{data:e,table:S}=this;if(e.settings.mode==="read")return;e.setSelectedCellText(X,k);const{ri:_,ci:u}=e.selector;k==="finished"?S.render():this.trigger("cell-edited",X,_,u)}function Ho(X){const{data:k}=this;k.settings.mode!=="read"&&(X==="insert-row"?k.insert("row"):X==="delete-row"?k.delete("row"):X==="insert-column"?k.insert("column"):X==="delete-column"?k.delete("column"):X==="delete-cell"?k.deleteCell():X==="delete-cell-format"?k.deleteCell("format"):X==="delete-cell-text"?k.deleteCell("text"):X==="cell-printable"?k.setSelectedCellAttr("printable",!0):X==="cell-non-printable"?k.setSelectedCellAttr("printable",!1):X==="cell-editable"?k.setSelectedCellAttr("editable",!0):X==="cell-non-editable"&&k.setSelectedCellAttr("editable",!1),Ka.call(this),un.call(this))}function hg(X,k){const{data:e}=this;if(X==="undo")this.undo();else if(X==="redo")this.redo();else if(X==="print")this.print.preview();else if(X==="paintformat")k===!0?vf.call(this):Ka.call(this);else if(X==="clearformat")Ho.call(this,"delete-cell-format");else if(X!=="link"){if(X!=="chart")if(X==="autofilter")og.call(this);else if(X==="freeze")if(k){const{ri:S,ci:_}=e.selector;this.freeze(S,_)}else this.freeze(0,0);else e.setSelectedCellAttr(X,k),X==="formula"&&!e.selector.multiple()&&Wa.call(this),un.call(this)}}function dg(X,k,e,S){this.data.setAutoFilter(X,k,e,S),un.call(this)}function pg(){const{selector:X,overlayerEl:k,rowResizer:e,colResizer:S,verticalScrollbar:_,horizontalScrollbar:u,editor:m,contextMenu:g,toolbar:b,modalValidation:w,sortFilter:f}=this;k.on("mousemove",y=>{tg.call(this,y)}).on("mousedown",y=>{m.clear(),g.hide(),y.buttons===2?(this.data.xyInSelectedRect(y.offsetX,y.offsetY)||Zl.call(this,y),g.setPosition(y.offsetX,y.offsetY),y.stopPropagation()):y.detail===2?Wa.call(this):Zl.call(this,y)}).on("mousewheel.stop",y=>{rg.call(this,y)}).on("mouseout",y=>{const{offsetX:h,offsetY:l}=y;l<=0&&S.hide(),h<=0&&e.hide()}),X.inputChange=y=>{tf.call(this,y,"input"),Wa.call(this)},wm(k.el,{move:(y,h)=>{ng.call(this,y,h)}}),b.change=(y,h)=>hg.call(this,y,h),f.ok=(y,h,l,d)=>dg.call(this,y,h,l,d),e.finishedFn=(y,h)=>{lg.call(this,y,h)},S.finishedFn=(y,h)=>{cg.call(this,y,h)},e.unhideFn=y=>{Gl.call(this,"row",y)},S.unhideFn=y=>{Gl.call(this,"col",y)},_.moveFn=(y,h)=>{fg.call(this,y,h)},u.moveFn=(y,h)=>{ug.call(this,y,h)},m.change=(y,h)=>{tf.call(this,h,y)},w.change=(y,...h)=>{y==="save"?this.data.addValidation(...h):this.data.removeValidation()},g.itemClick=y=>{y==="validation"?w.setValue(this.data.getSelectedValidation()):y==="copy"?vf.call(this):y==="cut"?Kl.call(this):y==="paste"?Ua.call(this,"all"):y==="paste-value"?Ua.call(this,"text"):y==="paste-format"?Ua.call(this,"format"):y==="hide"?ag.call(this):Ho.call(this,y)},ln(window,"resize",()=>{this.reload()}),ln(window,"click",y=>{this.focusing=k.contains(y.target)}),ln(window,"paste",y=>{this.focusing&&(Ua.call(this,"all",y),y.preventDefault())}),ln(window,"keydown",y=>{if(!this.focusing)return;const h=y.keyCode||y.which,{key:l,ctrlKey:d,shiftKey:s,metaKey:v}=y;if(d||v)switch(h){case 90:this.undo(),y.preventDefault();break;case 89:this.redo(),y.preventDefault();break;case 67:vf.call(this),y.preventDefault();break;case 88:Kl.call(this),y.preventDefault();break;case 85:b.trigger("underline"),y.preventDefault();break;case 86:break;case 37:Yn.call(this,s,"row-first"),y.preventDefault();break;case 38:Yn.call(this,s,"col-first"),y.preventDefault();break;case 39:Yn.call(this,s,"row-last"),y.preventDefault();break;case 40:Yn.call(this,s,"col-last"),y.preventDefault();break;case 32:zi.call(this,!1,-1,this.data.selector.ci,!1),y.preventDefault();break;case 66:b.trigger("bold");break;case 73:b.trigger("italic");break}else{switch(h){case 32:s&&zi.call(this,!1,this.data.selector.ri,-1,!1);break;case 27:g.hide(),Ka.call(this);break;case 37:Yn.call(this,s,"left"),y.preventDefault();break;case 38:Yn.call(this,s,"up"),y.preventDefault();break;case 39:Yn.call(this,s,"right"),y.preventDefault();break;case 40:Yn.call(this,s,"down"),y.preventDefault();break;case 9:m.clear(),Yn.call(this,!1,s?"left":"right"),y.preventDefault();break;case 13:m.clear(),Yn.call(this,!1,s?"up":"down"),y.preventDefault();break;case 8:Ho.call(this,"delete-cell-text"),y.preventDefault();break}l==="Delete"?(Ho.call(this,"delete-cell-text"),y.preventDefault()):h>=65&&h<=90||h>=48&&h<=57||h>=96&&h<=105||y.key==="="?(tf.call(this,y.key,"input"),Wa.call(this)):h===113&&Wa.call(this)}})}class yg{constructor(k,e){this.eventMap=xm();const{view:S,showToolbar:_,showContextmenu:u}=e.settings;this.el=We("div",`${lt}-sheet`),this.toolbar=new Gb(e,S.width,!_),this.print=new ib(e),k.children(this.toolbar.el,this.el,this.print.el),this.data=e,this.tableEl=We("canvas",`${lt}-table`),this.rowResizer=new Al(!1,e.rows.height),this.colResizer=new Al(!0,e.cols.minWidth),this.verticalScrollbar=new Ml(!0),this.horizontalScrollbar=new Ml(!1),this.editor=new zm(Km,()=>this.getTableOffset(),e.rows.height),this.modalValidation=new Jb,this.contextMenu=new fb(()=>this.getRect(),!u),this.selector=new Om(e),this.overlayerCEl=We("div",`${lt}-overlayer-content`).children(this.editor.el,this.selector.el),this.overlayerEl=We("div",`${lt}-overlayer`).child(this.overlayerCEl),this.sortFilter=new qb,this.el.children(this.tableEl,this.overlayerEl.el,this.rowResizer.el,this.colResizer.el,this.verticalScrollbar.el,this.horizontalScrollbar.el,this.contextMenu.el,this.modalValidation.el,this.sortFilter.el),this.table=new tb(this.tableEl.el,e),pg.call(this),un.call(this),zi.call(this,!1,0,0)}on(k,e){return this.eventMap.on(k,e),this}trigger(k,...e){const{eventMap:S}=this;S.fire(k,e)}resetData(k){this.editor.clear(),this.data=k,Tf.call(this),Rf.call(this),this.toolbar.resetData(k),this.print.resetData(k),this.selector.resetData(k),this.table.resetData(k)}loadData(k){return this.data.setData(k),un.call(this),this}freeze(k,e){const{data:S}=this;return S.setFreeze(k,e),un.call(this),this}undo(){this.data.undo(),un.call(this)}redo(){this.data.redo(),un.call(this)}reload(){return un.call(this),this}getRect(){const{data:k}=this;return{width:k.viewWidth(),height:k.viewHeight()}}getTableOffset(){const{rows:k,cols:e}=this.data,{width:S,height:_}=this.getRect();return{width:S-e.indexWidth,height:_-k.height,left:e.indexWidth,top:k.height}}}class vg extends qn{constructor(k){const e=new Kr("ellipsis");super(e,"auto",!1,"top-left"),this.contentClick=k}reset(k){const e=k.map((S,_)=>We("div",`${lt}-item`).css("width","150px").css("font-weight","normal").on("click",()=>{this.contentClick(_),this.hide()}).child(S));this.setContentChildren(...e)}setTitle(){}}const mg=[{key:"delete",title:Jt("contextmenu.deleteSheet")}];function bg(X){return We("div",`${lt}-item`).child(X.title()).on("click",()=>{this.itemClick(X.key),this.hide()})}function gg(){return mg.map(X=>bg.call(this,X))}class _g{constructor(){this.el=We("div",`${lt}-contextmenu`).css("width","160px").children(...gg.call(this)).hide(),this.itemClick=()=>{}}hide(){const{el:k}=this;k.hide(),_a(k)}setOffset(k){const{el:e}=this;e.offset(k),e.show(),Va(e)}}class wg{constructor(k=()=>{},e=()=>{},S=()=>{},_=()=>{}){this.swapFunc=e,this.updateFunc=_,this.dataNames=[],this.activeEl=null,this.deleteEl=null,this.items=[],this.moreEl=new vg(u=>{this.clickSwap2(this.items[u])}),this.contextMenu=new _g,this.contextMenu.itemClick=S,this.el=We("div",`${lt}-bottombar`).children(this.contextMenu.el,this.menuEl=We("ul",`${lt}-menu`).child(We("li","").children(new Kr("add").on("click",()=>{k()}),We("span","").child(this.moreEl))))}addItem(k,e){this.dataNames.push(k);const S=We("li",e?"active":"").child(k);S.on("click",()=>{this.clickSwap2(S)}).on("contextmenu",_=>{const{offsetLeft:u,offsetHeight:m}=_.target;this.contextMenu.setOffset({left:u,bottom:m+1}),this.deleteEl=S}).on("dblclick",()=>{const _=S.html(),u=new ba("auto","");u.val(_),u.input.on("blur",({target:m})=>{const{value:g}=m,b=this.dataNames.findIndex(w=>w===_);this.renameItem(b,g)}),S.html("").child(u.el),u.focus()}),e&&this.clickSwap(S),this.items.push(S),this.menuEl.child(S),this.moreEl.reset(this.dataNames)}renameItem(k,e){this.dataNames.splice(k,1,e),this.moreEl.reset(this.dataNames),this.items[k].html("").child(e),this.updateFunc(k,e)}clear(){this.items.forEach(k=>{this.menuEl.removeChild(k.el)}),this.items=[],this.dataNames=[],this.moreEl.reset(this.dataNames)}deleteItem(){const{activeEl:k,deleteEl:e}=this;if(this.items.length>1){const S=this.items.findIndex(_=>_===e);if(this.items.splice(S,1),this.dataNames.splice(S,1),this.menuEl.removeChild(e.el),this.moreEl.reset(this.dataNames),k===e){const[_]=this.items;return this.activeEl=_,this.activeEl.toggle(),[S,0]}return[S,-1]}return[-1]}clickSwap2(k){const e=this.items.findIndex(S=>S===k);this.clickSwap(k),this.activeEl.toggle(),this.swapFunc(e)}clickSwap(k){this.activeEl!==null&&this.activeEl.toggle(),this.activeEl=k}}class xg{constructor(k,e={}){let S=k;this.options={showBottomBar:!0,...e},this.sheetIndex=1,this.datas=[],typeof k=="string"&&(S=document.querySelector(k)),this.bottombar=this.options.showBottomBar?new wg(()=>{const u=this.addSheet();this.sheet.resetData(u)},u=>{const m=this.datas[u];this.sheet.resetData(m)},()=>{this.deleteSheet()},(u,m)=>{this.datas[u].name=m}):null,this.data=this.addSheet();const _=We("div",`${lt}`).on("contextmenu",u=>u.preventDefault());S.appendChild(_.el),this.sheet=new yg(_,this.data),this.bottombar!==null&&_.child(this.bottombar.el)}addSheet(k,e=!0){const S=k||`sheet${this.sheetIndex}`,_=new _m(S,this.options);return _.change=(...u)=>{this.sheet.trigger("change",...u)},this.datas.push(_),this.bottombar!==null&&this.bottombar.addItem(S,e),this.sheetIndex+=1,_}deleteSheet(){if(this.bottombar===null)return;const[k,e]=this.bottombar.deleteItem();k>=0&&(this.datas.splice(k,1),e>=0&&this.sheet.resetData(this.datas[e]))}loadData(k){const e=Array.isArray(k)?k:[k];if(this.bottombar!==null&&this.bottombar.clear(),this.datas=[],e.length>0)for(let S=0;Sk.getData())}cellText(k,e,S,_=0){return this.datas[_].setCellText(k,e,S,"finished"),this}cell(k,e,S=0){return this.datas[S].getCell(k,e)}cellStyle(k,e,S=0){return this.datas[S].getCellStyle(k,e)}reRender(){return this.sheet.table.render(),this}on(k,e){return this.sheet.on(k,e),this}validate(){const{validations:k}=this.data;return k.errors.size<=0}change(k){return this.sheet.on("change",k),this}static locale(k,e){ac(k,e)}}const Sg=(X,k={})=>new xg(X,k);window&&(window.x_spreadsheet=Sg,window.x_spreadsheet.locale=(X,k)=>ac(X,k));var mf={},kg={get exports(){return mf},set exports(X){mf=X}};(function(X,k){(function(e){X.exports=e()})(function(){return function(){function e(S,_,u){function m(w,f){if(!_[w]){if(!S[w]){var y=typeof Do=="function"&&Do;if(!f&&y)return y(w,!0);if(g)return g(w,!0);var h=new Error("Cannot find module '"+w+"'");throw h.code="MODULE_NOT_FOUND",h}var l=_[w]={exports:{}};S[w][0].call(l.exports,function(d){var s=S[w][1][d];return m(s||d)},l,l.exports,e,S,_,u)}return _[w].exports}for(var g=typeof Do=="function"&&Do,b=0;b2&&arguments[2]!==void 0?arguments[2]:0;if(u(this,f),!h)this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;else if(typeof h=="string"){var d=b.decodeAddress(h);this.nativeCol=d.col+l,this.nativeColOff=0,this.nativeRow=d.row+l,this.nativeRowOff=0}else h.nativeCol!==void 0?(this.nativeCol=h.nativeCol||0,this.nativeColOff=h.nativeColOff||0,this.nativeRow=h.nativeRow||0,this.nativeRowOff=h.nativeRowOff||0):h.col!==void 0?(this.col=h.col+l,this.row=h.row+l):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);this.worksheet=y}return g(f,[{key:"col",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(h){this.nativeCol=Math.floor(h),this.nativeColOff=Math.floor((h-this.nativeCol)*this.colWidth)}},{key:"row",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(h){this.nativeRow=Math.floor(h),this.nativeRowOff=Math.floor((h-this.nativeRow)*this.rowHeight)}},{key:"colWidth",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(this.worksheet.getColumn(this.nativeCol+1).width*1e4):64e4}},{key:"rowHeight",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(this.worksheet.getRow(this.nativeRow+1).height*1e4):18e4}},{key:"model",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(h){this.nativeCol=h.nativeCol,this.nativeColOff=h.nativeColOff,this.nativeRow=h.nativeRow,this.nativeRowOff=h.nativeRowOff}}],[{key:"asInstance",value:function(h){return h instanceof f||h==null?h:new f(h)}}]),f}();S.exports=w},{"../utils/col-cache":19}],3:[function(e,S,_){function u(L,F){if(!(L instanceof F))throw new TypeError("Cannot call a class as a function")}function m(L,F){for(var M=0;M0||this.type===L.Types.Merge}},{key:"master",get:function(){return this.type===L.Types.Merge?this._value.master:this}},{key:"isHyperlink",get:function(){return this._value.type===L.Types.Hyperlink}},{key:"hyperlink",get:function(){return this._value.hyperlink}},{key:"value",get:function(){return this._value.value},set:function(M){if(this.type===L.Types.Merge){this._value.master.value=M;return}this._value.release(),this._value=N.create(N.getType(M),this,M)}},{key:"note",get:function(){return this._comment&&this._comment.note},set:function(M){this._comment=new l(M)}},{key:"text",get:function(){return this._value.toString()}},{key:"html",get:function(){return w.escapeHtml(this.text)}},{key:"formula",get:function(){return this._value.formula}},{key:"result",get:function(){return this._value.result}},{key:"formulaType",get:function(){return this._value.formulaType}},{key:"fullAddress",get:function(){var M=this._row.worksheet;return{sheetName:M.name,address:this.address,row:this.row,col:this.col}}},{key:"name",get:function(){return this.names[0]},set:function(M){this.names=[M]}},{key:"names",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(M){var D=this,R=this.workbook.definedNames;R.removeAllNames(this.fullAddress),M.forEach(function(P){R.addEx(D.fullAddress,P)})}},{key:"_dataValidations",get:function(){return this.worksheet.dataValidations}},{key:"dataValidation",get:function(){return this._dataValidations.find(this.address)},set:function(M){this._dataValidations.add(this.address,M)}},{key:"model",get:function(){var M=this._value.model;return M.style=this.style,this._comment&&(M.comment=this._comment.model),M},set:function(M){if(this._value.release(),this._value=N.create(M.type,this),this._value.model=M,M.comment)switch(M.comment.type){case"note":this._comment=l.fromModel(M.comment);break}M.style?this.style=M.style:this.style={}}}]),L}();d.Types=f.ValueType;var s=function(){function L(F){u(this,L),this.model={address:F.address,type:d.Types.Null}}return g(L,[{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){}},{key:"toString",value:function(){return""}},{key:"value",get:function(){return null},set:function(M){}},{key:"type",get:function(){return d.Types.Null}},{key:"effectiveType",get:function(){return d.Types.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),v=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Number,value:M}}return g(L,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.Number}},{key:"effectiveType",get:function(){return d.Types.Number}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),c=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:M}}return g(L,[{key:"toCsvString",value:function(){return'"'.concat(this.model.value.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.String}},{key:"effectiveType",get:function(){return d.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),a=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:M}}return g(L,[{key:"toString",value:function(){return this.model.value.richText.map(function(M){return M.text}).join("")}},{key:"toCsvString",value:function(){return'"'.concat(this.text.replace(/"/g,'""'),'"')}},{key:"release",value:function(){}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.RichText}},{key:"effectiveType",get:function(){return d.Types.RichText}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),r=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Date,value:M}}return g(L,[{key:"toCsvString",value:function(){return this.model.value.toISOString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.Date}},{key:"effectiveType",get:function(){return d.Types.Date}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),t=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Hyperlink,text:M?M.text:void 0,hyperlink:M?M.hyperlink:void 0},M&&M.tooltip&&(this.model.tooltip=M.tooltip)}return g(L,[{key:"toCsvString",value:function(){return this.model.hyperlink}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.text}},{key:"value",get:function(){var M={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(M.tooltip=this.model.tooltip),M},set:function(M){this.model={text:M.text,hyperlink:M.hyperlink},M.tooltip&&(this.model.tooltip=M.tooltip)}},{key:"text",get:function(){return this.model.text},set:function(M){this.model.text=M}},{key:"hyperlink",get:function(){return this.model.hyperlink},set:function(M){this.model.hyperlink=M}},{key:"type",get:function(){return d.Types.Hyperlink}},{key:"effectiveType",get:function(){return d.Types.Hyperlink}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),i=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Merge,master:M?M.address:void 0},this._master=M,M&&M.addMergeRef()}return g(L,[{key:"isMergedTo",value:function(M){return M===this._master}},{key:"toCsvString",value:function(){return""}},{key:"release",value:function(){this._master.releaseMergeRef()}},{key:"toString",value:function(){return this.value.toString()}},{key:"value",get:function(){return this._master.value},set:function(M){M instanceof d?(this._master&&this._master.releaseMergeRef(),M.addMergeRef(),this._master=M):this._master.value=M}},{key:"master",get:function(){return this._master}},{key:"type",get:function(){return d.Types.Merge}},{key:"effectiveType",get:function(){return this._master.effectiveType}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),n=function(){function L(F,M){u(this,L),this.cell=F,this.model={address:F.address,type:d.Types.Formula,shareType:M?M.shareType:void 0,ref:M?M.ref:void 0,formula:M?M.formula:void 0,sharedFormula:M?M.sharedFormula:void 0,result:M?M.result:void 0}}return g(L,[{key:"_copyModel",value:function(M){var D={},R=function(E){var A=M[E];A&&(D[E]=A)};return R("formula"),R("result"),R("ref"),R("shareType"),R("sharedFormula"),D}},{key:"validate",value:function(M){switch(N.getType(M)){case d.Types.Null:case d.Types.String:case d.Types.Number:case d.Types.Date:break;case d.Types.Hyperlink:case d.Types.Formula:default:throw new Error("Cannot process that type of result value")}}},{key:"_getTranslatedFormula",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var M=this.cell.worksheet,D=M.findCell(this.model.sharedFormula);this._translatedFormula=D&&h(D.formula,D.address,this.model.address)}return this._translatedFormula}},{key:"toCsvString",value:function(){return"".concat(this.model.result||"")}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.result?this.model.result.toString():""}},{key:"value",get:function(){return this._copyModel(this.model)},set:function(M){this.model=this._copyModel(M)}},{key:"dependencies",get:function(){var M=this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g),D=this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g,"").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g);return{ranges:M,cells:D}}},{key:"formula",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(M){this.model.formula=M}},{key:"formulaType",get:function(){return this.model.formula?f.FormulaType.Master:this.model.sharedFormula?f.FormulaType.Shared:f.FormulaType.None}},{key:"result",get:function(){return this.model.result},set:function(M){this.model.result=M}},{key:"type",get:function(){return d.Types.Formula}},{key:"effectiveType",get:function(){var M=this.model.result;return M==null?f.ValueType.Null:M instanceof String||typeof M=="string"?f.ValueType.String:typeof M=="number"?f.ValueType.Number:M instanceof Date?f.ValueType.Date:M.text&&M.hyperlink?f.ValueType.Hyperlink:M.formula?f.ValueType.Formula:f.ValueType.Null}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),o=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.SharedString,value:M}}return g(L,[{key:"toCsvString",value:function(){return this.model.value.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.SharedString}},{key:"effectiveType",get:function(){return d.Types.SharedString}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),p=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Boolean,value:M}}return g(L,[{key:"toCsvString",value:function(){return this.model.value?1:0}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.Boolean}},{key:"effectiveType",get:function(){return d.Types.Boolean}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),O=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.Error,value:M}}return g(L,[{key:"toCsvString",value:function(){return this.toString()}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value.error.toString()}},{key:"value",get:function(){return this.model.value},set:function(M){this.model.value=M}},{key:"type",get:function(){return d.Types.Error}},{key:"effectiveType",get:function(){return d.Types.Error}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),C=function(){function L(F,M){u(this,L),this.model={address:F.address,type:d.Types.String,value:JSON.stringify(M),rawValue:M}}return g(L,[{key:"toCsvString",value:function(){return this.model.value}},{key:"release",value:function(){}},{key:"toString",value:function(){return this.model.value}},{key:"value",get:function(){return this.model.rawValue},set:function(M){this.model.rawValue=M,this.model.value=JSON.stringify(M)}},{key:"type",get:function(){return d.Types.String}},{key:"effectiveType",get:function(){return d.Types.String}},{key:"address",get:function(){return this.model.address},set:function(M){this.model.address=M}}]),L}(),N={getType:function(F){return F==null?d.Types.Null:F instanceof String||typeof F=="string"?d.Types.String:typeof F=="number"?d.Types.Number:typeof F=="boolean"?d.Types.Boolean:F instanceof Date?d.Types.Date:F.text&&F.hyperlink?d.Types.Hyperlink:F.formula||F.sharedFormula?d.Types.Formula:F.richText?d.Types.RichText:F.sharedString?d.Types.SharedString:F.error?d.Types.Error:d.Types.JSON},types:[{t:d.Types.Null,f:s},{t:d.Types.Number,f:v},{t:d.Types.String,f:c},{t:d.Types.Date,f:r},{t:d.Types.Hyperlink,f:t},{t:d.Types.Formula,f:n},{t:d.Types.Merge,f:i},{t:d.Types.JSON,f:C},{t:d.Types.SharedString,f:o},{t:d.Types.RichText,f:a},{t:d.Types.Boolean,f:p},{t:d.Types.Error,f:O}].reduce(function(L,F){return L[F.t]=F.f,L},[]),create:function(F,M,D){var R=this.types[F];if(!R)throw new Error("Could not create Value of type ".concat(F));return new R(M,D)}};S.exports=d},{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s=this._worksheet.properties.outlineLevelCol)}},{key:"isDefault",get:function(){if(this.isCustomWidth||this.hidden||this.outlineLevel)return!1;var s=this.style;return!(s&&(s.font||s.numFmt||s.alignment||s.border||s.fill||s.protection))}},{key:"headerCount",get:function(){return this.headers.length}},{key:"values",get:function(){var s=[];return this.eachCell(function(v,c){v&&v.type!==w.ValueType.Null&&(s[c]=v.value)}),s},set:function(s){var v=this;if(s){var c=this.number,a=0;s.hasOwnProperty("0")&&(a=1),s.forEach(function(r,t){v._worksheet.getCell(t+a,c).value=r})}}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(s){this._applyStyle("numFmt",s)}},{key:"font",get:function(){return this.style.font},set:function(s){this._applyStyle("font",s)}},{key:"alignment",get:function(){return this.style.alignment},set:function(s){this._applyStyle("alignment",s)}},{key:"protection",get:function(){return this.style.protection},set:function(s){this._applyStyle("protection",s)}},{key:"border",get:function(){return this.style.border},set:function(s){this._applyStyle("border",s)}},{key:"fill",get:function(){return this.style.fill},set:function(s){this._applyStyle("fill",s)}}],[{key:"toModel",value:function(s){var v=[],c=null;return s&&s.forEach(function(a,r){a.isDefault?c&&(c=null):!c||!a.equivalentTo(c)?(c={min:r+1,max:r+1,width:a.width!==void 0?a.width:y,style:a.style,isCustomWidth:a.isCustomWidth,hidden:a.hidden,outlineLevel:a.outlineLevel,collapsed:a.collapsed},v.push(c)):c.max=r+1}),v.length?v:void 0}},{key:"fromModel",value:function(s,v){v=v||[];for(var c=[],a=1,r=0;rthis.bottom)&&(this.bottom=d),(!this.model.right||s>this.right)&&(this.right=s)}},{key:"expandRow",value:function(h){if(h){var l=h.dimensions,d=h.number;l&&this.expand(d,l.min,d,l.max)}}},{key:"expandToAddress",value:function(h){var l=b.decodeEx(h);this.expand(l.row,l.col,l.row,l.col)}},{key:"toString",value:function(){return this.range}},{key:"intersects",value:function(h){return!(h.sheetName&&this.sheetName&&h.sheetName!==this.sheetName||h.bottomthis.bottom||h.rightthis.right)}},{key:"contains",value:function(h){var l=b.decodeEx(h);return this.containsEx(l)}},{key:"containsEx",value:function(h){return h.sheetName&&this.sheetName&&h.sheetName!==this.sheetName?!1:h.row>=this.top&&h.row<=this.bottom&&h.col>=this.left&&h.col<=this.right}},{key:"forEachAddress",value:function(h){for(var l=this.left;l<=this.right;l++)for(var d=this.top;d<=this.bottom;d++)h(b.encodeAddress(d,l),d,l)}},{key:"top",get:function(){return this.model.top||1},set:function(h){this.model.top=h}},{key:"left",get:function(){return this.model.left||1},set:function(h){this.model.left=h}},{key:"bottom",get:function(){return this.model.bottom||1},set:function(h){this.model.bottom=h}},{key:"right",get:function(){return this.model.right||1},set:function(h){this.model.right=h}},{key:"sheetName",get:function(){return this.model.sheetName},set:function(h){this.model.sheetName=h}},{key:"_serialisedSheetName",get:function(){var h=this.model.sheetName;return h?/^[a-zA-Z0-9]*$/.test(h)?"".concat(h,"!"):"'".concat(h,"'!"):""}},{key:"tl",get:function(){return b.n2l(this.left)+this.top}},{key:"$t$l",get:function(){return"$".concat(b.n2l(this.left),"$").concat(this.top)}},{key:"br",get:function(){return b.n2l(this.right)+this.bottom}},{key:"$b$r",get:function(){return"$".concat(b.n2l(this.right),"$").concat(this.bottom)}},{key:"range",get:function(){return"".concat(this._serialisedSheetName+this.tl,":").concat(this.br)}},{key:"$range",get:function(){return"".concat(this._serialisedSheetName+this.$t$l,":").concat(this.$b$r)}},{key:"shortRange",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:"$shortRange",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:"count",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}]),f}();S.exports=w},{"../utils/col-cache":19}],11:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s2?a-2:0),t=2;t0)for(o=n;o>=c;o--)p=this._cells[o-1],p?(O=this.getCell(o+i),O.value=p.value,O.style=p.style,O._comment=p._comment):this._cells[o+i-1]=void 0;for(o=0;oc.col)&&(s=c.col),v0?{min:s,max:v}:null}},{key:"numFmt",get:function(){return this.style.numFmt},set:function(s){this._applyStyle("numFmt",s)}},{key:"font",get:function(){return this.style.font},set:function(s){this._applyStyle("font",s)}},{key:"alignment",get:function(){return this.style.alignment},set:function(s){this._applyStyle("alignment",s)}},{key:"protection",get:function(){return this.style.protection},set:function(s){this._applyStyle("protection",s)}},{key:"border",get:function(){return this.style.border},set:function(s){this._applyStyle("border",s)}},{key:"fill",get:function(){return this.style.fill},set:function(s){this._applyStyle("fill",s)}},{key:"hidden",get:function(){return!!this._hidden},set:function(s){this._hidden=s}},{key:"outlineLevel",get:function(){return this._outlineLevel||0},set:function(s){this._outlineLevel=s}},{key:"collapsed",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:"model",get:function(){var s=[],v=0,c=0;return this._cells.forEach(function(a){if(a){var r=a.model;r&&((!v||v>a.col)&&(v=a.col),c0,"Table must be on valid row"),v(r>0,"Table must be on valid col");var t=this.width,i=this.filterHeight,n=this.tableHeight;d.autoFilterRef=b.encode(a,r,a+i-1,r+t-1),d.tableRef=b.encode(a,r,a+n-1,r+t-1),d.columns.forEach(function(o,p){v(o.name,"Column ".concat(p," must have a name")),p===0?s(o,"totalsRowLabel","Total"):(s(o,"totalsRowFunction","none"),o.totalsRowFormula=l.getFormula(o))})}},{key:"store",value:function(){var l=this,d=function(p,O){O&&Object.keys(O).forEach(function(C){p[C]=O[C]})},s=this.worksheet,v=this.table,c=v.tl,a=c.row,r=c.col,t=0;if(v.headerRow){var i=s.getRow(a+t++);v.columns.forEach(function(o,p){var O=o.style,C=o.name,N=i.getCell(r+p);N.value=C,d(N,O)})}if(v.rows.forEach(function(o){var p=s.getRow(a+t++);o.forEach(function(O,C){var N=p.getCell(r+C);N.value=O,d(N,v.columns[C].style)})}),v.totalsRow){var n=s.getRow(a+t++);v.columns.forEach(function(o,p){var O=n.getCell(r+p);if(p===0)O.value=o.totalsRowLabel;else{var C=l.getFormula(o);C?O.value={formula:o.totalsRowFormula,result:o.totalsRowResult}:O.value=null}d(O,o.style)})}}},{key:"load",value:function(l){var d=this,s=this.table,v=s.tl,c=v.row,a=v.col,r=0;if(s.headerRow){var t=l.getRow(c+r++);s.columns.forEach(function(n,o){var p=t.getCell(a+o);p.value=n.name})}if(s.rows.forEach(function(n){var o=l.getRow(c+r++);n.forEach(function(p,O){var C=o.getCell(a+O);C.value=p})}),s.totalsRow){var i=l.getRow(c+r++);s.columns.forEach(function(n,o){var p=i.getCell(a+o);if(o===0)p.value=n.totalsRowLabel;else{var O=d.getFormula(n);O&&(p.value={formula:n.totalsRowFormula,result:n.totalsRowResult})}})}}},{key:"cacheState",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:"commit",value:function(){if(this._cache){this.validate();var l=b.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var d=0;d1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.rows.splice(l,d)}},{key:"getColumn",value:function(l){var d=this.table.columns[l];return new w(this,d,l)}},{key:"addColumn",value:function(l,d,s){this.cacheState(),s===void 0?(this.table.columns.push(l),this.table.rows.forEach(function(v,c){v.push(d[c])})):(this.table.columns.splice(s,0,l),this.table.rows.forEach(function(v,c){v.splice(s,0,d[c])}))}},{key:"removeColumns",value:function(l){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;this.cacheState(),this.table.columns.splice(l,d),this.table.rows.forEach(function(s){s.splice(l,d)})}},{key:"_assign",value:function(l,d,s){this.cacheState(),l[d]=s}},{key:"width",get:function(){return this.table.columns.length}},{key:"height",get:function(){return this.table.rows.length}},{key:"filterHeight",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:"tableHeight",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:"model",get:function(){return this.table},set:function(l){this.table=l}},{key:"ref",get:function(){return this.table.ref},set:function(l){this._assign(this.table,"ref",l)}},{key:"name",get:function(){return this.table.name},set:function(l){this.table.name=l}},{key:"displayName",get:function(){return this.table.displyName||this.table.name}},{key:"displayNamename",set:function(l){this.table.displayName=l}},{key:"headerRow",get:function(){return this.table.headerRow},set:function(l){this._assign(this.table,"headerRow",l)}},{key:"totalsRow",get:function(){return this.table.totalsRow},set:function(l){this._assign(this.table,"totalsRow",l)}},{key:"theme",get:function(){return this.table.style.name},set:function(l){this.table.style.name=l}},{key:"showFirstColumn",get:function(){return this.table.style.showFirstColumn},set:function(l){this.table.style.showFirstColumn=l}},{key:"showLastColumn",get:function(){return this.table.style.showLastColumn},set:function(l){this.table.style.showLastColumn=l}},{key:"showRowStripes",get:function(){return this.table.style.showRowStripes},set:function(l){this.table.style.showRowStripes=l}},{key:"showColumnStripes",get:function(){return this.table.style.showColumnStripes},set:function(l){this.table.style.showColumnStripes=l}}]),y}();S.exports=f},{"../utils/col-cache":19}],13:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s31&&console.warn("Worksheet name ".concat(s," exceeds 31 chars. This will be truncated")),/[*?:/\\[\]]/.test(s))throw new Error("Worksheet name ".concat(s," cannot include any of the following characters: * ? : \\ / [ ]"));if(/(^')|('$)/.test(s))throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(s));if(s=(s||"sheet".concat(c)).substring(0,31),this._worksheets.find(function(i){return i&&i.name.toLowerCase()===s.toLowerCase()}))throw new Error("Worksheet name already exists: ".concat(s));v&&(typeof v=="string"?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'),v={properties:{tabColor:{argb:v}}}):(v.argb||v.theme||v.indexed)&&(console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"),v={properties:{tabColor:v}}));var a=this._worksheets.reduce(function(i,n){return(n&&n.orderNo)>i?n.orderNo:i},0),r=Object.assign({},v,{id:c,name:s,orderNo:a+1,workbook:this}),t=new b(r);return this._worksheets[c]=t,t}},{key:"removeWorksheetEx",value:function(s){delete this._worksheets[s.id]}},{key:"removeWorksheet",value:function(s){var v=this.getWorksheet(s);v&&v.destroy()}},{key:"getWorksheet",value:function(s){if(s===void 0)return this._worksheets.find(Boolean);if(typeof s=="number")return this._worksheets[s];if(typeof s=="string")return this._worksheets.find(function(v){return v&&v.name===s})}},{key:"eachSheet",value:function(s){this.worksheets.forEach(function(v){s(v,v.id)})}},{key:"clearThemes",value:function(){this._themes=void 0}},{key:"addImage",value:function(s){var v=this.media.length;return this.media.push(Object.assign({},s,{type:"image"})),v}},{key:"getImage",value:function(s){return this.media[s]}},{key:"xlsx",get:function(){return this._xlsx||(this._xlsx=new f(this)),this._xlsx}},{key:"csv",get:function(){return this._csv||(this._csv=new y(this)),this._csv}},{key:"nextId",get:function(){for(var s=1;sL.length)&&(F=L.length);for(var M=0,D=new Array(F);Mthis._columns.length)for(var R=this._columns.length+1;R<=M;)this._columns.push(new i(this,R++));return this._columns[M-1]}},{key:"spliceColumns",value:function(M,D){for(var R=this,P=this._rows,E=P.length,A=arguments.length,z=new Array(A>2?A-2:0),W=2;W0)for(var $=function(be){var _e=[M,D];z.forEach(function(J){_e.push(J[be]||null)});var oe=R.getRow(be+1);oe.splice.apply(oe,_e)},U=0;U0)for(var te=B;te>=j;te--)this.getColumn(te+I).defn=this.getColumn(te).defn;for(var ie=M;ie1&&arguments[1]!==void 0?arguments[1]:"n",R=this._nextRow,P=this.getRow(R);return P.values=M,this._setStyleOption(R,D[0]==="i"?D:"n"),P}},{key:"addRows",value:function(M){var D=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"n",P=[];return M.forEach(function(E){P.push(D.addRow(E,R))}),P}},{key:"insertRow",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";return this.spliceRows(M,0,D),this._setStyleOption(M,R),this.getRow(M)}},{key:"insertRows",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"n";if(this.spliceRows.apply(this,[M,0].concat(b(D))),R!=="n")for(var P=0;P1&&arguments[1]!==void 0?arguments[1]:"n";D[0]==="o"&&this.findRow(M+1)!==void 0?this._copyStyle(M+1,M,D[1]==="+"):D[0]==="i"&&this.findRow(M-1)!==void 0&&this._copyStyle(M-1,M,D[1]==="+")}},{key:"_copyStyle",value:function(M,D){var R=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,P=this.getRow(M),E=this.getRow(D);E.style=Object.freeze(m({},P.style)),P.eachCell({includeEmpty:R},function(A,z){E.getCell(z).style=Object.freeze(m({},A.style))}),E.height=P.height}},{key:"duplicateRow",value:function(M,D){var R=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,E=this._rows[M-1],A=new Array(D).fill(E.values);this.spliceRows.apply(this,[M+1,P?0:D].concat(b(A)));for(var z=function(U){var I=R._rows[M+U];I.style=E.style,I.height=E.height,E.eachCell({includeEmpty:!0},function(j,B){I.getCell(B).style=j.style})},W=0;W2?E-2:0),z=2;z0)for(I=U;I>=P;I--)j=this._rows[I-1],j?function(){var V=R.getRow(I+$);V.values=j.values,V.style=j.style,V.height=j.height,j.eachCell({includeEmpty:!0},function(te,ie){if(V.getCell(ie).style=te.style,te._value.constructor.name==="MergeValue"){var ce=R.getRow(te._row._number+W).getCell(ie),be=te._value._master,_e=R.getRow(be._row._number+W).getCell(be._column._number);ce.merge(_e)}})}():this._rows[I+$-1]=void 0;for(I=0;IM.top||E>M.left)&&this.getCell(P,E).merge(R,D);this._merges[R.address]=M}},{key:"_unMergeMaster",value:function(M){var D=this._merges[M.address];if(D){for(var R=D.top;R<=D.bottom;R++)for(var P=D.left;P<=D.right;P++)this.getCell(R,P).unmerge();delete this._merges[M.address]}}},{key:"unMergeCells",value:function(){for(var M=arguments.length,D=new Array(M),R=0;R3&&arguments[3]!==void 0?arguments[3]:"shared",E=a.decode(M),A=E.top,z=E.left,W=E.bottom,$=E.right,U=$-z+1,I=a.encodeAddress(A,z),j=P==="shared",B;typeof R=="function"?B=R:Array.isArray(R)?Array.isArray(R[0])?B=function(be,_e){return R[be-A][_e-z]}:B=function(be,_e){return R[(be-A)*U+(_e-z)]}:B=function(){};for(var V=!0,te=A;te<=W;te++)for(var ie=z;ie<=$;ie++)V?(this.getCell(te,ie).value={shareType:P,formula:D,ref:M,result:B(te,ie)},V=!1):this.getCell(te,ie).value=j?{sharedFormula:I,result:B(te,ie)}:B(te,ie)}},{key:"addImage",value:function(M,D){var R={type:"image",imageId:M,range:D};this._media.push(new o(this,R))}},{key:"getImages",value:function(){return this._media.filter(function(M){return M.type==="image"})}},{key:"addBackgroundImage",value:function(M){var D={type:"background",imageId:M};this._media.push(new o(this,D))}},{key:"getBackgroundImageId",value:function(){var M=this._media.find(function(D){return D.type==="background"});return M&&M.imageId}},{key:"protect",value:function(M,D){var R=this;return new Promise(function(P){R.sheetProtection={sheet:!0},D&&"spinCount"in D&&(D.spinCount=Number.isFinite(D.spinCount)?Math.round(Math.max(0,D.spinCount)):1e5),M&&(R.sheetProtection.algorithmName="SHA-512",R.sheetProtection.saltValue=C.randomBytes(16).toString("base64"),R.sheetProtection.spinCount=D&&"spinCount"in D?D.spinCount:1e5,R.sheetProtection.hashValue=C.convertPasswordToHash(M,"SHA512",R.sheetProtection.saltValue,R.sheetProtection.spinCount)),D&&(R.sheetProtection=Object.assign(R.sheetProtection,D),!M&&"spinCount"in D&&delete R.sheetProtection.spinCount),P()})}},{key:"unprotect",value:function(){this.sheetProtection=null}},{key:"addTable",value:function(M){var D=new p(this,M);return this.tables[M.name]=D,D}},{key:"getTable",value:function(M){return this.tables[M]}},{key:"removeTable",value:function(M){delete this.tables[M]}},{key:"getTables",value:function(){return Object.values(this.tables)}},{key:"addConditionalFormatting",value:function(M){this.conditionalFormattings.push(M)}},{key:"removeConditionalFormatting",value:function(M){typeof M=="number"?this.conditionalFormattings.splice(M,1):M instanceof Function?this.conditionalFormattings=this.conditionalFormattings.filter(M):this.conditionalFormattings=[]}},{key:"_parseRows",value:function(M){var D=this;this._rows=[],M.rows.forEach(function(R){var P=new t(D,R.number);D._rows[P.number-1]=P,P.model=R})}},{key:"_parseMergeCells",value:function(M){var D=this;c.each(M.mergeCells,function(R){D.mergeCellsWithoutStyle(R)})}},{key:"workbook",get:function(){return this._workbook}},{key:"dimensions",get:function(){var M=new r;return this._rows.forEach(function(D){if(D){var R=D.dimensions;R&&M.expand(D.number,R.min,D.number,R.max)}}),M}},{key:"columns",get:function(){return this._columns},set:function(M){var D=this;this._headerRowCount=M.reduce(function(E,A){var z=A.header&&1||A.headers&&A.headers.length||0;return Math.max(E,z)},0);var R=1,P=this._columns=[];M.forEach(function(E){var A=new i(D,R++,!1);P.push(A),A.defn=E})}},{key:"lastColumn",get:function(){return this.getColumn(this.columnCount)}},{key:"columnCount",get:function(){var M=0;return this.eachRow(function(D){M=Math.max(M,D.cellCount)}),M}},{key:"actualColumnCount",get:function(){var M=[],D=0;return this.eachRow(function(R){R.eachCell(function(P){var E=P.col;M[E]||(M[E]=!0,D++)})}),D}},{key:"_lastRowNumber",get:function(){for(var M=this._rows,D=M.length;D>0&&M[D-1]===void 0;)D--;return D}},{key:"_nextRow",get:function(){return this._lastRowNumber+1}},{key:"lastRow",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:"rowCount",get:function(){return this._lastRowNumber}},{key:"actualRowCount",get:function(){var M=0;return this.eachRow(function(){M++}),M}},{key:"hasMerges",get:function(){return c.some(this._merges,Boolean)}},{key:"tabColor",get:function(){return console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor},set:function(M){console.trace("worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor"),this.properties.tabColor=M}},{key:"model",get:function(){var M={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map(function(P){return P.model}),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map(function(P){return P.model}),conditionalFormattings:this.conditionalFormattings};M.cols=i.toModel(this.columns);var D=M.rows=[],R=M.dimensions=new r;return this._rows.forEach(function(P){var E=P&&P.model;E&&(R.expand(E.number,E.min,E.number,E.max),D.push(E))}),M.merges=[],c.each(this._merges,function(P){M.merges.push(P.range)}),M},set:function(M){var D=this;this.name=M.name,this._columns=i.fromModel(this,M.cols),this._parseRows(M),this._parseMergeCells(M),this.dataValidations=new O(M.dataValidations),this.properties=M.properties,this.pageSetup=M.pageSetup,this.headerFooter=M.headerFooter,this.views=M.views,this.autoFilter=M.autoFilter,this._media=M.media.map(function(R){return new o(D,R)}),this.sheetProtection=M.sheetProtection,this.tables=M.tables.reduce(function(R,P){var E=new p;return E.model=P,R[P.name]=E,R},{}),this.conditionalFormattings=M.conditionalFormattings}}]),L}();S.exports=N},{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(e,S,_){e("core-js/modules/es.promise"),e("core-js/modules/es.object.assign"),e("core-js/modules/es.object.keys"),e("core-js/modules/es.object.values"),e("core-js/modules/es.symbol"),e("core-js/modules/es.symbol.async-iterator"),e("core-js/modules/es.array.iterator"),e("core-js/modules/es.array.includes"),e("core-js/modules/es.array.find-index"),e("core-js/modules/es.array.find"),e("core-js/modules/es.string.from-code-point"),e("core-js/modules/es.string.includes"),e("core-js/modules/es.number.is-nan"),e("regenerator-runtime/runtime");var u={Workbook:e("./doc/workbook")},m=e("./doc/enums");Object.keys(m).forEach(function(g){u[g]=m[g]}),S.exports=u},{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(e,S,_){var u=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function m(g){return typeof g=="string"?g:u?u.decode(g):g.toString()}_.bufferToString=m},{}],17:[function(e,S,_){var u=typeof TextEncoder>"u"?null:new TextEncoder("utf-8"),m=e("buffer"),g=m.Buffer;function b(w){return typeof w!="string"?w:u?g.from(u.encode(w).buffer):g.from(w)}_.stringToBuffer=b},{buffer:216}],18:[function(e,S,_){function u(y,h){if(!(y instanceof h))throw new TypeError("Cannot call a class as a function")}function m(y,h){for(var l=0;lv.length)&&(c=v.length);for(var a=0,r=new Array(c);a"u"||!(Symbol.iterator in Object(v)))){var a=[],r=!0,t=!1,i=void 0;try{for(var n=v[Symbol.iterator](),o;!(r=(o=n.next()).done)&&(a.push(o.value),!(c&&a.length===c));r=!0);}catch(p){t=!0,i=p}finally{try{!r&&n.return!=null&&n.return()}finally{if(t)throw i}}return a}}function f(v){if(Array.isArray(v))return v}function y(v,c){var a=Object.keys(v);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(v);c&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(v,t).enumerable})),a.push.apply(a,r)}return a}function h(v){for(var c=1;c=4)throw new Error("Out of bounds. Excel supports columns from 1 to 16384");if(this._l2nFill<1&&c>=1){for(;o<=26;)a=this._dictionary[o-1],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=1}if(this._l2nFill<2&&c>=2){for(o=27;o<=26+26*26;)r=o-(26+1),t=r%26,i=Math.floor(r/26),a=this._dictionary[i]+this._dictionary[t],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=2}if(this._l2nFill<3&&c>=3){for(o=26+26*26+1;o<=16384;)r=o-(26*26+26+1),t=r%26,i=Math.floor(r/26)%26,n=Math.floor(r/(26*26)),a=this._dictionary[n]+this._dictionary[i]+this._dictionary[t],this._n2l[o]=a,this._l2n[a]=o,o++;this._l2nFill=3}},l2n:function(c){if(this._l2n[c]||this._fill(c.length),!this._l2n[c])throw new Error("Out of bounds. Invalid column letter: ".concat(c));return this._l2n[c]},n2l:function(c){if(c<1||c>16384)throw new Error("".concat(c," is out of bounds. Excel supports columns from 1 to 16384"));return this._n2l[c]||this._fill(this._level(c)),this._n2l[c]},_hash:{},validateAddress:function(c){if(!d.test(c))throw new Error("Invalid Address: ".concat(c));return!0},decodeAddress:function(c){var a=c.length<5&&this._hash[c];if(a)return a;for(var r=!1,t="",i=0,n=!1,o="",p=0,O=0,C;O=65&&C<=90)r=!0,t+=c[O],i=i*26+C-64;else if(C>=48&&C<=57)n=!0,o+=c[O],p=p*10+C-48;else if(n&&r&&C!==36)break;if(!r)i=void 0;else if(i>16384)throw new Error("Out of bounds. Invalid column letter: ".concat(t));n||(p=void 0),c=t+o;var N={address:c,col:i,row:p,$col$row:"$".concat(t,"$").concat(o)};return i<=100&&p<=100&&(this._hash[c]=N,this._hash[N.$col$row]=N),N},getAddress:function(c,a){if(a){var r=this.n2l(a)+c;return this.decodeAddress(r)}return this.decodeAddress(c)},decode:function(c){var a=c.split(":");if(a.length===2){var r=this.decodeAddress(a[0]),t=this.decodeAddress(a[1]),i={top:Math.min(r.row,t.row),left:Math.min(r.col,t.col),bottom:Math.max(r.row,t.row),right:Math.max(r.col,t.col)};return i.tl=this.n2l(i.left)+i.top,i.br=this.n2l(i.right)+i.bottom,i.dimensions="".concat(i.tl,":").concat(i.br),i}return this.decodeAddress(c)},decodeEx:function(c){var a=c.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),r=a[1]||a[2],t=a[3],i=t.split(":");if(i.length>1){var n=this.decodeAddress(i[0]),o=this.decodeAddress(i[1]),p=Math.min(n.row,o.row),O=Math.min(n.col,o.col),C=Math.max(n.row,o.row),N=Math.max(n.col,o.col);return n=this.n2l(O)+p,o=this.n2l(N)+C,{top:p,left:O,bottom:C,right:N,sheetName:r,tl:{address:n,col:O,row:p,$col$row:"$".concat(this.n2l(O),"$").concat(p),sheetName:r},br:{address:o,col:N,row:C,$col$row:"$".concat(this.n2l(N),"$").concat(C),sheetName:r},dimensions:"".concat(n,":").concat(o)}}if(t.startsWith("#"))return r?{sheetName:r,error:t}:{error:t};var L=this.decodeAddress(t);return r?h({sheetName:r},L):L},encodeAddress:function(c,a){return s.n2l(a)+c},encode:function(){switch(arguments.length){case 2:return s.encodeAddress(arguments[0],arguments[1]);case 4:return"".concat(s.encodeAddress(arguments[0],arguments[1]),":").concat(s.encodeAddress(arguments[2],arguments[3]));default:throw new Error("Can only encode with 2 or 4 arguments")}},inRange:function(c,a){var r=u(c,5),t=r[0],i=r[1],n=r[3],o=r[4],p=u(a,2),O=p[0],C=p[1];return O>=t&&O<=n&&C>=i&&C<=o}};S.exports=s},{}],20:[function(e,S,_){(function(u){var m=e("crypto"),g={hash:function(w){for(var f=m.createHash(w),y=arguments.length,h=new Array(y>1?y-1:0),l=1;l3||i.length===3&&i>"XFD")return d;var p=u.l2n(i),O=parseInt(o,10);t||(p+=l.col-h.col),n||(O+=l.row-h.row);var C=(s||"")+(t||"")+u.n2l(p)+(n||"")+O;return C}return d})}S.exports={slideFormula:b}},{"./col-cache":19}],23:[function(e,S,_){(function(u,m){function g(t,i,n,o,p,O,C){try{var N=t[O](C),L=N.value}catch(F){n(F);return}N.done?i(L):Promise.resolve(L).then(o,p)}function b(t){return function(){var i=this,n=arguments;return new Promise(function(o,p){var O=t.apply(i,n);function C(L){g(O,o,p,C,N,"next",L)}function N(L){g(O,o,p,C,N,"throw",L)}C(void 0)})}}function w(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function f(t,i){for(var n=0;n=this.length?(o=this.toBuffer(),this.iRead=this.iWrite,o):(o=m.alloc(n),this.buffer.copy(o,0,this.iRead,n),this.iRead+=n,o)}},{key:"write",value:function(n,o,p){var O=Math.min(p,this.size-this.iWrite);return n.copy(this.buffer,this.iWrite,o,o+O),this.iWrite+=O,O}},{key:"length",get:function(){return this.iWrite-this.iRead}},{key:"eod",get:function(){return this.iRead===this.iWrite}},{key:"full",get:function(){return this.iWrite===this.size}}]),t}(),r=function(i){i=i||{},this.bufSize=i.bufSize||1024*1024,this.buffers=[],this.batch=i.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};l.inherits(r,h.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return m.concat(this.buffers.map(function(i){return i.toBuffer()}))}},_getWritableBuffer:function(){if(this.buffers.length){var i=this.buffers[this.buffers.length-1];if(!i.full)return i}var n=new a(this.bufSize);return this.buffers.push(n),n},_pipe:function(i){var n=this;return b(regeneratorRuntime.mark(function o(){var p;return regeneratorRuntime.wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return p=function(L){return new Promise(function(F){L.write(i.toBuffer(),function(){F()})})},C.next=3,Promise.all(n.pipes.map(p));case 3:case"end":return C.stop()}},o)}))()},_writeToBuffers:function(i){for(var n=0,o=i.length;n1;)p._pipe(p.buffers.shift());L.next=29;break;case 21:if(p.corked){L.next=27;break}return L.next=24,p._pipe(C);case 24:o(),L.next=29;break;case 27:p._writeToBuffers(C),u.nextTick(o);case 29:L.next=34;break;case 31:p.paused||p.emit("data",C.toBuffer()),p._writeToBuffers(C),p.emit("readable");case 34:return L.abrupt("return",!0);case 35:case"end":return L.stop()}},O)}))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(i,n,o){var p=this,O=function(N){N?o(N):(p._flush(),p.pipes.forEach(function(L){L.end()}),p.emit("finish"))};i?this.write(i,n,O):O()},read:function(i){var n;if(i){for(n=[];i&&this.buffers.length&&!this.buffers[0].eod;){var o=this.buffers[0],p=o.read(i);i-=p.length,n.push(p),o.eod&&o.full&&this.buffers.shift()}return m.concat(n)}return n=this.buffers.map(function(O){return O.toBuffer()}).filter(Boolean),this.buffers=[],m.concat(n)},setEncoding:function(i){this.encoding=i},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(i){this.pipes.push(i),!this.paused&&this.buffers.length&&this.end()},unpipe:function(i){this.pipes=this.pipes.filter(function(n){return n!==i})},unshift:function(){throw new Error("Not Implemented")},wrap:function(){throw new Error("Not Implemented")}}),S.exports=r}).call(this,e("_process"),e("buffer").Buffer)},{"./string-buf":24,"./utils":26,_process:467,buffer:216,"readable-stream":491}],24:[function(e,S,_){(function(u){function m(f,y){if(!(f instanceof y))throw new TypeError("Cannot call a class as a function")}function g(f,y){for(var h=0;h=this._buf.length-4;)this._grow(this._inPos+h.length),l=this._inPos+this._buf.write(h,this._inPos,this._encoding);this._inPos=l}},{key:"addStringBuf",value:function(h){h.length&&(this._buffer=void 0,this.length+h.length>this.capacity&&this._grow(this.length+h.length),h._buf.copy(this._buf,this._inPos,0,h.length),this._inPos+=h.length)}},{key:"length",get:function(){return this._inPos}},{key:"capacity",get:function(){return this._buf.length}},{key:"buffer",get:function(){return this._buf}}]),f}();S.exports=w}).call(this,e("buffer").Buffer)},{buffer:216}],25:[function(e,S,_){function u(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(y){return typeof y}:u=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},u(w)}var m=Object.prototype.toString,g=/["&<>]/,b={each:function(f,y){f&&(Array.isArray(f)?f.forEach(y):Object.keys(f).forEach(function(h){y(f[h],h)}))},some:function(f,y){return f?Array.isArray(f)?f.some(y):Object.keys(f).some(function(h){return y(f[h],h)}):!1},every:function(f,y){return f?Array.isArray(f)?f.every(y):Object.keys(f).every(function(h){return y(f[h],h)}):!0},map:function(f,y){return f?Array.isArray(f)?f.map(y):Object.keys(f).map(function(h){return y(f[h],h)}):[]},keyBy:function(f,y){return f.reduce(function(h,l){return h[l[y]]=l,h},{})},isEqual:function(f,y){var h=u(f),l=u(y),d=Array.isArray(f),s=Array.isArray(y);if(h!==l)return!1;switch(u(f)){case"object":return d||s?d&&s?f.length===y.length&&f.every(function(v,c){var a=y[c];return b.isEqual(v,a)}):!1:b.every(f,function(v,c){var a=y[c];return b.isEqual(v,a)});default:return f===y}},escapeHtml:function(f){var y=g.exec(f);if(!y)return f;for(var h="",l="",d=0,s=y.index;s":l=">";break;default:continue}d!==s&&(h+=f.substring(d,s)),d=s+1,h+=l}return d!==s?h+f.substring(d,s):h},strcmp:function(f,y){return fy?1:0},isUndefined:function(f){return m.call(f)==="[object Undefined]"},isObject:function(f){return m.call(f)==="[object Object]"},deepMerge:function(){var f=arguments[0]||{},y=arguments.length,h,l,d;function s(c,a){h=f[a],d=Array.isArray(c),b.isObject(c)||d?(d?(d=!1,l=h&&Array.isArray(h)?h:[]):l=h&&b.isObject(h)?h:{},f[a]=b.deepMerge(l,c)):b.isUndefined(c)||(f[a]=c)}for(var v=0;v&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/,f={nop:function(){},promiseImmediate:function(h){return new Promise(function(l){u.setImmediate?m(function(){l(h)}):setTimeout(function(){l(h)},1)})},inherits:b,dateToExcel:function(h,l){return 25569+h.getTime()/(24*3600*1e3)-(l?1462:0)},excelToDate:function(h,l){var d=Math.round((h-25569+(l?1462:0))*24*3600*1e3);return new Date(d)},parsePath:function(h){var l=h.lastIndexOf("/");return{path:h.substring(0,l),name:h.substring(l+1)}},getRelsPath:function(h){var l=f.parsePath(h);return"".concat(l.path,"/_rels/").concat(l.name,".rels")},xmlEncode:function(h){var l=w.exec(h);if(!l)return h;for(var d="",s="",v=0,c=l.index;c=11&&a!==13)){s="";break}continue}}v!==c&&(d+=h.substring(v,c)),v=c+1,s&&(d+=s)}return v!==c?d+h.substring(v,c):d},xmlDecode:function(h){return h.replace(/&([a-z]*);/g,function(l){switch(l){case"<":return"<";case">":return">";case"&":return"&";case"'":return"'";case""":return'"';default:return l}})},validInt:function(h){var l=parseInt(h,10);return Number.isNaN(l)?0:l},isDateFmt:function(h){if(!h)return!1;h=h.replace(/\[[^\]]*]/g,""),h=h.replace(/"[^"]*"/g,"");var l=h.match(/[ymdhMsb]+/)!==null;return l},fs:{exists:function(h){return new Promise(function(l){g.access(h,g.constants.F_OK,function(d){l(!d)})})}},toIsoDateString:function(h){return h.toIsoString().subsstr(0,10)}};S.exports=f}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{},e("timers").setImmediate)},{fs:215,timers:521}],27:[function(e,S,_){function u(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function m(t,i){for(var n=0;n",h="",d='="',s='"',v=" ";function c(t,i,n){t.push(v),t.push(i),t.push(d),t.push(w.xmlEncode(n.toString())),t.push(s)}function a(t,i){i&&b.each(i,function(n,o){n!==void 0&&c(t,o,n)})}var r=function(){function t(){u(this,t),this._xml=[],this._stack=[],this._rollbacks=[]}return g(t,[{key:"openXml",value:function(n){var o=this._xml;o.push(" +`)}},{key:"openNode",value:function(n,o){var p=this.tos,O=this._xml;p&&this.open&&O.push(y),this._stack.push(n),O.push(f),O.push(n),a(O,o),this.leaf=!0,this.open=!0}},{key:"addAttribute",value:function(n,o){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");o!==void 0&&c(this._xml,n,o)}},{key:"addAttributes",value:function(n){if(!this.open)throw new Error("Cannot write attributes to node if it is not open");a(this._xml,n)}},{key:"writeText",value:function(n){var o=this._xml;this.open&&(o.push(y),this.open=!1),this.leaf=!1,o.push(w.xmlEncode(n.toString()))}},{key:"writeXml",value:function(n){this.open&&(this._xml.push(y),this.open=!1),this.leaf=!1,this._xml.push(n)}},{key:"closeNode",value:function(){var n=this._stack.pop(),o=this._xml;this.leaf?o.push(l):(o.push(h),o.push(n),o.push(y)),this.open=!1,this.leaf=!1}},{key:"leafNode",value:function(n,o,p){this.openNode(n,o),p!==void 0&&this.writeText(p),this.closeNode()}},{key:"closeAll",value:function(){for(;this._stack.length;)this.closeNode()}},{key:"addRollback",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:"commit",value:function(){this._rollbacks.pop()}},{key:"rollback",value:function(){var n=this._rollbacks.pop();this._xml.length>n.xml&&this._xml.splice(n.xml,this._xml.length-n.xml),this._stack.length>n.stack&&this._stack.splice(n.stack,this._stack.length-n.stack),this.leaf=n.leaf,this.open=n.open}},{key:"tos",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:"cursor",get:function(){return this._xml.length}},{key:"xml",get:function(){return this.closeAll(),this._xml.join("")}}]),t}();r.StdDocAttributes={version:"1.0",encoding:"UTF-8",standalone:"yes"},S.exports=r},{"./under-dash":25,"./utils":26}],28:[function(e,S,_){(function(u){function m(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(N){return typeof N}:m=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},m(O)}function g(O,C,N,L,F,M,D){try{var R=O[M](D),P=R.value}catch(E){N(E);return}R.done?C(P):Promise.resolve(P).then(L,F)}function b(O){return function(){var C=this,N=arguments;return new Promise(function(L,F){var M=O.apply(C,N);function D(P){g(M,L,F,D,R,"next",P)}function R(P){g(M,L,F,D,R,"throw",P)}D(void 0)})}}function w(O,C){if(!(O instanceof C))throw new TypeError("Cannot call a class as a function")}function f(O,C){for(var N=0;N"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(O){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(N){return N.__proto__||Object.getPrototypeOf(N)},a(O)}var r=e("events"),t=e("jszip"),i=e("./stream-buf"),n=e("./browser-buffer-encode"),o=n.stringToBuffer,p=function(O){h(N,O);var C=d(N);function N(L){var F;return w(this,N),F=C.call(this),F.options=Object.assign({type:"nodebuffer",compression:"DEFLATE"},L),F.zip=new t,F.stream=new i,F}return y(N,[{key:"append",value:function(F,M){M.hasOwnProperty("base64")&&M.base64?this.zip.file(M.name,F,{base64:!0}):(u.browser&&typeof F=="string"&&(F=o(F)),this.zip.file(M.name,F))}},{key:"finalize",value:function(){var L=b(regeneratorRuntime.mark(function M(){var D;return regeneratorRuntime.wrap(function(P){for(;;)switch(P.prev=P.next){case 0:return P.next=2,this.zip.generateAsync(this.options);case 2:D=P.sent,this.stream.end(D),this.emit("finish");case 5:case"end":return P.stop()}},M,this)}));function F(){return L.apply(this,arguments)}return F}()},{key:"read",value:function(F){return this.stream.read(F)}},{key:"setEncoding",value:function(F){return this.stream.setEncoding(F)}},{key:"pause",value:function(){return this.stream.pause()}},{key:"resume",value:function(){return this.stream.resume()}},{key:"isPaused",value:function(){return this.stream.isPaused()}},{key:"pipe",value:function(F,M){return this.stream.pipe(F,M)}},{key:"unpipe",value:function(F){return this.stream.unpipe(F)}},{key:"unshift",value:function(F){return this.stream.unshift(F)}},{key:"wrap",value:function(F){return this.stream.wrap(F)}}]),N}(r.EventEmitter);S.exports={ZipWriter:p}}).call(this,e("_process"))},{"./browser-buffer-encode":17,"./stream-buf":23,_process:467,events:367,jszip:399}],29:[function(e,S,_){S.exports={0:{f:"General"},1:{f:"0"},2:{f:"0.00"},3:{f:"#,##0"},4:{f:"#,##0.00"},9:{f:"0%"},10:{f:"0.00%"},11:{f:"0.00E+00"},12:{f:"# ?/?"},13:{f:"# ??/??"},14:{f:"mm-dd-yy"},15:{f:"d-mmm-yy"},16:{f:"d-mmm"},17:{f:"mmm-yy"},18:{f:"h:mm AM/PM"},19:{f:"h:mm:ss AM/PM"},20:{f:"h:mm"},21:{f:"h:mm:ss"},22:{f:'m/d/yy "h":mm'},27:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},28:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},29:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},30:{"zh-tw":"m/d/yy ","zh-cn":"m-d-yy","ja-jp":"m/d/yy","ko-kr":"mm-dd-yy"},31:{"zh-tw":'yyyy"年"m"月"d"日"',"zh-cn":'yyyy"年"m"月"d"日"',"ja-jp":'yyyy"年"m"月"d"日"',"ko-kr":'yyyy"년" mm"월" dd"일"'},32:{"zh-tw":'hh"時"mm"分"',"zh-cn":'h"时"mm"分"',"ja-jp":'h"時"mm"分"',"ko-kr":'h"시" mm"분"'},33:{"zh-tw":'hh"時"mm"分"ss"秒"',"zh-cn":'h"时"mm"分"ss"秒"',"ja-jp":'h"時"mm"分"ss"秒"',"ko-kr":'h"시" mm"분" ss"초"'},34:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},35:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},36:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},37:{f:"#,##0 ;(#,##0)"},38:{f:"#,##0 ;[Red](#,##0)"},39:{f:"#,##0.00 ;(#,##0.00)"},40:{f:"#,##0.00 ;[Red](#,##0.00)"},45:{f:"mm:ss"},46:{f:"[h]:mm:ss"},47:{f:"mmss.0"},48:{f:"##0.0E+0"},49:{f:"@"},50:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},51:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},52:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'yyyy"年"m"月"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},53:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'m"月"d"日"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},54:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},55:{"zh-tw":'上午/下午 hh"時"mm"分"',"zh-cn":'上午/下午 h"时"mm"分"',"ja-jp":'yyyy"年"m"月"',"ko-kr":"yyyy-mm-dd"},56:{"zh-tw":'上午/下午 hh"時"mm"分"ss"秒"',"zh-cn":'上午/下午 h"时"mm"分"ss"秒"',"ja-jp":'m"月"d"日"',"ko-kr":"yyyy-mm-dd"},57:{"zh-tw":"[$-404]e/m/d","zh-cn":'yyyy"年"m"月"',"ja-jp":"[$-411]ge.m.d","ko-kr":'yyyy"年" mm"月" dd"日"'},58:{"zh-tw":'[$-404]e"年"m"月"d"日"',"zh-cn":'m"月"d"日"',"ja-jp":'[$-411]ggge"年"m"月"d"日"',"ko-kr":"mm-dd"},59:{"th-th":"t0"},60:{"th-th":"t0.00"},61:{"th-th":"t#,##0"},62:{"th-th":"t#,##0.00"},67:{"th-th":"t0%"},68:{"th-th":"t0.00%"},69:{"th-th":"t# ?/?"},70:{"th-th":"t# ??/??"},81:{"th-th":"d/m/bb"}}},{}],30:[function(e,S,_){S.exports={OfficeDocument:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",Worksheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",CalcChain:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain",SharedStrings:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",Styles:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",Theme:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",Hyperlink:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",Image:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",CoreProperties:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",ExtenderProperties:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",Comments:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",VmlDrawing:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",Table:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"}},{}],31:[function(e,S,_){function u(c,a){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=m(c))||a&&c&&typeof c.length=="number"){r&&(c=r);var t=0,i=function(){};return{s:i,n:function(){return t>=c.length?{done:!0}:{done:!1,value:c[t++]}},e:function(C){throw C},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var n=!0,o=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var C=r.next();return n=C.done,C},e:function(C){o=!0,p=C},f:function(){try{!n&&r.return!=null&&r.return()}finally{if(o)throw p}}}}function m(c,a){if(c){if(typeof c=="string")return g(c,a);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(c,a)}}function g(c,a){(a==null||a>c.length)&&(a=c.length);for(var r=0,t=new Array(a);r2&&arguments[2]!==void 0?arguments[2]:!1;if(r===void 0){if(i)return t}else if(i||r!==t)return r.toString()}},{key:"toStringAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toStringValue",value:function(r,t){return r===void 0?t:r}},{key:"toBoolAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(r===void 0){if(i)return t}else if(i||r!==t)return r?"1":"0"}},{key:"toBoolValue",value:function(r,t){return r===void 0?t:r==="1"}},{key:"toIntAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toIntValue",value:function(r,t){return r===void 0?t:parseInt(r,10)}},{key:"toFloatAttribute",value:function(r,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;return c.toAttribute(r,t,i)}},{key:"toFloatValue",value:function(r,t){return r===void 0?t:parseFloat(r)}}]),c}();S.exports=v},{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../base-xform"),c=e("../../../utils/col-cache"),a=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){O.openNode("definedName",{name:C.name,localSheetId:C.localSheetId}),O.writeText(C.ranges.join(",")),O.closeNode()}},{key:"parseOpen",value:function(O){switch(O.name){case"definedName":return this._parsedName=O.attributes.name,this._parsedLocalSheetId=O.attributes.localSheetId,this._parsedText=[],!0;default:return!1}}},{key:"parseText",value:function(O){this._parsedText.push(O)}},{key:"parseClose",value:function(){return this.model={name:this._parsedName,ranges:t(this._parsedText.join(""))},this._parsedLocalSheetId!==void 0&&(this.model.localSheetId=parseInt(this._parsedLocalSheetId,10)),!1}}]),o}(v);function r(i){try{return c.decodeEx(i),!0}catch{return!1}}function t(i){var n=[],o=!1,p="";return i.split(",").forEach(function(O){if(O){var C=(O.match(/'/g)||[]).length;if(!C){o?p+="".concat(O,","):r(O)&&n.push(O);return}var N=C%2===0;!o&&N&&r(O)?n.push(O):o&&!N?(o=!1,r(p+O)&&n.push(p+O),p=""):(o=!0,p+="".concat(O,","))}}),n}S.exports=a},{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/utils"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.leafNode("sheet",{sheetId:p.id,name:p.name,state:p.state,"r:id":p.rId})}},{key:"parseOpen",value:function(o){return o.name==="sheet"?(this.model={name:v.xmlDecode(o.attributes.name),id:parseInt(o.attributes.sheetId,10),state:o.attributes.state,rId:o.attributes["r:id"]},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(c);S.exports=a},{"../../../utils/utils":26,"../base-xform":31}],34:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("calcPr",{calcId:171027,fullCalcOnLoad:o.fullCalcOnLoad?1:void 0})}},{key:"parseOpen",value:function(n){return n.name==="calcPr"?(this.model={},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);S.exports=c},{"../base-xform":31}],35:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("workbookPr",{date1904:o.date1904?1:void 0,defaultThemeVersion:164011,filterPrivacy:1})}},{key:"parseOpen",value:function(n){return n.name==="workbookPr"?(this.model={date1904:n.attributes.date1904==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);S.exports=c},{"../base-xform":31}],36:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){var p={xWindow:o.x||0,yWindow:o.y||0,windowWidth:o.width||12e3,windowHeight:o.height||24e3,firstSheet:o.firstSheet,activeTab:o.activeTab};o.visibility&&o.visibility!=="visible"&&(p.visibility=o.visibility),n.leafNode("workbookView",p)}},{key:"parseOpen",value:function(n){if(n.name==="workbookView"){var o=this.model={},p=function(N,L,F){var M=L!==void 0?o[N]=L:F;M!==void 0&&(o[N]=M)},O=function(N,L,F){var M=L!==void 0?o[N]=parseInt(L,10):F;M!==void 0&&(o[N]=M)};return O("x",n.attributes.xWindow,0),O("y",n.attributes.yWindow,0),O("width",n.attributes.windowWidth,25e3),O("height",n.attributes.windowHeight,1e4),p("visibility",n.attributes.visibility,"visible"),O("activeTab",n.attributes.activeTab,void 0),O("firstSheet",n.attributes.firstSheet,void 0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);S.exports=c},{"../base-xform":31}],37:[function(e,S,_){function u(L){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(M){return typeof M}:u=function(M){return M&&typeof Symbol=="function"&&M.constructor===Symbol&&M!==Symbol.prototype?"symbol":typeof M},u(L)}function m(L,F){if(!(L instanceof F))throw new TypeError("Cannot call a class as a function")}function g(L,F){for(var M=0;M"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(L){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(M){return M.__proto__||Object.getPrototypeOf(M)},s(L)}var v=e("../../../utils/under-dash"),c=e("../../../utils/col-cache"),a=e("../../../utils/xml-stream"),r=e("../base-xform"),t=e("../static-xform"),i=e("../list-xform"),n=e("./defined-name-xform"),o=e("./sheet-xform"),p=e("./workbook-view-xform"),O=e("./workbook-properties-xform"),C=e("./workbook-calc-properties-xform"),N=function(L){w(M,L);var F=y(M);function M(){var D;return m(this,M),D=F.call(this),D.map={fileVersion:M.STATIC_XFORMS.fileVersion,workbookPr:new O,bookViews:new i({tag:"bookViews",count:!1,childXform:new p}),sheets:new i({tag:"sheets",count:!1,childXform:new o}),definedNames:new i({tag:"definedNames",count:!1,childXform:new n}),calcPr:new C},D}return b(M,[{key:"prepare",value:function(R){R.sheets=R.worksheets;var P=[],E=0;R.sheets.forEach(function(A){if(A.pageSetup&&A.pageSetup.printArea&&A.pageSetup.printArea.split("&&").forEach(function(I){var j=I.split(":"),B={name:"_xlnm.Print_Area",ranges:["'".concat(A.name,"'!$").concat(j[0],":$").concat(j[1])],localSheetId:E};P.push(B)}),A.pageSetup&&(A.pageSetup.printTitlesRow||A.pageSetup.printTitlesColumn)){var z=[];if(A.pageSetup.printTitlesColumn){var W=A.pageSetup.printTitlesColumn.split(":");z.push("'".concat(A.name,"'!$").concat(W[0],":$").concat(W[1]))}if(A.pageSetup.printTitlesRow){var $=A.pageSetup.printTitlesRow.split(":");z.push("'".concat(A.name,"'!$").concat($[0],":$").concat($[1]))}var U={name:"_xlnm.Print_Titles",ranges:z,localSheetId:E};P.push(U)}E++}),P.length&&(R.definedNames=R.definedNames.concat(P)),(R.media||[]).forEach(function(A,z){A.name=A.type+(z+1)})}},{key:"render",value:function(R,P){R.openXml(a.StdDocAttributes),R.openNode("workbook",M.WORKBOOK_ATTRIBUTES),this.map.fileVersion.render(R),this.map.workbookPr.render(R,P.properties),this.map.bookViews.render(R,P.views),this.map.sheets.render(R,P.sheets),this.map.definedNames.render(R,P.definedNames),this.map.calcPr.render(R,P.calcProperties),R.closeNode()}},{key:"parseOpen",value:function(R){if(this.parser)return this.parser.parseOpen(R),!0;switch(R.name){case"workbook":return!0;default:return this.parser=this.map[R.name],this.parser&&this.parser.parseOpen(R),!0}}},{key:"parseText",value:function(R){this.parser&&this.parser.parseText(R)}},{key:"parseClose",value:function(R){if(this.parser)return this.parser.parseClose(R)||(this.parser=void 0),!0;switch(R){case"workbook":return this.model={sheets:this.map.sheets.model,properties:this.map.workbookPr.model||{},views:this.map.bookViews.model,calcProperties:{}},this.map.definedNames.model&&(this.model.definedNames=this.map.definedNames.model),!1;default:return!0}}},{key:"reconcile",value:function(R){var P=(R.workbookRels||[]).reduce(function($,U){return $[U.Id]=U,$},{}),E=[],A,z=0;(R.sheets||[]).forEach(function($){var U=P[$.rId];U&&(A=R.worksheetHash["xl/".concat(U.Target.replace(/^(\s|\/xl\/)+/,""))],A&&(A.name=$.name,A.id=$.id,A.state=$.state,E[z++]=A))});var W=[];v.each(R.definedNames,function($){if($.name==="_xlnm.Print_Area"){if(A=E[$.localSheetId],A){A.pageSetup||(A.pageSetup={});var U=c.decodeEx($.ranges[0]);A.pageSetup.printArea=A.pageSetup.printArea?"".concat(A.pageSetup.printArea,"&&").concat(U.dimensions):U.dimensions}}else if($.name==="_xlnm.Print_Titles"){if(A=E[$.localSheetId],A){A.pageSetup||(A.pageSetup={});var I=$.ranges.join(","),j=/\$/g,B=/\$\d+:\$\d+/,V=I.match(B);if(V&&V.length){var te=V[0];A.pageSetup.printTitlesRow=te.replace(j,"")}var ie=/\$[A-Z]+:\$[A-Z]+/,ce=I.match(ie);if(ce&&ce.length){var be=ce[0];A.pageSetup.printTitlesColumn=be.replace(j,"")}}}else W.push($)}),R.definedNames=W,R.media.forEach(function($,U){$.index=U})}}]),M}(r);N.WORKBOOK_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x15","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},N.STATIC_XFORMS={fileVersion:new t({tag:"fileVersion",$:{appName:"xl",lastEdited:5,lowestEdited:5,rupBuild:9303}})},S.exports=N},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(e,S,_){function u(h,l){var d=Object.keys(h);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(h);l&&(s=s.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),d.push.apply(d,s)}return d}function m(h){for(var l=1;l"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n._model=i,n}return b(t,[{key:"render",value:function(n,o,p){o===p[2]?n.leafNode(this.tag):this.tag==="x:SizeWithCells"&&o===p[1]&&n.leafNode(this.tag)}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={},this.model[this.tag]=!0,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),t}(v);S.exports=c},{"../../base-xform":31}],41:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n._model=i,n}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(n){this.text=n}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this._model&&this._model.tag}}]),t}(v);S.exports=c},{"../../base-xform":31}],42:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"getAnchorRect",value:function(n){var o=Math.floor(n.left),p=Math.floor((n.left-o)*68),O=Math.floor(n.top),C=Math.floor((n.top-O)*18),N=Math.floor(n.right),L=Math.floor((n.right-N)*68),F=Math.floor(n.bottom),M=Math.floor((n.bottom-F)*18);return[o,p,O,C,N,L,F,M]}},{key:"getDefaultRect",value:function(n){var o=n.col,p=6,O=Math.max(n.row-2,0),C=14,N=o+2,L=2,F=O+4,M=16;return[o,p,O,C,N,L,F,M]}},{key:"render",value:function(n,o){var p=o.anchor?this.getAnchorRect(o.anchor):this.getDefaultRect(o.refAddress);n.leafNode("x:Anchor",null,p.join(", "))}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.text="",!0;default:return!1}}},{key:"parseText",value:function(n){this.text=n}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"x:Anchor"}}]),t}(v);S.exports=c},{"../base-xform":31}],43:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("./vml-anchor-xform"),a=e("./style/vml-protection-xform"),r=e("./style/vml-position-xform"),t=["twoCells","oneCells","absolute"],i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"x:Anchor":new c,"x:Locked":new a({tag:"x:Locked"}),"x:LockText":new a({tag:"x:LockText"}),"x:SizeWithCells":new r({tag:"x:SizeWithCells"}),"x:MoveWithCells":new r({tag:"x:MoveWithCells"})},O}return b(p,[{key:"render",value:function(C,N){var L=N.note,F=L.protection,M=L.editAs;C.openNode(this.tag,{ObjectType:"Note"}),this.map["x:MoveWithCells"].render(C,M,t),this.map["x:SizeWithCells"].render(C,M,t),this.map["x:Anchor"].render(C,N),this.map["x:Locked"].render(C,F.locked),C.leafNode("x:AutoFill",null,"False"),this.map["x:LockText"].render(C,F.lockText),C.leafNode("x:Row",null,N.refAddress.row-1),C.leafNode("x:Column",null,N.refAddress.col-1),C.closeNode()}},{key:"parseOpen",value:function(C){switch(C.name){case this.tag:this.reset(),this.model={anchor:[],protection:{},editAs:""};break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case this.tag:return this.normalizeModel(),!1;default:return!0}}},{key:"normalizeModel",value:function(){var C=Object.assign({},this.map["x:MoveWithCells"].model,this.map["x:SizeWithCells"].model),N=Object.keys(C).length;this.model.editAs=t[N],this.model.anchor=this.map["x:Anchor"].text,this.model.protection.locked=this.map["x:Locked"].text,this.model.protection.lockText=this.map["x:LockText"].text}},{key:"tag",get:function(){return"x:ClientData"}}]),p}(v);S.exports=i},{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./vml-shape-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"v:shape":new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openXml(v.StdDocAttributes),p.openNode(this.tag,n.DRAWING_ATTRIBUTES),p.openNode("o:shapelayout",{"v:ext":"edit"}),p.leafNode("o:idmap",{"v:ext":"edit",data:1}),p.closeNode(),p.openNode("v:shapetype",{id:"_x0000_t202",coordsize:"21600,21600","o:spt":202,path:"m,l,21600r21600,l21600,xe"}),p.leafNode("v:stroke",{joinstyle:"miter"}),p.leafNode("v:path",{gradientshapeok:"t","o:connecttype":"rect"}),p.closeNode(),O.comments.forEach(function(N,L){C.map["v:shape"].render(p,N,L)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset(),this.model={comments:[]};break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.comments.push(this.parser.model),this.parser=void 0),!0;switch(p){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(p,O){var C=this;p.anchors.forEach(function(N){N.br?C.map["xdr:twoCellAnchor"].reconcile(N,O):C.map["xdr:oneCellAnchor"].reconcile(N,O)})}},{key:"tag",get:function(){return"xml"}}]),n}(c);r.DRAWING_ATTRIBUTES={"xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:x":"urn:schemas-microsoft-com:office:excel"},S.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./vml-textbox-xform"),a=e("./vml-client-data-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"v:textbox":new c,"x:ClientData":new a},o}return b(n,[{key:"render",value:function(p,O,C){p.openNode("v:shape",n.V_SHAPE_ATTRIBUTES(O,C)),p.leafNode("v:fill",{color2:"infoBackground [80]"}),p.leafNode("v:shadow",{color:"none [81]",obscured:"t"}),p.leafNode("v:path",{"o:connecttype":"none"}),this.map["v:textbox"].render(p,O),this.map["x:ClientData"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset(),this.model={margins:{insetmode:p.attributes["o:insetmode"]},anchor:"",editAs:"",protection:{}};break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){case this.tag:return this.model.margins.inset=this.map["v:textbox"].model&&this.map["v:textbox"].model.inset,this.model.protection=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.protection,this.model.anchor=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.anchor,this.model.editAs=this.map["x:ClientData"].model&&this.map["x:ClientData"].model.editAs,!1;default:return!0}}},{key:"tag",get:function(){return"v:shape"}}]),n}(v);r.V_SHAPE_ATTRIBUTES=function(t,i){return{id:"_x0000_s".concat(1025+i),type:"#_x0000_t202",style:"position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden",fillcolor:"infoBackground [80]",strokecolor:"none [81]","o:insetmode":t.note.margins&&t.note.margins.insetmode}},S.exports=r},{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"conversionUnit",value:function(n,o,p){return"".concat(parseFloat(n)*o.toFixed(2)).concat(p)}},{key:"reverseConversionUnit",value:function(n){var o=this;return(n||"").split(",").map(function(p){return Number(parseFloat(o.conversionUnit(parseFloat(p),.1,"")).toFixed(2))})}},{key:"render",value:function(n,o){var p=this,O={style:"mso-direction-alt:auto"};if(o&&o.note){var C=o.note&&o.note.margins,N=C.inset;Array.isArray(N)&&(N=N.map(function(L){return p.conversionUnit(L,10,"mm")}).join(",")),N&&(O.inset=N)}n.openNode("v:textbox",O),n.leafNode("div",{style:"text-align:left"}),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={inset:this.reverseConversionUnit(n.attributes.inset)},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"v:textbox"}}]),t}(v);S.exports=c},{"../base-xform":31}],47:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("./base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"createNewModel",value:function(n){return{}}},{key:"parseOpen",value:function(n){return this.parser=this.parser||this.map[n.name],this.parser?(this.parser.parseOpen(n),!0):n.name===this.tag?(this.model=this.createNewModel(n),!0):!1}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"onParserClose",value:function(n,o){this.model[n]=o.model}},{key:"parseClose",value:function(n){return this.parser?(this.parser.parseClose(n)||(this.onParserClose(n,this.parser),this.parser=void 0),!0):n!==this.tag}}]),t}(v);S.exports=c},{"./base-xform":31}],48:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("HeadingPairs"),n.openNode("vt:vector",{size:2,baseType:"variant"}),n.openNode("vt:variant"),n.leafNode("vt:lpstr",void 0,"Worksheets"),n.closeNode(),n.openNode("vt:variant"),n.leafNode("vt:i4",void 0,o.length),n.closeNode(),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){return n.name==="HeadingPairs"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){return n!=="HeadingPairs"}}]),t}(v);S.exports=c},{"../base-xform":31}],49:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("TitlesOfParts"),n.openNode("vt:vector",{size:o.length,baseType:"lpstr"}),o.forEach(function(p){n.leafNode("vt:lpstr",void 0,p.name)}),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){return n.name==="TitlesOfParts"}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){return n!=="TitlesOfParts"}}]),t}(v);S.exports=c},{"../base-xform":31}],50:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("../simple/string-xform"),r=e("./app-heading-pairs-xform"),t=e("./app-titles-of-parts-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={Company:new a({tag:"Company"}),Manager:new a({tag:"Manager"}),HeadingPairs:new r,TitleOfParts:new t},O}return b(p,[{key:"render",value:function(C,N){C.openXml(v.StdDocAttributes),C.openNode("Properties",p.PROPERTY_ATTRIBUTES),C.leafNode("Application",void 0,"Microsoft Excel"),C.leafNode("DocSecurity",void 0,"0"),C.leafNode("ScaleCrop",void 0,"false"),this.map.HeadingPairs.render(C,N.worksheets),this.map.TitleOfParts.render(C,N.worksheets),this.map.Company.render(C,N.company||""),this.map.Manager.render(C,N.manager),C.leafNode("LinksUpToDate",void 0,"false"),C.leafNode("SharedDoc",void 0,"false"),C.leafNode("HyperlinksChanged",void 0,"false"),C.leafNode("AppVersion",void 0,"16.0300"),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"Properties":return!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case"Properties":return this.model={worksheets:this.map.TitleOfParts.model,company:this.map.Company.model,manager:this.map.Manager.model},!1;default:return!0}}}]),p}(c);i.DateFormat=function(n){return n.toISOString().replace(/[.]\d{3,6}/,"")},i.DateAttrs={"xsi:type":"dcterms:W3CDTF"},i.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties","xmlns:vt":"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"},S.exports=i},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.openXml(v.StdDocAttributes),o.openNode("Types",i.PROPERTY_ATTRIBUTES);var O={};(p.media||[]).forEach(function(N){if(N.type==="image"){var L=N.extension;O[L]||(O[L]=!0,o.leafNode("Default",{Extension:L,ContentType:"image/".concat(L)}))}}),o.leafNode("Default",{Extension:"rels",ContentType:"application/vnd.openxmlformats-package.relationships+xml"}),o.leafNode("Default",{Extension:"xml",ContentType:"application/xml"}),o.leafNode("Override",{PartName:"/xl/workbook.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"}),p.worksheets.forEach(function(N){var L="/xl/worksheets/sheet".concat(N.id,".xml");o.leafNode("Override",{PartName:L,ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"})}),o.leafNode("Override",{PartName:"/xl/theme/theme1.xml",ContentType:"application/vnd.openxmlformats-officedocument.theme+xml"}),o.leafNode("Override",{PartName:"/xl/styles.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"});var C=p.sharedStrings&&p.sharedStrings.count;C&&o.leafNode("Override",{PartName:"/xl/sharedStrings.xml",ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"}),p.tables&&p.tables.forEach(function(N){o.leafNode("Override",{PartName:"/xl/tables/".concat(N.target),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"})}),p.drawings&&p.drawings.forEach(function(N){o.leafNode("Override",{PartName:"/xl/drawings/".concat(N.name,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.drawing+xml"})}),p.commentRefs&&(o.leafNode("Default",{Extension:"vml",ContentType:"application/vnd.openxmlformats-officedocument.vmlDrawing"}),p.commentRefs.forEach(function(N){var L=N.commentName;o.leafNode("Override",{PartName:"/xl/".concat(L,".xml"),ContentType:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"})})),o.leafNode("Override",{PartName:"/docProps/core.xml",ContentType:"application/vnd.openxmlformats-package.core-properties+xml"}),o.leafNode("Override",{PartName:"/docProps/app.xml",ContentType:"application/vnd.openxmlformats-officedocument.extended-properties+xml"}),o.closeNode()}},{key:"parseOpen",value:function(){return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(c);a.PROPERTY_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"},S.exports=a},{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("../simple/date-xform"),r=e("../simple/string-xform"),t=e("../simple/integer-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"dc:creator":new r({tag:"dc:creator"}),"dc:title":new r({tag:"dc:title"}),"dc:subject":new r({tag:"dc:subject"}),"dc:description":new r({tag:"dc:description"}),"dc:identifier":new r({tag:"dc:identifier"}),"dc:language":new r({tag:"dc:language"}),"cp:keywords":new r({tag:"cp:keywords"}),"cp:category":new r({tag:"cp:category"}),"cp:lastModifiedBy":new r({tag:"cp:lastModifiedBy"}),"cp:lastPrinted":new a({tag:"cp:lastPrinted",format:p.DateFormat}),"cp:revision":new t({tag:"cp:revision"}),"cp:version":new r({tag:"cp:version"}),"cp:contentStatus":new r({tag:"cp:contentStatus"}),"cp:contentType":new r({tag:"cp:contentType"}),"dcterms:created":new a({tag:"dcterms:created",attrs:p.DateAttrs,format:p.DateFormat}),"dcterms:modified":new a({tag:"dcterms:modified",attrs:p.DateAttrs,format:p.DateFormat})},O}return b(p,[{key:"render",value:function(C,N){C.openXml(v.StdDocAttributes),C.openNode("cp:coreProperties",p.CORE_PROPERTY_ATTRIBUTES),this.map["dc:creator"].render(C,N.creator),this.map["dc:title"].render(C,N.title),this.map["dc:subject"].render(C,N.subject),this.map["dc:description"].render(C,N.description),this.map["dc:identifier"].render(C,N.identifier),this.map["dc:language"].render(C,N.language),this.map["cp:keywords"].render(C,N.keywords),this.map["cp:category"].render(C,N.category),this.map["cp:lastModifiedBy"].render(C,N.lastModifiedBy),this.map["cp:lastPrinted"].render(C,N.lastPrinted),this.map["cp:revision"].render(C,N.revision),this.map["cp:version"].render(C,N.version),this.map["cp:contentStatus"].render(C,N.contentStatus),this.map["cp:contentType"].render(C,N.contentType),this.map["dcterms:created"].render(C,N.created),this.map["dcterms:modified"].render(C,N.modified),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"cp:coreProperties":case"coreProperties":return!0;default:if(this.parser=this.map[C.name],this.parser)return this.parser.parseOpen(C),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(C)))}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case"cp:coreProperties":case"coreProperties":return this.model={creator:this.map["dc:creator"].model,title:this.map["dc:title"].model,subject:this.map["dc:subject"].model,description:this.map["dc:description"].model,identifier:this.map["dc:identifier"].model,language:this.map["dc:language"].model,keywords:this.map["cp:keywords"].model,category:this.map["cp:category"].model,lastModifiedBy:this.map["cp:lastModifiedBy"].model,lastPrinted:this.map["cp:lastPrinted"].model,revision:this.map["cp:revision"].model,contentStatus:this.map["cp:contentStatus"].model,contentType:this.map["cp:contentType"].model,created:this.map["dcterms:created"].model,modified:this.map["dcterms:modified"].model},!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(C))}}}]),p}(c);i.DateFormat=function(n){return n.toISOString().replace(/[.]\d{3}/,"")},i.DateAttrs={"xsi:type":"dcterms:W3CDTF"},i.CORE_PROPERTY_ATTRIBUTES={"xmlns:cp":"http://schemas.openxmlformats.org/package/2006/metadata/core-properties","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:dcterms":"http://purl.org/dc/terms/","xmlns:dcmitype":"http://purl.org/dc/dcmitype/","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},S.exports=i},{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("Relationship",o)}},{key:"parseOpen",value:function(n){switch(n.name){case"Relationship":return this.model=n.attributes,!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);S.exports=c},{"../base-xform":31}],54:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./relationship-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={Relationship:new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;O=O||this._values,p.openXml(v.StdDocAttributes),p.openNode("Relationships",n.RELATIONSHIPS_ATTRIBUTES),O.forEach(function(N){C.map.Relationship.render(p,N)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"Relationships":return this.model=[],!0;default:if(this.parser=this.map[p.name],this.parser)return this.parser.parseOpen(p),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(p)))}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.push(this.parser.model),this.parser=void 0),!0;switch(p){case"Relationships":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(p))}}}]),n}(c);r.RELATIONSHIPS_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},S.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"parseOpen",value:function(n){if(this.parser)return this.parser.parseOpen(n),!0;switch(n.name){case this.tag:this.reset(),this.model={range:{editAs:n.attributes.editAs||"oneCell"}};break;default:this.parser=this.map[n.name],this.parser&&this.parser.parseOpen(n);break}return!0}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"reconcilePicture",value:function(n,o){if(n&&n.rId){var p=o.rels[n.rId],O=p.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/);if(O){var C=O[1],N=o.mediaIndex[C];return o.media[N]}}}}]),t}(v);S.exports=c},{"../base-xform":31}],56:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./blip-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={"a:blip":new c},n}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag),this.map["a:blip"].render(o,p),o.openNode("a:stretch"),o.leafNode("a:fillRect"),o.closeNode(),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:this.reset();break;default:this.parser=this.map[o.name],this.parser&&this.parser.parseOpen(o);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.parser=void 0),!0;switch(o){case this.tag:return this.model=this.map["a:blip"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:blipFill"}}]),i}(v);S.exports=a},{"../base-xform":31,"./blip-xform":57}],57:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:embed":o.rId,cstate:"print"})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:embed"]},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:blip"}}]),t}(v);S.exports=c},{"../base-xform":31}],58:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n){n.openNode(this.tag),n.leafNode("a:picLocks",{noChangeAspect:"1"}),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPicPr"}}]),t}(v);S.exports=c},{"../base-xform":31}],59:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./hlink-click-xform"),a=e("./ext-lst-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"a:hlinkClick":new c,"a:extLst":new a},o}return b(n,[{key:"render",value:function(p,O){p.openNode(this.tag,{id:O.index,name:"Picture ".concat(O.index)}),this.map["a:hlinkClick"].render(p,O),this.map["a:extLst"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset();break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){case this.tag:return this.model=this.map["a:hlinkClick"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:cNvPr"}}]),n}(v);S.exports=r},{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("../simple/integer-xform"),a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.tag=n.tag,o.map={"xdr:col":new c({tag:"xdr:col",zero:!0}),"xdr:colOff":new c({tag:"xdr:colOff",zero:!0}),"xdr:row":new c({tag:"xdr:row",zero:!0}),"xdr:rowOff":new c({tag:"xdr:rowOff",zero:!0})},o}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag),this.map["xdr:col"].render(o,p.nativeCol),this.map["xdr:colOff"].render(o,p.nativeColOff),this.map["xdr:row"].render(o,p.nativeRow),this.map["xdr:rowOff"].render(o,p.nativeRowOff),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:this.reset();break;default:this.parser=this.map[o.name],this.parser&&this.parser.parseOpen(o);break}return!0}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.parser=void 0),!0;switch(o){case this.tag:return this.model={nativeCol:this.map["xdr:col"].model,nativeColOff:this.map["xdr:colOff"].model,nativeRow:this.map["xdr:row"].model,nativeRowOff:this.map["xdr:rowOff"].model},!1;default:return!0}}}]),i}(v);S.exports=a},{"../base-xform":31,"../simple/integer-xform":117}],61:[function(e,S,_){function u(o){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(O){return typeof O}:u=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},u(o)}function m(o,p){if(!(o instanceof p))throw new TypeError("Cannot call a class as a function")}function g(o,p){for(var O=0;O"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(o){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},s(o)}var v=e("../../../utils/col-cache"),c=e("../../../utils/xml-stream"),a=e("../base-xform"),r=e("./two-cell-anchor-xform"),t=e("./one-cell-anchor-xform");function i(o){var p=typeof o.range=="string"?v.decode(o.range):o.range;return p.br?"xdr:twoCellAnchor":"xdr:oneCellAnchor"}var n=function(o){w(O,o);var p=y(O);function O(){var C;return m(this,O),C=p.call(this),C.map={"xdr:twoCellAnchor":new r,"xdr:oneCellAnchor":new t},C}return b(O,[{key:"prepare",value:function(N){var L=this;N.anchors.forEach(function(F,M){F.anchorType=i(F);var D=L.map[F.anchorType];D.prepare(F,{index:M})})}},{key:"render",value:function(N,L){var F=this;N.openXml(c.StdDocAttributes),N.openNode(this.tag,O.DRAWING_ATTRIBUTES),L.anchors.forEach(function(M){var D=F.map[M.anchorType];D.render(N,M)}),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case this.tag:this.reset(),this.model={anchors:[]};break;default:this.parser=this.map[N.name],this.parser&&this.parser.parseOpen(N);break}return!0}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){if(this.parser)return this.parser.parseClose(N)||(this.model.anchors.push(this.parser.model),this.parser=void 0),!0;switch(N){case this.tag:return!1;default:return!0}}},{key:"reconcile",value:function(N,L){var F=this;N.anchors.forEach(function(M){M.br?F.map["xdr:twoCellAnchor"].reconcile(M,L):F.map["xdr:oneCellAnchor"].reconcile(M,L)})}},{key:"tag",get:function(){return"xdr:wsDr"}}]),O}(a);n.DRAWING_ATTRIBUTES={"xmlns:xdr":"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing","xmlns:a":"http://schemas.openxmlformats.org/drawingml/2006/main"},S.exports=n},{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n){n.openNode(this.tag),n.openNode("a:ext",{uri:"{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}"}),n.leafNode("a16:creationId",{"xmlns:a16":"http://schemas.microsoft.com/office/drawing/2014/main",id:"{00000000-0008-0000-0000-000002000000}"}),n.closeNode(),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(n){switch(n){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"a:extLst"}}]),t}(v);S.exports=c},{"../base-xform":31}],63:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=9525,a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.tag=n.tag,o.map={},o}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag);var O=Math.floor(p.width*c),C=Math.floor(p.height*c);o.addAttribute("cx",O),o.addAttribute("cy",C),o.closeNode()}},{key:"parseOpen",value:function(o){return o.name===this.tag?(this.model={width:parseInt(o.attributes.cx||"0",10)/c,height:parseInt(o.attributes.cy||"0",10)/c},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),i}(v);S.exports=a},{"../base-xform":31}],64:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o.hyperlinks&&o.hyperlinks.rId&&n.leafNode(this.tag,{"xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","r:id":o.hyperlinks.rId,tooltip:o.hyperlinks.tooltip})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={hyperlinks:{rId:n.attributes["r:id"],tooltip:n.attributes.tooltip}},!0;default:return!0}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"a:hlinkClick"}}]),t}(v);S.exports=c},{"../base-xform":31}],65:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./c-nv-pr-xform"),a=e("./c-nv-pic-pr-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"xdr:cNvPr":new c,"xdr:cNvPicPr":new a},o}return b(n,[{key:"render",value:function(p,O){p.openNode(this.tag),this.map["xdr:cNvPr"].render(p,O),this.map["xdr:cNvPicPr"].render(p,O),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case this.tag:this.reset();break;default:this.parser=this.map[p.name],this.parser&&this.parser.parseOpen(p);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.parser=void 0),!0;switch(p){case this.tag:return this.model=this.map["xdr:cNvPr"].model,!1;default:return!0}}},{key:"tag",get:function(){return"xdr:nvPicPr"}}]),n}(v);S.exports=r},{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("./base-cell-anchor-xform"),c=e("../static-xform"),a=e("./cell-position-xform"),r=e("./ext-xform"),t=e("./pic-xform"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"xdr:from":new a({tag:"xdr:from"}),"xdr:ext":new r({tag:"xdr:ext"}),"xdr:pic":new t,"xdr:clientData":new c({tag:"xdr:clientData"})},O}return b(p,[{key:"prepare",value:function(C,N){this.map["xdr:pic"].prepare(C.picture,N)}},{key:"render",value:function(C,N){C.openNode(this.tag,{editAs:N.range.editAs||"oneCell"}),this.map["xdr:from"].render(C,N.range.tl),this.map["xdr:ext"].render(C,N.range.ext),this.map["xdr:pic"].render(C,N.picture),this.map["xdr:clientData"].render(C,{}),C.closeNode()}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.parser=void 0),!0;switch(C){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.ext=this.map["xdr:ext"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(C,N){C.medium=this.reconcilePicture(C.picture,N)}},{key:"tag",get:function(){return"xdr:oneCellAnchor"}}]),p}(v);S.exports=i},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("../static-xform"),a=e("./blip-fill-xform"),r=e("./nv-pic-pr-xform"),t=e("./sp-pr"),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={"xdr:nvPicPr":new r,"xdr:blipFill":new a,"xdr:spPr":new c(t)},O}return b(p,[{key:"prepare",value:function(C,N){C.index=N.index+1}},{key:"render",value:function(C,N){C.openNode(this.tag),this.map["xdr:nvPicPr"].render(C,N),this.map["xdr:blipFill"].render(C,N),this.map["xdr:spPr"].render(C,N),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case this.tag:this.reset();break;default:this.parser=this.map[C.name],this.parser&&this.parser.parseOpen(C);break}return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(C){if(this.parser)return this.parser.parseClose(C)||(this.mergeModel(this.parser.model),this.parser=void 0),!0;switch(C){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"xdr:pic"}}]),p}(v);S.exports=i},{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(e,S,_){S.exports={tag:"xdr:spPr",c:[{tag:"a:xfrm",c:[{tag:"a:off",$:{x:"0",y:"0"}},{tag:"a:ext",$:{cx:"0",cy:"0"}}]},{tag:"a:prstGeom",$:{prst:"rect"},c:[{tag:"a:avLst"}]}]}},{}],69:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("./base-cell-anchor-xform"),c=e("../static-xform"),a=e("./cell-position-xform"),r=e("./pic-xform"),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={"xdr:from":new a({tag:"xdr:from"}),"xdr:to":new a({tag:"xdr:to"}),"xdr:pic":new r,"xdr:clientData":new c({tag:"xdr:clientData"})},p}return b(o,[{key:"prepare",value:function(O,C){this.map["xdr:pic"].prepare(O.picture,C)}},{key:"render",value:function(O,C){O.openNode(this.tag,{editAs:C.range.editAs||"oneCell"}),this.map["xdr:from"].render(O,C.range.tl),this.map["xdr:to"].render(O,C.range.br),this.map["xdr:pic"].render(O,C.picture),this.map["xdr:clientData"].render(O,{}),O.closeNode()}},{key:"parseClose",value:function(O){if(this.parser)return this.parser.parseClose(O)||(this.parser=void 0),!0;switch(O){case this.tag:return this.model.range.tl=this.map["xdr:from"].model,this.model.range.br=this.map["xdr:to"].model,this.model.picture=this.map["xdr:pic"].model,!1;default:return!0}}},{key:"reconcile",value:function(O,C){O.medium=this.reconcilePicture(O.picture,C)}},{key:"tag",get:function(){return"xdr:twoCellAnchor"}}]),o}(v);S.exports=t},{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("./base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.always=!!i.always,n.count=i.count,n.empty=i.empty,n.$count=i.$count||"count",n.$=i.$,n.childXform=i.childXform,n.maxItems=i.maxItems,n}return b(t,[{key:"prepare",value:function(n,o){var p=this.childXform;n&&n.forEach(function(O,C){o.index=C,p.prepare(O,o)})}},{key:"render",value:function(n,o){if(this.always||o&&o.length){n.openNode(this.tag,this.$),this.count&&n.addAttribute(this.$count,o&&o.length||0);var p=this.childXform;(o||[]).forEach(function(O,C){p.render(n,O,C)}),n.closeNode()}else this.empty&&n.leafNode(this.tag)}},{key:"parseOpen",value:function(n){if(this.parser)return this.parser.parseOpen(n),!0;switch(n.name){case this.tag:return this.model=[],!0;default:return this.childXform.parseOpen(n)?(this.parser=this.childXform,!0):!1}}},{key:"parseText",value:function(n){this.parser&&this.parser.parseText(n)}},{key:"parseClose",value:function(n){if(this.parser){if(!this.parser.parseClose(n)&&(this.model.push(this.parser.model),this.parser=void 0,this.maxItems&&this.model.length>this.maxItems))throw new Error("Max ".concat(this.childXform.tag," count (").concat(this.maxItems,") exceeded"));return!0}return!1}},{key:"reconcile",value:function(n,o){if(n){var p=this.childXform;n.forEach(function(O){p.reconcile(O,o)})}}}]),t}(v);S.exports=c},{"./base-xform":31}],71:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/col-cache"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p)if(typeof p=="string")o.leafNode("autoFilter",{ref:p});else{var O=function(F){return typeof F=="string"?F:v.getAddress(F.row,F.column).address},C=O(p.from),N=O(p.to);C&&N&&o.leafNode("autoFilter",{ref:"".concat(C,":").concat(N)})}}},{key:"parseOpen",value:function(o){o.name==="autoFilter"&&(this.model=o.attributes.ref)}},{key:"tag",get:function(){return"autoFilter"}}]),i}(c);S.exports=a},{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(e,S,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){var F=Object.keys(N);if(Object.getOwnPropertySymbols){var M=Object.getOwnPropertySymbols(N);L&&(M=M.filter(function(D){return Object.getOwnPropertyDescriptor(N,D).enumerable})),F.push.apply(F,M)}return F}function g(N){for(var L=1;L"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(N){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},a(N)}var r=e("../../../utils/utils"),t=e("../base-xform"),i=e("../../../doc/range"),n=e("../../../doc/enums"),o=e("../strings/rich-text-xform");function p(N){if(N==null)return n.ValueType.Null;if(N instanceof String||typeof N=="string")return n.ValueType.String;if(typeof N=="number")return n.ValueType.Number;if(typeof N=="boolean")return n.ValueType.Boolean;if(N instanceof Date)return n.ValueType.Date;if(N.text&&N.hyperlink)return n.ValueType.Hyperlink;if(N.formula)return n.ValueType.Formula;if(N.error)return n.ValueType.Error;throw new Error("I could not understand type of value")}function O(N){switch(N.type){case n.ValueType.Formula:return p(N.result);default:return N.type}}var C=function(N){h(F,N);var L=d(F);function F(){var M;return w(this,F),M=L.call(this),M.richTextXForm=new o,M}return y(F,[{key:"prepare",value:function(D,R){var P=R.styles.addStyleModel(D.style||{},O(D));switch(P&&(D.styleId=P),D.comment&&R.comments.push(g(g({},D.comment),{},{ref:D.address})),D.type){case n.ValueType.String:case n.ValueType.RichText:R.sharedStrings&&(D.ssId=R.sharedStrings.add(D.value));break;case n.ValueType.Date:R.date1904&&(D.date1904=!0);break;case n.ValueType.Hyperlink:R.sharedStrings&&D.text!==void 0&&D.text!==null&&(D.ssId=R.sharedStrings.add(D.text)),R.hyperlinks.push({address:D.address,target:D.hyperlink,tooltip:D.tooltip});break;case n.ValueType.Merge:R.merges.add(D);break;case n.ValueType.Formula:if(R.date1904&&(D.date1904=!0),D.shareType==="shared"&&(D.si=R.siFormulae++),D.formula)R.formulae[D.address]=D;else if(D.sharedFormula){var E=R.formulae[D.sharedFormula];if(!E)throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(D.address));E.si===void 0?(E.shareType="shared",E.si=R.siFormulae++,E.range=new i(E.address,D.address)):E.range&&E.range.expandToAddress(D.address),D.si=E.si}break}}},{key:"renderFormula",value:function(D,R){var P=null;switch(R.shareType){case"shared":P={t:"shared",ref:R.ref||R.range.range,si:R.si};break;case"array":P={t:"array",ref:R.ref};break;default:R.si!==void 0&&(P={t:"shared",si:R.si});break}switch(p(R.result)){case n.ValueType.Null:D.leafNode("f",P,R.formula);break;case n.ValueType.String:D.addAttribute("t","str"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result);break;case n.ValueType.Number:D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result);break;case n.ValueType.Boolean:D.addAttribute("t","b"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result?1:0);break;case n.ValueType.Error:D.addAttribute("t","e"),D.leafNode("f",P,R.formula),D.leafNode("v",null,R.result.error);break;case n.ValueType.Date:D.leafNode("f",P,R.formula),D.leafNode("v",null,r.dateToExcel(R.result,R.date1904));break;default:throw new Error("I could not understand type of value")}}},{key:"render",value:function(D,R){var P=this;if(!(R.type===n.ValueType.Null&&!R.styleId)){switch(D.openNode("c"),D.addAttribute("r",R.address),R.styleId&&D.addAttribute("s",R.styleId),R.type){case n.ValueType.Null:break;case n.ValueType.Number:D.leafNode("v",null,R.value);break;case n.ValueType.Boolean:D.addAttribute("t","b"),D.leafNode("v",null,R.value?"1":"0");break;case n.ValueType.Error:D.addAttribute("t","e"),D.leafNode("v",null,R.value.error);break;case n.ValueType.String:case n.ValueType.RichText:R.ssId!==void 0?(D.addAttribute("t","s"),D.leafNode("v",null,R.ssId)):R.value&&R.value.richText?(D.addAttribute("t","inlineStr"),D.openNode("is"),R.value.richText.forEach(function(E){P.richTextXForm.render(D,E)}),D.closeNode("is")):(D.addAttribute("t","str"),D.leafNode("v",null,R.value));break;case n.ValueType.Date:D.leafNode("v",null,r.dateToExcel(R.value,R.date1904));break;case n.ValueType.Hyperlink:R.ssId!==void 0?(D.addAttribute("t","s"),D.leafNode("v",null,R.ssId)):(D.addAttribute("t","str"),D.leafNode("v",null,R.text));break;case n.ValueType.Formula:this.renderFormula(D,R);break;case n.ValueType.Merge:break}D.closeNode()}}},{key:"parseOpen",value:function(D){if(this.parser)return this.parser.parseOpen(D),!0;switch(D.name){case"c":return this.model={address:D.attributes.r},this.t=D.attributes.t,D.attributes.s&&(this.model.styleId=parseInt(D.attributes.s,10)),!0;case"f":return this.currentNode="f",this.model.si=D.attributes.si,this.model.shareType=D.attributes.t,this.model.ref=D.attributes.ref,!0;case"v":return this.currentNode="v",!0;case"t":return this.currentNode="t",!0;case"r":return this.parser=this.richTextXForm,this.parser.parseOpen(D),!0;default:return!1}}},{key:"parseText",value:function(D){if(this.parser){this.parser.parseText(D);return}switch(this.currentNode){case"f":this.model.formula=this.model.formula?this.model.formula+D:D;break;case"v":case"t":this.model.value&&this.model.value.richText?this.model.value.richText.text=this.model.value.richText.text?this.model.value.richText.text+D:D:this.model.value=this.model.value?this.model.value+D:D;break}}},{key:"parseClose",value:function(D){switch(D){case"c":{var R=this.model;if(R.formula||R.shareType)R.type=n.ValueType.Formula,R.value&&(this.t==="str"?R.result=r.xmlDecode(R.value):this.t==="b"?R.result=parseInt(R.value,10)!==0:this.t==="e"?R.result={error:R.value}:R.result=parseFloat(R.value),R.value=void 0);else if(R.value!==void 0)switch(this.t){case"s":R.type=n.ValueType.String,R.value=parseInt(R.value,10);break;case"str":R.type=n.ValueType.String,R.value=r.xmlDecode(R.value);break;case"inlineStr":R.type=n.ValueType.String;break;case"b":R.type=n.ValueType.Boolean,R.value=parseInt(R.value,10)!==0;break;case"e":R.type=n.ValueType.Error,R.value={error:R.value};break;default:R.type=n.ValueType.Number,R.value=parseFloat(R.value);break}else R.styleId?R.type=n.ValueType.Null:R.type=n.ValueType.Merge;return!1}case"f":case"v":case"is":return this.currentNode=void 0,!0;case"t":return this.parser?(this.parser.parseClose(D),!0):(this.currentNode=void 0,!0);case"r":return this.model.value=this.model.value||{},this.model.value.richText=this.model.value.richText||[],this.model.value.richText.push(this.parser.model),this.parser=void 0,this.currentNode=void 0,!0;default:return this.parser?(this.parser.parseClose(D),!0):!1}}},{key:"reconcile",value:function(D,R){var P=D.styleId&&R.styles&&R.styles.getStyleModel(D.styleId);switch(P&&(D.style=P),D.styleId!==void 0&&(D.styleId=void 0),D.type){case n.ValueType.String:typeof D.value=="number"&&R.sharedStrings&&(D.value=R.sharedStrings.getString(D.value)),D.value.richText&&(D.type=n.ValueType.RichText);break;case n.ValueType.Number:P&&r.isDateFmt(P.numFmt)&&(D.type=n.ValueType.Date,D.value=r.excelToDate(D.value,R.date1904));break;case n.ValueType.Formula:D.result!==void 0&&P&&r.isDateFmt(P.numFmt)&&(D.result=r.excelToDate(D.result,R.date1904)),D.shareType==="shared"&&(D.ref?R.formulae[D.si]=D.address:(D.sharedFormula=R.formulae[D.si],delete D.shareType),delete D.si);break}var E=R.hyperlinkMap[D.address];E&&(D.type===n.ValueType.Formula?(D.text=D.result,D.result=void 0):(D.text=D.value,D.value=void 0),D.type=n.ValueType.Hyperlink,D.hyperlink=E);var A=R.commentsMap&&R.commentsMap[D.address];A&&(D.comment=A)}},{key:"tag",get:function(){return"c"}}]),F}(t);S.exports=C},{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{iconSet:o.iconSet,iconId:o.iconId})}},{key:"parseOpen",value:function(n){var o=n.attributes;this.model={iconSet:o.iconSet,iconId:v.toIntValue(o.iconId)}}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"x14:cfIcon"}}]),t}(v);S.exports=c},{"../../base-xform":31}],74:[function(e,S,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("uuid"),c=v.v4,a=e("../../base-xform"),r=e("../../composite-xform"),t=e("./databar-ext-xform"),i=e("./icon-set-ext-xform"),n={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},o=function(p){w(C,p);var O=y(C);function C(){var N;return m(this,C),N=O.call(this),N.map={"x14:dataBar":N.databarXform=new t,"x14:iconSet":N.iconSetXform=new i},N}return b(C,[{key:"prepare",value:function(L){C.isExt(L)&&(L.x14Id="{".concat(c(),"}").toUpperCase())}},{key:"render",value:function(L,F){if(C.isExt(F))switch(F.type){case"dataBar":this.renderDataBar(L,F);break;case"iconSet":this.renderIconSet(L,F);break}}},{key:"renderDataBar",value:function(L,F){L.openNode(this.tag,{type:"dataBar",id:F.x14Id}),this.databarXform.render(L,F),L.closeNode()}},{key:"renderIconSet",value:function(L,F){L.openNode(this.tag,{type:"iconSet",priority:F.priority,id:F.x14Id||"{".concat(c(),"}")}),this.iconSetXform.render(L,F),L.closeNode()}},{key:"createNewModel",value:function(L){var F=L.attributes;return{type:F.type,x14Id:F.id,priority:a.toIntValue(F.priority)}}},{key:"onParserClose",value:function(L,F){Object.assign(this.model,F.model)}},{key:"tag",get:function(){return"x14:cfRule"}}],[{key:"isExt",value:function(L){return L.type==="dataBar"?t.isExt(L):!!(L.type==="iconSet"&&(L.custom||n[L.iconSet]))}}]),C}(r);S.exports=o},{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,uuid:526}],75:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../composite-xform"),c=e("./f-ext-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={"xm:f":n.fExtXform=new c},n}return b(i,[{key:"render",value:function(o,p){o.openNode(this.tag,{type:p.type}),p.value!==void 0&&this.fExtXform.render(o,p.value),o.closeNode()}},{key:"createNewModel",value:function(o){return{type:o.attributes.type}}},{key:"onParserClose",value:function(o,p){switch(o){case"xm:f":this.model.value=p.model?parseFloat(p.model):0;break}}},{key:"tag",get:function(){return"x14:cfvo"}}]),i}(v);S.exports=a},{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("./sqref-ext-xform"),a=e("./cf-rule-ext-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"xm:sqref":o.sqRef=new c,"x14:cfRule":o.cfRule=new a},o}return b(n,[{key:"prepare",value:function(p,O){var C=this;p.rules.forEach(function(N){C.cfRule.prepare(N,O)})}},{key:"render",value:function(p,O){var C=this;O.rules.some(a.isExt)&&(p.openNode(this.tag,{"xmlns:xm":"http://schemas.microsoft.com/office/excel/2006/main"}),O.rules.filter(a.isExt).forEach(function(N){return C.cfRule.render(p,N)}),this.sqRef.render(p,O.ref),p.closeNode())}},{key:"createNewModel",value:function(){return{rules:[]}}},{key:"onParserClose",value:function(p,O){switch(p){case"xm:sqref":this.model.ref=O.model;break;case"x14:cfRule":this.model.rules.push(O.model);break}}},{key:"tag",get:function(){return"x14:conditionalFormatting"}}]),n}(v);S.exports=r},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("./cf-rule-ext-xform"),a=e("./conditional-formatting-ext-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"x14:conditionalFormatting":o.cfXform=new a},o}return b(n,[{key:"hasContent",value:function(p){return p.hasExtContent===void 0&&(p.hasExtContent=p.some(function(O){return O.rules.some(c.isExt)})),p.hasExtContent}},{key:"prepare",value:function(p,O){var C=this;p.forEach(function(N){C.cfXform.prepare(N,O)})}},{key:"render",value:function(p,O){var C=this;this.hasContent(O)&&(p.openNode(this.tag),O.forEach(function(N){return C.cfXform.render(p,N)}),p.closeNode())}},{key:"createNewModel",value:function(){return[]}},{key:"onParserClose",value:function(p,O){this.model.push(O.model)}},{key:"tag",get:function(){return"x14:conditionalFormattings"}}]),n}(v);S.exports=r},{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(e,S,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){return y(N)||f(N,L)||b(N,L)||g()}function g(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b(N,L){if(N){if(typeof N=="string")return w(N,L);var F=Object.prototype.toString.call(N).slice(8,-1);if(F==="Object"&&N.constructor&&(F=N.constructor.name),F==="Map"||F==="Set")return Array.from(N);if(F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F))return w(N,L)}}function w(N,L){(L==null||L>N.length)&&(L=N.length);for(var F=0,M=new Array(L);F"u"||!(Symbol.iterator in Object(N)))){var F=[],M=!0,D=!1,R=void 0;try{for(var P=N[Symbol.iterator](),E;!(M=(E=P.next()).done)&&(F.push(E.value),!(L&&F.length===L));M=!0);}catch(A){D=!0,R=A}finally{try{!M&&P.return!=null&&P.return()}finally{if(D)throw R}}return F}}function y(N){if(Array.isArray(N))return N}function h(N,L){if(!(N instanceof L))throw new TypeError("Cannot call a class as a function")}function l(N,L){for(var F=0;F"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function i(N){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},i(N)}var n=e("../../base-xform"),o=e("../../composite-xform"),p=e("../../style/color-xform"),O=e("./cfvo-ext-xform"),C=function(N){s(F,N);var L=c(F);function F(){var M;return h(this,F),M=L.call(this),M.map={"x14:cfvo":M.cfvoXform=new O,"x14:borderColor":M.borderColorXform=new p("x14:borderColor"),"x14:negativeBorderColor":M.negativeBorderColorXform=new p("x14:negativeBorderColor"),"x14:negativeFillColor":M.negativeFillColorXform=new p("x14:negativeFillColor"),"x14:axisColor":M.axisColorXform=new p("x14:axisColor")},M}return d(F,[{key:"render",value:function(D,R){var P=this;D.openNode(this.tag,{minLength:n.toIntAttribute(R.minLength,0,!0),maxLength:n.toIntAttribute(R.maxLength,100,!0),border:n.toBoolAttribute(R.border,!1),gradient:n.toBoolAttribute(R.gradient,!0),negativeBarColorSameAsPositive:n.toBoolAttribute(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolAttribute(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toAttribute(R.axisPosition,"auto"),direction:n.toAttribute(R.direction,"leftToRight")}),R.cfvo.forEach(function(E){P.cfvoXform.render(D,E)}),this.borderColorXform.render(D,R.borderColor),this.negativeBorderColorXform.render(D,R.negativeBorderColor),this.negativeFillColorXform.render(D,R.negativeFillColor),this.axisColorXform.render(D,R.axisColor),D.closeNode()}},{key:"createNewModel",value:function(D){var R=D.attributes;return{cfvo:[],minLength:n.toIntValue(R.minLength,0),maxLength:n.toIntValue(R.maxLength,100),border:n.toBoolValue(R.border,!1),gradient:n.toBoolValue(R.gradient,!0),negativeBarColorSameAsPositive:n.toBoolValue(R.negativeBarColorSameAsPositive,!0),negativeBarBorderColorSameAsPositive:n.toBoolValue(R.negativeBarBorderColorSameAsPositive,!0),axisPosition:n.toStringValue(R.axisPosition,"auto"),direction:n.toStringValue(R.direction,"leftToRight")}}},{key:"onParserClose",value:function(D,R){var P=D.split(":"),E=m(P,2),A=E[1];switch(A){case"cfvo":this.model.cfvo.push(R.model);break;default:this.model[A]=R.model;break}}},{key:"tag",get:function(){return"x14:dataBar"}}],[{key:"isExt",value:function(D){return!D.gradient}}]),F}(o);S.exports=C},{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"xm:f"}}]),t}(v);S.exports=c},{"../../base-xform":31}],80:[function(e,S,_){function u(N){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(F){return typeof F}:u=function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},u(N)}function m(N,L){return y(N)||f(N,L)||b(N,L)||g()}function g(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b(N,L){if(N){if(typeof N=="string")return w(N,L);var F=Object.prototype.toString.call(N).slice(8,-1);if(F==="Object"&&N.constructor&&(F=N.constructor.name),F==="Map"||F==="Set")return Array.from(N);if(F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F))return w(N,L)}}function w(N,L){(L==null||L>N.length)&&(L=N.length);for(var F=0,M=new Array(L);F"u"||!(Symbol.iterator in Object(N)))){var F=[],M=!0,D=!1,R=void 0;try{for(var P=N[Symbol.iterator](),E;!(M=(E=P.next()).done)&&(F.push(E.value),!(L&&F.length===L));M=!0);}catch(A){D=!0,R=A}finally{try{!M&&P.return!=null&&P.return()}finally{if(D)throw R}}return F}}function y(N){if(Array.isArray(N))return N}function h(N,L){if(!(N instanceof L))throw new TypeError("Cannot call a class as a function")}function l(N,L){for(var F=0;F"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function i(N){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(F){return F.__proto__||Object.getPrototypeOf(F)},i(N)}var n=e("../../base-xform"),o=e("../../composite-xform"),p=e("./cfvo-ext-xform"),O=e("./cf-icon-ext-xform"),C=function(N){s(F,N);var L=c(F);function F(){var M;return h(this,F),M=L.call(this),M.map={"x14:cfvo":M.cfvoXform=new p,"x14:cfIcon":M.cfIconXform=new O},M}return d(F,[{key:"render",value:function(D,R){var P=this;D.openNode(this.tag,{iconSet:n.toStringAttribute(R.iconSet),reverse:n.toBoolAttribute(R.reverse,!1),showValue:n.toBoolAttribute(R.showValue,!0),custom:n.toBoolAttribute(R.icons,!1)}),R.cfvo.forEach(function(E){P.cfvoXform.render(D,E)}),R.icons&&R.icons.forEach(function(E,A){E.iconId=A,P.cfIconXform.render(D,E)}),D.closeNode()}},{key:"createNewModel",value:function(D){var R=D.attributes;return{cfvo:[],iconSet:n.toStringValue(R.iconSet,"3TrafficLights"),reverse:n.toBoolValue(R.reverse,!1),showValue:n.toBoolValue(R.showValue,!0)}}},{key:"onParserClose",value:function(D,R){var P=D.split(":"),E=m(P,2),A=E[1];switch(A){case"cfvo":this.model.cfvo.push(R.model);break;case"cfIcon":this.model.icons||(this.model.icons=[]),this.model.icons.push(R.model);break;default:this.model[A]=R.model;break}}},{key:"tag",get:function(){return"x14:iconSet"}}]),F}(o);S.exports=C},{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"xm:sqref"}}]),t}(v);S.exports=c},{"../../base-xform":31}],82:[function(e,S,_){function u(R){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(E){return typeof E}:u=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},u(R)}function m(R,P){var E=Object.keys(R);if(Object.getOwnPropertySymbols){var A=Object.getOwnPropertySymbols(R);P&&(A=A.filter(function(z){return Object.getOwnPropertyDescriptor(R,z).enumerable})),E.push.apply(E,A)}return E}function g(R){for(var P=1;P"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(R){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},a(R)}var r=e("../../base-xform"),t=e("../../composite-xform"),i=e("../../../../doc/range"),n=e("./databar-xform"),o=e("./ext-lst-ref-xform"),p=e("./formula-xform"),O=e("./color-scale-xform"),C=e("./icon-set-xform"),N={"3Triangles":!0,"3Stars":!0,"5Boxes":!0},L=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var E=new i(P.ref),A=E.tl;switch(P.operator){case"containsText":return'NOT(ISERROR(SEARCH("'.concat(P.text,'",').concat(A,")))");case"containsBlanks":return"LEN(TRIM(".concat(A,"))=0");case"notContainsBlanks":return"LEN(TRIM(".concat(A,"))>0");case"containsErrors":return"ISERROR(".concat(A,")");case"notContainsErrors":return"NOT(ISERROR(".concat(A,"))");default:return}},F=function(P){if(P.formulae&&P.formulae[0])return P.formulae[0];var E=new i(P.ref),A=E.tl;switch(P.timePeriod){case"thisWeek":return"AND(TODAY()-ROUNDDOWN(".concat(A,",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(A,",0)-TODAY()<=7-WEEKDAY(TODAY()))");case"lastWeek":return"AND(TODAY()-ROUNDDOWN(".concat(A,",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(A,",0)<(WEEKDAY(TODAY())+7))");case"nextWeek":return"AND(ROUNDDOWN(".concat(A,",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(A,",0)-TODAY()<(15-WEEKDAY(TODAY())))");case"yesterday":return"FLOOR(".concat(A,",1)=TODAY()-1");case"today":return"FLOOR(".concat(A,",1)=TODAY()");case"tomorrow":return"FLOOR(".concat(A,",1)=TODAY()+1");case"last7Days":return"AND(TODAY()-FLOOR(".concat(A,",1)<=6,FLOOR(").concat(A,",1)<=TODAY())");case"lastMonth":return"AND(MONTH(".concat(A,")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(A,")=YEAR(EDATE(TODAY(),0-1)))");case"thisMonth":return"AND(MONTH(".concat(A,")=MONTH(TODAY()),YEAR(").concat(A,")=YEAR(TODAY()))");case"nextMonth":return"AND(MONTH(".concat(A,")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(A,")=YEAR(EDATE(TODAY(),0+1)))");default:return}},M=function(P){var E=P.type,A=P.operator;switch(E){case"containsText":case"containsBlanks":case"notContainsBlanks":case"containsErrors":case"notContainsErrors":return{type:"containsText",operator:E};default:return{type:E,operator:A}}},D=function(R){h(E,R);var P=d(E);function E(){var A;return w(this,E),A=P.call(this),A.map={dataBar:A.databarXform=new n,extLst:A.extLstRefXform=new o,formula:A.formulaXform=new p,colorScale:A.colorScaleXform=new O,iconSet:A.iconSetXform=new C},A}return y(E,[{key:"render",value:function(z,W){switch(W.type){case"expression":this.renderExpression(z,W);break;case"cellIs":this.renderCellIs(z,W);break;case"top10":this.renderTop10(z,W);break;case"aboveAverage":this.renderAboveAverage(z,W);break;case"dataBar":this.renderDataBar(z,W);break;case"colorScale":this.renderColorScale(z,W);break;case"iconSet":this.renderIconSet(z,W);break;case"containsText":this.renderText(z,W);break;case"timePeriod":this.renderTimePeriod(z,W);break}}},{key:"renderExpression",value:function(z,W){z.openNode(this.tag,{type:"expression",dxfId:W.dxfId,priority:W.priority}),this.formulaXform.render(z,W.formulae[0]),z.closeNode()}},{key:"renderCellIs",value:function(z,W){var $=this;z.openNode(this.tag,{type:"cellIs",dxfId:W.dxfId,priority:W.priority,operator:W.operator}),W.formulae.forEach(function(U){$.formulaXform.render(z,U)}),z.closeNode()}},{key:"renderTop10",value:function(z,W){z.leafNode(this.tag,{type:"top10",dxfId:W.dxfId,priority:W.priority,percent:r.toBoolAttribute(W.percent,!1),bottom:r.toBoolAttribute(W.bottom,!1),rank:r.toIntValue(W.rank,10,!0)})}},{key:"renderAboveAverage",value:function(z,W){z.leafNode(this.tag,{type:"aboveAverage",dxfId:W.dxfId,priority:W.priority,aboveAverage:r.toBoolAttribute(W.aboveAverage,!0)})}},{key:"renderDataBar",value:function(z,W){z.openNode(this.tag,{type:"dataBar",priority:W.priority}),this.databarXform.render(z,W),this.extLstRefXform.render(z,W),z.closeNode()}},{key:"renderColorScale",value:function(z,W){z.openNode(this.tag,{type:"colorScale",priority:W.priority}),this.colorScaleXform.render(z,W),z.closeNode()}},{key:"renderIconSet",value:function(z,W){E.isPrimitive(W)&&(z.openNode(this.tag,{type:"iconSet",priority:W.priority}),this.iconSetXform.render(z,W),z.closeNode())}},{key:"renderText",value:function(z,W){z.openNode(this.tag,{type:W.operator,dxfId:W.dxfId,priority:W.priority,operator:r.toStringAttribute(W.operator,"containsText")});var $=L(W);$&&this.formulaXform.render(z,$),z.closeNode()}},{key:"renderTimePeriod",value:function(z,W){z.openNode(this.tag,{type:"timePeriod",dxfId:W.dxfId,priority:W.priority,timePeriod:W.timePeriod});var $=F(W);$&&this.formulaXform.render(z,$),z.closeNode()}},{key:"createNewModel",value:function(z){var W=z.attributes;return g(g({},M(W)),{},{dxfId:r.toIntValue(W.dxfId),priority:r.toIntValue(W.priority),timePeriod:W.timePeriod,percent:r.toBoolValue(W.percent),bottom:r.toBoolValue(W.bottom),rank:r.toIntValue(W.rank),aboveAverage:r.toBoolValue(W.aboveAverage)})}},{key:"onParserClose",value:function(z,W){switch(z){case"dataBar":case"extLst":case"colorScale":case"iconSet":Object.assign(this.model,W.model);break;case"formula":this.model.formulae=this.model.formulae||[],this.model.formulae.push(W.model);break}}},{key:"tag",get:function(){return"cfRule"}}],[{key:"isPrimitive",value:function(z){return!(z.type==="iconSet"&&(z.custom||N[z.iconSet]))}}]),E}(t);S.exports=D},{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,{type:o.type,val:o.value})}},{key:"parseOpen",value:function(n){this.model={type:n.attributes.type,value:v.toFloatValue(n.attributes.val)}}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"cfvo"}}]),t}(v);S.exports=c},{"../../base-xform":31}],84:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("../../style/color-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a,color:o.colorXform=new c},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),O.color.forEach(function(N){C.colorXform.render(p,N)}),p.closeNode()}},{key:"createNewModel",value:function(p){return{cfvo:[],color:[]}}},{key:"onParserClose",value:function(p,O){this.model[p].push(O.model)}},{key:"tag",get:function(){return"colorScale"}}]),n}(v);S.exports=r},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../composite-xform"),c=e("./cf-rule-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={cfRule:new c},n}return b(i,[{key:"render",value:function(o,p){var O=this;p.rules.some(c.isPrimitive)&&(o.openNode(this.tag,{sqref:p.ref}),p.rules.forEach(function(C){c.isPrimitive(C)&&(C.ref=p.ref,O.map.cfRule.render(o,C))}),o.closeNode())}},{key:"createNewModel",value:function(o){var p=o.attributes;return{ref:p.sqref,rules:[]}}},{key:"onParserClose",value:function(o,p){this.model.rules.push(p.model)}},{key:"tag",get:function(){return"conditionalFormatting"}}]),i}(v);S.exports=a},{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(e,S,_){function u(O){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(N){return typeof N}:u=function(N){return N&&typeof Symbol=="function"&&N.constructor===Symbol&&N!==Symbol.prototype?"symbol":typeof N},u(O)}function m(O){return f(O)||w(O)||b(O)||g()}function g(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b(O,C){if(O){if(typeof O=="string")return y(O,C);var N=Object.prototype.toString.call(O).slice(8,-1);if(N==="Object"&&O.constructor&&(N=O.constructor.name),N==="Map"||N==="Set")return Array.from(O);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return y(O,C)}}function w(O){if(typeof Symbol<"u"&&Symbol.iterator in Object(O))return Array.from(O)}function f(O){if(Array.isArray(O))return y(O)}function y(O,C){(C==null||C>O.length)&&(C=O.length);for(var N=0,L=new Array(C);N"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function i(O){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(N){return N.__proto__||Object.getPrototypeOf(N)},i(O)}var n=e("../../base-xform"),o=e("./conditional-formatting-xform"),p=function(O){s(N,O);var C=c(N);function N(){var L;return h(this,N),L=C.call(this),L.cfXform=new o,L}return d(N,[{key:"reset",value:function(){this.model=[]}},{key:"prepare",value:function(F,M){var D=F.reduce(function(R,P){return Math.max.apply(Math,[R].concat(m(P.rules.map(function(E){return E.priority||0}))))},1);F.forEach(function(R){R.rules.forEach(function(P){P.priority||(P.priority=D++),P.style&&(P.dxfId=M.styles.addDxfStyle(P.style))})})}},{key:"render",value:function(F,M){var D=this;M.forEach(function(R){D.cfXform.render(F,R)})}},{key:"parseOpen",value:function(F){if(this.parser)return this.parser.parseOpen(F),!0;switch(F.name){case"conditionalFormatting":return this.parser=this.cfXform,this.parser.parseOpen(F),!0;default:return!1}}},{key:"parseText",value:function(F){this.parser&&this.parser.parseText(F)}},{key:"parseClose",value:function(F){return this.parser?this.parser.parseClose(F)?!0:(this.model.push(this.parser.model),this.parser=void 0,!1):!1}},{key:"reconcile",value:function(F,M){F.forEach(function(D){D.rules.forEach(function(R){R.dxfId!==void 0&&(R.style=M.styles.getDxfStyle(R.dxfId),delete R.dxfId)})})}},{key:"tag",get:function(){return"conditionalFormatting"}}]),N}(n);S.exports=p},{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../composite-xform"),c=e("../../style/color-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a,color:o.colorXform=new c},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),this.colorXform.render(p,O.color),p.closeNode()}},{key:"createNewModel",value:function(){return{cfvo:[]}}},{key:"onParserClose",value:function(p,O){switch(p){case"cfvo":this.model.cfvo.push(O.model);break;case"color":this.model.color=O.model;break}}},{key:"tag",get:function(){return"dataBar"}}]),n}(v);S.exports=r},{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../../base-xform"),c=e("../../composite-xform"),a=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){O.leafNode(this.tag,null,C)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(O){this.model+=O}},{key:"parseClose",value:function(O){return O!==this.tag}},{key:"tag",get:function(){return"x14:id"}}]),o}(v),r=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={"x14:id":p.idXform=new a},p}return b(o,[{key:"render",value:function(O,C){O.openNode(this.tag,{uri:"{B025F937-C7B1-47D3-B67F-A62EFF666E3E}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.idXform.render(O,C.x14Id),O.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(O,C){this.model.x14Id=C.model}},{key:"tag",get:function(){return"ext"}}]),o}(c),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={ext:new r},p}return b(o,[{key:"render",value:function(O,C){O.openNode(this.tag),this.map.ext.render(O,C),O.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(O,C){Object.assign(this.model,C.model)}},{key:"tag",get:function(){return"extLst"}}]),o}(c);S.exports=t},{"../../base-xform":31,"../../composite-xform":47}],89:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode(this.tag,null,o)}},{key:"parseOpen",value:function(){this.model=""}},{key:"parseText",value:function(n){this.model+=n}},{key:"parseClose",value:function(n){return n!==this.tag}},{key:"tag",get:function(){return"formula"}}]),t}(v);S.exports=c},{"../../base-xform":31}],90:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../base-xform"),c=e("../../composite-xform"),a=e("./cfvo-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={cfvo:o.cfvoXform=new a},o}return b(n,[{key:"render",value:function(p,O){var C=this;p.openNode(this.tag,{iconSet:v.toStringAttribute(O.iconSet,"3TrafficLights"),reverse:v.toBoolAttribute(O.reverse,!1),showValue:v.toBoolAttribute(O.showValue,!0)}),O.cfvo.forEach(function(N){C.cfvoXform.render(p,N)}),p.closeNode()}},{key:"createNewModel",value:function(p){var O=p.attributes;return{iconSet:v.toStringValue(O.iconSet,"3TrafficLights"),reverse:v.toBoolValue(O.reverse),showValue:v.toBoolValue(O.showValue),cfvo:[]}}},{key:"onParserClose",value:function(p,O){this.model[p].push(O.model)}},{key:"tag",get:function(){return"iconSet"}}]),n}(c);S.exports=r},{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){var p=o.styles.addStyleModel(n.style||{});p&&(n.styleId=p)}},{key:"render",value:function(n,o){n.openNode("col"),n.addAttribute("min",o.min),n.addAttribute("max",o.max),o.width&&n.addAttribute("width",o.width),o.styleId&&n.addAttribute("style",o.styleId),o.hidden&&n.addAttribute("hidden","1"),o.bestFit&&n.addAttribute("bestFit","1"),o.outlineLevel&&n.addAttribute("outlineLevel",o.outlineLevel),o.collapsed&&n.addAttribute("collapsed","1"),n.addAttribute("customWidth","1"),n.closeNode()}},{key:"parseOpen",value:function(n){if(n.name==="col"){var o=this.model={min:parseInt(n.attributes.min||"0",10),max:parseInt(n.attributes.max||"0",10),width:n.attributes.width===void 0?void 0:parseFloat(n.attributes.width||"0")};return n.attributes.style&&(o.styleId=parseInt(n.attributes.style,10)),(n.attributes.hidden===!0||n.attributes.hidden==="true"||n.attributes.hidden===1||n.attributes.hidden==="1")&&(o.hidden=!0),n.attributes.bestFit&&(o.bestFit=!0),n.attributes.outlineLevel&&(o.outlineLevel=parseInt(n.attributes.outlineLevel,10)),n.attributes.collapsed&&(o.collapsed=!0),!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"reconcile",value:function(n,o){n.styleId&&(n.style=o.styles.getStyleModel(n.styleId))}},{key:"tag",get:function(){return"col"}}]),t}(v);S.exports=c},{"../base-xform":31}],92:[function(e,S,_){function u(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(D){return typeof D}:u=function(D){return D&&typeof Symbol=="function"&&D.constructor===Symbol&&D!==Symbol.prototype?"symbol":typeof D},u(F)}function m(F,M){if(!(F instanceof M))throw new TypeError("Cannot call a class as a function")}function g(F,M){for(var D=0;D"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(F){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(D){return D.__proto__||Object.getPrototypeOf(D)},s(F)}function v(F,M){var D=Object.keys(F);if(Object.getOwnPropertySymbols){var R=Object.getOwnPropertySymbols(F);M&&(R=R.filter(function(P){return Object.getOwnPropertyDescriptor(F,P).enumerable})),D.push.apply(D,R)}return D}function c(F){for(var M=1;M1||W>1){var I=E.row+(A-1),j=E.col+(W-1);return c(c({},P.dataValidation),{},{sqref:"".concat(P.address,":").concat(i.encodeAddress(I,j))})}return c(c({},P.dataValidation),{},{sqref:P.address})}return null}).filter(Boolean)}var L=function(F){w(D,F);var M=y(D);function D(){return m(this,D),M.apply(this,arguments)}return b(D,[{key:"render",value:function(P,E){var A=N(E);A.length&&(P.openNode("dataValidations",{count:A.length}),A.forEach(function(z){P.openNode("dataValidation"),z.type!=="any"&&(P.addAttribute("type",z.type),z.operator&&z.type!=="list"&&z.operator!=="between"&&P.addAttribute("operator",z.operator),z.allowBlank&&P.addAttribute("allowBlank","1")),z.showInputMessage&&P.addAttribute("showInputMessage","1"),z.promptTitle&&P.addAttribute("promptTitle",z.promptTitle),z.prompt&&P.addAttribute("prompt",z.prompt),z.showErrorMessage&&P.addAttribute("showErrorMessage","1"),z.errorStyle&&P.addAttribute("errorStyle",z.errorStyle),z.errorTitle&&P.addAttribute("errorTitle",z.errorTitle),z.error&&P.addAttribute("error",z.error),P.addAttribute("sqref",z.sqref),(z.formulae||[]).forEach(function(W,$){P.openNode("formula".concat($+1)),z.type==="date"?P.writeText(t.dateToExcel(new Date(W))):P.writeText(W),P.closeNode()}),P.closeNode()}),P.closeNode())}},{key:"parseOpen",value:function(P){switch(P.name){case"dataValidations":return this.model={},!0;case"dataValidation":{this._address=P.attributes.sqref;var E={type:P.attributes.type||"any",formulae:[]};switch(P.attributes.type&&C(E,P.attributes,"allowBlank"),C(E,P.attributes,"showInputMessage"),C(E,P.attributes,"showErrorMessage"),E.type){case"any":case"list":case"custom":break;default:p(E,P.attributes,"operator","between");break}return p(E,P.attributes,"promptTitle"),p(E,P.attributes,"prompt"),p(E,P.attributes,"errorStyle"),p(E,P.attributes,"errorTitle"),p(E,P.attributes,"error"),this._dataValidation=E,!0}case"formula1":case"formula2":return this._formula=[],!0;default:return!1}}},{key:"parseText",value:function(P){this._formula&&this._formula.push(P)}},{key:"parseClose",value:function(P){var E=this;switch(P){case"dataValidations":return!1;case"dataValidation":{(!this._dataValidation.formulae||!this._dataValidation.formulae.length)&&(delete this._dataValidation.formulae,delete this._dataValidation.operator);var A=this._address.split(/\s+/g)||[];return A.forEach(function(W){if(W.includes(":")){var $=new o(W);$.forEachAddress(function(U){E.model[U]=E._dataValidation})}else E.model[W]=E._dataValidation}),!0}case"formula1":case"formula2":{var z=this._formula.join("");switch(this._dataValidation.type){case"whole":case"textLength":z=parseInt(z,10);break;case"decimal":z=parseFloat(z);break;case"date":z=t.excelToDate(parseFloat(z));break}return this._dataValidation.formulae.push(z),this._formula=void 0,!0}default:return!0}}},{key:"tag",get:function(){return"dataValidations"}}]),D}(n);S.exports=L},{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode("dimension",{ref:o})}},{key:"parseOpen",value:function(n){return n.name==="dimension"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"dimension"}}]),t}(v);S.exports=c},{"../base-xform":31}],94:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"drawing"}}]),t}(v);S.exports=c},{"../base-xform":31}],95:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../composite-xform"),c=e("./cf-ext/conditional-formattings-ext-xform"),a=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={"x14:conditionalFormattings":o.conditionalFormattings=new c},o}return b(n,[{key:"hasContent",value:function(p){return this.conditionalFormattings.hasContent(p.conditionalFormattings)}},{key:"prepare",value:function(p,O){this.conditionalFormattings.prepare(p.conditionalFormattings,O)}},{key:"render",value:function(p,O){p.openNode("ext",{uri:"{78C0D931-6437-407d-A8EE-F0AAD7539E65}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"}),this.conditionalFormattings.render(p,O.conditionalFormattings),p.closeNode()}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(p,O){this.model[p]=O.model}},{key:"tag",get:function(){return"ext"}}]),n}(v),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={ext:o.ext=new a},o}return b(n,[{key:"prepare",value:function(p,O){this.ext.prepare(p,O)}},{key:"hasContent",value:function(p){return this.ext.hasContent(p)}},{key:"render",value:function(p,O){this.hasContent(O)&&(p.openNode("extLst"),this.ext.render(p,O),p.closeNode())}},{key:"createNewModel",value:function(){return{}}},{key:"onParserClose",value:function(p,O){Object.assign(this.model,O.model)}},{key:"tag",get:function(){return"extLst"}}]),n}(v);S.exports=r},{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){if(o){n.addRollback();var p=!1;n.openNode("headerFooter"),o.differentFirst&&(n.addAttribute("differentFirst","1"),p=!0),o.differentOddEven&&(n.addAttribute("differentOddEven","1"),p=!0),o.oddHeader&&typeof o.oddHeader=="string"&&(n.leafNode("oddHeader",null,o.oddHeader),p=!0),o.oddFooter&&typeof o.oddFooter=="string"&&(n.leafNode("oddFooter",null,o.oddFooter),p=!0),o.evenHeader&&typeof o.evenHeader=="string"&&(n.leafNode("evenHeader",null,o.evenHeader),p=!0),o.evenFooter&&typeof o.evenFooter=="string"&&(n.leafNode("evenFooter",null,o.evenFooter),p=!0),o.firstHeader&&typeof o.firstHeader=="string"&&(n.leafNode("firstHeader",null,o.firstHeader),p=!0),o.firstFooter&&typeof o.firstFooter=="string"&&(n.leafNode("firstFooter",null,o.firstFooter),p=!0),p?(n.closeNode(),n.commit()):n.rollback()}}},{key:"parseOpen",value:function(n){switch(n.name){case"headerFooter":return this.model={},n.attributes.differentFirst&&(this.model.differentFirst=parseInt(n.attributes.differentFirst,0)===1),n.attributes.differentOddEven&&(this.model.differentOddEven=parseInt(n.attributes.differentOddEven,0)===1),!0;case"oddHeader":return this.currentNode="oddHeader",!0;case"oddFooter":return this.currentNode="oddFooter",!0;case"evenHeader":return this.currentNode="evenHeader",!0;case"evenFooter":return this.currentNode="evenFooter",!0;case"firstHeader":return this.currentNode="firstHeader",!0;case"firstFooter":return this.currentNode="firstFooter",!0;default:return!1}}},{key:"parseText",value:function(n){switch(this.currentNode){case"oddHeader":this.model.oddHeader=n;break;case"oddFooter":this.model.oddFooter=n;break;case"evenHeader":this.model.evenHeader=n;break;case"evenFooter":this.model.evenFooter=n;break;case"firstHeader":this.model.firstHeader=n;break;case"firstFooter":this.model.firstFooter=n;break}}},{key:"parseClose",value:function(){switch(this.currentNode){case"oddHeader":case"oddFooter":case"evenHeader":case"evenFooter":case"firstHeader":case"firstFooter":return this.currentNode=void 0,!0;default:return!1}}},{key:"tag",get:function(){return"headerFooter"}}]),t}(v);S.exports=c},{"../base-xform":31}],97:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("hyperlink",{ref:o.address,"r:id":o.rId,tooltip:o.tooltip})}},{key:"parseOpen",value:function(n){return n.name==="hyperlink"?(this.model={address:n.attributes.ref,rId:n.attributes["r:id"],tooltip:n.attributes.tooltip},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"hyperlink"}}]),t}(v);S.exports=c},{"../base-xform":31}],98:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("mergeCell",{ref:o})}},{key:"parseOpen",value:function(n){return n.name==="mergeCell"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"mergeCell"}}]),t}(v);S.exports=c},{"../base-xform":31}],99:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=function(t){return typeof t<"u"},a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){return p&&(c(p.summaryBelow)||c(p.summaryRight))?(o.leafNode(this.tag,{summaryBelow:c(p.summaryBelow)?Number(p.summaryBelow):void 0,summaryRight:c(p.summaryRight)?Number(p.summaryRight):void 0}),!0):!1}},{key:"parseOpen",value:function(o){return o.name===this.tag?(this.model={summaryBelow:c(o.attributes.summaryBelow)?!!Number(o.attributes.summaryBelow):void 0,summaryRight:c(o.attributes.summaryRight)?!!Number(o.attributes.summaryRight):void 0},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"outlinePr"}}]),i}(v);S.exports=a},{"../base-xform":31}],101:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.leafNode("brk",o)}},{key:"parseOpen",value:function(n){return n.name==="brk"?(this.model=n.attributes.ref,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"brk"}}]),t}(v);S.exports=c},{"../base-xform":31}],102:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/under-dash"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p){var O={left:p.left,right:p.right,top:p.top,bottom:p.bottom,header:p.header,footer:p.footer};v.some(O,function(C){return C!==void 0})&&o.leafNode(this.tag,O)}}},{key:"parseOpen",value:function(o){switch(o.name){case this.tag:return this.model={left:parseFloat(o.attributes.left||.7),right:parseFloat(o.attributes.right||.7),top:parseFloat(o.attributes.top||.75),bottom:parseFloat(o.attributes.bottom||.75),header:parseFloat(o.attributes.header||.3),footer:parseFloat(o.attributes.footer||.3)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageMargins"}}]),i}(c);S.exports=a},{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){return o&&o.fitToPage?(n.leafNode(this.tag,{fitToPage:o.fitToPage?"1":void 0}),!0):!1}},{key:"parseOpen",value:function(n){return n.name===this.tag?(this.model={fitToPage:n.attributes.fitToPage==="1"},!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetUpPr"}}]),t}(v);S.exports=c},{"../base-xform":31}],104:[function(e,S,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(p){return p?"1":void 0}function r(p){switch(p){case"overThenDown":return p;default:return}}function t(p){switch(p){case"atEnd":case"asDisplyed":return p;default:return}}function i(p){switch(p){case"dash":case"blank":case"NA":return p;default:return}}function n(p){return p!==void 0?parseInt(p,10):void 0}var o=function(p){w(C,p);var O=y(C);function C(){return m(this,C),O.apply(this,arguments)}return b(C,[{key:"render",value:function(L,F){if(F){var M={paperSize:F.paperSize,orientation:F.orientation,horizontalDpi:F.horizontalDpi,verticalDpi:F.verticalDpi,pageOrder:r(F.pageOrder),blackAndWhite:a(F.blackAndWhite),draft:a(F.draft),cellComments:t(F.cellComments),errors:i(F.errors),scale:F.scale,fitToWidth:F.fitToWidth,fitToHeight:F.fitToHeight,firstPageNumber:F.firstPageNumber,useFirstPageNumber:a(F.firstPageNumber),usePrinterDefaults:a(F.usePrinterDefaults),copies:F.copies};v.some(M,function(D){return D!==void 0})&&L.leafNode(this.tag,M)}}},{key:"parseOpen",value:function(L){switch(L.name){case this.tag:return this.model={paperSize:n(L.attributes.paperSize),orientation:L.attributes.orientation||"portrait",horizontalDpi:parseInt(L.attributes.horizontalDpi||"4294967295",10),verticalDpi:parseInt(L.attributes.verticalDpi||"4294967295",10),pageOrder:L.attributes.pageOrder||"downThenOver",blackAndWhite:L.attributes.blackAndWhite==="1",draft:L.attributes.draft==="1",cellComments:L.attributes.cellComments||"None",errors:L.attributes.errors||"displayed",scale:parseInt(L.attributes.scale||"100",10),fitToWidth:parseInt(L.attributes.fitToWidth||"1",10),fitToHeight:parseInt(L.attributes.fitToHeight||"1",10),firstPageNumber:parseInt(L.attributes.firstPageNumber||"1",10),useFirstPageNumber:L.attributes.useFirstPageNumber==="1",usePrinterDefaults:L.attributes.usePrinterDefaults==="1",copies:parseInt(L.attributes.copies||"1",10)},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"pageSetup"}}]),C}(c);S.exports=o},{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"picture"}}]),t}(v);S.exports=c},{"../base-xform":31}],106:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(t){return t?"1":void 0}var r=function(t){w(n,t);var i=y(n);function n(){return m(this,n),i.apply(this,arguments)}return b(n,[{key:"render",value:function(p,O){if(O){var C={headings:a(O.showRowColHeaders),gridLines:a(O.showGridLines),horizontalCentered:a(O.horizontalCentered),verticalCentered:a(O.verticalCentered)};v.some(C,function(N){return N!==void 0})&&p.leafNode(this.tag,C)}}},{key:"parseOpen",value:function(p){switch(p.name){case this.tag:return this.model={showRowColHeaders:p.attributes.headings==="1",showGridLines:p.attributes.gridLines==="1",horizontalCentered:p.attributes.horizontalCentered==="1",verticalCentered:p.attributes.verticalCentered==="1"},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"printOptions"}}]),n}(c);S.exports=r},{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("./page-breaks-xform"),c=e("../list-xform"),a=function(r){w(i,r);var t=y(i);function i(){m(this,i);var n={tag:"rowBreaks",count:!0,childXform:new v};return t.call(this,n)}return b(i,[{key:"render",value:function(o,p){if(p&&p.length){o.openNode(this.tag,this.$),this.count&&(o.addAttribute(this.$count,p.length),o.addAttribute("manualBreakCount",p.length));var O=this.childXform;p.forEach(function(C){O.render(o,C)}),o.closeNode()}else this.empty&&o.leafNode(this.tag)}}]),i}(c);S.exports=a},{"../list-xform":70,"./page-breaks-xform":101}],108:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./cell-xform"),a=function(r){w(i,r);var t=y(i);function i(n){var o;return m(this,i),o=t.call(this),o.maxItems=n&&n.maxItems,o.map={c:new c},o}return b(i,[{key:"prepare",value:function(o,p){var O=p.styles.addStyleModel(o.style);O&&(o.styleId=O);var C=this.map.c;o.cells.forEach(function(N){C.prepare(N,p)})}},{key:"render",value:function(o,p,O){o.openNode("row"),o.addAttribute("r",p.number),p.height&&(o.addAttribute("ht",p.height),o.addAttribute("customHeight","1")),p.hidden&&o.addAttribute("hidden","1"),p.min>0&&p.max>0&&p.min<=p.max&&o.addAttribute("spans","".concat(p.min,":").concat(p.max)),p.styleId&&(o.addAttribute("s",p.styleId),o.addAttribute("customFormat","1")),o.addAttribute("x14ac:dyDescent","0.25"),p.outlineLevel&&o.addAttribute("outlineLevel",p.outlineLevel),p.collapsed&&o.addAttribute("collapsed","1");var C=this.map.c;p.cells.forEach(function(N){C.render(o,N,O)}),o.closeNode()}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;if(o.name==="row"){this.numRowsSeen+=1;var p=o.attributes.spans?o.attributes.spans.split(":").map(function(C){return parseInt(C,10)}):[void 0,void 0],O=this.model={number:parseInt(o.attributes.r,10),min:p[0],max:p[1],cells:[]};return o.attributes.s&&(O.styleId=parseInt(o.attributes.s,10)),(o.attributes.hidden===!0||o.attributes.hidden==="true"||o.attributes.hidden===1||o.attributes.hidden==="1")&&(O.hidden=!0),o.attributes.bestFit&&(O.bestFit=!0),o.attributes.ht&&(O.height=parseFloat(o.attributes.ht)),o.attributes.outlineLevel&&(O.outlineLevel=parseInt(o.attributes.outlineLevel,10)),o.attributes.collapsed&&(O.collapsed=!0),!0}return this.parser=this.map[o.name],this.parser?(this.parser.parseOpen(o),!0):!1}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser){if(!this.parser.parseClose(o)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error("Max column count (".concat(this.maxItems,") exceeded"));this.parser=void 0}return!0}return!1}},{key:"reconcile",value:function(o,p){o.style=o.styleId?p.styles.getStyleModel(o.styleId):{},o.styleId!==void 0&&(o.styleId=void 0);var O=this.map.c;o.cells.forEach(function(C){O.reconcile(C,p)})}},{key:"tag",get:function(){return"row"}}]),i}(v);S.exports=a},{"../base-xform":31,"./cell-xform":72}],109:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../../../utils/under-dash"),c=e("../base-xform"),a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){if(p){var O={defaultRowHeight:p.defaultRowHeight,outlineLevelRow:p.outlineLevelRow,outlineLevelCol:p.outlineLevelCol,"x14ac:dyDescent":p.dyDescent};p.defaultColWidth&&(O.defaultColWidth=p.defaultColWidth),(!p.defaultRowHeight||p.defaultRowHeight!==15)&&(O.customHeight="1"),v.some(O,function(C){return C!==void 0})&&o.leafNode("sheetFormatPr",O)}}},{key:"parseOpen",value:function(o){return o.name==="sheetFormatPr"?(this.model={defaultRowHeight:parseFloat(o.attributes.defaultRowHeight||"0"),dyDescent:parseFloat(o.attributes["x14ac:dyDescent"]||"0"),outlineLevelRow:parseInt(o.attributes.outlineLevelRow||"0",10),outlineLevelCol:parseInt(o.attributes.outlineLevelCol||"0",10)},o.attributes.defaultColWidth&&(this.model.defaultColWidth=parseFloat(o.attributes.defaultColWidth)),!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetFormatPr"}}]),i}(c);S.exports=a},{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../base-xform"),c=e("../style/color-xform"),a=e("./page-setup-properties-xform"),r=e("./outline-properties-xform"),t=function(i){w(o,i);var n=y(o);function o(){var p;return m(this,o),p=n.call(this),p.map={tabColor:new c("tabColor"),pageSetUpPr:new a,outlinePr:new r},p}return b(o,[{key:"render",value:function(O,C){if(C){O.addRollback(),O.openNode("sheetPr");var N=!1;N=this.map.tabColor.render(O,C.tabColor)||N,N=this.map.pageSetUpPr.render(O,C.pageSetup)||N,N=this.map.outlinePr.render(O,C.outlineProperties)||N,N?(O.closeNode(),O.commit()):O.rollback()}}},{key:"parseOpen",value:function(O){return this.parser?(this.parser.parseOpen(O),!0):O.name===this.tag?(this.reset(),!0):this.map[O.name]?(this.parser=this.map[O.name],this.parser.parseOpen(O),!0):!1}},{key:"parseText",value:function(O){return this.parser?(this.parser.parseText(O),!0):!1}},{key:"parseClose",value:function(O){return this.parser?(this.parser.parseClose(O)||(this.parser=void 0),!0):(this.map.tabColor.model||this.map.pageSetUpPr.model||this.map.outlinePr.model?(this.model={},this.map.tabColor.model&&(this.model.tabColor=this.map.tabColor.model),this.map.pageSetUpPr.model&&(this.model.pageSetup=this.map.pageSetUpPr.model),this.map.outlinePr.model&&(this.model.outlineProperties=this.map.outlinePr.model)):this.model=null,!1)}},{key:"tag",get:function(){return"sheetPr"}}]),o}(v);S.exports=t},{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("../../../utils/under-dash"),c=e("../base-xform");function a(i,n){return i?n:void 0}function r(i,n){return i===n?!0:void 0}var t=function(i){w(o,i);var n=y(o);function o(){return m(this,o),n.apply(this,arguments)}return b(o,[{key:"render",value:function(O,C){if(C){var N={sheet:a(C.sheet,"1"),selectLockedCells:C.selectLockedCells===!1?"1":void 0,selectUnlockedCells:C.selectUnlockedCells===!1?"1":void 0,formatCells:a(C.formatCells,"0"),formatColumns:a(C.formatColumns,"0"),formatRows:a(C.formatRows,"0"),insertColumns:a(C.insertColumns,"0"),insertRows:a(C.insertRows,"0"),insertHyperlinks:a(C.insertHyperlinks,"0"),deleteColumns:a(C.deleteColumns,"0"),deleteRows:a(C.deleteRows,"0"),sort:a(C.sort,"0"),autoFilter:a(C.autoFilter,"0"),pivotTables:a(C.pivotTables,"0")};C.sheet&&(N.algorithmName=C.algorithmName,N.hashValue=C.hashValue,N.saltValue=C.saltValue,N.spinCount=C.spinCount,N.objects=a(C.objects===!1,"1"),N.scenarios=a(C.scenarios===!1,"1")),v.some(N,function(L){return L!==void 0})&&O.leafNode(this.tag,N)}}},{key:"parseOpen",value:function(O){switch(O.name){case this.tag:return this.model={sheet:r(O.attributes.sheet,"1"),objects:O.attributes.objects==="1"?!1:void 0,scenarios:O.attributes.scenarios==="1"?!1:void 0,selectLockedCells:O.attributes.selectLockedCells==="1"?!1:void 0,selectUnlockedCells:O.attributes.selectUnlockedCells==="1"?!1:void 0,formatCells:r(O.attributes.formatCells,"0"),formatColumns:r(O.attributes.formatColumns,"0"),formatRows:r(O.attributes.formatRows,"0"),insertColumns:r(O.attributes.insertColumns,"0"),insertRows:r(O.attributes.insertRows,"0"),insertHyperlinks:r(O.attributes.insertHyperlinks,"0"),deleteColumns:r(O.attributes.deleteColumns,"0"),deleteRows:r(O.attributes.deleteRows,"0"),sort:r(O.attributes.sort,"0"),autoFilter:r(O.attributes.autoFilter,"0"),pivotTables:r(O.attributes.pivotTables,"0")},O.attributes.algorithmName&&(this.model.algorithmName=O.attributes.algorithmName,this.model.hashValue=O.attributes.hashValue,this.model.saltValue=O.attributes.saltValue,this.model.spinCount=parseInt(O.attributes.spinCount,10)),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"sheetProtection"}}]),o}(c);S.exports=t},{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/col-cache"),c=e("../base-xform"),a={frozen:"frozen",frozenSplit:"frozen",split:"split"},r=function(t){w(n,t);var i=y(n);function n(){return m(this,n),i.apply(this,arguments)}return b(n,[{key:"prepare",value:function(p){switch(p.state){case"frozen":case"split":break;default:p.state="normal";break}}},{key:"render",value:function(p,O){p.openNode("sheetView",{workbookViewId:O.workbookViewId||0});var C=function(R,P,E){E&&p.addAttribute(R,P)};C("rightToLeft","1",O.rightToLeft===!0),C("tabSelected","1",O.tabSelected),C("showRuler","0",O.showRuler===!1),C("showRowColHeaders","0",O.showRowColHeaders===!1),C("showGridLines","0",O.showGridLines===!1),C("zoomScale",O.zoomScale,O.zoomScale),C("zoomScaleNormal",O.zoomScaleNormal,O.zoomScaleNormal),C("view",O.style,O.style);var N,L,F,M;switch(O.state){case"frozen":L=O.xSplit||0,F=O.ySplit||0,N=O.topLeftCell||v.getAddress(F+1,L+1).address,M=O.xSplit&&O.ySplit&&"bottomRight"||O.xSplit&&"topRight"||"bottomLeft",p.leafNode("pane",{xSplit:O.xSplit||void 0,ySplit:O.ySplit||void 0,topLeftCell:N,activePane:M,state:"frozen"}),p.leafNode("selection",{pane:M,activeCell:O.activeCell,sqref:O.activeCell});break;case"split":O.activePane==="topLeft"&&(O.activePane=void 0),p.leafNode("pane",{xSplit:O.xSplit||void 0,ySplit:O.ySplit||void 0,topLeftCell:O.topLeftCell,activePane:O.activePane}),p.leafNode("selection",{pane:O.activePane,activeCell:O.activeCell,sqref:O.activeCell});break;case"normal":O.activeCell&&p.leafNode("selection",{activeCell:O.activeCell,sqref:O.activeCell});break}p.closeNode()}},{key:"parseOpen",value:function(p){switch(p.name){case"sheetView":return this.sheetView={workbookViewId:parseInt(p.attributes.workbookViewId,10),rightToLeft:p.attributes.rightToLeft==="1",tabSelected:p.attributes.tabSelected==="1",showRuler:p.attributes.showRuler!=="0",showRowColHeaders:p.attributes.showRowColHeaders!=="0",showGridLines:p.attributes.showGridLines!=="0",zoomScale:parseInt(p.attributes.zoomScale||"100",10),zoomScaleNormal:parseInt(p.attributes.zoomScaleNormal||"100",10),style:p.attributes.view},this.pane=void 0,this.selections={},!0;case"pane":return this.pane={xSplit:parseInt(p.attributes.xSplit||"0",10),ySplit:parseInt(p.attributes.ySplit||"0",10),topLeftCell:p.attributes.topLeftCell,activePane:p.attributes.activePane||"topLeft",state:p.attributes.state},!0;case"selection":{var O=p.attributes.pane||"topLeft";return this.selections[O]={pane:O,activeCell:p.attributes.activeCell},!0}default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){var O,C;switch(p){case"sheetView":return this.sheetView&&this.pane?(O=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:a[this.pane.state]||"split",xSplit:this.pane.xSplit,ySplit:this.pane.ySplit,topLeftCell:this.pane.topLeftCell,showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},this.model.state==="split"&&(O.activePane=this.pane.activePane),C=this.selections[this.pane.activePane],C&&C.activeCell&&(O.activeCell=C.activeCell),this.sheetView.style&&(O.style=this.sheetView.style)):(O=this.model={workbookViewId:this.sheetView.workbookViewId,rightToLeft:this.sheetView.rightToLeft,state:"normal",showRuler:this.sheetView.showRuler,showRowColHeaders:this.sheetView.showRowColHeaders,showGridLines:this.sheetView.showGridLines,zoomScale:this.sheetView.zoomScale,zoomScaleNormal:this.sheetView.zoomScaleNormal},C=this.selections.topLeft,C&&C.activeCell&&(O.activeCell=C.activeCell),this.sheetView.style&&(O.style=this.sheetView.style)),!1;default:return!0}}},{key:"reconcile",value:function(){}},{key:"tag",get:function(){return"sheetView"}}]),n}(c);S.exports=r},{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){o&&n.leafNode(this.tag,{"r:id":o.rId})}},{key:"parseOpen",value:function(n){switch(n.name){case this.tag:return this.model={rId:n.attributes["r:id"]},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tablePart"}}]),t}(v);S.exports=c},{"../base-xform":31}],114:[function(e,S,_){function u(be){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(oe){return typeof oe}:u=function(oe){return oe&&typeof Symbol=="function"&&oe.constructor===Symbol&&oe!==Symbol.prototype?"symbol":typeof oe},u(be)}function m(be,_e){if(!(be instanceof _e))throw new TypeError("Cannot call a class as a function")}function g(be,_e){for(var oe=0;oe<_e.length;oe++){var J=_e[oe];J.enumerable=J.enumerable||!1,J.configurable=!0,"value"in J&&(J.writable=!0),Object.defineProperty(be,J.key,J)}}function b(be,_e,oe){return _e&&g(be.prototype,_e),oe&&g(be,oe),be}function w(be,_e){if(typeof _e!="function"&&_e!==null)throw new TypeError("Super expression must either be null or a function");be.prototype=Object.create(_e&&_e.prototype,{constructor:{value:be,writable:!0,configurable:!0}}),_e&&f(be,_e)}function f(be,_e){return f=Object.setPrototypeOf||function(J,Q){return J.__proto__=Q,J},f(be,_e)}function y(be){var _e=d();return function(){var J=s(be),Q;if(_e){var he=s(this).constructor;Q=Reflect.construct(J,arguments,he)}else Q=J.apply(this,arguments);return h(this,Q)}}function h(be,_e){return _e&&(u(_e)==="object"||typeof _e=="function")?_e:l(be)}function l(be){if(be===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return be}function d(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(be){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(oe){return oe.__proto__||Object.getPrototypeOf(oe)},s(be)}var v=e("../../../utils/under-dash"),c=e("../../../utils/col-cache"),a=e("../../../utils/xml-stream"),r=e("../../rel-type"),t=e("./merges"),i=e("../base-xform"),n=e("../list-xform"),o=e("./row-xform"),p=e("./col-xform"),O=e("./dimension-xform"),C=e("./hyperlink-xform"),N=e("./merge-cell-xform"),L=e("./data-validations-xform"),F=e("./sheet-properties-xform"),M=e("./sheet-format-properties-xform"),D=e("./sheet-view-xform"),R=e("./sheet-protection-xform"),P=e("./page-margins-xform"),E=e("./page-setup-xform"),A=e("./print-options-xform"),z=e("./auto-filter-xform"),W=e("./picture-xform"),$=e("./drawing-xform"),U=e("./table-part-xform"),I=e("./row-breaks-xform"),j=e("./header-footer-xform"),B=e("./cf/conditional-formattings-xform"),V=e("./ext-lst-xform"),te=function(_e,oe){Object.keys(oe).forEach(function(J){var Q=_e[J],he=oe[J];Q===void 0&&he!==void 0&&(_e[J]=he)})},ie=function(_e,oe){if(!oe||!oe.length)return _e;if(!_e||!_e.length)return oe;var J={},Q={};return _e.forEach(function(he){J[he.ref]=he,he.rules.forEach(function(ke){var re=ke.x14Id;re&&(Q[re]=ke)})}),oe.forEach(function(he){he.rules.forEach(function(ke){var re=Q[ke.x14Id];re?te(re,ke):J[he.ref]?J[he.ref].rules.push(ke):_e.push({ref:he.ref,rules:[ke]})})}),_e},ce=function(be){w(oe,be);var _e=y(oe);function oe(J){var Q;m(this,oe),Q=_e.call(this);var he=J||{},ke=he.maxRows,re=he.maxCols;return Q.map={sheetPr:new F,dimension:new O,sheetViews:new n({tag:"sheetViews",count:!1,childXform:new D}),sheetFormatPr:new M,cols:new n({tag:"cols",count:!1,childXform:new p}),sheetData:new n({tag:"sheetData",count:!1,empty:!0,childXform:new o({maxItems:re}),maxItems:ke}),autoFilter:new z,mergeCells:new n({tag:"mergeCells",count:!0,childXform:new N}),rowBreaks:new I,hyperlinks:new n({tag:"hyperlinks",count:!1,childXform:new C}),pageMargins:new P,dataValidations:new L,pageSetup:new E,headerFooter:new j,printOptions:new A,picture:new W,drawing:new $,sheetProtection:new R,tableParts:new n({tag:"tableParts",count:!0,childXform:new U}),conditionalFormatting:new B,extLst:new V},Q}return b(oe,[{key:"prepare",value:function(Q,he){var ke=this;he.merges=new t,Q.hyperlinks=he.hyperlinks=[],Q.comments=he.comments=[],he.formulae={},he.siFormulae=0,this.map.cols.prepare(Q.cols,he),this.map.sheetData.prepare(Q.rows,he),this.map.conditionalFormatting.prepare(Q.conditionalFormattings,he),Q.mergeCells=he.merges.mergeCells;var re=Q.rels=[];function se(fe){return"rId".concat(fe.length+1)}if(Q.hyperlinks.forEach(function(fe){var we=se(re);fe.rId=we,re.push({Id:we,Type:r.Hyperlink,Target:fe.target,TargetMode:"External"})}),Q.comments.length>0){var Ce={Id:se(re),Type:r.Comments,Target:"../comments".concat(Q.id,".xml")};re.push(Ce);var q={Id:se(re),Type:r.VmlDrawing,Target:"../drawings/vmlDrawing".concat(Q.id,".vml")};re.push(q),Q.comments.forEach(function(fe){fe.refAddress=c.decodeAddress(fe.ref)}),he.commentRefs.push({commentName:"comments".concat(Q.id),vmlDrawing:"vmlDrawing".concat(Q.id)})}var G=[],Z;Q.media.forEach(function(fe){if(fe.type==="background"){var we=se(re);Z=he.media[fe.imageId],re.push({Id:we,Type:r.Image,Target:"../media/".concat(Z.name,".").concat(Z.extension)}),Q.background={rId:we},Q.image=he.media[fe.imageId]}else if(fe.type==="image"){var ge=Q.drawing;Z=he.media[fe.imageId],ge||(ge=Q.drawing={rId:se(re),name:"drawing".concat(++he.drawingsCount),anchors:[],rels:[]},he.drawings.push(ge),re.push({Id:ge.rId,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",Target:"../drawings/".concat(ge.name,".xml")}));var je=ke.preImageId===fe.imageId?G[fe.imageId]:G[ge.rels.length];je||(je=se(ge.rels),G[ge.rels.length]=je,ge.rels.push({Id:je,Type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",Target:"../media/".concat(Z.name,".").concat(Z.extension)}));var Ze={picture:{rId:je},range:fe.range};if(fe.hyperlinks&&fe.hyperlinks.hyperlink){var nt=se(ge.rels);G[ge.rels.length]=nt,Ze.picture.hyperlinks={tooltip:fe.hyperlinks.tooltip,rId:nt},ge.rels.push({Id:nt,Type:r.Hyperlink,Target:fe.hyperlinks.hyperlink,TargetMode:"External"})}ke.preImageId=fe.imageId,ge.anchors.push(Ze)}}),Q.tables.forEach(function(fe){var we=se(re);fe.rId=we,re.push({Id:we,Type:r.Table,Target:"../tables/".concat(fe.target)}),fe.columns.forEach(function(ge){var je=ge.style;je&&(ge.dxfId=he.styles.addDxfStyle(je))})}),this.map.extLst.prepare(Q,he)}},{key:"render",value:function(Q,he){Q.openXml(a.StdDocAttributes),Q.openNode("worksheet",oe.WORKSHEET_ATTRIBUTES);var ke=he.properties?{defaultRowHeight:he.properties.defaultRowHeight,dyDescent:he.properties.dyDescent,outlineLevelCol:he.properties.outlineLevelCol,outlineLevelRow:he.properties.outlineLevelRow}:void 0;he.properties&&he.properties.defaultColWidth&&(ke.defaultColWidth=he.properties.defaultColWidth);var re={outlineProperties:he.properties&&he.properties.outlineProperties,tabColor:he.properties&&he.properties.tabColor,pageSetup:he.pageSetup&&he.pageSetup.fitToPage?{fitToPage:he.pageSetup.fitToPage}:void 0},se=he.pageSetup&&he.pageSetup.margins,Ce={showRowColHeaders:he.pageSetup&&he.pageSetup.showRowColHeaders,showGridLines:he.pageSetup&&he.pageSetup.showGridLines,horizontalCentered:he.pageSetup&&he.pageSetup.horizontalCentered,verticalCentered:he.pageSetup&&he.pageSetup.verticalCentered},q=he.sheetProtection;this.map.sheetPr.render(Q,re),this.map.dimension.render(Q,he.dimensions),this.map.sheetViews.render(Q,he.views),this.map.sheetFormatPr.render(Q,ke),this.map.cols.render(Q,he.cols),this.map.sheetData.render(Q,he.rows),this.map.sheetProtection.render(Q,q),this.map.autoFilter.render(Q,he.autoFilter),this.map.mergeCells.render(Q,he.mergeCells),this.map.conditionalFormatting.render(Q,he.conditionalFormattings),this.map.dataValidations.render(Q,he.dataValidations),this.map.hyperlinks.render(Q,he.hyperlinks),this.map.printOptions.render(Q,Ce),this.map.pageMargins.render(Q,se),this.map.pageSetup.render(Q,he.pageSetup),this.map.headerFooter.render(Q,he.headerFooter),this.map.rowBreaks.render(Q,he.rowBreaks),this.map.drawing.render(Q,he.drawing),this.map.picture.render(Q,he.background),this.map.tableParts.render(Q,he.tables),this.map.extLst.render(Q,he),he.rels&&he.rels.forEach(function(G){G.Type===r.VmlDrawing&&Q.leafNode("legacyDrawing",{"r:id":G.Id})}),Q.closeNode()}},{key:"parseOpen",value:function(Q){return this.parser?(this.parser.parseOpen(Q),!0):Q.name==="worksheet"?(v.each(this.map,function(he){he.reset()}),!0):(this.parser=this.map[Q.name],this.parser&&this.parser.parseOpen(Q),!0)}},{key:"parseText",value:function(Q){this.parser&&this.parser.parseText(Q)}},{key:"parseClose",value:function(Q){if(this.parser)return this.parser.parseClose(Q)||(this.parser=void 0),!0;switch(Q){case"worksheet":{var he=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(he.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(he.outlineProperties=this.map.sheetPr.model.outlineProperties);var ke={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},re=Object.assign(ke,this.map.pageSetup.model,this.map.printOptions.model),se=ie(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model["x14:conditionalFormattings"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:he,views:this.map.sheetViews.model,pageSetup:re,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:se},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1}default:return!0}}},{key:"reconcile",value:function(Q,he){var ke=(Q.relationships||[]).reduce(function(we,ge){if(we[ge.Id]=ge,ge.Type===r.Comments&&(Q.comments=he.comments[ge.Target].comments),ge.Type===r.VmlDrawing&&Q.comments&&Q.comments.length){var je=he.vmlDrawings[ge.Target].comments;Q.comments.forEach(function(Ze,nt){Ze.note=Object.assign({},Ze.note,je[nt])})}return we},{});if(he.commentsMap=(Q.comments||[]).reduce(function(we,ge){return ge.ref&&(we[ge.ref]=ge),we},{}),he.hyperlinkMap=(Q.hyperlinks||[]).reduce(function(we,ge){return ge.rId&&(we[ge.address]=ke[ge.rId].Target),we},{}),he.formulae={},Q.rows=Q.rows&&Q.rows.filter(Boolean)||[],Q.rows.forEach(function(we){we.cells=we.cells&&we.cells.filter(Boolean)||[]}),this.map.cols.reconcile(Q.cols,he),this.map.sheetData.reconcile(Q.rows,he),this.map.conditionalFormatting.reconcile(Q.conditionalFormattings,he),Q.media=[],Q.drawing){var re=ke[Q.drawing.rId],se=re.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(se){var Ce=se[1],q=he.drawings[Ce];q.anchors.forEach(function(we){if(we.medium){var ge={type:"image",imageId:we.medium.index,range:we.range,hyperlinks:we.picture.hyperlinks};Q.media.push(ge)}})}}var G=Q.background&&ke[Q.background.rId];if(G){var Z=G.Target.split("/media/")[1],fe=he.mediaIndex&&he.mediaIndex[Z];fe!==void 0&&Q.media.push({type:"background",imageId:fe})}Q.tables=(Q.tables||[]).map(function(we){var ge=ke[we.rId];return he.tables[ge.Target]}),delete Q.relationships,delete Q.hyperlinks,delete Q.comments}}]),oe}(i);ce.WORKSHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"},S.exports=ce},{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n}return b(t,[{key:"render",value:function(n,o){o&&(n.openNode(this.tag),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.model=!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}}]),t}(v);S.exports=c},{"../base-xform":31}],116:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n._format=i.format||function(o){try{return Number.isNaN(o.getTime())?"":o.toISOString()}catch{return""}},n._parse=i.parse||function(o){return new Date(o)},n}return b(t,[{key:"render",value:function(n,o){o&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,this._format(o)):n.writeText(this._format(o)),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.attr?this.model=this._parse(n.attributes[this.attr]):this.text=[])}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=this._parse(this.text.join(""))),!1}}]),t}(v);S.exports=c},{"../base-xform":31}],117:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n.zero=i.zero,n}return b(t,[{key:"render",value:function(n,o){(o||this.zero)&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,o):n.writeText(o),n.closeNode())}},{key:"parseOpen",value:function(n){return n.name===this.tag?(this.attr?this.model=parseInt(n.attributes[this.attr],10):this.text=[],!0):!1}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=parseInt(this.text.join("")||0,10)),!1}}]),t}(v);S.exports=c},{"../base-xform":31}],118:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.tag=i.tag,n.attr=i.attr,n.attrs=i.attrs,n}return b(t,[{key:"render",value:function(n,o){o!==void 0&&(n.openNode(this.tag),this.attrs&&n.addAttributes(this.attrs),this.attr?n.addAttribute(this.attr,o):n.writeText(o),n.closeNode())}},{key:"parseOpen",value:function(n){n.name===this.tag&&(this.attr?this.model=n.attributes[this.attr]:this.text=[])}},{key:"parseText",value:function(n){this.attr||this.text.push(n)}},{key:"parseClose",value:function(){return this.attr||(this.model=this.text.join("")),!1}}]),t}(v);S.exports=c},{"../base-xform":31}],119:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./base-xform"),c=e("../../utils/xml-stream");function a(t,i){t.openNode(i.tag,i.$),i.c&&i.c.forEach(function(n){a(t,n)}),i.t&&t.writeText(i.t),t.closeNode()}var r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p._model=o,p}return b(n,[{key:"render",value:function(p){if(!this._xml){var O=new c;a(O,this._model),this._xml=O.xml}p.writeXml(this._xml)}},{key:"parseOpen",value:function(){return!0}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(p){switch(p){case this._model.tag:return!1;default:return!0}}}]),n}(v);S.exports=r},{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./text-xform"),c=e("./rich-text-xform"),a=e("../base-xform"),r=function(t){w(n,t);var i=y(n);function n(){var o;return m(this,n),o=i.call(this),o.map={r:new c,t:new v},o}return b(n,[{key:"render",value:function(p,O){if(p.openNode(this.tag,{sb:O.sb||0,eb:O.eb||0}),O&&O.hasOwnProperty("richText")&&O.richText){var C=this.map.r;O.richText.forEach(function(N){C.render(p,N)})}else O&&this.map.t.render(p,O.text);p.closeNode()}},{key:"parseOpen",value:function(p){var O=p.name;return this.parser?(this.parser.parseOpen(p),!0):O===this.tag?(this.model={sb:parseInt(p.attributes.sb,10),eb:parseInt(p.attributes.eb,10)},!0):(this.parser=this.map[O],this.parser?(this.parser.parseOpen(p),!0):!1)}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser){if(!this.parser.parseClose(p)){switch(p){case"r":{var O=this.model.richText;O||(O=this.model.richText=[]),O.push(this.parser.model);break}case"t":this.model.text=this.parser.model;break}this.parser=void 0}return!0}switch(p){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"rPh"}}]),n}(a);S.exports=r},{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("./text-xform"),c=e("../style/font-xform"),a=e("../base-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.model=o,p}return b(n,[{key:"render",value:function(p,O){O=O||this.model,p.openNode("r"),O.font&&this.fontXform.render(p,O.font),this.textXform.render(p,O.text),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"r":return this.model={},!0;case"t":return this.parser=this.textXform,this.parser.parseOpen(p),!0;case"rPr":return this.parser=this.fontXform,this.parser.parseOpen(p),!0;default:return!1}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){switch(p){case"r":return!1;case"t":return this.model.text=this.parser.model,this.parser=void 0,!0;case"rPr":return this.model.font=this.parser.model,this.parser=void 0,!0;default:return this.parser&&this.parser.parseClose(p),!0}}},{key:"tag",get:function(){return"r"}},{key:"textXform",get:function(){return this._textXform||(this._textXform=new v)}},{key:"fontXform",get:function(){return this._fontXform||(this._fontXform=new c(n.FONT_OPTIONS))}}]),n}(a);r.FONT_OPTIONS={tagName:"rPr",fontNameTag:"rFont"},S.exports=r},{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(e,S,_){function u(i){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(o){return typeof o}:u=function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},u(i)}function m(i,n){if(!(i instanceof n))throw new TypeError("Cannot call a class as a function")}function g(i,n){for(var o=0;o"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(i){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},s(i)}var v=e("./text-xform"),c=e("./rich-text-xform"),a=e("./phonetic-text-xform"),r=e("../base-xform"),t=function(i){w(o,i);var n=y(o);function o(p){var O;return m(this,o),O=n.call(this),O.model=p,O.map={r:new c,t:new v,rPh:new a},O}return b(o,[{key:"render",value:function(O,C){var N=this;O.openNode(this.tag),C&&C.hasOwnProperty("richText")&&C.richText?C.richText.length?C.richText.forEach(function(L){N.map.r.render(O,L)}):this.map.t.render(O,""):C!=null&&this.map.t.render(O,C),O.closeNode()}},{key:"parseOpen",value:function(O){var C=O.name;return this.parser?(this.parser.parseOpen(O),!0):C===this.tag?(this.model={},!0):(this.parser=this.map[C],this.parser?(this.parser.parseOpen(O),!0):!1)}},{key:"parseText",value:function(O){this.parser&&this.parser.parseText(O)}},{key:"parseClose",value:function(O){if(this.parser){if(!this.parser.parseClose(O)){switch(O){case"r":{var C=this.model.richText;C||(C=this.model.richText=[]),C.push(this.parser.model);break}case"t":this.model=this.parser.model;break}this.parser=void 0}return!0}switch(O){case this.tag:return!1;default:return!0}}},{key:"tag",get:function(){return"si"}}]),o}(r);S.exports=t},{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../../../utils/xml-stream"),c=e("../base-xform"),a=e("./shared-string-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.model=o||{values:[],count:0},p.hash=Object.create(null),p.rich=Object.create(null),p}return b(n,[{key:"getString",value:function(p){return this.model.values[p]}},{key:"add",value:function(p){return p.richText?this.addRichText(p):this.addText(p)}},{key:"addText",value:function(p){var O=this.hash[p];return O===void 0&&(O=this.hash[p]=this.model.values.length,this.model.values.push(p)),this.model.count++,O}},{key:"addRichText",value:function(p){var O=this.sharedStringXform.toXml(p),C=this.rich[O];return C===void 0&&(C=this.rich[O]=this.model.values.length,this.model.values.push(p)),this.model.count++,C}},{key:"render",value:function(p,O){O=O||this._values,p.openXml(v.StdDocAttributes),p.openNode("sst",{xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main",count:O.count,uniqueCount:O.values.length});var C=this.sharedStringXform;O.values.forEach(function(N){C.render(p,N)}),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"sst":return!0;case"si":return this.parser=this.sharedStringXform,this.parser.parseOpen(p),!0;default:throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(p)))}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){if(this.parser)return this.parser.parseClose(p)||(this.model.values.push(this.parser.model),this.model.count++,this.parser=void 0),!0;switch(p){case"sst":return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(p))}}},{key:"sharedStringXform",get:function(){return this._sharedStringXform||(this._sharedStringXform=new a)}},{key:"values",get:function(){return this.model.values}},{key:"uniqueCount",get:function(){return this.model.values.length}},{key:"count",get:function(){return this.model.count}}]),n}(c);S.exports=r},{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){n.openNode("t"),/^\s|\n|\s$/.test(o)&&n.addAttribute("xml:space","preserve"),n.writeText(o),n.closeNode()}},{key:"parseOpen",value:function(n){switch(n.name){case"t":return this._text=[],!0;default:return!1}}},{key:"parseText",value:function(n){this._text.push(n)}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"t"}},{key:"model",get:function(){return this._text.join("").replace(/_x([0-9A-F]{4})_/g,function(n,o){return String.fromCharCode(parseInt(o,16))})}}]),t}(v);S.exports=c},{"../base-xform":31}],125:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../doc/enums"),c=e("../../../utils/utils"),a=e("../base-xform"),r={horizontalValues:["left","center","right","fill","centerContinuous","distributed","justify"].reduce(function(n,o){return n[o]=!0,n},{}),horizontal:function(o){return this.horizontalValues[o]?o:void 0},verticalValues:["top","middle","bottom","distributed","justify"].reduce(function(n,o){return n[o]=!0,n},{}),vertical:function(o){return o==="middle"?"center":this.verticalValues[o]?o:void 0},wrapText:function(o){return o?!0:void 0},shrinkToFit:function(o){return o?!0:void 0},textRotation:function(o){switch(o){case"vertical":return o;default:return o=c.validInt(o),o>=-90&&o<=90?o:void 0}},indent:function(o){return o=c.validInt(o),Math.max(0,o)},readingOrder:function(o){switch(o){case"ltr":return v.ReadingOrder.LeftToRight;case"rtl":return v.ReadingOrder.RightToLeft;default:return}}},t={toXml:function(o){if(o=r.textRotation(o),o){if(o==="vertical")return 255;var p=Math.round(o);if(p>=0&&p<=90)return p;if(p<0&&p>=-90)return 90-p}},toModel:function(o){var p=c.validInt(o);if(p!==void 0){if(p===255)return"vertical";if(p>=0&&p<=90)return p;if(p>90&&p<=180)return 90-p}}},i=function(n){w(p,n);var o=y(p);function p(){return m(this,p),o.apply(this,arguments)}return b(p,[{key:"render",value:function(C,N){C.addRollback(),C.openNode("alignment");var L=!1;function F(M,D){D&&(C.addAttribute(M,D),L=!0)}F("horizontal",r.horizontal(N.horizontal)),F("vertical",r.vertical(N.vertical)),F("wrapText",r.wrapText(N.wrapText)?"1":!1),F("shrinkToFit",r.shrinkToFit(N.shrinkToFit)?"1":!1),F("indent",r.indent(N.indent)),F("textRotation",t.toXml(N.textRotation)),F("readingOrder",r.readingOrder(N.readingOrder)),C.closeNode(),L?C.commit():C.rollback()}},{key:"parseOpen",value:function(C){var N={},L=!1;function F(M,D,R){M&&(N[D]=R,L=!0)}F(C.attributes.horizontal,"horizontal",C.attributes.horizontal),F(C.attributes.vertical,"vertical",C.attributes.vertical==="center"?"middle":C.attributes.vertical),F(C.attributes.wrapText,"wrapText",!!C.attributes.wrapText),F(C.attributes.shrinkToFit,"shrinkToFit",!!C.attributes.shrinkToFit),F(C.attributes.indent,"indent",parseInt(C.attributes.indent,10)),F(C.attributes.textRotation,"textRotation",t.toModel(C.attributes.textRotation)),F(C.attributes.readingOrder,"readingOrder",C.attributes.readingOrder==="2"?"rtl":"ltr"),this.model=L?N:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"alignment"}}]),p}(a);S.exports=i},{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(e,S,_){function u(o,p){var O=Object.keys(o);if(Object.getOwnPropertySymbols){var C=Object.getOwnPropertySymbols(o);p&&(C=C.filter(function(N){return Object.getOwnPropertyDescriptor(o,N).enumerable})),O.push.apply(O,C)}return O}function m(o){for(var p=1;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(o){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(O){return O.__proto__||Object.getPrototypeOf(O)},a(o)}var r=e("../base-xform"),t=e("./color-xform"),i=function(o){h(O,o);var p=d(O);function O(C){var N;return w(this,O),N=p.call(this),N.name=C,N.map={color:new t},N}return y(O,[{key:"render",value:function(N,L,F){var M=L&&L.color||F||this.defaultColor;N.openNode(this.name),L&&L.style&&(N.addAttribute("style",L.style),M&&this.map.color.render(N,M)),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case this.name:{var L=N.attributes.style;return L?this.model={style:L}:this.model=void 0,!0}case"color":return this.parser=this.map.color,this.parser.parseOpen(N),!0;default:return!1}}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){return this.parser?(this.parser.parseClose(N)||(this.parser=void 0),!0):(N===this.name&&this.map.color.model&&(this.model||(this.model={}),this.model.color=this.map.color.model),!1)}},{key:"validStyle",value:function(N){return O.validStyleValues[N]}},{key:"tag",get:function(){return this.name}}]),O}(r);i.validStyleValues=["thin","dotted","dashDot","hair","dashDotDot","slantDashDot","mediumDashed","mediumDashDotDot","mediumDashDot","medium","double","thick"].reduce(function(o,p){return o[p]=!0,o},{});var n=function(o){h(O,o);var p=d(O);function O(){var C;return w(this,O),C=p.call(this),C.map={top:new i("top"),left:new i("left"),bottom:new i("bottom"),right:new i("right"),diagonal:new i("diagonal")},C}return y(O,[{key:"render",value:function(N,L){var F=L.color;N.openNode("border"),L.diagonal&&L.diagonal.style&&(L.diagonal.up&&N.addAttribute("diagonalUp","1"),L.diagonal.down&&N.addAttribute("diagonalDown","1"));function M(D,R){D&&!D.color&&L.color&&(D=m(m({},D),{},{color:L.color})),R.render(N,D,F)}M(L.left,this.map.left),M(L.right,this.map.right),M(L.top,this.map.top),M(L.bottom,this.map.bottom),M(L.diagonal,this.map.diagonal),N.closeNode()}},{key:"parseOpen",value:function(N){if(this.parser)return this.parser.parseOpen(N),!0;switch(N.name){case"border":return this.reset(),this.diagonalUp=!!N.attributes.diagonalUp,this.diagonalDown=!!N.attributes.diagonalDown,!0;default:return this.parser=this.map[N.name],this.parser?(this.parser.parseOpen(N),!0):!1}}},{key:"parseText",value:function(N){this.parser&&this.parser.parseText(N)}},{key:"parseClose",value:function(N){if(this.parser)return this.parser.parseClose(N)||(this.parser=void 0),!0;if(N==="border"){var L=this.model={},F=function(D,R,P){R&&(P&&Object.assign(R,P),L[D]=R)};F("left",this.map.left.model),F("right",this.map.right.model),F("top",this.map.top.model),F("bottom",this.map.bottom.model),F("diagonal",this.map.diagonal.model,{up:this.diagonalUp,down:this.diagonalDown})}return!1}}]),O}(r);S.exports=n},{"../base-xform":31,"./color-xform":127}],127:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.name=i||"color",n}return b(t,[{key:"render",value:function(n,o){return o?(n.openNode(this.name),o.argb?n.addAttribute("rgb",o.argb):o.theme!==void 0?(n.addAttribute("theme",o.theme),o.tint!==void 0&&n.addAttribute("tint",o.tint)):o.indexed!==void 0?n.addAttribute("indexed",o.indexed):n.addAttribute("auto","1"),n.closeNode(),!0):!1}},{key:"parseOpen",value:function(n){return n.name===this.name?(n.attributes.rgb?this.model={argb:n.attributes.rgb}:n.attributes.theme?(this.model={theme:parseInt(n.attributes.theme,10)},n.attributes.tint&&(this.model.tint=parseFloat(n.attributes.tint))):n.attributes.indexed?this.model={indexed:parseInt(n.attributes.indexed,10)}:this.model=void 0,!0):!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return this.name}}]),t}(v);S.exports=c},{"../base-xform":31}],128:[function(e,S,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("../base-xform"),c=e("./alignment-xform"),a=e("./border-xform"),r=e("./fill-xform"),t=e("./font-xform"),i=e("./numfmt-xform"),n=e("./protection-xform"),o=function(p){w(C,p);var O=y(C);function C(){var N;return m(this,C),N=O.call(this),N.map={alignment:new c,border:new a,fill:new r,font:new t,numFmt:new i,protection:new n},N}return b(C,[{key:"render",value:function(L,F){L.openNode(this.tag),F.font&&this.map.font.render(L,F.font),F.numFmt&&this.map.numFmt.render(L,F.numFmt),F.fill&&this.map.fill.render(L,F.fill),F.alignment&&this.map.alignment.render(L,F.alignment),F.border&&this.map.border.render(L,F.border),F.protection&&this.map.protection.render(L,F.protection),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;switch(L.name){case this.tag:return this.reset(),!0;default:return this.parser=this.map[L.name],this.parser&&this.parser.parseOpen(L),!0}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){return this.parser?(this.parser.parseClose(L)||(this.parser=void 0),!0):L===this.tag?(this.model={alignment:this.map.alignment.model,border:this.map.border.model,fill:this.map.fill.model,font:this.map.font.model,numFmt:this.map.numFmt.model,protection:this.map.protection.model},!1):!0}},{key:"tag",get:function(){return"dxf"}}]),C}(v);S.exports=o},{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../base-xform"),c=e("./color-xform"),a=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={color:new c},O}return b(p,[{key:"render",value:function(C,N){C.openNode("stop"),C.addAttribute("position",N.position),this.map.color.render(C,N.color),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"stop":return this.model={position:parseFloat(C.attributes.position)},!0;case"color":return this.parser=this.map.color,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model.color=this.parser.model,this.parser=void 0),!0):!1}},{key:"tag",get:function(){return"stop"}}]),p}(v),r=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={fgColor:new c("fgColor"),bgColor:new c("bgColor")},O}return b(p,[{key:"render",value:function(C,N){C.openNode("patternFill"),C.addAttribute("patternType",N.pattern),N.fgColor&&this.map.fgColor.render(C,N.fgColor),N.bgColor&&this.map.bgColor.render(C,N.bgColor),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"patternFill":return this.model={type:"pattern",pattern:C.attributes.patternType},!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.parser.model&&(this.model[C]=this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"pattern"}},{key:"tag",get:function(){return"patternFill"}}]),p}(v),t=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={stop:new a},O}return b(p,[{key:"render",value:function(C,N){switch(C.openNode("gradientFill"),N.gradient){case"angle":C.addAttribute("degree",N.degree);break;case"path":C.addAttribute("type","path"),N.center.left&&(C.addAttribute("left",N.center.left),N.center.right===void 0&&C.addAttribute("right",N.center.left)),N.center.right&&C.addAttribute("right",N.center.right),N.center.top&&(C.addAttribute("top",N.center.top),N.center.bottom===void 0&&C.addAttribute("bottom",N.center.top)),N.center.bottom&&C.addAttribute("bottom",N.center.bottom);break}var L=this.map.stop;N.stops.forEach(function(F){L.render(C,F)}),C.closeNode()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"gradientFill":{var N=this.model={stops:[]};return C.attributes.degree?(N.gradient="angle",N.degree=parseInt(C.attributes.degree,10)):C.attributes.type==="path"&&(N.gradient="path",N.center={left:C.attributes.left?parseFloat(C.attributes.left):0,top:C.attributes.top?parseFloat(C.attributes.top):0},C.attributes.right!==C.attributes.left&&(N.center.right=C.attributes.right?parseFloat(C.attributes.right):0),C.attributes.bottom!==C.attributes.top&&(N.center.bottom=C.attributes.bottom?parseFloat(C.attributes.bottom):0)),!0}case"stop":return this.parser=this.map.stop,this.parser.parseOpen(C),!0;default:return!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model.stops.push(this.parser.model),this.parser=void 0),!0):!1}},{key:"name",get:function(){return"gradient"}},{key:"tag",get:function(){return"gradientFill"}}]),p}(v),i=function(n){w(p,n);var o=y(p);function p(){var O;return m(this,p),O=o.call(this),O.map={patternFill:new r,gradientFill:new t},O}return b(p,[{key:"render",value:function(C,N){switch(C.addRollback(),C.openNode("fill"),N.type){case"pattern":this.map.patternFill.render(C,N);break;case"gradient":this.map.gradientFill.render(C,N);break;default:C.rollback();return}C.closeNode(),C.commit()}},{key:"parseOpen",value:function(C){if(this.parser)return this.parser.parseOpen(C),!0;switch(C.name){case"fill":return this.model={},!0;default:return this.parser=this.map[C.name],this.parser?(this.parser.parseOpen(C),!0):!1}}},{key:"parseText",value:function(C){this.parser&&this.parser.parseText(C)}},{key:"parseClose",value:function(C){return this.parser?(this.parser.parseClose(C)||(this.model=this.parser.model,this.model.type=this.parser.name,this.parser=void 0),!0):!1}},{key:"validStyle",value:function(C){return p.validPatternValues[C]}},{key:"tag",get:function(){return"fill"}}]),p}(v);i.validPatternValues=["none","solid","darkVertical","darkGray","mediumGray","lightGray","gray125","gray0625","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","lightGrid"].reduce(function(n,o){return n[o]=!0,n},{}),i.StopXform=a,i.PatternFillXform=r,i.GradientFillXform=t,S.exports=i},{"../base-xform":31,"./color-xform":127}],130:[function(e,S,_){function u(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(C){return typeof C}:u=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},u(p)}function m(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function g(p,O){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(p){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},s(p)}var v=e("./color-xform"),c=e("../simple/boolean-xform"),a=e("../simple/integer-xform"),r=e("../simple/string-xform"),t=e("./underline-xform"),i=e("../../../utils/under-dash"),n=e("../base-xform"),o=function(p){w(C,p);var O=y(C);function C(N){var L;return m(this,C),L=O.call(this),L.options=N||C.OPTIONS,L.map={b:{prop:"bold",xform:new c({tag:"b",attr:"val"})},i:{prop:"italic",xform:new c({tag:"i",attr:"val"})},u:{prop:"underline",xform:new t},charset:{prop:"charset",xform:new a({tag:"charset",attr:"val"})},color:{prop:"color",xform:new v},condense:{prop:"condense",xform:new c({tag:"condense",attr:"val"})},extend:{prop:"extend",xform:new c({tag:"extend",attr:"val"})},family:{prop:"family",xform:new a({tag:"family",attr:"val"})},outline:{prop:"outline",xform:new c({tag:"outline",attr:"val"})},vertAlign:{prop:"vertAlign",xform:new r({tag:"vertAlign",attr:"val"})},scheme:{prop:"scheme",xform:new r({tag:"scheme",attr:"val"})},shadow:{prop:"shadow",xform:new c({tag:"shadow",attr:"val"})},strike:{prop:"strike",xform:new c({tag:"strike",attr:"val"})},sz:{prop:"size",xform:new a({tag:"sz",attr:"val"})}},L.map[L.options.fontNameTag]={prop:"name",xform:new r({tag:L.options.fontNameTag,attr:"val"})},L}return b(C,[{key:"render",value:function(L,F){var M=this.map;L.openNode(this.options.tagName),i.each(this.map,function(D,R){M[R].xform.render(L,F[D.prop])}),L.closeNode()}},{key:"parseOpen",value:function(L){if(this.parser)return this.parser.parseOpen(L),!0;if(this.map[L.name])return this.parser=this.map[L.name].xform,this.parser.parseOpen(L);switch(L.name){case this.options.tagName:return this.model={},!0;default:return!1}}},{key:"parseText",value:function(L){this.parser&&this.parser.parseText(L)}},{key:"parseClose",value:function(L){if(this.parser&&!this.parser.parseClose(L)){var F=this.map[L];return this.parser.model&&(this.model[F.prop]=this.parser.model),this.parser=void 0,!0}switch(L){case this.options.tagName:return!1;default:return!0}}},{key:"tag",get:function(){return this.options.tagName}}]),C}(n);o.OPTIONS={tagName:"font",fontNameTag:"name"},S.exports=o},{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(e,S,_){function u(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(p){return typeof p}:u=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},u(n)}function m(n,o){if(!(n instanceof o))throw new TypeError("Cannot call a class as a function")}function g(n,o){for(var p=0;p"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(n){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},s(n)}var v=e("../../../utils/under-dash"),c=e("../../defaultnumformats"),a=e("../base-xform");function r(){var n={};return v.each(c,function(o,p){o.f&&(n[o.f]=parseInt(p,10))}),n}var t=r(),i=function(n){w(p,n);var o=y(p);function p(O,C){var N;return m(this,p),N=o.call(this),N.id=O,N.formatCode=C,N}return b(p,[{key:"render",value:function(C,N){C.leafNode("numFmt",{numFmtId:N.id,formatCode:N.formatCode})}},{key:"parseOpen",value:function(C){switch(C.name){case"numFmt":return this.model={id:parseInt(C.attributes.numFmtId,10),formatCode:C.attributes.formatCode.replace(/[\\](.)/g,"$1")},!0;default:return!1}}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"numFmt"}}]),p}(a);i.getDefaultFmtId=function(o){return t[o]},i.getDefaultFmtCode=function(o){return c[o]&&c[o].f},S.exports=i},{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c={boolean:function(t,i){return t===void 0?i:t}},a=function(r){w(i,r);var t=y(i);function i(){return m(this,i),t.apply(this,arguments)}return b(i,[{key:"render",value:function(o,p){o.addRollback(),o.openNode("protection");var O=!1;function C(N,L){L!==void 0&&(o.addAttribute(N,L),O=!0)}C("locked",c.boolean(p.locked,!0)?void 0:"0"),C("hidden",c.boolean(p.hidden,!1)?"1":void 0),o.closeNode(),O?o.commit():o.rollback()}},{key:"parseOpen",value:function(o){var p={locked:o.attributes.locked!=="0",hidden:o.attributes.hidden==="1"},O=!p.locked||p.hidden;this.model=O?p:null}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"protection"}}]),i}(v);S.exports=a},{"../base-xform":31}],133:[function(e,S,_){function u(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(n){return typeof n}:u=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},u(t)}function m(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function g(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},s(t)}var v=e("../base-xform"),c=e("./alignment-xform"),a=e("./protection-xform"),r=function(t){w(n,t);var i=y(n);function n(o){var p;return m(this,n),p=i.call(this),p.xfId=!!(o&&o.xfId),p.map={alignment:new c,protection:new a},p}return b(n,[{key:"render",value:function(p,O){p.openNode("xf",{numFmtId:O.numFmtId||0,fontId:O.fontId||0,fillId:O.fillId||0,borderId:O.borderId||0}),this.xfId&&p.addAttribute("xfId",O.xfId||0),O.numFmtId&&p.addAttribute("applyNumberFormat","1"),O.fontId&&p.addAttribute("applyFont","1"),O.fillId&&p.addAttribute("applyFill","1"),O.borderId&&p.addAttribute("applyBorder","1"),O.alignment&&p.addAttribute("applyAlignment","1"),O.protection&&p.addAttribute("applyProtection","1"),O.alignment&&this.map.alignment.render(p,O.alignment),O.protection&&this.map.protection.render(p,O.protection),p.closeNode()}},{key:"parseOpen",value:function(p){if(this.parser)return this.parser.parseOpen(p),!0;switch(p.name){case"xf":return this.model={numFmtId:parseInt(p.attributes.numFmtId,10),fontId:parseInt(p.attributes.fontId,10),fillId:parseInt(p.attributes.fillId,10),borderId:parseInt(p.attributes.borderId,10)},this.xfId&&(this.model.xfId=parseInt(p.attributes.xfId,10)),!0;case"alignment":return this.parser=this.map.alignment,this.parser.parseOpen(p),!0;case"protection":return this.parser=this.map.protection,this.parser.parseOpen(p),!0;default:return!1}}},{key:"parseText",value:function(p){this.parser&&this.parser.parseText(p)}},{key:"parseClose",value:function(p){return this.parser?(this.parser.parseClose(p)||(this.map.protection===this.parser?this.model.protection=this.parser.model:this.model.alignment=this.parser.model,this.parser=void 0),!0):p!=="xf"}},{key:"tag",get:function(){return"xf"}}]),n}(v);S.exports=r},{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(e,S,_){function u(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(R){return typeof R}:u=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},u(M)}function m(M,D){if(!(M instanceof D))throw new TypeError("Cannot call a class as a function")}function g(M,D){for(var R=0;R"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(M){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(R){return R.__proto__||Object.getPrototypeOf(R)},s(M)}var v=e("../../../doc/enums"),c=e("../../../utils/xml-stream"),a=e("../base-xform"),r=e("../static-xform"),t=e("../list-xform"),i=e("./font-xform"),n=e("./fill-xform"),o=e("./border-xform"),p=e("./numfmt-xform"),O=e("./style-xform"),C=e("./dxf-xform"),N=164,L=function(M){w(R,M);var D=y(R);function R(P){var E;return m(this,R),E=D.call(this),E.map={numFmts:new t({tag:"numFmts",count:!0,childXform:new p}),fonts:new t({tag:"fonts",count:!0,childXform:new i,$:{"x14ac:knownFonts":1}}),fills:new t({tag:"fills",count:!0,childXform:new n}),borders:new t({tag:"borders",count:!0,childXform:new o}),cellStyleXfs:new t({tag:"cellStyleXfs",count:!0,childXform:new O}),cellXfs:new t({tag:"cellXfs",count:!0,childXform:new O({xfId:!0})}),dxfs:new t({tag:"dxfs",always:!0,count:!0,childXform:new C}),numFmt:new p,font:new i,fill:new n,border:new o,style:new O({xfId:!0}),cellStyles:R.STATIC_XFORMS.cellStyles,tableStyles:R.STATIC_XFORMS.tableStyles,extLst:R.STATIC_XFORMS.extLst},P&&E.init(),E}return b(R,[{key:"initIndex",value:function(){this.index={style:{},numFmt:{},numFmtNextId:164,font:{},border:{},fill:{}}}},{key:"init",value:function(){this.model={styles:[],numFmts:[],fonts:[],borders:[],fills:[],dxfs:[]},this.initIndex(),this._addBorder({}),this._addStyle({numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}),this._addFill({type:"pattern",pattern:"none"}),this._addFill({type:"pattern",pattern:"gray125"}),this.weakMap=new WeakMap}},{key:"render",value:function(E,A){A=A||this.model,E.openXml(c.StdDocAttributes),E.openNode("styleSheet",R.STYLESHEET_ATTRIBUTES),this.index?(A.numFmts&&A.numFmts.length&&(E.openNode("numFmts",{count:A.numFmts.length}),A.numFmts.forEach(function(z){E.writeXml(z)}),E.closeNode()),A.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),E.openNode("fonts",{count:A.fonts.length,"x14ac:knownFonts":1}),A.fonts.forEach(function(z){E.writeXml(z)}),E.closeNode(),E.openNode("fills",{count:A.fills.length}),A.fills.forEach(function(z){E.writeXml(z)}),E.closeNode(),E.openNode("borders",{count:A.borders.length}),A.borders.forEach(function(z){E.writeXml(z)}),E.closeNode(),this.map.cellStyleXfs.render(E,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),E.openNode("cellXfs",{count:A.styles.length}),A.styles.forEach(function(z){E.writeXml(z)}),E.closeNode()):(this.map.numFmts.render(E,A.numFmts),this.map.fonts.render(E,A.fonts),this.map.fills.render(E,A.fills),this.map.borders.render(E,A.borders),this.map.cellStyleXfs.render(E,[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}]),this.map.cellXfs.render(E,A.styles)),R.STATIC_XFORMS.cellStyles.render(E),this.map.dxfs.render(E,A.dxfs),R.STATIC_XFORMS.tableStyles.render(E),R.STATIC_XFORMS.extLst.render(E),E.closeNode()}},{key:"parseOpen",value:function(E){if(this.parser)return this.parser.parseOpen(E),!0;switch(E.name){case"styleSheet":return this.initIndex(),!0;default:return this.parser=this.map[E.name],this.parser&&this.parser.parseOpen(E),!0}}},{key:"parseText",value:function(E){this.parser&&this.parser.parseText(E)}},{key:"parseClose",value:function(E){var A=this;if(this.parser)return this.parser.parseClose(E)||(this.parser=void 0),!0;switch(E){case"styleSheet":{this.model={};var z=function(U,I){I.model&&I.model.length&&(A.model[U]=I.model)};if(z("numFmts",this.map.numFmts),z("fonts",this.map.fonts),z("fills",this.map.fills),z("borders",this.map.borders),z("styles",this.map.cellXfs),z("dxfs",this.map.dxfs),this.index={model:[],numFmt:[]},this.model.numFmts){var W=this.index.numFmt;this.model.numFmts.forEach(function($){W[$.id]=$.formatCode})}return!1}default:return!0}}},{key:"addStyleModel",value:function(E,A){if(!E)return 0;if(this.model.fonts.length||this._addFont({size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}),this.weakMap&&this.weakMap.has(E))return this.weakMap.get(E);var z={};if(A=A||v.ValueType.Number,E.numFmt)z.numFmtId=this._addNumFmtStr(E.numFmt);else switch(A){case v.ValueType.Number:z.numFmtId=this._addNumFmtStr("General");break;case v.ValueType.Date:z.numFmtId=this._addNumFmtStr("mm-dd-yy");break}E.font&&(z.fontId=this._addFont(E.font)),E.border&&(z.borderId=this._addBorder(E.border)),E.fill&&(z.fillId=this._addFill(E.fill)),E.alignment&&(z.alignment=E.alignment),E.protection&&(z.protection=E.protection);var W=this._addStyle(z);return this.weakMap&&this.weakMap.set(E,W),W}},{key:"getStyleModel",value:function(E){var A=this.model.styles[E];if(!A)return null;var z=this.index.model[E];if(z)return z;if(z=this.index.model[E]={},A.numFmtId){var W=this.index.numFmt[A.numFmtId]||p.getDefaultFmtCode(A.numFmtId);W&&(z.numFmt=W)}function $(U,I,j){if(j||j===0){var B=I[j];B&&(z[U]=B)}}return $("font",this.model.fonts,A.fontId),$("border",this.model.borders,A.borderId),$("fill",this.model.fills,A.fillId),A.alignment&&(z.alignment=A.alignment),A.protection&&(z.protection=A.protection),z}},{key:"addDxfStyle",value:function(E){return this.model.dxfs.push(E),this.model.dxfs.length-1}},{key:"getDxfStyle",value:function(E){return this.model.dxfs[E]}},{key:"_addStyle",value:function(E){var A=this.map.style.toXml(E),z=this.index.style[A];return z===void 0&&(z=this.index.style[A]=this.model.styles.length,this.model.styles.push(A)),z}},{key:"_addNumFmtStr",value:function(E){var A=p.getDefaultFmtId(E);if(A!==void 0||(A=this.index.numFmt[E],A!==void 0))return A;A=this.index.numFmt[E]=N+this.model.numFmts.length;var z=this.map.numFmt.toXml({id:A,formatCode:E});return this.model.numFmts.push(z),A}},{key:"_addFont",value:function(E){var A=this.map.font.toXml(E),z=this.index.font[A];return z===void 0&&(z=this.index.font[A]=this.model.fonts.length,this.model.fonts.push(A)),z}},{key:"_addBorder",value:function(E){var A=this.map.border.toXml(E),z=this.index.border[A];return z===void 0&&(z=this.index.border[A]=this.model.borders.length,this.model.borders.push(A)),z}},{key:"_addFill",value:function(E){var A=this.map.fill.toXml(E),z=this.index.fill[A];return z===void 0&&(z=this.index.fill[A]=this.model.fills.length,this.model.fills.push(A)),z}}]),R}(a);L.STYLESHEET_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"x14ac x16r2","xmlns:x14ac":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac","xmlns:x16r2":"http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"},L.STATIC_XFORMS={cellStyles:new r({tag:"cellStyles",$:{count:1},c:[{tag:"cellStyle",$:{name:"Normal",xfId:0,builtinId:0}}]}),dxfs:new r({tag:"dxfs",$:{count:0}}),tableStyles:new r({tag:"tableStyles",$:{count:0,defaultTableStyle:"TableStyleMedium2",defaultPivotStyle:"PivotStyleLight16"}}),extLst:new r({tag:"extLst",c:[{tag:"ext",$:{uri:"{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}","xmlns:x14":"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"},c:[{tag:"x14:slicerStyles",$:{defaultSlicerStyle:"SlicerStyleLight1"}}]},{tag:"ext",$:{uri:"{9260A510-F301-46a8-8635-F512D64BE5F5}","xmlns:x15":"http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"},c:[{tag:"x15:timelineStyles",$:{defaultTimelineStyle:"TimeSlicerStyleLight1"}}]}]})};var F=function(M){w(R,M);var D=y(R);function R(){var P;return m(this,R),P=D.call(this),P.model={styles:[{numFmtId:0,fontId:0,fillId:0,borderId:0,xfId:0}],numFmts:[],fonts:[{size:11,color:{theme:1},name:"Calibri",family:2,scheme:"minor"}],borders:[{}],fills:[{type:"pattern",pattern:"none"},{type:"pattern",pattern:"gray125"}]},P}return b(R,[{key:"parseStream",value:function(E){return E.autodrain(),Promise.resolve()}},{key:"addStyleModel",value:function(E,A){switch(A){case v.ValueType.Date:return this.dateStyleId;default:return 0}}},{key:"getStyleModel",value:function(){return{}}},{key:"dateStyleId",get:function(){if(!this._dateStyleId){var E={numFmtId:p.getDefaultFmtId("mm-dd-yy")};this._dateStyleId=this.model.styles.length,this.model.styles.push(E)}return this._dateStyleId}}]),R}(L);L.Mock=F,S.exports=L},{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(i){var n;return m(this,t),n=r.call(this),n.model=i,n}return b(t,[{key:"render",value:function(n,o){if(o=o||this.model,o===!0)n.leafNode("u");else{var p=t.Attributes[o];p&&n.leafNode("u",p)}}},{key:"parseOpen",value:function(n){n.name==="u"&&(this.model=n.attributes.val||!0)}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"u"}}]),t}(v);c.Attributes={single:{},double:{val:"double"},singleAccounting:{val:"singleAccounting"},doubleAccounting:{val:"doubleAccounting"}},S.exports=c},{"../base-xform":31}],136:[function(e,S,_){function u(r){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(i){return typeof i}:u=function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},u(r)}function m(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}function g(r,t){for(var i=0;i"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(r){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(i){return i.__proto__||Object.getPrototypeOf(i)},s(r)}var v=e("../base-xform"),c=e("./filter-column-xform"),a=function(r){w(i,r);var t=y(i);function i(){var n;return m(this,i),n=t.call(this),n.map={filterColumn:new c},n}return b(i,[{key:"prepare",value:function(o){var p=this;o.columns.forEach(function(O,C){p.map.filterColumn.prepare(O,{index:C})})}},{key:"render",value:function(o,p){var O=this;return o.openNode(this.tag,{ref:p.autoFilterRef}),p.columns.forEach(function(C){O.map.filterColumn.render(o,C)}),o.closeNode(),!0}},{key:"parseOpen",value:function(o){if(this.parser)return this.parser.parseOpen(o),!0;switch(o.name){case this.tag:return this.model={autoFilterRef:o.attributes.ref,columns:[]},!0;default:if(this.parser=this.map[o.name],this.parser)return this.parseOpen(o),!0;throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(o)))}}},{key:"parseText",value:function(o){this.parser&&this.parser.parseText(o)}},{key:"parseClose",value:function(o){if(this.parser)return this.parser.parseClose(o)||(this.model.columns.push(this.parser.model),this.parser=void 0),!0;switch(o){case this.tag:return!1;default:throw new Error("Unexpected xml node in parseClose: ".concat(o))}}},{key:"tag",get:function(){return"autoFilter"}}]),i}(v);S.exports=a},{"../base-xform":31,"./filter-column-xform":137}],137:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){n.colId=o.index.toString()}},{key:"render",value:function(n,o){return n.leafNode(this.tag,{colId:o.colId,hiddenButton:o.filterButton?"0":"1"}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={filterButton:o.hiddenButton==="0"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"filterColumn"}}]),t}(v);S.exports=c},{"../base-xform":31}],138:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"prepare",value:function(n,o){n.id=o.index+1}},{key:"render",value:function(n,o){return n.leafNode(this.tag,{id:o.id.toString(),name:o.name,totalsRowLabel:o.totalsRowLabel,totalsRowFunction:o.totalsRowFunction,dxfId:o.dxfId}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={name:o.name,totalsRowLabel:o.totalsRowLabel,totalsRowFunction:o.totalsRowFunction,dxfId:o.dxfId},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableColumn"}}]),t}(v);S.exports=c},{"../base-xform":31}],139:[function(e,S,_){function u(a){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(t){return typeof t}:u=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u(a)}function m(a,r){if(!(a instanceof r))throw new TypeError("Cannot call a class as a function")}function g(a,r){for(var t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s(a){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(a)}var v=e("../base-xform"),c=function(a){w(t,a);var r=y(t);function t(){return m(this,t),r.apply(this,arguments)}return b(t,[{key:"render",value:function(n,o){return n.leafNode(this.tag,{name:o.theme?o.theme:void 0,showFirstColumn:o.showFirstColumn?"1":"0",showLastColumn:o.showLastColumn?"1":"0",showRowStripes:o.showRowStripes?"1":"0",showColumnStripes:o.showColumnStripes?"1":"0"}),!0}},{key:"parseOpen",value:function(n){if(n.name===this.tag){var o=n.attributes;return this.model={theme:o.name?o.name:null,showFirstColumn:o.showFirstColumn==="1",showLastColumn:o.showLastColumn==="1",showRowStripes:o.showRowStripes==="1",showColumnStripes:o.showColumnStripes==="1"},!0}return!1}},{key:"parseText",value:function(){}},{key:"parseClose",value:function(){return!1}},{key:"tag",get:function(){return"tableStyleInfo"}}]),t}(v);S.exports=c},{"../base-xform":31}],140:[function(e,S,_){function u(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(L){return typeof L}:u=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},u(C)}function m(C,N){var L=Object.keys(C);if(Object.getOwnPropertySymbols){var F=Object.getOwnPropertySymbols(C);N&&(F=F.filter(function(M){return Object.getOwnPropertyDescriptor(C,M).enumerable})),L.push.apply(L,F)}return L}function g(C){for(var N=1;N"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(C){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(L){return L.__proto__||Object.getPrototypeOf(L)},a(C)}var r=e("../../../utils/xml-stream"),t=e("../base-xform"),i=e("../list-xform"),n=e("./auto-filter-xform"),o=e("./table-column-xform"),p=e("./table-style-info-xform"),O=function(C){h(L,C);var N=d(L);function L(){var F;return w(this,L),F=N.call(this),F.map={autoFilter:new n,tableColumns:new i({tag:"tableColumns",count:!0,empty:!0,childXform:new o}),tableStyleInfo:new p},F}return y(L,[{key:"prepare",value:function(M,D){this.map.autoFilter.prepare(M),this.map.tableColumns.prepare(M.columns,D)}},{key:"render",value:function(M,D){M.openXml(r.StdDocAttributes),M.openNode(this.tag,g(g({},L.TABLE_ATTRIBUTES),{},{id:D.id,name:D.name,displayName:D.displayName||D.name,ref:D.tableRef,totalsRowCount:D.totalsRow?"1":void 0,totalsRowShown:D.totalsRow?void 0:"1",headerRowCount:D.headerRow?"1":"0"})),this.map.autoFilter.render(M,D),this.map.tableColumns.render(M,D.columns),this.map.tableStyleInfo.render(M,D.style),M.closeNode()}},{key:"parseOpen",value:function(M){if(this.parser)return this.parser.parseOpen(M),!0;var D=M.name,R=M.attributes;switch(D){case this.tag:this.reset(),this.model={name:R.name,displayName:R.displayName||R.name,tableRef:R.ref,totalsRow:R.totalsRowCount==="1",headerRow:R.headerRowCount==="1"};break;default:this.parser=this.map[M.name],this.parser&&this.parser.parseOpen(M);break}return!0}},{key:"parseText",value:function(M){this.parser&&this.parser.parseText(M)}},{key:"parseClose",value:function(M){var D=this;if(this.parser)return this.parser.parseClose(M)||(this.parser=void 0),!0;switch(M){case this.tag:return this.model.columns=this.map.tableColumns.model,this.map.autoFilter.model&&(this.model.autoFilterRef=this.map.autoFilter.model.autoFilterRef,this.map.autoFilter.model.columns.forEach(function(R,P){D.model.columns[P].filterButton=R.filterButton})),this.model.style=this.map.tableStyleInfo.model,!1;default:return!0}}},{key:"reconcile",value:function(M,D){M.columns.forEach(function(R){R.dxfId!==void 0&&(R.style=D.styles.getDxfStyle(R.dxfId))})}},{key:"tag",get:function(){return"table"}}]),L}(t);O.TABLE_ATTRIBUTES={xmlns:"http://schemas.openxmlformats.org/spreadsheetml/2006/main","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","mc:Ignorable":"xr xr3","xmlns:xr":"http://schemas.microsoft.com/office/spreadsheetml/2014/revision","xmlns:xr3":"http://schemas.microsoft.com/office/spreadsheetml/2016/revision3"},S.exports=O},{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(e,S,_){(function(u,m){function g($,U,I,j,B,V,te){try{var ie=$[V](te),ce=ie.value}catch(be){I(be);return}ie.done?U(ce):Promise.resolve(ce).then(j,B)}function b($){return function(){var U=this,I=arguments;return new Promise(function(j,B){var V=$.apply(U,I);function te(ce){g(V,j,B,te,ie,"next",ce)}function ie(ce){g(V,j,B,te,ie,"throw",ce)}te(void 0)})}}function w($,U){if(!($ instanceof U))throw new TypeError("Cannot call a class as a function")}function f($,U){for(var I=0;I=1)){oe.next=6;break}return ce=te.substr(ie+1),be=te.substr(0,ie),oe.next=6,new Promise(function(J,Q){var he=new a;he.on("finish",function(){V.mediaIndex[te]=V.media.length,V.mediaIndex[be]=V.media.length;var ke={type:"image",name:be,extension:ce,buffer:he.toBuffer()};V.media.push(ke),J()}),B.on("error",function(ke){Q(ke)}),B.pipe(he)});case 6:case"end":return oe.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processDrawingEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new D,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.drawings[te]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processDrawingRelsEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new C,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.drawingRels[te]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processVmlDrawingEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){var ie,ce;return regeneratorRuntime.wrap(function(_e){for(;;)switch(_e.prev=_e.next){case 0:return ie=new E,_e.next=3,ie.parseStream(B);case 3:ce=_e.sent,V.vmlDrawings["../drawings/".concat(te,".vml")]=ce;case 5:case"end":return _e.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"_processThemeEntry",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V,te){return regeneratorRuntime.wrap(function(ce){for(;;)switch(ce.prev=ce.next){case 0:return ce.next=2,new Promise(function(be,_e){var oe=new a;B.on("error",_e),oe.on("error",_e),oe.on("finish",function(){V.themes[te]=oe.read().toString(),be()}),B.pipe(oe)});case 2:case"end":return ce.stop()}},j)}));function I(j,B,V){return U.apply(this,arguments)}return I}()},{key:"createInputStream",value:function(){throw new Error("`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md")}},{key:"read",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V){var te,ie,ce,be,_e,oe,J,Q;return regeneratorRuntime.wrap(function(ke){for(;;)switch(ke.prev=ke.next){case 0:!B[Symbol.asyncIterator]&&B.pipe&&(B=B.pipe(new v)),te=[],ie=!0,ce=!1,ke.prev=4,_e=h(B);case 6:return ke.next=8,_e.next();case 8:return oe=ke.sent,ie=oe.done,ke.next=12,oe.value;case 12:if(J=ke.sent,ie){ke.next=19;break}Q=J,te.push(Q);case 16:ie=!0,ke.next=6;break;case 19:ke.next=25;break;case 21:ke.prev=21,ke.t0=ke.catch(4),ce=!0,be=ke.t0;case 25:if(ke.prev=25,ke.prev=26,!(!ie&&_e.return!=null)){ke.next=30;break}return ke.next=30,_e.return();case 30:if(ke.prev=30,!ce){ke.next=33;break}throw be;case 33:return ke.finish(30);case 34:return ke.finish(25);case 35:return ke.abrupt("return",this.load(m.concat(te),V));case 36:case"end":return ke.stop()}},j,this,[[4,21,25,35],[26,,30,34]])}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"load",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V){var te,ie,ce,be,_e,oe,J,Q,he,ke,re,se,Ce,q,G,Z,fe;return regeneratorRuntime.wrap(function(ge){for(;;)switch(ge.prev=ge.next){case 0:return V&&V.base64?te=m.from(B.toString(),"base64"):te=B,ie={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},ge.next=4,d.loadAsync(te);case 4:ce=ge.sent,be=0,_e=Object.values(ce.files);case 6:if(!(be<_e.length)){ge.next=126;break}if(oe=_e[be],oe.dir){ge.next=123;break}if(J=oe.name,J[0]==="/"&&(J=J.substr(1)),Q=void 0,!(J.match(/xl\/media\//)||J.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/))){ge.next=21;break}return Q=new v,ge.t0=Q,ge.next=17,oe.async("nodebuffer");case 17:ge.t1=ge.sent,ge.t0.write.call(ge.t0,ge.t1),ge.next=36;break;case 21:if(Q=new v({writableObjectMode:!0,readableObjectMode:!0}),he=void 0,!u.browser){ge.next=31;break}return ge.t2=n,ge.next=27,oe.async("nodebuffer");case 27:ge.t3=ge.sent,he=(0,ge.t2)(ge.t3),ge.next=34;break;case 31:return ge.next=33,oe.async("string");case 33:he=ge.sent;case 34:for(ke=16384,re=0;re0&&(Q=new t,ce.render(Q,J),B.append(Q.xml,{name:"xl/comments".concat(J.id,".xml")}),Q=new t,be.render(Q,J),B.append(Q.xml,{name:"xl/drawings/vmlDrawing".concat(J.id,".vml")}))});case 5:case"end":return oe.stop()}},j)}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"_finalize",value:function(I){var j=this;return new Promise(function(B,V){I.on("finish",function(){B(j)}),I.on("error",V),I.finalize()})}},{key:"prepareModel",value:function(I,j){I.creator=I.creator||"ExcelJS",I.lastModifiedBy=I.lastModifiedBy||"ExcelJS",I.created=I.created||new Date,I.modified=I.modified||new Date,I.useSharedStrings=j.useSharedStrings!==void 0?j.useSharedStrings:!0,I.useStyles=j.useStyles!==void 0?j.useStyles:!0,I.sharedStrings=new O,I.styles=I.useStyles?new o(!0):new o.Mock;var B=new F,V=new M;B.prepare(I);var te={sharedStrings:I.sharedStrings,styles:I.styles,date1904:I.properties.date1904,drawingsCount:0,media:I.media};te.drawings=I.drawings=[],te.commentRefs=I.commentRefs=[];var ie=0;I.tables=[],I.worksheets.forEach(function(ce){ce.tables.forEach(function(be){ie++,be.target="table".concat(ie,".xml"),be.id=ie,I.tables.push(be)}),V.prepare(ce,te)})}},{key:"write",value:function(){var U=b(regeneratorRuntime.mark(function j(B,V){var te,ie;return regeneratorRuntime.wrap(function(be){for(;;)switch(be.prev=be.next){case 0:return V=V||{},te=this.workbook.model,ie=new c.ZipWriter(V.zip),ie.pipe(B),this.prepareModel(te,V),be.next=7,this.addContentTypes(ie,te);case 7:return be.next=9,this.addOfficeRels(ie,te);case 9:return be.next=11,this.addWorkbookRels(ie,te);case 11:return be.next=13,this.addWorksheets(ie,te);case 13:return be.next=15,this.addSharedStrings(ie,te);case 15:return be.next=17,this.addDrawings(ie,te);case 17:return be.next=19,this.addTables(ie,te);case 19:return be.next=21,Promise.all([this.addThemes(ie,te),this.addStyles(ie,te)]);case 21:return be.next=23,this.addMedia(ie,te);case 23:return be.next=25,Promise.all([this.addApp(ie,te),this.addCore(ie,te)]);case 25:return be.next=27,this.addWorkbook(ie,te);case 27:return be.abrupt("return",this._finalize(ie));case 28:case"end":return be.stop()}},j,this)}));function I(j,B){return U.apply(this,arguments)}return I}()},{key:"writeFile",value:function(I,j){var B=this,V=l.createWriteStream(I);return new Promise(function(te,ie){V.on("finish",function(){te()}),V.on("error",function(ce){ie(ce)}),B.write(V,j).then(function(){V.end()})})}},{key:"writeBuffer",value:function(){var U=b(regeneratorRuntime.mark(function j(B){var V;return regeneratorRuntime.wrap(function(ie){for(;;)switch(ie.prev=ie.next){case 0:return V=new a,ie.next=3,this.write(V,B);case 3:return ie.abrupt("return",V.read());case 4:case"end":return ie.stop()}},j,this)}));function I(j){return U.apply(this,arguments)}return I}()}]),$}();W.RelType=e("./rel-type"),S.exports=W}).call(this,e("_process"),e("buffer").Buffer)},{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,_process:467,buffer:216,fs:215,jszip:399,"readable-stream":491}],142:[function(e,S,_){S.exports=` + `},{}],143:[function(e,S,_){(function(u){function m(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(n){return typeof n}:m=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},m(t)}function g(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function b(t,i){for(var n=0;n"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},v(t)}Object.defineProperty(_,"__esModule",{value:!0}),_.CsvFormatterStream=void 0;var c=e("stream"),a=e("./formatter"),r=function(t){f(n,t);var i=h(n);function n(o){var p;return g(this,n),p=i.call(this,{writableObjectMode:o.objectMode}),p.hasWrittenBOM=!1,p.formatterOptions=o,p.rowFormatter=new a.RowFormatter(o),p.hasWrittenBOM=!o.writeBOM,p}return w(n,[{key:"transform",value:function(p){return this.rowFormatter.rowTransform=p,this}},{key:"_transform",value:function(p,O,C){var N=this,L=!1;try{this.hasWrittenBOM||(this.push(this.formatterOptions.BOM),this.hasWrittenBOM=!0),this.rowFormatter.format(p,function(F,M){return F?(L=!0,C(F)):(M&&M.forEach(function(D){N.push(u.from(D,"utf8"))}),L=!0,C())})}catch(F){if(L)throw F;C(F)}}},{key:"_flush",value:function(p){var O=this;this.rowFormatter.finish(function(C,N){return C?p(C):(N&&N.forEach(function(L){O.push(u.from(L,"utf8"))}),p())})}}]),n}(c.Transform);_.CsvFormatterStream=r}).call(this,e("buffer").Buffer)},{"./formatter":147,buffer:216,stream:506}],144:[function(e,S,_){function u(g,b){if(!(g instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(_,"__esModule",{value:!0}),_.FormatterOptions=void 0;var m=function g(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};u(this,g);var w;this.objectMode=!0,this.delimiter=",",this.rowDelimiter=` +`,this.quote='"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.writeBOM=!1,this.BOM="\uFEFF",this.alwaysWriteHeaders=!1,Object.assign(this,b||{}),typeof(b==null?void 0:b.quoteHeaders)>"u"&&(this.quoteHeaders=this.quoteColumns),(b==null?void 0:b.quote)===!0?this.quote='"':(b==null?void 0:b.quote)===!1&&(this.quote=""),typeof(b==null?void 0:b.escape)!="string"&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers&&((w=b.writeHeaders)!==null&&w!==void 0?w:!0),this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote="".concat(this.escape).concat(this.quote)};_.FormatterOptions=m},{}],145:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;s1&&arguments[1]!==void 0?arguments[1]:{},r=[],t=new y.Writable({write:function(n,o,p){r.push(n),p()}});return new Promise(function(i,n){t.on("error",n).on("finish",function(){return i(u.concat(r))}),_.write(c,a).pipe(t)})},_.writeToString=function(c,a){return _.writeToBuffer(c,a).then(function(r){return r.toString()})},_.writeToPath=function(c,a,r){var t=h.createWriteStream(c,{encoding:"utf8"});return _.write(a,r).pipe(t)}}).call(this,e("buffer").Buffer)},{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,buffer:216,fs:215,stream:506,util:525}],149:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.isSyncTransform=void 0,_.isSyncTransform=function(u){return u.length===1}},{}],150:[function(e,S,_){(function(u){function m(p){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(C){return typeof C}:m=function(C){return C&&typeof Symbol=="function"&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C},m(p)}function g(p,O){if(!(p instanceof O))throw new TypeError("Cannot call a class as a function")}function b(p,O){for(var C=0;C"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function a(p){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},a(p)}Object.defineProperty(_,"__esModule",{value:!0}),_.CsvParserStream=void 0;var r=e("string_decoder"),t=e("stream"),i=e("./transforms"),n=e("./parser"),o=function(p){h(C,p);var O=d(C);function C(N){var L;return g(this,C),L=O.call(this,{objectMode:N.objectMode}),L.lines="",L.rowCount=0,L.parsedRowCount=0,L.parsedLineCount=0,L.endEmitted=!1,L.headersEmitted=!1,L.parserOptions=N,L.parser=new n.Parser(N),L.headerTransformer=new i.HeaderTransformer(N),L.decoder=new r.StringDecoder(N.encoding),L.rowTransformerValidator=new i.RowTransformerValidator,L}return w(C,[{key:"transform",value:function(L){return this.rowTransformerValidator.rowTransform=L,this}},{key:"validate",value:function(L){return this.rowTransformerValidator.rowValidator=L,this}},{key:"emit",value:function(L){var F;if(L==="end")return this.endEmitted||(this.endEmitted=!0,f(a(C.prototype),"emit",this).call(this,"end",this.rowCount)),!1;for(var M=arguments.length,D=new Array(M>1?M-1:0),R=1;R=D||M.hasHitRowLimit)return F();if(M.parsedLineCount+=1,M.shouldSkipLine)return A();var z=L[E];M.rowCount+=1,M.parsedRowCount+=1;var W=M.rowCount;return M.transformRow(z,function($,U){if($)return M.rowCount-=1,A($);if(!U)return A(new Error("expected transform result"));if(!U.isValid)M.emit("data-invalid",U.row,W,U.reason);else if(U.row)return M.pushRow(U.row,A);return A()})};R(0)}},{key:"transformRow",value:function(L,F){var M=this;try{this.headerTransformer.transform(L,function(D,R){return D?F(D):R?R.isValid?R.row?M.shouldEmitRows?M.rowTransformerValidator.transformAndValidate(R.row,F):M.skipRow(F):(M.rowCount-=1,M.parsedRowCount-=1,F(null,{row:null,isValid:!0})):M.shouldEmitRows?F(null,{isValid:!1,row:L}):M.skipRow(F):F(new Error("Expected result from header transform"))})}catch(D){F(D)}}},{key:"checkAndEmitHeaders",value:function(){!this.headersEmitted&&this.headerTransformer.headers&&(this.headersEmitted=!0,this.emit("headers",this.headerTransformer.headers))}},{key:"skipRow",value:function(L){return this.rowCount-=1,L(null,{row:null,isValid:!0})}},{key:"pushRow",value:function(L,F){try{this.parserOptions.objectMode?this.push(L):this.push(JSON.stringify(L)),F()}catch(M){F(M)}}},{key:"hasHitRowLimit",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:"shouldEmitRows",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:"shouldSkipLine",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}]),C}(t.Transform);_.CsvParserStream=o}).call(this,e("timers").setImmediate)},{"./parser":162,"./transforms":165,stream:506,string_decoder:520,timers:521}],151:[function(e,S,_){function u(f,y){if(!(f instanceof y))throw new TypeError("Cannot call a class as a function")}var m=function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(_,"__esModule",{value:!0}),_.ParserOptions=void 0;var g=m(e("lodash.escaperegexp")),b=m(e("lodash.isnil")),w=function f(y){u(this,f);var h;if(this.objectMode=!0,this.delimiter=",",this.ignoreEmpty=!1,this.quote='"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn="\r",this.encoding="utf8",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,y||{}),this.delimiter.length>1)throw new Error("delimiter option must be one character long");this.escapedDelimiter=g.default(this.delimiter),this.escapeChar=(h=this.escape)!==null&&h!==void 0?h:this.quote,this.supportsComments=!b.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter,")")),this.maxRows>0&&(this.limitRows=!0)};_.ParserOptions=w},{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(e,S,_){var u=Object.create?function(s,v,c,a){a===void 0&&(a=c),Object.defineProperty(s,a,{enumerable:!0,get:function(){return v[c]}})}:function(s,v,c,a){a===void 0&&(a=c),s[a]=v[c]},m=Object.create?function(s,v){Object.defineProperty(s,"default",{enumerable:!0,value:v})}:function(s,v){s.default=v},g=function(s){if(s&&s.__esModule)return s;var v={};if(s!=null)for(var c in s)c!=="default"&&Object.hasOwnProperty.call(s,c)&&u(v,s,c);return m(v,s),v},b=function(s,v){for(var c in s)c!=="default"&&!v.hasOwnProperty(c)&&u(v,s,c)};Object.defineProperty(_,"__esModule",{value:!0}),_.parseString=_.parseFile=_.parseStream=_.parse=void 0;var w=g(e("fs")),f=e("stream"),y=e("./ParserOptions"),h=e("./CsvParserStream");b(e("./types"),_);var l=e("./CsvParserStream");Object.defineProperty(_,"CsvParserStream",{enumerable:!0,get:function(){return l.CsvParserStream}});var d=e("./ParserOptions");Object.defineProperty(_,"ParserOptions",{enumerable:!0,get:function(){return d.ParserOptions}}),_.parse=function(s){return new h.CsvParserStream(new y.ParserOptions(s))},_.parseStream=function(s,v){return s.pipe(new h.CsvParserStream(new y.ParserOptions(v)))},_.parseFile=function(s){var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return w.createReadStream(s).pipe(new h.CsvParserStream(new y.ParserOptions(v)))},_.parseString=function(s,v){var c=new f.Readable;return c.push(s),c.push(null),c.pipe(new h.CsvParserStream(new y.ParserOptions(v)))}},{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,fs:215,stream:506}],153:[function(e,S,_){function u(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function m(l,d){for(var s=0;sthis.cursor}},{key:"nextNonSpaceToken",get:function(){var l=this.lineFromCursor,d=this.parserOptions.NEXT_TOKEN_REGEXP;if(l.search(d)===-1)return null;var s=d.exec(l);if(s==null)return null;var v=s[1],c=this.cursor+(s.index||0);return new b.Token({token:v,startCursor:c,endCursor:c+v.length-1})}},{key:"nextCharacterToken",get:function(){var l=this.cursor,d=this.lineLength;return d<=l?null:new b.Token({token:this.line[l],startCursor:l,endCursor:l})}},{key:"lineFromCursor",get:function(){return this.line.substr(this.cursor)}}]),y}();_.Scanner=f},{"./Token":156}],156:[function(e,S,_){function u(w,f){if(!(w instanceof f))throw new TypeError("Cannot call a class as a function")}function m(w,f){for(var y=0;ythis.headersLength){if(!c.strictColumnHandling)throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(v.length));return{row:v,isValid:!1,reason:"Column header mismatch expected: ".concat(this.headersLength," columns got: ").concat(v.length)}}return c.strictColumnHandling&&v.length1});throw new Error("Duplicate headers found ".concat(JSON.stringify(t)))}this.headers=v,this.receivedHeaders=!0,this.headersLength=((c=this.headers)===null||c===void 0?void 0:c.length)||0}}]),d}();_.HeaderTransformer=l},{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(e,S,_){function u(h,l){if(!(h instanceof l))throw new TypeError("Cannot call a class as a function")}function m(h,l){for(var d=0;d>6],a=(v&32)===0;if((v&31)===31){var r=v;for(v=0;(r&128)===128;){if(r=d.readUInt8(s),d.isError(r))return r;v<<=7,v|=r&127}}else v&=31;var t=w.tag[v];return{cls:c,primitive:a,tag:v,tagStr:t}}function l(d,s,v){var c=d.readUInt8(v);if(d.isError(c))return c;if(!s&&c===128)return null;if(!(c&128))return c;var a=c&127;if(a>4)return d.error("length octect is too long");c=0;for(var r=0;r=256;i>>=8)t++;var n=m.alloc(1+1+t);n[0]=a,n[1]=128|t;for(var o=1+t,p=c.length;p>0;o--,p>>=8)n[o]=p&255;return this._createEncoderBuffer([n,c])},f.prototype._encodeStr=function(d,s){if(s==="bitstr")return this._createEncoderBuffer([d.unused|0,d.data]);if(s==="bmpstr"){for(var v=m.alloc(d.length*2),c=0;c=40)return this.reporter.error("Second objid identifier OOB");d.splice(0,2,d[0]*40+d[1])}for(var r=0,t=0;t=128;i>>=7)r++}for(var n=m.alloc(r),o=n.length-1,p=d.length-1;p>=0;p--){var O=d[p];for(n[o--]=O&127;(O>>=7)>0;)n[o--]=128|O&127}return this._createEncoderBuffer(n)};function y(l){return l<10?"0"+l:l}f.prototype._encodeTime=function(d,s){var v,c=new Date(d);return s==="gentime"?v=[y(c.getUTCFullYear()),y(c.getUTCMonth()+1),y(c.getUTCDate()),y(c.getUTCHours()),y(c.getUTCMinutes()),y(c.getUTCSeconds()),"Z"].join(""):s==="utctime"?v=[y(c.getUTCFullYear()%100),y(c.getUTCMonth()+1),y(c.getUTCDate()),y(c.getUTCHours()),y(c.getUTCMinutes()),y(c.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+s+" time is not supported yet"),this._encodeStr(v,"octstr")},f.prototype._encodeNull=function(){return this._createEncoderBuffer("")},f.prototype._encodeInt=function(d,s){if(typeof d=="string"){if(!s)return this.reporter.error("String int or enum given, but no values map");if(!s.hasOwnProperty(d))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(d));d=s[d]}if(typeof d!="number"&&!m.isBuffer(d)){var v=d.toArray();!d.sign&&v[0]&128&&v.unshift(0),d=m.from(v)}if(m.isBuffer(d)){var c=d.length;d.length===0&&c++;var a=m.alloc(c);return d.copy(a),d.length===0&&(a[0]=0),this._createEncoderBuffer(a)}if(d<128)return this._createEncoderBuffer(d);if(d<256)return this._createEncoderBuffer([0,d]);for(var r=1,t=d;t>=256;t>>=8)r++;for(var i=new Array(r),n=i.length-1;n>=0;n--)i[n]=d&255,d>>=8;return i[0]&128&&i.unshift(0),this._createEncoderBuffer(m.from(i))},f.prototype._encodeBool=function(d){return this._createEncoderBuffer(d?255:0)},f.prototype._use=function(d,s){return typeof d=="function"&&(d=d(s)),d._getEncoder("der").tree},f.prototype._skipDefault=function(d,s,v){var c=this._baseState,a;if(c.default===null)return!1;var r=d.join();if(c.defaultBuffer===void 0&&(c.defaultBuffer=this._encodeValue(c.default,s,v).join()),r.length!==c.defaultBuffer.length)return!1;for(a=0;a=31?v.error("Multi-octet tag encoding unsupported"):(d||(c|=32),c|=b.tagClassByName[s||"universal"]<<6,c)}},{"../base/node":171,"../constants/der":173,inherits:387,"safer-buffer":495}],179:[function(e,S,_){var u=_;u.der=e("./der"),u.pem=e("./pem")},{"./der":178,"./pem":180}],180:[function(e,S,_){var u=e("inherits"),m=e("./der");function g(b){m.call(this,b),this.enc="pem"}u(g,m),S.exports=g,g.prototype.encode=function(w,f){for(var y=m.prototype.encode.call(this,w),h=y.toString("base64"),l=["-----BEGIN "+f.label+"-----"],d=0;d0?R:P},f.min=function(R,P){return R.cmp(P)<0?R:P},f.prototype._init=function(R,P,E){if(typeof R=="number")return this._initNumber(R,P,E);if(u(R)==="object")return this._initArray(R,P,E);P==="hex"&&(P=16),b(P===(P|0)&&P>=2&&P<=36),R=R.toString().replace(/\s+/g,"");var A=0;R[0]==="-"&&A++,P===16?this._parseHex(R,A):this._parseBase(R,P,A),R[0]==="-"&&(this.negative=1),this.strip(),E==="le"&&this._initArray(this.toArray(),P,E)},f.prototype._initNumber=function(R,P,E){R<0&&(this.negative=1,R=-R),R<67108864?(this.words=[R&67108863],this.length=1):R<4503599627370496?(this.words=[R&67108863,R/67108864&67108863],this.length=2):(b(R<9007199254740992),this.words=[R&67108863,R/67108864&67108863,1],this.length=3),E==="le"&&this._initArray(this.toArray(),P,E)},f.prototype._initArray=function(R,P,E){if(b(typeof R.length=="number"),R.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(R.length/3),this.words=new Array(this.length);for(var A=0;A=0;A-=3)W=R[A]|R[A-1]<<8|R[A-2]<<16,this.words[z]|=W<<$&67108863,this.words[z+1]=W>>>26-$&67108863,$+=24,$>=26&&($-=26,z++);else if(E==="le")for(A=0,z=0;A>>26-$&67108863,$+=24,$>=26&&($-=26,z++);return this.strip()};function h(D,R,P){for(var E=0,A=Math.min(D.length,P),z=R;z=49&&W<=54?E|=W-49+10:W>=17&&W<=22?E|=W-17+10:E|=W&15}return E}f.prototype._parseHex=function(R,P){this.length=Math.ceil((R.length-P)/6),this.words=new Array(this.length);for(var E=0;E=P;E-=6)z=h(R,E,E+6),this.words[A]|=z<>>26-W&4194303,W+=24,W>=26&&(W-=26,A++);E+6!==P&&(z=h(R,P,E+6),this.words[A]|=z<>>26-W&4194303),this.strip()};function l(D,R,P,E){for(var A=0,z=Math.min(D.length,P),W=R;W=49?A+=$-49+10:$>=17?A+=$-17+10:A+=$}return A}f.prototype._parseBase=function(R,P,E){this.words=[0],this.length=1;for(var A=0,z=1;z<=67108863;z*=P)A++;A--,z=z/P|0;for(var W=R.length-E,$=W%A,U=Math.min(W,W-$)+E,I=0,j=E;j1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],s=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],v=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(R,P){R=R||10,P=P|0||1;var E;if(R===16||R==="hex"){E="";for(var A=0,z=0,W=0;W>>24-A&16777215,z!==0||W!==this.length-1?E=d[6-U.length]+U+E:E=U+E,A+=2,A>=26&&(A-=26,W--)}for(z!==0&&(E=z.toString(16)+E);E.length%P!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}if(R===(R|0)&&R>=2&&R<=36){var I=s[R],j=v[R];E="";var B=this.clone();for(B.negative=0;!B.isZero();){var V=B.modn(j).toString(R);B=B.idivn(j),B.isZero()?E=V+E:E=d[I-V.length]+V+E}for(this.isZero()&&(E="0"+E);E.length%P!==0;)E="0"+E;return this.negative!==0&&(E="-"+E),E}b(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var R=this.words[0];return this.length===2?R+=this.words[1]*67108864:this.length===3&&this.words[2]===1?R+=4503599627370496+this.words[1]*67108864:this.length>2&&b(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-R:R},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(R,P){return b(typeof y<"u"),this.toArrayLike(y,R,P)},f.prototype.toArray=function(R,P){return this.toArrayLike(Array,R,P)},f.prototype.toArrayLike=function(R,P,E){var A=this.byteLength(),z=E||Math.max(1,A);b(A<=z,"byte array longer than desired length"),b(z>0,"Requested array length <= 0"),this.strip();var W=P==="le",$=new R(z),U,I,j=this.clone();if(W){for(I=0;!j.isZero();I++)U=j.andln(255),j.iushrn(8),$[I]=U;for(;I=4096&&(E+=13,P>>>=13),P>=64&&(E+=7,P>>>=7),P>=8&&(E+=4,P>>>=4),P>=2&&(E+=2,P>>>=2),E+P},f.prototype._zeroBits=function(R){if(R===0)return 26;var P=R,E=0;return P&8191||(E+=13,P>>>=13),P&127||(E+=7,P>>>=7),P&15||(E+=4,P>>>=4),P&3||(E+=2,P>>>=2),P&1||E++,E},f.prototype.bitLength=function(){var R=this.words[this.length-1],P=this._countBits(R);return(this.length-1)*26+P};function c(D){for(var R=new Array(D.bitLength()),P=0;P>>A}return R}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var R=0,P=0;PR.length?this.clone().ior(R):R.clone().ior(this)},f.prototype.uor=function(R){return this.length>R.length?this.clone().iuor(R):R.clone().iuor(this)},f.prototype.iuand=function(R){var P;this.length>R.length?P=R:P=this;for(var E=0;ER.length?this.clone().iand(R):R.clone().iand(this)},f.prototype.uand=function(R){return this.length>R.length?this.clone().iuand(R):R.clone().iuand(this)},f.prototype.iuxor=function(R){var P,E;this.length>R.length?(P=this,E=R):(P=R,E=this);for(var A=0;AR.length?this.clone().ixor(R):R.clone().ixor(this)},f.prototype.uxor=function(R){return this.length>R.length?this.clone().iuxor(R):R.clone().iuxor(this)},f.prototype.inotn=function(R){b(typeof R=="number"&&R>=0);var P=Math.ceil(R/26)|0,E=R%26;this._expand(P),E>0&&P--;for(var A=0;A0&&(this.words[A]=~this.words[A]&67108863>>26-E),this.strip()},f.prototype.notn=function(R){return this.clone().inotn(R)},f.prototype.setn=function(R,P){b(typeof R=="number"&&R>=0);var E=R/26|0,A=R%26;return this._expand(E+1),P?this.words[E]=this.words[E]|1<R.length?(E=this,A=R):(E=R,A=this);for(var z=0,W=0;W>>26;for(;z!==0&&W>>26;if(this.length=E.length,z!==0)this.words[this.length]=z,this.length++;else if(E!==this)for(;WR.length?this.clone().iadd(R):R.clone().iadd(this)},f.prototype.isub=function(R){if(R.negative!==0){R.negative=0;var P=this.iadd(R);return R.negative=1,P._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(R),this.negative=1,this._normSign();var E=this.cmp(R);if(E===0)return this.negative=0,this.length=1,this.words[0]=0,this;var A,z;E>0?(A=this,z=R):(A=R,z=this);for(var W=0,$=0;$>26,this.words[$]=P&67108863;for(;W!==0&&$>26,this.words[$]=P&67108863;if(W===0&&$>>26,B=U&67108863,V=Math.min(I,R.length-1),te=Math.max(0,I-D.length+1);te<=V;te++){var ie=I-te|0;A=D.words[ie]|0,z=R.words[te]|0,W=A*z+B,j+=W/67108864|0,B=W&67108863}P.words[I]=B|0,U=j|0}return U!==0?P.words[I]=U|0:P.length--,P.strip()}var r=function(R,P,E){var A=R.words,z=P.words,W=E.words,$=0,U,I,j,B=A[0]|0,V=B&8191,te=B>>>13,ie=A[1]|0,ce=ie&8191,be=ie>>>13,_e=A[2]|0,oe=_e&8191,J=_e>>>13,Q=A[3]|0,he=Q&8191,ke=Q>>>13,re=A[4]|0,se=re&8191,Ce=re>>>13,q=A[5]|0,G=q&8191,Z=q>>>13,fe=A[6]|0,we=fe&8191,ge=fe>>>13,je=A[7]|0,Ze=je&8191,nt=je>>>13,ut=A[8]|0,ot=ut&8191,Ue=ut>>>13,Ve=A[9]|0,Qe=Ve&8191,tt=Ve>>>13,ae=z[0]|0,Re=ae&8191,me=ae>>>13,Ee=z[1]|0,pe=Ee&8191,Pe=Ee>>>13,ee=z[2]|0,Xe=ee&8191,it=ee>>>13,K=z[3]|0,Me=K&8191,Le=K>>>13,ue=z[4]|0,Se=ue&8191,Ie=ue>>>13,st=z[5]|0,Ge=st&8191,rt=st>>>13,_t=z[6]|0,wt=_t&8191,Ot=_t>>>13,pt=z[7]|0,ct=pt&8191,At=pt>>>13,Pt=z[8]|0,bt=Pt&8191,Kt=Pt>>>13,Ct=z[9]|0,xt=Ct&8191,Ft=Ct>>>13;E.negative=R.negative^P.negative,E.length=19,U=Math.imul(V,Re),I=Math.imul(V,me),I=I+Math.imul(te,Re)|0,j=Math.imul(te,me);var Lt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,U=Math.imul(ce,Re),I=Math.imul(ce,me),I=I+Math.imul(be,Re)|0,j=Math.imul(be,me),U=U+Math.imul(V,pe)|0,I=I+Math.imul(V,Pe)|0,I=I+Math.imul(te,pe)|0,j=j+Math.imul(te,Pe)|0;var Et=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Et>>>26)|0,Et&=67108863,U=Math.imul(oe,Re),I=Math.imul(oe,me),I=I+Math.imul(J,Re)|0,j=Math.imul(J,me),U=U+Math.imul(ce,pe)|0,I=I+Math.imul(ce,Pe)|0,I=I+Math.imul(be,pe)|0,j=j+Math.imul(be,Pe)|0,U=U+Math.imul(V,Xe)|0,I=I+Math.imul(V,it)|0,I=I+Math.imul(te,Xe)|0,j=j+Math.imul(te,it)|0;var Dr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Dr>>>26)|0,Dr&=67108863,U=Math.imul(he,Re),I=Math.imul(he,me),I=I+Math.imul(ke,Re)|0,j=Math.imul(ke,me),U=U+Math.imul(oe,pe)|0,I=I+Math.imul(oe,Pe)|0,I=I+Math.imul(J,pe)|0,j=j+Math.imul(J,Pe)|0,U=U+Math.imul(ce,Xe)|0,I=I+Math.imul(ce,it)|0,I=I+Math.imul(be,Xe)|0,j=j+Math.imul(be,it)|0,U=U+Math.imul(V,Me)|0,I=I+Math.imul(V,Le)|0,I=I+Math.imul(te,Me)|0,j=j+Math.imul(te,Le)|0;var Or=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Or>>>26)|0,Or&=67108863,U=Math.imul(se,Re),I=Math.imul(se,me),I=I+Math.imul(Ce,Re)|0,j=Math.imul(Ce,me),U=U+Math.imul(he,pe)|0,I=I+Math.imul(he,Pe)|0,I=I+Math.imul(ke,pe)|0,j=j+Math.imul(ke,Pe)|0,U=U+Math.imul(oe,Xe)|0,I=I+Math.imul(oe,it)|0,I=I+Math.imul(J,Xe)|0,j=j+Math.imul(J,it)|0,U=U+Math.imul(ce,Me)|0,I=I+Math.imul(ce,Le)|0,I=I+Math.imul(be,Me)|0,j=j+Math.imul(be,Le)|0,U=U+Math.imul(V,Se)|0,I=I+Math.imul(V,Ie)|0,I=I+Math.imul(te,Se)|0,j=j+Math.imul(te,Ie)|0;var Gr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,U=Math.imul(G,Re),I=Math.imul(G,me),I=I+Math.imul(Z,Re)|0,j=Math.imul(Z,me),U=U+Math.imul(se,pe)|0,I=I+Math.imul(se,Pe)|0,I=I+Math.imul(Ce,pe)|0,j=j+Math.imul(Ce,Pe)|0,U=U+Math.imul(he,Xe)|0,I=I+Math.imul(he,it)|0,I=I+Math.imul(ke,Xe)|0,j=j+Math.imul(ke,it)|0,U=U+Math.imul(oe,Me)|0,I=I+Math.imul(oe,Le)|0,I=I+Math.imul(J,Me)|0,j=j+Math.imul(J,Le)|0,U=U+Math.imul(ce,Se)|0,I=I+Math.imul(ce,Ie)|0,I=I+Math.imul(be,Se)|0,j=j+Math.imul(be,Ie)|0,U=U+Math.imul(V,Ge)|0,I=I+Math.imul(V,rt)|0,I=I+Math.imul(te,Ge)|0,j=j+Math.imul(te,rt)|0;var Nr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,U=Math.imul(we,Re),I=Math.imul(we,me),I=I+Math.imul(ge,Re)|0,j=Math.imul(ge,me),U=U+Math.imul(G,pe)|0,I=I+Math.imul(G,Pe)|0,I=I+Math.imul(Z,pe)|0,j=j+Math.imul(Z,Pe)|0,U=U+Math.imul(se,Xe)|0,I=I+Math.imul(se,it)|0,I=I+Math.imul(Ce,Xe)|0,j=j+Math.imul(Ce,it)|0,U=U+Math.imul(he,Me)|0,I=I+Math.imul(he,Le)|0,I=I+Math.imul(ke,Me)|0,j=j+Math.imul(ke,Le)|0,U=U+Math.imul(oe,Se)|0,I=I+Math.imul(oe,Ie)|0,I=I+Math.imul(J,Se)|0,j=j+Math.imul(J,Ie)|0,U=U+Math.imul(ce,Ge)|0,I=I+Math.imul(ce,rt)|0,I=I+Math.imul(be,Ge)|0,j=j+Math.imul(be,rt)|0,U=U+Math.imul(V,wt)|0,I=I+Math.imul(V,Ot)|0,I=I+Math.imul(te,wt)|0,j=j+Math.imul(te,Ot)|0;var Zr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,U=Math.imul(Ze,Re),I=Math.imul(Ze,me),I=I+Math.imul(nt,Re)|0,j=Math.imul(nt,me),U=U+Math.imul(we,pe)|0,I=I+Math.imul(we,Pe)|0,I=I+Math.imul(ge,pe)|0,j=j+Math.imul(ge,Pe)|0,U=U+Math.imul(G,Xe)|0,I=I+Math.imul(G,it)|0,I=I+Math.imul(Z,Xe)|0,j=j+Math.imul(Z,it)|0,U=U+Math.imul(se,Me)|0,I=I+Math.imul(se,Le)|0,I=I+Math.imul(Ce,Me)|0,j=j+Math.imul(Ce,Le)|0,U=U+Math.imul(he,Se)|0,I=I+Math.imul(he,Ie)|0,I=I+Math.imul(ke,Se)|0,j=j+Math.imul(ke,Ie)|0,U=U+Math.imul(oe,Ge)|0,I=I+Math.imul(oe,rt)|0,I=I+Math.imul(J,Ge)|0,j=j+Math.imul(J,rt)|0,U=U+Math.imul(ce,wt)|0,I=I+Math.imul(ce,Ot)|0,I=I+Math.imul(be,wt)|0,j=j+Math.imul(be,Ot)|0,U=U+Math.imul(V,ct)|0,I=I+Math.imul(V,At)|0,I=I+Math.imul(te,ct)|0,j=j+Math.imul(te,At)|0;var Qt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,U=Math.imul(ot,Re),I=Math.imul(ot,me),I=I+Math.imul(Ue,Re)|0,j=Math.imul(Ue,me),U=U+Math.imul(Ze,pe)|0,I=I+Math.imul(Ze,Pe)|0,I=I+Math.imul(nt,pe)|0,j=j+Math.imul(nt,Pe)|0,U=U+Math.imul(we,Xe)|0,I=I+Math.imul(we,it)|0,I=I+Math.imul(ge,Xe)|0,j=j+Math.imul(ge,it)|0,U=U+Math.imul(G,Me)|0,I=I+Math.imul(G,Le)|0,I=I+Math.imul(Z,Me)|0,j=j+Math.imul(Z,Le)|0,U=U+Math.imul(se,Se)|0,I=I+Math.imul(se,Ie)|0,I=I+Math.imul(Ce,Se)|0,j=j+Math.imul(Ce,Ie)|0,U=U+Math.imul(he,Ge)|0,I=I+Math.imul(he,rt)|0,I=I+Math.imul(ke,Ge)|0,j=j+Math.imul(ke,rt)|0,U=U+Math.imul(oe,wt)|0,I=I+Math.imul(oe,Ot)|0,I=I+Math.imul(J,wt)|0,j=j+Math.imul(J,Ot)|0,U=U+Math.imul(ce,ct)|0,I=I+Math.imul(ce,At)|0,I=I+Math.imul(be,ct)|0,j=j+Math.imul(be,At)|0,U=U+Math.imul(V,bt)|0,I=I+Math.imul(V,Kt)|0,I=I+Math.imul(te,bt)|0,j=j+Math.imul(te,Kt)|0;var Hr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,U=Math.imul(Qe,Re),I=Math.imul(Qe,me),I=I+Math.imul(tt,Re)|0,j=Math.imul(tt,me),U=U+Math.imul(ot,pe)|0,I=I+Math.imul(ot,Pe)|0,I=I+Math.imul(Ue,pe)|0,j=j+Math.imul(Ue,Pe)|0,U=U+Math.imul(Ze,Xe)|0,I=I+Math.imul(Ze,it)|0,I=I+Math.imul(nt,Xe)|0,j=j+Math.imul(nt,it)|0,U=U+Math.imul(we,Me)|0,I=I+Math.imul(we,Le)|0,I=I+Math.imul(ge,Me)|0,j=j+Math.imul(ge,Le)|0,U=U+Math.imul(G,Se)|0,I=I+Math.imul(G,Ie)|0,I=I+Math.imul(Z,Se)|0,j=j+Math.imul(Z,Ie)|0,U=U+Math.imul(se,Ge)|0,I=I+Math.imul(se,rt)|0,I=I+Math.imul(Ce,Ge)|0,j=j+Math.imul(Ce,rt)|0,U=U+Math.imul(he,wt)|0,I=I+Math.imul(he,Ot)|0,I=I+Math.imul(ke,wt)|0,j=j+Math.imul(ke,Ot)|0,U=U+Math.imul(oe,ct)|0,I=I+Math.imul(oe,At)|0,I=I+Math.imul(J,ct)|0,j=j+Math.imul(J,At)|0,U=U+Math.imul(ce,bt)|0,I=I+Math.imul(ce,Kt)|0,I=I+Math.imul(be,bt)|0,j=j+Math.imul(be,Kt)|0,U=U+Math.imul(V,xt)|0,I=I+Math.imul(V,Ft)|0,I=I+Math.imul(te,xt)|0,j=j+Math.imul(te,Ft)|0;var Fr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,U=Math.imul(Qe,pe),I=Math.imul(Qe,Pe),I=I+Math.imul(tt,pe)|0,j=Math.imul(tt,Pe),U=U+Math.imul(ot,Xe)|0,I=I+Math.imul(ot,it)|0,I=I+Math.imul(Ue,Xe)|0,j=j+Math.imul(Ue,it)|0,U=U+Math.imul(Ze,Me)|0,I=I+Math.imul(Ze,Le)|0,I=I+Math.imul(nt,Me)|0,j=j+Math.imul(nt,Le)|0,U=U+Math.imul(we,Se)|0,I=I+Math.imul(we,Ie)|0,I=I+Math.imul(ge,Se)|0,j=j+Math.imul(ge,Ie)|0,U=U+Math.imul(G,Ge)|0,I=I+Math.imul(G,rt)|0,I=I+Math.imul(Z,Ge)|0,j=j+Math.imul(Z,rt)|0,U=U+Math.imul(se,wt)|0,I=I+Math.imul(se,Ot)|0,I=I+Math.imul(Ce,wt)|0,j=j+Math.imul(Ce,Ot)|0,U=U+Math.imul(he,ct)|0,I=I+Math.imul(he,At)|0,I=I+Math.imul(ke,ct)|0,j=j+Math.imul(ke,At)|0,U=U+Math.imul(oe,bt)|0,I=I+Math.imul(oe,Kt)|0,I=I+Math.imul(J,bt)|0,j=j+Math.imul(J,Kt)|0,U=U+Math.imul(ce,xt)|0,I=I+Math.imul(ce,Ft)|0,I=I+Math.imul(be,xt)|0,j=j+Math.imul(be,Ft)|0;var Lr=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,U=Math.imul(Qe,Xe),I=Math.imul(Qe,it),I=I+Math.imul(tt,Xe)|0,j=Math.imul(tt,it),U=U+Math.imul(ot,Me)|0,I=I+Math.imul(ot,Le)|0,I=I+Math.imul(Ue,Me)|0,j=j+Math.imul(Ue,Le)|0,U=U+Math.imul(Ze,Se)|0,I=I+Math.imul(Ze,Ie)|0,I=I+Math.imul(nt,Se)|0,j=j+Math.imul(nt,Ie)|0,U=U+Math.imul(we,Ge)|0,I=I+Math.imul(we,rt)|0,I=I+Math.imul(ge,Ge)|0,j=j+Math.imul(ge,rt)|0,U=U+Math.imul(G,wt)|0,I=I+Math.imul(G,Ot)|0,I=I+Math.imul(Z,wt)|0,j=j+Math.imul(Z,Ot)|0,U=U+Math.imul(se,ct)|0,I=I+Math.imul(se,At)|0,I=I+Math.imul(Ce,ct)|0,j=j+Math.imul(Ce,At)|0,U=U+Math.imul(he,bt)|0,I=I+Math.imul(he,Kt)|0,I=I+Math.imul(ke,bt)|0,j=j+Math.imul(ke,Kt)|0,U=U+Math.imul(oe,xt)|0,I=I+Math.imul(oe,Ft)|0,I=I+Math.imul(J,xt)|0,j=j+Math.imul(J,Ft)|0;var Ur=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,U=Math.imul(Qe,Me),I=Math.imul(Qe,Le),I=I+Math.imul(tt,Me)|0,j=Math.imul(tt,Le),U=U+Math.imul(ot,Se)|0,I=I+Math.imul(ot,Ie)|0,I=I+Math.imul(Ue,Se)|0,j=j+Math.imul(Ue,Ie)|0,U=U+Math.imul(Ze,Ge)|0,I=I+Math.imul(Ze,rt)|0,I=I+Math.imul(nt,Ge)|0,j=j+Math.imul(nt,rt)|0,U=U+Math.imul(we,wt)|0,I=I+Math.imul(we,Ot)|0,I=I+Math.imul(ge,wt)|0,j=j+Math.imul(ge,Ot)|0,U=U+Math.imul(G,ct)|0,I=I+Math.imul(G,At)|0,I=I+Math.imul(Z,ct)|0,j=j+Math.imul(Z,At)|0,U=U+Math.imul(se,bt)|0,I=I+Math.imul(se,Kt)|0,I=I+Math.imul(Ce,bt)|0,j=j+Math.imul(Ce,Kt)|0,U=U+Math.imul(he,xt)|0,I=I+Math.imul(he,Ft)|0,I=I+Math.imul(ke,xt)|0,j=j+Math.imul(ke,Ft)|0;var vt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(vt>>>26)|0,vt&=67108863,U=Math.imul(Qe,Se),I=Math.imul(Qe,Ie),I=I+Math.imul(tt,Se)|0,j=Math.imul(tt,Ie),U=U+Math.imul(ot,Ge)|0,I=I+Math.imul(ot,rt)|0,I=I+Math.imul(Ue,Ge)|0,j=j+Math.imul(Ue,rt)|0,U=U+Math.imul(Ze,wt)|0,I=I+Math.imul(Ze,Ot)|0,I=I+Math.imul(nt,wt)|0,j=j+Math.imul(nt,Ot)|0,U=U+Math.imul(we,ct)|0,I=I+Math.imul(we,At)|0,I=I+Math.imul(ge,ct)|0,j=j+Math.imul(ge,At)|0,U=U+Math.imul(G,bt)|0,I=I+Math.imul(G,Kt)|0,I=I+Math.imul(Z,bt)|0,j=j+Math.imul(Z,Kt)|0,U=U+Math.imul(se,xt)|0,I=I+Math.imul(se,Ft)|0,I=I+Math.imul(Ce,xt)|0,j=j+Math.imul(Ce,Ft)|0;var Ke=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,U=Math.imul(Qe,Ge),I=Math.imul(Qe,rt),I=I+Math.imul(tt,Ge)|0,j=Math.imul(tt,rt),U=U+Math.imul(ot,wt)|0,I=I+Math.imul(ot,Ot)|0,I=I+Math.imul(Ue,wt)|0,j=j+Math.imul(Ue,Ot)|0,U=U+Math.imul(Ze,ct)|0,I=I+Math.imul(Ze,At)|0,I=I+Math.imul(nt,ct)|0,j=j+Math.imul(nt,At)|0,U=U+Math.imul(we,bt)|0,I=I+Math.imul(we,Kt)|0,I=I+Math.imul(ge,bt)|0,j=j+Math.imul(ge,Kt)|0,U=U+Math.imul(G,xt)|0,I=I+Math.imul(G,Ft)|0,I=I+Math.imul(Z,xt)|0,j=j+Math.imul(Z,Ft)|0;var ve=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(ve>>>26)|0,ve&=67108863,U=Math.imul(Qe,wt),I=Math.imul(Qe,Ot),I=I+Math.imul(tt,wt)|0,j=Math.imul(tt,Ot),U=U+Math.imul(ot,ct)|0,I=I+Math.imul(ot,At)|0,I=I+Math.imul(Ue,ct)|0,j=j+Math.imul(Ue,At)|0,U=U+Math.imul(Ze,bt)|0,I=I+Math.imul(Ze,Kt)|0,I=I+Math.imul(nt,bt)|0,j=j+Math.imul(nt,Kt)|0,U=U+Math.imul(we,xt)|0,I=I+Math.imul(we,Ft)|0,I=I+Math.imul(ge,xt)|0,j=j+Math.imul(ge,Ft)|0;var Fe=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,U=Math.imul(Qe,ct),I=Math.imul(Qe,At),I=I+Math.imul(tt,ct)|0,j=Math.imul(tt,At),U=U+Math.imul(ot,bt)|0,I=I+Math.imul(ot,Kt)|0,I=I+Math.imul(Ue,bt)|0,j=j+Math.imul(Ue,Kt)|0,U=U+Math.imul(Ze,xt)|0,I=I+Math.imul(Ze,Ft)|0,I=I+Math.imul(nt,xt)|0,j=j+Math.imul(nt,Ft)|0;var Be=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(Be>>>26)|0,Be&=67108863,U=Math.imul(Qe,bt),I=Math.imul(Qe,Kt),I=I+Math.imul(tt,bt)|0,j=Math.imul(tt,Kt),U=U+Math.imul(ot,xt)|0,I=I+Math.imul(ot,Ft)|0,I=I+Math.imul(Ue,xt)|0,j=j+Math.imul(Ue,Ft)|0;var dt=($+U|0)+((I&8191)<<13)|0;$=(j+(I>>>13)|0)+(dt>>>26)|0,dt&=67108863,U=Math.imul(Qe,xt),I=Math.imul(Qe,Ft),I=I+Math.imul(tt,xt)|0,j=Math.imul(tt,Ft);var St=($+U|0)+((I&8191)<<13)|0;return $=(j+(I>>>13)|0)+(St>>>26)|0,St&=67108863,W[0]=Lt,W[1]=Et,W[2]=Dr,W[3]=Or,W[4]=Gr,W[5]=Nr,W[6]=Zr,W[7]=Qt,W[8]=Hr,W[9]=Fr,W[10]=Lr,W[11]=Ur,W[12]=vt,W[13]=Ke,W[14]=ve,W[15]=Fe,W[16]=Be,W[17]=dt,W[18]=St,$!==0&&(W[19]=$,E.length++),E};Math.imul||(r=a);function t(D,R,P){P.negative=R.negative^D.negative,P.length=D.length+R.length;for(var E=0,A=0,z=0;z>>26)|0,A+=W>>>26,W&=67108863}P.words[z]=$,E=W,W=A}return E!==0?P.words[z]=E:P.length--,P.strip()}function i(D,R,P){var E=new n;return E.mulp(D,R,P)}f.prototype.mulTo=function(R,P){var E,A=this.length+R.length;return this.length===10&&R.length===10?E=r(this,R,P):A<63?E=a(this,R,P):A<1024?E=t(this,R,P):E=i(this,R,P),E};function n(D,R){this.x=D,this.y=R}n.prototype.makeRBT=function(R){for(var P=new Array(R),E=f.prototype._countBits(R)-1,A=0;A>=1;return A},n.prototype.permute=function(R,P,E,A,z,W){for(var $=0;$>>1)z++;return 1<>>13,E[2*W+1]=z&8191,z=z>>>13;for(W=2*P;W>=26,P+=A/67108864|0,P+=z>>>26,this.words[E]=z&67108863}return P!==0&&(this.words[E]=P,this.length++),this},f.prototype.muln=function(R){return this.clone().imuln(R)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(R){var P=c(R);if(P.length===0)return new f(1);for(var E=this,A=0;A=0);var P=R%26,E=(R-P)/26,A=67108863>>>26-P<<26-P,z;if(P!==0){var W=0;for(z=0;z>>26-P}W&&(this.words[z]=W,this.length++)}if(E!==0){for(z=this.length-1;z>=0;z--)this.words[z+E]=this.words[z];for(z=0;z=0);var A;P?A=(P-P%26)/26:A=0;var z=R%26,W=Math.min((R-z)/26,this.length),$=67108863^67108863>>>z<W)for(this.length-=W,I=0;I=0&&(j!==0||I>=A);I--){var B=this.words[I]|0;this.words[I]=j<<26-z|B>>>z,j=B&$}return U&&j!==0&&(U.words[U.length++]=j),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(R,P,E){return b(this.negative===0),this.iushrn(R,P,E)},f.prototype.shln=function(R){return this.clone().ishln(R)},f.prototype.ushln=function(R){return this.clone().iushln(R)},f.prototype.shrn=function(R){return this.clone().ishrn(R)},f.prototype.ushrn=function(R){return this.clone().iushrn(R)},f.prototype.testn=function(R){b(typeof R=="number"&&R>=0);var P=R%26,E=(R-P)/26,A=1<=0);var P=R%26,E=(R-P)/26;if(b(this.negative===0,"imaskn works only with positive numbers"),this.length<=E)return this;if(P!==0&&E++,this.length=Math.min(E,this.length),P!==0){var A=67108863^67108863>>>P<=67108864;P++)this.words[P]-=67108864,P===this.length-1?this.words[P+1]=1:this.words[P+1]++;return this.length=Math.max(this.length,P+1),this},f.prototype.isubn=function(R){if(b(typeof R=="number"),b(R<67108864),R<0)return this.iaddn(-R);if(this.negative!==0)return this.negative=0,this.iaddn(R),this.negative=1,this;if(this.words[0]-=R,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var P=0;P>26)-(U/67108864|0),this.words[z+E]=W&67108863}for(;z>26,this.words[z+E]=W&67108863;if($===0)return this.strip();for(b($===-1),$=0,z=0;z>26,this.words[z]=W&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(R,P){var E=this.length-R.length,A=this.clone(),z=R,W=z.words[z.length-1]|0,$=this._countBits(W);E=26-$,E!==0&&(z=z.ushln(E),A.iushln(E),W=z.words[z.length-1]|0);var U=A.length-z.length,I;if(P!=="mod"){I=new f(null),I.length=U+1,I.words=new Array(I.length);for(var j=0;j=0;V--){var te=(A.words[z.length+V]|0)*67108864+(A.words[z.length+V-1]|0);for(te=Math.min(te/W|0,67108863),A._ishlnsubmul(z,te,V);A.negative!==0;)te--,A.negative=0,A._ishlnsubmul(z,1,V),A.isZero()||(A.negative^=1);I&&(I.words[V]=te)}return I&&I.strip(),A.strip(),P!=="div"&&E!==0&&A.iushrn(E),{div:I||null,mod:A}},f.prototype.divmod=function(R,P,E){if(b(!R.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var A,z,W;return this.negative!==0&&R.negative===0?(W=this.neg().divmod(R,P),P!=="mod"&&(A=W.div.neg()),P!=="div"&&(z=W.mod.neg(),E&&z.negative!==0&&z.iadd(R)),{div:A,mod:z}):this.negative===0&&R.negative!==0?(W=this.divmod(R.neg(),P),P!=="mod"&&(A=W.div.neg()),{div:A,mod:W.mod}):this.negative&R.negative?(W=this.neg().divmod(R.neg(),P),P!=="div"&&(z=W.mod.neg(),E&&z.negative!==0&&z.isub(R)),{div:W.div,mod:z}):R.length>this.length||this.cmp(R)<0?{div:new f(0),mod:this}:R.length===1?P==="div"?{div:this.divn(R.words[0]),mod:null}:P==="mod"?{div:null,mod:new f(this.modn(R.words[0]))}:{div:this.divn(R.words[0]),mod:new f(this.modn(R.words[0]))}:this._wordDiv(R,P)},f.prototype.div=function(R){return this.divmod(R,"div",!1).div},f.prototype.mod=function(R){return this.divmod(R,"mod",!1).mod},f.prototype.umod=function(R){return this.divmod(R,"mod",!0).mod},f.prototype.divRound=function(R){var P=this.divmod(R);if(P.mod.isZero())return P.div;var E=P.div.negative!==0?P.mod.isub(R):P.mod,A=R.ushrn(1),z=R.andln(1),W=E.cmp(A);return W<0||z===1&&W===0?P.div:P.div.negative!==0?P.div.isubn(1):P.div.iaddn(1)},f.prototype.modn=function(R){b(R<=67108863);for(var P=(1<<26)%R,E=0,A=this.length-1;A>=0;A--)E=(P*E+(this.words[A]|0))%R;return E},f.prototype.idivn=function(R){b(R<=67108863);for(var P=0,E=this.length-1;E>=0;E--){var A=(this.words[E]|0)+P*67108864;this.words[E]=A/R|0,P=A%R}return this.strip()},f.prototype.divn=function(R){return this.clone().idivn(R)},f.prototype.egcd=function(R){b(R.negative===0),b(!R.isZero());var P=this,E=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var A=new f(1),z=new f(0),W=new f(0),$=new f(1),U=0;P.isEven()&&E.isEven();)P.iushrn(1),E.iushrn(1),++U;for(var I=E.clone(),j=P.clone();!P.isZero();){for(var B=0,V=1;!(P.words[0]&V)&&B<26;++B,V<<=1);if(B>0)for(P.iushrn(B);B-- >0;)(A.isOdd()||z.isOdd())&&(A.iadd(I),z.isub(j)),A.iushrn(1),z.iushrn(1);for(var te=0,ie=1;!(E.words[0]&ie)&&te<26;++te,ie<<=1);if(te>0)for(E.iushrn(te);te-- >0;)(W.isOdd()||$.isOdd())&&(W.iadd(I),$.isub(j)),W.iushrn(1),$.iushrn(1);P.cmp(E)>=0?(P.isub(E),A.isub(W),z.isub($)):(E.isub(P),W.isub(A),$.isub(z))}return{a:W,b:$,gcd:E.iushln(U)}},f.prototype._invmp=function(R){b(R.negative===0),b(!R.isZero());var P=this,E=R.clone();P.negative!==0?P=P.umod(R):P=P.clone();for(var A=new f(1),z=new f(0),W=E.clone();P.cmpn(1)>0&&E.cmpn(1)>0;){for(var $=0,U=1;!(P.words[0]&U)&&$<26;++$,U<<=1);if($>0)for(P.iushrn($);$-- >0;)A.isOdd()&&A.iadd(W),A.iushrn(1);for(var I=0,j=1;!(E.words[0]&j)&&I<26;++I,j<<=1);if(I>0)for(E.iushrn(I);I-- >0;)z.isOdd()&&z.iadd(W),z.iushrn(1);P.cmp(E)>=0?(P.isub(E),A.isub(z)):(E.isub(P),z.isub(A))}var B;return P.cmpn(1)===0?B=A:B=z,B.cmpn(0)<0&&B.iadd(R),B},f.prototype.gcd=function(R){if(this.isZero())return R.abs();if(R.isZero())return this.abs();var P=this.clone(),E=R.clone();P.negative=0,E.negative=0;for(var A=0;P.isEven()&&E.isEven();A++)P.iushrn(1),E.iushrn(1);do{for(;P.isEven();)P.iushrn(1);for(;E.isEven();)E.iushrn(1);var z=P.cmp(E);if(z<0){var W=P;P=E,E=W}else if(z===0||E.cmpn(1)===0)break;P.isub(E)}while(!0);return E.iushln(A)},f.prototype.invm=function(R){return this.egcd(R).a.umod(R)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(R){return this.words[0]&R},f.prototype.bincn=function(R){b(typeof R=="number");var P=R%26,E=(R-P)/26,A=1<>>26,$&=67108863,this.words[W]=$}return z!==0&&(this.words[W]=z,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(R){var P=R<0;if(this.negative!==0&&!P)return-1;if(this.negative===0&&P)return 1;this.strip();var E;if(this.length>1)E=1;else{P&&(R=-R),b(R<=67108863,"Number is too big");var A=this.words[0]|0;E=A===R?0:AR.length)return 1;if(this.length=0;E--){var A=this.words[E]|0,z=R.words[E]|0;if(A!==z){Az&&(P=1);break}}return P},f.prototype.gtn=function(R){return this.cmpn(R)===1},f.prototype.gt=function(R){return this.cmp(R)===1},f.prototype.gten=function(R){return this.cmpn(R)>=0},f.prototype.gte=function(R){return this.cmp(R)>=0},f.prototype.ltn=function(R){return this.cmpn(R)===-1},f.prototype.lt=function(R){return this.cmp(R)===-1},f.prototype.lten=function(R){return this.cmpn(R)<=0},f.prototype.lte=function(R){return this.cmp(R)<=0},f.prototype.eqn=function(R){return this.cmpn(R)===0},f.prototype.eq=function(R){return this.cmp(R)===0},f.red=function(R){return new F(R)},f.prototype.toRed=function(R){return b(!this.red,"Already a number in reduction context"),b(this.negative===0,"red works only with positives"),R.convertTo(this)._forceRed(R)},f.prototype.fromRed=function(){return b(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(R){return this.red=R,this},f.prototype.forceRed=function(R){return b(!this.red,"Already a number in reduction context"),this._forceRed(R)},f.prototype.redAdd=function(R){return b(this.red,"redAdd works only with red numbers"),this.red.add(this,R)},f.prototype.redIAdd=function(R){return b(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,R)},f.prototype.redSub=function(R){return b(this.red,"redSub works only with red numbers"),this.red.sub(this,R)},f.prototype.redISub=function(R){return b(this.red,"redISub works only with red numbers"),this.red.isub(this,R)},f.prototype.redShl=function(R){return b(this.red,"redShl works only with red numbers"),this.red.shl(this,R)},f.prototype.redMul=function(R){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.mul(this,R)},f.prototype.redIMul=function(R){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,R),this.red.imul(this,R)},f.prototype.redSqr=function(){return b(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return b(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return b(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return b(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return b(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(R){return b(this.red&&!R.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,R)};var o={k256:null,p224:null,p192:null,p25519:null};function p(D,R){this.name=D,this.p=new f(R,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}p.prototype._tmp=function(){var R=new f(null);return R.words=new Array(Math.ceil(this.n/13)),R},p.prototype.ireduce=function(R){var P=R,E;do this.split(P,this.tmp),P=this.imulK(P),P=P.iadd(this.tmp),E=P.bitLength();while(E>this.n);var A=E0?P.isub(this.p):P.strip!==void 0?P.strip():P._strip(),P},p.prototype.split=function(R,P){R.iushrn(this.n,0,P)},p.prototype.imulK=function(R){return R.imul(this.k)};function O(){p.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}w(O,p),O.prototype.split=function(R,P){for(var E=4194303,A=Math.min(R.length,9),z=0;z>>22,W=$}W>>>=22,R.words[z-10]=W,W===0&&R.length>10?R.length-=10:R.length-=9},O.prototype.imulK=function(R){R.words[R.length]=0,R.words[R.length+1]=0,R.length+=2;for(var P=0,E=0;E>>=26,R.words[E]=z,P=A}return P!==0&&(R.words[R.length++]=P),R},f._prime=function(R){if(o[R])return o[R];var P;if(R==="k256")P=new O;else if(R==="p224")P=new C;else if(R==="p192")P=new N;else if(R==="p25519")P=new L;else throw new Error("Unknown prime "+R);return o[R]=P,P};function F(D){if(typeof D=="string"){var R=f._prime(D);this.m=R.p,this.prime=R}else b(D.gtn(1),"modulus must be greater than 1"),this.m=D,this.prime=null}F.prototype._verify1=function(R){b(R.negative===0,"red works only with positives"),b(R.red,"red works only with red numbers")},F.prototype._verify2=function(R,P){b((R.negative|P.negative)===0,"red works only with positives"),b(R.red&&R.red===P.red,"red works only with red numbers")},F.prototype.imod=function(R){return this.prime?this.prime.ireduce(R)._forceRed(this):R.umod(this.m)._forceRed(this)},F.prototype.neg=function(R){return R.isZero()?R.clone():this.m.sub(R)._forceRed(this)},F.prototype.add=function(R,P){this._verify2(R,P);var E=R.add(P);return E.cmp(this.m)>=0&&E.isub(this.m),E._forceRed(this)},F.prototype.iadd=function(R,P){this._verify2(R,P);var E=R.iadd(P);return E.cmp(this.m)>=0&&E.isub(this.m),E},F.prototype.sub=function(R,P){this._verify2(R,P);var E=R.sub(P);return E.cmpn(0)<0&&E.iadd(this.m),E._forceRed(this)},F.prototype.isub=function(R,P){this._verify2(R,P);var E=R.isub(P);return E.cmpn(0)<0&&E.iadd(this.m),E},F.prototype.shl=function(R,P){return this._verify1(R),this.imod(R.ushln(P))},F.prototype.imul=function(R,P){return this._verify2(R,P),this.imod(R.imul(P))},F.prototype.mul=function(R,P){return this._verify2(R,P),this.imod(R.mul(P))},F.prototype.isqr=function(R){return this.imul(R,R.clone())},F.prototype.sqr=function(R){return this.mul(R,R)},F.prototype.sqrt=function(R){if(R.isZero())return R.clone();var P=this.m.andln(3);if(b(P%2===1),P===3){var E=this.m.add(new f(1)).iushrn(2);return this.pow(R,E)}for(var A=this.m.subn(1),z=0;!A.isZero()&&A.andln(1)===0;)z++,A.iushrn(1);b(!A.isZero());var W=new f(1).toRed(this),$=W.redNeg(),U=this.m.subn(1).iushrn(1),I=this.m.bitLength();for(I=new f(2*I*I).toRed(this);this.pow(I,U).cmp($)!==0;)I.redIAdd($);for(var j=this.pow(I,A),B=this.pow(R,A.addn(1).iushrn(1)),V=this.pow(R,A),te=z;V.cmp(W)!==0;){for(var ie=V,ce=0;ie.cmp(W)!==0;ce++)ie=ie.redSqr();b(ce=0;z--){for(var j=P.words[z],B=I-1;B>=0;B--){var V=j>>B&1;if(W!==A[0]&&(W=this.sqr(W)),V===0&&$===0){U=0;continue}$<<=1,$|=V,U++,!(U!==E&&(z!==0||B!==0))&&(W=this.mul(W,A[$]),U=0,$=0)}I=26}return W},F.prototype.convertTo=function(R){var P=R.umod(this.m);return P===R?P.clone():P},F.prototype.convertFrom=function(R){var P=R.clone();return P.red=null,P},f.mont=function(R){return new M(R)};function M(D){F.call(this,D),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w(M,F),M.prototype.convertTo=function(R){return this.imod(R.ushln(this.shift))},M.prototype.convertFrom=function(R){var P=this.imod(R.mul(this.rinv));return P.red=null,P},M.prototype.imul=function(R,P){if(R.isZero()||P.isZero())return R.words[0]=0,R.length=1,R;var E=R.imul(P),A=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=E.isub(A).iushrn(this.shift),W=z;return z.cmp(this.m)>=0?W=z.isub(this.m):z.cmpn(0)<0&&(W=z.iadd(this.m)),W._forceRed(this)},M.prototype.mul=function(R,P){if(R.isZero()||P.isZero())return new f(0)._forceRed(this);var E=R.mul(P),A=E.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),z=E.isub(A).iushrn(this.shift),W=z;return z.cmp(this.m)>=0?W=z.isub(this.m):z.cmpn(0)<0&&(W=z.iadd(this.m)),W._forceRed(this)},M.prototype.invm=function(R){var P=this.imod(R._invmp(this.m).mul(this.r2));return P._forceRed(this)}})(typeof S>"u"||S,void 0)},{buffer:185}],182:[function(e,S,_){_.byteLength=h,_.toByteArray=d,_.fromByteArray=c;for(var u=[],m=[],g=typeof Uint8Array<"u"?Uint8Array:Array,b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w=0,f=b.length;w0)throw new Error("Invalid string. Length must be a multiple of 4");var t=a.indexOf("=");t===-1&&(t=r);var i=t===r?0:4-t%4;return[t,i]}function h(a){var r=y(a),t=r[0],i=r[1];return(t+i)*3/4-i}function l(a,r,t){return(r+t)*3/4-t}function d(a){var r,t=y(a),i=t[0],n=t[1],o=new g(l(a,i,n)),p=0,O=n>0?i-4:i,C;for(C=0;C>16&255,o[p++]=r>>8&255,o[p++]=r&255;return n===2&&(r=m[a.charCodeAt(C)]<<2|m[a.charCodeAt(C+1)]>>4,o[p++]=r&255),n===1&&(r=m[a.charCodeAt(C)]<<10|m[a.charCodeAt(C+1)]<<4|m[a.charCodeAt(C+2)]>>2,o[p++]=r>>8&255,o[p++]=r&255),o}function s(a){return u[a>>18&63]+u[a>>12&63]+u[a>>6&63]+u[a&63]}function v(a,r,t){for(var i,n=[],o=r;oO?O:p+o));return i===1?(r=a[t-1],n.push(u[r>>2]+u[r<<4&63]+"==")):i===2&&(r=(a[t-2]<<8)+a[t-1],n.push(u[r>>10]+u[r>>4&63]+u[r<<2&63]+"=")),n.join("")}},{}],183:[function(e,S,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}(function(m,g){function b(P,E){if(!P)throw new Error(E||"Assertion failed")}function w(P,E){P.super_=E;var A=function(){};A.prototype=E.prototype,P.prototype=new A,P.prototype.constructor=P}function f(P,E,A){if(f.isBN(P))return P;this.negative=0,this.words=null,this.length=0,this.red=null,P!==null&&((E==="le"||E==="be")&&(A=E,E=10),this._init(P||0,E||10,A||"be"))}u(m)==="object"?m.exports=f:g.BN=f,f.BN=f,f.wordSize=26;var y;try{y=e("buffer").Buffer}catch{}f.isBN=function(E){return E instanceof f?!0:E!==null&&u(E)==="object"&&E.constructor.wordSize===f.wordSize&&Array.isArray(E.words)},f.max=function(E,A){return E.cmp(A)>0?E:A},f.min=function(E,A){return E.cmp(A)<0?E:A},f.prototype._init=function(E,A,z){if(typeof E=="number")return this._initNumber(E,A,z);if(u(E)==="object")return this._initArray(E,A,z);A==="hex"&&(A=16),b(A===(A|0)&&A>=2&&A<=36),E=E.toString().replace(/\s+/g,"");var W=0;E[0]==="-"&&W++,A===16?this._parseHex(E,W):this._parseBase(E,A,W),E[0]==="-"&&(this.negative=1),this._strip(),z==="le"&&this._initArray(this.toArray(),A,z)},f.prototype._initNumber=function(E,A,z){E<0&&(this.negative=1,E=-E),E<67108864?(this.words=[E&67108863],this.length=1):E<4503599627370496?(this.words=[E&67108863,E/67108864&67108863],this.length=2):(b(E<9007199254740992),this.words=[E&67108863,E/67108864&67108863,1],this.length=3),z==="le"&&this._initArray(this.toArray(),A,z)},f.prototype._initArray=function(E,A,z){if(b(typeof E.length=="number"),E.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(E.length/3),this.words=new Array(this.length);for(var W=0;W=0;W-=3)U=E[W]|E[W-1]<<8|E[W-2]<<16,this.words[$]|=U<>>26-I&67108863,I+=24,I>=26&&(I-=26,$++);else if(z==="le")for(W=0,$=0;W>>26-I&67108863,I+=24,I>=26&&(I-=26,$++);return this._strip()};function h(P,E,A){for(var z=0,W=Math.min(P.length,A),$=0,U=E;U=49&&I<=54?j=I-49+10:I>=17&&I<=22?j=I-17+10:j=I,z|=j,$|=j}return b(!($&240),"Invalid character in "+P),z}f.prototype._parseHex=function(E,A){this.length=Math.ceil((E.length-A)/6),this.words=new Array(this.length);for(var z=0;z=A;z-=6)$=h(E,z,z+6),this.words[W]|=$<>>26-U&4194303,U+=24,U>=26&&(U-=26,W++);z+6!==A&&($=h(E,A,z+6),this.words[W]|=$<>>26-U&4194303),this._strip()};function l(P,E,A,z){for(var W=0,$=0,U=Math.min(P.length,A),I=E;I=49?$=j-49+10:j>=17?$=j-17+10:$=j,b(j>=0&&$1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{f.prototype[Symbol.for("nodejs.util.inspect.custom")]=s}catch{f.prototype.inspect=s}else f.prototype.inspect=s;function s(){return(this.red?""}var v=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],a=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(E,A){E=E||10,A=A|0||1;var z;if(E===16||E==="hex"){z="";for(var W=0,$=0,U=0;U>>24-W&16777215,$!==0||U!==this.length-1?z=v[6-j.length]+j+z:z=j+z,W+=2,W>=26&&(W-=26,U--)}for($!==0&&(z=$.toString(16)+z);z.length%A!==0;)z="0"+z;return this.negative!==0&&(z="-"+z),z}if(E===(E|0)&&E>=2&&E<=36){var B=c[E],V=a[E];z="";var te=this.clone();for(te.negative=0;!te.isZero();){var ie=te.modrn(V).toString(E);te=te.idivn(V),te.isZero()?z=ie+z:z=v[B-ie.length]+ie+z}for(this.isZero()&&(z="0"+z);z.length%A!==0;)z="0"+z;return this.negative!==0&&(z="-"+z),z}b(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var E=this.words[0];return this.length===2?E+=this.words[1]*67108864:this.length===3&&this.words[2]===1?E+=4503599627370496+this.words[1]*67108864:this.length>2&&b(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-E:E},f.prototype.toJSON=function(){return this.toString(16,2)},y&&(f.prototype.toBuffer=function(E,A){return this.toArrayLike(y,E,A)}),f.prototype.toArray=function(E,A){return this.toArrayLike(Array,E,A)};var r=function(E,A){return E.allocUnsafe?E.allocUnsafe(A):new E(A)};f.prototype.toArrayLike=function(E,A,z){this._strip();var W=this.byteLength(),$=z||Math.max(1,W);b(W<=$,"byte array longer than desired length"),b($>0,"Requested array length <= 0");var U=r(E,$),I=A==="le"?"LE":"BE";return this["_toArrayLike"+I](U,W),U},f.prototype._toArrayLikeLE=function(E,A){for(var z=0,W=0,$=0,U=0;$>8&255),z>16&255),U===6?(z>24&255),W=0,U=0):(W=I>>>24,U+=2)}if(z=0&&(E[z--]=I>>8&255),z>=0&&(E[z--]=I>>16&255),U===6?(z>=0&&(E[z--]=I>>24&255),W=0,U=0):(W=I>>>24,U+=2)}if(z>=0)for(E[z--]=W;z>=0;)E[z--]=0},Math.clz32?f.prototype._countBits=function(E){return 32-Math.clz32(E)}:f.prototype._countBits=function(E){var A=E,z=0;return A>=4096&&(z+=13,A>>>=13),A>=64&&(z+=7,A>>>=7),A>=8&&(z+=4,A>>>=4),A>=2&&(z+=2,A>>>=2),z+A},f.prototype._zeroBits=function(E){if(E===0)return 26;var A=E,z=0;return A&8191||(z+=13,A>>>=13),A&127||(z+=7,A>>>=7),A&15||(z+=4,A>>>=4),A&3||(z+=2,A>>>=2),A&1||z++,z},f.prototype.bitLength=function(){var E=this.words[this.length-1],A=this._countBits(E);return(this.length-1)*26+A};function t(P){for(var E=new Array(P.bitLength()),A=0;A>>W&1}return E}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var E=0,A=0;AE.length?this.clone().ior(E):E.clone().ior(this)},f.prototype.uor=function(E){return this.length>E.length?this.clone().iuor(E):E.clone().iuor(this)},f.prototype.iuand=function(E){var A;this.length>E.length?A=E:A=this;for(var z=0;zE.length?this.clone().iand(E):E.clone().iand(this)},f.prototype.uand=function(E){return this.length>E.length?this.clone().iuand(E):E.clone().iuand(this)},f.prototype.iuxor=function(E){var A,z;this.length>E.length?(A=this,z=E):(A=E,z=this);for(var W=0;WE.length?this.clone().ixor(E):E.clone().ixor(this)},f.prototype.uxor=function(E){return this.length>E.length?this.clone().iuxor(E):E.clone().iuxor(this)},f.prototype.inotn=function(E){b(typeof E=="number"&&E>=0);var A=Math.ceil(E/26)|0,z=E%26;this._expand(A),z>0&&A--;for(var W=0;W0&&(this.words[W]=~this.words[W]&67108863>>26-z),this._strip()},f.prototype.notn=function(E){return this.clone().inotn(E)},f.prototype.setn=function(E,A){b(typeof E=="number"&&E>=0);var z=E/26|0,W=E%26;return this._expand(z+1),A?this.words[z]=this.words[z]|1<E.length?(z=this,W=E):(z=E,W=this);for(var $=0,U=0;U>>26;for(;$!==0&&U>>26;if(this.length=z.length,$!==0)this.words[this.length]=$,this.length++;else if(z!==this)for(;UE.length?this.clone().iadd(E):E.clone().iadd(this)},f.prototype.isub=function(E){if(E.negative!==0){E.negative=0;var A=this.iadd(E);return E.negative=1,A._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(E),this.negative=1,this._normSign();var z=this.cmp(E);if(z===0)return this.negative=0,this.length=1,this.words[0]=0,this;var W,$;z>0?(W=this,$=E):(W=E,$=this);for(var U=0,I=0;I<$.length;I++)A=(W.words[I]|0)-($.words[I]|0)+U,U=A>>26,this.words[I]=A&67108863;for(;U!==0&&I>26,this.words[I]=A&67108863;if(U===0&&I>>26,te=j&67108863,ie=Math.min(B,E.length-1),ce=Math.max(0,B-P.length+1);ce<=ie;ce++){var be=B-ce|0;W=P.words[be]|0,$=E.words[ce]|0,U=W*$+te,V+=U/67108864|0,te=U&67108863}A.words[B]=te|0,j=V|0}return j!==0?A.words[B]=j|0:A.length--,A._strip()}var n=function(E,A,z){var W=E.words,$=A.words,U=z.words,I=0,j,B,V,te=W[0]|0,ie=te&8191,ce=te>>>13,be=W[1]|0,_e=be&8191,oe=be>>>13,J=W[2]|0,Q=J&8191,he=J>>>13,ke=W[3]|0,re=ke&8191,se=ke>>>13,Ce=W[4]|0,q=Ce&8191,G=Ce>>>13,Z=W[5]|0,fe=Z&8191,we=Z>>>13,ge=W[6]|0,je=ge&8191,Ze=ge>>>13,nt=W[7]|0,ut=nt&8191,ot=nt>>>13,Ue=W[8]|0,Ve=Ue&8191,Qe=Ue>>>13,tt=W[9]|0,ae=tt&8191,Re=tt>>>13,me=$[0]|0,Ee=me&8191,pe=me>>>13,Pe=$[1]|0,ee=Pe&8191,Xe=Pe>>>13,it=$[2]|0,K=it&8191,Me=it>>>13,Le=$[3]|0,ue=Le&8191,Se=Le>>>13,Ie=$[4]|0,st=Ie&8191,Ge=Ie>>>13,rt=$[5]|0,_t=rt&8191,wt=rt>>>13,Ot=$[6]|0,pt=Ot&8191,ct=Ot>>>13,At=$[7]|0,Pt=At&8191,bt=At>>>13,Kt=$[8]|0,Ct=Kt&8191,xt=Kt>>>13,Ft=$[9]|0,Lt=Ft&8191,Et=Ft>>>13;z.negative=E.negative^A.negative,z.length=19,j=Math.imul(ie,Ee),B=Math.imul(ie,pe),B=B+Math.imul(ce,Ee)|0,V=Math.imul(ce,pe);var Dr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Dr>>>26)|0,Dr&=67108863,j=Math.imul(_e,Ee),B=Math.imul(_e,pe),B=B+Math.imul(oe,Ee)|0,V=Math.imul(oe,pe),j=j+Math.imul(ie,ee)|0,B=B+Math.imul(ie,Xe)|0,B=B+Math.imul(ce,ee)|0,V=V+Math.imul(ce,Xe)|0;var Or=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Or>>>26)|0,Or&=67108863,j=Math.imul(Q,Ee),B=Math.imul(Q,pe),B=B+Math.imul(he,Ee)|0,V=Math.imul(he,pe),j=j+Math.imul(_e,ee)|0,B=B+Math.imul(_e,Xe)|0,B=B+Math.imul(oe,ee)|0,V=V+Math.imul(oe,Xe)|0,j=j+Math.imul(ie,K)|0,B=B+Math.imul(ie,Me)|0,B=B+Math.imul(ce,K)|0,V=V+Math.imul(ce,Me)|0;var Gr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Gr>>>26)|0,Gr&=67108863,j=Math.imul(re,Ee),B=Math.imul(re,pe),B=B+Math.imul(se,Ee)|0,V=Math.imul(se,pe),j=j+Math.imul(Q,ee)|0,B=B+Math.imul(Q,Xe)|0,B=B+Math.imul(he,ee)|0,V=V+Math.imul(he,Xe)|0,j=j+Math.imul(_e,K)|0,B=B+Math.imul(_e,Me)|0,B=B+Math.imul(oe,K)|0,V=V+Math.imul(oe,Me)|0,j=j+Math.imul(ie,ue)|0,B=B+Math.imul(ie,Se)|0,B=B+Math.imul(ce,ue)|0,V=V+Math.imul(ce,Se)|0;var Nr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Nr>>>26)|0,Nr&=67108863,j=Math.imul(q,Ee),B=Math.imul(q,pe),B=B+Math.imul(G,Ee)|0,V=Math.imul(G,pe),j=j+Math.imul(re,ee)|0,B=B+Math.imul(re,Xe)|0,B=B+Math.imul(se,ee)|0,V=V+Math.imul(se,Xe)|0,j=j+Math.imul(Q,K)|0,B=B+Math.imul(Q,Me)|0,B=B+Math.imul(he,K)|0,V=V+Math.imul(he,Me)|0,j=j+Math.imul(_e,ue)|0,B=B+Math.imul(_e,Se)|0,B=B+Math.imul(oe,ue)|0,V=V+Math.imul(oe,Se)|0,j=j+Math.imul(ie,st)|0,B=B+Math.imul(ie,Ge)|0,B=B+Math.imul(ce,st)|0,V=V+Math.imul(ce,Ge)|0;var Zr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,j=Math.imul(fe,Ee),B=Math.imul(fe,pe),B=B+Math.imul(we,Ee)|0,V=Math.imul(we,pe),j=j+Math.imul(q,ee)|0,B=B+Math.imul(q,Xe)|0,B=B+Math.imul(G,ee)|0,V=V+Math.imul(G,Xe)|0,j=j+Math.imul(re,K)|0,B=B+Math.imul(re,Me)|0,B=B+Math.imul(se,K)|0,V=V+Math.imul(se,Me)|0,j=j+Math.imul(Q,ue)|0,B=B+Math.imul(Q,Se)|0,B=B+Math.imul(he,ue)|0,V=V+Math.imul(he,Se)|0,j=j+Math.imul(_e,st)|0,B=B+Math.imul(_e,Ge)|0,B=B+Math.imul(oe,st)|0,V=V+Math.imul(oe,Ge)|0,j=j+Math.imul(ie,_t)|0,B=B+Math.imul(ie,wt)|0,B=B+Math.imul(ce,_t)|0,V=V+Math.imul(ce,wt)|0;var Qt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,j=Math.imul(je,Ee),B=Math.imul(je,pe),B=B+Math.imul(Ze,Ee)|0,V=Math.imul(Ze,pe),j=j+Math.imul(fe,ee)|0,B=B+Math.imul(fe,Xe)|0,B=B+Math.imul(we,ee)|0,V=V+Math.imul(we,Xe)|0,j=j+Math.imul(q,K)|0,B=B+Math.imul(q,Me)|0,B=B+Math.imul(G,K)|0,V=V+Math.imul(G,Me)|0,j=j+Math.imul(re,ue)|0,B=B+Math.imul(re,Se)|0,B=B+Math.imul(se,ue)|0,V=V+Math.imul(se,Se)|0,j=j+Math.imul(Q,st)|0,B=B+Math.imul(Q,Ge)|0,B=B+Math.imul(he,st)|0,V=V+Math.imul(he,Ge)|0,j=j+Math.imul(_e,_t)|0,B=B+Math.imul(_e,wt)|0,B=B+Math.imul(oe,_t)|0,V=V+Math.imul(oe,wt)|0,j=j+Math.imul(ie,pt)|0,B=B+Math.imul(ie,ct)|0,B=B+Math.imul(ce,pt)|0,V=V+Math.imul(ce,ct)|0;var Hr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Hr>>>26)|0,Hr&=67108863,j=Math.imul(ut,Ee),B=Math.imul(ut,pe),B=B+Math.imul(ot,Ee)|0,V=Math.imul(ot,pe),j=j+Math.imul(je,ee)|0,B=B+Math.imul(je,Xe)|0,B=B+Math.imul(Ze,ee)|0,V=V+Math.imul(Ze,Xe)|0,j=j+Math.imul(fe,K)|0,B=B+Math.imul(fe,Me)|0,B=B+Math.imul(we,K)|0,V=V+Math.imul(we,Me)|0,j=j+Math.imul(q,ue)|0,B=B+Math.imul(q,Se)|0,B=B+Math.imul(G,ue)|0,V=V+Math.imul(G,Se)|0,j=j+Math.imul(re,st)|0,B=B+Math.imul(re,Ge)|0,B=B+Math.imul(se,st)|0,V=V+Math.imul(se,Ge)|0,j=j+Math.imul(Q,_t)|0,B=B+Math.imul(Q,wt)|0,B=B+Math.imul(he,_t)|0,V=V+Math.imul(he,wt)|0,j=j+Math.imul(_e,pt)|0,B=B+Math.imul(_e,ct)|0,B=B+Math.imul(oe,pt)|0,V=V+Math.imul(oe,ct)|0,j=j+Math.imul(ie,Pt)|0,B=B+Math.imul(ie,bt)|0,B=B+Math.imul(ce,Pt)|0,V=V+Math.imul(ce,bt)|0;var Fr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,j=Math.imul(Ve,Ee),B=Math.imul(Ve,pe),B=B+Math.imul(Qe,Ee)|0,V=Math.imul(Qe,pe),j=j+Math.imul(ut,ee)|0,B=B+Math.imul(ut,Xe)|0,B=B+Math.imul(ot,ee)|0,V=V+Math.imul(ot,Xe)|0,j=j+Math.imul(je,K)|0,B=B+Math.imul(je,Me)|0,B=B+Math.imul(Ze,K)|0,V=V+Math.imul(Ze,Me)|0,j=j+Math.imul(fe,ue)|0,B=B+Math.imul(fe,Se)|0,B=B+Math.imul(we,ue)|0,V=V+Math.imul(we,Se)|0,j=j+Math.imul(q,st)|0,B=B+Math.imul(q,Ge)|0,B=B+Math.imul(G,st)|0,V=V+Math.imul(G,Ge)|0,j=j+Math.imul(re,_t)|0,B=B+Math.imul(re,wt)|0,B=B+Math.imul(se,_t)|0,V=V+Math.imul(se,wt)|0,j=j+Math.imul(Q,pt)|0,B=B+Math.imul(Q,ct)|0,B=B+Math.imul(he,pt)|0,V=V+Math.imul(he,ct)|0,j=j+Math.imul(_e,Pt)|0,B=B+Math.imul(_e,bt)|0,B=B+Math.imul(oe,Pt)|0,V=V+Math.imul(oe,bt)|0,j=j+Math.imul(ie,Ct)|0,B=B+Math.imul(ie,xt)|0,B=B+Math.imul(ce,Ct)|0,V=V+Math.imul(ce,xt)|0;var Lr=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Lr>>>26)|0,Lr&=67108863,j=Math.imul(ae,Ee),B=Math.imul(ae,pe),B=B+Math.imul(Re,Ee)|0,V=Math.imul(Re,pe),j=j+Math.imul(Ve,ee)|0,B=B+Math.imul(Ve,Xe)|0,B=B+Math.imul(Qe,ee)|0,V=V+Math.imul(Qe,Xe)|0,j=j+Math.imul(ut,K)|0,B=B+Math.imul(ut,Me)|0,B=B+Math.imul(ot,K)|0,V=V+Math.imul(ot,Me)|0,j=j+Math.imul(je,ue)|0,B=B+Math.imul(je,Se)|0,B=B+Math.imul(Ze,ue)|0,V=V+Math.imul(Ze,Se)|0,j=j+Math.imul(fe,st)|0,B=B+Math.imul(fe,Ge)|0,B=B+Math.imul(we,st)|0,V=V+Math.imul(we,Ge)|0,j=j+Math.imul(q,_t)|0,B=B+Math.imul(q,wt)|0,B=B+Math.imul(G,_t)|0,V=V+Math.imul(G,wt)|0,j=j+Math.imul(re,pt)|0,B=B+Math.imul(re,ct)|0,B=B+Math.imul(se,pt)|0,V=V+Math.imul(se,ct)|0,j=j+Math.imul(Q,Pt)|0,B=B+Math.imul(Q,bt)|0,B=B+Math.imul(he,Pt)|0,V=V+Math.imul(he,bt)|0,j=j+Math.imul(_e,Ct)|0,B=B+Math.imul(_e,xt)|0,B=B+Math.imul(oe,Ct)|0,V=V+Math.imul(oe,xt)|0,j=j+Math.imul(ie,Lt)|0,B=B+Math.imul(ie,Et)|0,B=B+Math.imul(ce,Lt)|0,V=V+Math.imul(ce,Et)|0;var Ur=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Ur>>>26)|0,Ur&=67108863,j=Math.imul(ae,ee),B=Math.imul(ae,Xe),B=B+Math.imul(Re,ee)|0,V=Math.imul(Re,Xe),j=j+Math.imul(Ve,K)|0,B=B+Math.imul(Ve,Me)|0,B=B+Math.imul(Qe,K)|0,V=V+Math.imul(Qe,Me)|0,j=j+Math.imul(ut,ue)|0,B=B+Math.imul(ut,Se)|0,B=B+Math.imul(ot,ue)|0,V=V+Math.imul(ot,Se)|0,j=j+Math.imul(je,st)|0,B=B+Math.imul(je,Ge)|0,B=B+Math.imul(Ze,st)|0,V=V+Math.imul(Ze,Ge)|0,j=j+Math.imul(fe,_t)|0,B=B+Math.imul(fe,wt)|0,B=B+Math.imul(we,_t)|0,V=V+Math.imul(we,wt)|0,j=j+Math.imul(q,pt)|0,B=B+Math.imul(q,ct)|0,B=B+Math.imul(G,pt)|0,V=V+Math.imul(G,ct)|0,j=j+Math.imul(re,Pt)|0,B=B+Math.imul(re,bt)|0,B=B+Math.imul(se,Pt)|0,V=V+Math.imul(se,bt)|0,j=j+Math.imul(Q,Ct)|0,B=B+Math.imul(Q,xt)|0,B=B+Math.imul(he,Ct)|0,V=V+Math.imul(he,xt)|0,j=j+Math.imul(_e,Lt)|0,B=B+Math.imul(_e,Et)|0,B=B+Math.imul(oe,Lt)|0,V=V+Math.imul(oe,Et)|0;var vt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(vt>>>26)|0,vt&=67108863,j=Math.imul(ae,K),B=Math.imul(ae,Me),B=B+Math.imul(Re,K)|0,V=Math.imul(Re,Me),j=j+Math.imul(Ve,ue)|0,B=B+Math.imul(Ve,Se)|0,B=B+Math.imul(Qe,ue)|0,V=V+Math.imul(Qe,Se)|0,j=j+Math.imul(ut,st)|0,B=B+Math.imul(ut,Ge)|0,B=B+Math.imul(ot,st)|0,V=V+Math.imul(ot,Ge)|0,j=j+Math.imul(je,_t)|0,B=B+Math.imul(je,wt)|0,B=B+Math.imul(Ze,_t)|0,V=V+Math.imul(Ze,wt)|0,j=j+Math.imul(fe,pt)|0,B=B+Math.imul(fe,ct)|0,B=B+Math.imul(we,pt)|0,V=V+Math.imul(we,ct)|0,j=j+Math.imul(q,Pt)|0,B=B+Math.imul(q,bt)|0,B=B+Math.imul(G,Pt)|0,V=V+Math.imul(G,bt)|0,j=j+Math.imul(re,Ct)|0,B=B+Math.imul(re,xt)|0,B=B+Math.imul(se,Ct)|0,V=V+Math.imul(se,xt)|0,j=j+Math.imul(Q,Lt)|0,B=B+Math.imul(Q,Et)|0,B=B+Math.imul(he,Lt)|0,V=V+Math.imul(he,Et)|0;var Ke=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,j=Math.imul(ae,ue),B=Math.imul(ae,Se),B=B+Math.imul(Re,ue)|0,V=Math.imul(Re,Se),j=j+Math.imul(Ve,st)|0,B=B+Math.imul(Ve,Ge)|0,B=B+Math.imul(Qe,st)|0,V=V+Math.imul(Qe,Ge)|0,j=j+Math.imul(ut,_t)|0,B=B+Math.imul(ut,wt)|0,B=B+Math.imul(ot,_t)|0,V=V+Math.imul(ot,wt)|0,j=j+Math.imul(je,pt)|0,B=B+Math.imul(je,ct)|0,B=B+Math.imul(Ze,pt)|0,V=V+Math.imul(Ze,ct)|0,j=j+Math.imul(fe,Pt)|0,B=B+Math.imul(fe,bt)|0,B=B+Math.imul(we,Pt)|0,V=V+Math.imul(we,bt)|0,j=j+Math.imul(q,Ct)|0,B=B+Math.imul(q,xt)|0,B=B+Math.imul(G,Ct)|0,V=V+Math.imul(G,xt)|0,j=j+Math.imul(re,Lt)|0,B=B+Math.imul(re,Et)|0,B=B+Math.imul(se,Lt)|0,V=V+Math.imul(se,Et)|0;var ve=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(ve>>>26)|0,ve&=67108863,j=Math.imul(ae,st),B=Math.imul(ae,Ge),B=B+Math.imul(Re,st)|0,V=Math.imul(Re,Ge),j=j+Math.imul(Ve,_t)|0,B=B+Math.imul(Ve,wt)|0,B=B+Math.imul(Qe,_t)|0,V=V+Math.imul(Qe,wt)|0,j=j+Math.imul(ut,pt)|0,B=B+Math.imul(ut,ct)|0,B=B+Math.imul(ot,pt)|0,V=V+Math.imul(ot,ct)|0,j=j+Math.imul(je,Pt)|0,B=B+Math.imul(je,bt)|0,B=B+Math.imul(Ze,Pt)|0,V=V+Math.imul(Ze,bt)|0,j=j+Math.imul(fe,Ct)|0,B=B+Math.imul(fe,xt)|0,B=B+Math.imul(we,Ct)|0,V=V+Math.imul(we,xt)|0,j=j+Math.imul(q,Lt)|0,B=B+Math.imul(q,Et)|0,B=B+Math.imul(G,Lt)|0,V=V+Math.imul(G,Et)|0;var Fe=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,j=Math.imul(ae,_t),B=Math.imul(ae,wt),B=B+Math.imul(Re,_t)|0,V=Math.imul(Re,wt),j=j+Math.imul(Ve,pt)|0,B=B+Math.imul(Ve,ct)|0,B=B+Math.imul(Qe,pt)|0,V=V+Math.imul(Qe,ct)|0,j=j+Math.imul(ut,Pt)|0,B=B+Math.imul(ut,bt)|0,B=B+Math.imul(ot,Pt)|0,V=V+Math.imul(ot,bt)|0,j=j+Math.imul(je,Ct)|0,B=B+Math.imul(je,xt)|0,B=B+Math.imul(Ze,Ct)|0,V=V+Math.imul(Ze,xt)|0,j=j+Math.imul(fe,Lt)|0,B=B+Math.imul(fe,Et)|0,B=B+Math.imul(we,Lt)|0,V=V+Math.imul(we,Et)|0;var Be=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Be>>>26)|0,Be&=67108863,j=Math.imul(ae,pt),B=Math.imul(ae,ct),B=B+Math.imul(Re,pt)|0,V=Math.imul(Re,ct),j=j+Math.imul(Ve,Pt)|0,B=B+Math.imul(Ve,bt)|0,B=B+Math.imul(Qe,Pt)|0,V=V+Math.imul(Qe,bt)|0,j=j+Math.imul(ut,Ct)|0,B=B+Math.imul(ut,xt)|0,B=B+Math.imul(ot,Ct)|0,V=V+Math.imul(ot,xt)|0,j=j+Math.imul(je,Lt)|0,B=B+Math.imul(je,Et)|0,B=B+Math.imul(Ze,Lt)|0,V=V+Math.imul(Ze,Et)|0;var dt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(dt>>>26)|0,dt&=67108863,j=Math.imul(ae,Pt),B=Math.imul(ae,bt),B=B+Math.imul(Re,Pt)|0,V=Math.imul(Re,bt),j=j+Math.imul(Ve,Ct)|0,B=B+Math.imul(Ve,xt)|0,B=B+Math.imul(Qe,Ct)|0,V=V+Math.imul(Qe,xt)|0,j=j+Math.imul(ut,Lt)|0,B=B+Math.imul(ut,Et)|0,B=B+Math.imul(ot,Lt)|0,V=V+Math.imul(ot,Et)|0;var St=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(St>>>26)|0,St&=67108863,j=Math.imul(ae,Ct),B=Math.imul(ae,xt),B=B+Math.imul(Re,Ct)|0,V=Math.imul(Re,xt),j=j+Math.imul(Ve,Lt)|0,B=B+Math.imul(Ve,Et)|0,B=B+Math.imul(Qe,Lt)|0,V=V+Math.imul(Qe,Et)|0;var Xt=(I+j|0)+((B&8191)<<13)|0;I=(V+(B>>>13)|0)+(Xt>>>26)|0,Xt&=67108863,j=Math.imul(ae,Lt),B=Math.imul(ae,Et),B=B+Math.imul(Re,Lt)|0,V=Math.imul(Re,Et);var lr=(I+j|0)+((B&8191)<<13)|0;return I=(V+(B>>>13)|0)+(lr>>>26)|0,lr&=67108863,U[0]=Dr,U[1]=Or,U[2]=Gr,U[3]=Nr,U[4]=Zr,U[5]=Qt,U[6]=Hr,U[7]=Fr,U[8]=Lr,U[9]=Ur,U[10]=vt,U[11]=Ke,U[12]=ve,U[13]=Fe,U[14]=Be,U[15]=dt,U[16]=St,U[17]=Xt,U[18]=lr,I!==0&&(U[19]=I,z.length++),z};Math.imul||(n=i);function o(P,E,A){A.negative=E.negative^P.negative,A.length=P.length+E.length;for(var z=0,W=0,$=0;$>>26)|0,W+=U>>>26,U&=67108863}A.words[$]=I,z=U,U=W}return z!==0?A.words[$]=z:A.length--,A._strip()}function p(P,E,A){return o(P,E,A)}f.prototype.mulTo=function(E,A){var z,W=this.length+E.length;return this.length===10&&E.length===10?z=n(this,E,A):W<63?z=i(this,E,A):W<1024?z=o(this,E,A):z=p(this,E,A),z},f.prototype.mul=function(E){var A=new f(null);return A.words=new Array(this.length+E.length),this.mulTo(E,A)},f.prototype.mulf=function(E){var A=new f(null);return A.words=new Array(this.length+E.length),p(this,E,A)},f.prototype.imul=function(E){return this.clone().mulTo(E,this)},f.prototype.imuln=function(E){var A=E<0;A&&(E=-E),b(typeof E=="number"),b(E<67108864);for(var z=0,W=0;W>=26,z+=$/67108864|0,z+=U>>>26,this.words[W]=U&67108863}return z!==0&&(this.words[W]=z,this.length++),A?this.ineg():this},f.prototype.muln=function(E){return this.clone().imuln(E)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(E){var A=t(E);if(A.length===0)return new f(1);for(var z=this,W=0;W=0);var A=E%26,z=(E-A)/26,W=67108863>>>26-A<<26-A,$;if(A!==0){var U=0;for($=0;$>>26-A}U&&(this.words[$]=U,this.length++)}if(z!==0){for($=this.length-1;$>=0;$--)this.words[$+z]=this.words[$];for($=0;$=0);var W;A?W=(A-A%26)/26:W=0;var $=E%26,U=Math.min((E-$)/26,this.length),I=67108863^67108863>>>$<<$,j=z;if(W-=U,W=Math.max(0,W),j){for(var B=0;BU)for(this.length-=U,B=0;B=0&&(V!==0||B>=W);B--){var te=this.words[B]|0;this.words[B]=V<<26-$|te>>>$,V=te&I}return j&&V!==0&&(j.words[j.length++]=V),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},f.prototype.ishrn=function(E,A,z){return b(this.negative===0),this.iushrn(E,A,z)},f.prototype.shln=function(E){return this.clone().ishln(E)},f.prototype.ushln=function(E){return this.clone().iushln(E)},f.prototype.shrn=function(E){return this.clone().ishrn(E)},f.prototype.ushrn=function(E){return this.clone().iushrn(E)},f.prototype.testn=function(E){b(typeof E=="number"&&E>=0);var A=E%26,z=(E-A)/26,W=1<=0);var A=E%26,z=(E-A)/26;if(b(this.negative===0,"imaskn works only with positive numbers"),this.length<=z)return this;if(A!==0&&z++,this.length=Math.min(z,this.length),A!==0){var W=67108863^67108863>>>A<=67108864;A++)this.words[A]-=67108864,A===this.length-1?this.words[A+1]=1:this.words[A+1]++;return this.length=Math.max(this.length,A+1),this},f.prototype.isubn=function(E){if(b(typeof E=="number"),b(E<67108864),E<0)return this.iaddn(-E);if(this.negative!==0)return this.negative=0,this.iaddn(E),this.negative=1,this;if(this.words[0]-=E,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var A=0;A>26)-(j/67108864|0),this.words[$+z]=U&67108863}for(;$>26,this.words[$+z]=U&67108863;if(I===0)return this._strip();for(b(I===-1),I=0,$=0;$>26,this.words[$]=U&67108863;return this.negative=1,this._strip()},f.prototype._wordDiv=function(E,A){var z=this.length-E.length,W=this.clone(),$=E,U=$.words[$.length-1]|0,I=this._countBits(U);z=26-I,z!==0&&($=$.ushln(z),W.iushln(z),U=$.words[$.length-1]|0);var j=W.length-$.length,B;if(A!=="mod"){B=new f(null),B.length=j+1,B.words=new Array(B.length);for(var V=0;V=0;ie--){var ce=(W.words[$.length+ie]|0)*67108864+(W.words[$.length+ie-1]|0);for(ce=Math.min(ce/U|0,67108863),W._ishlnsubmul($,ce,ie);W.negative!==0;)ce--,W.negative=0,W._ishlnsubmul($,1,ie),W.isZero()||(W.negative^=1);B&&(B.words[ie]=ce)}return B&&B._strip(),W._strip(),A!=="div"&&z!==0&&W.iushrn(z),{div:B||null,mod:W}},f.prototype.divmod=function(E,A,z){if(b(!E.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var W,$,U;return this.negative!==0&&E.negative===0?(U=this.neg().divmod(E,A),A!=="mod"&&(W=U.div.neg()),A!=="div"&&($=U.mod.neg(),z&&$.negative!==0&&$.iadd(E)),{div:W,mod:$}):this.negative===0&&E.negative!==0?(U=this.divmod(E.neg(),A),A!=="mod"&&(W=U.div.neg()),{div:W,mod:U.mod}):this.negative&E.negative?(U=this.neg().divmod(E.neg(),A),A!=="div"&&($=U.mod.neg(),z&&$.negative!==0&&$.isub(E)),{div:U.div,mod:$}):E.length>this.length||this.cmp(E)<0?{div:new f(0),mod:this}:E.length===1?A==="div"?{div:this.divn(E.words[0]),mod:null}:A==="mod"?{div:null,mod:new f(this.modrn(E.words[0]))}:{div:this.divn(E.words[0]),mod:new f(this.modrn(E.words[0]))}:this._wordDiv(E,A)},f.prototype.div=function(E){return this.divmod(E,"div",!1).div},f.prototype.mod=function(E){return this.divmod(E,"mod",!1).mod},f.prototype.umod=function(E){return this.divmod(E,"mod",!0).mod},f.prototype.divRound=function(E){var A=this.divmod(E);if(A.mod.isZero())return A.div;var z=A.div.negative!==0?A.mod.isub(E):A.mod,W=E.ushrn(1),$=E.andln(1),U=z.cmp(W);return U<0||$===1&&U===0?A.div:A.div.negative!==0?A.div.isubn(1):A.div.iaddn(1)},f.prototype.modrn=function(E){var A=E<0;A&&(E=-E),b(E<=67108863);for(var z=(1<<26)%E,W=0,$=this.length-1;$>=0;$--)W=(z*W+(this.words[$]|0))%E;return A?-W:W},f.prototype.modn=function(E){return this.modrn(E)},f.prototype.idivn=function(E){var A=E<0;A&&(E=-E),b(E<=67108863);for(var z=0,W=this.length-1;W>=0;W--){var $=(this.words[W]|0)+z*67108864;this.words[W]=$/E|0,z=$%E}return this._strip(),A?this.ineg():this},f.prototype.divn=function(E){return this.clone().idivn(E)},f.prototype.egcd=function(E){b(E.negative===0),b(!E.isZero());var A=this,z=E.clone();A.negative!==0?A=A.umod(E):A=A.clone();for(var W=new f(1),$=new f(0),U=new f(0),I=new f(1),j=0;A.isEven()&&z.isEven();)A.iushrn(1),z.iushrn(1),++j;for(var B=z.clone(),V=A.clone();!A.isZero();){for(var te=0,ie=1;!(A.words[0]&ie)&&te<26;++te,ie<<=1);if(te>0)for(A.iushrn(te);te-- >0;)(W.isOdd()||$.isOdd())&&(W.iadd(B),$.isub(V)),W.iushrn(1),$.iushrn(1);for(var ce=0,be=1;!(z.words[0]&be)&&ce<26;++ce,be<<=1);if(ce>0)for(z.iushrn(ce);ce-- >0;)(U.isOdd()||I.isOdd())&&(U.iadd(B),I.isub(V)),U.iushrn(1),I.iushrn(1);A.cmp(z)>=0?(A.isub(z),W.isub(U),$.isub(I)):(z.isub(A),U.isub(W),I.isub($))}return{a:U,b:I,gcd:z.iushln(j)}},f.prototype._invmp=function(E){b(E.negative===0),b(!E.isZero());var A=this,z=E.clone();A.negative!==0?A=A.umod(E):A=A.clone();for(var W=new f(1),$=new f(0),U=z.clone();A.cmpn(1)>0&&z.cmpn(1)>0;){for(var I=0,j=1;!(A.words[0]&j)&&I<26;++I,j<<=1);if(I>0)for(A.iushrn(I);I-- >0;)W.isOdd()&&W.iadd(U),W.iushrn(1);for(var B=0,V=1;!(z.words[0]&V)&&B<26;++B,V<<=1);if(B>0)for(z.iushrn(B);B-- >0;)$.isOdd()&&$.iadd(U),$.iushrn(1);A.cmp(z)>=0?(A.isub(z),W.isub($)):(z.isub(A),$.isub(W))}var te;return A.cmpn(1)===0?te=W:te=$,te.cmpn(0)<0&&te.iadd(E),te},f.prototype.gcd=function(E){if(this.isZero())return E.abs();if(E.isZero())return this.abs();var A=this.clone(),z=E.clone();A.negative=0,z.negative=0;for(var W=0;A.isEven()&&z.isEven();W++)A.iushrn(1),z.iushrn(1);do{for(;A.isEven();)A.iushrn(1);for(;z.isEven();)z.iushrn(1);var $=A.cmp(z);if($<0){var U=A;A=z,z=U}else if($===0||z.cmpn(1)===0)break;A.isub(z)}while(!0);return z.iushln(W)},f.prototype.invm=function(E){return this.egcd(E).a.umod(E)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(E){return this.words[0]&E},f.prototype.bincn=function(E){b(typeof E=="number");var A=E%26,z=(E-A)/26,W=1<>>26,I&=67108863,this.words[U]=I}return $!==0&&(this.words[U]=$,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(E){var A=E<0;if(this.negative!==0&&!A)return-1;if(this.negative===0&&A)return 1;this._strip();var z;if(this.length>1)z=1;else{A&&(E=-E),b(E<=67108863,"Number is too big");var W=this.words[0]|0;z=W===E?0:WE.length)return 1;if(this.length=0;z--){var W=this.words[z]|0,$=E.words[z]|0;if(W!==$){W<$?A=-1:W>$&&(A=1);break}}return A},f.prototype.gtn=function(E){return this.cmpn(E)===1},f.prototype.gt=function(E){return this.cmp(E)===1},f.prototype.gten=function(E){return this.cmpn(E)>=0},f.prototype.gte=function(E){return this.cmp(E)>=0},f.prototype.ltn=function(E){return this.cmpn(E)===-1},f.prototype.lt=function(E){return this.cmp(E)===-1},f.prototype.lten=function(E){return this.cmpn(E)<=0},f.prototype.lte=function(E){return this.cmp(E)<=0},f.prototype.eqn=function(E){return this.cmpn(E)===0},f.prototype.eq=function(E){return this.cmp(E)===0},f.red=function(E){return new D(E)},f.prototype.toRed=function(E){return b(!this.red,"Already a number in reduction context"),b(this.negative===0,"red works only with positives"),E.convertTo(this)._forceRed(E)},f.prototype.fromRed=function(){return b(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(E){return this.red=E,this},f.prototype.forceRed=function(E){return b(!this.red,"Already a number in reduction context"),this._forceRed(E)},f.prototype.redAdd=function(E){return b(this.red,"redAdd works only with red numbers"),this.red.add(this,E)},f.prototype.redIAdd=function(E){return b(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,E)},f.prototype.redSub=function(E){return b(this.red,"redSub works only with red numbers"),this.red.sub(this,E)},f.prototype.redISub=function(E){return b(this.red,"redISub works only with red numbers"),this.red.isub(this,E)},f.prototype.redShl=function(E){return b(this.red,"redShl works only with red numbers"),this.red.shl(this,E)},f.prototype.redMul=function(E){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,E),this.red.mul(this,E)},f.prototype.redIMul=function(E){return b(this.red,"redMul works only with red numbers"),this.red._verify2(this,E),this.red.imul(this,E)},f.prototype.redSqr=function(){return b(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return b(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return b(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return b(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return b(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(E){return b(this.red&&!E.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,E)};var O={k256:null,p224:null,p192:null,p25519:null};function C(P,E){this.name=P,this.p=new f(E,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}C.prototype._tmp=function(){var E=new f(null);return E.words=new Array(Math.ceil(this.n/13)),E},C.prototype.ireduce=function(E){var A=E,z;do this.split(A,this.tmp),A=this.imulK(A),A=A.iadd(this.tmp),z=A.bitLength();while(z>this.n);var W=z0?A.isub(this.p):A.strip!==void 0?A.strip():A._strip(),A},C.prototype.split=function(E,A){E.iushrn(this.n,0,A)},C.prototype.imulK=function(E){return E.imul(this.k)};function N(){C.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}w(N,C),N.prototype.split=function(E,A){for(var z=4194303,W=Math.min(E.length,9),$=0;$>>22,U=I}U>>>=22,E.words[$-10]=U,U===0&&E.length>10?E.length-=10:E.length-=9},N.prototype.imulK=function(E){E.words[E.length]=0,E.words[E.length+1]=0,E.length+=2;for(var A=0,z=0;z>>=26,E.words[z]=$,A=W}return A!==0&&(E.words[E.length++]=A),E},f._prime=function(E){if(O[E])return O[E];var A;if(E==="k256")A=new N;else if(E==="p224")A=new L;else if(E==="p192")A=new F;else if(E==="p25519")A=new M;else throw new Error("Unknown prime "+E);return O[E]=A,A};function D(P){if(typeof P=="string"){var E=f._prime(P);this.m=E.p,this.prime=E}else b(P.gtn(1),"modulus must be greater than 1"),this.m=P,this.prime=null}D.prototype._verify1=function(E){b(E.negative===0,"red works only with positives"),b(E.red,"red works only with red numbers")},D.prototype._verify2=function(E,A){b((E.negative|A.negative)===0,"red works only with positives"),b(E.red&&E.red===A.red,"red works only with red numbers")},D.prototype.imod=function(E){return this.prime?this.prime.ireduce(E)._forceRed(this):(d(E,E.umod(this.m)._forceRed(this)),E)},D.prototype.neg=function(E){return E.isZero()?E.clone():this.m.sub(E)._forceRed(this)},D.prototype.add=function(E,A){this._verify2(E,A);var z=E.add(A);return z.cmp(this.m)>=0&&z.isub(this.m),z._forceRed(this)},D.prototype.iadd=function(E,A){this._verify2(E,A);var z=E.iadd(A);return z.cmp(this.m)>=0&&z.isub(this.m),z},D.prototype.sub=function(E,A){this._verify2(E,A);var z=E.sub(A);return z.cmpn(0)<0&&z.iadd(this.m),z._forceRed(this)},D.prototype.isub=function(E,A){this._verify2(E,A);var z=E.isub(A);return z.cmpn(0)<0&&z.iadd(this.m),z},D.prototype.shl=function(E,A){return this._verify1(E),this.imod(E.ushln(A))},D.prototype.imul=function(E,A){return this._verify2(E,A),this.imod(E.imul(A))},D.prototype.mul=function(E,A){return this._verify2(E,A),this.imod(E.mul(A))},D.prototype.isqr=function(E){return this.imul(E,E.clone())},D.prototype.sqr=function(E){return this.mul(E,E)},D.prototype.sqrt=function(E){if(E.isZero())return E.clone();var A=this.m.andln(3);if(b(A%2===1),A===3){var z=this.m.add(new f(1)).iushrn(2);return this.pow(E,z)}for(var W=this.m.subn(1),$=0;!W.isZero()&&W.andln(1)===0;)$++,W.iushrn(1);b(!W.isZero());var U=new f(1).toRed(this),I=U.redNeg(),j=this.m.subn(1).iushrn(1),B=this.m.bitLength();for(B=new f(2*B*B).toRed(this);this.pow(B,j).cmp(I)!==0;)B.redIAdd(I);for(var V=this.pow(B,W),te=this.pow(E,W.addn(1).iushrn(1)),ie=this.pow(E,W),ce=$;ie.cmp(U)!==0;){for(var be=ie,_e=0;be.cmp(U)!==0;_e++)be=be.redSqr();b(_e=0;$--){for(var V=A.words[$],te=B-1;te>=0;te--){var ie=V>>te&1;if(U!==W[0]&&(U=this.sqr(U)),ie===0&&I===0){j=0;continue}I<<=1,I|=ie,j++,!(j!==z&&($!==0||te!==0))&&(U=this.mul(U,W[I]),j=0,I=0)}B=26}return U},D.prototype.convertTo=function(E){var A=E.umod(this.m);return A===E?A.clone():A},D.prototype.convertFrom=function(E){var A=E.clone();return A.red=null,A},f.mont=function(E){return new R(E)};function R(P){D.call(this,P),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w(R,D),R.prototype.convertTo=function(E){return this.imod(E.ushln(this.shift))},R.prototype.convertFrom=function(E){var A=this.imod(E.mul(this.rinv));return A.red=null,A},R.prototype.imul=function(E,A){if(E.isZero()||A.isZero())return E.words[0]=0,E.length=1,E;var z=E.imul(A),W=z.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),$=z.isub(W).iushrn(this.shift),U=$;return $.cmp(this.m)>=0?U=$.isub(this.m):$.cmpn(0)<0&&(U=$.iadd(this.m)),U._forceRed(this)},R.prototype.mul=function(E,A){if(E.isZero()||A.isZero())return new f(0)._forceRed(this);var z=E.mul(A),W=z.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),$=z.isub(W).iushrn(this.shift),U=$;return $.cmp(this.m)>=0?U=$.isub(this.m):$.cmpn(0)<0&&(U=$.iadd(this.m)),U._forceRed(this)},R.prototype.invm=function(E){var A=this.imod(E._invmp(this.m).mul(this.r2));return A._forceRed(this)}})(typeof S>"u"||S,void 0)},{buffer:185}],184:[function(e,S,_){function u(w){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(y){return typeof y}:u=function(y){return y&&typeof Symbol=="function"&&y.constructor===Symbol&&y!==Symbol.prototype?"symbol":typeof y},u(w)}var m;S.exports=function(f){return m||(m=new g(null)),m.generate(f)};function g(w){this.rand=w}if(S.exports.Rand=g,g.prototype.generate=function(f){return this._rand(f)},g.prototype._rand=function(f){if(this.rand.getBytes)return this.rand.getBytes(f);for(var y=new Uint8Array(f),h=0;h"u"?"undefined":u(self))==="object")self.crypto&&self.crypto.getRandomValues?g.prototype._rand=function(f){var y=new Uint8Array(f);return self.crypto.getRandomValues(y),y}:self.msCrypto&&self.msCrypto.getRandomValues?g.prototype._rand=function(f){var y=new Uint8Array(f);return self.msCrypto.getRandomValues(y),y}:(typeof window>"u"?"undefined":u(window))==="object"&&(g.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var b=e("crypto");if(typeof b.randomBytes!="function")throw new Error("Not supported");g.prototype._rand=function(f){return b.randomBytes(f)}}catch{}},{crypto:185}],185:[function(e,S,_){},{}],186:[function(e,S,_){var u=e("safe-buffer").Buffer;function m(h){u.isBuffer(h)||(h=u.from(h));for(var l=h.length/4|0,d=new Array(l),s=0;s>>24]^a[n>>>16&255]^r[o>>>8&255]^t[p&255]^l[F++],C=c[n>>>24]^a[o>>>16&255]^r[p>>>8&255]^t[i&255]^l[F++],N=c[o>>>24]^a[p>>>16&255]^r[i>>>8&255]^t[n&255]^l[F++],L=c[p>>>24]^a[i>>>16&255]^r[n>>>8&255]^t[o&255]^l[F++],i=O,n=C,o=N,p=L;return O=(s[i>>>24]<<24|s[n>>>16&255]<<16|s[o>>>8&255]<<8|s[p&255])^l[F++],C=(s[n>>>24]<<24|s[o>>>16&255]<<16|s[p>>>8&255]<<8|s[i&255])^l[F++],N=(s[o>>>24]<<24|s[p>>>16&255]<<16|s[i>>>8&255]<<8|s[n&255])^l[F++],L=(s[p>>>24]<<24|s[i>>>16&255]<<16|s[n>>>8&255]<<8|s[o&255])^l[F++],O=O>>>0,C=C>>>0,N=N>>>0,L=L>>>0,[O,C,N,L]}var w=[0,1,2,4,8,16,32,64,128,27,54],f=function(){for(var h=new Array(256),l=0;l<256;l++)l<128?h[l]=l<<1:h[l]=l<<1^283;for(var d=[],s=[],v=[[],[],[],[]],c=[[],[],[],[]],a=0,r=0,t=0;t<256;++t){var i=r^r<<1^r<<2^r<<3^r<<4;i=i>>>8^i&255^99,d[a]=i,s[i]=a;var n=h[a],o=h[n],p=h[o],O=h[i]*257^i*16843008;v[0][a]=O<<24|O>>>8,v[1][a]=O<<16|O>>>16,v[2][a]=O<<8|O>>>24,v[3][a]=O,O=p*16843009^o*65537^n*257^a*16843008,c[0][i]=O<<24|O>>>8,c[1][i]=O<<16|O>>>16,c[2][i]=O<<8|O>>>24,c[3][i]=O,a===0?a=r=1:(a=n^h[h[h[p^n]]],r^=h[h[r]])}return{SBOX:d,INV_SBOX:s,SUB_MIX:v,INV_SUB_MIX:c}}();function y(h){this._key=m(h),this._reset()}y.blockSize=4*4,y.keySize=256/8,y.prototype.blockSize=y.blockSize,y.prototype.keySize=y.keySize,y.prototype._reset=function(){for(var h=this._key,l=h.length,d=l+6,s=(d+1)*4,v=[],c=0;c>>24,a=f.SBOX[a>>>24]<<24|f.SBOX[a>>>16&255]<<16|f.SBOX[a>>>8&255]<<8|f.SBOX[a&255],a^=w[c/l|0]<<24):l>6&&c%l===4&&(a=f.SBOX[a>>>24]<<24|f.SBOX[a>>>16&255]<<16|f.SBOX[a>>>8&255]<<8|f.SBOX[a&255]),v[c]=v[c-l]^a}for(var r=[],t=0;t>>24]]^f.INV_SUB_MIX[1][f.SBOX[n>>>16&255]]^f.INV_SUB_MIX[2][f.SBOX[n>>>8&255]]^f.INV_SUB_MIX[3][f.SBOX[n&255]]}this._nRounds=d,this._keySchedule=v,this._invKeySchedule=r},y.prototype.encryptBlockRaw=function(h){return h=m(h),b(h,this._keySchedule,f.SUB_MIX,f.SBOX,this._nRounds)},y.prototype.encryptBlock=function(h){var l=this.encryptBlockRaw(h),d=u.allocUnsafe(16);return d.writeUInt32BE(l[0],0),d.writeUInt32BE(l[1],4),d.writeUInt32BE(l[2],8),d.writeUInt32BE(l[3],12),d},y.prototype.decryptBlock=function(h){h=m(h);var l=h[1];h[1]=h[3],h[3]=l;var d=b(h,this._invKeySchedule,f.INV_SUB_MIX,f.INV_SBOX,this._nRounds),s=u.allocUnsafe(16);return s.writeUInt32BE(d[0],0),s.writeUInt32BE(d[3],4),s.writeUInt32BE(d[2],8),s.writeUInt32BE(d[1],12),s},y.prototype.scrub=function(){g(this._keySchedule),g(this._invKeySchedule),g(this._key)},S.exports.AES=y},{"safe-buffer":494}],187:[function(e,S,_){var u=e("./aes"),m=e("safe-buffer").Buffer,g=e("cipher-base"),b=e("inherits"),w=e("./ghash"),f=e("buffer-xor"),y=e("./incr32");function h(s,v){var c=0;s.length!==v.length&&c++;for(var a=Math.min(s.length,v.length),r=0;r16)return r=this.cache.slice(0,16),this.cache=this.cache.slice(16),r}else if(this.cache.length>=16)return r=this.cache.slice(0,16),this.cache=this.cache.slice(16),r;return null},d.prototype.flush=function(){if(this.cache.length)return this.cache};function s(a){var r=a[15];if(r<1||r>16)throw new Error("unable to decrypt data");for(var t=-1;++t15){var a=this.cache.slice(0,16);return this.cache=this.cache.slice(16),a}return null},s.prototype.flush=function(){for(var a=16-this.cache.length,r=g.allocUnsafe(a),t=-1;++t>>0,0),y.writeUInt32BE(f[1]>>>0,4),y.writeUInt32BE(f[2]>>>0,8),y.writeUInt32BE(f[3]>>>0,12),y}function w(f){this.h=f,this.state=u.alloc(16,0),this.cache=u.allocUnsafe(0)}w.prototype.ghash=function(f){for(var y=-1;++y0;h--)f[h]=f[h]>>>1|(f[h-1]&1)<<31;f[0]=f[0]>>>1,d&&(f[0]=f[0]^225<<24)}this.state=b(y)},w.prototype.update=function(f){this.cache=u.concat([this.cache,f]);for(var y;this.cache.length>=16;)y=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(y)},w.prototype.final=function(f,y){return this.cache.length&&this.ghash(u.concat([this.cache,m],16)),this.ghash(b([0,f,0,y])),this.state},S.exports=w},{"safe-buffer":494}],192:[function(e,S,_){function u(m){for(var g=m.length,b;g--;)if(b=m.readUInt8(g),b===255)m.writeUInt8(0,g);else{b++,m.writeUInt8(b,g);break}}S.exports=u},{}],193:[function(e,S,_){var u=e("buffer-xor");_.encrypt=function(m,g){var b=u(g,m._prev);return m._prev=m._cipher.encryptBlock(b),m._prev},_.decrypt=function(m,g){var b=m._prev;m._prev=g;var w=m._cipher.decryptBlock(g);return u(w,b)}},{"buffer-xor":217}],194:[function(e,S,_){var u=e("safe-buffer").Buffer,m=e("buffer-xor");function g(b,w,f){var y=w.length,h=m(w,b._cache);return b._cache=b._cache.slice(y),b._prev=u.concat([b._prev,f?w:h]),h}_.encrypt=function(b,w,f){for(var y=u.allocUnsafe(0),h;w.length;)if(b._cache.length===0&&(b._cache=b._cipher.encryptBlock(b._prev),b._prev=u.allocUnsafe(0)),b._cache.length<=w.length)h=b._cache.length,y=u.concat([y,g(b,w.slice(0,h),f)]),w=w.slice(h);else{y=u.concat([y,g(b,w,f)]);break}return y}},{"buffer-xor":217,"safe-buffer":494}],195:[function(e,S,_){var u=e("safe-buffer").Buffer;function m(b,w,f){for(var y,h=-1,l=8,d=0,s,v;++h>h%8,b._prev=g(b._prev,f?s:v);return d}function g(b,w){var f=b.length,y=-1,h=u.allocUnsafe(b.length);for(b=u.concat([b,u.from([w])]);++y>7;return h}_.encrypt=function(b,w,f){for(var y=w.length,h=u.allocUnsafe(y),l=-1;++l=0||!l.umod(y.prime1)||!l.umod(y.prime2);)l=new m(g(h));return l}}).call(this,e("buffer").Buffer)},{"bn.js":207,buffer:216,randombytes:475}],207:[function(e,S,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],208:[function(e,S,_){S.exports=e("./browser/algorithms.json")},{"./browser/algorithms.json":209}],209:[function(e,S,_){S.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},{}],210:[function(e,S,_){S.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},{}],211:[function(e,S,_){var u=e("safe-buffer").Buffer,m=e("create-hash"),g=e("readable-stream"),b=e("inherits"),w=e("./sign"),f=e("./verify"),y=e("./algorithms.json");Object.keys(y).forEach(function(v){y[v].id=u.from(y[v].id,"hex"),y[v.toLowerCase()]=y[v]});function h(v){g.Writable.call(this);var c=y[v];if(!c)throw new Error("Unknown message digest");this._hashType=c.hash,this._hash=m(c.hash),this._tag=c.id,this._signType=c.sign}b(h,g.Writable),h.prototype._write=function(c,a,r){this._hash.update(c),r()},h.prototype.update=function(c,a){return typeof c=="string"&&(c=u.from(c,a)),this._hash.update(c),this},h.prototype.sign=function(c,a){this.end();var r=this._hash.digest(),t=w(r,c,this._hashType,this._signType,this._tag);return a?t.toString(a):t};function l(v){g.Writable.call(this);var c=y[v];if(!c)throw new Error("Unknown message digest");this._hash=m(c.hash),this._tag=c.id,this._signType=c.sign}b(l,g.Writable),l.prototype._write=function(c,a,r){this._hash.update(c),r()},l.prototype.update=function(c,a){return typeof c=="string"&&(c=u.from(c,a)),this._hash.update(c),this},l.prototype.verify=function(c,a,r){typeof a=="string"&&(a=u.from(a,r)),this.end();var t=this._hash.digest();return f(a,t,c,this._signType,this._tag)};function d(v){return new h(v)}function s(v){return new l(v)}S.exports={Sign:d,Verify:s,createSign:d,createVerify:s}},{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,inherits:387,"readable-stream":491,"safe-buffer":214}],212:[function(e,S,_){var u=e("safe-buffer").Buffer,m=e("create-hmac"),g=e("browserify-rsa"),b=e("elliptic").ec,w=e("bn.js"),f=e("parse-asn1"),y=e("./curves.json");function h(i,n,o,p,O){var C=f(n);if(C.curve){if(p!=="ecdsa"&&p!=="ecdsa/rsa")throw new Error("wrong private key type");return l(i,C)}else if(C.type==="dsa"){if(p!=="dsa")throw new Error("wrong private key type");return d(i,C,o)}else if(p!=="rsa"&&p!=="ecdsa/rsa")throw new Error("wrong private key type");i=u.concat([O,i]);for(var N=C.modulus.byteLength(),L=[0,1];i.length+L.length+10&&o.ishrn(p),o}function a(i,n){i=c(i,n),i=i.mod(n);var o=u.from(i.toArray());if(o.length=s)throw new Error("invalid sig")}S.exports=f},{"./curves.json":210,"bn.js":183,elliptic:350,"parse-asn1":459,"safe-buffer":214}],214:[function(e,S,_){/*! safe-buffer. MIT License. Feross Aboukhadijeh */var u=e("buffer"),m=u.Buffer;function g(w,f){for(var y in w)f[y]=w[y]}m.from&&m.alloc&&m.allocUnsafe&&m.allocUnsafeSlow?S.exports=u:(g(u,_),_.Buffer=b);function b(w,f,y){return m(w,f,y)}b.prototype=Object.create(m.prototype),g(m,b),b.from=function(w,f,y){if(typeof w=="number")throw new TypeError("Argument must not be a number");return m(w,f,y)},b.alloc=function(w,f,y){if(typeof w!="number")throw new TypeError("Argument must be a number");var h=m(w);return f!==void 0?typeof y=="string"?h.fill(f,y):h.fill(f):h.fill(0),h},b.allocUnsafe=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return m(w)},b.allocUnsafeSlow=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return u.SlowBuffer(w)}},{buffer:216}],215:[function(e,S,_){arguments[4][185][0].apply(_,arguments)},{dup:185}],216:[function(e,S,_){(function(h){function m(q){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(Z){return typeof Z}:m=function(Z){return Z&&typeof Symbol=="function"&&Z.constructor===Symbol&&Z!==Symbol.prototype?"symbol":typeof Z},m(q)}var g=e("base64-js"),b=e("ieee754");_.Buffer=h,_.SlowBuffer=n,_.INSPECT_MAX_BYTES=50;var w=2147483647;_.kMaxLength=w,h.TYPED_ARRAY_SUPPORT=f(),!h.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function f(){try{var q=new Uint8Array(1);return q.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},q.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function y(q){if(q>w)throw new RangeError('The value "'+q+'" is invalid for option "size"');var G=new Uint8Array(q);return G.__proto__=h.prototype,G}function h(q,G,Z){if(typeof q=="number"){if(typeof G=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return v(q)}return l(q,G,Z)}typeof Symbol<"u"&&Symbol.species!=null&&h[Symbol.species]===h&&Object.defineProperty(h,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),h.poolSize=8192;function l(q,G,Z){if(typeof q=="string")return c(q,G);if(ArrayBuffer.isView(q))return a(q);if(q==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(q));if(se(q,ArrayBuffer)||q&&se(q.buffer,ArrayBuffer))return r(q,G,Z);if(typeof q=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var fe=q.valueOf&&q.valueOf();if(fe!=null&&fe!==q)return h.from(fe,G,Z);var we=t(q);if(we)return we;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof q[Symbol.toPrimitive]=="function")return h.from(q[Symbol.toPrimitive]("string"),G,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(q))}h.from=function(q,G,Z){return l(q,G,Z)},h.prototype.__proto__=Uint8Array.prototype,h.__proto__=Uint8Array;function d(q){if(typeof q!="number")throw new TypeError('"size" argument must be of type number');if(q<0)throw new RangeError('The value "'+q+'" is invalid for option "size"')}function s(q,G,Z){return d(q),q<=0?y(q):G!==void 0?typeof Z=="string"?y(q).fill(G,Z):y(q).fill(G):y(q)}h.alloc=function(q,G,Z){return s(q,G,Z)};function v(q){return d(q),y(q<0?0:i(q)|0)}h.allocUnsafe=function(q){return v(q)},h.allocUnsafeSlow=function(q){return v(q)};function c(q,G){if((typeof G!="string"||G==="")&&(G="utf8"),!h.isEncoding(G))throw new TypeError("Unknown encoding: "+G);var Z=o(q,G)|0,fe=y(Z),we=fe.write(q,G);return we!==Z&&(fe=fe.slice(0,we)),fe}function a(q){for(var G=q.length<0?0:i(q.length)|0,Z=y(G),fe=0;fe=w)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+w.toString(16)+" bytes");return q|0}function n(q){return+q!=q&&(q=0),h.alloc(+q)}h.isBuffer=function(G){return G!=null&&G._isBuffer===!0&&G!==h.prototype},h.compare=function(G,Z){if(se(G,Uint8Array)&&(G=h.from(G,G.offset,G.byteLength)),se(Z,Uint8Array)&&(Z=h.from(Z,Z.offset,Z.byteLength)),!h.isBuffer(G)||!h.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(G===Z)return 0;for(var fe=G.length,we=Z.length,ge=0,je=Math.min(fe,we);ge2&&arguments[2]===!0;if(!fe&&Z===0)return 0;for(var we=!1;;)switch(G){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return J(q).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z*2;case"hex":return Z>>>1;case"base64":return ke(q).length;default:if(we)return fe?-1:J(q).length;G=(""+G).toLowerCase(),we=!0}}h.byteLength=o;function p(q,G,Z){var fe=!1;if((G===void 0||G<0)&&(G=0),G>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0,G>>>=0,Z<=G))return"";for(q||(q="utf8");;)switch(q){case"hex":return I(this,G,Z);case"utf8":case"utf-8":return A(this,G,Z);case"ascii":return $(this,G,Z);case"latin1":case"binary":return U(this,G,Z);case"base64":return E(this,G,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,G,Z);default:if(fe)throw new TypeError("Unknown encoding: "+q);q=(q+"").toLowerCase(),fe=!0}}h.prototype._isBuffer=!0;function O(q,G,Z){var fe=q[G];q[G]=q[Z],q[Z]=fe}h.prototype.swap16=function(){var G=this.length;if(G%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Z=0;ZZ&&(G+=" ... "),""},h.prototype.compare=function(G,Z,fe,we,ge){if(se(G,Uint8Array)&&(G=h.from(G,G.offset,G.byteLength)),!h.isBuffer(G))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+m(G));if(Z===void 0&&(Z=0),fe===void 0&&(fe=G?G.length:0),we===void 0&&(we=0),ge===void 0&&(ge=this.length),Z<0||fe>G.length||we<0||ge>this.length)throw new RangeError("out of range index");if(we>=ge&&Z>=fe)return 0;if(we>=ge)return-1;if(Z>=fe)return 1;if(Z>>>=0,fe>>>=0,we>>>=0,ge>>>=0,this===G)return 0;for(var je=ge-we,Ze=fe-Z,nt=Math.min(je,Ze),ut=this.slice(we,ge),ot=G.slice(Z,fe),Ue=0;Ue2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Z=+Z,Ce(Z)&&(Z=we?0:q.length-1),Z<0&&(Z=q.length+Z),Z>=q.length){if(we)return-1;Z=q.length-1}else if(Z<0)if(we)Z=0;else return-1;if(typeof G=="string"&&(G=h.from(G,fe)),h.isBuffer(G))return G.length===0?-1:N(q,G,Z,fe,we);if(typeof G=="number")return G=G&255,typeof Uint8Array.prototype.indexOf=="function"?we?Uint8Array.prototype.indexOf.call(q,G,Z):Uint8Array.prototype.lastIndexOf.call(q,G,Z):N(q,[G],Z,fe,we);throw new TypeError("val must be string, number or Buffer")}function N(q,G,Z,fe,we){var ge=1,je=q.length,Ze=G.length;if(fe!==void 0&&(fe=String(fe).toLowerCase(),fe==="ucs2"||fe==="ucs-2"||fe==="utf16le"||fe==="utf-16le")){if(q.length<2||G.length<2)return-1;ge=2,je/=2,Ze/=2,Z/=2}function nt(Qe,tt){return ge===1?Qe[tt]:Qe.readUInt16BE(tt*ge)}var ut;if(we){var ot=-1;for(ut=Z;utje&&(Z=je-Ze),ut=Z;ut>=0;ut--){for(var Ue=!0,Ve=0;Vewe&&(fe=we)):fe=we;var ge=G.length;fe>ge/2&&(fe=ge/2);for(var je=0;je>>0,isFinite(fe)?(fe=fe>>>0,we===void 0&&(we="utf8")):(we=fe,fe=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var ge=this.length-Z;if((fe===void 0||fe>ge)&&(fe=ge),G.length>0&&(fe<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");we||(we="utf8");for(var je=!1;;)switch(we){case"hex":return L(this,G,Z,fe);case"utf8":case"utf-8":return F(this,G,Z,fe);case"ascii":return M(this,G,Z,fe);case"latin1":case"binary":return D(this,G,Z,fe);case"base64":return R(this,G,Z,fe);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,G,Z,fe);default:if(je)throw new TypeError("Unknown encoding: "+we);we=(""+we).toLowerCase(),je=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function E(q,G,Z){return G===0&&Z===q.length?g.fromByteArray(q):g.fromByteArray(q.slice(G,Z))}function A(q,G,Z){Z=Math.min(q.length,Z);for(var fe=[],we=G;we239?4:ge>223?3:ge>191?2:1;if(we+Ze<=Z){var nt,ut,ot,Ue;switch(Ze){case 1:ge<128&&(je=ge);break;case 2:nt=q[we+1],(nt&192)===128&&(Ue=(ge&31)<<6|nt&63,Ue>127&&(je=Ue));break;case 3:nt=q[we+1],ut=q[we+2],(nt&192)===128&&(ut&192)===128&&(Ue=(ge&15)<<12|(nt&63)<<6|ut&63,Ue>2047&&(Ue<55296||Ue>57343)&&(je=Ue));break;case 4:nt=q[we+1],ut=q[we+2],ot=q[we+3],(nt&192)===128&&(ut&192)===128&&(ot&192)===128&&(Ue=(ge&15)<<18|(nt&63)<<12|(ut&63)<<6|ot&63,Ue>65535&&Ue<1114112&&(je=Ue))}}je===null?(je=65533,Ze=1):je>65535&&(je-=65536,fe.push(je>>>10&1023|55296),je=56320|je&1023),fe.push(je),we+=Ze}return W(fe)}var z=4096;function W(q){var G=q.length;if(G<=z)return String.fromCharCode.apply(String,q);for(var Z="",fe=0;fefe)&&(Z=fe);for(var we="",ge=G;gefe&&(G=fe),Z<0?(Z+=fe,Z<0&&(Z=0)):Z>fe&&(Z=fe),ZZ)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUIntLE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G],ge=1,je=0;++je>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G+--Z],ge=1;Z>0&&(ge*=256);)we+=this[G+--Z]*ge;return we},h.prototype.readUInt8=function(G,Z){return G=G>>>0,Z||B(G,1,this.length),this[G]},h.prototype.readUInt16LE=function(G,Z){return G=G>>>0,Z||B(G,2,this.length),this[G]|this[G+1]<<8},h.prototype.readUInt16BE=function(G,Z){return G=G>>>0,Z||B(G,2,this.length),this[G]<<8|this[G+1]},h.prototype.readUInt32LE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),(this[G]|this[G+1]<<8|this[G+2]<<16)+this[G+3]*16777216},h.prototype.readUInt32BE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]*16777216+(this[G+1]<<16|this[G+2]<<8|this[G+3])},h.prototype.readIntLE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=this[G],ge=1,je=0;++je=ge&&(we-=Math.pow(2,8*Z)),we},h.prototype.readIntBE=function(G,Z,fe){G=G>>>0,Z=Z>>>0,fe||B(G,Z,this.length);for(var we=Z,ge=1,je=this[G+--we];we>0&&(ge*=256);)je+=this[G+--we]*ge;return ge*=128,je>=ge&&(je-=Math.pow(2,8*Z)),je},h.prototype.readInt8=function(G,Z){return G=G>>>0,Z||B(G,1,this.length),this[G]&128?(255-this[G]+1)*-1:this[G]},h.prototype.readInt16LE=function(G,Z){G=G>>>0,Z||B(G,2,this.length);var fe=this[G]|this[G+1]<<8;return fe&32768?fe|4294901760:fe},h.prototype.readInt16BE=function(G,Z){G=G>>>0,Z||B(G,2,this.length);var fe=this[G+1]|this[G]<<8;return fe&32768?fe|4294901760:fe},h.prototype.readInt32LE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]|this[G+1]<<8|this[G+2]<<16|this[G+3]<<24},h.prototype.readInt32BE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),this[G]<<24|this[G+1]<<16|this[G+2]<<8|this[G+3]},h.prototype.readFloatLE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),b.read(this,G,!0,23,4)},h.prototype.readFloatBE=function(G,Z){return G=G>>>0,Z||B(G,4,this.length),b.read(this,G,!1,23,4)},h.prototype.readDoubleLE=function(G,Z){return G=G>>>0,Z||B(G,8,this.length),b.read(this,G,!0,52,8)},h.prototype.readDoubleBE=function(G,Z){return G=G>>>0,Z||B(G,8,this.length),b.read(this,G,!1,52,8)};function V(q,G,Z,fe,we,ge){if(!h.isBuffer(q))throw new TypeError('"buffer" argument must be a Buffer instance');if(G>we||Gq.length)throw new RangeError("Index out of range")}h.prototype.writeUIntLE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,fe=fe>>>0,!we){var ge=Math.pow(2,8*fe)-1;V(this,G,Z,fe,ge,0)}var je=1,Ze=0;for(this[Z]=G&255;++Ze>>0,fe=fe>>>0,!we){var ge=Math.pow(2,8*fe)-1;V(this,G,Z,fe,ge,0)}var je=fe-1,Ze=1;for(this[Z+je]=G&255;--je>=0&&(Ze*=256);)this[Z+je]=G/Ze&255;return Z+fe},h.prototype.writeUInt8=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,1,255,0),this[Z]=G&255,Z+1},h.prototype.writeUInt16LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,65535,0),this[Z]=G&255,this[Z+1]=G>>>8,Z+2},h.prototype.writeUInt16BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,65535,0),this[Z]=G>>>8,this[Z+1]=G&255,Z+2},h.prototype.writeUInt32LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,4294967295,0),this[Z+3]=G>>>24,this[Z+2]=G>>>16,this[Z+1]=G>>>8,this[Z]=G&255,Z+4},h.prototype.writeUInt32BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,4294967295,0),this[Z]=G>>>24,this[Z+1]=G>>>16,this[Z+2]=G>>>8,this[Z+3]=G&255,Z+4},h.prototype.writeIntLE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,!we){var ge=Math.pow(2,8*fe-1);V(this,G,Z,fe,ge-1,-ge)}var je=0,Ze=1,nt=0;for(this[Z]=G&255;++je>0)-nt&255;return Z+fe},h.prototype.writeIntBE=function(G,Z,fe,we){if(G=+G,Z=Z>>>0,!we){var ge=Math.pow(2,8*fe-1);V(this,G,Z,fe,ge-1,-ge)}var je=fe-1,Ze=1,nt=0;for(this[Z+je]=G&255;--je>=0&&(Ze*=256);)G<0&&nt===0&&this[Z+je+1]!==0&&(nt=1),this[Z+je]=(G/Ze>>0)-nt&255;return Z+fe},h.prototype.writeInt8=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,1,127,-128),G<0&&(G=255+G+1),this[Z]=G&255,Z+1},h.prototype.writeInt16LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,32767,-32768),this[Z]=G&255,this[Z+1]=G>>>8,Z+2},h.prototype.writeInt16BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,2,32767,-32768),this[Z]=G>>>8,this[Z+1]=G&255,Z+2},h.prototype.writeInt32LE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,2147483647,-2147483648),this[Z]=G&255,this[Z+1]=G>>>8,this[Z+2]=G>>>16,this[Z+3]=G>>>24,Z+4},h.prototype.writeInt32BE=function(G,Z,fe){return G=+G,Z=Z>>>0,fe||V(this,G,Z,4,2147483647,-2147483648),G<0&&(G=4294967295+G+1),this[Z]=G>>>24,this[Z+1]=G>>>16,this[Z+2]=G>>>8,this[Z+3]=G&255,Z+4};function te(q,G,Z,fe,we,ge){if(Z+fe>q.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function ie(q,G,Z,fe,we){return G=+G,Z=Z>>>0,we||te(q,G,Z,4),b.write(q,G,Z,fe,23,4),Z+4}h.prototype.writeFloatLE=function(G,Z,fe){return ie(this,G,Z,!0,fe)},h.prototype.writeFloatBE=function(G,Z,fe){return ie(this,G,Z,!1,fe)};function ce(q,G,Z,fe,we){return G=+G,Z=Z>>>0,we||te(q,G,Z,8),b.write(q,G,Z,fe,52,8),Z+8}h.prototype.writeDoubleLE=function(G,Z,fe){return ce(this,G,Z,!0,fe)},h.prototype.writeDoubleBE=function(G,Z,fe){return ce(this,G,Z,!1,fe)},h.prototype.copy=function(G,Z,fe,we){if(!h.isBuffer(G))throw new TypeError("argument should be a Buffer");if(fe||(fe=0),!we&&we!==0&&(we=this.length),Z>=G.length&&(Z=G.length),Z||(Z=0),we>0&&we=this.length)throw new RangeError("Index out of range");if(we<0)throw new RangeError("sourceEnd out of bounds");we>this.length&&(we=this.length),G.length-Z=0;--je)G[je+Z]=this[je+fe];else Uint8Array.prototype.set.call(G,this.subarray(fe,we),Z);return ge},h.prototype.fill=function(G,Z,fe,we){if(typeof G=="string"){if(typeof Z=="string"?(we=Z,Z=0,fe=this.length):typeof fe=="string"&&(we=fe,fe=this.length),we!==void 0&&typeof we!="string")throw new TypeError("encoding must be a string");if(typeof we=="string"&&!h.isEncoding(we))throw new TypeError("Unknown encoding: "+we);if(G.length===1){var ge=G.charCodeAt(0);(we==="utf8"&&ge<128||we==="latin1")&&(G=ge)}}else typeof G=="number"&&(G=G&255);if(Z<0||this.length>>0,fe=fe===void 0?this.length:fe>>>0,G||(G=0);var je;if(typeof G=="number")for(je=Z;je55295&&Z<57344){if(!we){if(Z>56319){(G-=3)>-1&&ge.push(239,191,189);continue}else if(je+1===fe){(G-=3)>-1&&ge.push(239,191,189);continue}we=Z;continue}if(Z<56320){(G-=3)>-1&&ge.push(239,191,189),we=Z;continue}Z=(we-55296<<10|Z-56320)+65536}else we&&(G-=3)>-1&&ge.push(239,191,189);if(we=null,Z<128){if((G-=1)<0)break;ge.push(Z)}else if(Z<2048){if((G-=2)<0)break;ge.push(Z>>6|192,Z&63|128)}else if(Z<65536){if((G-=3)<0)break;ge.push(Z>>12|224,Z>>6&63|128,Z&63|128)}else if(Z<1114112){if((G-=4)<0)break;ge.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,Z&63|128)}else throw new Error("Invalid code point")}return ge}function Q(q){for(var G=[],Z=0;Z>8,we=Z%256,ge.push(we),ge.push(fe);return ge}function ke(q){return g.toByteArray(_e(q))}function re(q,G,Z,fe){for(var we=0;we=G.length||we>=q.length);++we)G[we+Z]=q[we];return we}function se(q,G){return q instanceof G||q!=null&&q.constructor!=null&&q.constructor.name!=null&&q.constructor.name===G.name}function Ce(q){return q!==q}}).call(this,e("buffer").Buffer)},{"base64-js":182,buffer:216,ieee754:385}],217:[function(e,S,_){(function(u){S.exports=function(g,b){for(var w=Math.min(g.length,b.length),f=new u(w),y=0;ys;)if(v=l[s++],v!=v)return!0}else for(;d>s;s++)if((w||s in l)&&l[s]===y)return w||s||0;return!w&&-1}};S.exports={includes:b(!0),indexOf:b(!1)}},{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(e,S,_){var u=e("../internals/function-bind-context"),m=e("../internals/indexed-object"),g=e("../internals/to-object"),b=e("../internals/to-length"),w=e("../internals/array-species-create"),f=[].push,y=function(h){var l=h==1,d=h==2,s=h==3,v=h==4,c=h==6,a=h==5||c;return function(r,t,i,n){for(var o=g(r),p=m(o),O=u(t,i,3),C=b(p.length),N=0,L=n||w,F=l?L(r,C):d?L(r,0):void 0,M,D;C>N;N++)if((a||N in p)&&(M=p[N],D=O(M,N,o),h)){if(l)F[N]=D;else if(D)switch(h){case 3:return!0;case 5:return M;case 6:return N;case 2:f.call(F,M)}else if(v)return!1}return c?-1:s||v?v:F}};S.exports={forEach:y(0),map:y(1),filter:y(2),some:y(3),every:y(4),find:y(5),findIndex:y(6)}},{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/has"),b=Object.defineProperty,w={},f=function(y){throw y};S.exports=function(y,h){if(g(w,y))return w[y];h||(h={});var l=[][y],d=g(h,"ACCESSORS")?h.ACCESSORS:!1,s=g(h,0)?h[0]:f,v=g(h,1)?h[1]:void 0;return w[y]=!!l&&!m(function(){if(d&&!u)return!0;var c={length:-1};d?b(c,1,{enumerable:!0,get:f}):c[1]=1,l.call(c,s,v)})}},{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(e,S,_){var u=e("../internals/is-object"),m=e("../internals/is-array"),g=e("../internals/well-known-symbol"),b=g("species");S.exports=function(w,f){var y;return m(w)&&(y=w.constructor,typeof y=="function"&&(y===Array||m(y.prototype))?y=void 0:u(y)&&(y=y[b],y===null&&(y=void 0))),new(y===void 0?Array:y)(f===0?0:f)}},{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(e,S,_){var u=e("../internals/an-object");S.exports=function(m,g,b,w){try{return w?g(u(b)[0],b[1]):g(b)}catch(y){var f=m.return;throw f!==void 0&&u(f.call(m)),y}}},{"../internals/an-object":223}],229:[function(e,S,_){var u=e("../internals/well-known-symbol"),m=u("iterator"),g=!1;try{var b=0,w={next:function(){return{done:!!b++}},return:function(){g=!0}};w[m]=function(){return this},Array.from(w,function(){throw 2})}catch{}S.exports=function(f,y){if(!y&&!g)return!1;var h=!1;try{var l={};l[m]=function(){return{next:function(){return{done:h=!0}}}},f(l)}catch{}return h}},{"../internals/well-known-symbol":314}],230:[function(e,S,_){var u={}.toString;S.exports=function(m){return u.call(m).slice(8,-1)}},{}],231:[function(e,S,_){var u=e("../internals/to-string-tag-support"),m=e("../internals/classof-raw"),g=e("../internals/well-known-symbol"),b=g("toStringTag"),w=m(function(){return arguments}())=="Arguments",f=function(y,h){try{return y[h]}catch{}};S.exports=u?m:function(y){var h,l,d;return y===void 0?"Undefined":y===null?"Null":typeof(l=f(h=Object(y),b))=="string"?l:w?m(h):(d=m(h))=="Object"&&typeof h.callee=="function"?"Arguments":d}},{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(e,S,_){var u=e("../internals/has"),m=e("../internals/own-keys"),g=e("../internals/object-get-own-property-descriptor"),b=e("../internals/object-define-property");S.exports=function(w,f){for(var y=m(f),h=b.f,l=g.f,d=0;d=74)&&(f=m.match(/Chrome\/(\d+)/),f&&(y=f[1]))),S.exports=y&&+y},{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(e,S,_){S.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},{}],246:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/object-get-own-property-descriptor").f,g=e("../internals/create-non-enumerable-property"),b=e("../internals/redefine"),w=e("../internals/set-global"),f=e("../internals/copy-constructor-properties"),y=e("../internals/is-forced");S.exports=function(h,l){var d=h.target,s=h.global,v=h.stat,c,a,r,t,i,n;if(s?a=u:v?a=u[d]||w(d,{}):a=(u[d]||{}).prototype,a)for(r in l){if(i=l[r],h.noTargetGet?(n=m(a,r),t=n&&n.value):t=a[r],c=y(s?r:d+(v?".":"#")+r,h.forced),!c&&t!==void 0){if(typeof i==typeof t)continue;f(i,t)}(h.sham||t&&t.sham)&&g(i,"sham",!0),b(a,r,i,h)}}},{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(e,S,_){S.exports=function(u){try{return!!u()}catch{return!0}}},{}],248:[function(e,S,_){var u=e("../internals/a-function");S.exports=function(m,g,b){if(u(m),g===void 0)return m;switch(b){case 0:return function(){return m.call(g)};case 1:return function(w){return m.call(g,w)};case 2:return function(w,f){return m.call(g,w,f)};case 3:return function(w,f,y){return m.call(g,w,f,y)}}return function(){return m.apply(g,arguments)}}},{"../internals/a-function":219}],249:[function(e,S,_){var u=e("../internals/path"),m=e("../internals/global"),g=function(b){return typeof b=="function"?b:void 0};S.exports=function(b,w){return arguments.length<2?g(u[b])||g(m[b]):u[b]&&u[b][w]||m[b]&&m[b][w]}},{"../internals/global":251,"../internals/path":290}],250:[function(e,S,_){var u=e("../internals/classof"),m=e("../internals/iterators"),g=e("../internals/well-known-symbol"),b=g("iterator");S.exports=function(w){if(w!=null)return w[b]||w["@@iterator"]||m[u(w)]}},{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(e,S,_){(function(u){var m=function(g){return g&&g.Math==Math&&g};S.exports=m(typeof globalThis=="object"&&globalThis)||m(typeof window=="object"&&window)||m(typeof self=="object"&&self)||m(typeof u=="object"&&u)||Function("return this")()}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],252:[function(e,S,_){var u={}.hasOwnProperty;S.exports=function(m,g){return u.call(m,g)}},{}],253:[function(e,S,_){S.exports={}},{}],254:[function(e,S,_){var u=e("../internals/global");S.exports=function(m,g){var b=u.console;b&&b.error&&(arguments.length===1?b.error(m):b.error(m,g))}},{"../internals/global":251}],255:[function(e,S,_){var u=e("../internals/get-built-in");S.exports=u("document","documentElement")},{"../internals/get-built-in":249}],256:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/document-create-element");S.exports=!u&&!m(function(){return Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a!=7})},{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(e,S,_){var u=e("../internals/fails"),m=e("../internals/classof-raw"),g="".split;S.exports=u(function(){return!Object("z").propertyIsEnumerable(0)})?function(b){return m(b)=="String"?g.call(b,""):Object(b)}:Object},{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(e,S,_){var u=e("../internals/shared-store"),m=Function.toString;typeof u.inspectSource!="function"&&(u.inspectSource=function(g){return m.call(g)}),S.exports=u.inspectSource},{"../internals/shared-store":300}],259:[function(e,S,_){var u=e("../internals/native-weak-map"),m=e("../internals/global"),g=e("../internals/is-object"),b=e("../internals/create-non-enumerable-property"),w=e("../internals/has"),f=e("../internals/shared-key"),y=e("../internals/hidden-keys"),h=m.WeakMap,l,d,s,v=function(o){return s(o)?d(o):l(o,{})},c=function(o){return function(p){var O;if(!g(p)||(O=d(p)).type!==o)throw TypeError("Incompatible receiver, "+o+" required");return O}};if(u){var a=new h,r=a.get,t=a.has,i=a.set;l=function(o,p){return i.call(a,o,p),p},d=function(o){return r.call(a,o)||{}},s=function(o){return t.call(a,o)}}else{var n=f("state");y[n]=!0,l=function(o,p){return b(o,n,p),p},d=function(o){return w(o,n)?o[n]:{}},s=function(o){return w(o,n)}}S.exports={set:l,get:d,has:s,enforce:v,getterFor:c}},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(e,S,_){var u=e("../internals/well-known-symbol"),m=e("../internals/iterators"),g=u("iterator"),b=Array.prototype;S.exports=function(w){return w!==void 0&&(m.Array===w||b[g]===w)}},{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(e,S,_){var u=e("../internals/classof-raw");S.exports=Array.isArray||function(g){return u(g)=="Array"}},{"../internals/classof-raw":230}],262:[function(e,S,_){var u=e("../internals/fails"),m=/#|\.prototype\./,g=function(h,l){var d=w[b(h)];return d==y?!0:d==f?!1:typeof l=="function"?u(l):!!l},b=g.normalize=function(h){return String(h).replace(m,".").toLowerCase()},w=g.data={},f=g.NATIVE="N",y=g.POLYFILL="P";S.exports=g},{"../internals/fails":247}],263:[function(e,S,_){S.exports=function(u){return typeof u=="object"?u!==null:typeof u=="function"}},{}],264:[function(e,S,_){S.exports=!1},{}],265:[function(e,S,_){var u=e("../internals/is-object"),m=e("../internals/classof-raw"),g=e("../internals/well-known-symbol"),b=g("match");S.exports=function(w){var f;return u(w)&&((f=w[b])!==void 0?!!f:m(w)=="RegExp")}},{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(e,S,_){var u=e("../internals/an-object"),m=e("../internals/is-array-iterator-method"),g=e("../internals/to-length"),b=e("../internals/function-bind-context"),w=e("../internals/get-iterator-method"),f=e("../internals/call-with-safe-iteration-closing"),y=function(l,d){this.stopped=l,this.result=d},h=S.exports=function(l,d,s,v,c){var a=b(d,s,v?2:1),r,t,i,n,o,p,O;if(c)r=l;else{if(t=w(l),typeof t!="function")throw TypeError("Target is not iterable");if(m(t)){for(i=0,n=g(l.length);n>i;i++)if(o=v?a(u(O=l[i])[0],O[1]):a(l[i]),o&&o instanceof y)return o;return new y(!1)}r=t.call(l)}for(p=r.next;!(O=p.call(r)).done;)if(o=f(r,a,O.value,v),typeof o=="object"&&o&&o instanceof y)return o;return new y(!1)};h.stop=function(l){return new y(!0,l)}},{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(e,S,_){var u=e("../internals/object-get-prototype-of"),m=e("../internals/create-non-enumerable-property"),g=e("../internals/has"),b=e("../internals/well-known-symbol"),w=e("../internals/is-pure"),f=b("iterator"),y=!1,h=function(){return this},l,d,s;[].keys&&(s=[].keys(),"next"in s?(d=u(u(s)),d!==Object.prototype&&(l=d)):y=!0),l==null&&(l={}),!w&&!g(l,f)&&m(l,f,h),S.exports={IteratorPrototype:l,BUGGY_SAFARI_ITERATORS:y}},{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(e,S,_){arguments[4][253][0].apply(_,arguments)},{dup:253}],269:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/object-get-own-property-descriptor").f,g=e("../internals/classof-raw"),b=e("../internals/task").set,w=e("../internals/engine-is-ios"),f=u.MutationObserver||u.WebKitMutationObserver,y=u.process,h=u.Promise,l=g(y)=="process",d=m(u,"queueMicrotask"),s=d&&d.value,v,c,a,r,t,i,n,o;s||(v=function(){var p,O;for(l&&(p=y.domain)&&p.exit();c;){O=c.fn,c=c.next;try{O()}catch(C){throw c?r():a=void 0,C}}a=void 0,p&&p.enter()},l?r=function(){y.nextTick(v)}:f&&!w?(t=!0,i=document.createTextNode(""),new f(v).observe(i,{characterData:!0}),r=function(){i.data=t=!t}):h&&h.resolve?(n=h.resolve(void 0),o=n.then,r=function(){o.call(n,v)}):r=function(){b.call(u,v)}),S.exports=s||function(p){var O={fn:p,next:void 0};a&&(a.next=O),c||(c=O,r()),a=O}},{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(e,S,_){var u=e("../internals/global");S.exports=u.Promise},{"../internals/global":251}],271:[function(e,S,_){var u=e("../internals/fails");S.exports=!!Object.getOwnPropertySymbols&&!u(function(){return!String(Symbol())})},{"../internals/fails":247}],272:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/inspect-source"),g=u.WeakMap;S.exports=typeof g=="function"&&/native code/.test(m(g))},{"../internals/global":251,"../internals/inspect-source":258}],273:[function(e,S,_){var u=e("../internals/a-function"),m=function(g){var b,w;this.promise=new g(function(f,y){if(b!==void 0||w!==void 0)throw TypeError("Bad Promise constructor");b=f,w=y}),this.resolve=u(b),this.reject=u(w)};S.exports.f=function(g){return new m(g)}},{"../internals/a-function":219}],274:[function(e,S,_){var u=e("../internals/is-regexp");S.exports=function(m){if(u(m))throw TypeError("The method doesn't accept regular expressions");return m}},{"../internals/is-regexp":265}],275:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/fails"),g=e("../internals/object-keys"),b=e("../internals/object-get-own-property-symbols"),w=e("../internals/object-property-is-enumerable"),f=e("../internals/to-object"),y=e("../internals/indexed-object"),h=Object.assign,l=Object.defineProperty;S.exports=!h||m(function(){if(u&&h({b:1},h(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var d={},s={},v=Symbol(),c="abcdefghijklmnopqrst";return d[v]=7,c.split("").forEach(function(a){s[a]=a}),h({},d)[v]!=7||g(h({},s)).join("")!=c})?function(s,v){for(var c=f(s),a=arguments.length,r=1,t=b.f,i=w.f;a>r;)for(var n=y(arguments[r++]),o=t?g(n).concat(t(n)):g(n),p=o.length,O=0,C;p>O;)C=o[O++],(!u||i.call(n,C))&&(c[C]=n[C]);return c}:h},{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(e,S,_){var u=e("../internals/an-object"),m=e("../internals/object-define-properties"),g=e("../internals/enum-bug-keys"),b=e("../internals/hidden-keys"),w=e("../internals/html"),f=e("../internals/document-create-element"),y=e("../internals/shared-key"),h=">",l="<",d="prototype",s="script",v=y("IE_PROTO"),c=function(){},a=function(o){return l+s+h+o+l+"/"+s+h},r=function(o){o.write(a("")),o.close();var p=o.parentWindow.Object;return o=null,p},t=function(){var o=f("iframe"),p="java"+s+":",O;return o.style.display="none",w.appendChild(o),o.src=String(p),O=o.contentWindow.document,O.open(),O.write(a("document.F=Object")),O.close(),O.F},i,n=function(){try{i=document.domain&&new ActiveXObject("htmlfile")}catch{}n=i?r(i):t();for(var o=g.length;o--;)delete n[d][g[o]];return n()};b[v]=!0,S.exports=Object.create||function(p,O){var C;return p!==null?(c[d]=u(p),C=new c,c[d]=null,C[v]=p):C=n(),O===void 0?C:m(C,O)}},{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/object-define-property"),g=e("../internals/an-object"),b=e("../internals/object-keys");S.exports=u?Object.defineProperties:function(f,y){g(f);for(var h=b(y),l=h.length,d=0,s;l>d;)m.f(f,s=h[d++],y[s]);return f}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/ie8-dom-define"),g=e("../internals/an-object"),b=e("../internals/to-primitive"),w=Object.defineProperty;_.f=u?w:function(y,h,l){if(g(y),h=b(h,!0),g(l),m)try{return w(y,h,l)}catch{}if("get"in l||"set"in l)throw TypeError("Accessors not supported");return"value"in l&&(y[h]=l.value),y}},{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/object-property-is-enumerable"),g=e("../internals/create-property-descriptor"),b=e("../internals/to-indexed-object"),w=e("../internals/to-primitive"),f=e("../internals/has"),y=e("../internals/ie8-dom-define"),h=Object.getOwnPropertyDescriptor;_.f=u?h:function(d,s){if(d=b(d),s=w(s,!0),y)try{return h(d,s)}catch{}if(f(d,s))return g(!m.f.call(d,s),d[s])}},{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(e,S,_){var u=e("../internals/to-indexed-object"),m=e("../internals/object-get-own-property-names").f,g={}.toString,b=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],w=function(f){try{return m(f)}catch{return b.slice()}};S.exports.f=function(y){return b&&g.call(y)=="[object Window]"?w(y):m(u(y))}},{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(e,S,_){var u=e("../internals/object-keys-internal"),m=e("../internals/enum-bug-keys"),g=m.concat("length","prototype");_.f=Object.getOwnPropertyNames||function(w){return u(w,g)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(e,S,_){_.f=Object.getOwnPropertySymbols},{}],283:[function(e,S,_){var u=e("../internals/has"),m=e("../internals/to-object"),g=e("../internals/shared-key"),b=e("../internals/correct-prototype-getter"),w=g("IE_PROTO"),f=Object.prototype;S.exports=b?Object.getPrototypeOf:function(y){return y=m(y),u(y,w)?y[w]:typeof y.constructor=="function"&&y instanceof y.constructor?y.constructor.prototype:y instanceof Object?f:null}},{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(e,S,_){var u=e("../internals/has"),m=e("../internals/to-indexed-object"),g=e("../internals/array-includes").indexOf,b=e("../internals/hidden-keys");S.exports=function(w,f){var y=m(w),h=0,l=[],d;for(d in y)!u(b,d)&&u(y,d)&&l.push(d);for(;f.length>h;)u(y,d=f[h++])&&(~g(l,d)||l.push(d));return l}},{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(e,S,_){var u=e("../internals/object-keys-internal"),m=e("../internals/enum-bug-keys");S.exports=Object.keys||function(b){return u(b,m)}},{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(e,S,_){var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,g=m&&!u.call({1:2},1);_.f=g?function(w){var f=m(this,w);return!!f&&f.enumerable}:u},{}],287:[function(e,S,_){var u=e("../internals/an-object"),m=e("../internals/a-possible-prototype");S.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var g=!1,b={},w;try{w=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,w.call(b,[]),g=b instanceof Array}catch{}return function(y,h){return u(y),m(h),g?w.call(y,h):y.__proto__=h,y}}():void 0)},{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(e,S,_){var u=e("../internals/descriptors"),m=e("../internals/object-keys"),g=e("../internals/to-indexed-object"),b=e("../internals/object-property-is-enumerable").f,w=function(f){return function(y){for(var h=g(y),l=m(h),d=l.length,s=0,v=[],c;d>s;)c=l[s++],(!u||b.call(h,c))&&v.push(f?[c,h[c]]:h[c]);return v}};S.exports={entries:w(!0),values:w(!1)}},{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(e,S,_){var u=e("../internals/get-built-in"),m=e("../internals/object-get-own-property-names"),g=e("../internals/object-get-own-property-symbols"),b=e("../internals/an-object");S.exports=u("Reflect","ownKeys")||function(f){var y=m.f(b(f)),h=g.f;return h?y.concat(h(f)):y}},{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(e,S,_){var u=e("../internals/global");S.exports=u},{"../internals/global":251}],291:[function(e,S,_){S.exports=function(u){try{return{error:!1,value:u()}}catch(m){return{error:!0,value:m}}}},{}],292:[function(e,S,_){var u=e("../internals/an-object"),m=e("../internals/is-object"),g=e("../internals/new-promise-capability");S.exports=function(b,w){if(u(b),m(w)&&w.constructor===b)return w;var f=g.f(b),y=f.resolve;return y(w),f.promise}},{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(e,S,_){var u=e("../internals/redefine");S.exports=function(m,g,b){for(var w in g)u(m,w,g[w],b);return m}},{"../internals/redefine":294}],294:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/create-non-enumerable-property"),g=e("../internals/has"),b=e("../internals/set-global"),w=e("../internals/inspect-source"),f=e("../internals/internal-state"),y=f.get,h=f.enforce,l=String(String).split("String");(S.exports=function(d,s,v,c){var a=c?!!c.unsafe:!1,r=c?!!c.enumerable:!1,t=c?!!c.noTargetGet:!1;if(typeof v=="function"&&(typeof s=="string"&&!g(v,"name")&&m(v,"name",s),h(v).source=l.join(typeof s=="string"?s:"")),d===u){r?d[s]=v:b(s,v);return}else a?!t&&d[s]&&(r=!0):delete d[s];r?d[s]=v:m(d,s,v)})(Function.prototype,"toString",function(){return typeof this=="function"&&y(this).source||w(this)})},{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(e,S,_){S.exports=function(u){if(u==null)throw TypeError("Can't call method on "+u);return u}},{}],296:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/create-non-enumerable-property");S.exports=function(g,b){try{m(u,g,b)}catch{u[g]=b}return b}},{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(e,S,_){var u=e("../internals/get-built-in"),m=e("../internals/object-define-property"),g=e("../internals/well-known-symbol"),b=e("../internals/descriptors"),w=g("species");S.exports=function(f){var y=u(f),h=m.f;b&&y&&!y[w]&&h(y,w,{configurable:!0,get:function(){return this}})}},{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(e,S,_){var u=e("../internals/object-define-property").f,m=e("../internals/has"),g=e("../internals/well-known-symbol"),b=g("toStringTag");S.exports=function(w,f,y){w&&!m(w=y?w:w.prototype,b)&&u(w,b,{configurable:!0,value:f})}},{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(e,S,_){var u=e("../internals/shared"),m=e("../internals/uid"),g=u("keys");S.exports=function(b){return g[b]||(g[b]=m(b))}},{"../internals/shared":301,"../internals/uid":311}],300:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/set-global"),g="__core-js_shared__",b=u[g]||m(g,{});S.exports=b},{"../internals/global":251,"../internals/set-global":296}],301:[function(e,S,_){var u=e("../internals/is-pure"),m=e("../internals/shared-store");(S.exports=function(g,b){return m[g]||(m[g]=b!==void 0?b:{})})("versions",[]).push({version:"3.6.5",mode:u?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(e,S,_){var u=e("../internals/an-object"),m=e("../internals/a-function"),g=e("../internals/well-known-symbol"),b=g("species");S.exports=function(w,f){var y=u(w).constructor,h;return y===void 0||(h=u(y)[b])==null?f:m(h)}},{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/fails"),g=e("../internals/classof-raw"),b=e("../internals/function-bind-context"),w=e("../internals/html"),f=e("../internals/document-create-element"),y=e("../internals/engine-is-ios"),h=u.location,l=u.setImmediate,d=u.clearImmediate,s=u.process,v=u.MessageChannel,c=u.Dispatch,a=0,r={},t="onreadystatechange",i,n,o,p=function(L){if(r.hasOwnProperty(L)){var F=r[L];delete r[L],F()}},O=function(L){return function(){p(L)}},C=function(L){p(L.data)},N=function(L){u.postMessage(L+"",h.protocol+"//"+h.host)};(!l||!d)&&(l=function(F){for(var M=[],D=1;arguments.length>D;)M.push(arguments[D++]);return r[++a]=function(){(typeof F=="function"?F:Function(F)).apply(void 0,M)},i(a),a},d=function(F){delete r[F]},g(s)=="process"?i=function(L){s.nextTick(O(L))}:c&&c.now?i=function(L){c.now(O(L))}:v&&!y?(n=new v,o=n.port2,n.port1.onmessage=C,i=b(o.postMessage,o,1)):u.addEventListener&&typeof postMessage=="function"&&!u.importScripts&&!m(N)&&h.protocol!=="file:"?(i=N,u.addEventListener("message",C,!1)):t in f("script")?i=function(L){w.appendChild(f("script"))[t]=function(){w.removeChild(this),p(L)}}:i=function(L){setTimeout(O(L),0)}),S.exports={set:l,clear:d}},{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(e,S,_){var u=e("../internals/to-integer"),m=Math.max,g=Math.min;S.exports=function(b,w){var f=u(b);return f<0?m(f+w,0):g(f,w)}},{"../internals/to-integer":306}],305:[function(e,S,_){var u=e("../internals/indexed-object"),m=e("../internals/require-object-coercible");S.exports=function(g){return u(m(g))}},{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(e,S,_){var u=Math.ceil,m=Math.floor;S.exports=function(g){return isNaN(g=+g)?0:(g>0?m:u)(g)}},{}],307:[function(e,S,_){var u=e("../internals/to-integer"),m=Math.min;S.exports=function(g){return g>0?m(u(g),9007199254740991):0}},{"../internals/to-integer":306}],308:[function(e,S,_){var u=e("../internals/require-object-coercible");S.exports=function(m){return Object(u(m))}},{"../internals/require-object-coercible":295}],309:[function(e,S,_){var u=e("../internals/is-object");S.exports=function(m,g){if(!u(m))return m;var b,w;if(g&&typeof(b=m.toString)=="function"&&!u(w=b.call(m))||typeof(b=m.valueOf)=="function"&&!u(w=b.call(m))||!g&&typeof(b=m.toString)=="function"&&!u(w=b.call(m)))return w;throw TypeError("Can't convert object to primitive value")}},{"../internals/is-object":263}],310:[function(e,S,_){var u=e("../internals/well-known-symbol"),m=u("toStringTag"),g={};g[m]="z",S.exports=String(g)==="[object z]"},{"../internals/well-known-symbol":314}],311:[function(e,S,_){var u=0,m=Math.random();S.exports=function(g){return"Symbol("+String(g===void 0?"":g)+")_"+(++u+m).toString(36)}},{}],312:[function(e,S,_){var u=e("../internals/native-symbol");S.exports=u&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},{"../internals/native-symbol":271}],313:[function(e,S,_){var u=e("../internals/well-known-symbol");_.f=u},{"../internals/well-known-symbol":314}],314:[function(e,S,_){var u=e("../internals/global"),m=e("../internals/shared"),g=e("../internals/has"),b=e("../internals/uid"),w=e("../internals/native-symbol"),f=e("../internals/use-symbol-as-uid"),y=m("wks"),h=u.Symbol,l=f?h:h&&h.withoutSetter||b;S.exports=function(d){return g(y,d)||(w&&g(h,d)?y[d]=h[d]:y[d]=l("Symbol."+d)),y[d]}},{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/array-iteration").findIndex,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w="findIndex",f=!0,y=b(w);w in[]&&Array(1)[w](function(){f=!1}),u({target:"Array",proto:!0,forced:f||!y},{findIndex:function(l){return m(this,l,arguments.length>1?arguments[1]:void 0)}}),g(w)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/array-iteration").find,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w="find",f=!0,y=b(w);w in[]&&Array(1)[w](function(){f=!1}),u({target:"Array",proto:!0,forced:f||!y},{find:function(l){return m(this,l,arguments.length>1?arguments[1]:void 0)}}),g(w)},{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/array-includes").includes,g=e("../internals/add-to-unscopables"),b=e("../internals/array-method-uses-to-length"),w=b("indexOf",{ACCESSORS:!0,1:0});u({target:"Array",proto:!0,forced:!w},{includes:function(y){return m(this,y,arguments.length>1?arguments[1]:void 0)}}),g("includes")},{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(e,S,_){var u=e("../internals/to-indexed-object"),m=e("../internals/add-to-unscopables"),g=e("../internals/iterators"),b=e("../internals/internal-state"),w=e("../internals/define-iterator"),f="Array Iterator",y=b.set,h=b.getterFor(f);S.exports=w(Array,"Array",function(l,d){y(this,{type:f,target:u(l),index:0,kind:d})},function(){var l=h(this),d=l.target,s=l.kind,v=l.index++;return!d||v>=d.length?(l.target=void 0,{value:void 0,done:!0}):s=="keys"?{value:v,done:!1}:s=="values"?{value:d[v],done:!1}:{value:[v,d[v]],done:!1}},"values"),g.Arguments=g.Array,m("keys"),m("values"),m("entries")},{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(e,S,_){var u=e("../internals/export");u({target:"Number",stat:!0},{isNaN:function(g){return g!=g}})},{"../internals/export":246}],320:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/object-assign");u({target:"Object",stat:!0,forced:Object.assign!==m},{assign:m})},{"../internals/export":246,"../internals/object-assign":275}],321:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/to-object"),g=e("../internals/object-keys"),b=e("../internals/fails"),w=b(function(){g(1)});u({target:"Object",stat:!0,forced:w},{keys:function(y){return g(m(y))}})},{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/object-to-array").values;u({target:"Object",stat:!0},{values:function(b){return m(b)}})},{"../internals/export":246,"../internals/object-to-array":288}],323:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/is-pure"),g=e("../internals/global"),b=e("../internals/get-built-in"),w=e("../internals/native-promise-constructor"),f=e("../internals/redefine"),y=e("../internals/redefine-all"),h=e("../internals/set-to-string-tag"),l=e("../internals/set-species"),d=e("../internals/is-object"),s=e("../internals/a-function"),v=e("../internals/an-instance"),c=e("../internals/classof-raw"),a=e("../internals/inspect-source"),r=e("../internals/iterate"),t=e("../internals/check-correctness-of-iteration"),i=e("../internals/species-constructor"),n=e("../internals/task").set,o=e("../internals/microtask"),p=e("../internals/promise-resolve"),O=e("../internals/host-report-errors"),C=e("../internals/new-promise-capability"),N=e("../internals/perform"),L=e("../internals/internal-state"),F=e("../internals/is-forced"),M=e("../internals/well-known-symbol"),D=e("../internals/engine-v8-version"),R=M("species"),P="Promise",E=L.get,A=L.set,z=L.getterFor(P),W=w,$=g.TypeError,U=g.document,I=g.process,j=b("fetch"),B=C.f,V=B,te=c(I)=="process",ie=!!(U&&U.createEvent&&g.dispatchEvent),ce="unhandledrejection",be="rejectionhandled",_e=0,oe=1,J=2,Q=1,he=2,ke,re,se,Ce,q=F(P,function(){var Ue=a(W)!==String(W);if(!Ue&&(D===66||!te&&typeof PromiseRejectionEvent!="function")||m&&!W.prototype.finally)return!0;if(D>=51&&/native code/.test(W))return!1;var Ve=W.resolve(1),Qe=function(ae){ae(function(){},function(){})},tt=Ve.constructor={};return tt[R]=Qe,!(Ve.then(function(){})instanceof Qe)}),G=q||!t(function(Ue){W.all(Ue).catch(function(){})}),Z=function(Ue){var Ve;return d(Ue)&&typeof(Ve=Ue.then)=="function"?Ve:!1},fe=function(Ue,Ve,Qe){if(!Ve.notified){Ve.notified=!0;var tt=Ve.reactions;o(function(){for(var ae=Ve.value,Re=Ve.state==oe,me=0;tt.length>me;){var Ee=tt[me++],pe=Re?Ee.ok:Ee.fail,Pe=Ee.resolve,ee=Ee.reject,Xe=Ee.domain,it,K,Me;try{pe?(Re||(Ve.rejection===he&&Ze(Ue,Ve),Ve.rejection=Q),pe===!0?it=ae:(Xe&&Xe.enter(),it=pe(ae),Xe&&(Xe.exit(),Me=!0)),it===Ee.promise?ee($("Promise-chain cycle")):(K=Z(it))?K.call(it,Pe,ee):Pe(it)):ee(ae)}catch(Le){Xe&&!Me&&Xe.exit(),ee(Le)}}Ve.reactions=[],Ve.notified=!1,Qe&&!Ve.rejection&&ge(Ue,Ve)})}},we=function(Ue,Ve,Qe){var tt,ae;ie?(tt=U.createEvent("Event"),tt.promise=Ve,tt.reason=Qe,tt.initEvent(Ue,!1,!0),g.dispatchEvent(tt)):tt={promise:Ve,reason:Qe},(ae=g["on"+Ue])?ae(tt):Ue===ce&&O("Unhandled promise rejection",Qe)},ge=function(Ue,Ve){n.call(g,function(){var Qe=Ve.value,tt=je(Ve),ae;if(tt&&(ae=N(function(){te?I.emit("unhandledRejection",Qe,Ue):we(ce,Ue,Qe)}),Ve.rejection=te||je(Ve)?he:Q,ae.error))throw ae.value})},je=function(Ue){return Ue.rejection!==Q&&!Ue.parent},Ze=function(Ue,Ve){n.call(g,function(){te?I.emit("rejectionHandled",Ue):we(be,Ue,Ve.value)})},nt=function(Ue,Ve,Qe,tt){return function(ae){Ue(Ve,Qe,ae,tt)}},ut=function(Ue,Ve,Qe,tt){Ve.done||(Ve.done=!0,tt&&(Ve=tt),Ve.value=Qe,Ve.state=J,fe(Ue,Ve,!0))},ot=function(Ue,Ve,Qe,tt){if(!Ve.done){Ve.done=!0,tt&&(Ve=tt);try{if(Ue===Qe)throw $("Promise can't be resolved itself");var ae=Z(Qe);ae?o(function(){var Re={done:!1};try{ae.call(Qe,nt(ot,Ue,Re,Ve),nt(ut,Ue,Re,Ve))}catch(me){ut(Ue,Re,me,Ve)}}):(Ve.value=Qe,Ve.state=oe,fe(Ue,Ve,!1))}catch(Re){ut(Ue,{done:!1},Re,Ve)}}};q&&(W=function(Ve){v(this,W,P),s(Ve),ke.call(this);var Qe=E(this);try{Ve(nt(ot,this,Qe),nt(ut,this,Qe))}catch(tt){ut(this,Qe,tt)}},ke=function(Ve){A(this,{type:P,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:_e,value:void 0})},ke.prototype=y(W.prototype,{then:function(Ve,Qe){var tt=z(this),ae=B(i(this,W));return ae.ok=typeof Ve=="function"?Ve:!0,ae.fail=typeof Qe=="function"&&Qe,ae.domain=te?I.domain:void 0,tt.parent=!0,tt.reactions.push(ae),tt.state!=_e&&fe(this,tt,!1),ae.promise},catch:function(Ue){return this.then(void 0,Ue)}}),re=function(){var Ue=new ke,Ve=E(Ue);this.promise=Ue,this.resolve=nt(ot,Ue,Ve),this.reject=nt(ut,Ue,Ve)},C.f=B=function(Ue){return Ue===W||Ue===se?new re(Ue):V(Ue)},!m&&typeof w=="function"&&(Ce=w.prototype.then,f(w.prototype,"then",function(Ve,Qe){var tt=this;return new W(function(ae,Re){Ce.call(tt,ae,Re)}).then(Ve,Qe)},{unsafe:!0}),typeof j=="function"&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(Ve){return p(W,j.apply(g,arguments))}}))),u({global:!0,wrap:!0,forced:q},{Promise:W}),h(W,P,!1,!0),l(P),se=b(P),u({target:P,stat:!0,forced:q},{reject:function(Ve){var Qe=B(this);return Qe.reject.call(void 0,Ve),Qe.promise}}),u({target:P,stat:!0,forced:m||q},{resolve:function(Ve){return p(m&&this===se?W:this,Ve)}}),u({target:P,stat:!0,forced:G},{all:function(Ve){var Qe=this,tt=B(Qe),ae=tt.resolve,Re=tt.reject,me=N(function(){var Ee=s(Qe.resolve),pe=[],Pe=0,ee=1;r(Ve,function(Xe){var it=Pe++,K=!1;pe.push(void 0),ee++,Ee.call(Qe,Xe).then(function(Me){K||(K=!0,pe[it]=Me,--ee||ae(pe))},Re)}),--ee||ae(pe)});return me.error&&Re(me.value),tt.promise},race:function(Ve){var Qe=this,tt=B(Qe),ae=tt.reject,Re=N(function(){var me=s(Qe.resolve);r(Ve,function(Ee){me.call(Qe,Ee).then(tt.resolve,ae)})});return Re.error&&ae(Re.value),tt.promise}})},{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/to-absolute-index"),g=String.fromCharCode,b=String.fromCodePoint,w=!!b&&b.length!=1;u({target:"String",stat:!0,forced:w},{fromCodePoint:function(y){for(var h=[],l=arguments.length,d=0,s;l>d;){if(s=+arguments[d++],m(s,1114111)!==s)throw RangeError(s+" is not a valid code point");h.push(s<65536?g(s):g(((s-=65536)>>10)+55296,s%1024+56320))}return h.join("")}})},{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/not-a-regexp"),g=e("../internals/require-object-coercible"),b=e("../internals/correct-is-regexp-logic");u({target:"String",proto:!0,forced:!b("includes")},{includes:function(f){return!!~String(g(this)).indexOf(m(f),arguments.length>1?arguments[1]:void 0)}})},{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(e,S,_){var u=e("../internals/define-well-known-symbol");u("asyncIterator")},{"../internals/define-well-known-symbol":239}],327:[function(e,S,_){var u=e("../internals/export"),m=e("../internals/global"),g=e("../internals/get-built-in"),b=e("../internals/is-pure"),w=e("../internals/descriptors"),f=e("../internals/native-symbol"),y=e("../internals/use-symbol-as-uid"),h=e("../internals/fails"),l=e("../internals/has"),d=e("../internals/is-array"),s=e("../internals/is-object"),v=e("../internals/an-object"),c=e("../internals/to-object"),a=e("../internals/to-indexed-object"),r=e("../internals/to-primitive"),t=e("../internals/create-property-descriptor"),i=e("../internals/object-create"),n=e("../internals/object-keys"),o=e("../internals/object-get-own-property-names"),p=e("../internals/object-get-own-property-names-external"),O=e("../internals/object-get-own-property-symbols"),C=e("../internals/object-get-own-property-descriptor"),N=e("../internals/object-define-property"),L=e("../internals/object-property-is-enumerable"),F=e("../internals/create-non-enumerable-property"),M=e("../internals/redefine"),D=e("../internals/shared"),R=e("../internals/shared-key"),P=e("../internals/hidden-keys"),E=e("../internals/uid"),A=e("../internals/well-known-symbol"),z=e("../internals/well-known-symbol-wrapped"),W=e("../internals/define-well-known-symbol"),$=e("../internals/set-to-string-tag"),U=e("../internals/internal-state"),I=e("../internals/array-iteration").forEach,j=R("hidden"),B="Symbol",V="prototype",te=A("toPrimitive"),ie=U.set,ce=U.getterFor(B),be=Object[V],_e=m.Symbol,oe=g("JSON","stringify"),J=C.f,Q=N.f,he=p.f,ke=L.f,re=D("symbols"),se=D("op-symbols"),Ce=D("string-to-symbol-registry"),q=D("symbol-to-string-registry"),G=D("wks"),Z=m.QObject,fe=!Z||!Z[V]||!Z[V].findChild,we=w&&h(function(){return i(Q({},"a",{get:function(){return Q(this,"a",{value:7}).a}})).a!=7})?function(ae,Re,me){var Ee=J(be,Re);Ee&&delete be[Re],Q(ae,Re,me),Ee&&ae!==be&&Q(be,Re,Ee)}:Q,ge=function(ae,Re){var me=re[ae]=i(_e[V]);return ie(me,{type:B,tag:ae,description:Re}),w||(me.description=Re),me},je=y?function(ae){return typeof ae=="symbol"}:function(ae){return Object(ae)instanceof _e},Ze=function(Re,me,Ee){Re===be&&Ze(se,me,Ee),v(Re);var pe=r(me,!0);return v(Ee),l(re,pe)?(Ee.enumerable?(l(Re,j)&&Re[j][pe]&&(Re[j][pe]=!1),Ee=i(Ee,{enumerable:t(0,!1)})):(l(Re,j)||Q(Re,j,t(1,{})),Re[j][pe]=!0),we(Re,pe,Ee)):Q(Re,pe,Ee)},nt=function(Re,me){v(Re);var Ee=a(me),pe=n(Ee).concat(Qe(Ee));return I(pe,function(Pe){(!w||ot.call(Ee,Pe))&&Ze(Re,Pe,Ee[Pe])}),Re},ut=function(Re,me){return me===void 0?i(Re):nt(i(Re),me)},ot=function(Re){var me=r(Re,!0),Ee=ke.call(this,me);return this===be&&l(re,me)&&!l(se,me)?!1:Ee||!l(this,me)||!l(re,me)||l(this,j)&&this[j][me]?Ee:!0},Ue=function(Re,me){var Ee=a(Re),pe=r(me,!0);if(!(Ee===be&&l(re,pe)&&!l(se,pe))){var Pe=J(Ee,pe);return Pe&&l(re,pe)&&!(l(Ee,j)&&Ee[j][pe])&&(Pe.enumerable=!0),Pe}},Ve=function(Re){var me=he(a(Re)),Ee=[];return I(me,function(pe){!l(re,pe)&&!l(P,pe)&&Ee.push(pe)}),Ee},Qe=function(Re){var me=Re===be,Ee=he(me?se:a(Re)),pe=[];return I(Ee,function(Pe){l(re,Pe)&&(!me||l(be,Pe))&&pe.push(re[Pe])}),pe};if(f||(_e=function(){if(this instanceof _e)throw TypeError("Symbol is not a constructor");var Re=!arguments.length||arguments[0]===void 0?void 0:String(arguments[0]),me=E(Re),Ee=function(pe){this===be&&Ee.call(se,pe),l(this,j)&&l(this[j],me)&&(this[j][me]=!1),we(this,me,t(1,pe))};return w&&fe&&we(be,me,{configurable:!0,set:Ee}),ge(me,Re)},M(_e[V],"toString",function(){return ce(this).tag}),M(_e,"withoutSetter",function(ae){return ge(E(ae),ae)}),L.f=ot,N.f=Ze,C.f=Ue,o.f=p.f=Ve,O.f=Qe,z.f=function(ae){return ge(A(ae),ae)},w&&(Q(_e[V],"description",{configurable:!0,get:function(){return ce(this).description}}),b||M(be,"propertyIsEnumerable",ot,{unsafe:!0}))),u({global:!0,wrap:!0,forced:!f,sham:!f},{Symbol:_e}),I(n(G),function(ae){W(ae)}),u({target:B,stat:!0,forced:!f},{for:function(ae){var Re=String(ae);if(l(Ce,Re))return Ce[Re];var me=_e(Re);return Ce[Re]=me,q[me]=Re,me},keyFor:function(Re){if(!je(Re))throw TypeError(Re+" is not a symbol");if(l(q,Re))return q[Re]},useSetter:function(){fe=!0},useSimple:function(){fe=!1}}),u({target:"Object",stat:!0,forced:!f,sham:!w},{create:ut,defineProperty:Ze,defineProperties:nt,getOwnPropertyDescriptor:Ue}),u({target:"Object",stat:!0,forced:!f},{getOwnPropertyNames:Ve,getOwnPropertySymbols:Qe}),u({target:"Object",stat:!0,forced:h(function(){O.f(1)})},{getOwnPropertySymbols:function(Re){return O.f(c(Re))}}),oe){var tt=!f||h(function(){var ae=_e();return oe([ae])!="[null]"||oe({a:ae})!="{}"||oe(Object(ae))!="{}"});u({target:"JSON",stat:!0,forced:tt},{stringify:function(Re,me,Ee){for(var pe=[Re],Pe=1,ee;arguments.length>Pe;)pe.push(arguments[Pe++]);if(ee=me,!(!s(me)&&Re===void 0||je(Re)))return d(me)||(me=function(Xe,it){if(typeof ee=="function"&&(it=ee.call(this,Xe,it)),!je(it))return it}),pe[1]=me,oe.apply(null,pe)}})}_e[V][te]||F(_e[V],te,_e[V].valueOf),$(_e,B),P[j]=!0},{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(e,S,_){(function(u){function m(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(p){return typeof p}:m=function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},m(n)}function g(n){return Array.isArray?Array.isArray(n):i(n)==="[object Array]"}_.isArray=g;function b(n){return typeof n=="boolean"}_.isBoolean=b;function w(n){return n===null}_.isNull=w;function f(n){return n==null}_.isNullOrUndefined=f;function y(n){return typeof n=="number"}_.isNumber=y;function h(n){return typeof n=="string"}_.isString=h;function l(n){return m(n)==="symbol"}_.isSymbol=l;function d(n){return n===void 0}_.isUndefined=d;function s(n){return i(n)==="[object RegExp]"}_.isRegExp=s;function v(n){return m(n)==="object"&&n!==null}_.isObject=v;function c(n){return i(n)==="[object Date]"}_.isDate=c;function a(n){return i(n)==="[object Error]"||n instanceof Error}_.isError=a;function r(n){return typeof n=="function"}_.isFunction=r;function t(n){return n===null||typeof n=="boolean"||typeof n=="number"||typeof n=="string"||m(n)==="symbol"||typeof n>"u"}_.isPrimitive=t,_.isBuffer=u.isBuffer;function i(n){return Object.prototype.toString.call(n)}}).call(this,{isBuffer:e("../../is-buffer/index.js")})},{"../../is-buffer/index.js":388}],329:[function(e,S,_){(function(u){var m=e("elliptic"),g=e("bn.js");S.exports=function(h){return new w(h)};var b={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};b.p224=b.secp224r1,b.p256=b.secp256r1=b.prime256v1,b.p192=b.secp192r1=b.prime192v1,b.p384=b.secp384r1,b.p521=b.secp521r1;function w(y){this.curveType=b[y],this.curveType||(this.curveType={name:y}),this.curve=new m.ec(this.curveType.name),this.keys=void 0}w.prototype.generateKeys=function(y,h){return this.keys=this.curve.genKeyPair(),this.getPublicKey(y,h)},w.prototype.computeSecret=function(y,h,l){h=h||"utf8",u.isBuffer(y)||(y=new u(y,h));var d=this.curve.keyFromPublic(y).getPublic(),s=d.mul(this.keys.getPrivate()).getX();return f(s,l,this.curveType.byteLength)},w.prototype.getPublicKey=function(y,h){var l=this.keys.getPublic(h==="compressed",!0);return h==="hybrid"&&(l[l.length-1]%2?l[0]=7:l[0]=6),f(l,y)},w.prototype.getPrivateKey=function(y){return f(this.keys.getPrivate(),y)},w.prototype.setPublicKey=function(y,h){return h=h||"utf8",u.isBuffer(y)||(y=new u(y,h)),this.keys._importPublic(y),this},w.prototype.setPrivateKey=function(y,h){h=h||"utf8",u.isBuffer(y)||(y=new u(y,h));var l=new g(y);return l=l.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(l),this};function f(y,h,l){Array.isArray(y)||(y=y.toArray());var d=new u(y);if(l&&d.lengthv){var c=d==="rmd160"?new f:y(d);s=c.update(s).digest()}else s.lengthw?h=y(h):h.length"u"?"undefined":u(_))=="object"&&typeof S<"u"?S.exports=g():m.dayjs=g()})(void 0,function(){var m="millisecond",g="second",b="minute",w="hour",f="day",y="week",h="month",l="quarter",d="year",s="date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/,c=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,a=function(M,D,R){var P=String(M);return!P||P.length>=D?M:""+Array(D+1-P.length).join(R)+M},r={s:a,z:function(M){var D=-M.utcOffset(),R=Math.abs(D),P=Math.floor(R/60),E=R%60;return(D<=0?"+":"-")+a(P,2,"0")+":"+a(E,2,"0")},m:function F(M,D){if(M.date()"u"?"undefined":u(_))=="object"&&typeof S<"u"?S.exports=g():m.dayjs_plugin_customParseFormat=g()})(void 0,function(){var m,g=/(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,b=/\d\d/,w=/\d\d?/,f=/\d*[^\s\d-:/()]+/,y=function(c){return function(a){this[c]=+a}},h=[/[+-]\d\d:?\d\d/,function(v){var c,a;(this.zone||(this.zone={})).offset=(c=v.match(/([+-]|\d\d)/g),(a=60*c[1]+ +c[2])===0?0:c[0]==="+"?-a:a)}],l=function(c){var a=m[c];return a&&(a.indexOf?a:a.s.concat(a.f))},d={A:[/[AP]M/,function(v){this.afternoon=v==="PM"}],a:[/[ap]m/,function(v){this.afternoon=v==="pm"}],S:[/\d/,function(v){this.milliseconds=100*+v}],SS:[b,function(v){this.milliseconds=10*+v}],SSS:[/\d{3}/,function(v){this.milliseconds=+v}],s:[w,y("seconds")],ss:[w,y("seconds")],m:[w,y("minutes")],mm:[w,y("minutes")],H:[w,y("hours")],h:[w,y("hours")],HH:[w,y("hours")],hh:[w,y("hours")],D:[w,y("day")],DD:[b,y("day")],Do:[f,function(v){var c=m.ordinal,a=v.match(/\d+/);if(this.day=a[0],c)for(var r=1;r<=31;r+=1)c(r).replace(/\[|\]/g,"")===v&&(this.day=r)}],M:[w,y("month")],MM:[b,y("month")],MMM:[f,function(v){var c=l("months"),a=(l("monthsShort")||c.map(function(r){return r.substr(0,3)})).indexOf(v)+1;if(a<1)throw new Error;this.month=a%12||a}],MMMM:[f,function(v){var c=l("months").indexOf(v)+1;if(c<1)throw new Error;this.month=c%12||c}],Y:[/[+-]?\d+/,y("year")],YY:[b,function(v){v=+v,this.year=v+(v>68?1900:2e3)}],YYYY:[/\d{4}/,y("year")],Z:h,ZZ:h},s=function(c,a,r){try{var t=function(W){for(var $=W.match(g),U=$.length,I=0;I0?n-1:F.getMonth());var P=p||0,E=O||0,A=C||0,z=N||0;return L?new Date(Date.UTC(D,R,M,P,E,A,z+60*L.offset*1e3)):r?new Date(Date.UTC(D,R,M,P,E,A,z)):new Date(D,R,M,P,E,A,z)}catch{return new Date("")}};return function(v,c,a){var r=c.prototype,t=r.parse;r.parse=function(i){var n=i.date,o=i.utc,p=i.args;this.$u=o;var O=p[1];if(typeof O=="string"){var C=p[2]===!0,N=p[3]===!0,L=C||N,F=p[2];N&&(F=p[2]),C||(m=F?a.Ls[F]:this.$locale()),this.$d=s(n,O,o),this.init(),F&&F!==!0&&(this.$L=this.locale(F).$L),L&&n!==this.format(O)&&(this.$d=new Date(""))}else if(O instanceof Array)for(var M=O.length,D=1;D<=M;D+=1){p[1]=O[D-1];var R=a.apply(this,p);if(R.isValid()){this.$d=R.$d,this.$L=R.$L,this.init();break}D===M&&(this.$d=new Date(""))}else t.call(this,i)}}})},{}],338:[function(e,S,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}(function(m,g){(typeof _>"u"?"undefined":u(_))=="object"&&typeof S<"u"?S.exports=g():m.dayjs_plugin_utc=g()})(void 0,function(){return function(m,g,b){var w=new Date().getTimezoneOffset(),f=g.prototype;b.utc=function(c){return new g({date:c,utc:!0,args:arguments})},f.utc=function(){return b(this.toDate(),{locale:this.$L,utc:!0})},f.local=function(){return b(this.toDate(),{locale:this.$L,utc:!1})};var y=f.parse;f.parse=function(c){c.utc&&(this.$u=!0),this.$utils().u(c.$offset)||(this.$offset=c.$offset),y.call(this,c)};var h=f.init;f.init=function(){if(this.$u){var c=this.$d;this.$y=c.getUTCFullYear(),this.$M=c.getUTCMonth(),this.$D=c.getUTCDate(),this.$W=c.getUTCDay(),this.$H=c.getUTCHours(),this.$m=c.getUTCMinutes(),this.$s=c.getUTCSeconds(),this.$ms=c.getUTCMilliseconds()}else h.call(this)};var l=f.utcOffset;f.utcOffset=function(c,a){var r=this.$utils().u;if(r(c))return this.$u?0:r(this.$offset)?l.call(this):this.$offset;var t=Math.abs(c)<=16?60*c:c,i=this;return a?(i.$offset=t,i.$u=c===0,i):(c!==0?(i=this.local().add(t+w,"minute")).$offset=t:i=this.utc(),i)};var d=f.format;f.format=function(c){var a=c||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return d.call(this,a)},f.valueOf=function(){var c=this.$utils().u(this.$offset)?0:this.$offset+w;return this.$d.valueOf()-6e4*c},f.isUTC=function(){return!!this.$u},f.toISOString=function(){return this.toDate().toISOString()},f.toString=function(){return this.toDate().toUTCString()};var s=f.toDate;f.toDate=function(c){return c==="s"&&this.$offset?b(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():s.call(this)};var v=f.diff;f.diff=function(c,a,r){var t=this.local(),i=b(c).local();return v.call(t,i,a,r)}}})},{}],339:[function(e,S,_){_.utils=e("./des/utils"),_.Cipher=e("./des/cipher"),_.DES=e("./des/des"),_.CBC=e("./des/cbc"),_.EDE=e("./des/ede")},{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(e,S,_){var u=e("minimalistic-assert"),m=e("inherits"),g={};function b(f){u.equal(f.length,8,"Invalid IV length"),this.iv=new Array(8);for(var y=0;y0;y--)w+=this._buffer(b,w),f+=this._flushBuffer(h,f);return w+=this._buffer(b,w),h},m.prototype.final=function(b){var w;b&&(w=this.update(b));var f;return this.type==="encrypt"?f=this._finalEncrypt():f=this._finalDecrypt(),w?w.concat(f):f},m.prototype._pad=function(b,w){if(w===0)return!1;for(;w>>1];s=g.r28shl(s,a),v=g.r28shl(v,a),g.pc2(s,v,l.keys,c)}},f.prototype._update=function(l,d,s,v){var c=this._desState,a=g.readUInt32BE(l,d),r=g.readUInt32BE(l,d+4);g.ip(a,r,c.tmp,0),a=c.tmp[0],r=c.tmp[1],this.type==="encrypt"?this._encrypt(c,a,r,c.tmp,0):this._decrypt(c,a,r,c.tmp,0),a=c.tmp[0],r=c.tmp[1],g.writeUInt32BE(s,a,v),g.writeUInt32BE(s,r,v+4)},f.prototype._pad=function(l,d){for(var s=l.length-d,v=d;v>>0,a=O}g.rip(r,a,v,c)},f.prototype._decrypt=function(l,d,s,v,c){for(var a=s,r=d,t=l.keys.length-2;t>=0;t-=2){var i=l.keys[t],n=l.keys[t+1];g.expand(a,l.tmp,0),i^=l.tmp[0],n^=l.tmp[1];var o=g.substitute(i,n),p=g.permute(o),O=a;a=(r^p)>>>0,r=O}g.rip(a,r,v,c)}},{"./cipher":341,"./utils":344,inherits:387,"minimalistic-assert":437}],343:[function(e,S,_){var u=e("minimalistic-assert"),m=e("inherits"),g=e("./cipher"),b=e("./des");function w(y,h){u.equal(h.length,24,"Invalid key length");var l=h.slice(0,8),d=h.slice(8,16),s=h.slice(16,24);y==="encrypt"?this.ciphers=[b.create({type:"encrypt",key:l}),b.create({type:"decrypt",key:d}),b.create({type:"encrypt",key:s})]:this.ciphers=[b.create({type:"decrypt",key:s}),b.create({type:"encrypt",key:d}),b.create({type:"decrypt",key:l})]}function f(y){g.call(this,y);var h=new w(this.type,this.options.key);this._edeState=h}m(f,g),S.exports=f,f.create=function(h){return new f(h)},f.prototype._update=function(h,l,d,s){var v=this._edeState;v.ciphers[0]._update(h,l,d,s),v.ciphers[1]._update(d,s,d,s),v.ciphers[2]._update(d,s,d,s)},f.prototype._pad=b.prototype._pad,f.prototype._unpad=b.prototype._unpad},{"./cipher":341,"./des":342,inherits:387,"minimalistic-assert":437}],344:[function(e,S,_){_.readUInt32BE=function(w,f){var y=w[0+f]<<24|w[1+f]<<16|w[2+f]<<8|w[3+f];return y>>>0},_.writeUInt32BE=function(w,f,y){w[0+y]=f>>>24,w[1+y]=f>>>16&255,w[2+y]=f>>>8&255,w[3+y]=f&255},_.ip=function(w,f,y,h){for(var l=0,d=0,s=6;s>=0;s-=2){for(var v=0;v<=24;v+=8)l<<=1,l|=f>>>v+s&1;for(var v=0;v<=24;v+=8)l<<=1,l|=w>>>v+s&1}for(var s=6;s>=0;s-=2){for(var v=1;v<=25;v+=8)d<<=1,d|=f>>>v+s&1;for(var v=1;v<=25;v+=8)d<<=1,d|=w>>>v+s&1}y[h+0]=l>>>0,y[h+1]=d>>>0},_.rip=function(w,f,y,h){for(var l=0,d=0,s=0;s<4;s++)for(var v=24;v>=0;v-=8)l<<=1,l|=f>>>v+s&1,l<<=1,l|=w>>>v+s&1;for(var s=4;s<8;s++)for(var v=24;v>=0;v-=8)d<<=1,d|=f>>>v+s&1,d<<=1,d|=w>>>v+s&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.pc1=function(w,f,y,h){for(var l=0,d=0,s=7;s>=5;s--){for(var v=0;v<=24;v+=8)l<<=1,l|=f>>v+s&1;for(var v=0;v<=24;v+=8)l<<=1,l|=w>>v+s&1}for(var v=0;v<=24;v+=8)l<<=1,l|=f>>v+s&1;for(var s=1;s<=3;s++){for(var v=0;v<=24;v+=8)d<<=1,d|=f>>v+s&1;for(var v=0;v<=24;v+=8)d<<=1,d|=w>>v+s&1}for(var v=0;v<=24;v+=8)d<<=1,d|=w>>v+s&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.r28shl=function(w,f){return w<>>28-f};var u=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];_.pc2=function(w,f,y,h){for(var l=0,d=0,s=u.length>>>1,v=0;v>>u[v]&1;for(var v=s;v>>u[v]&1;y[h+0]=l>>>0,y[h+1]=d>>>0},_.expand=function(w,f,y){var h=0,l=0;h=(w&1)<<5|w>>>27;for(var d=23;d>=15;d-=4)h<<=6,h|=w>>>d&63;for(var d=11;d>=3;d-=4)l|=w>>>d&63,l<<=6;l|=(w&31)<<1|w>>>31,f[y+0]=h>>>0,f[y+1]=l>>>0};var m=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];_.substitute=function(w,f){for(var y=0,h=0;h<4;h++){var l=w>>>18-h*6&63,d=m[h*64+l];y<<=4,y|=d}for(var h=0;h<4;h++){var l=f>>>18-h*6&63,d=m[4*64+h*64+l];y<<=4,y|=d}return y>>>0};var g=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];_.permute=function(w){for(var f=0,y=0;y>>g[y]&1;return f>>>0},_.padSplit=function(w,f,y){for(var h=w.toString(2);h.lengthn;)p.ishrn(1);if(p.isEven()&&p.iadd(f),p.testn(1)||p.iadd(y),o.cmp(y)){if(!o.cmp(h))for(;p.mod(l).cmp(d);)p.iadd(v)}else for(;p.mod(g).cmp(s);)p.iadd(v);if(O=p.shrn(1),r(O)&&r(p)&&t(O)&&t(p)&&w.test(O)&&w.test(p))return p}}},{"bn.js":349,"miller-rabin":435,randombytes:475}],348:[function(e,S,_){S.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},{}],349:[function(e,S,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],350:[function(e,S,_){var u=_;u.version=e("../package.json").version,u.utils=e("./elliptic/utils"),u.rand=e("brorand"),u.curve=e("./elliptic/curve"),u.curves=e("./elliptic/curves"),u.ec=e("./elliptic/ec"),u.eddsa=e("./elliptic/eddsa")},{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,brorand:184}],351:[function(e,S,_){var u=e("bn.js"),m=e("../utils"),g=m.getNAF,b=m.getJSF,w=m.assert;function f(h,l){this.type=h,this.p=new u(l.p,16),this.red=l.prime?u.red(l.prime):u.mont(this.p),this.zero=new u(0).toRed(this.red),this.one=new u(1).toRed(this.red),this.two=new u(2).toRed(this.red),this.n=l.n&&new u(l.n,16),this.g=l.g&&this.pointFromJSON(l.g,l.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var d=this.n&&this.p.div(this.n);!d||d.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}S.exports=f,f.prototype.point=function(){throw new Error("Not implemented")},f.prototype.validate=function(){throw new Error("Not implemented")},f.prototype._fixedNafMul=function(l,d){w(l.precomputed);var s=l._getDoubles(),v=g(d,1,this._bitLength),c=(1<=r;d--)t=(t<<1)+v[d];a.push(t)}for(var i=this.jpoint(null,null,null),n=this.jpoint(null,null,null),o=c;o>0;o--){for(var r=0;r=0;t--){for(var d=0;t>=0&&a[t]===0;t--)d++;if(t>=0&&d++,r=r.dblp(d),t<0)break;var i=a[t];w(i!==0),l.type==="affine"?i>0?r=r.mixedAdd(c[i-1>>1]):r=r.mixedAdd(c[-i-1>>1].neg()):i>0?r=r.add(c[i-1>>1]):r=r.add(c[-i-1>>1].neg())}return l.type==="affine"?r.toP():r},f.prototype._wnafMulAdd=function(l,d,s,v,c){for(var a=this._wnafT1,r=this._wnafT2,t=this._wnafT3,i=0,n=0;n=1;n-=2){var O=n-1,C=n;if(a[O]!==1||a[C]!==1){t[O]=g(s[O],a[O],this._bitLength),t[C]=g(s[C],a[C],this._bitLength),i=Math.max(t[O].length,i),i=Math.max(t[C].length,i);continue}var N=[d[O],null,null,d[C]];d[O].y.cmp(d[C].y)===0?(N[1]=d[O].add(d[C]),N[2]=d[O].toJ().mixedAdd(d[C].neg())):d[O].y.cmp(d[C].y.redNeg())===0?(N[1]=d[O].toJ().mixedAdd(d[C]),N[2]=d[O].add(d[C].neg())):(N[1]=d[O].toJ().mixedAdd(d[C]),N[2]=d[O].toJ().mixedAdd(d[C].neg()));var L=[-3,-1,-5,-7,0,7,5,1,3],F=b(s[O],s[C]);i=Math.max(F[0].length,i),t[O]=new Array(i),t[C]=new Array(i);for(var M=0;M=0;n--){for(var A=0;n>=0;){for(var z=!0,M=0;M=0&&A++,P=P.dblp(A),n<0)break;for(var M=0;M0?o=r[M][W-1>>1]:W<0&&(o=r[M][-W-1>>1].neg()),o.type==="affine"?P=P.mixedAdd(o):P=P.add(o))}}for(var n=0;n=Math.ceil((l.bitLength()+1)/d.step):!1},y.prototype._getDoubles=function(l,d){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var s=[this],v=this,c=0;c":""},y.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)},y.prototype._extDbl=function(){var l=this.x.redSqr(),d=this.y.redSqr(),s=this.z.redSqr();s=s.redIAdd(s);var v=this.curve._mulA(l),c=this.x.redAdd(this.y).redSqr().redISub(l).redISub(d),a=v.redAdd(d),r=a.redSub(s),t=v.redSub(d),i=c.redMul(r),n=a.redMul(t),o=c.redMul(t),p=r.redMul(a);return this.curve.point(i,n,p,o)},y.prototype._projDbl=function(){var l=this.x.redAdd(this.y).redSqr(),d=this.x.redSqr(),s=this.y.redSqr(),v,c,a;if(this.curve.twisted){var r=this.curve._mulA(d),t=r.redAdd(s);if(this.zOne)v=l.redSub(d).redSub(s).redMul(t.redSub(this.curve.two)),c=t.redMul(r.redSub(s)),a=t.redSqr().redSub(t).redSub(t);else{var i=this.z.redSqr(),n=t.redSub(i).redISub(i);v=l.redSub(d).redISub(s).redMul(n),c=t.redMul(r.redSub(s)),a=t.redMul(n)}}else{var r=d.redAdd(s),i=this.curve._mulC(this.z).redSqr(),n=r.redSub(i).redSub(i);v=this.curve._mulC(l.redISub(r)).redMul(n),c=this.curve._mulC(r).redMul(d.redISub(s)),a=r.redMul(n)}return this.curve.point(v,c,a)},y.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},y.prototype._extAdd=function(l){var d=this.y.redSub(this.x).redMul(l.y.redSub(l.x)),s=this.y.redAdd(this.x).redMul(l.y.redAdd(l.x)),v=this.t.redMul(this.curve.dd).redMul(l.t),c=this.z.redMul(l.z.redAdd(l.z)),a=s.redSub(d),r=c.redSub(v),t=c.redAdd(v),i=s.redAdd(d),n=a.redMul(r),o=t.redMul(i),p=a.redMul(i),O=r.redMul(t);return this.curve.point(n,o,O,p)},y.prototype._projAdd=function(l){var d=this.z.redMul(l.z),s=d.redSqr(),v=this.x.redMul(l.x),c=this.y.redMul(l.y),a=this.curve.d.redMul(v).redMul(c),r=s.redSub(a),t=s.redAdd(a),i=this.x.redAdd(this.y).redMul(l.x.redAdd(l.y)).redISub(v).redISub(c),n=d.redMul(r).redMul(i),o,p;return this.curve.twisted?(o=d.redMul(t).redMul(c.redSub(this.curve._mulA(v))),p=r.redMul(t)):(o=d.redMul(t).redMul(c.redSub(v)),p=this.curve._mulC(r).redMul(t)),this.curve.point(n,o,p)},y.prototype.add=function(l){return this.isInfinity()?l:l.isInfinity()?this:this.curve.extended?this._extAdd(l):this._projAdd(l)},y.prototype.mul=function(l){return this._hasDoubles(l)?this.curve._fixedNafMul(this,l):this.curve._wnafMul(this,l)},y.prototype.mulAdd=function(l,d,s){return this.curve._wnafMulAdd(1,[this,d],[l,s],2,!1)},y.prototype.jmulAdd=function(l,d,s){return this.curve._wnafMulAdd(1,[this,d],[l,s],2,!0)},y.prototype.normalize=function(){if(this.zOne)return this;var l=this.z.redInvm();return this.x=this.x.redMul(l),this.y=this.y.redMul(l),this.t&&(this.t=this.t.redMul(l)),this.z=this.curve.one,this.zOne=!0,this},y.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},y.prototype.getX=function(){return this.normalize(),this.x.fromRed()},y.prototype.getY=function(){return this.normalize(),this.y.fromRed()},y.prototype.eq=function(l){return this===l||this.getX().cmp(l.getX())===0&&this.getY().cmp(l.getY())===0},y.prototype.eqXToP=function(l){var d=l.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(d)===0)return!0;for(var s=l.clone(),v=this.curve.redN.redMul(this.z);;){if(s.iadd(this.curve.n),s.cmp(this.curve.p)>=0)return!1;if(d.redIAdd(v),this.x.cmp(d)===0)return!0}},y.prototype.toP=y.prototype.normalize,y.prototype.mixedAdd=y.prototype.add},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],353:[function(e,S,_){var u=_;u.base=e("./base"),u.short=e("./short"),u.mont=e("./mont"),u.edwards=e("./edwards")},{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(e,S,_){var u=e("bn.js"),m=e("inherits"),g=e("./base"),b=e("../utils");function w(y){g.call(this,"mont",y),this.a=new u(y.a,16).toRed(this.red),this.b=new u(y.b,16).toRed(this.red),this.i4=new u(4).toRed(this.red).redInvm(),this.two=new u(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}m(w,g),S.exports=w,w.prototype.validate=function(h){var l=h.normalize().x,d=l.redSqr(),s=d.redMul(l).redAdd(d.redMul(this.a)).redAdd(l),v=s.redSqrt();return v.redSqr().cmp(s)===0};function f(y,h,l){g.BasePoint.call(this,y,"projective"),h===null&&l===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new u(h,16),this.z=new u(l,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}m(f,g.BasePoint),w.prototype.decodePoint=function(h,l){return this.point(b.toArray(h,l),1)},w.prototype.point=function(h,l){return new f(this,h,l)},w.prototype.pointFromJSON=function(h){return f.fromJSON(this,h)},f.prototype.precompute=function(){},f.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},f.fromJSON=function(h,l){return new f(h,l[0],l[1]||h.one)},f.prototype.inspect=function(){return this.isInfinity()?"":""},f.prototype.isInfinity=function(){return this.z.cmpn(0)===0},f.prototype.dbl=function(){var h=this.x.redAdd(this.z),l=h.redSqr(),d=this.x.redSub(this.z),s=d.redSqr(),v=l.redSub(s),c=l.redMul(s),a=v.redMul(s.redAdd(this.curve.a24.redMul(v)));return this.curve.point(c,a)},f.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.diffAdd=function(h,l){var d=this.x.redAdd(this.z),s=this.x.redSub(this.z),v=h.x.redAdd(h.z),c=h.x.redSub(h.z),a=c.redMul(d),r=v.redMul(s),t=l.z.redMul(a.redAdd(r).redSqr()),i=l.x.redMul(a.redISub(r).redSqr());return this.curve.point(t,i)},f.prototype.mul=function(h){for(var l=h.clone(),d=this,s=this.curve.point(null,null),v=this,c=[];l.cmpn(0)!==0;l.iushrn(1))c.push(l.andln(1));for(var a=c.length-1;a>=0;a--)c[a]===0?(d=d.diffAdd(s,v),s=s.dbl()):(s=d.diffAdd(s,v),d=d.dbl());return s},f.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},f.prototype.eq=function(h){return this.getX().cmp(h.getX())===0},f.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},f.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],355:[function(e,S,_){var u=e("../utils"),m=e("bn.js"),g=e("inherits"),b=e("./base"),w=u.assert;function f(l){b.call(this,"short",l),this.a=new m(l.a,16).toRed(this.red),this.b=new m(l.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(l),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}g(f,b),S.exports=f,f.prototype._getEndomorphism=function(d){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var s,v;if(d.beta)s=new m(d.beta,16).toRed(this.red);else{var c=this._getEndoRoots(this.p);s=c[0].cmp(c[1])<0?c[0]:c[1],s=s.toRed(this.red)}if(d.lambda)v=new m(d.lambda,16);else{var a=this._getEndoRoots(this.n);this.g.mul(a[0]).x.cmp(this.g.x.redMul(s))===0?v=a[0]:(v=a[1],w(this.g.mul(v).x.cmp(this.g.x.redMul(s))===0))}var r;return d.basis?r=d.basis.map(function(t){return{a:new m(t.a,16),b:new m(t.b,16)}}):r=this._getEndoBasis(v),{beta:s,lambda:v,basis:r}}},f.prototype._getEndoRoots=function(d){var s=d===this.p?this.red:m.mont(d),v=new m(2).toRed(s).redInvm(),c=v.redNeg(),a=new m(3).toRed(s).redNeg().redSqrt().redMul(v),r=c.redAdd(a).fromRed(),t=c.redSub(a).fromRed();return[r,t]},f.prototype._getEndoBasis=function(d){for(var s=this.n.ushrn(Math.floor(this.n.bitLength()/2)),v=d,c=this.n.clone(),a=new m(1),r=new m(0),t=new m(0),i=new m(1),n,o,p,O,C,N,L,F=0,M,D;v.cmpn(0)!==0;){var R=c.div(v);M=c.sub(R.mul(v)),D=t.sub(R.mul(a));var P=i.sub(R.mul(r));if(!p&&M.cmp(s)<0)n=L.neg(),o=a,p=M.neg(),O=D;else if(p&&++F===2)break;L=M,c=v,v=M,t=a,a=D,i=r,r=P}C=M.neg(),N=D;var E=p.sqr().add(O.sqr()),A=C.sqr().add(N.sqr());return A.cmp(E)>=0&&(C=n,N=o),p.negative&&(p=p.neg(),O=O.neg()),C.negative&&(C=C.neg(),N=N.neg()),[{a:p,b:O},{a:C,b:N}]},f.prototype._endoSplit=function(d){var s=this.endo.basis,v=s[0],c=s[1],a=c.b.mul(d).divRound(this.n),r=v.b.neg().mul(d).divRound(this.n),t=a.mul(v.a),i=r.mul(c.a),n=a.mul(v.b),o=r.mul(c.b),p=d.sub(t).sub(i),O=n.add(o).neg();return{k1:p,k2:O}},f.prototype.pointFromX=function(d,s){d=new m(d,16),d.red||(d=d.toRed(this.red));var v=d.redSqr().redMul(d).redIAdd(d.redMul(this.a)).redIAdd(this.b),c=v.redSqrt();if(c.redSqr().redSub(v).cmp(this.zero)!==0)throw new Error("invalid point");var a=c.fromRed().isOdd();return(s&&!a||!s&&a)&&(c=c.redNeg()),this.point(d,c)},f.prototype.validate=function(d){if(d.inf)return!0;var s=d.x,v=d.y,c=this.a.redMul(s),a=s.redSqr().redMul(s).redIAdd(c).redIAdd(this.b);return v.redSqr().redISub(a).cmpn(0)===0},f.prototype._endoWnafMulAdd=function(d,s,v){for(var c=this._endoWnafT1,a=this._endoWnafT2,r=0;r":""},y.prototype.isInfinity=function(){return this.inf},y.prototype.add=function(d){if(this.inf)return d;if(d.inf)return this;if(this.eq(d))return this.dbl();if(this.neg().eq(d))return this.curve.point(null,null);if(this.x.cmp(d.x)===0)return this.curve.point(null,null);var s=this.y.redSub(d.y);s.cmpn(0)!==0&&(s=s.redMul(this.x.redSub(d.x).redInvm()));var v=s.redSqr().redISub(this.x).redISub(d.x),c=s.redMul(this.x.redSub(v)).redISub(this.y);return this.curve.point(v,c)},y.prototype.dbl=function(){if(this.inf)return this;var d=this.y.redAdd(this.y);if(d.cmpn(0)===0)return this.curve.point(null,null);var s=this.curve.a,v=this.x.redSqr(),c=d.redInvm(),a=v.redAdd(v).redIAdd(v).redIAdd(s).redMul(c),r=a.redSqr().redISub(this.x.redAdd(this.x)),t=a.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,t)},y.prototype.getX=function(){return this.x.fromRed()},y.prototype.getY=function(){return this.y.fromRed()},y.prototype.mul=function(d){return d=new m(d,16),this.isInfinity()?this:this._hasDoubles(d)?this.curve._fixedNafMul(this,d):this.curve.endo?this.curve._endoWnafMulAdd([this],[d]):this.curve._wnafMul(this,d)},y.prototype.mulAdd=function(d,s,v){var c=[this,s],a=[d,v];return this.curve.endo?this.curve._endoWnafMulAdd(c,a):this.curve._wnafMulAdd(1,c,a,2)},y.prototype.jmulAdd=function(d,s,v){var c=[this,s],a=[d,v];return this.curve.endo?this.curve._endoWnafMulAdd(c,a,!0):this.curve._wnafMulAdd(1,c,a,2,!0)},y.prototype.eq=function(d){return this===d||this.inf===d.inf&&(this.inf||this.x.cmp(d.x)===0&&this.y.cmp(d.y)===0)},y.prototype.neg=function(d){if(this.inf)return this;var s=this.curve.point(this.x,this.y.redNeg());if(d&&this.precomputed){var v=this.precomputed,c=function(r){return r.neg()};s.precomputed={naf:v.naf&&{wnd:v.naf.wnd,points:v.naf.points.map(c)},doubles:v.doubles&&{step:v.doubles.step,points:v.doubles.points.map(c)}}}return s},y.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var d=this.curve.jpoint(this.x,this.y,this.curve.one);return d};function h(l,d,s,v){b.BasePoint.call(this,l,"jacobian"),d===null&&s===null&&v===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new m(0)):(this.x=new m(d,16),this.y=new m(s,16),this.z=new m(v,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}g(h,b.BasePoint),f.prototype.jpoint=function(d,s,v){return new h(this,d,s,v)},h.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var d=this.z.redInvm(),s=d.redSqr(),v=this.x.redMul(s),c=this.y.redMul(s).redMul(d);return this.curve.point(v,c)},h.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},h.prototype.add=function(d){if(this.isInfinity())return d;if(d.isInfinity())return this;var s=d.z.redSqr(),v=this.z.redSqr(),c=this.x.redMul(s),a=d.x.redMul(v),r=this.y.redMul(s.redMul(d.z)),t=d.y.redMul(v.redMul(this.z)),i=c.redSub(a),n=r.redSub(t);if(i.cmpn(0)===0)return n.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var o=i.redSqr(),p=o.redMul(i),O=c.redMul(o),C=n.redSqr().redIAdd(p).redISub(O).redISub(O),N=n.redMul(O.redISub(C)).redISub(r.redMul(p)),L=this.z.redMul(d.z).redMul(i);return this.curve.jpoint(C,N,L)},h.prototype.mixedAdd=function(d){if(this.isInfinity())return d.toJ();if(d.isInfinity())return this;var s=this.z.redSqr(),v=this.x,c=d.x.redMul(s),a=this.y,r=d.y.redMul(s).redMul(this.z),t=v.redSub(c),i=a.redSub(r);if(t.cmpn(0)===0)return i.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var n=t.redSqr(),o=n.redMul(t),p=v.redMul(n),O=i.redSqr().redIAdd(o).redISub(p).redISub(p),C=i.redMul(p.redISub(O)).redISub(a.redMul(o)),N=this.z.redMul(t);return this.curve.jpoint(O,C,N)},h.prototype.dblp=function(d){if(d===0)return this;if(this.isInfinity())return this;if(!d)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var s=this,v=0;v=0)return!1;if(v.redIAdd(a),this.x.cmp(v)===0)return!0}},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return this.z.cmpn(0)===0}},{"../utils":364,"./base":351,"bn.js":365,inherits:387}],356:[function(e,S,_){var u=_,m=e("hash.js"),g=e("./curve"),b=e("./utils"),w=b.assert;function f(l){l.type==="short"?this.curve=new g.short(l):l.type==="edwards"?this.curve=new g.edwards(l):this.curve=new g.mont(l),this.g=this.curve.g,this.n=this.curve.n,this.hash=l.hash,w(this.g.validate(),"Invalid curve"),w(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}u.PresetCurve=f;function y(l,d){Object.defineProperty(u,l,{configurable:!0,enumerable:!0,get:function(){var v=new f(d);return Object.defineProperty(u,l,{configurable:!0,enumerable:!0,value:v}),v}})}y("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:m.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),y("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:m.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),y("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:m.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),y("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:m.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),y("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:m.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),y("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:m.sha256,gRed:!1,g:["9"]}),y("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:m.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var h;try{h=e("./precomputed/secp256k1")}catch{h=void 0}y("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:m.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",h]})},{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(e,S,_){function u(s){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(c){return typeof c}:u=function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},u(s)}var m=e("bn.js"),g=e("hmac-drbg"),b=e("../utils"),w=e("../curves"),f=e("brorand"),y=b.assert,h=e("./key"),l=e("./signature");function d(s){if(!(this instanceof d))return new d(s);typeof s=="string"&&(y(w.hasOwnProperty(s),"Unknown curve "+s),s=w[s]),s instanceof w.PresetCurve&&(s={curve:s}),this.curve=s.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=s.curve.g,this.g.precompute(s.curve.n.bitLength()+1),this.hash=s.hash||s.curve.hash}S.exports=d,d.prototype.keyPair=function(v){return new h(this,v)},d.prototype.keyFromPrivate=function(v,c){return h.fromPrivate(this,v,c)},d.prototype.keyFromPublic=function(v,c){return h.fromPublic(this,v,c)},d.prototype.genKeyPair=function(v){v||(v={});var c=new g({hash:this.hash,pers:v.pers,persEnc:v.persEnc||"utf8",entropy:v.entropy||f(this.hash.hmacStrength),entropyEnc:v.entropy&&v.entropyEnc||"utf8",nonce:this.n.toArray()}),a=this.n.byteLength(),r=this.n.sub(new m(2));do{var t=new m(c.generate(a));if(!(t.cmp(r)>0))return t.iaddn(1),this.keyFromPrivate(t)}while(!0)},d.prototype._truncateToN=function(v,c){var a=v.byteLength()*8-this.n.bitLength();return a>0&&(v=v.ushrn(a)),!c&&v.cmp(this.n)>=0?v.sub(this.n):v},d.prototype.sign=function(v,c,a,r){u(a)==="object"&&(r=a,a=null),r||(r={}),c=this.keyFromPrivate(c,a),v=this._truncateToN(new m(v,16));for(var t=this.n.byteLength(),i=c.getPrivate().toArray("be",t),n=v.toArray("be",t),o=new g({hash:this.hash,entropy:i,nonce:n,pers:r.pers,persEnc:r.persEnc||"utf8"}),p=this.n.sub(new m(1)),O=0;;O++){var C=r.k?r.k(O):new m(o.generate(this.n.byteLength()));if(C=this._truncateToN(C,!0),!(C.cmpn(1)<=0||C.cmp(p)>=0)){var N=this.g.mul(C);if(!N.isInfinity()){var L=N.getX(),F=L.umod(this.n);if(F.cmpn(0)!==0){var M=C.invm(this.n).mul(F.mul(c.getPrivate()).iadd(v));if(M=M.umod(this.n),M.cmpn(0)!==0){var D=(N.getY().isOdd()?1:0)|(L.cmp(F)!==0?2:0);return r.canonical&&M.cmp(this.nh)>0&&(M=this.n.sub(M),D^=1),new l({r:F,s:M,recoveryParam:D})}}}}}},d.prototype.verify=function(v,c,a,r){v=this._truncateToN(new m(v,16)),a=this.keyFromPublic(a,r),c=new l(c,"hex");var t=c.r,i=c.s;if(t.cmpn(1)<0||t.cmp(this.n)>=0||i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var n=i.invm(this.n),o=n.mul(v).umod(this.n),p=n.mul(t).umod(this.n);if(!this.curve._maxwellTrick){var O=this.g.mulAdd(o,a.getPublic(),p);return O.isInfinity()?!1:O.getX().umod(this.n).cmp(t)===0}var O=this.g.jmulAdd(o,a.getPublic(),p);return O.isInfinity()?!1:O.eqXToP(t)},d.prototype.recoverPubKey=function(s,v,c,a){y((3&c)===c,"The recovery param is more than two bits"),v=new l(v,a);var r=this.n,t=new m(s),i=v.r,n=v.s,o=c&1,p=c>>1;if(i.cmp(this.curve.p.umod(this.curve.n))>=0&&p)throw new Error("Unable to find sencond key candinate");p?i=this.curve.pointFromX(i.add(this.curve.n),o):i=this.curve.pointFromX(i,o);var O=v.r.invm(r),C=r.sub(t).mul(O).umod(r),N=n.mul(O).umod(r);return this.g.mulAdd(C,i,N)},d.prototype.getKeyRecoveryParam=function(s,v,c,a){if(v=new l(v,a),v.recoveryParam!==null)return v.recoveryParam;for(var r=0;r<4;r++){var t;try{t=this.recoverPubKey(s,v,r)}catch{continue}if(t.eq(c))return r}throw new Error("Unable to find valid recovery factor")}},{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,brorand:184,"hmac-drbg":384}],358:[function(e,S,_){var u=e("bn.js"),m=e("../utils"),g=m.assert;function b(w,f){this.ec=w,this.priv=null,this.pub=null,f.priv&&this._importPrivate(f.priv,f.privEnc),f.pub&&this._importPublic(f.pub,f.pubEnc)}S.exports=b,b.fromPublic=function(f,y,h){return y instanceof b?y:new b(f,{pub:y,pubEnc:h})},b.fromPrivate=function(f,y,h){return y instanceof b?y:new b(f,{priv:y,privEnc:h})},b.prototype.validate=function(){var f=this.getPublic();return f.isInfinity()?{result:!1,reason:"Invalid public key"}:f.validate()?f.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},b.prototype.getPublic=function(f,y){return typeof f=="string"&&(y=f,f=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),y?this.pub.encode(y,f):this.pub},b.prototype.getPrivate=function(f){return f==="hex"?this.priv.toString(16,2):this.priv},b.prototype._importPrivate=function(f,y){this.priv=new u(f,y||16),this.priv=this.priv.umod(this.ec.curve.n)},b.prototype._importPublic=function(f,y){if(f.x||f.y){this.ec.curve.type==="mont"?g(f.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&g(f.x&&f.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(f.x,f.y);return}this.pub=this.ec.curve.decodePoint(f,y)},b.prototype.derive=function(f){return f.mul(this.priv).getX()},b.prototype.sign=function(f,y,h){return this.ec.sign(f,this,y,h)},b.prototype.verify=function(f,y){return this.ec.verify(f,y,this)},b.prototype.inspect=function(){return""}},{"../utils":364,"bn.js":365}],359:[function(e,S,_){var u=e("bn.js"),m=e("../utils"),g=m.assert;function b(l,d){if(l instanceof b)return l;this._importDER(l,d)||(g(l.r&&l.s,"Signature without r or s"),this.r=new u(l.r,16),this.s=new u(l.s,16),l.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=l.recoveryParam)}S.exports=b;function w(){this.place=0}function f(l,d){var s=l[d.place++];if(!(s&128))return s;var v=s&15;if(v===0||v>4)return!1;for(var c=0,a=0,r=d.place;a>>=0;return c<=127?!1:(d.place=r,c)}function y(l){for(var d=0,s=l.length-1;!l[d]&&!(l[d+1]&128)&&d>>3);for(l.push(s|128);--s;)l.push(d>>>(s<<3)&255);l.push(d)}b.prototype.toDER=function(d){var s=this.r.toArray(),v=this.s.toArray();for(s[0]&128&&(s=[0].concat(s)),v[0]&128&&(v=[0].concat(v)),s=y(s),v=y(v);!v[0]&&!(v[1]&128);)v=v.slice(1);var c=[2];h(c,s.length),c=c.concat(s),c.push(2),h(c,v.length);var a=c.concat(v),r=[48];return h(r,a.length),r=r.concat(a),m.encode(r,d)}},{"../utils":364,"bn.js":365}],360:[function(e,S,_){var u=e("hash.js"),m=e("../curves"),g=e("../utils"),b=g.assert,w=g.parseBytes,f=e("./key"),y=e("./signature");function h(d){if(b(d==="ed25519","only tested with ed25519 so far"),!(this instanceof h))return new h(d);var d=m[d].curve;this.curve=d,this.g=d.g,this.g.precompute(d.n.bitLength()+1),this.pointClass=d.point().constructor,this.encodingLength=Math.ceil(d.n.bitLength()/8),this.hash=u.sha512}S.exports=h,h.prototype.sign=function(d,s){d=w(d);var v=this.keyFromSecret(s),c=this.hashInt(v.messagePrefix(),d),a=this.g.mul(c),r=this.encodePoint(a),t=this.hashInt(r,v.pubBytes(),d).mul(v.priv()),i=c.add(t).umod(this.curve.n);return this.makeSignature({R:a,S:i,Rencoded:r})},h.prototype.verify=function(d,s,v){d=w(d),s=this.makeSignature(s);var c=this.keyFromPublic(v),a=this.hashInt(s.Rencoded(),c.pubBytes(),d),r=this.g.mul(s.S()),t=s.R().add(c.pub().mul(a));return t.eq(r)},h.prototype.hashInt=function(){for(var d=this.hash(),s=0;s(a>>1)-1?i=(a>>1)-n:i=n,r.isubn(i)):i=0,c[t]=i,r.iushrn(1)}return c}u.getNAF=w;function f(d,s){var v=[[],[]];d=d.clone(),s=s.clone();for(var c=0,a=0;d.cmpn(-c)>0||s.cmpn(-a)>0;){var r=d.andln(3)+c&3,t=s.andln(3)+a&3;r===3&&(r=-1),t===3&&(t=-1);var i;if(!(r&1))i=0;else{var n=d.andln(7)+c&7;(n===3||n===5)&&t===2?i=-r:i=r}v[0].push(i);var o;if(!(t&1))o=0;else{var n=s.andln(7)+a&7;(n===3||n===5)&&r===2?o=-t:o=t}v[1].push(o),2*c===i+1&&(c=1-c),2*a===o+1&&(a=1-a),d.iushrn(1),s.iushrn(1)}return v}u.getJSF=f;function y(d,s,v){var c="_"+s;d.prototype[s]=function(){return this[c]!==void 0?this[c]:this[c]=v.call(this)}}u.cachedProperty=y;function h(d){return typeof d=="string"?u.toArray(d,"hex"):d}u.parseBytes=h;function l(d){return new m(d,"hex","le")}u.intFromLE=l},{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(e,S,_){arguments[4][181][0].apply(_,arguments)},{buffer:185,dup:181}],366:[function(e,S,_){S.exports={_from:"elliptic@^6.5.3",_id:"elliptic@6.5.3",_inBundle:!1,_integrity:"sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",_location:"/elliptic",_phantomChildren:{},_requested:{type:"range",registry:!0,raw:"elliptic@^6.5.3",name:"elliptic",escapedName:"elliptic",rawSpec:"^6.5.3",saveSpec:null,fetchSpec:"^6.5.3"},_requiredBy:["/browserify-sign","/create-ecdh"],_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",_shasum:"cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6",_spec:"elliptic@^6.5.3",_where:"/mnt/d/dev/git/exceljs/node_modules/browserify-sign",author:{name:"Fedor Indutny",email:"fedor@indutny.com"},bugs:{url:"https://github.com/indutny/elliptic/issues"},bundleDependencies:!1,dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},deprecated:!1,description:"EC cryptography",devDependencies:{brfs:"^1.4.3",coveralls:"^3.0.8",grunt:"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.2",jscs:"^3.0.7",jshint:"^2.10.3",mocha:"^6.2.2"},files:["lib"],homepage:"https://github.com/indutny/elliptic",keywords:["EC","Elliptic","curve","Cryptography"],license:"MIT",main:"lib/elliptic.js",name:"elliptic",repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",test:"npm run lint && npm run unit",unit:"istanbul test _mocha --reporter=spec test/index.js",version:"grunt dist && git add dist/"},version:"6.5.3"}},{}],367:[function(e,S,_){function u(M){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(R){return typeof R}:u=function(R){return R&&typeof Symbol=="function"&&R.constructor===Symbol&&R!==Symbol.prototype?"symbol":typeof R},u(M)}var m=Object.create||N,g=Object.keys||L,b=Function.prototype.bind||F;function w(){(!this._events||!Object.prototype.hasOwnProperty.call(this,"_events"))&&(this._events=m(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}S.exports=w,w.EventEmitter=w,w.prototype._events=void 0,w.prototype._maxListeners=void 0;var f=10,y;try{var h={};Object.defineProperty&&Object.defineProperty(h,"x",{value:0}),y=h.x===0}catch{y=!1}y?Object.defineProperty(w,"defaultMaxListeners",{enumerable:!0,get:function(){return f},set:function(D){if(typeof D!="number"||D<0||D!==D)throw new TypeError('"defaultMaxListeners" must be a positive number');f=D}}):w.defaultMaxListeners=f,w.prototype.setMaxListeners=function(D){if(typeof D!="number"||D<0||isNaN(D))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=D,this};function l(M){return M._maxListeners===void 0?w.defaultMaxListeners:M._maxListeners}w.prototype.getMaxListeners=function(){return l(this)};function d(M,D,R){if(D)M.call(R);else for(var P=M.length,E=O(M,P),A=0;A1&&(R=arguments[1]),R instanceof Error)throw R;var U=new Error('Unhandled "error" event. ('+R+")");throw U.context=R,U}if(P=W[D],!P)return!1;var I=typeof P=="function";switch(E=arguments.length,E){case 1:d(P,I,this);break;case 2:s(P,I,this,arguments[1]);break;case 3:v(P,I,this,arguments[1],arguments[2]);break;case 4:c(P,I,this,arguments[1],arguments[2],arguments[3]);break;default:for(A=new Array(E-1),z=1;z0&&z.length>E)){z.warned=!0;var W=new Error("Possible EventEmitter memory leak detected. "+z.length+' "'+String(D)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');W.name="MaxListenersExceededWarning",W.emitter=M,W.type=D,W.count=z.length,(typeof console>"u"?"undefined":u(console))==="object"&&console.warn&&console.warn("%s: %s",W.name,W.message)}return M}w.prototype.addListener=function(D,R){return r(this,D,R,!1)},w.prototype.on=w.prototype.addListener,w.prototype.prependListener=function(D,R){return r(this,D,R,!0)};function t(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var M=new Array(arguments.length),D=0;D=0;z--)if(P[z]===R||P[z].listener===R){W=P[z].listener,A=z;break}if(A<0)return this;A===0?P.shift():p(P,A),P.length===1&&(E[D]=P[0]),E.removeListener&&this.emit("removeListener",D,W||R)}return this},w.prototype.removeAllListeners=function(D){var R,P,E;if(P=this._events,!P)return this;if(!P.removeListener)return arguments.length===0?(this._events=m(null),this._eventsCount=0):P[D]&&(--this._eventsCount===0?this._events=m(null):delete P[D]),this;if(arguments.length===0){var A=g(P),z;for(E=0;E=0;E--)this.removeListener(D,R[E]);return this};function n(M,D,R){var P=M._events;if(!P)return[];var E=P[D];return E?typeof E=="function"?R?[E.listener||E]:[E]:R?C(E):O(E,E.length):[]}w.prototype.listeners=function(D){return n(this,D,!0)},w.prototype.rawListeners=function(D){return n(this,D,!1)},w.listenerCount=function(M,D){return typeof M.listenerCount=="function"?M.listenerCount(D):o.call(M,D)},w.prototype.listenerCount=o;function o(M){var D=this._events;if(D){var R=D[M];if(typeof R=="function")return 1;if(R)return R.length}return 0}w.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};function p(M,D){for(var R=D,P=R+1,E=M.length;P0||y>0;){var v=new m;v.update(s),v.update(b),w&&v.update(w),s=v.digest();var c=0;if(h>0){var a=l.length-h;c=Math.min(h,s.length),s.copy(l,a,0,c),h-=c}if(c0){var r=d.length-y,t=Math.min(y,s.length-c);s.copy(d,r,c,c+t),y-=t}}return s.fill(0),{key:l,iv:d}}S.exports=g},{"md5.js":434,"safe-buffer":494}],369:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0});var u=e("@fast-csv/format");Object.defineProperty(_,"format",{enumerable:!0,get:function(){return u.format}}),Object.defineProperty(_,"write",{enumerable:!0,get:function(){return u.write}}),Object.defineProperty(_,"writeToStream",{enumerable:!0,get:function(){return u.writeToStream}}),Object.defineProperty(_,"writeToBuffer",{enumerable:!0,get:function(){return u.writeToBuffer}}),Object.defineProperty(_,"writeToString",{enumerable:!0,get:function(){return u.writeToString}}),Object.defineProperty(_,"writeToPath",{enumerable:!0,get:function(){return u.writeToPath}}),Object.defineProperty(_,"CsvFormatterStream",{enumerable:!0,get:function(){return u.CsvFormatterStream}}),Object.defineProperty(_,"FormatterOptions",{enumerable:!0,get:function(){return u.FormatterOptions}});var m=e("@fast-csv/parse");Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return m.parse}}),Object.defineProperty(_,"parseString",{enumerable:!0,get:function(){return m.parseString}}),Object.defineProperty(_,"parseStream",{enumerable:!0,get:function(){return m.parseStream}}),Object.defineProperty(_,"parseFile",{enumerable:!0,get:function(){return m.parseFile}}),Object.defineProperty(_,"ParserOptions",{enumerable:!0,get:function(){return m.ParserOptions}}),Object.defineProperty(_,"CsvParserStream",{enumerable:!0,get:function(){return m.CsvParserStream}})},{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(e,S,_){var u=e("safe-buffer").Buffer,m=e("readable-stream").Transform,g=e("inherits");function b(f,y){if(!u.isBuffer(f)&&typeof f!="string")throw new TypeError(y+" must be a string or a buffer")}function w(f){m.call(this),this._block=u.allocUnsafe(f),this._blockSize=f,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}g(w,m),w.prototype._transform=function(f,y,h){var l=null;try{this.update(f,y)}catch(d){l=d}h(l)},w.prototype._flush=function(f){var y=null;try{this.push(this.digest())}catch(h){y=h}f(y)},w.prototype.update=function(f,y){if(b(f,"Data"),this._finalized)throw new Error("Digest already called");u.isBuffer(f)||(f=u.from(f,y));for(var h=this._block,l=0;this._blockOffset+f.length-l>=this._blockSize;){for(var d=this._blockOffset;d0;++s)this._length[s]+=v,v=this._length[s]/4294967296|0,v>0&&(this._length[s]-=4294967296*v);return this},w.prototype._update=function(){throw new Error("_update is not implemented")},w.prototype.digest=function(f){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var y=this._digest();f!==void 0&&(y=y.toString(f)),this._block.fill(0),this._blockOffset=0;for(var h=0;h<4;++h)this._length[h]=0;return y},w.prototype._digest=function(){throw new Error("_digest is not implemented")},S.exports=w},{inherits:387,"readable-stream":491,"safe-buffer":371}],371:[function(e,S,_){arguments[4][214][0].apply(_,arguments)},{buffer:216,dup:214}],372:[function(e,S,_){var u=_;u.utils=e("./hash/utils"),u.common=e("./hash/common"),u.sha=e("./hash/sha"),u.ripemd=e("./hash/ripemd"),u.hmac=e("./hash/hmac"),u.sha1=u.sha.sha1,u.sha256=u.sha.sha256,u.sha224=u.sha.sha224,u.sha384=u.sha.sha384,u.sha512=u.sha.sha512,u.ripemd160=u.ripemd.ripemd160},{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(e,S,_){var u=e("./utils"),m=e("minimalistic-assert");function g(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}_.BlockHash=g,g.prototype.update=function(w,f){if(w=u.toArray(w,f),this.pending?this.pending=this.pending.concat(w):this.pending=w,this.pendingTotal+=w.length,this.pending.length>=this._delta8){w=this.pending;var y=w.length%this._delta8;this.pending=w.slice(w.length-y,w.length),this.pending.length===0&&(this.pending=null),w=u.join32(w,0,w.length-y,this.endian);for(var h=0;h>>24&255,h[l++]=w>>>16&255,h[l++]=w>>>8&255,h[l++]=w&255}else for(h[l++]=w&255,h[l++]=w>>>8&255,h[l++]=w>>>16&255,h[l++]=w>>>24&255,h[l++]=0,h[l++]=0,h[l++]=0,h[l++]=0,d=8;dthis.blockSize&&(w=new this.Hash().update(w).digest()),m(w.length<=this.blockSize);for(var f=w.length;f>>3}_.g0_256=l;function d(s){return m(s,17)^m(s,19)^s>>>10}_.g1_256=d},{"../utils":383}],383:[function(e,S,_){var u=e("minimalistic-assert"),m=e("inherits");_.inherits=m;function g(P,E){return(P.charCodeAt(E)&64512)!==55296||E<0||E+1>=P.length?!1:(P.charCodeAt(E+1)&64512)===56320}function b(P,E){if(Array.isArray(P))return P.slice();if(!P)return[];var A=[];if(typeof P=="string")if(E){if(E==="hex")for(P=P.replace(/[^a-z0-9]+/ig,""),P.length%2!==0&&(P="0"+P),W=0;W>6|192,A[z++]=$&63|128):g(P,W)?($=65536+(($&1023)<<10)+(P.charCodeAt(++W)&1023),A[z++]=$>>18|240,A[z++]=$>>12&63|128,A[z++]=$>>6&63|128,A[z++]=$&63|128):(A[z++]=$>>12|224,A[z++]=$>>6&63|128,A[z++]=$&63|128)}else for(W=0;W>>24|P>>>8&65280|P<<8&16711680|(P&255)<<24;return E>>>0}_.htonl=f;function y(P,E){for(var A="",z=0;z>>0}return $}_.join32=d;function s(P,E){for(var A=new Array(P.length*4),z=0,W=0;z>>24,A[W+1]=$>>>16&255,A[W+2]=$>>>8&255,A[W+3]=$&255):(A[W+3]=$>>>24,A[W+2]=$>>>16&255,A[W+1]=$>>>8&255,A[W]=$&255)}return A}_.split32=s;function v(P,E){return P>>>E|P<<32-E}_.rotr32=v;function c(P,E){return P<>>32-E}_.rotl32=c;function a(P,E){return P+E>>>0}_.sum32=a;function r(P,E,A){return P+E+A>>>0}_.sum32_3=r;function t(P,E,A,z){return P+E+A+z>>>0}_.sum32_4=t;function i(P,E,A,z,W){return P+E+A+z+W>>>0}_.sum32_5=i;function n(P,E,A,z){var W=P[E],$=P[E+1],U=z+$>>>0,I=(U>>0,P[E+1]=U}_.sum64=n;function o(P,E,A,z){var W=E+z>>>0,$=(W>>0}_.sum64_hi=o;function p(P,E,A,z){var W=E+z;return W>>>0}_.sum64_lo=p;function O(P,E,A,z,W,$,U,I){var j=0,B=E;B=B+z>>>0,j+=B>>0,j+=B<$?1:0,B=B+I>>>0,j+=B>>0}_.sum64_4_hi=O;function C(P,E,A,z,W,$,U,I){var j=E+z+$+I;return j>>>0}_.sum64_4_lo=C;function N(P,E,A,z,W,$,U,I,j,B){var V=0,te=E;te=te+z>>>0,V+=te>>0,V+=te<$?1:0,te=te+I>>>0,V+=te>>0,V+=te>>0}_.sum64_5_hi=N;function L(P,E,A,z,W,$,U,I,j,B){var V=E+z+$+I+B;return V>>>0}_.sum64_5_lo=L;function F(P,E,A){var z=E<<32-A|P>>>A;return z>>>0}_.rotr64_hi=F;function M(P,E,A){var z=P<<32-A|E>>>A;return z>>>0}_.rotr64_lo=M;function D(P,E,A){return P>>>A}_.shr64_hi=D;function R(P,E,A){var z=P<<32-A|E>>>A;return z>>>0}_.shr64_lo=R},{inherits:387,"minimalistic-assert":437}],384:[function(e,S,_){var u=e("hash.js"),m=e("minimalistic-crypto-utils"),g=e("minimalistic-assert");function b(w){if(!(this instanceof b))return new b(w);this.hash=w.hash,this.predResist=!!w.predResist,this.outLen=this.hash.outSize,this.minEntropy=w.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var f=m.toArray(w.entropy,w.entropyEnc||"hex"),y=m.toArray(w.nonce,w.nonceEnc||"hex"),h=m.toArray(w.pers,w.persEnc||"hex");g(f.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(f,y,h)}S.exports=b,b.prototype._init=function(f,y,h){var l=f.concat(y).concat(h);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var d=0;d=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(f.concat(h||[])),this._reseed=1},b.prototype.generate=function(f,y,h,l){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof y!="string"&&(l=h,h=y,y=null),h&&(h=m.toArray(h,l||"hex"),this._update(h));for(var d=[];d.length>1,s=-7,v=g?w-1:0,c=g?-1:1,a=u[m+v];for(v+=c,f=a&(1<<-s)-1,a>>=-s,s+=h;s>0;f=f*256+u[m+v],v+=c,s-=8);for(y=f&(1<<-s)-1,f>>=-s,s+=b;s>0;y=y*256+u[m+v],v+=c,s-=8);if(f===0)f=1-d;else{if(f===l)return y?NaN:(a?-1:1)*(1/0);y=y+Math.pow(2,b),f=f-d}return(a?-1:1)*y*Math.pow(2,f-b)},_.write=function(u,m,g,b,w,f){var y,h,l,d=f*8-w-1,s=(1<>1,c=w===23?Math.pow(2,-24)-Math.pow(2,-77):0,a=b?0:f-1,r=b?1:-1,t=m<0||m===0&&1/m<0?1:0;for(m=Math.abs(m),isNaN(m)||m===1/0?(h=isNaN(m)?1:0,y=s):(y=Math.floor(Math.log(m)/Math.LN2),m*(l=Math.pow(2,-y))<1&&(y--,l*=2),y+v>=1?m+=c/l:m+=c*Math.pow(2,1-v),m*l>=2&&(y++,l/=2),y+v>=s?(h=0,y=s):y+v>=1?(h=(m*l-1)*Math.pow(2,w),y=y+v):(h=m*Math.pow(2,v-1)*Math.pow(2,w),y=0));w>=8;u[g+a]=h&255,a+=r,h/=256,w-=8);for(y=y<0;u[g+a]=y&255,a+=r,y/=256,d-=8);u[g+a-r]|=t*128}},{}],386:[function(e,S,_){(function(u){var m=u.MutationObserver||u.WebKitMutationObserver,g;if(m){var b=0,w=new m(d),f=u.document.createTextNode("");w.observe(f,{characterData:!0}),g=function(){f.data=b=++b%2}}else if(!u.setImmediate&&typeof u.MessageChannel<"u"){var y=new u.MessageChannel;y.port1.onmessage=d,g=function(){y.port2.postMessage(0)}}else"document"in u&&"onreadystatechange"in u.document.createElement("script")?g=function(){var c=u.document.createElement("script");c.onreadystatechange=function(){d(),c.onreadystatechange=null,c.parentNode.removeChild(c),c=null},u.document.documentElement.appendChild(c)}:g=function(){setTimeout(d,0)};var h,l=[];function d(){h=!0;for(var v,c,a=l.length;a;){for(c=l,l=[],v=-1;++v + * @license MIT + */S.exports=function(g){return g!=null&&(u(g)||m(g)||!!g._isBuffer)};function u(g){return!!g.constructor&&typeof g.constructor.isBuffer=="function"&&g.constructor.isBuffer(g)}function m(g){return typeof g.readFloatLE=="function"&&typeof g.slice=="function"&&u(g.slice(0,0))}},{}],389:[function(e,S,_){var u={}.toString;S.exports=Array.isArray||function(m){return u.call(m)=="[object Array]"}},{}],390:[function(e,S,_){var u=e("./utils"),m=e("./support"),g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";_.encode=function(b){for(var w=[],f,y,h,l,d,s,v,c=0,a=b.length,r=a,t=u.getTypeOf(b)!=="string";c>2,d=(f&3)<<4|y>>4,s=r>1?(y&15)<<2|h>>6:64,v=r>2?h&63:64,w.push(g.charAt(l)+g.charAt(d)+g.charAt(s)+g.charAt(v));return w.join("")},_.decode=function(b){var w,f,y,h,l,d,s,v=0,c=0,a="data:";if(b.substr(0,a.length)===a)throw new Error("Invalid base64 input, it looks like a data url.");b=b.replace(/[^A-Za-z0-9\+\/\=]/g,"");var r=b.length*3/4;if(b.charAt(b.length-1)===g.charAt(64)&&r--,b.charAt(b.length-2)===g.charAt(64)&&r--,r%1!==0)throw new Error("Invalid base64 input, bad content length.");var t;for(m.uint8array?t=new Uint8Array(r|0):t=new Array(r|0);v>4,f=(l&15)<<4|d>>2,y=(d&3)<<6|s,t[c++]=w,d!==64&&(t[c++]=f),s!==64&&(t[c++]=y);return t}},{"./support":419,"./utils":421}],391:[function(e,S,_){var u=e("./external"),m=e("./stream/DataWorker"),b=e("./stream/DataLengthProbe"),g=e("./stream/Crc32Probe"),b=e("./stream/DataLengthProbe");function w(f,y,h,l,d){this.compressedSize=f,this.uncompressedSize=y,this.crc32=h,this.compression=l,this.compressedContent=d}w.prototype={getContentWorker:function(){var y=new m(u.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new b("data_length")),h=this;return y.on("end",function(){if(this.streamInfo.data_length!==h.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),y},getCompressedWorker:function(){return new m(u.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},w.createWorkerFrom=function(f,y,h){return f.pipe(new g).pipe(new b("uncompressedSize")).pipe(y.compressWorker(h)).pipe(new b("compressedSize")).withStreamInfo("compression",y)},S.exports=w},{"./external":395,"./stream/Crc32Probe":414,"./stream/DataLengthProbe":415,"./stream/DataWorker":416}],392:[function(e,S,_){var u=e("./stream/GenericWorker");_.STORE={magic:"\0\0",compressWorker:function(g){return new u("STORE compression")},uncompressWorker:function(){return new u("STORE decompression")}},_.DEFLATE=e("./flate")},{"./flate":396,"./stream/GenericWorker":417}],393:[function(e,S,_){var u=e("./utils");function m(){for(var f,y=[],h=0;h<256;h++){f=h;for(var l=0;l<8;l++)f=f&1?3988292384^f>>>1:f>>>1;y[h]=f}return y}var g=m();function b(f,y,h,l){var d=g,s=l+h;f=f^-1;for(var v=l;v>>8^d[(f^y[v])&255];return f^-1}function w(f,y,h,l){var d=g,s=l+h;f=f^-1;for(var v=l;v>>8^d[(f^y.charCodeAt(v))&255];return f^-1}S.exports=function(y,h){if(typeof y>"u"||!y.length)return 0;var l=u.getTypeOf(y)!=="string";return l?b(h|0,y,y.length,0):w(h|0,y,y.length,0)}},{"./utils":421}],394:[function(e,S,_){_.base64=!1,_.binary=!1,_.dir=!1,_.createFolders=!0,_.date=null,_.compression=null,_.compressionOptions=null,_.comment=null,_.unixPermissions=null,_.dosPermissions=null},{}],395:[function(e,S,_){var u=null;typeof Promise<"u"?u=Promise:u=e("lie"),S.exports={Promise:u}},{lie:425}],396:[function(e,S,_){var u=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",m=e("pako"),g=e("./utils"),b=e("./stream/GenericWorker"),w=u?"uint8array":"array";_.magic="\b\0";function f(y,h){b.call(this,"FlateWorker/"+y),this._pako=null,this._pakoAction=y,this._pakoOptions=h,this.meta={}}g.inherits(f,b),f.prototype.processChunk=function(y){this.meta=y.meta,this._pako===null&&this._createPako(),this._pako.push(g.transformTo(w,y.data),!1)},f.prototype.flush=function(){b.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},f.prototype.cleanUp=function(){b.prototype.cleanUp.call(this),this._pako=null},f.prototype._createPako=function(){this._pako=new m[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var y=this;this._pako.onData=function(h){y.push({data:h,meta:y.meta})}},_.compressWorker=function(y){return new f("Deflate",y)},_.uncompressWorker=function(){return new f("Inflate",{})}},{"./stream/GenericWorker":417,"./utils":421,pako:439}],397:[function(e,S,_){var u=e("../utils"),m=e("../stream/GenericWorker"),g=e("../utf8"),b=e("../crc32"),w=e("../signature"),f=function(a,r){var t="",i;for(i=0;i>>8;return t},y=function(a,r){var t=a;return a||(t=r?16893:33204),(t&65535)<<16},h=function(a,r){return(a||0)&63},l=function(a,r,t,i,n,o){var p=a.file,O=a.compression,C=o!==g.utf8encode,N=u.transformTo("string",o(p.name)),L=u.transformTo("string",g.utf8encode(p.name)),F=p.comment,M=u.transformTo("string",o(F)),D=u.transformTo("string",g.utf8encode(F)),R=L.length!==p.name.length,P=D.length!==F.length,E,A,z="",W="",$="",U=p.dir,I=p.date,j={crc32:0,compressedSize:0,uncompressedSize:0};(!r||t)&&(j.crc32=a.crc32,j.compressedSize=a.compressedSize,j.uncompressedSize=a.uncompressedSize);var B=0;r&&(B|=8),!C&&(R||P)&&(B|=2048);var V=0,te=0;U&&(V|=16),n==="UNIX"?(te=798,V|=y(p.unixPermissions,U)):(te=20,V|=h(p.dosPermissions)),E=I.getUTCHours(),E=E<<6,E=E|I.getUTCMinutes(),E=E<<5,E=E|I.getUTCSeconds()/2,A=I.getUTCFullYear()-1980,A=A<<4,A=A|I.getUTCMonth()+1,A=A<<5,A=A|I.getUTCDate(),R&&(W=f(1,1)+f(b(N),4)+L,z+="up"+f(W.length,2)+W),P&&($=f(1,1)+f(b(M),4)+D,z+="uc"+f($.length,2)+$);var ie="";ie+=` +\0`,ie+=f(B,2),ie+=O.magic,ie+=f(E,2),ie+=f(A,2),ie+=f(j.crc32,4),ie+=f(j.compressedSize,4),ie+=f(j.uncompressedSize,4),ie+=f(N.length,2),ie+=f(z.length,2);var ce=w.LOCAL_FILE_HEADER+ie+N+z,be=w.CENTRAL_FILE_HEADER+f(te,2)+ie+f(M.length,2)+"\0\0\0\0"+f(V,4)+f(i,4)+N+z+M;return{fileRecord:ce,dirRecord:be}},d=function(a,r,t,i,n){var o="",p=u.transformTo("string",n(i));return o=w.CENTRAL_DIRECTORY_END+"\0\0\0\0"+f(a,2)+f(a,2)+f(r,4)+f(t,4)+f(p.length,2)+p,o},s=function(a){var r="";return r=w.DATA_DESCRIPTOR+f(a.crc32,4)+f(a.compressedSize,4)+f(a.uncompressedSize,4),r};function v(c,a,r,t){m.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=a,this.zipPlatform=r,this.encodeFileName=t,this.streamFiles=c,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}u.inherits(v,m),v.prototype.push=function(c){var a=c.meta.percent||0,r=this.entriesCount,t=this._sources.length;this.accumulate?this.contentBuffer.push(c):(this.bytesWritten+=c.data.length,m.prototype.push.call(this,{data:c.data,meta:{currentFile:this.currentFile,percent:r?(a+100*(r-t-1))/r:100}}))},v.prototype.openedSource=function(c){this.currentSourceOffset=this.bytesWritten,this.currentFile=c.file.name;var a=this.streamFiles&&!c.file.dir;if(a){var r=l(c,a,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},v.prototype.closedSource=function(c){this.accumulate=!1;var a=this.streamFiles&&!c.file.dir,r=l(c,a,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),a)this.push({data:s(c),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},v.prototype.flush=function(){for(var c=this.bytesWritten,a=0;a"u")&&(N.binary=!L);var F=o instanceof f&&o.uncompressedSize===0;(F||N.dir||!o||o.length===0)&&(N.base64=!1,N.binary=!0,o="",N.compression="STORE",O="string");var M=null;o instanceof f||o instanceof g?M=o:l.isNode&&l.isStream(o)?M=new d(n,o):M=m.prepareContent(n,o,N.binary,N.optimizedBinaryString,N.base64);var D=new y(n,M,N);this.files[n]=D},v=function(n){n.slice(-1)==="/"&&(n=n.substring(0,n.length-1));var o=n.lastIndexOf("/");return o>0?n.substring(0,o):""},c=function(n){return n.slice(-1)!=="/"&&(n+="/"),n},a=function(n,o){return o=typeof o<"u"?o:w.createFolders,n=c(n),this.files[n]||s.call(this,n,null,{dir:!0,createFolders:o}),this.files[n]};function r(i){return Object.prototype.toString.call(i)==="[object RegExp]"}var t={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(n){var o,p,O;for(o in this.files)this.files.hasOwnProperty(o)&&(O=this.files[o],p=o.slice(this.root.length,o.length),p&&o.slice(0,this.root.length)===this.root&&n(p,O))},filter:function(n){var o=[];return this.forEach(function(p,O){n(p,O)&&o.push(O)}),o},file:function(n,o,p){if(arguments.length===1)if(r(n)){var O=n;return this.filter(function(N,L){return!L.dir&&O.test(N)})}else{var C=this.files[this.root+n];return C&&!C.dir?C:null}else n=this.root+n,s.call(this,n,o,p);return this},folder:function(n){if(!n)return this;if(r(n))return this.filter(function(C,N){return N.dir&&n.test(C)});var o=this.root+n,p=a.call(this,o),O=this.clone();return O.root=p.name,O},remove:function(n){n=this.root+n;var o=this.files[n];if(o||(n.slice(-1)!=="/"&&(n+="/"),o=this.files[n]),o&&!o.dir)delete this.files[n];else for(var p=this.filter(function(C,N){return N.name.slice(0,n.length)===n}),O=0;O=0;--l)if(this.data[l]===w&&this.data[l+1]===f&&this.data[l+2]===y&&this.data[l+3]===h)return l-this.zero;return-1},g.prototype.readAndCheckSignature=function(b){var w=b.charCodeAt(0),f=b.charCodeAt(1),y=b.charCodeAt(2),h=b.charCodeAt(3),l=this.readData(4);return w===l[0]&&f===l[1]&&y===l[2]&&h===l[3]},g.prototype.readData=function(b){if(this.checkOffset(b),b===0)return[];var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},S.exports=g},{"../utils":421,"./DataReader":407}],407:[function(e,S,_){var u=e("../utils");function m(g){this.data=g,this.length=g.length,this.index=0,this.zero=0}m.prototype={checkOffset:function(b){this.checkIndex(this.index+b)},checkIndex:function(b){if(this.length=this.index;f--)w=(w<<8)+this.byteAt(f);return this.index+=b,w},readString:function(b){return u.transformTo("string",this.readData(b))},readData:function(b){},lastIndexOfSignature:function(b){},readAndCheckSignature:function(b){},readDate:function(){var b=this.readInt(4);return new Date(Date.UTC((b>>25&127)+1980,(b>>21&15)-1,b>>16&31,b>>11&31,b>>5&63,(b&31)<<1))}},S.exports=m},{"../utils":421}],408:[function(e,S,_){var u=e("./Uint8ArrayReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.readData=function(b){this.checkOffset(b);var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},S.exports=g},{"../utils":421,"./Uint8ArrayReader":410}],409:[function(e,S,_){var u=e("./DataReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.byteAt=function(b){return this.data.charCodeAt(this.zero+b)},g.prototype.lastIndexOfSignature=function(b){return this.data.lastIndexOf(b)-this.zero},g.prototype.readAndCheckSignature=function(b){var w=this.readData(4);return b===w},g.prototype.readData=function(b){this.checkOffset(b);var w=this.data.slice(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},S.exports=g},{"../utils":421,"./DataReader":407}],410:[function(e,S,_){var u=e("./ArrayReader"),m=e("../utils");function g(b){u.call(this,b)}m.inherits(g,u),g.prototype.readData=function(b){if(this.checkOffset(b),b===0)return new Uint8Array(0);var w=this.data.subarray(this.zero+this.index,this.zero+this.index+b);return this.index+=b,w},S.exports=g},{"../utils":421,"./ArrayReader":406}],411:[function(e,S,_){var u=e("../utils"),m=e("../support"),g=e("./ArrayReader"),b=e("./StringReader"),w=e("./NodeBufferReader"),f=e("./Uint8ArrayReader");S.exports=function(y){var h=u.getTypeOf(y);return u.checkSupport(h),h==="string"&&!m.uint8array?new b(y):h==="nodebuffer"?new w(y):m.uint8array?new f(u.transformTo("uint8array",y)):new g(u.transformTo("array",y))}},{"../support":419,"../utils":421,"./ArrayReader":406,"./NodeBufferReader":408,"./StringReader":409,"./Uint8ArrayReader":410}],412:[function(e,S,_){_.LOCAL_FILE_HEADER="PK",_.CENTRAL_FILE_HEADER="PK",_.CENTRAL_DIRECTORY_END="PK",_.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",_.ZIP64_CENTRAL_DIRECTORY_END="PK",_.DATA_DESCRIPTOR="PK\x07\b"},{}],413:[function(e,S,_){var u=e("./GenericWorker"),m=e("../utils");function g(b){u.call(this,"ConvertWorker to "+b),this.destType=b}m.inherits(g,u),g.prototype.processChunk=function(b){this.push({data:m.transformTo(this.destType,b.data),meta:b.meta})},S.exports=g},{"../utils":421,"./GenericWorker":417}],414:[function(e,S,_){var u=e("./GenericWorker"),m=e("../crc32"),g=e("../utils");function b(){u.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}g.inherits(b,u),b.prototype.processChunk=function(w){this.streamInfo.crc32=m(w.data,this.streamInfo.crc32||0),this.push(w)},S.exports=b},{"../crc32":393,"../utils":421,"./GenericWorker":417}],415:[function(e,S,_){var u=e("../utils"),m=e("./GenericWorker");function g(b){m.call(this,"DataLengthProbe for "+b),this.propName=b,this.withStreamInfo(b,0)}u.inherits(g,m),g.prototype.processChunk=function(b){if(b){var w=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=w+b.data.length}m.prototype.processChunk.call(this,b)},S.exports=g},{"../utils":421,"./GenericWorker":417}],416:[function(e,S,_){var u=e("../utils"),m=e("./GenericWorker"),g=16*1024;function b(w){m.call(this,"DataWorker");var f=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,w.then(function(y){f.dataIsReady=!0,f.data=y,f.max=y&&y.length||0,f.type=u.getTypeOf(y),f.isPaused||f._tickAndRepeat()},function(y){f.error(y)})}u.inherits(b,m),b.prototype.cleanUp=function(){m.prototype.cleanUp.call(this),this.data=null},b.prototype.resume=function(){return m.prototype.resume.call(this)?(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,u.delay(this._tickAndRepeat,[],this)),!0):!1},b.prototype._tickAndRepeat=function(){this._tickScheduled=!1,!(this.isPaused||this.isFinished)&&(this._tick(),this.isFinished||(u.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},b.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var w=g,f=null,y=Math.min(this.max,this.index+w);if(this.index>=this.max)return this.end();switch(this.type){case"string":f=this.data.substring(this.index,y);break;case"uint8array":f=this.data.subarray(this.index,y);break;case"array":case"nodebuffer":f=this.data.slice(this.index,y);break}return this.index=y,this.push({data:f,meta:{percent:this.max?this.index/this.max*100:0}})},S.exports=b},{"../utils":421,"./GenericWorker":417}],417:[function(e,S,_){function u(m){this.name=m||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}u.prototype={push:function(g){this.emit("data",g)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(g){this.emit("error",g)}return!0},error:function(g){return this.isFinished?!1:(this.isPaused?this.generatedError=g:(this.isFinished=!0,this.emit("error",g),this.previous&&this.previous.error(g),this.cleanUp()),!0)},on:function(g,b){return this._listeners[g].push(b),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(g,b){if(this._listeners[g])for(var w=0;w "+g:g}},S.exports=u},{}],418:[function(e,S,_){(function(u){var m=e("../utils"),g=e("./ConvertWorker"),b=e("./GenericWorker"),w=e("../base64"),f=e("../support"),y=e("../external"),h=null;if(f.nodestream)try{h=e("../nodejs/NodejsStreamOutputAdapter")}catch{}function l(c,a,r){switch(c){case"blob":return m.newBlob(m.transformTo("arraybuffer",a),r);case"base64":return w.encode(a);default:return m.transformTo(c,a)}}function d(c,a){var r,t=0,i=null,n=0;for(r=0;r"u")_.blob=!1;else{var m=new ArrayBuffer(0);try{_.blob=new Blob([m],{type:"application/zip"}).size===0}catch{try{var g=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,b=new g;b.append(m),_.blob=b.getBlob("application/zip").size===0}catch{_.blob=!1}}}try{_.nodestream=!!e("readable-stream").Readable}catch{_.nodestream=!1}}).call(this,e("buffer").Buffer)},{buffer:216,"readable-stream":405}],420:[function(e,S,_){for(var u=e("./utils"),m=e("./support"),g=e("./nodejsUtils"),b=e("./stream/GenericWorker"),w=new Array(256),f=0;f<256;f++)w[f]=f>=252?6:f>=248?5:f>=240?4:f>=224?3:f>=192?2:1;w[254]=w[254]=1;var y=function(c){var a,r,t,i,n,o=c.length,p=0;for(i=0;i>>6,a[n++]=128|r&63):r<65536?(a[n++]=224|r>>>12,a[n++]=128|r>>>6&63,a[n++]=128|r&63):(a[n++]=240|r>>>18,a[n++]=128|r>>>12&63,a[n++]=128|r>>>6&63,a[n++]=128|r&63);return a},h=function(c,a){var r;for(a=a||c.length,a>c.length&&(a=c.length),r=a-1;r>=0&&(c[r]&192)===128;)r--;return r<0||r===0?a:r+w[c[r]]>a?r:a},l=function(c){var a,r,t,i,n=c.length,o=new Array(n*2);for(r=0,a=0;a4){o[r++]=65533,a+=i-1;continue}for(t&=i===2?31:i===3?15:7;i>1&&a1){o[r++]=65533;continue}t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|t&1023)}return o.length!==r&&(o.subarray?o=o.subarray(0,r):o.length=r),u.applyFromCharCode(o)};_.utf8encode=function(c){return m.nodebuffer?g.newBufferFrom(c,"utf-8"):y(c)},_.utf8decode=function(c){return m.nodebuffer?u.transformTo("nodebuffer",c).toString("utf-8"):(c=u.transformTo(m.uint8array?"uint8array":"array",c),l(c))};function d(){b.call(this,"utf-8 decode"),this.leftOver=null}u.inherits(d,b),d.prototype.processChunk=function(v){var c=u.transformTo(m.uint8array?"uint8array":"array",v.data);if(this.leftOver&&this.leftOver.length){if(m.uint8array){var a=c;c=new Uint8Array(a.length+this.leftOver.length),c.set(this.leftOver,0),c.set(a,this.leftOver.length)}else c=this.leftOver.concat(c);this.leftOver=null}var r=h(c),t=c;r!==c.length&&(m.uint8array?(t=c.subarray(0,r),this.leftOver=c.subarray(r,c.length)):(t=c.slice(0,r),this.leftOver=c.slice(r,c.length))),this.push({data:_.utf8decode(t),meta:v.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:_.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},_.Utf8DecodeWorker=d;function s(){b.call(this,"utf-8 encode")}u.inherits(s,b),s.prototype.processChunk=function(v){this.push({data:_.utf8encode(v.data),meta:v.meta})},_.Utf8EncodeWorker=s},{"./nodejsUtils":403,"./stream/GenericWorker":417,"./support":419,"./utils":421}],421:[function(e,S,_){var u=e("./support"),m=e("./base64"),g=e("./nodejsUtils"),b=e("set-immediate-shim"),w=e("./external");function f(c){var a=null;return u.uint8array?a=new Uint8Array(c.length):a=new Array(c.length),h(c,a)}_.newBlob=function(c,a){_.checkSupport("blob");try{return new Blob([c],{type:a})}catch{try{var r=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,t=new r;return t.append(c),t.getBlob(a)}catch{throw new Error("Bug : can't construct the Blob.")}}};function y(c){return c}function h(c,a){for(var r=0;r1;)try{return l.stringifyByChunk(c,r,a)}catch{a=Math.floor(a/2)}return l.stringifyByChar(c)}_.applyFromCharCode=d;function s(c,a){for(var r=0;r"u"&&(c[r]=arguments[a][r]);return c},_.prepareContent=function(c,a,r,t,i){var n=w.Promise.resolve(a).then(function(o){var p=u.blob&&(o instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(o))!==-1);return p&&typeof FileReader<"u"?new w.Promise(function(O,C){var N=new FileReader;N.onload=function(L){O(L.target.result)},N.onerror=function(L){C(L.target.error)},N.readAsArrayBuffer(o)}):o});return n.then(function(o){var p=_.getTypeOf(o);return p?(p==="arraybuffer"?o=_.transformTo("uint8array",o):p==="string"&&(i?o=m.decode(o):r&&t!==!0&&(o=f(o))),o):w.Promise.reject(new Error("Can't read the data of '"+c+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":390,"./external":395,"./nodejsUtils":403,"./support":419,"set-immediate-shim":497}],422:[function(e,S,_){var u=e("./reader/readerFor"),m=e("./utils"),g=e("./signature"),b=e("./zipEntry");e("./utf8");var w=e("./support");function f(y){this.files=[],this.loadOptions=y}f.prototype={checkSignature:function(h){if(!this.reader.readAndCheckSignature(h)){this.reader.index-=4;var l=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+m.pretty(l)+", expected "+m.pretty(h)+")")}},isSignature:function(h,l){var d=this.reader.index;this.reader.setIndex(h);var s=this.reader.readString(4),v=s===l;return this.reader.setIndex(d),v},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var h=this.reader.readData(this.zipCommentLength),l=w.uint8array?"uint8array":"array",d=m.transformTo(l,h);this.zipComment=this.loadOptions.decodeFileName(d)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var h=this.zip64EndOfCentralSize-44,l=0,d,s,v;l1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var h,l;for(h=0;h0)this.isSignature(d,g.CENTRAL_FILE_HEADER)||(this.reader.zero=v);else if(v<0)throw new Error("Corrupted zip: missing "+Math.abs(v)+" bytes.")},prepareReader:function(h){this.reader=u(h)},load:function(h){this.prepareReader(h),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},S.exports=f},{"./reader/readerFor":411,"./signature":412,"./support":419,"./utf8":420,"./utils":421,"./zipEntry":423}],423:[function(e,S,_){var u=e("./reader/readerFor"),m=e("./utils"),g=e("./compressedObject"),b=e("./crc32"),w=e("./utf8"),f=e("./compressions"),y=e("./support"),h=0,l=3,d=function(c){for(var a in f)if(f.hasOwnProperty(a)&&f[a].magic===c)return f[a];return null};function s(v,c){this.options=v,this.loadOptions=c}s.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(c){var a,r;if(c.skip(22),this.fileNameLength=c.readInt(2),r=c.readInt(2),this.fileName=c.readData(this.fileNameLength),c.skip(r),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(a=d(this.compressionMethod),a===null)throw new Error("Corrupted zip : compression "+m.pretty(this.compressionMethod)+" unknown (inner file : "+m.transformTo("string",this.fileName)+")");this.decompressed=new g(this.compressedSize,this.uncompressedSize,this.crc32,a,c.readData(this.compressedSize))},readCentralPart:function(c){this.versionMadeBy=c.readInt(2),c.skip(2),this.bitFlag=c.readInt(2),this.compressionMethod=c.readString(2),this.date=c.readDate(),this.crc32=c.readInt(4),this.compressedSize=c.readInt(4),this.uncompressedSize=c.readInt(4);var a=c.readInt(2);if(this.extraFieldsLength=c.readInt(2),this.fileCommentLength=c.readInt(2),this.diskNumberStart=c.readInt(2),this.internalFileAttributes=c.readInt(2),this.externalFileAttributes=c.readInt(4),this.localHeaderOffset=c.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");c.skip(a),this.readExtraFields(c),this.parseZIP64ExtraField(c),this.fileComment=c.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var c=this.versionMadeBy>>8;this.dir=!!(this.externalFileAttributes&16),c===h&&(this.dosPermissions=this.externalFileAttributes&63),c===l&&(this.unixPermissions=this.externalFileAttributes>>16&65535),!this.dir&&this.fileNameStr.slice(-1)==="/"&&(this.dir=!0)},parseZIP64ExtraField:function(c){if(this.extraFields[1]){var a=u(this.extraFields[1].value);this.uncompressedSize===m.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===m.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===m.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===m.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(c){var a=c.index+this.extraFieldsLength,r,t,i;for(this.extraFields||(this.extraFields={});c.index+4"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,h=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,l=y||h||Function("return this")(),d=Object.prototype,s=d.toString,v=l.Symbol,c=v?v.prototype:void 0,a=c?c.toString:void 0;function r(p){if(typeof p=="string")return p;if(i(p))return a?a.call(p):"";var O=p+"";return O=="0"&&1/p==-g?"-0":O}function t(p){return!!p&&m(p)=="object"}function i(p){return m(p)=="symbol"||t(p)&&s.call(p)==b}function n(p){return p==null?"":r(p)}function o(p){return p=n(p),p&&f.test(p)?p.replace(w,"\\$&"):p}S.exports=o}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],427:[function(e,S,_){(function(u){function m(le){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(He){return typeof He}:m=function(He){return He&&typeof Symbol=="function"&&He.constructor===Symbol&&He!==Symbol.prototype?"symbol":typeof He},m(le)}var g=200,b="Expected a function",w="__lodash_hash_undefined__",f=1,y=2,h=1/0,l=9007199254740991,d="[object Arguments]",s="[object Array]",v="[object Boolean]",c="[object Date]",a="[object Error]",r="[object Function]",t="[object GeneratorFunction]",i="[object Map]",n="[object Number]",o="[object Object]",p="[object Promise]",O="[object RegExp]",C="[object Set]",N="[object String]",L="[object Symbol]",F="[object WeakMap]",M="[object ArrayBuffer]",D="[object DataView]",R="[object Float32Array]",P="[object Float64Array]",E="[object Int8Array]",A="[object Int16Array]",z="[object Int32Array]",W="[object Uint8Array]",$="[object Uint8ClampedArray]",U="[object Uint16Array]",I="[object Uint32Array]",j=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,B=/^\w*$/,V=/^\./,te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,ce=/\\(\\)?/g,be=/^\[object .+?Constructor\]$/,_e=/^(?:0|[1-9]\d*)$/,oe={};oe[R]=oe[P]=oe[E]=oe[A]=oe[z]=oe[W]=oe[$]=oe[U]=oe[I]=!0,oe[d]=oe[s]=oe[M]=oe[v]=oe[D]=oe[c]=oe[a]=oe[r]=oe[i]=oe[n]=oe[o]=oe[O]=oe[C]=oe[N]=oe[F]=!1;var J=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,Q=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,he=J||Q||Function("return this")(),ke=(typeof _>"u"?"undefined":m(_))=="object"&&_&&!_.nodeType&&_,re=ke&&(typeof S>"u"?"undefined":m(S))=="object"&&S&&!S.nodeType&&S,se=re&&re.exports===ke,Ce=se&&J.process,q=function(){try{return Ce&&Ce.binding("util")}catch{}}(),G=q&&q.isTypedArray;function Z(le,Oe,He,ft){for(var Tt=-1,mt=le?le.length:0;++Tt-1}function Zr(le,Oe){var He=this.__data__,ft=zr(He,le);return ft<0?He.push([le,Oe]):He[ft][1]=Oe,this}Et.prototype.clear=Dr,Et.prototype.delete=Or,Et.prototype.get=Gr,Et.prototype.has=Nr,Et.prototype.set=Zr;function Qt(le){var Oe=-1,He=le?le.length:0;for(this.clear();++Oeir))return!1;var _r=mt.get(le);if(_r&&mt.get(Oe))return _r==Oe;var Tr=-1,wr=!0,Rr=Tt&f?new Ke:void 0;for(mt.set(le,Oe),mt.set(Oe,le);++Tr-1&&le%1==0&&le-1&&le%1==0&&le<=l}function dr(le){var Oe=m(le);return!!le&&(Oe=="object"||Oe=="function")}function Er(le){return!!le&&m(le)=="object"}function Ar(le){return m(le)=="symbol"||Er(le)&&pe.call(le)==L}var pr=G?je(G):Wi;function pn(le){return le==null?"":wa(le)}function mr(le,Oe,He){var ft=le==null?void 0:yi(le,Oe);return ft===void 0?He:ft}function ea(le,Oe){return le!=null&&Yi(le,Oe,dn)}function En(le){return tr(le)?rn(le):Bn(le)}function Yr(le){return le}function ta(le){return er(le)?we(De(le)):xn(le)}S.exports=ht}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],428:[function(e,S,_){function u(y){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(l){return typeof l}:u=function(l){return l&&typeof Symbol=="function"&&l.constructor===Symbol&&l!==Symbol.prototype?"symbol":typeof l},u(y)}var m="[object Boolean]",g=Object.prototype,b=g.toString;function w(y){return y===!0||y===!1||f(y)&&b.call(y)==m}function f(y){return!!y&&u(y)=="object"}S.exports=w},{}],429:[function(e,S,_){(function(u){function m(xe){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(Je){return typeof Je}:m=function(Je){return Je&&typeof Symbol=="function"&&Je.constructor===Symbol&&Je!==Symbol.prototype?"symbol":typeof Je},m(xe)}var g=200,b="__lodash_hash_undefined__",w=1,f=2,y=9007199254740991,h="[object Arguments]",l="[object Array]",d="[object AsyncFunction]",s="[object Boolean]",v="[object Date]",c="[object Error]",a="[object Function]",r="[object GeneratorFunction]",t="[object Map]",i="[object Number]",n="[object Null]",o="[object Object]",p="[object Promise]",O="[object Proxy]",C="[object RegExp]",N="[object Set]",L="[object String]",F="[object Symbol]",M="[object Undefined]",D="[object WeakMap]",R="[object ArrayBuffer]",P="[object DataView]",E="[object Float32Array]",A="[object Float64Array]",z="[object Int8Array]",W="[object Int16Array]",$="[object Int32Array]",U="[object Uint8Array]",I="[object Uint8ClampedArray]",j="[object Uint16Array]",B="[object Uint32Array]",V=/[\\^$.*+?()[\]{}|]/g,te=/^\[object .+?Constructor\]$/,ie=/^(?:0|[1-9]\d*)$/,ce={};ce[E]=ce[A]=ce[z]=ce[W]=ce[$]=ce[U]=ce[I]=ce[j]=ce[B]=!0,ce[h]=ce[l]=ce[R]=ce[s]=ce[P]=ce[v]=ce[c]=ce[a]=ce[t]=ce[i]=ce[o]=ce[C]=ce[N]=ce[L]=ce[D]=!1;var be=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,_e=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,oe=be||_e||Function("return this")(),J=(typeof _>"u"?"undefined":m(_))=="object"&&_&&!_.nodeType&&_,Q=J&&(typeof S>"u"?"undefined":m(S))=="object"&&S&&!S.nodeType&&S,he=Q&&Q.exports===J,ke=he&&be.process,re=function(){try{return ke&&ke.binding&&ke.binding("util")}catch{}}(),se=re&&re.isTypedArray;function Ce(xe,De){for(var Je=-1,ht=xe==null?0:xe.length,Zt=0,Mt=[];++Je-1}function Zr(xe,De){var Je=this.__data__,ht=zr(Je,xe);return ht<0?(++this.size,Je.push([xe,De])):Je[ht][1]=De,this}Et.prototype.clear=Dr,Et.prototype.delete=Or,Et.prototype.get=Gr,Et.prototype.has=Nr,Et.prototype.set=Zr;function Qt(xe){var De=-1,Je=xe==null?0:xe.length;for(this.clear();++Denr))return!1;var ur=Mt.get(xe);if(ur&&Mt.get(De))return ur==De;var Pr=-1,Br=!0,dr=Je&f?new Ke:void 0;for(Mt.set(xe,De),Mt.set(De,xe);++Pr-1&&xe%1==0&&xe-1&&xe%1==0&&xe<=y}function er(xe){var De=m(xe);return xe!=null&&(De=="object"||De=="function")}function ti(xe){return xe!=null&&m(xe)=="object"}var Ji=se?fe(se):dn;function Oa(xe){return ka(xe)?rn(xe):Nn(xe)}function Qi(){return[]}function qi(){return!1}S.exports=On}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],430:[function(e,S,_){(function(u){function m(C){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(L){return typeof L}:m=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},m(C)}var g="[object AsyncFunction]",b="[object Function]",w="[object GeneratorFunction]",f="[object Null]",y="[object Proxy]",h="[object Undefined]",l=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,d=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,s=l||d||Function("return this")(),v=Object.prototype,c=v.hasOwnProperty,a=v.toString,r=s.Symbol,t=r?r.toStringTag:void 0;function i(C){return C==null?C===void 0?h:f:t&&t in Object(C)?n(C):o(C)}function n(C){var N=c.call(C,t),L=C[t];try{C[t]=void 0;var F=!0}catch{}var M=a.call(C);return F&&(N?C[t]=L:delete C[t]),M}function o(C){return a.call(C)}function p(C){if(!O(C))return!1;var N=i(C);return N==b||N==w||N==g||N==y}function O(C){var N=m(C);return C!=null&&(N=="object"||N=="function")}S.exports=p}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],431:[function(e,S,_){function u(m){return m==null}S.exports=u},{}],432:[function(e,S,_){function u(m){return m===void 0}S.exports=u},{}],433:[function(e,S,_){(function(u){function m(me){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(pe){return typeof pe}:m=function(pe){return pe&&typeof Symbol=="function"&&pe.constructor===Symbol&&pe!==Symbol.prototype?"symbol":typeof pe},m(me)}var g=200,b="__lodash_hash_undefined__",w=1/0,f="[object Function]",y="[object GeneratorFunction]",h=/[\\^$.*+?()[\]{}|]/g,l=/^\[object .+?Constructor\]$/,d=(typeof u>"u"?"undefined":m(u))=="object"&&u&&u.Object===Object&&u,s=(typeof self>"u"?"undefined":m(self))=="object"&&self&&self.Object===Object&&self,v=d||s||Function("return this")();function c(me,Ee){var pe=me?me.length:0;return!!pe&&t(me,Ee,0)>-1}function a(me,Ee,pe){for(var Pe=-1,ee=me?me.length:0;++Pe-1}function J(me,Ee){var pe=this.__data__,Pe=fe(pe,me);return Pe<0?pe.push([me,Ee]):pe[Pe][1]=Ee,this}ie.prototype.clear=ce,ie.prototype.delete=be,ie.prototype.get=_e,ie.prototype.has=oe,ie.prototype.set=J;function Q(me){var Ee=-1,pe=me?me.length:0;for(this.clear();++Ee=g){var Le=Ee?null:je(me);if(Le)return O(Le);it=!1,ee=n,Me=new q}else Me=Ee?[]:K;e:for(;++Pe56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var s=g.allocUnsafe(16);return s.writeInt32LE(this._a,0),s.writeInt32LE(this._b,4),s.writeInt32LE(this._c,8),s.writeInt32LE(this._d,12),s};function f(s,v){return s<>>32-v}function y(s,v,c,a,r,t,i){return f(s+(v&c|~v&a)+r+t|0,i)+v|0}function h(s,v,c,a,r,t,i){return f(s+(v&a|c&~a)+r+t|0,i)+v|0}function l(s,v,c,a,r,t,i){return f(s+(v^c^a)+r+t|0,i)+v|0}function d(s,v,c,a,r,t,i){return f(s+(c^(v|~a))+r+t|0,i)+v|0}S.exports=w},{"hash-base":370,inherits:387,"safe-buffer":494}],435:[function(e,S,_){var u=e("bn.js"),m=e("brorand");function g(b){this.rand=b||new m.Rand}S.exports=g,g.create=function(w){return new g(w)},g.prototype._randbelow=function(w){var f=w.bitLength(),y=Math.ceil(f/8);do var h=new u(this.rand.generate(y));while(h.cmp(w)>=0);return h},g.prototype._randrange=function(w,f){var y=f.sub(w);return w.add(this._randbelow(y))},g.prototype.test=function(w,f,y){var h=w.bitLength(),l=u.mont(w),d=new u(1).toRed(l);f||(f=Math.max(1,h/48|0));for(var s=w.subn(1),v=0;!s.testn(v);v++);for(var c=w.shrn(v),a=s.toRed(l),r=!0;f>0;f--){var t=this._randrange(new u(2),s);y&&y(t);var i=t.toRed(l).redPow(c);if(!(i.cmp(d)===0||i.cmp(a)===0)){for(var n=1;n0;f--){var a=this._randrange(new u(2),d),r=w.gcd(a);if(r.cmpn(1)!==0)return r;var t=a.toRed(h).redPow(v);if(!(t.cmp(l)===0||t.cmp(c)===0)){for(var i=1;i>8,s=l&255;d?y.push(d,s):y.push(s)}return y}u.toArray=m;function g(w){return w.length===1?"0"+w:w}u.zero2=g;function b(w){for(var f="",y=0;y0?p.windowBits=-p.windowBits:p.gzip&&p.windowBits>0&&p.windowBits<16&&(p.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new w,this.strm.avail_out=0;var O=u.deflateInit2(this.strm,p.level,p.method,p.windowBits,p.memLevel,p.strategy);if(O!==l)throw new Error(b[O]);if(p.header&&u.deflateSetHeader(this.strm,p.header),p.dictionary){var C;if(typeof p.dictionary=="string"?C=g.string2buf(p.dictionary):f.call(p.dictionary)==="[object ArrayBuffer]"?C=new Uint8Array(p.dictionary):C=p.dictionary,O=u.deflateSetDictionary(this.strm,C),O!==l)throw new Error(b[O]);this._dict_set=!0}}r.prototype.push=function(o,p){var O=this.strm,C=this.options.chunkSize,N,L;if(this.ended)return!1;L=p===~~p?p:p===!0?h:y,typeof o=="string"?O.input=g.string2buf(o):f.call(o)==="[object ArrayBuffer]"?O.input=new Uint8Array(o):O.input=o,O.next_in=0,O.avail_in=O.input.length;do{if(O.avail_out===0&&(O.output=new m.Buf8(C),O.next_out=0,O.avail_out=C),N=u.deflate(O,L),N!==d&&N!==l)return this.onEnd(N),this.ended=!0,!1;(O.avail_out===0||O.avail_in===0&&(L===h||L===s))&&(this.options.to==="string"?this.onData(g.buf2binstring(m.shrinkBuf(O.output,O.next_out))):this.onData(m.shrinkBuf(O.output,O.next_out)))}while((O.avail_in>0||O.avail_out===0)&&N!==d);return L===h?(N=u.deflateEnd(this.strm),this.onEnd(N),this.ended=!0,N===l):(L===s&&(this.onEnd(l),O.avail_out=0),!0)},r.prototype.onData=function(o){this.chunks.push(o)},r.prototype.onEnd=function(o){o===l&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=m.flattenChunks(this.chunks)),this.chunks=[],this.err=o,this.msg=this.strm.msg};function t(o,p){var O=new r(p);if(O.push(o,!0),O.err)throw O.msg||b[O.err];return O.result}function i(o,p){return p=p||{},p.raw=!0,t(o,p)}function n(o,p){return p=p||{},p.gzip=!0,t(o,p)}_.Deflate=r,_.deflate=t,_.deflateRaw=i,_.gzip=n},{"./utils/common":442,"./utils/strings":443,"./zlib/deflate":447,"./zlib/messages":452,"./zlib/zstream":454}],441:[function(e,S,_){var u=e("./zlib/inflate"),m=e("./utils/common"),g=e("./utils/strings"),b=e("./zlib/constants"),w=e("./zlib/messages"),f=e("./zlib/zstream"),y=e("./zlib/gzheader"),h=Object.prototype.toString;function l(v){if(!(this instanceof l))return new l(v);this.options=m.assign({chunkSize:16384,windowBits:0,to:""},v||{});var c=this.options;c.raw&&c.windowBits>=0&&c.windowBits<16&&(c.windowBits=-c.windowBits,c.windowBits===0&&(c.windowBits=-15)),c.windowBits>=0&&c.windowBits<16&&!(v&&v.windowBits)&&(c.windowBits+=32),c.windowBits>15&&c.windowBits<48&&(c.windowBits&15||(c.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var a=u.inflateInit2(this.strm,c.windowBits);if(a!==b.Z_OK)throw new Error(w[a]);if(this.header=new y,u.inflateGetHeader(this.strm,this.header),c.dictionary&&(typeof c.dictionary=="string"?c.dictionary=g.string2buf(c.dictionary):h.call(c.dictionary)==="[object ArrayBuffer]"&&(c.dictionary=new Uint8Array(c.dictionary)),c.raw&&(a=u.inflateSetDictionary(this.strm,c.dictionary),a!==b.Z_OK)))throw new Error(w[a])}l.prototype.push=function(v,c){var a=this.strm,r=this.options.chunkSize,t=this.options.dictionary,i,n,o,p,O,C=!1;if(this.ended)return!1;n=c===~~c?c:c===!0?b.Z_FINISH:b.Z_NO_FLUSH,typeof v=="string"?a.input=g.binstring2buf(v):h.call(v)==="[object ArrayBuffer]"?a.input=new Uint8Array(v):a.input=v,a.next_in=0,a.avail_in=a.input.length;do{if(a.avail_out===0&&(a.output=new m.Buf8(r),a.next_out=0,a.avail_out=r),i=u.inflate(a,b.Z_NO_FLUSH),i===b.Z_NEED_DICT&&t&&(i=u.inflateSetDictionary(this.strm,t)),i===b.Z_BUF_ERROR&&C===!0&&(i=b.Z_OK,C=!1),i!==b.Z_STREAM_END&&i!==b.Z_OK)return this.onEnd(i),this.ended=!0,!1;a.next_out&&(a.avail_out===0||i===b.Z_STREAM_END||a.avail_in===0&&(n===b.Z_FINISH||n===b.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=g.utf8border(a.output,a.next_out),p=a.next_out-o,O=g.buf2string(a.output,o),a.next_out=p,a.avail_out=r-p,p&&m.arraySet(a.output,a.output,o,p,0),this.onData(O)):this.onData(m.shrinkBuf(a.output,a.next_out))),a.avail_in===0&&a.avail_out===0&&(C=!0)}while((a.avail_in>0||a.avail_out===0)&&i!==b.Z_STREAM_END);return i===b.Z_STREAM_END&&(n=b.Z_FINISH),n===b.Z_FINISH?(i=u.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===b.Z_OK):(n===b.Z_SYNC_FLUSH&&(this.onEnd(b.Z_OK),a.avail_out=0),!0)},l.prototype.onData=function(v){this.chunks.push(v)},l.prototype.onEnd=function(v){v===b.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=m.flattenChunks(this.chunks)),this.chunks=[],this.err=v,this.msg=this.strm.msg};function d(v,c){var a=new l(c);if(a.push(v,!0),a.err)throw a.msg||w[a.err];return a.result}function s(v,c){return c=c||{},c.raw=!0,d(v,c)}_.Inflate=l,_.inflate=d,_.inflateRaw=s,_.ungzip=d},{"./utils/common":442,"./utils/strings":443,"./zlib/constants":445,"./zlib/gzheader":448,"./zlib/inflate":450,"./zlib/messages":452,"./zlib/zstream":454}],442:[function(e,S,_){function u(f){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(h){return typeof h}:u=function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},u(f)}var m=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function g(f,y){return Object.prototype.hasOwnProperty.call(f,y)}_.assign=function(f){for(var y=Array.prototype.slice.call(arguments,1);y.length;){var h=y.shift();if(h){if(u(h)!=="object")throw new TypeError(h+"must be non-object");for(var l in h)g(h,l)&&(f[l]=h[l])}}return f},_.shrinkBuf=function(f,y){return f.length===y?f:f.subarray?f.subarray(0,y):(f.length=y,f)};var b={arraySet:function(y,h,l,d,s){if(h.subarray&&y.subarray){y.set(h.subarray(l,l+d),s);return}for(var v=0;v=252?6:w>=248?5:w>=240?4:w>=224?3:w>=192?2:1;b[254]=b[254]=1,_.string2buf=function(y){var h,l,d,s,v,c=y.length,a=0;for(s=0;s>>6,h[v++]=128|l&63):l<65536?(h[v++]=224|l>>>12,h[v++]=128|l>>>6&63,h[v++]=128|l&63):(h[v++]=240|l>>>18,h[v++]=128|l>>>12&63,h[v++]=128|l>>>6&63,h[v++]=128|l&63);return h};function f(y,h){if(h<65534&&(y.subarray&&g||!y.subarray&&m))return String.fromCharCode.apply(null,u.shrinkBuf(y,h));for(var l="",d=0;d4){a[d++]=65533,l+=v-1;continue}for(s&=v===2?31:v===3?15:7;v>1&&l1){a[d++]=65533;continue}s<65536?a[d++]=s:(s-=65536,a[d++]=55296|s>>10&1023,a[d++]=56320|s&1023)}return f(a,d)},_.utf8border=function(y,h){var l;for(h=h||y.length,h>y.length&&(h=y.length),l=h-1;l>=0&&(y[l]&192)===128;)l--;return l<0||l===0?h:l+b[y[l]]>h?l:h}},{"./common":442}],444:[function(e,S,_){function u(m,g,b,w){for(var f=m&65535|0,y=m>>>16&65535|0,h=0;b!==0;){h=b>2e3?2e3:b,b-=h;do f=f+g[w++]|0,y=y+f|0;while(--h);f%=65521,y%=65521}return f|y<<16|0}S.exports=u},{}],445:[function(e,S,_){S.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],446:[function(e,S,_){function u(){for(var b,w=[],f=0;f<256;f++){b=f;for(var y=0;y<8;y++)b=b&1?3988292384^b>>>1:b>>>1;w[f]=b}return w}var m=u();function g(b,w,f,y){var h=m,l=y+f;b^=-1;for(var d=y;d>>8^h[(b^w[d])&255];return b^-1}S.exports=g},{}],447:[function(e,S,_){var u=e("../utils/common"),m=e("./trees"),g=e("./adler32"),b=e("./crc32"),w=e("./messages"),f=0,y=1,h=3,l=4,d=5,s=0,v=1,c=-2,a=-3,r=-5,t=-1,i=1,n=2,o=3,p=4,O=0,C=2,N=8,L=9,F=15,M=8,D=29,R=256,P=R+1+D,E=30,A=19,z=2*P+1,W=15,$=3,U=258,I=U+$+1,j=32,B=42,V=69,te=73,ie=91,ce=103,be=113,_e=666,oe=1,J=2,Q=3,he=4,ke=3;function re(K,Me){return K.msg=w[Me],Me}function se(K){return(K<<1)-(K>4?9:0)}function Ce(K){for(var Me=K.length;--Me>=0;)K[Me]=0}function q(K){var Me=K.state,Le=Me.pending;Le>K.avail_out&&(Le=K.avail_out),Le!==0&&(u.arraySet(K.output,Me.pending_buf,Me.pending_out,Le,K.next_out),K.next_out+=Le,Me.pending_out+=Le,K.total_out+=Le,K.avail_out-=Le,Me.pending-=Le,Me.pending===0&&(Me.pending_out=0))}function G(K,Me){m._tr_flush_block(K,K.block_start>=0?K.block_start:-1,K.strstart-K.block_start,Me),K.block_start=K.strstart,q(K.strm)}function Z(K,Me){K.pending_buf[K.pending++]=Me}function fe(K,Me){K.pending_buf[K.pending++]=Me>>>8&255,K.pending_buf[K.pending++]=Me&255}function we(K,Me,Le,ue){var Se=K.avail_in;return Se>ue&&(Se=ue),Se===0?0:(K.avail_in-=Se,u.arraySet(Me,K.input,K.next_in,Se,Le),K.state.wrap===1?K.adler=g(K.adler,Me,Se,Le):K.state.wrap===2&&(K.adler=b(K.adler,Me,Se,Le)),K.next_in+=Se,K.total_in+=Se,Se)}function ge(K,Me){var Le=K.max_chain_length,ue=K.strstart,Se,Ie,st=K.prev_length,Ge=K.nice_match,rt=K.strstart>K.w_size-I?K.strstart-(K.w_size-I):0,_t=K.window,wt=K.w_mask,Ot=K.prev,pt=K.strstart+U,ct=_t[ue+st-1],At=_t[ue+st];K.prev_length>=K.good_match&&(Le>>=2),Ge>K.lookahead&&(Ge=K.lookahead);do if(Se=Me,!(_t[Se+st]!==At||_t[Se+st-1]!==ct||_t[Se]!==_t[ue]||_t[++Se]!==_t[ue+1])){ue+=2,Se++;do;while(_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&_t[++ue]===_t[++Se]&&uest){if(K.match_start=Me,st=Ie,Ie>=Ge)break;ct=_t[ue+st-1],At=_t[ue+st]}}while((Me=Ot[Me&wt])>rt&&--Le!==0);return st<=K.lookahead?st:K.lookahead}function je(K){var Me=K.w_size,Le,ue,Se,Ie,st;do{if(Ie=K.window_size-K.lookahead-K.strstart,K.strstart>=Me+(Me-I)){u.arraySet(K.window,K.window,Me,Me,0),K.match_start-=Me,K.strstart-=Me,K.block_start-=Me,ue=K.hash_size,Le=ue;do Se=K.head[--Le],K.head[Le]=Se>=Me?Se-Me:0;while(--ue);ue=Me,Le=ue;do Se=K.prev[--Le],K.prev[Le]=Se>=Me?Se-Me:0;while(--ue);Ie+=Me}if(K.strm.avail_in===0)break;if(ue=we(K.strm,K.window,K.strstart+K.lookahead,Ie),K.lookahead+=ue,K.lookahead+K.insert>=$)for(st=K.strstart-K.insert,K.ins_h=K.window[st],K.ins_h=(K.ins_h<K.pending_buf_size-5&&(Le=K.pending_buf_size-5);;){if(K.lookahead<=1){if(je(K),K.lookahead===0&&Me===f)return oe;if(K.lookahead===0)break}K.strstart+=K.lookahead,K.lookahead=0;var ue=K.block_start+Le;if((K.strstart===0||K.strstart>=ue)&&(K.lookahead=K.strstart-ue,K.strstart=ue,G(K,!1),K.strm.avail_out===0)||K.strstart-K.block_start>=K.w_size-I&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):(K.strstart>K.block_start&&(G(K,!1),K.strm.avail_out===0),oe)}function nt(K,Me){for(var Le,ue;;){if(K.lookahead=$&&(K.ins_h=(K.ins_h<=$)if(ue=m._tr_tally(K,K.strstart-K.match_start,K.match_length-$),K.lookahead-=K.match_length,K.match_length<=K.max_lazy_match&&K.lookahead>=$){K.match_length--;do K.strstart++,K.ins_h=(K.ins_h<=$&&(K.ins_h=(K.ins_h<4096)&&(K.match_length=$-1)),K.prev_length>=$&&K.match_length<=K.prev_length){Se=K.strstart+K.lookahead-$,ue=m._tr_tally(K,K.strstart-1-K.prev_match,K.prev_length-$),K.lookahead-=K.prev_length-1,K.prev_length-=2;do++K.strstart<=Se&&(K.ins_h=(K.ins_h<=$&&K.strstart>0&&(Se=K.strstart-1,ue=st[Se],ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se])){Ie=K.strstart+U;do;while(ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&ue===st[++Se]&&SeK.lookahead&&(K.match_length=K.lookahead)}if(K.match_length>=$?(Le=m._tr_tally(K,1,K.match_length-$),K.lookahead-=K.match_length,K.strstart+=K.match_length,K.match_length=0):(Le=m._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++),Le&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):K.last_lit&&(G(K,!1),K.strm.avail_out===0)?oe:J}function Ue(K,Me){for(var Le;;){if(K.lookahead===0&&(je(K),K.lookahead===0)){if(Me===f)return oe;break}if(K.match_length=0,Le=m._tr_tally(K,0,K.window[K.strstart]),K.lookahead--,K.strstart++,Le&&(G(K,!1),K.strm.avail_out===0))return oe}return K.insert=0,Me===l?(G(K,!0),K.strm.avail_out===0?Q:he):K.last_lit&&(G(K,!1),K.strm.avail_out===0)?oe:J}function Ve(K,Me,Le,ue,Se){this.good_length=K,this.max_lazy=Me,this.nice_length=Le,this.max_chain=ue,this.func=Se}var Qe;Qe=[new Ve(0,0,0,0,Ze),new Ve(4,4,8,4,nt),new Ve(4,5,16,8,nt),new Ve(4,6,32,32,nt),new Ve(4,4,16,16,ut),new Ve(8,16,32,32,ut),new Ve(8,16,128,128,ut),new Ve(8,32,128,256,ut),new Ve(32,128,258,1024,ut),new Ve(32,258,258,4096,ut)];function tt(K){K.window_size=2*K.w_size,Ce(K.head),K.max_lazy_match=Qe[K.level].max_lazy,K.good_match=Qe[K.level].good_length,K.nice_match=Qe[K.level].nice_length,K.max_chain_length=Qe[K.level].max_chain,K.strstart=0,K.block_start=0,K.lookahead=0,K.insert=0,K.match_length=K.prev_length=$-1,K.match_available=0,K.ins_h=0}function ae(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=N,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new u.Buf16(z*2),this.dyn_dtree=new u.Buf16((2*E+1)*2),this.bl_tree=new u.Buf16((2*A+1)*2),Ce(this.dyn_ltree),Ce(this.dyn_dtree),Ce(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new u.Buf16(W+1),this.heap=new u.Buf16(2*P+1),Ce(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new u.Buf16(2*P+1),Ce(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Re(K){var Me;return!K||!K.state?re(K,c):(K.total_in=K.total_out=0,K.data_type=C,Me=K.state,Me.pending=0,Me.pending_out=0,Me.wrap<0&&(Me.wrap=-Me.wrap),Me.status=Me.wrap?B:be,K.adler=Me.wrap===2?0:1,Me.last_flush=f,m._tr_init(Me),s)}function me(K){var Me=Re(K);return Me===s&&tt(K.state),Me}function Ee(K,Me){return!K||!K.state||K.state.wrap!==2?c:(K.state.gzhead=Me,s)}function pe(K,Me,Le,ue,Se,Ie){if(!K)return c;var st=1;if(Me===t&&(Me=6),ue<0?(st=0,ue=-ue):ue>15&&(st=2,ue-=16),Se<1||Se>L||Le!==N||ue<8||ue>15||Me<0||Me>9||Ie<0||Ie>p)return re(K,c);ue===8&&(ue=9);var Ge=new ae;return K.state=Ge,Ge.strm=K,Ge.wrap=st,Ge.gzhead=null,Ge.w_bits=ue,Ge.w_size=1<d||Me<0)return K?re(K,c):c;if(ue=K.state,!K.output||!K.input&&K.avail_in!==0||ue.status===_e&&Me!==l)return re(K,K.avail_out===0?r:c);if(ue.strm=K,Le=ue.last_flush,ue.last_flush=Me,ue.status===B)if(ue.wrap===2)K.adler=0,Z(ue,31),Z(ue,139),Z(ue,8),ue.gzhead?(Z(ue,(ue.gzhead.text?1:0)+(ue.gzhead.hcrc?2:0)+(ue.gzhead.extra?4:0)+(ue.gzhead.name?8:0)+(ue.gzhead.comment?16:0)),Z(ue,ue.gzhead.time&255),Z(ue,ue.gzhead.time>>8&255),Z(ue,ue.gzhead.time>>16&255),Z(ue,ue.gzhead.time>>24&255),Z(ue,ue.level===9?2:ue.strategy>=n||ue.level<2?4:0),Z(ue,ue.gzhead.os&255),ue.gzhead.extra&&ue.gzhead.extra.length&&(Z(ue,ue.gzhead.extra.length&255),Z(ue,ue.gzhead.extra.length>>8&255)),ue.gzhead.hcrc&&(K.adler=b(K.adler,ue.pending_buf,ue.pending,0)),ue.gzindex=0,ue.status=V):(Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,0),Z(ue,ue.level===9?2:ue.strategy>=n||ue.level<2?4:0),Z(ue,ke),ue.status=be);else{var st=N+(ue.w_bits-8<<4)<<8,Ge=-1;ue.strategy>=n||ue.level<2?Ge=0:ue.level<6?Ge=1:ue.level===6?Ge=2:Ge=3,st|=Ge<<6,ue.strstart!==0&&(st|=j),st+=31-st%31,ue.status=be,fe(ue,st),ue.strstart!==0&&(fe(ue,K.adler>>>16),fe(ue,K.adler&65535)),K.adler=1}if(ue.status===V)if(ue.gzhead.extra){for(Se=ue.pending;ue.gzindex<(ue.gzhead.extra.length&65535)&&!(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size));)Z(ue,ue.gzhead.extra[ue.gzindex]&255),ue.gzindex++;ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),ue.gzindex===ue.gzhead.extra.length&&(ue.gzindex=0,ue.status=te)}else ue.status=te;if(ue.status===te)if(ue.gzhead.name){Se=ue.pending;do{if(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size)){Ie=1;break}ue.gzindexSe&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),Ie===0&&(ue.gzindex=0,ue.status=ie)}else ue.status=ie;if(ue.status===ie)if(ue.gzhead.comment){Se=ue.pending;do{if(ue.pending===ue.pending_buf_size&&(ue.gzhead.hcrc&&ue.pending>Se&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),q(K),Se=ue.pending,ue.pending===ue.pending_buf_size)){Ie=1;break}ue.gzindexSe&&(K.adler=b(K.adler,ue.pending_buf,ue.pending-Se,Se)),Ie===0&&(ue.status=ce)}else ue.status=ce;if(ue.status===ce&&(ue.gzhead.hcrc?(ue.pending+2>ue.pending_buf_size&&q(K),ue.pending+2<=ue.pending_buf_size&&(Z(ue,K.adler&255),Z(ue,K.adler>>8&255),K.adler=0,ue.status=be)):ue.status=be),ue.pending!==0){if(q(K),K.avail_out===0)return ue.last_flush=-1,s}else if(K.avail_in===0&&se(Me)<=se(Le)&&Me!==l)return re(K,r);if(ue.status===_e&&K.avail_in!==0)return re(K,r);if(K.avail_in!==0||ue.lookahead!==0||Me!==f&&ue.status!==_e){var rt=ue.strategy===n?Ue(ue,Me):ue.strategy===o?ot(ue,Me):Qe[ue.level].func(ue,Me);if((rt===Q||rt===he)&&(ue.status=_e),rt===oe||rt===Q)return K.avail_out===0&&(ue.last_flush=-1),s;if(rt===J&&(Me===y?m._tr_align(ue):Me!==d&&(m._tr_stored_block(ue,0,0,!1),Me===h&&(Ce(ue.head),ue.lookahead===0&&(ue.strstart=0,ue.block_start=0,ue.insert=0))),q(K),K.avail_out===0))return ue.last_flush=-1,s}return Me!==l?s:ue.wrap<=0?v:(ue.wrap===2?(Z(ue,K.adler&255),Z(ue,K.adler>>8&255),Z(ue,K.adler>>16&255),Z(ue,K.adler>>24&255),Z(ue,K.total_in&255),Z(ue,K.total_in>>8&255),Z(ue,K.total_in>>16&255),Z(ue,K.total_in>>24&255)):(fe(ue,K.adler>>>16),fe(ue,K.adler&65535)),q(K),ue.wrap>0&&(ue.wrap=-ue.wrap),ue.pending!==0?s:v)}function Xe(K){var Me;return!K||!K.state?c:(Me=K.state.status,Me!==B&&Me!==V&&Me!==te&&Me!==ie&&Me!==ce&&Me!==be&&Me!==_e?re(K,c):(K.state=null,Me===be?re(K,a):s))}function it(K,Me){var Le=Me.length,ue,Se,Ie,st,Ge,rt,_t,wt;if(!K||!K.state||(ue=K.state,st=ue.wrap,st===2||st===1&&ue.status!==B||ue.lookahead))return c;for(st===1&&(K.adler=g(K.adler,Me,Le,0)),ue.wrap=0,Le>=ue.w_size&&(st===0&&(Ce(ue.head),ue.strstart=0,ue.block_start=0,ue.insert=0),wt=new u.Buf8(ue.w_size),u.arraySet(wt,Me,Le-ue.w_size,ue.w_size,0),Me=wt,Le=ue.w_size),Ge=K.avail_in,rt=K.next_in,_t=K.input,K.avail_in=Le,K.next_in=0,K.input=Me,je(ue);ue.lookahead>=$;){Se=ue.strstart,Ie=ue.lookahead-($-1);do ue.ins_h=(ue.ins_h<>>24,i>>>=L,n-=L,L=N>>>16&255,L===0)E[l++]=N&65535;else if(L&16){F=N&65535,L&=15,L&&(n>>=L,n-=L),n<15&&(i+=P[y++]<>>24,i>>>=L,n-=L,L=N>>>16&255,L&16){if(M=N&65535,L&=15,nv){b.msg="invalid distance too far back",f.mode=u;break e}if(i>>>=L,n-=L,L=l-d,M>L){if(L=M-L,L>a&&f.sane){b.msg="invalid distance too far back",f.mode=u;break e}if(D=0,R=t,r===0){if(D+=c-L,L2;)E[l++]=R[D++],E[l++]=R[D++],E[l++]=R[D++],F-=3;F&&(E[l++]=R[D++],F>1&&(E[l++]=R[D++]))}else{D=l-M;do E[l++]=E[D++],E[l++]=E[D++],E[l++]=E[D++],F-=3;while(F>2);F&&(E[l++]=E[D++],F>1&&(E[l++]=E[D++]))}}else if(L&64){b.msg="invalid distance code",f.mode=u;break e}else{N=p[(N&65535)+(i&(1<>3,y-=F,n-=F<<3,i&=(1<>>24&255)+(pe>>>8&65280)+((pe&65280)<<8)+((pe&255)<<24)}function we(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ge(pe){var Pe;return!pe||!pe.state?r:(Pe=pe.state,pe.total_in=pe.total_out=Pe.total=0,pe.msg="",Pe.wrap&&(pe.adler=Pe.wrap&1),Pe.mode=p,Pe.last=0,Pe.havedict=0,Pe.dmax=32768,Pe.head=null,Pe.hold=0,Pe.bits=0,Pe.lencode=Pe.lendyn=new u.Buf32(Ce),Pe.distcode=Pe.distdyn=new u.Buf32(q),Pe.sane=1,Pe.back=-1,v)}function je(pe){var Pe;return!pe||!pe.state?r:(Pe=pe.state,Pe.wsize=0,Pe.whave=0,Pe.wnext=0,ge(pe))}function Ze(pe,Pe){var ee,Xe;return!pe||!pe.state||(Xe=pe.state,Pe<0?(ee=0,Pe=-Pe):(ee=(Pe>>4)+1,Pe<48&&(Pe&=15)),Pe&&(Pe<8||Pe>15))?r:(Xe.window!==null&&Xe.wbits!==Pe&&(Xe.window=null),Xe.wrap=ee,Xe.wbits=Pe,je(pe))}function nt(pe,Pe){var ee,Xe;return pe?(Xe=new we,pe.state=Xe,Xe.window=null,ee=Ze(pe,Pe),ee!==v&&(pe.state=null),ee):r}function ut(pe){return nt(pe,Z)}var ot=!0,Ue,Ve;function Qe(pe){if(ot){var Pe;for(Ue=new u.Buf32(512),Ve=new u.Buf32(32),Pe=0;Pe<144;)pe.lens[Pe++]=8;for(;Pe<256;)pe.lens[Pe++]=9;for(;Pe<280;)pe.lens[Pe++]=7;for(;Pe<288;)pe.lens[Pe++]=8;for(w(y,pe.lens,0,288,Ue,0,pe.work,{bits:9}),Pe=0;Pe<32;)pe.lens[Pe++]=5;w(h,pe.lens,0,32,Ve,0,pe.work,{bits:5}),ot=!1}pe.lencode=Ue,pe.lenbits=9,pe.distcode=Ve,pe.distbits=5}function tt(pe,Pe,ee,Xe){var it,K=pe.state;return K.window===null&&(K.wsize=1<=K.wsize?(u.arraySet(K.window,Pe,ee-K.wsize,K.wsize,0),K.wnext=0,K.whave=K.wsize):(it=K.wsize-K.wnext,it>Xe&&(it=Xe),u.arraySet(K.window,Pe,ee-Xe,it,K.wnext),Xe-=it,Xe?(u.arraySet(K.window,Pe,ee-Xe,Xe,0),K.wnext=Xe,K.whave=K.wsize):(K.wnext+=it,K.wnext===K.wsize&&(K.wnext=0),K.whave>>8&255,ee.check=g(ee.check,Ft,2,0),Se=0,Ie=0,ee.mode=O;break}if(ee.flags=0,ee.head&&(ee.head.done=!1),!(ee.wrap&1)||(((Se&255)<<8)+(Se>>8))%31){pe.msg="incorrect header check",ee.mode=ke;break}if((Se&15)!==o){pe.msg="unknown compression method",ee.mode=ke;break}if(Se>>>=4,Ie-=4,Ct=(Se&15)+8,ee.wbits===0)ee.wbits=Ct;else if(Ct>ee.wbits){pe.msg="invalid window size",ee.mode=ke;break}ee.dmax=1<>8&1),ee.flags&512&&(Ft[0]=Se&255,Ft[1]=Se>>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0,ee.mode=C;case C:for(;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>8&255,Ft[2]=Se>>>16&255,Ft[3]=Se>>>24&255,ee.check=g(ee.check,Ft,4,0)),Se=0,Ie=0,ee.mode=N;case N:for(;Ie<16;){if(Le===0)break e;Le--,Se+=Xe[K++]<>8),ee.flags&512&&(Ft[0]=Se&255,Ft[1]=Se>>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0,ee.mode=L;case L:if(ee.flags&1024){for(;Ie<16;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>8&255,ee.check=g(ee.check,Ft,2,0)),Se=0,Ie=0}else ee.head&&(ee.head.extra=null);ee.mode=F;case F:if(ee.flags&1024&&(rt=ee.length,rt>Le&&(rt=Le),rt&&(ee.head&&(Ct=ee.head.extra_len-ee.length,ee.head.extra||(ee.head.extra=new Array(ee.head.extra_len)),u.arraySet(ee.head.extra,Xe,K,rt,Ct)),ee.flags&512&&(ee.check=g(ee.check,Xe,rt,K)),Le-=rt,K+=rt,ee.length-=rt),ee.length))break e;ee.length=0,ee.mode=M;case M:if(ee.flags&2048){if(Le===0)break e;rt=0;do Ct=Xe[K+rt++],ee.head&&Ct&&ee.length<65536&&(ee.head.name+=String.fromCharCode(Ct));while(Ct&&rt>9&1,ee.head.done=!0),pe.adler=ee.check=0,ee.mode=A;break;case P:for(;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Ie&7,Ie-=Ie&7,ee.mode=J;break}for(;Ie<3;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=1,Ie-=1,Se&3){case 0:ee.mode=W;break;case 1:if(Qe(ee),ee.mode=V,Pe===s){Se>>>=2,Ie-=2;break e}break;case 2:ee.mode=I;break;case 3:pe.msg="invalid block type",ee.mode=ke}Se>>>=2,Ie-=2;break;case W:for(Se>>>=Ie&7,Ie-=Ie&7;Ie<32;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>16^65535)){pe.msg="invalid stored block lengths",ee.mode=ke;break}if(ee.length=Se&65535,Se=0,Ie=0,ee.mode=$,Pe===s)break e;case $:ee.mode=U;case U:if(rt=ee.length,rt){if(rt>Le&&(rt=Le),rt>ue&&(rt=ue),rt===0)break e;u.arraySet(it,Xe,K,rt,Me),Le-=rt,K+=rt,ue-=rt,Me+=rt,ee.length-=rt;break}ee.mode=A;break;case I:for(;Ie<14;){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=5,Ie-=5,ee.ndist=(Se&31)+1,Se>>>=5,Ie-=5,ee.ncode=(Se&15)+4,Se>>>=4,Ie-=4,ee.nlen>286||ee.ndist>30){pe.msg="too many length or distance symbols",ee.mode=ke;break}ee.have=0,ee.mode=j;case j:for(;ee.have>>=3,Ie-=3}for(;ee.have<19;)ee.lens[Dr[ee.have++]]=0;if(ee.lencode=ee.lendyn,ee.lenbits=7,Lt={bits:ee.lenbits},xt=w(f,ee.lens,0,19,ee.lencode,0,ee.work,Lt),ee.lenbits=Lt.bits,xt){pe.msg="invalid code lengths set",ee.mode=ke;break}ee.have=0,ee.mode=B;case B:for(;ee.have>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=pt,Ie-=pt,ee.lens[ee.have++]=At;else{if(At===16){for(Et=pt+2;Ie>>=pt,Ie-=pt,ee.have===0){pe.msg="invalid bit length repeat",ee.mode=ke;break}Ct=ee.lens[ee.have-1],rt=3+(Se&3),Se>>>=2,Ie-=2}else if(At===17){for(Et=pt+3;Ie>>=pt,Ie-=pt,Ct=0,rt=3+(Se&7),Se>>>=3,Ie-=3}else{for(Et=pt+7;Ie>>=pt,Ie-=pt,Ct=0,rt=11+(Se&127),Se>>>=7,Ie-=7}if(ee.have+rt>ee.nlen+ee.ndist){pe.msg="invalid bit length repeat",ee.mode=ke;break}for(;rt--;)ee.lens[ee.have++]=Ct}}if(ee.mode===ke)break;if(ee.lens[256]===0){pe.msg="invalid code -- missing end-of-block",ee.mode=ke;break}if(ee.lenbits=9,Lt={bits:ee.lenbits},xt=w(y,ee.lens,0,ee.nlen,ee.lencode,0,ee.work,Lt),ee.lenbits=Lt.bits,xt){pe.msg="invalid literal/lengths set",ee.mode=ke;break}if(ee.distbits=6,ee.distcode=ee.distdyn,Lt={bits:ee.distbits},xt=w(h,ee.lens,ee.nlen,ee.ndist,ee.distcode,0,ee.work,Lt),ee.distbits=Lt.bits,xt){pe.msg="invalid distances set",ee.mode=ke;break}if(ee.mode=V,Pe===s)break e;case V:ee.mode=te;case te:if(Le>=6&&ue>=258){pe.next_out=Me,pe.avail_out=ue,pe.next_in=K,pe.avail_in=Le,ee.hold=Se,ee.bits=Ie,b(pe,Ge),Me=pe.next_out,it=pe.output,ue=pe.avail_out,K=pe.next_in,Xe=pe.input,Le=pe.avail_in,Se=ee.hold,Ie=ee.bits,ee.mode===A&&(ee.back=-1);break}for(ee.back=0;Ot=ee.lencode[Se&(1<>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>Pt)],pt=Ot>>>24,ct=Ot>>>16&255,At=Ot&65535,!(Pt+pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Pt,Ie-=Pt,ee.back+=Pt}if(Se>>>=pt,Ie-=pt,ee.back+=pt,ee.length=At,ct===0){ee.mode=oe;break}if(ct&32){ee.back=-1,ee.mode=A;break}if(ct&64){pe.msg="invalid literal/length code",ee.mode=ke;break}ee.extra=ct&15,ee.mode=ie;case ie:if(ee.extra){for(Et=ee.extra;Ie>>=ee.extra,Ie-=ee.extra,ee.back+=ee.extra}ee.was=ee.length,ee.mode=ce;case ce:for(;Ot=ee.distcode[Se&(1<>>24,ct=Ot>>>16&255,At=Ot&65535,!(pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>Pt)],pt=Ot>>>24,ct=Ot>>>16&255,At=Ot&65535,!(Pt+pt<=Ie);){if(Le===0)break e;Le--,Se+=Xe[K++]<>>=Pt,Ie-=Pt,ee.back+=Pt}if(Se>>>=pt,Ie-=pt,ee.back+=pt,ct&64){pe.msg="invalid distance code",ee.mode=ke;break}ee.offset=At,ee.extra=ct&15,ee.mode=be;case be:if(ee.extra){for(Et=ee.extra;Ie>>=ee.extra,Ie-=ee.extra,ee.back+=ee.extra}if(ee.offset>ee.dmax){pe.msg="invalid distance too far back",ee.mode=ke;break}ee.mode=_e;case _e:if(ue===0)break e;if(rt=Ge-ue,ee.offset>rt){if(rt=ee.offset-rt,rt>ee.whave&&ee.sane){pe.msg="invalid distance too far back",ee.mode=ke;break}rt>ee.wnext?(rt-=ee.wnext,_t=ee.wsize-rt):_t=ee.wnext-rt,rt>ee.length&&(rt=ee.length),wt=ee.window}else wt=it,_t=Me-ee.offset,rt=ee.length;rt>ue&&(rt=ue),ue-=rt,ee.length-=rt;do it[Me++]=wt[_t++];while(--rt);ee.length===0&&(ee.mode=te);break;case oe:if(ue===0)break e;it[Me++]=ee.length,ue--,ee.mode=te;break;case J:if(ee.wrap){for(;Ie<32;){if(Le===0)break e;Le--,Se|=Xe[K++]<=1&&te[F]===0;F--);if(M>F&&(M=F),F===0)return i[n++]=1<<24|64<<16|0,i[n++]=1<<24|64<<16|0,p.bits=1,0;for(L=1;L0&&(c===w||F!==1))return-1;for(ie[1]=0,C=1;Cg||c===y&&E>b)return 1;for(;;){_e=C-R,o[N]V?(oe=ce[be+o[N]],J=j[B+o[N]]):(oe=32+64,J=0),z=1<>R)+W]=_e<<24|oe<<16|J|0;while(W!==0);for(z=1<>=1;if(z!==0?(A&=z-1,A+=z):A=0,N++,--te[C]===0){if(C===F)break;C=a[r+o[N]]}if(C>M&&(A&U)!==$){for(R===0&&(R=M),I+=L,D=C-R,P=1<g||c===y&&E>b)return 1;$=A&U,i[$]=M<<24|D<<16|I-n|0}}return A!==0&&(i[I+A]=C-R<<24|64<<16|0),p.bits=M,0}},{"../utils/common":442}],452:[function(e,S,_){S.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],453:[function(e,S,_){var u=e("../utils/common"),m=4,g=0,b=1,w=2;function f(ae){for(var Re=ae.length;--Re>=0;)ae[Re]=0}var y=0,h=1,l=2,d=3,s=258,v=29,c=256,a=c+1+v,r=30,t=19,i=2*a+1,n=15,o=16,p=7,O=256,C=16,N=17,L=18,F=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],M=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],D=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],R=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],P=512,E=new Array((a+2)*2);f(E);var A=new Array(r*2);f(A);var z=new Array(P);f(z);var W=new Array(s-d+1);f(W);var $=new Array(v);f($);var U=new Array(r);f(U);function I(ae,Re,me,Ee,pe){this.static_tree=ae,this.extra_bits=Re,this.extra_base=me,this.elems=Ee,this.max_length=pe,this.has_stree=ae&&ae.length}var j,B,V;function te(ae,Re){this.dyn_tree=ae,this.max_code=0,this.stat_desc=Re}function ie(ae){return ae<256?z[ae]:z[256+(ae>>>7)]}function ce(ae,Re){ae.pending_buf[ae.pending++]=Re&255,ae.pending_buf[ae.pending++]=Re>>>8&255}function be(ae,Re,me){ae.bi_valid>o-me?(ae.bi_buf|=Re<>o-ae.bi_valid,ae.bi_valid+=me-o):(ae.bi_buf|=Re<>>=1,me<<=1;while(--Re>0);return me>>>1}function J(ae){ae.bi_valid===16?(ce(ae,ae.bi_buf),ae.bi_buf=0,ae.bi_valid=0):ae.bi_valid>=8&&(ae.pending_buf[ae.pending++]=ae.bi_buf&255,ae.bi_buf>>=8,ae.bi_valid-=8)}function Q(ae,Re){var me=Re.dyn_tree,Ee=Re.max_code,pe=Re.stat_desc.static_tree,Pe=Re.stat_desc.has_stree,ee=Re.stat_desc.extra_bits,Xe=Re.stat_desc.extra_base,it=Re.stat_desc.max_length,K,Me,Le,ue,Se,Ie,st=0;for(ue=0;ue<=n;ue++)ae.bl_count[ue]=0;for(me[ae.heap[ae.heap_max]*2+1]=0,K=ae.heap_max+1;Kit&&(ue=it,st++),me[Me*2+1]=ue,!(Me>Ee)&&(ae.bl_count[ue]++,Se=0,Me>=Xe&&(Se=ee[Me-Xe]),Ie=me[Me*2],ae.opt_len+=Ie*(ue+Se),Pe&&(ae.static_len+=Ie*(pe[Me*2+1]+Se)));if(st!==0){do{for(ue=it-1;ae.bl_count[ue]===0;)ue--;ae.bl_count[ue]--,ae.bl_count[ue+1]+=2,ae.bl_count[it]--,st-=2}while(st>0);for(ue=it;ue!==0;ue--)for(Me=ae.bl_count[ue];Me!==0;)Le=ae.heap[--K],!(Le>Ee)&&(me[Le*2+1]!==ue&&(ae.opt_len+=(ue-me[Le*2+1])*me[Le*2],me[Le*2+1]=ue),Me--)}}function he(ae,Re,me){var Ee=new Array(n+1),pe=0,Pe,ee;for(Pe=1;Pe<=n;Pe++)Ee[Pe]=pe=pe+me[Pe-1]<<1;for(ee=0;ee<=Re;ee++){var Xe=ae[ee*2+1];Xe!==0&&(ae[ee*2]=oe(Ee[Xe]++,Xe))}}function ke(){var ae,Re,me,Ee,pe,Pe=new Array(n+1);for(me=0,Ee=0;Ee>=7;Ee8?ce(ae,ae.bi_buf):ae.bi_valid>0&&(ae.pending_buf[ae.pending++]=ae.bi_buf),ae.bi_buf=0,ae.bi_valid=0}function Ce(ae,Re,me,Ee){se(ae),Ee&&(ce(ae,me),ce(ae,~me)),u.arraySet(ae.pending_buf,ae.window,Re,me,ae.pending),ae.pending+=me}function q(ae,Re,me,Ee){var pe=Re*2,Pe=me*2;return ae[pe]>1;ee>=1;ee--)G(ae,me,ee);K=Pe;do ee=ae.heap[1],ae.heap[1]=ae.heap[ae.heap_len--],G(ae,me,1),Xe=ae.heap[1],ae.heap[--ae.heap_max]=ee,ae.heap[--ae.heap_max]=Xe,me[K*2]=me[ee*2]+me[Xe*2],ae.depth[K]=(ae.depth[ee]>=ae.depth[Xe]?ae.depth[ee]:ae.depth[Xe])+1,me[ee*2+1]=me[Xe*2+1]=K,ae.heap[1]=K++,G(ae,me,1);while(ae.heap_len>=2);ae.heap[--ae.heap_max]=ae.heap[1],Q(ae,Re),he(me,it,ae.bl_count)}function we(ae,Re,me){var Ee,pe=-1,Pe,ee=Re[0*2+1],Xe=0,it=7,K=4;for(ee===0&&(it=138,K=3),Re[(me+1)*2+1]=65535,Ee=0;Ee<=me;Ee++)Pe=ee,ee=Re[(Ee+1)*2+1],!(++Xe=3&&ae.bl_tree[R[Re]*2+1]===0;Re--);return ae.opt_len+=3*(Re+1)+5+5+4,Re}function Ze(ae,Re,me,Ee){var pe;for(be(ae,Re-257,5),be(ae,me-1,5),be(ae,Ee-4,4),pe=0;pe>>=1)if(Re&1&&ae.dyn_ltree[me*2]!==0)return g;if(ae.dyn_ltree[9*2]!==0||ae.dyn_ltree[10*2]!==0||ae.dyn_ltree[13*2]!==0)return b;for(me=32;me0?(ae.strm.data_type===w&&(ae.strm.data_type=nt(ae)),fe(ae,ae.l_desc),fe(ae,ae.d_desc),ee=je(ae),pe=ae.opt_len+3+7>>>3,Pe=ae.static_len+3+7>>>3,Pe<=pe&&(pe=Pe)):pe=Pe=me+5,me+4<=pe&&Re!==-1?Ue(ae,Re,me,Ee):ae.strategy===m||Pe===pe?(be(ae,(h<<1)+(Ee?1:0),3),Z(ae,E,A)):(be(ae,(l<<1)+(Ee?1:0),3),Ze(ae,ae.l_desc.max_code+1,ae.d_desc.max_code+1,ee+1),Z(ae,ae.dyn_ltree,ae.dyn_dtree)),re(ae),Ee&&se(ae)}function tt(ae,Re,me){return ae.pending_buf[ae.d_buf+ae.last_lit*2]=Re>>>8&255,ae.pending_buf[ae.d_buf+ae.last_lit*2+1]=Re&255,ae.pending_buf[ae.l_buf+ae.last_lit]=me&255,ae.last_lit++,Re===0?ae.dyn_ltree[me*2]++:(ae.matches++,Re--,ae.dyn_ltree[(W[me]+c+1)*2]++,ae.dyn_dtree[ie(Re)*2]++),ae.last_lit===ae.lit_bufsize-1}_._tr_init=ot,_._tr_stored_block=Ue,_._tr_flush_block=Qe,_._tr_tally=tt,_._tr_align=Ve},{"../utils/common":442}],454:[function(e,S,_){function u(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}S.exports=u},{}],455:[function(e,S,_){S.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},{}],456:[function(e,S,_){var u=e("asn1.js");_.certificate=e("./certificate");var m=u.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});_.RSAPrivateKey=m;var g=u.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});_.RSAPublicKey=g;var b=u.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(w),this.key("subjectPublicKey").bitstr())});_.PublicKey=b;var w=u.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),f=u.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(w),this.key("subjectPrivateKey").octstr())});_.PrivateKey=f;var y=u.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});_.EncryptedPrivateKey=y;var h=u.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});_.DSAPrivateKey=h,_.DSAparam=u.define("DSAparam",function(){this.int()});var l=u.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});_.ECPrivateKey=l;var d=u.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});_.signature=u.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},{"./certificate":457,"asn1.js":167}],457:[function(e,S,_){var u=e("asn1.js"),m=u.define("Time",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),g=u.define("AttributeTypeValue",function(){this.seq().obj(this.key("type").objid(),this.key("value").any())}),b=u.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())}),w=u.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(b),this.key("subjectPublicKey").bitstr())}),f=u.define("RelativeDistinguishedName",function(){this.setof(g)}),y=u.define("RDNSequence",function(){this.seqof(f)}),h=u.define("Name",function(){this.choice({rdnSequence:this.use(y)})}),l=u.define("Validity",function(){this.seq().obj(this.key("notBefore").use(m),this.key("notAfter").use(m))}),d=u.define("Extension",function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())}),s=u.define("TBSCertificate",function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(b),this.key("issuer").use(h),this.key("validity").use(l),this.key("subject").use(h),this.key("subjectPublicKeyInfo").use(w),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(d).optional())}),v=u.define("X509Certificate",function(){this.seq().obj(this.key("tbsCertificate").use(s),this.key("signatureAlgorithm").use(b),this.key("signatureValue").bitstr())});S.exports=v},{"asn1.js":167}],458:[function(e,S,_){var u=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,m=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,g=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,b=e("evp_bytestokey"),w=e("browserify-aes"),f=e("safe-buffer").Buffer;S.exports=function(y,h){var l=y.toString(),d=l.match(u),s;if(d){var c="aes"+d[1],a=f.from(d[2],"hex"),r=f.from(d[3].replace(/[\r\n]/g,""),"base64"),t=b(h,a.slice(0,8),parseInt(d[1],10)).key,i=[],n=w.createDecipheriv(c,t,a);i.push(n.update(r)),i.push(n.final()),s=f.concat(i)}else{var v=l.match(g);s=f.from(v[2].replace(/[\r\n]/g,""),"base64")}var o=l.match(m)[1];return{tag:o,data:s}}},{"browserify-aes":188,evp_bytestokey:368,"safe-buffer":494}],459:[function(e,S,_){function u(d){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(v){return typeof v}:u=function(v){return v&&typeof Symbol=="function"&&v.constructor===Symbol&&v!==Symbol.prototype?"symbol":typeof v},u(d)}var m=e("./asn1"),g=e("./aesid.json"),b=e("./fixProc"),w=e("browserify-aes"),f=e("pbkdf2"),y=e("safe-buffer").Buffer;S.exports=h;function h(d){var s;u(d)==="object"&&!y.isBuffer(d)&&(s=d.passphrase,d=d.key),typeof d=="string"&&(d=y.from(d));var v=b(d,s),c=v.tag,a=v.data,r,t;switch(c){case"CERTIFICATE":t=m.certificate.decode(a,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(t||(t=m.PublicKey.decode(a,"der")),r=t.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return m.RSAPublicKey.decode(t.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return t.subjectPrivateKey=t.subjectPublicKey,{type:"ec",data:t};case"1.2.840.10040.4.1":return t.algorithm.params.pub_key=m.DSAparam.decode(t.subjectPublicKey.data,"der"),{type:"dsa",data:t.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":a=m.EncryptedPrivateKey.decode(a,"der"),a=l(a,s);case"PRIVATE KEY":switch(t=m.PrivateKey.decode(a,"der"),r=t.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return m.RSAPrivateKey.decode(t.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:t.algorithm.curve,privateKey:m.ECPrivateKey.decode(t.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return t.algorithm.params.priv_key=m.DSAparam.decode(t.subjectPrivateKey,"der"),{type:"dsa",params:t.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return m.RSAPublicKey.decode(a,"der");case"RSA PRIVATE KEY":return m.RSAPrivateKey.decode(a,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:m.DSAPrivateKey.decode(a,"der")};case"EC PRIVATE KEY":return a=m.ECPrivateKey.decode(a,"der"),{curve:a.parameters.value,privateKey:a.privateKey};default:throw new Error("unknown key type "+c)}}h.signature=m.signature;function l(d,s){var v=d.algorithm.decrypt.kde.kdeparams.salt,c=parseInt(d.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=g[d.algorithm.decrypt.cipher.algo.join(".")],r=d.algorithm.decrypt.cipher.iv,t=d.subjectPrivateKey,i=parseInt(a.split("-")[1],10)/8,n=f.pbkdf2Sync(s,v,c,i,"sha1"),o=w.createDecipheriv(a,n,r),p=[];return p.push(o.update(t)),p.push(o.final()),y.concat(p)}},{"./aesid.json":455,"./asn1":456,"./fixProc":458,"browserify-aes":188,pbkdf2:460,"safe-buffer":494}],460:[function(e,S,_){_.pbkdf2=e("./lib/async"),_.pbkdf2Sync=e("./lib/sync")},{"./lib/async":461,"./lib/sync":464}],461:[function(e,S,_){(function(u,m){var g=e("safe-buffer").Buffer,b=e("./precondition"),w=e("./default-encoding"),f=e("./sync"),y=e("./to-buffer"),h,l=m.crypto&&m.crypto.subtle,d={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},s=[];function v(r){if(m.process&&!m.process.browser||!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(s[r]!==void 0)return s[r];h=h||g.alloc(8);var t=c(h,h,10,128,r).then(function(){return!0}).catch(function(){return!1});return s[r]=t,t}function c(r,t,i,n,o){return l.importKey("raw",r,{name:"PBKDF2"},!1,["deriveBits"]).then(function(p){return l.deriveBits({name:"PBKDF2",salt:t,iterations:i,hash:{name:o}},p,n<<3)}).then(function(p){return g.from(p)})}function a(r,t){r.then(function(i){u.nextTick(function(){t(null,i)})},function(i){u.nextTick(function(){t(i)})})}S.exports=function(r,t,i,n,o,p){typeof o=="function"&&(p=o,o=void 0),o=o||"sha1";var O=d[o.toLowerCase()];if(!O||typeof m.Promise!="function")return u.nextTick(function(){var C;try{C=f(r,t,i,n,o)}catch(N){return p(N)}p(null,C)});if(b(i,n),r=y(r,w,"Password"),t=y(t,w,"Salt"),typeof p!="function")throw new Error("No callback provided to pbkdf2");a(v(O).then(function(C){return C?c(r,t,i,n,O):f(r,t,i,n,o)}),p)}}).call(this,e("_process"),typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{"./default-encoding":462,"./precondition":463,"./sync":464,"./to-buffer":465,_process:467,"safe-buffer":494}],462:[function(e,S,_){(function(u){var m;if(u.browser)m="utf-8";else if(u.version){var g=parseInt(u.version.split(".")[0].slice(1),10);m=g>=6?"utf-8":"binary"}else m="utf-8";S.exports=m}).call(this,e("_process"))},{_process:467}],463:[function(e,S,_){var u=Math.pow(2,30)-1;S.exports=function(m,g){if(typeof m!="number")throw new TypeError("Iterations not a number");if(m<0)throw new TypeError("Bad iterations");if(typeof g!="number")throw new TypeError("Key length not a number");if(g<0||g>u||g!==g)throw new TypeError("Bad key length")}},{}],464:[function(e,S,_){var u=e("create-hash/md5"),m=e("ripemd160"),g=e("sha.js"),b=e("safe-buffer").Buffer,w=e("./precondition"),f=e("./default-encoding"),y=e("./to-buffer"),h=b.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(c,a,r){var t=s(c),i=c==="sha512"||c==="sha384"?128:64;a.length>i?a=t(a):a.length"u"||!u.version||u.version.indexOf("v0.")===0||u.version.indexOf("v1.")===0&&u.version.indexOf("v1.8.")!==0?S.exports={nextTick:m}:S.exports=u;function m(g,b,w,f){if(typeof g!="function")throw new TypeError('"callback" argument must be a function');var y=arguments.length,h,l;switch(y){case 0:case 1:return u.nextTick(g);case 2:return u.nextTick(function(){g.call(null,b)});case 3:return u.nextTick(function(){g.call(null,b,w)});case 4:return u.nextTick(function(){g.call(null,b,w,f)});default:for(h=new Array(y-1),l=0;l1)for(var n=1;nn||new b(a).cmp(i.modulus)>=0)throw new Error("decryption error");var o;r?o=y(new b(a),i):o=w(a,i);var p=h.alloc(n-o.length);if(o=h.concat([p,o],n),t===4)return l(i,o);if(t===1)return d(i,o,r);if(t===3)return o;throw new Error("unknown padding")};function l(v,c){var a=v.modulus.byteLength(),r=f("sha1").update(h.alloc(0)).digest(),t=r.length;if(c[0]!==0)throw new Error("decryption error");var i=c.slice(1,t+1),n=c.slice(t+1),o=g(i,m(n,t)),p=g(n,m(o,a-t-1));if(s(r,p.slice(0,t)))throw new Error("decryption error");for(var O=t;p[O]===0;)O++;if(p[O++]!==1)throw new Error("decryption error");return p.slice(O)}function d(v,c,a){for(var r=c.slice(0,2),t=2,i=0;c[t++]!==0;)if(t>=c.length){i++;break}var n=c.slice(2,t-1);if((r.toString("hex")!=="0002"&&!a||r.toString("hex")!=="0001"&&a)&&i++,n.length<8&&i++,i)throw new Error("decryption error");return c.slice(t)}function s(v,c){v=h.from(v),c=h.from(c);var a=0,r=v.length;v.length!==c.length&&(a++,r=Math.min(v.length,c.length));for(var t=-1;++t=0)throw new Error("data too long for modulus")}else throw new Error("unknown padding");return t?h(o,n):y(o,n)};function d(c,a){var r=c.modulus.byteLength(),t=a.length,i=g("sha1").update(l.alloc(0)).digest(),n=i.length,o=2*n;if(t>r-o-2)throw new Error("message too long");var p=l.alloc(r-t-o-2),O=r-n-1,C=m(n),N=w(l.concat([i,p,l.alloc(1,1),a],O),b(C,O)),L=w(C,b(N,n));return new f(l.concat([l.alloc(1),L,N],r))}function s(c,a,r){var t=a.length,i=c.modulus.byteLength();if(t>i-11)throw new Error("message too long");var n;return r?n=l.alloc(i-t-3,255):n=v(i-t-3),new f(l.concat([l.from([0,r?1:2]),n,l.alloc(1),a],i))}function v(c){for(var a=l.allocUnsafe(c),r=0,t=m(c*2),i=0,n;rb)throw new RangeError("requested too many random bytes");var s=f.allocUnsafe(l);if(l>0)if(l>g)for(var v=0;vl||r<0)throw new TypeError("offset must be a uint32");if(r>y||r>t)throw new RangeError("offset out of range")}function s(r,t,i){if(typeof r!="number"||r!==r)throw new TypeError("size must be a number");if(r>l||r<0)throw new TypeError("size must be a uint32");if(r+t>i||r>y)throw new RangeError("buffer too small")}h&&h.getRandomValues||!u.browser?(_.randomFill=v,_.randomFillSync=a):(_.randomFill=g,_.randomFillSync=g);function v(r,t,i,n){if(!f.isBuffer(r)&&!(r instanceof m.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if(typeof t=="function")n=t,t=0,i=r.length;else if(typeof i=="function")n=i,i=r.length-t;else if(typeof n!="function")throw new TypeError('"cb" argument must be a function');return d(t,r.length),s(i,t,r.length),c(r,t,i,n)}function c(r,t,i,n){if(u.browser){var o=r.buffer,p=new Uint8Array(o,t,i);if(h.getRandomValues(p),n){u.nextTick(function(){n(null,r)});return}return r}if(n){w(i,function(C,N){if(C)return n(C);N.copy(r,t),n(null,r)});return}var O=w(i);return O.copy(r,t),r}function a(r,t,i){if(typeof t>"u"&&(t=0),!f.isBuffer(r)&&!(r instanceof m.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return d(t,r.length),i===void 0&&(i=r.length-t),s(i,t,r.length),c(r,t,i)}}).call(this,e("_process"),typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{_process:467,randombytes:475,"safe-buffer":494}],477:[function(e,S,_){function u(l){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(s){return typeof s}:u=function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},u(l)}function m(l,d){l.prototype=Object.create(d.prototype),l.prototype.constructor=l,l.__proto__=d}var g={};function b(l,d,s){s||(s=Error);function v(a,r,t){return typeof d=="string"?d:d(a,r,t)}var c=function(a){m(r,a);function r(t,i,n){return a.call(this,v(t,i,n))||this}return r}(s);c.prototype.name=s.name,c.prototype.code=l,g[l]=c}function w(l,d){if(Array.isArray(l)){var s=l.length;return l=l.map(function(v){return String(v)}),s>2?"one of ".concat(d," ").concat(l.slice(0,s-1).join(", "),", or ")+l[s-1]:s===2?"one of ".concat(d," ").concat(l[0]," or ").concat(l[1]):"of ".concat(d," ").concat(l[0])}else return"of ".concat(d," ").concat(String(l))}function f(l,d,s){return l.substr(!s||s<0?0:+s,d.length)===d}function y(l,d,s){return(s===void 0||s>l.length)&&(s=l.length),l.substring(s-d.length,s)===d}function h(l,d,s){return typeof s!="number"&&(s=0),s+d.length>l.length?!1:l.indexOf(d,s)!==-1}b("ERR_INVALID_OPT_VALUE",function(l,d){return'The value "'+d+'" is invalid for option "'+l+'"'},TypeError),b("ERR_INVALID_ARG_TYPE",function(l,d,s){var v;typeof d=="string"&&f(d,"not ")?(v="must not be",d=d.replace(/^not /,"")):v="must be";var c;if(y(l," argument"))c="The ".concat(l," ").concat(v," ").concat(w(d,"type"));else{var a=h(l,".")?"property":"argument";c='The "'.concat(l,'" ').concat(a," ").concat(v," ").concat(w(d,"type"))}return c+=". Received type ".concat(u(s)),c},TypeError),b("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),b("ERR_METHOD_NOT_IMPLEMENTED",function(l){return"The "+l+" method is not implemented"}),b("ERR_STREAM_PREMATURE_CLOSE","Premature close"),b("ERR_STREAM_DESTROYED",function(l){return"Cannot call "+l+" after a stream was destroyed"}),b("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),b("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),b("ERR_STREAM_WRITE_AFTER_END","write after end"),b("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),b("ERR_UNKNOWN_ENCODING",function(l){return"Unknown encoding: "+l},TypeError),b("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),S.exports.codes=g},{}],478:[function(e,S,_){(function(u){var m=Object.keys||function(s){var v=[];for(var c in s)v.push(c);return v};S.exports=h;var g=e("./_stream_readable"),b=e("./_stream_writable");e("inherits")(h,g);for(var w=m(b.prototype),f=0;f0)if(typeof se!="string"&&!Z.objectMode&&Object.getPrototypeOf(se)!==f.prototype&&(se=h(se)),q)Z.endEmitted?L(re,new p):E(re,Z,se,!0);else if(Z.ended)L(re,new n);else{if(Z.destroyed)return!1;Z.reading=!1,Z.decoder&&!Ce?(se=Z.decoder.write(se),Z.objectMode||se.length!==0?E(re,Z,se,!1):B(re,Z)):E(re,Z,se,!1)}else q||(Z.reading=!1,B(re,Z))}return!Z.ended&&(Z.length=z?re=z:(re--,re|=re>>>1,re|=re>>>2,re|=re>>>4,re|=re>>>8,re|=re>>>16,re++),re}function $(re,se){return re<=0||se.length===0&&se.ended?0:se.objectMode?1:re!==re?se.flowing&&se.length?se.buffer.head.data.length:se.length:(re>se.highWaterMark&&(se.highWaterMark=W(re)),re<=se.length?re:se.ended?se.length:(se.needReadable=!0,0))}R.prototype.read=function(re){s("read",re),re=parseInt(re,10);var se=this._readableState,Ce=re;if(re!==0&&(se.emittedReadable=!1),re===0&&se.needReadable&&((se.highWaterMark!==0?se.length>=se.highWaterMark:se.length>0)||se.ended))return s("read: emitReadable",se.length,se.ended),se.length===0&&se.ended?Q(this):I(this),null;if(re=$(re,se),re===0&&se.ended)return se.length===0&&Q(this),null;var q=se.needReadable;s("need readable",q),(se.length===0||se.length-re0?G=J(re,se):G=null,G===null?(se.needReadable=se.length<=se.highWaterMark,re=0):(se.length-=re,se.awaitDrain=0),se.length===0&&(se.ended||(se.needReadable=!0),Ce!==re&&se.ended&&Q(this)),G!==null&&this.emit("data",G),G};function U(re,se){if(s("onEofChunk"),!se.ended){if(se.decoder){var Ce=se.decoder.end();Ce&&Ce.length&&(se.buffer.push(Ce),se.length+=se.objectMode?1:Ce.length)}se.ended=!0,se.sync?I(re):(se.needReadable=!1,se.emittedReadable||(se.emittedReadable=!0,j(re)))}}function I(re){var se=re._readableState;s("emitReadable",se.needReadable,se.emittedReadable),se.needReadable=!1,se.emittedReadable||(s("emitReadable",se.flowing),se.emittedReadable=!0,u.nextTick(j,re))}function j(re){var se=re._readableState;s("emitReadable_",se.destroyed,se.length,se.ended),!se.destroyed&&(se.length||se.ended)&&(re.emit("readable"),se.emittedReadable=!1),se.needReadable=!se.flowing&&!se.ended&&se.length<=se.highWaterMark,oe(re)}function B(re,se){se.readingMore||(se.readingMore=!0,u.nextTick(V,re,se))}function V(re,se){for(;!se.reading&&!se.ended&&(se.length1&&ke(q.pipes,re)!==-1)&&!je&&(s("false write response, pause",q.awaitDrain),q.awaitDrain++),Ce.pause())}function ut(Qe){s("onerror",Qe),Ve(),re.removeListener("error",ut),b(re,"error")===0&&L(re,Qe)}M(re,"error",ut);function ot(){re.removeListener("finish",Ue),Ve()}re.once("close",ot);function Ue(){s("onfinish"),re.removeListener("close",ot),Ve()}re.once("finish",Ue);function Ve(){s("unpipe"),Ce.unpipe(re)}return re.emit("pipe",Ce),q.flowing||(s("pipe resume"),Ce.resume()),re};function te(re){return function(){var Ce=re._readableState;s("pipeOnDrain",Ce.awaitDrain),Ce.awaitDrain&&Ce.awaitDrain--,Ce.awaitDrain===0&&b(re,"data")&&(Ce.flowing=!0,oe(re))}}R.prototype.unpipe=function(re){var se=this._readableState,Ce={hasUnpiped:!1};if(se.pipesCount===0)return this;if(se.pipesCount===1)return re&&re!==se.pipes?this:(re||(re=se.pipes),se.pipes=null,se.pipesCount=0,se.flowing=!1,re&&re.emit("unpipe",this,Ce),this);if(!re){var q=se.pipes,G=se.pipesCount;se.pipes=null,se.pipesCount=0,se.flowing=!1;for(var Z=0;Z0,q.flowing!==!1&&this.resume()):re==="readable"&&!q.endEmitted&&!q.readableListening&&(q.readableListening=q.needReadable=!0,q.flowing=!1,q.emittedReadable=!1,s("on readable",q.length,q.reading),q.length?I(this):q.reading||u.nextTick(ce,this)),Ce},R.prototype.addListener=R.prototype.on,R.prototype.removeListener=function(re,se){var Ce=w.prototype.removeListener.call(this,re,se);return re==="readable"&&u.nextTick(ie,this),Ce},R.prototype.removeAllListeners=function(re){var se=w.prototype.removeAllListeners.apply(this,arguments);return(re==="readable"||re===void 0)&&u.nextTick(ie,this),se};function ie(re){var se=re._readableState;se.readableListening=re.listenerCount("readable")>0,se.resumeScheduled&&!se.paused?se.flowing=!0:re.listenerCount("data")>0&&re.resume()}function ce(re){s("readable nexttick read 0"),re.read(0)}R.prototype.resume=function(){var re=this._readableState;return re.flowing||(s("resume"),re.flowing=!re.readableListening,be(this,re)),re.paused=!1,this};function be(re,se){se.resumeScheduled||(se.resumeScheduled=!0,u.nextTick(_e,re,se))}function _e(re,se){s("resume",se.reading),se.reading||re.read(0),se.resumeScheduled=!1,re.emit("resume"),oe(re),se.flowing&&!se.reading&&re.read(0)}R.prototype.pause=function(){return s("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(s("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function oe(re){var se=re._readableState;for(s("flow",se.flowing);se.flowing&&re.read()!==null;);}R.prototype.wrap=function(re){var se=this,Ce=this._readableState,q=!1;re.on("end",function(){if(s("wrapped end"),Ce.decoder&&!Ce.ended){var fe=Ce.decoder.end();fe&&fe.length&&se.push(fe)}se.push(null)}),re.on("data",function(fe){if(s("wrapped data"),Ce.decoder&&(fe=Ce.decoder.write(fe)),!(Ce.objectMode&&fe==null)&&!(!Ce.objectMode&&(!fe||!fe.length))){var we=se.push(fe);we||(q=!0,re.pause())}});for(var G in re)this[G]===void 0&&typeof re[G]=="function"&&(this[G]=function(we){return function(){return re[we].apply(re,arguments)}}(G));for(var Z=0;Z=se.length?(se.decoder?Ce=se.buffer.join(""):se.buffer.length===1?Ce=se.buffer.first():Ce=se.buffer.concat(se.length),se.buffer.clear()):Ce=se.buffer.consume(re,se.decoder),Ce}function Q(re){var se=re._readableState;s("endReadable",se.endEmitted),se.endEmitted||(se.ended=!0,u.nextTick(he,se,re))}function he(re,se){if(s("endReadableNT",re.endEmitted,re.length),!re.endEmitted&&re.length===0&&(re.endEmitted=!0,se.readable=!1,se.emit("end"),re.autoDestroy)){var Ce=se._writableState;(!Ce||Ce.autoDestroy&&Ce.finished)&&se.destroy()}}typeof Symbol=="function"&&(R.from=function(re,se){return N===void 0&&(N=e("./internal/streams/from")),N(R,re,se)});function ke(re,se){for(var Ce=0,q=re.length;Ce-1))throw new C(J);return this._writableState.defaultEncoding=J,this},Object.defineProperty(D.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function E(oe,J,Q){return!oe.objectMode&&oe.decodeStrings!==!1&&typeof J=="string"&&(J=y.from(J,Q)),J}Object.defineProperty(D.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function A(oe,J,Q,he,ke,re){if(!Q){var se=E(J,he,ke);he!==se&&(Q=!0,ke="buffer",he=se)}var Ce=J.objectMode?1:he.length;J.length+=Ce;var q=J.length0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(r){var t={data:r,next:this.head};this.length===0&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var t=this.head,i=""+t.data;t=t.next;)i+=r+t.data;return i}},{key:"concat",value:function(r){if(this.length===0)return h.alloc(0);for(var t=h.allocUnsafe(r>>>0),i=this.head,n=0;i;)v(i.data,t,n),n+=i.data.length,i=i.next;return t}},{key:"consume",value:function(r,t){var i;return ro.length?o.length:r;if(p===o.length?n+=o:n+=o.slice(0,r),r-=p,r===0){p===o.length?(++i,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=o.slice(p));break}++i}return this.length-=i,n}},{key:"_getBuffer",value:function(r){var t=h.allocUnsafe(r),i=this.head,n=1;for(i.data.copy(t),r-=i.data.length;i=i.next;){var o=i.data,p=r>o.length?o.length:r;if(o.copy(t,t.length-r,0,p),r-=p,r===0){p===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(p));break}++n}return this.length-=n,t}},{key:s,value:function(r,t){return d(this,m({},t,{depth:0,customInspect:!1}))}}]),c}()},{buffer:216,util:185}],485:[function(e,S,_){(function(u){function m(h,l){var d=this,s=this._readableState&&this._readableState.destroyed,v=this._writableState&&this._writableState.destroyed;return s||v?(l?l(h):h&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,u.nextTick(f,this,h)):u.nextTick(f,this,h)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(h||null,function(c){!l&&c?d._writableState?d._writableState.errorEmitted?u.nextTick(b,d):(d._writableState.errorEmitted=!0,u.nextTick(g,d,c)):u.nextTick(g,d,c):l?(u.nextTick(b,d),l(c)):u.nextTick(b,d)}),this)}function g(h,l){f(h,l),b(h)}function b(h){h._writableState&&!h._writableState.emitClose||h._readableState&&!h._readableState.emitClose||h.emit("close")}function w(){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)}function f(h,l){h.emit("error",l)}function y(h,l){var d=h._readableState,s=h._writableState;d&&d.autoDestroy||s&&s.autoDestroy?h.destroy(l):h.emit("error",l)}S.exports={destroy:m,undestroy:w,errorOrDestroy:y}}).call(this,e("_process"))},{_process:467}],486:[function(e,S,_){var u=e("../../../errors").codes.ERR_STREAM_PREMATURE_CLOSE;function m(f){var y=!1;return function(){if(!y){y=!0;for(var h=arguments.length,l=new Array(h),d=0;d0;return h(o,O,C,function(N){i||(i=N),N&&n.forEach(l),!O&&(n.forEach(l),t(i))})});return a.reduce(d)}S.exports=v},{"../../../errors":477,"./end-of-stream":486}],489:[function(e,S,_){var u=e("../../../errors").codes.ERR_INVALID_OPT_VALUE;function m(b,w,f){return b.highWaterMark!=null?b.highWaterMark:w?b[f]:null}function g(b,w,f,y){var h=m(w,y,f);if(h!=null){if(!(isFinite(h)&&Math.floor(h)===h)||h<0){var l=y?f:"highWaterMark";throw new u(l,h)}return Math.floor(h)}return b.objectMode?16:16*1024}S.exports={getHighWaterMark:g}},{"../../../errors":477}],490:[function(e,S,_){S.exports=e("events").EventEmitter},{events:367}],491:[function(e,S,_){_=S.exports=e("./lib/_stream_readable.js"),_.Stream=_,_.Readable=_,_.Writable=e("./lib/_stream_writable.js"),_.Duplex=e("./lib/_stream_duplex.js"),_.Transform=e("./lib/_stream_transform.js"),_.PassThrough=e("./lib/_stream_passthrough.js"),_.finished=e("./lib/internal/streams/end-of-stream.js"),_.pipeline=e("./lib/internal/streams/pipeline.js")},{"./lib/_stream_duplex.js":478,"./lib/_stream_passthrough.js":479,"./lib/_stream_readable.js":480,"./lib/_stream_transform.js":481,"./lib/_stream_writable.js":482,"./lib/internal/streams/end-of-stream.js":486,"./lib/internal/streams/pipeline.js":488}],492:[function(e,S,_){function u(g){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(w){return typeof w}:u=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},u(g)}var m=function(g){var b=Object.prototype,w=b.hasOwnProperty,f,y=typeof Symbol=="function"?Symbol:{},h=y.iterator||"@@iterator",l=y.asyncIterator||"@@asyncIterator",d=y.toStringTag||"@@toStringTag";function s(U,I,j){return Object.defineProperty(U,I,{value:j,enumerable:!0,configurable:!0,writable:!0}),U[I]}try{s({},"")}catch{s=function(j,B,V){return j[B]=V}}function v(U,I,j,B){var V=I&&I.prototype instanceof o?I:o,te=Object.create(V.prototype),ie=new z(B||[]);return te._invoke=R(U,j,ie),te}g.wrap=v;function c(U,I,j){try{return{type:"normal",arg:U.call(I,j)}}catch(B){return{type:"throw",arg:B}}}var a="suspendedStart",r="suspendedYield",t="executing",i="completed",n={};function o(){}function p(){}function O(){}var C={};C[h]=function(){return this};var N=Object.getPrototypeOf,L=N&&N(N(W([])));L&&L!==b&&w.call(L,h)&&(C=L);var F=O.prototype=o.prototype=Object.create(C);p.prototype=F.constructor=O,O.constructor=p,p.displayName=s(O,d,"GeneratorFunction");function M(U){["next","throw","return"].forEach(function(I){s(U,I,function(j){return this._invoke(I,j)})})}g.isGeneratorFunction=function(U){var I=typeof U=="function"&&U.constructor;return I?I===p||(I.displayName||I.name)==="GeneratorFunction":!1},g.mark=function(U){return Object.setPrototypeOf?Object.setPrototypeOf(U,O):(U.__proto__=O,s(U,d,"GeneratorFunction")),U.prototype=Object.create(F),U},g.awrap=function(U){return{__await:U}};function D(U,I){function j(te,ie,ce,be){var _e=c(U[te],U,ie);if(_e.type==="throw")be(_e.arg);else{var oe=_e.arg,J=oe.value;return J&&u(J)==="object"&&w.call(J,"__await")?I.resolve(J.__await).then(function(Q){j("next",Q,ce,be)},function(Q){j("throw",Q,ce,be)}):I.resolve(J).then(function(Q){oe.value=Q,ce(oe)},function(Q){return j("throw",Q,ce,be)})}}var B;function V(te,ie){function ce(){return new I(function(be,_e){j(te,ie,be,_e)})}return B=B?B.then(ce,ce):ce()}this._invoke=V}M(D.prototype),D.prototype[l]=function(){return this},g.AsyncIterator=D,g.async=function(U,I,j,B,V){V===void 0&&(V=Promise);var te=new D(v(U,I,j,B),V);return g.isGeneratorFunction(I)?te:te.next().then(function(ie){return ie.done?ie.value:te.next()})};function R(U,I,j){var B=a;return function(te,ie){if(B===t)throw new Error("Generator is already running");if(B===i){if(te==="throw")throw ie;return $()}for(j.method=te,j.arg=ie;;){var ce=j.delegate;if(ce){var be=P(ce,j);if(be){if(be===n)continue;return be}}if(j.method==="next")j.sent=j._sent=j.arg;else if(j.method==="throw"){if(B===a)throw B=i,j.arg;j.dispatchException(j.arg)}else j.method==="return"&&j.abrupt("return",j.arg);B=t;var _e=c(U,I,j);if(_e.type==="normal"){if(B=j.done?i:r,_e.arg===n)continue;return{value:_e.arg,done:j.done}}else _e.type==="throw"&&(B=i,j.method="throw",j.arg=_e.arg)}}}function P(U,I){var j=U.iterator[I.method];if(j===f){if(I.delegate=null,I.method==="throw"){if(U.iterator.return&&(I.method="return",I.arg=f,P(U,I),I.method==="throw"))return n;I.method="throw",I.arg=new TypeError("The iterator does not provide a 'throw' method")}return n}var B=c(j,U.iterator,I.arg);if(B.type==="throw")return I.method="throw",I.arg=B.arg,I.delegate=null,n;var V=B.arg;if(!V)return I.method="throw",I.arg=new TypeError("iterator result is not an object"),I.delegate=null,n;if(V.done)I[U.resultName]=V.value,I.next=U.nextLoc,I.method!=="return"&&(I.method="next",I.arg=f);else return V;return I.delegate=null,n}M(F),s(F,d,"Generator"),F[h]=function(){return this},F.toString=function(){return"[object Generator]"};function E(U){var I={tryLoc:U[0]};1 in U&&(I.catchLoc=U[1]),2 in U&&(I.finallyLoc=U[2],I.afterLoc=U[3]),this.tryEntries.push(I)}function A(U){var I=U.completion||{};I.type="normal",delete I.arg,U.completion=I}function z(U){this.tryEntries=[{tryLoc:"root"}],U.forEach(E,this),this.reset(!0)}g.keys=function(U){var I=[];for(var j in U)I.push(j);return I.reverse(),function B(){for(;I.length;){var V=I.pop();if(V in U)return B.value=V,B.done=!1,B}return B.done=!0,B}};function W(U){if(U){var I=U[h];if(I)return I.call(U);if(typeof U.next=="function")return U;if(!isNaN(U.length)){var j=-1,B=function V(){for(;++j=0;--V){var te=this.tryEntries[V],ie=te.completion;if(te.tryLoc==="root")return B("end");if(te.tryLoc<=this.prev){var ce=w.call(te,"catchLoc"),be=w.call(te,"finallyLoc");if(ce&&be){if(this.prev=0;--B){var V=this.tryEntries[B];if(V.tryLoc<=this.prev&&w.call(V,"finallyLoc")&&this.prev=0;--j){var B=this.tryEntries[j];if(B.finallyLoc===I)return this.complete(B.completion,B.afterLoc),A(B),n}},catch:function(I){for(var j=this.tryEntries.length-1;j>=0;--j){var B=this.tryEntries[j];if(B.tryLoc===I){var V=B.completion;if(V.type==="throw"){var te=V.arg;A(B)}return te}}throw new Error("illegal catch attempt")},delegateYield:function(I,j,B){return this.delegate={iterator:W(I),resultName:j,nextLoc:B},this.method==="next"&&(this.arg=f),n}},g}((typeof S>"u"?"undefined":u(S))==="object"?S.exports:{});try{regeneratorRuntime=m}catch{Function("r","regeneratorRuntime = r")(m)}},{}],493:[function(e,S,_){var u=e("buffer").Buffer,m=e("inherits"),g=e("hash-base"),b=new Array(16),w=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],f=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],y=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],h=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0];function s(){g.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}m(s,g),s.prototype._update=function(){for(var n=b,o=0;o<16;++o)n[o]=this._block.readInt32LE(o*4);for(var p=this._a|0,O=this._b|0,C=this._c|0,N=this._d|0,L=this._e|0,F=this._a|0,M=this._b|0,D=this._c|0,R=this._d|0,P=this._e|0,E=0;E<80;E+=1){var A,z;E<16?(A=c(p,O,C,N,L,n[w[E]],l[0],y[E]),z=i(F,M,D,R,P,n[f[E]],d[0],h[E])):E<32?(A=a(p,O,C,N,L,n[w[E]],l[1],y[E]),z=t(F,M,D,R,P,n[f[E]],d[1],h[E])):E<48?(A=r(p,O,C,N,L,n[w[E]],l[2],y[E]),z=r(F,M,D,R,P,n[f[E]],d[2],h[E])):E<64?(A=t(p,O,C,N,L,n[w[E]],l[3],y[E]),z=a(F,M,D,R,P,n[f[E]],d[3],h[E])):(A=i(p,O,C,N,L,n[w[E]],l[4],y[E]),z=c(F,M,D,R,P,n[f[E]],d[4],h[E])),p=L,L=N,N=v(C,10),C=O,O=A,F=P,P=R,R=v(D,10),D=M,M=z}var W=this._b+C+R|0;this._b=this._c+N+P|0,this._c=this._d+L+F|0,this._d=this._e+p+M|0,this._e=this._a+O+D|0,this._a=W},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var n=u.alloc?u.alloc(20):new u(20);return n.writeInt32LE(this._a,0),n.writeInt32LE(this._b,4),n.writeInt32LE(this._c,8),n.writeInt32LE(this._d,12),n.writeInt32LE(this._e,16),n};function v(n,o){return n<>>32-o}function c(n,o,p,O,C,N,L,F){return v(n+(o^p^O)+N+L|0,F)+C|0}function a(n,o,p,O,C,N,L,F){return v(n+(o&p|~o&O)+N+L|0,F)+C|0}function r(n,o,p,O,C,N,L,F){return v(n+((o|~p)^O)+N+L|0,F)+C|0}function t(n,o,p,O,C,N,L,F){return v(n+(o&O|p&~O)+N+L|0,F)+C|0}function i(n,o,p,O,C,N,L,F){return v(n+(o^(p|~O))+N+L|0,F)+C|0}S.exports=s},{buffer:216,"hash-base":370,inherits:387}],494:[function(e,S,_){var u=e("buffer"),m=u.Buffer;function g(w,f){for(var y in w)f[y]=w[y]}m.from&&m.alloc&&m.allocUnsafe&&m.allocUnsafeSlow?S.exports=u:(g(u,_),_.Buffer=b);function b(w,f,y){return m(w,f,y)}g(m,b),b.from=function(w,f,y){if(typeof w=="number")throw new TypeError("Argument must not be a number");return m(w,f,y)},b.alloc=function(w,f,y){if(typeof w!="number")throw new TypeError("Argument must be a number");var h=m(w);return f!==void 0?typeof y=="string"?h.fill(f,y):h.fill(f):h.fill(0),h},b.allocUnsafe=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return m(w)},b.allocUnsafeSlow=function(w){if(typeof w!="number")throw new TypeError("Argument must be a number");return u.SlowBuffer(w)}},{buffer:216}],495:[function(e,S,_){(function(u){function m(h){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(d){return typeof d}:m=function(d){return d&&typeof Symbol=="function"&&d.constructor===Symbol&&d!==Symbol.prototype?"symbol":typeof d},m(h)}var g=e("buffer"),b=g.Buffer,w={},f;for(f in g)g.hasOwnProperty(f)&&(f==="SlowBuffer"||f==="Buffer"||(w[f]=g[f]));var y=w.Buffer={};for(f in b)b.hasOwnProperty(f)&&(f==="allocUnsafe"||f==="allocUnsafeSlow"||(y[f]=b[f]));if(w.Buffer.prototype=b.prototype,(!y.from||y.from===Uint8Array.from)&&(y.from=function(h,l,d){if(typeof h=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+m(h));if(h&&typeof h.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+m(h));return b(h,l,d)}),y.alloc||(y.alloc=function(h,l,d){if(typeof h!="number")throw new TypeError('The "size" argument must be of type number. Received type '+m(h));if(h<0||h>=2*(1<<30))throw new RangeError('The value "'+h+'" is invalid for option "size"');var s=b(h);return!l||l.length===0?s.fill(0):typeof d=="string"?s.fill(l,d):s.fill(l),s}),!w.kStringMaxLength)try{w.kStringMaxLength=u.binding("buffer").kStringMaxLength}catch{}w.constants||(w.constants={MAX_LENGTH:w.kMaxLength},w.kStringMaxLength&&(w.constants.MAX_STRING_LENGTH=w.kStringMaxLength)),S.exports=w}).call(this,e("_process"))},{_process:467,buffer:216}],496:[function(e,S,_){function u(vt,Ke){var ve;if(typeof Symbol>"u"||vt[Symbol.iterator]==null){if(Array.isArray(vt)||(ve=h(vt))||Ke&&vt&&typeof vt.length=="number"){ve&&(vt=ve);var Fe=0,Be=function(){};return{s:Be,n:function(){return Fe>=vt.length?{done:!0}:{done:!1,value:vt[Fe++]}},e:function(gr){throw gr},f:Be}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var dt=!0,St=!1,Xt;return{s:function(){ve=vt[Symbol.iterator]()},n:function(){var gr=ve.next();return dt=gr.done,gr},e:function(gr){St=!0,Xt=gr},f:function(){try{!dt&&ve.return!=null&&ve.return()}finally{if(St)throw Xt}}}}function m(vt){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?m=function(ve){return typeof ve}:m=function(ve){return ve&&typeof Symbol=="function"&&ve.constructor===Symbol&&ve!==Symbol.prototype?"symbol":typeof ve},m(vt)}function g(vt,Ke){if(!(vt instanceof Ke))throw new TypeError("Cannot call a class as a function")}function b(vt,Ke){for(var ve=0;vevt.length)&&(Ke=vt.length);for(var ve=0,Fe=new Array(Ke);ve",lt:"<",quot:'"',apos:"'"},P=-1,E=-2,A=0,z=1,W=2,$=3,U=4,I=5,j=6,B=7,V=8,te=9,ie=10,ce=11,be=12,_e=13,oe=14,J=15,Q=16,he=17,ke=18,re=19,se=20,Ce=21,q=22,G=23,Z=24,fe=25,we=26,ge=27,je=28,Ze=29,nt=30,ut=31,ot=32,Ue=33,Ve=34,Qe=35,tt=36,ae=37,Re=38,me=39,Ee=40,pe=41,Pe=42,ee=43,Xe=44,it=9,K=10,Me=13,Le=32,ue=33,Se=34,Ie=38,st=39,Ge=45,rt=47,_t=59,wt=60,Ot=61,pt=62,ct=63,At=91,Pt=93,bt=133,Kt=8232,Ct=function(Ke){return Ke===Se||Ke===st},xt=[Se,st],Ft=[].concat(xt,[At,pt]),Lt=[].concat(xt,[wt,Pt]),Et=[Ot,ct].concat(f(o)),Dr=[].concat(f(o),[pt,Ie,wt]);function Or(vt,Ke,ve){switch(Ke){case"xml":ve!==F&&vt.fail("xml prefix must be bound to ".concat(F,"."));break;case"xmlns":ve!==M&&vt.fail("xmlns prefix must be bound to ".concat(M,"."));break}switch(ve){case M:vt.fail(Ke===""?"the default namespace may not be set to ".concat(ve,"."):'may not assign a prefix (even "xmlns") to the URI '.concat(M,"."));break;case F:switch(Ke){case"xml":break;case"":vt.fail("the default namespace may not be set to ".concat(ve,"."));break;default:vt.fail("may not assign the xml namespace to another prefix.")}break}}function Gr(vt,Ke){for(var ve=0,Fe=Object.keys(Ke);ve0&&(Be+=":"),Be+="".concat(this.line,":").concat(this.column)),Be.length>0&&(Be+=": "),new Error(Be+ve)}},{key:"fail",value:function(ve){var Fe=this.makeError(ve),Be=this.errorHandler;if(Be===void 0)throw Fe;return Be(Fe),this}},{key:"write",value:function(ve){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");var Fe=!1;ve===null?(Fe=!0,ve=""):m(ve)==="object"&&(ve=ve.toString()),this.carriedFromPrevious!==void 0&&(ve="".concat(this.carriedFromPrevious).concat(ve),this.carriedFromPrevious=void 0);var Be=ve.length,dt=ve.charCodeAt(Be-1);!Fe&&(dt===Me||dt>=55296&&dt<=56319)&&(this.carriedFromPrevious=ve[Be-1],Be--,ve=ve.slice(0,Be));var St=this.stateTable;for(this.chunk=ve,this.i=0;this.i=ve.length)return P;var Be=ve.charCodeAt(Fe);if(this.column++,Be<55296){if(Be>=Le||Be===it)return Be;switch(Be){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case Me:return ve.charCodeAt(Fe+1)===K&&(this.i=Fe+2),this.line++,this.column=0,this.positionAtNewLine=this.position,E;default:return this.fail("disallowed character."),Be}}if(Be>56319)return Be>=57344&&Be<=65533||this.fail("disallowed character."),Be;var dt=65536+(Be-55296)*1024+(ve.charCodeAt(Fe+1)-56320);return this.i=Fe+2,dt>1114111&&this.fail("disallowed character."),dt}},{key:"getCode11",value:function(){var ve=this.chunk,Fe=this.i;if(this.prevI=Fe,this.i=Fe+1,Fe>=ve.length)return P;var Be=ve.charCodeAt(Fe);if(this.column++,Be<55296){if(Be>31&&Be<127||Be>159&&Be!==Kt||Be===it)return Be;switch(Be){case K:return this.line++,this.column=0,this.positionAtNewLine=this.position,K;case Me:{var dt=ve.charCodeAt(Fe+1);(dt===K||dt===bt)&&(this.i=Fe+2)}case bt:case Kt:return this.line++,this.column=0,this.positionAtNewLine=this.position,E;default:return this.fail("disallowed character."),Be}}if(Be>56319)return Be>=57344&&Be<=65533||this.fail("disallowed character."),Be;var St=65536+(Be-55296)*1024+(ve.charCodeAt(Fe+1)-56320);return this.i=Fe+2,St>1114111&&this.fail("disallowed character."),St}},{key:"getCodeNorm",value:function(){var ve=this.getCode();return ve===E?K:ve}},{key:"unget",value:function(){this.i=this.prevI,this.column--}},{key:"captureTo",value:function(ve){for(var Fe=this.i,Be=this.chunk;;){var dt=this.getCode(),St=dt===E,Xt=St?K:dt;if(Xt===P||ve.includes(Xt))return this.text+=Be.slice(Fe,this.prevI),Xt;St&&(this.text+="".concat(Be.slice(Fe,this.prevI),` +`),Fe=this.i)}}},{key:"captureToChar",value:function(ve){for(var Fe=this.i,Be=this.chunk;;){var dt=this.getCode();switch(dt){case E:this.text+="".concat(Be.slice(Fe,this.prevI),` +`),Fe=this.i,dt=K;break;case P:return this.text+=Be.slice(Fe),!1}if(dt===ve)return this.text+=Be.slice(Fe,this.prevI),!0}}},{key:"captureNameChars",value:function(){for(var ve=this.chunk,Fe=this.i;;){var Be=this.getCode();if(Be===P)return this.name+=ve.slice(Fe),P;if(!n(Be))return this.name+=ve.slice(Fe,this.prevI),Be===E?K:Be}}},{key:"skipSpaces",value:function(){for(;;){var ve=this.getCodeNorm();if(ve===P||!r(ve))return ve}}},{key:"setXMLVersion",value:function(ve){this.currentXMLVersion=ve,ve==="1.0"?(this.isChar=t,this.getCode=this.getCode10):(this.isChar=O,this.getCode=this.getCode11)}},{key:"sBegin",value:function(){this.chunk.charCodeAt(0)===65279&&(this.i++,this.column++),this.state=z}},{key:"sBeginWhitespace",value:function(){var ve=this.i,Fe=this.skipSpaces();switch(this.prevI!==ve&&(this.xmlDeclPossible=!1),Fe){case wt:if(this.state=J,this.text.length!==0)throw new Error("no-empty text at start");break;case P:break;default:this.unget(),this.state=_e,this.xmlDeclPossible=!1}}},{key:"sDoctype",value:function(){var ve,Fe=this.captureTo(Ft);switch(Fe){case pt:{(ve=this.doctypeHandler)===null||ve===void 0||ve.call(this,this.text),this.text="",this.state=_e,this.doctype=!0;break}case P:break;default:this.text+=String.fromCodePoint(Fe),Fe===At?this.state=U:Ct(Fe)&&(this.state=$,this.q=Fe)}}},{key:"sDoctypeQuote",value:function(){var ve=this.q;this.captureToChar(ve)&&(this.text+=String.fromCodePoint(ve),this.q=null,this.state=W)}},{key:"sDTD",value:function(){var ve=this.captureTo(Lt);ve!==P&&(this.text+=String.fromCodePoint(ve),ve===Pt?this.state=W:ve===wt?this.state=j:Ct(ve)&&(this.state=I,this.q=ve))}},{key:"sDTDQuoted",value:function(){var ve=this.q;this.captureToChar(ve)&&(this.text+=String.fromCodePoint(ve),this.state=U,this.q=null)}},{key:"sDTDOpenWaka",value:function(){var ve=this.getCodeNorm();switch(this.text+=String.fromCodePoint(ve),ve){case ue:this.state=B,this.openWakaBang="";break;case ct:this.state=ce;break;default:this.state=U}}},{key:"sDTDOpenWakaBang",value:function(){var ve=String.fromCodePoint(this.getCodeNorm()),Fe=this.openWakaBang+=ve;this.text+=ve,Fe!=="-"&&(this.state=Fe==="--"?V:U,this.openWakaBang="")}},{key:"sDTDComment",value:function(){this.captureToChar(Ge)&&(this.text+="-",this.state=te)}},{key:"sDTDCommentEnding",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),this.state=ve===Ge?ie:V}},{key:"sDTDCommentEnded",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),ve===pt?this.state=U:(this.fail("malformed comment."),this.state=V)}},{key:"sDTDPI",value:function(){this.captureToChar(ct)&&(this.text+="?",this.state=be)}},{key:"sDTDPIEnding",value:function(){var ve=this.getCodeNorm();this.text+=String.fromCodePoint(ve),ve===pt&&(this.state=U)}},{key:"sText",value:function(){this.tags.length!==0?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:"sEntity",value:function(){var ve=this.i,Fe=this.chunk;e:for(;;)switch(this.getCode()){case E:this.entity+="".concat(Fe.slice(ve,this.prevI),` +`),ve=this.i;break;case _t:{var Be=this.entityReturnState,dt=this.entity+Fe.slice(ve,this.prevI);this.state=Be;var St=void 0;dt===""?(this.fail("empty entity name."),St="&;"):(St=this.parseEntity(dt),this.entity=""),(Be!==_e||this.textHandler!==void 0)&&(this.text+=St);break e}case P:this.entity+=Fe.slice(ve);break e}}},{key:"sOpenWaka",value:function(){var ve=this.getCode();if(i(ve))this.state=Ve,this.unget(),this.xmlDeclPossible=!1;else switch(ve){case rt:this.state=ee,this.xmlDeclPossible=!1;break;case ue:this.state=Q,this.openWakaBang="",this.xmlDeclPossible=!1;break;case ct:this.state=G;break;default:this.fail("disallowed character in tag name"),this.state=_e,this.xmlDeclPossible=!1}}},{key:"sOpenWakaBang",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case"[CDATA[":!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0),this.state=se,this.openWakaBang="";break;case"--":this.state=he,this.openWakaBang="";break;case"DOCTYPE":this.state=W,(this.doctype||this.sawRoot)&&this.fail("inappropriately located doctype declaration."),this.openWakaBang="";break;default:this.openWakaBang.length>=7&&this.fail("incorrect syntax.")}}},{key:"sComment",value:function(){this.captureToChar(Ge)&&(this.state=ke)}},{key:"sCommentEnding",value:function(){var ve,Fe=this.getCodeNorm();Fe===Ge?(this.state=re,(ve=this.commentHandler)===null||ve===void 0||ve.call(this,this.text),this.text=""):(this.text+="-".concat(String.fromCodePoint(Fe)),this.state=he)}},{key:"sCommentEnded",value:function(){var ve=this.getCodeNorm();ve!==pt?(this.fail("malformed comment."),this.text+="--".concat(String.fromCodePoint(ve)),this.state=he):this.state=_e}},{key:"sCData",value:function(){this.captureToChar(Pt)&&(this.state=Ce)}},{key:"sCDataEnding",value:function(){var ve=this.getCodeNorm();ve===Pt?this.state=q:(this.text+="]".concat(String.fromCodePoint(ve)),this.state=se)}},{key:"sCDataEnding2",value:function(){var ve,Fe=this.getCodeNorm();switch(Fe){case pt:{(ve=this.cdataHandler)===null||ve===void 0||ve.call(this,this.text),this.text="",this.state=_e;break}case Pt:this.text+="]";break;default:this.text+="]]".concat(String.fromCodePoint(Fe)),this.state=se}}},{key:"sPIFirstChar",value:function(){var ve=this.getCodeNorm();this.nameStartCheck(ve)?(this.piTarget+=String.fromCodePoint(ve),this.state=Z):ve===ct||r(ve)?(this.fail("processing instruction without a target."),this.state=ve===ct?we:fe):(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(ve),this.state=Z)}},{key:"sPIRest",value:function(){for(var ve=this.chunk,Fe=this.i;;){var Be=this.getCodeNorm();if(Be===P){this.piTarget+=ve.slice(Fe);return}if(!this.nameCheck(Be)){this.piTarget+=ve.slice(Fe,this.prevI);var dt=Be===ct;dt||r(Be)?this.piTarget==="xml"?(this.xmlDeclPossible||this.fail("an XML declaration must be at the start of the document."),this.state=dt?Ue:ge):this.state=dt?we:fe:(this.fail("disallowed character in processing instruction name."),this.piTarget+=String.fromCodePoint(Be));break}}}},{key:"sPIBody",value:function(){if(this.text.length===0){var ve=this.getCodeNorm();ve===ct?this.state=we:r(ve)||(this.text=String.fromCodePoint(ve))}else this.captureToChar(ct)&&(this.state=we)}},{key:"sPIEnding",value:function(){var ve,Fe=this.getCodeNorm();if(Fe===pt){var Be=this.piTarget;Be.toLowerCase()==="xml"&&this.fail("the XML declaration must appear at the start of the document."),(ve=this.piHandler)===null||ve===void 0||ve.call(this,{target:Be,body:this.text}),this.piTarget=this.text="",this.state=_e}else Fe===ct?this.text+="?":(this.text+="?".concat(String.fromCodePoint(Fe)),this.state=fe);this.xmlDeclPossible=!1}},{key:"sXMLDeclNameStart",value:function(){var ve=this.skipSpaces();if(ve===ct){this.state=Ue;return}ve!==P&&(this.state=je,this.name=String.fromCodePoint(ve))}},{key:"sXMLDeclName",value:function(){var ve=this.captureTo(Et);if(ve===ct){this.state=Ue,this.name+=this.text,this.text="",this.fail("XML declaration is incomplete.");return}if(r(ve)||ve===Ot){if(this.name+=this.text,this.text="",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail("did not expect any more name/value pairs.");break;case 1:this.fail("expected the name ".concat(this.xmlDeclExpects[0],"."));break;default:this.fail("expected one of ".concat(this.xmlDeclExpects.join(", ")))}this.state=ve===Ot?nt:Ze}}},{key:"sXMLDeclEq",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue,this.fail("XML declaration is incomplete.");return}r(ve)||(ve!==Ot&&this.fail("value required."),this.state=nt)}},{key:"sXMLDeclValueStart",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue,this.fail("XML declaration is incomplete.");return}r(ve)||(Ct(ve)?this.q=ve:(this.fail("value must be quoted."),this.q=Le),this.state=ut)}},{key:"sXMLDeclValue",value:function(){var ve=this.captureTo([this.q,ct]);if(ve===ct){this.state=Ue,this.text="",this.fail("XML declaration is incomplete.");return}if(ve!==P){var Fe=this.text;switch(this.text="",this.name){case"version":{this.xmlDeclExpects=["encoding","standalone"];var Be=Fe;this.xmlDecl.version=Be,/^1\.[0-9]+$/.test(Be)?this.opt.forceXMLVersion||this.setXMLVersion(Be):this.fail("version number must match /^1\\.[0-9]+$/.");break}case"encoding":/^[A-Za-z][A-Za-z0-9._-]*$/.test(Fe)||this.fail("encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/."),this.xmlDeclExpects=["standalone"],this.xmlDecl.encoding=Fe;break;case"standalone":Fe!=="yes"&&Fe!=="no"&&this.fail('standalone value must match "yes" or "no".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=Fe;break}this.name="",this.state=ot}}},{key:"sXMLDeclSeparator",value:function(){var ve=this.getCodeNorm();if(ve===ct){this.state=Ue;return}r(ve)||(this.fail("whitespace required."),this.unget()),this.state=ge}},{key:"sXMLDeclEnding",value:function(){var ve,Fe=this.getCodeNorm();Fe===pt?(this.piTarget!=="xml"?this.fail("processing instructions are not allowed before root."):this.name!=="version"&&this.xmlDeclExpects.includes("version")&&this.fail("XML declaration must contain a version."),(ve=this.xmldeclHandler)===null||ve===void 0||ve.call(this,this.xmlDecl),this.name="",this.piTarget=this.text="",this.state=_e):this.fail("The character ? is disallowed anywhere in XML declarations."),this.xmlDeclPossible=!1}},{key:"sOpenTag",value:function(){var ve,Fe=this.captureNameChars();if(Fe!==P){var Be=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name="",this.xmlnsOpt&&(this.topNS=Be.ns=Object.create(null)),(ve=this.openTagStartHandler)===null||ve===void 0||ve.call(this,Be),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail("documents may contain only one root."),Fe){case pt:this.openTag();break;case rt:this.state=Qe;break;default:r(Fe)||this.fail("disallowed character in tag name."),this.state=tt}}}},{key:"sOpenTagSlash",value:function(){this.getCode()===pt?this.openSelfClosingTag():(this.fail("forward-slash in opening tag not followed by >."),this.state=tt)}},{key:"sAttrib",value:function(){var ve=this.skipSpaces();ve!==P&&(i(ve)?(this.unget(),this.state=ae):ve===pt?this.openTag():ve===rt?this.state=Qe:this.fail("disallowed character in attribute name."))}},{key:"sAttribName",value:function(){var ve=this.captureNameChars();ve===Ot?this.state=me:r(ve)?this.state=Re:ve===pt?(this.fail("attribute without value."),this.pushAttrib(this.name,this.name),this.name=this.text="",this.openTag()):ve!==P&&this.fail("disallowed character in attribute name.")}},{key:"sAttribNameSawWhite",value:function(){var ve=this.skipSpaces();switch(ve){case P:return;case Ot:this.state=me;break;default:this.fail("attribute without value."),this.text="",this.name="",ve===pt?this.openTag():i(ve)?(this.unget(),this.state=ae):(this.fail("disallowed character in attribute name."),this.state=tt)}}},{key:"sAttribValue",value:function(){var ve=this.getCodeNorm();Ct(ve)?(this.q=ve,this.state=Ee):r(ve)||(this.fail("unquoted attribute value."),this.state=Pe,this.unget())}},{key:"sAttribValueQuoted",value:function(){for(var ve=this.q,Fe=this.chunk,Be=this.i;;)switch(this.getCode()){case ve:this.pushAttrib(this.name,this.text+Fe.slice(Be,this.prevI)),this.name=this.text="",this.q=null,this.state=pe;return;case Ie:this.text+=Fe.slice(Be,this.prevI),this.state=oe,this.entityReturnState=Ee;return;case K:case E:case it:this.text+="".concat(Fe.slice(Be,this.prevI)," "),Be=this.i;break;case wt:this.text+=Fe.slice(Be,this.prevI),this.fail("disallowed character.");return;case P:this.text+=Fe.slice(Be);return}}},{key:"sAttribValueClosed",value:function(){var ve=this.getCodeNorm();r(ve)?this.state=tt:ve===pt?this.openTag():ve===rt?this.state=Qe:i(ve)?(this.fail("no whitespace between attributes."),this.unget(),this.state=ae):this.fail("disallowed character in attribute name.")}},{key:"sAttribValueUnquoted",value:function(){var ve=this.captureTo(Dr);switch(ve){case Ie:this.state=oe,this.entityReturnState=Pe;break;case wt:this.fail("disallowed character.");break;case P:break;default:this.text.includes("]]>")&&this.fail('the string "]]>" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text="",ve===pt?this.openTag():this.state=tt}}},{key:"sCloseTag",value:function(){var ve=this.captureNameChars();ve===pt?this.closeTag():r(ve)?this.state=Xe:ve!==P&&this.fail("disallowed character in closing tag.")}},{key:"sCloseTagSawWhite",value:function(){switch(this.skipSpaces()){case pt:this.closeTag();break;case P:break;default:this.fail("disallowed character in closing tag.")}}},{key:"handleTextInRoot",value:function(){var ve=this.i,Fe=this.forbiddenState,Be=this.chunk,dt=this.textHandler;e:for(;;)switch(this.getCode()){case wt:{if(this.state=J,dt!==void 0){var St=this.text,Xt=Be.slice(ve,this.prevI);St.length!==0?(dt(St+Xt),this.text=""):Xt.length!==0&&dt(Xt)}Fe=Qt;break e}case Ie:this.state=oe,this.entityReturnState=_e,dt!==void 0&&(this.text+=Be.slice(ve,this.prevI)),Fe=Qt;break e;case Pt:switch(Fe){case Qt:Fe=Hr;break;case Hr:Fe=Fr;break;case Fr:break;default:throw new Error("impossible state")}break;case pt:Fe===Fr&&this.fail('the string "]]>" is disallowed in char data.'),Fe=Qt;break;case E:dt!==void 0&&(this.text+="".concat(Be.slice(ve,this.prevI),` +`)),ve=this.i,Fe=Qt;break;case P:dt!==void 0&&(this.text+=Be.slice(ve));break e;default:Fe=Qt}this.forbiddenState=Fe}},{key:"handleTextOutsideRoot",value:function(){var ve=this.i,Fe=this.chunk,Be=this.textHandler,dt=!1;e:for(;;){var St=this.getCode();switch(St){case wt:{if(this.state=J,Be!==void 0){var Xt=this.text,lr=Fe.slice(ve,this.prevI);Xt.length!==0?(Be(Xt+lr),this.text=""):lr.length!==0&&Be(lr)}break e}case Ie:this.state=oe,this.entityReturnState=_e,Be!==void 0&&(this.text+=Fe.slice(ve,this.prevI)),dt=!0;break e;case E:Be!==void 0&&(this.text+="".concat(Fe.slice(ve,this.prevI),` +`)),ve=this.i;break;case P:Be!==void 0&&(this.text+=Fe.slice(ve));break e;default:r(St)||(dt=!0)}}dt&&(!this.sawRoot&&!this.reportedTextBeforeRoot&&(this.fail("text data outside of root node."),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail("text data outside of root node."),this.reportedTextAfterRoot=!0))}},{key:"pushAttribNS",value:function(ve,Fe){var Be,dt=this.qname(ve),St=dt.prefix,Xt=dt.local,lr={name:ve,prefix:St,local:Xt,value:Fe};if(this.attribList.push(lr),(Be=this.attributeHandler)===null||Be===void 0||Be.call(this,lr),St==="xmlns"){var gr=Fe.trim();this.currentXMLVersion==="1.0"&&gr===""&&this.fail("invalid attempt to undefine prefix in XML 1.0"),this.topNS[Xt]=gr,Or(this,Xt,gr)}else if(ve==="xmlns"){var rn=Fe.trim();this.topNS[""]=rn,Or(this,"",rn)}}},{key:"pushAttribPlain",value:function(ve,Fe){var Be,dt={name:ve,value:Fe};this.attribList.push(dt),(Be=this.attributeHandler)===null||Be===void 0||Be.call(this,dt)}},{key:"end",value:function(){var ve,Fe;this.sawRoot||this.fail("document must contain a root element.");for(var Be=this.tags;Be.length>0;){var dt=Be.pop();this.fail("unclosed tag: ".concat(dt.name))}this.state!==A&&this.state!==_e&&this.fail("unexpected end.");var St=this.text;return St.length!==0&&((ve=this.textHandler)===null||ve===void 0||ve.call(this,St),this.text=""),this._closed=!0,(Fe=this.endHandler)===null||Fe===void 0||Fe.call(this),this._init(),this}},{key:"resolve",value:function(ve){var Fe,Be,dt=this.topNS[ve];if(dt!==void 0)return dt;for(var St=this.tags,Xt=St.length-1;Xt>=0;Xt--)if(dt=St[Xt].ns[ve],dt!==void 0)return dt;return dt=this.ns[ve],dt!==void 0?dt:(Be=(Fe=this.opt).resolvePrefix)===null||Be===void 0?void 0:Be.call(Fe,ve)}},{key:"qname",value:function(ve){var Fe=ve.indexOf(":");if(Fe===-1)return{prefix:"",local:ve};var Be=ve.slice(Fe+1),dt=ve.slice(0,Fe);return(dt===""||Be===""||Be.includes(":"))&&this.fail("malformed name: ".concat(ve,".")),{prefix:dt,local:Be}}},{key:"processAttribsNS",value:function(){var ve,Fe=this.attribList,Be=this.tag;{var dt=this.qname(Be.name),St=dt.prefix,Xt=dt.local;Be.prefix=St,Be.local=Xt;var lr=Be.uri=(ve=this.resolve(St))!==null&&ve!==void 0?ve:"";St!==""&&(St==="xmlns"&&this.fail('tags may not have "xmlns" as prefix.'),lr===""&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(St),".")),Be.uri=St))}if(Fe.length!==0){var gr=Be.attributes,rn=new Set,zr=u(Fe),pi;try{for(zr.s();!(pi=zr.n()).done;){var Wr=pi.value,Dn=Wr.name,cn=Wr.prefix,yi=Wr.local,hn=void 0,dn=void 0;cn===""?(hn=Dn==="xmlns"?M:"",dn=Dn):(hn=this.resolve(cn),hn===void 0&&(this.fail("unbound namespace prefix: ".concat(JSON.stringify(cn),".")),hn=cn),dn="{".concat(hn,"}").concat(yi)),rn.has(dn)&&this.fail("duplicate attribute: ".concat(dn,".")),rn.add(dn),Wr.uri=hn,gr[Dn]=Wr}}catch(Nn){zr.e(Nn)}finally{zr.f()}this.attribList=[]}}},{key:"processAttribsPlain",value:function(){var ve=this.attribList,Fe=this.tag.attributes,Be=u(ve),dt;try{for(Be.s();!(dt=Be.n()).done;){var St=dt.value,Xt=St.name,lr=St.value;Fe[Xt]!==void 0&&this.fail("duplicate attribute: ".concat(Xt,".")),Fe[Xt]=lr}}catch(gr){Be.e(gr)}finally{Be.f()}this.attribList=[]}},{key:"openTag",value:function(){var ve;this.processAttribs();var Fe=this.tags,Be=this.tag;Be.isSelfClosing=!1,(ve=this.openTagHandler)===null||ve===void 0||ve.call(this,Be),Fe.push(Be),this.state=_e,this.name=""}},{key:"openSelfClosingTag",value:function(){var ve,Fe,Be;this.processAttribs();var dt=this.tags,St=this.tag;St.isSelfClosing=!0,(ve=this.openTagHandler)===null||ve===void 0||ve.call(this,St),(Fe=this.closeTagHandler)===null||Fe===void 0||Fe.call(this,St);var Xt=this.tag=(Be=dt[dt.length-1])!==null&&Be!==void 0?Be:null;Xt===null&&(this.closedRoot=!0),this.state=_e,this.name=""}},{key:"closeTag",value:function(){var ve=this.tags,Fe=this.name;if(this.state=_e,this.name="",Fe===""){this.fail("weird empty close tag."),this.text+="";return}for(var Be=this.closeTagHandler,dt=ve.length;dt-- >0;){var St=this.tag=ve.pop();if(this.topNS=St.ns,Be==null||Be(St),St.name===Fe)break;this.fail("unexpected close tag.")}dt===0?this.closedRoot=!0:dt<0&&(this.fail("unmatched closing tag: ".concat(Fe,".")),this.text+=""))}},{key:"parseEntity",value:function(ve){if(ve[0]!=="#"){var Fe=this.ENTITIES[ve];return Fe!==void 0?Fe:(this.fail(this.isName(ve)?"undefined entity.":"disallowed character in entity name."),"&".concat(ve,";"))}var Be=NaN;return ve[1]==="x"&&/^#x[0-9a-f]+$/i.test(ve)?Be=parseInt(ve.slice(2),16):/^#[0-9]+$/.test(ve)&&(Be=parseInt(ve.slice(1),10)),this.isChar(Be)?String.fromCodePoint(Be):(this.fail("malformed character entity."),"&".concat(ve,";"))}},{key:"closed",get:function(){return this._closed}},{key:"position",get:function(){return this.chunkPosition+this.i}},{key:"columnIndex",get:function(){return this.position-this.positionAtNewLine}}]),vt}();_.SaxesParser=Ur},{"xmlchars/xml/1.0/ed5":541,"xmlchars/xml/1.1/ed2":542,"xmlchars/xmlns/1.0/ed3":543}],497:[function(e,S,_){(function(u){S.exports=typeof u=="function"?u:function(){var g=[].slice.apply(arguments);g.splice(1,0,0),setTimeout.apply(null,g)}}).call(this,e("timers").setImmediate)},{timers:521}],498:[function(e,S,_){var u=e("safe-buffer").Buffer;function m(g,b){this._block=u.alloc(g),this._finalSize=b,this._blockSize=g,this._len=0}m.prototype.update=function(g,b){typeof g=="string"&&(b=b||"utf8",g=u.from(g,b));for(var w=this._block,f=this._blockSize,y=g.length,h=this._len,l=0;l=this._finalSize&&(this._update(this._block),this._block.fill(0));var w=this._len*8;if(w<=4294967295)this._block.writeUInt32BE(w,this._blockSize-4);else{var f=(w&4294967295)>>>0,y=(w-f)/4294967296;this._block.writeUInt32BE(y,this._blockSize-8),this._block.writeUInt32BE(f,this._blockSize-4)}this._update(this._block);var h=this._hash();return g?h.toString(g):h},m.prototype._update=function(){throw new Error("_update must be implemented by subclass")},S.exports=m},{"safe-buffer":494}],499:[function(e,S,_){var u=S.exports=function(g){g=g.toLowerCase();var b=u[g];if(!b)throw new Error(g+" is not supported (we accept pull requests)");return new b};u.sha=e("./sha"),u.sha1=e("./sha1"),u.sha224=e("./sha224"),u.sha256=e("./sha256"),u.sha384=e("./sha384"),u.sha512=e("./sha512")},{"./sha":500,"./sha1":501,"./sha224":502,"./sha256":503,"./sha384":504,"./sha512":505}],500:[function(e,S,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1518500249,1859775393,-1894007588,-899497514],w=new Array(80);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function y(d){return d<<5|d>>>27}function h(d){return d<<30|d>>>2}function l(d,s,v,c){return d===0?s&v|~s&c:d===2?s&v|s&c|v&c:s^v^c}f.prototype._update=function(d){for(var s=this._w,v=this._a|0,c=this._b|0,a=this._c|0,r=this._d|0,t=this._e|0,i=0;i<16;++i)s[i]=d.readInt32BE(i*4);for(;i<80;++i)s[i]=s[i-3]^s[i-8]^s[i-14]^s[i-16];for(var n=0;n<80;++n){var o=~~(n/20),p=y(v)+l(o,c,a,r)+t+s[n]+b[o]|0;t=r,r=a,a=h(c),c=v,v=p}this._a=v+this._a|0,this._b=c+this._b|0,this._c=a+this._c|0,this._d=r+this._d|0,this._e=t+this._e|0},f.prototype._hash=function(){var d=g.allocUnsafe(20);return d.writeInt32BE(this._a|0,0),d.writeInt32BE(this._b|0,4),d.writeInt32BE(this._c|0,8),d.writeInt32BE(this._d|0,12),d.writeInt32BE(this._e|0,16),d},S.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],501:[function(e,S,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1518500249,1859775393,-1894007588,-899497514],w=new Array(80);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function y(s){return s<<1|s>>>31}function h(s){return s<<5|s>>>27}function l(s){return s<<30|s>>>2}function d(s,v,c,a){return s===0?v&c|~v&a:s===2?v&c|v&a|c&a:v^c^a}f.prototype._update=function(s){for(var v=this._w,c=this._a|0,a=this._b|0,r=this._c|0,t=this._d|0,i=this._e|0,n=0;n<16;++n)v[n]=s.readInt32BE(n*4);for(;n<80;++n)v[n]=y(v[n-3]^v[n-8]^v[n-14]^v[n-16]);for(var o=0;o<80;++o){var p=~~(o/20),O=h(c)+d(p,a,r,t)+i+v[o]+b[p]|0;i=t,t=r,r=l(a),a=c,c=O}this._a=c+this._a|0,this._b=a+this._b|0,this._c=r+this._c|0,this._d=t+this._d|0,this._e=i+this._e|0},f.prototype._hash=function(){var s=g.allocUnsafe(20);return s.writeInt32BE(this._a|0,0),s.writeInt32BE(this._b|0,4),s.writeInt32BE(this._c|0,8),s.writeInt32BE(this._d|0,12),s.writeInt32BE(this._e|0,16),s},S.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],502:[function(e,S,_){var u=e("inherits"),m=e("./sha256"),g=e("./hash"),b=e("safe-buffer").Buffer,w=new Array(64);function f(){this.init(),this._w=w,g.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},f.prototype._hash=function(){var y=b.allocUnsafe(28);return y.writeInt32BE(this._a,0),y.writeInt32BE(this._b,4),y.writeInt32BE(this._c,8),y.writeInt32BE(this._d,12),y.writeInt32BE(this._e,16),y.writeInt32BE(this._f,20),y.writeInt32BE(this._g,24),y},S.exports=f},{"./hash":498,"./sha256":503,inherits:387,"safe-buffer":494}],503:[function(e,S,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],w=new Array(64);function f(){this.init(),this._w=w,m.call(this,64,56)}u(f,m),f.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this};function y(c,a,r){return r^c&(a^r)}function h(c,a,r){return c&a|r&(c|a)}function l(c){return(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10)}function d(c){return(c>>>6|c<<26)^(c>>>11|c<<21)^(c>>>25|c<<7)}function s(c){return(c>>>7|c<<25)^(c>>>18|c<<14)^c>>>3}function v(c){return(c>>>17|c<<15)^(c>>>19|c<<13)^c>>>10}f.prototype._update=function(c){for(var a=this._w,r=this._a|0,t=this._b|0,i=this._c|0,n=this._d|0,o=this._e|0,p=this._f|0,O=this._g|0,C=this._h|0,N=0;N<16;++N)a[N]=c.readInt32BE(N*4);for(;N<64;++N)a[N]=v(a[N-2])+a[N-7]+s(a[N-15])+a[N-16]|0;for(var L=0;L<64;++L){var F=C+d(o)+y(o,p,O)+b[L]+a[L]|0,M=l(r)+h(r,t,i)|0;C=O,O=p,p=o,o=n+F|0,n=i,i=t,t=r,r=F+M|0}this._a=r+this._a|0,this._b=t+this._b|0,this._c=i+this._c|0,this._d=n+this._d|0,this._e=o+this._e|0,this._f=p+this._f|0,this._g=O+this._g|0,this._h=C+this._h|0},f.prototype._hash=function(){var c=g.allocUnsafe(32);return c.writeInt32BE(this._a,0),c.writeInt32BE(this._b,4),c.writeInt32BE(this._c,8),c.writeInt32BE(this._d,12),c.writeInt32BE(this._e,16),c.writeInt32BE(this._f,20),c.writeInt32BE(this._g,24),c.writeInt32BE(this._h,28),c},S.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],504:[function(e,S,_){var u=e("inherits"),m=e("./sha512"),g=e("./hash"),b=e("safe-buffer").Buffer,w=new Array(160);function f(){this.init(),this._w=w,g.call(this,128,112)}u(f,m),f.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},f.prototype._hash=function(){var y=b.allocUnsafe(48);function h(l,d,s){y.writeInt32BE(l,s),y.writeInt32BE(d,s+4)}return h(this._ah,this._al,0),h(this._bh,this._bl,8),h(this._ch,this._cl,16),h(this._dh,this._dl,24),h(this._eh,this._el,32),h(this._fh,this._fl,40),y},S.exports=f},{"./hash":498,"./sha512":505,inherits:387,"safe-buffer":494}],505:[function(e,S,_){var u=e("inherits"),m=e("./hash"),g=e("safe-buffer").Buffer,b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],w=new Array(160);function f(){this.init(),this._w=w,m.call(this,128,112)}u(f,m),f.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this};function y(t,i,n){return n^t&(i^n)}function h(t,i,n){return t&i|n&(t|i)}function l(t,i){return(t>>>28|i<<4)^(i>>>2|t<<30)^(i>>>7|t<<25)}function d(t,i){return(t>>>14|i<<18)^(t>>>18|i<<14)^(i>>>9|t<<23)}function s(t,i){return(t>>>1|i<<31)^(t>>>8|i<<24)^t>>>7}function v(t,i){return(t>>>1|i<<31)^(t>>>8|i<<24)^(t>>>7|i<<25)}function c(t,i){return(t>>>19|i<<13)^(i>>>29|t<<3)^t>>>6}function a(t,i){return(t>>>19|i<<13)^(i>>>29|t<<3)^(t>>>6|i<<26)}function r(t,i){return t>>>0>>0?1:0}f.prototype._update=function(t){for(var i=this._w,n=this._ah|0,o=this._bh|0,p=this._ch|0,O=this._dh|0,C=this._eh|0,N=this._fh|0,L=this._gh|0,F=this._hh|0,M=this._al|0,D=this._bl|0,R=this._cl|0,P=this._dl|0,E=this._el|0,A=this._fl|0,z=this._gl|0,W=this._hl|0,$=0;$<32;$+=2)i[$]=t.readInt32BE($*4),i[$+1]=t.readInt32BE($*4+4);for(;$<160;$+=2){var U=i[$-30],I=i[$-15*2+1],j=s(U,I),B=v(I,U);U=i[$-2*2],I=i[$-2*2+1];var V=c(U,I),te=a(I,U),ie=i[$-7*2],ce=i[$-7*2+1],be=i[$-16*2],_e=i[$-16*2+1],oe=B+ce|0,J=j+ie+r(oe,B)|0;oe=oe+te|0,J=J+V+r(oe,te)|0,oe=oe+_e|0,J=J+be+r(oe,_e)|0,i[$]=J,i[$+1]=oe}for(var Q=0;Q<160;Q+=2){J=i[Q],oe=i[Q+1];var he=h(n,o,p),ke=h(M,D,R),re=l(n,M),se=l(M,n),Ce=d(C,E),q=d(E,C),G=b[Q],Z=b[Q+1],fe=y(C,N,L),we=y(E,A,z),ge=W+q|0,je=F+Ce+r(ge,W)|0;ge=ge+we|0,je=je+fe+r(ge,we)|0,ge=ge+Z|0,je=je+G+r(ge,Z)|0,ge=ge+oe|0,je=je+J+r(ge,oe)|0;var Ze=se+ke|0,nt=re+he+r(Ze,se)|0;F=L,W=z,L=N,z=A,N=C,A=E,E=P+ge|0,C=O+je+r(E,P)|0,O=p,P=R,p=o,R=D,o=n,D=M,M=ge+Ze|0,n=je+nt+r(M,ge)|0}this._al=this._al+M|0,this._bl=this._bl+D|0,this._cl=this._cl+R|0,this._dl=this._dl+P|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+z|0,this._hl=this._hl+W|0,this._ah=this._ah+n+r(this._al,M)|0,this._bh=this._bh+o+r(this._bl,D)|0,this._ch=this._ch+p+r(this._cl,R)|0,this._dh=this._dh+O+r(this._dl,P)|0,this._eh=this._eh+C+r(this._el,E)|0,this._fh=this._fh+N+r(this._fl,A)|0,this._gh=this._gh+L+r(this._gl,z)|0,this._hh=this._hh+F+r(this._hl,W)|0},f.prototype._hash=function(){var t=g.allocUnsafe(64);function i(n,o,p){t.writeInt32BE(n,p),t.writeInt32BE(o,p+4)}return i(this._ah,this._al,0),i(this._bh,this._bl,8),i(this._ch,this._cl,16),i(this._dh,this._dl,24),i(this._eh,this._el,32),i(this._fh,this._fl,40),i(this._gh,this._gl,48),i(this._hh,this._hl,56),t},S.exports=f},{"./hash":498,inherits:387,"safe-buffer":494}],506:[function(e,S,_){S.exports=g;var u=e("events").EventEmitter,m=e("inherits");m(g,u),g.Readable=e("readable-stream/readable.js"),g.Writable=e("readable-stream/writable.js"),g.Duplex=e("readable-stream/duplex.js"),g.Transform=e("readable-stream/transform.js"),g.PassThrough=e("readable-stream/passthrough.js"),g.Stream=g;function g(){u.call(this)}g.prototype.pipe=function(b,w){var f=this;function y(a){b.writable&&b.write(a)===!1&&f.pause&&f.pause()}f.on("data",y);function h(){f.readable&&f.resume&&f.resume()}b.on("drain",h),!b._isStdio&&(!w||w.end!==!1)&&(f.on("end",d),f.on("close",s));var l=!1;function d(){l||(l=!0,b.end())}function s(){l||(l=!0,typeof b.destroy=="function"&&b.destroy())}function v(a){if(c(),u.listenerCount(this,"error")===0)throw a}f.on("error",v),b.on("error",v);function c(){f.removeListener("data",y),b.removeListener("drain",h),f.removeListener("end",d),f.removeListener("close",s),f.removeListener("error",v),b.removeListener("error",v),f.removeListener("end",c),f.removeListener("close",c),b.removeListener("close",c)}return f.on("end",c),f.on("close",c),b.on("close",c),b.emit("pipe",f),b}},{events:367,inherits:387,"readable-stream/duplex.js":507,"readable-stream/passthrough.js":516,"readable-stream/readable.js":517,"readable-stream/transform.js":518,"readable-stream/writable.js":519}],507:[function(e,S,_){S.exports=e("./lib/_stream_duplex.js")},{"./lib/_stream_duplex.js":508}],508:[function(e,S,_){var u=e("process-nextick-args"),m=Object.keys||function(v){var c=[];for(var a in v)c.push(a);return c};S.exports=l;var g=Object.create(e("core-util-is"));g.inherits=e("inherits");var b=e("./_stream_readable"),w=e("./_stream_writable");g.inherits(l,b);for(var f=m(w.prototype),y=0;y0?(typeof Q!="string"&&!se.objectMode&&Object.getPrototypeOf(Q)!==h.prototype&&(Q=d(Q)),ke?se.endEmitted?J.emit("error",new Error("stream.unshift() after end event")):N(J,se,Q,!0):se.ended?J.emit("error",new Error("stream.push() after EOF")):(se.reading=!1,se.decoder&&!he?(Q=se.decoder.write(Q),se.objectMode||Q.length!==0?N(J,se,Q,!1):z(J,se)):N(J,se,Q,!1))):ke||(se.reading=!1)}return F(se)}function N(J,Q,he,ke){Q.flowing&&Q.length===0&&!Q.sync?(J.emit("data",he),J.read(0)):(Q.length+=Q.objectMode?1:he.length,ke?Q.buffer.unshift(he):Q.buffer.push(he),Q.needReadable&&E(J)),z(J,Q)}function L(J,Q){var he;return!s(Q)&&typeof Q!="string"&&Q!==void 0&&!J.objectMode&&(he=new TypeError("Invalid non-string/buffer chunk")),he}function F(J){return!J.ended&&(J.needReadable||J.length=M?J=M:(J--,J|=J>>>1,J|=J>>>2,J|=J>>>4,J|=J>>>8,J|=J>>>16,J++),J}function R(J,Q){return J<=0||Q.length===0&&Q.ended?0:Q.objectMode?1:J!==J?Q.flowing&&Q.length?Q.buffer.head.data.length:Q.length:(J>Q.highWaterMark&&(Q.highWaterMark=D(J)),J<=Q.length?J:Q.ended?Q.length:(Q.needReadable=!0,0))}O.prototype.read=function(J){a("read",J),J=parseInt(J,10);var Q=this._readableState,he=J;if(J!==0&&(Q.emittedReadable=!1),J===0&&Q.needReadable&&(Q.length>=Q.highWaterMark||Q.ended))return a("read: emitReadable",Q.length,Q.ended),Q.length===0&&Q.ended?be(this):E(this),null;if(J=R(J,Q),J===0&&Q.ended)return Q.length===0&&be(this),null;var ke=Q.needReadable;a("need readable",ke),(Q.length===0||Q.length-J0?re=V(J,Q):re=null,re===null?(Q.needReadable=!0,J=0):Q.length-=J,Q.length===0&&(Q.ended||(Q.needReadable=!0),he!==J&&Q.ended&&be(this)),re!==null&&this.emit("data",re),re};function P(J,Q){if(!Q.ended){if(Q.decoder){var he=Q.decoder.end();he&&he.length&&(Q.buffer.push(he),Q.length+=Q.objectMode?1:he.length)}Q.ended=!0,E(J)}}function E(J){var Q=J._readableState;Q.needReadable=!1,Q.emittedReadable||(a("emitReadable",Q.flowing),Q.emittedReadable=!0,Q.sync?g.nextTick(A,J):A(J))}function A(J){a("emit readable"),J.emit("readable"),B(J)}function z(J,Q){Q.readingMore||(Q.readingMore=!0,g.nextTick(W,J,Q))}function W(J,Q){for(var he=Q.length;!Q.reading&&!Q.flowing&&!Q.ended&&Q.length1&&oe(ke.pipes,J)!==-1)&&!Z&&(a("false write response, pause",he._readableState.awaitDrain),he._readableState.awaitDrain++,we=!0),he.pause())}function je(ot){a("onerror",ot),ut(),J.removeListener("error",je),f(J,"error")===0&&J.emit("error",ot)}o(J,"error",je);function Ze(){J.removeListener("finish",nt),ut()}J.once("close",Ze);function nt(){a("onfinish"),J.removeListener("close",Ze),ut()}J.once("finish",nt);function ut(){a("unpipe"),he.unpipe(J)}return J.emit("pipe",he),ke.flowing||(a("pipe resume"),he.resume()),J};function $(J){return function(){var Q=J._readableState;a("pipeOnDrain",Q.awaitDrain),Q.awaitDrain&&Q.awaitDrain--,Q.awaitDrain===0&&f(J,"data")&&(Q.flowing=!0,B(J))}}O.prototype.unpipe=function(J){var Q=this._readableState,he={hasUnpiped:!1};if(Q.pipesCount===0)return this;if(Q.pipesCount===1)return J&&J!==Q.pipes?this:(J||(J=Q.pipes),Q.pipes=null,Q.pipesCount=0,Q.flowing=!1,J&&J.emit("unpipe",this,he),this);if(!J){var ke=Q.pipes,re=Q.pipesCount;Q.pipes=null,Q.pipesCount=0,Q.flowing=!1;for(var se=0;se=Q.length?(Q.decoder?he=Q.buffer.join(""):Q.buffer.length===1?he=Q.buffer.head.data:he=Q.buffer.concat(Q.length),Q.buffer.clear()):he=te(J,Q.buffer,Q.decoder),he}function te(J,Q,he){var ke;return Jse.length?se.length:J;if(Ce===se.length?re+=se:re+=se.slice(0,J),J-=Ce,J===0){Ce===se.length?(++ke,he.next?Q.head=he.next:Q.head=Q.tail=null):(Q.head=he,he.data=se.slice(Ce));break}++ke}return Q.length-=ke,re}function ce(J,Q){var he=h.allocUnsafe(J),ke=Q.head,re=1;for(ke.data.copy(he),J-=ke.data.length;ke=ke.next;){var se=ke.data,Ce=J>se.length?se.length:J;if(se.copy(he,he.length-J,0,Ce),J-=Ce,J===0){Ce===se.length?(++re,ke.next?Q.head=ke.next:Q.head=Q.tail=null):(Q.head=ke,ke.data=se.slice(Ce));break}++re}return Q.length-=re,he}function be(J){var Q=J._readableState;if(Q.length>0)throw new Error('"endReadable()" called on non-empty stream');Q.endEmitted||(Q.ended=!0,g.nextTick(_e,Q,J))}function _e(J,Q){!J.endEmitted&&J.length===0&&(J.endEmitted=!0,Q.readable=!1,Q.emit("end"))}function oe(J,Q){for(var he=0,ke=J.length;he-1?g:b.nextTick,y;o.WritableState=i;var h=Object.create(e("core-util-is"));h.inherits=e("inherits");var l={deprecate:e("util-deprecate")},d=e("./internal/streams/stream"),s=e("safe-buffer").Buffer,v=m.Uint8Array||function(){};function c(j){return s.from(j)}function a(j){return s.isBuffer(j)||j instanceof v}var r=e("./internal/streams/destroy");h.inherits(o,d);function t(){}function i(j,B){y=y||e("./_stream_duplex"),j=j||{};var V=B instanceof y;this.objectMode=!!j.objectMode,V&&(this.objectMode=this.objectMode||!!j.writableObjectMode);var te=j.highWaterMark,ie=j.writableHighWaterMark,ce=this.objectMode?16:16*1024;te||te===0?this.highWaterMark=te:V&&(ie||ie===0)?this.highWaterMark=ie:this.highWaterMark=ce,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var be=j.decodeStrings===!1;this.decodeStrings=!be,this.defaultEncoding=j.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(_e){D(B,_e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new w(this)}i.prototype.getBuffer=function(){for(var B=this.bufferedRequest,V=[];B;)V.push(B),B=B.next;return V},function(){try{Object.defineProperty(i.prototype,"buffer",{get:l.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var n;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(n=Function.prototype[Symbol.hasInstance],Object.defineProperty(o,Symbol.hasInstance,{value:function(B){return n.call(this,B)?!0:this!==o?!1:B&&B._writableState instanceof i}})):n=function(B){return B instanceof this};function o(j){if(y=y||e("./_stream_duplex"),!n.call(o,this)&&!(this instanceof y))return new o(j);this._writableState=new i(j,this),this.writable=!0,j&&(typeof j.write=="function"&&(this._write=j.write),typeof j.writev=="function"&&(this._writev=j.writev),typeof j.destroy=="function"&&(this._destroy=j.destroy),typeof j.final=="function"&&(this._final=j.final)),d.call(this)}o.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function p(j,B){var V=new Error("write after end");j.emit("error",V),b.nextTick(B,V)}function O(j,B,V,te){var ie=!0,ce=!1;return V===null?ce=new TypeError("May not write null values to stream"):typeof V!="string"&&V!==void 0&&!B.objectMode&&(ce=new TypeError("Invalid non-string/buffer chunk")),ce&&(j.emit("error",ce),b.nextTick(te,ce),ie=!1),ie}o.prototype.write=function(j,B,V){var te=this._writableState,ie=!1,ce=!te.objectMode&&a(j);return ce&&!s.isBuffer(j)&&(j=c(j)),typeof B=="function"&&(V=B,B=null),ce?B="buffer":B||(B=te.defaultEncoding),typeof V!="function"&&(V=t),te.ended?p(this,V):(ce||O(this,te,j,V))&&(te.pendingcb++,ie=N(this,te,ce,j,B,V)),ie},o.prototype.cork=function(){var j=this._writableState;j.corked++},o.prototype.uncork=function(){var j=this._writableState;j.corked&&(j.corked--,!j.writing&&!j.corked&&!j.finished&&!j.bufferProcessing&&j.bufferedRequest&&E(this,j))},o.prototype.setDefaultEncoding=function(B){if(typeof B=="string"&&(B=B.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((B+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+B);return this._writableState.defaultEncoding=B,this};function C(j,B,V){return!j.objectMode&&j.decodeStrings!==!1&&typeof B=="string"&&(B=s.from(B,V)),B}Object.defineProperty(o.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function N(j,B,V,te,ie,ce){if(!V){var be=C(B,te,ie);te!==be&&(V=!0,ie="buffer",te=be)}var _e=B.objectMode?1:te.length;B.length+=_e;var oe=B.length0?this.tail.next=h:this.head=h,this.tail=h,++this.length},w.prototype.unshift=function(y){var h={data:y,next:this.head};this.length===0&&(this.tail=h),this.head=h,++this.length},w.prototype.shift=function(){if(this.length!==0){var y=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,y}},w.prototype.clear=function(){this.head=this.tail=null,this.length=0},w.prototype.join=function(y){if(this.length===0)return"";for(var h=this.head,l=""+h.data;h=h.next;)l+=y+h.data;return l},w.prototype.concat=function(y){if(this.length===0)return m.alloc(0);if(this.length===1)return this.head.data;for(var h=m.allocUnsafe(y>>>0),l=this.head,d=0;l;)b(l.data,h,d),d+=l.data.length,l=l.next;return h},w}(),g&&g.inspect&&g.inspect.custom&&(S.exports.prototype[g.inspect.custom]=function(){var w=g.inspect({length:this.length});return this.constructor.name+" "+w})},{"safe-buffer":494,util:185}],514:[function(e,S,_){var u=e("process-nextick-args");function m(w,f){var y=this,h=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return h||l?(f?f(w):w&&(!this._writableState||!this._writableState.errorEmitted)&&u.nextTick(b,this,w),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(w||null,function(d){!f&&d?(u.nextTick(b,y,d),y._writableState&&(y._writableState.errorEmitted=!0)):f&&f(d)}),this)}function g(){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.finished=!1,this._writableState.errorEmitted=!1)}function b(w,f){w.emit("error",f)}S.exports={destroy:m,undestroy:g}},{"process-nextick-args":466}],515:[function(e,S,_){arguments[4][490][0].apply(_,arguments)},{dup:490,events:367}],516:[function(e,S,_){S.exports=e("./readable").PassThrough},{"./readable":517}],517:[function(e,S,_){_=S.exports=e("./lib/_stream_readable.js"),_.Stream=_,_.Readable=_,_.Writable=e("./lib/_stream_writable.js"),_.Duplex=e("./lib/_stream_duplex.js"),_.Transform=e("./lib/_stream_transform.js"),_.PassThrough=e("./lib/_stream_passthrough.js")},{"./lib/_stream_duplex.js":508,"./lib/_stream_passthrough.js":509,"./lib/_stream_readable.js":510,"./lib/_stream_transform.js":511,"./lib/_stream_writable.js":512}],518:[function(e,S,_){S.exports=e("./readable").Transform},{"./readable":517}],519:[function(e,S,_){S.exports=e("./lib/_stream_writable.js")},{"./lib/_stream_writable.js":512}],520:[function(e,S,_){var u=e("safe-buffer").Buffer,m=u.isEncoding||function(n){switch(n=""+n,n&&n.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function g(n){if(!n)return"utf8";for(var o;;)switch(n){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return n;default:if(o)return;n=(""+n).toLowerCase(),o=!0}}function b(n){var o=g(n);if(typeof o!="string"&&(u.isEncoding===m||!m(n)))throw new Error("Unknown encoding: "+n);return o||n}_.StringDecoder=w;function w(n){this.encoding=b(n);var o;switch(this.encoding){case"utf16le":this.text=v,this.end=c,o=4;break;case"utf8":this.fillLast=l,o=4;break;case"base64":this.text=a,this.end=r,o=3;break;default:this.write=t,this.end=i;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=u.allocUnsafe(o)}w.prototype.write=function(n){if(n.length===0)return"";var o,p;if(this.lastNeed){if(o=this.fillLast(n),o===void 0)return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p>5===6?2:n>>4===14?3:n>>3===30?4:n>>6===2?-1:-2}function y(n,o,p){var O=o.length-1;if(O=0?(C>0&&(n.lastNeed=C-1),C):--O=0?(C>0&&(n.lastNeed=C-2),C):--O=0?(C>0&&(C===2?C=0:n.lastNeed=C-3),C):0))}function h(n,o,p){if((o[0]&192)!==128)return n.lastNeed=0,"�";if(n.lastNeed>1&&o.length>1){if((o[1]&192)!==128)return n.lastNeed=1,"�";if(n.lastNeed>2&&o.length>2&&(o[2]&192)!==128)return n.lastNeed=2,"�"}}function l(n){var o=this.lastTotal-this.lastNeed,p=h(this,n);if(p!==void 0)return p;if(this.lastNeed<=n.length)return n.copy(this.lastChar,o,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);n.copy(this.lastChar,o,0,n.length),this.lastNeed-=n.length}function d(n,o){var p=y(this,n,o);if(!this.lastNeed)return n.toString("utf8",o);this.lastTotal=p;var O=n.length-(p-this.lastNeed);return n.copy(this.lastChar,0,O),n.toString("utf8",o,O)}function s(n){var o=n&&n.length?this.write(n):"";return this.lastNeed?o+"�":o}function v(n,o){if((n.length-o)%2===0){var p=n.toString("utf16le",o);if(p){var O=p.charCodeAt(p.length-1);if(O>=55296&&O<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=n[n.length-2],this.lastChar[1]=n[n.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=n[n.length-1],n.toString("utf16le",o,n.length-1)}function c(n){var o=n&&n.length?this.write(n):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return o+this.lastChar.toString("utf16le",0,p)}return o}function a(n,o){var p=(n.length-o)%3;return p===0?n.toString("base64",o):(this.lastNeed=3-p,this.lastTotal=3,p===1?this.lastChar[0]=n[n.length-1]:(this.lastChar[0]=n[n.length-2],this.lastChar[1]=n[n.length-1]),n.toString("base64",o,n.length-p))}function r(n){var o=n&&n.length?this.write(n):"";return this.lastNeed?o+this.lastChar.toString("base64",0,3-this.lastNeed):o}function t(n){return n.toString(this.encoding)}function i(n){return n&&n.length?this.write(n):""}},{"safe-buffer":494}],521:[function(e,S,_){(function(u,m){var g=e("process/browser.js").nextTick,b=Function.prototype.apply,w=Array.prototype.slice,f={},y=0;_.setTimeout=function(){return new h(b.call(setTimeout,window,arguments),clearTimeout)},_.setInterval=function(){return new h(b.call(setInterval,window,arguments),clearInterval)},_.clearTimeout=_.clearInterval=function(l){l.close()};function h(l,d){this._id=l,this._clearFn=d}h.prototype.unref=h.prototype.ref=function(){},h.prototype.close=function(){this._clearFn.call(window,this._id)},_.enroll=function(l,d){clearTimeout(l._idleTimeoutId),l._idleTimeout=d},_.unenroll=function(l){clearTimeout(l._idleTimeoutId),l._idleTimeout=-1},_._unrefActive=_.active=function(l){clearTimeout(l._idleTimeoutId);var d=l._idleTimeout;d>=0&&(l._idleTimeoutId=setTimeout(function(){l._onTimeout&&l._onTimeout()},d))},_.setImmediate=typeof u=="function"?u:function(l){var d=y++,s=arguments.length<2?!1:w.call(arguments,1);return f[d]=!0,g(function(){f[d]&&(s?l.apply(null,s):l.call(null),_.clearImmediate(d))}),d},_.clearImmediate=typeof m=="function"?m:function(l){delete f[l]}}).call(this,e("timers").setImmediate,e("timers").clearImmediate)},{"process/browser.js":467,timers:521}],522:[function(e,S,_){(function(u){S.exports=m;function m(b,w){if(g("noDeprecation"))return b;var f=!1;function y(){if(!f){if(g("throwDeprecation"))throw new Error(w);g("traceDeprecation")?console.trace(w):console.warn(w),f=!0}return b.apply(this,arguments)}return y}function g(b){try{if(!u.localStorage)return!1}catch{return!1}var w=u.localStorage[b];return w==null?!1:String(w).toLowerCase()==="true"}}).call(this,typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],523:[function(e,S,_){typeof Object.create=="function"?S.exports=function(m,g){m.super_=g,m.prototype=Object.create(g.prototype,{constructor:{value:m,enumerable:!1,writable:!0,configurable:!0}})}:S.exports=function(m,g){m.super_=g;var b=function(){};b.prototype=g.prototype,m.prototype=new b,m.prototype.constructor=m}},{}],524:[function(e,S,_){function u(m){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?u=function(b){return typeof b}:u=function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},u(m)}S.exports=function(g){return g&&u(g)==="object"&&typeof g.copy=="function"&&typeof g.fill=="function"&&typeof g.readUInt8=="function"}},{}],525:[function(e,S,_){(function(u,m){function g(I){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?g=function(B){return typeof B}:g=function(B){return B&&typeof Symbol=="function"&&B.constructor===Symbol&&B!==Symbol.prototype?"symbol":typeof B},g(I)}var b=/%[sdj%]/g;_.format=function(I){if(!C(I)){for(var j=[],B=0;B=te)return be;switch(be){case"%s":return String(V[B++]);case"%d":return Number(V[B++]);case"%j":try{return JSON.stringify(V[B++])}catch{return"[Circular]"}default:return be}}),ce=V[B];B=3&&(B.depth=arguments[2]),arguments.length>=4&&(B.colors=arguments[3]),n(j)?B.showHidden=j:j&&_._extend(B,j),L(B.showHidden)&&(B.showHidden=!1),L(B.depth)&&(B.depth=2),L(B.colors)&&(B.colors=!1),L(B.customInspect)&&(B.customInspect=!0),B.colors&&(B.stylize=h),s(B,I,B.depth)}_.inspect=y,y.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]},y.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function h(I,j){var B=y.styles[j];return B?"\x1B["+y.colors[B][0]+"m"+I+"\x1B["+y.colors[B][1]+"m":I}function l(I,j){return I}function d(I){var j={};return I.forEach(function(B,V){j[B]=!0}),j}function s(I,j,B){if(I.customInspect&&j&&P(j.inspect)&&j.inspect!==_.inspect&&!(j.constructor&&j.constructor.prototype===j)){var V=j.inspect(B,I);return C(V)||(V=s(I,V,B)),V}var te=v(I,j);if(te)return te;var ie=Object.keys(j),ce=d(ie);if(I.showHidden&&(ie=Object.getOwnPropertyNames(j)),R(j)&&(ie.indexOf("message")>=0||ie.indexOf("description")>=0))return c(j);if(ie.length===0){if(P(j)){var be=j.name?": "+j.name:"";return I.stylize("[Function"+be+"]","special")}if(F(j))return I.stylize(RegExp.prototype.toString.call(j),"regexp");if(D(j))return I.stylize(Date.prototype.toString.call(j),"date");if(R(j))return c(j)}var _e="",oe=!1,J=["{","}"];if(i(j)&&(oe=!0,J=["[","]"]),P(j)){var Q=j.name?": "+j.name:"";_e=" [Function"+Q+"]"}if(F(j)&&(_e=" "+RegExp.prototype.toString.call(j)),D(j)&&(_e=" "+Date.prototype.toUTCString.call(j)),R(j)&&(_e=" "+c(j)),ie.length===0&&(!oe||j.length==0))return J[0]+_e+J[1];if(B<0)return F(j)?I.stylize(RegExp.prototype.toString.call(j),"regexp"):I.stylize("[Object]","special");I.seen.push(j);var he;return oe?he=a(I,j,B,ce,ie):he=ie.map(function(ke){return r(I,j,B,ce,ke,oe)}),I.seen.pop(),t(he,_e,J)}function v(I,j){if(L(j))return I.stylize("undefined","undefined");if(C(j)){var B="'"+JSON.stringify(j).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return I.stylize(B,"string")}if(O(j))return I.stylize(""+j,"number");if(n(j))return I.stylize(""+j,"boolean");if(o(j))return I.stylize("null","null")}function c(I){return"["+Error.prototype.toString.call(I)+"]"}function a(I,j,B,V,te){for(var ie=[],ce=0,be=j.length;ce-1&&(ie?be=be.split(` +`).map(function(oe){return" "+oe}).join(` +`).substr(2):be=` +`+be.split(` +`).map(function(oe){return" "+oe}).join(` +`))):be=I.stylize("[Circular]","special")),L(ce)){if(ie&&te.match(/^\d+$/))return be;ce=JSON.stringify(""+te),ce.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(ce=ce.substr(1,ce.length-2),ce=I.stylize(ce,"name")):(ce=ce.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),ce=I.stylize(ce,"string"))}return ce+": "+be}function t(I,j,B){var V=I.reduce(function(te,ie){return ie.indexOf(` +`)>=0,te+ie.replace(/\u001b\[\d\d?m/g,"").length+1},0);return V>60?B[0]+(j===""?"":j+` + `)+" "+I.join(`, + `)+" "+B[1]:B[0]+j+" "+I.join(", ")+" "+B[1]}function i(I){return Array.isArray(I)}_.isArray=i;function n(I){return typeof I=="boolean"}_.isBoolean=n;function o(I){return I===null}_.isNull=o;function p(I){return I==null}_.isNullOrUndefined=p;function O(I){return typeof I=="number"}_.isNumber=O;function C(I){return typeof I=="string"}_.isString=C;function N(I){return g(I)==="symbol"}_.isSymbol=N;function L(I){return I===void 0}_.isUndefined=L;function F(I){return M(I)&&A(I)==="[object RegExp]"}_.isRegExp=F;function M(I){return g(I)==="object"&&I!==null}_.isObject=M;function D(I){return M(I)&&A(I)==="[object Date]"}_.isDate=D;function R(I){return M(I)&&(A(I)==="[object Error]"||I instanceof Error)}_.isError=R;function P(I){return typeof I=="function"}_.isFunction=P;function E(I){return I===null||typeof I=="boolean"||typeof I=="number"||typeof I=="string"||g(I)==="symbol"||typeof I>"u"}_.isPrimitive=E,_.isBuffer=e("./support/isBuffer");function A(I){return Object.prototype.toString.call(I)}function z(I){return I<10?"0"+I.toString(10):I.toString(10)}var W=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function $(){var I=new Date,j=[z(I.getHours()),z(I.getMinutes()),z(I.getSeconds())].join(":");return[I.getDate(),W[I.getMonth()],j].join(" ")}_.log=function(){console.log("%s - %s",$(),_.format.apply(_,arguments))},_.inherits=e("inherits"),_._extend=function(I,j){if(!j||!M(j))return I;for(var B=Object.keys(j),V=B.length;V--;)I[B[V]]=j[B[V]];return I};function U(I,j){return Object.prototype.hasOwnProperty.call(I,j)}}).call(this,e("_process"),typeof Vt<"u"?Vt:typeof self<"u"?self:typeof window<"u"?window:{})},{"./support/isBuffer":524,_process:467,inherits:523}],526:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),Object.defineProperty(_,"v1",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(_,"v3",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(_,"v4",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(_,"v5",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(_,"NIL",{enumerable:!0,get:function(){return w.default}}),Object.defineProperty(_,"version",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(_,"validate",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(_,"stringify",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(_,"parse",{enumerable:!0,get:function(){return l.default}});var u=d(e("./v1.js")),m=d(e("./v3.js")),g=d(e("./v4.js")),b=d(e("./v5.js")),w=d(e("./nil.js")),f=d(e("./version.js")),y=d(e("./validate.js")),h=d(e("./stringify.js")),l=d(e("./parse.js"));function d(s){return s&&s.__esModule?s:{default:s}}},{"./nil.js":528,"./parse.js":529,"./stringify.js":533,"./v1.js":534,"./v3.js":535,"./v4.js":537,"./v5.js":538,"./validate.js":539,"./version.js":540}],527:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;function u(a){if(typeof a=="string"){var r=unescape(encodeURIComponent(a));a=new Uint8Array(r.length);for(var t=0;t>5]>>>n%32&255,p=parseInt(i.charAt(o>>>4&15)+i.charAt(o&15),16);r.push(p)}return r}function g(a){return(a+64>>>9<<4)+14+1}function b(a,r){a[r>>5]|=128<>5]|=(a[i/8]&255)<>16)+(r>>16)+(t>>16);return i<<16|t&65535}function y(a,r){return a<>>32-r}function h(a,r,t,i,n,o){return f(y(f(f(r,a),f(i,o)),n),t)}function l(a,r,t,i,n,o,p){return h(r&t|~r&i,a,r,n,o,p)}function d(a,r,t,i,n,o,p){return h(r&i|t&~i,a,r,n,o,p)}function s(a,r,t,i,n,o,p){return h(r^t^i,a,r,n,o,p)}function v(a,r,t,i,n,o,p){return h(t^(r|~i),a,r,n,o,p)}var c=u;_.default=c},{}],528:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u="00000000-0000-0000-0000-000000000000";_.default=u},{}],529:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=m(e("./validate.js"));function m(w){return w&&w.__esModule?w:{default:w}}function g(w){if(!(0,u.default)(w))throw TypeError("Invalid UUID");var f,y=new Uint8Array(16);return y[0]=(f=parseInt(w.slice(0,8),16))>>>24,y[1]=f>>>16&255,y[2]=f>>>8&255,y[3]=f&255,y[4]=(f=parseInt(w.slice(9,13),16))>>>8,y[5]=f&255,y[6]=(f=parseInt(w.slice(14,18),16))>>>8,y[7]=f&255,y[8]=(f=parseInt(w.slice(19,23),16))>>>8,y[9]=f&255,y[10]=(f=parseInt(w.slice(24,36),16))/1099511627776&255,y[11]=f/4294967296&255,y[12]=f>>>24&255,y[13]=f>>>16&255,y[14]=f>>>8&255,y[15]=f&255,y}var b=g;_.default=b},{"./validate.js":539}],530:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;_.default=u},{}],531:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=g;var u=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),m=new Uint8Array(16);function g(){if(!u)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return u(m)}},{}],532:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;function u(w,f,y,h){switch(w){case 0:return f&y^~f&h;case 1:return f^y^h;case 2:return f&y^f&h^y&h;case 3:return f^y^h}}function m(w,f){return w<>>32-f}function g(w){var f=[1518500249,1859775393,2400959708,3395469782],y=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof w=="string"){var h=unescape(encodeURIComponent(w));w=[];for(var l=0;l>>0;L=N,N=C,C=m(O,30)>>>0,O=p,p=D}y[0]=y[0]+p>>>0,y[1]=y[1]+O>>>0,y[2]=y[2]+C>>>0,y[3]=y[3]+N>>>0,y[4]=y[4]+L>>>0}return[y[0]>>24&255,y[0]>>16&255,y[0]>>8&255,y[0]&255,y[1]>>24&255,y[1]>>16&255,y[1]>>8&255,y[1]&255,y[2]>>24&255,y[2]>>16&255,y[2]>>8&255,y[2]&255,y[3]>>24&255,y[3]>>16&255,y[3]>>8&255,y[3]&255,y[4]>>24&255,y[4]>>16&255,y[4]>>8&255,y[4]&255]}var b=g;_.default=b},{}],533:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=m(e("./validate.js"));function m(y){return y&&y.__esModule?y:{default:y}}for(var g=[],b=0;b<256;++b)g.push((b+256).toString(16).substr(1));function w(y){var h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,l=(g[y[h+0]]+g[y[h+1]]+g[y[h+2]]+g[y[h+3]]+"-"+g[y[h+4]]+g[y[h+5]]+"-"+g[y[h+6]]+g[y[h+7]]+"-"+g[y[h+8]]+g[y[h+9]]+"-"+g[y[h+10]]+g[y[h+11]]+g[y[h+12]]+g[y[h+13]]+g[y[h+14]]+g[y[h+15]]).toLowerCase();if(!(0,u.default)(l))throw TypeError("Stringified UUID is invalid");return l}var f=w;_.default=f},{"./validate.js":539}],534:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=g(e("./rng.js")),m=g(e("./stringify.js"));function g(d){return d&&d.__esModule?d:{default:d}}var b,w,f=0,y=0;function h(d,s,v){var c=s&&v||0,a=s||new Array(16);d=d||{};var r=d.node||b,t=d.clockseq!==void 0?d.clockseq:w;if(r==null||t==null){var i=d.random||(d.rng||u.default)();r==null&&(r=b=[i[0]|1,i[1],i[2],i[3],i[4],i[5]]),t==null&&(t=w=(i[6]<<8|i[7])&16383)}var n=d.msecs!==void 0?d.msecs:Date.now(),o=d.nsecs!==void 0?d.nsecs:y+1,p=n-f+(o-y)/1e4;if(p<0&&d.clockseq===void 0&&(t=t+1&16383),(p<0||n>f)&&d.nsecs===void 0&&(o=0),o>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");f=n,y=o,w=t,n+=122192928e5;var O=((n&268435455)*1e4+o)%4294967296;a[c++]=O>>>24&255,a[c++]=O>>>16&255,a[c++]=O>>>8&255,a[c++]=O&255;var C=n/4294967296*1e4&268435455;a[c++]=C>>>8&255,a[c++]=C&255,a[c++]=C>>>24&15|16,a[c++]=C>>>16&255,a[c++]=t>>>8|128,a[c++]=t&255;for(var N=0;N<6;++N)a[c+N]=r[N];return s||(0,m.default)(a)}var l=h;_.default=l},{"./rng.js":531,"./stringify.js":533}],535:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=void 0;var u=g(e("./v35.js")),m=g(e("./md5.js"));function g(f){return f&&f.__esModule?f:{default:f}}var b=(0,u.default)("v3",48,m.default),w=b;_.default=w},{"./md5.js":527,"./v35.js":536}],536:[function(e,S,_){Object.defineProperty(_,"__esModule",{value:!0}),_.default=y,_.URL=_.DNS=void 0;var u=g(e("./stringify.js")),m=g(e("./parse.js"));function g(h){return h&&h.__esModule?h:{default:h}}function b(h){h=unescape(encodeURIComponent(h));for(var l=[],d=0;d=b&&l<=55295||l===m||l===g||l===u||l>=57344&&l<=65533||l>=65536&&l<=1114111}_.isChar=w;function f(l){return l===b||l===m||l===g||l===u}_.isS=f;function y(l){return l>=65&&l<=90||l>=97&&l<=122||l===58||l===95||l===8204||l===8205||l>=192&&l<=214||l>=216&&l<=246||l>=248&&l<=767||l>=880&&l<=893||l>=895&&l<=8191||l>=8304&&l<=8591||l>=11264&&l<=12271||l>=12289&&l<=55295||l>=63744&&l<=64975||l>=65008&&l<=65533||l>=65536&&l<=983039}_.isNameStartChar=y;function h(l){return y(l)||l>=48&&l<=57||l===45||l===46||l===183||l>=768&&l<=879||l>=8255&&l<=8256}_.isNameChar=h},{}],542:[function(e,S,_){/** + * Character classes and associated utilities for the 2nd edition of XML 1.1. + * + * @author Louis-Dominique Dubeau + * @license MIT + * @copyright Louis-Dominique Dubeau + */Object.defineProperty(_,"__esModule",{value:!0}),_.CHAR="-퟿-�𐀀-􏿿",_.RESTRICTED_CHAR="-\b\v\f--„†-Ÿ",_.S=` \r +`,_.NAME_START_CHAR=":A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NAME_CHAR="-"+_.NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.CHAR_RE=new RegExp("^["+_.CHAR+"]$","u"),_.RESTRICTED_CHAR_RE=new RegExp("^["+_.RESTRICTED_CHAR+"]$","u"),_.S_RE=new RegExp("^["+_.S+"]+$","u"),_.NAME_START_CHAR_RE=new RegExp("^["+_.NAME_START_CHAR+"]$","u"),_.NAME_CHAR_RE=new RegExp("^["+_.NAME_CHAR+"]$","u"),_.NAME_RE=new RegExp("^["+_.NAME_START_CHAR+"]["+_.NAME_CHAR+"]*$","u"),_.NMTOKEN_RE=new RegExp("^["+_.NAME_CHAR+"]+$","u");var u=9,m=10,g=13,b=32;_.S_LIST=[b,m,g,u];function w(s){return s>=1&&s<=55295||s>=57344&&s<=65533||s>=65536&&s<=1114111}_.isChar=w;function f(s){return s>=1&&s<=8||s===11||s===12||s>=14&&s<=31||s>=127&&s<=132||s>=134&&s<=159}_.isRestrictedChar=f;function y(s){return s===9||s===10||s===13||s>31&&s<127||s===133||s>159&&s<=55295||s>=57344&&s<=65533||s>=65536&&s<=1114111}_.isCharAndNotRestricted=y;function h(s){return s===b||s===m||s===g||s===u}_.isS=h;function l(s){return s>=65&&s<=90||s>=97&&s<=122||s===58||s===95||s===8204||s===8205||s>=192&&s<=214||s>=216&&s<=246||s>=248&&s<=767||s>=880&&s<=893||s>=895&&s<=8191||s>=8304&&s<=8591||s>=11264&&s<=12271||s>=12289&&s<=55295||s>=63744&&s<=64975||s>=65008&&s<=65533||s>=65536&&s<=983039}_.isNameStartChar=l;function d(s){return l(s)||s>=48&&s<=57||s===45||s===46||s===183||s>=768&&s<=879||s>=8255&&s<=8256}_.isNameChar=d},{}],543:[function(e,S,_){/** + * Character class utilities for XML NS 1.0 edition 3. + * + * @author Louis-Dominique Dubeau + * @license MIT + * @copyright Louis-Dominique Dubeau + */Object.defineProperty(_,"__esModule",{value:!0}),_.NC_NAME_START_CHAR="A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�𐀀-󯿿",_.NC_NAME_CHAR="-"+_.NC_NAME_START_CHAR+".0-9·̀-ͯ‿-⁀",_.NC_NAME_START_CHAR_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]$","u"),_.NC_NAME_CHAR_RE=new RegExp("^["+_.NC_NAME_CHAR+"]$","u"),_.NC_NAME_RE=new RegExp("^["+_.NC_NAME_START_CHAR+"]["+_.NC_NAME_CHAR+"]*$","u");function u(g){return g>=65&&g<=90||g===95||g>=97&&g<=122||g>=192&&g<=214||g>=216&&g<=246||g>=248&&g<=767||g>=880&&g<=893||g>=895&&g<=8191||g>=8204&&g<=8205||g>=8304&&g<=8591||g>=11264&&g<=12271||g>=12289&&g<=55295||g>=63744&&g<=64975||g>=65008&&g<=65533||g>=65536&&g<=983039}_.isNCNameStartChar=u;function m(g){return u(g)||g===45||g===46||g>=48&&g<=57||g===183||g>=768&&g<=879||g>=8255&&g<=8256}_.isNCNameChar=m},{}]},{},[15])(15)})})(kg);function Qo(X){return Qo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(k){return typeof k}:function(k){return k&&typeof Symbol=="function"&&k.constructor===Symbol&&k!==Symbol.prototype?"symbol":typeof k},Qo(X)}var Og=/^\s+/,Eg=/\s+$/;function Rt(X,k){if(X=X||"",k=k||{},X instanceof Rt)return X;if(!(this instanceof Rt))return new Rt(X,k);var e=Tg(X);this._originalInput=X,this._r=e.r,this._g=e.g,this._b=e.b,this._a=e.a,this._roundA=Math.round(100*this._a)/100,this._format=k.format||e.format,this._gradientType=k.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=e.ok}Rt.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var k=this.toRgb();return(k.r*299+k.g*587+k.b*114)/1e3},getLuminance:function(){var k=this.toRgb(),e,S,_,u,m,g;return e=k.r/255,S=k.g/255,_=k.b/255,e<=.03928?u=e/12.92:u=Math.pow((e+.055)/1.055,2.4),S<=.03928?m=S/12.92:m=Math.pow((S+.055)/1.055,2.4),_<=.03928?g=_/12.92:g=Math.pow((_+.055)/1.055,2.4),.2126*u+.7152*m+.0722*g},setAlpha:function(k){return this._a=xc(k),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var k=Jl(this._r,this._g,this._b);return{h:k.h*360,s:k.s,v:k.v,a:this._a}},toHsvString:function(){var k=Jl(this._r,this._g,this._b),e=Math.round(k.h*360),S=Math.round(k.s*100),_=Math.round(k.v*100);return this._a==1?"hsv("+e+", "+S+"%, "+_+"%)":"hsva("+e+", "+S+"%, "+_+"%, "+this._roundA+")"},toHsl:function(){var k=Yl(this._r,this._g,this._b);return{h:k.h*360,s:k.s,l:k.l,a:this._a}},toHslString:function(){var k=Yl(this._r,this._g,this._b),e=Math.round(k.h*360),S=Math.round(k.s*100),_=Math.round(k.l*100);return this._a==1?"hsl("+e+", "+S+"%, "+_+"%)":"hsla("+e+", "+S+"%, "+_+"%, "+this._roundA+")"},toHex:function(k){return Ql(this._r,this._g,this._b,k)},toHexString:function(k){return"#"+this.toHex(k)},toHex8:function(k){return Ag(this._r,this._g,this._b,this._a,k)},toHex8String:function(k){return"#"+this.toHex8(k)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(yr(this._r,255)*100)+"%",g:Math.round(yr(this._g,255)*100)+"%",b:Math.round(yr(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(yr(this._r,255)*100)+"%, "+Math.round(yr(this._g,255)*100)+"%, "+Math.round(yr(this._b,255)*100)+"%)":"rgba("+Math.round(yr(this._r,255)*100)+"%, "+Math.round(yr(this._g,255)*100)+"%, "+Math.round(yr(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:Ug[Ql(this._r,this._g,this._b,!0)]||!1},toFilter:function(k){var e="#"+ql(this._r,this._g,this._b,this._a),S=e,_=this._gradientType?"GradientType = 1, ":"";if(k){var u=Rt(k);S="#"+ql(u._r,u._g,u._b,u._a)}return"progid:DXImageTransform.Microsoft.gradient("+_+"startColorstr="+e+",endColorstr="+S+")"},toString:function(k){var e=!!k;k=k||this._format;var S=!1,_=this._a<1&&this._a>=0,u=!e&&_&&(k==="hex"||k==="hex6"||k==="hex3"||k==="hex4"||k==="hex8"||k==="name");return u?k==="name"&&this._a===0?this.toName():this.toRgbString():(k==="rgb"&&(S=this.toRgbString()),k==="prgb"&&(S=this.toPercentageRgbString()),(k==="hex"||k==="hex6")&&(S=this.toHexString()),k==="hex3"&&(S=this.toHexString(!0)),k==="hex4"&&(S=this.toHex8String(!0)),k==="hex8"&&(S=this.toHex8String()),k==="name"&&(S=this.toName()),k==="hsl"&&(S=this.toHslString()),k==="hsv"&&(S=this.toHsvString()),S||this.toHexString())},clone:function(){return Rt(this.toString())},_applyModification:function(k,e){var S=k.apply(null,[this].concat([].slice.call(e)));return this._r=S._r,this._g=S._g,this._b=S._b,this.setAlpha(S._a),this},lighten:function(){return this._applyModification(Ng,arguments)},brighten:function(){return this._applyModification(Fg,arguments)},darken:function(){return this._applyModification(Bg,arguments)},desaturate:function(){return this._applyModification(Mg,arguments)},saturate:function(){return this._applyModification(Ig,arguments)},greyscale:function(){return this._applyModification(Dg,arguments)},spin:function(){return this._applyModification(jg,arguments)},_applyCombination:function(k,e){return k.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(Xg,arguments)},complement:function(){return this._applyCombination(Lg,arguments)},monochromatic:function(){return this._applyCombination(Hg,arguments)},splitcomplement:function(){return this._applyCombination(zg,arguments)},triad:function(){return this._applyCombination(ec,[3])},tetrad:function(){return this._applyCombination(ec,[4])}};Rt.fromRatio=function(X,k){if(Qo(X)=="object"){var e={};for(var S in X)X.hasOwnProperty(S)&&(S==="a"?e[S]=X[S]:e[S]=$a(X[S]));X=e}return Rt(X,k)};function Tg(X){var k={r:0,g:0,b:0},e=1,S=null,_=null,u=null,m=!1,g=!1;return typeof X=="string"&&(X=Kg(X)),Qo(X)=="object"&&(ci(X.r)&&ci(X.g)&&ci(X.b)?(k=Rg(X.r,X.g,X.b),m=!0,g=String(X.r).substr(-1)==="%"?"prgb":"rgb"):ci(X.h)&&ci(X.s)&&ci(X.v)?(S=$a(X.s),_=$a(X.v),k=Pg(X.h,S,_),m=!0,g="hsv"):ci(X.h)&&ci(X.s)&&ci(X.l)&&(S=$a(X.s),u=$a(X.l),k=Cg(X.h,S,u),m=!0,g="hsl"),X.hasOwnProperty("a")&&(e=X.a)),e=xc(e),{ok:m,format:X.format||g,r:Math.min(255,Math.max(k.r,0)),g:Math.min(255,Math.max(k.g,0)),b:Math.min(255,Math.max(k.b,0)),a:e}}function Rg(X,k,e){return{r:yr(X,255)*255,g:yr(k,255)*255,b:yr(e,255)*255}}function Yl(X,k,e){X=yr(X,255),k=yr(k,255),e=yr(e,255);var S=Math.max(X,k,e),_=Math.min(X,k,e),u,m,g=(S+_)/2;if(S==_)u=m=0;else{var b=S-_;switch(m=g>.5?b/(2-S-_):b/(S+_),S){case X:u=(k-e)/b+(k1&&(y-=1),y<1/6?w+(f-w)*6*y:y<1/2?f:y<2/3?w+(f-w)*(2/3-y)*6:w}if(k===0)S=_=u=e;else{var g=e<.5?e*(1+k):e+k-e*k,b=2*e-g;S=m(b,g,X+1/3),_=m(b,g,X),u=m(b,g,X-1/3)}return{r:S*255,g:_*255,b:u*255}}function Jl(X,k,e){X=yr(X,255),k=yr(k,255),e=yr(e,255);var S=Math.max(X,k,e),_=Math.min(X,k,e),u,m,g=S,b=S-_;if(m=S===0?0:b/S,S==_)u=0;else{switch(S){case X:u=(k-e)/b+(k>1)+720)%360;--k;)S.h=(S.h+_)%360,u.push(Rt(S));return u}function Hg(X,k){k=k||6;for(var e=Rt(X).toHsv(),S=e.h,_=e.s,u=e.v,m=[],g=1/k;k--;)m.push(Rt({h:S,s:_,v:u})),u=(u+g)%1;return m}Rt.mix=function(X,k,e){e=e===0?0:e||50;var S=Rt(X).toRgb(),_=Rt(k).toRgb(),u=e/100,m={r:(_.r-S.r)*u+S.r,g:(_.g-S.g)*u+S.g,b:(_.b-S.b)*u+S.b,a:(_.a-S.a)*u+S.a};return Rt(m)};Rt.readability=function(X,k){var e=Rt(X),S=Rt(k);return(Math.max(e.getLuminance(),S.getLuminance())+.05)/(Math.min(e.getLuminance(),S.getLuminance())+.05)};Rt.isReadable=function(X,k,e){var S=Rt.readability(X,k),_,u;switch(u=!1,_=Gg(e),_.level+_.size){case"AAsmall":case"AAAlarge":u=S>=4.5;break;case"AAlarge":u=S>=3;break;case"AAAsmall":u=S>=7;break}return u};Rt.mostReadable=function(X,k,e){var S=null,_=0,u,m,g,b;e=e||{},m=e.includeFallbackColors,g=e.level,b=e.size;for(var w=0;w_&&(_=u,S=Rt(k[w]));return Rt.isReadable(X,S,{level:g,size:b})||!m?S:(e.includeFallbackColors=!1,Rt.mostReadable(X,["#fff","#000"],e))};var bf=Rt.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},Ug=Rt.hexNames=Wg(bf);function Wg(X){var k={};for(var e in X)X.hasOwnProperty(e)&&(k[X[e]]=e);return k}function xc(X){return X=parseFloat(X),(isNaN(X)||X<0||X>1)&&(X=1),X}function yr(X,k){$g(X)&&(X="100%");var e=Vg(X);return X=Math.min(k,Math.max(0,parseFloat(X))),e&&(X=parseInt(X*k,10)/100),Math.abs(X-k)<1e-6?1:X%k/parseFloat(k)}function es(X){return Math.min(1,Math.max(0,X))}function wn(X){return parseInt(X,16)}function $g(X){return typeof X=="string"&&X.indexOf(".")!=-1&&parseFloat(X)===1}function Vg(X){return typeof X=="string"&&X.indexOf("%")!=-1}function $n(X){return X.length==1?"0"+X:""+X}function $a(X){return X<=1&&(X=X*100+"%"),X}function Sc(X){return Math.round(parseFloat(X)*255).toString(16)}function tc(X){return wn(X)/255}var Wn=function(){var X="[-\\+]?\\d+%?",k="[-\\+]?\\d*\\.\\d+%?",e="(?:"+k+")|(?:"+X+")",S="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?",_="[\\s|\\(]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")[,|\\s]+("+e+")\\s*\\)?";return{CSS_UNIT:new RegExp(e),rgb:new RegExp("rgb"+S),rgba:new RegExp("rgba"+_),hsl:new RegExp("hsl"+S),hsla:new RegExp("hsla"+_),hsv:new RegExp("hsv"+S),hsva:new RegExp("hsva"+_),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function ci(X){return!!Wn.CSS_UNIT.exec(X)}function Kg(X){X=X.replace(Og,"").replace(Eg,"").toLowerCase();var k=!1;if(bf[X])X=bf[X],k=!0;else if(X=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var e;return(e=Wn.rgb.exec(X))?{r:e[1],g:e[2],b:e[3]}:(e=Wn.rgba.exec(X))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=Wn.hsl.exec(X))?{h:e[1],s:e[2],l:e[3]}:(e=Wn.hsla.exec(X))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=Wn.hsv.exec(X))?{h:e[1],s:e[2],v:e[3]}:(e=Wn.hsva.exec(X))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=Wn.hex8.exec(X))?{r:wn(e[1]),g:wn(e[2]),b:wn(e[3]),a:tc(e[4]),format:k?"name":"hex8"}:(e=Wn.hex6.exec(X))?{r:wn(e[1]),g:wn(e[2]),b:wn(e[3]),format:k?"name":"hex"}:(e=Wn.hex4.exec(X))?{r:wn(e[1]+""+e[1]),g:wn(e[2]+""+e[2]),b:wn(e[3]+""+e[3]),a:tc(e[4]+""+e[4]),format:k?"name":"hex8"}:(e=Wn.hex3.exec(X))?{r:wn(e[1]+""+e[1]),g:wn(e[2]+""+e[2]),b:wn(e[3]+""+e[3]),format:k?"name":"hex"}:!1}function Gg(X){var k,e;return X=X||{level:"AA",size:"small"},k=(X.level||"AA").toUpperCase(),e=(X.size||"small").toLowerCase(),k!=="AA"&&k!=="AAA"&&(k="AA"),e!=="small"&&e!=="large"&&(e="small"),{level:k,size:e}}var ga={},Zg={get exports(){return ga},set exports(X){ga=X}};/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(X,k){(function(){var e,S="4.17.21",_=200,u="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",m="Expected a function",g="Invalid `variable` option passed into `_.template`",b="__lodash_hash_undefined__",w=500,f="__lodash_placeholder__",y=1,h=2,l=4,d=1,s=2,v=1,c=2,a=4,r=8,t=16,i=32,n=64,o=128,p=256,O=512,C=30,N="...",L=800,F=16,M=1,D=2,R=3,P=1/0,E=9007199254740991,A=17976931348623157e292,z=0/0,W=4294967295,$=W-1,U=W>>>1,I=[["ary",o],["bind",v],["bindKey",c],["curry",r],["curryRight",t],["flip",O],["partial",i],["partialRight",n],["rearg",p]],j="[object Arguments]",B="[object Array]",V="[object AsyncFunction]",te="[object Boolean]",ie="[object Date]",ce="[object DOMException]",be="[object Error]",_e="[object Function]",oe="[object GeneratorFunction]",J="[object Map]",Q="[object Number]",he="[object Null]",ke="[object Object]",re="[object Promise]",se="[object Proxy]",Ce="[object RegExp]",q="[object Set]",G="[object String]",Z="[object Symbol]",fe="[object Undefined]",we="[object WeakMap]",ge="[object WeakSet]",je="[object ArrayBuffer]",Ze="[object DataView]",nt="[object Float32Array]",ut="[object Float64Array]",ot="[object Int8Array]",Ue="[object Int16Array]",Ve="[object Int32Array]",Qe="[object Uint8Array]",tt="[object Uint8ClampedArray]",ae="[object Uint16Array]",Re="[object Uint32Array]",me=/\b__p \+= '';/g,Ee=/\b(__p \+=) '' \+/g,pe=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Pe=/&(?:amp|lt|gt|quot|#39);/g,ee=/[&<>"']/g,Xe=RegExp(Pe.source),it=RegExp(ee.source),K=/<%-([\s\S]+?)%>/g,Me=/<%([\s\S]+?)%>/g,Le=/<%=([\s\S]+?)%>/g,ue=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Se=/^\w*$/,Ie=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,st=/[\\^$.*+?()[\]{}|]/g,Ge=RegExp(st.source),rt=/^\s+/,_t=/\s/,wt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ot=/\{\n\/\* \[wrapped with (.+)\] \*/,pt=/,? & /,ct=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,At=/[()=,{}\[\]\/\s]/,Pt=/\\(\\)?/g,bt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Kt=/\w*$/,Ct=/^[-+]0x[0-9a-f]+$/i,xt=/^0b[01]+$/i,Ft=/^\[object .+?Constructor\]$/,Lt=/^0o[0-7]+$/i,Et=/^(?:0|[1-9]\d*)$/,Dr=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Or=/($^)/,Gr=/['\n\r\u2028\u2029\\]/g,Nr="\\ud800-\\udfff",Zr="\\u0300-\\u036f",Qt="\\ufe20-\\ufe2f",Hr="\\u20d0-\\u20ff",Fr=Zr+Qt+Hr,Lr="\\u2700-\\u27bf",Ur="a-z\\xdf-\\xf6\\xf8-\\xff",vt="\\xac\\xb1\\xd7\\xf7",Ke="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",ve="\\u2000-\\u206f",Fe=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Be="A-Z\\xc0-\\xd6\\xd8-\\xde",dt="\\ufe0e\\ufe0f",St=vt+Ke+ve+Fe,Xt="['’]",lr="["+Nr+"]",gr="["+St+"]",rn="["+Fr+"]",zr="\\d+",pi="["+Lr+"]",Wr="["+Ur+"]",Dn="[^"+Nr+St+zr+Lr+Ur+Be+"]",cn="\\ud83c[\\udffb-\\udfff]",yi="(?:"+rn+"|"+cn+")",hn="[^"+Nr+"]",dn="(?:\\ud83c[\\udde6-\\uddff]){2}",Nn="[\\ud800-\\udbff][\\udc00-\\udfff]",Fn="["+Be+"]",Hi="\\u200d",Ui="(?:"+Wr+"|"+Dn+")",Wi="(?:"+Fn+"|"+Dn+")",ei="(?:"+Xt+"(?:d|ll|m|re|s|t|ve))?",Bn="(?:"+Xt+"(?:D|LL|M|RE|S|T|VE))?",$i=yi+"?",Vi="["+dt+"]?",xn="(?:"+Hi+"(?:"+[hn,dn,Nn].join("|")+")"+Vi+$i+")*",wa="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ki="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Gi=Vi+$i+xn,xa="(?:"+[pi,dn,Nn].join("|")+")"+Gi,Sa="(?:"+[hn+rn+"?",rn,dn,Nn,lr].join("|")+")",Sn=RegExp(Xt,"g"),Zi=RegExp(rn,"g"),Ri=RegExp(cn+"(?="+cn+")|"+Sa+Gi,"g"),jn=RegExp([Fn+"?"+Wr+"+"+ei+"(?="+[gr,Fn,"$"].join("|")+")",Wi+"+"+Bn+"(?="+[gr,Fn+Ui,"$"].join("|")+")",Fn+"?"+Ui+"+"+ei,Fn+"+"+Bn,Ki,wa,zr,xa].join("|"),"g"),ka=RegExp("["+Hi+Nr+Fr+dt+"]"),kn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,On=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Yi=-1,rr={};rr[nt]=rr[ut]=rr[ot]=rr[Ue]=rr[Ve]=rr[Qe]=rr[tt]=rr[ae]=rr[Re]=!0,rr[j]=rr[B]=rr[je]=rr[te]=rr[Ze]=rr[ie]=rr[be]=rr[_e]=rr[J]=rr[Q]=rr[ke]=rr[Ce]=rr[q]=rr[G]=rr[we]=!1;var er={};er[j]=er[B]=er[je]=er[Ze]=er[te]=er[ie]=er[nt]=er[ut]=er[ot]=er[Ue]=er[Ve]=er[J]=er[Q]=er[ke]=er[Ce]=er[q]=er[G]=er[Z]=er[Qe]=er[tt]=er[ae]=er[Re]=!0,er[be]=er[_e]=er[we]=!1;var ti={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},Ji={"&":"&","<":"<",">":">",'"':""","'":"'"},Oa={"&":"&","<":"<",">":">",""":'"',"'":"'"},Qi={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},qi=parseFloat,xe=parseInt,De=typeof Vt=="object"&&Vt&&Vt.Object===Object&&Vt,Je=typeof self=="object"&&self&&self.Object===Object&&self,ht=De||Je||Function("return this")(),Zt=k&&!k.nodeType&&k,Mt=Zt&&!0&&X&&!X.nodeType&&X,fr=Mt&&Mt.exports===Zt,nr=fr&&De.process,tr=function(){try{var Ne=Mt&&Mt.require&&Mt.require("util").types;return Ne||nr&&nr.binding&&nr.binding("util")}catch{}}(),ur=tr&&tr.isArrayBuffer,Pr=tr&&tr.isDate,Br=tr&&tr.isMap,dr=tr&&tr.isRegExp,Er=tr&&tr.isSet,Ar=tr&&tr.isTypedArray;function pr(Ne,Ye,$e){switch($e.length){case 0:return Ne.call(Ye);case 1:return Ne.call(Ye,$e[0]);case 2:return Ne.call(Ye,$e[0],$e[1]);case 3:return Ne.call(Ye,$e[0],$e[1],$e[2])}return Ne.apply(Ye,$e)}function pn(Ne,Ye,$e,gt){for(var Bt=-1,ar=Ne==null?0:Ne.length;++Bt-1}function le(Ne,Ye,$e){for(var gt=-1,Bt=Ne==null?0:Ne.length;++gt-1;);return $e}function Af(Ne,Ye){for(var $e=Ne.length;$e--&&wr(Ye,Ne[$e],0)>-1;);return $e}function Tc(Ne,Ye){for(var $e=Ne.length,gt=0;$e--;)Ne[$e]===Ye&&++gt;return gt}var Rc=yn(ti),Cc=yn(Ji);function Pc(Ne){return"\\"+Qi[Ne]}function Ac(Ne,Ye){return Ne==null?e:Ne[Ye]}function ra(Ne){return ka.test(Ne)}function Mc(Ne){return kn.test(Ne)}function Ic(Ne){for(var Ye,$e=[];!(Ye=Ne.next()).done;)$e.push(Ye.value);return $e}function rs(Ne){var Ye=-1,$e=Array(Ne.size);return Ne.forEach(function(gt,Bt){$e[++Ye]=[Bt,gt]}),$e}function Mf(Ne,Ye){return function($e){return Ne(Ye($e))}}function bi(Ne,Ye){for(var $e=-1,gt=Ne.length,Bt=0,ar=[];++$e-1}function _h(x,T){var H=this.__data__,Y=co(H,x);return Y<0?(++this.size,H.push([x,T])):H[Y][1]=T,this}ri.prototype.clear=vh,ri.prototype.delete=mh,ri.prototype.get=bh,ri.prototype.has=gh,ri.prototype.set=_h;function ni(x){var T=-1,H=x==null?0:x.length;for(this.clear();++T=T?x:T)),x}function Pn(x,T,H,Y,ne,ye){var Te,Ae=T&y,ze=T&h,qe=T&l;if(H&&(Te=ne?H(x,Y,ne,ye):H(x)),Te!==e)return Te;if(!vr(x))return x;var et=jt(x);if(et){if(Te=kd(x),!Ae)return nn(x,Te)}else{var at=Vr(x),yt=at==_e||at==oe;if(ki(x))return pu(x,Ae);if(at==ke||at==j||yt&&!ne){if(Te=ze||yt?{}:Iu(x),!Ae)return ze?dd(x,Fh(Te,x)):hd(x,Wf(Te,x))}else{if(!er[at])return ne?x:{};Te=Od(x,at,Ae)}}ye||(ye=new zn);var kt=ye.get(x);if(kt)return kt;ye.set(x,Te),fl(x)?x.forEach(function(Nt){Te.add(Pn(Nt,T,H,Nt,x,ye))}):ol(x)&&x.forEach(function(Nt,Gt){Te.set(Gt,Pn(Nt,T,H,Gt,x,ye))});var Dt=qe?ze?Rs:Ts:ze?on:jr,Wt=et?e:Dt(x);return mr(Wt||x,function(Nt,Gt){Wt&&(Gt=Nt,Nt=x[Gt]),Ma(Te,Gt,Pn(Nt,T,H,Gt,x,ye))}),Te}function Bh(x){var T=jr(x);return function(H){return $f(H,x,T)}}function $f(x,T,H){var Y=H.length;if(x==null)return!Y;for(x=cr(x);Y--;){var ne=H[Y],ye=T[ne],Te=x[ne];if(Te===e&&!(ne in x)||!ye(Te))return!1}return!0}function Vf(x,T,H){if(typeof x!="function")throw new Rn(m);return La(function(){x.apply(e,H)},T)}function Ia(x,T,H,Y){var ne=-1,ye=ta,Te=!0,Ae=x.length,ze=[],qe=T.length;if(!Ae)return ze;H&&(T=Oe(T,vn(H))),Y?(ye=le,Te=!1):T.length>=_&&(ye=Ea,Te=!1,T=new Ai(T));e:for(;++nene?0:ne+H),Y=Y===e||Y>ne?ne:Ut(Y),Y<0&&(Y+=ne),Y=H>Y?0:ll(Y);H0&&H(Ae)?T>1?Xr(Ae,T-1,H,Y,ne):He(ne,Ae):Y||(ne[ne.length]=Ae)}return ne}var us=_u(),Zf=_u(!0);function Kn(x,T){return x&&us(x,T,jr)}function ls(x,T){return x&&Zf(x,T,jr)}function po(x,T){return Yr(T,function(H){return fi(x[H])})}function Ii(x,T){T=xi(T,x);for(var H=0,Y=T.length;x!=null&&HT}function zh(x,T){return x!=null&&sr.call(x,T)}function Xh(x,T){return x!=null&&T in cr(x)}function Hh(x,T,H){return x>=$r(T,H)&&x=120&&et.length>=120)?new Ai(Te&&et):e}et=x[0];var at=-1,yt=Ae[0];e:for(;++at-1;)Ae!==x&&io.call(Ae,ze,1),io.call(x,ze,1);return x}function ou(x,T){for(var H=x?T.length:0,Y=H-1;H--;){var ne=T[H];if(H==Y||ne!==ye){var ye=ne;si(ne)?io.call(x,ne,1):_s(x,ne)}}return x}function ms(x,T){return x+so(zf()*(T-x+1))}function td(x,T,H,Y){for(var ne=-1,ye=Ir(oo((T-x)/(H||1)),0),Te=$e(ye);ye--;)Te[Y?ye:++ne]=x,x+=H;return Te}function bs(x,T){var H="";if(!x||T<1||T>E)return H;do T%2&&(H+=x),T=so(T/2),T&&(x+=x);while(T);return H}function $t(x,T){return Ns(Fu(x,T,sn),x+"")}function rd(x){return Uf(da(x))}function nd(x,T){var H=da(x);return Oo(H,Mi(T,0,H.length))}function Fa(x,T,H,Y){if(!vr(x))return x;T=xi(T,x);for(var ne=-1,ye=T.length,Te=ye-1,Ae=x;Ae!=null&&++nene?0:ne+T),H=H>ne?ne:H,H<0&&(H+=ne),ne=T>H?0:H-T>>>0,T>>>=0;for(var ye=$e(ne);++Y>>1,Te=x[ye];Te!==null&&!bn(Te)&&(H?Te<=T:Te=_){var qe=T?null:md(x);if(qe)return Ya(qe);Te=!1,ne=Ea,ze=new Ai}else ze=T?[]:Ae;e:for(;++Y=Y?x:An(x,T,H)}var du=Gc||function(x){return ht.clearTimeout(x)};function pu(x,T){if(T)return x.slice();var H=x.length,Y=Nf?Nf(H):new x.constructor(H);return x.copy(Y),Y}function ks(x){var T=new x.constructor(x.byteLength);return new ro(T).set(new ro(x)),T}function fd(x,T){var H=T?ks(x.buffer):x.buffer;return new x.constructor(H,x.byteOffset,x.byteLength)}function ud(x){var T=new x.constructor(x.source,Kt.exec(x));return T.lastIndex=x.lastIndex,T}function ld(x){return Aa?cr(Aa.call(x)):{}}function yu(x,T){var H=T?ks(x.buffer):x.buffer;return new x.constructor(H,x.byteOffset,x.length)}function vu(x,T){if(x!==T){var H=x!==e,Y=x===null,ne=x===x,ye=bn(x),Te=T!==e,Ae=T===null,ze=T===T,qe=bn(T);if(!Ae&&!qe&&!ye&&x>T||ye&&Te&&ze&&!Ae&&!qe||Y&&Te&&ze||!H&&ze||!ne)return 1;if(!Y&&!ye&&!qe&&x=Ae)return ze;var qe=H[Y];return ze*(qe=="desc"?-1:1)}}return x.index-T.index}function mu(x,T,H,Y){for(var ne=-1,ye=x.length,Te=H.length,Ae=-1,ze=T.length,qe=Ir(ye-Te,0),et=$e(ze+qe),at=!Y;++Ae1?H[ne-1]:e,Te=ne>2?H[2]:e;for(ye=x.length>3&&typeof ye=="function"?(ne--,ye):e,Te&&en(H[0],H[1],Te)&&(ye=ne<3?e:ye,ne=1),T=cr(T);++Y-1?ne[ye?T[Te]:Te]:e}}function Su(x){return oi(function(T){var H=T.length,Y=H,ne=Cn.prototype.thru;for(x&&T.reverse();Y--;){var ye=T[Y];if(typeof ye!="function")throw new Rn(m);if(ne&&!Te&&So(ye)=="wrapper")var Te=new Cn([],!0)}for(Y=Te?Y:H;++Y1&&qt.reverse(),et&&zeAe))return!1;var qe=ye.get(x),et=ye.get(T);if(qe&&et)return qe==T&&et==x;var at=-1,yt=!0,kt=H&s?new Ai:e;for(ye.set(x,T),ye.set(T,x);++at1?"& ":"")+T[Y],T=T.join(H>2?", ":" "),x.replace(wt,`{ +/* [wrapped with `+T+`] */ +`)}function Td(x){return jt(x)||Fi(x)||!!(jf&&x&&x[jf])}function si(x,T){var H=typeof x;return T=T??E,!!T&&(H=="number"||H!="symbol"&&Et.test(x))&&x>-1&&x%1==0&&x0){if(++T>=L)return arguments[0]}else T=0;return x.apply(e,arguments)}}function Oo(x,T){var H=-1,Y=x.length,ne=Y-1;for(T=T===e?Y:T;++H1?x[T-1]:e;return H=typeof H=="function"?(x.pop(),H):e,Gu(x,H)});function Zu(x){var T=de(x);return T.__chain__=!0,T}function jp(x,T){return T(x),x}function Eo(x,T){return T(x)}var Lp=oi(function(x){var T=x.length,H=T?x[0]:0,Y=this.__wrapped__,ne=function(ye){return fs(ye,x)};return T>1||this.__actions__.length||!(Y instanceof Yt)||!si(H)?this.thru(ne):(Y=Y.slice(H,+H+(T?1:0)),Y.__actions__.push({func:Eo,args:[ne],thisArg:e}),new Cn(Y,this.__chain__).thru(function(ye){return T&&!ye.length&&ye.push(e),ye}))});function zp(){return Zu(this)}function Xp(){return new Cn(this.value(),this.__chain__)}function Hp(){this.__values__===e&&(this.__values__=ul(this.value()));var x=this.__index__>=this.__values__.length,T=x?e:this.__values__[this.__index__++];return{done:x,value:T}}function Up(){return this}function Wp(x){for(var T,H=this;H instanceof lo;){var Y=Hu(H);Y.__index__=0,Y.__values__=e,T?ne.__wrapped__=Y:T=Y;var ne=Y;H=H.__wrapped__}return ne.__wrapped__=x,T}function $p(){var x=this.__wrapped__;if(x instanceof Yt){var T=x;return this.__actions__.length&&(T=new Yt(this)),T=T.reverse(),T.__actions__.push({func:Eo,args:[Fs],thisArg:e}),new Cn(T,this.__chain__)}return this.thru(Fs)}function Vp(){return cu(this.__wrapped__,this.__actions__)}var Kp=bo(function(x,T,H){sr.call(x,H)?++x[H]:ii(x,H,1)});function Gp(x,T,H){var Y=jt(x)?En:jh;return H&&en(x,T,H)&&(T=e),Y(x,It(T,3))}function Zp(x,T){var H=jt(x)?Yr:Gf;return H(x,It(T,3))}var Yp=xu(Uu),Jp=xu(Wu);function Qp(x,T){return Xr(To(x,T),1)}function qp(x,T){return Xr(To(x,T),P)}function e0(x,T,H){return H=H===e?1:Ut(H),Xr(To(x,T),H)}function Yu(x,T){var H=jt(x)?mr:_i;return H(x,It(T,3))}function Ju(x,T){var H=jt(x)?ea:Kf;return H(x,It(T,3))}var t0=bo(function(x,T,H){sr.call(x,H)?x[H].push(T):ii(x,H,[T])});function r0(x,T,H,Y){x=an(x)?x:da(x),H=H&&!Y?Ut(H):0;var ne=x.length;return H<0&&(H=Ir(ne+H,0)),Mo(x)?H<=ne&&x.indexOf(T,H)>-1:!!ne&&wr(x,T,H)>-1}var n0=$t(function(x,T,H){var Y=-1,ne=typeof T=="function",ye=an(x)?$e(x.length):[];return _i(x,function(Te){ye[++Y]=ne?pr(T,Te,H):Da(Te,T,H)}),ye}),i0=bo(function(x,T,H){ii(x,H,T)});function To(x,T){var H=jt(x)?Oe:eu;return H(x,It(T,3))}function a0(x,T,H,Y){return x==null?[]:(jt(T)||(T=T==null?[]:[T]),H=Y?e:H,jt(H)||(H=H==null?[]:[H]),iu(x,T,H))}var o0=bo(function(x,T,H){x[H?0:1].push(T)},function(){return[[],[]]});function s0(x,T,H){var Y=jt(x)?ft:Vn,ne=arguments.length<3;return Y(x,It(T,4),H,ne,_i)}function f0(x,T,H){var Y=jt(x)?Tt:Vn,ne=arguments.length<3;return Y(x,It(T,4),H,ne,Kf)}function u0(x,T){var H=jt(x)?Yr:Gf;return H(x,Po(It(T,3)))}function l0(x){var T=jt(x)?Uf:rd;return T(x)}function c0(x,T,H){(H?en(x,T,H):T===e)?T=1:T=Ut(T);var Y=jt(x)?Ih:nd;return Y(x,T)}function h0(x){var T=jt(x)?Dh:ad;return T(x)}function d0(x){if(x==null)return 0;if(an(x))return Mo(x)?na(x):x.length;var T=Vr(x);return T==J||T==q?x.size:ps(x).length}function p0(x,T,H){var Y=jt(x)?mt:od;return H&&en(x,T,H)&&(T=e),Y(x,It(T,3))}var y0=$t(function(x,T){if(x==null)return[];var H=T.length;return H>1&&en(x,T[0],T[1])?T=[]:H>2&&en(T[0],T[1],T[2])&&(T=[T[0]]),iu(x,Xr(T,1),[])}),Ro=Zc||function(){return ht.Date.now()};function v0(x,T){if(typeof T!="function")throw new Rn(m);return x=Ut(x),function(){if(--x<1)return T.apply(this,arguments)}}function Qu(x,T,H){return T=H?e:T,T=x&&T==null?x.length:T,ai(x,o,e,e,e,e,T)}function qu(x,T){var H;if(typeof T!="function")throw new Rn(m);return x=Ut(x),function(){return--x>0&&(H=T.apply(this,arguments)),x<=1&&(T=e),H}}var js=$t(function(x,T,H){var Y=v;if(H.length){var ne=bi(H,ca(js));Y|=i}return ai(x,Y,T,H,ne)}),el=$t(function(x,T,H){var Y=v|c;if(H.length){var ne=bi(H,ca(el));Y|=i}return ai(T,Y,x,H,ne)});function tl(x,T,H){T=H?e:T;var Y=ai(x,r,e,e,e,e,e,T);return Y.placeholder=tl.placeholder,Y}function rl(x,T,H){T=H?e:T;var Y=ai(x,t,e,e,e,e,e,T);return Y.placeholder=rl.placeholder,Y}function nl(x,T,H){var Y,ne,ye,Te,Ae,ze,qe=0,et=!1,at=!1,yt=!0;if(typeof x!="function")throw new Rn(m);T=In(T)||0,vr(H)&&(et=!!H.leading,at="maxWait"in H,ye=at?Ir(In(H.maxWait)||0,T):ye,yt="trailing"in H?!!H.trailing:yt);function kt(Sr){var Hn=Y,li=ne;return Y=ne=e,qe=Sr,Te=x.apply(li,Hn),Te}function Dt(Sr){return qe=Sr,Ae=La(Gt,T),et?kt(Sr):Te}function Wt(Sr){var Hn=Sr-ze,li=Sr-qe,xl=T-Hn;return at?$r(xl,ye-li):xl}function Nt(Sr){var Hn=Sr-ze,li=Sr-qe;return ze===e||Hn>=T||Hn<0||at&&li>=ye}function Gt(){var Sr=Ro();if(Nt(Sr))return qt(Sr);Ae=La(Gt,Wt(Sr))}function qt(Sr){return Ae=e,yt&&Y?kt(Sr):(Y=ne=e,Te)}function gn(){Ae!==e&&du(Ae),qe=0,Y=ze=ne=Ae=e}function tn(){return Ae===e?Te:qt(Ro())}function _n(){var Sr=Ro(),Hn=Nt(Sr);if(Y=arguments,ne=this,ze=Sr,Hn){if(Ae===e)return Dt(ze);if(at)return du(Ae),Ae=La(Gt,T),kt(ze)}return Ae===e&&(Ae=La(Gt,T)),Te}return _n.cancel=gn,_n.flush=tn,_n}var m0=$t(function(x,T){return Vf(x,1,T)}),b0=$t(function(x,T,H){return Vf(x,In(T)||0,H)});function g0(x){return ai(x,O)}function Co(x,T){if(typeof x!="function"||T!=null&&typeof T!="function")throw new Rn(m);var H=function(){var Y=arguments,ne=T?T.apply(this,Y):Y[0],ye=H.cache;if(ye.has(ne))return ye.get(ne);var Te=x.apply(this,Y);return H.cache=ye.set(ne,Te)||ye,Te};return H.cache=new(Co.Cache||ni),H}Co.Cache=ni;function Po(x){if(typeof x!="function")throw new Rn(m);return function(){var T=arguments;switch(T.length){case 0:return!x.call(this);case 1:return!x.call(this,T[0]);case 2:return!x.call(this,T[0],T[1]);case 3:return!x.call(this,T[0],T[1],T[2])}return!x.apply(this,T)}}function _0(x){return qu(2,x)}var w0=sd(function(x,T){T=T.length==1&&jt(T[0])?Oe(T[0],vn(It())):Oe(Xr(T,1),vn(It()));var H=T.length;return $t(function(Y){for(var ne=-1,ye=$r(Y.length,H);++ne=T}),Fi=Jf(function(){return arguments}())?Jf:function(x){return br(x)&&sr.call(x,"callee")&&!Bf.call(x,"callee")},jt=$e.isArray,F0=ur?vn(ur):Wh;function an(x){return x!=null&&Ao(x.length)&&!fi(x)}function xr(x){return br(x)&&an(x)}function B0(x){return x===!0||x===!1||br(x)&&qr(x)==te}var ki=Jc||Ys,j0=Pr?vn(Pr):$h;function L0(x){return br(x)&&x.nodeType===1&&!za(x)}function z0(x){if(x==null)return!0;if(an(x)&&(jt(x)||typeof x=="string"||typeof x.splice=="function"||ki(x)||ha(x)||Fi(x)))return!x.length;var T=Vr(x);if(T==J||T==q)return!x.size;if(ja(x))return!ps(x).length;for(var H in x)if(sr.call(x,H))return!1;return!0}function X0(x,T){return Na(x,T)}function H0(x,T,H){H=typeof H=="function"?H:e;var Y=H?H(x,T):e;return Y===e?Na(x,T,e,H):!!Y}function zs(x){if(!br(x))return!1;var T=qr(x);return T==be||T==ce||typeof x.message=="string"&&typeof x.name=="string"&&!za(x)}function U0(x){return typeof x=="number"&&Lf(x)}function fi(x){if(!vr(x))return!1;var T=qr(x);return T==_e||T==oe||T==V||T==se}function al(x){return typeof x=="number"&&x==Ut(x)}function Ao(x){return typeof x=="number"&&x>-1&&x%1==0&&x<=E}function vr(x){var T=typeof x;return x!=null&&(T=="object"||T=="function")}function br(x){return x!=null&&typeof x=="object"}var ol=Br?vn(Br):Kh;function W0(x,T){return x===T||ds(x,T,Ps(T))}function $0(x,T,H){return H=typeof H=="function"?H:e,ds(x,T,Ps(T),H)}function V0(x){return sl(x)&&x!=+x}function K0(x){if(Pd(x))throw new Bt(u);return Qf(x)}function G0(x){return x===null}function Z0(x){return x==null}function sl(x){return typeof x=="number"||br(x)&&qr(x)==Q}function za(x){if(!br(x)||qr(x)!=ke)return!1;var T=no(x);if(T===null)return!0;var H=sr.call(T,"constructor")&&T.constructor;return typeof H=="function"&&H instanceof H&&qa.call(H)==$c}var Xs=dr?vn(dr):Gh;function Y0(x){return al(x)&&x>=-E&&x<=E}var fl=Er?vn(Er):Zh;function Mo(x){return typeof x=="string"||!jt(x)&&br(x)&&qr(x)==G}function bn(x){return typeof x=="symbol"||br(x)&&qr(x)==Z}var ha=Ar?vn(Ar):Yh;function J0(x){return x===e}function Q0(x){return br(x)&&Vr(x)==we}function q0(x){return br(x)&&qr(x)==ge}var ey=xo(ys),ty=xo(function(x,T){return x<=T});function ul(x){if(!x)return[];if(an(x))return Mo(x)?Ln(x):nn(x);if(Ta&&x[Ta])return Ic(x[Ta]());var T=Vr(x),H=T==J?rs:T==q?Ya:da;return H(x)}function ui(x){if(!x)return x===0?x:0;if(x=In(x),x===P||x===-P){var T=x<0?-1:1;return T*A}return x===x?x:0}function Ut(x){var T=ui(x),H=T%1;return T===T?H?T-H:T:0}function ll(x){return x?Mi(Ut(x),0,W):0}function In(x){if(typeof x=="number")return x;if(bn(x))return z;if(vr(x)){var T=typeof x.valueOf=="function"?x.valueOf():x;x=vr(T)?T+"":T}if(typeof x!="string")return x===0?x:+x;x=Cf(x);var H=xt.test(x);return H||Lt.test(x)?xe(x.slice(2),H?2:8):Ct.test(x)?z:+x}function cl(x){return Gn(x,on(x))}function ry(x){return x?Mi(Ut(x),-E,E):x===0?x:0}function or(x){return x==null?"":mn(x)}var ny=ua(function(x,T){if(ja(T)||an(T)){Gn(T,jr(T),x);return}for(var H in T)sr.call(T,H)&&Ma(x,H,T[H])}),hl=ua(function(x,T){Gn(T,on(T),x)}),Io=ua(function(x,T,H,Y){Gn(T,on(T),x,Y)}),iy=ua(function(x,T,H,Y){Gn(T,jr(T),x,Y)}),ay=oi(fs);function oy(x,T){var H=fa(x);return T==null?H:Wf(H,T)}var sy=$t(function(x,T){x=cr(x);var H=-1,Y=T.length,ne=Y>2?T[2]:e;for(ne&&en(T[0],T[1],ne)&&(Y=1);++H1),ye}),Gn(x,Rs(x),H),Y&&(H=Pn(H,y|h|l,bd));for(var ne=T.length;ne--;)_s(H,T[ne]);return H});function Oy(x,T){return pl(x,Po(It(T)))}var Ey=oi(function(x,T){return x==null?{}:qh(x,T)});function pl(x,T){if(x==null)return{};var H=Oe(Rs(x),function(Y){return[Y]});return T=It(T),au(x,H,function(Y,ne){return T(Y,ne[0])})}function Ty(x,T,H){T=xi(T,x);var Y=-1,ne=T.length;for(ne||(ne=1,x=e);++YT){var Y=x;x=T,T=Y}if(H||x%1||T%1){var ne=zf();return $r(x+ne*(T-x+qi("1e-"+((ne+"").length-1))),T)}return ms(x,T)}var jy=la(function(x,T,H){return T=T.toLowerCase(),x+(H?ml(T):T)});function ml(x){return Ws(or(x).toLowerCase())}function bl(x){return x=or(x),x&&x.replace(Dr,Rc).replace(Zi,"")}function Ly(x,T,H){x=or(x),T=mn(T);var Y=x.length;H=H===e?Y:Mi(Ut(H),0,Y);var ne=H;return H-=T.length,H>=0&&x.slice(H,ne)==T}function zy(x){return x=or(x),x&&it.test(x)?x.replace(ee,Cc):x}function Xy(x){return x=or(x),x&&Ge.test(x)?x.replace(st,"\\$&"):x}var Hy=la(function(x,T,H){return x+(H?"-":"")+T.toLowerCase()}),Uy=la(function(x,T,H){return x+(H?" ":"")+T.toLowerCase()}),Wy=wu("toLowerCase");function $y(x,T,H){x=or(x),T=Ut(T);var Y=T?na(x):0;if(!T||Y>=T)return x;var ne=(T-Y)/2;return wo(so(ne),H)+x+wo(oo(ne),H)}function Vy(x,T,H){x=or(x),T=Ut(T);var Y=T?na(x):0;return T&&Y>>0,H?(x=or(x),x&&(typeof T=="string"||T!=null&&!Xs(T))&&(T=mn(T),!T&&ra(x))?Si(Ln(x),0,H):x.split(T,H)):[]}var qy=la(function(x,T,H){return x+(H?" ":"")+Ws(T)});function ev(x,T,H){return x=or(x),H=H==null?0:Mi(Ut(H),0,x.length),T=mn(T),x.slice(H,H+T.length)==T}function tv(x,T,H){var Y=de.templateSettings;H&&en(x,T,H)&&(T=e),x=or(x),T=Io({},T,Y,Ru);var ne=Io({},T.imports,Y.imports,Ru),ye=jr(ne),Te=ts(ne,ye),Ae,ze,qe=0,et=T.interpolate||Or,at="__p += '",yt=ns((T.escape||Or).source+"|"+et.source+"|"+(et===Le?bt:Or).source+"|"+(T.evaluate||Or).source+"|$","g"),kt="//# sourceURL="+(sr.call(T,"sourceURL")?(T.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Yi+"]")+` +`;x.replace(yt,function(Nt,Gt,qt,gn,tn,_n){return qt||(qt=gn),at+=x.slice(qe,_n).replace(Gr,Pc),Gt&&(Ae=!0,at+=`' + +__e(`+Gt+`) + +'`),tn&&(ze=!0,at+=`'; +`+tn+`; +__p += '`),qt&&(at+=`' + +((__t = (`+qt+`)) == null ? '' : __t) + +'`),qe=_n+Nt.length,Nt}),at+=`'; +`;var Dt=sr.call(T,"variable")&&T.variable;if(!Dt)at=`with (obj) { +`+at+` +} +`;else if(At.test(Dt))throw new Bt(g);at=(ze?at.replace(me,""):at).replace(Ee,"$1").replace(pe,"$1;"),at="function("+(Dt||"obj")+`) { +`+(Dt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(Ae?", __e = _.escape":"")+(ze?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+at+`return __p +}`;var Wt=_l(function(){return ar(ye,kt+"return "+at).apply(e,Te)});if(Wt.source=at,zs(Wt))throw Wt;return Wt}function rv(x){return or(x).toLowerCase()}function nv(x){return or(x).toUpperCase()}function iv(x,T,H){if(x=or(x),x&&(H||T===e))return Cf(x);if(!x||!(T=mn(T)))return x;var Y=Ln(x),ne=Ln(T),ye=Pf(Y,ne),Te=Af(Y,ne)+1;return Si(Y,ye,Te).join("")}function av(x,T,H){if(x=or(x),x&&(H||T===e))return x.slice(0,If(x)+1);if(!x||!(T=mn(T)))return x;var Y=Ln(x),ne=Af(Y,Ln(T))+1;return Si(Y,0,ne).join("")}function ov(x,T,H){if(x=or(x),x&&(H||T===e))return x.replace(rt,"");if(!x||!(T=mn(T)))return x;var Y=Ln(x),ne=Pf(Y,Ln(T));return Si(Y,ne).join("")}function sv(x,T){var H=C,Y=N;if(vr(T)){var ne="separator"in T?T.separator:ne;H="length"in T?Ut(T.length):H,Y="omission"in T?mn(T.omission):Y}x=or(x);var ye=x.length;if(ra(x)){var Te=Ln(x);ye=Te.length}if(H>=ye)return x;var Ae=H-na(Y);if(Ae<1)return Y;var ze=Te?Si(Te,0,Ae).join(""):x.slice(0,Ae);if(ne===e)return ze+Y;if(Te&&(Ae+=ze.length-Ae),Xs(ne)){if(x.slice(Ae).search(ne)){var qe,et=ze;for(ne.global||(ne=ns(ne.source,or(Kt.exec(ne))+"g")),ne.lastIndex=0;qe=ne.exec(et);)var at=qe.index;ze=ze.slice(0,at===e?Ae:at)}}else if(x.indexOf(mn(ne),Ae)!=Ae){var yt=ze.lastIndexOf(ne);yt>-1&&(ze=ze.slice(0,yt))}return ze+Y}function fv(x){return x=or(x),x&&Xe.test(x)?x.replace(Pe,Bc):x}var uv=la(function(x,T,H){return x+(H?" ":"")+T.toUpperCase()}),Ws=wu("toUpperCase");function gl(x,T,H){return x=or(x),T=H?e:T,T===e?Mc(x)?zc(x):hr(x):x.match(T)||[]}var _l=$t(function(x,T){try{return pr(x,e,T)}catch(H){return zs(H)?H:new Bt(H)}}),lv=oi(function(x,T){return mr(T,function(H){H=Zn(H),ii(x,H,js(x[H],x))}),x});function cv(x){var T=x==null?0:x.length,H=It();return x=T?Oe(x,function(Y){if(typeof Y[1]!="function")throw new Rn(m);return[H(Y[0]),Y[1]]}):[],$t(function(Y){for(var ne=-1;++neE)return[];var H=W,Y=$r(x,W);T=It(T),x-=W;for(var ne=mi(Y,T);++H0||T<0)?new Yt(H):(x<0?H=H.takeRight(-x):x&&(H=H.drop(x)),T!==e&&(T=Ut(T),H=T<0?H.dropRight(-T):H.take(T-x)),H)},Yt.prototype.takeRightWhile=function(x){return this.reverse().takeWhile(x).reverse()},Yt.prototype.toArray=function(){return this.take(W)},Kn(Yt.prototype,function(x,T){var H=/^(?:filter|find|map|reject)|While$/.test(T),Y=/^(?:head|last)$/.test(T),ne=de[Y?"take"+(T=="last"?"Right":""):T],ye=Y||/^find/.test(T);ne&&(de.prototype[T]=function(){var Te=this.__wrapped__,Ae=Y?[1]:arguments,ze=Te instanceof Yt,qe=Ae[0],et=ze||jt(Te),at=function(Gt){var qt=ne.apply(de,He([Gt],Ae));return Y&&yt?qt[0]:qt};et&&H&&typeof qe=="function"&&qe.length!=1&&(ze=et=!1);var yt=this.__chain__,kt=!!this.__actions__.length,Dt=ye&&!yt,Wt=ze&&!kt;if(!ye&&et){Te=Wt?Te:new Yt(this);var Nt=x.apply(Te,Ae);return Nt.__actions__.push({func:Eo,args:[at],thisArg:e}),new Cn(Nt,yt)}return Dt&&Wt?x.apply(this,Ae):(Nt=this.thru(at),Dt?Y?Nt.value()[0]:Nt.value():Nt)})}),mr(["pop","push","shift","sort","splice","unshift"],function(x){var T=Ja[x],H=/^(?:push|sort|unshift)$/.test(x)?"tap":"thru",Y=/^(?:pop|shift)$/.test(x);de.prototype[x]=function(){var ne=arguments;if(Y&&!this.__chain__){var ye=this.value();return T.apply(jt(ye)?ye:[],ne)}return this[H](function(Te){return T.apply(jt(Te)?Te:[],ne)})}}),Kn(Yt.prototype,function(x,T){var H=de[T];if(H){var Y=H.name+"";sr.call(sa,Y)||(sa[Y]=[]),sa[Y].push({name:T,func:H})}}),sa[go(e,c).name]=[{name:"wrapper",func:e}],Yt.prototype.clone=fh,Yt.prototype.reverse=uh,Yt.prototype.value=lh,de.prototype.at=Lp,de.prototype.chain=zp,de.prototype.commit=Xp,de.prototype.next=Hp,de.prototype.plant=Wp,de.prototype.reverse=$p,de.prototype.toJSON=de.prototype.valueOf=de.prototype.value=Vp,de.prototype.first=de.prototype.head,Ta&&(de.prototype[Ta]=Up),de},ia=Xc();Mt?((Mt.exports=ia)._=ia,Zt._=ia):ht._=ia}).call(Vt)})(Zg,ga);function kc(X){X=X.replace("#","");for(var k=X.match(/../g),e=0;e<3;e++)k[e]=parseInt(k[e],16);return k}function Oc(X,k,e){for(var S=[X.toString(16),k.toString(16),e.toString(16)],_=0;_<3;_++)S[_].length==1&&(S[_]="0"+S[_]);return"#"+S.join("")}function Yg(X,k){for(var e=kc(X),S=0;S<3;S++)e[S]=Math.floor(e[S]*(1-k));return Oc(e[0],e[1],e[2])}function Jg(X,k){for(var e=kc(X),S=0;S<3;S++)e[S]=Math.floor((255-e[S])*k+e[S]);return Oc(e[0],e[1],e[2])}const rf=["#FFFFFF","#000000","#BFBFBF","#323232","#4472C4","#ED7D31","#A5A5A5","#FFC000","#5B9BD5","#71AD47"],nf=["#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#800000","#008000","#000080","#808000","#800080","#008080","#C0C0C0","#808080","#9999FF","#993366","#FFFFCC","#CCFFFF","#660066","#FF8080","#0066CC","#CCCCFF","#000080","#FF00FF","#FFFF00","#00FFFF","#800080","#800000","#008080","#0000FF","#00CCFF","#CCFFFF","#CCFFCC","#FFFF99","#99CCFF","#FF99CC","#CC99FF","#FFCC99","#3366FF","#33CCCC","#99CC00","#FFCC00","#FF9900","#FF6600","#666699","#969696","#003366","#339966","#003300","#333300","#993300","#993366","#333399","#333333","#FFFFFF"];let Qg=80,qg=24;function v1(X,k={}){return e1(Zv(X),k)}function e1(X,k){return new Promise(function(e,S){const _=new XMLHttpRequest;_.open(k.method||"GET",X,!0),_.responseType=k.responseType||"arraybuffer",_.onload=function(){_.status===200?e(_.response):S(_.status)},_.onerror=function(){S(_.status)},_.withCredentials=k.withCredentials||!1,k.headers&&Object.keys(k.headers).forEach(function(u){_.setRequestHeader(u,k.headers[u])}),_.send(k.body)})}function m1(X){try{return new mf.Workbook().xlsx.load(X)}catch(k){return console.warn(k),Promise.reject(k)}}function t1(X,k,e){for(let S=0;S<(X.columns||[]).length;S++)k.cols[S.toString()]={},X.columns[S].width?k.cols[S.toString()].width=X.columns[S].width*6+(e.widthOffset||0):k.cols[S.toString()].width=Qg+(e.widthOffset||0);k.cols.len=Math.max(Object.keys(k.cols).length,e.minColLength||0)}function r1(X){let{numFmt:k,value:e,type:S}=X;switch(S){case 2:try{if(X.style.numFmt){if(X.style.numFmt.endsWith("%")){let _=X.style.numFmt.match(/\.(\d+)%/);return _?(e*100).toFixed(_[1].length)+"%":e*100+"%"}else if(/0(\.0+)?/.test(X.style.numFmt)){if(e===0&&X.style.numFmt.startsWith("_"))return"-";let _=X.style.numFmt.match(/0\.(0+)(_|;|$)/);_?_=_[1].length:_=0;let u=e.toFixed(_)+"";if(X.style.numFmt.includes("#,##")){u=u.split(".");let m=u[0].split("").reverse(),g=[];for(let b=0;b9?"#C7C9CC":typeof k>"u"?rf[X]:k>0?Jg(rf[X],k):Yg(rf[X],Math.abs(k))}function n1(X){X.style=ga.cloneDeep(X.style);let k=null;X.style.fill&&X.style.fill.fgColor&&(X.style.fill.fgColor.argb?k=af(X.style.fill.fgColor.argb):X.style.fill.fgColor.hasOwnProperty("theme")?k=of(X.style.fill.fgColor.theme,X.style.fill.fgColor.tint):X.style.fill.fgColor.indexed?k=nf[X.style.fill.fgColor.indexed]||"#C7C9CC":k="#C7C9CC"),k&&(X.style.bgcolor=k);let e=null;if(X.style.font&&X.style.font.color&&(X.style.font.color.argb?e=af(X.style.font.color.argb):X.style.font.color.hasOwnProperty("theme")?e=of(X.style.font.color.theme,X.style.font.color.tint):X.style.font.color.indexed?e=nf[X.style.font.color.indexed]||"#000000":e="#000000"),e&&(X.style.color=e),X.style.alignment&&(X.style.alignment.horizontal&&(X.style.align=X.style.alignment.horizontal),X.style.alignment.vertical&&(X.style.valign=X.style.alignment.vertical)),X.style.alignment&&X.style.alignment.wrapText&&(X.style.textwrap=!0),X.style.border){let S={};Object.keys(X.style.border).forEach(_=>{let u=X.style.border[_],m="#000000";typeof u.color=="string"?m=u.color:u.color&&(u.color.argb?m=af(u.color.argb):u.color.hasOwnProperty("theme")?m=of(u.color.theme,u.color.tint):u.color.indexed&&(m=nf[u.color.indexed])),S[_]=[u.style||"thin",m]}),X.style.border2={...X.style.border},X.style.border=S}return X.style}function b1(X,k){let e=[],S=[];return X.eachSheet(_=>{S.push(_);let u={name:_.name,styles:[],rows:{},cols:{},merges:[],media:[]},m=[];for(let b in _._merges){u.merges.push(_._merges[b].shortRange);let w={};w.startAddress=_._merges[b].tl,w.endAddress=_._merges[b].br,w.YRange=_._merges[b].model.bottom-_._merges[b].model.top,w.XRange=_._merges[b].model.right-_._merges[b].model.left,m.push(w)}t1(_,u,k),(_._rows||[]).forEach((b,w)=>{u.rows[w]={cells:{}},b.height?u.rows[w].height=b.height+(k.heightOffset||0):u.rows[w].height=qg+(k.heightOffset||0),(b._cells||[]).forEach((f,y)=>{u.rows[w].cells[y]={};let h=ga.find(m,function(l){return l.startAddress==f._address});h&&f.master.address!=h.startAddress||(h&&(u.rows[w].cells[y].merge=[h.YRange,h.XRange]),u.rows[w].cells[y].text=r1(f),u.styles.push(n1(f)),u.rows[w].cells[y].style=u.styles.length-1)})}),u._media&&(u.media=u._media);let g=Object.keys(u.rows);u.rows.len=Math.max(g[g.length-1]+1,100),e.push(u)}),X._worksheets=S,{workbookData:e,workbookSource:X,medias:X.media||[]}}let Uo=[];function g1(X,k,e,S){e&&e._media.length&&e._media.forEach(_=>{let{imageId:u,range:m,type:g}=_;if(g==="image"){let b=i1(e,m,S);a1(X,u,k[u],b)}})}let Wo=60,$o=25,sf=80,ff=24,Jn=window.devicePixelRatio;function i1(X,k,e){var r,t,i,n,o,p,O,C,N,L,F,M,D,R;let{tl:S={},br:_={}}=k,{nativeCol:u,nativeColOff:m,nativeRow:g,nativeRowOff:b}=S,w=Wo,f=$o;for(let P=0;P{let u=0,m=0,g=_.width,b=_.height,w=S.x,f=S.y,y=S.width,h=S.height,l=y/g,d=h/b;if(w{console.error(_)})}function o1(X,k){return new Promise((e,S)=>{if(Uo[X])return e(Uo[X]);const{buffer:_}=k.buffer;let u=new Blob([_],{type:"image/"+k.extension}),m=URL.createObjectURL(u),g=new Image;g.src=m,g.onload=function(){e(g),Uo[X]=g},g.onerror=function(b){S(b)}})}function w1(X){if(X){let k=X.querySelectorAll("input");for(let e of k)e&&!e.readOnly&&(e.readOnly=!0);document.activeElement&&document.activeElement.blur()}}export{xg as S,g1 as a,m1 as b,_1 as c,v1 as g,ga as l,w1 as r,b1 as t}; diff --git a/examples/dist/assets/index-b78d7be5.js b/examples/dist/assets/index-b78d7be5.js new file mode 100644 index 0000000..9920346 --- /dev/null +++ b/examples/dist/assets/index-b78d7be5.js @@ -0,0 +1,121 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();function Bp(t,e){const n=Object.create(null),r=t.split(",");for(let a=0;a!!n[a.toLowerCase()]:a=>!!n[a]}function jp(t){if(bt(t)){const e={};for(let n=0;n{if(n){const r=n.split(ZO);r.length>1&&(e[r[0].trim()]=r[1].trim())}}),e}function Vp(t){let e="";if(ln(t))e=t;else if(bt(t))for(let n=0;n{},rT=()=>!1,aT=/^on[^a-z]/,Xc=t=>aT.test(t),Kp=t=>t.startsWith("onUpdate:"),pn=Object.assign,Hp=(t,e)=>{const n=t.indexOf(e);n>-1&&t.splice(n,1)},oT=Object.prototype.hasOwnProperty,Tt=(t,e)=>oT.call(t,e),bt=Array.isArray,Sl=t=>Qc(t)==="[object Map]",iT=t=>Qc(t)==="[object Set]",St=t=>typeof t=="function",ln=t=>typeof t=="string",zp=t=>typeof t=="symbol",Gt=t=>t!==null&&typeof t=="object",iS=t=>Gt(t)&&St(t.then)&&St(t.catch),lT=Object.prototype.toString,Qc=t=>lT.call(t),uT=t=>Qc(t).slice(8,-1),sT=t=>Qc(t)==="[object Object]",Wp=t=>ln(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Ss=Bp(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Zc=t=>{const e=Object.create(null);return n=>e[n]||(e[n]=t(n))},cT=/-(\w)/g,Ln=Zc(t=>t.replace(cT,(e,n)=>n?n.toUpperCase():"")),dT=/\B([A-Z])/g,Li=Zc(t=>t.replace(dT,"-$1").toLowerCase()),Jc=Zc(t=>t.charAt(0).toUpperCase()+t.slice(1)),yf=Zc(t=>t?`on${Jc(t)}`:""),Wl=(t,e)=>!Object.is(t,e),bf=(t,e)=>{for(let n=0;n{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:n})},Up=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Z0;const fT=()=>Z0||(Z0=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Yn;class vT{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Yn,!e&&Yn&&(this.index=(Yn.scopes||(Yn.scopes=[])).push(this)-1)}run(e){if(this.active){const n=Yn;try{return Yn=this,e()}finally{Yn=n}}}on(){Yn=this}off(){Yn=this.parent}stop(e){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const e=new Set(t);return e.w=0,e.n=0,e},lS=t=>(t.w&Ha)>0,uS=t=>(t.n&Ha)>0,mT=({deps:t})=>{if(t.length)for(let e=0;e{const{deps:e}=t;if(e.length){let n=0;for(let r=0;r{(d==="length"||d>=u)&&l.push(s)})}else switch(n!==void 0&&l.push(i.get(n)),e){case"add":bt(t)?Wp(n)&&l.push(i.get("length")):(l.push(i.get(wo)),Sl(t)&&l.push(i.get(zv)));break;case"delete":bt(t)||(l.push(i.get(wo)),Sl(t)&&l.push(i.get(zv)));break;case"set":Sl(t)&&l.push(i.get(wo));break}if(l.length===1)l[0]&&Wv(l[0]);else{const u=[];for(const s of l)s&&u.push(...s);Wv(Yp(u))}}function Wv(t,e){const n=bt(t)?t:[...t];for(const r of n)r.computed&&e1(r);for(const r of n)r.computed||e1(r)}function e1(t,e){(t!==gr||t.allowRecurse)&&(t.scheduler?t.scheduler():t.run())}const bT=Bp("__proto__,__v_isRef,__isVue"),dS=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(zp)),CT=qp(),xT=qp(!1,!0),wT=qp(!0),t1=ST();function ST(){const t={};return["includes","indexOf","lastIndexOf"].forEach(e=>{t[e]=function(...n){const r=rt(this);for(let o=0,i=this.length;o{t[e]=function(...n){Bi();const r=rt(this)[e].apply(this,n);return ji(),r}}),t}function qp(t=!1,e=!1){return function(r,a,o){if(a==="__v_isReactive")return!t;if(a==="__v_isReadonly")return t;if(a==="__v_isShallow")return e;if(a==="__v_raw"&&o===(t?e?BT:gS:e?pS:hS).get(r))return r;const i=bt(r);if(!t&&i&&Tt(t1,a))return Reflect.get(t1,a,o);const l=Reflect.get(r,a,o);return(zp(a)?dS.has(a):bT(a))||(t||Xn(r,"get",a),e)?l:vn(l)?i&&Wp(a)?l:l.value:Gt(l)?t?mS(l):xt(l):l}}const PT=fS(),kT=fS(!0);function fS(t=!1){return function(n,r,a,o){let i=n[r];if(Si(i)&&vn(i)&&!vn(a))return!1;if(!t&&(!ic(a)&&!Si(a)&&(i=rt(i),a=rt(a)),!bt(n)&&vn(i)&&!vn(a)))return i.value=a,!0;const l=bt(n)&&Wp(r)?Number(r)t,ed=t=>Reflect.getPrototypeOf(t);function Lu(t,e,n=!1,r=!1){t=t.__v_raw;const a=rt(t),o=rt(e);n||(e!==o&&Xn(a,"get",e),Xn(a,"get",o));const{has:i}=ed(a),l=r?Xp:n?Jp:Ul;if(i.call(a,e))return l(t.get(e));if(i.call(a,o))return l(t.get(o));t!==a&&t.get(e)}function Bu(t,e=!1){const n=this.__v_raw,r=rt(n),a=rt(t);return e||(t!==a&&Xn(r,"has",t),Xn(r,"has",a)),t===a?n.has(t):n.has(t)||n.has(a)}function ju(t,e=!1){return t=t.__v_raw,!e&&Xn(rt(t),"iterate",wo),Reflect.get(t,"size",t)}function n1(t){t=rt(t);const e=rt(this);return ed(e).has.call(e,t)||(e.add(t),va(e,"add",t,t)),this}function r1(t,e){e=rt(e);const n=rt(this),{has:r,get:a}=ed(n);let o=r.call(n,t);o||(t=rt(t),o=r.call(n,t));const i=a.call(n,t);return n.set(t,e),o?Wl(e,i)&&va(n,"set",t,e):va(n,"add",t,e),this}function a1(t){const e=rt(this),{has:n,get:r}=ed(e);let a=n.call(e,t);a||(t=rt(t),a=n.call(e,t)),r&&r.call(e,t);const o=e.delete(t);return a&&va(e,"delete",t,void 0),o}function o1(){const t=rt(this),e=t.size!==0,n=t.clear();return e&&va(t,"clear",void 0,void 0),n}function Vu(t,e){return function(r,a){const o=this,i=o.__v_raw,l=rt(i),u=e?Xp:t?Jp:Ul;return!t&&Xn(l,"iterate",wo),i.forEach((s,d)=>r.call(a,u(s),u(d),o))}}function Ku(t,e,n){return function(...r){const a=this.__v_raw,o=rt(a),i=Sl(o),l=t==="entries"||t===Symbol.iterator&&i,u=t==="keys"&&i,s=a[t](...r),d=n?Xp:e?Jp:Ul;return!e&&Xn(o,"iterate",u?zv:wo),{next(){const{value:c,done:f}=s.next();return f?{value:c,done:f}:{value:l?[d(c[0]),d(c[1])]:d(c),done:f}},[Symbol.iterator](){return this}}}}function xa(t){return function(...e){return t==="delete"?!1:this}}function _T(){const t={get(o){return Lu(this,o)},get size(){return ju(this)},has:Bu,add:n1,set:r1,delete:a1,clear:o1,forEach:Vu(!1,!1)},e={get(o){return Lu(this,o,!1,!0)},get size(){return ju(this)},has:Bu,add:n1,set:r1,delete:a1,clear:o1,forEach:Vu(!1,!0)},n={get(o){return Lu(this,o,!0)},get size(){return ju(this,!0)},has(o){return Bu.call(this,o,!0)},add:xa("add"),set:xa("set"),delete:xa("delete"),clear:xa("clear"),forEach:Vu(!0,!1)},r={get(o){return Lu(this,o,!0,!0)},get size(){return ju(this,!0)},has(o){return Bu.call(this,o,!0)},add:xa("add"),set:xa("set"),delete:xa("delete"),clear:xa("clear"),forEach:Vu(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{t[o]=Ku(o,!1,!1),n[o]=Ku(o,!0,!1),e[o]=Ku(o,!1,!0),r[o]=Ku(o,!0,!0)}),[t,n,e,r]}const[NT,AT,$T,RT]=_T();function Qp(t,e){const n=e?t?RT:$T:t?AT:NT;return(r,a,o)=>a==="__v_isReactive"?!t:a==="__v_isReadonly"?t:a==="__v_raw"?r:Reflect.get(Tt(n,a)&&a in r?n:r,a,o)}const DT={get:Qp(!1,!1)},FT={get:Qp(!1,!0)},LT={get:Qp(!0,!1)},hS=new WeakMap,pS=new WeakMap,gS=new WeakMap,BT=new WeakMap;function jT(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function VT(t){return t.__v_skip||!Object.isExtensible(t)?0:jT(uT(t))}function xt(t){return Si(t)?t:Zp(t,!1,vS,DT,hS)}function KT(t){return Zp(t,!1,IT,FT,pS)}function mS(t){return Zp(t,!0,ET,LT,gS)}function Zp(t,e,n,r,a){if(!Gt(t)||t.__v_raw&&!(e&&t.__v_isReactive))return t;const o=a.get(t);if(o)return o;const i=VT(t);if(i===0)return t;const l=new Proxy(t,i===2?r:n);return a.set(t,l),l}function di(t){return Si(t)?di(t.__v_raw):!!(t&&t.__v_isReactive)}function Si(t){return!!(t&&t.__v_isReadonly)}function ic(t){return!!(t&&t.__v_isShallow)}function yS(t){return di(t)||Si(t)}function rt(t){const e=t&&t.__v_raw;return e?rt(e):t}function bS(t){return oc(t,"__v_skip",!0),t}const Ul=t=>Gt(t)?xt(t):t,Jp=t=>Gt(t)?mS(t):t;function CS(t){La&&gr&&(t=rt(t),cS(t.dep||(t.dep=Yp())))}function xS(t,e){t=rt(t),t.dep&&Wv(t.dep)}function vn(t){return!!(t&&t.__v_isRef===!0)}function Q(t){return wS(t,!1)}function dt(t){return wS(t,!0)}function wS(t,e){return vn(t)?t:new HT(t,e)}class HT{constructor(e,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?e:rt(e),this._value=n?e:Ul(e)}get value(){return CS(this),this._value}set value(e){const n=this.__v_isShallow||ic(e)||Si(e);e=n?e:rt(e),Wl(e,this._rawValue)&&(this._rawValue=e,this._value=n?e:Ul(e),xS(this))}}function tn(t){return vn(t)?t.value:t}const zT={get:(t,e,n)=>tn(Reflect.get(t,e,n)),set:(t,e,n,r)=>{const a=t[e];return vn(a)&&!vn(n)?(a.value=n,!0):Reflect.set(t,e,n,r)}};function SS(t){return di(t)?t:new Proxy(t,zT)}function So(t){const e=bt(t)?new Array(t.length):{};for(const n in t)e[n]=Ke(t,n);return e}class WT{constructor(e,n,r){this._object=e,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}}function Ke(t,e,n){const r=t[e];return vn(r)?r:new WT(t,e,n)}var PS;class UT{constructor(e,n,r,a){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[PS]=!1,this._dirty=!0,this.effect=new Gp(e,()=>{this._dirty||(this._dirty=!0,xS(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!a,this.__v_isReadonly=r}get value(){const e=rt(this);return CS(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}PS="__v_isReadonly";function YT(t,e,n=!1){let r,a;const o=St(t);return o?(r=t,a=br):(r=t.get,a=t.set),new UT(r,a,o||!a,n)}function Ba(t,e,n,r){let a;try{a=r?t(...r):t()}catch(o){td(o,e,n)}return a}function lr(t,e,n,r){if(St(t)){const o=Ba(t,e,n,r);return o&&iS(o)&&o.catch(i=>{td(i,e,n)}),o}const a=[];for(let o=0;o>>1;Gl(xn[r])Br&&xn.splice(e,1)}function QT(t){bt(t)?fi.push(...t):(!aa||!aa.includes(t,t.allowRecurse?co+1:co))&&fi.push(t),OS()}function i1(t,e=Yl?Br+1:0){for(;eGl(n)-Gl(r)),co=0;cot.id==null?1/0:t.id,ZT=(t,e)=>{const n=Gl(t)-Gl(e);if(n===0){if(t.pre&&!e.pre)return-1;if(e.pre&&!t.pre)return 1}return n};function MS(t){Uv=!1,Yl=!0,xn.sort(ZT);const e=br;try{for(Br=0;Brln(h)?h.trim():h)),c&&(a=n.map(Up))}let l,u=r[l=yf(e)]||r[l=yf(Ln(e))];!u&&o&&(u=r[l=yf(Li(e))]),u&&lr(u,t,6,a);const s=r[l+"Once"];if(s){if(!t.emitted)t.emitted={};else if(t.emitted[l])return;t.emitted[l]=!0,lr(s,t,6,a)}}function ES(t,e,n=!1){const r=e.emitsCache,a=r.get(t);if(a!==void 0)return a;const o=t.emits;let i={},l=!1;if(!St(t)){const u=s=>{const d=ES(s,e,!0);d&&(l=!0,pn(i,d))};!n&&e.mixins.length&&e.mixins.forEach(u),t.extends&&u(t.extends),t.mixins&&t.mixins.forEach(u)}return!o&&!l?(Gt(t)&&r.set(t,null),null):(bt(o)?o.forEach(u=>i[u]=null):pn(i,o),Gt(t)&&r.set(t,i),i)}function nd(t,e){return!t||!Xc(e)?!1:(e=e.slice(2).replace(/Once$/,""),Tt(t,e[0].toLowerCase()+e.slice(1))||Tt(t,Li(e))||Tt(t,e))}let mn=null,rd=null;function lc(t){const e=mn;return mn=t,rd=t&&t.type.__scopeId||null,e}function Rre(t){rd=t}function Dre(){rd=null}function pl(t,e=mn,n){if(!e||t._n)return t;const r=(...a)=>{r._d&&m1(-1);const o=lc(e);let i;try{i=t(...a)}finally{lc(o),r._d&&m1(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Cf(t){const{type:e,vnode:n,proxy:r,withProxy:a,props:o,propsOptions:[i],slots:l,attrs:u,emit:s,render:d,renderCache:c,data:f,setupState:h,ctx:p,inheritAttrs:g}=t;let y,b;const C=lc(t);try{if(n.shapeFlag&4){const w=a||r;y=Lr(d.call(w,w,c,o,h,f,p)),b=u}else{const w=e;y=Lr(w.length>1?w(o,{attrs:u,slots:l,emit:s}):w(o,null)),b=e.props?u:e5(u)}}catch(w){Tl.length=0,td(w,t,1),y=v(qn)}let x=y;if(b&&g!==!1){const w=Object.keys(b),{shapeFlag:P}=x;w.length&&P&7&&(i&&w.some(Kp)&&(b=t5(b,i)),x=Cn(x,b))}return n.dirs&&(x=Cn(x),x.dirs=x.dirs?x.dirs.concat(n.dirs):n.dirs),n.transition&&(x.transition=n.transition),y=x,lc(C),y}const e5=t=>{let e;for(const n in t)(n==="class"||n==="style"||Xc(n))&&((e||(e={}))[n]=t[n]);return e},t5=(t,e)=>{const n={};for(const r in t)(!Kp(r)||!(r.slice(9)in e))&&(n[r]=t[r]);return n};function n5(t,e,n){const{props:r,children:a,component:o}=t,{props:i,children:l,patchFlag:u}=e,s=o.emitsOptions;if(e.dirs||e.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return r?l1(r,i,s):!!i;if(u&8){const d=e.dynamicProps;for(let c=0;ct.__isSuspense;function o5(t,e){e&&e.pendingBranch?bt(t)?e.effects.push(...t):e.effects.push(t):QT(t)}function at(t,e){if(fn){let n=fn.provides;const r=fn.parent&&fn.parent.provides;r===n&&(n=fn.provides=Object.create(r)),n[t]=e}}function Ze(t,e,n=!1){const r=fn||mn;if(r){const a=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&t in a)return a[t];if(arguments.length>1)return n&&St(e)?e.call(r.proxy):e}}function Je(t,e){return ng(t,null,e)}const Hu={};function Se(t,e,n){return ng(t,e,n)}function ng(t,e,{immediate:n,deep:r,flush:a,onTrack:o,onTrigger:i}=Ht){const l=fn;let u,s=!1,d=!1;if(vn(t)?(u=()=>t.value,s=ic(t)):di(t)?(u=()=>t,r=!0):bt(t)?(d=!0,s=t.some(x=>di(x)||ic(x)),u=()=>t.map(x=>{if(vn(x))return x.value;if(di(x))return bo(x);if(St(x))return Ba(x,l,2)})):St(t)?e?u=()=>Ba(t,l,2):u=()=>{if(!(l&&l.isUnmounted))return c&&c(),lr(t,l,3,[f])}:u=br,e&&r){const x=u;u=()=>bo(x())}let c,f=x=>{c=b.onStop=()=>{Ba(x,l,4)}},h;if(Zl)if(f=br,e?n&&lr(e,l,3,[u(),d?[]:void 0,f]):u(),a==="sync"){const x=Q5();h=x.__watcherHandles||(x.__watcherHandles=[])}else return br;let p=d?new Array(t.length).fill(Hu):Hu;const g=()=>{if(b.active)if(e){const x=b.run();(r||s||(d?x.some((w,P)=>Wl(w,p[P])):Wl(x,p)))&&(c&&c(),lr(e,l,3,[x,p===Hu?void 0:d&&p[0]===Hu?[]:p,f]),p=x)}else b.run()};g.allowRecurse=!!e;let y;a==="sync"?y=g:a==="post"?y=()=>Rn(g,l&&l.suspense):(g.pre=!0,l&&(g.id=l.uid),y=()=>tg(g));const b=new Gp(u,y);e?n?g():p=b.run():a==="post"?Rn(b.run.bind(b),l&&l.suspense):b.run();const C=()=>{b.stop(),l&&l.scope&&Hp(l.scope.effects,b)};return h&&h.push(C),C}function i5(t,e,n){const r=this.proxy,a=ln(t)?t.includes(".")?IS(r,t):()=>r[t]:t.bind(r,r);let o;St(e)?o=e:(o=e.handler,n=e);const i=fn;Pi(this);const l=ng(a,o.bind(r),n);return i?Pi(i):Po(),l}function IS(t,e){const n=e.split(".");return()=>{let r=t;for(let a=0;a{bo(n,e)});else if(sT(t))for(const n in t)bo(t[n],e);return t}function _S(){const t={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ge(()=>{t.isMounted=!0}),ut(()=>{t.isUnmounting=!0}),t}const tr=[Function,Array],l5={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:tr,onEnter:tr,onAfterEnter:tr,onEnterCancelled:tr,onBeforeLeave:tr,onLeave:tr,onAfterLeave:tr,onLeaveCancelled:tr,onBeforeAppear:tr,onAppear:tr,onAfterAppear:tr,onAppearCancelled:tr},setup(t,{slots:e}){const n=sn(),r=_S();let a;return()=>{const o=e.default&&rg(e.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){for(const g of o)if(g.type!==qn){i=g;break}}const l=rt(t),{mode:u}=l;if(r.isLeaving)return xf(i);const s=u1(i);if(!s)return xf(i);const d=ql(s,l,r,n);Xl(s,d);const c=n.subTree,f=c&&u1(c);let h=!1;const{getTransitionKey:p}=s.type;if(p){const g=p();a===void 0?a=g:g!==a&&(a=g,h=!0)}if(f&&f.type!==qn&&(!fo(s,f)||h)){const g=ql(f,l,r,n);if(Xl(f,g),u==="out-in")return r.isLeaving=!0,g.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},xf(i);u==="in-out"&&s.type!==qn&&(g.delayLeave=(y,b,C)=>{const x=AS(r,f);x[String(f.key)]=f,y._leaveCb=()=>{b(),y._leaveCb=void 0,delete d.delayedLeave},d.delayedLeave=C})}return i}}},NS=l5;function AS(t,e){const{leavingVNodes:n}=t;let r=n.get(e.type);return r||(r=Object.create(null),n.set(e.type,r)),r}function ql(t,e,n,r){const{appear:a,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:s,onEnterCancelled:d,onBeforeLeave:c,onLeave:f,onAfterLeave:h,onLeaveCancelled:p,onBeforeAppear:g,onAppear:y,onAfterAppear:b,onAppearCancelled:C}=e,x=String(t.key),w=AS(n,t),P=(T,O)=>{T&&lr(T,r,9,O)},S=(T,O)=>{const D=O[1];P(T,O),bt(T)?T.every(L=>L.length<=1)&&D():T.length<=1&&D()},k={mode:o,persisted:i,beforeEnter(T){let O=l;if(!n.isMounted)if(a)O=g||l;else return;T._leaveCb&&T._leaveCb(!0);const D=w[x];D&&fo(t,D)&&D.el._leaveCb&&D.el._leaveCb(),P(O,[T])},enter(T){let O=u,D=s,L=d;if(!n.isMounted)if(a)O=y||u,D=b||s,L=C||d;else return;let N=!1;const M=T._enterCb=E=>{N||(N=!0,E?P(L,[T]):P(D,[T]),k.delayedLeave&&k.delayedLeave(),T._enterCb=void 0)};O?S(O,[T,M]):M()},leave(T,O){const D=String(t.key);if(T._enterCb&&T._enterCb(!0),n.isUnmounting)return O();P(c,[T]);let L=!1;const N=T._leaveCb=M=>{L||(L=!0,O(),M?P(p,[T]):P(h,[T]),T._leaveCb=void 0,w[D]===t&&delete w[D])};w[D]=t,f?S(f,[T,N]):N()},clone(T){return ql(T,e,n,r)}};return k}function xf(t){if(ad(t))return t=Cn(t),t.children=null,t}function u1(t){return ad(t)?t.children?t.children[0]:void 0:t}function Xl(t,e){t.shapeFlag&6&&t.component?Xl(t.component.subTree,e):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function rg(t,e=!1,n){let r=[],a=0;for(let o=0;o1)for(let o=0;o!!t.type.__asyncLoader,ad=t=>t.type.__isKeepAlive;function od(t,e){RS(t,"a",e)}function $S(t,e){RS(t,"da",e)}function RS(t,e,n=fn){const r=t.__wdc||(t.__wdc=()=>{let a=n;for(;a;){if(a.isDeactivated)return;a=a.parent}return t()});if(id(e,r,n),n){let a=n.parent;for(;a&&a.parent;)ad(a.parent.vnode)&&u5(r,e,n,a),a=a.parent}}function u5(t,e,n,r){const a=id(e,t,r,!0);_n(()=>{Hp(r[e],a)},n)}function id(t,e,n=fn,r=!1){if(n){const a=n[t]||(n[t]=[]),o=e.__weh||(e.__weh=(...i)=>{if(n.isUnmounted)return;Bi(),Pi(n);const l=lr(e,n,t,i);return Po(),ji(),l});return r?a.unshift(o):a.push(o),o}}const pa=t=>(e,n=fn)=>(!Zl||t==="sp")&&id(t,(...r)=>e(...r),n),ld=pa("bm"),Ge=pa("m"),ag=pa("bu"),wn=pa("u"),ut=pa("bum"),_n=pa("um"),s5=pa("sp"),c5=pa("rtg"),d5=pa("rtc");function f5(t,e=fn){id("ec",t,e)}function gn(t,e){const n=mn;if(n===null)return t;const r=sd(n)||n.proxy,a=t.dirs||(t.dirs=[]);for(let o=0;oe(i,l,void 0,o&&o[l]));else{const i=Object.keys(t);a=new Array(i.length);for(let l=0,u=i.length;lhn(e)?!(e.type===qn||e.type===et&&!LS(e.children)):!0)?t:null}const Yv=t=>t?QS(t)?sd(t)||t.proxy:Yv(t.parent):null,kl=pn(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Yv(t.parent),$root:t=>Yv(t.root),$emit:t=>t.emit,$options:t=>ig(t),$forceUpdate:t=>t.f||(t.f=()=>tg(t.update)),$nextTick:t=>t.n||(t.n=nt.bind(t.proxy)),$watch:t=>i5.bind(t)}),Sf=(t,e)=>t!==Ht&&!t.__isScriptSetup&&Tt(t,e),g5={get({_:t},e){const{ctx:n,setupState:r,data:a,props:o,accessCache:i,type:l,appContext:u}=t;let s;if(e[0]!=="$"){const h=i[e];if(h!==void 0)switch(h){case 1:return r[e];case 2:return a[e];case 4:return n[e];case 3:return o[e]}else{if(Sf(r,e))return i[e]=1,r[e];if(a!==Ht&&Tt(a,e))return i[e]=2,a[e];if((s=t.propsOptions[0])&&Tt(s,e))return i[e]=3,o[e];if(n!==Ht&&Tt(n,e))return i[e]=4,n[e];Gv&&(i[e]=0)}}const d=kl[e];let c,f;if(d)return e==="$attrs"&&Xn(t,"get",e),d(t);if((c=l.__cssModules)&&(c=c[e]))return c;if(n!==Ht&&Tt(n,e))return i[e]=4,n[e];if(f=u.config.globalProperties,Tt(f,e))return f[e]},set({_:t},e,n){const{data:r,setupState:a,ctx:o}=t;return Sf(a,e)?(a[e]=n,!0):r!==Ht&&Tt(r,e)?(r[e]=n,!0):Tt(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(o[e]=n,!0)},has({_:{data:t,setupState:e,accessCache:n,ctx:r,appContext:a,propsOptions:o}},i){let l;return!!n[i]||t!==Ht&&Tt(t,i)||Sf(e,i)||(l=o[0])&&Tt(l,i)||Tt(r,i)||Tt(kl,i)||Tt(a.config.globalProperties,i)},defineProperty(t,e,n){return n.get!=null?t._.accessCache[e]=0:Tt(n,"value")&&this.set(t,e,n.value,null),Reflect.defineProperty(t,e,n)}};let Gv=!0;function m5(t){const e=ig(t),n=t.proxy,r=t.ctx;Gv=!1,e.beforeCreate&&c1(e.beforeCreate,t,"bc");const{data:a,computed:o,methods:i,watch:l,provide:u,inject:s,created:d,beforeMount:c,mounted:f,beforeUpdate:h,updated:p,activated:g,deactivated:y,beforeDestroy:b,beforeUnmount:C,destroyed:x,unmounted:w,render:P,renderTracked:S,renderTriggered:k,errorCaptured:T,serverPrefetch:O,expose:D,inheritAttrs:L,components:N,directives:M,filters:E}=e;if(s&&y5(s,r,null,t.appContext.config.unwrapInjectedRef),i)for(const I in i){const _=i[I];St(_)&&(r[I]=_.bind(n))}if(a){const I=a.call(n,n);Gt(I)&&(t.data=xt(I))}if(Gv=!0,o)for(const I in o){const _=o[I],R=St(_)?_.bind(n,n):St(_.get)?_.get.bind(n,n):br,z=!St(_)&&St(_.set)?_.set.bind(n):br,V=B({get:R,set:z});Object.defineProperty(r,I,{enumerable:!0,configurable:!0,get:()=>V.value,set:q=>V.value=q})}if(l)for(const I in l)BS(l[I],r,n,I);if(u){const I=St(u)?u.call(n):u;Reflect.ownKeys(I).forEach(_=>{at(_,I[_])})}d&&c1(d,t,"c");function A(I,_){bt(_)?_.forEach(R=>I(R.bind(n))):_&&I(_.bind(n))}if(A(ld,c),A(Ge,f),A(ag,h),A(wn,p),A(od,g),A($S,y),A(f5,T),A(d5,S),A(c5,k),A(ut,C),A(_n,w),A(s5,O),bt(D))if(D.length){const I=t.exposed||(t.exposed={});D.forEach(_=>{Object.defineProperty(I,_,{get:()=>n[_],set:R=>n[_]=R})})}else t.exposed||(t.exposed={});P&&t.render===br&&(t.render=P),L!=null&&(t.inheritAttrs=L),N&&(t.components=N),M&&(t.directives=M)}function y5(t,e,n=br,r=!1){bt(t)&&(t=qv(t));for(const a in t){const o=t[a];let i;Gt(o)?"default"in o?i=Ze(o.from||a,o.default,!0):i=Ze(o.from||a):i=Ze(o),vn(i)&&r?Object.defineProperty(e,a,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):e[a]=i}}function c1(t,e,n){lr(bt(t)?t.map(r=>r.bind(e.proxy)):t.bind(e.proxy),e,n)}function BS(t,e,n,r){const a=r.includes(".")?IS(n,r):()=>n[r];if(ln(t)){const o=e[t];St(o)&&Se(a,o)}else if(St(t))Se(a,t.bind(n));else if(Gt(t))if(bt(t))t.forEach(o=>BS(o,e,n,r));else{const o=St(t.handler)?t.handler.bind(n):e[t.handler];St(o)&&Se(a,o,t)}}function ig(t){const e=t.type,{mixins:n,extends:r}=e,{mixins:a,optionsCache:o,config:{optionMergeStrategies:i}}=t.appContext,l=o.get(e);let u;return l?u=l:!a.length&&!n&&!r?u=e:(u={},a.length&&a.forEach(s=>uc(u,s,i,!0)),uc(u,e,i)),Gt(e)&&o.set(e,u),u}function uc(t,e,n,r=!1){const{mixins:a,extends:o}=e;o&&uc(t,o,n,!0),a&&a.forEach(i=>uc(t,i,n,!0));for(const i in e)if(!(r&&i==="expose")){const l=b5[i]||n&&n[i];t[i]=l?l(t[i],e[i]):e[i]}return t}const b5={data:d1,props:lo,emits:lo,methods:lo,computed:lo,beforeCreate:kn,created:kn,beforeMount:kn,mounted:kn,beforeUpdate:kn,updated:kn,beforeDestroy:kn,beforeUnmount:kn,destroyed:kn,unmounted:kn,activated:kn,deactivated:kn,errorCaptured:kn,serverPrefetch:kn,components:lo,directives:lo,watch:x5,provide:d1,inject:C5};function d1(t,e){return e?t?function(){return pn(St(t)?t.call(this,this):t,St(e)?e.call(this,this):e)}:e:t}function C5(t,e){return lo(qv(t),qv(e))}function qv(t){if(bt(t)){const e={};for(let n=0;n0)&&!(i&16)){if(i&8){const d=t.vnode.dynamicProps;for(let c=0;c{u=!0;const[f,h]=VS(c,e,!0);pn(i,f),h&&l.push(...h)};!n&&e.mixins.length&&e.mixins.forEach(d),t.extends&&d(t.extends),t.mixins&&t.mixins.forEach(d)}if(!o&&!u)return Gt(t)&&r.set(t,ci),ci;if(bt(o))for(let d=0;d-1,h[1]=g<0||p-1||Tt(h,"default"))&&l.push(c)}}}const s=[i,l];return Gt(t)&&r.set(t,s),s}function f1(t){return t[0]!=="$"}function v1(t){const e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:t===null?"null":""}function h1(t,e){return v1(t)===v1(e)}function p1(t,e){return bt(e)?e.findIndex(n=>h1(n,t)):St(e)&&h1(e,t)?0:-1}const KS=t=>t[0]==="_"||t==="$stable",lg=t=>bt(t)?t.map(Lr):[Lr(t)],P5=(t,e,n)=>{if(e._n)return e;const r=pl((...a)=>lg(e(...a)),n);return r._c=!1,r},HS=(t,e,n)=>{const r=t._ctx;for(const a in t){if(KS(a))continue;const o=t[a];if(St(o))e[a]=P5(a,o,r);else if(o!=null){const i=lg(o);e[a]=()=>i}}},zS=(t,e)=>{const n=lg(e);t.slots.default=()=>n},k5=(t,e)=>{if(t.vnode.shapeFlag&32){const n=e._;n?(t.slots=rt(e),oc(e,"_",n)):HS(e,t.slots={})}else t.slots={},e&&zS(t,e);oc(t.slots,ud,1)},O5=(t,e,n)=>{const{vnode:r,slots:a}=t;let o=!0,i=Ht;if(r.shapeFlag&32){const l=e._;l?n&&l===1?o=!1:(pn(a,e),!n&&l===1&&delete a._):(o=!e.$stable,HS(e,a)),i=e}else e&&(zS(t,e),i={default:1});if(o)for(const l in a)!KS(l)&&!(l in i)&&delete a[l]};function WS(){return{app:null,config:{isNativeTag:rT,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let T5=0;function M5(t,e){return function(r,a=null){St(r)||(r=Object.assign({},r)),a!=null&&!Gt(a)&&(a=null);const o=WS(),i=new Set;let l=!1;const u=o.app={_uid:T5++,_component:r,_props:a,_container:null,_context:o,_instance:null,version:Z5,get config(){return o.config},set config(s){},use(s,...d){return i.has(s)||(s&&St(s.install)?(i.add(s),s.install(u,...d)):St(s)&&(i.add(s),s(u,...d))),u},mixin(s){return o.mixins.includes(s)||o.mixins.push(s),u},component(s,d){return d?(o.components[s]=d,u):o.components[s]},directive(s,d){return d?(o.directives[s]=d,u):o.directives[s]},mount(s,d,c){if(!l){const f=v(r,a);return f.appContext=o,d&&e?e(f,s):t(f,s,c),l=!0,u._container=s,s.__vue_app__=u,sd(f.component)||f.component.proxy}},unmount(){l&&(t(null,u._container),delete u._container.__vue_app__)},provide(s,d){return o.provides[s]=d,u}};return u}}function Qv(t,e,n,r,a=!1){if(bt(t)){t.forEach((f,h)=>Qv(f,e&&(bt(e)?e[h]:e),n,r,a));return}if(Pl(r)&&!a)return;const o=r.shapeFlag&4?sd(r.component)||r.component.proxy:r.el,i=a?null:o,{i:l,r:u}=t,s=e&&e.r,d=l.refs===Ht?l.refs={}:l.refs,c=l.setupState;if(s!=null&&s!==u&&(ln(s)?(d[s]=null,Tt(c,s)&&(c[s]=null)):vn(s)&&(s.value=null)),St(u))Ba(u,l,12,[i,d]);else{const f=ln(u),h=vn(u);if(f||h){const p=()=>{if(t.f){const g=f?Tt(c,u)?c[u]:d[u]:u.value;a?bt(g)&&Hp(g,o):bt(g)?g.includes(o)||g.push(o):f?(d[u]=[o],Tt(c,u)&&(c[u]=d[u])):(u.value=[o],t.k&&(d[t.k]=u.value))}else f?(d[u]=i,Tt(c,u)&&(c[u]=i)):h&&(u.value=i,t.k&&(d[t.k]=i))};i?(p.id=-1,Rn(p,n)):p()}}}const Rn=o5;function E5(t){return I5(t)}function I5(t,e){const n=fT();n.__VUE__=!0;const{insert:r,remove:a,patchProp:o,createElement:i,createText:l,createComment:u,setText:s,setElementText:d,parentNode:c,nextSibling:f,setScopeId:h=br,insertStaticContent:p}=t,g=(U,K,Z,re=null,ae=null,se=null,me=!1,ue=null,oe=!!K.dynamicChildren)=>{if(U===K)return;U&&!fo(U,K)&&(re=G(U),q(U,ae,se,!0),U=null),K.patchFlag===-2&&(oe=!1,K.dynamicChildren=null);const{type:te,ref:de,shapeFlag:ve}=K;switch(te){case Wa:y(U,K,Z,re);break;case qn:b(U,K,Z,re);break;case Pf:U==null&&C(K,Z,re,me);break;case et:N(U,K,Z,re,ae,se,me,ue,oe);break;default:ve&1?P(U,K,Z,re,ae,se,me,ue,oe):ve&6?M(U,K,Z,re,ae,se,me,ue,oe):(ve&64||ve&128)&&te.process(U,K,Z,re,ae,se,me,ue,oe,ee)}de!=null&&ae&&Qv(de,U&&U.ref,se,K||U,!K)},y=(U,K,Z,re)=>{if(U==null)r(K.el=l(K.children),Z,re);else{const ae=K.el=U.el;K.children!==U.children&&s(ae,K.children)}},b=(U,K,Z,re)=>{U==null?r(K.el=u(K.children||""),Z,re):K.el=U.el},C=(U,K,Z,re)=>{[U.el,U.anchor]=p(U.children,K,Z,re,U.el,U.anchor)},x=({el:U,anchor:K},Z,re)=>{let ae;for(;U&&U!==K;)ae=f(U),r(U,Z,re),U=ae;r(K,Z,re)},w=({el:U,anchor:K})=>{let Z;for(;U&&U!==K;)Z=f(U),a(U),U=Z;a(K)},P=(U,K,Z,re,ae,se,me,ue,oe)=>{me=me||K.type==="svg",U==null?S(K,Z,re,ae,se,me,ue,oe):O(U,K,ae,se,me,ue,oe)},S=(U,K,Z,re,ae,se,me,ue)=>{let oe,te;const{type:de,props:ve,shapeFlag:be,transition:Pe,dirs:Ae}=U;if(oe=U.el=i(U.type,se,ve&&ve.is,ve),be&8?d(oe,U.children):be&16&&T(U.children,oe,null,re,ae,se&&de!=="foreignObject",me,ue),Ae&&Za(U,null,re,"created"),ve){for(const we in ve)we!=="value"&&!Ss(we)&&o(oe,we,null,ve[we],se,U.children,re,ae,W);"value"in ve&&o(oe,"value",null,ve.value),(te=ve.onVnodeBeforeMount)&&$r(te,re,U)}k(oe,U,U.scopeId,me,re),Ae&&Za(U,null,re,"beforeMount");const De=(!ae||ae&&!ae.pendingBranch)&&Pe&&!Pe.persisted;De&&Pe.beforeEnter(oe),r(oe,K,Z),((te=ve&&ve.onVnodeMounted)||De||Ae)&&Rn(()=>{te&&$r(te,re,U),De&&Pe.enter(oe),Ae&&Za(U,null,re,"mounted")},ae)},k=(U,K,Z,re,ae)=>{if(Z&&h(U,Z),re)for(let se=0;se{for(let te=oe;te{const ue=K.el=U.el;let{patchFlag:oe,dynamicChildren:te,dirs:de}=K;oe|=U.patchFlag&16;const ve=U.props||Ht,be=K.props||Ht;let Pe;Z&&Ja(Z,!1),(Pe=be.onVnodeBeforeUpdate)&&$r(Pe,Z,K,U),de&&Za(K,U,Z,"beforeUpdate"),Z&&Ja(Z,!0);const Ae=ae&&K.type!=="foreignObject";if(te?D(U.dynamicChildren,te,ue,Z,re,Ae,se):me||_(U,K,ue,null,Z,re,Ae,se,!1),oe>0){if(oe&16)L(ue,K,ve,be,Z,re,ae);else if(oe&2&&ve.class!==be.class&&o(ue,"class",null,be.class,ae),oe&4&&o(ue,"style",ve.style,be.style,ae),oe&8){const De=K.dynamicProps;for(let we=0;we{Pe&&$r(Pe,Z,K,U),de&&Za(K,U,Z,"updated")},re)},D=(U,K,Z,re,ae,se,me)=>{for(let ue=0;ue{if(Z!==re){if(Z!==Ht)for(const ue in Z)!Ss(ue)&&!(ue in re)&&o(U,ue,Z[ue],null,me,K.children,ae,se,W);for(const ue in re){if(Ss(ue))continue;const oe=re[ue],te=Z[ue];oe!==te&&ue!=="value"&&o(U,ue,te,oe,me,K.children,ae,se,W)}"value"in re&&o(U,"value",Z.value,re.value)}},N=(U,K,Z,re,ae,se,me,ue,oe)=>{const te=K.el=U?U.el:l(""),de=K.anchor=U?U.anchor:l("");let{patchFlag:ve,dynamicChildren:be,slotScopeIds:Pe}=K;Pe&&(ue=ue?ue.concat(Pe):Pe),U==null?(r(te,Z,re),r(de,Z,re),T(K.children,Z,de,ae,se,me,ue,oe)):ve>0&&ve&64&&be&&U.dynamicChildren?(D(U.dynamicChildren,be,Z,ae,se,me,ue),(K.key!=null||ae&&K===ae.subTree)&&ug(U,K,!0)):_(U,K,Z,de,ae,se,me,ue,oe)},M=(U,K,Z,re,ae,se,me,ue,oe)=>{K.slotScopeIds=ue,U==null?K.shapeFlag&512?ae.ctx.activate(K,Z,re,me,oe):E(K,Z,re,ae,se,me,oe):$(U,K,oe)},E=(U,K,Z,re,ae,se,me)=>{const ue=U.component=K5(U,re,ae);if(ad(U)&&(ue.ctx.renderer=ee),H5(ue),ue.asyncDep){if(ae&&ae.registerDep(ue,A),!U.el){const oe=ue.subTree=v(qn);b(null,oe,K,Z)}return}A(ue,U,K,Z,ae,se,me)},$=(U,K,Z)=>{const re=K.component=U.component;if(n5(U,K,Z))if(re.asyncDep&&!re.asyncResolved){I(re,K,Z);return}else re.next=K,XT(re.update),re.update();else K.el=U.el,re.vnode=K},A=(U,K,Z,re,ae,se,me)=>{const ue=()=>{if(U.isMounted){let{next:de,bu:ve,u:be,parent:Pe,vnode:Ae}=U,De=de,we;Ja(U,!1),de?(de.el=Ae.el,I(U,de,me)):de=Ae,ve&&bf(ve),(we=de.props&&de.props.onVnodeBeforeUpdate)&&$r(we,Pe,de,Ae),Ja(U,!0);const he=Cf(U),Oe=U.subTree;U.subTree=he,g(Oe,he,c(Oe.el),G(Oe),U,ae,se),de.el=he.el,De===null&&r5(U,he.el),be&&Rn(be,ae),(we=de.props&&de.props.onVnodeUpdated)&&Rn(()=>$r(we,Pe,de,Ae),ae)}else{let de;const{el:ve,props:be}=K,{bm:Pe,m:Ae,parent:De}=U,we=Pl(K);if(Ja(U,!1),Pe&&bf(Pe),!we&&(de=be&&be.onVnodeBeforeMount)&&$r(de,De,K),Ja(U,!0),ve&&ne){const he=()=>{U.subTree=Cf(U),ne(ve,U.subTree,U,ae,null)};we?K.type.__asyncLoader().then(()=>!U.isUnmounted&&he()):he()}else{const he=U.subTree=Cf(U);g(null,he,Z,re,U,ae,se),K.el=he.el}if(Ae&&Rn(Ae,ae),!we&&(de=be&&be.onVnodeMounted)){const he=K;Rn(()=>$r(de,De,he),ae)}(K.shapeFlag&256||De&&Pl(De.vnode)&&De.vnode.shapeFlag&256)&&U.a&&Rn(U.a,ae),U.isMounted=!0,K=Z=re=null}},oe=U.effect=new Gp(ue,()=>tg(te),U.scope),te=U.update=()=>oe.run();te.id=U.uid,Ja(U,!0),te()},I=(U,K,Z)=>{K.component=U;const re=U.vnode.props;U.vnode=K,U.next=null,S5(U,K.props,re,Z),O5(U,K.children,Z),Bi(),i1(),ji()},_=(U,K,Z,re,ae,se,me,ue,oe=!1)=>{const te=U&&U.children,de=U?U.shapeFlag:0,ve=K.children,{patchFlag:be,shapeFlag:Pe}=K;if(be>0){if(be&128){z(te,ve,Z,re,ae,se,me,ue,oe);return}else if(be&256){R(te,ve,Z,re,ae,se,me,ue,oe);return}}Pe&8?(de&16&&W(te,ae,se),ve!==te&&d(Z,ve)):de&16?Pe&16?z(te,ve,Z,re,ae,se,me,ue,oe):W(te,ae,se,!0):(de&8&&d(Z,""),Pe&16&&T(ve,Z,re,ae,se,me,ue,oe))},R=(U,K,Z,re,ae,se,me,ue,oe)=>{U=U||ci,K=K||ci;const te=U.length,de=K.length,ve=Math.min(te,de);let be;for(be=0;bede?W(U,ae,se,!0,!1,ve):T(K,Z,re,ae,se,me,ue,oe,ve)},z=(U,K,Z,re,ae,se,me,ue,oe)=>{let te=0;const de=K.length;let ve=U.length-1,be=de-1;for(;te<=ve&&te<=be;){const Pe=U[te],Ae=K[te]=oe?Ea(K[te]):Lr(K[te]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,ae,se,me,ue,oe);else break;te++}for(;te<=ve&&te<=be;){const Pe=U[ve],Ae=K[be]=oe?Ea(K[be]):Lr(K[be]);if(fo(Pe,Ae))g(Pe,Ae,Z,null,ae,se,me,ue,oe);else break;ve--,be--}if(te>ve){if(te<=be){const Pe=be+1,Ae=Pebe)for(;te<=ve;)q(U[te],ae,se,!0),te++;else{const Pe=te,Ae=te,De=new Map;for(te=Ae;te<=be;te++){const ge=K[te]=oe?Ea(K[te]):Lr(K[te]);ge.key!=null&&De.set(ge.key,te)}let we,he=0;const Oe=be-Ae+1;let Ee=!1,Ce=0;const fe=new Array(Oe);for(te=0;te=Oe){q(ge,ae,se,!0);continue}let ke;if(ge.key!=null)ke=De.get(ge.key);else for(we=Ae;we<=be;we++)if(fe[we-Ae]===0&&fo(ge,K[we])){ke=we;break}ke===void 0?q(ge,ae,se,!0):(fe[ke-Ae]=te+1,ke>=Ce?Ce=ke:Ee=!0,g(ge,K[ke],Z,null,ae,se,me,ue,oe),he++)}const pe=Ee?_5(fe):ci;for(we=pe.length-1,te=Oe-1;te>=0;te--){const ge=Ae+te,ke=K[ge],Ie=ge+1{const{el:se,type:me,transition:ue,children:oe,shapeFlag:te}=U;if(te&6){V(U.component.subTree,K,Z,re);return}if(te&128){U.suspense.move(K,Z,re);return}if(te&64){me.move(U,K,Z,ee);return}if(me===et){r(se,K,Z);for(let ve=0;veue.enter(se),ae);else{const{leave:ve,delayLeave:be,afterLeave:Pe}=ue,Ae=()=>r(se,K,Z),De=()=>{ve(se,()=>{Ae(),Pe&&Pe()})};be?be(se,Ae,De):De()}else r(se,K,Z)},q=(U,K,Z,re=!1,ae=!1)=>{const{type:se,props:me,ref:ue,children:oe,dynamicChildren:te,shapeFlag:de,patchFlag:ve,dirs:be}=U;if(ue!=null&&Qv(ue,null,Z,U,!0),de&256){K.ctx.deactivate(U);return}const Pe=de&1&&be,Ae=!Pl(U);let De;if(Ae&&(De=me&&me.onVnodeBeforeUnmount)&&$r(De,K,U),de&6)j(U.component,Z,re);else{if(de&128){U.suspense.unmount(Z,re);return}Pe&&Za(U,null,K,"beforeUnmount"),de&64?U.type.remove(U,K,Z,ae,ee,re):te&&(se!==et||ve>0&&ve&64)?W(te,K,Z,!1,!0):(se===et&&ve&384||!ae&&de&16)&&W(oe,K,Z),re&&X(U)}(Ae&&(De=me&&me.onVnodeUnmounted)||Pe)&&Rn(()=>{De&&$r(De,K,U),Pe&&Za(U,null,K,"unmounted")},Z)},X=U=>{const{type:K,el:Z,anchor:re,transition:ae}=U;if(K===et){H(Z,re);return}if(K===Pf){w(U);return}const se=()=>{a(Z),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(U.shapeFlag&1&&ae&&!ae.persisted){const{leave:me,delayLeave:ue}=ae,oe=()=>me(Z,se);ue?ue(U.el,se,oe):oe()}else se()},H=(U,K)=>{let Z;for(;U!==K;)Z=f(U),a(U),U=Z;a(K)},j=(U,K,Z)=>{const{bum:re,scope:ae,update:se,subTree:me,um:ue}=U;re&&bf(re),ae.stop(),se&&(se.active=!1,q(me,U,K,Z)),ue&&Rn(ue,K),Rn(()=>{U.isUnmounted=!0},K),K&&K.pendingBranch&&!K.isUnmounted&&U.asyncDep&&!U.asyncResolved&&U.suspenseId===K.pendingId&&(K.deps--,K.deps===0&&K.resolve())},W=(U,K,Z,re=!1,ae=!1,se=0)=>{for(let me=se;meU.shapeFlag&6?G(U.component.subTree):U.shapeFlag&128?U.suspense.next():f(U.anchor||U.el),J=(U,K,Z)=>{U==null?K._vnode&&q(K._vnode,null,null,!0):g(K._vnode||null,U,K,null,null,null,Z),i1(),TS(),K._vnode=U},ee={p:g,um:q,m:V,r:X,mt:E,mc:T,pc:_,pbc:D,n:G,o:t};let le,ne;return e&&([le,ne]=e(ee)),{render:J,hydrate:le,createApp:M5(J,le)}}function Ja({effect:t,update:e},n){t.allowRecurse=e.allowRecurse=n}function ug(t,e,n=!1){const r=t.children,a=e.children;if(bt(r)&&bt(a))for(let o=0;o>1,t[n[l]]0&&(e[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=e[i];return n}const N5=t=>t.__isTeleport,Ol=t=>t&&(t.disabled||t.disabled===""),g1=t=>typeof SVGElement<"u"&&t instanceof SVGElement,Zv=(t,e)=>{const n=t&&t.to;return ln(n)?e?e(n):null:n},A5={__isTeleport:!0,process(t,e,n,r,a,o,i,l,u,s){const{mc:d,pc:c,pbc:f,o:{insert:h,querySelector:p,createText:g,createComment:y}}=s,b=Ol(e.props);let{shapeFlag:C,children:x,dynamicChildren:w}=e;if(t==null){const P=e.el=g(""),S=e.anchor=g("");h(P,n,r),h(S,n,r);const k=e.target=Zv(e.props,p),T=e.targetAnchor=g("");k&&(h(T,k),i=i||g1(k));const O=(D,L)=>{C&16&&d(x,D,L,a,o,i,l,u)};b?O(n,S):k&&O(k,T)}else{e.el=t.el;const P=e.anchor=t.anchor,S=e.target=t.target,k=e.targetAnchor=t.targetAnchor,T=Ol(t.props),O=T?n:S,D=T?P:k;if(i=i||g1(S),w?(f(t.dynamicChildren,w,O,a,o,i,l),ug(t,e,!0)):u||c(t,e,O,D,a,o,i,l,!1),b)T||zu(e,n,P,s,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const L=e.target=Zv(e.props,p);L&&zu(e,L,null,s,0)}else T&&zu(e,S,k,s,1)}US(e)},remove(t,e,n,r,{um:a,o:{remove:o}},i){const{shapeFlag:l,children:u,anchor:s,targetAnchor:d,target:c,props:f}=t;if(c&&o(d),(i||!Ol(f))&&(o(s),l&16))for(let h=0;h0?yr||ci:null,R5(),Ql>0&&yr&&yr.push(t),t}function D5(t,e,n,r,a,o){return YS(XS(t,e,n,r,a,o,!0))}function GS(t,e,n,r,a){return YS(v(t,e,n,r,a,!0))}function hn(t){return t?t.__v_isVNode===!0:!1}function fo(t,e){return t.type===e.type&&t.key===e.key}const ud="__vInternal",qS=({key:t})=>t??null,Ps=({ref:t,ref_key:e,ref_for:n})=>t!=null?ln(t)||vn(t)||St(t)?{i:mn,r:t,k:e,f:!!n}:t:null;function XS(t,e=null,n=null,r=0,a=null,o=t===et?0:1,i=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&qS(e),ref:e&&Ps(e),scopeId:rd,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:mn};return l?(dg(u,n),o&128&&t.normalize(u)):n&&(u.shapeFlag|=ln(n)?8:16),Ql>0&&!i&&yr&&(u.patchFlag>0||o&6)&&u.patchFlag!==32&&yr.push(u),u}const v=F5;function F5(t,e=null,n=null,r=0,a=null,o=!1){if((!t||t===h5)&&(t=qn),hn(t)){const l=Cn(t,e,!0);return n&&dg(l,n),Ql>0&&!o&&yr&&(l.shapeFlag&6?yr[yr.indexOf(t)]=l:yr.push(l)),l.patchFlag|=-2,l}if(Y5(t)&&(t=t.__vccOpts),e){e=L5(e);let{class:l,style:u}=e;l&&!ln(l)&&(e.class=Vp(l)),Gt(u)&&(yS(u)&&!bt(u)&&(u=pn({},u)),e.style=jp(u))}const i=ln(t)?1:a5(t)?128:N5(t)?64:Gt(t)?4:St(t)?2:0;return XS(t,e,n,r,a,i,o,!0)}function L5(t){return t?yS(t)||ud in t?pn({},t):t:null}function Cn(t,e,n=!1){const{props:r,ref:a,patchFlag:o,children:i}=t,l=e?B5(r||{},e):r;return{__v_isVNode:!0,__v_skip:!0,type:t.type,props:l,key:l&&qS(l),ref:e&&e.ref?n&&a?bt(a)?a.concat(Ps(e)):[a,Ps(e)]:Ps(e):a,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:i,target:t.target,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==et?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:t.transition,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Cn(t.ssContent),ssFallback:t.ssFallback&&Cn(t.ssFallback),el:t.el,anchor:t.anchor,ctx:t.ctx}}function In(t=" ",e=0){return v(Wa,null,t,e)}function Lre(t="",e=!1){return e?(cg(),GS(qn,null,t)):v(qn,null,t)}function Lr(t){return t==null||typeof t=="boolean"?v(qn):bt(t)?v(et,null,t.slice()):typeof t=="object"?Ea(t):v(Wa,null,String(t))}function Ea(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Cn(t)}function dg(t,e){let n=0;const{shapeFlag:r}=t;if(e==null)e=null;else if(bt(e))n=16;else if(typeof e=="object")if(r&65){const a=e.default;a&&(a._c&&(a._d=!1),dg(t,a()),a._c&&(a._d=!0));return}else{n=32;const a=e._;!a&&!(ud in e)?e._ctx=mn:a===3&&mn&&(mn.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else St(e)?(e={default:e,_ctx:mn},n=32):(e=String(e),r&64?(n=16,e=[In(e)]):n=8);t.children=e,t.shapeFlag|=n}function B5(...t){const e={};for(let n=0;nfn||mn,Pi=t=>{fn=t,t.scope.on()},Po=()=>{fn&&fn.scope.off(),fn=null};function QS(t){return t.vnode.shapeFlag&4}let Zl=!1;function H5(t,e=!1){Zl=e;const{props:n,children:r}=t.vnode,a=QS(t);w5(t,n,a,e),k5(t,r);const o=a?z5(t,e):void 0;return Zl=!1,o}function z5(t,e){const n=t.type;t.accessCache=Object.create(null),t.proxy=bS(new Proxy(t.ctx,g5));const{setup:r}=n;if(r){const a=t.setupContext=r.length>1?JS(t):null;Pi(t),Bi();const o=Ba(r,t,0,[t.props,a]);if(ji(),Po(),iS(o)){if(o.then(Po,Po),e)return o.then(i=>{y1(t,i,e)}).catch(i=>{td(i,t,0)});t.asyncDep=o}else y1(t,o,e)}else ZS(t,e)}function y1(t,e,n){St(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:Gt(e)&&(t.setupState=SS(e)),ZS(t,n)}let b1;function ZS(t,e,n){const r=t.type;if(!t.render){if(!e&&b1&&!r.render){const a=r.template||ig(t).template;if(a){const{isCustomElement:o,compilerOptions:i}=t.appContext.config,{delimiters:l,compilerOptions:u}=r,s=pn(pn({isCustomElement:o,delimiters:l},i),u);r.render=b1(a,s)}}t.render=r.render||br}Pi(t),Bi(),m5(t),ji(),Po()}function W5(t){return new Proxy(t.attrs,{get(e,n){return Xn(t,"get","$attrs"),e[n]}})}function JS(t){const e=r=>{t.exposed=r||{}};let n;return{get attrs(){return n||(n=W5(t))},slots:t.slots,emit:t.emit,expose:e}}function sd(t){if(t.exposed)return t.exposeProxy||(t.exposeProxy=new Proxy(SS(bS(t.exposed)),{get(e,n){if(n in e)return e[n];if(n in kl)return kl[n](t)},has(e,n){return n in e||n in kl}}))}function U5(t,e=!0){return St(t)?t.displayName||t.name:t.name||e&&t.__name}function Y5(t){return St(t)&&"__vccOpts"in t}const B=(t,e)=>YT(t,e,Zl);function G5(){return q5().attrs}function q5(){const t=sn();return t.setupContext||(t.setupContext=JS(t))}function Jl(t,e,n){const r=arguments.length;return r===2?Gt(e)&&!bt(e)?hn(e)?v(t,null,[e]):v(t,e):v(t,null,e):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&hn(n)&&(n=[n]),v(t,e,n))}const X5=Symbol(""),Q5=()=>Ze(X5),Z5="3.2.45",J5="http://www.w3.org/2000/svg",vo=typeof document<"u"?document:null,C1=vo&&vo.createElement("template"),e7={insert:(t,e,n)=>{e.insertBefore(t,n||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,n,r)=>{const a=e?vo.createElementNS(J5,t):vo.createElement(t,n?{is:n}:void 0);return t==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:t=>vo.createTextNode(t),createComment:t=>vo.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>vo.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,n,r,a,o){const i=n?n.previousSibling:e.lastChild;if(a&&(a===o||a.nextSibling))for(;e.insertBefore(a.cloneNode(!0),n),!(a===o||!(a=a.nextSibling)););else{C1.innerHTML=r?`${t}`:t;const l=C1.content;if(r){const u=l.firstChild;for(;u.firstChild;)l.appendChild(u.firstChild);l.removeChild(u)}e.insertBefore(l,n)}return[i?i.nextSibling:e.firstChild,n?n.previousSibling:e.lastChild]}};function t7(t,e,n){const r=t._vtc;r&&(e=(e?[e,...r]:[...r]).join(" ")),e==null?t.removeAttribute("class"):n?t.setAttribute("class",e):t.className=e}function n7(t,e,n){const r=t.style,a=ln(n);if(n&&!a){for(const o in n)Jv(r,o,n[o]);if(e&&!ln(e))for(const o in e)n[o]==null&&Jv(r,o,"")}else{const o=r.display;a?e!==n&&(r.cssText=n):e&&t.removeAttribute("style"),"_vod"in t&&(r.display=o)}}const x1=/\s*!important$/;function Jv(t,e,n){if(bt(n))n.forEach(r=>Jv(t,e,r));else if(n==null&&(n=""),e.startsWith("--"))t.setProperty(e,n);else{const r=r7(t,e);x1.test(n)?t.setProperty(Li(r),n.replace(x1,""),"important"):t[r]=n}}const w1=["Webkit","Moz","ms"],kf={};function r7(t,e){const n=kf[e];if(n)return n;let r=Ln(e);if(r!=="filter"&&r in t)return kf[e]=r;r=Jc(r);for(let a=0;aOf||(c7.then(()=>Of=0),Of=Date.now());function f7(t,e){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;lr(v7(r,n.value),e,5,[r])};return n.value=t,n.attached=d7(),n}function v7(t,e){if(bt(e)){const n=t.stopImmediatePropagation;return t.stopImmediatePropagation=()=>{n.call(t),t._stopped=!0},e.map(r=>a=>!a._stopped&&r&&r(a))}else return e}const k1=/^on[a-z]/,h7=(t,e,n,r,a=!1,o,i,l,u)=>{e==="class"?t7(t,r,a):e==="style"?n7(t,n,r):Xc(e)?Kp(e)||u7(t,e,n,r,i):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):p7(t,e,r,a))?o7(t,e,r,o,i,l,u):(e==="true-value"?t._trueValue=r:e==="false-value"&&(t._falseValue=r),a7(t,e,r,a))};function p7(t,e,n,r){return r?!!(e==="innerHTML"||e==="textContent"||e in t&&k1.test(e)&&St(n)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA"||k1.test(e)&&ln(n)?!1:e in t}const wa="transition",nl="animation",Nn=(t,{slots:e})=>Jl(NS,t3(t),e);Nn.displayName="Transition";const e3={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},g7=Nn.props=pn({},NS.props,e3),eo=(t,e=[])=>{bt(t)?t.forEach(n=>n(...e)):t&&t(...e)},O1=t=>t?bt(t)?t.some(e=>e.length>1):t.length>1:!1;function t3(t){const e={};for(const N in t)N in e3||(e[N]=t[N]);if(t.css===!1)return e;const{name:n="v",type:r,duration:a,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=o,appearActiveClass:s=i,appearToClass:d=l,leaveFromClass:c=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=t,p=m7(a),g=p&&p[0],y=p&&p[1],{onBeforeEnter:b,onEnter:C,onEnterCancelled:x,onLeave:w,onLeaveCancelled:P,onBeforeAppear:S=b,onAppear:k=C,onAppearCancelled:T=x}=e,O=(N,M,E)=>{Oa(N,M?d:l),Oa(N,M?s:i),E&&E()},D=(N,M)=>{N._isLeaving=!1,Oa(N,c),Oa(N,h),Oa(N,f),M&&M()},L=N=>(M,E)=>{const $=N?k:C,A=()=>O(M,N,E);eo($,[M,A]),T1(()=>{Oa(M,N?u:o),na(M,N?d:l),O1($)||M1(M,r,g,A)})};return pn(e,{onBeforeEnter(N){eo(b,[N]),na(N,o),na(N,i)},onBeforeAppear(N){eo(S,[N]),na(N,u),na(N,s)},onEnter:L(!1),onAppear:L(!0),onLeave(N,M){N._isLeaving=!0;const E=()=>D(N,M);na(N,c),r3(),na(N,f),T1(()=>{N._isLeaving&&(Oa(N,c),na(N,h),O1(w)||M1(N,r,y,E))}),eo(w,[N,E])},onEnterCancelled(N){O(N,!1),eo(x,[N])},onAppearCancelled(N){O(N,!0),eo(T,[N])},onLeaveCancelled(N){D(N),eo(P,[N])}})}function m7(t){if(t==null)return null;if(Gt(t))return[Tf(t.enter),Tf(t.leave)];{const e=Tf(t);return[e,e]}}function Tf(t){return Up(t)}function na(t,e){e.split(/\s+/).forEach(n=>n&&t.classList.add(n)),(t._vtc||(t._vtc=new Set)).add(e)}function Oa(t,e){e.split(/\s+/).forEach(r=>r&&t.classList.remove(r));const{_vtc:n}=t;n&&(n.delete(e),n.size||(t._vtc=void 0))}function T1(t){requestAnimationFrame(()=>{requestAnimationFrame(t)})}let y7=0;function M1(t,e,n,r){const a=t._endId=++y7,o=()=>{a===t._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:u}=n3(t,e);if(!i)return r();const s=i+"end";let d=0;const c=()=>{t.removeEventListener(s,f),o()},f=h=>{h.target===t&&++d>=u&&c()};setTimeout(()=>{d(n[p]||"").split(", "),a=r(`${wa}Delay`),o=r(`${wa}Duration`),i=E1(a,o),l=r(`${nl}Delay`),u=r(`${nl}Duration`),s=E1(l,u);let d=null,c=0,f=0;e===wa?i>0&&(d=wa,c=i,f=o.length):e===nl?s>0&&(d=nl,c=s,f=u.length):(c=Math.max(i,s),d=c>0?i>s?wa:nl:null,f=d?d===wa?o.length:u.length:0);const h=d===wa&&/\b(transform|all)(,|$)/.test(r(`${wa}Property`).toString());return{type:d,timeout:c,propCount:f,hasTransform:h}}function E1(t,e){for(;t.lengthI1(n)+I1(t[r])))}function I1(t){return Number(t.slice(0,-1).replace(",","."))*1e3}function r3(){return document.body.offsetHeight}const a3=new WeakMap,o3=new WeakMap,b7={name:"TransitionGroup",props:pn({},g7,{tag:String,moveClass:String}),setup(t,{slots:e}){const n=sn(),r=_S();let a,o;return wn(()=>{if(!a.length)return;const i=t.moveClass||`${t.name||"v"}-move`;if(!S7(a[0].el,n.vnode.el,i))return;a.forEach(C7),a.forEach(x7);const l=a.filter(w7);r3(),l.forEach(u=>{const s=u.el,d=s.style;na(s,i),d.transform=d.webkitTransform=d.transitionDuration="";const c=s._moveCb=f=>{f&&f.target!==s||(!f||/transform$/.test(f.propertyName))&&(s.removeEventListener("transitionend",c),s._moveCb=null,Oa(s,i))};s.addEventListener("transitionend",c)})}),()=>{const i=rt(t),l=t3(i);let u=i.tag||et;a=o,o=e.default?rg(e.default()):[];for(let s=0;s{i.split(/\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display="none";const a=e.nodeType===1?e:e.parentNode;a.appendChild(r);const{hasTransform:o}=n3(r);return a.removeChild(r),o}const P7=["ctrl","shift","alt","meta"],k7={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>P7.some(n=>t[`${n}Key`]&&!e.includes(n))},_1=(t,e)=>(n,...r)=>{for(let a=0;a{rl(t,!1)}):rl(t,e))},beforeUnmount(t,{value:e}){rl(t,e)}};function rl(t,e){t.style.display=e?t._vod:"none"}const O7=pn({patchProp:h7},e7);let N1;function i3(){return N1||(N1=E5(O7))}const sc=(...t)=>{i3().render(...t)},l3=(...t)=>{const e=i3().createApp(...t),{mount:n}=e;return e.mount=r=>{const a=T7(r);if(!a)return;const o=e._component;!St(o)&&!o.render&&!o.template&&(o.template=a.innerHTML),a.innerHTML="";const i=n(a,!1,a instanceof SVGElement);return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),i},e};function T7(t){return ln(t)?document.querySelector(t):t}function Fe(t){return Fe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(t)}function M7(t,e){if(Fe(t)!=="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e||"default");if(Fe(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function u3(t){var e=M7(t,"string");return Fe(e)==="symbol"?e:String(e)}function F(t,e,n){return e=u3(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function A1(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,r)}return n}function m(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return typeof t=="function"?t(e):t??n}function ce(){for(var t=[],e=0;e0},t.prototype.connect_=function(){!eh||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),U7?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){!eh||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(e){var n=e.propertyName,r=n===void 0?"":n,a=W7.some(function(o){return!!~r.indexOf(o)});a&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),d3=function(t,e){for(var n=0,r=Object.keys(e);n"u"||!(Element instanceof Object))){if(!(e instanceof ki(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)||(n.set(e,new tM(e)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if(!(typeof Element>"u"||!(Element instanceof Object))){if(!(e instanceof ki(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var n=this.observations_;n.has(e)&&(n.delete(e),n.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(n){n.isActive()&&e.activeObservations_.push(n)})},t.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,n=this.activeObservations_.map(function(r){return new nM(r.target,r.broadcastRect())});this.callback_.call(e,n,e),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),v3=typeof WeakMap<"u"?new WeakMap:new c3,h3=function(){function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=Y7.getInstance(),r=new rM(e,n,this);v3.set(this,r)}return t}();["observe","unobserve","disconnect"].forEach(function(t){h3.prototype[t]=function(){var e;return(e=v3.get(this))[t].apply(e,arguments)}});var aM=function(){return typeof cc.ResizeObserver<"u"?cc.ResizeObserver:h3}();const hg=aM;function p3(t){if(Array.isArray(t))return t}function oM(t,e){var n=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(n!=null){var r,a,o,i,l=[],u=!0,s=!1;try{if(o=(n=n.call(t)).next,e===0){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(l.push(r.value),l.length!==e);u=!0);}catch(d){s=!0,a=d}finally{try{if(!u&&n.return!=null&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}function th(t,e){(e==null||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n0&&arguments[0]!==void 0?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0,r={},a=/;(?![^(]*\))/g,o=/:(.+)/;return Fe(e)==="object"?e:(e.split(a).forEach(function(i){if(i){var l=i.split(o);if(l.length>1){var u=n?vg(l[0].trim()):l[0].trim();r[u]=l[1].trim()}}}),r)},la=function(e,n){return e[n]!==void 0},Mt=function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=Array.isArray(e)?e:[e],a=[];return r.forEach(function(o){Array.isArray(o)?a.push.apply(a,_e(t(o,n))):o&&o.type===et?a.push.apply(a,_e(t(o.children,n))):o&&hn(o)?n&&!bu(o)?a.push(o):n||a.push(o):nh(o)&&a.push(o)}),a},yu=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(hn(e))return e.type===et?n==="default"?Mt(e.children):[]:e.children&&e.children[n]?Mt(e.children[n](r)):[];var a=e.$slots[n]&&e.$slots[n](r);return Mt(a)},$a=function(e){for(var n,r=(e==null||(n=e.vnode)===null||n===void 0?void 0:n.el)||e&&(e.$el||e);r&&!r.tagName;)r=r.nextSibling;return r},w3=function(e){var n={};if(e.$&&e.$.vnode){var r=e.$.vnode.props||{};Object.keys(e.$props).forEach(function(l){var u=e.$props[l],s=F7(l);(u!==void 0||s in r)&&(n[l]=u)})}else if(hn(e)&&Fe(e.type)==="object"){var a=e.props||{},o={};Object.keys(a).forEach(function(l){o[vg(l)]=a[l]});var i=e.type.props||{};Object.keys(i).forEach(function(l){var u=B7(i,o,l,o[l]);(u!==void 0||l in o)&&(n[l]=u)})}return n},bg=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,o=void 0;if(e.$){var i=e[n];if(i!==void 0)return typeof i=="function"&&a?i(r):i;o=e.$slots[n],o=a&&o?o(r):o}else if(hn(e)){var l=e.props&&e.props[n];if(l!==void 0&&e.props!==null)return typeof l=="function"&&a?l(r):l;e.type===et?o=e.children:e.children&&e.children[n]&&(o=e.children[n],o=a&&o?o(r):o)}return Array.isArray(o)&&(o=Mt(o),o=o.length===1?o[0]:o,o=o.length===0?void 0:o),o};function F1(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n={};return t.$?n=m(m({},n),t.$attrs):n=m(m({},n),t.props),mg(n)[e?"onEvents":"events"]}function MM(t){var e=(hn(t)?t.props:t.$attrs)||{},n=e.class||{},r={};return typeof n=="string"?n.split(" ").forEach(function(a){r[a.trim()]=!0}):Array.isArray(n)?ce(n).split(" ").forEach(function(a){r[a.trim()]=!0}):r=m(m({},r),n),r}function S3(t,e){var n=(hn(t)?t.props:t.$attrs)||{},r=n.style||{};if(typeof r=="string")r=yg(r,e);else if(e&&r){var a={};return Object.keys(r).forEach(function(o){return a[vg(o)]=r[o]}),a}return r}function EM(t){return t==null||t===""||Array.isArray(t)&&t.length===0}function bu(t){return t&&(t.type===qn||t.type===et&&t.children.length===0||t.type===Wa&&t.children.trim()==="")}function IM(t){return t&&t.type===Wa}function qt(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],e=[];return t.forEach(function(n){Array.isArray(n)?e.push.apply(e,_e(n)):(n==null?void 0:n.type)===et?e.push.apply(e,_e(qt(n.children))):e.push(n)}),e.filter(function(n){return!bu(n)})}function ol(t){if(t){var e=qt(t);return e.length?e:void 0}else return t}function Jt(t){return Array.isArray(t)&&t.length===1&&(t=t[0]),t&&t.__v_isVNode&&Fe(t.type)!=="symbol"}function At(t,e){var n,r,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"default";return(n=e[a])!==null&&n!==void 0?n:(r=t[a])===null||r===void 0?void 0:r.call(t)}const dr=ie({compatConfig:{MODE:3},name:"ResizeObserver",props:{disabled:Boolean,onResize:Function},emits:["resize"],setup:function(e,n){var r=n.slots,a=xt({width:0,height:0,offsetHeight:0,offsetWidth:0}),o=null,i=null,l=function(){i&&(i.disconnect(),i=null)},u=function(f){var h=e.onResize,p=f[0].target,g=p.getBoundingClientRect(),y=g.width,b=g.height,C=p.offsetWidth,x=p.offsetHeight,w=Math.floor(y),P=Math.floor(b);if(a.width!==w||a.height!==P||a.offsetWidth!==C||a.offsetHeight!==x){var S={width:w,height:P,offsetWidth:C,offsetHeight:x};pt(a,S),h&&Promise.resolve().then(function(){h(m(m({},S),{},{offsetWidth:C,offsetHeight:x}),p)})}},s=sn(),d=function(){var f=e.disabled;if(f){l();return}var h=$a(s),p=h!==o;p&&(l(),o=h),!i&&h&&(i=new hg(u),i.observe(h))};return Ge(function(){d()}),wn(function(){d()}),_n(function(){l()}),Se(function(){return e.disabled},function(){d()},{flush:"post"}),function(){var c;return(c=r.default)===null||c===void 0?void 0:c.call(r)[0]}}});var P3=function(e){return setTimeout(e,16)},k3=function(e){return clearTimeout(e)};typeof window<"u"&&"requestAnimationFrame"in window&&(P3=function(e){return window.requestAnimationFrame(e)},k3=function(e){return window.cancelAnimationFrame(e)});var L1=0,Cg=new Map;function O3(t){Cg.delete(t)}function Qe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;L1+=1;var n=L1;function r(a){if(a===0)O3(n),t();else{var o=P3(function(){r(a-1)});Cg.set(n,o)}}return r(e),n}Qe.cancel=function(t){var e=Cg.get(t);return O3(e),k3(e)};function rh(t){var e,n=function(o){return function(){e=null,t.apply(void 0,_e(o))}},r=function(){if(e==null){for(var o=arguments.length,i=new Array(o),l=0;lt.top-n)return"".concat(n+e.top,"px")}function V1(t,e,n){if(n!==void 0&&e.bottom=0)&&(n[a]=t[a]);return n}function He(t,e){if(t==null)return{};var n=NM(t,e),r,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}const E3={items_per_page:"/ page",jump_to:"Go to",jump_to_confirm:"confirm",page:"",prev_page:"Previous Page",next_page:"Next Page",prev_5:"Previous 5 Pages",next_5:"Next 5 Pages",prev_3:"Previous 3 Pages",next_3:"Next 3 Pages"};var AM={locale:"en_US",today:"Today",now:"Now",backToToday:"Back to today",ok:"Ok",clear:"Clear",month:"Month",year:"Year",timeSelect:"select time",dateSelect:"select date",weekSelect:"Choose a week",monthSelect:"Choose a month",yearSelect:"Choose a year",decadeSelect:"Choose a decade",yearFormat:"YYYY",dateFormat:"M/D/YYYY",dayFormat:"D",dateTimeFormat:"M/D/YYYY HH:mm:ss",monthBeforeYear:!0,previousMonth:"Previous month (PageUp)",nextMonth:"Next month (PageDown)",previousYear:"Last year (Control + left)",nextYear:"Next year (Control + right)",previousDecade:"Last decade",nextDecade:"Next decade",previousCentury:"Last century",nextCentury:"Next century"};const $M=AM;var RM={placeholder:"Select time",rangePlaceholder:["Start time","End time"]};const I3=RM;var DM={lang:m({placeholder:"Select date",yearPlaceholder:"Select year",quarterPlaceholder:"Select quarter",monthPlaceholder:"Select month",weekPlaceholder:"Select week",rangePlaceholder:["Start date","End date"],rangeYearPlaceholder:["Start year","End year"],rangeQuarterPlaceholder:["Start quarter","End quarter"],rangeMonthPlaceholder:["Start month","End month"],rangeWeekPlaceholder:["Start week","End week"]},$M),timePickerLocale:m({},I3)};const eu=DM;var Kn="${label} is not a valid ${type}",FM={locale:"en",Pagination:E3,DatePicker:eu,TimePicker:I3,Calendar:eu,global:{placeholder:"Please select"},Table:{filterTitle:"Filter menu",filterConfirm:"OK",filterReset:"Reset",filterEmptyText:"No filters",filterCheckall:"Select all items",filterSearchPlaceholder:"Search in filters",emptyText:"No data",selectAll:"Select current page",selectInvert:"Invert current page",selectNone:"Clear all data",selectionAll:"Select all data",sortTitle:"Sort",expand:"Expand row",collapse:"Collapse row",triggerDesc:"Click to sort descending",triggerAsc:"Click to sort ascending",cancelSort:"Click to cancel sorting"},Modal:{okText:"OK",cancelText:"Cancel",justOkText:"OK"},Popconfirm:{okText:"OK",cancelText:"Cancel"},Transfer:{titles:["",""],searchPlaceholder:"Search here",itemUnit:"item",itemsUnit:"items",remove:"Remove",selectCurrent:"Select current page",removeCurrent:"Remove current page",selectAll:"Select all data",removeAll:"Remove all data",selectInvert:"Invert current page"},Upload:{uploading:"Uploading...",removeFile:"Remove file",uploadError:"Upload error",previewFile:"Preview file",downloadFile:"Download file"},Empty:{description:"No Data"},Icon:{icon:"icon"},Text:{edit:"Edit",copy:"Copy",copied:"Copied",expand:"Expand"},PageHeader:{back:"Back"},Form:{optional:"(optional)",defaultValidateMessages:{default:"Field validation error for ${label}",required:"Please enter ${label}",enum:"${label} must be one of [${enum}]",whitespace:"${label} cannot be a blank character",date:{format:"${label} date format is invalid",parse:"${label} cannot be converted to a date",invalid:"${label} is an invalid date"},types:{string:Kn,method:Kn,array:Kn,object:Kn,number:Kn,date:Kn,boolean:Kn,integer:Kn,float:Kn,regexp:Kn,email:Kn,url:Kn,hex:Kn},string:{len:"${label} must be ${len} characters",min:"${label} must be at least ${min} characters",max:"${label} must be up to ${max} characters",range:"${label} must be between ${min}-${max} characters"},number:{len:"${label} must be equal to ${len}",min:"${label} must be minimum ${min}",max:"${label} must be maximum ${max}",range:"${label} must be between ${min}-${max}"},array:{len:"Must be ${len} ${label}",min:"At least ${min} ${label}",max:"At most ${max} ${label}",range:"The amount of ${label} must be between ${min}-${max}"},pattern:{mismatch:"${label} does not match the pattern ${pattern}"}}},Image:{preview:"Preview"}};const wr=FM,Vi=ie({compatConfig:{MODE:3},name:"LocaleReceiver",props:{componentName:String,defaultLocale:{type:[Object,Function]},children:{type:Function}},setup:function(e,n){var r=n.slots,a=Ze("localeData",{}),o=B(function(){var l=e.componentName,u=l===void 0?"global":l,s=e.defaultLocale,d=s||wr[u||"global"],c=a.antLocale,f=u&&c?c[u]:{};return m(m({},typeof d=="function"?d():d),f||{})}),i=B(function(){var l=a.antLocale,u=l&&l.locale;return l&&l.exist&&!u?wr.locale:u});return function(){var l=e.children||r.default,u=a.antLocale;return l==null?void 0:l(o.value,i.value,u)}}});function zr(t,e,n){var r=Ze("localeData",{}),a=B(function(){var o=r.antLocale,i=tn(e)||wr[t||"global"],l=t&&o?o[t]:{};return m(m(m({},typeof i=="function"?i():i),l||{}),tn(n)||{})});return[a]}var _3=function(){var e=Re("empty",{}),n=e.getPrefixCls,r=n("empty-img-default");return v("svg",{class:r,width:"184",height:"152",viewBox:"0 0 184 152"},[v("g",{fill:"none","fill-rule":"evenodd"},[v("g",{transform:"translate(24 31.67)"},[v("ellipse",{class:"".concat(r,"-ellipse"),cx:"67.797",cy:"106.89",rx:"67.797",ry:"12.668"},null),v("path",{class:"".concat(r,"-path-1"),d:"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z"},null),v("path",{class:"".concat(r,"-path-2"),d:"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z",transform:"translate(13.56)"},null),v("path",{class:"".concat(r,"-path-3"),d:"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"},null),v("path",{class:"".concat(r,"-path-4"),d:"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z"},null)]),v("path",{class:"".concat(r,"-path-5"),d:"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z"},null),v("g",{class:"".concat(r,"-g"),transform:"translate(149.65 15.383)"},[v("ellipse",{cx:"20.654",cy:"3.167",rx:"2.849",ry:"2.815"},null),v("path",{d:"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z"},null)])])])};_3.PRESENTED_IMAGE_DEFAULT=!0;const LM=_3;var N3=function(){var e=Re("empty",{}),n=e.getPrefixCls,r=n("empty-img-simple");return v("svg",{class:r,width:"64",height:"41",viewBox:"0 0 64 41"},[v("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[v("ellipse",{class:"".concat(r,"-ellipse"),fill:"#F5F5F5",cx:"32",cy:"33",rx:"32",ry:"7"},null),v("g",{class:"".concat(r,"-g"),"fill-rule":"nonzero",stroke:"#D9D9D9"},[v("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"},null),v("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",fill:"#FAFAFA",class:"".concat(r,"-path")},null)])])])};N3.PRESENTED_IMAGE_SIMPLE=!0;const BM=N3;function z1(t,e){for(var n=0;n=0||(a[n]=t[n]);return a}function W1(t){return((e=t)!=null&&typeof e=="object"&&Array.isArray(e)===!1)==1&&Object.prototype.toString.call(t)==="[object Object]";var e}var D3=Object.prototype,F3=D3.toString,jM=D3.hasOwnProperty,L3=/^\s*function (\w+)/;function U1(t){var e,n=(e=t==null?void 0:t.type)!==null&&e!==void 0?e:t;if(n){var r=n.toString().match(L3);return r?r[1]:""}return""}var Io=function(t){var e,n;return W1(t)!==!1&&typeof(e=t.constructor)=="function"&&W1(n=e.prototype)!==!1&&n.hasOwnProperty("isPrototypeOf")!==!1},VM=function(t){return t},Mn=VM,tu=function(t,e){return jM.call(t,e)},KM=Number.isInteger||function(t){return typeof t=="number"&&isFinite(t)&&Math.floor(t)===t},Oi=Array.isArray||function(t){return F3.call(t)==="[object Array]"},Ti=function(t){return F3.call(t)==="[object Function]"},fc=function(t){return Io(t)&&tu(t,"_vueTypes_name")},B3=function(t){return Io(t)&&(tu(t,"type")||["_vueTypes_name","validator","default","required"].some(function(e){return tu(t,e)}))};function xg(t,e){return Object.defineProperty(t.bind(e),"__original",{value:t})}function Ro(t,e,n){var r;n===void 0&&(n=!1);var a=!0,o="";r=Io(t)?t:{type:t};var i=fc(r)?r._vueTypes_name+" - ":"";if(B3(r)&&r.type!==null){if(r.type===void 0||r.type===!0||!r.required&&e===void 0)return a;Oi(r.type)?(a=r.type.some(function(c){return Ro(c,e,!0)===!0}),o=r.type.map(function(c){return U1(c)}).join(" or ")):a=(o=U1(r))==="Array"?Oi(e):o==="Object"?Io(e):o==="String"||o==="Number"||o==="Boolean"||o==="Function"?function(c){if(c==null)return"";var f=c.constructor.toString().match(L3);return f?f[1]:""}(e)===o:e instanceof r.type}if(!a){var l=i+'value "'+e+'" should be of type "'+o+'"';return n===!1?(Mn(l),!1):l}if(tu(r,"validator")&&Ti(r.validator)){var u=Mn,s=[];if(Mn=function(c){s.push(c)},a=r.validator(e),Mn=u,!a){var d=(s.length>1?"* ":"")+s.join(` +* `);return s.length=0,n===!1?(Mn(d),a):d}}return a}function Qn(t,e){var n=Object.defineProperties(e,{_vueTypes_name:{value:t,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(a){return a!==void 0||this.default?Ti(a)||Ro(this,a,!0)===!0?(this.default=Oi(a)?function(){return[].concat(a)}:Io(a)?function(){return Object.assign({},a)}:a,this):(Mn(this._vueTypes_name+' - invalid default value: "'+a+'"'),this):this}}}),r=n.validator;return Ti(r)&&(n.validator=xg(r,n)),n}function Hr(t,e){var n=Qn(t,e);return Object.defineProperty(n,"validate",{value:function(r){return Ti(this.validator)&&Mn(this._vueTypes_name+` - calling .validate() will overwrite the current custom validator function. Validator info: +`+JSON.stringify(this)),this.validator=xg(r,this),this}})}function Y1(t,e,n){var r,a,o=(r=e,a={},Object.getOwnPropertyNames(r).forEach(function(c){a[c]=Object.getOwnPropertyDescriptor(r,c)}),Object.defineProperties({},a));if(o._vueTypes_name=t,!Io(n))return o;var i,l,u=n.validator,s=R3(n,["validator"]);if(Ti(u)){var d=o.validator;d&&(d=(l=(i=d).__original)!==null&&l!==void 0?l:i),o.validator=xg(d?function(c){return d.call(this,c)&&u.call(this,c)}:u,o)}return Object.assign(o,s)}function fd(t){return t.replace(/^(?!\s*$)/gm," ")}var HM=function(){return Hr("any",{})},zM=function(){return Hr("function",{type:Function})},WM=function(){return Hr("boolean",{type:Boolean})},UM=function(){return Hr("string",{type:String})},YM=function(){return Hr("number",{type:Number})},GM=function(){return Hr("array",{type:Array})},qM=function(){return Hr("object",{type:Object})},XM=function(){return Qn("integer",{type:Number,validator:function(t){return KM(t)}})},QM=function(){return Qn("symbol",{validator:function(t){return typeof t=="symbol"}})};function ZM(t,e){if(e===void 0&&(e="custom validation failed"),typeof t!="function")throw new TypeError("[VueTypes error]: You must provide a function as argument");return Qn(t.name||"<>",{validator:function(n){var r=t(n);return r||Mn(this._vueTypes_name+" - "+e),r}})}function JM(t){if(!Oi(t))throw new TypeError("[VueTypes error]: You must provide an array as argument.");var e='oneOf - value should be one of "'+t.join('", "')+'".',n=t.reduce(function(r,a){if(a!=null){var o=a.constructor;r.indexOf(o)===-1&&r.push(o)}return r},[]);return Qn("oneOf",{type:n.length>0?n:void 0,validator:function(r){var a=t.indexOf(r)!==-1;return a||Mn(e),a}})}function eE(t){if(!Oi(t))throw new TypeError("[VueTypes error]: You must provide an array as argument");for(var e=!1,n=[],r=0;r0&&n.some(function(u){return i.indexOf(u)===-1})){var l=n.filter(function(u){return i.indexOf(u)===-1});return Mn(l.length===1?'shape - required property "'+l[0]+'" is not defined.':'shape - required properties "'+l.join('", "')+'" are not defined.'),!1}return i.every(function(u){if(e.indexOf(u)===-1)return o._vueTypes_isLoose===!0||(Mn('shape - shape definition does not include a "'+u+'" property. Allowed keys: "'+e.join('", "')+'".'),!1);var s=Ro(t[u],a[u],!0);return typeof s=="string"&&Mn('shape - "'+u+`" property validation error: + `+fd(s)),s===!0})}});return Object.defineProperty(r,"_vueTypes_isLoose",{writable:!0,value:!1}),Object.defineProperty(r,"loose",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var Rr=function(){function t(){}return t.extend=function(e){var n=this;if(Oi(e))return e.forEach(function(c){return n.extend(c)}),this;var r=e.name,a=e.validate,o=a!==void 0&&a,i=e.getter,l=i!==void 0&&i,u=R3(e,["name","validate","getter"]);if(tu(this,r))throw new TypeError('[VueTypes error]: Type "'+r+'" already defined');var s,d=u.type;return fc(d)?(delete u.type,Object.defineProperty(this,r,l?{get:function(){return Y1(r,d,u)}}:{value:function(){var c,f=Y1(r,d,u);return f.validator&&(f.validator=(c=f.validator).bind.apply(c,[f].concat([].slice.call(arguments)))),f}})):(s=l?{get:function(){var c=Object.assign({},u);return o?Hr(r,c):Qn(r,c)},enumerable:!0}:{value:function(){var c,f,h=Object.assign({},u);return c=o?Hr(r,h):Qn(r,h),h.validator&&(c.validator=(f=h.validator).bind.apply(f,[c].concat([].slice.call(arguments)))),c},enumerable:!0},Object.defineProperty(this,r,s))},A3(t,null,[{key:"any",get:function(){return HM()}},{key:"func",get:function(){return zM().def(this.defaults.func)}},{key:"bool",get:function(){return WM().def(this.defaults.bool)}},{key:"string",get:function(){return UM().def(this.defaults.string)}},{key:"number",get:function(){return YM().def(this.defaults.number)}},{key:"array",get:function(){return GM().def(this.defaults.array)}},{key:"object",get:function(){return qM().def(this.defaults.object)}},{key:"integer",get:function(){return XM().def(this.defaults.integer)}},{key:"symbol",get:function(){return QM()}}]),t}();function j3(t){var e;return t===void 0&&(t={func:function(){},bool:!0,string:"",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(e=function(n){function r(){return n.apply(this,arguments)||this}return $3(r,n),A3(r,null,[{key:"sensibleDefaults",get:function(){return ks({},this.defaults)},set:function(a){this.defaults=a!==!1?ks({},a!==!0?a:t):{}}}]),r}(Rr)).defaults=ks({},t),e}Rr.defaults={},Rr.custom=ZM,Rr.oneOf=JM,Rr.instanceOf=nE,Rr.oneOfType=eE,Rr.arrayOf=tE,Rr.objectOf=rE,Rr.shape=aE,Rr.utils={validate:function(t,e){return Ro(e,t,!0)===!0},toType:function(t,e,n){return n===void 0&&(n=!1),n?Hr(t,e):Qn(t,e)}};(function(t){function e(){return t.apply(this,arguments)||this}return $3(e,t),e})(j3());var V3=j3({func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0});V3.extend([{name:"looseBool",getter:!0,type:Boolean,default:void 0},{name:"style",getter:!0,type:[String,Object],default:void 0},{name:"VueNode",getter:!0,type:null}]);function K3(t){return t.default=void 0,t}const Y=V3;var oE=["image","description","imageStyle","class"],H3=v(LM,null,null),z3=v(BM,null,null),Ki=function(e,n){var r,a=n.slots,o=a===void 0?{}:a,i=n.attrs,l=Re("empty",e),u=l.direction,s=l.prefixCls,d=s.value,c=m(m({},e),i),f=c.image,h=f===void 0?H3:f,p=c.description,g=p===void 0?((r=o.description)===null||r===void 0?void 0:r.call(o))||void 0:p,y=c.imageStyle,b=c.class,C=b===void 0?"":b,x=He(c,oE);return v(Vi,{componentName:"Empty",children:function(P){var S,k=typeof g<"u"?g:P.description,T=typeof k=="string"?k:"empty",O=null;return typeof h=="string"?O=v("img",{alt:T,src:h},null):O=h,v("div",m({class:ce(d,C,(S={},F(S,"".concat(d,"-normal"),h===z3),F(S,"".concat(d,"-rtl"),u.value==="rtl"),S))},x),[v("div",{class:"".concat(d,"-image"),style:y},[O]),k&&v("p",{class:"".concat(d,"-description")},[k]),o.default&&v("div",{class:"".concat(d,"-footer")},[qt(o.default())])])}},null)};Ki.displayName="AEmpty";Ki.PRESENTED_IMAGE_DEFAULT=H3;Ki.PRESENTED_IMAGE_SIMPLE=z3;Ki.inheritAttrs=!1;Ki.props={prefixCls:String,image:Y.any,description:Y.any,imageStyle:{type:Object,default:void 0}};const Na=Wt(Ki);var iE=function(e){var n=Re("empty",e),r=n.prefixCls,a=function(i){switch(i){case"Table":case"List":return v(Na,{image:Na.PRESENTED_IMAGE_SIMPLE},null);case"Select":case"TreeSelect":case"Cascader":case"Transfer":case"Mentions":return v(Na,{image:Na.PRESENTED_IMAGE_SIMPLE,class:"".concat(r.value,"-small")},null);default:return v(Na,null,null)}};return a(e.componentName)};function W3(t){return v(iE,{componentName:t},null)}var G1={};function lE(t,e){}function uE(t,e){}function U3(t,e,n){!e&&!G1[n]&&(t(!1,n),G1[n]=!0)}function Y3(t,e){U3(lE,t,e)}function sE(t,e){U3(uE,t,e)}const Zt=function(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";Y3(t,"[antdv: ".concat(e,"] ").concat(n))};var ah="internalMark",Os=ie({compatConfig:{MODE:3},name:"ALocaleProvider",props:{locale:{type:Object},ANT_MARK__:String},setup:function(e,n){var r=n.slots;Zt(e.ANT_MARK__===ah,"LocaleProvider","`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead");var a=xt({antLocale:m(m({},e.locale),{},{exist:!0}),ANT_MARK__:ah});return at("localeData",a),Se(function(){return e.locale},function(){a.antLocale=m(m({},e.locale),{},{exist:!0})},{immediate:!0}),function(){var o;return(o=r.default)===null||o===void 0?void 0:o.call(r)}}});Os.install=function(t){return t.component(Os.name,Os),t};const G3=Wt(Os);Bt("bottomLeft","bottomRight","topLeft","topRight");var cE=function(e){return e!==void 0&&(e==="topLeft"||e==="topRight")?"slide-down":"slide-up"},Ya=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=m(e?{name:e,appear:!0,enterFromClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e,"-enter ").concat(e,"-enter-prepare"),enterToClass:"".concat(e,"-enter ").concat(e,"-enter-active"),leaveFromClass:" ".concat(e,"-leave"),leaveActiveClass:"".concat(e,"-leave ").concat(e,"-leave-active"),leaveToClass:"".concat(e,"-leave ").concat(e,"-leave-active")}:{css:!1},n);return r},wg=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=m(e?{name:e,appear:!0,appearActiveClass:"".concat(e),appearToClass:"".concat(e,"-appear ").concat(e,"-appear-active"),enterFromClass:"".concat(e,"-appear ").concat(e,"-enter ").concat(e,"-appear-prepare ").concat(e,"-enter-prepare"),enterActiveClass:"".concat(e),enterToClass:"".concat(e,"-enter ").concat(e,"-appear ").concat(e,"-appear-active ").concat(e,"-enter-active"),leaveActiveClass:"".concat(e," ").concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-active")}:{css:!1},n);return r},Sr=function(e,n,r){return r!==void 0?r:"".concat(e,"-").concat(n)};const dE=ie({name:"Notice",inheritAttrs:!1,props:["prefixCls","duration","updateMark","noticeKey","closeIcon","closable","props","onClick","onClose","holder","visible"],setup:function(e,n){var r=n.attrs,a=n.slots,o,i=!1,l=B(function(){return e.duration===void 0?4.5:e.duration}),u=function(){l.value&&!i&&(o=setTimeout(function(){d()},l.value*1e3))},s=function(){o&&(clearTimeout(o),o=null)},d=function(h){h&&h.stopPropagation(),s();var p=e.onClose,g=e.noticeKey;p&&p(g)},c=function(){s(),u()};return Ge(function(){u()}),_n(function(){i=!0,s()}),Se([l,function(){return e.updateMark},function(){return e.visible}],function(f,h){var p=Te(f,3),g=p[0],y=p[1],b=p[2],C=Te(h,3),x=C[0],w=C[1],P=C[2];(g!==x||y!==w||b!==P&&P)&&c()},{flush:"post"}),function(){var f,h,p=e.prefixCls,g=e.closable,y=e.closeIcon,b=y===void 0?(f=a.closeIcon)===null||f===void 0?void 0:f.call(a):y,C=e.onClick,x=e.holder,w=r.class,P=r.style,S="".concat(p,"-notice"),k=Object.keys(r).reduce(function(O,D){return(D.substr(0,5)==="data-"||D.substr(0,5)==="aria-"||D==="role")&&(O[D]=r[D]),O},{}),T=v("div",m({class:ce(S,w,F({},"".concat(S,"-closable"),g)),style:P,onMouseenter:s,onMouseleave:u,onClick:C},k),[v("div",{class:"".concat(S,"-content")},[(h=a.default)===null||h===void 0?void 0:h.call(a)]),g?v("a",{tabindex:0,onClick:d,class:"".concat(S,"-close")},[b||v("span",{class:"".concat(S,"-close-x")},null)]):null]);return x?v(sg,{to:x},{default:function(){return T}}):T}}});var fE=["name","getContainer","appContext","prefixCls","rootPrefixCls","transitionName","hasTransitionName"],q1=0,vE=Date.now();function X1(){var t=q1;return q1+=1,"rcNotification_".concat(vE,"_").concat(t)}var oh=ie({name:"Notification",inheritAttrs:!1,props:["prefixCls","transitionName","animation","maxCount","closeIcon"],setup:function(e,n){var r=n.attrs,a=n.expose,o=n.slots,i=new Map,l=Q([]),u=B(function(){var c=e.prefixCls,f=e.animation,h=f===void 0?"fade":f,p=e.transitionName;return!p&&h&&(p="".concat(c,"-").concat(h)),wg(p)}),s=function(f,h){var p=f.key||X1(),g=m(m({},f),{},{key:p}),y=e.maxCount,b=l.value.map(function(x){return x.notice.key}).indexOf(p),C=l.value.concat();b!==-1?C.splice(b,1,{notice:g,holderCallback:h}):(y&&l.value.length>=y&&(g.key=C[0].notice.key,g.updateMark=X1(),g.userPassKey=p,C.shift()),C.push({notice:g,holderCallback:h})),l.value=C},d=function(f){l.value=l.value.filter(function(h){var p=h.notice,g=p.key,y=p.userPassKey,b=y||g;return b!==f})};return a({add:s,remove:d,notices:l}),function(){var c,f,h=e.prefixCls,p=e.closeIcon,g=p===void 0?(c=o.closeIcon)===null||c===void 0?void 0:c.call(o,{prefixCls:h}):p,y=l.value.map(function(C,x){var w=C.notice,P=C.holderCallback,S=x===l.value.length-1?w.updateMark:void 0,k=w.key,T=w.userPassKey,O=w.content,D=m(m(m({prefixCls:h,closeIcon:typeof g=="function"?g({prefixCls:h}):g},w),w.props),{},{key:k,noticeKey:T||k,updateMark:S,onClose:function(N){var M;d(N),(M=w.onClose)===null||M===void 0||M.call(w)},onClick:w.onClick});return P?v("div",{key:k,class:"".concat(h,"-hook-holder"),ref:function(N){typeof k>"u"||(N?(i.set(k,N),P(N,D)):i.delete(k))}},null):v(dE,D,{default:function(){return[typeof O=="function"?O({prefixCls:h}):O]}})}),b=(f={},F(f,h,1),F(f,r.class,!!r.class),f);return v("div",{class:b,style:r.style||{top:"65px",left:"50%"}},[v(fg,m({tag:"div"},u.value),{default:function(){return[y]}})])}}});oh.newInstance=function(e,n){var r=e||{},a=r.name,o=a===void 0?"notification":a,i=r.getContainer,l=r.appContext,u=r.prefixCls,s=r.rootPrefixCls,d=r.transitionName,c=r.hasTransitionName,f=He(r,fE),h=document.createElement("div");if(i){var p=i();p.appendChild(h)}else document.body.appendChild(h);var g=ie({compatConfig:{MODE:3},name:"NotificationWrapper",setup:function(C,x){var w=x.attrs,P=Q();return Ge(function(){n({notice:function(k){var T;(T=P.value)===null||T===void 0||T.add(k)},removeNotice:function(k){var T;(T=P.value)===null||T===void 0||T.remove(k)},destroy:function(){sc(null,h),h.parentNode&&h.parentNode.removeChild(h)},component:P})}),function(){var S=Dn,k=S.getPrefixCls(o,u),T=S.getRootPrefixCls(s,k),O=c?d:"".concat(T,"-").concat(d);return v(Vg,m(m({},S),{},{notUpdateGlobalConfig:!0,prefixCls:T}),{default:function(){return[v(oh,m(m({ref:P},w),{},{prefixCls:k,transitionName:O}),null)]}})}}}),y=v(g,f);y.appContext=l||y.appContext,sc(y,h)};const q3=oh;var hE={icon:{tag:"svg",attrs:{viewBox:"0 0 1024 1024",focusable:"false"},children:[{tag:"path",attrs:{d:"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"}}]},name:"loading",theme:"outlined"};const pE=hE;function bn(t,e){gE(t)&&(t="100%");var n=mE(t);return t=e===360?t:Math.min(e,Math.max(0,parseFloat(t))),n&&(t=parseInt(String(t*e),10)/100),Math.abs(t-e)<1e-6?1:(e===360?t=(t<0?t%e+e:t%e)/parseFloat(String(e)):t=t%e/parseFloat(String(e)),t)}function Uu(t){return Math.min(1,Math.max(0,t))}function gE(t){return typeof t=="string"&&t.indexOf(".")!==-1&&parseFloat(t)===1}function mE(t){return typeof t=="string"&&t.indexOf("%")!==-1}function X3(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function Yu(t){return t<=1?"".concat(Number(t)*100,"%"):t}function Co(t){return t.length===1?"0"+t:String(t)}function yE(t,e,n){return{r:bn(t,255)*255,g:bn(e,255)*255,b:bn(n,255)*255}}function Q1(t,e,n){t=bn(t,255),e=bn(e,255),n=bn(n,255);var r=Math.max(t,e,n),a=Math.min(t,e,n),o=0,i=0,l=(r+a)/2;if(r===a)i=0,o=0;else{var u=r-a;switch(i=l>.5?u/(2-r-a):u/(r+a),r){case t:o=(e-n)/u+(e1&&(n-=1),n<1/6?t+(e-t)*(6*n):n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function bE(t,e,n){var r,a,o;if(t=bn(t,360),e=bn(e,100),n=bn(n,100),e===0)a=n,o=n,r=n;else{var i=n<.5?n*(1+e):n+e-n*e,l=2*n-i;r=Mf(l,i,t+1/3),a=Mf(l,i,t),o=Mf(l,i,t-1/3)}return{r:r*255,g:a*255,b:o*255}}function ih(t,e,n){t=bn(t,255),e=bn(e,255),n=bn(n,255);var r=Math.max(t,e,n),a=Math.min(t,e,n),o=0,i=r,l=r-a,u=r===0?0:l/r;if(r===a)o=0;else{switch(r){case t:o=(e-n)/l+(e>16,g:(t&65280)>>8,b:t&255}}var uh={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function ei(t){var e={r:0,g:0,b:0},n=1,r=null,a=null,o=null,i=!1,l=!1;return typeof t=="string"&&(t=OE(t)),typeof t=="object"&&(Qr(t.r)&&Qr(t.g)&&Qr(t.b)?(e=yE(t.r,t.g,t.b),i=!0,l=String(t.r).substr(-1)==="%"?"prgb":"rgb"):Qr(t.h)&&Qr(t.s)&&Qr(t.v)?(r=Yu(t.s),a=Yu(t.v),e=CE(t.h,r,a),i=!0,l="hsv"):Qr(t.h)&&Qr(t.s)&&Qr(t.l)&&(r=Yu(t.s),o=Yu(t.l),e=bE(t.h,r,o),i=!0,l="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(n=t.a)),n=X3(n),{ok:i,format:t.format||l,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:n}}var PE="[-\\+]?\\d+%?",kE="[-\\+]?\\d*\\.\\d+%?",Ra="(?:".concat(kE,")|(?:").concat(PE,")"),Ef="[\\s|\\(]+(".concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")\\s*\\)?"),If="[\\s|\\(]+(".concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")[,|\\s]+(").concat(Ra,")\\s*\\)?"),hr={CSS_UNIT:new RegExp(Ra),rgb:new RegExp("rgb"+Ef),rgba:new RegExp("rgba"+If),hsl:new RegExp("hsl"+Ef),hsla:new RegExp("hsla"+If),hsv:new RegExp("hsv"+Ef),hsva:new RegExp("hsva"+If),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function OE(t){if(t=t.trim().toLowerCase(),t.length===0)return!1;var e=!1;if(uh[t])t=uh[t],e=!0;else if(t==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=hr.rgb.exec(t);return n?{r:n[1],g:n[2],b:n[3]}:(n=hr.rgba.exec(t),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=hr.hsl.exec(t),n?{h:n[1],s:n[2],l:n[3]}:(n=hr.hsla.exec(t),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=hr.hsv.exec(t),n?{h:n[1],s:n[2],v:n[3]}:(n=hr.hsva.exec(t),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=hr.hex8.exec(t),n?{r:Wn(n[1]),g:Wn(n[2]),b:Wn(n[3]),a:Z1(n[4]),format:e?"name":"hex8"}:(n=hr.hex6.exec(t),n?{r:Wn(n[1]),g:Wn(n[2]),b:Wn(n[3]),format:e?"name":"hex"}:(n=hr.hex4.exec(t),n?{r:Wn(n[1]+n[1]),g:Wn(n[2]+n[2]),b:Wn(n[3]+n[3]),a:Z1(n[4]+n[4]),format:e?"name":"hex8"}:(n=hr.hex3.exec(t),n?{r:Wn(n[1]+n[1]),g:Wn(n[2]+n[2]),b:Wn(n[3]+n[3]),format:e?"name":"hex"}:!1)))))))))}function Qr(t){return!!hr.CSS_UNIT.exec(String(t))}var _f=function(){function t(e,n){e===void 0&&(e=""),n===void 0&&(n={});var r;if(e instanceof t)return e;typeof e=="number"&&(e=SE(e)),this.originalInput=e;var a=ei(e);this.originalInput=e,this.r=a.r,this.g=a.g,this.b=a.b,this.a=a.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:a.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=a.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},t.prototype.getLuminance=function(){var e=this.toRgb(),n,r,a,o=e.r/255,i=e.g/255,l=e.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),i<=.03928?r=i/12.92:r=Math.pow((i+.055)/1.055,2.4),l<=.03928?a=l/12.92:a=Math.pow((l+.055)/1.055,2.4),.2126*n+.7152*r+.0722*a},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(e){return this.a=X3(e),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},t.prototype.toHsv=function(){var e=ih(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},t.prototype.toHsvString=function(){var e=ih(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),a=Math.round(e.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(a,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(a,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var e=Q1(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},t.prototype.toHslString=function(){var e=Q1(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),a=Math.round(e.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(a,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(a,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(e){return e===void 0&&(e=!1),lh(this.r,this.g,this.b,e)},t.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},t.prototype.toHex8=function(e){return e===void 0&&(e=!1),xE(this.r,this.g,this.b,this.a,e)},t.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},t.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var e=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(n,", ").concat(r,")"):"rgba(".concat(e,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var e=function(n){return"".concat(Math.round(bn(n,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var e=function(n){return Math.round(bn(n,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+lh(this.r,this.g,this.b,!1),n=0,r=Object.entries(uh);n=0,o=!n&&a&&(e.startsWith("hex")||e==="name");return o?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(r=this.toRgbString()),e==="prgb"&&(r=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(r=this.toHexString()),e==="hex3"&&(r=this.toHexString(!0)),e==="hex4"&&(r=this.toHex8String(!0)),e==="hex8"&&(r=this.toHex8String()),e==="name"&&(r=this.toName()),e==="hsl"&&(r=this.toHslString()),e==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l+=e/100,n.l=Uu(n.l),new t(n)},t.prototype.brighten=function(e){e===void 0&&(e=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(e/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(e/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(e/100)))),new t(n)},t.prototype.darken=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l-=e/100,n.l=Uu(n.l),new t(n)},t.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},t.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},t.prototype.desaturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s-=e/100,n.s=Uu(n.s),new t(n)},t.prototype.saturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s+=e/100,n.s=Uu(n.s),new t(n)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(e){var n=this.toHsl(),r=(n.h+e)%360;return n.h=r<0?360+r:r,new t(n)},t.prototype.mix=function(e,n){n===void 0&&(n=50);var r=this.toRgb(),a=new t(e).toRgb(),o=n/100,i={r:(a.r-r.r)*o+r.r,g:(a.g-r.g)*o+r.g,b:(a.b-r.b)*o+r.b,a:(a.a-r.a)*o+r.a};return new t(i)},t.prototype.analogous=function(e,n){e===void 0&&(e=6),n===void 0&&(n=30);var r=this.toHsl(),a=360/n,o=[this];for(r.h=(r.h-(a*e>>1)+720)%360;--e;)r.h=(r.h+a)%360,o.push(new t(r));return o},t.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new t(e)},t.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var n=this.toHsv(),r=n.h,a=n.s,o=n.v,i=[],l=1/e;e--;)i.push(new t({h:r,s:a,v:o})),o=(o+l)%1;return i},t.prototype.splitcomplement=function(){var e=this.toHsl(),n=e.h;return[this,new t({h:(n+72)%360,s:e.s,l:e.l}),new t({h:(n+216)%360,s:e.s,l:e.l})]},t.prototype.onBackground=function(e){var n=this.toRgb(),r=new t(e).toRgb(),a=n.a+r.a*(1-n.a);return new t({r:(n.r*n.a+r.r*r.a*(1-n.a))/a,g:(n.g*n.a+r.g*r.a*(1-n.a))/a,b:(n.b*n.a+r.b*r.a*(1-n.a))/a,a})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(e){for(var n=this.toHsl(),r=n.h,a=[this],o=360/e,i=1;i=60&&Math.round(t.h)<=240?r=n?Math.round(t.h)-Gu*e:Math.round(t.h)+Gu*e:r=n?Math.round(t.h)+Gu*e:Math.round(t.h)-Gu*e,r<0?r+=360:r>=360&&(r-=360),r}function nb(t,e,n){if(t.h===0&&t.s===0)return t.s;var r;return n?r=t.s-J1*e:e===Z3?r=t.s+J1:r=t.s+TE*e,r>1&&(r=1),n&&e===Q3&&r>.1&&(r=.1),r<.06&&(r=.06),Number(r.toFixed(2))}function rb(t,e,n){var r;return n?r=t.v+ME*e:r=t.v-EE*e,r>1&&(r=1),Number(r.toFixed(2))}function nu(t){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=[],r=ei(t),a=Q3;a>0;a-=1){var o=eb(r),i=qu(ei({h:tb(o,a,!0),s:nb(o,a,!0),v:rb(o,a,!0)}));n.push(i)}n.push(qu(r));for(var l=1;l<=Z3;l+=1){var u=eb(r),s=qu(ei({h:tb(u,l),s:nb(u,l),v:rb(u,l)}));n.push(s)}return e.theme==="dark"?IE.map(function(d){var c=d.index,f=d.opacity,h=qu(_E(ei(e.backgroundColor||"#141414"),ei(n[c]),f*100));return h}):n}var vi={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},Nf={},Af={};Object.keys(vi).forEach(function(t){Nf[t]=nu(vi[t]),Nf[t].primary=Nf[t][5],Af[t]=nu(vi[t],{theme:"dark",backgroundColor:"#141414"}),Af[t].primary=Af[t][5]});var ab=[],il=[],NE="insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).";function AE(){var t=document.createElement("style");return t.setAttribute("type","text/css"),t}function $E(t,e){if(e=e||{},t===void 0)throw new Error(NE);var n=e.prepend===!0?"prepend":"append",r=e.container!==void 0?e.container:document.querySelector("head"),a=ab.indexOf(r);a===-1&&(a=ab.push(r)-1,il[a]={});var o;return il[a]!==void 0&&il[a][n]!==void 0?o=il[a][n]:(o=il[a][n]=AE(),n==="prepend"?r.insertBefore(o,r.childNodes[0]):r.appendChild(o)),t.charCodeAt(0)===65279&&(t=t.substr(1,t.length)),o.styleSheet?o.styleSheet.cssText+=t:o.textContent+=t,o}function ob(t){for(var e=1;e * { + line-height: 1; +} + +.anticon svg { + display: inline-block; +} + +.anticon::before { + display: none; +} + +.anticon .anticon-icon { + display: block; +} + +.anticon[tabindex] { + cursor: pointer; +} + +.anticon-spin::before, +.anticon-spin { + display: inline-block; + -webkit-animation: loadingCircle 1s infinite linear; + animation: loadingCircle 1s infinite linear; +} + +@-webkit-keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes loadingCircle { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +`,lb=!1,FE=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:DE;nt(function(){lb||(typeof window<"u"&&window.document&&window.document.documentElement&&$E(e,{prepend:!0}),lb=!0)})},LE=["icon","primaryColor","secondaryColor"];function BE(t,e){if(t==null)return{};var n=jE(t,e),r,a;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jE(t,e){if(t==null)return{};var n={},r=Object.keys(t),a,o;for(o=0;o=0)&&(n[a]=t[a]);return n}function Ts(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=new Array(e);nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function rI(t,e){if(t==null)return{};var n={},r=Object.keys(t),a,o;for(o=0;o=0)&&(n[a]=t[a]);return n}t4("#1890ff");var zi=function(e,n){var r,a=cb({},e,n.attrs),o=a.class,i=a.icon,l=a.spin,u=a.rotate,s=a.tabindex,d=a.twoToneColor,c=a.onClick,f=nI(a,XE),h=(r={anticon:!0},ch(r,"anticon-".concat(i.name),!!i.name),ch(r,o,o),r),p=l===""||l||i.name==="loading"?"anticon-spin":"",g=s;g===void 0&&c&&(g=-1,f.tabindex=g);var y=u?{msTransform:"rotate(".concat(u,"deg)"),transform:"rotate(".concat(u,"deg)")}:void 0,b=e4(d),C=QE(b,2),x=C[0],w=C[1];return v("span",cb({role:"img","aria-label":i.name},f,{onClick:c,class:h}),[v(Sg,{class:p,icon:i,primaryColor:x,secondaryColor:w,style:y},null)])};zi.props={spin:Boolean,rotate:Number,icon:Object,twoToneColor:String};zi.displayName="AntdIcon";zi.inheritAttrs=!1;zi.getTwoToneColor=qE;zi.setTwoToneColor=t4;const st=zi;function db(t){for(var e=1;e=0;--_){var R=this.tryEntries[_],z=R.completion;if(R.tryLoc==="root")return I("end");if(R.tryLoc<=this.prev){var V=o.call(R,"catchLoc"),q=o.call(R,"finallyLoc");if(V&&q){if(this.prev=0;--I){var _=this.tryEntries[I];if(_.tryLoc<=this.prev&&o.call(_,"finallyLoc")&&this.prev<_.finallyLoc){var R=_;break}}R&&($==="break"||$==="continue")&&R.tryLoc<=A&&A<=R.finallyLoc&&(R=null);var z=R?R.completion:{};return z.type=$,z.arg=A,R?(this.method="next",this.next=R.finallyLoc,p):this.complete(z)},complete:function($,A){if($.type==="throw")throw $.arg;return $.type==="break"||$.type==="continue"?this.next=$.arg:$.type==="return"?(this.rval=this.arg=$.arg,this.method="return",this.next="end"):$.type==="normal"&&A&&(this.next=A),p},finish:function($){for(var A=this.tryEntries.length-1;A>=0;--A){var I=this.tryEntries[A];if(I.finallyLoc===$)return this.complete(I.completion,I.afterLoc),L(I),p}},catch:function($){for(var A=this.tryEntries.length-1;A>=0;--A){var I=this.tryEntries[A];if(I.tryLoc===$){var _=I.completion;if(_.type==="throw"){var R=_.arg;L(I)}return R}}throw new Error("illegal catch attempt")},delegateYield:function($,A,I){return this.delegate={iterator:M($),resultName:A,nextLoc:I},this.method==="next"&&(this.arg=void 0),p}},r}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports})(kI);var Ms=dh(),Bn=Ms;try{regeneratorRuntime=Ms}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Ms:Function("r","regeneratorRuntime = r")(Ms)}var TI={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"};const MI=TI;function mb(t){for(var e=1;e1&&arguments[1]!==void 0?arguments[1]:f4,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:v4,r;switch(t){case"topLeft":r={left:"0px",top:e,bottom:"auto"};break;case"topRight":r={right:"0px",top:e,bottom:"auto"};break;case"bottomLeft":r={left:"0px",top:"auto",bottom:n};break;default:r={right:"0px",top:"auto",bottom:n};break}return r}function zI(t,e){var n=t.prefixCls,r=t.placement,a=r===void 0?h4:r,o=t.getContainer,i=o===void 0?p4:o,l=t.top,u=t.bottom,s=t.closeIcon,d=s===void 0?g4:s,c=t.appContext,f=a_(),h=f.getPrefixCls,p=h("notification",n||vh),g="".concat(p,"-").concat(a,"-").concat(hh),y=po[g];if(y){Promise.resolve(y).then(function(C){e(C)});return}var b=ce("".concat(p,"-").concat(a),F({},"".concat(p,"-rtl"),hh===!0));q3.newInstance({name:"notification",prefixCls:n||vh,class:b,style:HI(a,l,u),appContext:c,getContainer:i,closeIcon:function(x){var w=x.prefixCls,P=v("span",{class:"".concat(w,"-close-x")},[gl(d,{},v(Wr,{class:"".concat(w,"-close-icon")},null))]);return P},maxCount:m4,hasTransitionName:!0},function(C){po[g]=C,e(C)})}var WI={success:_g,info:Ag,error:Rg,warning:vd};function UI(t){var e=t.icon,n=t.type,r=t.description,a=t.message,o=t.btn,i=t.duration===void 0?d4:t.duration;zI(t,function(l){l.notice({content:function(s){var d=s.prefixCls,c="".concat(d,"-notice"),f=null;if(e)f=function(){return v("span",{class:"".concat(c,"-icon")},[gl(e)])};else if(n){var h=WI[n];f=function(){return v(h,{class:"".concat(c,"-icon ").concat(c,"-icon-").concat(n)},null)}}return v("div",{class:f?"".concat(c,"-with-icon"):""},[f&&f(),v("div",{class:"".concat(c,"-message")},[!r&&f?v("span",{class:"".concat(c,"-message-single-line-auto-margin")},null):null,gl(a)]),v("div",{class:"".concat(c,"-description")},[gl(r)]),o?v("span",{class:"".concat(c,"-btn")},[gl(o)]):null])},duration:i,closable:!0,onClose:t.onClose,onClick:t.onClick,key:t.key,style:t.style||{},class:t.class})})}var ru={open:UI,close:function(e){Object.keys(po).forEach(function(n){return Promise.resolve(po[n]).then(function(r){r.removeNotice(e)})})},config:KI,destroy:function(){Object.keys(po).forEach(function(e){Promise.resolve(po[e]).then(function(n){n.destroy()}),delete po[e]})}},YI=["success","info","warning","error"];YI.forEach(function(t){ru[t]=function(e){return ru.open(m(m({},e),{},{type:t}))}});ru.warn=ru.warning;const Lg=ru;function Lo(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var GI="vc-util-key";function y4(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=t.mark;return e?e.startsWith("data-")?e:"data-".concat(e):GI}function Bg(t){if(t.attachTo)return t.attachTo;var e=document.querySelector("head");return e||document.body}function wb(t){var e,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!Lo())return null;var r=document.createElement("style");if((e=n.csp)!==null&&e!==void 0&&e.nonce){var a;r.nonce=(a=n.csp)===null||a===void 0?void 0:a.nonce}r.innerHTML=t;var o=Bg(n),i=o.firstChild;return n.prepend&&o.prepend?o.prepend(r):n.prepend&&i?o.insertBefore(r,i):o.appendChild(r),r}var ph=new Map;function qI(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=Bg(e);return Array.from(ph.get(n).children).find(function(r){return r.tagName==="STYLE"&&r.getAttribute(y4(e))===t})}function XI(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=Bg(n);if(!ph.has(r)){var a=wb("",n),o=a.parentNode;ph.set(r,o),o.removeChild(a)}var i=qI(e,n);if(i){var l,u;if((l=n.csp)!==null&&l!==void 0&&l.nonce&&i.nonce!==((u=n.csp)===null||u===void 0?void 0:u.nonce)){var s;i.nonce=(s=n.csp)===null||s===void 0?void 0:s.nonce}return i.innerHTML!==t&&(i.innerHTML=t),i}var d=wb(t,n);return d.setAttribute(y4(n),e),d}const Pt=function(t,e,n){Y3(t,"[ant-design-vue: ".concat(e,"] ").concat(n))};var QI="-ant-".concat(Date.now(),"-").concat(Math.random());function ZI(t,e){var n={},r=function(d,c){var f=d.clone();return f=(c==null?void 0:c(f))||f,f.toRgbString()},a=function(d,c){var f=new _f(d),h=nu(f.toRgbString());n["".concat(c,"-color")]=r(f),n["".concat(c,"-color-disabled")]=h[1],n["".concat(c,"-color-hover")]=h[4],n["".concat(c,"-color-active")]=h[6],n["".concat(c,"-color-outline")]=f.clone().setAlpha(.2).toRgbString(),n["".concat(c,"-color-deprecated-bg")]=h[1],n["".concat(c,"-color-deprecated-border")]=h[3]};if(e.primaryColor){a(e.primaryColor,"primary");var o=new _f(e.primaryColor),i=nu(o.toRgbString());i.forEach(function(s,d){n["primary-".concat(d+1)]=s}),n["primary-color-deprecated-l-35"]=r(o,function(s){return s.lighten(35)}),n["primary-color-deprecated-l-20"]=r(o,function(s){return s.lighten(20)}),n["primary-color-deprecated-t-20"]=r(o,function(s){return s.tint(20)}),n["primary-color-deprecated-t-50"]=r(o,function(s){return s.tint(50)}),n["primary-color-deprecated-f-12"]=r(o,function(s){return s.setAlpha(s.getAlpha()*.12)});var l=new _f(i[0]);n["primary-color-active-deprecated-f-30"]=r(l,function(s){return s.setAlpha(s.getAlpha()*.3)}),n["primary-color-active-deprecated-d-02"]=r(l,function(s){return s.darken(2)})}e.successColor&&a(e.successColor,"success"),e.warningColor&&a(e.warningColor,"warning"),e.errorColor&&a(e.errorColor,"error"),e.infoColor&&a(e.infoColor,"info");var u=Object.keys(n).map(function(s){return"--".concat(t,"-").concat(s,": ").concat(n[s],";")});Lo()?XI(` + :root { + `.concat(u.join(` +`),` + } + `),"".concat(QI,"-dynamic-theme")):Pt(!1,"ConfigProvider","SSR do not support dynamic theme with css variables.")}var b4=Symbol("GlobalFormContextKey"),JI=function(e){at(b4,e)},e_=function(){return Ze(b4,{validateMessages:B(function(){})})},t_=function(){return{getTargetContainer:{type:Function},getPopupContainer:{type:Function},prefixCls:String,getPrefixCls:{type:Function},renderEmpty:{type:Function},transformCellText:{type:Function},csp:{type:Object,default:void 0},input:{type:Object},autoInsertSpaceInButton:{type:Boolean,default:void 0},locale:{type:Object,default:void 0},pageHeader:{type:Object},componentSize:{type:String},direction:{type:String},space:{type:Object},virtual:{type:Boolean,default:void 0},dropdownMatchSelectWidth:{type:[Number,Boolean],default:!0},form:{type:Object,default:void 0},notUpdateGlobalConfig:Boolean}},n_="ant";function hi(){return Dn.prefixCls||n_}var gh=xt({}),C4=xt({}),Dn=xt({});Je(function(){pt(Dn,gh,C4),Dn.prefixCls=hi(),Dn.getPrefixCls=function(t,e){return e||(t?"".concat(Dn.prefixCls,"-").concat(t):Dn.prefixCls)},Dn.getRootPrefixCls=function(t,e){return t||(Dn.prefixCls?Dn.prefixCls:e&&e.includes("-")?e.replace(/^(.*)-[^-]*$/,"$1"):hi())}});var $f,r_=function(e){$f&&$f(),$f=Je(function(){pt(C4,xt(e)),pt(Dn,xt(e))}),e.theme&&ZI(hi(),e.theme)},a_=function(){return{getPrefixCls:function(n,r){return r||(n?"".concat(hi(),"-").concat(n):hi())},getRootPrefixCls:function(n,r){return n||(Dn.prefixCls?Dn.prefixCls:r&&r.includes("-")?r.replace(/^(.*)-[^-]*$/,"$1"):hi())}}},Il=ie({compatConfig:{MODE:3},name:"AConfigProvider",inheritAttrs:!1,props:t_(),setup:function(e,n){var r=n.slots,a=function(c,f){var h=e.prefixCls,p=h===void 0?"ant":h;return f||(c?"".concat(p,"-").concat(c):p)},o=function(c){var f=e.renderEmpty||r.renderEmpty||W3;return f(c)},i=function(c,f){var h=e.prefixCls;if(f)return f;var p=h||a("");return c?"".concat(p,"-").concat(c):p},l=xt(m(m({},e),{},{getPrefixCls:i,renderEmpty:o}));Object.keys(e).forEach(function(d){Se(function(){return e[d]},function(){l[d]=e[d]})}),e.notUpdateGlobalConfig||(pt(gh,l),Se(l,function(){pt(gh,l)}));var u=B(function(){var d={};if(e.locale){var c,f;d=((c=e.locale.Form)===null||c===void 0?void 0:c.defaultValidateMessages)||((f=wr.Form)===null||f===void 0?void 0:f.defaultValidateMessages)||{}}return e.form&&e.form.validateMessages&&(d=m(m({},d),e.form.validateMessages)),d});JI({validateMessages:u}),at("configProvider",l);var s=function(c){var f;return v(G3,{locale:e.locale||c,ANT_MARK__:ah},{default:function(){return[(f=r.default)===null||f===void 0?void 0:f.call(r)]}})};return Je(function(){e.direction&&(Eg.config({rtl:e.direction==="rtl"}),Lg.config({rtl:e.direction==="rtl"}))}),function(){return v(Vi,{children:function(c,f,h){return s(h)}},null)}}}),jg=xt({getPrefixCls:function(e,n){return n||(e?"ant-".concat(e):"ant")},renderEmpty:W3,direction:"ltr"});Il.config=r_;Il.install=function(t){t.component(Il.name,Il)};const Vg=Il,Re=function(t,e){var n=Ze("configProvider",jg),r=B(function(){return n.getPrefixCls(t,e.prefixCls)}),a=B(function(){var C;return(C=e.direction)!==null&&C!==void 0?C:n.direction}),o=B(function(){return n.getPrefixCls()}),i=B(function(){return n.autoInsertSpaceInButton}),l=B(function(){return n.renderEmpty}),u=B(function(){return n.space}),s=B(function(){return n.pageHeader}),d=B(function(){return n.form}),c=B(function(){return e.getTargetContainer||n.getTargetContainer}),f=B(function(){return e.getPopupContainer||n.getPopupContainer}),h=B(function(){var C;return(C=e.dropdownMatchSelectWidth)!==null&&C!==void 0?C:n.dropdownMatchSelectWidth}),p=B(function(){return(e.virtual===void 0?n.virtual!==!1:e.virtual!==!1)&&h.value!==!1}),g=B(function(){return e.size||n.componentSize}),y=B(function(){var C;return e.autocomplete||((C=n.input)===null||C===void 0?void 0:C.autocomplete)}),b=B(function(){return n.csp});return{configProvider:n,prefixCls:r,direction:a,size:g,getTargetContainer:c,getPopupContainer:f,space:u,pageHeader:s,form:d,autoInsertSpaceInButton:i,renderEmpty:l,virtual:p,dropdownMatchSelectWidth:h,rootPrefixCls:o,getPrefixCls:n.getPrefixCls,autocomplete:y,csp:b}};function it(t,e){for(var n=pt({},t),r=0;r"u")return 0;var n=e?"scrollTop":"scrollLeft",r=0;if(mh(t)?r=t[e?"pageYOffset":"pageXOffset"]:t instanceof Document?r=t.documentElement[n]:t&&(r=t[n]),t&&!mh(t)&&typeof r!="number"){var a;r=(a=(t.ownerDocument||t).documentElement)===null||a===void 0?void 0:a[n]}return r}function u_(t,e,n,r){var a=n-e;return t/=r/2,t<1?a/2*t*t*t+e:a/2*((t-=2)*t*t+2)+e}function Hg(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.getContainer,r=n===void 0?function(){return window}:n,a=e.callback,o=e.duration,i=o===void 0?450:o,l=r(),u=Kg(l,!0),s=Date.now(),d=function c(){var f=Date.now(),h=f-s,p=u_(h>i?i:h,u,t,i);mh(l)?l.scrollTo(window.pageXOffset,p):l instanceof HTMLDocument||l.constructor.name==="HTMLDocument"?l.documentElement.scrollTop=p:l.scrollTop=p,h0&&arguments[0]!==void 0?arguments[0]:0,k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,T=[],O=g.value();if(h.links.forEach(function(L){var N=Pb.exec(L.toString());if(N){var M=document.getElementById(N[1]);if(M){var E=Sb(M,O);EL.top?N:L});return D.link}return""},b=function(S){var k=e.getCurrentAnchor;p.value!==S&&(p.value=typeof k=="function"?k():S,r("change",S))},C=function(S){var k=e.offsetTop,T=e.targetOffset;b(S);var O=g.value(),D=Kg(O,!0),L=Pb.exec(S);if(L){var N=document.getElementById(L[1]);if(N){var M=Sb(N,O),E=D+M;E-=T!==void 0?T:k||0,h.animating=!0,Hg(E,{callback:function(){h.animating=!1},getContainer:g.value})}}};i({scrollTo:C});var x=function(){if(!h.animating){var S=e.offsetTop,k=e.bounds,T=e.targetOffset,O=y(T!==void 0?T:S||0,k);b(O)}},w=function(){var S=f.value.getElementsByClassName("".concat(u.value,"-link-title-active"))[0];S&&(c.value.style.top="".concat(S.offsetTop+S.clientHeight/2-4.5,"px"))};return d_({registerLink:function(S){h.links.includes(S)||h.links.push(S)},unregisterLink:function(S){var k=h.links.indexOf(S);k!==-1&&h.links.splice(k,1)},activeLink:p,scrollTo:C,handleClick:function(S,k){r("click",S,k)}}),Ge(function(){nt(function(){var P=g.value();h.scrollContainer=P,h.scrollEvent=Dt(h.scrollContainer,"scroll",x),x()})}),ut(function(){h.scrollEvent&&h.scrollEvent.remove()}),wn(function(){if(h.scrollEvent){var P=g.value();h.scrollContainer!==P&&(h.scrollContainer=P,h.scrollEvent.remove(),h.scrollEvent=Dt(h.scrollContainer,"scroll",x),x())}w()}),function(){var P,S=e.offsetTop,k=e.affix,T=e.showInkInFixed,O=u.value,D=ce("".concat(O,"-ink-ball"),{visible:p.value}),L=ce(e.wrapperClass,"".concat(O,"-wrapper"),F({},"".concat(O,"-rtl"),d.value==="rtl")),N=ce(O,F({},"".concat(O,"-fixed"),!k&&!T)),M=m({maxHeight:S?"calc(100vh - ".concat(S,"px)"):"100vh"},e.wrapperStyle),E=v("div",{class:L,style:M,ref:f},[v("div",{class:N},[v("div",{class:"".concat(O,"-ink")},[v("span",{class:D,ref:c},null)]),(P=o.default)===null||P===void 0?void 0:P.call(o)])]);return k?v(x4,m(m({},a),{},{offsetTop:S,target:g.value}),{default:function(){return[E]}}):E}}});var h_=function(){return{prefixCls:String,href:String,title:Y.any,target:String}};const S4=ie({compatConfig:{MODE:3},name:"AAnchorLink",props:ct(h_(),{href:"#"}),slots:["title"],setup:function(e,n){var r=n.slots,a=null,o=c_(),i=o.handleClick,l=o.scrollTo,u=o.unregisterLink,s=o.registerLink,d=o.activeLink,c=Re("anchor",e),f=c.prefixCls,h=function(g){var y=e.href;i(g,{title:a,href:y}),l(y)};return Se(function(){return e.href},function(p,g){nt(function(){u(g),s(p)})}),Ge(function(){s(e.href)}),ut(function(){u(e.href)}),function(){var p,g=e.href,y=e.target,b=f.value,C=At(r,e,"title");a=C;var x=d.value===g,w=ce("".concat(b,"-link"),F({},"".concat(b,"-link-active"),x)),P=ce("".concat(b,"-link-title"),F({},"".concat(b,"-link-title-active"),x));return v("div",{class:w},[v("a",{class:P,href:g,title:typeof C=="string"?C:"",target:y,onClick:h},[C]),(p=r.default)===null||p===void 0?void 0:p.call(r)])}}});go.Link=S4;go.install=function(t){return t.component(go.name,go),t.component(go.Link.name,go.Link),t};function zg(t){return p3(t)||m3(t)||dd(t)||g3()}function kb(t,e){var n=t.key,r;return"value"in t&&(r=t.value),n??(r!==void 0?r:"rc-index-key-".concat(e))}function P4(t,e){var n=t||{},r=n.label,a=n.value,o=n.options;return{label:r||(e?"children":"label"),value:a||"value",options:o||"options"}}function p_(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=e.fieldNames,r=e.childrenAsData,a=[],o=P4(n,!1),i=o.label,l=o.value,u=o.options;function s(d,c){d.forEach(function(f){var h=f[i];if(c||!(u in f)){var p=f[l];a.push({key:kb(f,a.length),groupOption:c,data:f,label:h,value:p})}else{var g=h;g===void 0&&r&&(g=f.label),a.push({key:kb(f,a.length),group:!0,data:f,label:g}),s(f[u],!0)}})}return s(t,!1),a}function yh(t){var e=m({},t);return"props"in e||Object.defineProperty(e,"props",{get:function(){return e}}),e}function g_(t,e){if(!e||!e.length)return null;var n=!1;function r(o,i){var l=zg(i),u=l[0],s=l.slice(1);if(!u)return[o];var d=o.split(u);return n=n||d.length>1,d.reduce(function(c,f){return[].concat(_e(c),_e(r(f,s)))},[]).filter(function(c){return c})}var a=r(t,e);return n?a:null}function mo(t,e){return t?t.contains(e):!1}var k4=["moz","ms","webkit"];function m_(){var t=0;return function(e){var n=new Date().getTime(),r=Math.max(0,16-(n-t)),a=window.setTimeout(function(){e(n+r)},r);return t=n+r,a}}function y_(){if(typeof window>"u")return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var t=k4.filter(function(e){return"".concat(e,"RequestAnimationFrame")in window})[0];return t?window["".concat(t,"RequestAnimationFrame")]:m_()}function b_(t){if(typeof window>"u")return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(t);var e=k4.filter(function(n){return"".concat(n,"CancelAnimationFrame")in window||"".concat(n,"CancelRequestAnimationFrame")in window})[0];return e?(window["".concat(e,"CancelAnimationFrame")]||window["".concat(e,"CancelRequestAnimationFrame")]).call(this,t):clearTimeout(t)}var Ob=y_(),C_=function(e){return b_(e.id)},x_=function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=Date.now();function a(){Date.now()-r>=n?e.call():o.id=Ob(a)}var o={id:Ob(a)};return o},Wg={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},w_=m(m({},Wg),{},{mobile:{type:Object}}),S_=m(m({},Wg),{},{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function O4(t){var e=t.prefixCls,n=t.animation,r=t.transitionName;return n?{name:"".concat(e,"-").concat(n)}:r?{name:r}:{}}function T4(t){var e=t.prefixCls,n=t.visible,r=t.zIndex,a=t.mask,o=t.maskAnimation,i=t.maskTransitionName;if(!a)return null;var l={};return(i||o)&&(l=O4({prefixCls:e,transitionName:i,animation:o})),v(Nn,m({appear:!0},l),{default:function(){return[gn(v("div",{style:{zIndex:r},class:"".concat(e,"-mask")},null),[[p5("if"),n]])]}})}T4.displayName="Mask";const P_=ie({compatConfig:{MODE:3},name:"MobilePopupInner",inheritAttrs:!1,props:w_,emits:["mouseenter","mouseleave","mousedown","touchstart","align"],setup:function(e,n){var r=n.expose,a=n.slots,o=Q();return r({forceAlign:function(){},getElement:function(){return o.value}}),function(){var i,l=e.zIndex,u=e.visible,s=e.prefixCls,d=e.mobile,c=d===void 0?{}:d,f=c.popupClassName,h=c.popupStyle,p=c.popupMotion,g=p===void 0?{}:p,y=c.popupRender,b=m({zIndex:l},h),C=Mt((i=a.default)===null||i===void 0?void 0:i.call(a));C.length>1&&(C=v("div",{class:"".concat(s,"-content")},[C])),y&&(C=y(C));var x=ce(s,f);return v(Nn,m({ref:o},g),{default:function(){return[u?v("div",{class:x,style:b},[C]):null]}})}}});var Tb=["measure","align",null,"motion"];const k_=function(t,e){var n=Q(null),r=Q(),a=Q(!1);function o(u){a.value||(n.value=u)}function i(){Qe.cancel(r.value)}function l(u){i(),r.value=Qe(function(){var s=n.value;switch(n.value){case"align":s="motion";break;case"motion":s="stable";break}o(s),u==null||u()})}return Se(t,function(){o("measure")},{immediate:!0,flush:"post"}),Ge(function(){Se(n,function(){switch(n.value){case"measure":e();break}n.value&&(r.value=Qe(Do(Bn.mark(function u(){var s,d;return Bn.wrap(function(f){for(;;)switch(f.prev=f.next){case 0:s=Tb.indexOf(n.value),d=Tb[s+1],d&&s!==-1&&o(d);case 3:case"end":return f.stop()}},u)}))))},{immediate:!0,flush:"post"})}),ut(function(){a.value=!0,i()}),[n,l]},O_=function(t){var e=Q({width:0,height:0});function n(a){e.value={width:a.offsetWidth,height:a.offsetHeight}}var r=B(function(){var a={};if(t.value){var o=e.value,i=o.width,l=o.height;t.value.indexOf("height")!==-1&&l?a.height="".concat(l,"px"):t.value.indexOf("minHeight")!==-1&&l&&(a.minHeight="".concat(l,"px")),t.value.indexOf("width")!==-1&&i?a.width="".concat(i,"px"):t.value.indexOf("minWidth")!==-1&&i&&(a.minWidth="".concat(i,"px"))}return a});return[r,n]};function Mb(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),n.push.apply(n,r)}return n}function Eb(t){for(var e=1;e=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function q_(t,e,n,r){var a=yt.clone(t),o={width:e.width,height:e.height};return r.adjustX&&a.left=n.left&&a.left+o.width>n.right&&(o.width-=a.left+o.width-n.right),r.adjustX&&a.left+o.width>n.right&&(a.left=Math.max(n.right-o.width,n.left)),r.adjustY&&a.top=n.top&&a.top+o.height>n.bottom&&(o.height-=a.top+o.height-n.bottom),r.adjustY&&a.top+o.height>n.bottom&&(a.top=Math.max(n.bottom-o.height,n.top)),yt.mix(a,o)}function qg(t){var e,n,r;if(!yt.isWindow(t)&&t.nodeType!==9)e=yt.offset(t),n=yt.outerWidth(t),r=yt.outerHeight(t);else{var a=yt.getWindow(t);e={left:yt.getWindowScrollLeft(a),top:yt.getWindowScrollTop(a)},n=yt.viewportWidth(a),r=yt.viewportHeight(a)}return e.width=n,e.height=r,e}function Fb(t,e){var n=e.charAt(0),r=e.charAt(1),a=t.width,o=t.height,i=t.left,l=t.top;return n==="c"?l+=o/2:n==="b"&&(l+=o),r==="c"?i+=a/2:r==="r"&&(i+=a),{left:i,top:l}}function Zu(t,e,n,r,a){var o=Fb(e,n[1]),i=Fb(t,n[0]),l=[i.left-o.left,i.top-o.top];return{left:Math.round(t.left-l[0]+r[0]-a[0]),top:Math.round(t.top-l[1]+r[1]-a[1])}}function Lb(t,e,n){return t.leftn.right}function Bb(t,e,n){return t.topn.bottom}function X_(t,e,n){return t.left>n.right||t.left+e.widthn.bottom||t.top+e.height=n.right||r.top>=n.bottom}function Xg(t,e,n){var r=n.target||e,a=qg(r),o=!Z_(r,n.overflow&&n.overflow.alwaysByViewport);return R4(t,a,n,o)}Xg.__getOffsetParent=wh;Xg.__getVisibleRectForElement=Gg;function J_(t,e,n){var r,a,o=yt.getDocument(t),i=o.defaultView||o.parentWindow,l=yt.getWindowScrollLeft(i),u=yt.getWindowScrollTop(i),s=yt.viewportWidth(i),d=yt.viewportHeight(i);"pageX"in e?r=e.pageX:r=l+e.clientX,"pageY"in e?a=e.pageY:a=u+e.clientY;var c={left:r,top:a,width:0,height:0},f=r>=0&&r<=l+s&&a>=0&&a<=u+d,h=[n.points[0],"cc"];return R4(t,c,Eb(Eb({},n),{},{points:h}),f)}function Ct(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=t;if(Array.isArray(t)&&(a=qt(t)[0]),!a)return null;var o=Cn(a,e,r);return o.props=n?m(m({},o.props),e):o.props,Zt(Fe(o.props.class)!=="object","class must be string"),o}function eN(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return t.map(function(r){return Ct(r,e,n)})}function _l(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(Array.isArray(t))return t.map(function(o){return _l(o,e,n,r)});var a=Ct(t,e,n,r);return Array.isArray(a.children)&&(a.children=_l(a.children)),a}const Qg=function(t){if(!t)return!1;if(t.offsetParent)return!0;if(t.getBBox){var e=t.getBBox();if(e.width||e.height)return!0}if(t.getBoundingClientRect){var n=t.getBoundingClientRect();if(n.width||n.height)return!0}return!1};function tN(t,e){return t===e?!0:!t||!e?!1:"pageX"in e&&"pageY"in e?t.pageX===e.pageX&&t.pageY===e.pageY:"clientX"in e&&"clientY"in e?t.clientX===e.clientX&&t.clientY===e.clientY:!1}function nN(t,e){t!==document.activeElement&&mo(e,t)&&typeof t.focus=="function"&&t.focus()}function Kb(t,e){var n=null,r=null;function a(i){var l=Te(i,1),u=l[0].target;if(document.documentElement.contains(u)){var s=u.getBoundingClientRect(),d=s.width,c=s.height,f=Math.floor(d),h=Math.floor(c);(n!==f||r!==h)&&Promise.resolve().then(function(){e({width:f,height:h})}),n=f,r=h}}var o=new hg(a);return t&&o.observe(t),function(){o.disconnect()}}const rN=function(t,e){var n=!1,r=null;function a(){clearTimeout(r)}function o(i){if(!n||i===!0){if(t()===!1)return;n=!0,a(),r=setTimeout(function(){n=!1},e.value)}else a(),r=setTimeout(function(){n=!1,o()},e.value)}return[o,function(){n=!1,a()}]};function aN(){this.__data__=[],this.size=0}function Zg(t,e){return t===e||t!==t&&e!==e}function pd(t,e){for(var n=t.length;n--;)if(Zg(t[n][0],e))return n;return-1}var oN=Array.prototype,iN=oN.splice;function lN(t){var e=this.__data__,n=pd(e,t);if(n<0)return!1;var r=e.length-1;return n==r?e.pop():iN.call(e,n,1),--this.size,!0}function uN(t){var e=this.__data__,n=pd(e,t);return n<0?void 0:e[n][1]}function sN(t){return pd(this.__data__,t)>-1}function cN(t,e){var n=this.__data__,r=pd(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function ma(t){var e=-1,n=t==null?0:t.length;for(this.clear();++el))return!1;var s=o.get(t),d=o.get(e);if(s&&d)return s==e&&d==t;var c=-1,f=!0,h=n&aA?new Mi:void 0;for(o.set(t,e),o.set(e,t);++c-1&&t%1==0&&t-1&&t%1==0&&t<=FA}var LA="[object Arguments]",BA="[object Array]",jA="[object Boolean]",VA="[object Date]",KA="[object Error]",HA="[object Function]",zA="[object Map]",WA="[object Number]",UA="[object Object]",YA="[object RegExp]",GA="[object Set]",qA="[object String]",XA="[object WeakMap]",QA="[object ArrayBuffer]",ZA="[object DataView]",JA="[object Float32Array]",e$="[object Float64Array]",t$="[object Int8Array]",n$="[object Int16Array]",r$="[object Int32Array]",a$="[object Uint8Array]",o$="[object Uint8ClampedArray]",i$="[object Uint16Array]",l$="[object Uint32Array]",Kt={};Kt[JA]=Kt[e$]=Kt[t$]=Kt[n$]=Kt[r$]=Kt[a$]=Kt[o$]=Kt[i$]=Kt[l$]=!0;Kt[LA]=Kt[BA]=Kt[QA]=Kt[jA]=Kt[ZA]=Kt[VA]=Kt[KA]=Kt[HA]=Kt[zA]=Kt[WA]=Kt[UA]=Kt[YA]=Kt[GA]=Kt[qA]=Kt[XA]=!1;function u$(t){return xr(t)&&am(t.length)&&!!Kt[Ua(t)]}function md(t){return function(e){return t(e)}}var K4=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Nl=K4&&typeof module=="object"&&module&&!module.nodeType&&module,s$=Nl&&Nl.exports===K4,Vf=s$&&y3.process,c$=function(){try{var t=Nl&&Nl.require&&Nl.require("util").types;return t||Vf&&Vf.binding&&Vf.binding("util")}catch{}}();const Ei=c$;var qb=Ei&&Ei.isTypedArray,d$=qb?md(qb):u$;const H4=d$;var f$=Object.prototype,v$=f$.hasOwnProperty;function z4(t,e){var n=fr(t),r=!n&&nm(t),a=!n&&!r&&mc(t),o=!n&&!r&&!a&&H4(t),i=n||r||a||o,l=i?OA(t.length,String):[],u=l.length;for(var s in t)(e||v$.call(t,s))&&!(i&&(s=="length"||a&&(s=="offset"||s=="parent")||o&&(s=="buffer"||s=="byteLength"||s=="byteOffset")||rm(s,u)))&&l.push(s);return l}var h$=Object.prototype;function om(t){var e=t&&t.constructor,n=typeof e=="function"&&e.prototype||h$;return t===n}var p$=C3(Object.keys,Object);const g$=p$;var m$=Object.prototype,y$=m$.hasOwnProperty;function b$(t){if(!om(t))return g$(t);var e=[];for(var n in Object(t))y$.call(t,n)&&n!="constructor"&&e.push(n);return e}function Su(t){return t!=null&&am(t.length)&&!D4(t)}function Wi(t){return Su(t)?z4(t):b$(t)}function Sh(t){return L4(t,Wi,tm)}var C$=1,x$=Object.prototype,w$=x$.hasOwnProperty;function S$(t,e,n,r,a,o){var i=n&C$,l=Sh(t),u=l.length,s=Sh(e),d=s.length;if(u!=d&&!i)return!1;for(var c=u;c--;){var f=l[c];if(!(i?f in e:w$.call(e,f)))return!1}var h=o.get(t),p=o.get(e);if(h&&p)return h==e&&p==t;var g=!0;o.set(t,e),o.set(e,t);for(var y=i;++c1&&(X=v("div",{class:"".concat(E,"-content")},[X]));var H=ce(E,a.class,u.value),j=p.value||!e.visible,W=j?Ya(T.value.name,T.value):{};return v(Nn,m(m({ref:l},W),{},{onBeforeEnter:O}),{default:function(){return!$||e.visible?gn(v(L$,{target:P(),key:"popup",ref:i,monitorWindowResize:!0,disabled:D.value,align:M,onAlign:k},{default:function(){return v("div",m(m({class:H,onMouseenter:A,onMouseleave:I,onMousedown:_1(z,["capture"])},F({},nn?"onTouchstartPassive":"onTouchstart",_1(R,["capture"]))),{},{style:q}),[X])}}),[[Tr,p.value]]):null}})}}}),j$=ie({compatConfig:{MODE:3},name:"Popup",inheritAttrs:!1,props:S_,setup:function(e,n){var r=n.attrs,a=n.slots,o=n.expose,i=Q(!1),l=Q(!1),u=Q();return Se([function(){return e.visible},function(){return e.mobile}],function(){i.value=e.visible,e.visible&&e.mobile&&(l.value=!0)},{immediate:!0,flush:"post"}),o({forceAlign:function(){var d;(d=u.value)===null||d===void 0||d.forceAlign()},getElement:function(){var d;return(d=u.value)===null||d===void 0?void 0:d.getElement()}}),function(){var s=m(m(m({},e),r),{},{visible:i.value}),d=l.value?v(P_,m(m({},s),{},{mobile:e.mobile,ref:u}),{default:a.default}):v(B$,m(m({},s),{},{ref:u}),{default:a.default});return v("div",null,[v(T4,s,null),d])}}});function V$(t,e,n){return n?t[0]===e[0]:t[0]===e[0]&&t[1]===e[1]}function iC(t,e,n){var r=t[e]||{};return m(m({},r),n)}function K$(t,e,n,r){for(var a=n.points,o=Object.keys(t),i=0;i0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0,r=typeof e=="function"?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){var a=this.getDerivedStateFromProps(w3(this),m(m({},this.$data),r));if(a===null)return;r=m(m({},r),a||{})}pt(this.$data,r),this._.isMounted&&this.$forceUpdate(),nt(function(){n&&n()})},__emit:function(){var e=[].slice.call(arguments,0),n=e[0];n="on".concat(n[0].toUpperCase()).concat(n.substring(1));var r=this.$props[n]||this.$attrs[n];if(e.length&&r)if(Array.isArray(r))for(var a=0,o=r.length;a1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};at(Y4,{inTriggerContext:n.inTriggerContext,shouldRender:B(function(){var r=e||{},a=r.sPopupVisible,o=r.popupRef,i=r.forceRender,l=r.autoDestroy,u=!1;return(a||o||i)&&(u=!0),!a&&l&&(u=!1),u})})},z$=function(){im({},{inTriggerContext:!1});var e=Ze(Y4,{shouldRender:B(function(){return!1}),inTriggerContext:!1});return{shouldRender:B(function(){return e.shouldRender.value||e.inTriggerContext===!1})}};const Th=ie({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:Y.func.isRequired,didUpdate:Function},setup:function(e,n){var r=n.slots,a=!0,o,i=z$(),l=i.shouldRender;ld(function(){a=!1,l.value&&(o=e.getContainer())});var u=Se(l,function(){l.value&&!o&&(o=e.getContainer()),o&&u()});return wn(function(){nt(function(){if(l.value){var s;(s=e.didUpdate)===null||s===void 0||s.call(e,e)}})}),ut(function(){o&&o.parentNode&&o.parentNode.removeChild(o)}),function(){if(!l.value)return null;if(a){var s;return(s=r.default)===null||s===void 0?void 0:s.call(r)}return o?v(sg,{to:o},r):null}}});function lC(){}function W$(){return""}function U$(t){return t?t.ownerDocument:window.document}var Y$=["onClick","onMousedown","onTouchstart","onMouseenter","onMouseleave","onFocus","onBlur","onContextmenu"];const Ui=ie({compatConfig:{MODE:3},name:"Trigger",mixins:[Vo],inheritAttrs:!1,props:{action:Y.oneOfType([Y.string,Y.arrayOf(Y.string)]).def([]),showAction:Y.any.def([]),hideAction:Y.any.def([]),getPopupClassNameFromAlign:Y.any.def(W$),onPopupVisibleChange:Function,afterPopupVisibleChange:Y.func.def(lC),popup:Y.any,popupStyle:{type:Object,default:void 0},prefixCls:Y.string.def("rc-trigger-popup"),popupClassName:Y.string.def(""),popupPlacement:String,builtinPlacements:Y.object,popupTransitionName:String,popupAnimation:Y.any,mouseEnterDelay:Y.number.def(0),mouseLeaveDelay:Y.number.def(.1),zIndex:Number,focusDelay:Y.number.def(0),blurDelay:Y.number.def(.15),getPopupContainer:Function,getDocument:Y.func.def(U$),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:Y.object.def(function(){return{}}),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function,tryPopPortal:Boolean},setup:function(e){var n=B(function(){var u=e.popupPlacement,s=e.popupAlign,d=e.builtinPlacements;return u&&d?iC(d,u,s):s}),r=H$(e.tryPopPortal),a=r.setPortal,o=r.popPortal,i=Q(null),l=function(s){i.value=s};return{popPortal:o,setPortal:a,vcTriggerContext:Ze("vcTriggerContext",{}),popupRef:i,setPopupRef:l,triggerRef:Q(null),align:n,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data:function(){var e=this,n,r=this.$props,a;return this.popupVisible!==void 0?a=!!r.popupVisible:a=!!r.defaultPopupVisible,Y$.forEach(function(o){e["fire".concat(o)]=function(i){e.fireEvents(o,i)}}),(n=this.setPortal)===null||n===void 0||n.call(this,v(Th,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent})),{prevPopupVisible:a,sPopupVisible:a,point:null}},watch:{popupVisible:function(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created:function(){at("vcTriggerContext",{onPopupMouseDown:this.onPopupMouseDown}),im(this)},deactivated:function(){this.setPopupVisible(!1)},mounted:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeUnmount:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),Qe.cancel(this.attachId)},methods:{updatedCal:function(){var e=this.$props,n=this.$data;if(n.sPopupVisible){var r;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(r=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Dt(r,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(r=r||e.getDocument(this.getRootDomNode()),this.touchOutsideHandler=Dt(r,"touchstart",this.onDocumentClick,nn?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(r=r||e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=Dt(r,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Dt(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var n=this.$props.mouseEnterDelay;this.fireEvents("onMouseenter",e),this.delaySetPopupVisible(!0,n,n?null:e)},onMouseMove:function(e){this.fireEvents("onMousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("onMouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){var n;e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&mo((n=this.popupRef)===null||n===void 0?void 0:n.getElement(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("onFocus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("onMousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("onTouchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){mo(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents("onBlur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu:function(e){e.preventDefault(),this.fireEvents("onContextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("onClick",e),this.focusTime){var n;if(this.preClickTime&&this.preTouchTime?n=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?n=this.preClickTime:this.preTouchTime&&(n=this.preTouchTime),Math.abs(n-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var r=!this.$data.sPopupVisible;(this.isClickToHide()&&!r||r&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,n=this.vcTriggerContext,r=n===void 0?{}:n;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),r.onPopupMouseDown&&r.onPopupMouseDown.apply(r,arguments)},onDocumentClick:function(e){if(!(this.$props.mask&&!this.$props.maskClosable)){var n=e.target,r=this.getRootDomNode(),a=this.getPopupDomNode();(!mo(r,n)||this.isContextMenuOnly())&&!mo(a,n)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)}},getPopupDomNode:function(){var e;return((e=this.popupRef)===null||e===void 0?void 0:e.getElement())||null},getRootDomNode:function(){var e=this.$props.getTriggerDOMNode;if(e){var n=$a(this.triggerRef);return $a(e(n))}try{var r=$a(this.triggerRef);if(r)return r}catch{}return $a(this)},handleGetPopupClassFromAlign:function(e){var n=[],r=this.$props,a=r.popupPlacement,o=r.builtinPlacements,i=r.prefixCls,l=r.alignPoint,u=r.getPopupClassNameFromAlign;return a&&o&&n.push(K$(o,i,e,l)),u&&n.push(u(e)),n.join(" ")},getPopupAlign:function(){var e=this.$props,n=e.popupPlacement,r=e.popupAlign,a=e.builtinPlacements;return n&&a?iC(a,n,r):r},getComponent:function(){var e=this,n={};this.isMouseEnterToShow()&&(n.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(n.onMouseleave=this.onPopupMouseleave),n.onMousedown=this.onPopupMouseDown,n[nn?"onTouchstartPassive":"onTouchstart"]=this.onPopupMouseDown;var r=this.handleGetPopupClassFromAlign,a=this.getRootDomNode,o=this.getContainer,i=this.$attrs,l=this.$props,u=l.prefixCls,s=l.destroyPopupOnHide,d=l.popupClassName,c=l.popupAnimation,f=l.popupTransitionName,h=l.popupStyle,p=l.mask,g=l.maskAnimation,y=l.maskTransitionName,b=l.zIndex,C=l.stretch,x=l.alignPoint,w=l.mobile,P=l.forceRender,S=this.$data,k=S.sPopupVisible,T=S.point,O=m(m({prefixCls:u,destroyPopupOnHide:s,visible:k,point:x?T:null,align:this.align,animation:c,getClassNameFromAlign:r,stretch:C,getRootDomNode:a,mask:p,zIndex:b,transitionName:f,maskAnimation:g,maskTransitionName:y,getContainer:o,class:d,style:h,onAlign:i.onPopupAlign||lC},n),{},{ref:this.setPopupRef,mobile:w,forceRender:P});return v(j$,O,{default:this.$slots.popup||function(){return bg(e,"popup")}})},attachParent:function(e){var n=this;Qe.cancel(this.attachId);var r=this.$props,a=r.getPopupContainer,o=r.getDocument,i=this.getRootDomNode(),l;a?(i||a.length===0)&&(l=a(i)):l=o(this.getRootDomNode()).body,l?l.appendChild(e):this.attachId=Qe(function(){n.attachParent(e)})},getContainer:function(){var e=this.$props,n=e.getDocument,r=n(this.getRootDomNode()).createElement("div");return r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",this.attachParent(r),r},setPopupVisible:function(e,n){var r=this.alignPoint,a=this.sPopupVisible,o=this.onPopupVisibleChange;this.clearDelayTimer(),a!==e&&(la(this,"popupVisible")||this.setState({sPopupVisible:e,prevPopupVisible:a}),o&&o(e)),r&&n&&e&&this.setPoint(n)},setPoint:function(e){var n=this.$props.alignPoint;!n||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate:function(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible:function(e,n,r){var a=this,o=n*1e3;if(this.clearDelayTimer(),o){var i=r?{pageX:r.pageX,pageY:r.pageY}:null;this.delayTimer=x_(function(){a.setPopupVisible(e,i),a.clearDelayTimer()},o)}else this.setPopupVisible(e,r)},clearDelayTimer:function(){this.delayTimer&&(C_(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var n=function(){},r=F1(this);return this.childOriginEvents[e]&&r[e]?this["fire".concat(e)]:(n=this.childOriginEvents[e]||r[e]||n,n)},isClickToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("click")!==-1||r.indexOf("click")!==-1},isContextMenuOnly:function(){var e=this.$props.action;return e==="contextmenu"||e.length===1&&e[0]==="contextmenu"},isContextmenuToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("contextmenu")!==-1||r.indexOf("contextmenu")!==-1},isClickToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("click")!==-1||r.indexOf("click")!==-1},isMouseEnterToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("hover")!==-1||r.indexOf("mouseenter")!==-1},isMouseLeaveToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("hover")!==-1||r.indexOf("mouseleave")!==-1},isFocusToShow:function(){var e=this.$props,n=e.action,r=e.showAction;return n.indexOf("focus")!==-1||r.indexOf("focus")!==-1},isBlurToHide:function(){var e=this.$props,n=e.action,r=e.hideAction;return n.indexOf("focus")!==-1||r.indexOf("blur")!==-1},forcePopupAlign:function(){if(this.$data.sPopupVisible){var e;(e=this.popupRef)===null||e===void 0||e.forceAlign()}},fireEvents:function(e,n){this.childOriginEvents[e]&&this.childOriginEvents[e](n);var r=this.$props[e]||this.$attrs[e];r&&r(n)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,n=this.$attrs,r=qt(yu(this)),a=this.$props.alignPoint,o=r[0];this.childOriginEvents=F1(o);var i={key:"trigger"};this.isContextmenuToShow()?i.onContextmenu=this.onContextmenu:i.onContextmenu=this.createTwoChains("onContextmenu"),this.isClickToHide()||this.isClickToShow()?(i.onClick=this.onClick,i.onMousedown=this.onMousedown,i[nn?"onTouchstartPassive":"onTouchstart"]=this.onTouchstart):(i.onClick=this.createTwoChains("onClick"),i.onMousedown=this.createTwoChains("onMousedown"),i[nn?"onTouchstartPassive":"onTouchstart"]=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(i.onMouseenter=this.onMouseenter,a&&(i.onMousemove=this.onMouseMove)):i.onMouseenter=this.createTwoChains("onMouseenter"),this.isMouseLeaveToHide()?i.onMouseleave=this.onMouseleave:i.onMouseleave=this.createTwoChains("onMouseleave"),this.isFocusToShow()||this.isBlurToHide()?(i.onFocus=this.onFocus,i.onBlur=this.onBlur):(i.onFocus=this.createTwoChains("onFocus"),i.onBlur=function(d){d&&(!d.relatedTarget||!mo(d.target,d.relatedTarget))&&e.createTwoChains("onBlur")(d)});var l=ce(o&&o.props&&o.props.class,n.class);l&&(i.class=l);var u=Ct(o,m(m({},i),{},{ref:"triggerRef"}),!0,!0);if(this.popPortal)return u;var s=v(Th,{key:"portal",getContainer:this.getContainer,didUpdate:this.handlePortalUpdate},{default:this.getComponent});return v(et,null,[s,u])}});var G$=["empty"],q$=function(e){var n=e===!0?0:1;return{bottomLeft:{points:["tl","bl"],offset:[0,4],overflow:{adjustX:n,adjustY:1}},bottomRight:{points:["tr","br"],offset:[0,4],overflow:{adjustX:n,adjustY:1}},topLeft:{points:["bl","tl"],offset:[0,-4],overflow:{adjustX:n,adjustY:1}},topRight:{points:["br","tr"],offset:[0,-4],overflow:{adjustX:n,adjustY:1}}}},X$=ie({name:"SelectTrigger",inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:Y.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:Y.oneOfType([Number,Boolean]).def(!0),popupElement:Y.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function},setup:function(e,n){var r=n.slots,a=n.attrs,o=n.expose,i=B(function(){var u=e.dropdownMatchSelectWidth;return q$(u)}),l=Q();return o({getPopupElement:function(){return l.value}}),function(){var u=m(m({},e),a),s=u.empty,d=s===void 0?!1:s,c=He(u,G$),f=c.visible,h=c.dropdownAlign,p=c.prefixCls,g=c.popupElement,y=c.dropdownClassName,b=c.dropdownStyle,C=c.direction,x=C===void 0?"ltr":C,w=c.placement,P=c.dropdownMatchSelectWidth,S=c.containerWidth,k=c.dropdownRender,T=c.animation,O=c.transitionName,D=c.getPopupContainer,L=c.getTriggerDOMNode,N=c.onPopupVisibleChange,M=c.onPopupMouseEnter,E="".concat(p,"-dropdown"),$=g;k&&($=k({menuNode:g,props:e}));var A=T?"".concat(E,"-").concat(T):O,I=m({minWidth:"".concat(S,"px")},b);return typeof P=="number"?I.width="".concat(P,"px"):P&&(I.width="".concat(S,"px")),v(Ui,m(m({},e),{},{showAction:N?["click"]:[],hideAction:N?["click"]:[],popupPlacement:w||(x==="rtl"?"bottomRight":"bottomLeft"),builtinPlacements:i.value,prefixCls:E,popupTransitionName:A,popupAlign:h,popupVisible:f,getPopupContainer:D,popupClassName:ce(y,F({},"".concat(E,"-empty"),d)),popupStyle:I,getTriggerDOMNode:L,onPopupVisibleChange:N}),{default:r.default,popup:function(){return v("div",{ref:l,onMouseenter:M},[$])}})}}});const Q$=X$;var ht={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var n=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||n>=ht.F1&&n<=ht.F12)return!1;switch(n){case ht.ALT:case ht.CAPS_LOCK:case ht.CONTEXT_MENU:case ht.CTRL:case ht.DOWN:case ht.END:case ht.ESC:case ht.HOME:case ht.INSERT:case ht.LEFT:case ht.MAC_FF_META:case ht.META:case ht.NUMLOCK:case ht.NUM_CENTER:case ht.PAGE_DOWN:case ht.PAGE_UP:case ht.PAUSE:case ht.PRINT_SCREEN:case ht.RIGHT:case ht.SHIFT:case ht.UP:case ht.WIN_KEY:case ht.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=ht.ZERO&&e<=ht.NINE||e>=ht.NUM_ZERO&&e<=ht.NUM_MULTIPLY||e>=ht.A&&e<=ht.Z||window.navigator.userAgent.indexOf("WebKit")!==-1&&e===0)return!0;switch(e){case ht.SPACE:case ht.QUESTION_MARK:case ht.NUM_PLUS:case ht.NUM_MINUS:case ht.NUM_PERIOD:case ht.NUM_DIVISION:case ht.SEMICOLON:case ht.DASH:case ht.EQUALS:case ht.COMMA:case ht.PERIOD:case ht.SLASH:case ht.APOSTROPHE:case ht.SINGLE_QUOTE:case ht.OPEN_SQUARE_BRACKET:case ht.BACKSLASH:case ht.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};const Me=ht;var Cd=function(e,n){var r,a=n.slots,o=e.class,i=e.customizeIcon,l=e.customizeIconProps,u=e.onMousedown,s=e.onClick,d;return typeof i=="function"?d=i(l):d=i,v("span",{class:o,onMousedown:function(f){f.preventDefault(),u&&u(f)},style:{userSelect:"none",WebkitUserSelect:"none"},unselectable:"on",onClick:s,"aria-hidden":!0},[d!==void 0?d:v("span",{class:o.split(/\s+/).map(function(c){return"".concat(c,"-icon")})},[(r=a.default)===null||r===void 0?void 0:r.call(a)])])};Cd.inheritAttrs=!1;Cd.displayName="TransBtn";Cd.props={class:String,customizeIcon:Y.any,customizeIconProps:Y.any,onMousedown:Function,onClick:Function};const yc=Cd;function Z$(t){t.target.composing=!0}function uC(t){t.target.composing&&(t.target.composing=!1,J$(t.target,"input"))}function J$(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Kf(t,e,n,r){t.addEventListener(e,n,r)}var e9={created:function(e,n){(!n.modifiers||!n.modifiers.lazy)&&(Kf(e,"compositionstart",Z$),Kf(e,"compositionend",uC),Kf(e,"change",uC))}};const Yi=e9;var t9={inputRef:Y.any,prefixCls:String,id:String,inputElement:Y.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:Y.oneOfType([Y.number,Y.string]),attrs:Y.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},n9=ie({compatConfig:{MODE:3},name:"Input",inheritAttrs:!1,props:t9,setup:function(e){var n=null,r=Ze("VCSelectContainerEvent");return function(){var a,o,i=e.prefixCls,l=e.id,u=e.inputElement,s=e.disabled,d=e.tabindex,c=e.autofocus,f=e.autocomplete,h=e.editable,p=e.activeDescendantId,g=e.value,y=e.onKeydown,b=e.onMousedown,C=e.onChange,x=e.onPaste,w=e.onCompositionstart,P=e.onCompositionend,S=e.onFocus,k=e.onBlur,T=e.open,O=e.inputRef,D=e.attrs,L=u||gn(v("input",null,null),[[Yi]]),N=L.props||{},M=N.onKeydown,E=N.onInput,$=N.onFocus,A=N.onBlur,I=N.onMousedown,_=N.onCompositionstart,R=N.onCompositionend,z=N.style;return L=Ct(L,pt(m(m(m({type:"search"},N),{},{id:l,ref:O,disabled:s,tabindex:d,autocomplete:f||"off",autofocus:c,class:ce("".concat(i,"-selection-search-input"),(a=L)===null||a===void 0||(o=a.props)===null||o===void 0?void 0:o.class),role:"combobox","aria-expanded":T,"aria-haspopup":"listbox","aria-owns":"".concat(l,"_list"),"aria-autocomplete":"list","aria-controls":"".concat(l,"_list"),"aria-activedescendant":p},D),{},{value:h?g:"",readonly:!h,unselectable:h?null:"on",style:m(m({},z),{},{opacity:h?null:0}),onKeydown:function(q){y(q),M&&M(q)},onMousedown:function(q){b(q),I&&I(q)},onInput:function(q){C(q),E&&E(q)},onCompositionstart:function(q){w(q),_&&_(q)},onCompositionend:function(q){P(q),R&&R(q)},onPaste:x,onFocus:function(){clearTimeout(n),$&&$(arguments.length<=0?void 0:arguments[0]),S&&S(arguments.length<=0?void 0:arguments[0]),r==null||r.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){for(var q=arguments.length,X=new Array(q),H=0;H